<?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>Gallery</name>
	<version>1.1.2</version>
  <mincmsversion>1.6</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPkZpcnN0LCBpbnNlcnQgdGhlIG1vZHVsZSB3aXRoIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPg0KPHA+VGhhdCdzIGl0ITwvcD4NCjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcsIHlvdSBjYW4gZWFzaWx5IG1hbmlwdWxhdGUgd2hpY2ggc3ViZ2FsbGVyeSB3aWxsIGJlIHNob3duIGluIHdoaWNoIHRlbXBsYXRlLCBlLmcuIDxjb2RlPntHYWxsZXJ5IGRpcj0iaG9saWRheXMvTmV0aGVybGFuZHMyMDA5IiB0ZW1wbGF0ZT0iTGlnaHRib3gifTwvY29kZT48L3A+DQo8cD5CeSBkZWZhdWx0IHRoZSB0aHVtYm5haWxzIGZyb20gdGhlIEltYWdlIE1hbmFnZXIgYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgcGhvdG8gZ2FsbGVyaWVzLjwvcD4NCjxoMz5BZHZhbmNlZCBPcHRpb25zLCBidXQgc3RpbGwgZWFzeSB0byB1c2U8L2gzPg0KPHA+SW4gdGhlIGFkbWluIHNlY3Rpb24geW91IGhhdmUgbG90cyBvZiBvdGhlciBvcHRpb25zOjwvcD4NCjx1bD4NCjxsaT5TZXQgYSBwaG90byBhcyB0aGUgZGVmYXVsdCBmb3IgYSBnYWxsZXJ5LCBzbyBpdCB3aWxsIHNob3cgaW4gdGhlIHBhcmVudCBnYWxsZXJ5IGFzIGEgJ2NvdmVyJyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPg0KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gZ2FsbGVyaWVzLjwvbGk+DQo8bGk+U2V0IGEgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZWFjaCBnYWxsZXJ5LjwvbGk+DQo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPg0KPGxpPlNwZWNpZnkgZm9yIGVhY2ggdGVtcGxhdGUgaW4gd2hpY2ggb3JkZXIgdGhlIHBob3RvcyBoYXZlIHRvIGJlIHNvcnRlZC48L2xpPg0KPGxpPk92ZXJydWxlIHRoZSBzb3J0aW5nIG1hbnVhbGx5IGJ5IGRyYWdnaW5nJmRyb3BwaW5nIHRoZSBwaG90b3MuDQo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBwaG90b3MuPC9saT4NCjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPg0KPGxpPkVkaXQvY29weSB0ZW1wbGF0ZXMgb3IgY3JlYXRlIG5ldyBvbmVzLiBDaGVjayB0aGUgaW5mby1pY29uIGJlbmVhdGggdGhlIHRlbXBsYXRlLWNvZGUgZm9yIHRoZSBhdmFpbGFibGUgdmFyaWFibGVzLjwvbGk+DQo8L3VsPg0KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgJ01vZGlmeSBUZW1wbGF0ZXMnIHBlcm1pc3Npb24uIFRvIGVkaXQgdGhlIGdsb2JhbCBHYWxsZXJ5IG9wdGlvbnMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyBwZXJtaXNzaW9uLjwvcD4NCjxwPkFsbCB0aXRsZXMsIGRlc2NyaXB0aW9ucyBhbmQgc2V0dGluZ3MgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIFRoZSBkYXRhYmFzZSB3aWxsIHN5bmNocm9uaXplIHdpdGggdGhlIGZpbGVkaXJlY3RvcnkgZWFjaCB0aW1lIHRoZSBhY2NvcmRpbmcgZ2FsbGVyeSBpcyB2aXNpdGVkIGluIHRoZSBHYWxsZXJ5LWFkbWluLiBBIGxpdHRsZSB3YXJuaW5nOiB3aGVuIHlvdSBtb3ZlIGFuIGltYWdlIG9yIHN1YmRpcmVjdG9yeSB0byBhbm90aGVyIGRpcmVjdG9yeSwgeW91IHdpbGwgbG9vc2UgaXRzIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgc2V0dGluZ3MuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UNCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8iPkdhbGxlcnkgUGFnZTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBKb3MgLTxhIGhyZWY9Im1haWx0bzpqb3N2ZEBsaXZlLm5sIj5qb3N2ZEBsaXZlLm5sPC9hPi0uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQo8aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkaXI9InN1YjEvc3ViMiIgLSBQYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS88L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRlbXBsYXRlPSIiIC0gVXNlIGEgc2VwYXJhdGUgZGF0YWJhc2UgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgdGhlIHBob3RvIGdhbGxlcnkuIFRoaXMgdGVtcGxhdGUgbXVzdCBleGlzdCBhbmQgYmUgdmlzaWJsZSBpbiB0aGUgdGVtcGxhdGUgdGFiIG9mIHRoZSBHYWxsZXJ5IGFkbWluLCB0aG91Z2ggaXQgZG9lcyBub3QgbmVlZCB0byBiZSB0aGUgZGVmYXVsdC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGUgdGVtcGxhdGUgd2hpY2ggaXMgYXNzaWduZWQgdG8gdGhlIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQsIGVsc2UgdGhlIGRlZmF1bHQgdGVtcGxhdGUuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBudW1iZXI9IjEwMCIgLSBNYXhpbXVtIG51bWJlciBvZiBpbWFnZXRodW1icyB0byBkaXNwbGF5IChwZXIgcGFnZSkuIExlYXZpbmcgZW1wdHkgd2lsbCBzaG93IGFsbCBpbWFnZXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzdGFydD0iMSIgLSBTdGFydCBhdCB0aGUgbnRoIGltYWdlLiBMZWF2aW5nIGVtcHR5IHdpbGwgc3RhcnQgYXQgdGhlIGZpcnN0IGltYWdlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvdz0iYWxsIiAtIE92ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+J2FjdGl2ZScgLSB0byBkaXNwbGF5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGFjdGl2ZSAoZGVmYXVsdCk8L2xpPg0KPGxpPidpbmFjdGl2ZScgLSB0byBkaXNwbGF5IG9ubHkgdGhlIGltYWdlcyBtYXJrZWQgYXMgaW5hY3RpdmUgPC9saT4NCjxsaT4nYWxsJyAtIHRvIGRpc3BsYXkgYWxsIGltYWdlczwvbGk+DQo8L3VsPg0KPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBVc2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycy4gUG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCjxsaT4nc2hvd3JhbmRvbScgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSAnLyonIGFmdGVyIHRoZSBkaXJlY3RvcnluYW1lIGluIHRoZSBkaXIgcGFyYW1ldGVyIHRvIGluY2x1ZGUgaW1hZ2VzIGZyb20gc3ViZGlyZWN0b3JpZXM8L2xpPg0KPGxpPidzaG93bGF0ZXN0JyAtIHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgaW1hZ2VzIChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpIFRoZSBkaXIgcGFyYW1ldGVyIGNhbiBiZSBzZXQsIG9yIHRoZSBkZWZhdWx0IEdhbGxlcnktcm9vdCB3aWxsIGJlIHVzZWQuIFN1YmRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkPC9saT4NCjxsaT4nc2hvd2xhdGVzdGRpcicgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBkaXJlY3RvcnkgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcyk8L2xpPg0KPC91bD4NCk5vdGUgdGhhdCBpbWFnZXMgYXJlIG9ubHkgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSB3aGVuIHRoZSBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIGFkbWluLg0KPC9saT48L3VsPg==</help>
	<about>PGJyIC8+QXV0aG9yOiBKb3MgJmx0O2pvc3ZkQGxpdmUubmwmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4xLjI8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+DQo8bGk+VmVyc2lvbiAxLjEuMiAgNSBEZWNlbWJlciAyMDA5LiBVcGRhdGUgRmFuY3lib3ggc3lzdGVtIHRvIHZlcnNpb24gMS4yLjYsIEZpeCBmb3IgQnVncmVwb3J0ICM0NDIyOiBFcnJvciB3aGVuIHNvcnRpbmdvcHRpb24gaXMgZW1wdHksIEJ1aWx0IGluIGNoZWNrIGZvciB0ZW1wbGF0ZXMvY3NzIGRpcmVjdG9yeSAoQlIgIzQzMDUpLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuMS4gMTIgTm92ZW1iZXIgMjAwOS4gRml4IGZvciBCdWdyZXBvcnQgIzQyOTQ6IFRodW1iZm9sZGVyIG5vdCBjcmVhdGVkIHdoZW4gdXBncmFkaW5nLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuIDggTm92ZW1iZXIgMjAwOS4gQWRkZWQgc29ydGluZyBhbmQgZHJhZyZkcm9wIGZlYXR1cmUgKEZSICMzOTA3ICM0MjEwKSwgTW92ZWQgdGh1bWJuYWlsc2V0dGluZ3MgdG8gdGVtcGxhdGVzdGFiLCBNYWtlIGdhbGxlcmllcyBzZWFyY2hhYmxlIChGUiAjMzk1NiksIENyZWF0ZSBiYWNrZW5kIHRodW1icyBpZiB0aGV5IGRvbid0IGV4aXN0IGluIElNIChGUiAjNDEwMSksIEZpeCBmb3IgQlIgIzQwMjcsIEFkZGVkIGZpbGVpZCB0byBpbWFnZS1vYmplY3QgKEZSICM0MjU5KTwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gOCBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzQwMDFdLCBJbXByb3ZlZCBzeW5jaHJvbml6aW5nIHRoZSBkYXRhYmFzZSB0byBmaWxlcywgYW5kIG90aGVyIG1pbm9yIGltcHJvdmVtZW50cy48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIDUgU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyMzOTgzXSByZWdhcmRpbmcgc3BhY2VzIGluIGRpcmVjdG9yeSBuYW1lcywgQWRkZWQgdGVtcGxhdGVzIEZhbmN5Ym94IGFuZCBMeXRlYm94X3NsaWRlc2hvdyBhcyBpbiBGZWF0dXJlIHJlcXVlc3RzIFsjMzk0NF0gYW5kIFsjMzk2N108L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIDIzIEF1Z3VzdCAyMDA5LiBBcHBseSB0aHVtYm5haWwtc2V0dGluZ3Mgb24gJ0FsYnVtLWNvdmVycycgWyMzOTI0XSwgQnVnZml4IGZvciBbIzM5MjddLCBBZGRlZCBtaXNzaW5nIC9kaXYgdG8gdGhpY2tib3gtdGVtcGxhdGUsIGZpeGVkIGFuIGlzc3VlIHdpdGggZ2VuZXJhdGluZyB0aHVtYm5haWxzIHdoZW4gbm8gdGh1bWJzIGF2YWlsYWJsZSBpbiBJbWFnZU1hbmFnZXIsIGltcHJvdmVkIHRoZSBuYW1pbmcgb2YgdGh1bWJzLCBCdWdmaXggZm9yIFsjMzkzMV0sIFByZXZlbnQgZGlzcGxheSB0aGUgY29udGVudCBvZiBnYWxsZXJpZXMgdGhhdCBhcmUgc2V0IGFzIGluYWN0aXZlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuIDE3IEF1Z3VzdCAyMDA5LiBQYWdpbmF0aW9uIHBhcmFtZXRlcnMgYWRkZWQsIFN0YW5kYXJkIHRlbXBsYXRlcyBjaGFuZ2VkIGFjY29yZGluZ2x5LCBFeHRlbmRlZCB0aGUgbW9kdWxlLWhlbHAsIEFkZGVkIGZ1bmN0aW9ucyB0byBzaG93IHJhbmRvbSBvciBsYXRlc3QgaW1hZ2VzLCBTdXBwb3J0IG9mIHByZXR0eS11cmxzLCBWYXJpb3VzIGltcHJvdmVtZW50czwvbGk+DQo8bGk+VmVyc2lvbiAwLjYuIDkgQXVndXN0IDIwMDkuIEluaXRpYWwgQmV0YSBSZWxlYXNlLjwvbGk+DQo8L3VsPjxiciAvPg==</about>
	<description>The easiest way to manage and display photo galleries</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.createthumbs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkZ0NtcyApIGV4aXQoKTsNCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkgDQogIHsNCiAgICBlY2hvICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKTsNCiAgICByZXR1cm47DQogIH0NCg0KaWYoICFpc3NldCgkcGFyYW1zWydnaWQnXSkgKQ0KICB7DQogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3InKTsNCiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KICAgIHJldHVybjsNCiAgfQ0KDQokZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkcGFyYW1zWydnaWQnXSk7DQokZ2FsbGVyeXBhdGggPSAkcGFyYW1zWydnaWQnXSA9PSAxID8gJycgOiB0cmltKCRnYWxsZXJ5aW5mb1snZmlsZXBhdGgnXSAuICcvJyAuICRnYWxsZXJ5aW5mb1snZmlsZW5hbWUnXSwnLycpOw0KDQokZ2FsbGVyeSA9ICR0aGlzLT5fR2V0Z2FsbGVyeWZpbGVzKCRnYWxsZXJ5cGF0aCk7DQpmb3JlYWNoICgkZ2FsbGVyeSBhcyAkZmlsZSkgDQp7DQoJaWYoIHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwtMSkgIT0gJy8nICkNCgl7DQoJCSR0aHVtYm5hbWUgPSAnLi4vJyAuIERFRkFVTFRfR0FMTEVSWVRIVU1CX1BBVEggLiAkZmlsZVsnZmlsZWlkJ10gLiAnLScgLiAkcGFyYW1zWyd0ZW1wbGF0ZWlkJ10gLiBzdWJzdHIoJGZpbGVbJ2ZpbGVuYW1lJ10sIHN0cnJwb3MoJGZpbGVbJ2ZpbGVuYW1lJ10sICcuJykpIDsNCg0KCQkkdGhpcy0+X0NyZWF0ZVRodW1ibmFpbCgkdGh1bWJuYW1lLCANCgkJICAgICAgICAgICAgICAgICAgICAgICAgJy4uLycgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuIChlbXB0eSgkZmlsZVsnZmlsZXBhdGgnXSkgPyAnJyA6ICRmaWxlWydmaWxlcGF0aCddIC4gJy8nKSAuICRmaWxlWydmaWxlbmFtZSddLCANCgkJICAgICAgICAgICAgICAgICAgICAgICAgJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10sIA0KCQkgICAgICAgICAgICAgICAgICAgICAgICAkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10sIA0KCQkgICAgICAgICAgICAgICAgICAgICAgICAkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddKTsNCgl9DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsJ2VkaXRnYWxsZXJ5JywnJyxhcnJheSgnZ2lkJz0+JHBhcmFtc1snZ2lkJ10sJ21vZGUnPT4iZWRpdCIsJ21vZHVsZV9tZXNzYWdlJz0+JHRoaXMtPkxhbmcoJ3RodW1ic2NyZWF0ZWQnKSkpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokcGFyYW1zWydkaXInXSA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/IHJhd3VybGRlY29kZShjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0oJHBhcmFtc1snZGlyJ10sIi8iKSkpIDogJyc7DQokc3RhcnQgPSAoaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkgJiYgaXNfbnVtZXJpYygkcGFyYW1zWydzdGFydCddKSkgPyAkcGFyYW1zWydzdGFydCddIDogMTsNCiRudW1iZXIgPSAoaXNzZXQoJHBhcmFtc1snbnVtYmVyJ10pICYmIGlzX251bWVyaWMoJHBhcmFtc1snbnVtYmVyJ10pKSA/ICRwYXJhbXNbJ251bWJlciddIDogMTAwMDsNCiRzaG93ID0gKGlzc2V0KCRwYXJhbXNbJ3Nob3cnXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1snc2hvdyddLCBhcnJheSgnYWN0aXZlJywnaW5hY3RpdmUnLCdhbGwnKSkpID8gJHBhcmFtc1snc2hvdyddIDogJ2FjdGl2ZSc7DQoNCg0KJGltZ2NvdW50ID0gMDsNCiRpdGVtY291bnQgPSAwOw0KJGltYWdlcyA9IGFycmF5KCk7DQoNCmlmICggaXNfZGlyKERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhcmFtc1snZGlyJ10pICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnl0aXRsZScsIGh0bWxzcGVjaWFsY2hhcnModHJpbShzdWJzdHIoJHBhcmFtc1snZGlyJ10sIHN0cnJwb3MoJHBhcmFtc1snZGlyJ10sICcvJykpLCIvIikpKTsNCg0KCS8vIGdldCBnYWxsZXJ5IGluZm8NCgkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvKCRwYXJhbXNbJ2RpciddKTsNCg0KCWlmICggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgKQ0KCXsNCgkJLy8gb3ZlcnJpZGUgdGVtcGxhdGUgc2V0dGluZ3Mgd2l0aCBwYXJhbSB0ZW1wbGF0ZQ0KCQkkdGVtcGxhdGVwcm9wcyA9ICR0aGlzLT5fR2V0VGVtcGxhdGVwcm9wcygkcGFyYW1zWyd0ZW1wbGF0ZSddKTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGVpZCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJ3aWR0aCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJoZWlnaHQnXTsNCgkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgkJJGdhbGxlcnlpbmZvWydtYXhudW1iZXInXSA9ICR0ZW1wbGF0ZXByb3BzWydtYXhudW1iZXInXTsNCgkJJGdhbGxlcnlpbmZvWydzb3J0aXRlbXMnXSA9ICR0ZW1wbGF0ZXByb3BzWydzb3J0aXRlbXMnXTsNCgl9DQoJaWYgKCBlbXB0eSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSkgKQ0KCXsNCgkJLy8gb3ZlcnJpZGUgdGVtcGxhdGUgc2V0dGluZ3Mgd2l0aCBkZWZhdWx0IHRlbXBsYXRlDQoJCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3RlbXBsYXRlJykpOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZSddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYndpZHRoJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddID0gJHRlbXBsYXRlcHJvcHNbJ3Jlc2l6ZW1ldGhvZCddOw0KCQkkZ2FsbGVyeWluZm9bJ21heG51bWJlciddID0gJHRlbXBsYXRlcHJvcHNbJ21heG51bWJlciddOw0KCQkkZ2FsbGVyeWluZm9bJ3NvcnRpdGVtcyddID0gJHRlbXBsYXRlcHJvcHNbJ3NvcnRpdGVtcyddOw0KCX0NCgkvL3BhcmFtc1snbnVtYmVyJ10gb3ZlcnJpZGUgJG51bWJlcg0KCWlmICggJG51bWJlciA9PSAxMDAwICYmICFlbXB0eSgkZ2FsbGVyeWluZm9bJ21heG51bWJlciddKSApDQoJew0KCQkkbnVtYmVyID0gJGdhbGxlcnlpbmZvWydtYXhudW1iZXInXTsNCgkJJHBhcmFtc1snbnVtYmVyJ10gPSAkbnVtYmVyOw0KCX0NCg0KCSRwYXJhbXNsaW5rID0gYXJyYXkoKTsNCglpZiAoIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ251bWJlciddKSApDQoJew0KCQkkcGFyYW1zbGlua1snc3RhcnQnXSA9IDE7DQoJCSRwYXJhbXNsaW5rWydudW1iZXInXSA9ICRudW1iZXI7DQoJfQ0KCWlmICggaXNzZXQoJHBhcmFtc1snc2hvdyddKSApDQoJew0KCQkkcGFyYW1zbGlua1snc2hvdyddID0gJHBhcmFtc1snc2hvdyddOw0KCX0NCgkNCglpZiAoICRzaG93ID09ICJhbGwiIHx8ICFhcnJheV9rZXlfZXhpc3RzKCdhY3RpdmUnLCRnYWxsZXJ5aW5mbykgfHwgKCRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gPT0gMSAmJiAkc2hvdyA9PSAiYWN0aXZlIikgfHwgKCRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gPT0gMCAmJiAkc2hvdyA9PSAiaW5hY3RpdmUiKSApDQoJew0KCQlpZiAoICFlbXB0eSgkZ2FsbGVyeWluZm8pICkNCgkJew0KCQkJaWYgKCAhZW1wdHkoJGdhbGxlcnlpbmZvWyd0aXRsZSddKSApDQoJCQl7DQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCAkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pOw0KCQkJfQ0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Y29tbWVudCcsIGFycmF5X2tleV9leGlzdHMoJ2NvbW1lbnQnLCRnYWxsZXJ5aW5mbykgPyAkZ2FsbGVyeWluZm9bJ2NvbW1lbnQnXSA6ICcnKTsNCgkJfQ0KCQkJDQoJCSRwYXJhbXNsaW5rWydkaXInXSA9IHN0cnBvcygkcGFyYW1zWydkaXInXSwgJy8nKSA9PT0gRkFMU0UgPyAnJyA6ICcvJyAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUocHJlZ19yZXBsYWNlKCcvXiguKikoXC8uKykkLycsICckMScsICRwYXJhbXNbJ2RpciddKSkpOw0KCQkkcHJldHR5dXJsID0gJ2dhbGxlcnknIC4gJHBhcmFtc2xpbmtbJ2RpciddIC4gJy8nIC4NCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzdGFydCddKSA/ICRwYXJhbXNsaW5rWydzdGFydCddIC4gJy0nIC4gJHBhcmFtc2xpbmtbJ251bWJlciddIC4gJy0nIDogJycpIC4NCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzaG93J10pID8gJHBhcmFtc2xpbmtbJ3Nob3cnXSAuICctJyA6ICcnKSAuDQoJCQkJCSRyZXR1cm5pZDsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYXJlbnRsaW5rJywgZW1wdHkoJHBhcmFtc1snZGlyJ10pID8gJycgOiAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICdQYXJlbnQnLCAkcGFyYW1zbGluaywgJycsIGZhbHNlLCB0cnVlLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRlcGFyZW50bGluaycsICRnYWxsZXJ5aW5mb1snaGlkZXBhcmVudGxpbmsnXSk7DQoJDQoJDQoJCS8vIGJ1aWxkIGdhbGxlcnkNCgkJJGRpcmZpbGVzID0gJHRoaXMtPl9HZXRkaXJmaWxlcygkcGFyYW1zWydkaXInXSxGQUxTRSk7DQoJCSRnYWxlcnlmaWxlcyA9ICR0aGlzLT5fR2V0Z2FsbGVyeWZpbGVzKCRwYXJhbXNbJ2RpciddKTsNCgkNCgkJLy8gV2FsayB0aHJvdWdoIGFsbCBpdGVtcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LCBiZWNhdXNlIHRoZXkgZG9uJ3QgbmVzY2VzYXJpbHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlDQoJCWZvcmVhY2goJGRpcmZpbGVzIGFzICRrZXk9PiRpdGVtKQ0KCQl7DQoJCQlpZiAoICEkZ2FsZXJ5ZmlsZXMgfHwgIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGdhbGVyeWZpbGVzKSB8fCAkc2hvdyA9PSAnYWxsJyB8fCAoJHNob3cgPT0gJ2FjdGl2ZScgJiYgJGdhbGVyeWZpbGVzWyRrZXldWydhY3RpdmUnXSAhPSAnMCcpIHx8ICgkc2hvdyA9PSAnaW5hY3RpdmUnICYmICRnYWxlcnlmaWxlc1ska2V5XVsnYWN0aXZlJ10gPT0gJzAnKSApDQoJCQl7DQoJCQkJLy8gY3JlYXRlIGEgbmV3IG9iamVjdCBmb3IgZXZlcnkgcmVjb3JkIHRoYXQgd2UgcmV0cmlldmUNCgkJCQkkcmVjID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkJJHJlYy0+ZmlsZWlkID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydmaWxlaWQnXSA6ICR0aGlzLT5fQWRkRmlsZVRvREIoJGl0ZW1bJ2ZpbGVuYW1lJ10sJGl0ZW1bJ2ZpbGVwYXRoJ10sJGl0ZW1bJ2ZpbGVtZGF0ZSddLCRnYWxsZXJ5aW5mb1snZmlsZWlkJ10pOw0KCQkJCSRyZWMtPmZpbGUgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUoJGtleSkpOw0KCQkJCSRyZWMtPmZpbGVkYXRlID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydmaWxlZGF0ZSddIDogJyc7DQoJCQkJJHJlYy0+dGl0bGUgPSAoJGdhbGVyeWZpbGVzICYmIGFycmF5X2tleV9leGlzdHMoJGtleSwgJGdhbGVyeWZpbGVzKSAmJiAhZW1wdHkoJGdhbGVyeWZpbGVzWyRrZXldWyd0aXRsZSddKSkgPyAkZ2FsZXJ5ZmlsZXNbJGtleV1bJ3RpdGxlJ10gOiB0cmltKCRpdGVtWydmaWxlbmFtZSddLCIvIik7DQoJCQkJJHJlYy0+Y29tbWVudCA9ICgkZ2FsZXJ5ZmlsZXMgJiYgYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZ2FsZXJ5ZmlsZXMpKSA/ICRnYWxlcnlmaWxlc1ska2V5XVsnY29tbWVudCddIDogJyc7DQoJCQkJJHJlYy0+ZmlsZW9yZGVyID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydmaWxlb3JkZXInXSA6IDEwMDA7DQoJCQkJJHJlYy0+YWN0aXZlID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydhY3RpdmUnXSA6IDE7DQoJCQkJJHJlYy0+aXNkaXIgPSBmYWxzZTsNCgkJCQkkcmVjLT5mb2xkZXJsaW5rID0gJyc7DQoJCQkJaWYgKCBpc19kaXIoREVGQVVMVF9HQUxMRVJZX1BBVEggLiAka2V5KSApDQoJCQkJew0KCQkJCQlpZiAoICEkZ2FsZXJ5ZmlsZXMgfHwgIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGdhbGVyeWZpbGVzKSB8fCBlbXB0eSgkZ2FsZXJ5ZmlsZXNbJGtleV1bJ3RodW1iJ10pICkNCgkJCQkJew0KCQkJCQkJJHJlYy0+dGh1bWIgPSAnbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXIucG5nJzsNCgkJCQkJfQ0KCQkJCQllbHNlaWYgKCAkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDAgKQ0KCQkJCQl7DQoJCQkJCQkkcmVjLT50aHVtYiA9IERFRkFVTFRfR0FMTEVSWVRIVU1CU19QQVRIIC4gJGdhbGVyeWZpbGVzWyRrZXldWydkZWZhdWx0ZmlsZSddIC4gJy0nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gLiBzdWJzdHIoJGdhbGVyeWZpbGVzWyRrZXldWyd0aHVtYiddLCBzdHJycG9zKCRnYWxlcnlmaWxlc1ska2V5XVsndGh1bWInXSwgJy4nKSk7DQoJCQkJCQkkb3JpZ2luYWxpbWFnZSA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gc3RyX3JlcGxhY2UoSU1fUFJFRklYLCcnLCRnYWxlcnlmaWxlc1ska2V5XVsndGh1bWInXSk7DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkkcmVjLT50aHVtYiA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJGdhbGVyeWZpbGVzWyRrZXldWyd0aHVtYiddOw0KCQkJCQkJJG9yaWdpbmFsaW1hZ2UgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKElNX1BSRUZJWCwnJywkZ2FsZXJ5ZmlsZXNbJGtleV1bJ3RodW1iJ10pOw0KCQkJCQl9DQoJCQkJCSRwYXJhbXNsaW5rWydkaXInXSA9IHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUoJGtleSkpOw0KCQkJCQkkcHJldHR5dXJsID0gJ2dhbGxlcnkvJyAuICRwYXJhbXNsaW5rWydkaXInXSAuICcvJyAuDQoJCQkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzdGFydCddKSA/ICRwYXJhbXNsaW5rWydzdGFydCddIC4gJy0nIC4gJHBhcmFtc2xpbmtbJ251bWJlciddIC4gJy0nIDogJycpIC4NCgkJCQkJCQkoaXNzZXQoJHBhcmFtc2xpbmtbJ3Nob3cnXSkgPyAkcGFyYW1zbGlua1snc2hvdyddIC4gJy0nIDogJycpIC4NCgkJCQkJCQkkcmV0dXJuaWQ7DQoJCQkJCSRyZWMtPmZpbGUgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsDQoJCQkJCQknJywgJHBhcmFtc2xpbmssICcnLCB0cnVlLCB0cnVlLCAnJywgZmFsc2UsICRwcmV0dHl1cmwgKTsNCgkJCQkJJHJlYy0+aXNkaXIgPSB0cnVlOw0KDQoJCQkJCS8vIGZvbGRlcmxpbmsgaXMgZGVwcmVjYXRlZCwgdXNlICRyZWMtPmZpbGUgYW5kICRyZWMtPnRodW1iIGluc3RlYWQNCgkJCQkJLyogJzxhIGhyZWY9IicgLiAkcmVjLT5maWxlIC4gJyI+PGltZyBzcmM9IicgLiAkcmVjLT50aHVtYiAuICciIGFsdD0iJyAuICRyZWMtPnRpdGxlIC4gJyIgLz48L2E+JyAqLw0KCQkJCQkkcmVjLT5mb2xkZXJsaW5rID0gJ2RlcHJlY2F0ZWQnOw0KCQkJCX0NCgkJCQllbHNlaWYgKCAkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDAgKQ0KCQkJCXsNCgkJCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllUSFVNQlNfUEFUSCAuICRnYWxlcnlmaWxlc1ska2V5XVsnZmlsZWlkJ10gLiAnLScgLiAkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSAuIHN1YnN0cigkaXRlbVsnZmlsZW5hbWUnXSwgc3RycnBvcygkaXRlbVsnZmlsZW5hbWUnXSwgJy4nKSk7DQoJCQkJCSRvcmlnaW5hbGltYWdlID0gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAka2V5Ow0KCQkJCQkkaW1nY291bnQrKzsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIChlbXB0eSgkaXRlbVsnZmlsZXBhdGgnXSkgPyAnJyA6ICRpdGVtWydmaWxlcGF0aCddIC4gJy8nKSAuIElNX1BSRUZJWCAuICRpdGVtWydmaWxlbmFtZSddOw0KCQkJCQkkb3JpZ2luYWxpbWFnZSA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJGtleTsNCgkJCQkJJGltZ2NvdW50Kys7DQoJCQkJfQ0KDQoJCQkJaWYgKCAkcmVjLT50aHVtYiAhPSAnbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXIucG5nJyApDQoJCQkJew0KCQkJCQkkdGhpcy0+X0NyZWF0ZVRodW1ibmFpbCgkcmVjLT50aHVtYiwNCgkJCQkJCQkJCQkJJG9yaWdpbmFsaW1hZ2UsDQoJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gOiA5NiwNCgkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gOiA5NiwNCgkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddIDogJ3NjJyk7DQoJCQkJfQ0KCQkJCWFycmF5X3B1c2goJGltYWdlcywkcmVjKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFNvcnQgYXJyYXkgJGltYWdlcw0KCQkvLyBzZWNvbmQgcGFyYW1ldGVyIG9mIF9BcnJheVNvcnQgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncywgd2hpY2ggY29udGFpbnM6DQoJCS8vIG4gZm9yIG51bWJlciwgcyBmb3Igc3RyaW5nDQoJCS8vICsgZm9yIGFzY2VuZGluZywgLSBmb3IgZGVzY2VuZGluZw0KCQkvLyBmaWVsZG5hbWUNCgkJJHNvcnRhcnJheSA9IGV4cGxvZGUoJy8nLCduK2ZpbGVvcmRlci8nLiRnYWxsZXJ5aW5mb1snc29ydGl0ZW1zJ10pOw0KCQkkaW1hZ2VzID0gJHRoaXMtPl9BcnJheVNvcnQoJGltYWdlcywgJHNvcnRhcnJheSwgZmFsc2UpOw0KCQkkaXRlbWNvdW50ID0gY291bnQoJGltYWdlcyk7DQoNCgkJLy8gR2V0IHRoZSBpbWFnZXMgd2Ugd2FudA0KCQkkaW1hZ2VzID0gYXJyYXlfc3BsaWNlKCRpbWFnZXMsICRzdGFydC0xLCAkbnVtYmVyKTsNCgl9DQp9DQplbHNlDQp7DQoJJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICJUaGUgZGlyZWN0b3J5ICciIC4gaHRtbHNwZWNpYWxjaGFycygkcGFyYW1zWydkaXInXSkgLiAiJyBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgeW91ciBwYXJhbWV0ZXJzLiI7DQp9DQoNCg0KLy8gRXhwb3NlIHRoZSBsaXN0IHRvIHNtYXJ0eS4gVXNlICJieV9yZWYiIHRvIHNhdmUgbWVtb3J5Lg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaW1hZ2VzJywkaW1hZ2VzKTsNCg0KLy8gYW5kIGEgY291bnQgb2YgcmVjb3Jkcw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbWFnZWNvdW50JywgJGltZ2NvdW50IC4gJyAnIC4gKCRpbWdjb3VudCA9PSAxID8gJHRoaXMtPkxhbmcoJ2ltYWdlJykgOiAkdGhpcy0+TGFuZygnaW1hZ2VzJykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgJGl0ZW1jb3VudCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ251bWJlcicsICRudW1iZXIpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlcycsIGNlaWwoJGl0ZW1jb3VudC8kbnVtYmVyKSk7DQoNCi8vIHBhZ2VuYXZpZ2F0aW9uDQokcGFyYW1zbGlua1snZGlyJ10gPSBlbXB0eSgkcGFyYW1zWydkaXInXSkgPyAnJyA6ICcvJyAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUoJHBhcmFtc1snZGlyJ10pKTsNCiRwYXJhbXNsaW5rWydzdGFydCddID0gJHN0YXJ0IC0gJG51bWJlcjsJCQ0KJHByZXR0eXVybCA9ICdnYWxsZXJ5JyAuICRwYXJhbXNsaW5rWydkaXInXSAuICcvJyAuIA0KCQkJCQkoaXNzZXQoJHBhcmFtc2xpbmtbJ251bWJlciddKSA/ICRwYXJhbXNsaW5rWydzdGFydCddIC4gJy0nIC4gJHBhcmFtc2xpbmtbJ251bWJlciddIC4gJy0nIDogJycpIC4NCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzaG93J10pID8gJHBhcmFtc2xpbmtbJ3Nob3cnXSAuICctJyA6ICcnKSAuDQoJCQkJCSRyZXR1cm5pZDsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJldnBhZ2UnLCAoJHBhcmFtc2xpbmtbJ3N0YXJ0J10gPj0gMSA/ICR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ3ByZXZwYWdlJyksICRwYXJhbXNsaW5rLCAnJywgZmFsc2UsIHRydWUsICcnLCBmYWxzZSwgJHByZXR0eXVybCkgOiAoJzxlbT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZwYWdlJykgLiAnPC9lbT4nKSkpOw0KDQokcGFyYW1zbGlua1snc3RhcnQnXSA9ICRzdGFydCArICRudW1iZXI7CQkNCiRwcmV0dHl1cmwgPSAnZ2FsbGVyeScgLiAkcGFyYW1zbGlua1snZGlyJ10gLiAnLycgLiANCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydudW1iZXInXSkgPyAkcGFyYW1zbGlua1snc3RhcnQnXSAuICctJyAuICRwYXJhbXNsaW5rWydudW1iZXInXSAuICctJyA6ICcnKSAuDQoJCQkJCShpc3NldCgkcGFyYW1zbGlua1snc2hvdyddKSA/ICRwYXJhbXNsaW5rWydzaG93J10gLiAnLScgOiAnJykgLg0KCQkJCQkkcmV0dXJuaWQ7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywgKCRpdGVtY291bnQgPj0gJHBhcmFtc2xpbmtbJ3N0YXJ0J10gPyAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICR0aGlzLT5MYW5nKCduZXh0cGFnZScpLCAkcGFyYW1zbGluaywgJycsIGZhbHNlLCB0cnVlLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpIDogKCc8ZW0+JyAuICR0aGlzLT5MYW5nKCduZXh0cGFnZScpIC4gJzwvZW0+JykpKTsNCiRwYWdlbGlua3MgPSAnJzsNCmZvciAoJGkgPSAwOyAkaSA8IGNlaWwoJGl0ZW1jb3VudC8kbnVtYmVyKTsgJGkrKykgDQp7DQoJJHBhcmFtc2xpbmtbJ3N0YXJ0J10gPSAoJGkgKiAkbnVtYmVyKSArIDE7DQoJJHByZXR0eXVybCA9ICdnYWxsZXJ5JyAuICRwYXJhbXNsaW5rWydkaXInXSAuICcvJyAuIA0KCQkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydudW1iZXInXSkgPyAkcGFyYW1zbGlua1snc3RhcnQnXSAuICctJyAuICRwYXJhbXNsaW5rWydudW1iZXInXSAuICctJyA6ICcnKSAuDQoJCQkJCQkoaXNzZXQoJHBhcmFtc2xpbmtbJ3Nob3cnXSkgPyAkcGFyYW1zbGlua1snc2hvdyddIC4gJy0nIDogJycpIC4NCgkJCQkJCSRyZXR1cm5pZDsNCgkkcGFnZWxpbmtzIC49ICgkcGFyYW1zbGlua1snc3RhcnQnXSAhPSAkc3RhcnQgPyAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICRpICsgMSwgJHBhcmFtc2xpbmssICcnLCBmYWxzZSwgdHJ1ZSwgJycsIGZhbHNlLCAkcHJldHR5dXJsKSA6ICgnPGVtPicgLiAoJGkgKyAxKSAuICc8L2VtPicpKTsNCn0NCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZWxpbmtzJywgJHBhZ2VsaW5rcyk7DQoNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pKQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pOw0KfQ0KZWxzZQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCcnKTsNCn0NCg0KDQovLyBEaXNwbGF5IHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddKTsNCg0KDQovLyBwYXNzIGRhdGEgdG8gaGVhZCBzZWN0aW9uLg0KDQovLyBnZXQgdGVtcGxhdGUtc3BlY2lmaWMgSmF2YVNjcmlwdCBhbmQgZWNobw0KJHRlbXBsYXRlY29kZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10pOw0KJHRlbXBsYXRlY29kZWFyciA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCAkdGVtcGxhdGVjb2RlKTsNCiR0ZW1wbGF0ZV9tZXRhZGF0YSA9IHN1YnN0cigkdGVtcGxhdGVjb2RlYXJyWzJdLDAsLTIpOw0KDQovLyBjaGVjayBpZiBhIGNzcyBmaWxlIGV4aXN0cyBhbmQgZWNobw0KaWYgKCBmaWxlX2V4aXN0cygibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvIiAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSAuICIuY3NzIikgKQ0Kew0KCSR0ZW1wbGF0ZV9tZXRhZGF0YSAuPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddIC4gJy5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPg0KJzsNCn0NCiR0aGlzLT5HYWxsZXJ5TWV0YWRhdGEgPSAkdGVtcGxhdGVfbWV0YWRhdGE7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiAoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkgDQp7DQogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KfQ0KDQoNCi8qDQogKiBUaGUgdGFiIGhlYWRlcnMNCiAqLw0KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7DQokYWN0aXZlX3RhYiA9IGVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkgPyAnJyA6ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsNCg0KDQplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2dhbGxlcmllcycsJHRoaXMtPkxhbmcoJ2dhbGxlcmllcycpLCAoJGFjdGl2ZV90YWIgPT0gJ2dhbGxlcmllcycpP3RydWU6ZmFsc2UpOw0KDQoNCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3RlbXBsYXRlcycsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlcycpLCAoJGFjdGl2ZV90YWIgPT0gJ3RlbXBsYXRlcycpP3RydWU6ZmFsc2UpOw0KfQ0KDQoJCQkNCmlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKQ0Kew0KCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignb3B0aW9ucycsJHRoaXMtPkxhbmcoJ29wdGlvbnMnKSwgKCRhY3RpdmVfdGFiID09ICdvcHRpb25zJyk/dHJ1ZTpmYWxzZSk7DQp9DQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7DQoNCg0KLyoNCiAqIFRoZSBjb250ZW50IG9mIHRoZSB0YWJzDQogKi8NCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KDQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBHYWxsZXJ5JykgKQ0Kew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdnYWxsZXJpZXMnLCAkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fZ2FsbGVyaWVzdGFiLnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCgllY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGVzJywgJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3RlbXBsYXRlc3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykpDQp7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ29wdGlvbnMnLCAkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fb3B0aW9uc3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCiAgew0KICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpOw0KICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsJHBhcmFtcyk7DQogICAgcmV0dXJuOw0KICB9DQoNCmlmKCAhKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSApDQogIHsNCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOw0KICAgIHJldHVybjsNCiAgfQ0KDQokdGVtcGxhdGUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCR0ZW1wbGF0ZSk7DQoNCi8vIGRlbGV0ZSBjc3MtZmlsZQ0KaWYoIGZpbGVfZXhpc3RzKCcuLi9tb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8nIC4gJHRlbXBsYXRlIC4gJy5jc3MnKSApDQogIHsNCiAgICB1bmxpbmsoJy4uL21vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLycgLiAkdGVtcGxhdGUgLiAnLmNzcycpOw0KICB9DQoNCi8vIGRlbGV0ZSB0ZW1wbGF0ZXByb3BlcnRpZXMNCiRxdWVyeSA9ICJERUxFVEUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgV0hFUkUgdGVtcGxhdGU9PyI7DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRlbXBsYXRlKSk7DQoNCi8vIHNldCBhc3NpZ25lZCBnYWxsZXJpZXMgdG8gZGVmYXVsdC10ZW1wbGF0ZQ0KJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCB0ZW1wbGF0ZWlkPT8gV0hFUkUgdGVtcGxhdGU9PyI7DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoMCwgJHRlbXBsYXRlKSk7DQoNCiRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ3RlbXBsYXRlZGVsZXRlZCcsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_addtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICggISRnQ21zICkgZXhpdCgpOw0KDQppZiAoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCn0NCg0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsNCn0NCg0KaWYgKCBlbXB0eSgkcGFyYW1zWyd0ZW1wbGF0ZSddKSB8fCBlbXB0eSgkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSkgKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgnZXJyb3JzJyA9PiAkdGhpcy0+TGFuZygnZXJyb3InKSwgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KJHBhcmFtc1sndGVtcGxhdGUnXSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoNCi8vIGNoZWNrIGlmIHRoaXMgdGVtcGxhdGUgYWxyZWFkeSBleGlzdHMNCiR0eHQgPSB0cmltKCR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKSk7DQppZiggJHR4dCAhPSAiIiApDQp7DQoJJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJHBhcmFtc1snb3JpZ2FjdGlvbiddLCAnJywgJHBhcmFtcyk7DQoJcmV0dXJuOw0KfQ0KDQovLyBzYXZlIHRlbXBsYXRlDQokdGhpcy0+U2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSwgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlanMnXS4nKn0nICk7DQoNCi8vIHNhdmUgY3NzLWZpbGUNCiRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycsJ3cnKTsNCmZ3cml0ZSgkaGFuZGxlLCRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10pOw0KZmNsb3NlKCRoYW5kbGUpOw0KDQovLyBzYXZlIHRlbXBsYXRlcHJvcGVydGllcw0KaWYgKCAkcGFyYW1zWyd0aHVtYndpZHRoJ10gPD0gMCB8fCAkcGFyYW1zWyd0aHVtYmhlaWdodCddIDw9IDAgKQ0Kew0KCSRwYXJhbXNbJ3RodW1id2lkdGgnXSA9IE5VTEw7DQoJJHBhcmFtc1sndGh1bWJoZWlnaHQnXSA9IE5VTEw7DQoJJHBhcmFtc1sncmVzaXplbWV0aG9kJ10gPSBOVUxMOw0KfQ0KJHBhcmFtc1snbWF4bnVtYmVyJ10gPSAkcGFyYW1zWydtYXhudW1iZXInXSA+IDAgPyAkcGFyYW1zWydtYXhudW1iZXInXSA6IE5VTEw7DQoNCi8vIGpvaW4gc29ydHByZWZlcmVuY2VzIHRvIHN0cmluZw0KJHBhcmFtc1snc29ydGl0ZW1zJ10gPSAnJzsNCmZvcmVhY2goJHBhcmFtc1snc29ydGZpZWxkJ10gYXMgJGtleT0+JHNvcnRmaWVsZCkNCnsNCgkkcGFyYW1zWydzb3J0aXRlbXMnXSAuPSAhZW1wdHkoJHNvcnRmaWVsZCkgPyBzdHJfcmVwbGFjZSgnIycsJHBhcmFtc1snc29ydHR5cGUnXVska2V5XSwkc29ydGZpZWxkKS4nLycgOiAnJzsNCn0NCiRwYXJhbXNbJ3NvcnRpdGVtcyddID0gc3Vic3RyKCRwYXJhbXNbJ3NvcnRpdGVtcyddLDAsLTEpOw0KDQokcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzDQoJCSh0ZW1wbGF0ZSx0aHVtYndpZHRoLHRodW1iaGVpZ2h0LHJlc2l6ZW1ldGhvZCxtYXhudW1iZXIsc29ydGl0ZW1zKQ0KCQlWQUxVRVMgKD8sPyw/LD8sPyw/KSI7DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1sndGVtcGxhdGUnXSwkcGFyYW1zWyd0aHVtYndpZHRoJ10sJHBhcmFtc1sndGh1bWJoZWlnaHQnXSwkcGFyYW1zWydyZXNpemVtZXRob2QnXSwkcGFyYW1zWydtYXhudW1iZXInXSwkcGFyYW1zWydzb3J0aXRlbXMnXSkpOw0KaWYgKCAhJHJlc3VsdCApDQp7DQoJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCWV4aXQoKTsNCn0NCg0KJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAndGVtcGxhdGVhZGRlZCcsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_editgallery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7DQoNCmlmKCBpc3NldCggJHBhcmFtc1snY2FuY2VsJ10gKSApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnZ2FsbGVyaWVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCn0NCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkNCnsNCglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQp9DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snZ2lkJ10pIHx8ICFpc3NldCgkcGFyYW1zWydtb2RlJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2dpZCcgPT4gJHBhcmFtc1snZ2lkJ10sICdtb2RlJyA9PiAnZWRpdCcsICdlcnJvcnMnID0+ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZWRpdGdhbGxlcnknLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KaWYoICRwYXJhbXNbJ21vZGUnXSA9PSAndW5zb3J0JykNCnsNCgkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgU0VUIGZpbGVvcmRlcj0wIFdIRVJFIGdhbGxlcnlpZCA9ID8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydnaWQnXSkpOw0KCWlmICggISRyZXN1bHQgKQ0KCXsNCgkJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQlleGl0KCk7DQoJfQ0KfQ0KZWxzZQ0Kew0KCSRnYWxsZXJ5dGl0bGUgPSBpc3NldCgkcGFyYW1zWydnYWxsZXJ5dGl0bGUnXSkgPyAkcGFyYW1zWydnYWxsZXJ5dGl0bGUnXSA6ICcnOw0KCSRnYWxsZXJ5Y29tbWVudCA9IGlzc2V0KCRwYXJhbXNbJ2dhbGxlcnljb21tZW50J10pID8gJHBhcmFtc1snZ2FsbGVyeWNvbW1lbnQnXSA6ICcnOw0KDQoJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IFNFVCB0aXRsZSA9ID8sIGNvbW1lbnQgPSA/IFdIRVJFIGZpbGVpZCA9ID8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZ2FsbGVyeXRpdGxlLCAkZ2FsbGVyeWNvbW1lbnQsICRwYXJhbXNbJ2dpZCddKSk7DQoJaWYgKCAhJHJlc3VsdCApDQoJew0KCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCWV4aXQoKTsNCgl9DQoNCgkkcGFyYW1zWydoaWRlcGFyZW50bGluayddID0gaXNzZXQoJHBhcmFtc1snaGlkZXBhcmVudGxpbmsnXSkgPyAkcGFyYW1zWydoaWRlcGFyZW50bGluayddIDogMDsNCgkkcGFyYW1zWydoaWRlcGFyZW50bGluayddID0gJHBhcmFtc1snZ2lkJ10gPT0gMSA/IDEgOiAkcGFyYW1zWydoaWRlcGFyZW50bGluayddOw0KDQoJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCB0ZW1wbGF0ZWlkPT8saGlkZXBhcmVudGxpbms9PyBXSEVSRSBmaWxlaWQ9PyI7DQoJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ3RlbXBsYXRlaWQnXSwkcGFyYW1zWydoaWRlcGFyZW50bGluayddLCRwYXJhbXNbJ2dpZCddKSk7DQoJaWYgKCAhJHJlc3VsdCApDQoJew0KCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCWV4aXQoKTsNCgl9DQoNCg0KCWlmICggIWVtcHR5KCRwYXJhbXNbJ3NvcnQnXSkgKQ0KCXsNCgkJJHNvcnQgPSBleHBsb2RlKCIsIiwkcGFyYW1zWydzb3J0J10pOw0KCX0NCgkkc2VhcmNod29yZHMgPSAkZ2FsbGVyeXRpdGxlIC4gJyAnIC4gJGdhbGxlcnljb21tZW50Ow0KCWlmICggaXNzZXQoJHBhcmFtc1snZmlsZXRpdGxlJ10pICkNCgl7DQoJCWZvcmVhY2goJHBhcmFtc1snZmlsZXRpdGxlJ10gYXMgJGtleT0+JGZpbGV0aXRsZSkNCgkJew0KCQkJaWYgKCAhZW1wdHkoJHBhcmFtc1snc29ydCddKSApDQoJCQl7DQoJCQkJJHNvcnRrZXkgPSBlbXB0eSgkc29ydCkgPyAwIDogYXJyYXlfc2VhcmNoKCRrZXksICRzb3J0KSArIDE7DQoJCQkJaWYgKCAkZmlsZXRpdGxlID09ICIjZGlyIiApDQoJCQkJew0KCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgU0VUIGZpbGVvcmRlcj0/IFdIRVJFIGZpbGVpZCA9ID8iOw0KCQkJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNvcnRrZXksICRrZXkpKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJHNlYXJjaHdvcmRzIC49ICcgJyAuICRmaWxldGl0bGUgLiAnICcgLiAkcGFyYW1zWydmaWxlY29tbWVudCddWyRrZXldOw0KCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgU0VUIHRpdGxlPT8sIGNvbW1lbnQ9PywgZmlsZW9yZGVyPT8gV0hFUkUgZmlsZWlkID0gPyI7DQoJCQkJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmlsZXRpdGxlLCAkcGFyYW1zWydmaWxlY29tbWVudCddWyRrZXldLCAkc29ydGtleSwgJGtleSkpOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2VpZiAoICRmaWxldGl0bGUgIT0gIiNkaXIiICkNCgkJCXsNCgkJCQkkc2VhcmNod29yZHMgLj0gJyAnIC4gJGZpbGV0aXRsZSAuICcgJyAuICRwYXJhbXNbJ2ZpbGVjb21tZW50J11bJGtleV07DQoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IFNFVCB0aXRsZT0/LCBjb21tZW50PT8gV0hFUkUgZmlsZWlkID0gPyI7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxldGl0bGUsICRwYXJhbXNbJ2ZpbGVjb21tZW50J11bJGtleV0sICRrZXkpKTsNCgkJCX0NCgkJCWlmICggISRyZXN1bHQgKQ0KCQkJew0KCQkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCQlleGl0KCk7DQoJCQl9DQoJCX0NCgl9DQp9DQoNCg0KaWYgKCAkcmVzdWx0ICkgDQp7DQoJJHNlYXJjaCA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ1NlYXJjaCcpOw0KCWlmKCAkc2VhcmNoICYmICRwYXJhbXNbJ21vZGUnXSAhPSAndW5zb3J0JyApDQoJew0KCQkkc2VhcmNoLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCRwYXJhbXNbJ2dpZCddLCdnYWxsZXJ5Jywkc2VhcmNod29yZHMpOw0KCX0NCg0KCSRwYXJhbXMgPSBhcnJheSgnZ2lkJyA9PiAkcGFyYW1zWydnaWQnXSwgJ21vZGUnID0+ICdlZGl0JywgJ21vZHVsZV9tZXNzYWdlJyA9PiAkdGhpcy0+TGFuZygnZ2FsbGVyeXVwZGF0ZWQnKSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXRnYWxsZXJ5JywgJycsICRwYXJhbXMpOw0KfQ0KZWxzZSANCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2dpZCcgPT4gJHBhcmFtc1snZ2lkJ10sICdtb2RlJyA9PiAnZWRpdCcsICdlcnJvcnMnID0+ICR0aGlzLT5MYW5nKCdlcnJvcl91cGRhdGVnYWxsZXJ5ZmFpbGVkJykpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0Z2FsbGVyeScsICcnLCAkcGFyYW1zKTsNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7DQoNCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQp9DQoNCmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApDQp7DQoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQp9DQoNCmlmICggZW1wdHkoJHBhcmFtc1sndGVtcGxhdGUnXSkgfHwgZW1wdHkoJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2Vycm9ycycgPT4gJHRoaXMtPkxhbmcoJ2Vycm9yJyksICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCmlmICggaXNzZXQoJHBhcmFtc1sncmVzZXRidXR0b24nXSkgKQ0Kew0KCSRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVfJy5zdHJ0b2xvd2VyKCRwYXJhbXNbJ3RlbXBsYXRlJ10pLicudHBsJzsNCglpZiggZmlsZV9leGlzdHMoICRmbiApICkNCgl7DQoJCSR0ZW1wbGF0ZWNvZGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJbGlzdCgkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSwgJHBhcmFtc1sndGVtcGxhdGVjc3MnXSwgJHBhcmFtc1sndGVtcGxhdGVqcyddKSA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCBzdWJzdHIoJHRlbXBsYXRlY29kZSwwLC0yKSk7DQoJfQ0KfQ0KDQovLyBzYXZlIHRlbXBsYXRlDQokdGhpcy0+U2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSwgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlanMnXS4nKn0nICk7DQoNCi8vIHNhdmUgY3NzLWZpbGUNCmlmICggZW1wdHkoJHBhcmFtc1sndGVtcGxhdGVjc3MnXSkgKQ0Kew0KCXVubGluaygnLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycpOw0KfQ0KZWxzZQ0Kew0KCSRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycsJ3cnKTsNCglmd3JpdGUoJGhhbmRsZSwkcGFyYW1zWyd0ZW1wbGF0ZWNzcyddKTsNCglmY2xvc2UoJGhhbmRsZSk7DQp9DQoNCi8vIHNhdmUgdGVtcGxhdGVwcm9wZXJ0aWVzDQppZiAoICRwYXJhbXNbJ3RodW1id2lkdGgnXSA8PSAwIHx8ICRwYXJhbXNbJ3RodW1iaGVpZ2h0J10gPD0gMCApDQp7DQoJJHBhcmFtc1sndGh1bWJ3aWR0aCddID0gTlVMTDsNCgkkcGFyYW1zWyd0aHVtYmhlaWdodCddID0gTlVMTDsNCgkkcGFyYW1zWydyZXNpemVtZXRob2QnXSA9IE5VTEw7DQp9DQokcGFyYW1zWydtYXhudW1iZXInXSA9ICRwYXJhbXNbJ21heG51bWJlciddID4gMCA/ICRwYXJhbXNbJ21heG51bWJlciddIDogTlVMTDsNCg0KLy8gam9pbiBzb3J0cHJlZmVyZW5jZXMgdG8gc3RyaW5nDQokcGFyYW1zWydzb3J0aXRlbXMnXSA9ICcnOw0KZm9yZWFjaCgkcGFyYW1zWydzb3J0ZmllbGQnXSBhcyAka2V5PT4kc29ydGZpZWxkKQ0Kew0KCSRwYXJhbXNbJ3NvcnRpdGVtcyddIC49ICFlbXB0eSgkc29ydGZpZWxkKSA/IHN0cl9yZXBsYWNlKCcjJywkcGFyYW1zWydzb3J0dHlwZSddWyRrZXldLCRzb3J0ZmllbGQpLicvJyA6ICcnOw0KfQ0KJHBhcmFtc1snc29ydGl0ZW1zJ10gPSBzdWJzdHIoJHBhcmFtc1snc29ydGl0ZW1zJ10sMCwtMSk7DQoNCiRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzDQoJCVNFVCB0aHVtYndpZHRoPT8sdGh1bWJoZWlnaHQ9PyxyZXNpemVtZXRob2Q9PyxtYXhudW1iZXI9Pyxzb3J0aXRlbXM9Pw0KCQlXSEVSRSB0ZW1wbGF0ZT0/IjsNCiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyd0aHVtYndpZHRoJ10sJHBhcmFtc1sndGh1bWJoZWlnaHQnXSwkcGFyYW1zWydyZXNpemVtZXRob2QnXSwkcGFyYW1zWydtYXhudW1iZXInXSwkcGFyYW1zWydzb3J0aXRlbXMnXSwkcGFyYW1zWyd0ZW1wbGF0ZSddKSk7DQppZiAoICEkcmVzdWx0ICkNCnsNCgllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJZXhpdCgpOw0KfQ0KDQppZiAoIGlzc2V0KCRwYXJhbXNbJ2FwcGx5YnV0dG9uJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ3Jlc2V0YnV0dG9uJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ3RlbXBsYXRlJyA9PiAkcGFyYW1zWyd0ZW1wbGF0ZSddLCAnbW9kZScgPT4gImVkaXQiLCAnbW9kdWxlX21lc3NhZ2UnID0+ICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZXVwZGF0ZWQnKSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICcnLCAkcGFyYW1zKTsNCn0NCmVsc2UNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICd0ZW1wbGF0ZXVwZGF0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApDQp7DQogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KfQ0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9leHRlbnNpb25zJywgJHBhcmFtc1snYWxsb3dlZF9leHRlbnNpb25zJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZV9jb21tZW50X3d5c2l3eWcnLCBpc3NldCgkcGFyYW1zWyd1c2VfY29tbWVudF93eXNpd3lnJ10pID8gJHBhcmFtc1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddIDogMCk7DQoNCg0KJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnb3B0aW9uc3VwZGF0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ29wdGlvbnMnKTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.editgallery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkZ0NtcyApIGV4aXQoKTsNCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkgDQp7DQoJZWNobyAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJyk7DQoJcmV0dXJuOw0KfQ0KDQokdGhlbWVPYmplY3QgPSYgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddOw0KDQoNCi8vIGNoZWNrIGlmIHdlIGhhdmUgYSBnYWxsZXJ5IG5hbWUNCmlmKCAhaXNzZXQoJHBhcmFtc1snZ2lkJ10pICkNCnsNCgkkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCmlmKCAhaXNzZXQoJHBhcmFtc1snbW9kZSddKSApDQp7DQoJJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywnJywkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCiRwYXJhbXNbJ29yaWdhY3Rpb24nXSA9ICRwYXJhbXNbJ2FjdGlvbiddOw0KDQokZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkcGFyYW1zWydnaWQnXSk7DQppZiAoICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddID09IDAgKQ0Kew0KCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZQ0KCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3RlbXBsYXRlJykpOw0KCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkkZ2FsbGVyeWluZm9bJ3NvcnRpdGVtcyddID0gJHRlbXBsYXRlcHJvcHNbJ3NvcnRpdGVtcyddOw0KfQ0KJGdhbGxlcnlwYXRoID0gJHBhcmFtc1snZ2lkJ10gPT0gMSA/ICcnIDogdHJpbSgkZ2FsbGVyeWluZm9bJ2ZpbGVwYXRoJ10gLiAnLycgLiAkZ2FsbGVyeWluZm9bJ2ZpbGVuYW1lJ10sJy8nKTsNCg0KJGNvbnRlbnRzID0gIiI7DQppZiggJHBhcmFtc1snbW9kZSddID09ICdhZGQnICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZGdhbGxlcnknLCRyZXR1cm5pZCwncG9zdCcsJycsIGZhbHNlLCAnJywgJHBhcmFtcykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeW5hbWUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdnYWxsZXJ5JywgIiIsIDQwICkpOw0KfQ0KZWxzZSANCnsNCgkkdGhpcy0+X1VwZGF0ZUdhbGxlcnlEQigkZ2FsbGVyeXBhdGgsJHBhcmFtc1snZ2lkJ10pOw0KCSRnYWxsZXJ5ID0gJHRoaXMtPl9HZXRnYWxsZXJ5ZmlsZXMoJGdhbGxlcnlwYXRoKTsNCg0KCSRzaG93Z2FsbGVyeSA9IGFycmF5KCk7DQoJJHRydWVpbWFnZSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygnc2V0ZmFsc2UnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCSR0cnVlaW1hZ2UyID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdkZWZhdWx0JyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkkZmFsc2VpbWFnZSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ3NldHRydWUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KDQoJZm9yZWFjaCAoJGdhbGxlcnkgYXMgJGZpbGUpDQoJew0KCQkkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7DQoNCgkJJHBhcmFtc1snZmlkJ10gPSAkZmlsZVsnZmlsZWlkJ107DQoNCgkJJG9uZXJvdy0+ZmlsZWlkID0gJGZpbGVbJ2ZpbGVpZCddOw0KCQkkb25lcm93LT5maWxlb3JkZXIgPSAkZmlsZVsnZmlsZW9yZGVyJ107DQoJCSRvbmVyb3ctPmZpbGUgPSAkZmlsZVsnZmlsZW5hbWUnXTsNCg0KCQlpZiAoIHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwtMSkgPT0gIi8iICkNCgkJew0KCQkJLy8gcmVjb3JkIGlzIGEgZGlyZWN0b3J5DQoJCQkkb25lcm93LT50aHVtYiA9ICc8aW1nIHNyYz0iLi4vbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXJzbWFsbC5wbmciIGFsdD0iJyAuICRmaWxlWydmaWxlbmFtZSddIC4gJyIgLz4nOw0KCQkJJG9uZXJvdy0+dGh1bWJ1cmwgPSAnLi4vbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXJzbWFsbC5wbmcnOw0KCQkJJG9uZXJvdy0+ZmlsZW5hbWUgPSAnJzsNCgkJCSRvbmVyb3ctPnRpdGxlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGdhbGxlcnknLCAkcmV0dXJuaWQsICRmaWxlWydmaWxlbmFtZSddLCBhcnJheSgnZ2lkJz0+JGZpbGVbJ2ZpbGVpZCddLCdtb2RlJz0+ImVkaXQiKSkgLiAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZmlsZXRpdGxlWycgLiAkZmlsZVsnZmlsZWlkJ10gLiAnXScsICcjZGlyJyk7DQoJCQkkb25lcm93LT5jb21tZW50ID0gIiI7DQoJCQkkb25lcm93LT5maWxlZGF0ZSA9ICIiOw0KCQkJJG9uZXJvdy0+ZGVmYXVsdGxpbmsgPSAiIjsNCgkJCSRvbmVyb3ctPmlzZGlyID0gMTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRvbmVyb3ctPnRodW1iID0gJzxpbWcgc3JjPSIuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkZmlsZVsnZmlsZXBhdGgnXSAuICcvJyAuIElNX1BSRUZJWCAuICRmaWxlWydmaWxlbmFtZSddIC4gJyIgYWx0PSInIC4gJGZpbGVbJ2ZpbGVuYW1lJ10gLiAnIiAvPic7DQoJCQkkb25lcm93LT50aHVtYnVybCA9ICcuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiBzdHJfcmVwbGFjZSgnJTJGJywnLycscmF3dXJsZW5jb2RlKCRmaWxlWydmaWxlcGF0aCddIC4gJy8nIC4gSU1fUFJFRklYIC4gJGZpbGVbJ2ZpbGVuYW1lJ10pKTsNCgkJCSRvbmVyb3ctPmZpbGVuYW1lID0gJGZpbGVbJ2ZpbGVuYW1lJ107DQoJCQkkb25lcm93LT50aXRsZSA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmlsZXRpdGxlWycgLiAkZmlsZVsnZmlsZWlkJ10gLiAnXScsICRmaWxlWyd0aXRsZSddLCAzMCwgMTAwKTsNCgkJCSRvbmVyb3ctPmNvbW1lbnQgPSAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoMCwgJGlkLCAkZmlsZVsnY29tbWVudCddLCAnZmlsZWNvbW1lbnRbJyAuICRmaWxlWydmaWxlaWQnXSAuICddJywgJ2Zha2UiIHN0eWxlPSJ3aWR0aDo0MDBweDsgaGVpZ2h0OjRlbTsnLCAnJywgJycsICcnLCAnNDAnLCAnNCcpOyAgLy8gY2xhc3MgZmlsbGVkIHdpdGggZmFrZSBhbmQgc3R5bGUtaW5mbyB0byBvdmVycnVsZSB0aGUgdGhlbWUtY3NzDQoJCQkkb25lcm93LT5maWxlZGF0ZSA9ICRmaWxlWydmaWxlZGF0ZSddOw0KCQkJaWYoICRmaWxlWydmaWxlaWQnXSA9PSAkZ2FsbGVyeWluZm9bJ2RlZmF1bHRmaWxlJ10gKQ0KCQkJew0KCQkJCSRvbmVyb3ctPmRlZmF1bHRsaW5rID0gJHRydWVpbWFnZTI7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJG9uZXJvdy0+ZGVmYXVsdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzd2l0Y2hkZWZhdWx0JywgJHJldHVybmlkLCAkZmFsc2VpbWFnZSwgJHBhcmFtcyk7DQoJCQl9DQoJCQkkb25lcm93LT5pc2RpciA9IDA7DQoJCQlpZiAoICFmaWxlX2V4aXN0cygnLi4vJyAuIERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJGZpbGVbJ2ZpbGVwYXRoJ10gLiAnLycgLiBJTV9QUkVGSVggLiAkZmlsZVsnZmlsZW5hbWUnXSkgKQ0KCQkJew0KCQkJCSR0aGlzLT5fQ3JlYXRlVGh1bWJuYWlsKCcuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkZmlsZVsnZmlsZXBhdGgnXSAuICcvJyAuIElNX1BSRUZJWCAuICRmaWxlWydmaWxlbmFtZSddLA0KCQkJCQkJCQkJCScuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkZmlsZVsnZmlsZXBhdGgnXSAuICcvJyAuICRmaWxlWydmaWxlbmFtZSddLA0KCQkJCQkJCQkJCTk2LCA5NiwgJ3NjJyk7DQoJCQl9DQoJCX0NCg0KCQlpZiAoICRmaWxlWydhY3RpdmUnXSApDQoJCXsNCgkJCSRhY3RpdmVpbWFnZSA9ICR0cnVlaW1hZ2U7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkYWN0aXZlaW1hZ2UgPSAkZmFsc2VpbWFnZTsNCgkJfQ0KCQkkb25lcm93LT5hY3RpdmVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3dpdGNoYWN0aXZlJywgJHJldHVybmlkLCAkYWN0aXZlaW1hZ2UsICRwYXJhbXMpOw0KDQoJCWlmICggJGZpbGVbJ2ZpbGVpZCddICE9IDEgKQ0KCQl7DQoJCQlhcnJheV9wdXNoKCRzaG93Z2FsbGVyeSwgJG9uZXJvdyk7DQoJCX0NCgl9DQoNCgkkc29ydGFycmF5ID0gZXhwbG9kZSgnLycsJ24rZmlsZW9yZGVyLycuJGdhbGxlcnlpbmZvWydzb3J0aXRlbXMnXSk7DQoJJHNob3dnYWxsZXJ5ID0gJHRoaXMtPl9BcnJheVNvcnQoJHNob3dnYWxsZXJ5LCAkc29ydGFycmF5LCBmYWxzZSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRzaG93Z2FsbGVyeSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkc2hvd2dhbGxlcnkpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW0nLCAkdGhpcy0+TGFuZygnaXRlbScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29tbWVudCcsICR0aGlzLT5MYW5nKCdjb21tZW50JykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZmlsZWRhdGUnLCAkdGhpcy0+TGFuZygnZGF0ZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FjdGl2ZScsICR0aGlzLT5MYW5nKCdhY3RpdmUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2RlZmF1bHQnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdub2ZpbGVzdGV4dCcsICR0aGlzLT5sYW5nKCJub2ZpbGVzdGV4dCIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2VkaXRnYWxsZXJ5JywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdldGl0bGUnLCRnYWxsZXJ5cGF0aCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9nYWxsZXJ5dGl0bGUnLCR0aGlzLT5MYW5nKCdnYWxsZXJ5dGl0bGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnl0aXRsZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2dhbGxlcnl0aXRsZScsICRnYWxsZXJ5aW5mb1sndGl0bGUnXSwgNDAsIDEwMCApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2NvbW1lbnQnLCR0aGlzLT5MYW5nKCdjb21tZW50JykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Y29tbWVudCcsICR0aGlzLT5DcmVhdGVUZXh0QXJlYSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2NvbW1lbnRfd3lzaXd5ZycsMSksICRpZCwgJGdhbGxlcnlpbmZvWydjb21tZW50J10sICdnYWxsZXJ5Y29tbWVudCcsICdmYWtlIiBzdHlsZT0iaGVpZ2h0OjZlbTsnLCAnJywgJycsICcnLCAnODAnLCAnMycpKTsNCg0KJHRlbXBsYXRlbGlzdCA9IGFycmF5KCctICcgLiAkdGhpcy0+TGFuZygndXNlZGVmYXVsdCcpIC4gJyAtJz0+MCk7DQokcXVlcnkgPSAiU0VMRUNUIHRlbXBsYXRlaWQsIHRlbXBsYXRlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgT1JERVIgQlkgdGVtcGxhdGUgQVNDIjsNCiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCndoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KCSR0ZW1wbGF0ZWxpc3RbJHJvd1sndGVtcGxhdGUnXV0gPSAkcm93Wyd0ZW1wbGF0ZWlkJ107DQp9DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0ZW1wbGF0ZWlkJywgJHRlbXBsYXRlbGlzdCwgLTEsICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2hpZGVwYXJlbnRsaW5rJywkdGhpcy0+TGFuZygnaGlkZXBhcmVudGxpbmsnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hpZGVwYXJlbnRsaW5rJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaGlkZXBhcmVudGxpbmsnLCAnMScsICRnYWxsZXJ5aW5mb1snaGlkZXBhcmVudGxpbmsnXSwgJHBhcmFtc1snZ2lkJ10gPT0gMSA/ICdkaXNhYmxlZD0iZGlzYWJsZWQnIDogJycpKTsNCg0KLy8kdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jcmVhdGV0aHVtYnMnLCAoIWVtcHR5KCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddKSA/ICR0aGlzLT5MYW5nKCdjcmVhdGV0aHVtYnMnKSA6ICcnKSk7DQovLyR0aGlzLT5zbWFydHktPmFzc2lnbignY3JlYXRldGh1bWJzJywgKCFlbXB0eSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSkgPyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGV0aHVtYnMnLCAkcmV0dXJuaWQsICc8aW1nIHNyYz0iLi4vbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mcGFpbnQuZ2lmIiBhbHQ9IicgLiAkdGhpcy0+TGFuZygnY3JlYXRldGh1bWJzJykgLiAnIi8+JywgYXJyYXkoJ2dpZCc9PiRwYXJhbXNbJ2dpZCddKSwgJycsIGZhbHNlLCBmYWxzZSkgOiAnJykpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NvcnRieXNldHRpbmdzJywkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19lZGl0Z2FsbGVyeScsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3NvcnRieXNldHRpbmdzJyksIGFycmF5KCdnaWQnPT4kcGFyYW1zWydnaWQnXSwnbW9kZSc9Pid1bnNvcnQnKSkpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3NvcnQnLCAnJywgJ2lkPSJzb3J0IicpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcgKCdzdWJtaXQnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcgKCdjYW5jZWwnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGdhbGxlcnkudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkZ0NtcyApIGV4aXQoKTsNCg0KaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCgkkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KaWYoICFpc3NldCgkcGFyYW1zWydtb2RlJ10pICkNCnsNCgkkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KJHBhcmFtc1snb3JpZ2FjdGlvbiddID0gJHBhcmFtc1snYWN0aW9uJ107DQokdGVtcGxhdGVwcm9wcyA9IGFycmF5KCd0ZW1wbGF0ZWlkJz0+MCwgJ3RodW1id2lkdGgnPT4nJywgJ3RodW1iaGVpZ2h0Jz0+JycsICdyZXNpemVtZXRob2QnPT4nJywgJ21heG51bWJlcic9PicnLCAnc29ydGl0ZW1zJz0+JycpOw0KJGNvbnRlbnRzID0gIiI7DQppZiggJHBhcmFtc1snbW9kZSddID09ICdhZGQnICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3RlbXBsYXRlJywgIiIsIDQwICkpOw0KCWlmKCBpc3NldCgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pICYmICRwYXJhbXNbJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnXSAhPSAnJyApDQoJew0KCQkkY29udGVudHMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pOw0KCX0NCglpZiggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSAhPSAnJyApDQoJew0KCQkkY29udGVudHMgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJfQ0KfQ0KZWxzZSANCnsNCglpZiggIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCgl7DQoJCSRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOw0KCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCQlyZXR1cm47DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJJGNvbnRlbnRzID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KfQ0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0ZW1wbGF0ZWlkJywgJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXSkpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90aHVtYm5haWxzaXplJywgJHRoaXMtPkxhbmcoJ3RodW1ibmFpbHNpemUnKSk7DQokcmVzaXplbWV0aG9kbGlzdCA9IGFycmF5KCR0aGlzLT5MYW5nKCdjcm9wJyk9PidjcicsJHRoaXMtPkxhbmcoJ3NjYWxlJyk9PidzYycsJHRoaXMtPkxhbmcoJ3pvb21jcm9wJyk9Pid6YycsJHRoaXMtPkxhbmcoJ3pvb21zY2FsZScpPT4nenMnKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGh1bWJuYWlsc2l6ZScsDQoJCSR0aGlzLT5MYW5nKCdsZWF2ZWVtcHR5JykgLiAnPGJyIC8+JyAuDQoJCSR0aGlzLT5MYW5nKCd3aWR0aCcpIC4gJzombmJzcDsnIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGh1bWJ3aWR0aCcsICR0ZW1wbGF0ZXByb3BzWyd0aHVtYndpZHRoJ10sIDQsIDQgKSAuDQoJCScmbmJzcDsmbmJzcDsmbmJzcDsnIC4gJHRoaXMtPkxhbmcoJ2hlaWdodCcpIC4gJzombmJzcDsnIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGh1bWJoZWlnaHQnLCAkdGVtcGxhdGVwcm9wc1sndGh1bWJoZWlnaHQnXSwgNCwgNCApIC4NCgkJJyZuYnNwOyZuYnNwOyZuYnNwOycgLiAkdGhpcy0+TGFuZygncmVzaXplbWV0aG9kJykgLiAnOiZuYnNwOycgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdyZXNpemVtZXRob2QnLCAkcmVzaXplbWV0aG9kbGlzdCwgLTEsICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXSkNCik7DQoNCiRzb3J0ZmllbGRsaXN0ID0gYXJyYXkoJyAtJz0+JycsJ2ZpbGVuYW1lJz0+J3MjZmlsZScsICdmaWxlZGF0ZSc9PidzI2ZpbGVkYXRlJywgJ3RpdGxlJz0+J3MjdGl0bGUnLCAnY29tbWVudCc9PidzI2NvbW1lbnQnLCAnc3ViZ2FsbGVyeSAodHJ1ZS9mYWxzZSknPT4nbiNpc2RpcicsICdhY3RpdmUgKHRydWUvZmFsc2UpJz0+J24jYWN0aXZlJyk7DQokc29ydHR5cGVsaXN0ID0gYXJyYXkoJHRoaXMtPkxhbmcoJ2FzY2VuZGluZycpPT4nKycsJHRoaXMtPkxhbmcoJ2Rlc2NlbmRpbmcnKT0+Jy0nKTsNCiRzb3J0aXRlbXMgPSBleHBsb2RlKCcvJywkdGVtcGxhdGVwcm9wc1snc29ydGl0ZW1zJ10pOw0KJHNvcnRmaWVsZHMgPSAnJzsNCmZvcmVhY2ggKCRzb3J0aXRlbXMgYXMgJHNvcnRpdGVtKQ0Kew0KCSRzb3J0ZmllbGRzIC49ICc8cCBjbGFzcz0ic29ydGZpZWxkIj4nIC4NCgkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzb3J0ZmllbGRbXScsICRzb3J0ZmllbGRsaXN0LCAtMSwgc3Vic3RyKCRzb3J0aXRlbSwwLDEpIC4gJyMnIC4gc3Vic3RyKCRzb3J0aXRlbSwyKSkgLiAnJm5ic3A7ICcgLg0KCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3NvcnR0eXBlW10nLCAkc29ydHR5cGVsaXN0LCAtMSwgc3Vic3RyKCRzb3J0aXRlbSwxLDEpKSAuDQoJJzwvcD4nOw0KfQ0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc29ydGluZ29wdGlvbnMnLCAkdGhpcy0+TGFuZygnc29ydGluZ29wdGlvbnMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NvcnRpbmdvcHRpb25zJywgJzxwPicgLiAkdGhpcy0+TGFuZygnc3BlY2lmeXNvcnRmaWVsZHMnKSAuICc8L3A+JyAuDQoJJzxkaXYgaWQ9InNvcnRmaWVsZHMiPicgLiAkc29ydGZpZWxkcyAuICc8L2Rpdj4NCgk8cD48YSBocmVmPSIjIiBpZD0iYWRkZmllbGQiPicgLiAkdGhpcy0+TGFuZygnYWRkZmllbGQnKSAuICc8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iIyIgaWQ9ImRlbGV0ZWZpZWxkIj4nIC4gJHRoaXMtPkxhbmcoJ2RlbGV0ZWZpZWxkJykgLiAnPC9hPjwvcD4nDQopOw0KDQovLyBUT0RPOiBhZGQgZm9ybSBpbnB1dHMgZm9yIHNvcnRpbmdvcHRpb25zDQoNCiRjb250ZW50c2NvZGUgPSBleHBsb2RlKFRFTVBMQVRFX1NFUEFSQVRPUiwgJGNvbnRlbnRzKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVuYW1lJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlbmFtZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZScsICR0aGlzLT5DcmVhdGVTeW50YXhBcmVhICgkaWQsICRjb250ZW50c2NvZGVbMF0sICd0ZW1wbGF0ZWNvbnRlbnQnKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X21heG51bWJlcicsJHRoaXMtPkxhbmcoJ21heG51bWJlcicpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignbWF4bnVtYmVyJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnbWF4bnVtYmVyJywgJHRlbXBsYXRlcHJvcHNbJ21heG51bWJlciddLCA0LCAxMCApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc2hvd2FsbGltYWdlcycsJHRoaXMtPkxhbmcoJ3Nob3dhbGxpbWFnZXMnKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXZhaWxhYmxldmFyaWFibGVzJywkdGhpcy0+TGFuZygnYXZhaWxhYmxldmFyaWFibGVzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdmFpbGFibGV2YXJpYWJsZXNsaXN0JywkdGhpcy0+TGFuZygnYXZhaWxhYmxldmFyaWFibGVzbGlzdCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXZhaWxhYmxldmFyaWFibGVzbGluaycsJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbmZvLmdpZicsICR0aGlzLT5MYW5nKCdhdmFpbGFibGV2YXJpYWJsZXMnKSwnJywnJywnc3lzdGVtaWNvbicpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVjc3MnLCR0aGlzLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVjc3MnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlY3NzJywgJHRoaXMtPkNyZWF0ZVN5bnRheEFyZWEgKCRpZCwgc3RyX3JlcGxhY2UoIip9IiwgIiIsICRjb250ZW50c2NvZGVbMV0pLCAndGVtcGxhdGVjc3MnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZWpzJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlanMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlanMnLCAkdGhpcy0+Q3JlYXRlU3ludGF4QXJlYSAoJGlkLCBzdWJzdHIoJGNvbnRlbnRzY29kZVsyXSwwLC0yKSwgJ3RlbXBsYXRlanMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXBwbHknLCRwYXJhbXNbJ21vZGUnXSA9PSAnYWRkJyA/ICcnIDogJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5YnV0dG9uJywgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2NhbmNlbCcsICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZXNldCcsJHBhcmFtc1snbW9kZSddICE9ICdhZGQnICYmIGZpbGVfZXhpc3RzKCcuLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nR2FsbGVyeScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZV8nLnN0cnRvbG93ZXIoJHBhcmFtc1sndGVtcGxhdGUnXSkuJy50cGwnKSA/ICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnIC4gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3Jlc2V0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3Jlc2V0b3JpZ2luYWwnKSwgJycsICcnLCAkdGhpcy0+TGFuZygncmVzZXRvcmlnaW5hbHdhcm5pbmcnKSkgOiAnJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZW1wbGF0ZS50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.showlatest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokcGFyYW1zWydkaXInXSA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/IHJhd3VybGRlY29kZShjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0oJHBhcmFtc1snZGlyJ10sIi8iKSkpIDogJyc7DQokbnVtYmVyID0gKGlzc2V0KCRwYXJhbXNbJ251bWJlciddKSAmJiBpc19udW1lcmljKCRwYXJhbXNbJ251bWJlciddKSkgPyAkcGFyYW1zWydudW1iZXInXSA6IDY7DQokc2hvdyA9IChpc3NldCgkcGFyYW1zWydzaG93J10pICYmIGluX2FycmF5KCRwYXJhbXNbJ3Nob3cnXSwgYXJyYXkoJ2FjdGl2ZScsJ2luYWN0aXZlJywnYWxsJykpKSA/ICRwYXJhbXNbJ3Nob3cnXSA6ICdhY3RpdmUnOw0KDQokaW1nY291bnQgPSAwOw0KJGl0ZW1jb3VudCA9IDA7DQokaW1hZ2VzID0gYXJyYXkoKTsNCg0KaWYgKCBpc19kaXIoREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGFyYW1zWydkaXInXSkgKQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeXRpdGxlJywgaHRtbHNwZWNpYWxjaGFycyh0cmltKHN1YnN0cigkcGFyYW1zWydkaXInXSwgc3RycnBvcygkcGFyYW1zWydkaXInXSwgJy8nKSksIi8iKSkpOw0KDQoJLy8gZ2V0IGdhbGxlcnkgaW5mbw0KCSRnYWxsZXJ5aW5mbyA9ICR0aGlzLT5fR2V0Z2FsbGVyeWluZm8oJHBhcmFtc1snZGlyJ10pOw0KDQoJaWYgKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApDQoJew0KCQkvLyBvdmVycmlkZSB0ZW1wbGF0ZSBzZXR0aW5ncyB3aXRoIHBhcmFtIHRlbXBsYXRlDQoJCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZSddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYndpZHRoJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddID0gJHRlbXBsYXRlcHJvcHNbJ3Jlc2l6ZW1ldGhvZCddOw0KCX0NCglpZiAoIGVtcHR5KCRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddKSApDQoJew0KCQkvLyBvdmVycmlkZSB0ZW1wbGF0ZSBzZXR0aW5ncyB3aXRoIGRlZmF1bHQgdGVtcGxhdGUNCgkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKSk7DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1iaGVpZ2h0J107DQoJCSRnYWxsZXJ5aW5mb1sncmVzaXplbWV0aG9kJ10gPSAkdGVtcGxhdGVwcm9wc1sncmVzaXplbWV0aG9kJ107DQoJfQ0KDQoJaWYgKCAkZ2FsbGVyeWluZm9bJ2FjdGl2ZSddID09IDEgKQ0KCXsNCgkJaWYgKCAhZW1wdHkoJGdhbGxlcnlpbmZvWyd0aXRsZSddKSApDQoJCXsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeXRpdGxlJywgJGdhbGxlcnlpbmZvWyd0aXRsZSddKTsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnljb21tZW50JywgJGdhbGxlcnlpbmZvWydjb21tZW50J10pOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhcmVudGxpbmsnLCAnJyk7DQoJfQ0KDQoNCgkvLyBidWlsZCBnYWxsZXJ5IHdpdGggbGF0ZXN0IGltYWdlcw0KCQ0KCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsJDQoJJHF1ZXJ5ID0gIlNFTEVDVA0KCQkJCQkJCWcxLiosIGcyLmFjdGl2ZQ0KCQkJCQkJRlJPTSANCgkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcxDQoJCQkJCQlMRUZUIEpPSU4NCgkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcyDQoJCQkJCQlPTg0KCQkJCQkJCWcxLmdhbGxlcnlpZCA9IGcyLmZpbGVpZA0KCQkJCQkJV0hFUkUNCgkJCQkJCQlnMS5maWxlbmFtZSBOT1QgTElLRSAnJS8nDQoJCQkJCQkJQU5EIChnMS5nYWxsZXJ5aWQ9PyBPUiBnMS5maWxlcGF0aCBMSUtFID8pIjsNCglTd2l0Y2ggKCRzaG93KQ0KCXsNCgkJQ2FzZSAnYWN0aXZlJzogDQoJCQkkcXVlcnkgLj0gIiBBTkQgZzEuYWN0aXZlPTEgQU5EIGcyLmFjdGl2ZT0xIjsNCgkJCWJyZWFrOw0KCQlDYXNlICdpbmFjdGl2ZSc6DQoJCQkkcXVlcnkgLj0gIiBBTkQgZzEuYWN0aXZlPTAiOw0KCQkJYnJlYWs7DQoJfQ0KCSRxdWVyeSAuPSAiDQoJCQkJCQlPUkRFUiBCWQ0KCQkJCQkJCWZpbGVkYXRlIERFU0MNCgkJCQkJCUxJTUlUIDAsPyI7DQoJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRnYWxsZXJ5aW5mb1snZmlsZWlkJ10sIChlbXB0eSgkcGFyYW1zWydkaXInXSkgPyAnJScgOiAkcGFyYW1zWydkaXInXSAuICIvJSIpLCAkbnVtYmVyKSk7DQoJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkgDQoJew0KCSAgJG91dHB1dCA9IGFycmF5KCk7DQoJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApIA0KCSAgew0KCSAgICAkb3V0cHV0W3RyaW0oJHJvd1snZmlsZXBhdGgnXSAuICcvJyAuICRyb3dbJ2ZpbGVuYW1lJ10sJy8nKV0gPSAkcm93Ow0KCSAgICANCgkJLy8gY3JlYXRlIGEgbmV3IG9iamVjdCBmb3IgZXZlcnkgcmVjb3JkIHRoYXQgd2UgcmV0cmlldmUNCgkJJHJlYyA9IG5ldyBzdGRDbGFzcygpOw0KCQkkcmVjLT5maWxlaWQgPSAkcm93WydmaWxlaWQnXTsNCgkJJHJlYy0+ZmlsZSA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gc3RyX3JlcGxhY2UoJyUyRicsJy8nLHJhd3VybGVuY29kZSh0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJykpKTsNCgkJJHJlYy0+ZmlsZWRhdGUgPSAkcm93WydmaWxlZGF0ZSddOw0KCQkkcmVjLT50aXRsZSA9IGVtcHR5KCRyb3dbJ3RpdGxlJ10pID8gJHJvd1snZmlsZW5hbWUnXSA6ICRyb3dbJ3RpdGxlJ107DQoJCSRyZWMtPmNvbW1lbnQgPSAkcm93Wydjb21tZW50J107DQoJCWlmICggJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPiAwICkNCgkJew0KCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllUSFVNQlNfUEFUSCAuICRyb3dbJ2ZpbGVpZCddIC4gJy0nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gLiBzdWJzdHIoJHJvd1snZmlsZW5hbWUnXSwgc3RycnBvcygkcm93WydmaWxlbmFtZSddLCAnLicpKSA7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkcmVjLT50aHVtYiA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gKGVtcHR5KCRyb3dbJ2ZpbGVwYXRoJ10pID8gJycgOiAkcm93WydmaWxlcGF0aCddIC4gJy8nKSAuIElNX1BSRUZJWCAuICRyb3dbJ2ZpbGVuYW1lJ107DQoJCX0NCgkJJHJlYy0+aXNkaXIgPSBmYWxzZTsNCgkJJGl0ZW1jb3VudCsrOw0KCQkkaW1nY291bnQrKzsNCg0KCQkkdGhpcy0+X0NyZWF0ZVRodW1ibmFpbCgkcmVjLT50aHVtYiwNCgkJCQkJCQkJCQkJCQkJREVGQVVMVF9HQUxMRVJZX1BBVEggLiB0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJyksDQoJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gOiA5NiwNCgkJCQkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gOiA5NiwNCgkJCQkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddIDogJ3NjJyk7DQoJCWFycmF5X3B1c2goJGltYWdlcywkcmVjKTsNCgkgIH0NCgl9DQp9DQplbHNlDQp7DQoJJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICJUaGUgZGlyZWN0b3J5ICciIC4gaHRtbHNwZWNpYWxjaGFycygkcGFyYW1zWydkaXInXSkgLiAiJyBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgeW91ciBwYXJhbWV0ZXJzLiI7DQp9DQoNCg0KLy8gRXhwb3NlIHRoZSBsaXN0IHRvIHNtYXJ0eS4gVXNlICJieV9yZWYiIHRvIHNhdmUgbWVtb3J5Lg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaW1hZ2VzJywkaW1hZ2VzKTsNCg0KLy8gYW5kIGEgY291bnQgb2YgcmVjb3Jkcw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbWFnZWNvdW50JywgJGltZ2NvdW50IC4gJyAnIC4gKCRpbWdjb3VudCA9PSAxID8gJHRoaXMtPkxhbmcoJ2ltYWdlJykgOiAkdGhpcy0+TGFuZygnaW1hZ2VzJykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgJGl0ZW1jb3VudCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhZ2VzJywgMSk7DQoNCi8vIG5hdmlnYXRpb25saW5rcyBub3QgbmVzY2VzYXJ5LCBidXQgZGVmaW5lIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRlbXBsYXRlcyB0aGF0IHVzZSB0aGVtDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByZXZwYWdlJywgJycpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduZXh0cGFnZScsICcnKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZWxpbmtzJywgJycpOw0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKSkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9tZXNzYWdlJywkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKTsNCn0NCmVsc2UNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9tZXNzYWdlJywnJyk7DQp9DQoNCg0KLy8gRGlzcGxheSB0ZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSk7DQoNCg0KLy8gcGFzcyBkYXRhIHRvIGhlYWQgc2VjdGlvbi4NCg0KLy8gZ2V0IHRlbXBsYXRlLXNwZWNpZmljIEphdmFTY3JpcHQgYW5kIGVjaG8NCiR0ZW1wbGF0ZWNvZGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddKTsNCiR0ZW1wbGF0ZWNvZGVhcnIgPSBleHBsb2RlKFRFTVBMQVRFX1NFUEFSQVRPUiwgJHRlbXBsYXRlY29kZSk7DQokdGVtcGxhdGVfbWV0YWRhdGEgPSBzdWJzdHIoJHRlbXBsYXRlY29kZWFyclsyXSwwLC0yKTsNCg0KLy8gY2hlY2sgaWYgYSBjc3MgZmlsZSBleGlzdHMgYW5kIGVjaG8NCmlmICggZmlsZV9leGlzdHMoIm1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLyIgLiAkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gLiAiLmNzcyIpICkNCnsNCgkkdGVtcGxhdGVfbWV0YWRhdGEgLj0gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSAuICcuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4NCic7DQp9DQokdGhpcy0+R2FsbGVyeU1ldGFkYXRhID0gJHRlbXBsYXRlX21ldGFkYXRhOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.showlatestdir.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokcGFyYW1zWydkaXInXSA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/IHJhd3VybGRlY29kZShjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0odHJpbSgkcGFyYW1zWydkaXInXSwiKiIpLCIvIikpKSA6ICcnOw0KJG51bWJlciA9IChpc3NldCgkcGFyYW1zWydudW1iZXInXSkgJiYgaXNfbnVtZXJpYygkcGFyYW1zWydudW1iZXInXSkpID8gJHBhcmFtc1snbnVtYmVyJ10gOiA2Ow0KJHNob3cgPSAoaXNzZXQoJHBhcmFtc1snc2hvdyddKSAmJiBpbl9hcnJheSgkcGFyYW1zWydzaG93J10sIGFycmF5KCdhY3RpdmUnLCdpbmFjdGl2ZScsJ2FsbCcpKSkgPyAkcGFyYW1zWydzaG93J10gOiAnYWN0aXZlJzsNCg0KJGltZ2NvdW50ID0gMDsNCiRpdGVtY291bnQgPSAwOw0KJGltYWdlcyA9IGFycmF5KCk7DQoNCmlmICggaXNfZGlyKERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhcmFtc1snZGlyJ10pICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnl0aXRsZScsIGh0bWxzcGVjaWFsY2hhcnModHJpbShzdWJzdHIoJHBhcmFtc1snZGlyJ10sIHN0cnJwb3MoJHBhcmFtc1snZGlyJ10sICcvJykpLCIvIikpKTsNCg0KCS8vIGdldCBsYXRlc3QgZ2FsbGVyeQ0KCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkkcXVlcnkgPSAiU0VMRUNUDQoJCQkJCQkJZy5maWxlaWQNCgkJCQkJCUZST00NCgkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcNCgkJCQkJCVdIRVJFDQoJCQkJCQkJZy5maWxlbmFtZSBMSUtFICclLycNCgkJCQkJCQlBTkQgZy5maWxlcGF0aCBMSUtFID8iOw0KCVN3aXRjaCAoJHNob3cpDQoJew0KCQlDYXNlICdhY3RpdmUnOg0KCQkJJHF1ZXJ5IC49ICIgQU5EIGcuYWN0aXZlPTEiOw0KCQkJYnJlYWs7DQoJCUNhc2UgJ2luYWN0aXZlJzoNCgkJCSRxdWVyeSAuPSAiIEFORCBnLmFjdGl2ZT0wIjsNCgkJCWJyZWFrOw0KCX0NCgkkcXVlcnkgLj0gIg0KCQkJCQkJT1JERVIgQlkNCgkJCQkJCQlnLmZpbGVkYXRlIERFU0MNCgkJCQkJCUxJTUlUIDAsMSI7DQoJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KChlbXB0eSgkcGFyYW1zWydkaXInXSkgPyAnJScgOiAkcGFyYW1zWydkaXInXSAuICIvJSIpKSk7DQoJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkNCgl7DQoJICAkb3V0cHV0ID0gYXJyYXkoKTsNCgkgICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KCQkkbGF0ZXN0Z2FsbGVyeWlkID0gJHJvd1snZmlsZWlkJ107DQoNCgkJLy8gZ2V0IGdhbGxlcnkgaW5mbw0KCQkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkbGF0ZXN0Z2FsbGVyeWlkKTsNCg0KCQlpZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCgkJew0KCQkJLy8gb3ZlcnJpZGUgdGVtcGxhdGUgc2V0dGluZ3Mgd2l0aCBwYXJhbSB0ZW1wbGF0ZQ0KCQkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgkJfQ0KCQlpZiAoIGVtcHR5KCRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddKSApDQoJCXsNCgkJCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZQ0KCQkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKSk7DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgkJfQ0KDQoJCWlmICggJGdhbGxlcnlpbmZvWydhY3RpdmUnXSA9PSAxICkNCgkJew0KCQkJaWYgKCAhZW1wdHkoJGdhbGxlcnlpbmZvWyd0aXRsZSddKSApDQoJCQl7DQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCAkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pOw0KCQkJfQ0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Y29tbWVudCcsICRnYWxsZXJ5aW5mb1snY29tbWVudCddKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncGFyZW50bGluaycsICcnKTsNCgkJfQ0KDQoJCS8vIGJ1aWxkIGdhbGxlcnkgd2l0aCByYW5kb20gaW1hZ2VzDQoJCSRxdWVyeSA9ICJTRUxFQ1QNCgkJCQkJCQkJZzEuKiwgZzIuYWN0aXZlDQoJCQkJCQkJRlJPTQ0KCQkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcxDQoJCQkJCQkJTEVGVCBKT0lODQoJCQkJCQkJCSIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzINCgkJCQkJCQlPTg0KCQkJCQkJCQlnMS5nYWxsZXJ5aWQgPSBnMi5maWxlaWQNCgkJCQkJCQlXSEVSRQ0KCQkJCQkJCQlnMS5maWxlbmFtZSBOT1QgTElLRSAnJS8nDQoJCQkJCQkJCUFORCBnMS5nYWxsZXJ5aWQ9PyI7DQoJCVN3aXRjaCAoJHNob3cpDQoJCXsNCgkJCUNhc2UgJ2FjdGl2ZSc6DQoJCQkJJHF1ZXJ5IC49ICIgQU5EIGcxLmFjdGl2ZT0xIEFORCBnMi5hY3RpdmU9MSI7DQoJCQkJYnJlYWs7DQoJCQlDYXNlICdpbmFjdGl2ZSc6DQoJCQkJJHF1ZXJ5IC49ICIgQU5EIGcxLmFjdGl2ZT0wIjsNCgkJCQlicmVhazsNCgkJfQ0KCQkkcXVlcnkgLj0gIg0KCQkJCQkJCU9SREVSIEJZDQoJCQkJCQkJCVJBTkQoKQ0KCQkJCQkJCUxJTUlUIDAsPyI7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGF0ZXN0Z2FsbGVyeWlkLCAkbnVtYmVyKSk7DQoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCXsNCgkJCSRvdXRwdXQgPSBhcnJheSgpOw0KCQkJd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKQ0KCQkJew0KCQkJCSRvdXRwdXRbdHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpXSA9ICRyb3c7DQoNCgkJCS8vIGNyZWF0ZSBhIG5ldyBvYmplY3QgZm9yIGV2ZXJ5IHJlY29yZCB0aGF0IHdlIHJldHJpZXZlDQoJCQkkcmVjID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkkcmVjLT5maWxlaWQgPSAkcm93WydmaWxlaWQnXTsNCgkJCSRyZWMtPmZpbGUgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUodHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpKSk7DQoJCQkkcmVjLT5maWxlZGF0ZSA9ICRyb3dbJ2ZpbGVkYXRlJ107DQoJCQkkcmVjLT50aXRsZSA9IGVtcHR5KCRyb3dbJ3RpdGxlJ10pID8gJHJvd1snZmlsZW5hbWUnXSA6ICRyb3dbJ3RpdGxlJ107DQoJCQkkcmVjLT5jb21tZW50ID0gJHJvd1snY29tbWVudCddOw0KCQkJaWYgKCAkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDAgKQ0KCQkJew0KCQkJCSRyZWMtPnRodW1iID0gREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEggLiAkcm93WydmaWxlaWQnXSAuICctJyAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddIC4gc3Vic3RyKCRyb3dbJ2ZpbGVuYW1lJ10sIHN0cnJwb3MoJHJvd1snZmlsZW5hbWUnXSwgJy4nKSkgOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRyZWMtPnRodW1iID0gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAoZW1wdHkoJHJvd1snZmlsZXBhdGgnXSkgPyAnJyA6ICRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycpIC4gSU1fUFJFRklYIC4gJHJvd1snZmlsZW5hbWUnXTsNCgkJCX0NCgkJCSRyZWMtPmlzZGlyID0gZmFsc2U7DQoJCQkkaXRlbWNvdW50Kys7DQoJCQkkaW1nY291bnQrKzsNCg0KCQkJJHRoaXMtPl9DcmVhdGVUaHVtYm5haWwoJHJlYy0+dGh1bWIsDQoJCQkJCQkJCQkJCQkJCQlERUZBVUxUX0dBTExFUllfUEFUSCAuIHRyaW0oJHJvd1snZmlsZXBhdGgnXSAuICcvJyAuICRyb3dbJ2ZpbGVuYW1lJ10sJy8nKSwNCgkJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gOiA5NiwNCgkJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddIDogOTYsDQoJCQkJCQkJCQkJCQkJCQkoJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPiAwKSA/ICRnYWxsZXJ5aW5mb1sncmVzaXplbWV0aG9kJ10gOiAnc2MnKTsNCgkJCWFycmF5X3B1c2goJGltYWdlcywkcmVjKTsNCgkJCX0NCgkJfQ0KCX0NCn0NCmVsc2UNCnsNCgkkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gIlRoZSBkaXJlY3RvcnkgJyIgLiBodG1sc3BlY2lhbGNoYXJzKCRwYXJhbXNbJ2RpciddKSAuICInIGRvZXMgbm90IGV4aXN0LiBDaGVjayB5b3VyIHBhcmFtZXRlcnMuIjsNCn0NCg0KDQovLyBFeHBvc2UgdGhlIGxpc3QgdG8gc21hcnR5LiBVc2UgImJ5X3JlZiIgdG8gc2F2ZSBtZW1vcnkuDQokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpbWFnZXMnLCRpbWFnZXMpOw0KDQovLyBhbmQgYSBjb3VudCBvZiByZWNvcmRzDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ltYWdlY291bnQnLCAkaW1nY291bnQgLiAnICcgLiAoJGltZ2NvdW50ID09IDEgPyAkdGhpcy0+TGFuZygnaW1hZ2UnKSA6ICR0aGlzLT5MYW5nKCdpbWFnZXMnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCAkaXRlbWNvdW50KTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZXMnLCAxKTsNCg0KLy8gbmF2aWdhdGlvbmxpbmtzIG5vdCBuZXNjZXNhcnksIGJ1dCBkZWZpbmUgc21hcnR5IHZhcmlhYmxlcyBmb3IgdGVtcGxhdGVzIHRoYXQgdXNlIHRoZW0NCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJldnBhZ2UnLCAnJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywgJycpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlbGlua3MnLCAnJyk7DQoNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pKQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pOw0KfQ0KZWxzZQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCcnKTsNCn0NCg0KDQovLyBEaXNwbGF5IHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddKTsNCg0KDQovLyBwYXNzIGRhdGEgdG8gaGVhZCBzZWN0aW9uLg0KDQovLyBnZXQgdGVtcGxhdGUtc3BlY2lmaWMgSmF2YVNjcmlwdCBhbmQgZWNobw0KJHRlbXBsYXRlY29kZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10pOw0KJHRlbXBsYXRlY29kZWFyciA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCAkdGVtcGxhdGVjb2RlKTsNCiR0ZW1wbGF0ZV9tZXRhZGF0YSA9IHN1YnN0cigkdGVtcGxhdGVjb2RlYXJyWzJdLDAsLTIpOw0KDQovLyBjaGVjayBpZiBhIGNzcyBmaWxlIGV4aXN0cyBhbmQgZWNobw0KaWYgKCBmaWxlX2V4aXN0cygibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvIiAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSAuICIuY3NzIikgKQ0Kew0KCSR0ZW1wbGF0ZV9tZXRhZGF0YSAuPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddIC4gJy5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPg0KJzsNCn0NCiR0aGlzLT5HYWxsZXJ5TWV0YWRhdGEgPSAkdGVtcGxhdGVfbWV0YWRhdGE7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.showrandom.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokaW5jbHVkZXN1YmRpciA9IChpc3NldCgkcGFyYW1zWydkaXInXSkgJiYgc3Vic3RyKCRwYXJhbXNbJ2RpciddLC0xKSA9PSAiKiIpID8gVFJVRSA6IEZBTFNFOw0KJHBhcmFtc1snZGlyJ10gPSBpc3NldCgkcGFyYW1zWydkaXInXSkgPyByYXd1cmxkZWNvZGUoY21zX2h0bWxfZW50aXR5X2RlY29kZSh0cmltKHRyaW0oJHBhcmFtc1snZGlyJ10sIioiKSwiLyIpKSkgOiAnJzsNCiRudW1iZXIgPSAoaXNzZXQoJHBhcmFtc1snbnVtYmVyJ10pICYmIGlzX251bWVyaWMoJHBhcmFtc1snbnVtYmVyJ10pKSA/ICRwYXJhbXNbJ251bWJlciddIDogNjsNCiRzaG93ID0gKGlzc2V0KCRwYXJhbXNbJ3Nob3cnXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1snc2hvdyddLCBhcnJheSgnYWN0aXZlJywnaW5hY3RpdmUnLCdhbGwnKSkpID8gJHBhcmFtc1snc2hvdyddIDogJ2FjdGl2ZSc7DQoNCiRpbWdjb3VudCA9IDA7DQokaXRlbWNvdW50ID0gMDsNCiRpbWFnZXMgPSBhcnJheSgpOw0KDQppZiAoIGlzX2RpcihERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXJhbXNbJ2RpciddKSApDQp7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCBodG1sc3BlY2lhbGNoYXJzKHRyaW0oc3Vic3RyKCRwYXJhbXNbJ2RpciddLCBzdHJycG9zKCRwYXJhbXNbJ2RpciddLCAnLycpKSwiLyIpKSk7DQoNCgkvLyBnZXQgZ2FsbGVyeSBpbmZvDQoJJGdhbGxlcnlpbmZvID0gJHRoaXMtPl9HZXRnYWxsZXJ5aW5mbygkcGFyYW1zWydkaXInXSk7DQoNCglpZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCgl7DQoJCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggcGFyYW0gdGVtcGxhdGUNCgkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1iaGVpZ2h0J107DQoJCSRnYWxsZXJ5aW5mb1sncmVzaXplbWV0aG9kJ10gPSAkdGVtcGxhdGVwcm9wc1sncmVzaXplbWV0aG9kJ107DQoJfQ0KCWlmICggZW1wdHkoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10pICkNCgl7DQoJCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZQ0KCQkkdGVtcGxhdGVwcm9wcyA9ICR0aGlzLT5fR2V0VGVtcGxhdGVwcm9wcygkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF90ZW1wbGF0ZScpKTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGVpZCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJ3aWR0aCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJoZWlnaHQnXTsNCgkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgl9DQoNCglpZiAoICRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gPT0gMSApDQoJew0KCQlpZiAoICFlbXB0eSgkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pICkNCgkJew0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCAkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeWNvbW1lbnQnLCAkZ2FsbGVyeWluZm9bJ2NvbW1lbnQnXSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncGFyZW50bGluaycsICcnKTsNCgl9DQoNCg0KDQoJLy8gYnVpbGQgZ2FsbGVyeSB3aXRoIHJhbmRvbSBpbWFnZXMNCgkNCgkkZGIgPSYgJHRoaXMtPkdldERCKCk7CQ0KCSRxdWVyeSA9ICJTRUxFQ1QNCgkJCQkJCQlnMS4qLCBnMi5hY3RpdmUNCgkJCQkJCUZST00gDQoJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMQ0KCQkJCQkJTEVGVCBKT0lODQoJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMg0KCQkJCQkJT04NCgkJCQkJCQlnMS5nYWxsZXJ5aWQgPSBnMi5maWxlaWQNCgkJCQkJCVdIRVJFDQoJCQkJCQkJZzEuZmlsZW5hbWUgTk9UIExJS0UgJyUvJyI7DQoJaWYgKCAkaW5jbHVkZXN1YmRpciApDQoJew0KCQkkcXVlcnkgLj0gIg0KCQkJCQkJQU5EIChnMS5nYWxsZXJ5aWQ9PyBPUiBnMS5maWxlcGF0aCBMSUtFID8pIjsNCgl9DQoJZWxzZXsNCgkJJHF1ZXJ5IC49ICINCgkJCQkJCUFORCAoZzEuZ2FsbGVyeWlkPT8gT1IgZzEuZmlsZXBhdGggPSA/KSI7DQoJfQ0KCVN3aXRjaCAoJHNob3cpDQoJew0KCQlDYXNlICdhY3RpdmUnOiANCgkJCSRxdWVyeSAuPSAiIEFORCBnMS5hY3RpdmU9MSBBTkQgZzIuYWN0aXZlPTEiOw0KCQkJYnJlYWs7DQoJCUNhc2UgJ2luYWN0aXZlJzoNCgkJCSRxdWVyeSAuPSAiIEFORCBnMS5hY3RpdmU9MCI7DQoJCQlicmVhazsNCgl9DQoJJHF1ZXJ5IC49ICINCgkJCQkJCU9SREVSIEJZDQoJCQkJCQkJUkFORCgpDQoJCQkJCQlMSU1JVCAwLD8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZ2FsbGVyeWluZm9bJ2ZpbGVpZCddLCAoZW1wdHkoJHBhcmFtc1snZGlyJ10pID8gJyUnIDogJHBhcmFtc1snZGlyJ10gLiAiLyUiKSwgJG51bWJlcikpOw0KCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApIA0KCXsNCgkgICRvdXRwdXQgPSBhcnJheSgpOw0KCSAgd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKSANCgkgIHsNCgkgICAgJG91dHB1dFt0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJyldID0gJHJvdzsNCgkgICAgDQoJCS8vIGNyZWF0ZSBhIG5ldyBvYmplY3QgZm9yIGV2ZXJ5IHJlY29yZCB0aGF0IHdlIHJldHJpZXZlDQoJCSRyZWMgPSBuZXcgc3RkQ2xhc3MoKTsNCgkJJHJlYy0+ZmlsZWlkID0gJHJvd1snZmlsZWlkJ107DQoJCSRyZWMtPmZpbGUgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUodHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpKSk7DQoJCSRyZWMtPmZpbGVkYXRlID0gJHJvd1snZmlsZWRhdGUnXTsNCgkJJHJlYy0+dGl0bGUgPSBlbXB0eSgkcm93Wyd0aXRsZSddKSA/ICRyb3dbJ2ZpbGVuYW1lJ10gOiAkcm93Wyd0aXRsZSddOw0KCQkkcmVjLT5jb21tZW50ID0gJHJvd1snY29tbWVudCddOw0KCQlpZiAoICRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCApDQoJCXsNCgkJCSRyZWMtPnRodW1iID0gREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEggLiAkcm93WydmaWxlaWQnXSAuICctJyAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddIC4gc3Vic3RyKCRyb3dbJ2ZpbGVuYW1lJ10sIHN0cnJwb3MoJHJvd1snZmlsZW5hbWUnXSwgJy4nKSkgOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIChlbXB0eSgkcm93WydmaWxlcGF0aCddKSA/ICcnIDogJHJvd1snZmlsZXBhdGgnXSAuICcvJykgLiBJTV9QUkVGSVggLiAkcm93WydmaWxlbmFtZSddOw0KCQl9DQoJCSRyZWMtPmlzZGlyID0gZmFsc2U7DQoJCSRpdGVtY291bnQrKzsNCgkJJGltZ2NvdW50Kys7DQoNCgkJJHRoaXMtPl9DcmVhdGVUaHVtYm5haWwoJHJlYy0+dGh1bWIsDQoJCQkJCQkJCQkJCQkJCURFRkFVTFRfR0FMTEVSWV9QQVRIIC4gdHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpLA0KCQkJCQkJCQkJCQkJCQkoJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPiAwKSA/ICRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddIDogOTYsDQoJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddIDogOTYsDQoJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA6ICdzYycpOw0KCQlhcnJheV9wdXNoKCRpbWFnZXMsJHJlYyk7DQoJICB9DQoJfQ0KfQ0KZWxzZQ0Kew0KCSRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10gPSAiVGhlIGRpcmVjdG9yeSAnIiAuIHNwZWNpYWxodG1sY2hhcnMoJHBhcmFtc1snZGlyJ10pIC4gIicgZG9lcyBub3QgZXhpc3QuIENoZWNrIHlvdXIgcGFyYW1ldGVycy4iOw0KfQ0KDQoNCi8vIEV4cG9zZSB0aGUgbGlzdCB0byBzbWFydHkuIFVzZSAiYnlfcmVmIiB0byBzYXZlIG1lbW9yeS4NCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2ltYWdlcycsJGltYWdlcyk7DQoNCi8vIGFuZCBhIGNvdW50IG9mIHJlY29yZHMNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW1hZ2Vjb3VudCcsICRpbWdjb3VudCAuICcgJyAuICgkaW1nY291bnQgPT0gMSA/ICR0aGlzLT5MYW5nKCdpbWFnZScpIDogJHRoaXMtPkxhbmcoJ2ltYWdlcycpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsICRpdGVtY291bnQpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlcycsIDEpOw0KDQovLyBuYXZpZ2F0aW9ubGlua3Mgbm90IG5lc2Nlc2FyeSwgYnV0IGRlZmluZSBzbWFydHkgdmFyaWFibGVzIGZvciB0ZW1wbGF0ZXMgdGhhdCB1c2UgdGhlbQ0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcmV2cGFnZScsICcnKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignbmV4dHBhZ2UnLCAnJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhZ2VsaW5rcycsICcnKTsNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSkpDQp7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSk7DQp9DQplbHNlDQp7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsJycpOw0KfQ0KDQoNCi8vIERpc3BsYXkgdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10pOw0KDQoNCi8vIHBhc3MgZGF0YSB0byBoZWFkIHNlY3Rpb24uDQoNCi8vIGdldCB0ZW1wbGF0ZS1zcGVjaWZpYyBKYXZhU2NyaXB0IGFuZCBlY2hvDQokdGVtcGxhdGVjb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSk7DQokdGVtcGxhdGVjb2RlYXJyID0gZXhwbG9kZShURU1QTEFURV9TRVBBUkFUT1IsICR0ZW1wbGF0ZWNvZGUpOw0KJHRlbXBsYXRlX21ldGFkYXRhID0gc3Vic3RyKCR0ZW1wbGF0ZWNvZGVhcnJbMl0sMCwtMik7DQoNCi8vIGNoZWNrIGlmIGEgY3NzIGZpbGUgZXhpc3RzIGFuZCBlY2hvDQppZiAoIGZpbGVfZXhpc3RzKCJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8iIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddIC4gIi5jc3MiKSApDQp7DQoJJHRlbXBsYXRlX21ldGFkYXRhIC49ICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLycgLiAkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gLiAnLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+DQonOw0KfQ0KJHRoaXMtPkdhbGxlcnlNZXRhZGF0YSA9ICR0ZW1wbGF0ZV9tZXRhZGF0YTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.switchactive.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyBDaGVjayBwZXJtaXNzaW9ucw0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkNCnsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQokZmlsZV9pZCA9ICcnOw0KaWYgKCBpc3NldCgkcGFyYW1zWydmaWQnXSkgKQ0Kew0KCSRmaWxlX2lkID0gJHBhcmFtc1snZmlkJ107DQp9DQoNCg0KJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IFNFVCBhY3RpdmUgPSBhY3RpdmVeMSBXSEVSRSBmaWxlaWQgPSA/IjsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlX2lkKSk7DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICRwYXJhbXNbJ29yaWdhY3Rpb24nXSAsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.switchdefault.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyBDaGVjayBwZXJtaXNzaW9ucw0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkNCnsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQokZmlsZV9pZCA9IGlzc2V0KCRwYXJhbXNbJ2ZpZCddKSA/ICRwYXJhbXNbJ2ZpZCddIDogJyc7DQokZ2FsbGVyeSA9IGlzc2V0KCRwYXJhbXNbJ2dpZCddKSA/ICRwYXJhbXNbJ2dpZCddIDogJyc7DQoNCiRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBTRVQgZGVmYXVsdGZpbGUgPSA/IFdIRVJFIGZpbGVpZCA9ID8iOw0KJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVfaWQsJGdhbGxlcnkpKTsNCg0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXRnYWxsZXJ5JyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.switchdefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCggJGdDbXMgKSApIGV4aXQoKTsKCgppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCiAgewoJCSRwYXJhbXMgPSBhcnJheSgnZXJyb3JzJz0+ICdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjdXJyZW50X3RlbXBsYXRlJywkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJykpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_galleriestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiR0aGVtZU9iamVjdCA9JiAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ107DQokdGhpcy0+X1VwZGF0ZUdhbGxlcnlEQignJywxKTsNCiRnYWxsZXJpZXMgPSAkdGhpcy0+X0dldEdhbGxlcmllcygpOw0KDQokc2hvd2dhbGxlcmllcyA9IGFycmF5KCk7DQppZiAoIGVtcHR5KCRnYWxsZXJpZXMpICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25vZ2FsbGVyaWVzdGV4dCcsICR0aGlzLT5sYW5nKCJub2dhbGxlcmllc3RleHQiKSk7DQp9IA0KZWxzZSANCnsNCglmb3JlYWNoICgkZ2FsbGVyaWVzIGFzICRnYWxsZXJ5KSANCgl7DQoJCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCg0KCQkkb25lcm93LT5pZCA9ICRnYWxsZXJ5WydmaWxlaWQnXTsNCgkJJG9uZXJvdy0+Z2lkY2xhc3MgPSAkZ2FsbGVyeVsnZ2FsbGVyeWlkJ10gPiAxID8gJyBjaGlsZC1vZi1ub2RlLScgLiAkZ2FsbGVyeVsnZ2FsbGVyeWlkJ10gOiAnJzsNCgkJJG9uZXJvdy0+ZmlsZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRnYWxsZXJ5JywgJHJldHVybmlkLCAoZW1wdHkoJGdhbGxlcnlbJ2ZpbGVwYXRoJ10pID8gJycgOiAkZ2FsbGVyeVsnZmlsZXBhdGgnXSAuICcvJykgLiAkZ2FsbGVyeVsnZmlsZW5hbWUnXSwgYXJyYXkoJ2dpZCc9PiRnYWxsZXJ5WydmaWxlaWQnXSwnbW9kZSc9PiJlZGl0IikpOw0KDQoJCWlmICggJGdhbGxlcnlbJ2FjdGl2ZSddICkgDQogICAgew0KCQkJJGFjdGl2ZWltYWdlID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdzZXRmYWxzZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoJCX0gDQogICAgZWxzZSANCiAgICB7DQoJCQkkYWN0aXZlaW1hZ2UgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdzZXR0cnVlJyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkJfQ0KCQkkb25lcm93LT5hY3RpdmVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3dpdGNoYWN0aXZlJywgJHJldHVybmlkLCAkYWN0aXZlaW1hZ2UsIGFycmF5KCdmaWQnID0+ICRnYWxsZXJ5WydmaWxlaWQnXSwgJ29yaWdhY3Rpb24nID0+ICdkZWZhdWx0YWRtaW4nKSk7DQoNCgkJJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0Z2FsbGVyeScsICRyZXR1cm5pZCwNCgkJJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0Z2FsbGVyeScpLCcnLCcnLCdzeXN0ZW1pY29uJyksDQoJCWFycmF5KCdnaWQnID0+ICRnYWxsZXJ5WydmaWxlaWQnXSwnbW9kZSc9PiJlZGl0IikpOw0KDQoJCWlmICggaXNfZGlyKCcuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAoZW1wdHkoJGdhbGxlcnlbJ2ZpbGVwYXRoJ10pID8gJycgOiAkZ2FsbGVyeVsnZmlsZXBhdGgnXSAuICcvJykgLiAkZ2FsbGVyeVsnZmlsZW5hbWUnXSkgfHwgJGdhbGxlcnlbJ2ZpbGVpZCddID09IDEgKQ0KCQl7DQoJCQlhcnJheV9wdXNoKCRzaG93Z2FsbGVyaWVzLCAkb25lcm93KTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCS8vIGRlbGV0ZSBkaXJlY3RvcnkgYW5kIGFsbCBvZiBpdHMgY29udGVudHMgZnJvbSB0aGUgZGF0YWJhc2UNCgkJCSR0aGlzLT5fRGVsZXRlR2FsbGVyeURCKChlbXB0eSgkZ2FsbGVyeVsnZmlsZXBhdGgnXSkgPyAnJyA6ICRnYWxsZXJ5WydmaWxlcGF0aCddIC4gJy8nKSAuICRnYWxsZXJ5WydmaWxlbmFtZSddLCAkZ2FsbGVyeVsnZmlsZWlkJ10pOw0KCQl9DQoJfQ0KDQp9DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJHNob3dnYWxsZXJpZXMpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkc2hvd2dhbGxlcmllcykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5cGF0aCcsICR0aGlzLT5MYW5nKCdnYWxsZXJ5cGF0aCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aXZlJywgJHRoaXMtPkxhbmcoJ2FjdGl2ZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9ucycsICR0aGlzLT5MYW5nKCdhY3Rpb25zJykpOw0KDQokbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRnYWxsZXJ5JywgMCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZGdhbGxlcnknKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGdhbGxlcnknLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJhZGRnYWxsZXJ5IiksIGFycmF5KCJtb2RlIj0+ImFkZCIpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAkbGluayk7DQoNCg0KLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZG1pbmdhbGxlcmllcy50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_optionstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KICAvLyBDcmVhdGVGb3JtU3RhcnQgc2V0cyB1cCBhIHByb3BlciBmb3JtIHRhZyB0aGF0IHdpbGwgY2F1c2UgdGhlIHN1Ym1pdCB0bw0KICAvLyByZXR1cm4gY29udHJvbCB0byB0aGlzIG1vZHVsZSBmb3IgcHJvY2Vzc2luZy4NCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fdXBkYXRlb3B0aW9ucycsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FsbG93ZWRfZXh0ZW5zaW9ucycsJHRoaXMtPkxhbmcoJ2FsbG93ZWRfZXh0ZW5zaW9ucycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfYWxsb3dlZF9leHRlbnNpb25zJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnYWxsb3dlZF9leHRlbnNpb25zJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9leHRlbnNpb25zJywnJyksNTAsMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbigndXNlX2NvbW1lbnRfd3lzaXd5ZycsJHRoaXMtPkxhbmcoJ3VzZV9jb21tZW50X3d5c2l3eWcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3VzZV9jb21tZW50X3d5c2l3eWcnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICd1c2VfY29tbWVudF93eXNpd3lnJywgJzEnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2NvbW1lbnRfd3lzaXd5ZycsMSkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ29wdGlvbnNzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCg0KLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZG1pbm9wdGlvbnMudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_templatestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGZhbHNlaW1hZ2UxID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCdtYWtlIGRlZmF1bHQnLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQokdHJ1ZWltYWdlMSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCdkZWZhdWx0JywnJywnJywnc3lzdGVtaWNvbicpOw0KDQokYWxsdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsNCiRyb3dhcnJheSA9IGFycmF5KCk7DQokcm93Y2xhc3MgPSAncm93MSc7DQoNCmZvcmVhY2goICRhbGx0ZW1wbGF0ZXMgYXMgJG9uZXRlbXBsYXRlICkNCnsNCgkkdG1wID0gJG9uZXRlbXBsYXRlOw0KCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkkcm93LT5uYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkkdG1wLCBhcnJheSgndGVtcGxhdGUnID0+ICR0bXAsICdtb2RlJz0+J2VkaXQnKSk7DQoJJHJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoJDQoJJGRlZmF1bHQgPSAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKSA9PSAkdG1wKSA/IHRydWUgOiBmYWxzZTsNCglpZiggJGRlZmF1bHQgKQ0KCXsNCgkJJHJvdy0+ZGVmYXVsdCA9ICR0cnVlaW1hZ2UxOw0KCX0NCgllbHNlDQoJew0KCQkkcm93LT5kZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ3N3aXRjaGRlZmF1bHR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgICAgJGZhbHNlaW1hZ2UxLA0KCQkJCSAgICAgICBhcnJheSgndGVtcGxhdGUnPT4kdG1wKSk7DQoJfQ0KDQoJJHJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCSAgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPg0KCQkJCSAgICBEaXNwbGF5SW1hZ2UgKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLA0KCQkJCQkJICAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLA0KCQkJCSAgICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkdG1wLCAnbW9kZSc9PidlZGl0JykpOw0KCQ0KCSRyb3ctPmNvcHlsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT4NCgkJCQkgICAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2NvcHkuZ2lmJywNCgkJCQkJCSAgJHRoaXMtPkxhbmcgKCdjb3B5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkgICAgYXJyYXkgKCd0ZW1wbGF0ZScgPT4gJHRtcCwgJ21vZGUnPT4nYWRkJykpOw0KCQ0KCSR0bXAgPSAiZGVmYXVsdCI7DQoJaWYoICgkb25ldGVtcGxhdGUgPT0gJHRtcCkgfHwgJGRlZmF1bHQgKQ0KCXsNCgkJJHJvdy0+ZGVsZXRlbGluayA9ICcmbmJzcDsnOw0KCX0NCgllbHNlDQoJew0KCQkkcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2RlbGV0ZXRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCQkgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+DQoJCQkJCSAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLA0KCQkJCQkJCSR0aGlzLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkJICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkb25ldGVtcGxhdGUpLA0KCQkJCQkgICR0aGlzLT5MYW5nICgnYXJleW91c3VyZScpKTsNCgl9DQoNCglhcnJheV9wdXNoICgkcm93YXJyYXksICRyb3cpOw0KCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSApOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lcHJvbXB0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9uYW1lJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0cHJvbXB0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9kZWZhdWx0JykpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25ld3RlbXBsYXRlbGluaycsDQoJICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwNCgkJCSAgICAgYXJyYXkoJ21vZGUnID0+ICdhZGQnLA0KCQkJCSAgICdkZWZhdWx0dGVtcGxhdGVwcmVmJyA9PiAnZGVmYXVsdF90ZW1wbGF0ZV9jb250ZW50cycpLA0KCQkJICAgICAnJywgZmFsc2UsIGZhbHNlLCAnJykuJyAnLg0KDQoJICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksDQoJCQkgICAgIGFycmF5KCdtb2RlJyA9PiAnYWRkJywNCgkJCQkgICAnZGVmYXVsdHRlbXBsYXRlcHJlZicgPT4gJ2RlZmF1bHRfdGVtcGxhdGVfY29udGVudHMnDQoJCQkJICAgKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnRlbXBsYXRlcy50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/Gallery.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR2FsbGVyeQ0KIyBWZXJzaW9uOiAxLjEuMiwgSm9zDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KZGVmaW5lKCdERUZBVUxUX0dBTExFUllfUEFUSCcsICJ1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyIpOw0KZGVmaW5lKCdERUZBVUxUX0dBTExFUllUSFVNQlNfUEFUSCcsICJ1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5VGh1bWJzLyIpOw0KZGVmaW5lKCdJTV9QUkVGSVgnLCAidGh1bWJfIik7ICAgLy8gJElNQ29uZmlnWyd0aHVtYm5haWxfcHJlZml4J10NCmRlZmluZSgnVEVNUExBVEVfU0VQQVJBVE9SJywgInsqLS0tLS0tLS0tLSIpOw0KDQoNCmNsYXNzIEdhbGxlcnkgZXh0ZW5kcyBDTVNNb2R1bGUNCnsNCg0KICBmdW5jdGlvbiBHZXROYW1lKCkNCiAgew0KICAgIHJldHVybiAnR2FsbGVyeSc7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsNCiAgfQ0KDQoNCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gJzEuMS4yJzsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEhlbHAoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KICB7DQogICAgcmV0dXJuICdKb3MnOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQ0KICB7DQogICAgcmV0dXJuICdqb3N2ZEBsaXZlLm5sJzsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOw0KICB9DQoNCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQ0KICB7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCg0KICBmdW5jdGlvbiBIYXNBZG1pbigpDQogIHsNCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpDQogIHsNCiAgICByZXR1cm4gJ2NvbnRlbnQnOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7DQogIH0NCg0KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBHYWxsZXJ5Jyk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQ0KICB7DQogICAgcmV0dXJuIGFycmF5KCk7DQogIH0NCg0KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gIjEuNiI7DQogIH0NCg0KICAgLyoNCiAgZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuICIxLjk5IjsNCiAgfQ0KICAqLw0KDQogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQ0KICB7DQoJICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCg0KCSAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOw0KDQoJICAvLyBzeW50YXggZm9yIGNyZWF0aW5nIGEgcGFyYW1ldGVyIGlzIHBhcmFtZXRlciBuYW1lLCBkZWZhdWx0IHZhbHVlLCBkZXNjcmlwdGlvbg0KCSAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGlyJywgJ3N1YjEvc3ViMicsICR0aGlzLT5MYW5nKCdoZWxwX2RpcicpKTsNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkaXInLENMRUFOX1NUUklORyk7DQoNCgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3RlbXBsYXRlJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3RlbXBsYXRlJykpOw0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RlbXBsYXRlJyxDTEVBTl9TVFJJTkcpOw0KDQoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdudW1iZXInLCAnMTAwJywgJHRoaXMtPkxhbmcoJ2hlbHBfbnVtYmVyJykpOw0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ251bWJlcicsQ0xFQU5fSU5UKTsNCg0KCSAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc3RhcnQnLCAnMScsICR0aGlzLT5MYW5nKCdoZWxwX3N0YXJ0JykpOw0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0YXJ0JyxDTEVBTl9JTlQpOw0KDQoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzaG93JywgJ2FsbCcsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3cnKSk7DQoJICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvdycsQ0xFQU5fU1RSSU5HKTsNCi8qDQoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeScsICcnLCAkdGhpcy0+TGFuZygnaGVscF9jYXRlZ29yeScpKTsNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeScsQ0xFQU5fU1RSSU5HKTsNCiovDQoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhY3Rpb24nLCAnZGVmYXVsdCcsICR0aGlzLT5MYW5nKCdoZWxwX2FjdGlvbicpKTsNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhY3Rpb24nLENMRUFOX1NUUklORyk7DQoNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmaWQnLENMRUFOX0lOVCk7DQoJICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZ2lkJyxDTEVBTl9JTlQpOw0KDQoJICAvLyBQcmV0dHkgdXJsIHJvdXRlIGZvciB2aWV3aW5nIGEgZ2FsbGVyeSBpbiBhbGwgaXRzIHZhcmlhdGlvbnMNCgkgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvZ2FsbGVyeVwvKD9QPGRpcj4uKylcLyg/UDxzdGFydD5bMC05XSspLSg/UDxudW1iZXI+WzAtOV0rKS0oP1A8c2hvdz5bYS16QS1aXSspLSg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvZ2FsbGVyeVwvKD9QPGRpcj4uKylcLyg/UDxzdGFydD5bMC05XSspLSg/UDxudW1iZXI+WzAtOV0rKS0oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KCSAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9nYWxsZXJ5XC8oP1A8ZGlyPi4rKVwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcpKTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9nYWxsZXJ5XC8oP1A8c3RhcnQ+WzAtOV0rKS0oP1A8bnVtYmVyPlswLTldKyktKD9QPHNob3c+W2EtekEtWl0rKS0oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL2dhbGxlcnlcLyg/UDxzdGFydD5bMC05XSspLSg/UDxudW1iZXI+WzAtOV0rKS0oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL2dhbGxlcnlcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7DQoNCiAgfQ0KDQoJZnVuY3Rpb24gQ29udGVudFBvc3RSZW5kZXIoJiRjb250ZW50KSB7DQoJICAkcG9zID0gc3RyaXBvcygkY29udGVudCwiPC9oZWFkIik7DQoJICBpZiggJHBvcyAhPT0gRkFMU0UgJiYgaXNzZXQoJHRoaXMtPkdhbGxlcnlNZXRhZGF0YSkgKQ0KCSAgew0KCQkgICRjb250ZW50ID0gc3Vic3RyKCRjb250ZW50LCAwLCAkcG9zKSAuICR0aGlzLT5HYWxsZXJ5TWV0YWRhdGEgLiBzdWJzdHIoJGNvbnRlbnQsICRwb3MpOw0KCQl9DQoJICByZXR1cm4gJGNvbnRlbnQ7DQoJfQ0KDQogIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24gKCAkZXZlbnRuYW1lICkNCiAgew0KICAgIHJldHVybjsgLy8gJHRoaXMtPkxhbmcoJ2V2ZW50X2luZm9fJy4kZXZlbnRuYW1lICk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRFdmVudEhlbHAgKCAkZXZlbnRuYW1lICkNCiAgew0KICAgIHJldHVybjsgLy8gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJy4kZXZlbnRuYW1lICk7DQogIH0NCg0KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KICB9DQoNCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOw0KICB9DQoNCg0KCS8qKg0KCSAqIFNlYXJjaCBtZXRob2RzDQoJICovDQoNCglmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJHJldHVybmlkLCAkZ2lkLCAkYXR0ciA9ICcnKQ0KCXsNCgkJJHJlc3VsdCA9IGFycmF5KCk7DQoNCgkJaWYgKCRhdHRyID09ICdnYWxsZXJ5JykNCgkJew0KCQkJJGdhbGxlcnlpbmZvID0gJHRoaXMtPl9HZXRnYWxsZXJ5aW5mb2J5aWQoJGdpZCk7DQoJCQlpZiAoICRnYWxsZXJ5aW5mbyAmJiAkZ2FsbGVyeWluZm9bJ2FjdGl2ZSddICkNCgkJCXsNCgkJCQkvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4NCgkJCQkkcmVzdWx0WzBdID0gJHRoaXMtPkdldEZyaWVuZGx5TmFtZSgpOw0KDQoJCQkJLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQ0KCQkJCSRyZXN1bHRbMV0gPSBlbXB0eSgkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pID8gdHJpbSgkZ2FsbGVyeWluZm9bJ2ZpbGVuYW1lJ10sIi8iKSA6ICRnYWxsZXJ5aW5mb1sndGl0bGUnXTsNCg0KCQkJCS8vMiBwb3NpdGlvbiBpcyB0aGUgVVJMIHRvIHRoZSB0aXRsZS4NCgkJCQkkZ2RpciA9ICRnaWQgPT0gMSA/ICcnIDogc3RyX3JlcGxhY2UoJyUyRicsJy8nLHJhd3VybGVuY29kZSgoZW1wdHkoJGdhbGxlcnlpbmZvWydmaWxlcGF0aCddKSA/ICcnIDogJGdhbGxlcnlpbmZvWydmaWxlcGF0aCddIC4gJy8nKSAuICRnYWxsZXJ5aW5mb1snZmlsZW5hbWUnXSkpOw0KCQkJCSRwcmV0dHl1cmwgPSAnZ2FsbGVyeS8nIC4gJGdkaXIgLiAkcmV0dXJuaWQ7DQoJCQkJJHJlc3VsdFsyXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCdjbnRudDAxJywgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgnZGlyJyA9PiB0cmltKCRnZGlyLCcvJykpICwnJywgdHJ1ZSwgZmFsc2UsICcnLCB0cnVlLCAkcHJldHR5dXJsKTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoNCg0KCWZ1bmN0aW9uIFNlYXJjaFJlaW5kZXgoJiRtb2R1bGUpDQoJew0KCQkkZ2FsbGVyaWVzID0gJHRoaXMtPl9HZXRHYWxsZXJpZXMoKTsNCgkJDQoJCWZvcmVhY2ggKCRnYWxsZXJpZXMgYXMgJGdpZD0+JGdhbGxlcnkpIA0KCQl7DQoJCQkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkZ2lkKTsNCgkJCWlmICggJGdhbGxlcnlpbmZvWydhY3RpdmUnXSApDQoJCQl7DQoJCQkJJHNlYXJjaHdvcmRzID0gJGdhbGxlcnlbJ3RpdGxlJ10gLiAnICcgLiAkZ2FsbGVyeVsnY29tbWVudCddOw0KCQkJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJCQkkcXVlcnkgPSAiU0VMRUNUIHRpdGxlLCBjb21tZW50IA0KCQkJCQkJCQkJRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcxDQoJCQkJCQkJCQlXSEVSRSBnYWxsZXJ5aWQ9PyI7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRnaWQpKTsNCgkJCQlpZiAoICRyZXN1bHQgJiYgJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKQ0KCQkJCXsNCgkJCQkJd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKQ0KCQkJCQl7DQoJCQkJCQkkc2VhcmNod29yZHMgLj0gJyAnIC4gJHJvd1sndGl0bGUnXSAuICcgJyAuICRyb3dbJ2NvbW1lbnQnXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoICEkcmVzdWx0ICkNCgkJCQl7DQoJCQkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCQkJZXhpdCgpOw0KCQkJCX0NCgkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkZ2lkLCAnZ2FsbGVyeScsJHNlYXJjaHdvcmRzKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCQ0KCWZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQ0KCXsNCgkJJHRtcGwgPSA8PDxFT1QNCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL21vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvanF1ZXJ5L2pxdWVyeS50cmVlVGFibGUuY3NzIiBtZWRpYT0ic2NyZWVuIiAvPg0Ke2xpdGVyYWx9DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQppZiAodHlwZW9mIGpRdWVyeSA9PSAndW5kZWZpbmVkJykgew0KICAgIHZhciBmaWxlcmVmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikNCiAgICBmaWxlcmVmLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvamF2YXNjcmlwdCIpDQogICAgZmlsZXJlZi5zZXRBdHRyaWJ1dGUoInNyYyIsICIuLi9tb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2pxdWVyeS9qcXVlcnkuanMiKQ0KICAgIGlmICh0eXBlb2YgZmlsZXJlZiE9InVuZGVmaW5lZCIpDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZmlsZXJlZikNCn0NCjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9qcXVlcnkvanF1ZXJ5LnRhYmxlZG5kLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL21vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvanF1ZXJ5L2pxdWVyeS50cmVlVGFibGUuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJJCgiI2d0cmVlIikudHJlZVRhYmxlKCk7DQoJJCgnI2d0cmVlIHRyLmluaXRpYWxpemVkOm9kZCcpLmFkZENsYXNzKCdyb3cxJyk7DQoJJCgnI2d0cmVlIHRyLmluaXRpYWxpemVkOmV2ZW4nKS5hZGRDbGFzcygncm93MicpOw0KCSQoJyNndGFibGUgdHIsICNndHJlZSB0cicpLmhvdmVyKGZ1bmN0aW9uKCl7DQoJCSQodGhpcykuc3RvcCgpLmFkZENsYXNzKCdyb3cxaG92ZXInKTsNCgl9LCBmdW5jdGlvbigpew0KCQkkKHRoaXMpLnN0b3AoKS5yZW1vdmVDbGFzcygncm93MWhvdmVyJyk7DQoJfSk7DQoJJCgnI2d0YWJsZScpLnRhYmxlRG5EKHsNCgkJb25EcmFnU3RhcnQ6IGZ1bmN0aW9uKHRhYmxlLHJvdykgew0KCQkJJCgnI2d0YWJsZSB0cicpLnJlbW92ZUNsYXNzKCk7DQoJCX0sDQoJCW9uRHJhZ0NsYXNzOiAicm93MWhvdmVyIiwNCgkJb25Ecm9wOiBmdW5jdGlvbih0YWJsZSwgcm93KSB7DQoJCQkkKCcjZ3RhYmxlIHRyOm9kZCcpLmFkZENsYXNzKCdyb3cxJyk7DQoJCQkkKCcjZ3RhYmxlIHRyOmV2ZW4nKS5hZGRDbGFzcygncm93MicpOw0KCQkJdmFyIHJvd3MgPSB0YWJsZS50Qm9kaWVzWzBdLnJvd3M7DQoJCQl2YXIgc29ydHN0ciA9IHJvd3NbMF0uaWQ7DQoJCQlmb3IgKHZhciBpPTE7IGk8cm93cy5sZW5ndGg7IGkrKykgew0KCQkJCXNvcnRzdHIgKz0gIiwiK3Jvd3NbaV0uaWQ7DQoJCQl9DQoJCQkkKCcjc29ydCcpLnZhbChzb3J0c3RyKTsNCgkJfQ0KCX0pOw0KDQoJJCgnYSNhZGRmaWVsZCcpLmNsaWNrKGZ1bmN0aW9uKCkgew0KCQl2YXIgaHRtbFN0ciA9ICQoJy5zb3J0ZmllbGQnKS5odG1sKCk7DQoJCQkJaHRtbFN0ciA9IGh0bWxTdHIucmVwbGFjZSgvIHNlbGVjdGVkPSJzZWxlY3RlZCIvZywgJycpOw0KCQkkKCc8cCBjbGFzcz0ic29ydGZpZWxkIj4nICsgaHRtbFN0ciArICc8L3A+JykuYXBwZW5kVG8oJyNzb3J0ZmllbGRzJyk7DQoJCXJldHVybiBmYWxzZTsNCgl9KTsNCgkkKCdhI2RlbGV0ZWZpZWxkJykuY2xpY2soZnVuY3Rpb24oKSB7DQoJCWlmKCQoJy5zb3J0ZmllbGQnKS5zaXplKCkgPiAxKSB7DQoJCQkkKCcuc29ydGZpZWxkOmxhc3QnKS5yZW1vdmUoKTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfSk7DQp9KTsNCjwvc2NyaXB0Pg0Key9saXRlcmFsfQ0KRU9UOw0KCQlyZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXBsKTsNCgl9DQoNCg0KICAvKioNCiAgICogR2FsbGVyeSBtZXRob2RzDQogICAqLw0KDQoJZnVuY3Rpb24gX0dldGRpcmZpbGVzKCRwYXRoLCRyZWN1cnNpdmUpDQoJew0KCQkkcGF0aCA9IGVtcHR5KCRwYXRoKSA/ICcnIDogdHJpbSgkcGF0aCwiLyIpIC4gJy8nOw0KCQkkdXBkaXIgPSBpc19kaXIoREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGF0aCkgPyAnJyA6ICcuLi8nOw0KCQkkYWxsb3dleHQgPSBleHBsb2RlKCcsJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93ZWRfZXh0ZW5zaW9ucycsJycpKTsNCgkJJG1heGV4dCA9IGFycmF5KCdqcGcnLCdqcGVnJywnZ2lmJywncG5nJyk7DQoJCSRvdXRwdXQgPSBhcnJheSgpOw0KCQlpZiAoICRoYW5kbGUgPSBvcGVuZGlyKHN0cl9yZXBsYWNlKCcvJyxESVJFQ1RPUllfU0VQQVJBVE9SLCR1cGRpciAuIERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhdGgpKSApDQoJCXsNCgkJCXdoaWxlICggZmFsc2UgIT09ICgkZmlsZSA9IHJlYWRkaXIoJGhhbmRsZSkpICkNCgkJCXsNCgkJCQkkZXh0ID0gc3Vic3RyKCRmaWxlLCBzdHJycG9zKCRmaWxlLCAnLicpICsgMSk7DQoJCQkJaWYgKCAkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIiAmJiBzdWJzdHIoJGZpbGUsMCxzdHJsZW4oSU1fUFJFRklYKSkgIT0gSU1fUFJFRklYICYmICgoaW5fYXJyYXkoc3RydG9sb3dlcigkZXh0KSwkYWxsb3dleHQpICYmIGluX2FycmF5KHN0cnRvbG93ZXIoJGV4dCksJG1heGV4dCkpIHx8IGlzX2RpcigkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoIC4gJGZpbGUpKSApDQoJCQkJew0KCQkJCQkkb3V0cHV0WyRwYXRoIC4gJGZpbGVdID0gYXJyYXkoDQoJCQkJCQknZmlsZW5hbWUnID0+IGlzX2RpcigkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoIC4gJGZpbGUpID8gJGZpbGUgLiAnLycgOiAkZmlsZSwNCgkJCQkJCSdmaWxlcGF0aCcgPT4gdHJpbSgkcGF0aCwiLyIpLA0KCQkJCQkJJ2ZpbGVtZGF0ZScgPT4gZGF0ZSgiWS1tLWQgSDppOnMiLCBmaWxlbXRpbWUoJHVwZGlyIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGF0aCAuICRmaWxlKSksDQoJCQkJCSk7DQoJCQkJCWlmICggJHJlY3Vyc2l2ZSAmJiBpc19kaXIoJHVwZGlyIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGF0aCAuICRmaWxlKSApDQoJCQkJCXsNCgkJCQkJCSRvdXRwdXQgPSBhcnJheV9tZXJnZSgkb3V0cHV0LCR0aGlzLT5fR2V0ZGlyZmlsZXMoJHBhdGggLiAkZmlsZSwkcmVjdXJzaXZlKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcigkaGFuZGxlKTsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9HZXRnYWxsZXJ5ZmlsZXMoJHBhdGgpDQoJew0KCQkkcGF0aCA9IHRyaW0oJHBhdGgsIi8iKTsNCgkJJG91dHB1dCA9IGFycmF5KCk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVA0KCQkJCQkJCQlnMS4qLCBDT05DQVQoZzIuZmlsZXBhdGgsPyxnMi5maWxlbmFtZSkgQVMgdGh1bWINCgkJCQkJCQlGUk9NDQoJCQkJCQkJCSIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzENCgkJCQkJCQlMRUZUIEpPSU4NCgkJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMg0KCQkJCQkJCU9ODQoJCQkJCQkJCWcxLmRlZmF1bHRmaWxlID0gZzIuZmlsZWlkDQoJCQkJCQkJV0hFUkUNCgkJCQkJCQkJZzEuZmlsZXBhdGg9PyI7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnLycuSU1fUFJFRklYLCRwYXRoKSk7DQoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCXsNCgkJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApDQoJCSAgew0KCQkgICAgJG91dHB1dFt0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJyldID0gJHJvdzsNCgkJICB9DQoJCX0NCgkJaWYgKCAhJHJlc3VsdCApDQoJCXsNCgkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9HZXRHYWxsZXJpZXMoKQ0KCXsNCgkJJG91dHB1dCA9IGFycmF5KCk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVA0KCQkJCQkJCQlnMS4qLCBDT05DQVQoZzIuZmlsZXBhdGgsPyxnMi5maWxlbmFtZSkgQVMgdGh1bWINCgkJCQkJCQlGUk9NDQoJCQkJCQkJCSIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzENCgkJCQkJCQlMRUZUIEpPSU4NCgkJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMg0KCQkJCQkJCU9ODQoJCQkJCQkJCWcxLmRlZmF1bHRmaWxlID0gZzIuZmlsZWlkDQoJCQkJCQkJV0hFUkUNCgkJCQkJCQkJZzEuZmlsZW5hbWUgTElLRSAnJS8nDQoJCQkJCQkJT1JERVIgQlkNCgkJCQkJCQkJSUYoZzEuZmlsZWlkPTEsMCwxKSBBU0MsDQoJCQkJCQkJCUNPTkNBVChnMS5maWxlcGF0aCxDQVNUKElGKGcxLmZpbGVwYXRoPScnLCcnLCcvJykgQVMgQklOQVJZKSxnMS5maWxlbmFtZSkgQVNDIjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCcvJy5JTV9QUkVGSVgpKTsNCgkJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkNCgkJew0KCQkgIHdoaWxlICggJHJvdz0kcmVzdWx0LT5GZXRjaFJvdygpICkNCgkJICB7DQoJCSAgICAkb3V0cHV0WyRyb3dbJ2ZpbGVpZCddXSA9ICRyb3c7DQoJCSAgfQ0KCQl9DQoJCWlmICggISRyZXN1bHQgKQ0KCQl7DQoJCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCQlleGl0KCk7DQoJCX0NCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KDQoNCglmdW5jdGlvbiBfR2V0Z2FsbGVyeWluZm8oJHBhdGgpDQoJew0KCQkkcGF0aCA9IHRyaW0oJHBhdGgsIi8iKTsNCgkJaWYoIHN0cnBvcygkcGF0aCwiLyIpID09PSBGQUxTRSApDQoJCXsNCgkJCSRmaWxlbmFtZSA9IGVtcHR5KCRwYXRoKSA/ICAnR2FsbGVyeS8nIDogJHBhdGggLiAnLyc7DQoJCQkkZmlsZXBhdGggPSAnJzsNCg0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRwYXRoLCBzdHJycG9zKCRwYXRoLCAnLycpICsgMSkgLiAnLyc7DQoJCQkkZmlsZXBhdGggPSBzdWJzdHIoJHBhdGgsIDAsIHN0cnJwb3MoJHBhdGgsICcvJykpOw0KCQl9DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCBnLiosIGdwLmhpZGVwYXJlbnRsaW5rLCBndC50ZW1wbGF0ZWlkLCBndC50ZW1wbGF0ZSwgZ3QudGh1bWJ3aWR0aCwgZ3QudGh1bWJoZWlnaHQsIGd0LnJlc2l6ZW1ldGhvZCwgZ3QubWF4bnVtYmVyLCBndC5zb3J0aXRlbXMNCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZw0KCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIGdwDQoJCQkJT04gZy5maWxlaWQ9Z3AuZmlsZWlkDQoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfdGVtcGxhdGVwcm9wcyBndA0KCQkJCU9OIGdwLnRlbXBsYXRlaWQ9Z3QudGVtcGxhdGVpZA0KCQkJCVdIRVJFIGcuZmlsZW5hbWU9PyBBTkQgZy5maWxlcGF0aD0/IjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlbmFtZSwgJGZpbGVwYXRoKSk7DQoNCgkJaWYoICRyZXN1bHQgJiYgJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKQ0KCQl7DQoJCQkkb3V0cHV0ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCgkJfQ0KCQlpZiAoICEkcmVzdWx0ICkNCgkJew0KCQkJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQkJZXhpdCgpOw0KCQl9DQoJCXJldHVybiBpc3NldCgkb3V0cHV0KSA/ICRvdXRwdXQgOiBGQUxTRTsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9HZXRnYWxsZXJ5aW5mb2J5aWQoJGdpZCkNCgl7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCBnLiosIGdwLmhpZGVwYXJlbnRsaW5rLCBndC50ZW1wbGF0ZWlkLCBndC50ZW1wbGF0ZSwgZ3QudGh1bWJ3aWR0aCwgZ3QudGh1bWJoZWlnaHQsIGd0LnJlc2l6ZW1ldGhvZCwgZ3QubWF4bnVtYmVyLCBndC5zb3J0aXRlbXMNCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZw0KCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIGdwDQoJCQkJT04gZy5maWxlaWQ9Z3AuZmlsZWlkDQoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfdGVtcGxhdGVwcm9wcyBndA0KCQkJCU9OIGdwLnRlbXBsYXRlaWQ9Z3QudGVtcGxhdGVpZA0KCQkJCVdIRVJFIGcuZmlsZWlkPT8iOw0KCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGdpZCkpOw0KCQlpZiggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCXsNCgkJCSRvdXRwdXQgPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KCQl9DQoJCWlmICggISRyZXN1bHQgKQ0KCQl7DQoJCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCQlleGl0KCk7DQoJCX0NCgkJcmV0dXJuIGlzc2V0KCRvdXRwdXQpID8gJG91dHB1dCA6IEZBTFNFOw0KCX0NCg0KDQoJZnVuY3Rpb24gX0FkZEZpbGVUb0RCKCRmaWxlbmFtZSwkZmlsZXBhdGgsJGZpbGVtZGF0ZSwkZ2lkKQ0KCXsNCgkJJGRiID0mICR0aGlzLT5HZXREQigpOw0KCQkkaW5zZXJ0aWQgPSAwOw0KCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSAoZmlsZW5hbWUsIGZpbGVwYXRoLCBmaWxlZGF0ZSwgZmlsZW9yZGVyLCBhY3RpdmUsIGRlZmF1bHRmaWxlLCBnYWxsZXJ5aWQsIHRpdGxlLCBjb21tZW50KSBWQUxVRVMgKD8sPyw/LDAsMSwwLD8sJycsJycpIjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlbmFtZSwgJGZpbGVwYXRoLCAkZmlsZW1kYXRlLCAkZ2lkKSk7DQoJCWlmICggJHJlc3VsdCApDQoJCXsNCgkJCSRpbnNlcnRpZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQoJCQlpZiAoIHN1YnN0cigkZmlsZW5hbWUsLTEpID09ICcvJyApDQoJCQl7DQoJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfcHJvcHMgKGZpbGVpZCx0ZW1wbGF0ZWlkLGhpZGVwYXJlbnRsaW5rKSBWQUxVRVMgKD8sPyw/KSI7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnNlcnRpZCwwLDApKTsNCgkJCQlpZiAoICEkcmVzdWx0ICkNCgkJCQl7DQoJCQkJCWVjaG8gJ0Vycm9yOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCQkJZXhpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQllbHNlDQoJCXsNCgkJCWVjaG8gJ0Vycm9yOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWVjaG8gIjxiciAvPjxiciAvPiIgLiAkcXVlcnk7DQoJCQlleGl0KCk7DQoJCX0NCgkJcmV0dXJuICRpbnNlcnRpZDsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9VcGRhdGVHYWxsZXJ5REIoJHBhdGgsJGdpZCkNCgl7DQoJCSRwYXRoID0gdHJpbSgkcGF0aCwiLyIpOw0KCQkkZmlsZV9nYWxsZXJ5ID0gJHRoaXMtPl9HZXRkaXJmaWxlcygkcGF0aCxmYWxzZSk7DQoJCSRkYl9nYWxsZXJ5ID0gJHRoaXMtPl9HZXRnYWxsZXJ5ZmlsZXMoJHBhdGgpOw0KDQoJCWlmICggJGZpbGVfZ2FsbGVyeSApDQoJCXsNCgkJCS8vIGFkZCB0byBEQjoNCgkJCSRnYWxsZXJ5X2FkZCA9IGVtcHR5KCRkYl9nYWxsZXJ5KSA/ICRmaWxlX2dhbGxlcnkgOiBhcnJheV9kaWZmX2Fzc29jKCRmaWxlX2dhbGxlcnksJGRiX2dhbGxlcnkpOw0KCQkJZm9yZWFjaCgkZ2FsbGVyeV9hZGQgYXMgJGtleT0+JGl0ZW0pDQoJCQl7DQoJCQkJJGZpbGVpZCA9ICR0aGlzLT5fQWRkRmlsZVRvREIoJGl0ZW1bJ2ZpbGVuYW1lJ10sJGl0ZW1bJ2ZpbGVwYXRoJ10sJGl0ZW1bJ2ZpbGVtZGF0ZSddLCRnaWQpOw0KCQkJfQ0KCQl9DQoJCWlmICggJGRiX2dhbGxlcnkgKQ0KCQl7DQoJCQkvLyBkZWxldGUgZnJvbSBEQjoNCgkJCSRnYWxsZXJ5X2RlbCA9IGVtcHR5KCRmaWxlX2dhbGxlcnkpID8gJGRiX2dhbGxlcnkgOiBhcnJheV9kaWZmX2Fzc29jKCRkYl9nYWxsZXJ5LCRmaWxlX2dhbGxlcnkpOw0KCQkJZm9yZWFjaCgkZ2FsbGVyeV9kZWwgYXMgJGtleT0+JGl0ZW0pDQoJCQl7DQoJCQkJLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHJvb3QgZ2FsbGVyeSBhbmQgb3RoZXIgZGlyZWN0b3JpZXMgYXJlIG5vdCBkZWxldGVkIGhlcmUNCgkJCQlpZiAoICRpdGVtWydmaWxlaWQnXSAhPSAxICYmIHN1YnN0cigkaXRlbVsnZmlsZW5hbWUnXSwtMSkgIT0gIi8iICApICRkZWxldGVfaWRzW10gPSAkaXRlbVsnZmlsZWlkJ107DQoJCQl9DQoJCQlpZiAoIGlzc2V0KCRkZWxldGVfaWRzKSApDQoJCQl7DQoJCQkJJHF1ZXJ5ID0gaW1wbG9kZSgiJywnIiwkZGVsZXRlX2lkcyk7DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgV0hFUkUgZmlsZWlkIElOKCciIC4gJHF1ZXJ5IC4gIicpIjsNCgkJCQkkZGIgPSYgJHRoaXMtPkdldERCKCk7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkJCWlmICggISRyZXN1bHQgKQ0KCQkJCXsNCgkJCQkJZWNobyAnRXJyb3I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQkJCQlleGl0KCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiBUUlVFOw0KCX0NCg0KCWZ1bmN0aW9uIF9EZWxldGVHYWxsZXJ5REIoJHBhdGgsJGdpZCkNCgl7DQoJCSRwYXRoID0gdHJpbSgkcGF0aCwiLyIpOw0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBXSEVSRQ0KCQkJZmlsZWlkIDw+IDEgQU5EDQoJCQkoZmlsZWlkID0gPyBPUiBmaWxlcGF0aCA9ID8gT1IgZmlsZXBhdGggbGlrZSA/KSI7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRnaWQsICRwYXRoLCAkcGF0aCAuICcvJScpKTsNCgkJaWYgKCAhJHJlc3VsdCApDQoJCXsNCgkJCWVjaG8gJ0Vycm9yOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCX0NCg0KDQoJZnVuY3Rpb24gX0dldFRlbXBsYXRlcHJvcHMoJHRlbXBsYXRlKQ0KCXsNCgkJJGRiID0mICR0aGlzLT5HZXREQigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICoNCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfdGVtcGxhdGVwcm9wcw0KCQkJCVdIRVJFIHRlbXBsYXRlPT8iOw0KCQkkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0ZW1wbGF0ZSkpOw0KDQoJCWlmKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkNCgkJew0KCQkJJG91dHB1dCA9ICRyZXN1bHQtPkZldGNoUm93KCk7DQoJCX0NCgkJaWYgKCAhJHJlc3VsdCApDQoJCXsNCgkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCQlyZXR1cm4gaXNzZXQoJG91dHB1dCkgPyAkb3V0cHV0IDogRkFMU0U7DQoJfQ0KDQoNCglmdW5jdGlvbiBfQXJyYXlTb3J0KCRhcnJheSwgJGFyZ3VtZW50cyA9IGFycmF5KCksICRrZXlzID0gdHJ1ZSkNCgl7DQoJCS8vIHNvdXJjZTogIGh0dHA6Ly9ubDIucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24udWFzb3J0LnBocCM0MjcyMw0KDQoJCS8vIGNvbXBhcmluZyBmdW5jdGlvbiBjb2RlDQoJCSRjb2RlID0gIlwkcmVzdWx0PTA7ICI7DQoNCgkJLy8gZm9yZWFjaCBzb3J0aW5nIGFyZ3VtZW50IChhcnJheSBrZXkpDQoJCWZvcmVhY2ggKCRhcmd1bWVudHMgYXMgJGFyZ3VtZW50KQ0KCQl7DQoJCQlpZiAoICFlbXB0eSgkYXJndW1lbnQpICkNCgkJCXsNCgkJCQkvLyBvcmRlciBmaWVsZA0KCQkJCSRmaWVsZCA9IHN1YnN0cigkYXJndW1lbnQsIDIsIHN0cmxlbigkYXJndW1lbnQpKTsNCg0KCQkJCS8vIHNvcnQgdHlwZSAoInMiIC0+IHN0cmluZywgIm4iIC0+IG51bWVyaWMpDQoJCQkJJHR5cGUgPSAkYXJndW1lbnRbMF07DQoNCgkJCQkvLyBzb3J0IG9yZGVyICgiKyIgLT4gIkFTQyIsICItIiAtPiAiREVTQyIpDQoJCQkJJG9yZGVyID0gJGFyZ3VtZW50WzFdOw0KDQoJCQkJLy8gYWRkICJpZiIgc3RhdGVtZW50LCB3aGljaCBjaGVja3MgaWYgdGhpcyBhcmd1bWVudCBzaG91bGQgYmUgdXNlZA0KCQkJCSRjb2RlIC49ICJpZiAoIUlzX051bWVyaWMoXCRyZXN1bHQpIHx8IFwkcmVzdWx0ID09IDApICI7DQoNCgkJCQkvLyBpZiAibnVtZXJpYyIgc29ydCB0eXBlDQoJCQkJaWYgKHN0cnRvbG93ZXIoJHR5cGUpID09ICJuIikNCgkJCQl7DQoJCQkJCSRjb2RlIC49ICRvcmRlciA9PSAiLSIgPyAiXCRyZXN1bHQgPSAoXCRhLT57JGZpZWxkfSA+IFwkYi0+eyRmaWVsZH0gPyAtMSA6IChcJGEtPnskZmllbGR9IDwgXCRiLT57JGZpZWxkfSA/IDEgOiAwKSk7IiA6ICJcJHJlc3VsdCA9IChcJGEtPnskZmllbGR9ID4gXCRiLT57JGZpZWxkfSA/IDEgOiAoXCRhLT57JGZpZWxkfSA8IFwkYi0+eyRmaWVsZH0gPyAtMSA6IDApKTsgIjsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gaWYgInN0cmluZyIgc29ydCB0eXBlDQoJCQkJCSRjb2RlIC49ICRvcmRlciA9PSAiLSIgPyAiXCRyZXN1bHQgPSBzdHJjb2xsKFwkYS0+eyRmaWVsZH0sIFwkYi0+eyRmaWVsZH0pICogLTE7IiA6ICJcJHJlc3VsdCA9IHN0cmNvbGwoXCRhLT57JGZpZWxkfSwgXCRiLT57JGZpZWxkfSk7ICI7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCS8vIHJldHVybiByZXN1bHQNCgkJJGNvZGUgLj0gInJldHVybiBcJHJlc3VsdDsiOw0KDQoJCS8vIGNyZWF0ZSBjb21wYXJpbmcgZnVuY3Rpb24NCgkJJGNvbXBhcmUgPSBjcmVhdGVfZnVuY3Rpb24oJyRhLCAkYicsICRjb2RlKTsNCg0KCQkvLyBzb3J0IGFycmF5IGFuZCBwcmVzZXJ2ZSBrZXlzDQoJCXVhc29ydCgkYXJyYXksICRjb21wYXJlKTsNCgkJDQoJCS8vIHJldHVybiBhcnJheQ0KCQlyZXR1cm4gJGFycmF5Ow0KCX0NCg0KDQoJZnVuY3Rpb24gX0NyZWF0ZVRodW1ibmFpbCgkdGh1bWJuYW1lLCAkaW1hZ2UsICR0aHVtYndpZHRoLCAkdGh1bWJoZWlnaHQsICRtZXRob2QpDQoJew0KCQkkem9vbSA9IC4zMDsgLy8gem9vbSBwZXJjZW50YWdlDQoJCSRpbWdkYXRhID0gZ2V0aW1hZ2VzaXplKCRpbWFnZSk7DQoJCSRpbWdyYXRpbyA9ICRpbWdkYXRhWzBdIC8gJGltZ2RhdGFbMV07ICAvLyB3aWR0aC9oZWlnaHQNCgkJJHRodW1icmF0aW8gPSAkdGh1bWJ3aWR0aCAvICR0aHVtYmhlaWdodDsNCgkJc3dpdGNoKCRtZXRob2QpIHsNCgkJCWNhc2UgInNjIjogLy8gc2NhbGUNCgkJCWNhc2UgInpzIjogLy8gem9vbSAmIHNjYWxlDQoJCQkJJHNyY194ID0gMDsNCgkJCQkkc3JjX3kgPSAwOw0KCQkJCSRzcmNfdyA9ICRpbWdkYXRhWzBdOw0KCQkJCSRzcmNfaCA9ICRpbWdkYXRhWzFdOw0KCQkJCWlmKCAkaW1ncmF0aW8gPiAkdGh1bWJyYXRpbyApDQoJCQkJew0KCQkJCQkkbmV3d2lkdGggPSAkdGh1bWJ3aWR0aDsNCgkJCQkJJG5ld2hlaWdodCA9IGNlaWwoJHRodW1id2lkdGggLyAkaW1ncmF0aW8pOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkkbmV3aGVpZ2h0ID0gJHRodW1iaGVpZ2h0Ow0KCQkJCQkkbmV3d2lkdGggPSBjZWlsKCR0aHVtYmhlaWdodCAqICRpbWdyYXRpbyk7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KDQoJCQljYXNlICJjciI6IC8vIGNyb3ANCgkJCWNhc2UgInpjIjogLy8gem9vbSAmIGNyb3ANCgkJCQkkbmV3d2lkdGggPSAkdGh1bWJ3aWR0aDsNCgkJCQkkbmV3aGVpZ2h0ID0gJHRodW1iaGVpZ2h0Ow0KCQkJCWlmKCAkaW1ncmF0aW8gPiAkdGh1bWJyYXRpbyApDQoJCQkJew0KCQkJCQkkc3JjX3ggPSBjZWlsKCgkaW1nZGF0YVswXSAtICRpbWdkYXRhWzFdICogJHRodW1icmF0aW8pIC8gMik7DQoJCQkJCSRzcmNfeSA9IDA7DQoJCQkJCSRzcmNfdyA9ICRpbWdkYXRhWzBdIC0gJHNyY194ICogMjsNCgkJCQkJJHNyY19oID0gJGltZ2RhdGFbMV07DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRzcmNfeCA9IDA7DQoJCQkJCSRzcmNfeSA9IGNlaWwoKCRpbWdkYXRhWzFdIC0gJGltZ2RhdGFbMF0gLyAkdGh1bWJyYXRpbykgLyAzKTsNCgkJCQkJJHNyY193ID0gJGltZ2RhdGFbMF07DQoJCQkJCSRzcmNfaCA9ICRpbWdkYXRhWzFdIC0gJHNyY195ICogMzsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCX0NCgkJaWYgKCAkbWV0aG9kID09ICJ6cyIgfHwgJG1ldGhvZCA9PSAiemMiICkNCgkJew0KCQkJJHNyY194ID0gJHNyY194ICsgY2VpbCgkem9vbSAvIDIgKiAkc3JjX3cpOw0KCQkJJHNyY195ID0gJHNyY195ICsgY2VpbCgkem9vbSAvIDMgKiAkc3JjX2gpOw0KCQkJJHNyY193ID0gY2VpbCgkc3JjX3cgKiAoMS0kem9vbSkpOw0KCQkJJHNyY19oID0gY2VpbCgkc3JjX2ggKiAoMS0kem9vbSkpOw0KCQl9DQoJCWlmICggZmlsZV9leGlzdHMoJHRodW1ibmFtZSkgKQ0KCQl7DQoJCQkkdGh1bWJkYXRhID0gZ2V0aW1hZ2VzaXplKCR0aHVtYm5hbWUpOw0KCQl9DQoJCWlmICggIWlzc2V0KCR0aHVtYmRhdGEpIHx8ICR0aHVtYmRhdGFbMF0gIT0gJG5ld3dpZHRoIHx8ICR0aHVtYmRhdGFbMV0gIT0gJG5ld2hlaWdodCApDQoJCXsNCgkJCSRuZXdpbWFnZSA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRuZXd3aWR0aCwkbmV3aGVpZ2h0KTsNCgkJCXN3aXRjaCgkaW1nZGF0YVsnbWltZSddKSB7DQoJCQkJY2FzZSAiaW1hZ2UvZ2lmIjoNCgkJCQkJJHNvdXJjZSA9IGltYWdlY3JlYXRlZnJvbWdpZigkaW1hZ2UpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJpbWFnZS9wanBlZyI6DQoJCQkJY2FzZSAiaW1hZ2UvanBlZyI6DQoJCQkJY2FzZSAiaW1hZ2UvanBnIjoNCgkJCQkJJHNvdXJjZSA9IGltYWdlY3JlYXRlZnJvbWpwZWcoJGltYWdlKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiaW1hZ2UvcG5nIjoNCgkJCQljYXNlICJpbWFnZS94LXBuZyI6DQoJCQkJCSRzb3VyY2UgPSBpbWFnZWNyZWF0ZWZyb21wbmcoJGltYWdlKTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdpbWFnZSwkc291cmNlLDAsMCwkc3JjX3gsJHNyY195LCRuZXd3aWR0aCwkbmV3aGVpZ2h0LCRzcmNfdywkc3JjX2gpOw0KCQkJc3dpdGNoKCRpbWdkYXRhWydtaW1lJ10pIHsNCgkJCQljYXNlICJpbWFnZS9naWYiOg0KCQkJCQkJaW1hZ2VnaWYoJG5ld2ltYWdlLCR0aHVtYm5hbWUpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJpbWFnZS9wanBlZyI6DQoJCQkJY2FzZSAiaW1hZ2UvanBlZyI6DQoJCQkJY2FzZSAiaW1hZ2UvanBnIjoNCgkJCQkJCWltYWdlanBlZygkbmV3aW1hZ2UsJHRodW1ibmFtZSw4MCk7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImltYWdlL3BuZyI6DQoJCQkJY2FzZSAiaW1hZ2UveC1wbmciOg0KCQkJCQlpbWFnZXBuZygkbmV3aW1hZ2UsJHRodW1ibmFtZSk7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCWltYWdlZGVzdHJveSgkbmV3aW1hZ2UpOw0KCQkJY2htb2QoJHRodW1ibmFtZSwgMDc3Nyk7DQoJCX0NCgkJcmV0dXJuICR0aHVtYm5hbWU7DQoJfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/folder.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/folder.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/foldersmall.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAADYAAABGCAYAAACHZ2ccAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAB1aSURBVHjazHsHlFzVle2unLuqc1IrdyvnBEggMGCwMAgzBltIA8JgZMxgM2AwJhn4tseewYzB9iDAEtEkfZOEUQCRBAooIQm11IrdLam71aE6Vk5/n1v1mqdSKbDWX3/9t9bt9+qF+86555x99rnvtmH8+PE43Wa32xEKhWCxWOBwOOB0OlFQUIBYLAaj0Yg9e/bAZrMhLy8PHo8HXV1dMBgM6jm5v6OjA/n5+aqvQ4cOqXNWq1X143a71bHZbMbWrVtVP9p52VKplOqnoaFBvd/r9co1U0tLSz6vDeYtQ/jMCLZqvr8iHo9XsnWa8f/RlkwmtcMatuFspWxlbJU1NTVlFL6YAzkokUgMGjNmjBogbaBFaZ5HY2Mj+vr6Ov6fK8ZRNnA3mm0EWwXbILYBsp81a9YIWq9ArCeeIM1kMqnnROhgMKiOxZoulwvafWJVWgnhcFh5Ee9Nmv8vCasdemR0MwJXaaPNrYIjW02XGjlkyBCruJ4IrAml9SHCS5NjTVj5HY1GlVKikLiiXplsGbT9N1VMhB3KVp4RWhSomDJlShXdpJwCV9IlnBInMpraaEu86QWXJiOrKaAbmBME1JSSGJVYk2e169K/9K391j97porNmDx58mfs3KwJLB3KXhNeL6Q0iRdtRLUX6mKoXyC94noFNfcLBALw+XzKSjIY8n65T3smu69vpBjd53EGr1nQTi+g7OVl2R1nb3oh9C/Xj3C2peQZgoACBjkWJWUQ5Z36/vT9yjXNomZxm9NtdK+83t5e9ZB0mmu0c41cLtc6lTJ6ISORSFpAWkjeq8VVtlfoXVGeEddVz2WP5EnAofd0Vsl2sZP1ezrF9LElEJ59LZfLauckFrVBMJ8h6sWyBdMslb3PpdA3ccNsING8RHunCJ0dq5qrSjxqzxnPEDwSuYTLBoTTJd+TKf5NntHOZYeD5DCxsjbAxjNPVakzzWUnPf9NlMoVT9m/9efEDfW/zzTGUlpn+qSaSxj9SGYrlcvtTuWGmvBan3pE1DdJKxor0Z4zf9PRy0aiXDnkZM+fzMX0x7mE1wusDawWAvJbo1J6hD7TBJ06mWX0Ap8KOSW4NQGEuOoT+8ksrllMD/Xab/0z0q+ekXwT5pHKHsHsfJatuLhHPB5BLBhAiG7isNtQNnAohg0fjtra3ZC8KMrlspzeYrkQUO81soli2d5xpq6Y0vt7dlLWOlO8rqsH4VAAdocVJeWlGDJ6LEaPqMbs2VMBa5F6ZvHixdiwYT1ZheuUsJ9LMQ3utWN5pzR9GlCKbdmyJTc5nDHjBLjP5mhilWgkilBXhJ0aUFzmw7hJE1BTU42xQ4diyLh0EdtIL1ndCPT1At/lqcmjhuPzTz5CyuE8Thh9jGkDqcWjFk96d5S95ob6508JHhs3bsTo0aOPC3YZGYmReCSOVDQFl9eNgYMGY9TFU3HexItQUsO40Xnn2qPspzGMXR1BxCJJDLTYUVbhxjnnzoTjxZcokChxPPPQx252jGlcUFNczmvUK5vln9IVa2tr4XWWIM9+OCWFnTxcXl6BYUOm4txR30XNLEvmzhh2tb2EXQ2lcPkuRfMxopK8xxRHuZvBHbVgr9HGu1JoOAScU+RAWfkA1B+qh8PlQi5v0Cunjyt9XCqPyXDDbOQ9bYydd+FZQ8+ecVHlgrk/QdUIKpLRxZ/cgrfqXsaB5g3oia7D4VZgcPGVGF9zKTy8J5pMwG1PYYDXgeH5CYys3YuQswxJQ5p0V1cPx84dX8FGhNS7WzYi6kEqW0HNg7IJsnJFgd4TqEwMtice/59f3fzThb/iT2v6bBTLa3+HXfUfoC28CYFoH4y8kmKIFOaz6iykgVAPO2WwcLiMCSPiKdZrRObBjRvhbH0X5Zc6cSA+BxFMxuiRY/APwzvHCaZ3x1x5U4srba+5YS4aZs7F9SLE6e9dcfVcUeqexd/H4d7P0Bc7JpLD6Wb97wVs9owCFFyEd/B8tKcesXgXokYfSqhhQiy3eyMOW7pRP2gcjr16LUomPQ1/WSPGTpiGsrJS9Pb0wGqz5kzGmmx6JNYEl1jLVkxvtRO4YlIVvQk8tfiZl+Xo3c3/QEvbMdEJHipjNfIllNhotPNllnTwsxsDb2jp7UJ353rYeEy0h+XIVjR9+nc4/CGMee4TOG4D2nccxpHuA5AycEBlBfoCwRN4n154PTrqWzpPxk86vWCeec6snLH10bp3N92P2zFp8GjUd9TSElSXkI6YTHNx9OI8NlN6Qwp9wTi624Gq1AQM9Q6GgQMthU4kwsRpcuPw0e34cngvdi4CFlUA5VZff5x98unn8Ho9pyxvNHfUI6I2dyKFaK7YNO/8aucJSkXJJ8OB2Mc8bBk36ryyXWtqkZeAylVGk7yI98T4x5BAT0ccPkMBLp/8e1w0/sfq+T1ttCytVjX9HLgGnYXgV2sIHgdRUedDwfVPYoCjUN03aswEuqFNjby+rssGD23TqJTcJ7GpL2GyLWbMzQrTN218/+Cqm+beqYRUsReVjoT3xdHRHkEX89TsQXfiTws7cL7rx7jn/Jl4/S+/xchiIEj3D3OAumNGGIfNwJX3P4PLX2xGa94P8drGIHZ1U7Fxo+Et9MLf03dCgk3H19czW/o5DW2WK1d505/Hbr7xFo68Ue5I+240gWicmRxxvPzOX9c+fvEfry90c1SjEVjpeZ2dMZj4zhmE9QcWrFCd//6Of8er//0nlQl2bV2Hy6/7d5SWO1FHthENdMDrMiKUb0dXvAOzxtjRDieP05lj/MhReGv1Bwiyf6fZBActKPOOaakN/Qlfz/pFMf2cYnbeU1NzXp8HS5Y+jZ7uLuzbX4cDh/ahvmE/GhoOon7PoYZbfvaTX67f9QF2HG0gfWJc5I/G//xqJy6duAh7XnkPt172LSxbtRp5MtFItAz00LLJFsy+eC6OkELFA92YVFOMPcea8dfXXoSp24/QgX0A+6sYPAyzzj0XV15/PQYOGw5zLKrIsd/vV/WVxWqBWab6MrPCamY4kxoizGFynM04JLdR8WB/5M06byaWLVuG1tZW/SD4U0F8Oqhq3HmO7Z/g4ZtfxCUTF6BpYx8e+O10fLl8E/7Jm6Y7rRg/1oVobwhlBWGsW7IUc+b/BGPHT8OW1rhiAQGi35xJU8hknGjdtxe1n6/FS795BKUDh2Ds1LNw+U9/istnnt3/4j899zzWv7scSUFGHQGWFpepuMyxlgqyFeyPsUQy0d/pmAxHnDPnMtx1/53b77rqz9i8NMV4WoCFV1yBaWd58AKVWs3HpQuL3ahG1VfoRl6lG0VMCx889aCa7x47uQoHm9rwxStL4bU5YQiFsPv9Veitq0N7QyPee/ZFLL71Vsx123H7rJlY/POfoW3nDlxJPlns86GypASVpaUoKSiA1+2GXabHqYRYUrXM/P0JCbrfP5OpXBMzCx597I9z5ODOn/4Mjz35lGIgQxgdrRzHKNtElxlDysxwWg1wmOUFZOxDImj4eCW2rf47Jn17Pvatfx9441XsamxAz+HDSGzfAhsTnztuwtiqUpiZoIOMp85D+/HpV9vx2fNLYayoQnhAFdwuB5wuj5q3t+XlEZVNCJDRB1lVhGPpecR4InnCNN5xSSDxtWIz9+4//OvqYQMufuO1t3DrTTfjWF+buuDkIyOrHSjxR1CSZ8LkmjxECP0WZuVEXFArRQsWwOw9hnUv/E4plgoE4GltgWXFWygi6bUPHoBAXwh5cSN6U0byTsBuNBH6HUj58mFJJXg+gVBPN+KMuaC1i/WdAx4q53R7ZJaX7/bCVViIzu5OHKqvPyFNZCs2/JmlS3950w033NTd3ISLpk/Bhk1blb9OL3VgaJkD9U0BlPtofpJEh8MMM+PLTTYSiSXQR2+OS0RwxKyeEjRsr8Xqpx/Gt2/+Nfx7tyL+5TakWpth8HphcvlgY1EaCkaVa1mIzEkBBu4NwjG5j0WiKrWk4nbJMTAQCSPBkEJxi7sLVjupWFauy7YYn8Qvuzs7H5If866ci1fffkddKKclKtx0twIzfDYjZoz2KZYMrxkppwOdRMpKtwFu+nqM7hyJk4mEKIzFCGuBHRvf/AumULGxd96Pg689CSvTRdfHq2DNL6FV81Gy/yCcfC5IiwWJ7VG6ZFyRunQSNsT5Ll5P0d2M9DS157usSaeC/B5yzWx+qYiy6HGsudnPcv2hO++8U2mvKVVC4YqpDCWGw0vd7RYChAujhxehvNILM39TD8QojI0DkOcwqVIgScoV5QW7NQ+hlnaseeB6DM6vpLtaYZs9AyVXXMNCNQSrz4WiwYPgJbG0kEkbJUaFiwoYUFGqQyGpYFLyVoxsJ5aBc7oaU0E8U0ELPmTTMVNdXd1Sl9s9aGBVFVatWtV/wcUXOPiyAOPGwuPzhnlQUWxHiknUZLGoIO4Kc3QyGdRpMcBK3hgmbzTHUsjjS33ROEqFL+7djvzLFqL4/Lk4/M5z8F34HRiYGvoO7oetciDd2YnOtnaEjGbEBc453gpMpOQX1iGuZhQUNCulzURGb3ERErRcFy2WVjyuLCX5j8dB43cvv/w+EayivPy46lMGICJMhCHjJkVw8ME8jo4nRJ7UF+SraW6TAf5ICvt6EqhvjiDRGUUF3XBiKIIJHUEMaghgSAcwnLjTdu889bXQYfGha+2HKLrqWuTVjEFfWzOM+QUwFBQiJFUxFYhyQGPsW/EfYRrKNaEq8AQH2URrWRxOhMIRldOyZ4m1GHt/85YtT63fuHGRlg+MwqS5D/GPjY4doFt9dKAX1eU25RririUFDtgTZlTQTT0EgPIA04AtgTJzHCZaMkrLGXwEhVILRz2G+OoNaHtlCWp+9CtsuPs6+IY2oPTC7+LQvj8h3NwM98AqCO70yoyuWRBWFDJAw2nxC1VQSDK2ieeYESRiCtTr01T/xM/hxkbc+KMf3SPCLiS1USczHSVkTpzwXdubxPuHwzjQJggmyvIlRKxiUxQTioz4dl4KV1WEMWl6GN7JcbjOAXzfs8EzmyNbZmRoGtBFMPv8z/ejmEPprZmM2rdeg5mQPuTi76A5EkNzdw+8AwbQp12QyWqxWEq4oUH5BhHToFAzKS7psCvZwqrQZBzmmOc3lZaWqjlHt8cTfvDBBy9a/OST6GbesUunMCieb5QyjAf+QBJDC6woZ/6yM9BHVjoxiHFXWWKD9+p8xL9XjeTEgTCcbYOpKgpnCy1Xm8CewzY00sL7SIjjFPuCWx/A6uefI8/qxthp5yJJVrFxTx1CoTCsVMzAGA7zfT10tRTTikE+xDO+JLYkmeeXFCNFoboZX4mMG2ruKJ+ShCuaJOiEeK5aufLzu++++4fFRUVFb739dtpqGeUU++dRgNbLJ/IVkW0Y6JKhYAy1x6IYVmJH+dBCRAZPZQrgoHzVBLzQgbpaM1a22bHWQ7ctcSBAht/ZvBNTfvALmEpGkJm8jUKfG+NnzETVmHEIiyx0xV7yyijfFVYM3qAUM1msCgltBJrC4pI0+yA9Sya/Vkr2opiAh0m+8Wrbzp072x5+5JGrl73+Oprb25k0M5WZIf3HYTagKN+GfLsJ1cUyevTzSAKth0OYTOgGGpFcuRt9m4P4os6JV/sc2JxnV1VnwkIXYmyY4l0IHdmLi+ffgvXrN6KnsxMFZBtTJ4zD5ElTMWLCBHjzi8goehTimeRjvjltLUkXLo+H1/PRxevRqBSbiePcUBRj/gsa9KV1Zg7hfzc3N/9LRUUFnBnF4pkU4aKmNVUuTC534N5JLrQmTdjQFMSRoyHcfEkVS5IADjUHEC32oSFsRGNnHP5oCt1sNDRoaBQ5mBbQhgX/tQZNscH4zQ+vwPnnTcKs6dMwZdoMoJRVqqcQ2z/8EA/+4feIsTZMGtJWM9NFi4uL4cnz4MiRo/0Qr330kGOpTpjb2kx6Ziz54sM1azbfdtttP9/8xReo3bef5YFBBa/EWZjukWQrK7Cg1GrEIcLmpsYgSh1GVJS5sLfbgPoY46vIjcISN3y0liTPOJ/piqbUKDlpZWYrNO3dhcvm3Yzu9mZ07KsnB3Sgl0LZ6SnOQh/sTCvvrV3LpG1Sc48Wu13tZQ2XJOkeho9+JktzRVlpoFxRr5jEVFVVVefESZNcZCEzH/2vRxFiJ2ZluZSC2i66XoHTgk7CvFE6TaUVHlzmRkuURSHjyVvkUW4j9CoWTcJG4XqCCT6TUu7sJhH2M9YsVi/OX/QL+PfsxIXnnk/X68JzrOU+Z0W98csdRMpeRZ+E9IpSTj4nC9FkWYb+C6a+DhPFxBVNcrGcyVnKAmmd9PlXXn553R133HFvd6APn3/2WZomMcbEajI+0XAcJR6rcs0Lh7lJhi3EFwuCkl+YOB0sNcxURuZIRHcXrSQgFI8nM6BkVKtsuo7sxoTLF6FgwBiEGg4hQeYSIVLWb92GPbsPoM9pY78cLKuZA2VXSknodNCqMqeY/fVHU0xZTLQVVMxqseKSkofuvecePPPMM+jkOQUkwgnZSYgCupiDnKQkZYTxUYT/rvYwugkCSQa5lC8ykEK7bBajilOZEBIlI3HFaWGx2GBJtqKnqQVnX/I9vLXsNfT6/SgtLEL93gNIEtSayQ/pDAr+pblZsiTIF2WZoDanmD31pil2wiyVfHyQtnTJEvX7aSqGjMXIbVX2j1DBDsZXgvtmJpwj7VHUsz4j8EFqvnBcWL4BMT4gVouSwbhdNlSQ7UuMiel7yE5CqUI0bH0XjU31OGvBv2HEsFGw0zKKsNmYy2JxlYTDqqiMq0QsggsZTiSTOVcsnHQmePLkyarJxUWLFuGyOXMwffp0JugU5HOCjLbEnJ8K2YlE5cYEdvpj2NMTZdnPgpJ+G6Ji/r4YekIkpUTO3ihUk+TqcmprsYwk0STZzEXrlz6A0UPyMWHuv6CFbuYoLUKccRVLyYyvzJrFFXmV2ks8Ki4LzJLJnItf+ilVtmKyWlSa5Lf169ej6dgxLH/33fTHIj4kLilpU4Dg8LEgghz5i8YVo5D5rbMzgGCbH0aOrpnm64skQS4Mwg8CMQEZoqLDxnJGpshNys0CSR86GjZix1ZWFswv23bsgNuXByZY5brCPKgd30t0pkICGqJUUvexL9cUnEYLjZqSUrixGSUvyJKfGxcuRAlzx9Xf/z5kitKRmeqL8UWHWTR2UHi306hcdUipE9ZYAIEOP8GBxSCDXmIqTqvJ9HiQkG+hwm6iqslsVMpFkyxTDA5s+Ptj6Ymk2RfyvphCYxWdMtNL5ewEjTCtG6VrKjc8yUSpfibYlGmSqY2ZLxhW0VqQq76+Hq+Siby+bBnsnjzWSCl4M3Zu561HO8Lo6Euob85NXXGUsxA1p8gIWb4IvzMapehkvFG5OJXopQs7WKDmOUlk+XoT0TNpcqHp6D4se/o/MP/2n9PCtDbRWawkVTMdlyBkQYDxJeCRSiROuXRDs5gl8w1MmvaxzKHdJC752KOPqpP33HWXgnumMgoPNHHv74rgqD/I+2xo6yKItIUxqrqIJNWoynyz2aKYQzRloisbFaBIvHncVvjcNsajQU3hweLFmuUvsL4LYu5NtyLRF5HVNTDRWjYOkMyBBOXLTOprNn+qlUCaYrZM61dMM61MNwsS3XHXL/DrB+5HTU0NAkgXcpKbdjVHsbstSHJqgcPtJAIaUUXmUF7skQ8xBAomWJOVljMLbqvZ3UjMoGKurIiuS/Rr6U2oqQFDMoIvN32C8y86F4NrhqIvEFJ9yLS3FJSRcOg4tnGqtZHGjAvqrSYXbJpiEmsC/6tXrKTQSSxe/HQG/tMPf0U33N0YQIWdtIoAEqQFPt/nh4tEudCbhncn481mlbiypt1TSvqgIGcSxR6iY28ApdXT8Jd/HsS3Zn0Hzz78EDobGuCUOOR7bGp5fFDBfDKROOmHiFxwr1dQZqyc2Q+IgvOuuRoXXDAbF8w+H1FlYoMClE/rgtjfFlCoUllegBh9tbMzhAJyRTcVtFE5gXmPlDsm+VhoVizkQHMX4o4K3P23N3HTfYvxBYnvbbNm4J1HfotgSyvTXXoVt1g1mK6z0m54mnWQtJrUswq9tc//AiJWXrBnf4gTq23fvh2frluPN9/7J3zytZ92c1Cbdh4dIMuvGFSOMq8b7fSzlMGkkM/pFAsZ1Pc0qb672WWIseLM82HmNbfgyiuuRe3+Bjx446U4uOITxO3khQWFiAl/oyI2hoLkvHTtlVRE3aDPV0ZjiDSrlQjeRLnDNpvtAobOSrOas/4aGZVL6l1RvwJHgOS+e36JtZ9+ihuvvx5Lnn8egwhbYUL50UMcfVYdHUkLigp8KCnLpzIpNalpItJYeRyLhOEirxwyfg4uuu5uBCIp/OFH/4o9LyxjScM6r7yEZU5EJWRJD2IbmQGOyToswr9SzGjspKCtogyVaGfr5qDHQ6GQs7Gxsa2pqenPJMlvmjMTQBEd5KtlwLk+m8r64eamJvznfz+Bvz33HN57bwUMba2odpHqsJLetP4ABk+zYeJAj5gFrrx8spE4UZQgYEqhcOh4zFxwv5omX/74H+FnHBXZXKgcNAhdvF+UCve7W0p9UZF1IKFwpDMRj9fxfIMhmWw3Wq0RumiKwGZiKzly5Iihrq7unZaWltegi630zBaJga6ddDGkVAAvPfs3df2Bh3+Ho2kkgdSr675oRf3BJlQWW+Bv7URPux80EOvGSkyf9wAuXvAQtq34AA/NPAsf3Hk/zr36Otz45GIkfR40kdiKpVKJNJyr+Xepmu32FIFjN5PyVp5roiBiBCmQHazLRm3btm3HunXrbtUr1T+FmFEumlG0L6Nozk2CWeB/4Q034Llnn8Uri5/AXtKgMS4hv8D2LfXYOaMK1T4zWomiUy+eD/fAC1X++49rr8LGV95UL5Xc8uxdt6syf399I5KMLUMqTaEkMctkjpVoyHwYDgZDXURDcyKVijGmElRKVpVX7d69+69+v/+dbMTPfAsFspAxSvNOGTNmzOaTrSaVc0JGl7//IaLd3Zg4cRyqM6NxiG3h7EosefZ/wTjkBnX/F1s3YVjNSBiO9eHg2o/w8UcrUb/tS3Ts3EngSUsibu6gN8TUFHkS3VTONW4snF7vsfrDRz6KxGOdlCTIOHfTUpb9+/c/xQH+Qgd6Sf26Sv3XlmTGcrJ16BdeZSdEOS+J+/ZbbsbKFStw9ZxL8Pp7qyDTQldMn4QHl7xFpQbipVdfanrisf9cs2nT/i+Hj6/ZcsE5Z4+65Np/PfuOhS9cYJR/J2E5sualF/Dx28tRv2sXug4fUd+8UkwHYY8TRVQ0FIm0xeKxMGusqMVqdZHHRg4ePPgbKnckMyYGndzHmS1n9h44cOBvfD7ffWryUfc/JPqlCd201m8ffQxXXXoJvjV+JH5x30O44rrr8P7KD3fee9ctd2/+au9KRWPyihDqaf/6HxRYkE4cOWL2eVdeOfOmH//4nJEFBZepAezoxMoXn8U/33gb9a3HkDd2LJpaWj5s7/DXJVJJRdSJfI8QAY/kstLpFEv7aPqbr2z5w4YNW+fxeGr0X+45ggmO3lr6++69e/deJ6lu7/6D8Yfv+Lefvbx8xZNTx9aAip3R8tWSkpLKyVOnXnDZ/PnTfjDvB1OLDaZzRNp511wDxtHLzGF+s8UygPH0h9bW1g0ZpVIZxXCmivUrp3vxjaWlpU+T+W9nPbQiEAhsC4fDazhynXJ9/oL584YMHDh5+Rv/+N2Y6mGdVAyi2Jbd+xTK5ejXqIsNQ0bAeOb/TVyjqquHc5vnb2v7flNz8/scvMF0/Sf21NWtSMiyoBzrlLM382kWN4sASY7Sko6OjiXZS1l12ytWs+mVExC0X9qci6YNutvs/UrHYondtbXbDx08WJyfnz+YHjOMIfEGgWLFyRZf59pO9w8FSV0hespNP/FqMZtwBv0mdGkmnAFVYyYTWKlQKh6LjbTbbDt6ensX03LCFU04w+1M/lPilL6MdLZU023fpFOdgpobioKhDAuKUrEw6VTA39n5ONQ6kYD5dHLot/8jwAAa2hNZVycxfAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/fpaint.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAPcAAOlqa00zNGxRUzwiJUkvMnVaXz4kLWZMVzMYKUowQHdde3BfdaysxnFxfLa2x6amr1xwkenz92JrYnyOdIGUcPL08IuabImWaLzNceXxaNXbT/D3bvb4Tvb7U8/RS/7/qP7/yPz9yf//AICAAFZWAC4uAP//Dv//Gv3+Jf//PPz8S9DQQv//U///Vv//Xv//ZOjoXP//bv//cP7/cf3+cf//dv//ev//iP//lv//mf//muvrmP//qejomv//q///rv//w///xdbWpbe3kf//y+Xlxf//5P//8dvb2NvWQKmfRZWNTpiNS//YNpWHSF5EAPewNe6vQ7ePW/eUFtm+nti+n9KTTtq+nteykdvBqOXTw9mvjNaxkWFHNN27ocu5q9+zk8d+VG5fVlxCNk81LzcdGDgeGUYsJ1E3MlU7NlpAO19FQGJIQ25UT3ZcV3ddWB8EACIHA/lXPSoQDDYbFzYcGEEnI0QqJkcsKE81MWFGQmZMSGpQTHBWUnJYVHheWnpgXPA+KioQDUkvLdpdVT4kJP///+vr68zMzG5ubmZmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAEAAQAAAI+AANaQFDEIyXgwgPahHoBUqUhxAjRvGixUuUGC9+vKjhw0USJmKWeIiyJUuUFyyIsJARRIUTK2GkKInCxeQPIiKI6DBRYQEAOU0kRMFiEqVKlhwuEAo0ZUKUKiZryNAhw0YOGhosQKCAIQoVkzyAmCiy44SRGR0iZNgQ5YrJFimOBBBg5AQOEChCfGh7JcqNHgcGGCigY8iYJzB08I0iRAEcNmQEMWhQCMGIFYv3wOHTps8aOIkOIUJAgi+BQWra0DnzJo0ZRYccdClx5cqcNID42KmDxg+eMm6QPEhwRQuf43z83Imj50+eBNATLNRSu3rtL9ixLwwIADs=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/images/next.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/pageno.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/previous.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/uppage.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAADIAAABPCAYAAACpg5auAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAm0SURBVHja7FlbbBTXGf5nvbu+Q4EHWi6GYkFfUtdVwtUVcqgaguKQuE1CLGj6QIkcZAme4K0PQUFUaamsSgapJGAwUIRxbNyktZxAY7CM7cWXYoIXKju11876smvj9WUvszv9/7NzJuv17Hpsr3dtyUf6dWZnzsz+3/lv55xPgKlNQIlDMaDoUXTyvVg3CcWL4kERUXzyPUXpwEZKx6OkoixDSZYBLQQgBMKFMiLLmHyPgREkyQ9KEAQCkYCy6sCBAz87evTobzds2JCJz2lMzIGgfqSos6Ki4urx48cr8dqK4iDrSARCBkKKJqKsW7169R6z2dwiBTWv1xsT8fl8k/QYHx8fLSwsPI26voCygtyfMDCLIFpynxUZGRkvlJaW/mXz5s0ZhO75yAjcu3cf2s3tMDo6ikYUoh4WcXE6WLlqFWx98SXYtm2r38ewnT9//o8FBQXF+LOX3EyQrZFkNBrTqqqqTmVnZ/+GBpvbzVB07jx0dXWDTqdDEci+MQhxiRRHQHGwa9dOOHLk95CSkgJut9uVk5PzTnV1dT2Osunl4cbMzMwfbd++/VX6YbH0wJ8+/jPY7DZISEhApAJ+zxcbIJRtDAZAF4M7d+4yKx07dgxw4uNPnjxJQNrw5jAHoseB8Yia/b51qwys/X2QlJzMHrpcLpwVET8hRB0Lub4xPp5ZJDEpCWpqaiEr6xfMzTAkSEEjlQsOREAgcRRMw8+HoaWlBeLREvQRtyjClp9swZd3gV6vj7o1RhyjgC4Pz58/Z2A8OKH1DQ0MiCiKvObBFM0GBwZhfGKCgcCBZELIz38fMBXHsBRKUHz5MiQmJoIOXaKvr4+5WnABnNRogA+Di4TA6HEWUlNTI+oqM23LlqUyMJiLmXhFccoYndofsReoRzCUMYLRz6TZ7Xb45psnMIFWlgvbzEs600FSerXJUHV6n5zyuIVm27q6uuDmzVJoa3sMe/a8DG+//RbLgrOxos/nndSDNI1FuPK86s/GFahZrVaoqKgEk+khDAwMAKZJ+PLLryj/z+p7XCeyCE20FIREF2l/ptbf348gbkNtbS2MjIywe0NDw1BeXgF1dQ9YEpmpRZj4416uadO4Fg0k9F4vN6VPMyAaNzg4CJ99Vs6KF4GQl0DseU9PD5SUXGUFjtKn1nTuB+KTExAFPK2tpo0RaZJraY0RGmu19kFlZSVzIQJBAAInga4tFgtcvnyFFdgdO3YwUNpcy6+LMrGClmCfoUVoTG9vL1sRfP11DTgcDsUSgRbh3+vs7IRPPrnIVgxZWVmsPkw3STx70gSoTa4+3EscULh9FT0nxcidaKU8NjamgKPFJu+D71FGu3SpGBOBDV57bR+rVaFSM9dDFL0BVtEAhIKRhF6gPpRF6OOPHrVBWVkZNDaa2FJfTenge/y6u9sC165dw7gagDfe2A9paWkhgHgVnbhosogoesDjERVQU5K23Mjfr1wpgdbWVsANzxQ3UnOt4GtKDpTNOjo64NSpD9kSPfTkkl4epcZptsj3QNRbO+5ZTCYTAxFK6emAUE8x9eBBfVjXIhBer4HpQ0AEQQMQskYgkFCutXfvK0zmuxEQ0slgEBUgGmIEWFBxAGov8dbU1MQqtxCBTQqtsvPy3mW9ukVE5lYciIa1lsRSHAdCL4dqlGop8wSOCTiVmXKt1ge+l5v7pioQ7hn+zKURCEc/OUakkLMYnEXmAiRcjHBraA52avyF6Vwr8OORABIuRmbsWn53cisVlLIFW6SpWsSgjA38U7YalWtI4LVaH/xeqMrOQQRPXFjX8seIW6kpgX8Y2A4fPgwHDx6cNLN0TVWalh9Op1PTM/ofOm4KriHfW8+vE4nH42IFUqNrUVD5lBgJBSQ+Pp5JJJ8FHZMqmdRfEmjHSu6uYa21fPlyxZR0HGy3D8Gnn16EDz7IDwlorvt3tZjhzWazYeUvZwmHvMPpnGCWoxMVVSDyITE7Ldm06cfQ0NAAyclJzKynT38E584VRaRezLTRjpK2BLTcJ3d3uZzK0SlOrMRTKgfixVQq4kZHT0jz8/PZ7s7pdLHND8UN7fpmu2OcbeMeQD1lKlpZp6enY+HMY/dx+a+TuRKJAxHRhEO4p+hYv379lkOHDkFzczOcPXvWbzYEE7xJitYpI0/zBGTlypVQVFQEa9asYfdxsWrCboLxJPJgOtrYcObMmRMY3CI/wr9w4W9SRsZPpYSEBInMGAtBD5EwJqScnBypsbFRoReePn3ajDr/XKYWdJxWoMih3LeusLDwYEFBwQn8CIsmSpNms1lxrWjGCTsgRG/YuHEjxu0m5f6zZ8/+s3v37uNWq7Wdjs4olDgQQY4XOlL8IYLJxRnIW7t2bTosoIax6qmvr6/C2lWIYfAtJTWaa0mm1XjW4mCSUH5AmVi+1i8QDtEXwCEOy71bkpcdQmAAy2B0svJGWJisrlsWrxSgvBDtTDRfTa+yLFg0PHugRfRBIBYVz476Ku6lDwKx6Hh2vL/Es0c1LJZ4dv8J4hLPPi/rrYjw7CMuETalb4GtO2PDszswNhvuRoBnNxiM8N6R92FdWux49hWGCPDsNAspKUs8Owzb7fD0yRNwxppn180BRE93F1SWlYL58WPIyn4ZXv/1Wyz2ZmPFmPHs/X1WqPpHJbQ2PQTb4ADU3KlG+Qo8i4lnHxzoRxC3obGuFkZlnn14aBj+VVkBpvoY8ewCzQRo59nttkH45+1yqP33XXAE8ezW3h64dd3Ps2e+tIB59n5Mi9WfV8I9dCFHCJ79ux4L3Lzq59lf3LYD9NHi2QWNPHvfd73weXkZ1N2rwQVmGJ4dZ7Tr2064fukiuHHFsHVnFiREg2cXNPDs3ajYF+hO9bX3YWJ8ep4dvw49li64UVKMicAGv3x1H6TMN88uTMOzt7e1wRcVZdDy0ARjYzPj2XstFii7cQ3jagD25uyHtevnkWcXvKGpN/L30usl8PhRK1pi3L/k5rPKr9XuBVwPYXKgbPa/zg448YcPIXm+eHZdmFT5X7MZ64SJgZgLzz7qcEBTwzzz7LowrpX9q1eYROGEce48e1wYMvRRcxOr3JE4DzYYjZD7zrusV7fIHHn2uDA8e939GrhxpRjECLG6+/a/qQokIjx73DQ8Oy2pRe8i4Nn1Gnh2cTHw7F7MFhCGZydeb3Hw7F4PCCHY3LzfHYbcA1N5dqrS7hA8u9ozzrMnzyfP7g3Ds9PphjEEXz7bZ0HHpEomnTPPPmQfgr8XX4T3jsSGZx+yR4hnF3CB99ePP4KSC0s8+6zbEs++xLPPo0WWeHZY4tmjQF+F4dn/L8AAfIKKOhsdKlwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdHYWxsZXJ5JzsNCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RoZSBlYXNpZXN0IHdheSB0byBtYW5hZ2UgYW5kIGRpc3BsYXkgcGhvdG8gZ2FsbGVyaWVzJzsNCiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0FuIGVhc3kgdG8gdXNlIGdhbGxlcnkgd2hpY2ggYXV0b21hdGljYWxseSBzaG93cyB0aGUgaW1hZ2VzIG9mIGEgc3BlY2lmaWVkIGRpcmVjdG9yeS4nOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIHdhcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIHZlcnNpb24gJXMgd2FzIGluc3RhbGxlZC4nOw0KJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIGlzIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIEdhbGxlcnkgIG1vZHVsZSB3YXMgdW5pbnN0YWxsZWQnOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIHdhcyB1bmluc3RhbGxlZCc7DQokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgR2FsbGVyeT8gVGhpcyBkb2VzIG5vdCBlZmZlY3QgdGhlIGltYWdlcywgYnV0IGFsbCBjb21tZW50LWRhdGEgYW5kIHRodW1ibmFpbHMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkgR2FsbGVyeSB3aWxsIGJlIGxvc3QuJzsNCg0KDQokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsNCiRsYW5nWydhY3Rpb25zJ10gPSAnQWN0aW9ucyc7DQokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsNCiRsYW5nWydhcHBseSddID0gJ0FwcGx5JzsNCiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZT8nOw0KJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7DQokbGFuZ1snY29weSddID0gJ0NvcHknOw0KJGxhbmdbJ2RlZmF1bHQnXSA9ICdEZWZhdWx0JzsNCiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOw0KJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsNCiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7DQokbGFuZ1snc2V0ZmFsc2UnXT0gJ1NldCBGYWxzZSc7DQokbGFuZ1snc2V0dHJ1ZSddPSAnU2V0IFRydWUnOw0KJGxhbmdbJ3N1Ym1pdCddID0gJ1NhdmUnOw0KDQoNCiRsYW5nWydnYWxsZXJpZXMnXSA9ICdHYWxsZXJpZXMnOw0KJGxhbmdbJ2dhbGxlcnlwYXRoJ10gPSAnR2FsbGVyeSc7DQokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdFZGl0IGdhbGxlcnknOw0KJGxhbmdbJ2FkZGdhbGxlcnknXSA9ICdBZGQgZ2FsbGVyeSc7DQokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnTm8gZ2FsbGVyaWVzIGF2YWlsYWJsZSc7DQokbGFuZ1snaXRlbSddID0gJ0ltYWdlJzsNCiRsYW5nWyd0aXRsZSddID0gJ1RpdGxlJzsNCiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7DQokbGFuZ1snbm9maWxlc3RleHQnXSA9ICdObyBpbWFnZXMgYXZhaWxhYmxlJzsNCiRsYW5nWydnYWxsZXJ5dGl0bGUnXSA9ICdHYWxsZXJ5IFRpdGxlJzsNCiRsYW5nWydjb21tZW50J10gPSAnQ29tbWVudCc7DQokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7DQokbGFuZ1snaGlkZXBhcmVudGxpbmsnXSA9ICdIaWRlIGxpbmsgdG8gcGFyZW50IGdhbGxlcnknOw0KJGxhbmdbJ3VzZWRlZmF1bHQnXSA9ICd1c2UgZGVmYXVsdCc7DQovLyRsYW5nWydjcmVhdGV0aHVtYnMnXSA9ICcoUmUpQ3JlYXRlIFRodW1icyc7DQovLyRsYW5nWyd0aHVtYnNjcmVhdGVkJ10gPSAnVGh1bWJuYWlscyBjcmVhdGVkJzsNCiRsYW5nWydzb3J0YnlzZXR0aW5ncyddID0gJ1NvcnQgYnkgdGVtcGxhdGUgc2V0dGluZ3MnOw0KJGxhbmdbJ2dhbGxlcnl1cGRhdGVkJ10gPSAnVGhlIGdhbGxlcnkgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLic7DQokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ1VwZGF0aW5nIHRoZSBnYWxsZXJ5IGZhaWxlZC4nOw0KDQoNCiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOw0KJGxhbmdbJ3RpdGxlX2F2YWlsYWJsZV90ZW1wbGF0ZXMnXSA9ICdBdmFpbGFibGUgVGVtcGxhdGVzJzsNCiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnRGVmYXVsdCc7DQokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnQ3JlYXRlIGEgbmV3IHRlbXBsYXRlJzsNCiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIEVkaXRvcic7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOw0KJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdUaHVtYm5haWwgU2l6ZSAoRnJvbnRlbmQpJzsNCiRsYW5nWydsZWF2ZWVtcHR5J10gPSAnKGxlYXZlIHRoaXMgZW1wdHkgdG8gdXNlIHRoZSBkZWZhdWx0IHRodW1ibmFpbHMgZnJvbSBJbWFnZU1hbmFnZXIpJzsNCiRsYW5nWyd3aWR0aCddID0gJ3dpZHRoJzsNCiRsYW5nWydoZWlnaHQnXSA9ICdoZWlnaHQnOw0KJGxhbmdbJ3Jlc2l6ZW1ldGhvZCddID0gJ3Jlc2l6ZSBtZXRob2QnOw0KJGxhbmdbJ2Nyb3AnXSA9ICdjcm9wJzsNCiRsYW5nWydzY2FsZSddID0gJ3NjYWxlJzsNCiRsYW5nWyd6b29tY3JvcCddID0gJ3pvb20gJmFtcDsgY3JvcCc7DQokbGFuZ1snem9vbXNjYWxlJ10gPSAnem9vbSAmYW1wOyBzY2FsZSc7DQokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UnOw0KJGxhbmdbJ3Nob3dhbGxpbWFnZXMnXSA9ICdMZWF2aW5nIGVtcHR5IHdpbGwgc2hvdyBhbGwgaW1hZ2VzIHdpdGhvdXQgcGFnZWxpbmtzJzsNCiRsYW5nWydzb3J0aW5nb3B0aW9ucyddID0gJ1NvcnRpbmcgT3B0aW9ucyc7DQokbGFuZ1snc3BlY2lmeXNvcnRmaWVsZHMnXSA9ICdTcGVjaWZ5IHRoZSBmaWVsZChzKSB0byBzb3J0IG9uJzsNCiRsYW5nWydhc2NlbmRpbmcnXSA9ICdhc2NlbmRpbmcnOw0KJGxhbmdbJ2Rlc2NlbmRpbmcnXSA9ICdkZXNjZW5kaW5nJzsNCiRsYW5nWydhZGRmaWVsZCddID0gJ0FkZCBmaWVsZCc7DQokbGFuZ1snZGVsZXRlZmllbGQnXSA9ICdEZWxldGUgbGFzdCByb3cnOw0KJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIFNvdXJjZSc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlanMnXSA9ICdUZW1wbGF0ZSBKYXZhU2NyaXB0JzsNCiRsYW5nWydwcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdUZW1wbGF0ZSBDU1Mtc3R5bGVzaGVldCc7DQokbGFuZ1sncmVzZXRvcmlnaW5hbCddID0gJ1Jlc2V0IHRvIG9yaWdpbmFsJzsNCiRsYW5nWydyZXNldG9yaWdpbmFsd2FybmluZyddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGUgdGVtcGxhdGUgY29kZSB0byBpdHMgb3JpZ2luYWwgY29kZT8nOw0KJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCiRsYW5nWyd0ZW1wbGF0ZWFkZGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQuJzsNCiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdUaGUgdGVtcGxhdGUgbmFtZSBhbHJlYWR5IGV4aXN0cy4nOw0KJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1RlbXBsYXRlIGRlbGV0ZWQnOw0KJGxhbmdbJ2F2YWlsYWJsZXZhcmlhYmxlcyddID0gJ0F2YWlsYWJsZSBUZW1wbGF0ZSBTbWFydHkgVmFyaWFibGVzJzsNCiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXNsaXN0J10gPSAnVGhlc2UgYXJlIHRoZSB2YXJpYWJsZXMgeW91IGNhbiB1c2UgdG8gY3VzdG9taXplIHlvdXIgdGVtcGxhdGU6PGJyIC8+PGJyIC8+DQo8Y29kZT57JG1vZHVsZV9tZXNzYWdlfTwvY29kZT4gLSBlcnJvciBtZXNzYWdlLCBpcyBvbmx5IHNldCBpZiB0aGVyZVwncyBhIG1lc3NhZ2U8YnIgLz4NCjxjb2RlPnskZ2FsbGVyeXRpdGxlfTwvY29kZT4gLSB0aXRsZSBvZiB0aGUgZ2FsbGVyeS4gSWYgdGhlcmUgaXMgbm8gdGl0bGUsIHRoaXMgd2lsbCBzaG93IHRoZSBkaXJlY3RvcnkgbmFtZTxiciAvPg0KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPg0KPGNvZGU+eyRwYXJlbnRsaW5rfTwvY29kZT4gLSBsaW5rIHRvIHRoZSBwYXJlbnQgZm9sZGVyPGJyIC8+DQo8Y29kZT57JGhpZGVwYXJlbnRsaW5rfTwvY29kZT4gLSB0cnVlL2ZhbHNlPGJyIC8+DQo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIHNob3dzIGUuZy4gIjYgaW1hZ2VzIiwgZGVwZW5kaW5nIG9uIGxhbmd1YWdlPGJyIC8+DQo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gbnVtYmVyIG9mIGl0ZW1zLCBpbWFnZXMgKyBmb2xkZXJzPGJyIC8+DQo8Y29kZT57JHBhZ2VzfTwvY29kZT4gLSBudW1iZXIgb2YgcGFnZXM8YnIgLz4NCjxjb2RlPnskcHJldnBhZ2V9PC9jb2RlPiAtIGxpbmsgdG8gcHJldmlvdXMgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPg0KPGNvZGU+eyRuZXh0cGFnZX08L2NvZGU+IC0gbGluayB0byBuZXh0IHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4NCjxjb2RlPnskcGFnZWxpbmtzfTwvY29kZT4gLSBsaW5rcyB0byBlYWNoIGV4aXN0aW5nIHBhZ2U8YnIgLz4NCjxjb2RlPnskaW1hZ2VzfTwvY29kZT4gLSBhcnJheSB3aXRoIGtleXM6PGJyIC8+DQogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIG9yaWdpbmFsIGltYWdlIChvciBzdWJnYWxsZXJ5KTxiciAvPg0KIC0gPGNvZGU+dGl0bGU8L2NvZGU+IC0gdGl0bGUgb2YgdGhlIGltYWdlLiBJZiB0aGVyZSBpcyBubyB0aXRsZSwgdGhpcyB3aWxsIHNob3cgdGhlIGZpbGVuYW1lPGJyIC8+DQogLSA8Y29kZT5jb21tZW50PC9jb2RlPiAtIGNvbW1lbnQgdG8gdGhlIGltYWdlPGJyIC8+DQogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBjcmVhdGlvbiBkYXRlL3RpbWU8YnIgLz4NCiAtIDxjb2RlPnRodW1iPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIHRodW1ibmFpbC4gSW4gY2FzZSBvZiBhIHN1YmdhbGxlcnksIHRoaXMgd2lsIHJldmVydCB0byB0aGUgaW1hZ2Ugd2hpY2ggaXMgc2V0IGFzIGRlZmF1bHQgaW4gdGhhdCBzdWJnYWxsZXJ5LiBJZiBubyBpbWFnZSBpcyBzZXQgYXMgZGVmYXVsdCwgYSBzdGFuZGFyZCBmb2xkZXItaWNvbiB3aWxsIGJlIHVzZWQuPGJyIC8+DQogLSA8Y29kZT5maWxlaWQ8L2NvZGU+IC0gdW5pcXVlIGlkIGZvciB0aGUgaW1hZ2Ugb3Igc3ViZ2FsbGVyeTxiciAvPg0KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gdHJ1ZSBpZiBpdFwncyBhIHN1YmdhbGxlcnk8YnIgLz4NCic7DQoNCg0KJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25zJzsNCiRsYW5nWydhbGxvd2VkX2V4dGVuc2lvbnMnXSA9ICdBbGxvd2VkIEV4dGVuc2lvbnMnOw0KJGxhbmdbJ3VzZV9jb21tZW50X3d5c2l3eWcnXSA9ICdVc2UgYSBXWVNJV1lHIGVkaXRvciBvbiB0aGUgR2FsbGVyeSBjb21tZW50IGZpZWxkJzsNCiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ1RoZSBvcHRpb25zIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCg0KDQokbGFuZ1snaW1hZ2UnXSA9ICdpbWFnZSc7DQokbGFuZ1snaW1hZ2VzJ10gPSAnaW1hZ2VzJzsNCiRsYW5nWydwcmV2cGFnZSddID0gJ3ByZXZpb3VzJzsNCiRsYW5nWyduZXh0cGFnZSddID0gJ25leHQnOw0KJGxhbmdbJ2RlZmF1bHRnYWxsZXJ5Y29tbWVudCddID0gJ1RoYW5rIHlvdSBmb3IgaW5zdGFsbGluZyB0aGUgR2FsbGVyeSBtb2R1bGUuIElmIHlvdSBoYXZlIHVwbG9hZGVkIHNvbWUgaW1hZ2VzIHRvIHRoZSBcJ3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnlcJyBmb2xkZXIsIHlvdSB3aWxsIHNlZSB0aGVtIGJlbG93LiBZb3UgY2FuIGVkaXQgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHRodW1ibmFpbCBzaXplcyBpbiB0aGUgYWRtaW4gc2VjdGlvbi4gQ2hlY2sgb3V0IGFsbCB0aGUgb3RoZXIgZmVhdHVyZXMgdGhpcyBtb2R1bGUgb2ZmZXJzIGluIHRoZSBNb2R1bGUgSGVscC4nOw0KDQoNCiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRlciB0byBzcGVjaWZ5IGEgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5Lyc7DQokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1VzZSBhIHNlcGFyYXRlIGRhdGFiYXNlIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHRoZSBwaG90byBnYWxsZXJ5LiBUaGlzIHRlbXBsYXRlIG11c3QgZXhpc3QgYW5kIGJlIHZpc2libGUgaW4gdGhlIHRlbXBsYXRlIHRhYiBvZiB0aGUgR2FsbGVyeSBhZG1pbiwgdGhvdWdoIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIGRlZmF1bHQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlIHRlbXBsYXRlIHdoaWNoIGlzIGFzc2lnbmVkIHRvIHRoZSBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkLCBlbHNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLic7DQokbGFuZ1snaGVscF9udW1iZXInXSA9ICdNYXhpbXVtIG51bWJlciBvZiBpbWFnZXRodW1icyB0byBkaXNwbGF5IChwZXIgcGFnZSkuIExlYXZpbmcgZW1wdHkgd2lsbCBzaG93IGFsbCBpbWFnZXMuJzsNCiRsYW5nWydoZWxwX3N0YXJ0J10gPSAnU3RhcnQgYXQgdGhlIG50aCBpbWFnZS4gTGVhdmluZyBlbXB0eSB3aWxsIHN0YXJ0IGF0IHRoZSBmaXJzdCBpbWFnZS4nOw0KJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+XCdhY3RpdmVcJyAtIHRvIGRpc3BsYXkgdGhlIGltYWdlcyBtYXJrZWQgYXMgYWN0aXZlIChkZWZhdWx0KTwvbGk+DQo8bGk+XCdpbmFjdGl2ZVwnIC0gdG8gZGlzcGxheSBvbmx5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGluYWN0aXZlIDwvbGk+DQo8bGk+XCdhbGxcJyAtIHRvIGRpc3BsYXkgYWxsIGltYWdlczwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydoZWxwX2NhdGVnb3J5J10gPSAnVG8gZGlzcGxheSBvbmx5IGltYWdlcy9nYWxsZXJpZXMgYXNzaWduZWQgdG8gdGhlIHNwZWNpZmllZCBjYXRlZ29yaWVzLiBVc2UgKiBhZnRlciB0aGUgbmFtZSB0byBzaG93IGNoaWxkcmVuLiAgTXVsdGlwbGUgY2F0ZWdvcmllcyBjYW4gYmUgdXNlZCBpZiBzZXBhcmF0ZWQgd2l0aCBhIGNvbW1hLiBMZWF2aW5nIGVtcHR5LCB3aWxsIHNob3cgYWxsIGNhdGVnb3JpZXMuJzsNCiRsYW5nWydoZWxwX2FjdGlvbiddID0gJ092ZXJyaWRlIHRoZSBkZWZhdWx0IGFjdGlvbi4gVXNlIGl0IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGFib3ZlIHBhcmFtZXRlcnMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+XCdzaG93cmFuZG9tXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSBcJy8qXCcgYWZ0ZXIgdGhlIGRpcmVjdG9yeW5hbWUgaW4gdGhlIGRpciBwYXJhbWV0ZXIgdG8gaW5jbHVkZSBpbWFnZXMgZnJvbSBzdWJkaXJlY3RvcmllczwvbGk+DQo8bGk+XCdzaG93bGF0ZXN0XCcgLSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgZGlyIHBhcmFtZXRlciBjYW4gYmUgc2V0LCBvciB0aGUgZGVmYXVsdCBHYWxsZXJ5LXJvb3Qgd2lsbCBiZSB1c2VkLiBTdWJkaXJlY3RvcmllcyBhcmUgYXV0b21hdGljYWxseSBpbmNsdWRlZDwvbGk+DQo8bGk+XCdzaG93bGF0ZXN0ZGlyXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBkaXJlY3RvcnkgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcyk8L2xpPg0KPC91bD4NCk5vdGUgdGhhdCBpbWFnZXMgYXJlIG9ubHkgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSB3aGVuIHRoZSBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIGFkbWluLg0KJzsNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMS4yICA1IERlY2VtYmVyIDIwMDkuIFVwZGF0ZSBGYW5jeWJveCBzeXN0ZW0gdG8gdmVyc2lvbiAxLjIuNiwgRml4IGZvciBCdWdyZXBvcnQgIzQ0MjI6IEVycm9yIHdoZW4gc29ydGluZ29wdGlvbiBpcyBlbXB0eSwgQnVpbHQgaW4gY2hlY2sgZm9yIHRlbXBsYXRlcy9jc3MgZGlyZWN0b3J5IChCUiAjNDMwNSkuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4xLiAxMiBOb3ZlbWJlciAyMDA5LiBGaXggZm9yIEJ1Z3JlcG9ydCAjNDI5NDogVGh1bWJmb2xkZXIgbm90IGNyZWF0ZWQgd2hlbiB1cGdyYWRpbmcuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gOCBOb3ZlbWJlciAyMDA5LiBBZGRlZCBzb3J0aW5nIGFuZCBkcmFnJmRyb3AgZmVhdHVyZSAoRlIgIzM5MDcgIzQyMTApLCBNb3ZlZCB0aHVtYm5haWxzZXR0aW5ncyB0byB0ZW1wbGF0ZXN0YWIsIE1ha2UgZ2FsbGVyaWVzIHNlYXJjaGFibGUgKEZSICMzOTU2KSwgQ3JlYXRlIGJhY2tlbmQgdGh1bWJzIGlmIHRoZXkgZG9uXCd0IGV4aXN0IGluIElNIChGUiAjNDEwMSksIEZpeCBmb3IgQlIgIzQwMjcsIEFkZGVkIGZpbGVpZCB0byBpbWFnZS1vYmplY3QgKEZSICM0MjU5KTwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gOCBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzQwMDFdLCBJbXByb3ZlZCBzeW5jaHJvbml6aW5nIHRoZSBkYXRhYmFzZSB0byBmaWxlcywgYW5kIG90aGVyIG1pbm9yIGltcHJvdmVtZW50cy48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIDUgU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyMzOTgzXSByZWdhcmRpbmcgc3BhY2VzIGluIGRpcmVjdG9yeSBuYW1lcywgQWRkZWQgdGVtcGxhdGVzIEZhbmN5Ym94IGFuZCBMeXRlYm94X3NsaWRlc2hvdyBhcyBpbiBGZWF0dXJlIHJlcXVlc3RzIFsjMzk0NF0gYW5kIFsjMzk2N108L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIDIzIEF1Z3VzdCAyMDA5LiBBcHBseSB0aHVtYm5haWwtc2V0dGluZ3Mgb24gXCdBbGJ1bS1jb3ZlcnNcJyBbIzM5MjRdLCBCdWdmaXggZm9yIFsjMzkyN10sIEFkZGVkIG1pc3NpbmcgL2RpdiB0byB0aGlja2JveC10ZW1wbGF0ZSwgZml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIHRodW1ibmFpbHMgd2hlbiBubyB0aHVtYnMgYXZhaWxhYmxlIGluIEltYWdlTWFuYWdlciwgaW1wcm92ZWQgdGhlIG5hbWluZyBvZiB0aHVtYnMsIEJ1Z2ZpeCBmb3IgWyMzOTMxXSwgUHJldmVudCBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGdhbGxlcmllcyB0aGF0IGFyZSBzZXQgYXMgaW5hY3RpdmUuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4gMTcgQXVndXN0IDIwMDkuIFBhZ2luYXRpb24gcGFyYW1ldGVycyBhZGRlZCwgU3RhbmRhcmQgdGVtcGxhdGVzIGNoYW5nZWQgYWNjb3JkaW5nbHksIEV4dGVuZGVkIHRoZSBtb2R1bGUtaGVscCwgQWRkZWQgZnVuY3Rpb25zIHRvIHNob3cgcmFuZG9tIG9yIGxhdGVzdCBpbWFnZXMsIFN1cHBvcnQgb2YgcHJldHR5LXVybHMsIFZhcmlvdXMgaW1wcm92ZW1lbnRzPC9saT4NCjxsaT5WZXJzaW9uIDAuNi4gOSBBdWd1c3QgMjAwOS4gSW5pdGlhbCBCZXRhIFJlbGVhc2UuPC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPkZpcnN0LCBpbnNlcnQgdGhlIG1vZHVsZSB3aXRoIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPg0KPHA+VGhhdFwncyBpdCE8L3A+DQo8cD5JZiB5b3Ugd2FudCBtb3JlIHBob3RvIGdhbGxlcmllcywgc2ltcGx5IGNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgdXBsb2FkIHlvdXIgcGhvdG9zIGFzIGRlc2NyaWJlZC4gQnkgYWRkaW5nIHBhcmFtZXRlcnMgdG8gdGhlIDxjb2RlPntHYWxsZXJ5fTwvY29kZT4gdGFnLCB5b3UgY2FuIGVhc2lseSBtYW5pcHVsYXRlIHdoaWNoIHN1YmdhbGxlcnkgd2lsbCBiZSBzaG93biBpbiB3aGljaCB0ZW1wbGF0ZSwgZS5nLiA8Y29kZT57R2FsbGVyeSBkaXI9ImhvbGlkYXlzL05ldGhlcmxhbmRzMjAwOSIgdGVtcGxhdGU9IkxpZ2h0Ym94In08L2NvZGU+PC9wPg0KPHA+QnkgZGVmYXVsdCB0aGUgdGh1bWJuYWlscyBmcm9tIHRoZSBJbWFnZSBNYW5hZ2VyIGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHBob3RvIGdhbGxlcmllcy48L3A+DQo8aDM+QWR2YW5jZWQgT3B0aW9ucywgYnV0IHN0aWxsIGVhc3kgdG8gdXNlPC9oMz4NCjxwPkluIHRoZSBhZG1pbiBzZWN0aW9uIHlvdSBoYXZlIGxvdHMgb2Ygb3RoZXIgb3B0aW9uczo8L3A+DQo8dWw+DQo8bGk+U2V0IGEgcGhvdG8gYXMgdGhlIGRlZmF1bHQgZm9yIGEgZ2FsbGVyeSwgc28gaXQgd2lsbCBzaG93IGluIHRoZSBwYXJlbnQgZ2FsbGVyeSBhcyBhIFwnY292ZXJcJyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPg0KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gZ2FsbGVyaWVzLjwvbGk+DQo8bGk+U2V0IGEgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZWFjaCBnYWxsZXJ5LjwvbGk+DQo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPg0KPGxpPlNwZWNpZnkgZm9yIGVhY2ggdGVtcGxhdGUgaW4gd2hpY2ggb3JkZXIgdGhlIHBob3RvcyBoYXZlIHRvIGJlIHNvcnRlZC48L2xpPg0KPGxpPk92ZXJydWxlIHRoZSBzb3J0aW5nIG1hbnVhbGx5IGJ5IGRyYWdnaW5nJmRyb3BwaW5nIHRoZSBwaG90b3MuDQo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBwaG90b3MuPC9saT4NCjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPg0KPGxpPkVkaXQvY29weSB0ZW1wbGF0ZXMgb3IgY3JlYXRlIG5ldyBvbmVzLiBDaGVjayB0aGUgaW5mby1pY29uIGJlbmVhdGggdGhlIHRlbXBsYXRlLWNvZGUgZm9yIHRoZSBhdmFpbGFibGUgdmFyaWFibGVzLjwvbGk+DQo8L3VsPg0KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgXCdNb2RpZnkgVGVtcGxhdGVzXCcgcGVybWlzc2lvbi4gVG8gZWRpdCB0aGUgZ2xvYmFsIEdhbGxlcnkgb3B0aW9ucywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSBcJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzXCcgcGVybWlzc2lvbi48L3A+DQo8cD5BbGwgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHNldHRpbmdzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGF0YWJhc2Ugd2lsbCBzeW5jaHJvbml6ZSB3aXRoIHRoZSBmaWxlZGlyZWN0b3J5IGVhY2ggdGltZSB0aGUgYWNjb3JkaW5nIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgR2FsbGVyeS1hZG1pbi4gQSBsaXR0bGUgd2FybmluZzogd2hlbiB5b3UgbW92ZSBhbiBpbWFnZSBvciBzdWJkaXJlY3RvcnkgdG8gYW5vdGhlciBkaXJlY3RvcnksIHlvdSB3aWxsIGxvb3NlIGl0cyB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIHNldHRpbmdzLjwvcD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgRmVhdHVyZSBSZXF1ZXN0IG9yIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlDQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvIj5HYWxsZXJ5IFBhZ2U8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgSm9zIC08YSBocmVmPSJtYWlsdG86am9zdmRAbGl2ZS5ubCI+am9zdmRAbGl2ZS5ubDwvYT4tLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGVyaWUnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdEaWUgZWluZmFjaHN0ZSBBcnQsIGVpbmUgQmlsZGVyZ2FsZXJpZSB6dSB2ZXJ3YWx0ZW4gdW5kIGRhcnp1c3RlbGxlbi4nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdFaW5lIGVpbmZhY2hlIEJpbGRlcmdhbGVyaWUsIGRpZSBhdXRvbWF0aXNjaCBkaWUgQmlsZGVyIGVpbmVzIGFuZ2VnZWJlbmVuIFZlcnplaWNobmlzc2VzIGRhcnN0ZWxsdC4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEYXMgR2FsZXJpZS1Nb2R1bCB3dXJkZSBlcmZvbGdyZWljaCBpbnN0YWxsaWVydC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnRGllIFZlcnNpb24gJXMgZGVzIEdhbGVyaWUtTW9kdWxzIHd1cmRlIGluc3RhbGxpZXJ0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnRGFzIEdhbGVyaWUtTW9kdWwgd3VyZGUgYXVmIGRpZSBWZXJzaW9uICVzIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0RhcyBHYWxlcmllLU1vZHVsIHd1cmRlIGRlaW5zdGFsbGllcnQnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdEYXMgR2FsZXJpZS1Nb2R1bCB3dXJkZSBkZWluc3RhbGxpZXJ0JzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdTaW5kIHNpZSBzaWNoZXIsIGRhc3Mgc2llIGRhcyBHYWxlcmllLU1vZHVsIGRlaW5zdGFsbGllcmVuIHdvbGxlbj8gRGFzIGJldHJpZmZ0IG5pY2h0IGRpZSBCaWxkZXIgc2VsYnN0LCBhYmVyIGRpZSBLb21tZW50YXJlIHVuZCBWb3JzY2hhdWJpbGRlciwgZGllIGRhcyBNb2R1bCBlcnN0ZWxsdCBoYXQsIHdlcmRlbiBkYWR1cmNoIG1pdCBnZWwmb3VtbDtzY2h0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdadWdyaWZmIHZlcndlaWdlcnQuIEJpdHRlICZ1dW1sO2JlcnByJnV1bWw7ZmVuIHNpZSBkaWUgWnVncmlmZnNyZWNodGUuJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdBa3Rpb25lbic7CiRsYW5nWydhY3RpdmUnXSA9ICdha3Rpdic7CiRsYW5nWydhcHBseSddID0gJ0Fud2VuZGVuJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdXaXJrbGljaCBsJm91bWw7c2NoZW4/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FiYnJlY2hlbic7CiRsYW5nWydjb3B5J10gPSAna29waWVyZW4nOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ2wmb3VtbDtzY2hlbic7CiRsYW5nWydlZGl0J10gPSAnYmVhcmJlaXRlbic7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOwokbGFuZ1snc2V0ZmFsc2UnXSA9ICdkZWFrdGl2aWVyZW4nOwokbGFuZ1snc2V0dHJ1ZSddID0gJ2FrdGl2aWVyZW4nOwokbGFuZ1snc3VibWl0J10gPSAnU3BlaWNoZXJuJzsKJGxhbmdbJ2dhbGxlcmllcyddID0gJ0dhbGVyaWVuJzsKJGxhbmdbJ2dhbGxlcnlwYXRoJ10gPSAnR2FsZXJpZSc7CiRsYW5nWydlZGl0Z2FsbGVyeSddID0gJ0dhbGVyaWUgYmVhcmJlaXRlbic7CiRsYW5nWydhZGRnYWxsZXJ5J10gPSAnR2FsZXJpZSBoaW56dWYmdXVtbDtnZW4nOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAna2VpbmUgR2FsZXJpZW4gdmVyZiZ1dW1sO2diYXInOwokbGFuZ1snaXRlbSddID0gJ0JpbGQnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRlbCc7CiRsYW5nWydkYXRlJ10gPSAnRGF0dW0nOwokbGFuZ1snbm9maWxlc3RleHQnXSA9ICdrZWluZSBCaWxkZXIgdmVyZiZ1dW1sO2diYXInOwokbGFuZ1snZ2FsbGVyeXRpdGxlJ10gPSAnR2FsZXJpZXRpdGVsJzsKJGxhbmdbJ2NvbW1lbnQnXSA9ICdLb21tZW50YXInOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdWb3JsYWdlJzsKJGxhbmdbJ3VzZWRlZmF1bHQnXSA9ICdTdGFuZGFyZCB2ZXJ3ZW5kZW4nOwokbGFuZ1sndGh1bWJuYWlsc2l6ZSddID0gJ0dyJm91bWw7JnN6bGlnO2UgZGVzIFZvcnNjaGF1YmlsZGVzIChhdWYgQmVudXR6ZXJzZWl0ZSknOwokbGFuZ1snbGVhdmVlbXB0eSddID0gJyhmcmVpIGxhc3NlbiwgdW0gZGllIFN0YW5kYXJkLVZvcnNjaGF1YmlsZGVyIGRlciBCaWxkdmVyd2FsdHVuZyB6dSB2ZXJ3ZW5kZW4pJzsKJGxhbmdbJ3dpZHRoJ10gPSAnQnJlaXRlJzsKJGxhbmdbJ2hlaWdodCddID0gJ0gmb3VtbDtoZSc7CiRsYW5nWydyZXNpemVtZXRob2QnXSA9ICdTa2FsaWVydW5nc21ldGhvZGUnOwokbGFuZ1snY3JvcCddID0gJ2Jlc2NobmVpZGVuJzsKJGxhbmdbJ3NjYWxlJ10gPSAnc2thbGllcmVuJzsKJGxhbmdbJ3pvb21jcm9wJ10gPSAnem9vbWVuICZhbXA7IGJlc2NobmVpZGVuJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ3pvb21lbiAmYW1wOyBza2FsaWVyZW4nOwokbGFuZ1snY3JlYXRldGh1bWJzJ10gPSAnVm9yc2NoYXViaWxkZXIgKG5ldSkgZXJzdGVsbGVuJzsKJGxhbmdbJ3RodW1ic2NyZWF0ZWQnXSA9ICdWb3JzY2hhdWJpbGRlciB3dXJkZW4gZXJzdGVsbHQuJzsKJGxhbmdbJ2hpZGVwYXJlbnRsaW5rJ10gPSAnSGlkZSBsaW5rIHRvIHBhcmVudCBnYWxsZXJ5JzsKJGxhbmdbJ3NvcnRieXNldHRpbmdzJ10gPSAnU29ydCBieSB0ZW1wbGF0ZSBzZXR0aW5ncyc7CiRsYW5nWydnYWxsZXJ5dXBkYXRlZCddID0gJ0RpZSBHYWxlcmllIHd1cmRlIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ0FrdHVhbGlzaWVydW5nIGRlciBHYWxlcmllIGZlaGxnZXNjaGxhZ2VuLic7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdWb3JsYWdlbic7CiRsYW5nWyd0aXRsZV9hdmFpbGFibGVfdGVtcGxhdGVzJ10gPSAndmVyZiZ1dW1sO2diYXJlIFZvcmxhZ2VuJzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ05ldWUgVm9ybGFnZSBlcnN0ZWxsZW4nOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdWb3JsYWdlbi1FZGl0b3InOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1ZvcmxhZ2VubmFtZSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdWb3JsYWdlbnF1ZWxsZSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVqcyddID0gJ1ZvcmxhZ2VuLUphdmFTY3JpcHQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlY3NzJ10gPSAnVm9ybGFnZW4tU3R5bGVzaGVldCc7CiRsYW5nWydyZXNldG9yaWdpbmFsJ10gPSAnUmVzZXQgdG8gb3JpZ2luYWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHRlbXBsYXRlIGNvZGUgdG8gaXRzIG9yaWdpbmFsIGNvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ0RpZSBWb3JsYWdlIHd1cmRlIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ0RpZSBWb3JsYWdlIHd1cmRlIGVyZm9sZ3JlaWNoIGhpbnp1Z2VmJnV1bWw7Z3QuJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0RlciBWb3JsYWdlbm5hbWUgZXhpc3RpZXJ0IGJlcmVpdHMuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1ZvcmxhZ2UgZ2VsJm91bWw7c2NodC4nOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzJ10gPSAnVmVyZiZ1dW1sO2diYXJlIFNtYXJ0eS1WYXJpYWJsZW4nOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzbGlzdCddID0gJ1RoZXNlIGFyZSB0aGUgdmFyaWFibGVzIHlvdSBjYW4gdXNlIHRvIGN1c3RvbWl6ZSB5b3VyIHRlbXBsYXRlOjxiciAvPjxiciAvPgo8Y29kZT57JG1vZHVsZV9tZXNzYWdlfTwvY29kZT4gLSBlcnJvciBtZXNzYWdlLCBpcyBvbmx5IHNldCBpZiB0aGVyZVwncyBhIG1lc3NhZ2U8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5dGl0bGV9PC9jb2RlPiAtIHRpdGxlIG9mIHRoZSBnYWxsZXJ5LiBJZiB0aGVyZSBpcyBubyB0aXRsZSwgdGhpcyB3aWxsIHNob3cgdGhlIGRpcmVjdG9yeSBuYW1lPGJyIC8+Cjxjb2RlPnskZ2FsbGVyeWNvbW1lbnR9PC9jb2RlPiAtIGNvbW1lbnQgb2YgdGhlIGdhbGxlcnk8YnIgLz4KPGNvZGU+eyRwYXJlbnRsaW5rfTwvY29kZT4gLSBsaW5rIHRvIHRoZSBwYXJlbnQgZm9sZGVyPGJyIC8+Cjxjb2RlPnskaGlkZXBhcmVudGxpbmt9PC9jb2RlPiAtIHRydWUvZmFsc2U8YnIgLz4KPGNvZGU+eyRpbWFnZWNvdW50fTwvY29kZT4gLSBzaG93cyBlLmcuICI2IGltYWdlcyIsIGRlcGVuZGluZyBvbiBsYW5ndWFnZTxiciAvPgo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gbnVtYmVyIG9mIGl0ZW1zLCBpbWFnZXMgKyBmb2xkZXJzPGJyIC8+Cjxjb2RlPnskcGFnZXN9PC9jb2RlPiAtIG51bWJlciBvZiBwYWdlczxiciAvPgo8Y29kZT57JHByZXZwYWdlfTwvY29kZT4gLSBsaW5rIHRvIHByZXZpb3VzIHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRuZXh0cGFnZX08L2NvZGU+IC0gbGluayB0byBuZXh0IHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRwYWdlbGlua3N9PC9jb2RlPiAtIGxpbmtzIHRvIGVhY2ggZXhpc3RpbmcgcGFnZTxiciAvPgo8Y29kZT57JGltYWdlc308L2NvZGU+IC0gYXJyYXkgd2l0aCBrZXlzOjxiciAvPgogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIG9yaWdpbmFsIGltYWdlIChvciBzdWJnYWxsZXJ5KTxiciAvPgogLSA8Y29kZT50aXRsZTwvY29kZT4gLSB0aXRsZSBvZiB0aGUgaW1hZ2UuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZmlsZW5hbWU8YnIgLz4KIC0gPGNvZGU+Y29tbWVudDwvY29kZT4gLSBjb21tZW50IHRvIHRoZSBpbWFnZTxiciAvPgogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBjcmVhdGlvbiBkYXRlL3RpbWU8YnIgLz4KIC0gPGNvZGU+dGh1bWI8L2NvZGU+IC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgdGh1bWJuYWlsLiBJbiBjYXNlIG9mIGEgc3ViZ2FsbGVyeSwgdGhpcyB3aWwgcmV2ZXJ0IHRvIHRoZSBpbWFnZSB3aGljaCBpcyBzZXQgYXMgZGVmYXVsdCBpbiB0aGF0IHN1YmdhbGxlcnkuIElmIG5vIGltYWdlIGlzIHNldCBhcyBkZWZhdWx0LCBhIHN0YW5kYXJkIGZvbGRlci1pY29uIHdpbGwgYmUgdXNlZC48YnIgLz4KIC0gPGNvZGU+ZmlsZWlkPC9jb2RlPiAtIHVuaXF1ZSBpZCBmb3IgdGhlIGltYWdlIG9yIHN1YmdhbGxlcnk8YnIgLz4KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gdHJ1ZSBpZiBpdFwncyBhIHN1YmdhbGxlcnk8YnIgLz4KJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25lbic7CiRsYW5nWydhbGxvd2VkX2V4dGVuc2lvbnMnXSA9ICdlcmxhdWJ0ZSBEYXRlaWVuZHVuZ2VuJzsKJGxhbmdbJ3VzZV9jb21tZW50X3d5c2l3eWcnXSA9ICdFaW5lbiBncmFmaXNjaGVuIEVkaXRvciBmJnV1bWw7ciBkYXMgS29tbWVudGFyZmVsZCB2ZXJ3ZW5kZW4nOwokbGFuZ1snb3B0aW9uc3VwZGF0ZWQnXSA9ICdEaWUgT3B0aW9uZW4gd3VyZGVuIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snaW1hZ2UnXSA9ICdCaWxkJzsKJGxhbmdbJ2ltYWdlcyddID0gJ0JpbGRlcic7CiRsYW5nWydwcmV2cGFnZSddID0gJyZhbXA7bHQ7IHp1ciZ1dW1sO2NrJzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnd2VpdGVyICZhbXA7Z3Q7JzsKJGxhbmdbJ2RlZmF1bHRnYWxsZXJ5Y29tbWVudCddID0gJ1dhcyBzaWUgaGllciBzZWhlbiwgaXN0IGRhcyBHYWxlcmllLU1vZHVsLiBXZW5uIHNpZSBlaW4gcGFhciBCaWxkZXIgaW4gZGFzIFZlcnplaWNobmlzICZiZHF1bzt1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5JmxkcXVvOyBrb3BpZXJ0IGhhYmVuLCBkYW5uIHNlaGVuIHNpZSBzaWUgamV0enQgdW50ZW4uIFNpZSBrJm91bWw7bm5lbiBUaXRlbCwgQmVzY2hyZWlidW5nZW4gdW5kIFZvcnNjaGF1YmlsZGVyIGltIEFkbWluaXN0cmF0aW9uc2JlcmVpY2ggYmVhcmJlaXRlbi4gQWxsZSB3ZWl0ZXJlbiBGdW5rdGlvbmVuIGRpZXNlcyBNb2R1bHMgc2luZCBpbiBkZXIgTW9kdWxoaWxmZSBiZXNjaHJpZWJlbi4nOwokbGFuZ1snaGVscF9kaXInXSA9ICdQYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1VzZSBhIHNlcGFyYXRlIGRhdGFiYXNlIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHRoZSBwaG90byBnYWxsZXJ5LiBUaGlzIHRlbXBsYXRlIG11c3QgZXhpc3QgYW5kIGJlIHZpc2libGUgaW4gdGhlIHRlbXBsYXRlIHRhYiBvZiB0aGUgR2FsbGVyeSBhZG1pbiwgdGhvdWdoIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIGRlZmF1bHQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlIHRlbXBsYXRlIHdoaWNoIGlzIGFzc2lnbmVkIHRvIHRoZSBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkLCBlbHNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLic7CiRsYW5nWydoZWxwX251bWJlciddID0gJ01heGltdW0gbnVtYmVyIG9mIGltYWdldGh1bWJzIHRvIGRpc3BsYXkgKHBlciBwYWdlKS4gTGVhdmluZyBlbXB0eSB3aWxsIHNob3cgYWxsIGltYWdlcy4nOwokbGFuZ1snaGVscF9zdGFydCddID0gJ1N0YXJ0IGF0IHRoZSBudGggaW1hZ2UuIExlYXZpbmcgZW1wdHkgd2lsbCBzdGFydCBhdCB0aGUgZmlyc3QgaW1hZ2UuJzsKJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cjx1bD4KPGxpPlwnYWN0aXZlXCcgLSB0byBkaXNwbGF5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGFjdGl2ZSAoZGVmYXVsdCk8L2xpPgo8bGk+XCdpbmFjdGl2ZVwnIC0gdG8gZGlzcGxheSBvbmx5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGluYWN0aXZlIDwvbGk+CjxsaT5cJ2FsbFwnIC0gdG8gZGlzcGxheSBhbGwgaW1hZ2VzPC9saT4KPC91bD4KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdUbyBkaXNwbGF5IG9ubHkgaW1hZ2VzL2dhbGxlcmllcyBhc3NpZ25lZCB0byB0aGUgc3BlY2lmaWVkIGNhdGVnb3JpZXMuIFVzZSAqIGFmdGVyIHRoZSBuYW1lIHRvIHNob3cgY2hpbGRyZW4uICBNdWx0aXBsZSBjYXRlZ29yaWVzIGNhbiBiZSB1c2VkIGlmIHNlcGFyYXRlZCB3aXRoIGEgY29tbWEuIExlYXZpbmcgZW1wdHksIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4nOwokbGFuZ1snaGVscF9hY3Rpb24nXSA9ICdPdmVycmlkZSB0aGUgZGVmYXVsdCBhY3Rpb24uIFVzZSBpdCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBhYm92ZSBwYXJhbWV0ZXJzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgo8dWw+CjxsaT5cJ3Nob3dyYW5kb21cJyAtIHRvIGRpc3BsYXkgYSBzZXQgb2YgcmFuZG9tIHRodW1iLWltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKS4gVXNlIFwnLypcJyBhZnRlciB0aGUgZGlyZWN0b3J5bmFtZSBpbiB0aGUgZGlyIHBhcmFtZXRlciB0byBpbmNsdWRlIGltYWdlcyBmcm9tIHN1YmRpcmVjdG9yaWVzPC9saT4KPGxpPlwnc2hvd2xhdGVzdFwnIC0gdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBpbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykgVGhlIGRpciBwYXJhbWV0ZXIgY2FuIGJlIHNldCwgb3IgdGhlIGRlZmF1bHQgR2FsbGVyeS1yb290IHdpbGwgYmUgdXNlZC4gU3ViZGlyZWN0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQ8L2xpPgo8bGk+XCdzaG93bGF0ZXN0ZGlyXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBkaXJlY3RvcnkgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcyk8L2xpPgo8L3VsPgpOb3RlIHRoYXQgaW1hZ2VzIGFyZSBvbmx5IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ugd2hlbiB0aGUgZ2FsbGVyeSBpcyB2aXNpdGVkIGluIHRoZSBhZG1pbi4KJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4xLjIgIDUgRGVjZW1iZXIgMjAwOS4gVXBkYXRlIEZhbmN5Ym94IHN5c3RlbSB0byB2ZXJzaW9uIDEuMi42LCBGaXggZm9yIEJ1Z3JlcG9ydCAjNDQyMjogRXJyb3Igd2hlbiBzb3J0aW5nb3B0aW9uIGlzIGVtcHR5LCBCdWlsdCBpbiBjaGVjayBmb3IgdGVtcGxhdGVzL2NzcyBkaXJlY3RvcnkgKEJSICM0MzA1KS48L2xpPgo8bGk+VmVyc2lvbiAxLjEuMS4gMTIgTm92ZW1iZXIgMjAwOS4gRml4IGZvciBCdWdyZXBvcnQgIzQyOTQ6IFRodW1iZm9sZGVyIG5vdCBjcmVhdGVkIHdoZW4gdXBncmFkaW5nLjwvbGk+CjxsaT5WZXJzaW9uIDEuMS4gOCBOb3ZlbWJlciAyMDA5LiBBZGRlZCBzb3J0aW5nIGFuZCBkcmFnJmRyb3AgZmVhdHVyZSAoRlIgIzM5MDcgIzQyMTApLCBNb3ZlZCB0aHVtYm5haWxzZXR0aW5ncyB0byB0ZW1wbGF0ZXN0YWIsIE1ha2UgZ2FsbGVyaWVzIHNlYXJjaGFibGUgKEZSICMzOTU2KSwgQ3JlYXRlIGJhY2tlbmQgdGh1bWJzIGlmIHRoZXkgZG9uXCd0IGV4aXN0IGluIElNIChGUiAjNDEwMSksIEZpeCBmb3IgQlIgIzQwMjcsIEFkZGVkIGZpbGVpZCB0byBpbWFnZS1vYmplY3QgKEZSICM0MjU5KTwvbGk+CjxsaT5WZXJzaW9uIDEuMC4zLiA4IFNlcHRlbWJlciAyMDA5LiBCdWdmaXggZm9yIFsjNDAwMV0sIEltcHJvdmVkIHN5bmNocm9uaXppbmcgdGhlIGRhdGFiYXNlIHRvIGZpbGVzLCBhbmQgb3RoZXIgbWlub3IgaW1wcm92ZW1lbnRzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4yLiA1IFNlcHRlbWJlciAyMDA5LiBCdWdmaXggZm9yIFsjMzk4M10gcmVnYXJkaW5nIHNwYWNlcyBpbiBkaXJlY3RvcnkgbmFtZXMsIEFkZGVkIHRlbXBsYXRlcyBGYW5jeWJveCBhbmQgTHl0ZWJveF9zbGlkZXNob3cgYXMgaW4gRmVhdHVyZSByZXF1ZXN0cyBbIzM5NDRdIGFuZCBbIzM5NjddPC9saT4KPGxpPlZlcnNpb24gMS4wLjEuIDIzIEF1Z3VzdCAyMDA5LiBBcHBseSB0aHVtYm5haWwtc2V0dGluZ3Mgb24gXCdBbGJ1bS1jb3ZlcnNcJyBbIzM5MjRdLCBCdWdmaXggZm9yIFsjMzkyN10sIEFkZGVkIG1pc3NpbmcgL2RpdiB0byB0aGlja2JveC10ZW1wbGF0ZSwgZml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIHRodW1ibmFpbHMgd2hlbiBubyB0aHVtYnMgYXZhaWxhYmxlIGluIEltYWdlTWFuYWdlciwgaW1wcm92ZWQgdGhlIG5hbWluZyBvZiB0aHVtYnMsIEJ1Z2ZpeCBmb3IgWyMzOTMxXSwgUHJldmVudCBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGdhbGxlcmllcyB0aGF0IGFyZSBzZXQgYXMgaW5hY3RpdmUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiAxNyBBdWd1c3QgMjAwOS4gUGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGFkZGVkLCBTdGFuZGFyZCB0ZW1wbGF0ZXMgY2hhbmdlZCBhY2NvcmRpbmdseSwgRXh0ZW5kZWQgdGhlIG1vZHVsZS1oZWxwLCBBZGRlZCBmdW5jdGlvbnMgdG8gc2hvdyByYW5kb20gb3IgbGF0ZXN0IGltYWdlcywgU3VwcG9ydCBvZiBwcmV0dHktdXJscywgVmFyaW91cyBpbXByb3ZlbWVudHM8L2xpPgo8bGk+VmVyc2lvbiAwLjYuIDkgQXVndXN0IDIwMDkuIEluaXRpYWwgQmV0YSBSZWxlYXNlLjwvbGk+CjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhlIEdhbGxlcnkgbW9kdWxlIGlzIGFuIGVhc3kgdG8gdXNlIHBob3RvIGdhbGxlcnkgd2hpY2ggYXV0b21hdGljYWxseSBzaG93cyB0aGUgaW1hZ2VzIG9mIGEgc3BlY2lmaWVkIGRpcmVjdG9yeS4gU3ViZGlyZWN0b3JpZXMgd2lsbCBiZSBzaG93biBhcyBzdWJnYWxsZXJpZXMuIEl0IGhhcyBsb3RzIG9mIGZlYXR1cmVzLCBzdWNoIGFzIGF1dG9tYXRpYyB0aHVtYm5haWxpbmcsIHRoZSB1c2Ugb2YgbXVsdGlwbGUgTGlnaHRib3gtbGlrZSB0ZW1wbGF0ZXMgb3IgYW55IGNzcy9qYXZhc2NyaXB0IHRlbXBsYXRlIHlvdSBsaWtlLCBhbmQgeW91IGNhbiBnaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIHlvdXIgZ2FsbGVyaWVzIGFzIHdlbGwgYXMgeW91ciBwaG90b3MuPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QsIGluc2VydCB0aGUgbW9kdWxlIHdpdGggdGhlIDxjb2RlPntHYWxsZXJ5fTwvY29kZT4gdGFnIGludG8geW91ciBwYWdlIG9yIHRlbXBsYXRlIGFueXdoZXJlIHlvdSB3aGlzaC4gVGhlbiB1cGxvYWQgc29tZSBpbWFnZXMgd2l0aCB0aGUgSW1hZ2UgTWFuYWdlciwgRmlsZSBNYW5hZ2VyIChlLmcuIG11bHRpcGxlIGltYWdlcyBpbiB6aXBmaWxlKSBvciBGVFAgdG8gdGhlIHVwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvIGRpcmVjdG9yeS48L3A+CjxwPlRoYXRcJ3MgaXQhPC9wPgo8cD5JZiB5b3Ugd2FudCBtb3JlIHBob3RvIGdhbGxlcmllcywgc2ltcGx5IGNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgdXBsb2FkIHlvdXIgcGhvdG9zIGFzIGRlc2NyaWJlZC4gQnkgYWRkaW5nIHBhcmFtZXRlcnMgdG8gdGhlIDxjb2RlPntHYWxsZXJ5fTwvY29kZT4gdGFnLCB5b3UgY2FuIGVhc2lseSBtYW5pcHVsYXRlIHdoaWNoIHN1YmdhbGxlcnkgd2lsbCBiZSBzaG93biBpbiB3aGljaCB0ZW1wbGF0ZSwgZS5nLiA8Y29kZT57R2FsbGVyeSBkaXI9ImhvbGlkYXlzL05ldGhlcmxhbmRzMjAwOSIgdGVtcGxhdGU9IkxpZ2h0Ym94In08L2NvZGU+PC9wPgo8cD5CeSBkZWZhdWx0IHRoZSB0aHVtYm5haWxzIGZyb20gdGhlIEltYWdlIE1hbmFnZXIgYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgcGhvdG8gZ2FsbGVyaWVzLjwvcD4KPGgzPkFkdmFuY2VkIE9wdGlvbnMsIGJ1dCBzdGlsbCBlYXN5IHRvIHVzZTwvaDM+CjxwPkluIHRoZSBhZG1pbiBzZWN0aW9uIHlvdSBoYXZlIGxvdHMgb2Ygb3RoZXIgb3B0aW9uczo8L3A+Cjx1bD4KPGxpPlNldCBhIHBob3RvIGFzIHRoZSBkZWZhdWx0IGZvciBhIGdhbGxlcnksIHNvIGl0IHdpbGwgc2hvdyBpbiB0aGUgcGFyZW50IGdhbGxlcnkgYXMgYSBcJ2NvdmVyXCcgaW4gc3RlYWQgb2YgdGhlIGRlZmF1bHQgZm9sZGVyLWljb24uPC9saT4KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gZ2FsbGVyaWVzLjwvbGk+CjxsaT5TZXQgYSBkZWZhdWx0IHRlbXBsYXRlIGZvciBlYWNoIGdhbGxlcnkuPC9saT4KPGxpPlNldCB0aHVtYm5haWwgc2l6ZXMgZm9yIGVhY2ggdGVtcGxhdGUsIHdpdGggcG9zaWJpbGl0aWVzIHRvIHNjYWxlLCBjcm9wIGFuZC9vciB6b29tIHRoZSBpbWFnZXMuPC9saT4KPGxpPlNwZWNpZnkgZm9yIGVhY2ggdGVtcGxhdGUgaW4gd2hpY2ggb3JkZXIgdGhlIHBob3RvcyBoYXZlIHRvIGJlIHNvcnRlZC48L2xpPgo8bGk+T3ZlcnJ1bGUgdGhlIHNvcnRpbmcgbWFudWFsbHkgYnkgZHJhZ2dpbmcmZHJvcHBpbmcgdGhlIHBob3Rvcy4KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gcGhvdG9zLjwvbGk+CjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPgo8bGk+RWRpdC9jb3B5IHRlbXBsYXRlcyBvciBjcmVhdGUgbmV3IG9uZXMuIENoZWNrIHRoZSBpbmZvLWljb24gYmVuZWF0aCB0aGUgdGVtcGxhdGUtY29kZSBmb3IgdGhlIGF2YWlsYWJsZSB2YXJpYWJsZXMuPC9saT4KPC91bD4KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgXCdNb2RpZnkgVGVtcGxhdGVzXCcgcGVybWlzc2lvbi4gVG8gZWRpdCB0aGUgZ2xvYmFsIEdhbGxlcnkgb3B0aW9ucywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSBcJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzXCcgcGVybWlzc2lvbi48L3A+CjxwPkFsbCB0aXRsZXMsIGRlc2NyaXB0aW9ucyBhbmQgc2V0dGluZ3MgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIFRoZSBkYXRhYmFzZSB3aWxsIHN5bmNocm9uaXplIHdpdGggdGhlIGZpbGVkaXJlY3RvcnkgZWFjaCB0aW1lIHRoZSBhY2NvcmRpbmcgZ2FsbGVyeSBpcyB2aXNpdGVkIGluIHRoZSBHYWxsZXJ5LWFkbWluLiBBIGxpdHRsZSB3YXJuaW5nOiB3aGVuIHlvdSBtb3ZlIGFuIGltYWdlIG9yIHN1YmRpcmVjdG9yeSB0byBhbm90aGVyIGRpcmVjdG9yeSwgeW91IHdpbGwgbG9vc2UgaXRzIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgc2V0dGluZ3MuPC9wPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEZlYXR1cmUgUmVxdWVzdCBvciBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvIj5HYWxsZXJ5IFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+CjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBKb3MgLTxhIGhyZWY9Im1haWx0bzpqb3N2ZEBsaXZlLm5sIj5qb3N2ZEBsaXZlLm5sPC9hPi0uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KJzsKJGxhbmdbJ3FjYSddID0gJzEyNDk5MjM3NjQtMTU4NzE4NzgtOTY4OTUyNDUnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My40MzQwMTI2MTQ5OTM5NjYyMDAwLjEyNDcxNTEyMjIuMTI1MjMzMTI3OS4xMjUyMzQwNjU0LjIyJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI0NzE1MTU3NS4xLjIudXRtY2NuPShvcmdhbmljKXx1dG1jc3I9Z29vZ2xlfHV0bWN0cj10cmFuc2xhdGlvbmNlbnRlciBjbXNtYWRlc2ltcGxlfHV0bWNtZD1vcmdhbmljJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xLjEwLjEyNTIzNDA2NTQnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGxlcnkgJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnTGUgbW95ZW4gbGUgcGx1cyBmYWNpbGUgcG91ciBhZmZpY2hlciBldCBnJmVhY3V0ZTtyZXIgdm9zIGdhbGVyaWVzIHBob3Rvcy4nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdVbmUgR2FsZXJpZSBmYWNpbGUgZCYjMDM5O2VtcGxvaSBhZmZpY2hhbnQgYXV0b21hdGlxdWVtZW50IGxlcyBpbWFnZXMgZCYjMDM5O3VuIGRvc3NpZXIgc3AmZWFjdXRlO2NpZmlxdWUuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTGUgbW9kdWxlIEdhbGxlcnkgYSAmZWFjdXRlO3QmZWFjdXRlOyBpbnN0YWxsJmVhY3V0ZTsgYXZlYyBzdWNjJmVncmF2ZTtzLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdMYSB2ZXJzaW9uICVzIGR1IG1vZHVsZSBHYWxsZXJ5IGEgJmVhY3V0ZTt0JmVhY3V0ZTsgaW5zdGFsbCZlYWN1dGU7ZS4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdMZSBtb2R1bGUgR2FsbGVyeSBhICZlYWN1dGU7dCZlYWN1dGU7IG1pcyAmYWdyYXZlOyBqb3VyICZhZ3JhdmU7IGxhIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdMZSBtb2R1bGUgR2FsbGVyeSBhICZlYWN1dGU7dCZlYWN1dGU7IGQmZWFjdXRlO3NpbnN0YWxsJmVhY3V0ZTsuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTGUgbW9kdWxlIEdhbGxlcnkgYSAmZWFjdXRlO3QmZWFjdXRlOyBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7Lic7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnJkVjaXJjO3Rlcy12b3VzIGNlcnRhaW4gZGUgdm91bG9pciBkJmVhY3V0ZTtzaW5zdGFsbGVyIEdhbGxlcnkmbmJzcDs/IENlbGEgbiYjMDM5O2FmZmVjdGVyYSBwYXMgbGVzIGltYWdlcywgbWFpcyB0b3V0ZXMgbGVzIGNvbW1lbnRhaXJlcyBldCB2aWduZXR0ZXMgY3ImZWFjdXRlOyZlYWN1dGU7cyBwYXIgR2FsbGVyeSBzZXJvbnQgcGVyZHVzLic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2MmZWdyYXZlO3MgciZlYWN1dGU7ZnVzJmVhY3V0ZTsuIFZldWlsbGV6IHYmZWFjdXRlO3JpZmllciB2b3MgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdBY3Rpb25zICc7CiRsYW5nWydhY3RpdmUnXSA9ICdBY3RpdmUgJzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBwbGlxdWVyJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICcmRWNpcmM7dGVzLXZvdXMgcyZ1Y2lyYztyKGUpIGRlIHZvdWxvaXIgZWZmYWNlciA/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXInOwokbGFuZ1snY29weSddID0gJ0NvcGllcic7CiRsYW5nWydkZWZhdWx0J10gPSAnRCZlYWN1dGU7ZmF1dCc7CiRsYW5nWydkZWxldGUnXSA9ICdFZmZhY2VyJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0ZXInOwokbGFuZ1snZXJyb3InXSA9ICdFcnJldXImbmJzcDshJzsKJGxhbmdbJ3NldGZhbHNlJ10gPSAnRCZlYWN1dGU7ZmluaXIgJmFncmF2ZTsgZmF1eCc7CiRsYW5nWydzZXR0cnVlJ10gPSAnRCZlYWN1dGU7ZmluaXIgJmFncmF2ZTsgdnJhaSc7CiRsYW5nWydzdWJtaXQnXSA9ICdTYXV2ZWdhcmRlcic7CiRsYW5nWydnYWxsZXJpZXMnXSA9ICdHYWxlcmllcyc7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGVyaWUnOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICcmRWFjdXRlO2RpdGVyIGxhIGdhbGVyaWUnOwokbGFuZ1snYWRkZ2FsbGVyeSddID0gJ0Fqb3V0ZXIgdW5lIGdhbGVyaWUnOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnSWwgbiYjMDM5O3kgYSBwYXMgZGUgZ2FsZXJpZSBkaXNwb25pYmxlJzsKJGxhbmdbJ2l0ZW0nXSA9ICdJbWFnZSAnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRyZSc7CiRsYW5nWydkYXRlJ10gPSAnRGF0ZSAnOwokbGFuZ1snbm9maWxlc3RleHQnXSA9ICdBdWN1bmUgaW1hZ2UgZGlzcG9uaWJsZSc7CiRsYW5nWydnYWxsZXJ5dGl0bGUnXSA9ICdUaXRyZSBkZSBsYSBnYWxlcmllJzsKJGxhbmdbJ2NvbW1lbnQnXSA9ICdDb21tZW50YWlyZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1snaGlkZXBhcmVudGxpbmsnXSA9ICdDYWNoZXIgbGUgbGllbiBkYW5zIGxhIGdhbGVyaWUgcGFyZW50ZSc7CiRsYW5nWyd1c2VkZWZhdWx0J10gPSAnVXRpbGlzZXIgcGFyIGQmZWFjdXRlO2ZhdXQnOwokbGFuZ1snY3JlYXRldGh1bWJzJ10gPSAnKFJlKUNyJmVhY3V0ZTtlciBsZXMgdmlnbmV0dGVzJzsKJGxhbmdbJ3RodW1ic2NyZWF0ZWQnXSA9ICdWaWduZXR0ZXMgY3ImZWFjdXRlO2VzJzsKJGxhbmdbJ3NvcnRieXNldHRpbmdzJ10gPSAnU29ydCBieSB0ZW1wbGF0ZSBzZXR0aW5ncyc7CiRsYW5nWydnYWxsZXJ5dXBkYXRlZCddID0gJ0xhIGdhbGVyaWUgYSAmZWFjdXRlO3QmZWFjdXRlOyBtaXNlICZhZ3JhdmU7IGpvdXIgYXZlYyBzdWNjJmVncmF2ZTtzJzsKJGxhbmdbJ2Vycm9yX3VwZGF0ZWdhbGxlcnlmYWlsZWQnXSA9ICdFY2hlYyBkZSBsYSBtaXNlICZhZ3JhdmU7IGpvdXIgZGUgbGEgZ2FsZXJpZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdHYWJhcml0cyc7CiRsYW5nWyd0aXRsZV9hdmFpbGFibGVfdGVtcGxhdGVzJ10gPSAnR2FiYXJpdHMgZGlzcG9uaWJsZXMnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOb20nOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdEJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ0NyJmVhY3V0ZTtlciB1biBub3V2ZWF1IGdhYmFyaXQnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdFZGl0ZXVyIGRlIGdhYmFyaXQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ05vbSBkdSBnYWJhcml0JzsKJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdUYWlsbGUgZGVzIHZpZ25ldHRlcyAoc3VyIGxlIEZyb250ZW5kKSc7CiRsYW5nWydsZWF2ZWVtcHR5J10gPSAnKGxhaXNzZXIgdmlkZSBwb3VyIHV0aWxpc2VyIGxlcyB2aWduZXR0ZXMgZGVwdWlzIEltYWdlTWFuYWdlciknOwokbGFuZ1snd2lkdGgnXSA9ICdsYXJnZXVyJzsKJGxhbmdbJ2hlaWdodCddID0gJ2hhdXRldXInOwokbGFuZ1sncmVzaXplbWV0aG9kJ10gPSAnTSZlYWN1dGU7dGhvZGUgZGUgcmVkaW1lbnNpb25uZW1lbnQnOwokbGFuZ1snY3JvcCddID0gJ3JlY2FkcmVyJzsKJGxhbmdbJ3NjYWxlJ10gPSAncmVkaW1lbnNpb25uZXIgJzsKJGxhbmdbJ3pvb21jcm9wJ10gPSAnem9vbWVyICZhbXA7IHJlY2FkcmVyJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ3pvb21lciAmYW1wOyByZWRpbWVuc2lvbm5lciAnOwokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTm9tYnJlIG1heGltYWwgZCYjMDM5O29iamV0cyBwYXIgcGFnZSc7CiRsYW5nWydzaG93YWxsaW1hZ2VzJ10gPSAnTGFpc3NlciBjZSBwYXJhbSZlZ3JhdmU7dHJlIHZpZGUgbW9udHJlcmEgdG91dGVzIGxlcyBpbWFnZXMgc2FucyBsaWVucyBkZSBwYWdlJzsKJGxhbmdbJ3NvcnRpbmdvcHRpb25zJ10gPSAnT3B0aW9ucyBkZSB0cmknOwokbGFuZ1snc3BlY2lmeXNvcnRmaWVsZHMnXSA9ICdTcCZlYWN1dGU7Y2lmaWVyIGxlIGNoYW1wIHN1ciBsZXF1ZWwgYmFzZXIgbGUgdHJpJzsKJGxhbmdbJ2FzY2VuZGluZyddID0gJ2Nyb2lzc2FudCc7CiRsYW5nWydkZXNjZW5kaW5nJ10gPSAnZCZlYWN1dGU7Y3JvaXNzYW50JzsKJGxhbmdbJ2FkZGZpZWxkJ10gPSAnQWpvdXRlciB1biBjaGFtcCc7CiRsYW5nWydkZWxldGVmaWVsZCddID0gJ0RlbGV0ZSBsYXN0IHJvdyc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdTb3VyY2UgZHUgZ2FiYXJpdCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVqcyddID0gJ0dhYmFyaXQgSmF2YVNjcmlwdCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdHYWJhcml0ICBDU1MtZmV1aWxsZSBkZSBzdHlsZSc7CiRsYW5nWydyZXNldG9yaWdpbmFsJ10gPSAnUmVzZXQgdG8gb3JpZ2luYWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHRlbXBsYXRlIGNvZGUgdG8gaXRzIG9yaWdpbmFsIGNvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ0xlIGdhYmFyaXQgYSAmZWFjdXRlO3QmZWFjdXRlOyBtaXMgJmFncmF2ZTsgam91ciBhdmVjIHN1Y2MmZWdyYXZlO3MuJzsKJGxhbmdbJ3RlbXBsYXRlYWRkZWQnXSA9ICdMZSBnYWJhcml0IGEgJmVhY3V0ZTt0JmVhY3V0ZTsgYWpvdXQmZWFjdXRlOyBhdmVjIHN1Y2MmZWdyYXZlO3MuJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0xlIG5vbSBkdSBnYWJhcml0IGVzdCBkJmVhY3V0ZTtqJmFncmF2ZTsgYXR0cmlidSZlYWN1dGU7Lic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdHYWJhcml0IGVmZmFjJmVhY3V0ZTsnOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzJ10gPSAnVmFyaWFibGUgU21hcnR5IGRlIGdhYmFyaXQgZGlzcG9uaWJsZXMnOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzbGlzdCddID0gJ1ZvaWNpIGxlcyB2YXJpYWJsZXMgcXVlIHZvdXMgcG91dmV6IHV0aWxpc2VyIHBvdXIgcGVyc29ubmFsaXNlciB2b3MgZ2FiYXJpdHMmbmJzcDs6PGJyIC8+PGJyIC8+Cjxjb2RlPnskbW9kdWxlX21lc3NhZ2V9PC9jb2RlPiAtIGVycm9yIG1lc3NhZ2UsIGlzIG9ubHkgc2V0IGlmIHRoZXJlXCdzIGEgbWVzc2FnZTxiciAvPgo8Y29kZT57JGdhbGxlcnl0aXRsZX08L2NvZGU+IC0gdGl0bGUgb2YgdGhlIGdhbGxlcnkuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZGlyZWN0b3J5IG5hbWU8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPgo8Y29kZT57JHBhcmVudGxpbmt9PC9jb2RlPiAtIGxpbmsgdG8gdGhlIHBhcmVudCBmb2xkZXI8YnIgLz4KPGNvZGU+eyRoaWRlcGFyZW50bGlua308L2NvZGU+IC0gdHJ1ZS9mYWxzZTxiciAvPgo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIHNob3dzIGUuZy4gIjYgaW1hZ2VzIiwgZGVwZW5kaW5nIG9uIGxhbmd1YWdlPGJyIC8+Cjxjb2RlPnskaXRlbWNvdW50fTwvY29kZT4gLSBudW1iZXIgb2YgaXRlbXMsIGltYWdlcyArIGZvbGRlcnM8YnIgLz4KPGNvZGU+eyRwYWdlc308L2NvZGU+IC0gbnVtYmVyIG9mIHBhZ2VzPGJyIC8+Cjxjb2RlPnskcHJldnBhZ2V9PC9jb2RlPiAtIGxpbmsgdG8gcHJldmlvdXMgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPgo8Y29kZT57JG5leHRwYWdlfTwvY29kZT4gLSBsaW5rIHRvIG5leHQgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPgo8Y29kZT57JHBhZ2VsaW5rc308L2NvZGU+IC0gbGlua3MgdG8gZWFjaCBleGlzdGluZyBwYWdlPGJyIC8+Cjxjb2RlPnskaW1hZ2VzfTwvY29kZT4gLSBhcnJheSB3aXRoIGtleXM6PGJyIC8+CiAtIDxjb2RlPmZpbGU8L2NvZGU+IC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgb3JpZ2luYWwgaW1hZ2UgKG9yIHN1YmdhbGxlcnkpPGJyIC8+CiAtIDxjb2RlPnRpdGxlPC9jb2RlPiAtIHRpdGxlIG9mIHRoZSBpbWFnZS4gSWYgdGhlcmUgaXMgbm8gdGl0bGUsIHRoaXMgd2lsbCBzaG93IHRoZSBmaWxlbmFtZTxiciAvPgogLSA8Y29kZT5jb21tZW50PC9jb2RlPiAtIGNvbW1lbnQgdG8gdGhlIGltYWdlPGJyIC8+CiAtIDxjb2RlPmZpbGVkYXRlPC9jb2RlPiAtIGNyZWF0aW9uIGRhdGUvdGltZTxiciAvPgogLSA8Y29kZT50aHVtYjwvY29kZT4gLSByZWxhdGl2ZSBwYXRoIHRvIHRoZSB0aHVtYm5haWwuIEluIGNhc2Ugb2YgYSBzdWJnYWxsZXJ5LCB0aGlzIHdpbCByZXZlcnQgdG8gdGhlIGltYWdlIHdoaWNoIGlzIHNldCBhcyBkZWZhdWx0IGluIHRoYXQgc3ViZ2FsbGVyeS4gSWYgbm8gaW1hZ2UgaXMgc2V0IGFzIGRlZmF1bHQsIGEgc3RhbmRhcmQgZm9sZGVyLWljb24gd2lsbCBiZSB1c2VkLjxiciAvPgogLSA8Y29kZT5maWxlaWQ8L2NvZGU+IC0gdW5pcXVlIGlkIGZvciB0aGUgaW1hZ2Ugb3Igc3ViZ2FsbGVyeTxiciAvPgogLSA8Y29kZT5pc2RpcjwvY29kZT4gLSB0cnVlIGlmIGl0XCdzIGEgc3ViZ2FsbGVyeTxiciAvPgonOwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMgJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ0V4dGVuc2lvbnMgYXV0b3JpcyZlYWN1dGU7ZXMnOwokbGFuZ1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddID0gJ1V0aWxpc2VyIHVuICZlYWN1dGU7ZGl0ZXVyIHZpc3VlbCAoV1lTSVdZRykgZGFucyBsZSBjaGFtcCBjb21tZW50YWlyZSBkZSBsYSBnYWxlcmllJzsKJGxhbmdbJ29wdGlvbnN1cGRhdGVkJ10gPSAnTGVzIHImZWFjdXRlO2dsYWdsZXMgb250ICZlYWN1dGU7dCZlYWN1dGU7IHByaXMgZW4gY29tcHRlLic7CiRsYW5nWydpbWFnZSddID0gJ2ltYWdlICc7CiRsYW5nWydpbWFnZXMnXSA9ICdpbWFnZXMgJzsKJGxhbmdbJ3ByZXZwYWdlJ10gPSAncHImZWFjdXRlO2MmZWFjdXRlO2RlbnRlJzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnc3VpdmFudGUnOwokbGFuZ1snZGVmYXVsdGdhbGxlcnljb21tZW50J10gPSAnTWVyY2kgZCYjMDM5O2F2b2lyIGluc3RhbGwmZWFjdXRlOyBsZSBtb2R1bGUgR2FsbGVyeS4gU2kgdm91cyBhdmV6IHVwbG9hZCZlYWN1dGU7IGRlcyBpbWFnZXMgZGFucyBsZSBkb3NzaWVyICYjMDM5O3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnkmIzAzOTsgIHZvdXMgbGVzIHZlcnJleiBkZXNzb3VzLiBWb3VzIHBvdXZleiBtb2RpZmllciBsZXMgdGl0cmVzLCBsZXMgZGVzY3JpcHRpb25zIGV0IGxhIHRhaWxsZSBkZXMgdmlnbmV0dGVzIGRhbnMgbGEgc2VjdGlvbiBhZG1pbi4gRCZlYWN1dGU7Y291dnJleiB0b3V0ZXMgbGVzIGF1dHJlcyBwb3NzaWJpbGl0JmVhY3V0ZTtzIGRhbnMgbCYjMDM5O2FpZGUgZHUgbW9kdWxlLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtJmVhY3V0ZTt0cmVyIHBvdXIgdW4gZG9zc2llciBzcCZlYWN1dGU7Y2lmaXF1ZSwgcmVsYXRpZiAmYWdyYXZlOyB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5Lyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnVXRpbGlzZXIgdW4gZ2FiYXJpdCBkaWZmJmVhY3V0ZTtyZW50IGVucmVnaXN0ciZlYWN1dGU7IGVuIGJhc2UgZGUgZG9ubiZlYWN1dGU7ZXMuIENlIGdhYmFyaXQgZG9pdCBleGlzdGVyIGV0ICZlY2lyYzt0cmUgdmlzaWJsZSBkYW5zIGwmIzAzOTtvbmdsZXQgJnF1b3Q7Z2FiYXJpdCZxdW90OyBkdSBwYW5uZWF1IGQmIzAzOTthZG1pbmlzdHJhdGlvbiBkZSBHYWxsZXJ5LCBiaWVuIHF1JiMwMzk7aWwgbmUgc29pdCBwYXMgbiZlYWN1dGU7Y2Vzc2FpcmUgZCYjMDM5OyZlY2lyYzt0cmUgbWlzIHBhciBkJmVhY3V0ZTtmYXV0LiBTaSBjZSBwYXJhbSZlZ3JhdmU7dHJlIG4mIzAzOTtlc3QgcGFzIHNwJmVhY3V0ZTtjaWZpJmVhY3V0ZTssIGFsb3JzIGxlIGdhYmFyaXQgcXVpIGVzdCBhc3NpZ24mZWFjdXRlOyBhdSBkb3NzaWVyIHNlcmEgdXRpbGlzJmVhY3V0ZTssIGV0IHNpbm9uIGxlIGdhYmFyaXQgcGFyIGQmZWFjdXRlO2ZhdXQuJzsKJGxhbmdbJ2hlbHBfbnVtYmVyJ10gPSAnTm9tYnJlIG1heGltYWwgZGUgdmlnbmV0dGVzICZhZ3JhdmU7IGFmZmljaGVyIChwYXIgcGFnZSkuIExhaXNzZXIgdmlkZSBhZmZpY2hlcmEgdG91dGVzIGxlcyBpbWFnZXMnOwokbGFuZ1snaGVscF9zdGFydCddID0gJ0QmZWFjdXRlO2J1dGVyICZhZ3JhdmU7IGxhICZlYWN1dGU7bmkmZWFjdXRlO21lIGltYWdlLiBMYWlzc2V6IHZpZGUgcG91ciBkJmVhY3V0ZTtidXRlciAmYWdyYXZlOyBsYSBwcmVtaSZlZ3JhdmU7cmUuJzsKJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cjx1bD4KPGxpPiYjMDM5O2FjdGl2ZSYjMDM5OyAtIHRvIGRpc3BsYXkgdGhlIGltYWdlcyBtYXJrZWQgYXMgYWN0aXZlIChkZWZhdWx0KTwvbGk+CjxsaT4mIzAzOTtpbmFjdGl2ZSYjMDM5OyAtIHRvIGRpc3BsYXkgb25seSB0aGUgaW1hZ2VzIG1hcmtlZCBhcyBpbmFjdGl2ZSA8L2xpPgo8bGk+JiMwMzk7YWxsJiMwMzk7IC0gdG8gZGlzcGxheSBhbGwgaW1hZ2VzPC9saT4KPC91bD4KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdQb3VyIGFmZmljaGVyIHVuaXF1ZW1lbnQgbGVzIGltYWdlcy9nYWxlcmllcyBkJiMwMzk7dW5lIGdhbGVyaWVzIHByJmVhY3V0ZTtjaXNlLiBVdGlsaXNlciAqIGFwciZlZ3JhdmU7cyBsZSBub20gcG91ciBhZmZpY2hlciBsZXMgZW5mYW50cy4gVm91cyBwb3V2ZXogdXRpbGlzZXIgcGx1c2lldXJzIGNhdCZlYWN1dGU7Z29yaWVzIGVuIGxlcyBzJmVhY3V0ZTtwYXJhbnQgcGFyIHVuZSB2aXJndWxlLiBMYWlzc2VyIHZpZGUgYWZmaWNoZXJhIHRvdXRlcyBsZXMgY2F0JmVhY3V0ZTtnb3JpZXMuJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBVc2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycy4gUG9zc2libGUgdmFsdWVzIGFyZToKPHVsPgo8bGk+XCdzaG93cmFuZG9tXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSBcJy8qXCcgYWZ0ZXIgdGhlIGRpcmVjdG9yeW5hbWUgaW4gdGhlIGRpciBwYXJhbWV0ZXIgdG8gaW5jbHVkZSBpbWFnZXMgZnJvbSBzdWJkaXJlY3RvcmllczwvbGk+CjxsaT5cJ3Nob3dsYXRlc3RcJyAtIHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgaW1hZ2VzIChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpIFRoZSBkaXIgcGFyYW1ldGVyIGNhbiBiZSBzZXQsIG9yIHRoZSBkZWZhdWx0IEdhbGxlcnktcm9vdCB3aWxsIGJlIHVzZWQuIFN1YmRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkPC9saT4KPGxpPlwnc2hvd2xhdGVzdGRpclwnIC0gdG8gZGlzcGxheSBhIHNldCBvZiByYW5kb20gdGh1bWItaW1hZ2VzIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZGlyZWN0b3J5IChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpPC9saT4KPC91bD4KTm90ZSB0aGF0IGltYWdlcyBhcmUgb25seSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHdoZW4gdGhlIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgYWRtaW4uCic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT5WZXJzaW9uIDEuMS4yICA1IERlY2VtYmVyIDIwMDkuIFVwZGF0ZSBGYW5jeWJveCBzeXN0ZW0gdG8gdmVyc2lvbiAxLjIuNiwgRml4IGZvciBCdWdyZXBvcnQgIzQ0MjI6IEVycm9yIHdoZW4gc29ydGluZ29wdGlvbiBpcyBlbXB0eSwgQnVpbHQgaW4gY2hlY2sgZm9yIHRlbXBsYXRlcy9jc3MgZGlyZWN0b3J5IChCUiAjNDMwNSkuPC9saT4KPGxpPlZlcnNpb24gMS4xLjEuIDEyIE5vdmVtYmVyIDIwMDkuIEZpeCBmb3IgQnVncmVwb3J0ICM0Mjk0OiBUaHVtYmZvbGRlciBub3QgY3JlYXRlZCB3aGVuIHVwZ3JhZGluZy48L2xpPgo8bGk+VmVyc2lvbiAxLjEuIDggTm92ZW1iZXIgMjAwOS4gQWRkZWQgc29ydGluZyBhbmQgZHJhZyZkcm9wIGZlYXR1cmUgKEZSICMzOTA3ICM0MjEwKSwgTW92ZWQgdGh1bWJuYWlsc2V0dGluZ3MgdG8gdGVtcGxhdGVzdGFiLCBNYWtlIGdhbGxlcmllcyBzZWFyY2hhYmxlIChGUiAjMzk1NiksIENyZWF0ZSBiYWNrZW5kIHRodW1icyBpZiB0aGV5IGRvblwndCBleGlzdCBpbiBJTSAoRlIgIzQxMDEpLCBGaXggZm9yIEJSICM0MDI3LCBBZGRlZCBmaWxlaWQgdG8gaW1hZ2Utb2JqZWN0IChGUiAjNDI1OSk8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMy4gOCBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzQwMDFdLCBJbXByb3ZlZCBzeW5jaHJvbml6aW5nIHRoZSBkYXRhYmFzZSB0byBmaWxlcywgYW5kIG90aGVyIG1pbm9yIGltcHJvdmVtZW50cy48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMi4gNSBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzM5ODNdIHJlZ2FyZGluZyBzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzLCBBZGRlZCB0ZW1wbGF0ZXMgRmFuY3lib3ggYW5kIEx5dGVib3hfc2xpZGVzaG93IGFzIGluIEZlYXR1cmUgcmVxdWVzdHMgWyMzOTQ0XSBhbmQgWyMzOTY3XTwvbGk+CjxsaT5WZXJzaW9uIDEuMC4xLiAyMyBBdWd1c3QgMjAwOS4gQXBwbHkgdGh1bWJuYWlsLXNldHRpbmdzIG9uIFwnQWxidW0tY292ZXJzXCcgWyMzOTI0XSwgQnVnZml4IGZvciBbIzM5MjddLCBBZGRlZCBtaXNzaW5nIC9kaXYgdG8gdGhpY2tib3gtdGVtcGxhdGUsIGZpeGVkIGFuIGlzc3VlIHdpdGggZ2VuZXJhdGluZyB0aHVtYm5haWxzIHdoZW4gbm8gdGh1bWJzIGF2YWlsYWJsZSBpbiBJbWFnZU1hbmFnZXIsIGltcHJvdmVkIHRoZSBuYW1pbmcgb2YgdGh1bWJzLCBCdWdmaXggZm9yIFsjMzkzMV0sIFByZXZlbnQgZGlzcGxheSB0aGUgY29udGVudCBvZiBnYWxsZXJpZXMgdGhhdCBhcmUgc2V0IGFzIGluYWN0aXZlLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4gMTcgQXVndXN0IDIwMDkuIFBhZ2luYXRpb24gcGFyYW1ldGVycyBhZGRlZCwgU3RhbmRhcmQgdGVtcGxhdGVzIGNoYW5nZWQgYWNjb3JkaW5nbHksIEV4dGVuZGVkIHRoZSBtb2R1bGUtaGVscCwgQWRkZWQgZnVuY3Rpb25zIHRvIHNob3cgcmFuZG9tIG9yIGxhdGVzdCBpbWFnZXMsIFN1cHBvcnQgb2YgcHJldHR5LXVybHMsIFZhcmlvdXMgaW1wcm92ZW1lbnRzPC9saT4KPGxpPlZlcnNpb24gMC42LiA5IEF1Z3VzdCAyMDA5LiBJbml0aWFsIEJldGEgUmVsZWFzZS48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZT88L2gzPgo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+CjxoMz5Db21tZW50IGwmIzAzOTt1dGlsaXNlciA8L2gzPgo8cD5GaXJzdCwgaW5zZXJ0IHRoZSBtb2R1bGUgd2l0aCB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcgaW50byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGUgYW55d2hlcmUgeW91IHdoaXNoLiBUaGVuIHVwbG9hZCBzb21lIGltYWdlcyB3aXRoIHRoZSBJbWFnZSBNYW5hZ2VyLCBGaWxlIE1hbmFnZXIgKGUuZy4gbXVsdGlwbGUgaW1hZ2VzIGluIHppcGZpbGUpIG9yIEZUUCB0byB0aGUgdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8gZGlyZWN0b3J5LjwvcD4KPHA+VGhhdFwncyBpdCE8L3A+CjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcsIHlvdSBjYW4gZWFzaWx5IG1hbmlwdWxhdGUgd2hpY2ggc3ViZ2FsbGVyeSB3aWxsIGJlIHNob3duIGluIHdoaWNoIHRlbXBsYXRlLCBlLmcuIDxjb2RlPntHYWxsZXJ5IGRpcj0iaG9saWRheXMvTmV0aGVybGFuZHMyMDA5IiB0ZW1wbGF0ZT0iTGlnaHRib3gifTwvY29kZT48L3A+CjxwPkJ5IGRlZmF1bHQgdGhlIHRodW1ibmFpbHMgZnJvbSB0aGUgSW1hZ2UgTWFuYWdlciBhcmUgdXNlZCB0byBkaXNwbGF5IHRoZSBwaG90byBnYWxsZXJpZXMuPC9wPgo8aDM+T3B0aW9ucyBhdmFuYyZlYWN1dGU7ZXMsIG1haXMgdG91dCBhdXNzaSBmYWNpbGVzICZhZ3JhdmU7IHV0aWxpc2VyPC9oMz4KPHA+RGFucyBsYSBzZWN0aW9ucyBhZG1pbiwgdm91cyBhdmV6IHVuIHRhcyBkJiMwMzk7YXV0cmVzIG9wdGlvbnMgOjwvcD4KPHVsPgo8bGk+U2V0IGEgcGhvdG8gYXMgdGhlIGRlZmF1bHQgZm9yIGEgZ2FsbGVyeSwgc28gaXQgd2lsbCBzaG93IGluIHRoZSBwYXJlbnQgZ2FsbGVyeSBhcyBhIFwnY292ZXJcJyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPgo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBnYWxsZXJpZXMuPC9saT4KPGxpPlNldCBhIGRlZmF1bHQgdGVtcGxhdGUgZm9yIGVhY2ggZ2FsbGVyeS48L2xpPgo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPgo8bGk+U3BlY2lmeSBmb3IgZWFjaCB0ZW1wbGF0ZSBpbiB3aGljaCBvcmRlciB0aGUgcGhvdG9zIGhhdmUgdG8gYmUgc29ydGVkLjwvbGk+CjxsaT5PdmVycnVsZSB0aGUgc29ydGluZyBtYW51YWxseSBieSBkcmFnZ2luZyZkcm9wcGluZyB0aGUgcGhvdG9zLgo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBwaG90b3MuPC9saT4KPGxpPlN3aXRjaCBhIHNwZWNpZmljIHBob3RvIG9yIGdhbGxlcnkgdG8gaW5hY3RpdmUsIHByZXZlbnRpbmcgaXQgZnJvbSBkaXNwbGF5LjwvbGk+CjxsaT5FZGl0L2NvcHkgdGVtcGxhdGVzIG9yIGNyZWF0ZSBuZXcgb25lcy4gQ2hlY2sgdGhlIGluZm8taWNvbiBiZW5lYXRoIHRoZSB0ZW1wbGF0ZS1jb2RlIGZvciB0aGUgYXZhaWxhYmxlIHZhcmlhYmxlcy48L2xpPgo8L3VsPgo8cD5JbiBvcmRlciB0byBlZGl0IHRlbXBsYXRlcywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSBcJ01vZGlmeSBUZW1wbGF0ZXNcJyBwZXJtaXNzaW9uLiBUbyBlZGl0IHRoZSBnbG9iYWwgR2FsbGVyeSBvcHRpb25zLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlIFwnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXNcJyBwZXJtaXNzaW9uLjwvcD4KPHA+QWxsIHRpdGxlcywgZGVzY3JpcHRpb25zIGFuZCBzZXR0aW5ncyBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gVGhlIGRhdGFiYXNlIHdpbGwgc3luY2hyb25pemUgd2l0aCB0aGUgZmlsZWRpcmVjdG9yeSBlYWNoIHRpbWUgdGhlIGFjY29yZGluZyBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIEdhbGxlcnktYWRtaW4uIEEgbGl0dGxlIHdhcm5pbmc6IHdoZW4geW91IG1vdmUgYW4gaW1hZ2Ugb3Igc3ViZGlyZWN0b3J5IHRvIGFub3RoZXIgZGlyZWN0b3J5LCB5b3Ugd2lsbCBsb29zZSBpdHMgdGl0bGUsIGRlc2NyaXB0aW9uIGFuZCBzZXR0aW5ncy48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgRmVhdHVyZSBSZXF1ZXN0IG9yIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8iPkdhbGxlcnkgUGFnZTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4KPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDksIEpvcyAtPGEgaHJlZj0ibWFpbHRvOmpvc3ZkQGxpdmUubmwiPmpvc3ZkQGxpdmUubmw8L2E+LS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNDc3MjE2OTg4LjEyNTU0NjY4OTYuMTI1Njg0MTgyMy4xMjU3MjY5MTcyLjMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjU3MjY5MTcyLjMuMy51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtc21zJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTgxMDQwMzY3MS0xMjU1NDY2ODk2MDg0JzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMjU3MjY5MTcyJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGxlcnkgJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGVuIGVua2xlc3RlIG0mYXJpbmc7dGVuICZhcmluZzsgYmVoYW5kbGUgb2cgdmlzZSBmb3RvYWxidW0gcCZhcmluZzsnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdFdCBnYWxsZXJpIHNvbSBlciBlbmtlbHQgJmFyaW5nOyBicnVrZSBzb20gYXV0b21hdGlzayB2aXNlciBiaWxkZW5lIGkgZW4gYW5naXR0IGthdGFsb2cnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdHYWxsZXJ5IG1vZHVsZW4gYmxlIGluc3RhbGxlcnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnR2FsbGVyeSBtb2R1bGVuIG1lZCB2ZXJzam9uICVzIGJsZSBpbnN0YWxsZXJ0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnR2FsbGVyeSBtb2R1bGVuIGVyIG9wcGdyYWRlcnQgdGlsIHZlcnNqb24gJXMuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdHYWxsZXJ5IG1vZHVsZW4gYmxlIGF2aW5zdGFsbGVydCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ0dhbGxlcnkgbW9kdWxlbiBibGUgYXZpbnN0YWxsZXJ0JzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZHUgdmlsIGF2aW5zdGFsbGVyZSBHYWxsZXJ5PyBEZXR0ZSBoYXIgaW5nZW4gZWZmZWt0IHAmYXJpbmc7IGJpbGRlbmUsIG1lbiBhbGxlIGtvbW1lbnRhci1kYXRhIG9nIG1pbmlhdHlyYmlsZGVyIG9wcHJldHRldCBhdiBHYWxsZXJ5IHZpbCBnJmFyaW5nOyB0YXB0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdUaWxnYW5nIG5la3RldC4gVmVubmxpZ3N0IHNqZWtrIGRpbmUgcmV0dGlnaGV0ZXIuJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdIYW5kbGluZ2VyJzsKJGxhbmdbJ2FjdGl2ZSddID0gJ0FrdGl2ZSc7CiRsYW5nWydhcHBseSddID0gJ1V0ZiZvc2xhc2g7cic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGF0IGR1IHZpbCBzbGV0dGU/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydjb3B5J10gPSAnS29waWVyJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdTdGFuZGFyZCc7CiRsYW5nWydkZWxldGUnXSA9ICdTbGV0dCc7CiRsYW5nWydlZGl0J10gPSAnUmVkaWdlcic7CiRsYW5nWydlcnJvciddID0gJ0ZlaWwhJzsKJGxhbmdbJ3NldGZhbHNlJ10gPSAnU2V0dCB1c2Fubic7CiRsYW5nWydzZXR0cnVlJ10gPSAnU2V0dCBzYW5uJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0xhZ3JlJzsKJGxhbmdbJ2dhbGxlcmllcyddID0gJ0dhbGxlcmllcic7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGxlcmknOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdSZWRpZ2VyIGdhbGxlcmknOwokbGFuZ1snYWRkZ2FsbGVyeSddID0gJ0xlZ2cgdGlsIGdhbGxlcmknOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnSW5nZW4gZ2FsbGVyaSB0aWxnamVuZ2VsaWcnOwokbGFuZ1snaXRlbSddID0gJ0JpbGRlJzsKJGxhbmdbJ3RpdGxlJ10gPSAnVGl0dGVsJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXRvJzsKJGxhbmdbJ25vZmlsZXN0ZXh0J10gPSAnSW5nZW4gYmlsZGVyIHRpbGdqZW5nZWxpZ2UnOwokbGFuZ1snZ2FsbGVyeXRpdGxlJ10gPSAnR2FsbGVyaXRpdHRlbCc7CiRsYW5nWydjb21tZW50J10gPSAnS29tbWVudGFyJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnTWFsJzsKJGxhbmdbJ2hpZGVwYXJlbnRsaW5rJ10gPSAnU2tqdWwgbGVua2UgdGlsIGZvcmVsZHJlIGdhbGxlcmknOwokbGFuZ1sndXNlZGVmYXVsdCddID0gJ2Jlbnl0dCBzdGFuZGFyZCc7CiRsYW5nWydzb3J0YnlzZXR0aW5ncyddID0gJ1NvcnRlciBldHRlciBtYWxpbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ2dhbGxlcnl1cGRhdGVkJ10gPSAnR2FsbGVyaSBvcHBkYXRlcnQnOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ09wcGRhdGVyaW5nIGF2IGdhbGxlcmlldCBmZWlsZXQnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnTWFsZXInOwokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ1RpbGdqZW5nZWxpZ2UgbWFsZXInOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOYXZuJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhcmQnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnT3BwcmV0dCBueSBtYWwnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdNYWwgcmVkaWdlcmVyJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdNYWxuYXZuJzsKJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdNaW5pYXR5cmJpbGRlc3Qmb3NsYXNoO3JyZWxzZSAoRnJvbnRlbmQpJzsKJGxhbmdbJ2xlYXZlZW1wdHknXSA9ICcobGEgZGV0dGUgZmVsdCB0b210IG9tIGR1IHZpbCBiZW55dHRlIHN0YW5kYXJkIG1pbmlhdHlyYmlsZGVyIGZyYSBJbWFnZU1hbmFnZXIpJzsKJGxhbmdbJ3dpZHRoJ10gPSAnYnJlZGRlJzsKJGxhbmdbJ2hlaWdodCddID0gJ2gmb3NsYXNoO3lkZSc7CiRsYW5nWydyZXNpemVtZXRob2QnXSA9ICdza2FsZXJpbmdzbWV0b2RlJzsKJGxhbmdbJ2Nyb3AnXSA9ICdrbGlwcCc7CiRsYW5nWydzY2FsZSddID0gJ3NrYWxlcic7CiRsYW5nWyd6b29tY3JvcCddID0gJ3pvb20gJmFtcDsga2xpcHAnOwokbGFuZ1snem9vbXNjYWxlJ10gPSAnem9vbSAmYW1wOyBza2FsZXInOwokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTWFrc2ltdW0gYW50YWxsIGVuaGV0ZXIgcGVyIHNpZGUnOwokbGFuZ1snc2hvd2FsbGltYWdlcyddID0gJyZBcmluZzsgbGEgZGV0dGUgc3QmYXJpbmc7IHRvbXQgdmlsIHZpc2UgYWxsZSBiaWxkZXIgdXRlbiBzaWRlbGVua2VyJzsKJGxhbmdbJ3NvcnRpbmdvcHRpb25zJ10gPSAnU29ydGVyaW5nc3ZhbGcnOwokbGFuZ1snc3BlY2lmeXNvcnRmaWVsZHMnXSA9ICdTcGVzaWZpc2VyIGZlbHQoZXIpICZhcmluZzsgc29ydGVyZSBldHRlcic7CiRsYW5nWydhc2NlbmRpbmcnXSA9ICdzdGlnZW5kZSc7CiRsYW5nWydkZXNjZW5kaW5nJ10gPSAnc3lua2VuZGUnOwokbGFuZ1snYWRkZmllbGQnXSA9ICdMZWdnIHRpbCBmZWx0JzsKJGxhbmdbJ2RlbGV0ZWZpZWxkJ10gPSAnU2xldHQgc2lzdGUgcmFkJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ01hbGtpbGRlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWpzJ10gPSAnTWFsIGphdmFja3JpcHQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlY3NzJ10gPSAnTWFsIENTUy1zdGlsYXJrJzsKJGxhbmdbJ3Jlc2V0b3JpZ2luYWwnXSA9ICdSZXNldCB0byBvcmlnaW5hbCc7CiRsYW5nWydyZXNldG9yaWdpbmFsd2FybmluZyddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGUgdGVtcGxhdGUgY29kZSB0byBpdHMgb3JpZ2luYWwgY29kZT8nOwokbGFuZ1sncmVzZXRvcmlnaW5hbCddID0gJ1RpbGJha2VzdGlsbCB0aWwgb3JpZ2luYWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZHUgdmlsIHRpbGJha2VzdGlsbGUgbWFsa29kZW4gdGlsIGRlbnMgb3JpZ2luYWxlIGtvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ01hbGVuIGJsZSBvcHBkYXRlcnQnOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ01hbGVuIGJsZSBsYWd0IHRpbCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdNYWxuYXZuZXQgZWtzaXN0ZXJlciBhbGxlcmVkZSc7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdNYWwgc2xldHRldCc7CiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXMnXSA9ICdUaWxnamVuZ2VsaWdlIFNtYXJ0eXZhcmlhYmxlciBmb3IgbWFsJzsKJGxhbmdbJ2F2YWlsYWJsZXZhcmlhYmxlc2xpc3QnXSA9ICdUaGVzZSBhcmUgdGhlIHZhcmlhYmxlcyB5b3UgY2FuIHVzZSB0byBjdXN0b21pemUgeW91ciB0ZW1wbGF0ZTo8YnIgLz48YnIgLz4KPGNvZGU+eyRtb2R1bGVfbWVzc2FnZX08L2NvZGU+IC0gZXJyb3IgbWVzc2FnZSwgaXMgb25seSBzZXQgaWYgdGhlcmUmIzAzOTtzIGEgbWVzc2FnZTxiciAvPgo8Y29kZT57JGdhbGxlcnl0aXRsZX08L2NvZGU+IC0gdGl0bGUgb2YgdGhlIGdhbGxlcnkuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZGlyZWN0b3J5IG5hbWU8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPgo8Y29kZT57JHBhcmVudGxpbmt9PC9jb2RlPiAtIGxpbmsgdG8gdGhlIHBhcmVudCBmb2xkZXI8YnIgLz4KPGNvZGU+eyRoaWRlcGFyZW50bGlua308L2NvZGU+IC0gdHJ1ZS9mYWxzZTxiciAvPgo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIHNob3dzIGUuZy4gJnF1b3Q7NiBpbWFnZXMmcXVvdDssIGRlcGVuZGluZyBvbiBsYW5ndWFnZTxiciAvPgo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gbnVtYmVyIG9mIGl0ZW1zLCBpbWFnZXMgKyBmb2xkZXJzPGJyIC8+Cjxjb2RlPnskcGFnZXN9PC9jb2RlPiAtIG51bWJlciBvZiBwYWdlczxiciAvPgo8Y29kZT57JHByZXZwYWdlfTwvY29kZT4gLSBsaW5rIHRvIHByZXZpb3VzIHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRuZXh0cGFnZX08L2NvZGU+IC0gbGluayB0byBuZXh0IHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRwYWdlbGlua3N9PC9jb2RlPiAtIGxpbmtzIHRvIGVhY2ggZXhpc3RpbmcgcGFnZTxiciAvPgo8Y29kZT57JGltYWdlc308L2NvZGU+IC0gYXJyYXkgd2l0aCBrZXlzOjxiciAvPgogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIG9yaWdpbmFsIGltYWdlIChvciBzdWJnYWxsZXJ5KTxiciAvPgogLSA8Y29kZT50aXRsZTwvY29kZT4gLSB0aXRsZSBvZiB0aGUgaW1hZ2UuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZmlsZW5hbWU8YnIgLz4KIC0gPGNvZGU+Y29tbWVudDwvY29kZT4gLSBjb21tZW50IHRvIHRoZSBpbWFnZTxiciAvPgogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBjcmVhdGlvbiBkYXRlL3RpbWU8YnIgLz4KIC0gPGNvZGU+dGh1bWI8L2NvZGU+IC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgdGh1bWJuYWlsLiBJbiBjYXNlIG9mIGEgc3ViZ2FsbGVyeSwgdGhpcyB3aWwgcmV2ZXJ0IHRvIHRoZSBpbWFnZSB3aGljaCBpcyBzZXQgYXMgZGVmYXVsdCBpbiB0aGF0IHN1YmdhbGxlcnkuIElmIG5vIGltYWdlIGlzIHNldCBhcyBkZWZhdWx0LCBhIHN0YW5kYXJkIGZvbGRlci1pY29uIHdpbGwgYmUgdXNlZC48YnIgLz4KIC0gPGNvZGU+ZmlsZWlkPC9jb2RlPiAtIHVuaXF1ZSBpZCBmb3IgdGhlIGltYWdlIG9yIHN1YmdhbGxlcnk8YnIgLz4KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gdHJ1ZSBpZiBpdCYjMDM5O3MgYSBzdWJnYWxsZXJ5PGJyIC8+JzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdWYWxnJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ1RpbGxhdHRlIHV0dmlkZWxzZXIoRXh0ZW5zaW9ucyknOwokbGFuZ1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddID0gJ0Jlbnl0dCBlbiBXWVNJV1lHIHJlZGlnZXJlciBwJmFyaW5nOyBHYWxsZXJ5IGtvbW1lbnRhcmZlbHRldCc7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ1ZhbGdlbmUgYmxlIG9wcGRhdGVydC4nOwokbGFuZ1snaW1hZ2UnXSA9ICdCaWxkZSc7CiRsYW5nWydpbWFnZXMnXSA9ICdiaWxkZXInOwokbGFuZ1sncHJldnBhZ2UnXSA9ICdGb3JyaWdlJzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnbmVzdGUnOwokbGFuZ1snZGVmYXVsdGdhbGxlcnljb21tZW50J10gPSAnVGhhbmsgeW91IGZvciBpbnN0YWxsaW5nIHRoZSBHYWxsZXJ5IG1vZHVsZS4gSWYgeW91IGhhdmUgdXBsb2FkZWQgc29tZSBpbWFnZXMgdG8gdGhlICYjMDM5O3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvJiMwMzk7IGZvbGRlciwgeW91IHdpbGwgc2VlIHRoZW0gYmVsb3cuIFlvdSBjYW4gZWRpdCB0aXRsZXMsIGRlc2NyaXB0aW9ucyBhbmQgdGh1bWJuYWlsIHNpemVzIGluIHRoZSBhZG1pbiBzZWN0aW9uLiBDaGVjayBvdXQgYWxsIHRoZSBvdGhlciBmZWF0dXJlcyB0aGlzIG1vZHVsZSBvZmZlcnMgaW4gdGhlIG1vZHVsZS1oZWxwLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRlciBmb3IgJmFyaW5nOyBzcGVzaWZpc2VyZSBlbiBrYXRhbG9nLCByZWxhdGl2dCB0aWwgdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ0Jlbnl0dCBlbiBhbm5lbiBkYXRhYmFzZW1hbCBmb3IgdmlzbmluZyBhdiBmb3RnYWxsZXJpZXQuIERlbm5lIG1hbCBtJmFyaW5nOyBla3Npc3RlcmUgb2cgdiZhZWxpZztyZSBzeW5saWcgaSBtYWwtZmFuZW4gaSBnYWxsZXJ5LWFkbWlub21yJmFyaW5nO2RldCwgbWVuIGRlbiB0cmVuZ2VyIGlra2UgdiZhZWxpZztyZSBzYXR0IHNvbSBzdGFuZGFyZG1hbC4gT20gZGVubmUgcGFyYW1ldGVyIGlra2UgZXIgc2F0dCwgdmlsIG1hbGVuIHRpbGtueXR0dGV0IGRlbm5la2F0YWxvZ2VuIGJsaSBiZW55dHRldCwgZWxsZXJzIGJsaXIgc3RhbmRhcmRtYWxlbiBiZW55dHRldC4nOwokbGFuZ1snaGVscF9udW1iZXInXSA9ICdNYWtzaW11bSBhbnRhbGwgbWluaWF0eXJiaWxkZXIgJmFyaW5nOyB2aXNlIChwZXIgc2lkZSkuIFZlZCAmYXJpbmc7IGxhIGRlbm5lIHBhcmFtZXRlciB2JmFlbGlnO3JlIHRvbSB2aWwgdmlzZSBhbGxlIGJpbGRlci4nOwokbGFuZ1snaGVscF9zdGFydCddID0gJ1N0YXJ0IHAmYXJpbmc7IG5kZSBiaWxkZS4gVmVkICZhcmluZzsgbGEgZGVubmUgcGFyYW1ldGVyIHRvbSB2aWwgc3RhcnRlIHAmYXJpbmc7IGYmb3NsYXNoO3JzdGUgYmlsZGUuJzsKJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJzdHlyIGh2aWxrZSBiaWxkZXIgJmFyaW5nOyB2aXNlLiBNdWxpZ2UgdmVyZGllciBlcjoKPHVsPgo8bGk+JiMwMzk7YWN0aXZlJiMwMzk7IC0gJmFyaW5nOyB2aXNlIGRlIGJpbGRlciBzb20gZXIgbWFya2VydCBha3RpdiAoc3RhbmRhcmQpPC9saT4KPGxpPiYjMDM5O2luYWN0aXZlJiMwMzk7IC0gJmFyaW5nOyB2aXNlIGt1biBkZSBiaWxkZXIgc29tIGVyIHNhdHQgc29tIGluYWt0aXZlPC9saT4KPGxpPiYjMDM5O2FsbCYjMDM5OyAtICZhcmluZzsgdmlzZSBhbGxlIGJpbGRlcjwvbGk+CjwvdWw+Cic7CiRsYW5nWydoZWxwX2NhdGVnb3J5J10gPSAnJkFyaW5nOyB2aXNlIGt1biBiaWxkZXIvZ2FsbGVyaWVyIHRpbGVnbmV0IHRpbCBkZSBzcGVzaWZpc2VydGUga2F0ZWdvcmllbmUuIEJlbnl0dCAqIGV0dGVyIG5hdm5ldCBmb3IgJmFyaW5nOyB2aXNlIGJhcm5hIG9ncyZhcmluZzsuIEZsZXJlIGthdGVnb3JpZXIga2FuIGJlbnl0dGVzIG9tIGRlIHNlcHJhcmVyZXMgbWVkIGtvbW1hLiBWZWQgJmFyaW5nOyBsYSBkZXR0ZSBzdCZhcmluZzsgYmxhbmt0LCB2aWwgYWxsZSBrYXRhZ29yaWVyIHZpc2VzLic7CiRsYW5nWydoZWxwX2FjdGlvbiddID0gJ092ZXJyaWRlIHRoZSBkZWZhdWx0IGFjdGlvbi4gVXNlIGl0IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGFib3ZlIHBhcmFtZXRlcnMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cjx1bD4KPGxpPiYjMDM5O3Nob3dyYW5kb20mIzAzOTsgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSAmIzAzOTsvKiYjMDM5OyBhZnRlciB0aGUgZGlyZWN0b3J5bmFtZSBpbiB0aGUgZGlyIHBhcmFtZXRlciB0byBpbmNsdWRlIGltYWdlcyBmcm9tIHN1YmRpcmVjdG9yaWVzPC9saT4KPGxpPiYjMDM5O3Nob3dsYXRlc3QmIzAzOTsgLSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgZGlyIHBhcmFtZXRlciBjYW4gYmUgc2V0LCBvciB0aGUgZGVmYXVsdCBHYWxsZXJ5LXJvb3Qgd2lsbCBiZSB1c2VkLiBTdWJkaXJlY3RvcmllcyBhcmUgYXV0b21hdGljYWxseSBpbmNsdWRlZDwvbGk+CjxsaT4mIzAzOTtzaG93bGF0ZXN0ZGlyJiMwMzk7IC0gdG8gZGlzcGxheSBhIHNldCBvZiByYW5kb20gdGh1bWItaW1hZ2VzIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZGlyZWN0b3J5IChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpPC9saT4KPC91bD4KTm90ZSB0aGF0IGltYWdlcyBhcmUgb25seSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHdoZW4gdGhlIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgYWRtaW4uJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4xLjIgIDUgRGVjZW1iZXIgMjAwOS4gVXBkYXRlIEZhbmN5Ym94IHN5c3RlbSB0byB2ZXJzaW9uIDEuMi42LCBGaXggZm9yIEJ1Z3JlcG9ydCAjNDQyMjogRXJyb3Igd2hlbiBzb3J0aW5nb3B0aW9uIGlzIGVtcHR5LCBCdWlsdCBpbiBjaGVjayBmb3IgdGVtcGxhdGVzL2NzcyBkaXJlY3RvcnkgKEJSICM0MzA1KS48L2xpPgo8bGk+VmVyc2lvbiAxLjEuMS4gMTIgTm92ZW1iZXIgMjAwOS4gRml4IGZvciBCdWdyZXBvcnQgIzQyOTQ6IFRodW1iZm9sZGVyIG5vdCBjcmVhdGVkIHdoZW4gdXBncmFkaW5nLjwvbGk+CjxsaT5WZXJzaW9uIDEuMS4gOCBOb3ZlbWJlciAyMDA5LiBBZGRlZCBzb3J0aW5nIGFuZCBkcmFnJmFtcDtkcm9wIGZlYXR1cmUgKEZSICMzOTA3ICM0MjEwKSwgTW92ZWQgdGh1bWJuYWlsc2V0dGluZ3MgdG8gdGVtcGxhdGVzdGFiLCBNYWtlIGdhbGxlcmllcyBzZWFyY2hhYmxlIChGUiAjMzk1NiksIENyZWF0ZSBiYWNrZW5kIHRodW1icyBpZiB0aGV5IGRvbiYjMDM5O3QgZXhpc3QgaW4gSU0gKEZSICM0MTAxKSwgRml4IGZvciBCUiAjNDAyNywgQWRkZWQgZmlsZWlkIHRvIGltYWdlLW9iamVjdCAoRlIgIzQyNTkpPC9saT4KPGxpPlZlcnNpb24gMS4wLjMuIDggU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyM0MDAxXSwgSW1wcm92ZWQgc3luY2hyb25pemluZyB0aGUgZGF0YWJhc2UgdG8gZmlsZXMsIGFuZCBvdGhlciBtaW5vciBpbXByb3ZlbWVudHMuPC9saT4KPGxpPlZlcnNpb24gMS4wLjIuIDUgU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyMzOTgzXSByZWdhcmRpbmcgc3BhY2VzIGluIGRpcmVjdG9yeSBuYW1lcywgQWRkZWQgdGVtcGxhdGVzIEZhbmN5Ym94IGFuZCBMeXRlYm94X3NsaWRlc2hvdyBhcyBpbiBGZWF0dXJlIHJlcXVlc3RzIFsjMzk0NF0gYW5kIFsjMzk2N108L2xpPgo8bGk+VmVyc2lvbiAxLjAuMS4gMjMgQXVndXN0IDIwMDkuIEFwcGx5IHRodW1ibmFpbC1zZXR0aW5ncyBvbiAmIzAzOTtBbGJ1bS1jb3ZlcnMmIzAzOTsgWyMzOTI0XSwgQnVnZml4IGZvciBbIzM5MjddLCBBZGRlZCBtaXNzaW5nIC9kaXYgdG8gdGhpY2tib3gtdGVtcGxhdGUsIGZpeGVkIGFuIGlzc3VlIHdpdGggZ2VuZXJhdGluZyB0aHVtYm5haWxzIHdoZW4gbm8gdGh1bWJzIGF2YWlsYWJsZSBpbiBJbWFnZU1hbmFnZXIsIGltcHJvdmVkIHRoZSBuYW1pbmcgb2YgdGh1bWJzLCBCdWdmaXggZm9yIFsjMzkzMV0sIFByZXZlbnQgZGlzcGxheSB0aGUgY29udGVudCBvZiBnYWxsZXJpZXMgdGhhdCBhcmUgc2V0IGFzIGluYWN0aXZlLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4gMTcgQXVndXN0IDIwMDkuIFBhZ2luYXRpb24gcGFyYW1ldGVycyBhZGRlZCwgU3RhbmRhcmQgdGVtcGxhdGVzIGNoYW5nZWQgYWNjb3JkaW5nbHksIEV4dGVuZGVkIHRoZSBtb2R1bGUtaGVscCwgQWRkZWQgZnVuY3Rpb25zIHRvIHNob3cgcmFuZG9tIG9yIGxhdGVzdCBpbWFnZXMsIFN1cHBvcnQgb2YgcHJldHR5LXVybHMsIFZhcmlvdXMgaW1wcm92ZW1lbnRzPC9saT4KPGxpPlZlcnNpb24gMC42LiA5IEF1Z3VzdCAyMDA5LiBJbml0aWFsIEJldGEgUmVsZWFzZS48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoZSBHYWxsZXJ5IG1vZHVsZSBpcyBhbiBlYXN5IHRvIHVzZSBwaG90byBnYWxsZXJ5IHdoaWNoIGF1dG9tYXRpY2FsbHkgc2hvd3MgdGhlIGltYWdlcyBvZiBhIHNwZWNpZmllZCBkaXJlY3RvcnkuIFN1YmRpcmVjdG9yaWVzIHdpbGwgYmUgc2hvd24gYXMgc3ViZ2FsbGVyaWVzLiBJdCBoYXMgbG90cyBvZiBmZWF0dXJlcywgc3VjaCBhcyBhdXRvbWF0aWMgdGh1bWJuYWlsaW5nLCB0aGUgdXNlIG9mIG11bHRpcGxlIExpZ2h0Ym94LWxpa2UgdGVtcGxhdGVzIG9yIGFueSBjc3MvamF2YXNjcmlwdCB0ZW1wbGF0ZSB5b3UgbGlrZSwgYW5kIHlvdSBjYW4gZ2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byB5b3VyIGdhbGxlcmllcyBhcyB3ZWxsIGFzIHlvdXIgcGhvdG9zLjwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPkZpcnN0LCBpbnNlcnQgdGhlIG1vZHVsZSB3aXRoIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPgo8cD5UaGF0JiMwMzk7cyBpdCE8L3A+CjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcsIHlvdSBjYW4gZWFzaWx5IG1hbmlwdWxhdGUgd2hpY2ggc3ViZ2FsbGVyeSB3aWxsIGJlIHNob3duIGluIHdoaWNoIHRlbXBsYXRlLCBlLmcuIDxjb2RlPntHYWxsZXJ5IGRpcj0mcXVvdDtob2xpZGF5cy9OZXRoZXJsYW5kczIwMDkmcXVvdDsgdGVtcGxhdGU9JnF1b3Q7TGlnaHRib3gmcXVvdDt9PC9jb2RlPjwvcD4KPHA+QnkgZGVmYXVsdCB0aGUgdGh1bWJuYWlscyBmcm9tIHRoZSBJbWFnZSBNYW5hZ2VyIGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHBob3RvIGdhbGxlcmllcy48L3A+CjxoMz5BZHZhbmNlZCBPcHRpb25zLCBidXQgc3RpbGwgZWFzeSB0byB1c2U8L2gzPgo8cD5JbiB0aGUgYWRtaW4gc2VjdGlvbiB5b3UgaGF2ZSBsb3RzIG9mIG90aGVyIG9wdGlvbnM6PC9wPgo8dWw+CjxsaT5TZXQgYSBwaG90byBhcyB0aGUgZGVmYXVsdCBmb3IgYSBnYWxsZXJ5LCBzbyBpdCB3aWxsIHNob3cgaW4gdGhlIHBhcmVudCBnYWxsZXJ5IGFzIGEgJiMwMzk7Y292ZXImIzAzOTsgaW4gc3RlYWQgb2YgdGhlIGRlZmF1bHQgZm9sZGVyLWljb24uPC9saT4KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gZ2FsbGVyaWVzLjwvbGk+CjxsaT5TZXQgYSBkZWZhdWx0IHRlbXBsYXRlIGZvciBlYWNoIGdhbGxlcnkuPC9saT4KPGxpPlNldCB0aHVtYm5haWwgc2l6ZXMgZm9yIGVhY2ggdGVtcGxhdGUsIHdpdGggcG9zaWJpbGl0aWVzIHRvIHNjYWxlLCBjcm9wIGFuZC9vciB6b29tIHRoZSBpbWFnZXMuPC9saT4KPGxpPlNwZWNpZnkgZm9yIGVhY2ggdGVtcGxhdGUgaW4gd2hpY2ggb3JkZXIgdGhlIHBob3RvcyBoYXZlIHRvIGJlIHNvcnRlZC48L2xpPgo8bGk+T3ZlcnJ1bGUgdGhlIHNvcnRpbmcgbWFudWFsbHkgYnkgZHJhZ2dpbmcmYW1wO2Ryb3BwaW5nIHRoZSBwaG90b3MuCjxsaT5HaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIHBob3Rvcy48L2xpPgo8bGk+U3dpdGNoIGEgc3BlY2lmaWMgcGhvdG8gb3IgZ2FsbGVyeSB0byBpbmFjdGl2ZSwgcHJldmVudGluZyBpdCBmcm9tIGRpc3BsYXkuPC9saT4KPGxpPkVkaXQvY29weSB0ZW1wbGF0ZXMgb3IgY3JlYXRlIG5ldyBvbmVzLiBDaGVjayB0aGUgaW5mby1pY29uIGJlbmVhdGggdGhlIHRlbXBsYXRlLWNvZGUgZm9yIHRoZSBhdmFpbGFibGUgdmFyaWFibGVzLjwvbGk+CjwvdWw+CjxwPkluIG9yZGVyIHRvIGVkaXQgdGVtcGxhdGVzLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICYjMDM5O01vZGlmeSBUZW1wbGF0ZXMmIzAzOTsgcGVybWlzc2lvbi4gVG8gZWRpdCB0aGUgZ2xvYmFsIEdhbGxlcnkgb3B0aW9ucywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSAmIzAzOTtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyYjMDM5OyBwZXJtaXNzaW9uLjwvcD4KPHA+QWxsIHRpdGxlcywgZGVzY3JpcHRpb25zIGFuZCBzZXR0aW5ncyBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gVGhlIGRhdGFiYXNlIHdpbGwgc3luY2hyb25pemUgd2l0aCB0aGUgZmlsZWRpcmVjdG9yeSBlYWNoIHRpbWUgdGhlIGFjY29yZGluZyBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIEdhbGxlcnktYWRtaW4uIEEgbGl0dGxlIHdhcm5pbmc6IHdoZW4geW91IG1vdmUgYW4gaW1hZ2Ugb3Igc3ViZGlyZWN0b3J5IHRvIGFub3RoZXIgZGlyZWN0b3J5LCB5b3Ugd2lsbCBsb29zZSBpdHMgdGl0bGUsIGRlc2NyaXB0aW9uIGFuZCBzZXR0aW5ncy48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgRmVhdHVyZSBSZXF1ZXN0IG9yIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8iPkdhbGxlcnkgUGFnZTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4KPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA5LCBKb3MgLTxhIGhyZWY9Im1haWx0bzpqb3N2ZEBsaXZlLm5sIj5qb3N2ZEBsaXZlLm5sPC9hPi0uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjUwMjk3MzgwLjE3NTIuNDIudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWhlbG1pbnNlbi5ub3x1dG1jY3Q9L2luc3RhbGwvdXBncmFkZS5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTc5MDUyNjIzMDg0MTEwMTAwLjEyMTA0MjM1NzcuMTI1NzYzMTgyMS4xMjU3NjM1MTAwLjIwODgnOwokbGFuZ1sncWNhJ10gPSAnMTIxMDk3MTY5MC0yNzMwODA3My04MTk1MjgzMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMi4xMC4xMjU3NjM1MTAwJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGxlcnkgJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGUgZWVudm91ZGlnc3RlIG1hbmllciBvbSBmb3RvLWdhbGVyaWUmZXVtbDtuIHRlIGJlaGVyZW4gZW4gd2VlciB0ZSBnZXZlbi4nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdFZW4gZ2VicnVpa2Vyc3ZyaWVuZGVsaWprZSBmb3RvLWdhbGVyaWUgZGllIGF1dG9tYXRpc2NoIGRlIGZvdG8mIzAzOTtzIHVpdCBlZW4gc3BlY2lmaWVrZSBkaXJlY3Rvcnkgd2VlcmdlZWZ0Lic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0RlIEdhbGxlcnkgbW9kdWxlIGlzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnRGUgR2FsbGVyeSBtb2R1bGUgdmVyc2llICVzIGlzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdEZSBHYWxsZXJ5IG1vZHVsZSBpcyBiaWpnZXdlcmt0IG5hYXIgdmVyc2llICVzLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnRGUgR2FsbGVyeSBtb2R1bGUgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ0RlIEdhbGxlcnkgbW9kdWxlIGlzIHZlcndpamRlcmQnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZSBHYWxsZXJ5IG1vZHVsZSB3aWx0IHZlcndpamRlcmVuPyBEaXQgaGVlZnQgZ2VlbiBpbnZsb2VkIG9wIGZvdG8mIzAzOTtzLCBtYWFyIHRpdGVscywgb21zY2hyaWp2aW5nZW4gZW4gYWxsZSBtaW5pYXR1cmVuIGRpZSBkb29yIEdhbGxlcnkgd2FyZW4gZ2VnZW5lcmVlcmQgenVsbGVuIHZlcmxvcmVuIGdhYW4uJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ1RvZWdhbmcgZ2V3ZWlnZXJkLiBDb250cm9sZWVyIHV3IHJlY2h0ZW4uJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdBY3RpZXMnOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aWVmJzsKJGxhbmdbJ2FwcGx5J10gPSAnVG9lcGFzc2VuJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgd2lsdCB2ZXJ3aWpkZXJlbj8nOwokbGFuZ1snY2FuY2VsJ10gPSAnQW5udWxlZXInOwokbGFuZ1snY29weSddID0gJ0tvcGllZXInOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYWFyZCc7CiRsYW5nWydkZWxldGUnXSA9ICdWZXJ3aWpkZXInOwokbGFuZ1snZWRpdCddID0gJ1dpanppZyc7CiRsYW5nWydlcnJvciddID0gJ0ZvdXQhJzsKJGxhbmdbJ3NldGZhbHNlJ10gPSAnWmV0IG9wIE9ud2FhciAoZmFsc2UpJzsKJGxhbmdbJ3NldHRydWUnXSA9ICdaZXQgb3AgV2FhciAodHJ1ZSknOwokbGFuZ1snc3VibWl0J10gPSAnT3BzbGFhbic7CiRsYW5nWydnYWxsZXJpZXMnXSA9ICdHYWxlcmllJmV1bWw7bic7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGVyaWUnOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdCZXdlcmsgZ2FsZXJpZSc7CiRsYW5nWydhZGRnYWxsZXJ5J10gPSAnVm9lZyBlZW4gZ2FsZXJpZSB0b2UnOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnR2VlbiBnYWxlcmllJmV1bWw7biBiZXNjaGlrYmFhcic7CiRsYW5nWydpdGVtJ10gPSAnQWZiZWVsZGluZyc7CiRsYW5nWyd0aXRsZSddID0gJ1RpdGVsJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydub2ZpbGVzdGV4dCddID0gJ0dlZW4gZm90byYjMDM5O3MgYWFud2V6aWcnOwokbGFuZ1snZ2FsbGVyeXRpdGxlJ10gPSAnR2FsZXJpZSBUaXRlbCc7CiRsYW5nWydjb21tZW50J10gPSAnT21zY2hyaWp2aW5nJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2phYmxvb24nOwokbGFuZ1snaGlkZXBhcmVudGxpbmsnXSA9ICdWZXJiZXJnIGxpbmsgbmFhciBib3ZlbmxpZ2dlbmRlIGdhbGVyaWUnOwokbGFuZ1sndXNlZGVmYXVsdCddID0gJ2dlYnJ1aWsgc3RhbmRhYXJkJzsKJGxhbmdbJ3NvcnRieXNldHRpbmdzJ10gPSAnU29ydGVlciBjb25mb3JtIHNqYWJsb29uaW5zdGVsbGluZ2VuJzsKJGxhbmdbJ2dhbGxlcnl1cGRhdGVkJ10gPSAnRGUgZ2FsZXJpZSBpcyBzdWNjZXN2b2wgYmlqZ2V3ZXJrdC4nOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ0JpandlcmtlbiB2YW4gZGUgZ2FsZXJpZSBpcyBtaXNsdWt0Lic7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdTamFibG9uZW4nOwokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ0Jlc2NoaWtiYXJlIFNqYWJsb25lbic7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hYW0nOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdTdGFuZGFhcmQnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTWFhayBlZW4gbmlldXcgc2phYmxvb24nOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdTamFibG9vbiBFZGl0b3InOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1NqYWJsb29uIE5hYW0nOwokbGFuZ1sndGh1bWJuYWlsc2l6ZSddID0gJ01pbmlhdHV1ciBhZm1ldGluZ2VuIChGcm9udGVuZCknOwokbGFuZ1snbGVhdmVlbXB0eSddID0gJyhsYWF0IGRpdCBsZWVnIG9tIGRlIHN0YW5kYWFyZCBtaW5pYXR1cmVuIHVpdCBJbWFnZSBNYW5hZ2VyIHRlIGdlYnJ1aWtlbiknOwokbGFuZ1snd2lkdGgnXSA9ICdicmVlZHRlJzsKJGxhbmdbJ2hlaWdodCddID0gJ2hvb2d0ZSc7CiRsYW5nWydyZXNpemVtZXRob2QnXSA9ICdoZXJzY2hhYWwgbWV0aG9kZSc7CiRsYW5nWydjcm9wJ10gPSAnYmlqc25pamRlbic7CiRsYW5nWydzY2FsZSddID0gJ3NjaGFsZW4nOwokbGFuZ1snem9vbWNyb3AnXSA9ICdpbnpvb21lbiAmYW1wOyBiaWpzbmlqZGVuJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ2luem9vbWVuICZhbXA7IHNjaGFsZW4nOwokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTWF4aW11bSBhYW50YWwgYWZiZWVsZGluZ2VuIHBlciBwYWdpbmEnOwokbGFuZ1snc2hvd2FsbGltYWdlcyddID0gJ0xhYXQgZGl0IGxlZWcgb20gYWxsZSBhZmJlZWxkaW5nZW4gdGUgdG9uZW4sIHpvbmRlciBwYWdpbmFsaW5rcyc7CiRsYW5nWydzb3J0aW5nb3B0aW9ucyddID0gJ1NvcnRlZXIgT3B0aWVzJzsKJGxhbmdbJ3NwZWNpZnlzb3J0ZmllbGRzJ10gPSAnR2VlZiBkZSB2ZWxkZW4gYWFuIHdhYXJvcCBnZXNvcnRlZXJkIG1vZXQgd29yZGVuJzsKJGxhbmdbJ2FzY2VuZGluZyddID0gJ29wbG9wZW5kJzsKJGxhbmdbJ2Rlc2NlbmRpbmcnXSA9ICdhZmxvcGVuZCc7CiRsYW5nWydhZGRmaWVsZCddID0gJ1ZvZWcgdmVsZCB0b2UnOwokbGFuZ1snZGVsZXRlZmllbGQnXSA9ICdWZXJ3aWpkZXIgbGFhdHN0ZSByZWdlbCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdTamFibG9vbiBDb2RlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWpzJ10gPSAnU2phYmxvb24gSmF2YVNjcmlwdCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdTamFibG9vbiBDU1Mtc3R5bGVzaGVldCc7CiRsYW5nWydyZXNldG9yaWdpbmFsJ10gPSAnUmVzZXQgbmFhciBvcmlnaW5lZWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgZGUgdGVtcGxhdGUtY29kZSB3aWx0IHJlc2V0dGVuIG5hYXIgZGUgb29yc3Byb25rZWxpamtlIGNvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ0hldCBzamFibG9vbiBpcyBzdWNjZXN2b2wgYmlqZ2V3ZXJrdC4nOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ0hldCBzamFibG9vbiBpcyB0b2VnZXZvZWdkLic7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdEZSBzamFibG9vbi1uYWFtIGJlc3RhYXQgcmVlZHMuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1NqYWJsb29uIHZlcndpamRlcmQnOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzJ10gPSAnQmVzY2hpa2JhcmUgU2phYmxvb24gU21hcnR5IFZhcmlhYmVsZW4nOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzbGlzdCddID0gJ09uZGVyc3RhYW5kZSB2YXJpYWJlbGVuIGt1bm5lbiBnZWJydWlrdCB3b3JkZW4gaW4gZGUgc2phYmxvbmVuOjxiciAvPjxiciAvPgo8Y29kZT57JG1vZHVsZV9tZXNzYWdlfTwvY29kZT4gLSBmb3V0bWVsZGluZywgaGVlZnQgYWxsZWVuIGluaG91ZCBhbHMgZXIgd2F0IHRlIG1lbGRlbiBpczxiciAvPgo8Y29kZT57JGdhbGxlcnl0aXRsZX08L2NvZGU+IC0gdGl0ZWwgdmFuIGRlIGdhbGVyaWUuIEFscyBlciBnZWVuIHRpdGVsIGlzIGluZ2V2dWxkLCBkYW4gd29yZHQgZGUgbmFhbSB2YW4gZGUgZGlyZWN0b3J5IGdldG9vbmQ8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gb21zY2hyaWp2aW5nIHZhbiBkZSBnYWxlcmllPGJyIC8+Cjxjb2RlPnskcGFyZW50bGlua308L2NvZGU+IC0gbGluayBuYWFyIGRlIGJvdmVubGlnZ2VuZGUgZ2FsZXJpZTxiciAvPgo8Y29kZT57JGhpZGVwYXJlbnRsaW5rfTwvY29kZT4gLSB3YWFyL29ud2FhcjxiciAvPgo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIGFhbnRhbCwgdG9vbnQgYmlqdm9vcmJlZWxkICZxdW90OzYgZm90byYjMDM5O3MmcXVvdDssIGFmaGFua2VsaWprIHZhbiBkZSB0YWFsPGJyIC8+Cjxjb2RlPnskaXRlbWNvdW50fTwvY29kZT4gLSB0b3RhYWwgYWFudGFsIGl0ZW1zLCBkdXMgZm90byYjMDM5O3MgKyBzdWJnYWxlcmllJmV1bWw7bjxiciAvPgo8Y29kZT57JHBhZ2VzfTwvY29kZT4gLSBhYW50YWwgcGFnaW5hJiMwMzk7czxiciAvPgo8Y29kZT57JHByZXZwYWdlfTwvY29kZT4gLSBsaW5rIG5hYXIgZGUgdm9yaWdlIHBhZ2luYSwgaW5kaWVuIHZhbiB0b2VwYXNzaW5nPGJyIC8+Cjxjb2RlPnskbmV4dHBhZ2V9PC9jb2RlPiAtIGxpbmsgbmFhciBkZSB2b2xnZW5kZSBwYWdpbmEsIGluZGllbiB2YW4gdG9lcGFzc2luZzxiciAvPgo8Y29kZT57JHBhZ2VsaW5rc308L2NvZGU+IC0gbGlua3MgbmFhciBlbGtlIGJlc2NoaWtiYXJlIHBhZ2luYTxiciAvPgo8Y29kZT57JGltYWdlc308L2NvZGU+IC0gYXJyYXkgbWV0IGRlIHZvbGdlbmRlIGtleXM6PGJyIC8+CiAtIDxjb2RlPmZpbGU8L2NvZGU+IC0gcmVsYXRpZWYgcGFkIG5hYXIgZGUgb3JpZ2luZWxlIGZvdG8gKG9mIHN1YmdhbGVyaWUpPGJyIC8+CiAtIDxjb2RlPnRpdGxlPC9jb2RlPiAtIHRpdGVsIHZhbiBkZSBmb3RvLiBBbHMgZXIgZ2VlbiB0aXRlbCBpcyBpbmdldnVsZCwgZGFuIHdvcmR0IGRlIGZpbGUtbmFhbSBnZXRvb25kPGJyIC8+CiAtIDxjb2RlPmNvbW1lbnQ8L2NvZGU+IC0gb21zY2hyaWp2aW5nIHZhbiBkZSBmb3RvPGJyIC8+CiAtIDxjb2RlPmZpbGVkYXRlPC9jb2RlPiAtIGFhbm1hYWtkYXR1bS90aWpkPGJyIC8+CiAtIDxjb2RlPnRodW1iPC9jb2RlPiAtIHJlbGF0aWVmIHBhZCBuYWFyIGRlIG1pbmlhdHV1ci4gSW4gZ2V2YWwgdmFuIGVlbiBzdWJnYWxlcmllLCBkYW4gdmVyd2lqc3QgZGl0IG5hYXIgZGUgbWluaWF0dXVyIHZhbiBkZSBmb3RvIGRpZSBnZW1hcmtlZXJkIGlzIGFscyBkZWZhdWx0IGluIGRlIGJldHJlZmZlbmRlIHN1YmdhbGVyaWUuIEFscyBlciBnZWVuIGRlZmF1bHR3YWFyZGUgYWFuIGVlbiBmb3RvIGlzIHRvZWdla2VuZCwgZGFuIHdvcmR0IGVlbiBzdGFuZGFhcmQgZm9sZGVyLWljb24gZ2VicnVpa3QuPGJyIC8+CiAtIDxjb2RlPmZpbGVpZDwvY29kZT4gLSB1bmlla2UgaWQgdm9vciBkZSBmb3RvIG9mIHN1YmdhbGVyaWU8YnIgLz4KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gaXMgd2FhciBhbHMgaGV0IGl0ZW0gZWVuIHN1YmdhbGVyaWUgYmV0cmVmdDxiciAvPic7CiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aWVzJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ1RvZWdlc3RhbmUgRXh0ZW5zaWVzJzsKJGxhbmdbJ3VzZV9jb21tZW50X3d5c2l3eWcnXSA9ICdHZWJydWlrIGVlbiBXWVNJV1lHIGVkaXRvciB2b29yIGhldCBHYWxsZXJ5IG9tc2NocmlqdmluZyB2ZWxkJzsKJGxhbmdbJ29wdGlvbnN1cGRhdGVkJ10gPSAnRGUgb3B0aWVzIHppam4gc3VjY2Vzdm9sIGJpamdld2Vya3QuJzsKJGxhbmdbJ2ltYWdlJ10gPSAnYWZiZWVsZGluZyc7CiRsYW5nWydpbWFnZXMnXSA9ICdmb3RvJiMwMzk7cyc7CiRsYW5nWydwcmV2cGFnZSddID0gJ3ZvcmlnZSc7CiRsYW5nWyduZXh0cGFnZSddID0gJ3ZvbGdlbmRlJzsKJGxhbmdbJ2RlZmF1bHRnYWxsZXJ5Y29tbWVudCddID0gJ0JlZGFua3Qgdm9vciBoZXQgaW5zdGFsbGVyZW4gdmFuIGRlIEdhbGxlcnkgbW9kdWxlLiBBbHMgdSB3YXQgZm90byYjMDM5O3MgZ2UmdXVtbDtwbG9hZCBoZWVmdCBuYWFyIGRlIG1hcCAmIzAzOTt1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5JiMwMzk7LCBkYW4gemlqbiBkZXplIGZvdG8mIzAzOTtzIGhpZXJvbmRlciB6aWNodGJhYXIuIFZpYSBkZSBhZG1pbi1zZWN0aWUga3VubmVuIHRpdGVscywgb21zY2hyaWp2aW5nZW4gZW4gYWZtZXRpbmdlbiB2b29yIG1pbmlhdHV1ci1hZmJlZWxkaW5nZW4gd29yZGVuIGluZ2VzdGVsZC4gT250ZGVrIGFsbGUgb3ZlcmlnZSBtb2dlbGlqa2hlZGVuIGRpZSBkZXplIG1vZHVsZSB0ZSBiaWVkZW4gaGVlZnQgaW4gZGUgbW9kdWxlLWhlbHAuJzsKJGxhbmdbJ2hlbHBfZGlyJ10gPSAnUGFyYW1ldGVyIG9tIGVlbiBkaXJlY3RvcnkgdGUgc3BlY2lmaWNlcmVuLCBoZXQgcGFkIGlzIHJlbGF0aWVmIHQuby52LiB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5Lyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnR2VicnVpayBlZW4gYXBhcnRlIGRhdGFiYXNlIHNqYWJsb29uIHZvb3IgZGUgd2VlcmdhdmUgdmFuIGRlIGZvdG8gZ2FsZXJpZS4gRGl0IHNqYWJsb29uIG1vZXQgYmVzdGFhbiBlbiB6aWNodGJhYXIgemlqbiBpbiBkZSB0YWIgU2phYmxvbmVuIGluIGRlIEdhbGxlcnkgYWRtaW4sIG1hYXIgaGV0IGhvZWZ0IG5pZXQgZGUgc3RhbmRhYXJkIHNqYWJsb29uIHRlIHppam4uIEFscyBkZXplIHBhcmFtZXRlciBuaWV0IG9wZ2VnZXZlbiBpcywgd29yZHQgaGV0IHNqYWJsb29uIGdlYnJ1aWt0IHdlbGtlIGlzIHRvZWdla2VuZCBhYW4gZGUgZ2FsZXJpZSwgYW5kZXJzIHdvcmR0IGhldCBzdGFuZGFhcmQgc2phYmxvb24gZ2VicnVpa3QnOwokbGFuZ1snaGVscF9udW1iZXInXSA9ICdNYXhpbWFhbCBhYW50YWwgZm90byYjMDM5O3MgZGF0IGdldG9vbmQgd29yZHQgKHBlciBwYWdpbmEpLiBTdGFuZGFhcmQgd29yZGVuIGFsbGUgZm90byYjMDM5O3MgZ2V0b29uZC4nOwokbGFuZ1snaGVscF9zdGFydCddID0gJ0JlZ2luIHdlZXJnYXZlIGJpaiBkZSB6b3ZlZWxzdGUgZm90by4gU3RhbmRhYXJkIHdvcmR0IGJlZ29ubmVuIG1ldCBkZSBlZXJzdGUgZm90byc7CiRsYW5nWydoZWxwX3Nob3cnXSA9ICdCZXBhYWwgd2Vsa2UgZm90byYjMDM5O3MgbW9ldGVuIHdvcmRlbiBnZXRvb25kLiBNb2dlbGlqa2Ugd2FhcmRlbiB6aWpuOgo8dWw+CjxsaT4mIzAzOTthY3RpdmUmIzAzOTsgLSBvbSBhbGxlIGZvdG8mIzAzOTtzIHdlZXIgdGUgZ2V2ZW4gZGllIHppam4gZ2VtYXJrZWVyZCBhbHMgYWN0aWVmIChzdGFuZGFhcmQpPC9saT4KPGxpPiYjMDM5O2luYWN0aXZlJiMwMzk7IC0gb20gYWxsZWVuIGRlIGZvdG8mIzAzOTtzIGRpZSBnZW1hcmtlZXJkIHppam4gYWxzIGluYWN0aWVmIHdlZXIgdGUgZ2V2ZW48L2xpPgo8bGk+JiMwMzk7YWxsJiMwMzk7IC0gbGFhdCBhbGxlIGZvdG8mIzAzOTtzIHppZW48L2xpPgo8L3VsPgonOwokbGFuZ1snaGVscF9jYXRlZ29yeSddID0gJ1Rvb24gYWxsZWVuIGZvdG8mIzAzOTtzL2dhbGVyaWUmZXVtbDtuIGRpZSB0b2VnZWtlbmQgemlqbiBhYW4gZGUgb3BnZWdldmVuIGNhdGVnb3JpJmV1bWw7bi4gRG9vciBlZW4gKiBhY2h0ZXIgZGUgZGlyZWN0b3J5LW5hYW0gdGUgcGxhYXRzZW4sIHdvcmRlbiBvb2sgc3ViY2F0ZWdvcmllJmV1bWw7biB3ZWVyZ2VnZXZlbi4gTWVlcmRlcmUgY2F0ZWdvcmllJmV1bWw7biBrdW5uZW4gd29yZGVuIG9wZ2VnZXZlbiwgbWl0cyBnZXNjaGVpZGVuIG1ldCBlZW4ga29tbWEuIFN0YW5kYWFyZCB3b3JkZW4gYWxsZSBjYXRlZ29yaWUmZXVtbDtuIGdldG9vbmQuJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnQmVwYWFsIGRlIHVpdCB0ZSB2b2VyZW4gYWN0aWUuIEdlYnJ1aWsgZGl0IGluIGNvbWJpbmF0aWUgbWV0IGRlIGJvdmVuZ2Vub2VtZGUgcGFyYW1ldGVycy4gTW9nZWxpamtlIHdhYXJkZW4gemlqbjoKPHVsPgo8bGk+JiMwMzk7c2hvd3JhbmRvbSYjMDM5OyAtIFRvb250IGVlbiBvcGdlZ2V2ZW4gYWFudGFsIHdpbGxla2V1cmlnZSBtaW5pYXR1cmVuLiAoQWxsZWVuIHZhbiB0b2VwYXNzaW5nIG9wIGZvdG8mIzAzOTtzIGRpZSB6aWpuIG9wZ2VzbGFnZW4gaW4gZGUgZGF0YWJhc2UsIHN0YW5kYWFyZCBpbmdlc3RlbGQgb3AgNiBmb3RvJiMwMzk7cykuIERvb3IgYmlqIGRlIGRpciBwYXJhbWV0ZXIgJiMwMzk7LyomIzAzOTsgYWNodGVyIGRlIGRpcmVjdG9yeS1uYWFtIHRlIHBsYWF0c2VuLCB3b3JkZW4gb29rIGRlIGZvdG8mIzAzOTtzIHVpdCBzdWJkaXJlY3RvcmllcyBtZWVnZW5vbWVuPC9saT4KPGxpPiYjMDM5O3Nob3dsYXRlc3QmIzAzOTsgLSBUb29udCBkZSBsYWF0c3QgdG9lZ2V2b2VnZGUgZm90byYjMDM5O3MuIChBbGxlZW4gdmFuIHRvZXBhc3Npbmcgb3AgZm90byYjMDM5O3MgZGllIHppam4gb3BnZXNsYWdlbiBpbiBkZSBkYXRhYmFzZSwgc3RhbmRhYXJkIGluZ2VzdGVsZCBvcCA2IGZvdG8mIzAzOTtzKSBBbHMgZGUgZGlyIHBhcmFtZXRlciBuaWV0IG9wZ2VnZXZlbiBpcywgZGFuIHdvcmR0IGRlIEdhbGxlcnktcm9vdCBnZWJydWlrdC4gU3ViZGlyZWN0b3JpZXMgd29yZGVuIGF1dG9tYXRpc2NoIG1lZWdlbm9tZW48L2xpPgo8bGk+JiMwMzk7c2hvd2xhdGVzdGRpciYjMDM5OyAtIFRvb250IGVlbiBvcGdlZ2V2ZW4gYWFudGFsIHdpbGxla2V1cmlnZSBtaW5pYXR1cmVuIHVpdCBkZSBsYWF0c3QgdG9lZ2V2b2VnZGUgZGlyZWN0b3J5IChBbGxlZW4gdmFuIHRvZXBhc3Npbmcgb3AgZm90byYjMDM5O3MgZGllIHppam4gb3BnZXNsYWdlbiBpbiBkZSBkYXRhYmFzZSwgc3RhbmRhYXJkIGluZ2VzdGVsZCBvcCA2IGZvdG8mIzAzOTtzKTwvbGk+CjwvdWw+Ck1lcmsgb3AgZGF0IGFmYmVlbGRpbmdzZ2VnZXZlbnMgcGFzIGluIGRlIGRhdGFiYXNlIHdvcmRlbiBvcGdlc2xhZ2VuIG9wIGhldCBtb21lbnQgZGF0IGRlIEdhbGxlcnkgbW9kdWxlIGluIGRlIGFkbWluLXNlY3RpZSBiZXpvY2h0IHdvcmR0Lic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+IAo8bGk+VmVyc2lvbiAxLjEuMiAgNSBEZWNlbWJlciAyMDA5LiBVcGRhdGUgRmFuY3lib3ggc3lzdGVtIHRvIHZlcnNpb24gMS4yLjYsIEZpeCBmb3IgQnVncmVwb3J0ICM0NDIyOiBFcnJvciB3aGVuIHNvcnRpbmdvcHRpb24gaXMgZW1wdHksIEJ1aWx0IGluIGNoZWNrIGZvciB0ZW1wbGF0ZXMvY3NzIGRpcmVjdG9yeSAoQlIgIzQzMDUpLjwvbGk+CjxsaT5WZXJzaW9uIDEuMS4xLiAxMiBOb3ZlbWJlciAyMDA5LiBGaXggZm9yIEJ1Z3JlcG9ydCAjNDI5NDogVGh1bWJmb2xkZXIgbm90IGNyZWF0ZWQgd2hlbiB1cGdyYWRpbmcuPC9saT4KPGxpPlZlcnNpb24gMS4xLiA4IE5vdmVtYmVyIDIwMDkuIEFkZGVkIHNvcnRpbmcgYW5kIGRyYWcmYW1wO2Ryb3AgZmVhdHVyZSAoRlIgIzM5MDcgIzQyMTApLCBNb3ZlZCB0aHVtYm5haWxzZXR0aW5ncyB0byB0ZW1wbGF0ZXN0YWIsIE1ha2UgZ2FsbGVyaWVzIHNlYXJjaGFibGUgKEZSICMzOTU2KSwgQ3JlYXRlIGJhY2tlbmQgdGh1bWJzIGlmIHRoZXkgZG9uJiMwMzk7dCBleGlzdCBpbiBJTSAoRlIgIzQxMDEpLCBGaXggZm9yIEJSICM0MDI3LCBBZGRlZCBmaWxlaWQgdG8gaW1hZ2Utb2JqZWN0IChGUiAjNDI1OSk8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMy4gOCBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzQwMDFdLCBJbXByb3ZlZCBzeW5jaHJvbml6aW5nIHRoZSBkYXRhYmFzZSB0byBmaWxlcywgYW5kIG90aGVyIG1pbm9yIGltcHJvdmVtZW50cy48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMi4gNSBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzM5ODNdIHJlZ2FyZGluZyBzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzLCBBZGRlZCB0ZW1wbGF0ZXMgRmFuY3lib3ggYW5kIEx5dGVib3hfc2xpZGVzaG93IGFzIGluIEZlYXR1cmUgcmVxdWVzdHMgWyMzOTQ0XSBhbmQgWyMzOTY3XTwvbGk+CjxsaT5WZXJzaW9uIDEuMC4xLiAyMyBBdWd1c3QgMjAwOS4gQXBwbHkgdGh1bWJuYWlsLXNldHRpbmdzIG9uICYjMDM5O0FsYnVtLWNvdmVycyYjMDM5OyBbIzM5MjRdLCBCdWdmaXggZm9yIFsjMzkyN10sIEFkZGVkIG1pc3NpbmcgL2RpdiB0byB0aGlja2JveC10ZW1wbGF0ZSwgZml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIHRodW1ibmFpbHMgd2hlbiBubyB0aHVtYnMgYXZhaWxhYmxlIGluIEltYWdlTWFuYWdlciwgaW1wcm92ZWQgdGhlIG5hbWluZyBvZiB0aHVtYnMsIEJ1Z2ZpeCBmb3IgWyMzOTMxXSwgUHJldmVudCBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGdhbGxlcmllcyB0aGF0IGFyZSBzZXQgYXMgaW5hY3RpdmUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiAxNyBBdWd1c3QgMjAwOS4gUGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGFkZGVkLCBTdGFuZGFyZCB0ZW1wbGF0ZXMgY2hhbmdlZCBhY2NvcmRpbmdseSwgRXh0ZW5kZWQgdGhlIG1vZHVsZS1oZWxwLCBBZGRlZCBmdW5jdGlvbnMgdG8gc2hvdyByYW5kb20gb3IgbGF0ZXN0IGltYWdlcywgU3VwcG9ydCBvZiBwcmV0dHktdXJscywgVmFyaW91cyBpbXByb3ZlbWVudHM8L2xpPgo8bGk+VmVyc2lvbiAwLjYuIDkgQXVndXN0IDIwMDkuIEluaXRpYWwgQmV0YSBSZWxlYXNlLjwvbGk+CjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2F0IGRvZXQgZGl0PzwvaDM+CjxwPkRlIEdhbGxlcnkgbW9kdWxlIGlzIGVlbiBnZWJydWlrZXJzdnJpZW5kZWxpamsgZm90by1hbGJ1bSBkaWUgYXV0b21hdGlzY2ggZGUgZm90byYjMDM5O3MgdWl0IGVlbiBvcGdlZ2V2ZW4gZGlyZWN0b3J5IHRvb250LgpTdWJkaXJlY3RvcmllcyB3b3JkZW4gZ2V0b29udCBhbHMgc3ViLWdhbGVyaWUmZXVtbDtuLiBEZSBtb2R1bGUgaGVlZnQgdmVlbCBpbmdlYm91d2RlIG1vZ2VsaWpraGVkZW4sIHpvYWxzIGhldCBhdXRvbWF0aXNjaCBnZW5lcmVyZW4gdmFuIG1pbmlhdHVyZW4sIGhldCBnZWJydWlrIHZhbiBtZWVyZGVyZSBMaWdodGJveC1hY2h0aWdlIHNqYWJsb25lbiBvZiBlbGsgYW5kZXIgZ2V3ZW5zdGUgY3NzL2phdmFzY3JpcHQtc2phYmxvb24sIGVuIGFhbiB6b3dlbCBnYWxlcmllJmV1bWw7biBhbHMgZm90byYjMDM5O3Mga3VubmVuIHRpdGVscyBlbiBvbXNjaHJpanZpbmdlbiB3b3JkZW4gdG9lZ2VrZW5kLjwvcD4KPGgzPkhvZSBnZWJydWlrIGlrIGhldDwvaDM+CjxwPkFsbGVyZWVyc3QgbW9ldCBkZSB7R2FsbGVyeX0gdGFnIGluIGVlbiBwYWdpbmEgb2Ygc2phYmxvb24gZ2VwbGFhdHN0IHdvcmRlbi4gRGFhcm5hIGt1bm5lbiBmb3RvJiMwMzk7cyB2aWEgZGUgSW1hZ2UgTWFuYWdlciwgRmlsZSBNYW5hZ2VyIChiaWp2LiBtZWVyZGVyZSBmb3RvJiMwMzk7cyB1cGxvYWRlbiBpbiAmZWFjdXRlOyZlYWN1dGU7biB6aXAtYmVzdGFuZCksIG9mIEZUUCBuYWFyIGRlIG1hcCB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBnZSZ1dW1sO3Bsb2FkIHdvcmRlbi48L3A+CjxwPkRhdCBpcyBhbGxlcyE8L3A+CjxwPkFscyBtZWVyIGdhbGVyaWUmZXVtbDtuIGdld2Vuc3QgemlqbiwgY3JlJmV1bWw7ZXIgZGFuIHN1YmRpcmVjdG9yaWVzIGVuIHVwbG9hZCBlciBmb3RvJiMwMzk7cyBuYWFydG9lIHpvYWxzIG9tc2NocmV2ZW4uIERvb3IgcGFyYW1ldGVycyB0b2UgdGUgdm9lZ2VuIGFhbiBkZSB7R2FsbGVyeX0gdGFnLCBrYW4gZWVudm91ZGlnIGluZ2VzdGVsZCB3b3JkZW4gd2Vsa2Ugc3ViZ2FsZXJpZSBnZXRvb25kIG1vZXQgd29yZGVuIG1ldCB3ZWxrIHNqYWJsb29uLCBiaWp2LiB7R2FsbGVyeSBkaXI9JnF1b3Q7dmFrYW50aWVzL1ZlbHV3ZTIwMDkmcXVvdDsgdGVtcGxhdGU9JnF1b3Q7TGlnaHRib3gmcXVvdDt9PC9wPgo8cD5TdGFuZGFhcmQgd29yZGVuIGRlIG1pbmlhdHVyZW4gdmFuIGRlIEltYWdlIE1hbmFnZXIgZ2VicnVpa3QgYmlqIGRlIHdlZXJnYXZlIHZhbiBnYWxlcmllJmV1bWw7bi48L3A+CjxoMz5HZWF2YW5jZWVyZGUgb3B0aWVzLCBtYWFyIG5vZyBzdGVlZHMgZWVudm91ZGlnIHRlIGdlYnJ1aWtlbjwvaDM+CjxwPkluIGRlIGFkbWluIHNlY3RpZSB2YW4gZGUgbW9kdWxlIHppam4gZGUgdm9sZ2VuZGUgb3B0aWVzIHRlIHZpbmRlbjo8L3A+Cjx1bD4KPGxpPk1hcmtlZXIgZWVuIGZvdG8gYWxzIHN0YW5kYWFyZCB2b29yIGVlbiBnYWxlcmllLCBvbSBkZXplIG1pbmlhdHV1ciB0ZSB0b25lbiBpbiBkZSBib3ZlbmxpZ2dlbmRlIGdhbGVyaWUsIGFscyAmIzAzOTthbGJ1bS1jb3ZlciYjMDM5OyBpbiBwbGFhdHMgdmFuIGhldCBzdGFuZGFhcmQtaWtvb24uPC9saT4KPGxpPkdlZWYgdGl0ZWxzIGVuIG9tc2NocmlqdmluZ2VuIGFhbiBnYWxlcmllJmV1bWw7bi48L2xpPgo8bGk+U3RlbCBlZW4gc3RhbmRhYXJkIHNqYWJsb29uIGluIHZvb3IgZWxrZSBnYWxlcmllLjwvbGk+CjxsaT5HZWVmIG1pbmlhdHV1ci1hZm1ldGluZ2VuIG9wIHZvb3IgZWxrIHNqYWJsb29uLCBtZXQgbW9nZWxpamtoZWlkIG9tIGZvdG8mIzAzOTtzIHRlIHNjaGFsZW4sIGJpaiB0ZSBzbmlqZGVuIGVuL29mIGluIHRlIHpvb21lbi48L2xpPgo8bGk+R2VlZiB2b29yIGVsayBzamFibG9vbiBhYW4gaW4gd2Vsa2Ugdm9sZ29yZGUgZGUgZm90byYjMDM5O3MgbW9ldGVuIHdvcmRlbiBnZXNvcnRlZXJkLjwvbGk+CjxsaT5Tb3J0ZWVyIGZvdG8mIzAzOTtzIGhhbmRtYXRpZyBtZXQgZGUgZHJhZyZhbXA7ZHJvcCBmdW5jdGllPC9saT4KPGxpPkdlZWYgdGl0ZWxzIGVuIG9tc2NocmlqdmluZ2VuIGFhbiBmb3RvJiMwMzk7cy48L2xpPgo8bGk+WmV0IGVlbiBmb3RvIG9mIGdhbGVyaWUgaW5hY3RpZWYgb20gd2VlcmdhdmUgdGUgdm9vcmtvbWVuLjwvbGk+CjxsaT5CZXdlcmsva29waSZldW1sO2VyIG9mIG1hYWsgbmlldXdlIHNqYWJsb25lbi4gS2xpayBvcCBoZXQgaW5mby1pY29vbiBvbmRlciBoZXQgdmVsZCBtZXQgc2phYmxvb24tY29kZSB2b29yIGVlbiBvcHNvbW1pbmcgdmFuIGRlIGJlc2NoaWtiYXJlIHZhcmlhYmVsZW4uPC9saT4KPC91bD4KPHA+T20gc2phYmxvbmVuIHRlIGt1bm5lbiBiZXdlcmtlbiwgbW9ldCBlZW4gZ2VicnVpa2VyIGxpZCB6aWpuIHZhbiBlZW4gZ3JvZXAgbWV0ICYjMDM5O01vZGlmeSBUZW1wbGF0ZXMmIzAzOTsgcmVjaHRlbi4gT20gZGUgR2FsbGVyeSBvcHRpZXMgaW4gdGUgc3RlbGxlbiwgbW9ldCBlZW4gZ2VicnVpa2VyIHRvdCBlZW4gZ3JvZXAgYmVob3JlbiBkaWUgJiMwMzk7TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMmIzAzOTsgcmVjaHRlbiBoZWVmdC48L3A+CjxwPkFsbGUgdGl0ZWxzLCBvbXNjaHJpanZpbmdlbiBlbiBpbnN0ZWxsaW5nZW4gd29yZGVuIG9wZ2VzbGFnZW4gaW4gZGUgZGF0YWJhc2UuIERlIGRhdGFiYXNlIHdvcmR0IGdlc3luY2hyb25pc2VlcmQgbWV0IGRlIGZpbGVkaXJlY3RvcnkgdGVsa2VucyB3YW5uZWVyIGRlIGJldHJlZmZlbmRlIGdhbGVyaWUgd29yZHQgYmV6b2NodCBpbiBkZSBHYWxsZXJ5LWFkbWluLiBFZW4ga2xlaW5lIHdhYXJzY2h1d2luZzogZGUgdGl0ZWwsIG9tc2NocmlqdmluZyBlbiBpbnN0ZWxsaW5nZW4gd29yZGVuIHZlcndpamRlcmQgYWxzIGVlbiBmb3RvIG9mIGdhbGVyaWUgd29yZHQgdmVycGxhYXRzdCBuYWFyIGVlbiBhbmRlcmUgZGlyZWN0b3J5LjwvcD4KPGgzPk9uZGVyc3RldW5pbmc8L2gzPgo8cD5EZXplIG1vZHVsZSBnZW5pZXQgZ2VlbiBjb21tZXJjaSZldW1sO2xlIG9uZGVyc3RldW5pbmcuIEVyIHppam4gZWNodGVyIG1lZXJkZXJlIG1vZ2VsaWpraGVkZW4gb20gaHVscCB0ZSBrcmlqZ2VuOjwvcD4KPHVsPgo8bGk+QmV6b2VrIGRlIE1vZHVsZSBGb3JnZQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvIj5HYWxsZXJ5IHBhZ2luYTwvYT4gdm9vciBkZSBsYWF0c3RlIHZlcnNpZSB2YW4gZGV6ZSBtb2R1bGUsIG9mIG9tIGVlbiAmIzAzOTtmZWF0dXJlIHJlcXVlc3QmIzAzOTsgb2YgJiMwMzk7YnVnJiMwMzk7IHRlIHJhcHBvcnRlcmVuLjwvbGk+CjxsaT5BYW52dWxsZW5kZSBiZXNwcmVraW5nIHZhbiBkZXplIG1vZHVsZSBrYW4gb29rIHdvcmRlbiBnZXZvbmRlbiBpbiBkZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5Ub3Qgc2xvdCBrdW50IHUgd2VsbGljaHQgZW5pZyBzdWNjZXMgYm9la2VuIGRvb3IgZGUgYXV0ZXVyIHJlY2h0c3RyZWVrcyB0ZSBtYWlsZW4uPC9saT4gIAo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgSm9zIDxhIGhyZWY9Im1haWx0bzpqb3N2ZEBsaXZlLm5sIj4tam9zdmRAbGl2ZS5ubC08L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+Cic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNTUyOTk1MzAuNDIzLjc1LnV0bWNzcj1kZXYuY21zbWFkZXNpbXBsZS5vcmd8dXRtY2NuPShyZWZlcnJhbCl8dXRtY21kPXJlZmVycmFsfHV0bWNjdD0vcHJvamVjdC9maWxlcy82JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTQyMzU4NTc4Ny4xMjA1ODY3MTc3LjEyNTc1ODkzMjEuMTI1NzY3NDIzMC40NDknOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGVyaWUnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdDZWEgbWFpIHVzb2FyYSBjYWxlIGRlIGEgYWRtaW5pc3RyYSBzaSBhIGFmaXNhIGdhbGVyaWkgZm90byc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ08gZ2FsZXJpZSB1c29yIGRlIGZvbG9zaXQgY2FyZSBhZmlzZWF6YSB1dG9tYXQgaW1hZ2luaWxlIHVudWkgZm9sZGVyIHNwZWNpZmljYXQuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWx1bCBHYWxlcmllIGEgZm9zdCBpbnN0YWxhdCBjdSBzdWNjZXMuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsdWwgR2FsZXJpZSB2ZXJzaXVuZWEgJXMgYSBmb3N0IGluc3RhbGF0Lic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsdWwgR2FsZXJpZSBlc3RlIGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWx1bCBHYWxlcmllIGEgZm9zdCBkZXppbnN0YWxhdCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsdWwgR2FsZXJpZSBhIGZvc3QgZGV6aW5zdGFsYXQnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1NpZ3VyIGRvcml0aSBzYSBkZXppbnN0YWxhdGkgbW9kdWx1bCBHYWxlcmllPyBBY2VzdCBsdWNydSBudSBhZmVjdGVhemEgaW1hZ2luaWxlLCBkYXQgdG9hdGUgZGF0ZWxlIGRlIGNvbWVudGFyaWkgc2kgbWluaWF0dXJpbGUgY2FyZSBhdSBmb3N0IGNyZWF0ZSBkZSBHYWxlcmllIHZvciBmaSBzdGVyc2UuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzIEludGVyemlzLiBWZXJpZmljYXRpLXZhIHBlcm1pc2l1bmlsZS4nOwokbGFuZ1snYWN0aW9ucyddID0gJ0FjdGl1bmknOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXYnOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2FyZSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnU2lndXIgZG9yaXRpIHNhIHN0ZXJnZXRpPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbnVsYXJlJzsKJGxhbmdbJ2NvcHknXSA9ICdDb3BpZXJlJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdpbXBsaWNpdCc7CiRsYW5nWydkZWxldGUnXSA9ICdTdGVyZ2VyZSc7CiRsYW5nWydlZGl0J10gPSAnRWRpdGFyZSc7CiRsYW5nWydlcnJvciddID0gJ0Vyb2FyZSEnOwokbGFuZ1snc2V0ZmFsc2UnXSA9ICdTZXRhcmUgRmFscyc7CiRsYW5nWydzZXR0cnVlJ10gPSAnU2V0YXJlIEFkZXZhcmF0JzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NhbHZhcmUnOwokbGFuZ1snZ2FsbGVyaWVzJ10gPSAnR2FsZXJpaSc7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGVyaWUnOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdFZGl0YXJlIGdhbGVyaWUnOwokbGFuZ1snYWRkZ2FsbGVyeSddID0gJ0FkYXVnYXJlIGdhbGVyaWUnOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnTmNpIG8gZ2FsZXJpZSBkaXNwb25pYmlsYSc7CiRsYW5nWydpbWFnZSddID0gJ2ltYWdpbmUnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRsdSc7CiRsYW5nWydkYXRlJ10gPSAnRGF0YSc7CiRsYW5nWydub2ZpbGVzdGV4dCddID0gJ05pY2kgbyBpbWFnaW5lIGRpc3BvbmliaWxhJzsKJGxhbmdbJ2dhbGxlcnl0aXRsZSddID0gJ1RpdGx1IGdhbGVyaWUnOwokbGFuZ1snY29tbWVudCddID0gJ0NvbWVudGFyaXUnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSAnOwokbGFuZ1sndXNlZGVmYXVsdCddID0gJ2ZvbG9zaXJlIGltcGxpY2l0JzsKJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdEaW1lbnNpdW5lIG1pbmlhdHVyaSAoRnJvbnRlbmQpJzsKJGxhbmdbJ2xlYXZlZW1wdHknXSA9ICcobGFzYXRpIGdvbCBwZW50cnUgYSBmb2xvc2kgbWluaWF0dXJpbGUgaW1wbGljaXRlIGRlIGxhIE1hbmFnZXIgSW1hZ2luaSknOwokbGFuZ1snd2lkdGgnXSA9ICdsYXRpbWUnOwokbGFuZ1snaGVpZ2h0J10gPSAnaW5hbHRpbWUnOwokbGFuZ1sncmVzaXplbWV0aG9kJ10gPSAnbWV0b2RhIHJlZGltZW5zaW9uYXJlJzsKJGxhbmdbJ2Nyb3AnXSA9ICdjcm9wICc7CiRsYW5nWydzY2FsZSddID0gJ3NjYWxhcmUnOwokbGFuZ1snem9vbWNyb3AnXSA9ICd6b29tICZhbXA7IGNyb3AgJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ3pvb20gJmFtcDsgc2NhbGFyZSc7CiRsYW5nWydjcmVhdGV0aHVtYnMnXSA9ICcoUmUpQ3JlYXJlIE1pbmlhdHVyaSc7CiRsYW5nWyd0aHVtYnNjcmVhdGVkJ10gPSAnTWluaWF0dXJpIGNyZWF0ZSc7CiRsYW5nWydnYWxsZXJ5dXBkYXRlZCddID0gJ0dhbGVyaWEgYSBmb3N0IGFjdHVhbGl6YXRhIGN1IHN1Y2Nlcy4nOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ0FjdHVhbGl6YXJlIGdhbGVyaWUgZXN1YXRhLic7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZS11cmknOwokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRldXJpIGRpc3BvbmliaWxlJzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTnVtZSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ0ltcGxpY2l0JzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ0NyZWFyZSB0ZW1wbGF0ZSBub3UnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdFZGl0b3IgdGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ051bWUgdGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnU3Vyc2EgdGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlanMnXSA9ICdKYXZhU2NyaXB0IFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWNzcyddID0gJ1N0eWxlc2hlZXQgQ1NTIHRlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RlbXBsYXRlLXVsIGEgZm9zdCBhY3R1YWxpemF0IGN1IHN1Y2Nlcy4nOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ1RlbXBsYXRlLXVsIGEgZm9zdCBhZGF1Z2F0IGN1IHN1Y2Nlcy4nOwokbGFuZ1snZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnTnVtZWxlIGRlIHRlbXBsYXRlIGV4aXN0YSBkZWphLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdUZW1wbGF0ZSBzdGVycyc7CiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXMnXSA9ICdWYXJpYWJpbGUgc21hcnR5IGRpc3BvbmliaWxlIHBlbnRydSB0ZW1wbGF0ZSc7CiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXNsaXN0J10gPSAnQWNlc3RlYSBzdW50IHZhcmlhYmlsZWxlIHBlIGNhcmUgbGUgcHV0ZXRpIGZvbG9zaSBwZW50cnUgYSBjdXN0b21pemEgdGVtcGxhdGUtdWwgZHVtbmVhdm9hc3RyYTo8YnIgLz48YnIgLz4KeyRtb2R1bGVfbWVzc2FnZX0gLSBlcnJvciBtZXNzYWdlLCBpcyBvbmx5IHNldCBpZiB0aGVyZSYjMDM5O3MgYSBtZXNzYWdlPGJyIC8+CnskZ2FsbGVyeXRpdGxlfSAtIHRpdGxlIG9mIHRoZSBnYWxsZXJ5LiBJZiB0aGVyZSBpcyBubyB0aXRsZSwgdGhpcyB3aWxsIHNob3cgdGhlIGRpcmVjdG9yeSBuYW1lPGJyIC8+CnskZ2FsbGVyeWNvbW1lbnR9IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPgp7JHBhcmVudGxpbmt9IC0gbGluayB0byB0aGUgcGFyZW50IGZvbGRlcjxiciAvPgp7JGltYWdlY291bnR9IC0gc2hvd3MgZS5nLiAmcXVvdDs2IGltYWdlcyZxdW90OywgZGVwZW5kaW5nIG9uIGxhbmd1YWdlPGJyIC8+CnskaXRlbWNvdW50fSAtIG51bWJlciBvZiBpdGVtcywgaW1hZ2VzICsgZm9sZGVyczxiciAvPgp7JHBhZ2VzfSAtIG51bWJlciBvZiBwYWdlczxiciAvPgp7JHByZXZwYWdlfSAtIGxpbmsgdG8gcHJldmlvdXMgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPgp7JG5leHRwYWdlfSAtIGxpbmsgdG8gbmV4dCBwYWdlLCBpZiBhcHBsaWNhYmxlPGJyIC8+CnskcGFnZWxpbmtzfSAtIGxpbmtzIHRvIGVhY2ggZXhpc3RpbmcgcGFnZTxiciAvPgp7JGltYWdlc30gLSBhcnJheSB3aXRoIGtleXM6PGJyIC8+CiZlbXNwOyZidWxsOyBmaWxlIC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgb3JpZ2luYWwgaW1hZ2U8YnIgLz4KJmVtc3A7JmJ1bGw7IHRpdGxlIC0gdGl0bGUgb2YgdGhlIGltYWdlLiBJZiB0aGVyZSBpcyBubyB0aXRsZSwgdGhpcyB3aWxsIHNob3cgdGhlIGZpbGVuYW1lPGJyIC8+CiZlbXNwOyZidWxsOyBjb21tZW50IC0gY29tbWVudCB0byB0aGUgaW1hZ2U8YnIgLz4KJmVtc3A7JmJ1bGw7IGZpbGVkYXRlIC0gY3JlYXRpb24gZGF0ZS90aW1lIDxiciAvPgomZW1zcDsmYnVsbDsgdGh1bWIgLSByZWxhdGl2ZSBwYXRoIHRvIHRoZSB0aHVtYm5haWw8YnIgLz4KJmVtc3A7JmJ1bGw7IGZvbGRlcmxpbmsgLSBsaW5rIHRvIGEgc3ViZ2FsbGVyeSB3aXRoIHRoZSB0aHVtYiBvZiB0aGUgaW1hZ2Ugd2hpY2ggaXMgc2V0IGFzIGRlZmF1bHQgaW4gdGhhdCBzdWJnYWxsZXJ5LiBJZiBubyBpbWFnZSBpcyBzZXQgYXMgZGVmYXVsdCwgYSBzdGFuZGFyZCBmb2xkZXItaWNvbiB3aWxsIGJlIHVzZWQuIGZvbGRlcmxpbmsgaXMgZW1wdHkgaWYgdGhlIGl0ZW0gaXMgYW4gaW1hZ2U8YnIgLz4KJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpdW5pJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ0V4dGVuc2lpIHBlcm1pc2UnOwokbGFuZ1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddID0gJ1NlIGZvbG9zZXN0ZSB1biBlZGl0b3IgV1lTSVdZRyBpbiBjYW1wdWwgZGUgY29tZW50YXJpaSc7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ09wdGl1bmlsZSBhdSBmb3N0IGFjdHVhbGl6YXRlIGN1IHN1Y2Nlcy4nOwokbGFuZ1snaW1hZ2VzJ10gPSAnaW1hZ2luaSc7CiRsYW5nWydwcmV2cGFnZSddID0gJ2luYXBvaSc7CiRsYW5nWyduZXh0cGFnZSddID0gJ2luYWludGUnOwokbGFuZ1snZGVmYXVsdGdhbGxlcnljb21tZW50J10gPSAnVmEgbXVsdHVtaW0gY2EgYXRpIGluc3RhbGF0IG1vZHVsdWwgR2FsZXJpZS4gRGFjYSBhdGkgdXJjYXQgaW1hZ2luaSBpbiBmb2xkZXJ1bCAmIzAzOTt1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyYjMDM5OywgbGUgdmV0aSB2ZWRlYSBtYWkgam9zLiBQdXRldGkgZWRpdGEgdGl0bHVyaWxlLCBkZXNjcmllcmlsZSBzaSBkaW1lbnNpdW5pbGUgbWluaWF0dXJpbG9yIGluIHNlY3RpdW5lYSBkZSBhZG1pbmlzdHJhcmUuIFZlcmlmaWNhdGkgdG9hdGUgY2VsZWxhbHRlIG9wdGl1bmkgZGlzcG9uaWJpbGUgaW4gQWp1dG9yIG1vZHVsLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRydSBwZW50cnUgc3BlY2lmaWNhcmUgZm9sZGVyLCByZWxhdGl2IGxhIHVwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICdGb2xvc2lyZSB0ZW1wbGF0ZSBiYXphIGRlIGRhdGUgc2VwYXJhdCBwZW50cnUgYWZpc2FyZSBnYWxlcmllIGZvdG8uIEFjZXN0IHRlbXBsYXRlIHRyZWJ1aWUgc2EgZXhpc3RlIHNpIHNhIGZpZSB2aXppYmlsIGluIHRhYnVsIGRlIHRlbXBsYXRlLXVyaSBkaW4gcGFub3VsIGRlIGFkbWluaXN0cmFyZSBhbCBtb2R1bHVsdWksIHRvdHVzaSBudSB0cmVidWllIHNhIGZpZSBjZWwgaW1wbGljaXQuIERhY2EgYWNlc3QgcGFyYW1ldHJ1IG51IGVzdGUgc3BlY2lmaWNhdCwgYXR1bmNpIHRlbXBsYXRlLXVsIGFsb2NhdCBmb2xkZXJ1bHVpIGVzdGUgZmxvc2l0LCBhbHRmZWwgc2UgZm9sb3Nlc3RlIGNlbCBpbXBsaWNpdC4nOwokbGFuZ1snaGVscF9udW1iZXInXSA9ICdOdW1hcnVsIG1heGltIGRlIG1pbmlhdHVyaSBkZSBhZmlzYXQgKHBlciBwYWdpbmEpLiBEYWNhIGxhc2F0aSBjYW1wdWwgZ29sLCBzZSB2b3IgYWZpc2EgdG9hdGUgaW1hZ2luaWxlLic7CiRsYW5nWydoZWxwX3N0YXJ0J10gPSAnUG9ybmlyZSBsYSBhIG4tYSBpbWFnaW5lLiBEYWNhIGxhc2F0aSBjYW1wdWwgZ29sLCBzZSB2YSBwb3JuaSBkZSBsYSBwcmltYSBpbWFnaW5lLic7CiRsYW5nWydoZWxwX3Nob3cnXSA9ICdTdXByYXNjcmllIGNhcmUgaW1hZ2luaSBzYSBmaWUgYWZpc2F0ZS4gVmFsb3JpIHBvc2liaWxlIHN1bnQ6Cjx1bD4KPGxpPiYjMDM5O2FjdGl2ZSYjMDM5OyAtIHBlbnRydSBhZmlzYXJlIGltYWdpbmkgbWFyY2F0ZSBjYSBhY3RpdmUgKGltcGxpY2l0KTwvbGk+CjxsaT4mIzAzOTtpbmFjdGl2ZSYjMDM5OyAtIHBlbnRydSBhZmlzYXJlIG51bWFpIGltYWdpbmkgbWFyY2F0ZSBjYSBpbmFjdGl2ZSA8L2xpPgo8bGk+JiMwMzk7YWxsJiMwMzk7IC0gcGVudHJ1IGFmaXNhcmUgdG9hdGUgaW1hZ2luaWxlPC9saT4KPC91bD4KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdUbyBkaXNwbGF5IG9ubHkgaW1hZ2VzL2dhbGxlcmllcyBhc3NpZ25lZCB0byB0aGUgc3BlY2lmaWVkIGNhdGVnb3JpZXMuIFVzZSAqIGFmdGVyIHRoZSBuYW1lIHRvIHNob3cgY2hpbGRyZW4uICBNdWx0aXBsZSBjYXRlZ29yaWVzIGNhbiBiZSB1c2VkIGlmIHNlcGFyYXRlZCB3aXRoIGEgY29tbWEuIExlYXZpbmcgZW1wdHksIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4gJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBVc2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycy4gUG9zc2libGUgdmFsdWVzIGFyZToKPHVsPgo8bGk+JiMwMzk7c2hvd3JhbmRvbSYjMDM5OyAtIHRvIGRpc3BsYXkgYSBzZXQgb2YgcmFuZG9tIHRodW1iLWltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKS4gVGhlIGRpciBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQsIG9yIHRoZSBkZWZhdWx0IEdhbGxlcnktcm9vdCB3aWxsIGJlIHVzZWQuIFVzZSAmIzAzOTsvKiYjMDM5OyBhZnRlciB0aGUgbmFtZSB0byBpbmNsdWRlIGltYWdlcyBmcm9tIHN1YmRpcmVjdG9yaWVzPC9saT4KPGxpPiYjMDM5O3Nob3dsYXRlc3QmIzAzOTsgLSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgZGlyIHBhcmFtZXRlciBtdXN0IGJlIHNldCwgb3IgdGhlIGRlZmF1bHQgR2FsbGVyeS1yb290IHdpbGwgYmUgdXNlZC4gU3ViZGlyZWN0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQ8L2xpPgo8bGk+JiMwMzk7c2hvd2xhdGVzdGRpciYjMDM5OyAtIG5vdCB5ZXQgaW1wbGVtZW50ZWQhIE1lbmQgdG8gZGlzcGxheSBhIHNldCBvZiByYW5kb20gdGh1bWItaW1hZ2VzIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZGlyZWN0b3J5IChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpIFRoZSB0aHVtYi1zZXR0aW5ncyBvZiB0aGUgR2FsbGVyeS1yb290IHdpbGwgYmUgdXNlZDwvbGk+CjwvdWw+IAonOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjEuMiAgNSBEZWNlbWJlciAyMDA5LiBVcGRhdGUgRmFuY3lib3ggc3lzdGVtIHRvIHZlcnNpb24gMS4yLjYsIEZpeCBmb3IgQnVncmVwb3J0ICM0NDIyOiBFcnJvciB3aGVuIHNvcnRpbmdvcHRpb24gaXMgZW1wdHksIEJ1aWx0IGluIGNoZWNrIGZvciB0ZW1wbGF0ZXMvY3NzIGRpcmVjdG9yeSAoQlIgIzQzMDUpLjwvbGk+CjxsaT5WZXJzaW9uIDEuMS4xLiAxMiBOb3ZlbWJlciAyMDA5LiBGaXggZm9yIEJ1Z3JlcG9ydCAjNDI5NDogVGh1bWJmb2xkZXIgbm90IGNyZWF0ZWQgd2hlbiB1cGdyYWRpbmcuPC9saT4KPGxpPlZlcnNpb24gMS4xLiA4IE5vdmVtYmVyIDIwMDkuIEFkZGVkIHNvcnRpbmcgYW5kIGRyYWcmZHJvcCBmZWF0dXJlIChGUiAjMzkwNyAjNDIxMCksIE1vdmVkIHRodW1ibmFpbHNldHRpbmdzIHRvIHRlbXBsYXRlc3RhYiwgTWFrZSBnYWxsZXJpZXMgc2VhcmNoYWJsZSAoRlIgIzM5NTYpLCBDcmVhdGUgYmFja2VuZCB0aHVtYnMgaWYgdGhleSBkb25cJ3QgZXhpc3QgaW4gSU0gKEZSICM0MTAxKSwgRml4IGZvciBCUiAjNDAyNywgQWRkZWQgZmlsZWlkIHRvIGltYWdlLW9iamVjdCAoRlIgIzQyNTkpPC9saT4KPGxpPlZlcnNpb24gMS4wLjMuIDggU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyM0MDAxXSwgSW1wcm92ZWQgc3luY2hyb25pemluZyB0aGUgZGF0YWJhc2UgdG8gZmlsZXMsIGFuZCBvdGhlciBtaW5vciBpbXByb3ZlbWVudHMuPC9saT4KPGxpPlZlcnNpb24gMS4wLjIuIDUgU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyMzOTgzXSByZWdhcmRpbmcgc3BhY2VzIGluIGRpcmVjdG9yeSBuYW1lcywgQWRkZWQgdGVtcGxhdGVzIEZhbmN5Ym94IGFuZCBMeXRlYm94X3NsaWRlc2hvdyBhcyBpbiBGZWF0dXJlIHJlcXVlc3RzIFsjMzk0NF0gYW5kIFsjMzk2N108L2xpPgo8bGk+VmVyc2lvbiAxLjAuMS4gMjMgQXVndXN0IDIwMDkuIEFwcGx5IHRodW1ibmFpbC1zZXR0aW5ncyBvbiAmIzAzOTtBbGJ1bS1jb3ZlcnMmIzAzOTsgWyMzOTI0XSwgQnVnZml4IGZvciBbIzM5MjddLCBBZGRlZCBtaXNzaW5nIC9kaXYgdG8gdGhpY2tib3gtdGVtcGxhdGUsIGZpeGVkIGFuIGlzc3VlIHdpdGggZ2VuZXJhdGluZyB0aHVtYm5haWxzIHdoZW4gbm8gdGh1bWJzIGF2YWlsYWJsZSBpbiBJbWFnZU1hbmFnZXIsIGltcHJvdmVkIHRoZSBuYW1pbmcgb2YgdGh1bWJzLCBCdWdmaXggZm9yIFsjMzkzMV0sIFByZXZlbnQgZGlzcGxheSB0aGUgY29udGVudCBvZiBnYWxsZXJpZXMgdGhhdCBhcmUgc2V0IGFzIGluYWN0aXZlLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4gMTcgQXVndXN0IDIwMDkuIFBhZ2luYXRpb24gcGFyYW1ldGVycyBhZGRlZCwgU3RhbmRhcmQgdGVtcGxhdGVzIGNoYW5nZWQgYWNjb3JkaW5nbHksIEV4dGVuZGVkIHRoZSBtb2R1bGUtaGVscCwgQWRkZWQgZnVuY3Rpb25zIHRvIHNob3cgcmFuZG9tIG9yIGxhdGVzdCBpbWFnZXMsIFN1cHBvcnQgb2YgcHJldHR5LXVybHMsIFZhcmlvdXMgaW1wcm92ZW1lbnRzPC9saT4KPGxpPlZlcnNpb24gMC42LiA5IEF1Z3VzdCAyMDA5LiBJbml0aWFsIEJldGEgUmVsZWFzZS48L2xpPgo8L3VsPiAnOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5GaXJzdCwgaW5zZXJ0IHRoZSBtb2R1bGUgd2l0aCB0aGUge0dhbGxlcnl9IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPgo8cD5UaGF0JiMwMzk7cyBpdCE8L3A+CjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUge0dhbGxlcnl9IHRhZywgeW91IGNhbiBlYXNpbHkgbWFuaXB1bGF0ZSB3aGljaCBzdWJnYWxsZXJ5IHdpbGwgYmUgc2hvd24gaW4gd2hpY2ggdGVtcGxhdGUsIGUuZy4ge0dhbGxlcnkgZGlyPSZxdW90O2hvbGlkYXlzL05ldGhlcmxhbmRzMjAwOSZxdW90OyB0ZW1wbGF0ZT0mcXVvdDtMaWdodGJveCZxdW90O308L3A+CjxwPkJ5IGRlZmF1bHQgdGhlIHRodW1ibmFpbHMgZnJvbSB0aGUgSW1hZ2UgTWFuYWdlciBhcmUgdXNlZCB0byBkaXNwbGF5IHRoZSBwaG90byBnYWxsZXJpZXMuPC9wPgo8aDM+QWR2YW5jZWQgT3B0aW9ucywgYnV0IHN0aWxsIGVhc3kgdG8gdXNlPC9oMz4KPHA+SW4gdGhlIGFkbWluIHNlY3Rpb24geW91IGhhdmUgbG90cyBvZiBvdGhlciBvcHRpb25zOjwvcD4KPHVsPgo8bGk+U2V0IGEgcGhvdG8gYXMgdGhlIGRlZmF1bHQgZm9yIGEgZ2FsbGVyeSwgc28gaXQgd2lsbCBzaG93IGluIHRoZSBwYXJlbnQgZ2FsbGVyeSBhcyBhICYjMDM5O2NvdmVyJiMwMzk7IGluIHN0ZWFkIG9mIHRoZSBkZWZhdWx0IGZvbGRlci1pY29uLjwvbGk+CjxsaT5HaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIGdhbGxlcmllcy48L2xpPgo8bGk+U2V0IGEgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZWFjaCBnYWxsZXJ5LjwvbGk+CjxsaT5TZXQgdGh1bWJuYWlsIHNpemVzIGZvciBlYWNoIGdhbGxlcnksIHdpdGggcG9zaWJpbGl0aWVzIHRvIHNjYWxlLCBjcm9wIGFuZC9vciB6b29tIHRoZSBpbWFnZXMuPC9saT4KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gcGhvdG9zLjwvbGk+CjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPgo8bGk+RWRpdC9jb3B5IHRlbXBsYXRlcyBvciBjcmVhdGUgbmV3IG9uZXMuIENoZWNrIHRoZSBpbmZvLWljb24gYmVuZWF0aCB0aGUgdGVtcGxhdGUtY29kZSBmb3IgdGhlIGF2YWlsYWJsZSB2YXJpYWJsZXMuPC9saT4KPC91bD4KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgJiMwMzk7TW9kaWZ5IFRlbXBsYXRlcyYjMDM5OyBwZXJtaXNzaW9uLiBUbyBlZGl0IHRoZSBnbG9iYWwgR2FsbGVyeSBvcHRpb25zLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICYjMDM5O01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJiMwMzk7IHBlcm1pc3Npb24uPC9wPgo8cD5BbGwgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHNldHRpbmdzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGF0YWJhc2Ugd2lsbCBzeW5jaHJvbml6ZSB3aXRoIHRoZSBmaWxlZGlyZWN0b3J5IGVhY2ggdGltZSB0aGUgYWNjb3JkaW5nIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgR2FsbGVyeS1hZG1pbi4gQSBsaXR0bGUgd2FybmluZzogd2hlbiB5b3UgbW92ZSBhbiBpbWFnZSBvciBzdWJkaXJlY3RvcnkgdG8gYW5vdGhlciBkaXJlY3RvcnksIHlvdSB3aWxsIGxvb3NlIGl0cyB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIHNldHRpbmdzLjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nYWxsZXJ5LyI+R2FsbGVyeSBQYWdlPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgCjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBKb3MgPGEgaHJlZj0ibWFpbHRvOmpvc3ZkQGxpdmUubmwiPjxqb3N2ZEBsaXZlLm5sPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4gCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE1MjYwMzczNTAuMTI1MTk1OTM0My4xMjUxOTgxMTkyLjEyNTE5ODU2ODguNSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI1MTk1OTM0My4xLjEudXRtY3NyPWdvb2dsZXx1dG1jY249KG9yZ2FuaWMpfHV0bWNtZD1vcmdhbmljfHV0bWN0cj1jbXNtYWRlc2ltcGxlJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTkwMTY1MzQ3My0xMjUxOTU5MzQyNzI5JzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR2FsbGVyeQ0KIyBNZXRob2Q6IEluc3RhbGwNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nYWxsZXJ5Lw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCg0KJGRiID0mICRnQ21zLT5HZXREYigpOw0KDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCAnbXlzcWwnID0+ICdUWVBFPU15SVNBTScgKTsNCg0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7DQoNCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbg0KJGZsZHMgPSAiDQoJZmlsZWlkIEkgS0VZIEFVVE8sDQoJZmlsZW5hbWUgQygyNTUpLA0KCWZpbGVwYXRoIEMoMjU1KSwNCglmaWxlZGF0ZSAiIC4gQ01TX0FET0RCX0RUIC4gIiwNCglmaWxlb3JkZXIgSSwNCglhY3RpdmUgSSwNCglkZWZhdWx0ZmlsZSBJLA0KCWdhbGxlcnlpZCBJIEtFWSwNCgl0aXRsZSBDKDI1NSksDQoJY29tbWVudCBYDQoiOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkiLA0KCSRmbGRzLCANCgkkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KLyoNCi8vIGNyZWF0ZSBhIHNlcXVlbmNlDQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnlfc2VxIik7DQoqLw0KDQokZmxkcyA9ICINCglmaWxlaWQgSSBLRVksDQoJdGVtcGxhdGVpZCBJLA0KCWhpZGVwYXJlbnRsaW5rIEkNCiI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV9wcm9wcyIsDQoJJGZsZHMsDQoJJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJGZsZHMgPSAiDQoJdGVtcGxhdGVpZCBJIEtFWSBBVVRPLA0KCXRlbXBsYXRlIEMoMjU1KSwNCgl0aHVtYndpZHRoIEksDQoJdGh1bWJoZWlnaHQgSSwNCglyZXNpemVtZXRob2QgQygxMCksDQoJbWF4bnVtYmVyIEksDQoJc29ydGl0ZW1zIEMoMjU1KQ0KIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMiLA0KCSRmbGRzLA0KCSR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIGNyZWF0ZSBhIHBlcm1pc3Npb24NCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScsICdVc2UgR2FsbGVyeScpOw0KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1NldCBHYWxsZXJ5IFByZWZzJywnU2V0IEdhbGxlcnkgUHJlZnMnKTsNCg0KLy8gY2hlY2sgaWYgY3NzIGRpcmVjdG9yeSBleGlzdHMNCiRjc3NfZGlyID0gJy4uJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidtb2R1bGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidHYWxsZXJ5Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2Nzcyc7DQppZiggIWlzX2RpcigkY3NzX2RpcikgKQ0Kew0KCW1rZGlyKCRjc3NfZGlyKTsNCn0NCg0KLy8gc2V0dXAgdGVtcGxhdGVzDQokdGVtcGxhdGVzID0gYXJyYXkoIGFycmF5KCAndHBsbmFtZScgPT4gJ0ZhbmN5Ym94JyAsICd0cGxmaWxlJyA9PiAndGVtcGxhdGVfZmFuY3lib3gudHBsJyApLA0KCQkJCQkJCQkJCWFycmF5KCAndHBsbmFtZScgPT4gJ0xpZ2h0Ym94JyAsICd0cGxmaWxlJyA9PiAndGVtcGxhdGVfbGlnaHRib3gudHBsJyApLA0KCQkJCQkJCQkJCWFycmF5KCAndHBsbmFtZScgPT4gJ0x5dGVib3hfc2xpZGVzaG93JyAsICd0cGxmaWxlJyA9PiAndGVtcGxhdGVfbHl0ZWJveF9zbGlkZXNob3cudHBsJyApLA0KCQkJCQkJCQkJCWFycmF5KCAndHBsbmFtZScgPT4gJ1NsaW1ib3gnICwgJ3RwbGZpbGUnID0+ICd0ZW1wbGF0ZV9zbGltYm94LnRwbCcgKSwNCgkJCQkJCQkJCQlhcnJheSggJ3RwbG5hbWUnID0+ICdUaGlja2JveCcgLCAndHBsZmlsZScgPT4gJ3RlbXBsYXRlX3RoaWNrYm94LnRwbCcgKSk7DQoNCmZvcmVhY2ggKCAkdGVtcGxhdGVzIGFzICR0ZW1wbGF0ZSApDQp7DQoJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiR0ZW1wbGF0ZVsndHBsZmlsZSddOw0KCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQ0KCXsNCgkJJHRlbXBsYXRlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOw0KCQkkdGhpcy0+U2V0VGVtcGxhdGUoJHRlbXBsYXRlWyd0cGxuYW1lJ10sJHRlbXBsYXRlY29kZSk7DQoJCSR0ZW1wbGF0ZWFyciA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCAkdGVtcGxhdGVjb2RlKTsNCgkJJHRlbXBsYXRlY3NzID0gJHRlbXBsYXRlYXJyWzFdOw0KCQkkaGFuZGxlID0gZm9wZW4oJGNzc19kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRlbXBsYXRlWyd0cGxuYW1lJ10gLiAnLmNzcycsJ3cnKTsNCgkJZndyaXRlKCRoYW5kbGUsJHRlbXBsYXRlY3NzKTsNCgkJZmNsb3NlKCRoYW5kbGUpOw0KCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzICh0ZW1wbGF0ZSxzb3J0aXRlbXMpIFZBTFVFUyAoPyw/KSI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0ZW1wbGF0ZVsndHBsbmFtZSddLCduLWlzZGlyL3MrZmlsZScpKTsNCgkJaWYgKCAkdGVtcGxhdGVbJ3RwbG5hbWUnXSA9PSAnRmFuY3lib3gnICkNCgkJew0KCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfdGVtcGxhdGVfY29udGVudHMnLCR0ZW1wbGF0ZWNvZGUpOw0KCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnLCR0ZW1wbGF0ZVsndHBsbmFtZSddKTsNCgkJfQ0KCX0NCn0NCg0KLy8gY3JlYXRlIGEgcHJlZmVyZW5jZQ0KJHRoaXMtPlNldFByZWZlcmVuY2UoImFsbG93ZWRfZXh0ZW5zaW9ucyIsICJqcGcsanBlZyxnaWYscG5nIik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgidXNlX2NvbW1lbnRfd3lzaXd5ZyIsIGZhbHNlKTsNCg0KLy8gcmVnaXN0ZXIgYW4gZXZlbnQgdGhhdCB0aGUgR2FsbGVyeSB3aWxsIGlzc3VlLiBPdGhlciBtb2R1bGVzDQovLyBvciB1c2VyIHRhZ3Mgd2lsbCBiZSBhYmxlIHRvIHN1YnNjcmliZSB0byB0aGlzIGV2ZW50LCBhbmQgdHJpZ2dlcg0KLy8gb3RoZXIgYWN0aW9ucyB3aGVuIGl0IGdldHMgY2FsbGVkLg0KLy8gJHRoaXMtPkNyZWF0ZUV2ZW50KCAnT25HYWxsZXJ5UHJlZmVyZW5jZUNoYW5nZScgKTsNCg0KLy8gY3JlYXRlIGRlZmF1bHQgaW1hZ2Vmb2xkZXIgYW5kIHRodW1ic2ZvbGRlcg0KaWYoICFpc19kaXIoJy4uJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsIERFRkFVTFRfR0FMTEVSWV9QQVRIKSkgKQ0Kew0KCW1rZGlyKCcuLicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc3RyX3JlcGxhY2UoJy8nLCBESVJFQ1RPUllfU0VQQVJBVE9SLCBERUZBVUxUX0dBTExFUllfUEFUSCkpOw0KfQ0KaWYoICFpc19kaXIoJy4uJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsIERFRkFVTFRfR0FMTEVSWVRIVU1CU19QQVRIKSkgKQ0Kew0KCW1rZGlyKCcuLicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc3RyX3JlcGxhY2UoJy8nLCBESVJFQ1RPUllfU0VQQVJBVE9SLCBERUZBVUxUX0dBTExFUllUSFVNQlNfUEFUSCkpOw0KfQ0KDQokcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSAoZmlsZW5hbWUsIGZpbGVwYXRoLCBmaWxlZGF0ZSwgZmlsZW9yZGVyLCBhY3RpdmUsIGRlZmF1bHRmaWxlLCBnYWxsZXJ5aWQsIHRpdGxlLCBjb21tZW50KSBWQUxVRVMgKD8sPyw/LC0xLDEsMCwwLD8sPykiOw0KJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ0dhbGxlcnkvJywgJycsIGRhdGUoIlktbS1kIEg6aTpzIiwgZmlsZW10aW1lKCcuLi91cGxvYWRzL2ltYWdlcy9HYWxsZXJ5JykpLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdkZWZhdWx0Z2FsbGVyeWNvbW1lbnQnKSkpOw0KJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfcHJvcHMgKGZpbGVpZCx0ZW1wbGF0ZWlkLGhpZGVwYXJlbnRsaW5rKSBWQUxVRVMgKD8sPyw/KSI7DQokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgxLDAsMSkpOw0KDQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KJHRoaXMtPkF1ZGl0KCAwLCANCgkkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksIA0KCSR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSApOw0KCSAgICAgIA0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR2FsbGVyeQ0KIyBNZXRob2Q6IFVuaW5zdGFsbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsNCg0KDQokZGIgPSYgJGdDbXMtPkdldERiKCk7DQoNCi8vIHJlbW92ZSB0aGUgZGF0YWJhc2UgdGFibGVzDQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkiICk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIiApOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzIiApOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zDQokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignVXNlIEdhbGxlcnknKTsNCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdTZXQgR2FsbGVyeSBQcmVmcycpOw0KDQovLyByZW1vdmUgYWxsIHByZWZlcmVuY2VzDQokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOw0KDQovLyByZW1vdmUgYWxsIHRlbXBsYXRlcw0KJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7DQoNCi8vIHJlbW92ZSB0aGUgZXZlbnRzDQovLyR0aGlzLT5SZW1vdmVFdmVudCggJ09uR2FsbGVyeVByZWZlcmVuY2VDaGFuZ2UnICk7DQoNCg0KLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEdhbGxlcnkKIyBNZXRob2Q6IFVwZ3JhZGUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDggYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKCiRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsKJGRiID0mICR0aGlzLT5HZXREYigpOwoKc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pCnsKCWNhc2UgIjAuNi4wLWJldGEiOgoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkiLCAiZ2FsbGVyeWlkIEkgS0VZIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5IFNFVCBnYWxsZXJ5aWQ9SUYoZmlsZWlkPTEsMCwxKSBXSEVSRSBmaWxlcGF0aD0nJyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCgkJJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBmaWxlcGF0aCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBXSEVSRSAoZ2FsbGVyeWlkIElTIE5VTEwgT1IgZ2FsbGVyeWlkID0gMCkgQU5EIGZpbGVpZCA8PiAxIjsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCRyZXN1bHQgJiYgJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvKCRyb3dbJ2ZpbGVwYXRoJ10pOwoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBTRVQgZ2FsbGVyeWlkPT8gd2hlcmUgZmlsZXBhdGg9PyI7CgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGdhbGxlcnlpbmZvWydmaWxlaWQnXSwkcm93WydmaWxlcGF0aCddKSk7CgkJfQoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCByZXNpemVtZXRob2Q9J3NjJyBXSEVSRSByZXNpemVtZXRob2Q9J3NjYWxlJyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnlfcHJvcHMgU0VUIHJlc2l6ZW1ldGhvZD0nY3InIFdIRVJFIHJlc2l6ZW1ldGhvZD0nY3JvcCciOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCByZXNpemVtZXRob2Q9J3pzJyBXSEVSRSByZXNpemVtZXRob2Q9J3pvb21zY2FsZSciOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCByZXNpemVtZXRob2Q9J3pjJyBXSEVSRSByZXNpemVtZXRob2Q9J3pvb21jcm9wJyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJJGN1cnJlbnRfdmVyc2lvbiA9ICIxLjAiOwoKCWNhc2UgIjEuMCI6CgljYXNlICIxLjAuMSI6CgkJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZV9mYW5jeWJveC50cGwnOwoJCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQoJCQl7CgkJCQkkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCQkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgnRmFuY3lib3gnLCR0ZW1wbGF0ZSk7CgkJCX0KCQkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlX2x5dGVib3hfc2xpZGVzaG93LnRwbCc7CgkJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApCgkJCXsKCQkJCSR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJCQkJJHRoaXMtPlNldFRlbXBsYXRlKCdMeXRlYm94X3NsaWRlc2hvdycsJHRlbXBsYXRlKTsKCQkJfQoJCSRjdXJyZW50X3ZlcnNpb24gPSAiMS4wLjIiOwoKCWNhc2UgIjEuMC4yIjoKCWNhc2UgIjEuMC4zIjoKLy8gZGVsZXRlIGFsbCB0aHVtYm5haWxzIGFuZCBvbGQgdGh1bWIgZGlyZWN0b3J5CgkJJHRodW1ic2ZvbGRlciA9ICcuLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nR2FsbGVyeScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGh1bWJzJzsKCQlpZiggJGRoID0gQG9wZW5kaXIoJHRodW1ic2ZvbGRlcikgKQoJCXsKCQkJd2hpbGUoIGZhbHNlICE9PSAoJG9iaiA9IHJlYWRkaXIoJGRoKSkgKQoJCQl7CgkJCQlpZiggJG9iaiAhPSAnLicgJiYgJG9iaiAhPSAnLi4nICkKCQkJCXsKCQkJCQlAdW5saW5rKCR0aHVtYnNmb2xkZXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kb2JqKTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcigkZGgpOwoJCX0KCQlAcm1kaXIoJHRodW1ic2ZvbGRlcik7Ci8vIGNyZWF0ZSBuZXcgZGF0YWJhc2UgdGFibGUgZm9yIHRlbXBsYXRlIHByb3BlcnRpZXMKCQkkdGFib3B0YXJyYXkgPSBhcnJheSggJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nICk7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJGZsZHMgPSAiCgkJCXRlbXBsYXRlaWQgSSBLRVkgQVVUTywKCQkJdGVtcGxhdGUgQygyNTUpLAoJCQl0aHVtYndpZHRoIEksCgkJCXRodW1iaGVpZ2h0IEksCgkJCXJlc2l6ZW1ldGhvZCBDKDEwKSwKCQkJbWF4bnVtYmVyIEksCgkJCXNvcnRpdGVtcyBDKDI1NSkKCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gc2F2ZSB0ZW1wbGF0ZXByb3BlcnRpZXMgZm9yIGV2ZXJ5IEdhbGxlcnkgdGVtcGxhdGUKCQkkcXVlcnkgPSAiU0VMRUNUIHRlbXBsYXRlX25hbWUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90ZW1wbGF0ZXMgV0hFUkUgbW9kdWxlX25hbWU9PyI7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdHYWxsZXJ5JykpOwoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCgkJewoJCSAgd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKQoJCSAgewoJCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgKHRlbXBsYXRlLHNvcnRpdGVtcykgVkFMVUVTICg/LD8pIjsKCQkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRyb3dbJ3RlbXBsYXRlX25hbWUnXSwnbi1pc2Rpci9zK2ZpbGUnKSk7CgkJCQlpZiAoICRyZXN1bHQyICkKCQkJCXsKCQkJCQkkdHBsaWRbJHJvd1sndGVtcGxhdGVfbmFtZSddXSA9ICRkYi0+SW5zZXJ0X0lEKCk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJZWNobyAnRVJST1IgJyAuIF9fTElORV9fIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CgkJCQkJZXhpdCgpOwoJCQkJfQoJCSAgfQoJCX0KCQlpZiAoICEkcmVzdWx0ICkKCQl7CgkJCWVjaG8gJ0VSUk9SICcgLiBfX0xJTkVfXyAuICc6ICcgLiBteXNxbF9lcnJvcigpOwoJCQlleGl0KCk7CgkJfQovLyB1cGRhdGUgZGVmYXVsdCB0ZW1wbGF0ZSBjb250ZW50CgkJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZV9mYW5jeWJveC50cGwnOwoJCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQoJCXsKCQkJJHRlbXBsYXRlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF90ZW1wbGF0ZV9jb250ZW50cycsJHRlbXBsYXRlY29kZSk7CgkJfQovLyBwYXNzIG92ZXIgdGh1bWJzZXR0aW5ncyBmcm9tIGdhbGxlcnlwcm9wcyB0byB0ZW1wbGF0ZXByb3BzCgkJJHRwbCA9IGFycmF5KCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBmaWxlaWQsIHRlbXBsYXRlLCB0aHVtYndpZHRoLCB0aHVtYmhlaWdodCwgcmVzaXplbWV0aG9kIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV9wcm9wcyI7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCgkJewoJCQkkZGVmYXVsdHRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKTsKCQkgIHdoaWxlICggJHJvdz0kcmVzdWx0LT5GZXRjaFJvdygpICkKCQkgIHsKCQkJCSR0cGxbJHJvd1snZmlsZWlkJ11dID0gaXNzZXQoJHRwbGlkWyRyb3dbJ3RlbXBsYXRlJ11dKSA/ICR0cGxpZFskcm93Wyd0ZW1wbGF0ZSddXSA6IDA7CgkJCQkkcm93Wyd0ZW1wbGF0ZSddID0gKCRyb3dbJ3RlbXBsYXRlJ10gPT0gJ3VzZWRlZmF1bHR0ZW1wbGF0ZScpID8gJGRlZmF1bHR0ZW1wbGF0ZSA6ICRyb3dbJ3RlbXBsYXRlJ107CgkJCQkkcXVlcnkyID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgIFNFVCB0aHVtYndpZHRoPT8sIHRodW1iaGVpZ2h0PT8sIHJlc2l6ZW1ldGhvZD0/IFdIRVJFIHRlbXBsYXRlPT8iOwoJCQkJJHJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHJvd1sndGh1bWJ3aWR0aCddLCRyb3dbJ3RodW1iaGVpZ2h0J10sJHJvd1sncmVzaXplbWV0aG9kJ10sJHJvd1sndGVtcGxhdGUnXSkpOwoJCQkJaWYgKCAhJHJlc3VsdDIgKQoJCQkJewoJCQkJCWVjaG8gJ0VSUk9SICcgLiBfX0xJTkVfXyAuICc6ICcgLiBteXNxbF9lcnJvcigpOwoJCQkJCWV4aXQoKTsKCQkJCX0KCQkgIH0KCQl9CgkJaWYgKCAhJHJlc3VsdCApCgkJewoJCQllY2hvICdFUlJPUiAnIC4gX19MSU5FX18gLiAnOiAnIC4gbXlzcWxfZXJyb3IoKTsKCQkJZXhpdCgpOwoJCX0KLy8gZHJvcCB0YWJsZSBnYWxsZXJ5cHJvcHMKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKLy8gY3JlYXRlIG5ldyB0YWJsZSBnYWxsZXJ5cHJvcHMgYW5kIGZpbGwgaXQgZm9yIGV2ZXJ5IHN1YmdhbGxlcnkKCQkkZmxkcyA9ICIKCQkJZmlsZWlkIEkgS0VZLAoJCQl0ZW1wbGF0ZWlkIEksCgkJCWhpZGVwYXJlbnRsaW5rIEkKCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV9wcm9wcyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkcXVlcnkgPSAiU0VMRUNUIGZpbGVpZCBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgV0hFUkUgZmlsZW5hbWUgTElLRSAnJS8nIjsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkKCQl7CgkJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApCgkJICB7CgkJCQkkdHBsWyRyb3dbJ2ZpbGVpZCddXSA9IGlzc2V0KCR0cGxbJHJvd1snZmlsZWlkJ11dKSA/ICR0cGxbJHJvd1snZmlsZWlkJ11dIDogMDsKCQkJCSRoaWRlcGFyZW50bGluayA9ICRyb3dbJ2ZpbGVpZCddID09IDEgPyAxIDogMDsKCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV9wcm9wcyAoZmlsZWlkLHRlbXBsYXRlaWQsaGlkZXBhcmVudGxpbmspIFZBTFVFUyAoPyw/LD8pIjsKCQkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRyb3dbJ2ZpbGVpZCddLCAkdHBsWyRyb3dbJ2ZpbGVpZCddXSwgJGhpZGVwYXJlbnRsaW5rKSk7CgkJCQlpZiAoICEkcmVzdWx0MiApCgkJCQl7CgkJCQkJZWNobyAnRVJST1IgJyAuIF9fTElORV9fIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CgkJCQkJZXhpdCgpOwoJCQkJfQoJCSAgfQoJCX0KCQlpZiAoICEkcmVzdWx0ICkKCQl7CgkJCWVjaG8gJ0VSUk9SICcgLiBfX0xJTkVfXyAuICc6ICcgLiBteXNxbF9lcnJvcigpOwoJCQlleGl0KCk7CgkJfQoJCSRjdXJyZW50X3ZlcnNpb24gPSAiMS4xIjsKCgljYXNlICIxLjEiOgoJCS8vIGNyZWF0ZSBuZXcgdGh1bWJzZm9sZGVyCgkJJHRodW1ic2ZvbGRlciA9ICcuLicuRElSRUNUT1JZX1NFUEFSQVRPUi4ndXBsb2FkcycuRElSRUNUT1JZX1NFUEFSQVRPUi4naW1hZ2VzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidHYWxsZXJ5VGh1bWJzJy5ESVJFQ1RPUllfU0VQQVJBVE9SOwoJCWlmKCAhaXNfZGlyKCR0aHVtYnNmb2xkZXIpICkKCQl7CgkJCW1rZGlyKCR0aHVtYnNmb2xkZXIpOwoJCX0KCQkkY3VycmVudF92ZXJzaW9uID0gIjEuMS4xIjsKCgljYXNlICIxLjEuMSI6CgkJLy8gdXBkYXRlIEZhbmN5Ym94IGNzcwoJCSRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nZmFuY3lib3gnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2pxdWVyeS5mYW5jeWJveC5jc3MnOwoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3RlbXBsYXRlcyBXSEVSRSBtb2R1bGVfbmFtZT0/IEFORCBjb250ZW50IExJS0UgPyI7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJ0dhbGxlcnknLCAnJS8qIEZBTkNZQk9YICUnKSk7CgkJaWYgKCBmaWxlX2V4aXN0cygkZm4pICYmICRyZXN1bHQgJiYgJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKQoJCXsKCQkJJHRlbXBsYXRlY3NzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApCgkJICB7CgkJCQkkdGVtcGxhdGVhcnIgPSBleHBsb2RlKFRFTVBMQVRFX1NFUEFSQVRPUiwgJHJvd1snY29udGVudCddKTsKCQkJCSR0ZW1wbGF0ZWFyclsxXSA9IHN1YnN0cigkdGVtcGxhdGVhcnJbMV0sIDAsIHN0cnBvcygkdGVtcGxhdGVhcnJbMV0sICcvKiBGQU5DWUJPWCAnKSkgLiAkdGVtcGxhdGVjc3M7CgkJCQkkdGVtcGxhdGVjb2RlID0gaW1wbG9kZShURU1QTEFURV9TRVBBUkFUT1IsICR0ZW1wbGF0ZWFycik7CgkJCQkkdGhpcy0+U2V0VGVtcGxhdGUoJHJvd1sndGVtcGxhdGVfbmFtZSddLCR0ZW1wbGF0ZWNvZGUpOwoJCQkJJGhhbmRsZSA9IGZvcGVuKCcuLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nR2FsbGVyeScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidjc3MnLkRJUkVDVE9SWV9TRVBBUkFUT1IuICRyb3dbJ3RlbXBsYXRlX25hbWUnXSAuICcuY3NzJywndycpOwoJCQkJZndyaXRlKCRoYW5kbGUsJHRlbXBsYXRlYXJyWzFdKTsKCQkJCWZjbG9zZSgkaGFuZGxlKTsKCQkgIH0KCQl9CgkJaWYgKCAhJHJlc3VsdCApCgkJewoJCQllY2hvICdFUlJPUiAnIC4gX19MSU5FX18gLiAnOiAnIC4gbXlzcWxfZXJyb3IoKTsKCQkJZXhpdCgpOwoJCX0KCQkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlX2ZhbmN5Ym94LnRwbCc7CgkJaWYoIGZpbGVfZXhpc3RzKCRmbikgKQoJCXsKCQkJJHRlbXBsYXRlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF90ZW1wbGF0ZV9jb250ZW50cycsJHRlbXBsYXRlY29kZSk7CgkJfQoJCSRjdXJyZW50X3ZlcnNpb24gPSAiMS4xLjIiOwp9CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygndXBncmFkZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admingalleries.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQp7Kgk8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CgkJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPgoJPC9kaXY+Kn0KCTx0YWJsZSBpZD0iZ3RyZWUiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCQk8dGhlYWQ+CgkJCTx0cj4KCQkJCTx0aD57JGdhbGxlcnlwYXRofTwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JGFjdGl2ZX08L3RoPgkJCQoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRhY3Rpb25zfTwvdGg+CgkJCTwvdHI+CgkJPC90aGVhZD4KCQk8dGJvZHk+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPXJvd2NsYXNzfQoJCQl7KgoJCQk8dHIgaWQ9Im5vZGUteyRlbnRyeS0+aWR9IiBjbGFzcz0ieyRyb3djbGFzc317JGVudHJ5LT5naWRjbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3ZlcnskZW50cnktPmdpZGNsYXNzfSc7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc317JGVudHJ5LT5naWRjbGFzc30nOyI+CgkJCSp9CgkJCTx0ciBpZD0ibm9kZS17JGVudHJ5LT5pZH0ie2lmICFlbXB0eSgkZW50cnktPmdpZGNsYXNzKX0gY2xhc3M9InskZW50cnktPmdpZGNsYXNzfHRyaW19InsvaWZ9PgoJCQkJPHRkIGNsYXNzPSJ0ZmlsZSI+eyRlbnRyeS0+ZmlsZX08L3RkPgoJCQkJPHRkIGNsYXNzPSJwYWdlcG9zIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPnskZW50cnktPmFjdGl2ZWxpbmt9PC90ZD4JCQkKCQkJCTx0ZCBjbGFzcz0icGFnZXBvcyIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJCQk8L3RyPgoJey9mb3JlYWNofQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgp7ZWxzZX0KCTxoND57JG5vZ2FsbGVyaWVzdGV4dH08L2g0Pgp7L2lmfQp7Kgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+Cgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+CjwvZGl2Pip9]]></data>
	</file>
	<file>
	  <filename>/templates/adminoptions.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsbG93ZWRfZXh0ZW5zaW9uc306PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2FsbG93ZWRfZXh0ZW5zaW9uc308L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZV9jb21tZW50X3d5c2l3eWd9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91c2VfY29tbWVudF93eXNpd3lnfTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPg0KCTwvZGl2Pg0KeyRlbmRmb3JtfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/admintemplates.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskbmV3dGVtcGxhdGVsaW5rfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGggd2lkdGg9Ijc1JSI+eyRuYW1lcHJvbXB0fTwvdGg+CiAgICAgIDx0aD57JGRlZmF1bHRwcm9tcHR9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmRlZmF1bHR9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+Y29weWxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgogICA8L3RyPgp7L2ZvcmVhY2h9CjwvdGFibGU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXd0ZW1wbGF0ZWxpbmt9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/editgallery.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCjxoMz57JHBhZ2V0aXRsZX08L2gzPg0KPC9kaXY+DQp7JGZvcm1zdGFydH17JGhpZGRlbn0NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9nYWxsZXJ5dGl0bGV9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRnYWxsZXJ5dGl0bGV9PC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfY29tbWVudH06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGdhbGxlcnljb21tZW50fTwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlfTo8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGVtcGxhdGV9PC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaGlkZXBhcmVudGxpbmt9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRlcGFyZW50bGlua308L3A+DQo8L2Rpdj4NCg0KeyppZiAhZW1wdHkoJGNyZWF0ZXRodW1icyl9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NyZWF0ZXRodW1ic306PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNyZWF0ZXRodW1ic308L3A+DQo8L2Rpdj4NCnsvaWYqfQ0KDQp7aWYgIWVtcHR5KCRzb3J0YnlzZXR0aW5ncyl9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskc29ydGJ5c2V0dGluZ3N9PC9wPg0KPC9kaXY+DQp7L2lmfQ0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPg0KPC9kaXY+DQoNCgk8dGFibGUgaWQ9Imd0YWJsZSIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KCQk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGg+eyRpdGVtfTwvdGg+DQoJCQk8dGg+eyR0aXRsZX08L3RoPg0KCQkJPHRoPnskY29tbWVudH08L3RoPg0KCQkJPHRoPnskZmlsZWRhdGV9PC90aD4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskYWN0aXZlfTwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JGRlZmF1bHR9PC90aD4NCgkJPC90cj4NCgkJPC90aGVhZD4NCgkJPHRib2R5Pg0KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQoJCXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPXJvd2NsYXNzfQ0KCQk8dHIgaWQ9InskZW50cnktPmZpbGVpZH0iIGNsYXNzPSJ7JHJvd2NsYXNzfSI+DQoJCQk8dGQ+Jm5ic3A7PC90ZD4NCgkJCTx0ZD48ZGl2IHN0eWxlPSJ3aWR0aDo5NnB4OyBoZWlnaHQ6NzJweDsgYmFja2dyb3VuZDogdXJsKHskZW50cnktPnRodW1idXJsfSkgbm8tcmVwZWF0IGNlbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBjdXJzb3I6ZGVmYXVsdDsiPiZuYnNwOzwvZGl2PjwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZmlsZW5hbWV9PGJyIC8+eyRlbnRyeS0+dGl0bGV9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5jb21tZW50fTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZmlsZWRhdGV9PC90ZD4NCgkJCTx0ZCBjbGFzcz0icGFnZXBvcyIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj57JGVudHJ5LT5hY3RpdmVsaW5rfTwvdGQ+DQoJCQk8dGQgY2xhc3M9InBhZ2Vwb3MiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+eyRlbnRyeS0+ZGVmYXVsdGxpbmt9PC90ZD4NCgkJPC90cj4NCgl7L2ZvcmVhY2h9DQoJCTwvdGJvZHk+DQoJPC90YWJsZT4NCg0Ke2lmICRpdGVtY291bnQgPiAwfQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCgkgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4NCgk8L2Rpdj4NCntlbHNlfQ0KCTxoND57JG5vZmlsZXN0ZXh0fTwvaDQ+DQp7L2lmfQ0KDQp7JGZvcm1lbmR9DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CnskZm9ybXN0YXJ0fXskaGlkZGVufQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGVuYW1lfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZW5hbWV9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90aHVtYm5haWxzaXplfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0aHVtYm5haWxzaXplfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbWF4bnVtYmVyfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtYXhudW1iZXJ9ICh7JHNob3dhbGxpbWFnZXN9KTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc29ydGluZ29wdGlvbnN9OjwvcD4KICA8ZmllbGRzZXQgY2xhc3M9InBhZ2VpbnB1dCIgc3R5bGU9IndpZHRoOjQwMHB4OyBwYWRkaW5nOjZweDsiPnskc29ydGluZ29wdGlvbnN9PC9maWVsZHNldD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9eyRyZXNldH08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskYXZhaWxhYmxldmFyaWFibGVzfTogPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlY29sbGFwc2UoJ3ZhcmlhYmxlc2luZm8nKTsgcmV0dXJuIGZhbHNlOyI+eyRhdmFpbGFibGV2YXJpYWJsZXNsaW5rfTwvYT48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJ2YXJpYWJsZXNpbmZvIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYXZhaWxhYmxldmFyaWFibGVzbGlzdH08L3A+CjwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZWNzc306PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGVtcGxhdGVjc3N9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZWpzfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZWpzfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9eyRyZXNldH08L3A+CjwvZGl2Pgp7JGZvcm1lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_closebox.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_left.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_progress.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_right.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABg9JREFUeNqMV1tMFGcUntmZvXJfwMKCAmq5NIg3bElE0JCoUVM1xiiptBoNpj4YH3whIekD9cXEhIQg4YFo3xpLQ0j7Yo0CD6IVg4olQWMU5CIgF2GXnb3NbL8z/YdM19llJznszs/5z/efc77/nLM8F/vhmXB79+41ud1u3ufz8X6/n7948aLocDj4mzdvBuj/NpstnJSUFO7t7VXY3jATw0eMAWhiIhQVFZmLi4vt+HQAWJyamgoLgpAmiqIA8KnS0lIuLy8vPDY25h8eHpY+fvwYwj4ZojAJGwEYrQkkmZmZ5u3btzsOHz68bsuWLRsg1SkpKVVms7lCvyEUCj1HNAaePXv2R2tr69CTJ0/ciEoABwiyA8ixvOeYhxQFe35+furJkyc3dHR0VMLo7+GIZ3p6Wh4dHZUj15eWln5FZApwYFdaWloK2WI2TbHySQqO3Nxc55kzZzZ3d3d/K8vyKBkMBAJKe3t7YP/+/V7ouPWya9eulRs3bgQkSVKY7vP79+/X7ty5cwMilEY2mW0+Gqg9OTnZeeDAgc137tw5Dht+MnT37t0QcuiJBIwU8GDl6dOnIc177PsOa/kM3G4ETjm1QlLKysoKrl+/fhB5G6PNt27dCoBI7rVANSHda9eu+TXwtra24y6Xaz3ZZhiCBk5/zJDEjIwM16VLlyoXFhb+1Dw1AkXuPCSxDkDXjGyAH/14/wqSRRgMy6QRykYhrqqqKrl9+/Y52rCysiIj14bGm5qa/ENDQ3IscIvF4p6cnAySrb6+vp9g60usOwmLea0CJ+A+usDiynfv3v1Cyi0tLYFoRsFclURrgdfX1/tIb25urgfvZZBs5rWo5Rf5T9l46NChg16v9zkpV1RUeKMZ3LFjx4oGTp/0bqSXnp7uAVfUXKemplZhrQCSCrGYNEaj5DlQGJx2u30r8qI8fvxYjnbvBgcHlX379knLy8thpIjv6emxA/yzezo/Px9GJVNLKkrsVpRUq3anVeDExEQBxLKjUmWQEopDeI0aroJv27ZNevnypRILHGVU/URBylUUZZXVqiIWBJ7nzSgWlHguGAxy8Tzgg3LlyhU/fSfwrq4ue6QObHIMwwrCCgxY9ZhDXvnZ2VnuzZs3Er1nZWXFBUweAkw9LHmODiZF6uAOq90K5dWNNP6vgNC9ciG/3xQUFJxHuZslMkS7SkYEi8ZuqgHQUa8UCtOPwPga6zl0i0y63qngSoXGx8dHaOHEiRNiLE8ppxRe8rS6ulpaXFz8jBc1NTUCdMSZmZl/cLhPSOFql9KA5f9SG/ShMbymhYaGBuq1hsDxgNLT2Niorg8MDIzig7iw2qcFBm5B8m0ej8eBkwmnT5/OzM7OdlmtVu7evXufXSsiH1LCHT161BcN9OzZs+Lly5ftsPkBuf8NnWsCywsQSklgtYDQ5cZEscfpdJ6/cOFCu1bkYUCKt0Fosnv3bi+FlfZjMOjC2jnIHn0BEfQTB7w2wxPbxMSEkJCQsIw+W3Ls2DER+znUWzkeptfV1YmdnZ1W1GpTf3//ALjyF5bJ21nIEsRHQVttEqyAb4ZUgY0/gKU/o153a56PjIz4Tp06JSHvhl7SgPDo0SOvpv/w4cNBrDdBviebzPZqk+B1Q4CVFXCqXjkAz0NF21hbW1sCkpTk5ORQd+EwSymvXr0KoeGrucU14QoLC1X20jta6hR6+OurV6/+jde3VLwgk5A5ll8imczrBgGRnSaZgWcDPBcEW48Ck9Pc3Fx45MiRjE2bNhUZhfj9+/dvHzx4MI+ONIz8UmjHWYg/MNBlFmZitsJHTJZmBp7EwvIFkyxUnXVgphNdLLW8vDwT3YvGGQ6T5dKLFy/m0HvnGWspl9OQGSYLLB1abtW7zBuMtRZd2IntBJDODkKMTAT71fkJLY/D9xBIKUEojJ8YEB1ikZFJC29AP+byBuOtiXluYQNaAotAEjuMQzc7acWHDHsZiEY46tESAwzqhvuYA702X4u6CGhiiZiTFZa3ADuAX+dhSMtp5EDPx5ix9YfQ/6ThDfZpv5P0P1n0YHH9hOHWOMxaTzgepX8FGADuEJHbscc2FgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_e.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiFBcVtWBgYPgDxP+A+DcQ/4Xi30j4PxD/gKr5B+X/g+oDsf+/ePUKxGcACDAA7SMU/wTvOTQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_n.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAAUCAYAAABMDlehAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADJJREFUeNpi+P//PwODuKgoIxMDA8N/EMECIsBcBhDBhCoGZrHBuWyoBEIxQgcrQIABAKG3BJyY/C/4AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_ne.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASZJREFUeNqslAtqAzEMRCV59wgh979dyRkiqwlY4XVwSgNdMOuPPBppJHtV2X9+fr1c4vGfu7PH+Mjb1+1mDfa8HGs/AOafMgywmQDrs4KNst9+xxo0ygXSaZhw0PP6jWFIvsZajzUCIPGXkB1AJvmsjWOTv+8YDgBRKDpNsKRgtQNUFgzbINg7QZyiPBfnulQYLVADTymxAtMi4ImLDKON7hLmeGP/Ahw4uCNfHWazH+siw89dHQ54PYQdUzDXeacmpTkmCztRcywVhjahMoufHVadwwCLlLVhXiKKSTe9kGPTHQM2muvcCOJUeS5BWAYJ0Du6KaVUnOuQbum6PABQ2O+wh7A0AjbLUx7WA84a5JSeTzj5kR8DM5f+doDvnjS2r30LMAA56mfG5QAJvgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_nw.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARhJREFUeNqsU4ENgzAMa9KwE6b9/yfJVtQgzwtMTEOqSiti7NiRiGj/fGQAPu73n2pfK+aeZ9cLxXwWuh/gqheY5Le5+3xXAA77wigItL/WCqBBjNsRYJz8QIsfJcsPhlIAZoHDHUp1+E60YBZQJHNfQZYRuzyPdtiZKc5yAEgBLPcB6HYQDSGpQovz1+fdciQ5QKrOggaFY1/mXbLblFjhLBqwTFAj0Kp/G6iRcwzqcN8p3AJu70ahY15MA04IhruDgg793BkGgGLTEeRNGjBTBLVi4IMAjfrVihneQY1y1wuJCKZTZrITOG8EmSFPRBri5C7KRslvo4e9QpM6yOuQxUayN4M42CuAZrAbRwOAM+AZ8ttTgAEAGEtMm3ysOI0AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_s.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAAUCAYAAABMDlehAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNpiEBcVNWNiYGD4DyL+gog/cBaC+wtE/ISL/YOLIbiMcMVgghkswfD//38GgAADAHa8E2SlOtn7AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_se.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAStJREFUeNqMVAsOwjAIBeYVjOfw/hcy3kDXgpsB83yyRBLSteW9Pj6ZXs7nq4jM9Ofmsfkj9yO97ve7NdfdfXPNO7nd72JJsuahAhAB+/ceW2bpCvu3nYhgwN6JWOBRvo86Z8KZgRPUDSBDcrYohaUsAIzkASk7qBFavQgHEEnW1Js0JzymFKNYwwHdq0BOc5C6WhUy+BA+ASxQp9kQcMrBhTwBgR90zgHMd0qPvgnXBBRwUPCAhhhk0na7CBcKLKULqOQ0Fc4cCZWKr9ThmcR1tgCpdwpx3jDIEyw0/EaKv8xoBh1SMZhBpxSVuv2jEJWtoNaglhNw2o1MEQqoVKiXEonRWLWk1hSWQZ0dKrQmwJu/itI+Dh76/CijASHwkOBHesTfsX/ZS4ABAGsxuUQbhreHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_sw.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAThJREFUeNqsVdFuxCAMSwLT/uB0//+bPciOk1NZFkx7GFIUSoPj4NB6Ztrz8bD3iLc5zOAbfIet+TfWV/wXzZdvHZvXwiSgjrVEYMLWeGHe4SfFfiZGwZVpwJwS8bNjz4XnsqsTILPMjU+wawBqVK5VVQVoACt2WmatcWzQvGKdAYM2ThFngsGgWC75Pu++yZoilJMYfkhexzKCWBi9LGAnFvz+AmD5CZ8siouqjcQKEa6BcYioLy6ZGRj1WAnVAdLBLEiQSnpnMBHHN418ST8m+So/laEqy1cxqYoh51x7RkiJtmnooA7gnpvE7la5b0rmUrgnh4gTctamja0s+coFHUOj1uG2y7p/p+GbK+Yi3qS4eVJZmU4BSwHlko+Ap/JZZb0Qn+P5DfAvzFO+A+7rF/Cf40eAAQCxn5cyoV8T8gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_w.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUeNpi/P//PwMISIiJMQIpZiAG0UwMEMACZTNDMTuUBolzQOVAmBWqjw0gwAAGHwN8Bh1iEgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_title_left.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAgCAQAAABnJeoiAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG+SURBVCjPjZNNKMNxGMe/9mZMZhtTwrwcRhLlrbxkTl4PHNwosh2cxGk1Ukpxwc1xJ+UkSqFcdtDiaDmMWCtWxLSpyUsez9//72X7/1d+v9v/83ue//N8n+8DyE8GXxXU0EArRyr+rIMeBuQiLxWpGWXDuGwPuWPbz4FkqEUWx1jvN0g6yTAb5v3+uJ/onfaenJHW8F9ogMXvFGIuXzrCCH7dryPC/COXANejhnMJBsVYDf/TPNfyFiOav/tBElYhE0YU3+4T7cSTYFCMNcDqdhC9ftgu5VjHsbajJaKt1NigkFqPAtjDh0TOiByrOXUR6uLXRLUhOdawTqVofk0QmS6UcB4q0JYOa2FCJToeI8rJJXzmVy5NSr7pVW5MKq13UpCl+ipNYxg4OVYSVZIFXe0zCa5+9k5RVDRhaMErGGHlIfM8dSSFqIIDo74TuR3EgZagHj2YcHlPb4Qcu/ExyUyiHSwoRyP6MAHPQSDZiqKZCrj/BnRjBNM1a6s+X+gi+m1Fwd85/KCMW+zEIMYxBQ8Wf40sPGCvopiLbOQyBzCMUfkaGGFlFe2cpRntSvvFS4R8VtLGo/r/Cios8Cda4RLIg7+tuQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_title_main.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAAgCAQAAAB57NqRAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAnSURBVAjXY2BgZ2AQZfj/H4QYbpKPoCZMZWDIYmBwZ2DQBhnLwA4AVwIallZZU/IAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_title_right.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAgCAQAAABnJeoiAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHBSURBVCjPfVNLKIRRGD1mxmOMvIcSxmOBJMqrPDJWngsWdhQZCyuxUkgpxQY7y1kpK1EKZTMLTSzJYohpiinyyKiRR65zzT/6Z/5/3G95zvfde849HxAPE4wwII6lc9KRCguSkECaQUN5O3vZ9k4vlyENyaQYoyhCOQ8byOEcMy9TE5p8Dv/e6xcJAfd+DzI5I4LgkdXqu3qXM9wOZPElKoInVJaL9SdJOBpDtkJQw7Lm74X4fJlr5BVm6oiLguHZCQhxt4986kgM9UfAtquPbyGm7VRhCfV7ImuL/UdLsLE/QQd2+IXwHaIMVjpp0MBVXjpwg2rkcbxRA2dcCvERRAMK6aEpFtyMEn6WSXf4sx+tKEUGzdF72rk7JiyFbTpjDK+4lrZ0jcd4mjT15Bi9usJm+SXBYMsU2jW2JF6sPMpQLDjRj/ooU8NxcJ1gCHaUI1f5kibfsH83IPtOb8ecGEUnalDw96HhKB6cYYZgN+pQzECF43D55PKuuirXMIlBdKCWeq3qMC2yawIj6EMb5RQRTPnNuxLFIQxQp51DyxkimVMVCLTQoWrqLGSA0jRrQOttdChbWSLNnv2/gv8v8A9rRBLIyszVnQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/jquery.fancybox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRkFOQ1lCT1ggIC0gIHZlcnNpb24gMS4yLjYgKi8NCg0KZGl2I2ZhbmN5X292ZXJsYXkgew0KCXBvc2l0aW9uOiBmaXhlZDsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJZGlzcGxheTogbm9uZTsNCgl6LWluZGV4OiAzMDsNCn0NCg0KZGl2I2ZhbmN5X2xvYWRpbmcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgloZWlnaHQ6IDQwcHg7DQoJd2lkdGg6IDQwcHg7DQoJY3Vyc29yOiBwb2ludGVyOw0KCWRpc3BsYXk6IG5vbmU7DQoJb3ZlcmZsb3c6IGhpZGRlbjsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCgl6LWluZGV4OiAxMDA7DQp9DQoNCmRpdiNmYW5jeV9sb2FkaW5nIGRpdiB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiA0MHB4Ow0KCWhlaWdodDogNDgwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9wcm9ncmVzcy5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdiNmYW5jeV9vdXRlciB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXotaW5kZXg6IDkwOw0KCXBhZGRpbmc6IDIwcHggMjBweCA0MHB4IDIwcHg7DQoJbWFyZ2luOiAwOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCmRpdiNmYW5jeV9pbm5lciB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwMCU7DQoJYmFja2dyb3VuZDogIzAwMDsNCn0NCg0KZGl2I2ZhbmN5X2NvbnRlbnQgew0KCW1hcmdpbjogMDsNCgl6LWluZGV4OiAxMDA7DQoJcG9zaXRpb246IGFic29sdXRlOw0KfQ0KDQpkaXYjZmFuY3lfZGl2IHsNCgliYWNrZ3JvdW5kOiAjMDAwOw0KCWNvbG9yOiAjRkZGOw0KCWhlaWdodDogMTAwJTsNCgl3aWR0aDogMTAwJTsNCgl6LWluZGV4OiAxMDA7DQp9DQoNCmltZyNmYW5jeV9pbWcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCglib3JkZXI6MDsNCglwYWRkaW5nOiAwOw0KCW1hcmdpbjogMDsNCgl6LWluZGV4OiAxMDA7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAxMDAlOw0KfQ0KDQpkaXYjZmFuY3lfY2xvc2Ugew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IC0xMnB4Ow0KCXJpZ2h0OiAtMTVweDsNCgloZWlnaHQ6IDMwcHg7DQoJd2lkdGg6IDMwcHg7DQoJYmFja2dyb3VuZDogdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9jbG9zZWJveC5wbmcnKSB0b3AgbGVmdCBuby1yZXBlYXQ7DQoJY3Vyc29yOiBwb2ludGVyOw0KCXotaW5kZXg6IDE4MTsNCglkaXNwbGF5OiBub25lOw0KfQ0KDQojZmFuY3lfZnJhbWUgew0KCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJZGlzcGxheTogbm9uZTsNCn0NCg0KI2ZhbmN5X2FqYXggew0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCglvdmVyZmxvdzogYXV0bzsNCn0NCg0KYSNmYW5jeV9sZWZ0LCBhI2ZhbmN5X3JpZ2h0IHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJYm90dG9tOiAwcHg7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAzNSU7DQoJY3Vyc29yOiBwb2ludGVyOw0KCXotaW5kZXg6IDExMTsNCglkaXNwbGF5OiBub25lOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LEFBQUEiKTsNCglvdXRsaW5lOiBub25lOw0KCW92ZXJmbG93OiBoaWRkZW47DQp9DQoNCmEjZmFuY3lfbGVmdCB7DQoJbGVmdDogMHB4Ow0KfQ0KDQphI2ZhbmN5X3JpZ2h0IHsNCglyaWdodDogMHB4Ow0KfQ0KDQpzcGFuLmZhbmN5X2ljbyB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogNTAlOw0KCW1hcmdpbi10b3A6IC0xNXB4Ow0KCXdpZHRoOiAzMHB4Ow0KCWhlaWdodDogMzBweDsNCgl6LWluZGV4OiAxMTI7DQoJY3Vyc29yOiBwb2ludGVyOw0KCWRpc3BsYXk6IGJsb2NrOw0KfQ0KDQpzcGFuI2ZhbmN5X2xlZnRfaWNvIHsNCglsZWZ0OiAtOTk5OXB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfbGVmdC5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCnNwYW4jZmFuY3lfcmlnaHRfaWNvIHsNCglyaWdodDogLTk5OTlweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3JpZ2h0LnBuZycpIG5vLXJlcGVhdDsNCn0NCg0KYSNmYW5jeV9sZWZ0OmhvdmVyLCBhI2ZhbmN5X3JpZ2h0OmhvdmVyIHsNCgl2aXNpYmlsaXR5OiB2aXNpYmxlOw0KCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KfQ0KDQphI2ZhbmN5X2xlZnQ6aG92ZXIgc3BhbiB7DQoJbGVmdDogMjBweDsNCn0NCg0KYSNmYW5jeV9yaWdodDpob3ZlciBzcGFuIHsNCglyaWdodDogMjBweDsNCn0NCg0KI2ZhbmN5X2JpZ0lmcmFtZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KZGl2I2ZhbmN5X2JnIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOiAwOyBsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgl6LWluZGV4OiA3MDsNCglib3JkZXI6IDA7DQoJcGFkZGluZzogMDsNCgltYXJnaW46IDA7DQp9DQoNCmRpdi5mYW5jeV9iZyB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWRpc3BsYXk6IGJsb2NrOw0KCXotaW5kZXg6IDcwOw0KCWJvcmRlcjogMDsNCglwYWRkaW5nOiAwOw0KCW1hcmdpbjogMDsNCn0NCg0KZGl2I2ZhbmN5X2JnX24gew0KCXRvcDogLTIwcHg7DQoJbGVmdDogMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbi5wbmcnKSByZXBlYXQteDsNCn0NCg0KZGl2I2ZhbmN5X2JnX25lIHsNCgl0b3A6IC0yMHB4Ow0KCXJpZ2h0OiAtMjBweDsNCgl3aWR0aDogMjBweDsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbmUucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfYmdfZSB7DQoJcmlnaHQ6IC0yMHB4Ow0KCWhlaWdodDogMTAwJTsNCgl3aWR0aDogMjBweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19lLnBuZycpIHJlcGVhdC15Ow0KfQ0KDQpkaXYjZmFuY3lfYmdfc2Ugew0KCWJvdHRvbTogLTIwcHg7DQoJcmlnaHQ6IC0yMHB4Ow0KCXdpZHRoOiAyMHB4Ow0KCWhlaWdodDogMjBweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zZS5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdiNmYW5jeV9iZ19zIHsNCglib3R0b206IC0yMHB4Ow0KCWxlZnQ6IDA7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAyMHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfc2hhZG93X3MucG5nJykgcmVwZWF0LXg7DQp9DQoNCmRpdiNmYW5jeV9iZ19zdyB7DQoJYm90dG9tOiAtMjBweDsNCglsZWZ0OiAtMjBweDsNCgl3aWR0aDogMjBweDsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfc3cucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfYmdfdyB7DQoJbGVmdDogLTIwcHg7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAyMHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfc2hhZG93X3cucG5nJykgcmVwZWF0LXk7DQp9DQoNCmRpdiNmYW5jeV9iZ19udyB7DQoJdG9wOiAtMjBweDsNCglsZWZ0OiAtMjBweDsNCgl3aWR0aDogMjBweDsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbncucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfdGl0bGUgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl6LWluZGV4OiAxMDA7DQoJZGlzcGxheTogbm9uZTsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIGRpdiB7DQoJY29sb3I6ICNGRkY7DQoJZm9udDogYm9sZCAxMnB4IEFyaWFsOw0KCXBhZGRpbmctYm90dG9tOiAzcHg7DQoJd2hpdGUtc3BhY2U6IG5vd3JhcDsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIHRhYmxlIHsNCgltYXJnaW46IDAgYXV0bzsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIHRhYmxlIHRkIHsNCglwYWRkaW5nOiAwOw0KCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX2xlZnQgew0KCWhlaWdodDogMzJweDsNCgl3aWR0aDogMTVweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX2xlZnQucG5nJykgcmVwZWF0LXg7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX21haW4gew0KCWhlaWdodDogMzJweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX21haW4ucG5nJykgcmVwZWF0LXg7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX3JpZ2h0IHsNCgloZWlnaHQ6IDMycHg7DQoJd2lkdGg6IDE1cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV90aXRsZV9yaWdodC5wbmcnKSByZXBlYXQteDsNCn0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/jquery.fancybox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogRmFuY3lCb3ggLSBqUXVlcnkgUGx1Z2luCiAqIHNpbXBsZSBhbmQgZmFuY3kgbGlnaHRib3ggYWx0ZXJuYXRpdmUKICoKICogQ29weXJpZ2h0IChjKSAyMDA5IEphbmlzIFNrYXJuZWxpcwogKiBFeGFtcGxlcyBhbmQgZG9jdW1lbnRhdGlvbiBhdDogaHR0cDovL2ZhbmN5Ym94Lm5ldAogKiAKICogVmVyc2lvbjogMS4yLjYgKDE2LzExLzIwMDkpCiAqIFJlcXVpcmVzOiBqUXVlcnkgdjEuMysKICogCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogKiAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCiAqLwoKOyhmdW5jdGlvbigkKSB7CgkkLmZuLmZpeFBORyA9IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewoJCQl2YXIgaW1hZ2UgPSAkKHRoaXMpLmNzcygnYmFja2dyb3VuZEltYWdlJyk7CgoJCQlpZiAoaW1hZ2UubWF0Y2goL151cmxcKFsiJ10/KC4qXC5wbmcpWyInXT9cKSQvaSkpIHsKCQkJCWltYWdlID0gUmVnRXhwLiQxOwoJCQkJJCh0aGlzKS5jc3MoewoJCQkJCSdiYWNrZ3JvdW5kSW1hZ2UnOiAnbm9uZScsCgkJCQkJJ2ZpbHRlcic6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihlbmFibGVkPXRydWUsIHNpemluZ01ldGhvZD0iICsgKCQodGhpcykuY3NzKCdiYWNrZ3JvdW5kUmVwZWF0JykgPT0gJ25vLXJlcGVhdCcgPyAnY3JvcCcgOiAnc2NhbGUnKSArICIsIHNyYz0nIiArIGltYWdlICsgIicpIgoJCQkJfSkuZWFjaChmdW5jdGlvbiAoKSB7CgkJCQkJdmFyIHBvc2l0aW9uID0gJCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJyk7CgkJCQkJaWYgKHBvc2l0aW9uICE9ICdhYnNvbHV0ZScgJiYgcG9zaXRpb24gIT0gJ3JlbGF0aXZlJykKCQkJCQkJJCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7CgkJCQl9KTsKCQkJfQoJCX0pOwoJfTsKCgl2YXIgZWxlbSwgb3B0cywgYnVzeSA9IGZhbHNlLCBpbWFnZVByZWxvYWRlciA9IG5ldyBJbWFnZSwgbG9hZGluZ1RpbWVyLCBsb2FkaW5nRnJhbWUgPSAxLCBpbWFnZVJlZ0V4cCA9IC9cLihqcGd8Z2lmfHBuZ3xibXB8anBlZykoLiopPyQvaTsKCXZhciBpZVF1aXJrcyA9IG51bGwsIElFNiA9ICQuYnJvd3Nlci5tc2llICYmICQuYnJvd3Nlci52ZXJzaW9uLnN1YnN0cigwLDEpID09IDYgJiYgIXdpbmRvdy5YTUxIdHRwUmVxdWVzdCwgb2xkSUUgPSBJRTYgfHwgKCQuYnJvd3Nlci5tc2llICYmICQuYnJvd3Nlci52ZXJzaW9uLnN1YnN0cigwLDEpID09IDcpOwoKCSQuZm4uZmFuY3lib3ggPSBmdW5jdGlvbihvKSB7CgkJdmFyIHNldHRpbmdzCQk9ICQuZXh0ZW5kKHt9LCAkLmZuLmZhbmN5Ym94LmRlZmF1bHRzLCBvKTsKCQl2YXIgbWF0Y2hlZEdyb3VwCT0gdGhpczsKCgkJZnVuY3Rpb24gX2luaXRpYWxpemUoKSB7CgkJCWVsZW0gPSB0aGlzOwoJCQlvcHRzID0gJC5leHRlbmQoe30sIHNldHRpbmdzKTsKCgkJCV9zdGFydCgpOwoKCQkJcmV0dXJuIGZhbHNlOwoJCX07CgoJCWZ1bmN0aW9uIF9zdGFydCgpIHsKCQkJaWYgKGJ1c3kpIHJldHVybjsKCgkJCWlmICgkLmlzRnVuY3Rpb24ob3B0cy5jYWxsYmFja09uU3RhcnQpKSB7CgkJCQlvcHRzLmNhbGxiYWNrT25TdGFydCgpOwoJCQl9CgoJCQlvcHRzLml0ZW1BcnJheQkJPSBbXTsKCQkJb3B0cy5pdGVtQ3VycmVudAk9IDA7CgoJCQlpZiAoc2V0dGluZ3MuaXRlbUFycmF5Lmxlbmd0aCA+IDApIHsKCQkJCW9wdHMuaXRlbUFycmF5ID0gc2V0dGluZ3MuaXRlbUFycmF5OwoKCQkJfSBlbHNlIHsKCQkJCXZhciBpdGVtID0ge307CgoJCQkJaWYgKCFlbGVtLnJlbCB8fCBlbGVtLnJlbCA9PSAnJykgewoJCQkJCXZhciBpdGVtID0ge2hyZWY6IGVsZW0uaHJlZiwgdGl0bGU6IGVsZW0udGl0bGV9OwoKCQkJCQlpZiAoJChlbGVtKS5jaGlsZHJlbigiaW1nOmZpcnN0IikubGVuZ3RoKSB7CgkJCQkJCWl0ZW0ub3JpZyA9ICQoZWxlbSkuY2hpbGRyZW4oImltZzpmaXJzdCIpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWl0ZW0ub3JpZyA9ICQoZWxlbSk7CgkJCQkJfQoKCQkJCQlpZiAoaXRlbS50aXRsZSA9PSAnJyB8fCB0eXBlb2YgaXRlbS50aXRsZSA9PSAndW5kZWZpbmVkJykgewoJCQkJCQlpdGVtLnRpdGxlID0gaXRlbS5vcmlnLmF0dHIoJ2FsdCcpOwoJCQkJCX0KCQkJCQkKCQkJCQlvcHRzLml0ZW1BcnJheS5wdXNoKCBpdGVtICk7CgoJCQkJfSBlbHNlIHsKCQkJCQl2YXIgc3ViR3JvdXAgPSAkKG1hdGNoZWRHcm91cCkuZmlsdGVyKCJhW3JlbD0iICsgZWxlbS5yZWwgKyAiXSIpOwoJCQkJCXZhciBpdGVtID0ge307CgoJCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgc3ViR3JvdXAubGVuZ3RoOyBpKyspIHsKCQkJCQkJaXRlbSA9IHtocmVmOiBzdWJHcm91cFtpXS5ocmVmLCB0aXRsZTogc3ViR3JvdXBbaV0udGl0bGV9OwoKCQkJCQkJaWYgKCQoc3ViR3JvdXBbaV0pLmNoaWxkcmVuKCJpbWc6Zmlyc3QiKS5sZW5ndGgpIHsKCQkJCQkJCWl0ZW0ub3JpZyA9ICQoc3ViR3JvdXBbaV0pLmNoaWxkcmVuKCJpbWc6Zmlyc3QiKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCWl0ZW0ub3JpZyA9ICQoc3ViR3JvdXBbaV0pOwoJCQkJCQl9CgoJCQkJCQlpZiAoaXRlbS50aXRsZSA9PSAnJyB8fCB0eXBlb2YgaXRlbS50aXRsZSA9PSAndW5kZWZpbmVkJykgewoJCQkJCQkJaXRlbS50aXRsZSA9IGl0ZW0ub3JpZy5hdHRyKCdhbHQnKTsKCQkJCQkJfQoKCQkJCQkJb3B0cy5pdGVtQXJyYXkucHVzaCggaXRlbSApOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJd2hpbGUgKCBvcHRzLml0ZW1BcnJheVsgb3B0cy5pdGVtQ3VycmVudCBdLmhyZWYgIT0gZWxlbS5ocmVmICkgewoJCQkJb3B0cy5pdGVtQ3VycmVudCsrOwoJCQl9CgoJCQlpZiAob3B0cy5vdmVybGF5U2hvdykgewoJCQkJaWYgKElFNikgewoJCQkJCSQoJ2VtYmVkLCBvYmplY3QsIHNlbGVjdCcpLmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTsKCQkJCQkkKCIjZmFuY3lfb3ZlcmxheSIpLmNzcygnaGVpZ2h0JywgJChkb2N1bWVudCkuaGVpZ2h0KCkpOwoJCQkJfQoKCQkJCSQoIiNmYW5jeV9vdmVybGF5IikuY3NzKHsKCQkJCQknYmFja2dyb3VuZC1jb2xvcicJOiBvcHRzLm92ZXJsYXlDb2xvciwKCQkJCQknb3BhY2l0eScJCQk6IG9wdHMub3ZlcmxheU9wYWNpdHkKCQkJCX0pLnNob3coKTsKCQkJfQoJCQkKCQkJJCh3aW5kb3cpLmJpbmQoInJlc2l6ZS5mYiBzY3JvbGwuZmIiLCAkLmZuLmZhbmN5Ym94LnNjcm9sbEJveCk7CgoJCQlfY2hhbmdlX2l0ZW0oKTsKCQl9OwoKCQlmdW5jdGlvbiBfY2hhbmdlX2l0ZW0oKSB7CgkJCSQoIiNmYW5jeV9yaWdodCwgI2ZhbmN5X2xlZnQsICNmYW5jeV9jbG9zZSwgI2ZhbmN5X3RpdGxlIikuaGlkZSgpOwoKCQkJdmFyIGhyZWYgPSBvcHRzLml0ZW1BcnJheVsgb3B0cy5pdGVtQ3VycmVudCBdLmhyZWY7CgoJCQlpZiAoaHJlZi5tYXRjaCgiaWZyYW1lIikgfHwgZWxlbS5jbGFzc05hbWUuaW5kZXhPZigiaWZyYW1lIikgPj0gMCkgewoJCQkJJC5mbi5mYW5jeWJveC5zaG93TG9hZGluZygpOwoJCQkJX3NldF9jb250ZW50KCc8aWZyYW1lIGlkPSJmYW5jeV9mcmFtZSIgb25sb2FkPSJqUXVlcnkuZm4uZmFuY3lib3guc2hvd0lmcmFtZSgpIiBuYW1lPSJmYW5jeV9pZnJhbWUnICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDApICsgJyIgZnJhbWVib3JkZXI9IjAiIGhzcGFjZT0iMCIgc3JjPSInICsgaHJlZiArICciPjwvaWZyYW1lPicsIG9wdHMuZnJhbWVXaWR0aCwgb3B0cy5mcmFtZUhlaWdodCk7CgoJCQl9IGVsc2UgaWYgKGhyZWYubWF0Y2goLyMvKSkgewoJCQkJdmFyIHRhcmdldCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJylbMF07IHRhcmdldCA9IGhyZWYucmVwbGFjZSh0YXJnZXQsICcnKTsgdGFyZ2V0ID0gdGFyZ2V0LnN1YnN0cih0YXJnZXQuaW5kZXhPZignIycpKTsKCgkJCQlfc2V0X2NvbnRlbnQoJzxkaXYgaWQ9ImZhbmN5X2RpdiI+JyArICQodGFyZ2V0KS5odG1sKCkgKyAnPC9kaXY+Jywgb3B0cy5mcmFtZVdpZHRoLCBvcHRzLmZyYW1lSGVpZ2h0KTsKCgkJCX0gZWxzZSBpZiAoaHJlZi5tYXRjaChpbWFnZVJlZ0V4cCkpIHsKCQkJCWltYWdlUHJlbG9hZGVyID0gbmV3IEltYWdlOyBpbWFnZVByZWxvYWRlci5zcmMgPSBocmVmOwoKCQkJCWlmIChpbWFnZVByZWxvYWRlci5jb21wbGV0ZSkgewoJCQkJCV9wcm9jZWVkX2ltYWdlKCk7CgoJCQkJfSBlbHNlIHsKCQkJCQkkLmZuLmZhbmN5Ym94LnNob3dMb2FkaW5nKCk7CgkJCQkJJChpbWFnZVByZWxvYWRlcikudW5iaW5kKCkuYmluZCgnbG9hZCcsIGZ1bmN0aW9uKCkgewoJCQkJCQkkKCIjZmFuY3lfbG9hZGluZyIpLmhpZGUoKTsKCgkJCQkJCV9wcm9jZWVkX2ltYWdlKCk7CgkJCQkJfSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkLmZuLmZhbmN5Ym94LnNob3dMb2FkaW5nKCk7CgkJCQkkLmdldChocmVmLCBmdW5jdGlvbihkYXRhKSB7CgkJCQkJJCgiI2ZhbmN5X2xvYWRpbmciKS5oaWRlKCk7CgkJCQkJX3NldF9jb250ZW50KCAnPGRpdiBpZD0iZmFuY3lfYWpheCI+JyArIGRhdGEgKyAnPC9kaXY+Jywgb3B0cy5mcmFtZVdpZHRoLCBvcHRzLmZyYW1lSGVpZ2h0ICk7CgkJCQl9KTsKCQkJfQoJCX07CgoJCWZ1bmN0aW9uIF9wcm9jZWVkX2ltYWdlKCkgewoJCQl2YXIgd2lkdGgJPSBpbWFnZVByZWxvYWRlci53aWR0aDsKCQkJdmFyIGhlaWdodAk9IGltYWdlUHJlbG9hZGVyLmhlaWdodDsKCgkJCXZhciBob3Jpem9udGFsX3NwYWNlCT0gKG9wdHMucGFkZGluZyAqIDIpICsgNDA7CgkJCXZhciB2ZXJ0aWNhbF9zcGFjZQkJPSAob3B0cy5wYWRkaW5nICogMikgKyA2MDsKCgkJCXZhciB3ID0gJC5mbi5mYW5jeWJveC5nZXRWaWV3cG9ydCgpOwoJCQkKCQkJaWYgKG9wdHMuaW1hZ2VTY2FsZSAmJiAod2lkdGggPiAod1swXSAtIGhvcml6b250YWxfc3BhY2UpIHx8IGhlaWdodCA+ICh3WzFdIC0gdmVydGljYWxfc3BhY2UpKSkgewoJCQkJdmFyIHJhdGlvID0gTWF0aC5taW4oTWF0aC5taW4od1swXSAtIGhvcml6b250YWxfc3BhY2UsIHdpZHRoKSAvIHdpZHRoLCBNYXRoLm1pbih3WzFdIC0gdmVydGljYWxfc3BhY2UsIGhlaWdodCkgLyBoZWlnaHQpOwoKCQkJCXdpZHRoCT0gTWF0aC5yb3VuZChyYXRpbyAqIHdpZHRoKTsKCQkJCWhlaWdodAk9IE1hdGgucm91bmQocmF0aW8gKiBoZWlnaHQpOwoJCQl9CgoJCQlfc2V0X2NvbnRlbnQoJzxpbWcgYWx0PSIiIGlkPSJmYW5jeV9pbWciIHNyYz0iJyArIGltYWdlUHJlbG9hZGVyLnNyYyArICciIC8+Jywgd2lkdGgsIGhlaWdodCk7CgkJfTsKCgkJZnVuY3Rpb24gX3ByZWxvYWRfbmVpZ2hib3JfaW1hZ2VzKCkgewoJCQlpZiAoKG9wdHMuaXRlbUFycmF5Lmxlbmd0aCAtMSkgPiBvcHRzLml0ZW1DdXJyZW50KSB7CgkJCQl2YXIgaHJlZiA9IG9wdHMuaXRlbUFycmF5W29wdHMuaXRlbUN1cnJlbnQgKyAxXS5ocmVmIHx8IGZhbHNlOwoKCQkJCWlmIChocmVmICYmIGhyZWYubWF0Y2goaW1hZ2VSZWdFeHApKSB7CgkJCQkJb2JqTmV4dCA9IG5ldyBJbWFnZSgpOwoJCQkJCW9iak5leHQuc3JjID0gaHJlZjsKCQkJCX0KCQkJfQoKCQkJaWYgKG9wdHMuaXRlbUN1cnJlbnQgPiAwKSB7CgkJCQl2YXIgaHJlZiA9IG9wdHMuaXRlbUFycmF5W29wdHMuaXRlbUN1cnJlbnQgLTFdLmhyZWYgfHwgZmFsc2U7CgoJCQkJaWYgKGhyZWYgJiYgaHJlZi5tYXRjaChpbWFnZVJlZ0V4cCkpIHsKCQkJCQlvYmpOZXh0ID0gbmV3IEltYWdlKCk7CgkJCQkJb2JqTmV4dC5zcmMgPSBocmVmOwoJCQkJfQoJCQl9CgkJfTsKCgkJZnVuY3Rpb24gX3NldF9jb250ZW50KHZhbHVlLCB3aWR0aCwgaGVpZ2h0KSB7CgkJCWJ1c3kgPSB0cnVlOwoKCQkJdmFyIHBhZCA9IG9wdHMucGFkZGluZzsKCgkJCWlmIChvbGRJRSB8fCBpZVF1aXJrcykgewoJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKVswXS5zdHlsZS5yZW1vdmVFeHByZXNzaW9uKCJoZWlnaHQiKTsKCQkJCSQoIiNmYW5jeV9jb250ZW50IilbMF0uc3R5bGUucmVtb3ZlRXhwcmVzc2lvbigid2lkdGgiKTsKCQkJfQoKCQkJaWYgKHBhZCA+IDApIHsKCQkJCXdpZHRoCSs9IHBhZCAqIDI7CgkJCQloZWlnaHQJKz0gcGFkICogMjsKCgkJCQkkKCIjZmFuY3lfY29udGVudCIpLmNzcyh7CgkJCQkJJ3RvcCcJCTogcGFkICsgJ3B4JywKCQkJCQkncmlnaHQnCQk6IHBhZCArICdweCcsCgkJCQkJJ2JvdHRvbScJOiBwYWQgKyAncHgnLAoJCQkJCSdsZWZ0JwkJOiBwYWQgKyAncHgnLAoJCQkJCSd3aWR0aCcJCTogJ2F1dG8nLAoJCQkJCSdoZWlnaHQnCTogJ2F1dG8nCgkJCQl9KTsKCgkJCQlpZiAob2xkSUUgfHwgaWVRdWlya3MpIHsKCQkJCQkkKCIjZmFuY3lfY29udGVudCIpWzBdLnN0eWxlLnNldEV4cHJlc3Npb24oJ2hlaWdodCcsCScodGhpcy5wYXJlbnROb2RlLmNsaWVudEhlaWdodCAtICcJKyBwYWQgKiAyICsgJyknKTsKCQkJCQkkKCIjZmFuY3lfY29udGVudCIpWzBdLnN0eWxlLnNldEV4cHJlc3Npb24oJ3dpZHRoJywJCScodGhpcy5wYXJlbnROb2RlLmNsaWVudFdpZHRoIC0gJwkrIHBhZCAqIDIgKyAnKScpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5jc3MoewoJCQkJCSd0b3AnCQk6IDAsCgkJCQkJJ3JpZ2h0JwkJOiAwLAoJCQkJCSdib3R0b20nCTogMCwKCQkJCQknbGVmdCcJCTogMCwKCQkJCQknd2lkdGgnCQk6ICcxMDAlJywKCQkJCQknaGVpZ2h0Jwk6ICcxMDAlJwoJCQkJfSk7CgkJCX0KCgkJCWlmICgkKCIjZmFuY3lfb3V0ZXIiKS5pcygiOnZpc2libGUiKSAmJiB3aWR0aCA9PSAkKCIjZmFuY3lfb3V0ZXIiKS53aWR0aCgpICYmIGhlaWdodCA9PSAkKCIjZmFuY3lfb3V0ZXIiKS5oZWlnaHQoKSkgewoJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5lbXB0eSgpLmFwcGVuZCgkKHZhbHVlKSkuZmFkZUluKCJub3JtYWwiLCBmdW5jdGlvbigpIHsKCQkJCQkJX2ZpbmlzaCgpOwoJCQkJCX0pOwoJCQkJfSk7CgoJCQkJcmV0dXJuOwoJCQl9CgoJCQl2YXIgdyA9ICQuZm4uZmFuY3lib3guZ2V0Vmlld3BvcnQoKTsKCgkJCXZhciBpdGVtVG9wCQk9IChoZWlnaHQJKyA2MCkgPiB3WzFdID8gd1szXSA6ICh3WzNdICsgTWF0aC5yb3VuZCgod1sxXSAtIGhlaWdodAktIDYwKSAqIDAuNSkpOwoJCQl2YXIgaXRlbUxlZnQJPSAod2lkdGgJKyA0MCkgPiB3WzBdID8gd1syXSA6ICh3WzJdICsgTWF0aC5yb3VuZCgod1swXSAtIHdpZHRoCS0gNDApICogMC41KSk7CgoJCQl2YXIgaXRlbU9wdHMgPSB7CgkJCQknbGVmdCc6CQlpdGVtTGVmdCwKCQkJCSd0b3AnOgkJaXRlbVRvcCwKCQkJCSd3aWR0aCc6CXdpZHRoICsgJ3B4JywKCQkJCSdoZWlnaHQnOgloZWlnaHQgKyAncHgnCgkJCX07CgoJCQlpZiAoJCgiI2ZhbmN5X291dGVyIikuaXMoIjp2aXNpYmxlIikpIHsKCQkJCSQoIiNmYW5jeV9jb250ZW50IikuZmFkZU91dCgibm9ybWFsIiwgZnVuY3Rpb24oKSB7CgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5lbXB0eSgpOwoJCQkJCSQoIiNmYW5jeV9vdXRlciIpLmFuaW1hdGUoaXRlbU9wdHMsIG9wdHMuem9vbVNwZWVkQ2hhbmdlLCBvcHRzLmVhc2luZ0NoYW5nZSwgZnVuY3Rpb24oKSB7CgkJCQkJCSQoIiNmYW5jeV9jb250ZW50IikuYXBwZW5kKCQodmFsdWUpKS5mYWRlSW4oIm5vcm1hbCIsIGZ1bmN0aW9uKCkgewoJCQkJCQkJX2ZpbmlzaCgpOwoJCQkJCQl9KTsKCQkJCQl9KTsKCQkJCX0pOwoKCQkJfSBlbHNlIHsKCgkJCQlpZiAob3B0cy56b29tU3BlZWRJbiA+IDAgJiYgb3B0cy5pdGVtQXJyYXlbb3B0cy5pdGVtQ3VycmVudF0ub3JpZyAhPT0gdW5kZWZpbmVkKSB7CgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5lbXB0eSgpLmFwcGVuZCgkKHZhbHVlKSk7CgoJCQkJCXZhciBvcmlnX2l0ZW0JPSBvcHRzLml0ZW1BcnJheVtvcHRzLml0ZW1DdXJyZW50XS5vcmlnOwoJCQkJCXZhciBvcmlnX3Bvcwk9ICQuZm4uZmFuY3lib3guZ2V0UG9zaXRpb24ob3JpZ19pdGVtKTsKCgkJCQkJJCgiI2ZhbmN5X291dGVyIikuY3NzKHsKCQkJCQkJJ2xlZnQnOgkJKG9yaWdfcG9zLmxlZnQJLSAyMCAtIG9wdHMucGFkZGluZykgKyAncHgnLAoJCQkJCQkndG9wJzoJCShvcmlnX3Bvcy50b3AJLSAyMCAtIG9wdHMucGFkZGluZykgKyAncHgnLAoJCQkJCQknd2lkdGgnOgkkKG9yaWdfaXRlbSkud2lkdGgoKSArIChvcHRzLnBhZGRpbmcgKiAyKSwKCQkJCQkJJ2hlaWdodCc6CSQob3JpZ19pdGVtKS5oZWlnaHQoKSArIChvcHRzLnBhZGRpbmcgKiAyKQoJCQkJCX0pOwoKCQkJCQlpZiAob3B0cy56b29tT3BhY2l0eSkgewoJCQkJCQlpdGVtT3B0cy5vcGFjaXR5ID0gJ3Nob3cnOwoJCQkJCX0KCgkJCQkJJCgiI2ZhbmN5X291dGVyIikuYW5pbWF0ZShpdGVtT3B0cywgb3B0cy56b29tU3BlZWRJbiwgb3B0cy5lYXNpbmdJbiwgZnVuY3Rpb24oKSB7CgkJCQkJCV9maW5pc2goKTsKCQkJCQl9KTsKCgkJCQl9IGVsc2UgewoKCQkJCQkkKCIjZmFuY3lfY29udGVudCIpLmhpZGUoKS5lbXB0eSgpLmFwcGVuZCgkKHZhbHVlKSkuc2hvdygpOwoJCQkJCSQoIiNmYW5jeV9vdXRlciIpLmNzcyhpdGVtT3B0cykuZmFkZUluKCJub3JtYWwiLCBmdW5jdGlvbigpIHsKCQkJCQkJX2ZpbmlzaCgpOwoJCQkJCX0pOwoJCQkJfQoJCQl9CgkJfTsKCgkJZnVuY3Rpb24gX3NldF9uYXZpZ2F0aW9uKCkgewoJCQlpZiAob3B0cy5pdGVtQ3VycmVudCAhPT0gMCkgewoJCQkJJCgiI2ZhbmN5X2xlZnQsICNmYW5jeV9sZWZ0X2ljbyIpLnVuYmluZCgpLmJpbmQoImNsaWNrIiwgZnVuY3Rpb24oZSkgewoJCQkJCWUuc3RvcFByb3BhZ2F0aW9uKCk7CgoJCQkJCW9wdHMuaXRlbUN1cnJlbnQtLTsKCQkJCQlfY2hhbmdlX2l0ZW0oKTsKCgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfSk7CgoJCQkJJCgiI2ZhbmN5X2xlZnQiKS5zaG93KCk7CgkJCX0KCgkJCWlmIChvcHRzLml0ZW1DdXJyZW50ICE9ICggb3B0cy5pdGVtQXJyYXkubGVuZ3RoIC0xKSkgewoJCQkJJCgiI2ZhbmN5X3JpZ2h0LCAjZmFuY3lfcmlnaHRfaWNvIikudW5iaW5kKCkuYmluZCgiY2xpY2siLCBmdW5jdGlvbihlKSB7CgkJCQkJZS5zdG9wUHJvcGFnYXRpb24oKTsKCgkJCQkJb3B0cy5pdGVtQ3VycmVudCsrOwoJCQkJCV9jaGFuZ2VfaXRlbSgpOwoKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9KTsKCgkJCQkkKCIjZmFuY3lfcmlnaHQiKS5zaG93KCk7CgkJCX0KCQl9OwoKCQlmdW5jdGlvbiBfZmluaXNoKCkgewoJCQlpZiAoJC5icm93c2VyLm1zaWUpIHsKCQkJCSQoIiNmYW5jeV9jb250ZW50IilbMF0uc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsKCQkJCSQoIiNmYW5jeV9vdXRlciIpWzBdLnN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnZmlsdGVyJyk7CgkJCX0KCgkJCV9zZXRfbmF2aWdhdGlvbigpOwoKCQkJX3ByZWxvYWRfbmVpZ2hib3JfaW1hZ2VzKCk7CgoJCQkkKGRvY3VtZW50KS5iaW5kKCJrZXlkb3duLmZiIiwgZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUua2V5Q29kZSA9PSAyNyAmJiBvcHRzLmVuYWJsZUVzY2FwZUJ1dHRvbikgewoJCQkJCSQuZm4uZmFuY3lib3guY2xvc2UoKTsKCgkJCQl9IGVsc2UgaWYoZS5rZXlDb2RlID09IDM3ICYmIG9wdHMuaXRlbUN1cnJlbnQgIT09IDApIHsKCQkJCQkkKGRvY3VtZW50KS51bmJpbmQoImtleWRvd24uZmIiKTsKCQkJCQlvcHRzLml0ZW1DdXJyZW50LS07CgkJCQkJX2NoYW5nZV9pdGVtKCk7CgkJCQkJCgoJCQkJfSBlbHNlIGlmKGUua2V5Q29kZSA9PSAzOSAmJiBvcHRzLml0ZW1DdXJyZW50ICE9IChvcHRzLml0ZW1BcnJheS5sZW5ndGggLSAxKSkgewoJCQkJCSQoZG9jdW1lbnQpLnVuYmluZCgia2V5ZG93bi5mYiIpOwoJCQkJCW9wdHMuaXRlbUN1cnJlbnQrKzsKCQkJCQlfY2hhbmdlX2l0ZW0oKTsKCQkJCX0KCQkJfSk7CgoJCQlpZiAob3B0cy5oaWRlT25Db250ZW50Q2xpY2spIHsKCQkJCSQoIiNmYW5jeV9jb250ZW50IikuY2xpY2soJC5mbi5mYW5jeWJveC5jbG9zZSk7CgkJCX0KCgkJCWlmIChvcHRzLm92ZXJsYXlTaG93ICYmIG9wdHMuaGlkZU9uT3ZlcmxheUNsaWNrKSB7CgkJCQkkKCIjZmFuY3lfb3ZlcmxheSIpLmJpbmQoImNsaWNrIiwgJC5mbi5mYW5jeWJveC5jbG9zZSk7CgkJCX0KCgkJCWlmIChvcHRzLnNob3dDbG9zZUJ1dHRvbikgewoJCQkJJCgiI2ZhbmN5X2Nsb3NlIikuYmluZCgiY2xpY2siLCAkLmZuLmZhbmN5Ym94LmNsb3NlKS5zaG93KCk7CgkJCX0KCgkJCWlmICh0eXBlb2Ygb3B0cy5pdGVtQXJyYXlbIG9wdHMuaXRlbUN1cnJlbnQgXS50aXRsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0cy5pdGVtQXJyYXlbIG9wdHMuaXRlbUN1cnJlbnQgXS50aXRsZS5sZW5ndGggPiAwKSB7CgkJCQl2YXIgcG9zID0gJCgiI2ZhbmN5X291dGVyIikucG9zaXRpb24oKTsKCgkJCQkkKCcjZmFuY3lfdGl0bGUgZGl2JykudGV4dCggb3B0cy5pdGVtQXJyYXlbIG9wdHMuaXRlbUN1cnJlbnQgXS50aXRsZSkuaHRtbCgpOwoKCQkJCSQoJyNmYW5jeV90aXRsZScpLmNzcyh7CgkJCQkJJ3RvcCcJOiBwb3MudG9wICsgJCgiI2ZhbmN5X291dGVyIikub3V0ZXJIZWlnaHQoKSAtIDMyLAoJCQkJCSdsZWZ0Jwk6IHBvcy5sZWZ0ICsgKCgkKCIjZmFuY3lfb3V0ZXIiKS5vdXRlcldpZHRoKCkgKiAwLjUpIC0gKCQoJyNmYW5jeV90aXRsZScpLndpZHRoKCkgKiAwLjUpKQoJCQkJfSkuc2hvdygpOwoJCQl9CgoJCQlpZiAob3B0cy5vdmVybGF5U2hvdyAmJiBJRTYpIHsKCQkJCSQoJ2VtYmVkLCBvYmplY3QsIHNlbGVjdCcsICQoJyNmYW5jeV9jb250ZW50JykpLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7CgkJCX0KCgkJCWlmICgkLmlzRnVuY3Rpb24ob3B0cy5jYWxsYmFja09uU2hvdykpIHsKCQkJCW9wdHMuY2FsbGJhY2tPblNob3coIG9wdHMuaXRlbUFycmF5WyBvcHRzLml0ZW1DdXJyZW50IF0gKTsKCQkJfQoKCQkJaWYgKCQuYnJvd3Nlci5tc2llKSB7CgkJCQkkKCIjZmFuY3lfb3V0ZXIiKVswXS5zdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ2ZpbHRlcicpOyAKCQkJCSQoIiNmYW5jeV9jb250ZW50IilbMF0uc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsgCgkJCX0KCQkJCgkJCWJ1c3kgPSBmYWxzZTsKCQl9OwoKCQlyZXR1cm4gdGhpcy51bmJpbmQoJ2NsaWNrLmZiJykuYmluZCgnY2xpY2suZmInLCBfaW5pdGlhbGl6ZSk7Cgl9OwoKCSQuZm4uZmFuY3lib3guc2Nyb2xsQm94ID0gZnVuY3Rpb24oKSB7CgkJdmFyIHcgPSAkLmZuLmZhbmN5Ym94LmdldFZpZXdwb3J0KCk7CgkJCgkJaWYgKG9wdHMuY2VudGVyT25TY3JvbGwgJiYgJCgiI2ZhbmN5X291dGVyIikuaXMoJzp2aXNpYmxlJykpIHsKCQkJdmFyIG93CT0gJCgiI2ZhbmN5X291dGVyIikub3V0ZXJXaWR0aCgpOwoJCQl2YXIgb2gJPSAkKCIjZmFuY3lfb3V0ZXIiKS5vdXRlckhlaWdodCgpOwoKCQkJdmFyIHBvcwk9IHsKCQkJCSd0b3AnCTogKG9oID4gd1sxXSA/IHdbM10gOiB3WzNdICsgTWF0aC5yb3VuZCgod1sxXSAtIG9oKSAqIDAuNSkpLAoJCQkJJ2xlZnQnCTogKG93ID4gd1swXSA/IHdbMl0gOiB3WzJdICsgTWF0aC5yb3VuZCgod1swXSAtIG93KSAqIDAuNSkpCgkJCX07CgoJCQkkKCIjZmFuY3lfb3V0ZXIiKS5jc3MocG9zKTsKCgkJCSQoJyNmYW5jeV90aXRsZScpLmNzcyh7CgkJCQkndG9wJwk6IHBvcy50b3AJKyBvaCAtIDMyLAoJCQkJJ2xlZnQnCTogcG9zLmxlZnQJKyAoKG93ICogMC41KSAtICgkKCcjZmFuY3lfdGl0bGUnKS53aWR0aCgpICogMC41KSkKCQkJfSk7CgkJfQoJCQoJCWlmIChJRTYgJiYgJCgiI2ZhbmN5X292ZXJsYXkiKS5pcygnOnZpc2libGUnKSkgewoJCQkkKCIjZmFuY3lfb3ZlcmxheSIpLmNzcyh7CgkJCQknaGVpZ2h0JyA6ICQoZG9jdW1lbnQpLmhlaWdodCgpCgkJCX0pOwoJCX0KCQkKCQlpZiAoJCgiI2ZhbmN5X2xvYWRpbmciKS5pcygnOnZpc2libGUnKSkgewoJCQkkKCIjZmFuY3lfbG9hZGluZyIpLmNzcyh7J2xlZnQnOiAoKHdbMF0gLSA0MCkgKiAwLjUgKyB3WzJdKSwgJ3RvcCc6ICgod1sxXSAtIDQwKSAqIDAuNSArIHdbM10pfSk7CgkJfQoJfTsKCgkkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMgPSBmdW5jdGlvbihlbCwgcHJvcCkgewoJCXJldHVybiBwYXJzZUludCgkLmN1ckNTUyhlbC5qcXVlcnk/ZWxbMF06ZWwscHJvcCx0cnVlKSl8fDA7Cgl9OwoKCSQuZm4uZmFuY3lib3guZ2V0UG9zaXRpb24gPSBmdW5jdGlvbihlbCkgewoJCXZhciBwb3MgPSBlbC5vZmZzZXQoKTsKCgkJcG9zLnRvcAkrPSAkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMoZWwsICdwYWRkaW5nVG9wJyk7CgkJcG9zLnRvcAkrPSAkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMoZWwsICdib3JkZXJUb3BXaWR0aCcpOwoKCQlwb3MubGVmdCArPSAkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMoZWwsICdwYWRkaW5nTGVmdCcpOwoJCXBvcy5sZWZ0ICs9ICQuZm4uZmFuY3lib3guZ2V0TnVtZXJpYyhlbCwgJ2JvcmRlckxlZnRXaWR0aCcpOwoKCQlyZXR1cm4gcG9zOwoJfTsKCgkkLmZuLmZhbmN5Ym94LnNob3dJZnJhbWUgPSBmdW5jdGlvbigpIHsKCQkkKCIjZmFuY3lfbG9hZGluZyIpLmhpZGUoKTsKCQkkKCIjZmFuY3lfZnJhbWUiKS5zaG93KCk7Cgl9OwoKCSQuZm4uZmFuY3lib3guZ2V0Vmlld3BvcnQgPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gWyQod2luZG93KS53aWR0aCgpLCAkKHdpbmRvdykuaGVpZ2h0KCksICQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSwgJChkb2N1bWVudCkuc2Nyb2xsVG9wKCkgXTsKCX07CgoJJC5mbi5mYW5jeWJveC5hbmltYXRlTG9hZGluZyA9IGZ1bmN0aW9uKCkgewoJCWlmICghJCgiI2ZhbmN5X2xvYWRpbmciKS5pcygnOnZpc2libGUnKSl7CgkJCWNsZWFySW50ZXJ2YWwobG9hZGluZ1RpbWVyKTsKCQkJcmV0dXJuOwoJCX0KCgkJJCgiI2ZhbmN5X2xvYWRpbmcgPiBkaXYiKS5jc3MoJ3RvcCcsIChsb2FkaW5nRnJhbWUgKiAtNDApICsgJ3B4Jyk7CgoJCWxvYWRpbmdGcmFtZSA9IChsb2FkaW5nRnJhbWUgKyAxKSAlIDEyOwoJfTsKCgkkLmZuLmZhbmN5Ym94LnNob3dMb2FkaW5nID0gZnVuY3Rpb24oKSB7CgkJY2xlYXJJbnRlcnZhbChsb2FkaW5nVGltZXIpOwoKCQl2YXIgdyA9ICQuZm4uZmFuY3lib3guZ2V0Vmlld3BvcnQoKTsKCgkJJCgiI2ZhbmN5X2xvYWRpbmciKS5jc3MoeydsZWZ0JzogKCh3WzBdIC0gNDApICogMC41ICsgd1syXSksICd0b3AnOiAoKHdbMV0gLSA0MCkgKiAwLjUgKyB3WzNdKX0pLnNob3coKTsKCQkkKCIjZmFuY3lfbG9hZGluZyIpLmJpbmQoJ2NsaWNrJywgJC5mbi5mYW5jeWJveC5jbG9zZSk7CgoJCWxvYWRpbmdUaW1lciA9IHNldEludGVydmFsKCQuZm4uZmFuY3lib3guYW5pbWF0ZUxvYWRpbmcsIDY2KTsKCX07CgoJJC5mbi5mYW5jeWJveC5jbG9zZSA9IGZ1bmN0aW9uKCkgewoJCWJ1c3kgPSB0cnVlOwoKCQkkKGltYWdlUHJlbG9hZGVyKS51bmJpbmQoKTsKCgkJJChkb2N1bWVudCkudW5iaW5kKCJrZXlkb3duLmZiIik7CgkJJCh3aW5kb3cpLnVuYmluZCgicmVzaXplLmZiIHNjcm9sbC5mYiIpOwoKCQkkKCIjZmFuY3lfb3ZlcmxheSwgI2ZhbmN5X2NvbnRlbnQsICNmYW5jeV9jbG9zZSIpLnVuYmluZCgpOwoKCQkkKCIjZmFuY3lfY2xvc2UsICNmYW5jeV9sb2FkaW5nLCAjZmFuY3lfbGVmdCwgI2ZhbmN5X3JpZ2h0LCAjZmFuY3lfdGl0bGUiKS5oaWRlKCk7CgoJCV9fY2xlYW51cCA9IGZ1bmN0aW9uKCkgewoJCQlpZiAoJCgiI2ZhbmN5X292ZXJsYXkiKS5pcygnOnZpc2libGUnKSkgewoJCQkJJCgiI2ZhbmN5X292ZXJsYXkiKS5mYWRlT3V0KCJmYXN0Iik7CgkJCX0KCgkJCSQoIiNmYW5jeV9jb250ZW50IikuZW1wdHkoKTsKCQkJCgkJCWlmIChvcHRzLmNlbnRlck9uU2Nyb2xsKSB7CgkJCQkkKHdpbmRvdykudW5iaW5kKCJyZXNpemUuZmIgc2Nyb2xsLmZiIik7CgkJCX0KCgkJCWlmIChJRTYpIHsKCQkJCSQoJ2VtYmVkLCBvYmplY3QsIHNlbGVjdCcpLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7CgkJCX0KCgkJCWlmICgkLmlzRnVuY3Rpb24ob3B0cy5jYWxsYmFja09uQ2xvc2UpKSB7CgkJCQlvcHRzLmNhbGxiYWNrT25DbG9zZSgpOwoJCQl9CgoJCQlidXN5ID0gZmFsc2U7CgkJfTsKCgkJaWYgKCQoIiNmYW5jeV9vdXRlciIpLmlzKCI6dmlzaWJsZSIpICE9PSBmYWxzZSkgewoJCQlpZiAob3B0cy56b29tU3BlZWRPdXQgPiAwICYmIG9wdHMuaXRlbUFycmF5W29wdHMuaXRlbUN1cnJlbnRdLm9yaWcgIT09IHVuZGVmaW5lZCkgewoJCQkJdmFyIG9yaWdfaXRlbQk9IG9wdHMuaXRlbUFycmF5W29wdHMuaXRlbUN1cnJlbnRdLm9yaWc7CgkJCQl2YXIgb3JpZ19wb3MJPSAkLmZuLmZhbmN5Ym94LmdldFBvc2l0aW9uKG9yaWdfaXRlbSk7CgoJCQkJdmFyIGl0ZW1PcHRzID0gewoJCQkJCSdsZWZ0JzoJCShvcmlnX3Bvcy5sZWZ0CS0gMjAgLSBvcHRzLnBhZGRpbmcpICsgJ3B4JywKCQkJCQkndG9wJzogCQkob3JpZ19wb3MudG9wCS0gMjAgLSBvcHRzLnBhZGRpbmcpICsgJ3B4JywKCQkJCQknd2lkdGgnOgkkKG9yaWdfaXRlbSkud2lkdGgoKSArIChvcHRzLnBhZGRpbmcgKiAyKSwKCQkJCQknaGVpZ2h0JzoJJChvcmlnX2l0ZW0pLmhlaWdodCgpICsgKG9wdHMucGFkZGluZyAqIDIpCgkJCQl9OwoKCQkJCWlmIChvcHRzLnpvb21PcGFjaXR5KSB7CgkJCQkJaXRlbU9wdHMub3BhY2l0eSA9ICdoaWRlJzsKCQkJCX0KCgkJCQkkKCIjZmFuY3lfb3V0ZXIiKS5zdG9wKGZhbHNlLCB0cnVlKS5hbmltYXRlKGl0ZW1PcHRzLCBvcHRzLnpvb21TcGVlZE91dCwgb3B0cy5lYXNpbmdPdXQsIF9fY2xlYW51cCk7CgoJCQl9IGVsc2UgewoJCQkJJCgiI2ZhbmN5X291dGVyIikuc3RvcChmYWxzZSwgdHJ1ZSkuZmFkZU91dCgnZmFzdCcsIF9fY2xlYW51cCk7CgkJCX0KCgkJfSBlbHNlIHsKCQkJX19jbGVhbnVwKCk7CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9OwoKCSQuZm4uZmFuY3lib3guYnVpbGQgPSBmdW5jdGlvbigpIHsKCQl2YXIgaHRtbCA9ICcnOwoKCQlodG1sICs9ICc8ZGl2IGlkPSJmYW5jeV9vdmVybGF5Ij48L2Rpdj4nOwoJCWh0bWwgKz0gJzxkaXYgaWQ9ImZhbmN5X2xvYWRpbmciPjxkaXY+PC9kaXY+PC9kaXY+JzsKCgkJaHRtbCArPSAnPGRpdiBpZD0iZmFuY3lfb3V0ZXIiPic7CgkJaHRtbCArPSAnPGRpdiBpZD0iZmFuY3lfaW5uZXIiPic7CgoJCWh0bWwgKz0gJzxkaXYgaWQ9ImZhbmN5X2Nsb3NlIj48L2Rpdj4nOwoKCQlodG1sICs9ICc8ZGl2IGlkPSJmYW5jeV9iZyI+PGRpdiBjbGFzcz0iZmFuY3lfYmciIGlkPSJmYW5jeV9iZ19uIj48L2Rpdj48ZGl2IGNsYXNzPSJmYW5jeV9iZyIgaWQ9ImZhbmN5X2JnX25lIj48L2Rpdj48ZGl2IGNsYXNzPSJmYW5jeV9iZyIgaWQ9ImZhbmN5X2JnX2UiPjwvZGl2PjxkaXYgY2xhc3M9ImZhbmN5X2JnIiBpZD0iZmFuY3lfYmdfc2UiPjwvZGl2PjxkaXYgY2xhc3M9ImZhbmN5X2JnIiBpZD0iZmFuY3lfYmdfcyI+PC9kaXY+PGRpdiBjbGFzcz0iZmFuY3lfYmciIGlkPSJmYW5jeV9iZ19zdyI+PC9kaXY+PGRpdiBjbGFzcz0iZmFuY3lfYmciIGlkPSJmYW5jeV9iZ193Ij48L2Rpdj48ZGl2IGNsYXNzPSJmYW5jeV9iZyIgaWQ9ImZhbmN5X2JnX253Ij48L2Rpdj48L2Rpdj4nOwoKCQlodG1sICs9ICc8YSBocmVmPSJqYXZhc2NyaXB0OjsiIGlkPSJmYW5jeV9sZWZ0Ij48c3BhbiBjbGFzcz0iZmFuY3lfaWNvIiBpZD0iZmFuY3lfbGVmdF9pY28iPjwvc3Bhbj48L2E+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBpZD0iZmFuY3lfcmlnaHQiPjxzcGFuIGNsYXNzPSJmYW5jeV9pY28iIGlkPSJmYW5jeV9yaWdodF9pY28iPjwvc3Bhbj48L2E+JzsKCgkJaHRtbCArPSAnPGRpdiBpZD0iZmFuY3lfY29udGVudCI+PC9kaXY+JzsKCgkJaHRtbCArPSAnPC9kaXY+JzsKCQlodG1sICs9ICc8L2Rpdj4nOwoJCQoJCWh0bWwgKz0gJzxkaXYgaWQ9ImZhbmN5X3RpdGxlIj48L2Rpdj4nOwoJCQoJCSQoaHRtbCkuYXBwZW5kVG8oImJvZHkiKTsKCgkJJCgnPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj48dHI+PHRkIGNsYXNzPSJmYW5jeV90aXRsZSIgaWQ9ImZhbmN5X3RpdGxlX2xlZnQiPjwvdGQ+PHRkIGNsYXNzPSJmYW5jeV90aXRsZSIgaWQ9ImZhbmN5X3RpdGxlX21haW4iPjxkaXY+PC9kaXY+PC90ZD48dGQgY2xhc3M9ImZhbmN5X3RpdGxlIiBpZD0iZmFuY3lfdGl0bGVfcmlnaHQiPjwvdGQ+PC90cj48L3RhYmxlPicpLmFwcGVuZFRvKCcjZmFuY3lfdGl0bGUnKTsKCgkJaWYgKCQuYnJvd3Nlci5tc2llKSB7CgkJCSQoIi5mYW5jeV9iZyIpLmZpeFBORygpOwoJCX0KCgkJaWYgKElFNikgewoJCQkkKCJkaXYjZmFuY3lfb3ZlcmxheSIpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKTsKCQkJJCgiI2ZhbmN5X2xvYWRpbmcgZGl2LCAjZmFuY3lfY2xvc2UsIC5mYW5jeV90aXRsZSwgLmZhbmN5X2ljbyIpLmZpeFBORygpOwoKCQkJJCgiI2ZhbmN5X2lubmVyIikucHJlcGVuZCgnPGlmcmFtZSBpZD0iZmFuY3lfYmlnSWZyYW1lIiBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7IiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+Jyk7CgoJCQkvLyBHZXQgcmlkIG9mIHRoZSAnZmFsc2UnIHRleHQgaW50cm9kdWNlZCBieSB0aGUgVVJMIG9mIHRoZSBpZnJhbWUKCQkJdmFyIGZyYW1lRG9jID0gJCgnI2ZhbmN5X2JpZ0lmcmFtZScpWzBdLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7CgkJCWZyYW1lRG9jLm9wZW4oKTsKCQkJZnJhbWVEb2MuY2xvc2UoKTsKCQkJCgkJfQoJfTsKCgkkLmZuLmZhbmN5Ym94LmRlZmF1bHRzID0gewoJCXBhZGRpbmcJCQkJOgkxMCwKCQlpbWFnZVNjYWxlCQkJOgl0cnVlLAoJCXpvb21PcGFjaXR5CQkJOgl0cnVlLAoJCXpvb21TcGVlZEluCQkJOgkwLAoJCXpvb21TcGVlZE91dAkJOgkwLAoJCXpvb21TcGVlZENoYW5nZQkJOgkzMDAsCgkJZWFzaW5nSW4JCQk6CSdzd2luZycsCgkJZWFzaW5nT3V0CQkJOgknc3dpbmcnLAoJCWVhc2luZ0NoYW5nZQkJOgknc3dpbmcnLAoJCWZyYW1lV2lkdGgJCQk6CTU2MCwKCQlmcmFtZUhlaWdodAkJCToJMzQwLAoJCW92ZXJsYXlTaG93CQkJOgl0cnVlLAoJCW92ZXJsYXlPcGFjaXR5CQk6CTAuMywKCQlvdmVybGF5Q29sb3IJCToJJyM2NjYnLAoJCWVuYWJsZUVzY2FwZUJ1dHRvbgk6CXRydWUsCgkJc2hvd0Nsb3NlQnV0dG9uCQk6CXRydWUsCgkJaGlkZU9uT3ZlcmxheUNsaWNrCToJdHJ1ZSwKCQloaWRlT25Db250ZW50Q2xpY2sJOgl0cnVlLAoJCWNlbnRlck9uU2Nyb2xsCQk6CXRydWUsCgkJaXRlbUFycmF5CQkJOglbXSwKCQljYWxsYmFja09uU3RhcnQJCToJbnVsbCwKCQljYWxsYmFja09uU2hvdwkJOgludWxsLAoJCWNhbGxiYWNrT25DbG9zZQkJOgludWxsCgl9OwoKCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCWllUXVpcmtzID0gJC5icm93c2VyLm1zaWUgJiYgISQuYm94TW9kZWw7CgoJCWlmICgkKCIjZmFuY3lfb3V0ZXIiKS5sZW5ndGggPCAxKSB7CgkJCSQuZm4uZmFuY3lib3guYnVpbGQoKTsKCQl9Cgl9KTsKCn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/jquery/contract.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAALANUAAOfu8OXt8NTh5sHb477S2rrO1bPJ0LDJ1KTJ1anF0J3F0qG/yZy7xpe7ypm3wpC1w5O1wIuzw4+ywI+xvYiuvomtuoSrvH6ls3yktXWerHKdr2+aqnCaqG6ZqmqXqWSSo2aSomKRo1qLnViJmlKFmEp/kkJ5jP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHACcALAAAAAAQAAsAAAZUwAOlESkajxHL4fQYIBTQqPRxOgUwCY12yw1UTwSJxEMukwnfamXRCbnflfR3wxDZ7R/5V3C5kP4kAnpfDhAjJSUOg2kcEyYgi2kAGRkAkWkGBYNBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/expand.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhDAARANUAAPX4+fP2+O7z9e7z9unw8+jv8+Xt79/p7ODp7NLg5dHf5c/d4s3c4cLW3rfQ2azO2azM17LJ0bHI0J/G06nDzaTBy528yJe+zJ68yZi4xJi4w46xvYmwv4avvYatvYituYKsu4KpuISotYGmtH+msoClsnyktHyjsnegrnKcqm2arG6Zp2iVpWaUpmSSo2GPoF6OoFaImlaHmE6ClU2Bk0Z8j////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHADYALAAAAAAMABEAAAZgwIJtSCzaGhiBsdi4eBTLYWMCUlEAy2m1dToYtaoW7CVhUsOw2KwUkJ7F6ppscXynZzNSygCGszQrDHVbLRsfIkRgJhUoEWYdFhkjCF8PDiEUUQ0QHAlRRxgDnzYEo0NBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.easing.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEVhc2luZyB2MS4zIC0gaHR0cDovL2dzZ2QuY28udWsvc2FuZGJveC9qcXVlcnkvZWFzaW5nLwogKgogKiBVc2VzIHRoZSBidWlsdCBpbiBlYXNpbmcgY2FwYWJpbGl0aWVzIGFkZGVkIEluIGpRdWVyeSAxLjEKICogdG8gb2ZmZXIgbXVsdGlwbGUgZWFzaW5nIG9wdGlvbnMKICoKICogVEVSTVMgT0YgVVNFIC0galF1ZXJ5IEVhc2luZwogKiAKICogT3BlbiBzb3VyY2UgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLiAKICogCiAqIENvcHlyaWdodCDCqSAyMDA4IEdlb3JnZSBNY0dpbmxleSBTbWl0aAogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiAKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCiAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICogCiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIAogKiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IAogKiBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKICogcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAKICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2UgCiAqIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqIAogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSAKICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiAgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogKiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFCiAqICBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgCiAqIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCiAqICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCAKICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICoKKi8KCi8vIHQ6IGN1cnJlbnQgdGltZSwgYjogYmVnSW5uSW5nIHZhbHVlLCBjOiBjaGFuZ2UgSW4gdmFsdWUsIGQ6IGR1cmF0aW9uCmpRdWVyeS5lYXNpbmdbJ2pzd2luZyddID0galF1ZXJ5LmVhc2luZ1snc3dpbmcnXTsKCmpRdWVyeS5leHRlbmQoIGpRdWVyeS5lYXNpbmcsCnsKCWRlZjogJ2Vhc2VPdXRRdWFkJywKCXN3aW5nOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCS8vYWxlcnQoalF1ZXJ5LmVhc2luZy5kZWZhdWx0KTsKCQlyZXR1cm4galF1ZXJ5LmVhc2luZ1tqUXVlcnkuZWFzaW5nLmRlZl0oeCwgdCwgYiwgYywgZCk7Cgl9LAoJZWFzZUluUXVhZDogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyoodC89ZCkqdCArIGI7Cgl9LAoJZWFzZU91dFF1YWQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIC1jICoodC89ZCkqKHQtMikgKyBiOwoJfSwKCWVhc2VJbk91dFF1YWQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQgKyBiOwoJCXJldHVybiAtYy8yICogKCgtLXQpKih0LTIpIC0gMSkgKyBiOwoJfSwKCWVhc2VJbkN1YmljOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiBjKih0Lz1kKSp0KnQgKyBiOwoJfSwKCWVhc2VPdXRDdWJpYzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyooKHQ9dC9kLTEpKnQqdCArIDEpICsgYjsKCX0sCgllYXNlSW5PdXRDdWJpYzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlpZiAoKHQvPWQvMikgPCAxKSByZXR1cm4gYy8yKnQqdCp0ICsgYjsKCQlyZXR1cm4gYy8yKigodC09MikqdCp0ICsgMikgKyBiOwoJfSwKCWVhc2VJblF1YXJ0OiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiBjKih0Lz1kKSp0KnQqdCArIGI7Cgl9LAoJZWFzZU91dFF1YXJ0OiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiAtYyAqICgodD10L2QtMSkqdCp0KnQgLSAxKSArIGI7Cgl9LAoJZWFzZUluT3V0UXVhcnQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQqdCp0ICsgYjsKCQlyZXR1cm4gLWMvMiAqICgodC09MikqdCp0KnQgLSAyKSArIGI7Cgl9LAoJZWFzZUluUXVpbnQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIGMqKHQvPWQpKnQqdCp0KnQgKyBiOwoJfSwKCWVhc2VPdXRRdWludDogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyooKHQ9dC9kLTEpKnQqdCp0KnQgKyAxKSArIGI7Cgl9LAoJZWFzZUluT3V0UXVpbnQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQqdCp0KnQgKyBiOwoJCXJldHVybiBjLzIqKCh0LT0yKSp0KnQqdCp0ICsgMikgKyBiOwoJfSwKCWVhc2VJblNpbmU6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIC1jICogTWF0aC5jb3ModC9kICogKE1hdGguUEkvMikpICsgYyArIGI7Cgl9LAoJZWFzZU91dFNpbmU6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIGMgKiBNYXRoLnNpbih0L2QgKiAoTWF0aC5QSS8yKSkgKyBiOwoJfSwKCWVhc2VJbk91dFNpbmU6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIC1jLzIgKiAoTWF0aC5jb3MoTWF0aC5QSSp0L2QpIC0gMSkgKyBiOwoJfSwKCWVhc2VJbkV4cG86IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuICh0PT0wKSA/IGIgOiBjICogTWF0aC5wb3coMiwgMTAgKiAodC9kIC0gMSkpICsgYjsKCX0sCgllYXNlT3V0RXhwbzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gKHQ9PWQpID8gYitjIDogYyAqICgtTWF0aC5wb3coMiwgLTEwICogdC9kKSArIDEpICsgYjsKCX0sCgllYXNlSW5PdXRFeHBvOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCWlmICh0PT0wKSByZXR1cm4gYjsKCQlpZiAodD09ZCkgcmV0dXJuIGIrYzsKCQlpZiAoKHQvPWQvMikgPCAxKSByZXR1cm4gYy8yICogTWF0aC5wb3coMiwgMTAgKiAodCAtIDEpKSArIGI7CgkJcmV0dXJuIGMvMiAqICgtTWF0aC5wb3coMiwgLTEwICogLS10KSArIDIpICsgYjsKCX0sCgllYXNlSW5DaXJjOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiAtYyAqIChNYXRoLnNxcnQoMSAtICh0Lz1kKSp0KSAtIDEpICsgYjsKCX0sCgllYXNlT3V0Q2lyYzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyAqIE1hdGguc3FydCgxIC0gKHQ9dC9kLTEpKnQpICsgYjsKCX0sCgllYXNlSW5PdXRDaXJjOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCWlmICgodC89ZC8yKSA8IDEpIHJldHVybiAtYy8yICogKE1hdGguc3FydCgxIC0gdCp0KSAtIDEpICsgYjsKCQlyZXR1cm4gYy8yICogKE1hdGguc3FydCgxIC0gKHQtPTIpKnQpICsgMSkgKyBiOwoJfSwKCWVhc2VJbkVsYXN0aWM6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJdmFyIHM9MS43MDE1ODt2YXIgcD0wO3ZhciBhPWM7CgkJaWYgKHQ9PTApIHJldHVybiBiOyAgaWYgKCh0Lz1kKT09MSkgcmV0dXJuIGIrYzsgIGlmICghcCkgcD1kKi4zOwoJCWlmIChhIDwgTWF0aC5hYnMoYykpIHsgYT1jOyB2YXIgcz1wLzQ7IH0KCQllbHNlIHZhciBzID0gcC8oMipNYXRoLlBJKSAqIE1hdGguYXNpbiAoYy9hKTsKCQlyZXR1cm4gLShhKk1hdGgucG93KDIsMTAqKHQtPTEpKSAqIE1hdGguc2luKCAodCpkLXMpKigyKk1hdGguUEkpL3AgKSkgKyBiOwoJfSwKCWVhc2VPdXRFbGFzdGljOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXZhciBzPTEuNzAxNTg7dmFyIHA9MDt2YXIgYT1jOwoJCWlmICh0PT0wKSByZXR1cm4gYjsgIGlmICgodC89ZCk9PTEpIHJldHVybiBiK2M7ICBpZiAoIXApIHA9ZCouMzsKCQlpZiAoYSA8IE1hdGguYWJzKGMpKSB7IGE9YzsgdmFyIHM9cC80OyB9CgkJZWxzZSB2YXIgcyA9IHAvKDIqTWF0aC5QSSkgKiBNYXRoLmFzaW4gKGMvYSk7CgkJcmV0dXJuIGEqTWF0aC5wb3coMiwtMTAqdCkgKiBNYXRoLnNpbiggKHQqZC1zKSooMipNYXRoLlBJKS9wICkgKyBjICsgYjsKCX0sCgllYXNlSW5PdXRFbGFzdGljOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXZhciBzPTEuNzAxNTg7dmFyIHA9MDt2YXIgYT1jOwoJCWlmICh0PT0wKSByZXR1cm4gYjsgIGlmICgodC89ZC8yKT09MikgcmV0dXJuIGIrYzsgIGlmICghcCkgcD1kKiguMyoxLjUpOwoJCWlmIChhIDwgTWF0aC5hYnMoYykpIHsgYT1jOyB2YXIgcz1wLzQ7IH0KCQllbHNlIHZhciBzID0gcC8oMipNYXRoLlBJKSAqIE1hdGguYXNpbiAoYy9hKTsKCQlpZiAodCA8IDEpIHJldHVybiAtLjUqKGEqTWF0aC5wb3coMiwxMCoodC09MSkpICogTWF0aC5zaW4oICh0KmQtcykqKDIqTWF0aC5QSSkvcCApKSArIGI7CgkJcmV0dXJuIGEqTWF0aC5wb3coMiwtMTAqKHQtPTEpKSAqIE1hdGguc2luKCAodCpkLXMpKigyKk1hdGguUEkpL3AgKSouNSArIGMgKyBiOwoJfSwKCWVhc2VJbkJhY2s6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkLCBzKSB7CgkJaWYgKHMgPT0gdW5kZWZpbmVkKSBzID0gMS43MDE1ODsKCQlyZXR1cm4gYyoodC89ZCkqdCooKHMrMSkqdCAtIHMpICsgYjsKCX0sCgllYXNlT3V0QmFjazogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQsIHMpIHsKCQlpZiAocyA9PSB1bmRlZmluZWQpIHMgPSAxLjcwMTU4OwoJCXJldHVybiBjKigodD10L2QtMSkqdCooKHMrMSkqdCArIHMpICsgMSkgKyBiOwoJfSwKCWVhc2VJbk91dEJhY2s6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkLCBzKSB7CgkJaWYgKHMgPT0gdW5kZWZpbmVkKSBzID0gMS43MDE1ODsgCgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMioodCp0KigoKHMqPSgxLjUyNSkpKzEpKnQgLSBzKSkgKyBiOwoJCXJldHVybiBjLzIqKCh0LT0yKSp0KigoKHMqPSgxLjUyNSkpKzEpKnQgKyBzKSArIDIpICsgYjsKCX0sCgllYXNlSW5Cb3VuY2U6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIGMgLSBqUXVlcnkuZWFzaW5nLmVhc2VPdXRCb3VuY2UgKHgsIGQtdCwgMCwgYywgZCkgKyBiOwoJfSwKCWVhc2VPdXRCb3VuY2U6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kKSA8ICgxLzIuNzUpKSB7CgkJCXJldHVybiBjKig3LjU2MjUqdCp0KSArIGI7CgkJfSBlbHNlIGlmICh0IDwgKDIvMi43NSkpIHsKCQkJcmV0dXJuIGMqKDcuNTYyNSoodC09KDEuNS8yLjc1KSkqdCArIC43NSkgKyBiOwoJCX0gZWxzZSBpZiAodCA8ICgyLjUvMi43NSkpIHsKCQkJcmV0dXJuIGMqKDcuNTYyNSoodC09KDIuMjUvMi43NSkpKnQgKyAuOTM3NSkgKyBiOwoJCX0gZWxzZSB7CgkJCXJldHVybiBjKig3LjU2MjUqKHQtPSgyLjYyNS8yLjc1KSkqdCArIC45ODQzNzUpICsgYjsKCQl9Cgl9LAoJZWFzZUluT3V0Qm91bmNlOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCWlmICh0IDwgZC8yKSByZXR1cm4galF1ZXJ5LmVhc2luZy5lYXNlSW5Cb3VuY2UgKHgsIHQqMiwgMCwgYywgZCkgKiAuNSArIGI7CgkJcmV0dXJuIGpRdWVyeS5lYXNpbmcuZWFzZU91dEJvdW5jZSAoeCwgdCoyLWQsIDAsIGMsIGQpICogLjUgKyBjKi41ICsgYjsKCX0KfSk7CgovKgogKgogKiBURVJNUyBPRiBVU0UgLSBFQVNJTkcgRVFVQVRJT05TCiAqIAogKiBPcGVuIHNvdXJjZSB1bmRlciB0aGUgQlNEIExpY2Vuc2UuIAogKiAKICogQ29weXJpZ2h0IMKpIDIwMDEgUm9iZXJ0IFBlbm5lcgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiAKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCiAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICogCiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIAogKiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IAogKiBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKICogcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAKICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2UgCiAqIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqIAogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSAKICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiAgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogKiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFCiAqICBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgCiAqIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCiAqICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCAKICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICoKICov]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDovL2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2lnCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTogMjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICogUmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwualF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJuIG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBlKXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4gdGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYoRyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNle3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQhPUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRleHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBvKEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhkb2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhpcy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFjazpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztHLmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihIKXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMpfSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRoaXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixvLnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lmKChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1nfXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihGKXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5ub2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFsbDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25lckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNlcnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3doaWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJlZm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVuY3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBGPXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChFLHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUsRyl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5tYXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNYTUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4gby5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioiKS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pdLmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIoRSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHByLm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQpe2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2VzdCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rpb24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5vdCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5ndGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRoaXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9vKEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFFJiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24oSyl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShFLCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNpZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STowLEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVjdGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVybiBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5pc0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhpcy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVjdCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxOKT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgpe3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxodG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpOm51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0sTCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhpc1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lmKEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEsodGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4sTyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShPLCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFwcGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYpe2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlwZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29udGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERhdGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVudHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1pZih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlmKEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNbSF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYoSj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFMLm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1tdOnt9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIgYj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWlnaHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4kPXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNBcnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJyYXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVyRG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0UudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtFLnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVDaGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5hbWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtpZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Upe2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsuY2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIgSj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1yZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlvbihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYmRz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRkOmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNsYXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xhc3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAiKToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwoRi5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0ZdPUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYgaW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lmKEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdodDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lmKCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhILCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5vZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0sY3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9wYWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHkiKTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31pZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxlKXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRlZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYoRj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJyZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVzdChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRpbWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1FLnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3duZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1pZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIgSD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNyZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3RyaW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24oVSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhPZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hpbGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3ZhciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFSP0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hpbGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01dKX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3QoUykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxzKi8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVzKX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pdLCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0dbSl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdbSl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRyOmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlwZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgmJm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtpZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2RlKXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31pZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXtyZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFiSW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5hbWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIiK0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRBdHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtKLnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwoW14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9wYWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5kZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgvb3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0oW2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0pO2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lmKEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4gLTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYoIW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcubm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1udWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIgRj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3ZhciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0ddKX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9uKEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJuIEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4rKD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2FmYXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxsYS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVhY2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJlbnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5leHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJldmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJheShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9uKEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmciKXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0wLEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUpOnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1vdmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVuY3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNsYXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUiXSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUsW3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5yZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQodGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBqKEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVlKSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtjYWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVbSF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hlW0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1bRV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1vdmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5yZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5jYWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngiKSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkpe0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2goSCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVldWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihGIT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihFLEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYoRz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0rIiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlzWzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNle3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEddKS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1vdmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2YgRSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1vLnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5jYWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIwMDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3VtZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxXLGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJpZ2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZihaLmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUpfWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hpbGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVouc2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3AoKSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJlbnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIsYWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hpbGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZlW2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUkucmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIisoYWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFdKX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFzRHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3IodmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFdKXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVuY3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtpZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZighWil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxhaT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZhYy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hbYWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5wcmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVsc2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFmPWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFlPVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtYXT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihhaCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwiIik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15cKV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIsYWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYoKFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixVLGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3QoVSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTtaW1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJlbnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVlKX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRjaCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJlbnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwrKyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3ZhciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5nIixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVvZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdldEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rpb24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVmaW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3IodmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcsVSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoYWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtpZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsxXS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBWPTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0ibnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJdPT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoVFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0wO1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgsVSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJLmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtYWzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxWLFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxzZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2guYXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVzdChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJuIFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2FibGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oVCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQpe1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24oVCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJwYXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3VibWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxULm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rpb24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXtyZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1XLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9kZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVxOmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIpe3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2YoVlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBXPTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFdLFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUucHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNlfX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGlsZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYoVj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnROb2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIgWD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFyIGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3JldHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVybiBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxVLm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhVLmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJIYW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdldEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVsbD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1mYWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9aPT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtpZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9yKHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lmKFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxbXTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhbVl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1yZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJhbmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVjdE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xsYXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJIVE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgsWSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhWil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZXLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106ZzpbXX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9yKHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2goWFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcpe1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJldHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVyO0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgpfWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24oKXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixXKXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlvdXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKyspe3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpjYWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lmKFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVUeXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVOYW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhVLFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYoVCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkpe1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMpe1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIpe2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0pLmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUpfTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVudCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIgVz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2guUFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxVPVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihYLFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3RvcnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxULm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdodD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3JldHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVsZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUpe1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtvLm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1YW1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlvbihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3VpZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZlbnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlmdCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05dO2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05dLnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQuc3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8pPT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3RlbmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihLLEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZhciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBlb2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGluIEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlvbihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdFeHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxcLnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtmb3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNwZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2JyZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNpYWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZlbnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhhbmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZlbnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdbT119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywiaGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9uKEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJvYmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5leGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlzLmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5oYW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBlPT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJheShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRhKEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitHXS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0ddJiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRjaChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lmKEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rpb24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4iKTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFyIEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwuIikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYoSFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRoaXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltKXX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVudE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxhdGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50OkguZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gucGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVmdHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkkuc2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1pZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFyQ29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1pZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYoIUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlkKys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUsRil7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihHKXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsiKFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwxKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5jdGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gdSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVsdCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJsZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5jdGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1vdXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhpcy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRoaXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5ldmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxGKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUsRix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNbMF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFByb3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4gRi5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5sYXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFkeUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3ZhciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhkb2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixFKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5iaW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVjdG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtvLmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEksSil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3QoSi5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29ydChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iiktby5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtpZih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNlKXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3JldHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2csInwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlzdDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24oKXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtmdW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28ucmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxsZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVybn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1vLnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5lYWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNrLGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3VibWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJpbmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVbRV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVtKX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJIVE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxlPSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwhRSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENoaWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5jc3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7IikpfWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtKXSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxlZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5zdHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsdGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9hZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXtyZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0wKXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBIPSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNle2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0ucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00ucmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2VhcmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBHPW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJfX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWpheFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nlc3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5leHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykpe0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUsRil7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVuY3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWpheFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGdsb2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8uZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygmfCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnByb2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBhcmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIpe2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5kYXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYiOiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNvbiJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2goRil8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00uZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtXXT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1ddfWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlwZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5jYWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUrKChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToiIil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFjdGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0ic2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtULm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxvYWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnhocigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2VybmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRyeXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixNLmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVmYXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEosTSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRlPT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNzKEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0udXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3RyeXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNlcmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2RpZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxzZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0uYXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwoTiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihKJiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRhdGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixSKX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0osTV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIpfWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0osTV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUsRyl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZlbnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlvbi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMwMCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIgSD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcuc3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYmRi5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNlVGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJyb3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcuZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJzY3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwiXSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkpe28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5pc0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYiKS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlvbiB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xpY2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1hdGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5ndGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlzcGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0ddKXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9keSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEspfX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihHLEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rpb24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpmdW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxFLEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixILEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlwZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtpZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNvbXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYmdGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwpe3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5kKHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixLLE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUiP0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQIT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVlKSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMToxKSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0pO3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVycztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtpZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRlcXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4gdGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oRyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZIfHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3BlZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNvbXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Upe28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xkLmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oRyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXtyZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpO2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZsb2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0xMDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwicHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5sZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxlbmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0uc3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lmKEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRydWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9wdGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRoaXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIpPT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRoaXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5vcHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5nIjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChvLmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFjaXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHlsZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnByb3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3RvcDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRvY3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRvcHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9sbFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVybnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5vd25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8uZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zmc2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkohPT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNjcm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9wLEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYhKG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJsZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRUb3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1NYXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5zY3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8ub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXplZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRNTD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGlsZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRvcD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlzLmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9mZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQoKSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVmdDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVmdC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lkdGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9wLUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVudC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUpJiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJlbnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8obCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/IkxlZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgpO28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitHXT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFsc2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2FzZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhpc1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNldCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhKLHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.tablednd.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRhYmxlRG5EIHBsdWctaW4gZm9yIEpRdWVyeSwgYWxsb3dzIHlvdSB0byBkcmFnIGFuZCBkcm9wIHRhYmxlIHJvd3MKICogWW91IGNhbiBzZXQgdXAgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IHRoZSBzeXN0ZW0gd2lsbCB3b3JrCiAqIENvcHlyaWdodCAoYykgRGVuaXMgSG93bGV0dCA8ZGVuaXNoQGlzb2NyYS5jb20+CiAqIExpY2Vuc2VkIGxpa2UgalF1ZXJ5LCBzZWUgaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9MaWNlbnNlLgogKgogKiBDb25maWd1cmF0aW9uIG9wdGlvbnM6CiAqIAogKiBvbkRyYWdTdHlsZQogKiAgICAgVGhpcyBpcyB0aGUgc3R5bGUgdGhhdCBpcyBhc3NpZ25lZCB0byB0aGUgcm93IGR1cmluZyBkcmFnLiBUaGVyZSBhcmUgbGltaXRhdGlvbnMgdG8gdGhlIHN0eWxlcyB0aGF0IGNhbiBiZQogKiAgICAgYXNzb2NpYXRlZCB3aXRoIGEgcm93IChzdWNoIGFzIHlvdSBjYW4ndCBhc3NpZ24gYSBib3JkZXItLXdlbGwgeW91IGNhbiwgYnV0IGl0IHdvbid0IGJlCiAqICAgICBkaXNwbGF5ZWQpLiAoU28gaW5zdGVhZCBjb25zaWRlciB1c2luZyBvbkRyYWdDbGFzcy4pIFRoZSBDU1Mgc3R5bGUgdG8gYXBwbHkgaXMgc3BlY2lmaWVkIGFzCiAqICAgICBhIG1hcCAoYXMgdXNlZCBpbiB0aGUgalF1ZXJ5IGNzcyguLi4pIGZ1bmN0aW9uKS4KICogb25Ecm9wU3R5bGUKICogICAgIFRoaXMgaXMgdGhlIHN0eWxlIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhlIHJvdyB3aGVuIGl0IGlzIGRyb3BwZWQuIEFzIGZvciBvbkRyYWdTdHlsZSwgdGhlcmUgYXJlIGxpbWl0YXRpb25zCiAqICAgICB0byB3aGF0IHlvdSBjYW4gZG8uIEFsc28gdGhpcyByZXBsYWNlcyB0aGUgb3JpZ2luYWwgc3R5bGUsIHNvIGFnYWluIGNvbnNpZGVyIHVzaW5nIG9uRHJhZ0NsYXNzIHdoaWNoCiAqICAgICBpcyBzaW1wbHkgYWRkZWQgYW5kIHRoZW4gcmVtb3ZlZCBvbiBkcm9wLgogKiBvbkRyYWdDbGFzcwogKiAgICAgVGhpcyBjbGFzcyBpcyBhZGRlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBkcmFnIGFuZCB0aGVuIHJlbW92ZWQgd2hlbiB0aGUgcm93IGlzIGRyb3BwZWQuIEl0IGlzIG1vcmUKICogICAgIGZsZXhpYmxlIHRoYW4gdXNpbmcgb25EcmFnU3R5bGUgc2luY2UgaXQgY2FuIGJlIGluaGVyaXRlZCBieSB0aGUgcm93IGNlbGxzIGFuZCBvdGhlciBjb250ZW50LiBUaGUgZGVmYXVsdAogKiAgICAgaXMgY2xhc3MgaXMgdERuRF93aGlsZURyYWcuIFNvIHRvIHVzZSB0aGUgZGVmYXVsdCwgc2ltcGx5IGN1c3RvbWlzZSB0aGlzIENTUyBjbGFzcyBpbiB5b3VyCiAqICAgICBzdHlsZXNoZWV0LgogKiBvbkRyb3AKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkcm9wcGVkLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgdGFibGUKICogICAgIGFuZCB0aGUgcm93IHRoYXQgd2FzIGRyb3BwZWQuIFlvdSBjYW4gd29yayBvdXQgdGhlIG5ldyBvcmRlciBvZiB0aGUgcm93cyBieSB1c2luZwogKiAgICAgdGFibGUucm93cy4KICogb25EcmFnU3RhcnQKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgc3RhcnRzIGRyYWdnaW5nLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUKICogICAgIHRhYmxlIGFuZCB0aGUgcm93IHdoaWNoIHRoZSB1c2VyIGhhcyBzdGFydGVkIHRvIGRyYWcuCiAqIG9uQWxsb3dEcm9wCiAqICAgICBQYXNzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhcyBhIHJvdyBpcyBvdmVyIGFub3RoZXIgcm93LiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCBhbGxvdyAKICogICAgIGRyb3BwaW5nIG9uIHRoYXQgcm93LCBvdGhlcndpc2Ugbm90LiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgZHJhZ2dlZCByb3cgYW5kIHRoZSByb3cgdW5kZXIKICogICAgIHRoZSBjdXJzb3IuIEl0IHJldHVybnMgYSBib29sZWFuOiB0cnVlIGFsbG93cyB0aGUgZHJvcCwgZmFsc2UgZG9lc24ndCBhbGxvdyBpdC4KICogc2Nyb2xsQW1vdW50CiAqICAgICBUaGlzIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHNjcm9sbCBpZiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UgY3Vyc29yIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZQogKiAgICAgd2luZG93LiBUaGUgcGFnZSBzaG91bGQgYXV0b21hdGljYWxseSBzY3JvbGwgdXAgb3IgZG93biBhcyBhcHByb3ByaWF0ZSAodGVzdGVkIGluIElFNiwgSUU3LCBTYWZhcmksIEZGMiwKICogICAgIEZGMyBiZXRhCiAqIGRyYWdIYW5kbGUKICogICAgIFRoaXMgaXMgdGhlIG5hbWUgb2YgYSBjbGFzcyB0aGF0IHlvdSBhc3NpZ24gdG8gb25lIG9yIG1vcmUgY2VsbHMgaW4gZWFjaCByb3cgdGhhdCBpcyBkcmFnZ2FibGUuIElmIHlvdQogKiAgICAgc3BlY2lmeSB0aGlzIGNsYXNzLCB0aGVuIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgY3Vyc29yOiBtb3ZlIGluIHRoZSBDU1MgYW5kIG9ubHkgdGhlc2UgY2VsbHMKICogICAgIHdpbGwgaGF2ZSB0aGUgZHJhZyBiZWhhdmlvdXIuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIGRyYWdIYW5kbGUsIHRoZW4geW91IGdldCB0aGUgb2xkIGJlaGF2aW91ciB3aGVyZQogKiAgICAgdGhlIHdob2xlIHJvdyBpcyBkcmFnZ2FibGUuCiAqIAogKiBPdGhlciB3YXlzIHRvIGNvbnRyb2wgYmVoYXZpb3VyOgogKgogKiBBZGQgY2xhc3M9Im5vZHJvcCIgdG8gYW55IHJvd3MgZm9yIHdoaWNoIHlvdSBkb24ndCB3YW50IHRvIGFsbG93IGRyb3BwaW5nLCBhbmQgY2xhc3M9Im5vZHJhZyIgdG8gYW55IHJvd3MKICogdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBiZSBkcmFnZ2FibGUuCiAqCiAqIEluc2lkZSB0aGUgb25Ecm9wIG1ldGhvZCB5b3UgY2FuIGFsc28gY2FsbCAkLnRhYmxlRG5ELnNlcmlhbGl6ZSgpIHRoaXMgcmV0dXJucyBhIHN0cmluZyBvZiB0aGUgZm9ybQogKiA8dGFibGVJRD5bXT08cm93SUQxPiY8dGFibGVJRD5bXT08cm93SUQyPiBzbyB0aGF0IHlvdSBjYW4gc2VuZCB0aGlzIGJhY2sgdG8gdGhlIHNlcnZlci4gVGhlIHRhYmxlIG11c3QgaGF2ZQogKiBhbiBJRCBhcyBtdXN0IGFsbCB0aGUgcm93cy4KICoKICogT3RoZXIgbWV0aG9kczoKICoKICogJCgiLi4uIikudGFibGVEbkRVcGRhdGUoKSAKICogV2lsbCB1cGRhdGUgYWxsIHRoZSBtYXRjaGluZyB0YWJsZXMsIHRoYXQgaXMgaXQgd2lsbCByZWFwcGx5IHRoZSBtb3VzZWRvd24gbWV0aG9kIHRvIHRoZSByb3dzIChvciBoYW5kbGUgY2VsbHMpLgogKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB1cGRhdGVkIHRoZSB0YWJsZSByb3dzIHVzaW5nIEFqYXggYW5kIHlvdSB3YW50IHRvIG1ha2UgdGhlIHRhYmxlIGRyYWdnYWJsZSBhZ2Fpbi4KICogVGhlIHRhYmxlIG1haW50YWlucyB0aGUgb3JpZ2luYWwgY29uZmlndXJhdGlvbiAoc28geW91IGRvbid0IGhhdmUgdG8gc3BlY2lmeSBpdCBhZ2FpbikuCiAqCiAqICQoIi4uLiIpLnRhYmxlRG5EU2VyaWFsaXplKCkKICogV2lsbCBzZXJpYWxpemUgYW5kIHJldHVybiB0aGUgc2VyaWFsaXplZCBzdHJpbmcgYXMgYWJvdmUsIGJ1dCBmb3IgZWFjaCBvZiB0aGUgbWF0Y2hpbmcgdGFibGVzLS1zbyBpdCBjYW4gYmUKICogY2FsbGVkIGZyb20gYW55d2hlcmUgYW5kIGlzbid0IGRlcGVuZGVudCBvbiB0aGUgY3VycmVudFRhYmxlIGJlaW5nIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIGNhbGxpbmcKICoKICogS25vd24gcHJvYmxlbXM6CiAqIC0gQXV0by1zY29sbCBoYXMgc29tZSBwcm9ibGVtcyB3aXRoIElFNyAgKGl0IHNjcm9sbHMgZXZlbiB3aGVuIGl0IHNob3VsZG4ndCksIHdvcmstYXJvdW5kOiBzZXQgc2Nyb2xsQW1vdW50IHRvIDAKICogCiAqIFZlcnNpb24gMC4yOiAyMDA4LTAyLTIwIEZpcnN0IHB1YmxpYyB2ZXJzaW9uCiAqIFZlcnNpb24gMC4zOiAyMDA4LTAyLTA3IEFkZGVkIG9uRHJhZ1N0YXJ0IG9wdGlvbgogKiAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHRoZSBzY3JvbGwgYW1vdW50IGNvbmZpZ3VyYWJsZSAoZGVmYXVsdCBpcyA1IGFzIGJlZm9yZSkKICogVmVyc2lvbiAwLjQ6IDIwMDgtMDMtMTUgQ2hhbmdlZCB0aGUgbm9EcmFnL25vRHJvcCBhdHRyaWJ1dGVzIHRvIG5vZHJhZy9ub2Ryb3AgY2xhc3NlcwogKiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBvbkFsbG93RHJvcCB0byBjb250cm9sIGRyb3BwaW5nCiAqICAgICAgICAgICAgICAgICAgICAgICAgIEZpeGVkIGEgYnVnIHdoaWNoIG1lYW50IHRoYXQgeW91IGNvdWxkbid0IHNldCB0aGUgc2Nyb2xsIGFtb3VudCBpbiBib3RoIGRpcmVjdGlvbnMKICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgc2VyaWFsaXplIG1ldGhvZAogKiBWZXJzaW9uIDAuNTogMjAwOC0wNS0xNiBDaGFuZ2VkIHNvIHRoYXQgaWYgeW91IHNwZWNpZnkgYSBkcmFnSGFuZGxlIGNsYXNzIGl0IGRvZXNuJ3QgbWFrZSB0aGUgd2hvbGUgcm93CiAqICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZQogKiAgICAgICAgICAgICAgICAgICAgICAgICBJbXByb3ZlZCB0aGUgc2VyaWFsaXplIG1ldGhvZCB0byB1c2UgYSBkZWZhdWx0IChhbmQgc2V0dGFibGUpIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgdGFibGVEbkR1cGF0ZSgpIGFuZCB0YWJsZURuRFNlcmlhbGl6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHlvdSBhcmUgb3V0c2lkZSB0aGUgdGFibGUKICovCmpRdWVyeS50YWJsZURuRCA9IHsKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgdGFibGUgYmVpbmcgZHJhZ2dlZCAqLwogICAgY3VycmVudFRhYmxlIDogbnVsbCwKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgZHJhZyBvYmplY3QgaWYgYW55ICovCiAgICBkcmFnT2JqZWN0OiBudWxsLAogICAgLyoqIFRoZSBjdXJyZW50IG1vdXNlIG9mZnNldCAqLwogICAgbW91c2VPZmZzZXQ6IG51bGwsCiAgICAvKiogUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZSBvZiBZIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdG9vIG11Y2ggcHJvY2Vzc2luZyAqLwogICAgb2xkWTogMCwKCiAgICAvKiogQWN0dWFsbHkgYnVpbGQgdGhlIHN0cnVjdHVyZSAqLwogICAgYnVpbGQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBTZXQgdXAgdGhlIGRlZmF1bHRzIGlmIGFueQoKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFRoaXMgaXMgYm91bmQgdG8gZWFjaCBtYXRjaGluZyB0YWJsZSwgc2V0IHVwIHRoZSBkZWZhdWx0cyBhbmQgb3ZlcnJpZGUgd2l0aCB1c2VyIG9wdGlvbnMKICAgICAgICAgICAgdGhpcy50YWJsZURuRENvbmZpZyA9IGpRdWVyeS5leHRlbmQoewogICAgICAgICAgICAgICAgb25EcmFnU3R5bGU6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyb3BTdHlsZTogbnVsbCwKCQkJCS8vIEFkZCBpbiB0aGUgZGVmYXVsdCBjbGFzcyBmb3Igd2hpbGVEcmFnZ2luZwoJCQkJb25EcmFnQ2xhc3M6ICJ0RG5EX3doaWxlRHJhZyIsCiAgICAgICAgICAgICAgICBvbkRyb3A6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyYWdTdGFydDogbnVsbCwKICAgICAgICAgICAgICAgIHNjcm9sbEFtb3VudDogNSwKCQkJCXNlcmlhbGl6ZVJlZ2V4cDogL1teXC1dKiQvLCAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSB0byB0cmltIHJvdyBJRHMKCQkJCXNlcmlhbGl6ZVBhcmFtTmFtZTogbnVsbCwgLy8gSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBhbm90aGVyIHBhcmFtZXRlciBuYW1lIGluc3RlYWQgb2YgdGhlIHRhYmxlIElECiAgICAgICAgICAgICAgICBkcmFnSGFuZGxlOiBudWxsIC8vIElmIHlvdSBnaXZlIHRoZSBuYW1lIG9mIGEgY2xhc3MgaGVyZSwgdGhlbiBvbmx5IENlbGxzIHdpdGggdGhpcyBjbGFzcyB3aWxsIGJlIGRyYWdnYWJsZQogICAgICAgICAgICB9LCBvcHRpb25zIHx8IHt9KTsKICAgICAgICAgICAgLy8gTm93IG1ha2UgdGhlIHJvd3MgZHJhZ2dhYmxlCiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBjYXB0dXJlIHRoZSBtb3VzZSB1cCBhbmQgbW91c2UgbW92ZSBldmVudAogICAgICAgIC8vIFdlIGNhbiB1c2UgYmluZCBzbyB0aGF0IHdlIGRvbid0IGludGVyZmVyZSB3aXRoIG90aGVyIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KQogICAgICAgICAgICAuYmluZCgnbW91c2Vtb3ZlJywgalF1ZXJ5LnRhYmxlRG5ELm1vdXNlbW92ZSkKICAgICAgICAgICAgLmJpbmQoJ21vdXNldXAnLCBqUXVlcnkudGFibGVEbkQubW91c2V1cCk7CgogICAgICAgIC8vIERvbid0IGJyZWFrIHRoZSBjaGFpbgogICAgICAgIHJldHVybiB0aGlzOwogICAgfSwKCiAgICAvKiogVGhpcyBmdW5jdGlvbiBtYWtlcyBhbGwgdGhlIHJvd3Mgb24gdGhlIHRhYmxlIGRyYWdnYWJsZSBhcGFydCBmcm9tIHRob3NlIG1hcmtlZCBhcyAiTm9EcmFnIiAqLwogICAgbWFrZURyYWdnYWJsZTogZnVuY3Rpb24odGFibGUpIHsKICAgICAgICB2YXIgY29uZmlnID0gdGFibGUudGFibGVEbkRDb25maWc7CgkJaWYgKHRhYmxlLnRhYmxlRG5EQ29uZmlnLmRyYWdIYW5kbGUpIHsKCQkJLy8gV2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHNwZWNpZmllZCBjZWxscwoJCQl2YXIgY2VsbHMgPSBqUXVlcnkoInRkLiIrdGFibGUudGFibGVEbkRDb25maWcuZHJhZ0hhbmRsZSwgdGFibGUpOwoJCQljZWxscy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJLy8gVGhlIGNlbGwgaXMgYm91bmQgdG8gInRoaXMiCiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykubW91c2Vkb3duKGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPSB0aGlzLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IHRhYmxlOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5vbkRyYWdTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBvbkRyb3AgbWV0aG9kIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKCQkJfSkKCQl9IGVsc2UgewoJCQkvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHdob2xlIHJvdwoJICAgICAgICB2YXIgcm93cyA9IGpRdWVyeSgidHIiLCB0YWJsZSk7IC8vIGdldCBhbGwgdGhlIHJvd3MgYXMgYSB3cmFwcGVkIHNldAoJICAgICAgICByb3dzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCByb3csIHRoZSByb3cgaXMgYm91bmQgdG8gInRoaXMiCgkJCQl2YXIgcm93ID0galF1ZXJ5KHRoaXMpOwoJCQkJaWYgKCEgcm93Lmhhc0NsYXNzKCJub2RyYWciKSkgewoJICAgICAgICAgICAgICAgIHJvdy5tb3VzZWRvd24oZnVuY3Rpb24oZXYpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnRhcmdldC50YWdOYW1lID09ICJURCIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ID0gdGhpczsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgPSB0YWJsZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJhZ1N0YXJ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSkuY3NzKCJjdXJzb3IiLCAibW92ZSIpOyAvLyBTdG9yZSB0aGUgdGFibGVEbkQgb2JqZWN0CgkJCQl9CgkJCX0pOwoJCX0KCX0sCgoJdXBkYXRlVGFibGVzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJaWYgKHRoaXMudGFibGVEbkRDb25maWcpIHsKCQkJCWpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwoJCQl9CgkJfSkKCX0sCgogICAgLyoqIEdldCB0aGUgbW91c2UgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZXZlbnQgKGFsbG93aW5nIGZvciBicm93c2VyIGRpZmZlcmVuY2VzKSAqLwogICAgbW91c2VDb29yZHM6IGZ1bmN0aW9uKGV2KXsKICAgICAgICBpZihldi5wYWdlWCB8fCBldi5wYWdlWSl7CiAgICAgICAgICAgIHJldHVybiB7eDpldi5wYWdlWCwgeTpldi5wYWdlWX07CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHg6ZXYuY2xpZW50WCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCAtIGRvY3VtZW50LmJvZHkuY2xpZW50TGVmdCwKICAgICAgICAgICAgeTpldi5jbGllbnRZICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgIC0gZG9jdW1lbnQuYm9keS5jbGllbnRUb3AKICAgICAgICB9OwogICAgfSwKCiAgICAvKiogR2l2ZW4gYSB0YXJnZXQgZWxlbWVudCBhbmQgYSBtb3VzZSBldmVudCwgZ2V0IHRoZSBtb3VzZSBvZmZzZXQgZnJvbSB0aGF0IGVsZW1lbnQuCiAgICAgICAgVG8gZG8gdGhpcyB3ZSBuZWVkIHRoZSBlbGVtZW50J3MgcG9zaXRpb24gYW5kIHRoZSBtb3VzZSBwb3NpdGlvbiAqLwogICAgZ2V0TW91c2VPZmZzZXQ6IGZ1bmN0aW9uKHRhcmdldCwgZXYpIHsKICAgICAgICBldiA9IGV2IHx8IHdpbmRvdy5ldmVudDsKCiAgICAgICAgdmFyIGRvY1BvcyAgICA9IHRoaXMuZ2V0UG9zaXRpb24odGFyZ2V0KTsKICAgICAgICB2YXIgbW91c2VQb3MgID0gdGhpcy5tb3VzZUNvb3Jkcyhldik7CiAgICAgICAgcmV0dXJuIHt4Om1vdXNlUG9zLnggLSBkb2NQb3MueCwgeTptb3VzZVBvcy55IC0gZG9jUG9zLnl9OwogICAgfSwKCiAgICAvKiogR2V0IHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IGJ5IGdvaW5nIHVwIHRoZSBET00gdHJlZSBhbmQgYWRkaW5nIHVwIGFsbCB0aGUgb2Zmc2V0cyAqLwogICAgZ2V0UG9zaXRpb246IGZ1bmN0aW9uKGUpewogICAgICAgIHZhciBsZWZ0ID0gMDsKICAgICAgICB2YXIgdG9wICA9IDA7CiAgICAgICAgLyoqIFNhZmFyaSBmaXggLS0gdGhhbmtzIHRvIEx1aXMgQ2hhdG8gZm9yIHRoaXMhICovCiAgICAgICAgaWYgKGUub2Zmc2V0SGVpZ2h0ID09IDApIHsKICAgICAgICAgICAgLyoqIFNhZmFyaSAyIGRvZXNuJ3QgY29ycmVjdGx5IGdyYWIgdGhlIG9mZnNldFRvcCBvZiBhIHRhYmxlIHJvdwogICAgICAgICAgICB0aGlzIGlzIGRldGFpbGVkIGhlcmU6CiAgICAgICAgICAgIGh0dHA6Ly9qYWNvYi5wZWFyZ3JvdmUuY29tL2Jsb2cvMjAwNi90ZWNobmljYWwvdGFibGUtcm93LW9mZnNldHRvcC1idWctaW4tc2FmYXJpLwogICAgICAgICAgICB0aGUgc29sdXRpb24gaXMgbGlrZXdpc2Ugbm90ZWQgdGhlcmUsIGdyYWIgdGhlIG9mZnNldCBvZiBhIHRhYmxlIGNlbGwgaW4gdGhlIHJvdyAtIHRoZSBmaXJzdENoaWxkLgogICAgICAgICAgICBub3RlIHRoYXQgZmlyZWZveCB3aWxsIHJldHVybiBhIHRleHQgbm9kZSBhcyBhIGZpcnN0IGNoaWxkLCBzbyBkZXNpZ25pbmcgYSBtb3JlIHRob3JvdWdoCiAgICAgICAgICAgIHNvbHV0aW9uIG1heSBuZWVkIHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQsIGZvciBub3cgdGhpcyBzZWVtcyB0byB3b3JrIGluIGZpcmVmb3gsIHNhZmFyaSwgaWUgKi8KICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGlsZDsgLy8gYSB0YWJsZSBjZWxsCiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoZS5vZmZzZXRQYXJlbnQpewogICAgICAgICAgICBsZWZ0ICs9IGUub2Zmc2V0TGVmdDsKICAgICAgICAgICAgdG9wICArPSBlLm9mZnNldFRvcDsKICAgICAgICAgICAgZSAgICAgPSBlLm9mZnNldFBhcmVudDsKICAgICAgICB9CgogICAgICAgIGxlZnQgKz0gZS5vZmZzZXRMZWZ0OwogICAgICAgIHRvcCAgKz0gZS5vZmZzZXRUb3A7CgogICAgICAgIHJldHVybiB7eDpsZWZ0LCB5OnRvcH07CiAgICB9LAoKICAgIG1vdXNlbW92ZTogZnVuY3Rpb24oZXYpIHsKICAgICAgICBpZiAoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgZHJhZ09iaiA9IGpRdWVyeShqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCk7CiAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgdmFyIG1vdXNlUG9zID0galF1ZXJ5LnRhYmxlRG5ELm1vdXNlQ29vcmRzKGV2KTsKICAgICAgICB2YXIgeSA9IG1vdXNlUG9zLnkgLSBqUXVlcnkudGFibGVEbkQubW91c2VPZmZzZXQueTsKICAgICAgICAvL2F1dG8gc2Nyb2xsIHRoZSB3aW5kb3cKCSAgICB2YXIgeU9mZnNldCA9IHdpbmRvdy5wYWdlWU9mZnNldDsKCSAJaWYgKGRvY3VtZW50LmFsbCkgewoJICAgICAgICAvLyBXaW5kb3dzIHZlcnNpb24KCSAgICAgICAgLy95T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gJ3VuZGVmaW5lZCcgJiYKCSAgICAgICAgICAgICBkb2N1bWVudC5jb21wYXRNb2RlICE9ICdCYWNrQ29tcGF0JykgewoJICAgICAgICAgICB5T2Zmc2V0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQuYm9keSAhPSAndW5kZWZpbmVkJykgewoJICAgICAgICAgICB5T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICB9CgoJICAgIH0KCQkgICAgCgkJaWYgKG1vdXNlUG9zLnkteU9mZnNldCA8IGNvbmZpZy5zY3JvbGxBbW91bnQpIHsKCSAgICAJd2luZG93LnNjcm9sbEJ5KDAsIC1jb25maWcuc2Nyb2xsQW1vdW50KTsKCSAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICBpZiAod2luZG93SGVpZ2h0LShtb3VzZVBvcy55LXlPZmZzZXQpIDwgY29uZmlnLnNjcm9sbEFtb3VudCkgewogICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsIGNvbmZpZy5zY3JvbGxBbW91bnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHkgIT0galF1ZXJ5LnRhYmxlRG5ELm9sZFkpIHsKICAgICAgICAgICAgLy8gd29yayBvdXQgaWYgd2UncmUgZ29pbmcgdXAgb3IgZG93bi4uLgogICAgICAgICAgICB2YXIgbW92aW5nRG93biA9IHkgPiBqUXVlcnkudGFibGVEbkQub2xkWTsKICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELm9sZFkgPSB5OwogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHRvIHNob3cgd2UncmUgZHJhZ2dpbmcKCQkJaWYgKGNvbmZpZy5vbkRyYWdDbGFzcykgewoJCQkJZHJhZ09iai5hZGRDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgZHJhZ09iai5jc3MoY29uZmlnLm9uRHJhZ1N0eWxlKTsKCQkJfQogICAgICAgICAgICAvLyBJZiB3ZSdyZSBvdmVyIGEgcm93IHRoZW4gbW92ZSB0aGUgZHJhZ2dlZCByb3cgdG8gdGhlcmUgc28gdGhhdCB0aGUgdXNlciBzZWVzIHRoZQogICAgICAgICAgICAvLyBlZmZlY3QgZHluYW1pY2FsbHkKICAgICAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBqUXVlcnkudGFibGVEbkQuZmluZERyb3BUYXJnZXRSb3coZHJhZ09iaiwgeSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAvLyBUT0RPIHdvcnJ5IGFib3V0IHdoYXQgaGFwcGVucyB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBUQk9ESUVTCiAgICAgICAgICAgICAgICBpZiAobW92aW5nRG93biAmJiBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCAhPSBjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QsIGN1cnJlbnRSb3cubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghIG1vdmluZ0Rvd24gJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgIT0gY3VycmVudFJvdykgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LCBjdXJyZW50Um93KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICAvKiogV2UncmUgb25seSB3b3JyaWVkIGFib3V0IHRoZSB5IHBvc2l0aW9uIHJlYWxseSwgYmVjYXVzZSB3ZSBjYW4gb25seSBtb3ZlIHJvd3MgdXAgYW5kIGRvd24gKi8KICAgIGZpbmREcm9wVGFyZ2V0Um93OiBmdW5jdGlvbihkcmFnZ2VkUm93LCB5KSB7CiAgICAgICAgdmFyIHJvd3MgPSBqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlLnJvd3M7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHJvd3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07CiAgICAgICAgICAgIHZhciByb3dZICAgID0gdGhpcy5nZXRQb3NpdGlvbihyb3cpLnk7CiAgICAgICAgICAgIHZhciByb3dIZWlnaHQgPSBwYXJzZUludChyb3cub2Zmc2V0SGVpZ2h0KS8yOwogICAgICAgICAgICBpZiAocm93Lm9mZnNldEhlaWdodCA9PSAwKSB7CiAgICAgICAgICAgICAgICByb3dZID0gdGhpcy5nZXRQb3NpdGlvbihyb3cuZmlyc3RDaGlsZCkueTsKICAgICAgICAgICAgICAgIHJvd0hlaWdodCA9IHBhcnNlSW50KHJvdy5maXJzdENoaWxkLm9mZnNldEhlaWdodCkvMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGFsd2F5cyBoYXZlIHRvIGluc2VydCBiZWZvcmUsIHdlIG5lZWQgdG8gb2Zmc2V0IHRoZSBoZWlnaHQgYSBiaXQKICAgICAgICAgICAgaWYgKCh5ID4gcm93WSAtIHJvd0hlaWdodCkgJiYgKHkgPCAocm93WSArIHJvd0hlaWdodCkpKSB7CiAgICAgICAgICAgICAgICAvLyB0aGF0J3MgdGhlIHJvdyB3ZSdyZSBvdmVyCgkJCQkvLyBJZiBpdCdzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHJvdywgaWdub3JlIGl0CgkJCQlpZiAocm93ID09IGRyYWdnZWRSb3cpIHtyZXR1cm4gbnVsbDt9CiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0galF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZzsKICAgICAgICAgICAgICAgIGlmIChjb25maWcub25BbGxvd0Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uQWxsb3dEcm9wKGRyYWdnZWRSb3csIHJvdykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewoJCQkJCS8vIElmIGEgcm93IGhhcyBub2Ryb3AgY2xhc3MsIHRoZW4gZG9uJ3QgYWxsb3cgZHJvcHBpbmcgKGluc3BpcmVkIGJ5IEpvaG4gVGFyciBhbmQgRmFtaWMpCiAgICAgICAgICAgICAgICAgICAgdmFyIG5vZHJvcCA9IGpRdWVyeShyb3cpLmhhc0NsYXNzKCJub2Ryb3AiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISBub2Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICBtb3VzZXVwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QpIHsKICAgICAgICAgICAgdmFyIGRyb3BwZWRSb3cgPSBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdDsKICAgICAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBkcmFnT2JqZWN0LCB0aGVuIHdlIG5lZWQgdG8gcmVsZWFzZSBpdCwKICAgICAgICAgICAgLy8gVGhlIHJvdyB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZSByaWdodCBwbGFjZSBzbyB3ZSBqdXN0IHJlc2V0IHN0dWZmCgkJCWlmIChjb25maWcub25EcmFnQ2xhc3MpIHsKCSAgICAgICAgICAgIGpRdWVyeShkcm9wcGVkUm93KS5yZW1vdmVDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgalF1ZXJ5KGRyb3BwZWRSb3cpLmNzcyhjb25maWcub25Ecm9wU3R5bGUpOwoJCQl9CiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ICAgPSBudWxsOwogICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJvcCkgewogICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKICAgICAgICAgICAgICAgIGNvbmZpZy5vbkRyb3AoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSwgZHJvcHBlZFJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IG51bGw7IC8vIGxldCBnbyBvZiB0aGUgdGFibGUgdG9vCiAgICAgICAgfQogICAgfSwKCiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlKSB7CiAgICAgICAgICAgIHJldHVybiBqUXVlcnkudGFibGVEbkQuc2VyaWFsaXplVGFibGUoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJFcnJvcjogTm8gVGFibGUgaWQgc2V0LCB5b3UgbmVlZCB0byBzZXQgYW4gaWQgb24geW91ciB0YWJsZSBhbmQgZXZlcnkgcm93IjsKICAgICAgICB9CiAgICB9LAoKCXNlcmlhbGl6ZVRhYmxlOiBmdW5jdGlvbih0YWJsZSkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB2YXIgdGFibGVJZCA9IHRhYmxlLmlkOwogICAgICAgIHZhciByb3dzID0gdGFibGUucm93czsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cm93cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHJlc3VsdCArPSAiJiI7CiAgICAgICAgICAgIHZhciByb3dJZCA9IHJvd3NbaV0uaWQ7CiAgICAgICAgICAgIGlmIChyb3dJZCAmJiByb3dJZCAmJiB0YWJsZS50YWJsZURuRENvbmZpZyAmJiB0YWJsZS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdleHApIHsKICAgICAgICAgICAgICAgIHJvd0lkID0gcm93SWQubWF0Y2godGFibGUudGFibGVEbkRDb25maWcuc2VyaWFsaXplUmVnZXhwKVswXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVzdWx0ICs9IHRhYmxlSWQgKyAnW109JyArIHJvd0lkOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwoJfSwKCglzZXJpYWxpemVUYWJsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJcmVzdWx0ICs9IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZSh0aGlzKTsKCQl9KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKfQoKalF1ZXJ5LmZuLmV4dGVuZCgKCXsKCQl0YWJsZURuRCA6IGpRdWVyeS50YWJsZURuRC5idWlsZCwKCQl0YWJsZURuRFVwZGF0ZSA6IGpRdWVyeS50YWJsZURuRC51cGRhdGVUYWJsZXMsCgkJdGFibGVEbkRTZXJpYWxpemU6IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZXMKCX0KKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.timers.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/LyoqDQogKiBqUXVlcnkudGltZXJzIC0gVGltZXIgYWJzdHJhY3Rpb25zIGZvciBqUXVlcnkNCiAqIFdyaXR0ZW4gYnkgQmxhaXIgTWl0Y2hlbG1vcmUgKGJsYWlyIERPVCBtaXRjaGVsbW9yZSBBVCBnbWFpbCBET1QgY29tKQ0KICogTGljZW5zZWQgdW5kZXIgdGhlIFdURlBMIChodHRwOi8vc2FtLnpveS5vcmcvd3RmcGwvKS4NCiAqIERhdGU6IDIwMDkvMDIvMDgNCiAqDQogKiBAYXV0aG9yIEJsYWlyIE1pdGNoZWxtb3JlDQogKiBAdmVyc2lvbiAxLjEuMg0KICoNCiAqKi8NCg0KalF1ZXJ5LmZuLmV4dGVuZCh7DQoJZXZlcnlUaW1lOiBmdW5jdGlvbihpbnRlcnZhbCwgbGFiZWwsIGZuLCB0aW1lcywgYmVsYXkpIHsNCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCWpRdWVyeS50aW1lci5hZGQodGhpcywgaW50ZXJ2YWwsIGxhYmVsLCBmbiwgdGltZXMsIGJlbGF5KTsNCgkJfSk7DQoJfSwNCglvbmVUaW1lOiBmdW5jdGlvbihpbnRlcnZhbCwgbGFiZWwsIGZuKSB7DQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoJCQlqUXVlcnkudGltZXIuYWRkKHRoaXMsIGludGVydmFsLCBsYWJlbCwgZm4sIDEpOw0KCQl9KTsNCgl9LA0KCXN0b3BUaW1lOiBmdW5jdGlvbihsYWJlbCwgZm4pIHsNCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCWpRdWVyeS50aW1lci5yZW1vdmUodGhpcywgbGFiZWwsIGZuKTsNCgkJfSk7DQoJfQ0KfSk7DQoNCmpRdWVyeS5ldmVudC5zcGVjaWFsDQoNCmpRdWVyeS5leHRlbmQoew0KCXRpbWVyOiB7DQoJCWdsb2JhbDogW10sDQoJCWd1aWQ6IDEsDQoJCWRhdGFLZXk6ICJqUXVlcnkudGltZXIiLA0KCQlyZWdleDogL14oWzAtOV0rKD86XC5bMC05XSopPylccyooLipzKT8kLywNCgkJcG93ZXJzOiB7DQoJCQkvLyBZZWFoIHRoaXMgaXMgbWFqb3Igb3ZlcmtpbGwuLi4NCgkJCSdtcyc6IDEsDQoJCQknY3MnOiAxMCwNCgkJCSdkcyc6IDEwMCwNCgkJCSdzJzogMTAwMCwNCgkJCSdkYXMnOiAxMDAwMCwNCgkJCSdocyc6IDEwMDAwMCwNCgkJCSdrcyc6IDEwMDAwMDANCgkJfSwNCgkJdGltZVBhcnNlOiBmdW5jdGlvbih2YWx1ZSkgew0KCQkJaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKQ0KCQkJCXJldHVybiBudWxsOw0KCQkJdmFyIHJlc3VsdCA9IHRoaXMucmVnZXguZXhlYyhqUXVlcnkudHJpbSh2YWx1ZS50b1N0cmluZygpKSk7DQoJCQlpZiAocmVzdWx0WzJdKSB7DQoJCQkJdmFyIG51bSA9IHBhcnNlRmxvYXQocmVzdWx0WzFdKTsNCgkJCQl2YXIgbXVsdCA9IHRoaXMucG93ZXJzW3Jlc3VsdFsyXV0gfHwgMTsNCgkJCQlyZXR1cm4gbnVtICogbXVsdDsNCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuIHZhbHVlOw0KCQkJfQ0KCQl9LA0KCQlhZGQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGludGVydmFsLCBsYWJlbCwgZm4sIHRpbWVzLCBiZWxheSkgew0KCQkJdmFyIGNvdW50ZXIgPSAwOw0KCQkJDQoJCQlpZiAoalF1ZXJ5LmlzRnVuY3Rpb24obGFiZWwpKSB7DQoJCQkJaWYgKCF0aW1lcykgDQoJCQkJCXRpbWVzID0gZm47DQoJCQkJZm4gPSBsYWJlbDsNCgkJCQlsYWJlbCA9IGludGVydmFsOw0KCQkJfQ0KCQkJDQoJCQlpbnRlcnZhbCA9IGpRdWVyeS50aW1lci50aW1lUGFyc2UoaW50ZXJ2YWwpOw0KDQoJCQlpZiAodHlwZW9mIGludGVydmFsICE9ICdudW1iZXInIHx8IGlzTmFOKGludGVydmFsKSB8fCBpbnRlcnZhbCA8PSAwKQ0KCQkJCXJldHVybjsNCg0KCQkJaWYgKHRpbWVzICYmIHRpbWVzLmNvbnN0cnVjdG9yICE9IE51bWJlcikgew0KCQkJCWJlbGF5ID0gISF0aW1lczsNCgkJCQl0aW1lcyA9IDA7DQoJCQl9DQoJCQkNCgkJCXRpbWVzID0gdGltZXMgfHwgMDsNCgkJCWJlbGF5ID0gYmVsYXkgfHwgZmFsc2U7DQoJCQkNCgkJCXZhciB0aW1lcnMgPSBqUXVlcnkuZGF0YShlbGVtZW50LCB0aGlzLmRhdGFLZXkpIHx8IGpRdWVyeS5kYXRhKGVsZW1lbnQsIHRoaXMuZGF0YUtleSwge30pOw0KCQkJDQoJCQlpZiAoIXRpbWVyc1tsYWJlbF0pDQoJCQkJdGltZXJzW2xhYmVsXSA9IHt9Ow0KCQkJDQoJCQlmbi50aW1lcklEID0gZm4udGltZXJJRCB8fCB0aGlzLmd1aWQrKzsNCgkJCQ0KCQkJdmFyIGhhbmRsZXIgPSBmdW5jdGlvbigpIHsNCgkJCQlpZiAoYmVsYXkgJiYgdGhpcy5pblByb2dyZXNzKSANCgkJCQkJcmV0dXJuOw0KCQkJCXRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7DQoJCQkJaWYgKCgrK2NvdW50ZXIgPiB0aW1lcyAmJiB0aW1lcyAhPT0gMCkgfHwgZm4uY2FsbChlbGVtZW50LCBjb3VudGVyKSA9PT0gZmFsc2UpDQoJCQkJCWpRdWVyeS50aW1lci5yZW1vdmUoZWxlbWVudCwgbGFiZWwsIGZuKTsNCgkJCQl0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZTsNCgkJCX07DQoJCQkNCgkJCWhhbmRsZXIudGltZXJJRCA9IGZuLnRpbWVySUQ7DQoJCQkNCgkJCWlmICghdGltZXJzW2xhYmVsXVtmbi50aW1lcklEXSkNCgkJCQl0aW1lcnNbbGFiZWxdW2ZuLnRpbWVySURdID0gd2luZG93LnNldEludGVydmFsKGhhbmRsZXIsaW50ZXJ2YWwpOw0KCQkJDQoJCQl0aGlzLmdsb2JhbC5wdXNoKCBlbGVtZW50ICk7DQoJCQkNCgkJfSwNCgkJcmVtb3ZlOiBmdW5jdGlvbihlbGVtZW50LCBsYWJlbCwgZm4pIHsNCgkJCXZhciB0aW1lcnMgPSBqUXVlcnkuZGF0YShlbGVtZW50LCB0aGlzLmRhdGFLZXkpLCByZXQ7DQoJCQkNCgkJCWlmICggdGltZXJzICkgew0KCQkJCQ0KCQkJCWlmICghbGFiZWwpIHsNCgkJCQkJZm9yICggbGFiZWwgaW4gdGltZXJzICkNCgkJCQkJCXRoaXMucmVtb3ZlKGVsZW1lbnQsIGxhYmVsLCBmbik7DQoJCQkJfSBlbHNlIGlmICggdGltZXJzW2xhYmVsXSApIHsNCgkJCQkJaWYgKCBmbiApIHsNCgkJCQkJCWlmICggZm4udGltZXJJRCApIHsNCgkJCQkJCQl3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aW1lcnNbbGFiZWxdW2ZuLnRpbWVySURdKTsNCgkJCQkJCQlkZWxldGUgdGltZXJzW2xhYmVsXVtmbi50aW1lcklEXTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWZvciAoIHZhciBmbiBpbiB0aW1lcnNbbGFiZWxdICkgew0KCQkJCQkJCXdpbmRvdy5jbGVhckludGVydmFsKHRpbWVyc1tsYWJlbF1bZm5dKTsNCgkJCQkJCQlkZWxldGUgdGltZXJzW2xhYmVsXVtmbl07DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJDQoJCQkJCWZvciAoIHJldCBpbiB0aW1lcnNbbGFiZWxdICkgYnJlYWs7DQoJCQkJCWlmICggIXJldCApIHsNCgkJCQkJCXJldCA9IG51bGw7DQoJCQkJCQlkZWxldGUgdGltZXJzW2xhYmVsXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkNCgkJCQlmb3IgKCByZXQgaW4gdGltZXJzICkgYnJlYWs7DQoJCQkJaWYgKCAhcmV0ICkgDQoJCQkJCWpRdWVyeS5yZW1vdmVEYXRhKGVsZW1lbnQsIHRoaXMuZGF0YUtleSk7DQoJCQl9DQoJCX0NCgl9DQp9KTsNCg0KalF1ZXJ5KHdpbmRvdykuYmluZCgidW5sb2FkIiwgZnVuY3Rpb24oKSB7DQoJalF1ZXJ5LmVhY2goalF1ZXJ5LnRpbWVyLmdsb2JhbCwgZnVuY3Rpb24oaW5kZXgsIGl0ZW0pIHsNCgkJalF1ZXJ5LnRpbWVyLnJlbW92ZShpdGVtKTsNCgl9KTsNCn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.treeTable.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogalF1ZXJ5IFRyZWVUYWJsZSBDb3JlIDIuMCBzdHlsZXNoZWV0DQogKg0KICogVGhpcyBmaWxlIGNvbnRhaW5zIHN0eWxlcyB0aGF0IGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHRyZWUgdGFibGUuIEVhY2ggdHJlZQ0KICogdGFibGUgaXMgYXNzaWduZWQgdGhlICt0cmVlVGFibGUrIGNsYXNzLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQovKiBqcXVlcnkudHJlZVRhYmxlLmNvbGxhcHNpYmxlDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoudHJlZVRhYmxlIHRyIHRkLnRmaWxlIHsNCiAgcGFkZGluZy1sZWZ0OjI0cHg7DQp9DQoNCi50cmVlVGFibGUgdHIgdGQgLmV4cGFuZGVyIHsNCiAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7DQogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMDsNCiAgem9vbTogMTsgLyogSUU3IEhhY2sgKi8NCn0NCg0KLnRyZWVUYWJsZSB0ci5jb2xsYXBzZWQgdGQgLmV4cGFuZGVyIHsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGV4cGFuZC5naWYpOw0KfQ0KDQoudHJlZVRhYmxlIHRyLmV4cGFuZGVkIHRkIC5leHBhbmRlciB7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybChjb250cmFjdC5naWYpOw0KfQ0KDQovKiBqcXVlcnkudHJlZVRhYmxlLnNvcnRhYmxlDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoudHJlZVRhYmxlIHRyLnNlbGVjdGVkLCAudHJlZVRhYmxlIHRyLmFjY2VwdCB7DQogIGJhY2tncm91bmQtY29sb3I6ICMzODc1ZDc7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQoudHJlZVRhYmxlIHRyLmNvbGxhcHNlZC5zZWxlY3RlZCB0ZCAuZXhwYW5kZXIsIC50cmVlVGFibGUgdHIuY29sbGFwc2VkLmFjY2VwdCB0ZCAuZXhwYW5kZXIgew0KICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL3RvZ2dsZS1leHBhbmQtbGlnaHQucG5nKTsNCn0NCg0KLnRyZWVUYWJsZSB0ci5leHBhbmRlZC5zZWxlY3RlZCB0ZCAuZXhwYW5kZXIsIC50cmVlVGFibGUgdHIuZXhwYW5kZWQuYWNjZXB0IHRkIC5leHBhbmRlciB7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvdG9nZ2xlLWNvbGxhcHNlLWxpZ2h0LnBuZyk7DQp9DQoNCi50cmVlVGFibGUgLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyB7DQogIGNvbG9yOiAjMDAwOw0KICB6LWluZGV4OiAxOw0KfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.treeTable.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogalF1ZXJ5IHRyZWVUYWJsZSBQbHVnaW4gMi4yLjMgLSBodHRwOi8vbHVkby5jdWJpY3BodXNlLm5sL2pxdWVyeS1wbHVnaW5zL3RyZWVUYWJsZS8gKi8KKGZ1bmN0aW9uKCQpIHsKICAvLyBIZWxwcyB0byBtYWtlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGFsbCBmdW5jdGlvbnMKICAvLyBUT0RPOiBUaGlzIGdpdmVzIHByb2JsZW1zIHdoZW4gdGhlcmUgYXJlIGJvdGggZXhwYW5kYWJsZSBhbmQgbm9uLWV4cGFuZGFibGUKICAvLyB0cmVlcyBvbiBhIHBhZ2UuIFRoZSBvcHRpb25zIHNob3VsZG4ndCBiZSBnbG9iYWwgdG8gYWxsIHRoZXNlIGluc3RhbmNlcyEKICB2YXIgb3B0aW9uczsKICB2YXIgZGVmYXVsdFBhZGRpbmdMZWZ0OwogIAogICQuZm4udHJlZVRhYmxlID0gZnVuY3Rpb24ob3B0cykgewogICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLnRyZWVUYWJsZS5kZWZhdWx0cywgb3B0cyk7CiAgICAKICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICQodGhpcykuYWRkQ2xhc3MoInRyZWVUYWJsZSIpLmZpbmQoInRib2R5IHRyIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAvLyBJbml0aWFsaXplIHJvb3Qgbm9kZXMgb25seSBpZiBwb3NzaWJsZQogICAgICAgIGlmKCFvcHRpb25zLmV4cGFuZGFibGUgfHwgJCh0aGlzKVswXS5jbGFzc05hbWUuc2VhcmNoKCJjaGlsZC1vZi0iKSA9PSAtMSkgewogICAgICAgICAgLy8gVG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb2YgaW5kZW50YXRpb24sIEkgcmV0cmlldmUgdGhlIHBhZGRpbmctbGVmdAogICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIGZpcnN0IHJvb3Qgbm9kZS4gVGhpcyB3YXkgSSBvbmx5IGhhdmUgdG8gY2FsbCArY3NzKyAKICAgICAgICAgIC8vIG9uY2UuCiAgICAgICAgICBpZiAoaXNOYU4oZGVmYXVsdFBhZGRpbmdMZWZ0KSkgewogICAgICAgICAgICBkZWZhdWx0UGFkZGluZ0xlZnQgPSBwYXJzZUludCgkKCQodGhpcykuY2hpbGRyZW4oInRkIilbb3B0aW9ucy50cmVlQ29sdW1uXSkuY3NzKCdwYWRkaW5nLWxlZnQnKSwgMTApOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICBpbml0aWFsaXplKCQodGhpcykpOwogICAgICAgIH0gZWxzZSBpZihvcHRpb25zLmluaXRpYWxTdGF0ZSA9PSAiY29sbGFwc2VkIikgewogICAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOyAvLyBQZXJmb3JtYW5jZSEgJCh0aGlzKS5oaWRlKCkgaXMgc2xvdy4uLgogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKICB9OwogIAogICQuZm4udHJlZVRhYmxlLmRlZmF1bHRzID0gewogICAgY2hpbGRQcmVmaXg6ICJjaGlsZC1vZi0iLAogICAgY2xpY2thYmxlTm9kZU5hbWVzOiBmYWxzZSwKICAgIGV4cGFuZGFibGU6IHRydWUsCiAgICBpbmRlbnQ6IDE5LAogICAgaW5pdGlhbFN0YXRlOiAiY29sbGFwc2VkIiwKICAgIHRyZWVDb2x1bW46IDAKICB9OwogIAogIC8vIFJlY3Vyc2l2ZWx5IGhpZGUgYWxsIG5vZGUncyBjaGlsZHJlbiBpbiBhIHRyZWUKICAkLmZuLmNvbGxhcHNlID0gZnVuY3Rpb24oKSB7CiAgICAkKHRoaXMpLmFkZENsYXNzKCJjb2xsYXBzZWQiKTsKICAgIAogICAgY2hpbGRyZW5PZigkKHRoaXMpKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICBpZighJCh0aGlzKS5oYXNDbGFzcygiY29sbGFwc2VkIikpIHsKICAgICAgICAkKHRoaXMpLmNvbGxhcHNlKCk7CiAgICAgIH0KICAgICAgCiAgICAgIHRoaXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgLy8gUGVyZm9ybWFuY2UhICQodGhpcykuaGlkZSgpIGlzIHNsb3cuLi4KICAgIH0pOwogICAgCiAgICByZXR1cm4gdGhpczsKICB9OwogIAogIC8vIFJlY3Vyc2l2ZWx5IHNob3cgYWxsIG5vZGUncyBjaGlsZHJlbiBpbiBhIHRyZWUKICAkLmZuLmV4cGFuZCA9IGZ1bmN0aW9uKCkgewogICAgJCh0aGlzKS5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYWRkQ2xhc3MoImV4cGFuZGVkIik7CiAgICAKICAgIGNoaWxkcmVuT2YoJCh0aGlzKSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaW5pdGlhbGl6ZSgkKHRoaXMpKTsKICAgICAgCiAgICAgIGlmKCQodGhpcykuaXMoIi5leHBhbmRlZC5wYXJlbnQiKSkgewogICAgICAgICQodGhpcykuZXhwYW5kKCk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHRoaXMuc3R5bGUuZGlzcGxheSA9ICJ0YWJsZS1yb3ciOyAvLyBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMgbm90IHBvc3NpYmxlIHdpdGggSUUgOi0oCiAgICAgICQodGhpcykuc2hvdygpOwogICAgfSk7CiAgICAKICAgIHJldHVybiB0aGlzOwogIH07CiAgCiAgLy8gQWRkIGFuIGVudGlyZSBicmFuY2ggdG8gK2Rlc3RpbmF0aW9uKwogICQuZm4uYXBwZW5kQnJhbmNoVG8gPSBmdW5jdGlvbihkZXN0aW5hdGlvbikgewogICAgdmFyIG5vZGUgPSAkKHRoaXMpOwogICAgdmFyIHBhcmVudCA9IHBhcmVudE9mKG5vZGUpOwogICAgCiAgICB2YXIgYW5jZXN0b3JOYW1lcyA9ICQubWFwKGFuY2VzdG9yc09mKCQoZGVzdGluYXRpb24pKSwgZnVuY3Rpb24oYSkgeyByZXR1cm4gYS5pZDsgfSk7CiAgICAKICAgIC8vIENvbmRpdGlvbnM6CiAgICAvLyAxOiArbm9kZSsgc2hvdWxkIG5vdCBiZSBpbnNlcnRlZCBpbiBhIGxvY2F0aW9uIGluIGEgYnJhbmNoIGlmIHRoaXMgd291bGQKICAgIC8vICAgIHJlc3VsdCBpbiArbm9kZSsgYmVpbmcgYW4gYW5jZXN0b3Igb2YgaXRzZWxmLgogICAgLy8gMjogK25vZGUrIHNob3VsZCBub3QgaGF2ZSBhIHBhcmVudCBPUiB0aGUgZGVzdGluYXRpb24gc2hvdWxkIG5vdCBiZSB0aGUKICAgIC8vICAgIHNhbWUgYXMgK25vZGUrJ3MgY3VycmVudCBwYXJlbnQgKHRoaXMgbGFzdCBjb25kaXRpb24gcHJldmVudHMgK25vZGUrCiAgICAvLyAgICBmcm9tIGJlaW5nIG1vdmVkIHRvIHRoZSBzYW1lIGxvY2F0aW9uIHdoZXJlIGl0IGFscmVhZHkgaXMpLgogICAgLy8gMzogK25vZGUrIHNob3VsZCBub3QgYmUgaW5zZXJ0ZWQgYXMgYSBjaGlsZCBvZiArbm9kZSsgaXRzZWxmLgogICAgaWYoJC5pbkFycmF5KG5vZGVbMF0uaWQsIGFuY2VzdG9yTmFtZXMpID09IC0xICYmICghcGFyZW50IHx8IChkZXN0aW5hdGlvbi5pZCAhPSBwYXJlbnRbMF0uaWQpKSAmJiBkZXN0aW5hdGlvbi5pZCAhPSBub2RlWzBdLmlkKSB7CiAgICAgIGluZGVudChub2RlLCBhbmNlc3RvcnNPZihub2RlKS5sZW5ndGggKiBvcHRpb25zLmluZGVudCAqIC0xKTsgLy8gUmVtb3ZlIGluZGVudGF0aW9uCiAgICAgIAogICAgICBpZihwYXJlbnQpIHsgbm9kZS5yZW1vdmVDbGFzcyhvcHRpb25zLmNoaWxkUHJlZml4ICsgcGFyZW50WzBdLmlkKTsgfQogICAgICAKICAgICAgbm9kZS5hZGRDbGFzcyhvcHRpb25zLmNoaWxkUHJlZml4ICsgZGVzdGluYXRpb24uaWQpOwogICAgICBtb3ZlKG5vZGUsIGRlc3RpbmF0aW9uKTsgLy8gUmVjdXJzaXZlbHkgbW92ZSBub2RlcyB0byBuZXcgbG9jYXRpb24KICAgICAgaW5kZW50KG5vZGUsIGFuY2VzdG9yc09mKG5vZGUpLmxlbmd0aCAqIG9wdGlvbnMuaW5kZW50KTsKICAgIH0KICAgIAogICAgcmV0dXJuIHRoaXM7CiAgfTsKICAKICAvLyBBZGQgcmV2ZXJzZSgpIGZ1bmN0aW9uIGZyb20gSlMgQXJyYXlzCiAgJC5mbi5yZXZlcnNlID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2sodGhpcy5nZXQoKS5yZXZlcnNlKCksIGFyZ3VtZW50cyk7CiAgfTsKICAKICAvLyBUb2dnbGUgYW4gZW50aXJlIGJyYW5jaAogICQuZm4udG9nZ2xlQnJhbmNoID0gZnVuY3Rpb24oKSB7CiAgICBpZigkKHRoaXMpLmhhc0NsYXNzKCJjb2xsYXBzZWQiKSkgewogICAgICAkKHRoaXMpLmV4cGFuZCgpOwogICAgfSBlbHNlIHsKICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygiZXhwYW5kZWQiKS5jb2xsYXBzZSgpOwogICAgfQogICAgCiAgICByZXR1cm4gdGhpczsKICB9OwogIAogIC8vID09PSBQcml2YXRlIGZ1bmN0aW9ucwogIAogIGZ1bmN0aW9uIGFuY2VzdG9yc09mKG5vZGUpIHsKICAgIHZhciBhbmNlc3RvcnMgPSBbXTsKICAgIHdoaWxlKG5vZGUgPSBwYXJlbnRPZihub2RlKSkgewogICAgICBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aF0gPSBub2RlWzBdOwogICAgfQogICAgcmV0dXJuIGFuY2VzdG9yczsKICB9OwogIAogIGZ1bmN0aW9uIGNoaWxkcmVuT2Yobm9kZSkgewogICAgcmV0dXJuICQoInRhYmxlLnRyZWVUYWJsZSB0Ym9keSB0ci4iICsgb3B0aW9ucy5jaGlsZFByZWZpeCArIG5vZGVbMF0uaWQpOwogIH07CiAgCiAgZnVuY3Rpb24gZ2V0UGFkZGluZ0xlZnQobm9kZSkgewogICAgdmFyIHBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQobm9kZVswXS5zdHlsZS5wYWRkaW5nTGVmdCwgMTApOwogICAgcmV0dXJuIChpc05hTihwYWRkaW5nTGVmdCkpID8gZGVmYXVsdFBhZGRpbmdMZWZ0IDogcGFkZGluZ0xlZnQ7CiAgfQogIAogIGZ1bmN0aW9uIGluZGVudChub2RlLCB2YWx1ZSkgewogICAgdmFyIGNlbGwgPSAkKG5vZGUuY2hpbGRyZW4oInRkIilbb3B0aW9ucy50cmVlQ29sdW1uXSk7CiAgICBjZWxsWzBdLnN0eWxlLnBhZGRpbmdMZWZ0ID0gZ2V0UGFkZGluZ0xlZnQoY2VsbCkgKyB2YWx1ZSArICJweCI7CiAgICAKICAgIGNoaWxkcmVuT2Yobm9kZSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaW5kZW50KCQodGhpcyksIHZhbHVlKTsKICAgIH0pOwogIH07CiAgCiAgZnVuY3Rpb24gaW5pdGlhbGl6ZShub2RlKSB7CiAgICBpZighbm9kZS5oYXNDbGFzcygiaW5pdGlhbGl6ZWQiKSkgewogICAgICBub2RlLmFkZENsYXNzKCJpbml0aWFsaXplZCIpOwoKICAgICAgdmFyIGNoaWxkTm9kZXMgPSBjaGlsZHJlbk9mKG5vZGUpOwogICAgICAKICAgICAgaWYoIW5vZGUuaGFzQ2xhc3MoInBhcmVudCIpICYmIGNoaWxkTm9kZXMubGVuZ3RoID4gMCkgewogICAgICAgIG5vZGUuYWRkQ2xhc3MoInBhcmVudCIpOwogICAgICB9CiAgICAgIAogICAgICBpZihub2RlLmhhc0NsYXNzKCJwYXJlbnQiKSkgewogICAgICAgIHZhciBjZWxsID0gJChub2RlLmNoaWxkcmVuKCJ0ZCIpW29wdGlvbnMudHJlZUNvbHVtbl0pOwogICAgICAgIHZhciBwYWRkaW5nID0gZ2V0UGFkZGluZ0xlZnQoY2VsbCkgKyBvcHRpb25zLmluZGVudDsKICAgICAgICAKICAgICAgICBjaGlsZE5vZGVzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKCJ0ZCIpW29wdGlvbnMudHJlZUNvbHVtbl0uc3R5bGUucGFkZGluZ0xlZnQgPSBwYWRkaW5nICsgInB4IjsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICBpZihvcHRpb25zLmV4cGFuZGFibGUpIHsKICAgICAgICAgIGNlbGwucHJlcGVuZCgnPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAtJyArIG9wdGlvbnMuaW5kZW50ICsgJ3B4OyBwYWRkaW5nLWxlZnQ6ICcgKyBvcHRpb25zLmluZGVudCArICdweCIgY2xhc3M9ImV4cGFuZGVyIj48L3NwYW4+Jyk7CiAgICAgICAgICAkKGNlbGxbMF0uZmlyc3RDaGlsZCkuY2xpY2soZnVuY3Rpb24oKSB7IG5vZGUudG9nZ2xlQnJhbmNoKCk7IH0pOwogICAgICAgICAgCiAgICAgICAgICBpZihvcHRpb25zLmNsaWNrYWJsZU5vZGVOYW1lcykgewogICAgICAgICAgICBjZWxsWzBdLnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKICAgICAgICAgICAgJChjZWxsKS5jbGljayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgLy8gRG9uJ3QgZG91YmxlLXRvZ2dsZSBpZiB0aGUgY2xpY2sgaXMgb24gdGhlIGV4aXN0aW5nIGV4cGFuZGVyIGljb24KICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuY2xhc3NOYW1lICE9ICdleHBhbmRlcicpIHsKICAgICAgICAgICAgICAgIG5vZGUudG9nZ2xlQnJhbmNoKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgY2xhc3Mgc2V0IGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSBzZXQgdGhlIGRlZmF1bHQgY2xhc3MKICAgICAgICAgIGlmKCEobm9kZS5oYXNDbGFzcygiZXhwYW5kZWQiKSB8fCBub2RlLmhhc0NsYXNzKCJjb2xsYXBzZWQiKSkpIHsKICAgICAgICAgICAgbm9kZS5hZGRDbGFzcyhvcHRpb25zLmluaXRpYWxTdGF0ZSk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYobm9kZS5oYXNDbGFzcygiZXhwYW5kZWQiKSkgewogICAgICAgICAgICBub2RlLmV4cGFuZCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CiAgCiAgZnVuY3Rpb24gbW92ZShub2RlLCBkZXN0aW5hdGlvbikgewogICAgbm9kZS5pbnNlcnRBZnRlcihkZXN0aW5hdGlvbik7CiAgICBjaGlsZHJlbk9mKG5vZGUpLnJldmVyc2UoKS5lYWNoKGZ1bmN0aW9uKCkgeyBtb3ZlKCQodGhpcyksIG5vZGVbMF0pOyB9KTsKICB9OwogIAogIGZ1bmN0aW9uIHBhcmVudE9mKG5vZGUpIHsKICAgIHZhciBjbGFzc05hbWVzID0gbm9kZVswXS5jbGFzc05hbWUuc3BsaXQoJyAnKTsKICAgIAogICAgZm9yKGtleSBpbiBjbGFzc05hbWVzKSB7CiAgICAgIGlmKGNsYXNzTmFtZXNba2V5XS5tYXRjaCgiY2hpbGQtb2YtIikpIHsKICAgICAgICByZXR1cm4gJCgiIyIgKyBjbGFzc05hbWVzW2tleV0uc3Vic3RyaW5nKDkpKTsKICAgICAgfQogICAgfQogIH07Cn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/css/lightbox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2xpZ2h0Ym94ewlwb3NpdGlvbjogYWJzb2x1dGU7CWxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDA7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7fQojbGlnaHRib3ggaW1neyB3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvO30KI2xpZ2h0Ym94IGEgaW1neyBib3JkZXI6IG5vbmU7IH0KCiNvdXRlckltYWdlQ29udGFpbmVyeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiAyNTBweDsgbWFyZ2luOiAwIGF1dG87IH0KI2ltYWdlQ29udGFpbmVyeyBwYWRkaW5nOiAxMHB4OyB9CgojbG9hZGluZ3sgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDQwJTsgbGVmdDogMCU7IGhlaWdodDogMjUlOyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMDsgfQojaG92ZXJOYXZ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDsgfQojaW1hZ2VDb250YWluZXI+I2hvdmVyTmF2eyBsZWZ0OiAwO30KI2hvdmVyTmF2IGF7IG91dGxpbmU6IG5vbmU7fQoKI3ByZXZMaW5rLCAjbmV4dExpbmt7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxBQUFBKTsgLyogVHJpY2sgSUUgaW50byBzaG93aW5nIGhvdmVyICovIGRpc3BsYXk6IGJsb2NrOyB9CiNwcmV2TGluayB7IGxlZnQ6IDA7IGZsb2F0OiBsZWZ0O30KI25leHRMaW5rIHsgcmlnaHQ6IDA7IGZsb2F0OiByaWdodDt9CiNwcmV2TGluazpob3ZlciwgI3ByZXZMaW5rOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3ByZXZsYWJlbC5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQojbmV4dExpbms6aG92ZXIsICNuZXh0TGluazp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9uZXh0bGFiZWwuZ2lmKSByaWdodCAxNSUgbm8tcmVwZWF0OyB9CgojaW1hZ2VEYXRhQ29udGFpbmVyeyBmb250OiAxMHB4IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgbWFyZ2luOiAwIGF1dG87IGxpbmUtaGVpZ2h0OiAxLjRlbTsgb3ZlcmZsb3c6IGF1dG87IHdpZHRoOiAxMDAlCTsgfQoKI2ltYWdlRGF0YXsJcGFkZGluZzowIDEwcHg7IGNvbG9yOiAjNjY2OyB9CiNpbWFnZURhdGEgI2ltYWdlRGV0YWlsc3sgd2lkdGg6IDcwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IGxlZnQ7IH0JCiNpbWFnZURhdGEgI2NhcHRpb257IGZvbnQtd2VpZ2h0OiBib2xkOwl9CiNpbWFnZURhdGEgI251bWJlckRpc3BsYXl7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogbGVmdDsgcGFkZGluZy1ib3R0b206IDEuMGVtOwl9CQkJCiNpbWFnZURhdGEgI2JvdHRvbU5hdkNsb3NleyB3aWR0aDogNjZweDsgZmxvYXQ6IHJpZ2h0OyAgcGFkZGluZy1ib3R0b206IDAuN2VtOyBvdXRsaW5lOiBub25lO30JIAkKCiNvdmVybGF5eyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgei1pbmRleDogOTA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/images/bullet.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhBgAGAIAAADs7O1paWiH5BAAAAAAALAAAAAAGAAYAAAIIRB6Gy816QAEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/close.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhGgAaALMJAHt7e8jIyJycnPT09JiYmL29vWVlZd7e3lpaWv///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAaABoAAASLMEl5pr0YH1PzDZxmIEjnJQUZThtJmljqrsnovpl8r8HtwigfbqKbmYq/mDCEHCp9AIKwdApOd8DcVZX1NEmA7kmwHFQxA5tPcLYcANtCO9HaIuTV+k6IzxymAgNwPn1uU3h6LoV0h25qiiyNF39CAXSPJIuRPgYUj5qGRiw2oJNckwaWcxticywWEQA7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/closelabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQgAWAOYAAMDAwMHBwZ2dnVlZWdLS0oODg6+vr/X19eTk5FBQULi4uIyMjJSUlFRUVFZWVtzc3FJSUsnJyVFRUVhYWFVVVezs7FNTU/b29v39/erq6vr6+qampldXV6KiokxMTE9PT2ZmZvf3993d3czMzGBgYHt7e6Ghofz8/PDw8N7e3mxsbLW1tfv7+5WVlc3NzcrKynh4eOvr60tLS+Dg4F9fX7m5ud/f37S0tIaGhnBwcGNjY+Xl5ZKSkoiIiKmpqW5ubpeXl29vb9XV1Y6Oju3t7WVlZXZ2dpiYmG1tbXx8fO/v7+fn57GxsbOzs/Hx8Xl5eVpaWmRkZE1NTXNzc2dnZ5aWloeHh+Pj405OTmlpadvb23p6ev////7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABCABYAAAf/gFyCg4SFhoeIiYqLjI2Oj4xdkpOUlZaXl5BcJ42Ynp+YkZJcLEdCXJZcIwIaqKCvoKJdIUAeUSKuXYIuNB5VF5QVWgiwXQjDlwdaWrqLo00yAxZFWq6qJA0DHj6SBAtb4AsEXQBbzJUABeBbBQCUCusFL1wB6+uDoxlbHwMJVDaCRtCwMAALDhRdImxZEEFLhAIGyJmrZGALAwJaCDDYElGigYwbLtDjGKBkAHz5SiQY0EDFDBfYBkixEgJVgQIHJuWUeE4Sgi0CKgmYOJSSoHoPDhmtUIIfBSTYJiToIbKLli3uLJXrybPSVQVdKirYeXRLUkOVuMRIAmGAAw4D/yAMqSlp6yW7k4paAtqlgrotGxCUbSGgsAKURlEYoTBgQoMOrSbhRTcx75ZLfLscAPDN7EjChhFP4qIkCGOWDHRNIoD1bmVJ8MZRYp1VMseRZwulnTElGwUHcU1gcHXg5k5jOSdbzWyZmOZJQHErHZ1ChQRpWUA4mAChw3BJChk6LLBgM0cA6JlVvJhxI9iw7DdsOVnPgMkARARRB3E9AYwrLziwnQTCueJNPOOUY09W6ayzQG0NgnPYSPZ4Zo0IIEAARQIlZCBIDQJOIEEHJ1ByjHOvnHjJMjlFwsUDOqzkXwyoCLKCBBxwIMMNxfSYijNcOMEABB9s4aFRK1iQQDAOIvjo5CjO6MICD09UkAuUTPyww5VPwiILFxpUdQkGS3DZ5SuyNOOJfmf6mGaPgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/download-icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgAWAPfFAGtra1NTU1JSUmtra46Ojo+Pj8nJyZCQkLi4uLS0tJGRkZOTk4yMjFNTU5SUlI+Pj6GhoYSEhD4+PouLi8LCwoSEhMbGxpmZmVJSUpGRkYWFhZOTk8TExK+vr5+fn66urpiYmFNTU4+Pj5GRkUpKSqGhoYyMjHZ2dr29vZCQkKurq6SkpIODg7q6uqCgoIWFhWlpacjIyI2NjZCQkJCQkLCwsLCwsGpqaomJiampqYqKisPDw2tra4mJiZ6enszMzGhoaKurq46OjqysrKWlpaysrJqamqmpqaioqLm5uZmZmZycnJubm6CgoI6Ojo2NjZKSkpSUlL+/v66urr29vZKSkq+vr8rKyqenp5aWlre3t7q6upaWlqenp7i4uIuLi3Z2dr6+vpGRkYyMjJKSkpGRkampqaSkpIeHh6ampp6enru7u5OTk7+/v7a2tr6+vpKSkoyMjIaGhlFRUbW1tZKSkvn5+aioqLi4uJOTk5CQkImJiYeHh8HBwaysrJKSkp2dnaOjo7a2tn19fZqamqGhoZqamo6OjoiIiJeXl5SUlIaGhoqKik9PT5GRkaGhoYeHh46Ojvz8/IuLi5+fn7Ozs5CQkIiIiIGBgaCgoMXFxaqqqoyMjG5uboaGhomJiaqqqqGhoZiYmKOjo5aWlnp6epGRkbGxsby8vGtra2lpaXd3d8fHx5SUlImJiaKiora2tqenp6SkpJWVlcrKyrS0tKurq3R0dI2NjZ2dnaampqenp5mZmVJSUmtra8LCwmtra97e3mxsbFJSUv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMUALAAAAAAWABYAAAj/AIsJHEiwoMFijYQpXKgQmMOHEB2SABbjhx9btkCZuXNnly4ismSNehUq1BstDmmNisgyYq41woCxCvWrps2bOH8ZwhNTUyZiQIMKHUqMF6yYO9QAtROsqdOnQUXVitknF9GrQUmditmGCVass6zEpGIIqKSnaIMFzeMn5hZeX6/+MRMTT6K4RE3tigmLVKu/ef78MUXYkmERIiJFEiFLYaVWeVYNm0y5MhhcuDhFCqXQRh5Tw0JZqYWHyi8LtDhMGcZp0iROlBRO+WNpGJ0klA38QgXLyjBXjBhNWqLQliURw9pwoLyl1pRdoX67uuTKkEJQiYcZsEDZjy5KvPIMXPN0CRIkUgp3ReI07A0eympEmZr0YtgLT/dbCVNlKhN7G2ZQZokrLAwCxjAVJFiBKcJIoAoulAyTSXiRQIJJKbd0AkwIlghmCifCFCMBEBuGYOKJlYVwg0MKzREQADs=]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/nextlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAPeDAP39/enp6UdHR6mpqY+Pj+bm5tDQ0MLCwuzs7O/v76qqqvHx8fb29vr6+v7+/lxcXPf39+3t7WdnZ2VlZV9fX0lJSc3Nze7u7ltbW/v7+7y8vKampurq6qenp3BwcPDw8FpaWoCAgLGxsWNjY2BgYPn5+ejo6ExMTFRUVE5OTqOjo9LS0mJiYufn52hoaI6OjldXV2FhYVFRUaioqNXV1d/f38HBwfz8/Pj4+JGRkbS0tF1dXd7e3oODg3p6eoGBgfLy8mZmZoKCgs/Pz1JSUllZWaurq4WFhW1tbWRkZOLi4srKylZWVqSkpLW1tbKysre3t0VFRV5eXqKiovPz88vLy8bGxmtra3V1dcjIyJqamlVVVXh4eIiIiEhISHd3d9jY2I2Njbq6upmZmeDg4G5ubktLS9bW1tzc3FNTU6WlpWpqap2dnU9PT66urr6+voyMjE1NTYaGhuTk5OHh4dfX16ysrOvr68PDw0JCQlhYWH5+fnNzc3l5eZubm+Pj42xsbPT09P///zMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIMALAAAAAA/ACAAAAj/AAcNEkSwoMGDCBMqXMgQ4cCGECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKEECsDLDQsEbNkQICuREwYCbHZTQaOKSIAIFeOaoGGDEjYIOOiB4BECgQgweBBvseSDIBAsUE0aM2GGhxRUMZAQ5IHCiigEYIzAQIUHiy4KlOVCkOIJDUIMQUgQFeNAjggkTLZQuiQPHQZYUWhyUKMCBTYUVHDgAWErARZg2OgRl+EFBL4gXCcekeeKhTAKDRgQECMl0TQEuRf4I4qw3BhIFalTYYUAQQh8ZIFYcHCCgAGsCEnDU2SIHgpDOAZJg4OMBSYi3ggD08LKjxvDixyUAwXEw5YSCLiT0PjiSIAICBJMFiSCygYUPIAaJG1eJ/IMgBoA8MEEQnuWAEA96hCAIFBV0kB94/EngnyBDMCGDC3pRgIUGHIpBRwlCwICGXT6gAEZB+rH2wgQTCuJHBQQGMMEJAtSYxwYimLFBQTQU4QF2M0SxH0hUJBCfZgicBkB7FzQZAQML3HGkIAsEkAFBDCBwQ0pcVtTAEAaEKaYBFnjXJUQl2HDAmmwe8MYZZ8Yp55x01mnnnQo9hCdEAu0JUUAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/prevlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAPeJANzc3P39/fb29rq6utra2v7+/ltbW8HBwfX19fz8/F5eXk1NTV9fX/r6+uDg4NXV1djY2ICAgGBgYFFRUVRUVEpKSt3d3eLi4tnZ2cDAwOPj4/n5+cLCwsPDw/Dw8PLy8ru7u6CgoN/f34ODg0JCQktLS11dXVpaWnJycmpqar6+vpCQkJSUlMzMzPj4+KSkpFJSUmVlZcbGxsTExGxsbIGBgba2tuXl5WNjY3BwcHZ2dmZmZufn5+vr687OztfX18rKysnJyejo6FxcXFBQUKGhoY2NjZubm3h4eHt7e5iYmN7e3tPT00BAQLi4uEdHR39/f3p6evPz89bW1qenp+bm5k9PT3d3d2RkZEhISHl5eby8vPT09HR0dG9vb62traOjo/v7+66urr+/v25ubmFhYWlpadTU1I6OjrW1tb29vaKiourq6p2dnbm5uVVVVZqamqampvHx8ff396qqqtDQ0IyMjMjIyKioqKurq2JiYoaGhklJSVhYWLOzs+Hh4UFBQXFxcc/Pz8vLy3Nzc+/v71dXV+7u7v///zMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIkALAAAAAA/ACAAAAj/ABEJHEiwoMGDCBMqNJgo0cKHECM+dCixosWLGDNq3Mixo8ePIEOKHEmypMmTKFNubOBjTAYOU1wIJJAhg4oWQgR+6HCg5wEOPAbJKDBwQ5A7IhHUmMCgaRIHiIrAUKCgTIw8iCwYMGTgxAkFddBMADCQgAkjIgVA8SLgQ5oSdhKsMQBgg4UcfX5osLJCBIS/BQ4sCDEQTwUfaSMQSoCowAkdUl4ouCEwDhEOVRZQKeghBQ0EiBBcCUQ0pIAIOTwgsJHFSAAwBrZgUINDgoMLFEaocOOkA2M4FIAgYlIBxEgBI4iYGCIBCQZEL2DEGEIBxQxEAAyYMLMDx4gGiDAszVCCSIkEHsdr7Ogw48ccgUUMAPlSYoBAABNYaBCx5ELpJGQ4gAULjCXWhUEhMNBDAjro8QF2C9BxkAwL7CGBICSdhgJ4BIWgwAWIgFBCG1lNsMIDKJ5xiECF0FBBFAFkqEUKHA50xBsiIMIFEnwE8QcFT5AgZBN+CFTAEYCIUVIAGjhQ2kBsACATIj08IMQGABCgpZYeDCQHBKCpJOZFNxAAwJlonhnjmA+1YMMAcMY5AAhhsPlQAQHkqaeedvbp55+ABiqonxQNulBDAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/js/builder.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2NyaXB0LmFjdWxvLnVzIGJ1aWxkZXIuanMgdjEuOC4xLCBUaHUgSmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAwNS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0cDovL21pci5hY3Vsby51cykKLy8KLy8gc2NyaXB0LmFjdWxvLnVzIGlzIGZyZWVseSBkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtc3R5bGUgbGljZW5zZS4KLy8gRm9yIGRldGFpbHMsIHNlZSB0aGUgc2NyaXB0LmFjdWxvLnVzIHdlYiBzaXRlOiBodHRwOi8vc2NyaXB0LmFjdWxvLnVzLwoKdmFyIEJ1aWxkZXIgPSB7CiAgTk9ERU1BUDogewogICAgQVJFQTogJ21hcCcsCiAgICBDQVBUSU9OOiAndGFibGUnLAogICAgQ09MOiAndGFibGUnLAogICAgQ09MR1JPVVA6ICd0YWJsZScsCiAgICBMRUdFTkQ6ICdmaWVsZHNldCcsCiAgICBPUFRHUk9VUDogJ3NlbGVjdCcsCiAgICBPUFRJT046ICdzZWxlY3QnLAogICAgUEFSQU06ICdvYmplY3QnLAogICAgVEJPRFk6ICd0YWJsZScsCiAgICBURDogJ3RhYmxlJywKICAgIFRGT09UOiAndGFibGUnLAogICAgVEg6ICd0YWJsZScsCiAgICBUSEVBRDogJ3RhYmxlJywKICAgIFRSOiAndGFibGUnCiAgfSwKICAvLyBub3RlOiBGb3IgRmlyZWZveCA8IDEuNSwgT1BUSU9OIGFuZCBPUFRHUk9VUCB0YWdzIGFyZSBjdXJyZW50bHkgYnJva2VuLAogIC8vICAgICAgIGR1ZSB0byBhIEZpcmVmb3ggYnVnCiAgbm9kZTogZnVuY3Rpb24oZWxlbWVudE5hbWUpIHsKICAgIGVsZW1lbnROYW1lID0gZWxlbWVudE5hbWUudG9VcHBlckNhc2UoKTsKICAgIAogICAgLy8gdHJ5IGlubmVySFRNTCBhcHByb2FjaAogICAgdmFyIHBhcmVudFRhZyA9IHRoaXMuTk9ERU1BUFtlbGVtZW50TmFtZV0gfHwgJ2Rpdic7CiAgICB2YXIgcGFyZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFyZW50VGFnKTsKICAgIHRyeSB7IC8vIHByZXZlbnQgSUUgImZlYXR1cmUiOiBodHRwOi8vZGV2LnJ1YnlvbnJhaWxzLm9yZy90aWNrZXQvMjcwNwogICAgICBwYXJlbnRFbGVtZW50LmlubmVySFRNTCA9ICI8IiArIGVsZW1lbnROYW1lICsgIj48LyIgKyBlbGVtZW50TmFtZSArICI+IjsKICAgIH0gY2F0Y2goZSkge30KICAgIHZhciBlbGVtZW50ID0gcGFyZW50RWxlbWVudC5maXJzdENoaWxkIHx8IG51bGw7CiAgICAgIAogICAgLy8gc2VlIGlmIGJyb3dzZXIgYWRkZWQgd3JhcHBpbmcgdGFncwogICAgaWYoZWxlbWVudCAmJiAoZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT0gZWxlbWVudE5hbWUpKQogICAgICBlbGVtZW50ID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShlbGVtZW50TmFtZSlbMF07CiAgICAKICAgIC8vIGZhbGxiYWNrIHRvIGNyZWF0ZUVsZW1lbnQgYXBwcm9hY2gKICAgIGlmKCFlbGVtZW50KSBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TmFtZSk7CiAgICAKICAgIC8vIGFib3J0IGlmIG5vdGhpbmcgY291bGQgYmUgY3JlYXRlZAogICAgaWYoIWVsZW1lbnQpIHJldHVybjsKCiAgICAvLyBhdHRyaWJ1dGVzIChvciB0ZXh0KQogICAgaWYoYXJndW1lbnRzWzFdKQogICAgICBpZih0aGlzLl9pc1N0cmluZ09yTnVtYmVyKGFyZ3VtZW50c1sxXSkgfHwKICAgICAgICAoYXJndW1lbnRzWzFdIGluc3RhbmNlb2YgQXJyYXkpIHx8CiAgICAgICAgYXJndW1lbnRzWzFdLnRhZ05hbWUpIHsKICAgICAgICAgIHRoaXMuX2NoaWxkcmVuKGVsZW1lbnQsIGFyZ3VtZW50c1sxXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBhdHRycyA9IHRoaXMuX2F0dHJpYnV0ZXMoYXJndW1lbnRzWzFdKTsKICAgICAgICAgIGlmKGF0dHJzLmxlbmd0aCkgewogICAgICAgICAgICB0cnkgeyAvLyBwcmV2ZW50IElFICJmZWF0dXJlIjogaHR0cDovL2Rldi5ydWJ5b25yYWlscy5vcmcvdGlja2V0LzI3MDcKICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmlubmVySFRNTCA9ICI8IiArZWxlbWVudE5hbWUgKyAiICIgKwogICAgICAgICAgICAgICAgYXR0cnMgKyAiPjwvIiArIGVsZW1lbnROYW1lICsgIj4iOwogICAgICAgICAgICB9IGNhdGNoKGUpIHt9CiAgICAgICAgICAgIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmZpcnN0Q2hpbGQgfHwgbnVsbDsKICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCBmaXJlZm94IDEuMC5YIGJ1ZwogICAgICAgICAgICBpZighZWxlbWVudCkgewogICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTsKICAgICAgICAgICAgICBmb3IoYXR0ciBpbiBhcmd1bWVudHNbMV0pIAogICAgICAgICAgICAgICAgZWxlbWVudFthdHRyID09ICdjbGFzcycgPyAnY2xhc3NOYW1lJyA6IGF0dHJdID0gYXJndW1lbnRzWzFdW2F0dHJdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9IGVsZW1lbnROYW1lKQogICAgICAgICAgICAgIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnROYW1lKVswXTsKICAgICAgICAgIH0KICAgICAgICB9IAoKICAgIC8vIHRleHQsIG9yIGFycmF5IG9mIGNoaWxkcmVuCiAgICBpZihhcmd1bWVudHNbMl0pCiAgICAgIHRoaXMuX2NoaWxkcmVuKGVsZW1lbnQsIGFyZ3VtZW50c1syXSk7CgogICAgIHJldHVybiBlbGVtZW50OwogIH0sCiAgX3RleHQ6IGZ1bmN0aW9uKHRleHQpIHsKICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgfSwKCiAgQVRUUl9NQVA6IHsKICAgICdjbGFzc05hbWUnOiAnY2xhc3MnLAogICAgJ2h0bWxGb3InOiAnZm9yJwogIH0sCgogIF9hdHRyaWJ1dGVzOiBmdW5jdGlvbihhdHRyaWJ1dGVzKSB7CiAgICB2YXIgYXR0cnMgPSBbXTsKICAgIGZvcihhdHRyaWJ1dGUgaW4gYXR0cmlidXRlcykKICAgICAgYXR0cnMucHVzaCgoYXR0cmlidXRlIGluIHRoaXMuQVRUUl9NQVAgPyB0aGlzLkFUVFJfTUFQW2F0dHJpYnV0ZV0gOiBhdHRyaWJ1dGUpICsKICAgICAgICAgICc9IicgKyBhdHRyaWJ1dGVzW2F0dHJpYnV0ZV0udG9TdHJpbmcoKS5lc2NhcGVIVE1MKCkuZ3N1YigvIi8sJyZxdW90OycpICsgJyInKTsKICAgIHJldHVybiBhdHRycy5qb2luKCIgIik7CiAgfSwKICBfY2hpbGRyZW46IGZ1bmN0aW9uKGVsZW1lbnQsIGNoaWxkcmVuKSB7CiAgICBpZihjaGlsZHJlbi50YWdOYW1lKSB7CiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGRyZW4pOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZih0eXBlb2YgY2hpbGRyZW49PSdvYmplY3QnKSB7IC8vIGFycmF5IGNhbiBob2xkIG5vZGVzIGFuZCB0ZXh0CiAgICAgIGNoaWxkcmVuLmZsYXR0ZW4oKS5lYWNoKCBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYodHlwZW9mIGU9PSdvYmplY3QnKQogICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChlKQogICAgICAgIGVsc2UKICAgICAgICAgIGlmKEJ1aWxkZXIuX2lzU3RyaW5nT3JOdW1iZXIoZSkpCiAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoQnVpbGRlci5fdGV4dChlKSk7CiAgICAgIH0pOwogICAgfSBlbHNlCiAgICAgIGlmKEJ1aWxkZXIuX2lzU3RyaW5nT3JOdW1iZXIoY2hpbGRyZW4pKQogICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoQnVpbGRlci5fdGV4dChjaGlsZHJlbikpOwogIH0sCiAgX2lzU3RyaW5nT3JOdW1iZXI6IGZ1bmN0aW9uKHBhcmFtKSB7CiAgICByZXR1cm4odHlwZW9mIHBhcmFtPT0nc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW09PSdudW1iZXInKTsKICB9LAogIGJ1aWxkOiBmdW5jdGlvbihodG1sKSB7CiAgICB2YXIgZWxlbWVudCA9IHRoaXMubm9kZSgnZGl2Jyk7CiAgICAkKGVsZW1lbnQpLnVwZGF0ZShodG1sLnN0cmlwKCkpOwogICAgcmV0dXJuIGVsZW1lbnQuZG93bigpOwogIH0sCiAgZHVtcDogZnVuY3Rpb24oc2NvcGUpIHsgCiAgICBpZih0eXBlb2Ygc2NvcGUgIT0gJ29iamVjdCcgJiYgdHlwZW9mIHNjb3BlICE9ICdmdW5jdGlvbicpIHNjb3BlID0gd2luZG93OyAvL2dsb2JhbCBzY29wZSAKICAKICAgIHZhciB0YWdzID0gKCJBIEFCQlIgQUNST05ZTSBBRERSRVNTIEFQUExFVCBBUkVBIEIgQkFTRSBCQVNFRk9OVCBCRE8gQklHIEJMT0NLUVVPVEUgQk9EWSAiICsKICAgICAgIkJSIEJVVFRPTiBDQVBUSU9OIENFTlRFUiBDSVRFIENPREUgQ09MIENPTEdST1VQIEREIERFTCBERk4gRElSIERJViBETCBEVCBFTSBGSUVMRFNFVCAiICsKICAgICAgIkZPTlQgRk9STSBGUkFNRSBGUkFNRVNFVCBIMSBIMiBIMyBINCBINSBINiBIRUFEIEhSIEhUTUwgSSBJRlJBTUUgSU1HIElOUFVUIElOUyBJU0lOREVYICIrCiAgICAgICJLQkQgTEFCRUwgTEVHRU5EIExJIExJTksgTUFQIE1FTlUgTUVUQSBOT0ZSQU1FUyBOT1NDUklQVCBPQkpFQ1QgT0wgT1BUR1JPVVAgT1BUSU9OIFAgIisKICAgICAgIlBBUkFNIFBSRSBRIFMgU0FNUCBTQ1JJUFQgU0VMRUNUIFNNQUxMIFNQQU4gU1RSSUtFIFNUUk9ORyBTVFlMRSBTVUIgU1VQIFRBQkxFIFRCT0RZIFREICIrCiAgICAgICJURVhUQVJFQSBURk9PVCBUSCBUSEVBRCBUSVRMRSBUUiBUVCBVIFVMIFZBUiIpLnNwbGl0KC9ccysvKTsKICAKICAgIHRhZ3MuZWFjaCggZnVuY3Rpb24odGFnKXsgCiAgICAgIHNjb3BlW3RhZ10gPSBmdW5jdGlvbigpIHsgCiAgICAgICAgcmV0dXJuIEJ1aWxkZXIubm9kZS5hcHBseShCdWlsZGVyLCBbdGFnXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOyAgCiAgICAgIH0gCiAgICB9KTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/effects.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2NyaXB0LmFjdWxvLnVzIGVmZmVjdHMuanMgdjEuOC4xLCBUaHUgSmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAwNS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0cDovL21pci5hY3Vsby51cykKLy8gQ29udHJpYnV0b3JzOgovLyAgSnVzdGluIFBhbG1lciAoaHR0cDovL2VuY3l0ZW1lZGlhLmNvbS8pCi8vICBNYXJrIFBpbGdyaW0gKGh0dHA6Ly9kaXZlaW50b21hcmsub3JnLykKLy8gIE1hcnRpbiBCaWFsYXNpbmtpCi8vIAovLyBzY3JpcHQuYWN1bG8udXMgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1zdHlsZSBsaWNlbnNlLgovLyBGb3IgZGV0YWlscywgc2VlIHRoZSBzY3JpcHQuYWN1bG8udXMgd2ViIHNpdGU6IGh0dHA6Ly9zY3JpcHQuYWN1bG8udXMvIAoKLy8gY29udmVydHMgcmdiKCkgYW5kICN4eHggdG8gI3h4eHh4eCBmb3JtYXQsICAKLy8gcmV0dXJucyBzZWxmIChvciBmaXJzdCBhcmd1bWVudCkgaWYgbm90IGNvbnZlcnRhYmxlICAKU3RyaW5nLnByb3RvdHlwZS5wYXJzZUNvbG9yID0gZnVuY3Rpb24oKSB7ICAKICB2YXIgY29sb3IgPSAnIyc7CiAgaWYgKHRoaXMuc2xpY2UoMCw0KSA9PSAncmdiKCcpIHsgIAogICAgdmFyIGNvbHMgPSB0aGlzLnNsaWNlKDQsdGhpcy5sZW5ndGgtMSkuc3BsaXQoJywnKTsgIAogICAgdmFyIGk9MDsgZG8geyBjb2xvciArPSBwYXJzZUludChjb2xzW2ldKS50b0NvbG9yUGFydCgpIH0gd2hpbGUgKCsraTwzKTsgIAogIH0gZWxzZSB7ICAKICAgIGlmICh0aGlzLnNsaWNlKDAsMSkgPT0gJyMnKSB7ICAKICAgICAgaWYgKHRoaXMubGVuZ3RoPT00KSBmb3IodmFyIGk9MTtpPDQ7aSsrKSBjb2xvciArPSAodGhpcy5jaGFyQXQoaSkgKyB0aGlzLmNoYXJBdChpKSkudG9Mb3dlckNhc2UoKTsgIAogICAgICBpZiAodGhpcy5sZW5ndGg9PTcpIGNvbG9yID0gdGhpcy50b0xvd2VyQ2FzZSgpOyAgCiAgICB9ICAKICB9ICAKICByZXR1cm4gKGNvbG9yLmxlbmd0aD09NyA/IGNvbG9yIDogKGFyZ3VtZW50c1swXSB8fCB0aGlzKSk7ICAKfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKRWxlbWVudC5jb2xsZWN0VGV4dE5vZGVzID0gZnVuY3Rpb24oZWxlbWVudCkgeyAgCiAgcmV0dXJuICRBKCQoZWxlbWVudCkuY2hpbGROb2RlcykuY29sbGVjdCggZnVuY3Rpb24obm9kZSkgewogICAgcmV0dXJuIChub2RlLm5vZGVUeXBlPT0zID8gbm9kZS5ub2RlVmFsdWUgOiAKICAgICAgKG5vZGUuaGFzQ2hpbGROb2RlcygpID8gRWxlbWVudC5jb2xsZWN0VGV4dE5vZGVzKG5vZGUpIDogJycpKTsKICB9KS5mbGF0dGVuKCkuam9pbignJyk7Cn07CgpFbGVtZW50LmNvbGxlY3RUZXh0Tm9kZXNJZ25vcmVDbGFzcyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgeyAgCiAgcmV0dXJuICRBKCQoZWxlbWVudCkuY2hpbGROb2RlcykuY29sbGVjdCggZnVuY3Rpb24obm9kZSkgewogICAgcmV0dXJuIChub2RlLm5vZGVUeXBlPT0zID8gbm9kZS5ub2RlVmFsdWUgOiAKICAgICAgKChub2RlLmhhc0NoaWxkTm9kZXMoKSAmJiAhRWxlbWVudC5oYXNDbGFzc05hbWUobm9kZSxjbGFzc05hbWUpKSA/IAogICAgICAgIEVsZW1lbnQuY29sbGVjdFRleHROb2Rlc0lnbm9yZUNsYXNzKG5vZGUsIGNsYXNzTmFtZSkgOiAnJykpOwogIH0pLmZsYXR0ZW4oKS5qb2luKCcnKTsKfTsKCkVsZW1lbnQuc2V0Q29udGVudFpvb20gPSBmdW5jdGlvbihlbGVtZW50LCBwZXJjZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCk7ICAKICBlbGVtZW50LnNldFN0eWxlKHtmb250U2l6ZTogKHBlcmNlbnQvMTAwKSArICdlbSd9KTsgICAKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB3aW5kb3cuc2Nyb2xsQnkoMCwwKTsKICByZXR1cm4gZWxlbWVudDsKfTsKCkVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQpewogIHJldHVybiAkKGVsZW1lbnQpLnN0eWxlLm9wYWNpdHkgfHwgJyc7Cn07CgpFbGVtZW50LmZvcmNlUmVyZW5kZXJpbmcgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgdHJ5IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpOwogICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQobik7CiAgfSBjYXRjaChlKSB7IH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIEVmZmVjdCA9IHsKICBfZWxlbWVudERvZXNOb3RFeGlzdEVycm9yOiB7CiAgICBuYW1lOiAnRWxlbWVudERvZXNOb3RFeGlzdEVycm9yJywKICAgIG1lc3NhZ2U6ICdUaGUgc3BlY2lmaWVkIERPTSBlbGVtZW50IGRvZXMgbm90IGV4aXN0LCBidXQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZWZmZWN0IHRvIG9wZXJhdGUnCiAgfSwKICBUcmFuc2l0aW9uczogewogICAgbGluZWFyOiBQcm90b3R5cGUuSywKICAgIHNpbm9pZGFsOiBmdW5jdGlvbihwb3MpIHsKICAgICAgcmV0dXJuICgtTWF0aC5jb3MocG9zKk1hdGguUEkpLzIpICsgMC41OwogICAgfSwKICAgIHJldmVyc2U6IGZ1bmN0aW9uKHBvcykgewogICAgICByZXR1cm4gMS1wb3M7CiAgICB9LAogICAgZmxpY2tlcjogZnVuY3Rpb24ocG9zKSB7CiAgICAgIHZhciBwb3MgPSAoKC1NYXRoLmNvcyhwb3MqTWF0aC5QSSkvNCkgKyAwLjc1KSArIE1hdGgucmFuZG9tKCkvNDsKICAgICAgcmV0dXJuIHBvcyA+IDEgPyAxIDogcG9zOwogICAgfSwKICAgIHdvYmJsZTogZnVuY3Rpb24ocG9zKSB7CiAgICAgIHJldHVybiAoLU1hdGguY29zKHBvcypNYXRoLlBJKig5KnBvcykpLzIpICsgMC41OwogICAgfSwKICAgIHB1bHNlOiBmdW5jdGlvbihwb3MsIHB1bHNlcykgeyAKICAgICAgcHVsc2VzID0gcHVsc2VzIHx8IDU7IAogICAgICByZXR1cm4gKAogICAgICAgICgocG9zICUgKDEvcHVsc2VzKSkgKiBwdWxzZXMpLnJvdW5kKCkgPT0gMCA/IAogICAgICAgICAgICAgICgocG9zICogcHVsc2VzICogMikgLSAocG9zICogcHVsc2VzICogMikuZmxvb3IoKSkgOiAKICAgICAgICAgIDEgLSAoKHBvcyAqIHB1bHNlcyAqIDIpIC0gKHBvcyAqIHB1bHNlcyAqIDIpLmZsb29yKCkpCiAgICAgICAgKTsKICAgIH0sCiAgICBzcHJpbmc6IGZ1bmN0aW9uKHBvcykgeyAKICAgICAgcmV0dXJuIDEgLSAoTWF0aC5jb3MocG9zICogNC41ICogTWF0aC5QSSkgKiBNYXRoLmV4cCgtcG9zICogNikpOyAKICAgIH0sCiAgICBub25lOiBmdW5jdGlvbihwb3MpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9LAogICAgZnVsbDogZnVuY3Rpb24ocG9zKSB7CiAgICAgIHJldHVybiAxOwogICAgfQogIH0sCiAgRGVmYXVsdE9wdGlvbnM6IHsKICAgIGR1cmF0aW9uOiAgIDEuMCwgICAvLyBzZWNvbmRzCiAgICBmcHM6ICAgICAgICAxMDAsICAgLy8gMTAwPSBhc3N1bWUgNjZmcHMgbWF4LgogICAgc3luYzogICAgICAgZmFsc2UsIC8vIHRydWUgZm9yIGNvbWJpbmluZwogICAgZnJvbTogICAgICAgMC4wLAogICAgdG86ICAgICAgICAgMS4wLAogICAgZGVsYXk6ICAgICAgMC4wLAogICAgcXVldWU6ICAgICAgJ3BhcmFsbGVsJwogIH0sCiAgdGFnaWZ5VGV4dDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHRhZ2lmeVN0eWxlID0gJ3Bvc2l0aW9uOnJlbGF0aXZlJzsKICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSkgdGFnaWZ5U3R5bGUgKz0gJzt6b29tOjEnOwogICAgCiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaCggZnVuY3Rpb24oY2hpbGQpIHsKICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlPT0zKSB7CiAgICAgICAgY2hpbGQubm9kZVZhbHVlLnRvQXJyYXkoKS5lYWNoKCBmdW5jdGlvbihjaGFyYWN0ZXIpIHsKICAgICAgICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKAogICAgICAgICAgICBuZXcgRWxlbWVudCgnc3BhbicsIHtzdHlsZTogdGFnaWZ5U3R5bGV9KS51cGRhdGUoCiAgICAgICAgICAgICAgY2hhcmFjdGVyID09ICcgJyA/IFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSA6IGNoYXJhY3RlciksIAogICAgICAgICAgICAgIGNoaWxkKTsKICAgICAgICB9KTsKICAgICAgICBFbGVtZW50LnJlbW92ZShjaGlsZCk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgbXVsdGlwbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGVmZmVjdCkgewogICAgdmFyIGVsZW1lbnRzOwogICAgaWYgKCgodHlwZW9mIGVsZW1lbnQgPT0gJ29iamVjdCcpIHx8IAogICAgICAgIE9iamVjdC5pc0Z1bmN0aW9uKGVsZW1lbnQpKSAmJiAKICAgICAgIChlbGVtZW50Lmxlbmd0aCkpCiAgICAgIGVsZW1lbnRzID0gZWxlbWVudDsKICAgIGVsc2UKICAgICAgZWxlbWVudHMgPSAkKGVsZW1lbnQpLmNoaWxkTm9kZXM7CiAgICAgIAogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgc3BlZWQ6IDAuMSwKICAgICAgZGVsYXk6IDAuMAogICAgfSwgYXJndW1lbnRzWzJdIHx8IHsgfSk7CiAgICB2YXIgbWFzdGVyRGVsYXkgPSBvcHRpb25zLmRlbGF5OwoKICAgICRBKGVsZW1lbnRzKS5lYWNoKCBmdW5jdGlvbihlbGVtZW50LCBpbmRleCkgewogICAgICBuZXcgZWZmZWN0KGVsZW1lbnQsIE9iamVjdC5leHRlbmQob3B0aW9ucywgeyBkZWxheTogaW5kZXggKiBvcHRpb25zLnNwZWVkICsgbWFzdGVyRGVsYXkgfSkpOwogICAgfSk7CiAgfSwKICBQQUlSUzogewogICAgJ3NsaWRlJzogIFsnU2xpZGVEb3duJywnU2xpZGVVcCddLAogICAgJ2JsaW5kJzogIFsnQmxpbmREb3duJywnQmxpbmRVcCddLAogICAgJ2FwcGVhcic6IFsnQXBwZWFyJywnRmFkZSddCiAgfSwKICB0b2dnbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGVmZmVjdCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlZmZlY3QgPSAoZWZmZWN0IHx8ICdhcHBlYXInKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgcXVldWU6IHsgcG9zaXRpb246J2VuZCcsIHNjb3BlOihlbGVtZW50LmlkIHx8ICdnbG9iYWwnKSwgbGltaXQ6IDEgfQogICAgfSwgYXJndW1lbnRzWzJdIHx8IHsgfSk7CiAgICBFZmZlY3RbZWxlbWVudC52aXNpYmxlKCkgPyAKICAgICAgRWZmZWN0LlBBSVJTW2VmZmVjdF1bMV0gOiBFZmZlY3QuUEFJUlNbZWZmZWN0XVswXV0oZWxlbWVudCwgb3B0aW9ucyk7CiAgfQp9OwoKRWZmZWN0LkRlZmF1bHRPcHRpb25zLnRyYW5zaXRpb24gPSBFZmZlY3QuVHJhbnNpdGlvbnMuc2lub2lkYWw7CgovKiAtLS0tLS0tLS0tLS0tIGNvcmUgZWZmZWN0cyAtLS0tLS0tLS0tLS0tICovCgpFZmZlY3QuU2NvcGVkUXVldWUgPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5lZmZlY3RzICA9IFtdOwogICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7ICAgIAogIH0sCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVmZmVjdHMuX2VhY2goaXRlcmF0b3IpOwogIH0sCiAgYWRkOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIHZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgIAogICAgdmFyIHBvc2l0aW9uID0gT2JqZWN0LmlzU3RyaW5nKGVmZmVjdC5vcHRpb25zLnF1ZXVlKSA/IAogICAgICBlZmZlY3Qub3B0aW9ucy5xdWV1ZSA6IGVmZmVjdC5vcHRpb25zLnF1ZXVlLnBvc2l0aW9uOwogICAgCiAgICBzd2l0Y2gocG9zaXRpb24pIHsKICAgICAgY2FzZSAnZnJvbnQnOgogICAgICAgIC8vIG1vdmUgdW5zdGFydGVkIGVmZmVjdHMgYWZ0ZXIgdGhpcyBlZmZlY3QgIAogICAgICAgIHRoaXMuZWZmZWN0cy5maW5kQWxsKGZ1bmN0aW9uKGUpeyByZXR1cm4gZS5zdGF0ZT09J2lkbGUnIH0pLmVhY2goIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdGFydE9uICArPSBlZmZlY3QuZmluaXNoT247CiAgICAgICAgICAgIGUuZmluaXNoT24gKz0gZWZmZWN0LmZpbmlzaE9uOwogICAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3dpdGgtbGFzdCc6CiAgICAgICAgdGltZXN0YW1wID0gdGhpcy5lZmZlY3RzLnBsdWNrKCdzdGFydE9uJykubWF4KCkgfHwgdGltZXN0YW1wOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdlbmQnOgogICAgICAgIC8vIHN0YXJ0IGVmZmVjdCBhZnRlciBsYXN0IHF1ZXVlZCBlZmZlY3QgaGFzIGZpbmlzaGVkCiAgICAgICAgdGltZXN0YW1wID0gdGhpcy5lZmZlY3RzLnBsdWNrKCdmaW5pc2hPbicpLm1heCgpIHx8IHRpbWVzdGFtcDsKICAgICAgICBicmVhazsKICAgIH0KICAgIAogICAgZWZmZWN0LnN0YXJ0T24gICs9IHRpbWVzdGFtcDsKICAgIGVmZmVjdC5maW5pc2hPbiArPSB0aW1lc3RhbXA7CgogICAgaWYgKCFlZmZlY3Qub3B0aW9ucy5xdWV1ZS5saW1pdCB8fCAodGhpcy5lZmZlY3RzLmxlbmd0aCA8IGVmZmVjdC5vcHRpb25zLnF1ZXVlLmxpbWl0KSkKICAgICAgdGhpcy5lZmZlY3RzLnB1c2goZWZmZWN0KTsKICAgIAogICAgaWYgKCF0aGlzLmludGVydmFsKQogICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwodGhpcy5sb29wLmJpbmQodGhpcyksIDE1KTsKICB9LAogIHJlbW92ZTogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICB0aGlzLmVmZmVjdHMgPSB0aGlzLmVmZmVjdHMucmVqZWN0KGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGU9PWVmZmVjdCB9KTsKICAgIGlmICh0aGlzLmVmZmVjdHMubGVuZ3RoID09IDApIHsKICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTsKICAgICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7CiAgICB9CiAgfSwKICBsb29wOiBmdW5jdGlvbigpIHsKICAgIHZhciB0aW1lUG9zID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiAgICBmb3IodmFyIGk9MCwgbGVuPXRoaXMuZWZmZWN0cy5sZW5ndGg7aTxsZW47aSsrKSAKICAgICAgdGhpcy5lZmZlY3RzW2ldICYmIHRoaXMuZWZmZWN0c1tpXS5sb29wKHRpbWVQb3MpOwogIH0KfSk7CgpFZmZlY3QuUXVldWVzID0gewogIGluc3RhbmNlczogJEgoKSwKICBnZXQ6IGZ1bmN0aW9uKHF1ZXVlTmFtZSkgewogICAgaWYgKCFPYmplY3QuaXNTdHJpbmcocXVldWVOYW1lKSkgcmV0dXJuIHF1ZXVlTmFtZTsKICAgIAogICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzLmdldChxdWV1ZU5hbWUpIHx8CiAgICAgIHRoaXMuaW5zdGFuY2VzLnNldChxdWV1ZU5hbWUsIG5ldyBFZmZlY3QuU2NvcGVkUXVldWUoKSk7CiAgfQp9OwpFZmZlY3QuUXVldWUgPSBFZmZlY3QuUXVldWVzLmdldCgnZ2xvYmFsJyk7CgpFZmZlY3QuQmFzZSA9IENsYXNzLmNyZWF0ZSh7CiAgcG9zaXRpb246IG51bGwsCiAgc3RhcnQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgIGZ1bmN0aW9uIGNvZGVGb3JFdmVudChvcHRpb25zLGV2ZW50TmFtZSl7CiAgICAgIHJldHVybiAoCiAgICAgICAgKG9wdGlvbnNbZXZlbnROYW1lKydJbnRlcm5hbCddID8gJ3RoaXMub3B0aW9ucy4nK2V2ZW50TmFtZSsnSW50ZXJuYWwodGhpcyk7JyA6ICcnKSArCiAgICAgICAgKG9wdGlvbnNbZXZlbnROYW1lXSA/ICd0aGlzLm9wdGlvbnMuJytldmVudE5hbWUrJyh0aGlzKTsnIDogJycpCiAgICAgICk7CiAgICB9CiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYW5zaXRpb24gPT09IGZhbHNlKSBvcHRpb25zLnRyYW5zaXRpb24gPSBFZmZlY3QuVHJhbnNpdGlvbnMubGluZWFyOwogICAgdGhpcy5vcHRpb25zICAgICAgPSBPYmplY3QuZXh0ZW5kKE9iamVjdC5leHRlbmQoeyB9LEVmZmVjdC5EZWZhdWx0T3B0aW9ucyksIG9wdGlvbnMgfHwgeyB9KTsKICAgIHRoaXMuY3VycmVudEZyYW1lID0gMDsKICAgIHRoaXMuc3RhdGUgICAgICAgID0gJ2lkbGUnOwogICAgdGhpcy5zdGFydE9uICAgICAgPSB0aGlzLm9wdGlvbnMuZGVsYXkqMTAwMDsKICAgIHRoaXMuZmluaXNoT24gICAgID0gdGhpcy5zdGFydE9uKyh0aGlzLm9wdGlvbnMuZHVyYXRpb24qMTAwMCk7CiAgICB0aGlzLmZyb21Ub0RlbHRhICA9IHRoaXMub3B0aW9ucy50by10aGlzLm9wdGlvbnMuZnJvbTsKICAgIHRoaXMudG90YWxUaW1lICAgID0gdGhpcy5maW5pc2hPbi10aGlzLnN0YXJ0T247CiAgICB0aGlzLnRvdGFsRnJhbWVzICA9IHRoaXMub3B0aW9ucy5mcHMqdGhpcy5vcHRpb25zLmR1cmF0aW9uOwogICAgCiAgICBldmFsKCd0aGlzLnJlbmRlciA9IGZ1bmN0aW9uKHBvcyl7ICcrCiAgICAgICdpZiAodGhpcy5zdGF0ZT09ImlkbGUiKXt0aGlzLnN0YXRlPSJydW5uaW5nIjsnKwogICAgICBjb2RlRm9yRXZlbnQodGhpcy5vcHRpb25zLCdiZWZvcmVTZXR1cCcpKwogICAgICAodGhpcy5zZXR1cCA/ICd0aGlzLnNldHVwKCk7JzonJykrIAogICAgICBjb2RlRm9yRXZlbnQodGhpcy5vcHRpb25zLCdhZnRlclNldHVwJykrCiAgICAgICd9O2lmICh0aGlzLnN0YXRlPT0icnVubmluZyIpeycrCiAgICAgICdwb3M9dGhpcy5vcHRpb25zLnRyYW5zaXRpb24ocG9zKSonK3RoaXMuZnJvbVRvRGVsdGErJysnK3RoaXMub3B0aW9ucy5mcm9tKyc7JysKICAgICAgJ3RoaXMucG9zaXRpb249cG9zOycrCiAgICAgIGNvZGVGb3JFdmVudCh0aGlzLm9wdGlvbnMsJ2JlZm9yZVVwZGF0ZScpKwogICAgICAodGhpcy51cGRhdGUgPyAndGhpcy51cGRhdGUocG9zKTsnOicnKSsKICAgICAgY29kZUZvckV2ZW50KHRoaXMub3B0aW9ucywnYWZ0ZXJVcGRhdGUnKSsKICAgICAgJ319Jyk7CiAgICAKICAgIHRoaXMuZXZlbnQoJ2JlZm9yZVN0YXJ0Jyk7CiAgICBpZiAoIXRoaXMub3B0aW9ucy5zeW5jKQogICAgICBFZmZlY3QuUXVldWVzLmdldChPYmplY3QuaXNTdHJpbmcodGhpcy5vcHRpb25zLnF1ZXVlKSA/IAogICAgICAgICdnbG9iYWwnIDogdGhpcy5vcHRpb25zLnF1ZXVlLnNjb3BlKS5hZGQodGhpcyk7CiAgfSwKICBsb29wOiBmdW5jdGlvbih0aW1lUG9zKSB7CiAgICBpZiAodGltZVBvcyA+PSB0aGlzLnN0YXJ0T24pIHsKICAgICAgaWYgKHRpbWVQb3MgPj0gdGhpcy5maW5pc2hPbikgewogICAgICAgIHRoaXMucmVuZGVyKDEuMCk7CiAgICAgICAgdGhpcy5jYW5jZWwoKTsKICAgICAgICB0aGlzLmV2ZW50KCdiZWZvcmVGaW5pc2gnKTsKICAgICAgICBpZiAodGhpcy5maW5pc2gpIHRoaXMuZmluaXNoKCk7IAogICAgICAgIHRoaXMuZXZlbnQoJ2FmdGVyRmluaXNoJyk7CiAgICAgICAgcmV0dXJuOyAgCiAgICAgIH0KICAgICAgdmFyIHBvcyAgID0gKHRpbWVQb3MgLSB0aGlzLnN0YXJ0T24pIC8gdGhpcy50b3RhbFRpbWUsCiAgICAgICAgICBmcmFtZSA9IChwb3MgKiB0aGlzLnRvdGFsRnJhbWVzKS5yb3VuZCgpOwogICAgICBpZiAoZnJhbWUgPiB0aGlzLmN1cnJlbnRGcmFtZSkgewogICAgICAgIHRoaXMucmVuZGVyKHBvcyk7CiAgICAgICAgdGhpcy5jdXJyZW50RnJhbWUgPSBmcmFtZTsKICAgICAgfQogICAgfQogIH0sCiAgY2FuY2VsOiBmdW5jdGlvbigpIHsKICAgIGlmICghdGhpcy5vcHRpb25zLnN5bmMpCiAgICAgIEVmZmVjdC5RdWV1ZXMuZ2V0KE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucXVldWUpID8gCiAgICAgICAgJ2dsb2JhbCcgOiB0aGlzLm9wdGlvbnMucXVldWUuc2NvcGUpLnJlbW92ZSh0aGlzKTsKICAgIHRoaXMuc3RhdGUgPSAnZmluaXNoZWQnOwogIH0sCiAgZXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSkgewogICAgaWYgKHRoaXMub3B0aW9uc1tldmVudE5hbWUgKyAnSW50ZXJuYWwnXSkgdGhpcy5vcHRpb25zW2V2ZW50TmFtZSArICdJbnRlcm5hbCddKHRoaXMpOwogICAgaWYgKHRoaXMub3B0aW9uc1tldmVudE5hbWVdKSB0aGlzLm9wdGlvbnNbZXZlbnROYW1lXSh0aGlzKTsKICB9LAogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgdmFyIGRhdGEgPSAkSCgpOwogICAgZm9yKHByb3BlcnR5IGluIHRoaXMpCiAgICAgIGlmICghT2JqZWN0LmlzRnVuY3Rpb24odGhpc1twcm9wZXJ0eV0pKSBkYXRhLnNldChwcm9wZXJ0eSwgdGhpc1twcm9wZXJ0eV0pOwogICAgcmV0dXJuICcjPEVmZmVjdDonICsgZGF0YS5pbnNwZWN0KCkgKyAnLG9wdGlvbnM6JyArICRIKHRoaXMub3B0aW9ucykuaW5zcGVjdCgpICsgJz4nOwogIH0KfSk7CgpFZmZlY3QuUGFyYWxsZWwgPSBDbGFzcy5jcmVhdGUoRWZmZWN0LkJhc2UsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlZmZlY3RzKSB7CiAgICB0aGlzLmVmZmVjdHMgPSBlZmZlY3RzIHx8IFtdOwogICAgdGhpcy5zdGFydChhcmd1bWVudHNbMV0pOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lZmZlY3RzLmludm9rZSgncmVuZGVyJywgcG9zaXRpb24pOwogIH0sCiAgZmluaXNoOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lZmZlY3RzLmVhY2goIGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QucmVuZGVyKDEuMCk7CiAgICAgIGVmZmVjdC5jYW5jZWwoKTsKICAgICAgZWZmZWN0LmV2ZW50KCdiZWZvcmVGaW5pc2gnKTsKICAgICAgaWYgKGVmZmVjdC5maW5pc2gpIGVmZmVjdC5maW5pc2gocG9zaXRpb24pOwogICAgICBlZmZlY3QuZXZlbnQoJ2FmdGVyRmluaXNoJyk7CiAgICB9KTsKICB9Cn0pOwoKRWZmZWN0LlR3ZWVuID0gQ2xhc3MuY3JlYXRlKEVmZmVjdC5CYXNlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob2JqZWN0LCBmcm9tLCB0bykgewogICAgb2JqZWN0ID0gT2JqZWN0LmlzU3RyaW5nKG9iamVjdCkgPyAkKG9iamVjdCkgOiBvYmplY3Q7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3VtZW50cyksIG1ldGhvZCA9IGFyZ3MubGFzdCgpLCAKICAgICAgb3B0aW9ucyA9IGFyZ3MubGVuZ3RoID09IDUgPyBhcmdzWzNdIDogbnVsbDsKICAgIHRoaXMubWV0aG9kID0gT2JqZWN0LmlzRnVuY3Rpb24obWV0aG9kKSA/IG1ldGhvZC5iaW5kKG9iamVjdCkgOgogICAgICBPYmplY3QuaXNGdW5jdGlvbihvYmplY3RbbWV0aG9kXSkgPyBvYmplY3RbbWV0aG9kXS5iaW5kKG9iamVjdCkgOiAKICAgICAgZnVuY3Rpb24odmFsdWUpIHsgb2JqZWN0W21ldGhvZF0gPSB2YWx1ZSB9OwogICAgdGhpcy5zdGFydChPYmplY3QuZXh0ZW5kKHsgZnJvbTogZnJvbSwgdG86IHRvIH0sIG9wdGlvbnMgfHwgeyB9KSk7CiAgfSwKICB1cGRhdGU6IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICB0aGlzLm1ldGhvZChwb3NpdGlvbik7CiAgfQp9KTsKCkVmZmVjdC5FdmVudCA9IENsYXNzLmNyZWF0ZShFZmZlY3QuQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5zdGFydChPYmplY3QuZXh0ZW5kKHsgZHVyYXRpb246IDAgfSwgYXJndW1lbnRzWzBdIHx8IHsgfSkpOwogIH0sCiAgdXBkYXRlOiBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbgp9KTsKCkVmZmVjdC5PcGFjaXR5ID0gQ2xhc3MuY3JlYXRlKEVmZmVjdC5CYXNlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdGhpcy5lbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmICghdGhpcy5lbGVtZW50KSB0aHJvdyhFZmZlY3QuX2VsZW1lbnREb2VzTm90RXhpc3RFcnJvcik7CiAgICAvLyBtYWtlIHRoaXMgd29yayBvbiBJRSBvbiBlbGVtZW50cyB3aXRob3V0ICdsYXlvdXQnCiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUgJiYgKCF0aGlzLmVsZW1lbnQuY3VycmVudFN0eWxlLmhhc0xheW91dCkpCiAgICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7em9vbTogMX0pOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgZnJvbTogdGhpcy5lbGVtZW50LmdldE9wYWNpdHkoKSB8fCAwLjAsCiAgICAgIHRvOiAgIDEuMAogICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgICB0aGlzLnN0YXJ0KG9wdGlvbnMpOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lbGVtZW50LnNldE9wYWNpdHkocG9zaXRpb24pOwogIH0KfSk7CgpFZmZlY3QuTW92ZSA9IENsYXNzLmNyZWF0ZShFZmZlY3QuQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIXRoaXMuZWxlbWVudCkgdGhyb3coRWZmZWN0Ll9lbGVtZW50RG9lc05vdEV4aXN0RXJyb3IpOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgeDogICAgMCwKICAgICAgeTogICAgMCwKICAgICAgbW9kZTogJ3JlbGF0aXZlJwogICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgICB0aGlzLnN0YXJ0KG9wdGlvbnMpOwogIH0sCiAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCk7CiAgICB0aGlzLm9yaWdpbmFsTGVmdCA9IHBhcnNlRmxvYXQodGhpcy5lbGVtZW50LmdldFN0eWxlKCdsZWZ0JykgfHwgJzAnKTsKICAgIHRoaXMub3JpZ2luYWxUb3AgID0gcGFyc2VGbG9hdCh0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoJ3RvcCcpICB8fCAnMCcpOwogICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlID09ICdhYnNvbHV0ZScpIHsKICAgICAgdGhpcy5vcHRpb25zLnggPSB0aGlzLm9wdGlvbnMueCAtIHRoaXMub3JpZ2luYWxMZWZ0OwogICAgICB0aGlzLm9wdGlvbnMueSA9IHRoaXMub3B0aW9ucy55IC0gdGhpcy5vcmlnaW5hbFRvcDsKICAgIH0KICB9LAogIHVwZGF0ZTogZnVuY3Rpb24ocG9zaXRpb24pIHsKICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7CiAgICAgIGxlZnQ6ICh0aGlzLm9wdGlvbnMueCAgKiBwb3NpdGlvbiArIHRoaXMub3JpZ2luYWxMZWZ0KS5yb3VuZCgpICsgJ3B4JywKICAgICAgdG9wOiAgKHRoaXMub3B0aW9ucy55ICAqIHBvc2l0aW9uICsgdGhpcy5vcmlnaW5hbFRvcCkucm91bmQoKSAgKyAncHgnCiAgICB9KTsKICB9Cn0pOwoKLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CkVmZmVjdC5Nb3ZlQnkgPSBmdW5jdGlvbihlbGVtZW50LCB0b1RvcCwgdG9MZWZ0KSB7CiAgcmV0dXJuIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LCAKICAgIE9iamVjdC5leHRlbmQoeyB4OiB0b0xlZnQsIHk6IHRvVG9wIH0sIGFyZ3VtZW50c1szXSB8fCB7IH0pKTsKfTsKCkVmZmVjdC5TY2FsZSA9IENsYXNzLmNyZWF0ZShFZmZlY3QuQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQsIHBlcmNlbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIXRoaXMuZWxlbWVudCkgdGhyb3coRWZmZWN0Ll9lbGVtZW50RG9lc05vdEV4aXN0RXJyb3IpOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgc2NhbGVYOiB0cnVlLAogICAgICBzY2FsZVk6IHRydWUsCiAgICAgIHNjYWxlQ29udGVudDogdHJ1ZSwKICAgICAgc2NhbGVGcm9tQ2VudGVyOiBmYWxzZSwKICAgICAgc2NhbGVNb2RlOiAnYm94JywgICAgICAgIC8vICdib3gnIG9yICdjb250ZW50cycgb3IgeyB9IHdpdGggcHJvdmlkZWQgdmFsdWVzCiAgICAgIHNjYWxlRnJvbTogMTAwLjAsCiAgICAgIHNjYWxlVG86ICAgcGVyY2VudAogICAgfSwgYXJndW1lbnRzWzJdIHx8IHsgfSk7CiAgICB0aGlzLnN0YXJ0KG9wdGlvbnMpOwogIH0sCiAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5yZXN0b3JlQWZ0ZXJGaW5pc2ggPSB0aGlzLm9wdGlvbnMucmVzdG9yZUFmdGVyRmluaXNoIHx8IGZhbHNlOwogICAgdGhpcy5lbGVtZW50UG9zaXRpb25pbmcgPSB0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJyk7CiAgICAKICAgIHRoaXMub3JpZ2luYWxTdHlsZSA9IHsgfTsKICAgIFsndG9wJywnbGVmdCcsJ3dpZHRoJywnaGVpZ2h0JywnZm9udFNpemUnXS5lYWNoKCBmdW5jdGlvbihrKSB7CiAgICAgIHRoaXMub3JpZ2luYWxTdHlsZVtrXSA9IHRoaXMuZWxlbWVudC5zdHlsZVtrXTsKICAgIH0uYmluZCh0aGlzKSk7CiAgICAgIAogICAgdGhpcy5vcmlnaW5hbFRvcCAgPSB0aGlzLmVsZW1lbnQub2Zmc2V0VG9wOwogICAgdGhpcy5vcmlnaW5hbExlZnQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0TGVmdDsKICAgIAogICAgdmFyIGZvbnRTaXplID0gdGhpcy5lbGVtZW50LmdldFN0eWxlKCdmb250LXNpemUnKSB8fCAnMTAwJSc7CiAgICBbJ2VtJywncHgnLCclJywncHQnXS5lYWNoKCBmdW5jdGlvbihmb250U2l6ZVR5cGUpIHsKICAgICAgaWYgKGZvbnRTaXplLmluZGV4T2YoZm9udFNpemVUeXBlKT4wKSB7CiAgICAgICAgdGhpcy5mb250U2l6ZSAgICAgPSBwYXJzZUZsb2F0KGZvbnRTaXplKTsKICAgICAgICB0aGlzLmZvbnRTaXplVHlwZSA9IGZvbnRTaXplVHlwZTsKICAgICAgfQogICAgfS5iaW5kKHRoaXMpKTsKICAgIAogICAgdGhpcy5mYWN0b3IgPSAodGhpcy5vcHRpb25zLnNjYWxlVG8gLSB0aGlzLm9wdGlvbnMuc2NhbGVGcm9tKS8xMDA7CiAgICAKICAgIHRoaXMuZGltcyA9IG51bGw7CiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlTW9kZT09J2JveCcpCiAgICAgIHRoaXMuZGltcyA9IFt0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0LCB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGhdOwogICAgaWYgKC9eY29udGVudC8udGVzdCh0aGlzLm9wdGlvbnMuc2NhbGVNb2RlKSkKICAgICAgdGhpcy5kaW1zID0gW3RoaXMuZWxlbWVudC5zY3JvbGxIZWlnaHQsIHRoaXMuZWxlbWVudC5zY3JvbGxXaWR0aF07CiAgICBpZiAoIXRoaXMuZGltcykKICAgICAgdGhpcy5kaW1zID0gW3RoaXMub3B0aW9ucy5zY2FsZU1vZGUub3JpZ2luYWxIZWlnaHQsCiAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2NhbGVNb2RlLm9yaWdpbmFsV2lkdGhdOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdmFyIGN1cnJlbnRTY2FsZSA9ICh0aGlzLm9wdGlvbnMuc2NhbGVGcm9tLzEwMC4wKSArICh0aGlzLmZhY3RvciAqIHBvc2l0aW9uKTsKICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGVDb250ZW50ICYmIHRoaXMuZm9udFNpemUpCiAgICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7Zm9udFNpemU6IHRoaXMuZm9udFNpemUgKiBjdXJyZW50U2NhbGUgKyB0aGlzLmZvbnRTaXplVHlwZSB9KTsKICAgIHRoaXMuc2V0RGltZW5zaW9ucyh0aGlzLmRpbXNbMF0gKiBjdXJyZW50U2NhbGUsIHRoaXMuZGltc1sxXSAqIGN1cnJlbnRTY2FsZSk7CiAgfSwKICBmaW5pc2g6IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICBpZiAodGhpcy5yZXN0b3JlQWZ0ZXJGaW5pc2gpIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh0aGlzLm9yaWdpbmFsU3R5bGUpOwogIH0sCiAgc2V0RGltZW5zaW9uczogZnVuY3Rpb24oaGVpZ2h0LCB3aWR0aCkgewogICAgdmFyIGQgPSB7IH07CiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlWCkgZC53aWR0aCA9IHdpZHRoLnJvdW5kKCkgKyAncHgnOwogICAgaWYgKHRoaXMub3B0aW9ucy5zY2FsZVkpIGQuaGVpZ2h0ID0gaGVpZ2h0LnJvdW5kKCkgKyAncHgnOwogICAgaWYgKHRoaXMub3B0aW9ucy5zY2FsZUZyb21DZW50ZXIpIHsKICAgICAgdmFyIHRvcGQgID0gKGhlaWdodCAtIHRoaXMuZGltc1swXSkvMjsKICAgICAgdmFyIGxlZnRkID0gKHdpZHRoICAtIHRoaXMuZGltc1sxXSkvMjsKICAgICAgaWYgKHRoaXMuZWxlbWVudFBvc2l0aW9uaW5nID09ICdhYnNvbHV0ZScpIHsKICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlWSkgZC50b3AgPSB0aGlzLm9yaWdpbmFsVG9wLXRvcGQgKyAncHgnOwogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGVYKSBkLmxlZnQgPSB0aGlzLm9yaWdpbmFsTGVmdC1sZWZ0ZCArICdweCc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zY2FsZVkpIGQudG9wID0gLXRvcGQgKyAncHgnOwogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGVYKSBkLmxlZnQgPSAtbGVmdGQgKyAncHgnOwogICAgICB9CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuc2V0U3R5bGUoZCk7CiAgfQp9KTsKCkVmZmVjdC5IaWdobGlnaHQgPSBDbGFzcy5jcmVhdGUoRWZmZWN0LkJhc2UsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCF0aGlzLmVsZW1lbnQpIHRocm93KEVmZmVjdC5fZWxlbWVudERvZXNOb3RFeGlzdEVycm9yKTsKICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7IHN0YXJ0Y29sb3I6ICcjZmZmZjk5JyB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KTsKICAgIHRoaXMuc3RhcnQob3B0aW9ucyk7CiAgfSwKICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAvLyBQcmV2ZW50IGV4ZWN1dGluZyBvbiBlbGVtZW50cyBub3QgaW4gdGhlIGxheW91dCBmbG93CiAgICBpZiAodGhpcy5lbGVtZW50LmdldFN0eWxlKCdkaXNwbGF5Jyk9PSdub25lJykgeyB0aGlzLmNhbmNlbCgpOyByZXR1cm47IH0KICAgIC8vIERpc2FibGUgYmFja2dyb3VuZCBpbWFnZSBkdXJpbmcgdGhlIGVmZmVjdAogICAgdGhpcy5vbGRTdHlsZSA9IHsgfTsKICAgIGlmICghdGhpcy5vcHRpb25zLmtlZXBCYWNrZ3JvdW5kSW1hZ2UpIHsKICAgICAgdGhpcy5vbGRTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSB0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoJ2JhY2tncm91bmQtaW1hZ2UnKTsKICAgICAgdGhpcy5lbGVtZW50LnNldFN0eWxlKHtiYWNrZ3JvdW5kSW1hZ2U6ICdub25lJ30pOwogICAgfQogICAgaWYgKCF0aGlzLm9wdGlvbnMuZW5kY29sb3IpCiAgICAgIHRoaXMub3B0aW9ucy5lbmRjb2xvciA9IHRoaXMuZWxlbWVudC5nZXRTdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpLnBhcnNlQ29sb3IoJyNmZmZmZmYnKTsKICAgIGlmICghdGhpcy5vcHRpb25zLnJlc3RvcmVjb2xvcikKICAgICAgdGhpcy5vcHRpb25zLnJlc3RvcmVjb2xvciA9IHRoaXMuZWxlbWVudC5nZXRTdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpOwogICAgLy8gaW5pdCBjb2xvciBjYWxjdWxhdGlvbnMKICAgIHRoaXMuX2Jhc2UgID0gJFIoMCwyKS5tYXAoZnVuY3Rpb24oaSl7IHJldHVybiBwYXJzZUludCh0aGlzLm9wdGlvbnMuc3RhcnRjb2xvci5zbGljZShpKjIrMSxpKjIrMyksMTYpIH0uYmluZCh0aGlzKSk7CiAgICB0aGlzLl9kZWx0YSA9ICRSKDAsMikubWFwKGZ1bmN0aW9uKGkpeyByZXR1cm4gcGFyc2VJbnQodGhpcy5vcHRpb25zLmVuZGNvbG9yLnNsaWNlKGkqMisxLGkqMiszKSwxNiktdGhpcy5fYmFzZVtpXSB9LmJpbmQodGhpcykpOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lbGVtZW50LnNldFN0eWxlKHtiYWNrZ3JvdW5kQ29sb3I6ICRSKDAsMikuaW5qZWN0KCcjJyxmdW5jdGlvbihtLHYsaSl7CiAgICAgIHJldHVybiBtKygodGhpcy5fYmFzZVtpXSsodGhpcy5fZGVsdGFbaV0qcG9zaXRpb24pKS5yb3VuZCgpLnRvQ29sb3JQYXJ0KCkpOyB9LmJpbmQodGhpcykpIH0pOwogIH0sCiAgZmluaXNoOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZShPYmplY3QuZXh0ZW5kKHRoaXMub2xkU3R5bGUsIHsKICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm9wdGlvbnMucmVzdG9yZWNvbG9yCiAgICB9KSk7CiAgfQp9KTsKCkVmZmVjdC5TY3JvbGxUbyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50c1sxXSB8fCB7IH0sCiAgICBzY3JvbGxPZmZzZXRzID0gZG9jdW1lbnQudmlld3BvcnQuZ2V0U2Nyb2xsT2Zmc2V0cygpLAogICAgZWxlbWVudE9mZnNldHMgPSAkKGVsZW1lbnQpLmN1bXVsYXRpdmVPZmZzZXQoKSwKICAgIG1heCA9ICh3aW5kb3cuaGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KSAtIGRvY3VtZW50LnZpZXdwb3J0LmdldEhlaWdodCgpOyAgCgogIGlmIChvcHRpb25zLm9mZnNldCkgZWxlbWVudE9mZnNldHNbMV0gKz0gb3B0aW9ucy5vZmZzZXQ7CgogIHJldHVybiBuZXcgRWZmZWN0LlR3ZWVuKG51bGwsCiAgICBzY3JvbGxPZmZzZXRzLnRvcCwKICAgIGVsZW1lbnRPZmZzZXRzWzFdID4gbWF4ID8gbWF4IDogZWxlbWVudE9mZnNldHNbMV0sCiAgICBvcHRpb25zLAogICAgZnVuY3Rpb24ocCl7IHNjcm9sbFRvKHNjcm9sbE9mZnNldHMubGVmdCwgcC5yb3VuZCgpKSB9CiAgKTsKfTsKCi8qIC0tLS0tLS0tLS0tLS0gY29tYmluYXRpb24gZWZmZWN0cyAtLS0tLS0tLS0tLS0tICovCgpFZmZlY3QuRmFkZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb2xkT3BhY2l0eSA9IGVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSgpOwogIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICBmcm9tOiBlbGVtZW50LmdldE9wYWNpdHkoKSB8fCAxLjAsCiAgICB0bzogICAwLjAsCiAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsgCiAgICAgIGlmIChlZmZlY3Qub3B0aW9ucy50byE9MCkgcmV0dXJuOwogICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkuc2V0U3R5bGUoe29wYWNpdHk6IG9sZE9wYWNpdHl9KTsgCiAgICB9CiAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgcmV0dXJuIG5ldyBFZmZlY3QuT3BhY2l0eShlbGVtZW50LG9wdGlvbnMpOwp9OwoKRWZmZWN0LkFwcGVhciA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb3B0aW9ucyA9IE9iamVjdC5leHRlbmQoewogIGZyb206IChlbGVtZW50LmdldFN0eWxlKCdkaXNwbGF5JykgPT0gJ25vbmUnID8gMC4wIDogZWxlbWVudC5nZXRPcGFjaXR5KCkgfHwgMC4wKSwKICB0bzogICAxLjAsCiAgLy8gZm9yY2UgU2FmYXJpIHRvIHJlbmRlciBmbG9hdGVkIGVsZW1lbnRzIHByb3Blcmx5CiAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICBlZmZlY3QuZWxlbWVudC5mb3JjZVJlcmVuZGVyaW5nKCk7CiAgfSwKICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICBlZmZlY3QuZWxlbWVudC5zZXRPcGFjaXR5KGVmZmVjdC5vcHRpb25zLmZyb20pLnNob3coKTsgCiAgfX0sIGFyZ3VtZW50c1sxXSB8fCB7IH0pOwogIHJldHVybiBuZXcgRWZmZWN0Lk9wYWNpdHkoZWxlbWVudCxvcHRpb25zKTsKfTsKCkVmZmVjdC5QdWZmID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvbGRTdHlsZSA9IHsgCiAgICBvcGFjaXR5OiBlbGVtZW50LmdldElubGluZU9wYWNpdHkoKSwgCiAgICBwb3NpdGlvbjogZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKSwKICAgIHRvcDogIGVsZW1lbnQuc3R5bGUudG9wLAogICAgbGVmdDogZWxlbWVudC5zdHlsZS5sZWZ0LAogICAgd2lkdGg6IGVsZW1lbnQuc3R5bGUud2lkdGgsCiAgICBoZWlnaHQ6IGVsZW1lbnQuc3R5bGUuaGVpZ2h0CiAgfTsKICByZXR1cm4gbmV3IEVmZmVjdC5QYXJhbGxlbCgKICAgWyBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIDIwMCwgCiAgICAgIHsgc3luYzogdHJ1ZSwgc2NhbGVGcm9tQ2VudGVyOiB0cnVlLCBzY2FsZUNvbnRlbnQ6IHRydWUsIHJlc3RvcmVBZnRlckZpbmlzaDogdHJ1ZSB9KSwgCiAgICAgbmV3IEVmZmVjdC5PcGFjaXR5KGVsZW1lbnQsIHsgc3luYzogdHJ1ZSwgdG86IDAuMCB9ICkgXSwgCiAgICAgT2JqZWN0LmV4dGVuZCh7IGR1cmF0aW9uOiAxLjAsIAogICAgICBiZWZvcmVTZXR1cEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICBQb3NpdGlvbi5hYnNvbHV0aXplKGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQpCiAgICAgIH0sCiAgICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50LmhpZGUoKS5zZXRTdHlsZShvbGRTdHlsZSk7IH0KICAgICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KQogICApOwp9OwoKRWZmZWN0LkJsaW5kVXAgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgZWxlbWVudC5tYWtlQ2xpcHBpbmcoKTsKICByZXR1cm4gbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCAwLAogICAgT2JqZWN0LmV4dGVuZCh7IHNjYWxlQ29udGVudDogZmFsc2UsIAogICAgICBzY2FsZVg6IGZhbHNlLCAKICAgICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkudW5kb0NsaXBwaW5nKCk7CiAgICAgIH0gCiAgICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KQogICk7Cn07CgpFZmZlY3QuQmxpbmREb3duID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBlbGVtZW50RGltZW5zaW9ucyA9IGVsZW1lbnQuZ2V0RGltZW5zaW9ucygpOwogIHJldHVybiBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIDEwMCwgT2JqZWN0LmV4dGVuZCh7IAogICAgc2NhbGVDb250ZW50OiBmYWxzZSwgCiAgICBzY2FsZVg6IGZhbHNlLAogICAgc2NhbGVGcm9tOiAwLAogICAgc2NhbGVNb2RlOiB7b3JpZ2luYWxIZWlnaHQ6IGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgb3JpZ2luYWxXaWR0aDogZWxlbWVudERpbWVuc2lvbnMud2lkdGh9LAogICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgYWZ0ZXJTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50Lm1ha2VDbGlwcGluZygpLnNldFN0eWxlKHtoZWlnaHQ6ICcwcHgnfSkuc2hvdygpOyAKICAgIH0sICAKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC51bmRvQ2xpcHBpbmcoKTsKICAgIH0KICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KSk7Cn07CgpFZmZlY3QuU3dpdGNoT2ZmID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvbGRPcGFjaXR5ID0gZWxlbWVudC5nZXRJbmxpbmVPcGFjaXR5KCk7CiAgcmV0dXJuIG5ldyBFZmZlY3QuQXBwZWFyKGVsZW1lbnQsIE9iamVjdC5leHRlbmQoewogICAgZHVyYXRpb246IDAuNCwKICAgIGZyb206IDAsCiAgICB0cmFuc2l0aW9uOiBFZmZlY3QuVHJhbnNpdGlvbnMuZmxpY2tlciwKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBuZXcgRWZmZWN0LlNjYWxlKGVmZmVjdC5lbGVtZW50LCAxLCB7IAogICAgICAgIGR1cmF0aW9uOiAwLjMsIHNjYWxlRnJvbUNlbnRlcjogdHJ1ZSwKICAgICAgICBzY2FsZVg6IGZhbHNlLCBzY2FsZUNvbnRlbnQ6IGZhbHNlLCByZXN0b3JlQWZ0ZXJGaW5pc2g6IHRydWUsCiAgICAgICAgYmVmb3JlU2V0dXA6IGZ1bmN0aW9uKGVmZmVjdCkgeyAKICAgICAgICAgIGVmZmVjdC5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCkubWFrZUNsaXBwaW5nKCk7CiAgICAgICAgfSwKICAgICAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICAgIGVmZmVjdC5lbGVtZW50LmhpZGUoKS51bmRvQ2xpcHBpbmcoKS51bmRvUG9zaXRpb25lZCgpLnNldFN0eWxlKHtvcGFjaXR5OiBvbGRPcGFjaXR5fSk7CiAgICAgICAgfQogICAgICB9KQogICAgfQogIH0sIGFyZ3VtZW50c1sxXSB8fCB7IH0pKTsKfTsKCkVmZmVjdC5Ecm9wT3V0ID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvbGRTdHlsZSA9IHsKICAgIHRvcDogZWxlbWVudC5nZXRTdHlsZSgndG9wJyksCiAgICBsZWZ0OiBlbGVtZW50LmdldFN0eWxlKCdsZWZ0JyksCiAgICBvcGFjaXR5OiBlbGVtZW50LmdldElubGluZU9wYWNpdHkoKSB9OwogIHJldHVybiBuZXcgRWZmZWN0LlBhcmFsbGVsKAogICAgWyBuZXcgRWZmZWN0Lk1vdmUoZWxlbWVudCwge3g6IDAsIHk6IDEwMCwgc3luYzogdHJ1ZSB9KSwgCiAgICAgIG5ldyBFZmZlY3QuT3BhY2l0eShlbGVtZW50LCB7IHN5bmM6IHRydWUsIHRvOiAwLjAgfSkgXSwKICAgIE9iamVjdC5leHRlbmQoCiAgICAgIHsgZHVyYXRpb246IDAuNSwKICAgICAgICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCk7IAogICAgICAgIH0sCiAgICAgICAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50LmhpZGUoKS51bmRvUG9zaXRpb25lZCgpLnNldFN0eWxlKG9sZFN0eWxlKTsKICAgICAgICB9IAogICAgICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KSk7Cn07CgpFZmZlY3QuU2hha2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgIGRpc3RhbmNlOiAyMCwKICAgIGR1cmF0aW9uOiAwLjUKICB9LCBhcmd1bWVudHNbMV0gfHwge30pOwogIHZhciBkaXN0YW5jZSA9IHBhcnNlRmxvYXQob3B0aW9ucy5kaXN0YW5jZSk7CiAgdmFyIHNwbGl0ID0gcGFyc2VGbG9hdChvcHRpb25zLmR1cmF0aW9uKSAvIDEwLjA7CiAgdmFyIG9sZFN0eWxlID0gewogICAgdG9wOiBlbGVtZW50LmdldFN0eWxlKCd0b3AnKSwKICAgIGxlZnQ6IGVsZW1lbnQuZ2V0U3R5bGUoJ2xlZnQnKSB9OwogICAgcmV0dXJuIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LAogICAgICB7IHg6ICBkaXN0YW5jZSwgeTogMCwgZHVyYXRpb246IHNwbGl0LCBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAtZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAgZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAtZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAgZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAtZGlzdGFuY2UsIHk6IDAsIGR1cmF0aW9uOiBzcGxpdCwgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgZWZmZWN0LmVsZW1lbnQudW5kb1Bvc2l0aW9uZWQoKS5zZXRTdHlsZShvbGRTdHlsZSk7CiAgfX0pIH19KSB9fSkgfX0pIH19KSB9fSk7Cn07CgpFZmZlY3QuU2xpZGVEb3duID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpLmNsZWFuV2hpdGVzcGFjZSgpOwogIC8vIFNsaWRlRG93biBuZWVkIHRvIGhhdmUgdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd3JhcHBlZCBpbiBhIGNvbnRhaW5lciBlbGVtZW50IHdpdGggZml4ZWQgaGVpZ2h0IQogIHZhciBvbGRJbm5lckJvdHRvbSA9IGVsZW1lbnQuZG93bigpLmdldFN0eWxlKCdib3R0b20nKTsKICB2YXIgZWxlbWVudERpbWVuc2lvbnMgPSBlbGVtZW50LmdldERpbWVuc2lvbnMoKTsKICByZXR1cm4gbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCAxMDAsIE9iamVjdC5leHRlbmQoeyAKICAgIHNjYWxlQ29udGVudDogZmFsc2UsIAogICAgc2NhbGVYOiBmYWxzZSwgCiAgICBzY2FsZUZyb206IHdpbmRvdy5vcGVyYSA/IDAgOiAxLAogICAgc2NhbGVNb2RlOiB7b3JpZ2luYWxIZWlnaHQ6IGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgb3JpZ2luYWxXaWR0aDogZWxlbWVudERpbWVuc2lvbnMud2lkdGh9LAogICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgYWZ0ZXJTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCk7CiAgICAgIGVmZmVjdC5lbGVtZW50LmRvd24oKS5tYWtlUG9zaXRpb25lZCgpOwogICAgICBpZiAod2luZG93Lm9wZXJhKSBlZmZlY3QuZWxlbWVudC5zZXRTdHlsZSh7dG9wOiAnJ30pOwogICAgICBlZmZlY3QuZWxlbWVudC5tYWtlQ2xpcHBpbmcoKS5zZXRTdHlsZSh7aGVpZ2h0OiAnMHB4J30pLnNob3coKTsgCiAgICB9LAogICAgYWZ0ZXJVcGRhdGVJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50LmRvd24oKS5zZXRTdHlsZSh7Ym90dG9tOgogICAgICAgIChlZmZlY3QuZGltc1swXSAtIGVmZmVjdC5lbGVtZW50LmNsaWVudEhlaWdodCkgKyAncHgnIH0pOyAKICAgIH0sCiAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgZWZmZWN0LmVsZW1lbnQudW5kb0NsaXBwaW5nKCkudW5kb1Bvc2l0aW9uZWQoKTsKICAgICAgZWZmZWN0LmVsZW1lbnQuZG93bigpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUoe2JvdHRvbTogb2xkSW5uZXJCb3R0b219KTsgfQogICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSkKICApOwp9OwoKRWZmZWN0LlNsaWRlVXAgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCkuY2xlYW5XaGl0ZXNwYWNlKCk7CiAgdmFyIG9sZElubmVyQm90dG9tID0gZWxlbWVudC5kb3duKCkuZ2V0U3R5bGUoJ2JvdHRvbScpOwogIHZhciBlbGVtZW50RGltZW5zaW9ucyA9IGVsZW1lbnQuZ2V0RGltZW5zaW9ucygpOwogIHJldHVybiBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIHdpbmRvdy5vcGVyYSA/IDAgOiAxLAogICBPYmplY3QuZXh0ZW5kKHsgc2NhbGVDb250ZW50OiBmYWxzZSwgCiAgICBzY2FsZVg6IGZhbHNlLCAKICAgIHNjYWxlTW9kZTogJ2JveCcsCiAgICBzY2FsZUZyb206IDEwMCwKICAgIHNjYWxlTW9kZToge29yaWdpbmFsSGVpZ2h0OiBlbGVtZW50RGltZW5zaW9ucy5oZWlnaHQsIG9yaWdpbmFsV2lkdGg6IGVsZW1lbnREaW1lbnNpb25zLndpZHRofSwKICAgIHJlc3RvcmVBZnRlckZpbmlzaDogdHJ1ZSwKICAgIGFmdGVyU2V0dXA6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC5tYWtlUG9zaXRpb25lZCgpOwogICAgICBlZmZlY3QuZWxlbWVudC5kb3duKCkubWFrZVBvc2l0aW9uZWQoKTsKICAgICAgaWYgKHdpbmRvdy5vcGVyYSkgZWZmZWN0LmVsZW1lbnQuc2V0U3R5bGUoe3RvcDogJyd9KTsKICAgICAgZWZmZWN0LmVsZW1lbnQubWFrZUNsaXBwaW5nKCkuc2hvdygpOwogICAgfSwgIAogICAgYWZ0ZXJVcGRhdGVJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50LmRvd24oKS5zZXRTdHlsZSh7Ym90dG9tOgogICAgICAgIChlZmZlY3QuZGltc1swXSAtIGVmZmVjdC5lbGVtZW50LmNsaWVudEhlaWdodCkgKyAncHgnIH0pOwogICAgfSwKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkudW5kb0NsaXBwaW5nKCkudW5kb1Bvc2l0aW9uZWQoKTsKICAgICAgZWZmZWN0LmVsZW1lbnQuZG93bigpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUoe2JvdHRvbTogb2xkSW5uZXJCb3R0b219KTsKICAgIH0KICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSkKICApOwp9OwoKLy8gQnVnIGluIG9wZXJhIG1ha2VzIHRoZSBURCBjb250YWluaW5nIHRoaXMgZWxlbWVudCBleHBhbmQgZm9yIGEgaW5zdGFuY2UgYWZ0ZXIgZmluaXNoIApFZmZlY3QuU3F1aXNoID0gZnVuY3Rpb24oZWxlbWVudCkgewogIHJldHVybiBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIHdpbmRvdy5vcGVyYSA/IDEgOiAwLCB7IAogICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgYmVmb3JlU2V0dXA6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC5tYWtlQ2xpcHBpbmcoKTsgCiAgICB9LCAgCiAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgZWZmZWN0LmVsZW1lbnQuaGlkZSgpLnVuZG9DbGlwcGluZygpOyAKICAgIH0KICB9KTsKfTsKCkVmZmVjdC5Hcm93ID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICBkaXJlY3Rpb246ICdjZW50ZXInLAogICAgbW92ZVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5zaW5vaWRhbCwKICAgIHNjYWxlVHJhbnNpdGlvbjogRWZmZWN0LlRyYW5zaXRpb25zLnNpbm9pZGFsLAogICAgb3BhY2l0eVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5mdWxsCiAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgdmFyIG9sZFN0eWxlID0gewogICAgdG9wOiBlbGVtZW50LnN0eWxlLnRvcCwKICAgIGxlZnQ6IGVsZW1lbnQuc3R5bGUubGVmdCwKICAgIGhlaWdodDogZWxlbWVudC5zdHlsZS5oZWlnaHQsCiAgICB3aWR0aDogZWxlbWVudC5zdHlsZS53aWR0aCwKICAgIG9wYWNpdHk6IGVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSgpIH07CgogIHZhciBkaW1zID0gZWxlbWVudC5nZXREaW1lbnNpb25zKCk7ICAgIAogIHZhciBpbml0aWFsTW92ZVgsIGluaXRpYWxNb3ZlWTsKICB2YXIgbW92ZVgsIG1vdmVZOwogIAogIHN3aXRjaCAob3B0aW9ucy5kaXJlY3Rpb24pIHsKICAgIGNhc2UgJ3RvcC1sZWZ0JzoKICAgICAgaW5pdGlhbE1vdmVYID0gaW5pdGlhbE1vdmVZID0gbW92ZVggPSBtb3ZlWSA9IDA7IAogICAgICBicmVhazsKICAgIGNhc2UgJ3RvcC1yaWdodCc6CiAgICAgIGluaXRpYWxNb3ZlWCA9IGRpbXMud2lkdGg7CiAgICAgIGluaXRpYWxNb3ZlWSA9IG1vdmVZID0gMDsKICAgICAgbW92ZVggPSAtZGltcy53aWR0aDsKICAgICAgYnJlYWs7CiAgICBjYXNlICdib3R0b20tbGVmdCc6CiAgICAgIGluaXRpYWxNb3ZlWCA9IG1vdmVYID0gMDsKICAgICAgaW5pdGlhbE1vdmVZID0gZGltcy5oZWlnaHQ7CiAgICAgIG1vdmVZID0gLWRpbXMuaGVpZ2h0OwogICAgICBicmVhazsKICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6CiAgICAgIGluaXRpYWxNb3ZlWCA9IGRpbXMud2lkdGg7CiAgICAgIGluaXRpYWxNb3ZlWSA9IGRpbXMuaGVpZ2h0OwogICAgICBtb3ZlWCA9IC1kaW1zLndpZHRoOwogICAgICBtb3ZlWSA9IC1kaW1zLmhlaWdodDsKICAgICAgYnJlYWs7CiAgICBjYXNlICdjZW50ZXInOgogICAgICBpbml0aWFsTW92ZVggPSBkaW1zLndpZHRoIC8gMjsKICAgICAgaW5pdGlhbE1vdmVZID0gZGltcy5oZWlnaHQgLyAyOwogICAgICBtb3ZlWCA9IC1kaW1zLndpZHRoIC8gMjsKICAgICAgbW92ZVkgPSAtZGltcy5oZWlnaHQgLyAyOwogICAgICBicmVhazsKICB9CiAgCiAgcmV0dXJuIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LCB7CiAgICB4OiBpbml0aWFsTW92ZVgsCiAgICB5OiBpbml0aWFsTW92ZVksCiAgICBkdXJhdGlvbjogMC4wMSwgCiAgICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50LmhpZGUoKS5tYWtlQ2xpcHBpbmcoKS5tYWtlUG9zaXRpb25lZCgpOwogICAgfSwKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBuZXcgRWZmZWN0LlBhcmFsbGVsKAogICAgICAgIFsgbmV3IEVmZmVjdC5PcGFjaXR5KGVmZmVjdC5lbGVtZW50LCB7IHN5bmM6IHRydWUsIHRvOiAxLjAsIGZyb206IDAuMCwgdHJhbnNpdGlvbjogb3B0aW9ucy5vcGFjaXR5VHJhbnNpdGlvbiB9KSwKICAgICAgICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwgeyB4OiBtb3ZlWCwgeTogbW92ZVksIHN5bmM6IHRydWUsIHRyYW5zaXRpb246IG9wdGlvbnMubW92ZVRyYW5zaXRpb24gfSksCiAgICAgICAgICBuZXcgRWZmZWN0LlNjYWxlKGVmZmVjdC5lbGVtZW50LCAxMDAsIHsKICAgICAgICAgICAgc2NhbGVNb2RlOiB7IG9yaWdpbmFsSGVpZ2h0OiBkaW1zLmhlaWdodCwgb3JpZ2luYWxXaWR0aDogZGltcy53aWR0aCB9LCAKICAgICAgICAgICAgc3luYzogdHJ1ZSwgc2NhbGVGcm9tOiB3aW5kb3cub3BlcmEgPyAxIDogMCwgdHJhbnNpdGlvbjogb3B0aW9ucy5zY2FsZVRyYW5zaXRpb24sIHJlc3RvcmVBZnRlckZpbmlzaDogdHJ1ZX0pCiAgICAgICAgXSwgT2JqZWN0LmV4dGVuZCh7CiAgICAgICAgICAgICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgICAgICAgIGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQuc2V0U3R5bGUoe2hlaWdodDogJzBweCd9KS5zaG93KCk7IAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50LnVuZG9DbGlwcGluZygpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUob2xkU3R5bGUpOyAKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LCBvcHRpb25zKQogICAgICApCiAgICB9CiAgfSk7Cn07CgpFZmZlY3QuU2hyaW5rID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICBkaXJlY3Rpb246ICdjZW50ZXInLAogICAgbW92ZVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5zaW5vaWRhbCwKICAgIHNjYWxlVHJhbnNpdGlvbjogRWZmZWN0LlRyYW5zaXRpb25zLnNpbm9pZGFsLAogICAgb3BhY2l0eVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5ub25lCiAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgdmFyIG9sZFN0eWxlID0gewogICAgdG9wOiBlbGVtZW50LnN0eWxlLnRvcCwKICAgIGxlZnQ6IGVsZW1lbnQuc3R5bGUubGVmdCwKICAgIGhlaWdodDogZWxlbWVudC5zdHlsZS5oZWlnaHQsCiAgICB3aWR0aDogZWxlbWVudC5zdHlsZS53aWR0aCwKICAgIG9wYWNpdHk6IGVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSgpIH07CgogIHZhciBkaW1zID0gZWxlbWVudC5nZXREaW1lbnNpb25zKCk7CiAgdmFyIG1vdmVYLCBtb3ZlWTsKICAKICBzd2l0Y2ggKG9wdGlvbnMuZGlyZWN0aW9uKSB7CiAgICBjYXNlICd0b3AtbGVmdCc6CiAgICAgIG1vdmVYID0gbW92ZVkgPSAwOwogICAgICBicmVhazsKICAgIGNhc2UgJ3RvcC1yaWdodCc6CiAgICAgIG1vdmVYID0gZGltcy53aWR0aDsKICAgICAgbW92ZVkgPSAwOwogICAgICBicmVhazsKICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzoKICAgICAgbW92ZVggPSAwOwogICAgICBtb3ZlWSA9IGRpbXMuaGVpZ2h0OwogICAgICBicmVhazsKICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6CiAgICAgIG1vdmVYID0gZGltcy53aWR0aDsKICAgICAgbW92ZVkgPSBkaW1zLmhlaWdodDsKICAgICAgYnJlYWs7CiAgICBjYXNlICdjZW50ZXInOiAgCiAgICAgIG1vdmVYID0gZGltcy53aWR0aCAvIDI7CiAgICAgIG1vdmVZID0gZGltcy5oZWlnaHQgLyAyOwogICAgICBicmVhazsKICB9CiAgCiAgcmV0dXJuIG5ldyBFZmZlY3QuUGFyYWxsZWwoCiAgICBbIG5ldyBFZmZlY3QuT3BhY2l0eShlbGVtZW50LCB7IHN5bmM6IHRydWUsIHRvOiAwLjAsIGZyb206IDEuMCwgdHJhbnNpdGlvbjogb3B0aW9ucy5vcGFjaXR5VHJhbnNpdGlvbiB9KSwKICAgICAgbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCB3aW5kb3cub3BlcmEgPyAxIDogMCwgeyBzeW5jOiB0cnVlLCB0cmFuc2l0aW9uOiBvcHRpb25zLnNjYWxlVHJhbnNpdGlvbiwgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlfSksCiAgICAgIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LCB7IHg6IG1vdmVYLCB5OiBtb3ZlWSwgc3luYzogdHJ1ZSwgdHJhbnNpdGlvbjogb3B0aW9ucy5tb3ZlVHJhbnNpdGlvbiB9KQogICAgXSwgT2JqZWN0LmV4dGVuZCh7ICAgICAgICAgICAgCiAgICAgICAgIGJlZm9yZVN0YXJ0SW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgIGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQubWFrZVBvc2l0aW9uZWQoKS5tYWtlQ2xpcHBpbmcoKTsgCiAgICAgICAgIH0sCiAgICAgICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgIGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQuaGlkZSgpLnVuZG9DbGlwcGluZygpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUob2xkU3R5bGUpOyB9CiAgICAgICB9LCBvcHRpb25zKQogICk7Cn07CgpFZmZlY3QuUHVsc2F0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb3B0aW9ucyAgICA9IGFyZ3VtZW50c1sxXSB8fCB7IH07CiAgdmFyIG9sZE9wYWNpdHkgPSBlbGVtZW50LmdldElubGluZU9wYWNpdHkoKTsKICB2YXIgdHJhbnNpdGlvbiA9IG9wdGlvbnMudHJhbnNpdGlvbiB8fCBFZmZlY3QuVHJhbnNpdGlvbnMuc2lub2lkYWw7CiAgdmFyIHJldmVyc2VyICAgPSBmdW5jdGlvbihwb3MpeyByZXR1cm4gdHJhbnNpdGlvbigxLUVmZmVjdC5UcmFuc2l0aW9ucy5wdWxzZShwb3MsIG9wdGlvbnMucHVsc2VzKSkgfTsKICByZXZlcnNlci5iaW5kKHRyYW5zaXRpb24pOwogIHJldHVybiBuZXcgRWZmZWN0Lk9wYWNpdHkoZWxlbWVudCwgCiAgICBPYmplY3QuZXh0ZW5kKE9iamVjdC5leHRlbmQoeyAgZHVyYXRpb246IDIuMCwgZnJvbTogMCwKICAgICAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7IGVmZmVjdC5lbGVtZW50LnNldFN0eWxlKHtvcGFjaXR5OiBvbGRPcGFjaXR5fSk7IH0KICAgIH0sIG9wdGlvbnMpLCB7dHJhbnNpdGlvbjogcmV2ZXJzZXJ9KSk7Cn07CgpFZmZlY3QuRm9sZCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb2xkU3R5bGUgPSB7CiAgICB0b3A6IGVsZW1lbnQuc3R5bGUudG9wLAogICAgbGVmdDogZWxlbWVudC5zdHlsZS5sZWZ0LAogICAgd2lkdGg6IGVsZW1lbnQuc3R5bGUud2lkdGgsCiAgICBoZWlnaHQ6IGVsZW1lbnQuc3R5bGUuaGVpZ2h0IH07CiAgZWxlbWVudC5tYWtlQ2xpcHBpbmcoKTsKICByZXR1cm4gbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCA1LCBPYmplY3QuZXh0ZW5kKHsgICAKICAgIHNjYWxlQ29udGVudDogZmFsc2UsCiAgICBzY2FsZVg6IGZhbHNlLAogICAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIDEsIHsgCiAgICAgIHNjYWxlQ29udGVudDogZmFsc2UsIAogICAgICBzY2FsZVk6IGZhbHNlLAogICAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkudW5kb0NsaXBwaW5nKCkuc2V0U3R5bGUob2xkU3R5bGUpOwogICAgICB9IH0pOwogIH19LCBhcmd1bWVudHNbMV0gfHwgeyB9KSk7Cn07CgpFZmZlY3QuTW9ycGggPSBDbGFzcy5jcmVhdGUoRWZmZWN0LkJhc2UsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCF0aGlzLmVsZW1lbnQpIHRocm93KEVmZmVjdC5fZWxlbWVudERvZXNOb3RFeGlzdEVycm9yKTsKICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICAgIHN0eWxlOiB7IH0KICAgIH0sIGFyZ3VtZW50c1sxXSB8fCB7IH0pOwogICAgCiAgICBpZiAoIU9iamVjdC5pc1N0cmluZyhvcHRpb25zLnN0eWxlKSkgdGhpcy5zdHlsZSA9ICRIKG9wdGlvbnMuc3R5bGUpOwogICAgZWxzZSB7CiAgICAgIGlmIChvcHRpb25zLnN0eWxlLmluY2x1ZGUoJzonKSkKICAgICAgICB0aGlzLnN0eWxlID0gb3B0aW9ucy5zdHlsZS5wYXJzZVN0eWxlKCk7CiAgICAgIGVsc2UgewogICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzc05hbWUob3B0aW9ucy5zdHlsZSk7CiAgICAgICAgdGhpcy5zdHlsZSA9ICRIKHRoaXMuZWxlbWVudC5nZXRTdHlsZXMoKSk7CiAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzTmFtZShvcHRpb25zLnN0eWxlKTsKICAgICAgICB2YXIgY3NzID0gdGhpcy5lbGVtZW50LmdldFN0eWxlcygpOwogICAgICAgIHRoaXMuc3R5bGUgPSB0aGlzLnN0eWxlLnJlamVjdChmdW5jdGlvbihzdHlsZSkgewogICAgICAgICAgcmV0dXJuIHN0eWxlLnZhbHVlID09IGNzc1tzdHlsZS5rZXldOwogICAgICAgIH0pOwogICAgICAgIG9wdGlvbnMuYWZ0ZXJGaW5pc2hJbnRlcm5hbCA9IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgZWZmZWN0LmVsZW1lbnQuYWRkQ2xhc3NOYW1lKGVmZmVjdC5vcHRpb25zLnN0eWxlKTsKICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1zLmVhY2goZnVuY3Rpb24odHJhbnNmb3JtKSB7CiAgICAgICAgICAgIGVmZmVjdC5lbGVtZW50LnN0eWxlW3RyYW5zZm9ybS5zdHlsZV0gPSAnJzsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgdGhpcy5zdGFydChvcHRpb25zKTsKICB9LAogIAogIHNldHVwOiBmdW5jdGlvbigpewogICAgZnVuY3Rpb24gcGFyc2VDb2xvcihjb2xvcil7CiAgICAgIGlmICghY29sb3IgfHwgWydyZ2JhKDAsIDAsIDAsIDApJywndHJhbnNwYXJlbnQnXS5pbmNsdWRlKGNvbG9yKSkgY29sb3IgPSAnI2ZmZmZmZic7CiAgICAgIGNvbG9yID0gY29sb3IucGFyc2VDb2xvcigpOwogICAgICByZXR1cm4gJFIoMCwyKS5tYXAoZnVuY3Rpb24oaSl7CiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCBjb2xvci5zbGljZShpKjIrMSxpKjIrMyksIDE2ICkgCiAgICAgIH0pOwogICAgfQogICAgdGhpcy50cmFuc2Zvcm1zID0gdGhpcy5zdHlsZS5tYXAoZnVuY3Rpb24ocGFpcil7CiAgICAgIHZhciBwcm9wZXJ0eSA9IHBhaXJbMF0sIHZhbHVlID0gcGFpclsxXSwgdW5pdCA9IG51bGw7CgogICAgICBpZiAodmFsdWUucGFyc2VDb2xvcignI3p6enp6eicpICE9ICcjenp6enp6JykgewogICAgICAgIHZhbHVlID0gdmFsdWUucGFyc2VDb2xvcigpOwogICAgICAgIHVuaXQgID0gJ2NvbG9yJzsKICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAnb3BhY2l0eScpIHsKICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpOwogICAgICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSAmJiAoIXRoaXMuZWxlbWVudC5jdXJyZW50U3R5bGUuaGFzTGF5b3V0KSkKICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7em9vbTogMX0pOwogICAgICB9IGVsc2UgaWYgKEVsZW1lbnQuQ1NTX0xFTkdUSC50ZXN0KHZhbHVlKSkgewogICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB2YWx1ZS5tYXRjaCgvXihbXCtcLV0/WzAtOVwuXSspKC4qKSQvKTsKICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdChjb21wb25lbnRzWzFdKTsKICAgICAgICAgIHVuaXQgPSAoY29tcG9uZW50cy5sZW5ndGggPT0gMykgPyBjb21wb25lbnRzWzJdIDogbnVsbDsKICAgICAgfQoKICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSB0aGlzLmVsZW1lbnQuZ2V0U3R5bGUocHJvcGVydHkpOwogICAgICByZXR1cm4geyAKICAgICAgICBzdHlsZTogcHJvcGVydHkuY2FtZWxpemUoKSwgCiAgICAgICAgb3JpZ2luYWxWYWx1ZTogdW5pdD09J2NvbG9yJyA/IHBhcnNlQ29sb3Iob3JpZ2luYWxWYWx1ZSkgOiBwYXJzZUZsb2F0KG9yaWdpbmFsVmFsdWUgfHwgMCksIAogICAgICAgIHRhcmdldFZhbHVlOiB1bml0PT0nY29sb3InID8gcGFyc2VDb2xvcih2YWx1ZSkgOiB2YWx1ZSwKICAgICAgICB1bml0OiB1bml0CiAgICAgIH07CiAgICB9LmJpbmQodGhpcykpLnJlamVjdChmdW5jdGlvbih0cmFuc2Zvcm0pewogICAgICByZXR1cm4gKAogICAgICAgICh0cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZSA9PSB0cmFuc2Zvcm0udGFyZ2V0VmFsdWUpIHx8CiAgICAgICAgKAogICAgICAgICAgdHJhbnNmb3JtLnVuaXQgIT0gJ2NvbG9yJyAmJgogICAgICAgICAgKGlzTmFOKHRyYW5zZm9ybS5vcmlnaW5hbFZhbHVlKSB8fCBpc05hTih0cmFuc2Zvcm0udGFyZ2V0VmFsdWUpKQogICAgICAgICkKICAgICAgKQogICAgfSk7CiAgfSwKICB1cGRhdGU6IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICB2YXIgc3R5bGUgPSB7IH0sIHRyYW5zZm9ybSwgaSA9IHRoaXMudHJhbnNmb3Jtcy5sZW5ndGg7CiAgICB3aGlsZShpLS0pCiAgICAgIHN0eWxlWyh0cmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybXNbaV0pLnN0eWxlXSA9IAogICAgICAgIHRyYW5zZm9ybS51bml0PT0nY29sb3InID8gJyMnKwogICAgICAgICAgKE1hdGgucm91bmQodHJhbnNmb3JtLm9yaWdpbmFsVmFsdWVbMF0rCiAgICAgICAgICAgICh0cmFuc2Zvcm0udGFyZ2V0VmFsdWVbMF0tdHJhbnNmb3JtLm9yaWdpbmFsVmFsdWVbMF0pKnBvc2l0aW9uKSkudG9Db2xvclBhcnQoKSArCiAgICAgICAgICAoTWF0aC5yb3VuZCh0cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZVsxXSsKICAgICAgICAgICAgKHRyYW5zZm9ybS50YXJnZXRWYWx1ZVsxXS10cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZVsxXSkqcG9zaXRpb24pKS50b0NvbG9yUGFydCgpICsKICAgICAgICAgIChNYXRoLnJvdW5kKHRyYW5zZm9ybS5vcmlnaW5hbFZhbHVlWzJdKwogICAgICAgICAgICAodHJhbnNmb3JtLnRhcmdldFZhbHVlWzJdLXRyYW5zZm9ybS5vcmlnaW5hbFZhbHVlWzJdKSpwb3NpdGlvbikpLnRvQ29sb3JQYXJ0KCkgOgogICAgICAgICh0cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZSArCiAgICAgICAgICAodHJhbnNmb3JtLnRhcmdldFZhbHVlIC0gdHJhbnNmb3JtLm9yaWdpbmFsVmFsdWUpICogcG9zaXRpb24pLnRvRml4ZWQoMykgKyAKICAgICAgICAgICAgKHRyYW5zZm9ybS51bml0ID09PSBudWxsID8gJycgOiB0cmFuc2Zvcm0udW5pdCk7CiAgICB0aGlzLmVsZW1lbnQuc2V0U3R5bGUoc3R5bGUsIHRydWUpOwogIH0KfSk7CgpFZmZlY3QuVHJhbnNmb3JtID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbih0cmFja3MpewogICAgdGhpcy50cmFja3MgID0gW107CiAgICB0aGlzLm9wdGlvbnMgPSBhcmd1bWVudHNbMV0gfHwgeyB9OwogICAgdGhpcy5hZGRUcmFja3ModHJhY2tzKTsKICB9LAogIGFkZFRyYWNrczogZnVuY3Rpb24odHJhY2tzKXsKICAgIHRyYWNrcy5lYWNoKGZ1bmN0aW9uKHRyYWNrKXsKICAgICAgdHJhY2sgPSAkSCh0cmFjayk7CiAgICAgIHZhciBkYXRhID0gdHJhY2sudmFsdWVzKCkuZmlyc3QoKTsKICAgICAgdGhpcy50cmFja3MucHVzaCgkSCh7CiAgICAgICAgaWRzOiAgICAgdHJhY2sua2V5cygpLmZpcnN0KCksCiAgICAgICAgZWZmZWN0OiAgRWZmZWN0Lk1vcnBoLAogICAgICAgIG9wdGlvbnM6IHsgc3R5bGU6IGRhdGEgfQogICAgICB9KSk7CiAgICB9LmJpbmQodGhpcykpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKICBwbGF5OiBmdW5jdGlvbigpewogICAgcmV0dXJuIG5ldyBFZmZlY3QuUGFyYWxsZWwoCiAgICAgIHRoaXMudHJhY2tzLm1hcChmdW5jdGlvbih0cmFjayl7CiAgICAgICAgdmFyIGlkcyA9IHRyYWNrLmdldCgnaWRzJyksIGVmZmVjdCA9IHRyYWNrLmdldCgnZWZmZWN0JyksIG9wdGlvbnMgPSB0cmFjay5nZXQoJ29wdGlvbnMnKTsKICAgICAgICB2YXIgZWxlbWVudHMgPSBbJChpZHMpIHx8ICQkKGlkcyldLmZsYXR0ZW4oKTsKICAgICAgICByZXR1cm4gZWxlbWVudHMubWFwKGZ1bmN0aW9uKGUpeyByZXR1cm4gbmV3IGVmZmVjdChlLCBPYmplY3QuZXh0ZW5kKHsgc3luYzp0cnVlIH0sIG9wdGlvbnMpKSB9KTsKICAgICAgfSkuZmxhdHRlbigpLAogICAgICB0aGlzLm9wdGlvbnMKICAgICk7CiAgfQp9KTsKCkVsZW1lbnQuQ1NTX1BST1BFUlRJRVMgPSAkdygKICAnYmFja2dyb3VuZENvbG9yIGJhY2tncm91bmRQb3NpdGlvbiBib3JkZXJCb3R0b21Db2xvciBib3JkZXJCb3R0b21TdHlsZSAnICsgCiAgJ2JvcmRlckJvdHRvbVdpZHRoIGJvcmRlckxlZnRDb2xvciBib3JkZXJMZWZ0U3R5bGUgYm9yZGVyTGVmdFdpZHRoICcgKwogICdib3JkZXJSaWdodENvbG9yIGJvcmRlclJpZ2h0U3R5bGUgYm9yZGVyUmlnaHRXaWR0aCBib3JkZXJTcGFjaW5nICcgKwogICdib3JkZXJUb3BDb2xvciBib3JkZXJUb3BTdHlsZSBib3JkZXJUb3BXaWR0aCBib3R0b20gY2xpcCBjb2xvciAnICsKICAnZm9udFNpemUgZm9udFdlaWdodCBoZWlnaHQgbGVmdCBsZXR0ZXJTcGFjaW5nIGxpbmVIZWlnaHQgJyArCiAgJ21hcmdpbkJvdHRvbSBtYXJnaW5MZWZ0IG1hcmdpblJpZ2h0IG1hcmdpblRvcCBtYXJrZXJPZmZzZXQgbWF4SGVpZ2h0ICcrCiAgJ21heFdpZHRoIG1pbkhlaWdodCBtaW5XaWR0aCBvcGFjaXR5IG91dGxpbmVDb2xvciBvdXRsaW5lT2Zmc2V0ICcgKwogICdvdXRsaW5lV2lkdGggcGFkZGluZ0JvdHRvbSBwYWRkaW5nTGVmdCBwYWRkaW5nUmlnaHQgcGFkZGluZ1RvcCAnICsKICAncmlnaHQgdGV4dEluZGVudCB0b3Agd2lkdGggd29yZFNwYWNpbmcgekluZGV4Jyk7CiAgCkVsZW1lbnQuQ1NTX0xFTkdUSCA9IC9eKChbXCtcLV0/WzAtOVwuXSspKGVtfGV4fHB4fGlufGNtfG1tfHB0fHBjfFwlKSl8MCQvOwoKU3RyaW5nLl9fcGFyc2VTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKU3RyaW5nLnByb3RvdHlwZS5wYXJzZVN0eWxlID0gZnVuY3Rpb24oKXsKICB2YXIgc3R5bGUsIHN0eWxlUnVsZXMgPSAkSCgpOwogIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpCiAgICBzdHlsZSA9IG5ldyBFbGVtZW50KCdkaXYnLHtzdHlsZTp0aGlzfSkuc3R5bGU7CiAgZWxzZSB7CiAgICBTdHJpbmcuX19wYXJzZVN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0iJyArIHRoaXMgKyAnIj48L2Rpdj4nOwogICAgc3R5bGUgPSBTdHJpbmcuX19wYXJzZVN0eWxlRWxlbWVudC5jaGlsZE5vZGVzWzBdLnN0eWxlOwogIH0KICAKICBFbGVtZW50LkNTU19QUk9QRVJUSUVTLmVhY2goZnVuY3Rpb24ocHJvcGVydHkpewogICAgaWYgKHN0eWxlW3Byb3BlcnR5XSkgc3R5bGVSdWxlcy5zZXQocHJvcGVydHksIHN0eWxlW3Byb3BlcnR5XSk7IAogIH0pOwogIAogIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSAmJiB0aGlzLmluY2x1ZGUoJ29wYWNpdHknKSkKICAgIHN0eWxlUnVsZXMuc2V0KCdvcGFjaXR5JywgdGhpcy5tYXRjaCgvb3BhY2l0eTpccyooKD86MHwxKT8oPzpcLlxkKik/KS8pWzFdKTsKCiAgcmV0dXJuIHN0eWxlUnVsZXM7Cn07CgppZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcgJiYgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSkgewogIEVsZW1lbnQuZ2V0U3R5bGVzID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIGNzcyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoJChlbGVtZW50KSwgbnVsbCk7CiAgICByZXR1cm4gRWxlbWVudC5DU1NfUFJPUEVSVElFUy5pbmplY3QoeyB9LCBmdW5jdGlvbihzdHlsZXMsIHByb3BlcnR5KSB7CiAgICAgIHN0eWxlc1twcm9wZXJ0eV0gPSBjc3NbcHJvcGVydHldOwogICAgICByZXR1cm4gc3R5bGVzOwogICAgfSk7CiAgfTsKfSBlbHNlIHsKICBFbGVtZW50LmdldFN0eWxlcyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGNzcyA9IGVsZW1lbnQuY3VycmVudFN0eWxlLCBzdHlsZXM7CiAgICBzdHlsZXMgPSBFbGVtZW50LkNTU19QUk9QRVJUSUVTLmluamVjdCh7IH0sIGZ1bmN0aW9uKHJlc3VsdHMsIHByb3BlcnR5KSB7CiAgICAgIHJlc3VsdHNbcHJvcGVydHldID0gY3NzW3Byb3BlcnR5XTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9KTsKICAgIGlmICghc3R5bGVzLm9wYWNpdHkpIHN0eWxlcy5vcGFjaXR5ID0gZWxlbWVudC5nZXRPcGFjaXR5KCk7CiAgICByZXR1cm4gc3R5bGVzOwogIH07Cn07CgpFZmZlY3QuTWV0aG9kcyA9IHsKICBtb3JwaDogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgbmV3IEVmZmVjdC5Nb3JwaChlbGVtZW50LCBPYmplY3QuZXh0ZW5kKHsgc3R5bGU6IHN0eWxlIH0sIGFyZ3VtZW50c1syXSB8fCB7IH0pKTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCiAgdmlzdWFsRWZmZWN0OiBmdW5jdGlvbihlbGVtZW50LCBlZmZlY3QsIG9wdGlvbnMpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpCiAgICB2YXIgcyA9IGVmZmVjdC5kYXNoZXJpemUoKS5jYW1lbGl6ZSgpLCBrbGFzcyA9IHMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cmluZygxKTsKICAgIG5ldyBFZmZlY3Rba2xhc3NdKGVsZW1lbnQsIG9wdGlvbnMpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKICBoaWdobGlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgbmV3IEVmZmVjdC5IaWdobGlnaHQoZWxlbWVudCwgb3B0aW9ucyk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgokdygnZmFkZSBhcHBlYXIgZ3JvdyBzaHJpbmsgZm9sZCBibGluZFVwIGJsaW5kRG93biBzbGlkZVVwIHNsaWRlRG93biAnKwogICdwdWxzYXRlIHNoYWtlIHB1ZmYgc3F1aXNoIHN3aXRjaE9mZiBkcm9wT3V0JykuZWFjaCgKICBmdW5jdGlvbihlZmZlY3QpIHsgCiAgICBFZmZlY3QuTWV0aG9kc1tlZmZlY3RdID0gZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucyl7CiAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgICBFZmZlY3RbZWZmZWN0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZWZmZWN0LnN1YnN0cmluZygxKV0oZWxlbWVudCwgb3B0aW9ucyk7CiAgICAgIHJldHVybiBlbGVtZW50OwogICAgfQogIH0KKTsKCiR3KCdnZXRJbmxpbmVPcGFjaXR5IGZvcmNlUmVyZW5kZXJpbmcgc2V0Q29udGVudFpvb20gY29sbGVjdFRleHROb2RlcyBjb2xsZWN0VGV4dE5vZGVzSWdub3JlQ2xhc3MgZ2V0U3R5bGVzJykuZWFjaCggCiAgZnVuY3Rpb24oZikgeyBFZmZlY3QuTWV0aG9kc1tmXSA9IEVsZW1lbnRbZl07IH0KKTsKCkVsZW1lbnQuYWRkTWV0aG9kcyhFZmZlY3QuTWV0aG9kcyk7Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/lightbox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vDQovLwlMaWdodGJveCB2Mi4wNA0KLy8JYnkgTG9rZXNoIERoYWthciAtIGh0dHA6Ly93d3cubG9rZXNoZGhha2FyLmNvbQ0KLy8JTGFzdCBNb2RpZmljYXRpb246IDIvOS8wOA0KLy8NCi8vCUZvciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdDoNCi8vCWh0dHA6Ly9sb2tlc2hkaGFrYXIuY29tL3Byb2plY3RzL2xpZ2h0Ym94Mi8NCi8vDQovLwlMaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAyLjUgTGljZW5zZSAtIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzIuNS8NCi8vICAJLSBGcmVlIGZvciB1c2UgaW4gYm90aCBwZXJzb25hbCBhbmQgY29tbWVyY2lhbCBwcm9qZWN0cw0KLy8JCS0gQXR0cmlidXRpb24gcmVxdWlyZXMgbGVhdmluZyBhdXRob3IgbmFtZSwgYXV0aG9yIGxpbmssIGFuZCB0aGUgbGljZW5zZSBpbmZvIGludGFjdC4NCi8vCQ0KLy8gIFRoYW5rczogU2NvdHQgVXB0b24odXB0b25pYy5jb20pLCBQZXRlci1QYXVsIEtvY2gocXVpcmtzbW9kZS5jb20pLCBhbmQgVGhvbWFzIEZ1Y2hzKG1pci5hY3Vsby51cykgZm9yIGlkZWFzLCBsaWJzLCBhbmQgc25pcHBldHMuDQovLyAgCQlBcnRlbXkgVHJlZ3ViZW5rbyAoYXJ0eS5uYW1lKSBmb3IgY2xlYW51cCBhbmQgaGVscCBpbiB1cGRhdGluZyB0byBsYXRlc3QgdmVyIG9mIHByb3RvLWFjdWxvdXMuDQovLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8qDQoNCiAgICBUYWJsZSBvZiBDb250ZW50cw0KICAgIC0tLS0tLS0tLS0tLS0tLS0tDQogICAgQ29uZmlndXJhdGlvbg0KDQogICAgTGlnaHRib3ggQ2xhc3MgRGVjbGFyYXRpb24NCiAgICAtIGluaXRpYWxpemUoKQ0KICAgIC0gdXBkYXRlSW1hZ2VMaXN0KCkNCiAgICAtIHN0YXJ0KCkNCiAgICAtIGNoYW5nZUltYWdlKCkNCiAgICAtIHJlc2l6ZUltYWdlQ29udGFpbmVyKCkNCiAgICAtIHNob3dJbWFnZSgpDQogICAgLSB1cGRhdGVEZXRhaWxzKCkNCiAgICAtIHVwZGF0ZU5hdigpDQogICAgLSBlbmFibGVLZXlib2FyZE5hdigpDQogICAgLSBkaXNhYmxlS2V5Ym9hcmROYXYoKQ0KICAgIC0ga2V5Ym9hcmRBY3Rpb24oKQ0KICAgIC0gcHJlbG9hZE5laWdoYm9ySW1hZ2VzKCkNCiAgICAtIGVuZCgpDQogICAgDQogICAgRnVuY3Rpb24gQ2FsbHMNCiAgICAtIGRvY3VtZW50Lm9ic2VydmUoKQ0KICAgDQoqLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8NCi8vICBDb25maWd1cmF0aW9ubA0KLy8NCkxpZ2h0Ym94T3B0aW9ucyA9IE9iamVjdC5leHRlbmQoew0KICAgIGZpbGVMb2FkaW5nSW1hZ2U6ICAgICAgICAnbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9saWdodGJveC9pbWFnZXMvbG9hZGluZy5naWYnLCAgICAgDQogICAgZmlsZUJvdHRvbU5hdkNsb3NlSW1hZ2U6ICdtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2xpZ2h0Ym94L2ltYWdlcy9jbG9zZWxhYmVsLmdpZicsDQoNCiAgICBvdmVybGF5T3BhY2l0eTogMC44LCAgIC8vIGNvbnRyb2xzIHRyYW5zcGFyZW5jeSBvZiBzaGFkb3cgb3ZlcmxheQ0KDQogICAgYW5pbWF0ZTogdHJ1ZSwgICAgICAgICAvLyB0b2dnbGVzIHJlc2l6aW5nIGFuaW1hdGlvbnMNCiAgICByZXNpemVTcGVlZDogNywgICAgICAgIC8vIGNvbnRyb2xzIHRoZSBzcGVlZCBvZiB0aGUgaW1hZ2UgcmVzaXppbmcgYW5pbWF0aW9ucyAoMT1zbG93ZXN0IGFuZCAxMD1mYXN0ZXN0KQ0KDQogICAgYm9yZGVyU2l6ZTogMTAsICAgICAgICAgLy9pZiB5b3UgYWRqdXN0IHRoZSBwYWRkaW5nIGluIHRoZSBDU1MsIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHRoaXMgdmFyaWFibGUNCg0KCS8vIFdoZW4gZ3JvdXBpbmcgaW1hZ2VzIHRoaXMgaXMgdXNlZCB0byB3cml0ZTogSW1hZ2UgIyBvZiAjLg0KCS8vIENoYW5nZSBpdCBmb3Igbm9uLWVuZ2xpc2ggbG9jYWxpemF0aW9uDQoJbGFiZWxJbWFnZTogIkltYWdlIiwNCglsYWJlbE9mOiAib2YiDQp9LCB3aW5kb3cuTGlnaHRib3hPcHRpb25zIHx8IHt9KTsNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KdmFyIExpZ2h0Ym94ID0gQ2xhc3MuY3JlYXRlKCk7DQoNCkxpZ2h0Ym94LnByb3RvdHlwZSA9IHsNCiAgICBpbWFnZUFycmF5OiBbXSwNCiAgICBhY3RpdmVJbWFnZTogdW5kZWZpbmVkLA0KICAgIA0KICAgIC8vIGluaXRpYWxpemUoKQ0KICAgIC8vIENvbnN0cnVjdG9yIHJ1bnMgb24gY29tcGxldGlvbiBvZiB0aGUgRE9NIGxvYWRpbmcuIENhbGxzIHVwZGF0ZUltYWdlTGlzdCBhbmQgdGhlbg0KICAgIC8vIHRoZSBmdW5jdGlvbiBpbnNlcnRzIGh0bWwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB3aGljaCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIHNoYWRvdyANCiAgICAvLyBvdmVybGF5IGFuZCB0aGUgaW1hZ2UgY29udGFpbmVyLg0KICAgIC8vDQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7ICAgIA0KICAgICAgICANCiAgICAgICAgdGhpcy51cGRhdGVJbWFnZUxpc3QoKTsNCiAgICAgICAgDQogICAgICAgIHRoaXMua2V5Ym9hcmRBY3Rpb24gPSB0aGlzLmtleWJvYXJkQWN0aW9uLmJpbmRBc0V2ZW50TGlzdGVuZXIodGhpcyk7DQoNCiAgICAgICAgaWYgKExpZ2h0Ym94T3B0aW9ucy5yZXNpemVTcGVlZCA+IDEwKSBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQgPSAxMDsNCiAgICAgICAgaWYgKExpZ2h0Ym94T3B0aW9ucy5yZXNpemVTcGVlZCA8IDEpICBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQgPSAxOw0KDQoJICAgIHRoaXMucmVzaXplRHVyYXRpb24gPSBMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSA/ICgoMTEgLSBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQpICogMC4xNSkgOiAwOw0KCSAgICB0aGlzLm92ZXJsYXlEdXJhdGlvbiA9IExpZ2h0Ym94T3B0aW9ucy5hbmltYXRlID8gMC4yIDogMDsgIC8vIHNoYWRvdyBmYWRlIGluL291dCBkdXJhdGlvbg0KDQogICAgICAgIC8vIFdoZW4gTGlnaHRib3ggc3RhcnRzIGl0IHdpbGwgcmVzaXplIGl0c2VsZiBmcm9tIDI1MCBieSAyNTAgdG8gdGhlIGN1cnJlbnQgaW1hZ2UgZGltZW5zaW9uLg0KICAgICAgICAvLyBJZiBhbmltYXRpb25zIGFyZSB0dXJuZWQgb2ZmLCBpdCB3aWxsIGJlIGhpZGRlbiBhcyB0byBwcmV2ZW50IGEgZmxpY2tlciBvZiBhDQogICAgICAgIC8vIHdoaXRlIDI1MCBieSAyNTAgYm94Lg0KICAgICAgICB2YXIgc2l6ZSA9IChMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSA/IDI1MCA6IDEpICsgJ3B4JzsNCiAgICAgICAgDQoNCiAgICAgICAgLy8gQ29kZSBpbnNlcnRzIGh0bWwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB0aGF0IGxvb2tzIHNpbWlsYXIgdG8gdGhpczoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gIDxkaXYgaWQ9Im92ZXJsYXkiPjwvZGl2Pg0KICAgICAgICAvLyAgPGRpdiBpZD0ibGlnaHRib3giPg0KICAgICAgICAvLyAgICAgIDxkaXYgaWQ9Im91dGVySW1hZ2VDb250YWluZXIiPg0KICAgICAgICAvLyAgICAgICAgICA8ZGl2IGlkPSJpbWFnZUNvbnRhaW5lciI+DQogICAgICAgIC8vICAgICAgICAgICAgICA8aW1nIGlkPSJsaWdodGJveEltYWdlIj4NCiAgICAgICAgLy8gICAgICAgICAgICAgIDxkaXYgc3R5bGU9IiIgaWQ9ImhvdmVyTmF2Ij4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0icHJldkxpbmsiPjwvYT4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0ibmV4dExpbmsiPjwvYT4NCiAgICAgICAgLy8gICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgICAgICAgICAgPGRpdiBpZD0ibG9hZGluZyI+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9ImxvYWRpbmdMaW5rIj4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9sb2FkaW5nLmdpZiI+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAvLyAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIC8vICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgIDxkaXYgaWQ9ImltYWdlRGF0YUNvbnRhaW5lciI+DQogICAgICAgIC8vICAgICAgICAgIDxkaXYgaWQ9ImltYWdlRGF0YSI+DQogICAgICAgIC8vICAgICAgICAgICAgICA8ZGl2IGlkPSJpbWFnZURldGFpbHMiPg0KICAgICAgICAvLyAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJjYXB0aW9uIj48L3NwYW4+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im51bWJlckRpc3BsYXkiPjwvc3Bhbj4NCiAgICAgICAgLy8gICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgICAgICAgICAgPGRpdiBpZD0iYm90dG9tTmF2Ij4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iYm90dG9tTmF2Q2xvc2UiPg0KICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL2Nsb3NlLmdpZiI+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAvLyAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIC8vICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgPC9kaXY+DQoNCg0KICAgICAgICB2YXIgb2JqQm9keSA9ICQkKCdib2R5JylbMF07DQoNCgkJb2JqQm9keS5hcHBlbmRDaGlsZChCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidvdmVybGF5J30pKTsNCgkNCiAgICAgICAgb2JqQm9keS5hcHBlbmRDaGlsZChCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidsaWdodGJveCd9LCBbDQogICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidvdXRlckltYWdlQ29udGFpbmVyJ30sIA0KICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2ltYWdlQ29udGFpbmVyJ30sIFsNCiAgICAgICAgICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdpbWcnLHtpZDonbGlnaHRib3hJbWFnZSd9KSwgDQogICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2hvdmVyTmF2J30sIFsNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidwcmV2TGluaycsIGhyZWY6ICcjJyB9KSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOiduZXh0TGluaycsIGhyZWY6ICcjJyB9KQ0KICAgICAgICAgICAgICAgICAgICBdKSwNCiAgICAgICAgICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdkaXYnLHtpZDonbG9hZGluZyd9LCANCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidsb2FkaW5nTGluaycsIGhyZWY6ICcjJyB9LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2ltZycsIHtzcmM6IExpZ2h0Ym94T3B0aW9ucy5maWxlTG9hZGluZ0ltYWdlfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIF0pDQogICAgICAgICAgICApLA0KICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdkaXYnLCB7aWQ6J2ltYWdlRGF0YUNvbnRhaW5lcid9LA0KICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2ltYWdlRGF0YSd9LCBbDQogICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2ltYWdlRGV0YWlscyd9LCBbDQogICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ3NwYW4nLHtpZDonY2FwdGlvbid9KSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnc3Bhbicse2lkOidudW1iZXJEaXNwbGF5J30pDQogICAgICAgICAgICAgICAgICAgIF0pLA0KICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidib3R0b21OYXYnfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidib3R0b21OYXZDbG9zZScsIGhyZWY6ICcjJyB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnaW1nJywgeyBzcmM6IExpZ2h0Ym94T3B0aW9ucy5maWxlQm90dG9tTmF2Q2xvc2VJbWFnZSB9KQ0KICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgXSkNCiAgICAgICAgICAgICkNCiAgICAgICAgXSkpOw0KDQoNCgkJJCgnb3ZlcmxheScpLmhpZGUoKS5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbigpIHsgdGhpcy5lbmQoKTsgfSkuYmluZCh0aGlzKSk7DQoJCSQoJ2xpZ2h0Ym94JykuaGlkZSgpLm9ic2VydmUoJ2NsaWNrJywgKGZ1bmN0aW9uKGV2ZW50KSB7IGlmIChldmVudC5lbGVtZW50KCkuaWQgPT0gJ2xpZ2h0Ym94JykgdGhpcy5lbmQoKTsgfSkuYmluZCh0aGlzKSk7DQoJCSQoJ291dGVySW1hZ2VDb250YWluZXInKS5zZXRTdHlsZSh7IHdpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemUgfSk7DQoJCSQoJ3ByZXZMaW5rJykub2JzZXJ2ZSgnY2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWN0aXZlSW1hZ2UgLSAxKTsgfSkuYmluZEFzRXZlbnRMaXN0ZW5lcih0aGlzKSk7DQoJCSQoJ25leHRMaW5rJykub2JzZXJ2ZSgnY2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWN0aXZlSW1hZ2UgKyAxKTsgfSkuYmluZEFzRXZlbnRMaXN0ZW5lcih0aGlzKSk7DQoJCSQoJ2xvYWRpbmdMaW5rJykub2JzZXJ2ZSgnY2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmVuZCgpOyB9KS5iaW5kKHRoaXMpKTsNCgkJJCgnYm90dG9tTmF2Q2xvc2UnKS5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbihldmVudCkgeyBldmVudC5zdG9wKCk7IHRoaXMuZW5kKCk7IH0pLmJpbmQodGhpcykpOw0KDQogICAgICAgIHZhciB0aCA9IHRoaXM7DQogICAgICAgIChmdW5jdGlvbigpew0KICAgICAgICAgICAgdmFyIGlkcyA9IA0KICAgICAgICAgICAgICAgICdvdmVybGF5IGxpZ2h0Ym94IG91dGVySW1hZ2VDb250YWluZXIgaW1hZ2VDb250YWluZXIgbGlnaHRib3hJbWFnZSBob3Zlck5hdiBwcmV2TGluayBuZXh0TGluayBsb2FkaW5nIGxvYWRpbmdMaW5rICcgKyANCiAgICAgICAgICAgICAgICAnaW1hZ2VEYXRhQ29udGFpbmVyIGltYWdlRGF0YSBpbWFnZURldGFpbHMgY2FwdGlvbiBudW1iZXJEaXNwbGF5IGJvdHRvbU5hdiBib3R0b21OYXZDbG9zZSc7ICAgDQogICAgICAgICAgICAkdyhpZHMpLmVhY2goZnVuY3Rpb24oaWQpeyB0aFtpZF0gPSAkKGlkKTsgfSk7DQogICAgICAgIH0pLmRlZmVyKCk7DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gdXBkYXRlSW1hZ2VMaXN0KCkNCiAgICAvLyBMb29wcyB0aHJvdWdoIGFuY2hvciB0YWdzIGxvb2tpbmcgZm9yICdsaWdodGJveCcgcmVmZXJlbmNlcyBhbmQgYXBwbGllcyBvbmNsaWNrDQogICAgLy8gZXZlbnRzIHRvIGFwcHJvcHJpYXRlIGxpbmtzLiBZb3UgY2FuIHJlcnVuIGFmdGVyIGR5bmFtaWNhbGx5IGFkZGluZyBpbWFnZXMgdy9hamF4Lg0KICAgIC8vDQogICAgdXBkYXRlSW1hZ2VMaXN0OiBmdW5jdGlvbigpIHsgICANCiAgICAgICAgdGhpcy51cGRhdGVJbWFnZUxpc3QgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsNCg0KICAgICAgICBkb2N1bWVudC5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbihldmVudCl7DQogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQuZmluZEVsZW1lbnQoJ2FbcmVsXj1saWdodGJveF0nKSB8fCBldmVudC5maW5kRWxlbWVudCgnYXJlYVtyZWxePWxpZ2h0Ym94XScpOw0KICAgICAgICAgICAgaWYgKHRhcmdldCkgew0KICAgICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsNCiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KHRhcmdldCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pLmJpbmQodGhpcykpOw0KICAgIH0sDQogICAgDQogICAgLy8NCiAgICAvLyAgc3RhcnQoKQ0KICAgIC8vICBEaXNwbGF5IG92ZXJsYXkgYW5kIGxpZ2h0Ym94LiBJZiBpbWFnZSBpcyBwYXJ0IG9mIGEgc2V0LCBhZGQgc2libGluZ3MgdG8gaW1hZ2VBcnJheS4NCiAgICAvLw0KICAgIHN0YXJ0OiBmdW5jdGlvbihpbWFnZUxpbmspIHsgICAgDQoNCiAgICAgICAgJCQoJ3NlbGVjdCcsICdvYmplY3QnLCAnZW1iZWQnKS5lYWNoKGZ1bmN0aW9uKG5vZGUpeyBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJyB9KTsNCg0KICAgICAgICAvLyBzdHJldGNoIG92ZXJsYXkgdG8gZmlsbCBwYWdlIGFuZCBmYWRlIGluDQogICAgICAgIHZhciBhcnJheVBhZ2VTaXplID0gdGhpcy5nZXRQYWdlU2l6ZSgpOw0KICAgICAgICAkKCdvdmVybGF5Jykuc2V0U3R5bGUoeyB3aWR0aDogYXJyYXlQYWdlU2l6ZVswXSArICdweCcsIGhlaWdodDogYXJyYXlQYWdlU2l6ZVsxXSArICdweCcgfSk7DQoNCiAgICAgICAgbmV3IEVmZmVjdC5BcHBlYXIodGhpcy5vdmVybGF5LCB7IGR1cmF0aW9uOiB0aGlzLm92ZXJsYXlEdXJhdGlvbiwgZnJvbTogMC4wLCB0bzogTGlnaHRib3hPcHRpb25zLm92ZXJsYXlPcGFjaXR5IH0pOw0KDQogICAgICAgIHRoaXMuaW1hZ2VBcnJheSA9IFtdOw0KICAgICAgICB2YXIgaW1hZ2VOdW0gPSAwOyAgICAgICANCg0KICAgICAgICBpZiAoKGltYWdlTGluay5yZWwgPT0gJ2xpZ2h0Ym94Jykpew0KICAgICAgICAgICAgLy8gaWYgaW1hZ2UgaXMgTk9UIHBhcnQgb2YgYSBzZXQsIGFkZCBzaW5nbGUgaW1hZ2UgdG8gaW1hZ2VBcnJheQ0KICAgICAgICAgICAgdGhpcy5pbWFnZUFycmF5LnB1c2goW2ltYWdlTGluay5ocmVmLCBpbWFnZUxpbmsudGl0bGVdKTsgICAgICAgICANCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vIGlmIGltYWdlIGlzIHBhcnQgb2YgYSBzZXQuLg0KICAgICAgICAgICAgdGhpcy5pbWFnZUFycmF5ID0gDQogICAgICAgICAgICAgICAgJCQoaW1hZ2VMaW5rLnRhZ05hbWUgKyAnW2hyZWZdW3JlbD0iJyArIGltYWdlTGluay5yZWwgKyAnIl0nKS4NCiAgICAgICAgICAgICAgICBjb2xsZWN0KGZ1bmN0aW9uKGFuY2hvcil7IHJldHVybiBbYW5jaG9yLmhyZWYsIGFuY2hvci50aXRsZV07IH0pLg0KICAgICAgICAgICAgICAgIHVuaXEoKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgd2hpbGUgKHRoaXMuaW1hZ2VBcnJheVtpbWFnZU51bV1bMF0gIT0gaW1hZ2VMaW5rLmhyZWYpIHsgaW1hZ2VOdW0rKzsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gY2FsY3VsYXRlIHRvcCBhbmQgbGVmdCBvZmZzZXQgZm9yIHRoZSBsaWdodGJveCANCiAgICAgICAgdmFyIGFycmF5UGFnZVNjcm9sbCA9IGRvY3VtZW50LnZpZXdwb3J0LmdldFNjcm9sbE9mZnNldHMoKTsNCiAgICAgICAgdmFyIGxpZ2h0Ym94VG9wID0gYXJyYXlQYWdlU2Nyb2xsWzFdICsgKGRvY3VtZW50LnZpZXdwb3J0LmdldEhlaWdodCgpIC8gMTApOw0KICAgICAgICB2YXIgbGlnaHRib3hMZWZ0ID0gYXJyYXlQYWdlU2Nyb2xsWzBdOw0KICAgICAgICB0aGlzLmxpZ2h0Ym94LnNldFN0eWxlKHsgdG9wOiBsaWdodGJveFRvcCArICdweCcsIGxlZnQ6IGxpZ2h0Ym94TGVmdCArICdweCcgfSkuc2hvdygpOw0KICAgICAgICANCiAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZShpbWFnZU51bSk7DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIGNoYW5nZUltYWdlKCkNCiAgICAvLyAgSGlkZSBtb3N0IGVsZW1lbnRzIGFuZCBwcmVsb2FkIGltYWdlIGluIHByZXBhcmF0aW9uIGZvciByZXNpemluZyBpbWFnZSBjb250YWluZXIuDQogICAgLy8NCiAgICBjaGFuZ2VJbWFnZTogZnVuY3Rpb24oaW1hZ2VOdW0pIHsgICANCiAgICAgICAgDQogICAgICAgIHRoaXMuYWN0aXZlSW1hZ2UgPSBpbWFnZU51bTsgLy8gdXBkYXRlIGdsb2JhbCB2YXINCg0KICAgICAgICAvLyBoaWRlIGVsZW1lbnRzIGR1cmluZyB0cmFuc2l0aW9uDQogICAgICAgIGlmIChMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSkgdGhpcy5sb2FkaW5nLnNob3coKTsNCiAgICAgICAgdGhpcy5saWdodGJveEltYWdlLmhpZGUoKTsNCiAgICAgICAgdGhpcy5ob3Zlck5hdi5oaWRlKCk7DQogICAgICAgIHRoaXMucHJldkxpbmsuaGlkZSgpOw0KICAgICAgICB0aGlzLm5leHRMaW5rLmhpZGUoKTsNCgkJLy8gSEFDSzogT3BlcmE5IGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHNjcmlwdGFjdWxvdXMgb3BhY2l0eSBhbmQgYXBwZWFyIGZ4DQogICAgICAgIHRoaXMuaW1hZ2VEYXRhQ29udGFpbmVyLnNldFN0eWxlKHtvcGFjaXR5OiAuMDAwMX0pOw0KICAgICAgICB0aGlzLm51bWJlckRpc3BsYXkuaGlkZSgpOyAgICAgIA0KICAgICAgICANCiAgICAgICAgdmFyIGltZ1ByZWxvYWRlciA9IG5ldyBJbWFnZSgpOw0KICAgICAgICANCiAgICAgICAgLy8gb25jZSBpbWFnZSBpcyBwcmVsb2FkZWQsIHJlc2l6ZSBpbWFnZSBjb250YWluZXINCg0KDQogICAgICAgIGltZ1ByZWxvYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oKXsNCiAgICAgICAgICAgIHRoaXMubGlnaHRib3hJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZV1bMF07DQogICAgICAgICAgICB0aGlzLnJlc2l6ZUltYWdlQ29udGFpbmVyKGltZ1ByZWxvYWRlci53aWR0aCwgaW1nUHJlbG9hZGVyLmhlaWdodCk7DQogICAgICAgIH0pLmJpbmQodGhpcyk7DQogICAgICAgIGltZ1ByZWxvYWRlci5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZV1bMF07DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIHJlc2l6ZUltYWdlQ29udGFpbmVyKCkNCiAgICAvLw0KICAgIHJlc2l6ZUltYWdlQ29udGFpbmVyOiBmdW5jdGlvbihpbWdXaWR0aCwgaW1nSGVpZ2h0KSB7DQoNCiAgICAgICAgLy8gZ2V0IGN1cnJlbnQgd2lkdGggYW5kIGhlaWdodA0KICAgICAgICB2YXIgd2lkdGhDdXJyZW50ICA9IHRoaXMub3V0ZXJJbWFnZUNvbnRhaW5lci5nZXRXaWR0aCgpOw0KICAgICAgICB2YXIgaGVpZ2h0Q3VycmVudCA9IHRoaXMub3V0ZXJJbWFnZUNvbnRhaW5lci5nZXRIZWlnaHQoKTsNCg0KICAgICAgICAvLyBnZXQgbmV3IHdpZHRoIGFuZCBoZWlnaHQNCiAgICAgICAgdmFyIHdpZHRoTmV3ICA9IChpbWdXaWR0aCAgKyBMaWdodGJveE9wdGlvbnMuYm9yZGVyU2l6ZSAqIDIpOw0KICAgICAgICB2YXIgaGVpZ2h0TmV3ID0gKGltZ0hlaWdodCArIExpZ2h0Ym94T3B0aW9ucy5ib3JkZXJTaXplICogMik7DQoNCiAgICAgICAgLy8gc2NhbGFycyBiYXNlZCBvbiBjaGFuZ2UgZnJvbSBvbGQgdG8gbmV3DQogICAgICAgIHZhciB4U2NhbGUgPSAod2lkdGhOZXcgIC8gd2lkdGhDdXJyZW50KSAgKiAxMDA7DQogICAgICAgIHZhciB5U2NhbGUgPSAoaGVpZ2h0TmV3IC8gaGVpZ2h0Q3VycmVudCkgKiAxMDA7DQoNCiAgICAgICAgLy8gY2FsY3VsYXRlIHNpemUgZGlmZmVyZW5jZSBiZXR3ZWVuIG5ldyBhbmQgb2xkIGltYWdlLCBhbmQgcmVzaXplIGlmIG5lY2Vzc2FyeQ0KICAgICAgICB2YXIgd0RpZmYgPSB3aWR0aEN1cnJlbnQgLSB3aWR0aE5ldzsNCiAgICAgICAgdmFyIGhEaWZmID0gaGVpZ2h0Q3VycmVudCAtIGhlaWdodE5ldzsNCg0KICAgICAgICBpZiAoaERpZmYgIT0gMCkgbmV3IEVmZmVjdC5TY2FsZSh0aGlzLm91dGVySW1hZ2VDb250YWluZXIsIHlTY2FsZSwge3NjYWxlWDogZmFsc2UsIGR1cmF0aW9uOiB0aGlzLnJlc2l6ZUR1cmF0aW9uLCBxdWV1ZTogJ2Zyb250J30pOyANCiAgICAgICAgaWYgKHdEaWZmICE9IDApIG5ldyBFZmZlY3QuU2NhbGUodGhpcy5vdXRlckltYWdlQ29udGFpbmVyLCB4U2NhbGUsIHtzY2FsZVk6IGZhbHNlLCBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgZGVsYXk6IHRoaXMucmVzaXplRHVyYXRpb259KTsgDQoNCiAgICAgICAgLy8gaWYgbmV3IGFuZCBvbGQgaW1hZ2UgYXJlIHNhbWUgc2l6ZSBhbmQgbm8gc2NhbGluZyB0cmFuc2l0aW9uIGlzIG5lY2Vzc2FyeSwgDQogICAgICAgIC8vIGRvIGEgcXVpY2sgcGF1c2UgdG8gcHJldmVudCBpbWFnZSBmbGlja2VyLg0KICAgICAgICB2YXIgdGltZW91dCA9IDA7DQogICAgICAgIGlmICgoaERpZmYgPT0gMCkgJiYgKHdEaWZmID09IDApKXsNCiAgICAgICAgICAgIHRpbWVvdXQgPSAxMDA7DQogICAgICAgICAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHRpbWVvdXQgPSAyNTA7ICAgDQogICAgICAgIH0NCg0KICAgICAgICAoZnVuY3Rpb24oKXsNCiAgICAgICAgICAgIHRoaXMucHJldkxpbmsuc2V0U3R5bGUoeyBoZWlnaHQ6IGltZ0hlaWdodCArICdweCcgfSk7DQogICAgICAgICAgICB0aGlzLm5leHRMaW5rLnNldFN0eWxlKHsgaGVpZ2h0OiBpbWdIZWlnaHQgKyAncHgnIH0pOw0KICAgICAgICAgICAgdGhpcy5pbWFnZURhdGFDb250YWluZXIuc2V0U3R5bGUoeyB3aWR0aDogd2lkdGhOZXcgKyAncHgnIH0pOw0KDQogICAgICAgICAgICB0aGlzLnNob3dJbWFnZSgpOw0KICAgICAgICB9KS5iaW5kKHRoaXMpLmRlbGF5KHRpbWVvdXQgLyAxMDAwKTsNCiAgICB9LA0KICAgIA0KICAgIC8vDQogICAgLy8gIHNob3dJbWFnZSgpDQogICAgLy8gIERpc3BsYXkgaW1hZ2UgYW5kIGJlZ2luIHByZWxvYWRpbmcgbmVpZ2hib3JzLg0KICAgIC8vDQogICAgc2hvd0ltYWdlOiBmdW5jdGlvbigpew0KICAgICAgICB0aGlzLmxvYWRpbmcuaGlkZSgpOw0KICAgICAgICBuZXcgRWZmZWN0LkFwcGVhcih0aGlzLmxpZ2h0Ym94SW1hZ2UsIHsgDQogICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgDQogICAgICAgICAgICBxdWV1ZTogJ2VuZCcsIA0KICAgICAgICAgICAgYWZ0ZXJGaW5pc2g6IChmdW5jdGlvbigpeyB0aGlzLnVwZGF0ZURldGFpbHMoKTsgfSkuYmluZCh0aGlzKSANCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMucHJlbG9hZE5laWdoYm9ySW1hZ2VzKCk7DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIHVwZGF0ZURldGFpbHMoKQ0KICAgIC8vICBEaXNwbGF5IGNhcHRpb24sIGltYWdlIG51bWJlciwgYW5kIGJvdHRvbSBuYXYuDQogICAgLy8NCiAgICB1cGRhdGVEZXRhaWxzOiBmdW5jdGlvbigpIHsNCiAgICANCiAgICAgICAgLy8gaWYgY2FwdGlvbiBpcyBub3QgbnVsbA0KICAgICAgICBpZiAodGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzFdICE9ICIiKXsNCiAgICAgICAgICAgIHRoaXMuY2FwdGlvbi51cGRhdGUodGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzFdKS5zaG93KCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIGlmIGltYWdlIGlzIHBhcnQgb2Ygc2V0IGRpc3BsYXkgJ0ltYWdlIHggb2YgeCcgDQogICAgICAgIGlmICh0aGlzLmltYWdlQXJyYXkubGVuZ3RoID4gMSl7DQogICAgICAgICAgICB0aGlzLm51bWJlckRpc3BsYXkudXBkYXRlKCBMaWdodGJveE9wdGlvbnMubGFiZWxJbWFnZSArICcgJyArICh0aGlzLmFjdGl2ZUltYWdlICsgMSkgKyAnICcgKyBMaWdodGJveE9wdGlvbnMubGFiZWxPZiArICcgICcgKyB0aGlzLmltYWdlQXJyYXkubGVuZ3RoKS5zaG93KCk7DQogICAgICAgIH0NCg0KICAgICAgICBuZXcgRWZmZWN0LlBhcmFsbGVsKA0KICAgICAgICAgICAgWyANCiAgICAgICAgICAgICAgICBuZXcgRWZmZWN0LlNsaWRlRG93bih0aGlzLmltYWdlRGF0YUNvbnRhaW5lciwgeyBzeW5jOiB0cnVlLCBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgZnJvbTogMC4wLCB0bzogMS4wIH0pLCANCiAgICAgICAgICAgICAgICBuZXcgRWZmZWN0LkFwcGVhcih0aGlzLmltYWdlRGF0YUNvbnRhaW5lciwgeyBzeW5jOiB0cnVlLCBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiB9KSANCiAgICAgICAgICAgIF0sIA0KICAgICAgICAgICAgeyANCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgDQogICAgICAgICAgICAgICAgYWZ0ZXJGaW5pc2g6IChmdW5jdGlvbigpIHsNCgkgICAgICAgICAgICAgICAgLy8gdXBkYXRlIG92ZXJsYXkgc2l6ZSBhbmQgdXBkYXRlIG5hdg0KCSAgICAgICAgICAgICAgICB2YXIgYXJyYXlQYWdlU2l6ZSA9IHRoaXMuZ2V0UGFnZVNpemUoKTsNCgkgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5LnNldFN0eWxlKHsgaGVpZ2h0OiBhcnJheVBhZ2VTaXplWzFdICsgJ3B4JyB9KTsNCgkgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOYXYoKTsNCiAgICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpDQogICAgICAgICAgICB9IA0KICAgICAgICApOw0KICAgIH0sDQoNCiAgICAvLw0KICAgIC8vICB1cGRhdGVOYXYoKQ0KICAgIC8vICBEaXNwbGF5IGFwcHJvcHJpYXRlIHByZXZpb3VzIGFuZCBuZXh0IGhvdmVyIG5hdmlnYXRpb24uDQogICAgLy8NCiAgICB1cGRhdGVOYXY6IGZ1bmN0aW9uKCkgew0KDQogICAgICAgIHRoaXMuaG92ZXJOYXYuc2hvdygpOyAgICAgICAgICAgICAgIA0KDQogICAgICAgIC8vIGlmIG5vdCBmaXJzdCBpbWFnZSBpbiBzZXQsIGRpc3BsYXkgcHJldiBpbWFnZSBidXR0b24NCiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW1hZ2UgPiAwKSB0aGlzLnByZXZMaW5rLnNob3coKTsNCg0KICAgICAgICAvLyBpZiBub3QgbGFzdCBpbWFnZSBpbiBzZXQsIGRpc3BsYXkgbmV4dCBpbWFnZSBidXR0b24NCiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW1hZ2UgPCAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB0aGlzLm5leHRMaW5rLnNob3coKTsNCiAgICAgICAgDQogICAgICAgIHRoaXMuZW5hYmxlS2V5Ym9hcmROYXYoKTsNCiAgICB9LA0KDQogICAgLy8NCiAgICAvLyAgZW5hYmxlS2V5Ym9hcmROYXYoKQ0KICAgIC8vDQogICAgZW5hYmxlS2V5Ym9hcmROYXY6IGZ1bmN0aW9uKCkgew0KICAgICAgICBkb2N1bWVudC5vYnNlcnZlKCdrZXlkb3duJywgdGhpcy5rZXlib2FyZEFjdGlvbik7IA0KICAgIH0sDQoNCiAgICAvLw0KICAgIC8vICBkaXNhYmxlS2V5Ym9hcmROYXYoKQ0KICAgIC8vDQogICAgZGlzYWJsZUtleWJvYXJkTmF2OiBmdW5jdGlvbigpIHsNCiAgICAgICAgZG9jdW1lbnQuc3RvcE9ic2VydmluZygna2V5ZG93bicsIHRoaXMua2V5Ym9hcmRBY3Rpb24pOyANCiAgICB9LA0KDQogICAgLy8NCiAgICAvLyAga2V5Ym9hcmRBY3Rpb24oKQ0KICAgIC8vDQogICAga2V5Ym9hcmRBY3Rpb246IGZ1bmN0aW9uKGV2ZW50KSB7DQogICAgICAgIHZhciBrZXljb2RlID0gZXZlbnQua2V5Q29kZTsNCg0KICAgICAgICB2YXIgZXNjYXBlS2V5Ow0KICAgICAgICBpZiAoZXZlbnQuRE9NX1ZLX0VTQ0FQRSkgeyAgLy8gbW96aWxsYQ0KICAgICAgICAgICAgZXNjYXBlS2V5ID0gZXZlbnQuRE9NX1ZLX0VTQ0FQRTsNCiAgICAgICAgfSBlbHNlIHsgLy8gaWUNCiAgICAgICAgICAgIGVzY2FwZUtleSA9IDI3Ow0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Y29kZSkudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgDQogICAgICAgIGlmIChrZXkubWF0Y2goL3h8b3xjLykgfHwgKGtleWNvZGUgPT0gZXNjYXBlS2V5KSl7IC8vIGNsb3NlIGxpZ2h0Ym94DQogICAgICAgICAgICB0aGlzLmVuZCgpOw0KICAgICAgICB9IGVsc2UgaWYgKChrZXkgPT0gJ3AnKSB8fCAoa2V5Y29kZSA9PSAzNykpeyAvLyBkaXNwbGF5IHByZXZpb3VzIGltYWdlDQogICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbWFnZSAhPSAwKXsNCiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOw0KICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlSW1hZ2UodGhpcy5hY3RpdmVJbWFnZSAtIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKChrZXkgPT0gJ24nKSB8fCAoa2V5Y29kZSA9PSAzOSkpeyAvLyBkaXNwbGF5IG5leHQgaW1hZ2UNCiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUltYWdlICE9ICh0aGlzLmltYWdlQXJyYXkubGVuZ3RoIC0gMSkpew0KICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUtleWJvYXJkTmF2KCk7DQogICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZSh0aGlzLmFjdGl2ZUltYWdlICsgMSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9LA0KDQogICAgLy8NCiAgICAvLyAgcHJlbG9hZE5laWdoYm9ySW1hZ2VzKCkNCiAgICAvLyAgUHJlbG9hZCBwcmV2aW91cyBhbmQgbmV4dCBpbWFnZXMuDQogICAgLy8NCiAgICBwcmVsb2FkTmVpZ2hib3JJbWFnZXM6IGZ1bmN0aW9uKCl7DQogICAgICAgIHZhciBwcmVsb2FkTmV4dEltYWdlLCBwcmVsb2FkUHJldkltYWdlOw0KICAgICAgICBpZiAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCA+IHRoaXMuYWN0aXZlSW1hZ2UgKyAxKXsNCiAgICAgICAgICAgIHByZWxvYWROZXh0SW1hZ2UgPSBuZXcgSW1hZ2UoKTsNCiAgICAgICAgICAgIHByZWxvYWROZXh0SW1hZ2Uuc3JjID0gdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2UgKyAxXVswXTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhpcy5hY3RpdmVJbWFnZSA+IDApew0KICAgICAgICAgICAgcHJlbG9hZFByZXZJbWFnZSA9IG5ldyBJbWFnZSgpOw0KICAgICAgICAgICAgcHJlbG9hZFByZXZJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZSAtIDFdWzBdOw0KICAgICAgICB9DQogICAgDQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIGVuZCgpDQogICAgLy8NCiAgICBlbmQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOw0KICAgICAgICB0aGlzLmxpZ2h0Ym94LmhpZGUoKTsNCiAgICAgICAgbmV3IEVmZmVjdC5GYWRlKHRoaXMub3ZlcmxheSwgeyBkdXJhdGlvbjogdGhpcy5vdmVybGF5RHVyYXRpb24gfSk7DQogICAgICAgICQkKCdzZWxlY3QnLCAnb2JqZWN0JywgJ2VtYmVkJykuZWFjaChmdW5jdGlvbihub2RlKXsgbm9kZS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnIH0pOw0KICAgIH0sDQoNCiAgICAvLw0KICAgIC8vICBnZXRQYWdlU2l6ZSgpDQogICAgLy8NCiAgICBnZXRQYWdlU2l6ZTogZnVuY3Rpb24oKSB7DQoJICAgICAgICANCgkgICAgIHZhciB4U2Nyb2xsLCB5U2Nyb2xsOw0KCQkNCgkJaWYgKHdpbmRvdy5pbm5lckhlaWdodCAmJiB3aW5kb3cuc2Nyb2xsTWF4WSkgewkNCgkJCXhTY3JvbGwgPSB3aW5kb3cuaW5uZXJXaWR0aCArIHdpbmRvdy5zY3JvbGxNYXhYOw0KCQkJeVNjcm9sbCA9IHdpbmRvdy5pbm5lckhlaWdodCArIHdpbmRvdy5zY3JvbGxNYXhZOw0KCQl9IGVsc2UgaWYgKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpeyAvLyBhbGwgYnV0IEV4cGxvcmVyIE1hYw0KCQkJeFNjcm9sbCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg7DQoJCQl5U2Nyb2xsID0gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7DQoJCX0gZWxzZSB7IC8vIEV4cGxvcmVyIE1hYy4uLndvdWxkIGFsc28gd29yayBpbiBFeHBsb3JlciA2IFN0cmljdCwgTW96aWxsYSBhbmQgU2FmYXJpDQoJCQl4U2Nyb2xsID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsNCgkJCXlTY3JvbGwgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsNCgkJfQ0KCQkNCgkJdmFyIHdpbmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQ7DQoJCQ0KCQlpZiAoc2VsZi5pbm5lckhlaWdodCkgewkvLyBhbGwgZXhjZXB0IEV4cGxvcmVyDQoJCQlpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpew0KCQkJCXdpbmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOyANCgkJCX0gZWxzZSB7DQoJCQkJd2luZG93V2lkdGggPSBzZWxmLmlubmVyV2lkdGg7DQoJCQl9DQoJCQl3aW5kb3dIZWlnaHQgPSBzZWxmLmlubmVySGVpZ2h0Ow0KCQl9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7IC8vIEV4cGxvcmVyIDYgU3RyaWN0IE1vZGUNCgkJCXdpbmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOw0KCQkJd2luZG93SGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsNCgkJfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5KSB7IC8vIG90aGVyIEV4cGxvcmVycw0KCQkJd2luZG93V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOw0KCQkJd2luZG93SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7DQoJCX0JDQoJCQ0KCQkvLyBmb3Igc21hbGwgcGFnZXMgd2l0aCB0b3RhbCBoZWlnaHQgbGVzcyB0aGVuIGhlaWdodCBvZiB0aGUgdmlld3BvcnQNCgkJaWYoeVNjcm9sbCA8IHdpbmRvd0hlaWdodCl7DQoJCQlwYWdlSGVpZ2h0ID0gd2luZG93SGVpZ2h0Ow0KCQl9IGVsc2UgeyANCgkJCXBhZ2VIZWlnaHQgPSB5U2Nyb2xsOw0KCQl9DQoJDQoJCS8vIGZvciBzbWFsbCBwYWdlcyB3aXRoIHRvdGFsIHdpZHRoIGxlc3MgdGhlbiB3aWR0aCBvZiB0aGUgdmlld3BvcnQNCgkJaWYoeFNjcm9sbCA8IHdpbmRvd1dpZHRoKXsJDQoJCQlwYWdlV2lkdGggPSB4U2Nyb2xsOwkJDQoJCX0gZWxzZSB7DQoJCQlwYWdlV2lkdGggPSB3aW5kb3dXaWR0aDsNCgkJfQ0KDQoJCXJldHVybiBbcGFnZVdpZHRoLHBhZ2VIZWlnaHRdOw0KCX0NCn0NCg0KZG9jdW1lbnQub2JzZXJ2ZSgnZG9tOmxvYWRlZCcsIGZ1bmN0aW9uICgpIHsgbmV3IExpZ2h0Ym94KCk7IH0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/prototype.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjYuMC4yCiAqICAoYykgMjAwNS0yMDA4IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgUHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8KICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBlID0gewogIFZlcnNpb246ICcxLjYuMC4yJywKCiAgQnJvd3NlcjogewogICAgSUU6ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgIXdpbmRvdy5vcGVyYSksCiAgICBPcGVyYTogICEhd2luZG93Lm9wZXJhLAogICAgV2ViS2l0OiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0LycpID4gLTEsCiAgICBHZWNrbzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignR2Vja28nKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignS0hUTUwnKSA9PSAtMSwKICAgIE1vYmlsZVNhZmFyaTogISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZS4qTW9iaWxlLipTYWZhcmkvKQogIH0sCgogIEJyb3dzZXJGZWF0dXJlczogewogICAgWFBhdGg6ICEhZG9jdW1lbnQuZXZhbHVhdGUsCiAgICBFbGVtZW50RXh0ZW5zaW9uczogISF3aW5kb3cuSFRNTEVsZW1lbnQsCiAgICBTcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25zOgogICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5fX3Byb3RvX18gJiYKICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fICE9PQogICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKS5fX3Byb3RvX18KICB9LAoKICBTY3JpcHRGcmFnbWVudDogJzxzY3JpcHRbXj5dKj4oW1xcU1xcc10qPyk8XC9zY3JpcHQ+JywKICBKU09ORmlsdGVyOiAvXlwvXCotc2VjdXJlLShbXHNcU10qKVwqXC9ccyokLywKCiAgZW1wdHlGdW5jdGlvbjogZnVuY3Rpb24oKSB7IH0sCiAgSzogZnVuY3Rpb24oeCkgeyByZXR1cm4geCB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuTW9iaWxlU2FmYXJpKQogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucyA9IGZhbHNlOwoKCi8qIEJhc2VkIG9uIEFsZXggQXJuZWxsJ3MgaW5oZXJpdGFuY2UgaW1wbGVtZW50YXRpb24uICovCnZhciBDbGFzcyA9IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcmVudCA9IG51bGwsIHByb3BlcnRpZXMgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHByb3BlcnRpZXNbMF0pKQogICAgICBwYXJlbnQgPSBwcm9wZXJ0aWVzLnNoaWZ0KCk7CgogICAgZnVuY3Rpb24ga2xhc3MoKSB7CiAgICAgIHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfQoKICAgIE9iamVjdC5leHRlbmQoa2xhc3MsIENsYXNzLk1ldGhvZHMpOwogICAga2xhc3Muc3VwZXJjbGFzcyA9IHBhcmVudDsKICAgIGtsYXNzLnN1YmNsYXNzZXMgPSBbXTsKCiAgICBpZiAocGFyZW50KSB7CiAgICAgIHZhciBzdWJjbGFzcyA9IGZ1bmN0aW9uKCkgeyB9OwogICAgICBzdWJjbGFzcy5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOwogICAgICBrbGFzcy5wcm90b3R5cGUgPSBuZXcgc3ViY2xhc3M7CiAgICAgIHBhcmVudC5zdWJjbGFzc2VzLnB1c2goa2xhc3MpOwogICAgfQoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykKICAgICAga2xhc3MuYWRkTWV0aG9kcyhwcm9wZXJ0aWVzW2ldKTsKCiAgICBpZiAoIWtsYXNzLnByb3RvdHlwZS5pbml0aWFsaXplKQogICAgICBrbGFzcy5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwoKICAgIGtsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGtsYXNzOwoKICAgIHJldHVybiBrbGFzczsKICB9Cn07CgpDbGFzcy5NZXRob2RzID0gewogIGFkZE1ldGhvZHM6IGZ1bmN0aW9uKHNvdXJjZSkgewogICAgdmFyIGFuY2VzdG9yICAgPSB0aGlzLnN1cGVyY2xhc3MgJiYgdGhpcy5zdXBlcmNsYXNzLnByb3RvdHlwZTsKICAgIHZhciBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc291cmNlKTsKCiAgICBpZiAoIU9iamVjdC5rZXlzKHsgdG9TdHJpbmc6IHRydWUgfSkubGVuZ3RoKQogICAgICBwcm9wZXJ0aWVzLnB1c2goInRvU3RyaW5nIiwgInZhbHVlT2YiKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldLCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgICAgIGlmIChhbmNlc3RvciAmJiBPYmplY3QuaXNGdW5jdGlvbih2YWx1ZSkgJiYKICAgICAgICAgIHZhbHVlLmFyZ3VtZW50TmFtZXMoKS5maXJzdCgpID09ICIkc3VwZXIiKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IHZhbHVlLCB2YWx1ZSA9IE9iamVjdC5leHRlbmQoKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIGFuY2VzdG9yW21dLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfTsKICAgICAgICB9KShwcm9wZXJ0eSkud3JhcChtZXRob2QpLCB7CiAgICAgICAgICB2YWx1ZU9mOiAgZnVuY3Rpb24oKSB7IHJldHVybiBtZXRob2QgfSwKICAgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ldGhvZC50b1N0cmluZygpIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLnByb3RvdHlwZVtwcm9wZXJ0eV0gPSB2YWx1ZTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9Cn07Cgp2YXIgQWJzdHJhY3QgPSB7IH07CgpPYmplY3QuZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJjZSkgewogIGZvciAodmFyIHByb3BlcnR5IGluIHNvdXJjZSkKICAgIGRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgcmV0dXJuIGRlc3RpbmF0aW9uOwp9OwoKT2JqZWN0LmV4dGVuZChPYmplY3QsIHsKICBpbnNwZWN0OiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHRyeSB7CiAgICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQob2JqZWN0KSkgcmV0dXJuICd1bmRlZmluZWQnOwogICAgICBpZiAob2JqZWN0ID09PSBudWxsKSByZXR1cm4gJ251bGwnOwogICAgICByZXR1cm4gb2JqZWN0Lmluc3BlY3QgPyBvYmplY3QuaW5zcGVjdCgpIDogU3RyaW5nKG9iamVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmIChlIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikgcmV0dXJuICcuLi4nOwogICAgICB0aHJvdyBlOwogICAgfQogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmplY3Q7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAndW5kZWZpbmVkJzoKICAgICAgY2FzZSAnZnVuY3Rpb24nOgogICAgICBjYXNlICd1bmtub3duJzogcmV0dXJuOwogICAgICBjYXNlICdib29sZWFuJzogcmV0dXJuIG9iamVjdC50b1N0cmluZygpOwogICAgfQoKICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVybiAnbnVsbCc7CiAgICBpZiAob2JqZWN0LnRvSlNPTikgcmV0dXJuIG9iamVjdC50b0pTT04oKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KG9iamVjdCkpIHJldHVybjsKCiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KSB7CiAgICAgIHZhciB2YWx1ZSA9IE9iamVjdC50b0pTT04ob2JqZWN0W3Byb3BlcnR5XSk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkKICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkudG9KU09OKCkgKyAnOiAnICsgdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAneycgKyByZXN1bHRzLmpvaW4oJywgJykgKyAnfSc7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gJEgob2JqZWN0KS50b1F1ZXJ5U3RyaW5nKCk7CiAgfSwKCiAgdG9IVE1MOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0LnRvSFRNTCA/IG9iamVjdC50b0hUTUwoKSA6IFN0cmluZy5pbnRlcnByZXQob2JqZWN0KTsKICB9LAoKICBrZXlzOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHZhciBrZXlzID0gW107CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBvYmplY3QpCiAgICAgIGtleXMucHVzaChwcm9wZXJ0eSk7CiAgICByZXR1cm4ga2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFyIHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KQogICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJvcGVydHldKTsKICAgIHJldHVybiB2YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIE9iamVjdC5leHRlbmQoeyB9LCBvYmplY3QpOwogIH0sCgogIGlzRWxlbWVudDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5ub2RlVHlwZSA9PSAxOwogIH0sCgogIGlzQXJyYXk6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT0gIm9iamVjdCIgJiYKICAgICAgJ3NwbGljZScgaW4gb2JqZWN0ICYmICdqb2luJyBpbiBvYmplY3Q7CiAgfSwKCiAgaXNIYXNoOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBIYXNoOwogIH0sCgogIGlzRnVuY3Rpb246IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0gImZ1bmN0aW9uIjsKICB9LAoKICBpc1N0cmluZzogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAic3RyaW5nIjsKICB9LAoKICBpc051bWJlcjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAibnVtYmVyIjsKICB9LAoKICBpc1VuZGVmaW5lZDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAidW5kZWZpbmVkIjsKICB9Cn0pOwoKT2JqZWN0LmV4dGVuZChGdW5jdGlvbi5wcm90b3R5cGUsIHsKICBhcmd1bWVudE5hbWVzOiBmdW5jdGlvbigpIHsKICAgIHZhciBuYW1lcyA9IHRoaXMudG9TdHJpbmcoKS5tYXRjaCgvXltcc1woXSpmdW5jdGlvblteKF0qXCgoLio/KVwpLylbMV0uc3BsaXQoIiwiKS5pbnZva2UoInN0cmlwIik7CiAgICByZXR1cm4gbmFtZXMubGVuZ3RoID09IDEgJiYgIW5hbWVzWzBdID8gW10gOiBuYW1lczsKICB9LAoKICBiaW5kOiBmdW5jdGlvbigpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMiAmJiBPYmplY3QuaXNVbmRlZmluZWQoYXJndW1lbnRzWzBdKSkgcmV0dXJuIHRoaXM7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRob2QuYXBwbHkob2JqZWN0LCBhcmdzLmNvbmNhdCgkQShhcmd1bWVudHMpKSk7CiAgICB9CiAgfSwKCiAgYmluZEFzRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHJldHVybiBfX21ldGhvZC5hcHBseShvYmplY3QsIFtldmVudCB8fCB3aW5kb3cuZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICB9CiAgfSwKCiAgY3Vycnk6IGZ1bmN0aW9uKCkgewogICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpczsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRob2QuYXBwbHkodGhpcywgYXJncy5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIGRlbGF5OiBmdW5jdGlvbigpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpLCB0aW1lb3V0ID0gYXJncy5zaGlmdCgpICogMTAwMDsKICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KF9fbWV0aG9kLCBhcmdzKTsKICAgIH0sIHRpbWVvdXQpOwogIH0sCgogIHdyYXA6IGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXM7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB3cmFwcGVyLmFwcGx5KHRoaXMsIFtfX21ldGhvZC5iaW5kKHRoaXMpXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIG1ldGhvZGl6ZTogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5fbWV0aG9kaXplZCkgcmV0dXJuIHRoaXMuX21ldGhvZGl6ZWQ7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzOwogICAgcmV0dXJuIHRoaXMuX21ldGhvZGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfTsKICB9Cn0pOwoKRnVuY3Rpb24ucHJvdG90eXBlLmRlZmVyID0gRnVuY3Rpb24ucHJvdG90eXBlLmRlbGF5LmN1cnJ5KDAuMDEpOwoKRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuICciJyArIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSArICctJyArCiAgICAodGhpcy5nZXRVVENNb250aCgpICsgMSkudG9QYWRkZWRTdHJpbmcoMikgKyAnLScgKwogICAgdGhpcy5nZXRVVENEYXRlKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnVCcgKwogICAgdGhpcy5nZXRVVENIb3VycygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsKICAgIHRoaXMuZ2V0VVRDTWludXRlcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsKICAgIHRoaXMuZ2V0VVRDU2Vjb25kcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJ1oiJzsKfTsKCnZhciBUcnkgPSB7CiAgdGhlc2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJldHVyblZhbHVlOwoKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGxhbWJkYSA9IGFyZ3VtZW50c1tpXTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm5WYWx1ZSA9IGxhbWJkYSgpOwogICAgICAgIGJyZWFrOwogICAgICB9IGNhdGNoIChlKSB7IH0KICAgIH0KCiAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9OwoKUmVnRXhwLnByb3RvdHlwZS5tYXRjaCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdDsKClJlZ0V4cC5lc2NhcGUgPSBmdW5jdGlvbihzdHIpIHsKICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCAnXFwkMScpOwp9OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUGVyaW9kaWNhbEV4ZWN1dGVyID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihjYWxsYmFjaywgZnJlcXVlbmN5KSB7CiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsKICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gZmFsc2U7CgogICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblRpbWVyRXZlbnQuYmluZCh0aGlzKSwgdGhpcy5mcmVxdWVuY3kgKiAxMDAwKTsKICB9LAoKICBleGVjdXRlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuY2FsbGJhY2sodGhpcyk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIXRoaXMudGltZXIpIHJldHVybjsKICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICB0aGlzLnRpbWVyID0gbnVsbDsKICB9LAoKICBvblRpbWVyRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgaWYgKCF0aGlzLmN1cnJlbnRseUV4ZWN1dGluZykgewogICAgICB0cnkgewogICAgICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gdHJ1ZTsKICAgICAgICB0aGlzLmV4ZWN1dGUoKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICB0aGlzLmN1cnJlbnRseUV4ZWN1dGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfQp9KTsKT2JqZWN0LmV4dGVuZChTdHJpbmcsIHsKICBpbnRlcnByZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZhbHVlKTsKICB9LAogIHNwZWNpYWxDaGFyOiB7CiAgICAnXGInOiAnXFxiJywKICAgICdcdCc6ICdcXHQnLAogICAgJ1xuJzogJ1xcbicsCiAgICAnXGYnOiAnXFxmJywKICAgICdccic6ICdcXHInLAogICAgJ1xcJzogJ1xcXFwnCiAgfQp9KTsKCk9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGdzdWI6IGZ1bmN0aW9uKHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7CiAgICB2YXIgcmVzdWx0ID0gJycsIHNvdXJjZSA9IHRoaXMsIG1hdGNoOwogICAgcmVwbGFjZW1lbnQgPSBhcmd1bWVudHMuY2FsbGVlLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CgogICAgd2hpbGUgKHNvdXJjZS5sZW5ndGggPiAwKSB7CiAgICAgIGlmIChtYXRjaCA9IHNvdXJjZS5tYXRjaChwYXR0ZXJuKSkgewogICAgICAgIHJlc3VsdCArPSBzb3VyY2Uuc2xpY2UoMCwgbWF0Y2guaW5kZXgpOwogICAgICAgIHJlc3VsdCArPSBTdHJpbmcuaW50ZXJwcmV0KHJlcGxhY2VtZW50KG1hdGNoKSk7CiAgICAgICAgc291cmNlICA9IHNvdXJjZS5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzdWx0ICs9IHNvdXJjZSwgc291cmNlID0gJyc7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgc3ViOiBmdW5jdGlvbihwYXR0ZXJuLCByZXBsYWNlbWVudCwgY291bnQpIHsKICAgIHJlcGxhY2VtZW50ID0gdGhpcy5nc3ViLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CiAgICBjb3VudCA9IE9iamVjdC5pc1VuZGVmaW5lZChjb3VudCkgPyAxIDogY291bnQ7CgogICAgcmV0dXJuIHRoaXMuZ3N1YihwYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBpZiAoLS1jb3VudCA8IDApIHJldHVybiBtYXRjaFswXTsKICAgICAgcmV0dXJuIHJlcGxhY2VtZW50KG1hdGNoKTsKICAgIH0pOwogIH0sCgogIHNjYW46IGZ1bmN0aW9uKHBhdHRlcm4sIGl0ZXJhdG9yKSB7CiAgICB0aGlzLmdzdWIocGF0dGVybiwgaXRlcmF0b3IpOwogICAgcmV0dXJuIFN0cmluZyh0aGlzKTsKICB9LAoKICB0cnVuY2F0ZTogZnVuY3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9uKSB7CiAgICBsZW5ndGggPSBsZW5ndGggfHwgMzA7CiAgICB0cnVuY2F0aW9uID0gT2JqZWN0LmlzVW5kZWZpbmVkKHRydW5jYXRpb24pID8gJy4uLicgOiB0cnVuY2F0aW9uOwogICAgcmV0dXJuIHRoaXMubGVuZ3RoID4gbGVuZ3RoID8KICAgICAgdGhpcy5zbGljZSgwLCBsZW5ndGggLSB0cnVuY2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0aW9uIDogU3RyaW5nKHRoaXMpOwogIH0sCgogIHN0cmlwOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL15ccysvLCAnJykucmVwbGFjZSgvXHMrJC8sICcnKTsKICB9LAoKICBzdHJpcFRhZ3M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwgJycpOwogIH0sCgogIHN0cmlwU2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoUHJvdG90eXBlLlNjcmlwdEZyYWdtZW50LCAnaW1nJyksICcnKTsKICB9LAoKICBleHRyYWN0U2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICB2YXIgbWF0Y2hBbGwgPSBuZXcgUmVnRXhwKFByb3RvdHlwZS5TY3JpcHRGcmFnbWVudCwgJ2ltZycpOwogICAgdmFyIG1hdGNoT25lID0gbmV3IFJlZ0V4cChQcm90b3R5cGUuU2NyaXB0RnJhZ21lbnQsICdpbScpOwogICAgcmV0dXJuICh0aGlzLm1hdGNoKG1hdGNoQWxsKSB8fCBbXSkubWFwKGZ1bmN0aW9uKHNjcmlwdFRhZykgewogICAgICByZXR1cm4gKHNjcmlwdFRhZy5tYXRjaChtYXRjaE9uZSkgfHwgWycnLCAnJ10pWzFdOwogICAgfSk7CiAgfSwKCiAgZXZhbFNjcmlwdHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZXh0cmFjdFNjcmlwdHMoKS5tYXAoZnVuY3Rpb24oc2NyaXB0KSB7IHJldHVybiBldmFsKHNjcmlwdCkgfSk7CiAgfSwKCiAgZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBzZWxmLnRleHQuZGF0YSA9IHRoaXM7CiAgICByZXR1cm4gc2VsZi5kaXYuaW5uZXJIVE1MOwogIH0sCgogIHVuZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9IHRoaXMuc3RyaXBUYWdzKCk7CiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0gPyAoZGl2LmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/CiAgICAgICRBKGRpdi5jaGlsZE5vZGVzKS5pbmplY3QoJycsIGZ1bmN0aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJuIG1lbW8rbm9kZS5ub2RlVmFsdWUgfSkgOgogICAgICBkaXYuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpIDogJyc7CiAgfSwKCiAgdG9RdWVyeVBhcmFtczogZnVuY3Rpb24oc2VwYXJhdG9yKSB7CiAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0Y2goLyhbXj8jXSopKCMuKik/JC8pOwogICAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgfTsKCiAgICByZXR1cm4gbWF0Y2hbMV0uc3BsaXQoc2VwYXJhdG9yIHx8ICcmJykuaW5qZWN0KHsgfSwgZnVuY3Rpb24oaGFzaCwgcGFpcikgewogICAgICBpZiAoKHBhaXIgPSBwYWlyLnNwbGl0KCc9JykpWzBdKSB7CiAgICAgICAgdmFyIGtleSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyLnNoaWZ0KCkpOwogICAgICAgIHZhciB2YWx1ZSA9IHBhaXIubGVuZ3RoID4gMSA/IHBhaXIuam9pbignPScpIDogcGFpclswXTsKICAgICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CgogICAgICAgIGlmIChrZXkgaW4gaGFzaCkgewogICAgICAgICAgaWYgKCFPYmplY3QuaXNBcnJheShoYXNoW2tleV0pKSBoYXNoW2tleV0gPSBbaGFzaFtrZXldXTsKICAgICAgICAgIGhhc2hba2V5XS5wdXNoKHZhbHVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBoYXNoW2tleV0gPSB2YWx1ZTsKICAgICAgfQogICAgICByZXR1cm4gaGFzaDsKICAgIH0pOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc3BsaXQoJycpOwogIH0sCgogIHN1Y2M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc2xpY2UoMCwgdGhpcy5sZW5ndGggLSAxKSArCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5jaGFyQ29kZUF0KHRoaXMubGVuZ3RoIC0gMSkgKyAxKTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oY291bnQpIHsKICAgIHJldHVybiBjb3VudCA8IDEgPyAnJyA6IG5ldyBBcnJheShjb3VudCArIDEpLmpvaW4odGhpcyk7CiAgfSwKCiAgY2FtZWxpemU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcnRzID0gdGhpcy5zcGxpdCgnLScpLCBsZW4gPSBwYXJ0cy5sZW5ndGg7CiAgICBpZiAobGVuID09IDEpIHJldHVybiBwYXJ0c1swXTsKCiAgICB2YXIgY2FtZWxpemVkID0gdGhpcy5jaGFyQXQoMCkgPT0gJy0nCiAgICAgID8gcGFydHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1swXS5zdWJzdHJpbmcoMSkKICAgICAgOiBwYXJ0c1swXTsKCiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKQogICAgICBjYW1lbGl6ZWQgKz0gcGFydHNbaV0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1tpXS5zdWJzdHJpbmcoMSk7CgogICAgcmV0dXJuIGNhbWVsaXplZDsKICB9LAoKICBjYXBpdGFsaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKTsKICB9LAoKICB1bmRlcnNjb3JlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoLzo6LywgJy8nKS5nc3ViKC8oW0EtWl0rKShbQS1aXVthLXpdKS8sJyN7MX1fI3syfScpLmdzdWIoLyhbYS16XGRdKShbQS1aXSkvLCcjezF9XyN7Mn0nKS5nc3ViKC8tLywnXycpLnRvTG93ZXJDYXNlKCk7CiAgfSwKCiAgZGFzaGVyaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoL18vLCctJyk7CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24odXNlRG91YmxlUXVvdGVzKSB7CiAgICB2YXIgZXNjYXBlZFN0cmluZyA9IHRoaXMuZ3N1YigvW1x4MDAtXHgxZlxcXS8sIGZ1bmN0aW9uKG1hdGNoKSB7CiAgICAgIHZhciBjaGFyYWN0ZXIgPSBTdHJpbmcuc3BlY2lhbENoYXJbbWF0Y2hbMF1dOwogICAgICByZXR1cm4gY2hhcmFjdGVyID8gY2hhcmFjdGVyIDogJ1xcdTAwJyArIG1hdGNoWzBdLmNoYXJDb2RlQXQoKS50b1BhZGRlZFN0cmluZygyLCAxNik7CiAgICB9KTsKICAgIGlmICh1c2VEb3VibGVRdW90ZXMpIHJldHVybiAnIicgKyBlc2NhcGVkU3RyaW5nLnJlcGxhY2UoLyIvZywgJ1xcIicpICsgJyInOwogICAgcmV0dXJuICInIiArIGVzY2FwZWRTdHJpbmcucmVwbGFjZSgvJy9nLCAnXFxcJycpICsgIiciOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5pbnNwZWN0KHRydWUpOwogIH0sCgogIHVuZmlsdGVySlNPTjogZnVuY3Rpb24oZmlsdGVyKSB7CiAgICByZXR1cm4gdGhpcy5zdWIoZmlsdGVyIHx8IFByb3RvdHlwZS5KU09ORmlsdGVyLCAnI3sxfScpOwogIH0sCgogIGlzSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RyID0gdGhpczsKICAgIGlmIChzdHIuYmxhbmsoKSkgcmV0dXJuIGZhbHNlOwogICAgc3RyID0gdGhpcy5yZXBsYWNlKC9cXC4vZywgJ0AnKS5yZXBsYWNlKC8iW14iXFxcblxyXSoiL2csICcnKTsKICAgIHJldHVybiAoL15bLDp7fVxbXF0wLTkuXC0rRWFlZmxuci11IFxuXHJcdF0qJC8pLnRlc3Qoc3RyKTsKICB9LAoKICBldmFsSlNPTjogZnVuY3Rpb24oc2FuaXRpemUpIHsKICAgIHZhciBqc29uID0gdGhpcy51bmZpbHRlckpTT04oKTsKICAgIHRyeSB7CiAgICAgIGlmICghc2FuaXRpemUgfHwganNvbi5pc0pTT04oKSkgcmV0dXJuIGV2YWwoJygnICsganNvbiArICcpJyk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignQmFkbHkgZm9ybWVkIEpTT04gc3RyaW5nOiAnICsgdGhpcy5pbnNwZWN0KCkpOwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0aW9uKHBhdHRlcm4pIHsKICAgIHJldHVybiB0aGlzLmluZGV4T2YocGF0dGVybikgPiAtMTsKICB9LAoKICBzdGFydHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHBhdHRlcm4pID09PSAwOwogIH0sCgogIGVuZHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICB2YXIgZCA9IHRoaXMubGVuZ3RoIC0gcGF0dGVybi5sZW5ndGg7CiAgICByZXR1cm4gZCA+PSAwICYmIHRoaXMubGFzdEluZGV4T2YocGF0dGVybikgPT09IGQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMgPT0gJyc7CiAgfSwKCiAgYmxhbms6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIC9eXHMqJC8udGVzdCh0aGlzKTsKICB9LAoKICBpbnRlcnBvbGF0ZTogZnVuY3Rpb24ob2JqZWN0LCBwYXR0ZXJuKSB7CiAgICByZXR1cm4gbmV3IFRlbXBsYXRlKHRoaXMsIHBhdHRlcm4pLmV2YWx1YXRlKG9iamVjdCk7CiAgfQp9KTsKCmlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQgfHwgUHJvdG90eXBlLkJyb3dzZXIuSUUpIE9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGVzY2FwZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJlcGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLz4vZywnJmd0OycpOwogIH0sCiAgdW5lc2NhcGVIVE1MOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2UoLyZhbXA7L2csJyYnKS5yZXBsYWNlKC8mbHQ7L2csJzwnKS5yZXBsYWNlKC8mZ3Q7L2csJz4nKTsKICB9Cn0pOwoKU3RyaW5nLnByb3RvdHlwZS5nc3ViLnByZXBhcmVSZXBsYWNlbWVudCA9IGZ1bmN0aW9uKHJlcGxhY2VtZW50KSB7CiAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlcGxhY2VtZW50KSkgcmV0dXJuIHJlcGxhY2VtZW50OwogIHZhciB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShyZXBsYWNlbWVudCk7CiAgcmV0dXJuIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiB0ZW1wbGF0ZS5ldmFsdWF0ZShtYXRjaCkgfTsKfTsKClN0cmluZy5wcm90b3R5cGUucGFyc2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9RdWVyeVBhcmFtczsKCk9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MLCB7CiAgZGl2OiAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgdGV4dDogZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKd2l0aCAoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MKSBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7Cgp2YXIgVGVtcGxhdGUgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKHRlbXBsYXRlLCBwYXR0ZXJuKSB7CiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGUudG9TdHJpbmcoKTsKICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm4gfHwgVGVtcGxhdGUuUGF0dGVybjsKICB9LAoKICBldmFsdWF0ZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24ob2JqZWN0LnRvVGVtcGxhdGVSZXBsYWNlbWVudHMpKQogICAgICBvYmplY3QgPSBvYmplY3QudG9UZW1wbGF0ZVJlcGxhY2VtZW50cygpOwoKICAgIHJldHVybiB0aGlzLnRlbXBsYXRlLmdzdWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAnJzsKCiAgICAgIHZhciBiZWZvcmUgPSBtYXRjaFsxXSB8fCAnJzsKICAgICAgaWYgKGJlZm9yZSA9PSAnXFwnKSByZXR1cm4gbWF0Y2hbMl07CgogICAgICB2YXIgY3R4ID0gb2JqZWN0LCBleHByID0gbWF0Y2hbM107CiAgICAgIHZhciBwYXR0ZXJuID0gL14oW14uW10rfFxbKCg/Oi4qP1teXFxdKT8pXF0pKFwufFxbfCQpLzsKICAgICAgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoZXhwcik7CiAgICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gYmVmb3JlOwoKICAgICAgd2hpbGUgKG1hdGNoICE9IG51bGwpIHsKICAgICAgICB2YXIgY29tcCA9IG1hdGNoWzFdLnN0YXJ0c1dpdGgoJ1snKSA/IG1hdGNoWzJdLmdzdWIoJ1xcXFxdJywgJ10nKSA6IG1hdGNoWzFdOwogICAgICAgIGN0eCA9IGN0eFtjb21wXTsKICAgICAgICBpZiAobnVsbCA9PSBjdHggfHwgJycgPT0gbWF0Y2hbM10pIGJyZWFrOwogICAgICAgIGV4cHIgPSBleHByLnN1YnN0cmluZygnWycgPT0gbWF0Y2hbM10gPyBtYXRjaFsxXS5sZW5ndGggOiBtYXRjaFswXS5sZW5ndGgpOwogICAgICAgIG1hdGNoID0gcGF0dGVybi5leGVjKGV4cHIpOwogICAgICB9CgogICAgICByZXR1cm4gYmVmb3JlICsgU3RyaW5nLmludGVycHJldChjdHgpOwogICAgfSk7CiAgfQp9KTsKVGVtcGxhdGUuUGF0dGVybiA9IC8oXnwufFxyfFxuKSgjXHsoLio/KVx9KS87Cgp2YXIgJGJyZWFrID0geyB9OwoKdmFyIEVudW1lcmFibGUgPSB7CiAgZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRleCA9IDA7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB0cnkgewogICAgICB0aGlzLl9lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgaXRlcmF0b3IodmFsdWUsIGluZGV4KyspOwogICAgICB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgaWYgKGUgIT0gJGJyZWFrKSB0aHJvdyBlOwogICAgfQogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgZWFjaFNsaWNlOiBmdW5jdGlvbihudW1iZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIGluZGV4ID0gLW51bWJlciwgc2xpY2VzID0gW10sIGFycmF5ID0gdGhpcy50b0FycmF5KCk7CiAgICB3aGlsZSAoKGluZGV4ICs9IG51bWJlcikgPCBhcnJheS5sZW5ndGgpCiAgICAgIHNsaWNlcy5wdXNoKGFycmF5LnNsaWNlKGluZGV4LCBpbmRleCtudW1iZXIpKTsKICAgIHJldHVybiBzbGljZXMuY29sbGVjdChpdGVyYXRvciwgY29udGV4dCk7CiAgfSwKCiAgYWxsOiBmdW5jdGlvbihpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvciA/IGl0ZXJhdG9yLmJpbmQoY29udGV4dCkgOiBQcm90b3R5cGUuSzsKICAgIHZhciByZXN1bHQgPSB0cnVlOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICByZXN1bHQgPSByZXN1bHQgJiYgISFpdGVyYXRvcih2YWx1ZSwgaW5kZXgpOwogICAgICBpZiAoIXJlc3VsdCkgdGhyb3cgJGJyZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGFueTogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgPyBpdGVyYXRvci5iaW5kKGNvbnRleHQpIDogUHJvdG90eXBlLks7CiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChyZXN1bHQgPSAhIWl0ZXJhdG9yKHZhbHVlLCBpbmRleCkpCiAgICAgICAgdGhyb3cgJGJyZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGNvbGxlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmVzdWx0cy5wdXNoKGl0ZXJhdG9yKHZhbHVlLCBpbmRleCkpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBkZXRlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSkgewogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgICAgIHRocm93ICRicmVhazsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGZpbmRBbGw6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1bHRzLnB1c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBncmVwOiBmdW5jdGlvbihmaWx0ZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGZpbHRlcikpCiAgICAgIGZpbHRlciA9IG5ldyBSZWdFeHAoZmlsdGVyKTsKCiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChmaWx0ZXIubWF0Y2godmFsdWUpKQogICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvcih2YWx1ZSwgaW5kZXgpKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgaW5jbHVkZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odGhpcy5pbmRleE9mKSkKICAgICAgaWYgKHRoaXMuaW5kZXhPZihvYmplY3QpICE9IC0xKSByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICBpZiAodmFsdWUgPT0gb2JqZWN0KSB7CiAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgIHRocm93ICRicmVhazsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZm91bmQ7CiAgfSwKCiAgaW5Hcm91cHNPZjogZnVuY3Rpb24obnVtYmVyLCBmaWxsV2l0aCkgewogICAgZmlsbFdpdGggPSBPYmplY3QuaXNVbmRlZmluZWQoZmlsbFdpdGgpID8gbnVsbCA6IGZpbGxXaXRoOwogICAgcmV0dXJuIHRoaXMuZWFjaFNsaWNlKG51bWJlciwgZnVuY3Rpb24oc2xpY2UpIHsKICAgICAgd2hpbGUoc2xpY2UubGVuZ3RoIDwgbnVtYmVyKSBzbGljZS5wdXNoKGZpbGxXaXRoKTsKICAgICAgcmV0dXJuIHNsaWNlOwogICAgfSk7CiAgfSwKCiAgaW5qZWN0OiBmdW5jdGlvbihtZW1vLCBpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvci5iaW5kKGNvbnRleHQpOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBtZW1vID0gaXRlcmF0b3IobWVtbywgdmFsdWUsIGluZGV4KTsKICAgIH0pOwogICAgcmV0dXJuIG1lbW87CiAgfSwKCiAgaW52b2tlOiBmdW5jdGlvbihtZXRob2QpIHsKICAgIHZhciBhcmdzID0gJEEoYXJndW1lbnRzKS5zbGljZSgxKTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFsdWVbbWV0aG9kXS5hcHBseSh2YWx1ZSwgYXJncyk7CiAgICB9KTsKICB9LAoKICBtYXg6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdDsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgdmFsdWUgPSBpdGVyYXRvcih2YWx1ZSwgaW5kZXgpOwogICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgdmFsdWUgPj0gcmVzdWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIG1pbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgPyBpdGVyYXRvci5iaW5kKGNvbnRleHQpIDogUHJvdG90eXBlLks7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICB2YWx1ZSA9IGl0ZXJhdG9yKHZhbHVlLCBpbmRleCk7CiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCB2YWx1ZSA8IHJlc3VsdCkKICAgICAgICByZXN1bHQgPSB2YWx1ZTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBwYXJ0aXRpb246IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHRydWVzID0gW10sIGZhbHNlcyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSA/CiAgICAgICAgdHJ1ZXMgOiBmYWxzZXMpLnB1c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gW3RydWVzLCBmYWxzZXNdOwogIH0sCgogIHBsdWNrOiBmdW5jdGlvbihwcm9wZXJ0eSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXN1bHRzLnB1c2godmFsdWVbcHJvcGVydHldKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgcmVqZWN0OiBmdW5jdGlvbihpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvci5iaW5kKGNvbnRleHQpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKCFpdGVyYXRvcih2YWx1ZSwgaW5kZXgpKQogICAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIHNvcnRCeTogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IuYmluZChjb250ZXh0KTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGNyaXRlcmlhOiBpdGVyYXRvcih2YWx1ZSwgaW5kZXgpfTsKICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKICAgICAgdmFyIGEgPSBsZWZ0LmNyaXRlcmlhLCBiID0gcmlnaHQuY3JpdGVyaWE7CiAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDsKICAgIH0pLnBsdWNrKCd2YWx1ZScpOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubWFwKCk7CiAgfSwKCiAgemlwOiBmdW5jdGlvbigpIHsKICAgIHZhciBpdGVyYXRvciA9IFByb3RvdHlwZS5LLCBhcmdzID0gJEEoYXJndW1lbnRzKTsKICAgIGlmIChPYmplY3QuaXNGdW5jdGlvbihhcmdzLmxhc3QoKSkpCiAgICAgIGl0ZXJhdG9yID0gYXJncy5wb3AoKTsKCiAgICB2YXIgY29sbGVjdGlvbnMgPSBbdGhpc10uY29uY2F0KGFyZ3MpLm1hcCgkQSk7CiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJldHVybiBpdGVyYXRvcihjb2xsZWN0aW9ucy5wbHVjayhpbmRleCkpOwogICAgfSk7CiAgfSwKCiAgc2l6ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICcjPEVudW1lcmFibGU6JyArIHRoaXMudG9BcnJheSgpLmluc3BlY3QoKSArICc+JzsKICB9Cn07CgpPYmplY3QuZXh0ZW5kKEVudW1lcmFibGUsIHsKICBtYXA6ICAgICBFbnVtZXJhYmxlLmNvbGxlY3QsCiAgZmluZDogICAgRW51bWVyYWJsZS5kZXRlY3QsCiAgc2VsZWN0OiAgRW51bWVyYWJsZS5maW5kQWxsLAogIGZpbHRlcjogIEVudW1lcmFibGUuZmluZEFsbCwKICBtZW1iZXI6ICBFbnVtZXJhYmxlLmluY2x1ZGUsCiAgZW50cmllczogRW51bWVyYWJsZS50b0FycmF5LAogIGV2ZXJ5OiAgIEVudW1lcmFibGUuYWxsLAogIHNvbWU6ICAgIEVudW1lcmFibGUuYW55Cn0pOwpmdW5jdGlvbiAkQShpdGVyYWJsZSkgewogIGlmICghaXRlcmFibGUpIHJldHVybiBbXTsKICBpZiAoaXRlcmFibGUudG9BcnJheSkgcmV0dXJuIGl0ZXJhYmxlLnRvQXJyYXkoKTsKICB2YXIgbGVuZ3RoID0gaXRlcmFibGUubGVuZ3RoIHx8IDAsIHJlc3VsdHMgPSBuZXcgQXJyYXkobGVuZ3RoKTsKICB3aGlsZSAobGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgcmV0dXJuIHJlc3VsdHM7Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAkQSA9IGZ1bmN0aW9uKGl0ZXJhYmxlKSB7CiAgICBpZiAoIWl0ZXJhYmxlKSByZXR1cm4gW107CiAgICBpZiAoIShPYmplY3QuaXNGdW5jdGlvbihpdGVyYWJsZSkgJiYgaXRlcmFibGUgPT0gJ1tvYmplY3QgTm9kZUxpc3RdJykgJiYKICAgICAgICBpdGVyYWJsZS50b0FycmF5KSByZXR1cm4gaXRlcmFibGUudG9BcnJheSgpOwogICAgdmFyIGxlbmd0aCA9IGl0ZXJhYmxlLmxlbmd0aCB8fCAwLCByZXN1bHRzID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAobGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgpBcnJheS5mcm9tID0gJEE7CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3RvdHlwZSwgRW51bWVyYWJsZSk7CgppZiAoIUFycmF5LnByb3RvdHlwZS5fcmV2ZXJzZSkgQXJyYXkucHJvdG90eXBlLl9yZXZlcnNlID0gQXJyYXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3RvdHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspCiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVybiB0aGlzOwogIH0sCgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzWzBdOwogIH0sCgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlvbihhcnJheSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdChPYmplY3QuaXNBcnJheSh2YWx1ZSkgPwogICAgICAgIHZhbHVlLmZsYXR0ZW4oKSA6IFt2YWx1ZV0pOwogICAgfSk7CiAgfSwKCiAgd2l0aG91dDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdmFsdWVzID0gJEEoYXJndW1lbnRzKTsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlKHZhbHVlKTsKICAgIH0pOwogIH0sCgogIHJldmVyc2U6IGZ1bmN0aW9uKGlubGluZSkgewogICAgcmV0dXJuIChpbmxpbmUgIT09IGZhbHNlID8gdGhpcyA6IHRoaXMudG9BcnJheSgpKS5fcmV2ZXJzZSgpOwogIH0sCgogIHJlZHVjZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5sZW5ndGggPiAxID8gdGhpcyA6IHRoaXNbMF07CiAgfSwKCiAgdW5pcTogZnVuY3Rpb24oc29ydGVkKSB7CiAgICByZXR1cm4gdGhpcy5pbmplY3QoW10sIGZ1bmN0aW9uKGFycmF5LCB2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKDAgPT0gaW5kZXggfHwgKHNvcnRlZCA/IGFycmF5Lmxhc3QoKSAhPSB2YWx1ZSA6ICFhcnJheS5pbmNsdWRlKHZhbHVlKSkpCiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7CiAgICAgIHJldHVybiBhcnJheTsKICAgIH0pOwogIH0sCgogIGludGVyc2VjdDogZnVuY3Rpb24oYXJyYXkpIHsKICAgIHJldHVybiB0aGlzLnVuaXEoKS5maW5kQWxsKGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgcmV0dXJuIGFycmF5LmRldGVjdChmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gaXRlbSA9PT0gdmFsdWUgfSk7CiAgICB9KTsKICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gW10uY29uY2F0KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCcsICcpICsgJ10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB2YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmVzdWx0cy5wdXNoKHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuICdbJyArIHJlc3VsdHMuam9pbignLCAnKSArICddJzsKICB9Cn0pOwoKLy8gdXNlIG5hdGl2ZSBicm93c2VyIEpTIDEuNiBpbXBsZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUKaWYgKE9iamVjdC5pc0Z1bmN0aW9uKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSkKICBBcnJheS5wcm90b3R5cGUuX2VhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKCmlmICghQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24oaXRlbSwgaSkgewogIGkgfHwgKGkgPSAwKTsKICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAgaWYgKGkgPCAwKSBpID0gbGVuZ3RoICsgaTsKICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKQogICAgaWYgKHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOwogIHJldHVybiAtMTsKfTsKCmlmICghQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbihpdGVtLCBpKSB7CiAgaSA9IGlzTmFOKGkpID8gdGhpcy5sZW5ndGggOiAoaSA8IDAgPyB0aGlzLmxlbmd0aCArIGkgOiBpKSArIDE7CiAgdmFyIG4gPSB0aGlzLnNsaWNlKDAsIGkpLnJldmVyc2UoKS5pbmRleE9mKGl0ZW0pOwogIHJldHVybiAobiA8IDApID8gbiA6IGkgLSBuIC0gMTsKfTsKCkFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gQXJyYXkucHJvdG90eXBlLmNsb25lOwoKZnVuY3Rpb24gJHcoc3RyaW5nKSB7CiAgaWYgKCFPYmplY3QuaXNTdHJpbmcoc3RyaW5nKSkgcmV0dXJuIFtdOwogIHN0cmluZyA9IHN0cmluZy5zdHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3BsaXQoL1xzKy8pIDogW107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7CiAgQXJyYXkucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFycmF5ID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKE9iamVjdC5pc0FycmF5KGFyZ3VtZW50c1tpXSkpIHsKICAgICAgICBmb3IgKHZhciBqID0gMCwgYXJyYXlMZW5ndGggPSBhcmd1bWVudHNbaV0ubGVuZ3RoOyBqIDwgYXJyYXlMZW5ndGg7IGorKykKICAgICAgICAgIGFycmF5LnB1c2goYXJndW1lbnRzW2ldW2pdKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBhcnJheS5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBhcnJheTsKICB9Owp9Ck9iamVjdC5leHRlbmQoTnVtYmVyLnByb3RvdHlwZSwgewogIHRvQ29sb3JQYXJ0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRvUGFkZGVkU3RyaW5nKDIsIDE2KTsKICB9LAoKICBzdWNjOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzICsgMTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgICRSKDAsIHRoaXMsIHRydWUpLmVhY2goaXRlcmF0b3IpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgdG9QYWRkZWRTdHJpbmc6IGZ1bmN0aW9uKGxlbmd0aCwgcmFkaXgpIHsKICAgIHZhciBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKHJhZGl4IHx8IDEwKTsKICAgIHJldHVybiAnMCcudGltZXMobGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7CiAgfSwKCiAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBpc0Zpbml0ZSh0aGlzKSA/IHRoaXMudG9TdHJpbmcoKSA6ICdudWxsJzsKICB9Cn0pOwoKJHcoJ2FicyByb3VuZCBjZWlsIGZsb29yJykuZWFjaChmdW5jdGlvbihtZXRob2QpewogIE51bWJlci5wcm90b3R5cGVbbWV0aG9kXSA9IE1hdGhbbWV0aG9kXS5tZXRob2RpemUoKTsKfSk7CmZ1bmN0aW9uICRIKG9iamVjdCkgewogIHJldHVybiBuZXcgSGFzaChvYmplY3QpOwp9OwoKdmFyIEhhc2ggPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgKGZ1bmN0aW9uKCkgewoKICBmdW5jdGlvbiB0b1F1ZXJ5UGFpcihrZXksIHZhbHVlKSB7CiAgICBpZiAoT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuIGtleTsKICAgIHJldHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nLmludGVycHJldCh2YWx1ZSkpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB0aGlzLl9vYmplY3QgPSBPYmplY3QuaXNIYXNoKG9iamVjdCkgPyBvYmplY3QudG9PYmplY3QoKSA6IE9iamVjdC5jbG9uZShvYmplY3QpOwogICAgfSwKCiAgICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX29iamVjdCkgewogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX29iamVjdFtrZXldLCBwYWlyID0gW2tleSwgdmFsdWVdOwogICAgICAgIHBhaXIua2V5ID0ga2V5OwogICAgICAgIHBhaXIudmFsdWUgPSB2YWx1ZTsKICAgICAgICBpdGVyYXRvcihwYWlyKTsKICAgICAgfQogICAgfSwKCiAgICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGdldDogZnVuY3Rpb24oa2V5KSB7CiAgICAgIHJldHVybiB0aGlzLl9vYmplY3Rba2V5XTsKICAgIH0sCgogICAgdW5zZXQ6IGZ1bmN0aW9uKGtleSkgewogICAgICB2YXIgdmFsdWUgPSB0aGlzLl9vYmplY3Rba2V5XTsKICAgICAgZGVsZXRlIHRoaXMuX29iamVjdFtrZXldOwogICAgICByZXR1cm4gdmFsdWU7CiAgICB9LAoKICAgIHRvT2JqZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE9iamVjdC5jbG9uZSh0aGlzLl9vYmplY3QpOwogICAgfSwKCiAgICBrZXlzOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucGx1Y2soJ2tleScpOwogICAgfSwKCiAgICB2YWx1ZXM6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5wbHVjaygndmFsdWUnKTsKICAgIH0sCgogICAgaW5kZXg6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgIHZhciBtYXRjaCA9IHRoaXMuZGV0ZWN0KGZ1bmN0aW9uKHBhaXIpIHsKICAgICAgICByZXR1cm4gcGFpci52YWx1ZSA9PT0gdmFsdWU7CiAgICAgIH0pOwogICAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2gua2V5OwogICAgfSwKCiAgICBtZXJnZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKCkudXBkYXRlKG9iamVjdCk7CiAgICB9LAoKICAgIHVwZGF0ZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgIHJldHVybiBuZXcgSGFzaChvYmplY3QpLmluamVjdCh0aGlzLCBmdW5jdGlvbihyZXN1bHQsIHBhaXIpIHsKICAgICAgICByZXN1bHQuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9KTsKICAgIH0sCgogICAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgdmFyIGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwYWlyLmtleSksIHZhbHVlcyA9IHBhaXIudmFsdWU7CgogICAgICAgIGlmICh2YWx1ZXMgJiYgdHlwZW9mIHZhbHVlcyA9PSAnb2JqZWN0JykgewogICAgICAgICAgaWYgKE9iamVjdC5pc0FycmF5KHZhbHVlcykpCiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMubWFwKHRvUXVlcnlQYWlyLmN1cnJ5KGtleSkpLmpvaW4oJyYnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRvUXVlcnlQYWlyKGtleSwgdmFsdWVzKTsKICAgICAgfSkuam9pbignJicpOwogICAgfSwKCiAgICBpbnNwZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuICcjPEhhc2g6eycgKyB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJuIHBhaXIubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCc6ICcpOwogICAgICB9KS5qb2luKCcsICcpICsgJ30+JzsKICAgIH0sCgogICAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE9iamVjdC50b0pTT04odGhpcy50b09iamVjdCgpKTsKICAgIH0sCgogICAgY2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IEhhc2godGhpcyk7CiAgICB9CiAgfQp9KSgpKTsKCkhhc2gucHJvdG90eXBlLnRvVGVtcGxhdGVSZXBsYWNlbWVudHMgPSBIYXNoLnByb3RvdHlwZS50b09iamVjdDsKSGFzaC5mcm9tID0gJEg7CnZhciBPYmplY3RSYW5nZSA9IENsYXNzLmNyZWF0ZShFbnVtZXJhYmxlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZXhjbHVzaXZlKSB7CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CiAgICB0aGlzLmVuZCA9IGVuZDsKICAgIHRoaXMuZXhjbHVzaXZlID0gZXhjbHVzaXZlOwogIH0sCgogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy5zdGFydDsKICAgIHdoaWxlICh0aGlzLmluY2x1ZGUodmFsdWUpKSB7CiAgICAgIGl0ZXJhdG9yKHZhbHVlKTsKICAgICAgdmFsdWUgPSB2YWx1ZS5zdWNjKCk7CiAgICB9CiAgfSwKCiAgaW5jbHVkZTogZnVuY3Rpb24odmFsdWUpIHsKICAgIGlmICh2YWx1ZSA8IHRoaXMuc3RhcnQpCiAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmICh0aGlzLmV4Y2x1c2l2ZSkKICAgICAgcmV0dXJuIHZhbHVlIDwgdGhpcy5lbmQ7CiAgICByZXR1cm4gdmFsdWUgPD0gdGhpcy5lbmQ7CiAgfQp9KTsKCnZhciAkUiA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIGV4Y2x1c2l2ZSkgewogIHJldHVybiBuZXcgT2JqZWN0UmFuZ2Uoc3RhcnQsIGVuZCwgZXhjbHVzaXZlKTsKfTsKCnZhciBBamF4ID0gewogIGdldFRyYW5zcG9ydDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gVHJ5LnRoZXNlKAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQJyl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01pY3Jvc29mdC5YTUxIVFRQJyl9CiAgICApIHx8IGZhbHNlOwogIH0sCgogIGFjdGl2ZVJlcXVlc3RDb3VudDogMAp9OwoKQWpheC5SZXNwb25kZXJzID0gewogIHJlc3BvbmRlcnM6IFtdLAoKICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgIHRoaXMucmVzcG9uZGVycy5fZWFjaChpdGVyYXRvcik7CiAgfSwKCiAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHJlc3BvbmRlcikgewogICAgaWYgKCF0aGlzLmluY2x1ZGUocmVzcG9uZGVyKSkKICAgICAgdGhpcy5yZXNwb25kZXJzLnB1c2gocmVzcG9uZGVyKTsKICB9LAoKICB1bnJlZ2lzdGVyOiBmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgIHRoaXMucmVzcG9uZGVycyA9IHRoaXMucmVzcG9uZGVycy53aXRob3V0KHJlc3BvbmRlcik7CiAgfSwKCiAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGNhbGxiYWNrLCByZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb24pIHsKICAgIHRoaXMuZWFjaChmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlc3BvbmRlcltjYWxsYmFja10pKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJlc3BvbmRlcltjYWxsYmFja10uYXBwbHkocmVzcG9uZGVyLCBbcmVxdWVzdCwgdHJhbnNwb3J0LCBqc29uXSk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyB9CiAgICAgIH0KICAgIH0pOwogIH0KfTsKCk9iamVjdC5leHRlbmQoQWpheC5SZXNwb25kZXJzLCBFbnVtZXJhYmxlKTsKCkFqYXguUmVzcG9uZGVycy5yZWdpc3Rlcih7CiAgb25DcmVhdGU6ICAgZnVuY3Rpb24oKSB7IEFqYXguYWN0aXZlUmVxdWVzdENvdW50KysgfSwKICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsgQWpheC5hY3RpdmVSZXF1ZXN0Q291bnQtLSB9Cn0pOwoKQWpheC5CYXNlID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSB7CiAgICAgIG1ldGhvZDogICAgICAgJ3Bvc3QnLAogICAgICBhc3luY2hyb25vdXM6IHRydWUsCiAgICAgIGNvbnRlbnRUeXBlOiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgIGVuY29kaW5nOiAgICAgJ1VURi04JywKICAgICAgcGFyYW1ldGVyczogICAnJywKICAgICAgZXZhbEpTT046ICAgICB0cnVlLAogICAgICBldmFsSlM6ICAgICAgIHRydWUKICAgIH07CiAgICBPYmplY3QuZXh0ZW5kKHRoaXMub3B0aW9ucywgb3B0aW9ucyB8fCB7IH0pOwoKICAgIHRoaXMub3B0aW9ucy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kLnRvTG93ZXJDYXNlKCk7CgogICAgaWYgKE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9RdWVyeVBhcmFtcygpOwogICAgZWxzZSBpZiAoT2JqZWN0LmlzSGFzaCh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9PYmplY3QoKTsKICB9Cn0pOwoKQWpheC5SZXF1ZXN0ID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewogIF9jb21wbGV0ZTogZmFsc2UsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgdXJsLCBvcHRpb25zKSB7CiAgICAkc3VwZXIob3B0aW9ucyk7CiAgICB0aGlzLnRyYW5zcG9ydCA9IEFqYXguZ2V0VHJhbnNwb3J0KCk7CiAgICB0aGlzLnJlcXVlc3QodXJsKTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbih1cmwpIHsKICAgIHRoaXMudXJsID0gdXJsOwogICAgdGhpcy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kOwogICAgdmFyIHBhcmFtcyA9IE9iamVjdC5jbG9uZSh0aGlzLm9wdGlvbnMucGFyYW1ldGVycyk7CgogICAgaWYgKCFbJ2dldCcsICdwb3N0J10uaW5jbHVkZSh0aGlzLm1ldGhvZCkpIHsKICAgICAgLy8gc2ltdWxhdGUgb3RoZXIgdmVyYnMgb3ZlciBwb3N0CiAgICAgIHBhcmFtc1snX21ldGhvZCddID0gdGhpcy5tZXRob2Q7CiAgICAgIHRoaXMubWV0aG9kID0gJ3Bvc3QnOwogICAgfQoKICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtczsKCiAgICBpZiAocGFyYW1zID0gT2JqZWN0LnRvUXVlcnlTdHJpbmcocGFyYW1zKSkgewogICAgICAvLyB3aGVuIEdFVCwgYXBwZW5kIHBhcmFtZXRlcnMgdG8gVVJMCiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PSAnZ2V0JykKICAgICAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZSgnPycpID8gJyYnIDogJz8nKSArIHBhcmFtczsKICAgICAgZWxzZSBpZiAoL0tvbnF1ZXJvcnxTYWZhcml8S0hUTUwvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpCiAgICAgICAgcGFyYW1zICs9ICcmXz0nOwogICAgfQoKICAgIHRyeSB7CiAgICAgIHZhciByZXNwb25zZSA9IG5ldyBBamF4LlJlc3BvbnNlKHRoaXMpOwogICAgICBpZiAodGhpcy5vcHRpb25zLm9uQ3JlYXRlKSB0aGlzLm9wdGlvbnMub25DcmVhdGUocmVzcG9uc2UpOwogICAgICBBamF4LlJlc3BvbmRlcnMuZGlzcGF0Y2goJ29uQ3JlYXRlJywgdGhpcywgcmVzcG9uc2UpOwoKICAgICAgdGhpcy50cmFuc3BvcnQub3Blbih0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnVybCwKICAgICAgICB0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3VzKTsKCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3VzKSB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUuYmluZCh0aGlzKS5kZWZlcigxKTsKCiAgICAgIHRoaXMudHJhbnNwb3J0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpOwogICAgICB0aGlzLnNldFJlcXVlc3RIZWFkZXJzKCk7CgogICAgICB0aGlzLmJvZHkgPSB0aGlzLm1ldGhvZCA9PSAncG9zdCcgPyAodGhpcy5vcHRpb25zLnBvc3RCb2R5IHx8IHBhcmFtcykgOiBudWxsOwogICAgICB0aGlzLnRyYW5zcG9ydC5zZW5kKHRoaXMuYm9keSk7CgogICAgICAvKiBGb3JjZSBGaXJlZm94IHRvIGhhbmRsZSByZWFkeSBzdGF0ZSA0IGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cyAqLwogICAgICBpZiAoIXRoaXMub3B0aW9ucy5hc3luY2hyb25vdXMgJiYgdGhpcy50cmFuc3BvcnQub3ZlcnJpZGVNaW1lVHlwZSkKICAgICAgICB0aGlzLm9uU3RhdGVDaGFuZ2UoKTsKCiAgICB9CiAgICBjYXRjaCAoZSkgewogICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIG9uU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlYWR5U3RhdGUgPSB0aGlzLnRyYW5zcG9ydC5yZWFkeVN0YXRlOwogICAgaWYgKHJlYWR5U3RhdGUgPiAxICYmICEoKHJlYWR5U3RhdGUgPT0gNCkgJiYgdGhpcy5fY29tcGxldGUpKQogICAgICB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUodGhpcy50cmFuc3BvcnQucmVhZHlTdGF0ZSk7CiAgfSwKCiAgc2V0UmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkgewogICAgdmFyIGhlYWRlcnMgPSB7CiAgICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hNTEh0dHBSZXF1ZXN0JywKICAgICAgJ1gtUHJvdG90eXBlLVZlcnNpb24nOiBQcm90b3R5cGUuVmVyc2lvbiwKICAgICAgJ0FjY2VwdCc6ICd0ZXh0L2phdmFzY3JpcHQsIHRleHQvaHRtbCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8qJwogICAgfTsKCiAgICBpZiAodGhpcy5tZXRob2QgPT0gJ3Bvc3QnKSB7CiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtdHlwZSddID0gdGhpcy5vcHRpb25zLmNvbnRlbnRUeXBlICsKICAgICAgICAodGhpcy5vcHRpb25zLmVuY29kaW5nID8gJzsgY2hhcnNldD0nICsgdGhpcy5vcHRpb25zLmVuY29kaW5nIDogJycpOwoKICAgICAgLyogRm9yY2UgIkNvbm5lY3Rpb246IGNsb3NlIiBmb3Igb2xkZXIgTW96aWxsYSBicm93c2VycyB0byB3b3JrCiAgICAgICAqIGFyb3VuZCBhIGJ1ZyB3aGVyZSBYTUxIdHRwUmVxdWVzdCBzZW5kcyBhbiBpbmNvcnJlY3QKICAgICAgICogQ29udGVudC1sZW5ndGggaGVhZGVyLiBTZWUgTW96aWxsYSBCdWd6aWxsYSAjMjQ2NjUxLgogICAgICAgKi8KICAgICAgaWYgKHRoaXMudHJhbnNwb3J0Lm92ZXJyaWRlTWltZVR5cGUgJiYKICAgICAgICAgIChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9HZWNrb1wvKFxkezR9KS8pIHx8IFswLDIwMDVdKVsxXSA8IDIwMDUpCiAgICAgICAgICAgIGhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdjbG9zZSc7CiAgICB9CgogICAgLy8gdXNlci1kZWZpbmVkIGhlYWRlcnMKICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlcXVlc3RIZWFkZXJzID09ICdvYmplY3QnKSB7CiAgICAgIHZhciBleHRyYXMgPSB0aGlzLm9wdGlvbnMucmVxdWVzdEhlYWRlcnM7CgogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oZXh0cmFzLnB1c2gpKQogICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBleHRyYXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDIpCiAgICAgICAgICBoZWFkZXJzW2V4dHJhc1tpXV0gPSBleHRyYXNbaSsxXTsKICAgICAgZWxzZQogICAgICAgICRIKGV4dHJhcykuZWFjaChmdW5jdGlvbihwYWlyKSB7IGhlYWRlcnNbcGFpci5rZXldID0gcGFpci52YWx1ZSB9KTsKICAgIH0KCiAgICBmb3IgKHZhciBuYW1lIGluIGhlYWRlcnMpCiAgICAgIHRoaXMudHJhbnNwb3J0LnNldFJlcXVlc3RIZWFkZXIobmFtZSwgaGVhZGVyc1tuYW1lXSk7CiAgfSwKCiAgc3VjY2VzczogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RhdHVzID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgIHJldHVybiAhc3RhdHVzIHx8IChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCk7CiAgfSwKCiAgZ2V0U3RhdHVzOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5zdGF0dXMgfHwgMDsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIDAgfQogIH0sCgogIHJlc3BvbmRUb1JlYWR5U3RhdGU6IGZ1bmN0aW9uKHJlYWR5U3RhdGUpIHsKICAgIHZhciBzdGF0ZSA9IEFqYXguUmVxdWVzdC5FdmVudHNbcmVhZHlTdGF0ZV0sIHJlc3BvbnNlID0gbmV3IEFqYXguUmVzcG9uc2UodGhpcyk7CgogICAgaWYgKHN0YXRlID09ICdDb21wbGV0ZScpIHsKICAgICAgdHJ5IHsKICAgICAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7CiAgICAgICAgKHRoaXMub3B0aW9uc1snb24nICsgcmVzcG9uc2Uuc3RhdHVzXQogICAgICAgICB8fCB0aGlzLm9wdGlvbnNbJ29uJyArICh0aGlzLnN1Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6ICdGYWlsdXJlJyldCiAgICAgICAgIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgICB9CgogICAgICB2YXIgY29udGVudFR5cGUgPSByZXNwb25zZS5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmV2YWxKUyA9PSAnZm9yY2UnCiAgICAgICAgICB8fCAodGhpcy5vcHRpb25zLmV2YWxKUyAmJiB0aGlzLmlzU2FtZU9yaWdpbigpICYmIGNvbnRlbnRUeXBlCiAgICAgICAgICAmJiBjb250ZW50VHlwZS5tYXRjaCgvXlxzKih0ZXh0fGFwcGxpY2F0aW9uKVwvKHgtKT8oamF2YXxlY21hKXNjcmlwdCg7LiopP1xzKiQvaSkpKQogICAgICAgIHRoaXMuZXZhbFJlc3BvbnNlKCk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgKHRoaXMub3B0aW9uc1snb24nICsgc3RhdGVdIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIEFqYXguUmVzcG9uZGVycy5kaXNwYXRjaCgnb24nICsgc3RhdGUsIHRoaXMsIHJlc3BvbnNlLCByZXNwb25zZS5oZWFkZXJKU09OKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KCiAgICBpZiAoc3RhdGUgPT0gJ0NvbXBsZXRlJykgewogICAgICAvLyBhdm9pZCBtZW1vcnkgbGVhayBpbiBNU0lFOiBjbGVhbiB1cAogICAgICB0aGlzLnRyYW5zcG9ydC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgIH0KICB9LAoKICBpc1NhbWVPcmlnaW46IGZ1bmN0aW9uKCkgewogICAgdmFyIG0gPSB0aGlzLnVybC5tYXRjaCgvXlxzKmh0dHBzPzpcL1wvW15cL10qLyk7CiAgICByZXR1cm4gIW0gfHwgKG1bMF0gPT0gJyN7cHJvdG9jb2x9Ly8je2RvbWFpbn0je3BvcnR9Jy5pbnRlcnBvbGF0ZSh7CiAgICAgIHByb3RvY29sOiBsb2NhdGlvbi5wcm90b2NvbCwKICAgICAgZG9tYWluOiBkb2N1bWVudC5kb21haW4sCiAgICAgIHBvcnQ6IGxvY2F0aW9uLnBvcnQgPyAnOicgKyBsb2NhdGlvbi5wb3J0IDogJycKICAgIH0pKTsKICB9LAoKICBnZXRIZWFkZXI6IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRSZXNwb25zZUhlYWRlcihuYW1lKSB8fCBudWxsOwogICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbCB9CiAgfSwKCiAgZXZhbFJlc3BvbnNlOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBldmFsKCh0aGlzLnRyYW5zcG9ydC5yZXNwb25zZVRleHQgfHwgJycpLnVuZmlsdGVySlNPTigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9LAoKICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7CiAgICAodGhpcy5vcHRpb25zLm9uRXhjZXB0aW9uIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKSh0aGlzLCBleGNlcHRpb24pOwogICAgQWpheC5SZXNwb25kZXJzLmRpc3BhdGNoKCdvbkV4Y2VwdGlvbicsIHRoaXMsIGV4Y2VwdGlvbik7CiAgfQp9KTsKCkFqYXguUmVxdWVzdC5FdmVudHMgPQogIFsnVW5pbml0aWFsaXplZCcsICdMb2FkaW5nJywgJ0xvYWRlZCcsICdJbnRlcmFjdGl2ZScsICdDb21wbGV0ZSddOwoKQWpheC5SZXNwb25zZSA9IENsYXNzLmNyZWF0ZSh7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocmVxdWVzdCl7CiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgdmFyIHRyYW5zcG9ydCAgPSB0aGlzLnRyYW5zcG9ydCAgPSByZXF1ZXN0LnRyYW5zcG9ydCwKICAgICAgICByZWFkeVN0YXRlID0gdGhpcy5yZWFkeVN0YXRlID0gdHJhbnNwb3J0LnJlYWR5U3RhdGU7CgogICAgaWYoKHJlYWR5U3RhdGUgPiAyICYmICFQcm90b3R5cGUuQnJvd3Nlci5JRSkgfHwgcmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgIHRoaXMuc3RhdHVzICAgICAgID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgICAgdGhpcy5zdGF0dXNUZXh0ICAgPSB0aGlzLmdldFN0YXR1c1RleHQoKTsKICAgICAgdGhpcy5yZXNwb25zZVRleHQgPSBTdHJpbmcuaW50ZXJwcmV0KHRyYW5zcG9ydC5yZXNwb25zZVRleHQpOwogICAgICB0aGlzLmhlYWRlckpTT04gICA9IHRoaXMuX2dldEhlYWRlckpTT04oKTsKICAgIH0KCiAgICBpZihyZWFkeVN0YXRlID09IDQpIHsKICAgICAgdmFyIHhtbCA9IHRyYW5zcG9ydC5yZXNwb25zZVhNTDsKICAgICAgdGhpcy5yZXNwb25zZVhNTCAgPSBPYmplY3QuaXNVbmRlZmluZWQoeG1sKSA/IG51bGwgOiB4bWw7CiAgICAgIHRoaXMucmVzcG9uc2VKU09OID0gdGhpcy5fZ2V0UmVzcG9uc2VKU09OKCk7CiAgICB9CiAgfSwKCiAgc3RhdHVzOiAgICAgIDAsCiAgc3RhdHVzVGV4dDogJycsCgogIGdldFN0YXR1czogQWpheC5SZXF1ZXN0LnByb3RvdHlwZS5nZXRTdGF0dXMsCgogIGdldFN0YXR1c1RleHQ6IGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LnN0YXR1c1RleHQgfHwgJyc7CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiAnJyB9CiAgfSwKCiAgZ2V0SGVhZGVyOiBBamF4LlJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciwKCiAgZ2V0QWxsSGVhZGVyczogZnVuY3Rpb24oKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGwgfQogIH0sCgogIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihuYW1lKSB7CiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0UmVzcG9uc2VIZWFkZXIobmFtZSk7CiAgfSwKCiAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICB9LAoKICBfZ2V0SGVhZGVySlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIganNvbiA9IHRoaXMuZ2V0SGVhZGVyKCdYLUpTT04nKTsKICAgIGlmICghanNvbikgcmV0dXJuIG51bGw7CiAgICBqc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShqc29uKSk7CiAgICB0cnkgewogICAgICByZXR1cm4ganNvbi5ldmFsSlNPTih0aGlzLnJlcXVlc3Qub3B0aW9ucy5zYW5pdGl6ZUpTT04gfHwKICAgICAgICAhdGhpcy5yZXF1ZXN0LmlzU2FtZU9yaWdpbigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5yZXF1ZXN0LmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIF9nZXRSZXNwb25zZUpTT046IGZ1bmN0aW9uKCkgewogICAgdmFyIG9wdGlvbnMgPSB0aGlzLnJlcXVlc3Qub3B0aW9uczsKICAgIGlmICghb3B0aW9ucy5ldmFsSlNPTiB8fCAob3B0aW9ucy5ldmFsSlNPTiAhPSAnZm9yY2UnICYmCiAgICAgICEodGhpcy5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpIHx8ICcnKS5pbmNsdWRlKCdhcHBsaWNhdGlvbi9qc29uJykpIHx8CiAgICAgICAgdGhpcy5yZXNwb25zZVRleHQuYmxhbmsoKSkKICAgICAgICAgIHJldHVybiBudWxsOwogICAgdHJ5IHsKICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VUZXh0LmV2YWxKU09OKG9wdGlvbnMuc2FuaXRpemVKU09OIHx8CiAgICAgICAgIXRoaXMucmVxdWVzdC5pc1NhbWVPcmlnaW4oKSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMucmVxdWVzdC5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9Cn0pOwoKQWpheC5VcGRhdGVyID0gQ2xhc3MuY3JlYXRlKEFqYXguUmVxdWVzdCwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgIHRoaXMuY29udGFpbmVyID0gewogICAgICBzdWNjZXNzOiAoY29udGFpbmVyLnN1Y2Nlc3MgfHwgY29udGFpbmVyKSwKICAgICAgZmFpbHVyZTogKGNvbnRhaW5lci5mYWlsdXJlIHx8IChjb250YWluZXIuc3VjY2VzcyA/IG51bGwgOiBjb250YWluZXIpKQogICAgfTsKCiAgICBvcHRpb25zID0gT2JqZWN0LmNsb25lKG9wdGlvbnMpOwogICAgdmFyIG9uQ29tcGxldGUgPSBvcHRpb25zLm9uQ29tcGxldGU7CiAgICBvcHRpb25zLm9uQ29tcGxldGUgPSAoZnVuY3Rpb24ocmVzcG9uc2UsIGpzb24pIHsKICAgICAgdGhpcy51cGRhdGVDb250ZW50KHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7CiAgICAgIGlmIChPYmplY3QuaXNGdW5jdGlvbihvbkNvbXBsZXRlKSkgb25Db21wbGV0ZShyZXNwb25zZSwganNvbik7CiAgICB9KS5iaW5kKHRoaXMpOwoKICAgICRzdXBlcih1cmwsIG9wdGlvbnMpOwogIH0sCgogIHVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc3BvbnNlVGV4dCkgewogICAgdmFyIHJlY2VpdmVyID0gdGhpcy5jb250YWluZXJbdGhpcy5zdWNjZXNzKCkgPyAnc3VjY2VzcycgOiAnZmFpbHVyZSddLAogICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgogICAgaWYgKCFvcHRpb25zLmV2YWxTY3JpcHRzKSByZXNwb25zZVRleHQgPSByZXNwb25zZVRleHQuc3RyaXBTY3JpcHRzKCk7CgogICAgaWYgKHJlY2VpdmVyID0gJChyZWNlaXZlcikpIHsKICAgICAgaWYgKG9wdGlvbnMuaW5zZXJ0aW9uKSB7CiAgICAgICAgaWYgKE9iamVjdC5pc1N0cmluZyhvcHRpb25zLmluc2VydGlvbikpIHsKICAgICAgICAgIHZhciBpbnNlcnRpb24gPSB7IH07IGluc2VydGlvbltvcHRpb25zLmluc2VydGlvbl0gPSByZXNwb25zZVRleHQ7CiAgICAgICAgICByZWNlaXZlci5pbnNlcnQoaW5zZXJ0aW9uKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBvcHRpb25zLmluc2VydGlvbihyZWNlaXZlciwgcmVzcG9uc2VUZXh0KTsKICAgICAgfQogICAgICBlbHNlIHJlY2VpdmVyLnVwZGF0ZShyZXNwb25zZVRleHQpOwogICAgfQogIH0KfSk7CgpBamF4LlBlcmlvZGljYWxVcGRhdGVyID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgICRzdXBlcihvcHRpb25zKTsKICAgIHRoaXMub25Db21wbGV0ZSA9IHRoaXMub3B0aW9ucy5vbkNvbXBsZXRlOwoKICAgIHRoaXMuZnJlcXVlbmN5ID0gKHRoaXMub3B0aW9ucy5mcmVxdWVuY3kgfHwgMik7CiAgICB0aGlzLmRlY2F5ID0gKHRoaXMub3B0aW9ucy5kZWNheSB8fCAxKTsKCiAgICB0aGlzLnVwZGF0ZXIgPSB7IH07CiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgIHRoaXMudXJsID0gdXJsOwoKICAgIHRoaXMuc3RhcnQoKTsKICB9LAoKICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLm9wdGlvbnMub25Db21wbGV0ZSA9IHRoaXMudXBkYXRlQ29tcGxldGUuYmluZCh0aGlzKTsKICAgIHRoaXMub25UaW1lckV2ZW50KCk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnVwZGF0ZXIub3B0aW9ucy5vbkNvbXBsZXRlID0gdW5kZWZpbmVkOwogICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpOwogICAgKHRoaXMub25Db21wbGV0ZSB8fCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbikuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9LAoKICB1cGRhdGVDb21wbGV0ZTogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgIGlmICh0aGlzLm9wdGlvbnMuZGVjYXkpIHsKICAgICAgdGhpcy5kZWNheSA9IChyZXNwb25zZS5yZXNwb25zZVRleHQgPT0gdGhpcy5sYXN0VGV4dCA/CiAgICAgICAgdGhpcy5kZWNheSAqIHRoaXMub3B0aW9ucy5kZWNheSA6IDEpOwoKICAgICAgdGhpcy5sYXN0VGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlVGV4dDsKICAgIH0KICAgIHRoaXMudGltZXIgPSB0aGlzLm9uVGltZXJFdmVudC5iaW5kKHRoaXMpLmRlbGF5KHRoaXMuZGVjYXkgKiB0aGlzLmZyZXF1ZW5jeSk7CiAgfSwKCiAgb25UaW1lckV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMudXBkYXRlciA9IG5ldyBBamF4LlVwZGF0ZXIodGhpcy5jb250YWluZXIsIHRoaXMudXJsLCB0aGlzLm9wdGlvbnMpOwogIH0KfSk7CmZ1bmN0aW9uICQoZWxlbWVudCkgewogIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgZm9yICh2YXIgaSA9IDAsIGVsZW1lbnRzID0gW10sIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgZWxlbWVudHMucHVzaCgkKGFyZ3VtZW50c1tpXSkpOwogICAgcmV0dXJuIGVsZW1lbnRzOwogIH0KICBpZiAoT2JqZWN0LmlzU3RyaW5nKGVsZW1lbnQpKQogICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwogIHJldHVybiBFbGVtZW50LmV4dGVuZChlbGVtZW50KTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHsKICBkb2N1bWVudC5fZ2V0RWxlbWVudHNCeVhQYXRoID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgcGFyZW50RWxlbWVudCkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBxdWVyeSA9IGRvY3VtZW50LmV2YWx1YXRlKGV4cHJlc3Npb24sICQocGFyZW50RWxlbWVudCkgfHwgZG9jdW1lbnQsCiAgICAgIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBxdWVyeS5zbmFwc2hvdExlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICByZXN1bHRzLnB1c2goRWxlbWVudC5leHRlbmQocXVlcnkuc25hcHNob3RJdGVtKGkpKSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCmlmICghd2luZG93Lk5vZGUpIHZhciBOb2RlID0geyB9OwoKaWYgKCFOb2RlLkVMRU1FTlRfTk9ERSkgewogIC8vIERPTSBsZXZlbCAyIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwogIE9iamVjdC5leHRlbmQoTm9kZSwgewogICAgRUxFTUVOVF9OT0RFOiAxLAogICAgQVRUUklCVVRFX05PREU6IDIsCiAgICBURVhUX05PREU6IDMsCiAgICBDREFUQV9TRUNUSU9OX05PREU6IDQsCiAgICBFTlRJVFlfUkVGRVJFTkNFX05PREU6IDUsCiAgICBFTlRJVFlfTk9ERTogNiwKICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogNywKICAgIENPTU1FTlRfTk9ERTogOCwKICAgIERPQ1VNRU5UX05PREU6IDksCiAgICBET0NVTUVOVF9UWVBFX05PREU6IDEwLAogICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogMTEsCiAgICBOT1RBVElPTl9OT0RFOiAxMgogIH0pOwp9CgooZnVuY3Rpb24oKSB7CiAgdmFyIGVsZW1lbnQgPSB0aGlzLkVsZW1lbnQ7CiAgdGhpcy5FbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwgYXR0cmlidXRlcykgewogICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwgeyB9OwogICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIHZhciBjYWNoZSA9IEVsZW1lbnQuY2FjaGU7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUgJiYgYXR0cmlidXRlcy5uYW1lKSB7CiAgICAgIHRhZ05hbWUgPSAnPCcgKyB0YWdOYW1lICsgJyBuYW1lPSInICsgYXR0cmlidXRlcy5uYW1lICsgJyI+JzsKICAgICAgZGVsZXRlIGF0dHJpYnV0ZXMubmFtZTsKICAgICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKSwgYXR0cmlidXRlcyk7CiAgICB9CiAgICBpZiAoIWNhY2hlW3RhZ05hbWVdKSBjYWNoZVt0YWdOYW1lXSA9IEVsZW1lbnQuZXh0ZW5kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSkpOwogICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoY2FjaGVbdGFnTmFtZV0uY2xvbmVOb2RlKGZhbHNlKSwgYXR0cmlidXRlcyk7CiAgfTsKICBPYmplY3QuZXh0ZW5kKHRoaXMuRWxlbWVudCwgZWxlbWVudCB8fCB7IH0pOwp9KS5jYWxsKHdpbmRvdyk7CgpFbGVtZW50LmNhY2hlID0geyB9OwoKRWxlbWVudC5NZXRob2RzID0gewogIHZpc2libGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgIT0gJ25vbmUnOwogIH0sCgogIHRvZ2dsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBFbGVtZW50W0VsZW1lbnQudmlzaWJsZShlbGVtZW50KSA/ICdoaWRlJyA6ICdzaG93J10oZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBoaWRlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBzaG93OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB1cGRhdGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgaWYgKE9iamVjdC5pc0VsZW1lbnQoY29udGVudCkpIHJldHVybiBlbGVtZW50LnVwZGF0ZSgpLmluc2VydChjb250ZW50KTsKICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwogICAgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwogICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZXBsYWNlOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29udGVudC50b0VsZW1lbnQoKTsKICAgIGVsc2UgaWYgKCFPYmplY3QuaXNFbGVtZW50KGNvbnRlbnQpKSB7CiAgICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwogICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKICAgICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICAgIGNvbnRlbnQgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29udGVudC5zdHJpcFNjcmlwdHMoKSk7CiAgICB9CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgaW5zZXJ0OiBmdW5jdGlvbihlbGVtZW50LCBpbnNlcnRpb25zKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGluc2VydGlvbnMpIHx8IE9iamVjdC5pc051bWJlcihpbnNlcnRpb25zKSB8fAogICAgICAgIE9iamVjdC5pc0VsZW1lbnQoaW5zZXJ0aW9ucykgfHwgKGluc2VydGlvbnMgJiYgKGluc2VydGlvbnMudG9FbGVtZW50IHx8IGluc2VydGlvbnMudG9IVE1MKSkpCiAgICAgICAgICBpbnNlcnRpb25zID0ge2JvdHRvbTppbnNlcnRpb25zfTsKCiAgICB2YXIgY29udGVudCwgaW5zZXJ0LCB0YWdOYW1lLCBjaGlsZE5vZGVzOwoKICAgIGZvciAodmFyIHBvc2l0aW9uIGluIGluc2VydGlvbnMpIHsKICAgICAgY29udGVudCAgPSBpbnNlcnRpb25zW3Bvc2l0aW9uXTsKICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpOwogICAgICBpbnNlcnQgPSBFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnNbcG9zaXRpb25dOwoKICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICAgIGluc2VydChlbGVtZW50LCBjb250ZW50KTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CgogICAgICB0YWdOYW1lID0gKChwb3NpdGlvbiA9PSAnYmVmb3JlJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKQogICAgICAgID8gZWxlbWVudC5wYXJlbnROb2RlIDogZWxlbWVudCkudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgICAgY2hpbGROb2RlcyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKCiAgICAgIGlmIChwb3NpdGlvbiA9PSAndG9wJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKSBjaGlsZE5vZGVzLnJldmVyc2UoKTsKICAgICAgY2hpbGROb2Rlcy5lYWNoKGluc2VydC5jdXJyeShlbGVtZW50KSk7CgogICAgICBjb250ZW50LmV2YWxTY3JpcHRzLmJpbmQoY29udGVudCkuZGVmZXIoKTsKICAgIH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB3cmFwOiBmdW5jdGlvbihlbGVtZW50LCB3cmFwcGVyLCBhdHRyaWJ1dGVzKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KHdyYXBwZXIpKQogICAgICAkKHdyYXBwZXIpLndyaXRlQXR0cmlidXRlKGF0dHJpYnV0ZXMgfHwgeyB9KTsKICAgIGVsc2UgaWYgKE9iamVjdC5pc1N0cmluZyh3cmFwcGVyKSkgd3JhcHBlciA9IG5ldyBFbGVtZW50KHdyYXBwZXIsIGF0dHJpYnV0ZXMpOwogICAgZWxzZSB3cmFwcGVyID0gbmV3IEVsZW1lbnQoJ2RpdicsIHdyYXBwZXIpOwogICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVyLCBlbGVtZW50KTsKICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gd3JhcHBlcjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciByZXN1bHQgPSAnPCcgKyBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgICRIKHsnaWQnOiAnaWQnLCAnY2xhc3NOYW1lJzogJ2NsYXNzJ30pLmVhY2goZnVuY3Rpb24ocGFpcikgewogICAgICB2YXIgcHJvcGVydHkgPSBwYWlyLmZpcnN0KCksIGF0dHJpYnV0ZSA9IHBhaXIubGFzdCgpOwogICAgICB2YXIgdmFsdWUgPSAoZWxlbWVudFtwcm9wZXJ0eV0gfHwgJycpLnRvU3RyaW5nKCk7CiAgICAgIGlmICh2YWx1ZSkgcmVzdWx0ICs9ICcgJyArIGF0dHJpYnV0ZSArICc9JyArIHZhbHVlLmluc3BlY3QodHJ1ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQgKyAnPic7CiAgfSwKCiAgcmVjdXJzaXZlbHlDb2xsZWN0OiBmdW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0eSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXTsKICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudFtwcm9wZXJ0eV0pCiAgICAgIGlmIChlbGVtZW50Lm5vZGVUeXBlID09IDEpCiAgICAgICAgZWxlbWVudHMucHVzaChFbGVtZW50LmV4dGVuZChlbGVtZW50KSk7CiAgICByZXR1cm4gZWxlbWVudHM7CiAgfSwKCiAgYW5jZXN0b3JzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3QoJ3BhcmVudE5vZGUnKTsKICB9LAoKICBkZXNjZW5kYW50czogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc2VsZWN0KCIqIik7CiAgfSwKCiAgZmlyc3REZXNjZW5kYW50OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIHJldHVybiAkKGVsZW1lbnQpOwogIH0sCgogIGltbWVkaWF0ZURlc2NlbmRhbnRzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBpZiAoIShlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkKSkgcmV0dXJuIFtdOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIGlmIChlbGVtZW50KSByZXR1cm4gW2VsZW1lbnRdLmNvbmNhdCgkKGVsZW1lbnQpLm5leHRTaWJsaW5ncygpKTsKICAgIHJldHVybiBbXTsKICB9LAoKICBwcmV2aW91c1NpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3QoJ3ByZXZpb3VzU2libGluZycpOwogIH0sCgogIG5leHRTaWJsaW5nczogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkucmVjdXJzaXZlbHlDb2xsZWN0KCduZXh0U2libGluZycpOwogIH0sCgogIHNpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHJldHVybiBlbGVtZW50LnByZXZpb3VzU2libGluZ3MoKS5yZXZlcnNlKCkuY29uY2F0KGVsZW1lbnQubmV4dFNpYmxpbmdzKCkpOwogIH0sCgogIG1hdGNoOiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgewogICAgaWYgKE9iamVjdC5pc1N0cmluZyhzZWxlY3RvcikpCiAgICAgIHNlbGVjdG9yID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIHJldHVybiBzZWxlY3Rvci5tYXRjaCgkKGVsZW1lbnQpKTsKICB9LAoKICB1cDogZnVuY3Rpb24oZWxlbWVudCwgZXhwcmVzc2lvbiwgaW5kZXgpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgcmV0dXJuICQoZWxlbWVudC5wYXJlbnROb2RlKTsKICAgIHZhciBhbmNlc3RvcnMgPSBlbGVtZW50LmFuY2VzdG9ycygpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGFuY2VzdG9yc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KGFuY2VzdG9ycywgZXhwcmVzc2lvbiwgaW5kZXgpOwogIH0sCgogIGRvd246IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHJldHVybiBlbGVtZW50LmZpcnN0RGVzY2VuZGFudCgpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGVsZW1lbnQuZGVzY2VuZGFudHMoKVtleHByZXNzaW9uXSA6CiAgICAgIGVsZW1lbnQuc2VsZWN0KGV4cHJlc3Npb24pW2luZGV4IHx8IDBdOwogIH0sCgogIHByZXZpb3VzOiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKGVsZW1lbnQpKTsKICAgIHZhciBwcmV2aW91c1NpYmxpbmdzID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gcHJldmlvdXNTaWJsaW5nc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KHByZXZpb3VzU2libGluZ3MsIGV4cHJlc3Npb24sIGluZGV4KTsKICB9LAoKICBuZXh0OiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVudFNpYmxpbmcoZWxlbWVudCkpOwogICAgdmFyIG5leHRTaWJsaW5ncyA9IGVsZW1lbnQubmV4dFNpYmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gbmV4dFNpYmxpbmdzW2V4cHJlc3Npb25dIDoKICAgICAgU2VsZWN0b3IuZmluZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNzaW9uLCBpbmRleCk7CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbigpIHsKICAgIHZhciBhcmdzID0gJEEoYXJndW1lbnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgpKTsKICAgIHJldHVybiBTZWxlY3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50LCBhcmdzKTsKICB9LAoKICBhZGphY2VudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3VtZW50cyksIGVsZW1lbnQgPSAkKGFyZ3Muc2hpZnQoKSk7CiAgICByZXR1cm4gU2VsZWN0b3IuZmluZENoaWxkRWxlbWVudHMoZWxlbWVudC5wYXJlbnROb2RlLCBhcmdzKS53aXRob3V0KGVsZW1lbnQpOwogIH0sCgogIGlkZW50aWZ5OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBpZCA9IGVsZW1lbnQucmVhZEF0dHJpYnV0ZSgnaWQnKSwgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBpZiAoaWQpIHJldHVybiBpZDsKICAgIGRvIHsgaWQgPSAnYW5vbnltb3VzX2VsZW1lbnRfJyArIHNlbGYuY291bnRlcisrIH0gd2hpbGUgKCQoaWQpKTsKICAgIGVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoJ2lkJywgaWQpOwogICAgcmV0dXJuIGlkOwogIH0sCgogIHJlYWRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgICAgIHZhciB0ID0gRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQ7CiAgICAgIGlmICh0LnZhbHVlc1tuYW1lXSkgcmV0dXJuIHQudmFsdWVzW25hbWVdKGVsZW1lbnQsIG5hbWUpOwogICAgICBpZiAodC5uYW1lc1tuYW1lXSkgbmFtZSA9IHQubmFtZXNbbmFtZV07CiAgICAgIGlmIChuYW1lLmluY2x1ZGUoJzonKSkgewogICAgICAgIHJldHVybiAoIWVsZW1lbnQuYXR0cmlidXRlcyB8fCAhZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdKSA/IG51bGwgOgogICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0udmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsKICB9LAoKICB3cml0ZUF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGF0dHJpYnV0ZXMgPSB7IH0sIHQgPSBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGU7CgogICAgaWYgKHR5cGVvZiBuYW1lID09ICdvYmplY3QnKSBhdHRyaWJ1dGVzID0gbmFtZTsKICAgIGVsc2UgYXR0cmlidXRlc1tuYW1lXSA9IE9iamVjdC5pc1VuZGVmaW5lZCh2YWx1ZSkgPyB0cnVlIDogdmFsdWU7CgogICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7CiAgICAgIG5hbWUgPSB0Lm5hbWVzW2F0dHJdIHx8IGF0dHI7CiAgICAgIHZhbHVlID0gYXR0cmlidXRlc1thdHRyXTsKICAgICAgaWYgKHQudmFsdWVzW2F0dHJdKSBuYW1lID0gdC52YWx1ZXNbYXR0cl0oZWxlbWVudCwgdmFsdWUpOwogICAgICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsKQogICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkKICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCBuYW1lKTsKICAgICAgZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICB9CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAgfSwKCiAgZ2V0V2lkdGg6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBjbGFzc05hbWVzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVsZW1lbnQuQ2xhc3NOYW1lcyhlbGVtZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lOwogICAgcmV0dXJuIChlbGVtZW50Q2xhc3NOYW1lLmxlbmd0aCA+IDAgJiYgKGVsZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8CiAgICAgIG5ldyBSZWdFeHAoIihefFxccykiICsgY2xhc3NOYW1lICsgIihcXHN8JCkiKS50ZXN0KGVsZW1lbnRDbGFzc05hbWUpKSk7CiAgfSwKCiAgYWRkQ2xhc3NOYW1lOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAkKGVsZW1lbnQpKSkgcmV0dXJuOwogICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05hbWUpKQogICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAoZWxlbWVudC5jbGFzc05hbWUgPyAnICcgOiAnJykgKyBjbGFzc05hbWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UoCiAgICAgIG5ldyBSZWdFeHAoIihefFxccyspIiArIGNsYXNzTmFtZSArICIoXFxzK3wkKSIpLCAnICcpLnN0cmlwKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB0b2dnbGVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICByZXR1cm4gZWxlbWVudFtlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05hbWUpID8KICAgICAgJ3JlbW92ZUNsYXNzTmFtZScgOiAnYWRkQ2xhc3NOYW1lJ10oY2xhc3NOYW1lKTsKICB9LAoKICAvLyByZW1vdmVzIHdoaXRlc3BhY2Utb25seSB0ZXh0IG5vZGUgY2hpbGRyZW4KICBjbGVhbldoaXRlc3BhY2U6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG5vZGUgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAobm9kZSkgewogICAgICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzICYmICEvXFMvLnRlc3Qobm9kZS5ub2RlVmFsdWUpKQogICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgIG5vZGUgPSBuZXh0Tm9kZTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVtcHR5OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5pbm5lckhUTUwuYmxhbmsoKTsKICB9LAoKICBkZXNjZW5kYW50T2Y6IGZ1bmN0aW9uKGVsZW1lbnQsIGFuY2VzdG9yKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KSwgYW5jZXN0b3IgPSAkKGFuY2VzdG9yKTsKICAgIHZhciBvcmlnaW5hbEFuY2VzdG9yID0gYW5jZXN0b3I7CgogICAgaWYgKGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24pCiAgICAgIHJldHVybiAoZWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhbmNlc3RvcikgJiA4KSA9PT0gODsKCiAgICBpZiAoZWxlbWVudC5zb3VyY2VJbmRleCAmJiAhUHJvdG90eXBlLkJyb3dzZXIuT3BlcmEpIHsKICAgICAgdmFyIGUgPSBlbGVtZW50LnNvdXJjZUluZGV4LCBhID0gYW5jZXN0b3Iuc291cmNlSW5kZXgsCiAgICAgICBuZXh0QW5jZXN0b3IgPSBhbmNlc3Rvci5uZXh0U2libGluZzsKICAgICAgaWYgKCFuZXh0QW5jZXN0b3IpIHsKICAgICAgICBkbyB7IGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTsgfQogICAgICAgIHdoaWxlICghKG5leHRBbmNlc3RvciA9IGFuY2VzdG9yLm5leHRTaWJsaW5nKSAmJiBhbmNlc3Rvci5wYXJlbnROb2RlKTsKICAgICAgfQogICAgICBpZiAobmV4dEFuY2VzdG9yICYmIG5leHRBbmNlc3Rvci5zb3VyY2VJbmRleCkKICAgICAgIHJldHVybiAoZSA+IGEgJiYgZSA8IG5leHRBbmNlc3Rvci5zb3VyY2VJbmRleCk7CiAgICB9CgogICAgd2hpbGUgKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpCiAgICAgIGlmIChlbGVtZW50ID09IG9yaWdpbmFsQW5jZXN0b3IpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIHNjcm9sbFRvOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBwb3MgPSBlbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoKTsKICAgIHdpbmRvdy5zY3JvbGxUbyhwb3NbMF0sIHBvc1sxXSk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSBzdHlsZSA9PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUpIHsKICAgICAgdmFyIGNzcyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCk7CiAgICAgIHZhbHVlID0gY3NzID8gY3NzW3N0eWxlXSA6IG51bGw7CiAgICB9CiAgICBpZiAoc3R5bGUgPT0gJ29wYWNpdHknKSByZXR1cm4gdmFsdWUgPyBwYXJzZUZsb2F0KHZhbHVlKSA6IDEuMDsKICAgIHJldHVybiB2YWx1ZSA9PSAnYXV0bycgPyBudWxsIDogdmFsdWU7CiAgfSwKCiAgZ2V0T3BhY2l0eTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuZ2V0U3R5bGUoJ29wYWNpdHknKTsKICB9LAoKICBzZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGVzKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBlbGVtZW50U3R5bGUgPSBlbGVtZW50LnN0eWxlLCBtYXRjaDsKICAgIGlmIChPYmplY3QuaXNTdHJpbmcoc3R5bGVzKSkgewogICAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgKz0gJzsnICsgc3R5bGVzOwogICAgICByZXR1cm4gc3R5bGVzLmluY2x1ZGUoJ29wYWNpdHknKSA/CiAgICAgICAgZWxlbWVudC5zZXRPcGFjaXR5KHN0eWxlcy5tYXRjaCgvb3BhY2l0eTpccyooXGQ/XC4/XGQqKS8pWzFdKSA6IGVsZW1lbnQ7CiAgICB9CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBzdHlsZXMpCiAgICAgIGlmIChwcm9wZXJ0eSA9PSAnb3BhY2l0eScpIGVsZW1lbnQuc2V0T3BhY2l0eShzdHlsZXNbcHJvcGVydHldKTsKICAgICAgZWxzZQogICAgICAgIGVsZW1lbnRTdHlsZVsocHJvcGVydHkgPT0gJ2Zsb2F0JyB8fCBwcm9wZXJ0eSA9PSAnY3NzRmxvYXQnKSA/CiAgICAgICAgICAoT2JqZWN0LmlzVW5kZWZpbmVkKGVsZW1lbnRTdHlsZS5zdHlsZUZsb2F0KSA/ICdjc3NGbG9hdCcgOiAnc3R5bGVGbG9hdCcpIDoKICAgICAgICAgICAgcHJvcGVydHldID0gc3R5bGVzW3Byb3BlcnR5XTsKCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBzZXRPcGFjaXR5OiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAodmFsdWUgPT0gMSB8fCB2YWx1ZSA9PT0gJycpID8gJycgOgogICAgICAodmFsdWUgPCAwLjAwMDAxKSA/IDAgOiB2YWx1ZTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGdldERpbWVuc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGRpc3BsYXkgPSAkKGVsZW1lbnQpLmdldFN0eWxlKCdkaXNwbGF5Jyk7CiAgICBpZiAoZGlzcGxheSAhPSAnbm9uZScgJiYgZGlzcGxheSAhPSBudWxsKSAvLyBTYWZhcmkgYnVnCiAgICAgIHJldHVybiB7d2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHR9OwoKICAgIC8vIEFsbCAqV2lkdGggYW5kICpIZWlnaHQgcHJvcGVydGllcyBnaXZlIDAgb24gZWxlbWVudHMgd2l0aCBkaXNwbGF5IG5vbmUsCiAgICAvLyBzbyBlbmFibGUgdGhlIGVsZW1lbnQgdGVtcG9yYXJpbHkKICAgIHZhciBlbHMgPSBlbGVtZW50LnN0eWxlOwogICAgdmFyIG9yaWdpbmFsVmlzaWJpbGl0eSA9IGVscy52aXNpYmlsaXR5OwogICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSBlbHMucG9zaXRpb247CiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0gZWxzLmRpc3BsYXk7CiAgICBlbHMudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgZWxzLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKICAgIGVscy5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIHZhciBvcmlnaW5hbFdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDsKICAgIHZhciBvcmlnaW5hbEhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgZWxzLmRpc3BsYXkgPSBvcmlnaW5hbERpc3BsYXk7CiAgICBlbHMucG9zaXRpb24gPSBvcmlnaW5hbFBvc2l0aW9uOwogICAgZWxzLnZpc2liaWxpdHkgPSBvcmlnaW5hbFZpc2liaWxpdHk7CiAgICByZXR1cm4ge3dpZHRoOiBvcmlnaW5hbFdpZHRoLCBoZWlnaHQ6IG9yaWdpbmFsSGVpZ2h0fTsKICB9LAoKICBtYWtlUG9zaXRpb25lZDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgcG9zID0gRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKTsKICAgIGlmIChwb3MgPT0gJ3N0YXRpYycgfHwgIXBvcykgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHRydWU7CiAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwogICAgICAvLyBPcGVyYSByZXR1cm5zIHRoZSBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uaW5nIGNvbnRleHQsIHdoZW4gYW4KICAgICAgLy8gZWxlbWVudCBpcyBwb3NpdGlvbiByZWxhdGl2ZSBidXQgdG9wIGFuZCBsZWZ0IGhhdmUgbm90IGJlZW4gZGVmaW5lZAogICAgICBpZiAod2luZG93Lm9wZXJhKSB7CiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAwOwogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IDA7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9Qb3NpdGlvbmVkOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCkgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHVuZGVmaW5lZDsKICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9CiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPQogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9CiAgICAgICAgZWxlbWVudC5zdHlsZS5ib3R0b20gPQogICAgICAgIGVsZW1lbnQuc3R5bGUucmlnaHQgPSAnJzsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIG1ha2VDbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVybiBlbGVtZW50OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQsICdvdmVyZmxvdycpIHx8ICdhdXRvJzsKICAgIGlmIChlbGVtZW50Ll9vdmVyZmxvdyAhPT0gJ2hpZGRlbicpCiAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9DbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIWVsZW1lbnQuX292ZXJmbG93KSByZXR1cm4gZWxlbWVudDsKICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBlbGVtZW50Ll9vdmVyZmxvdyA9PSAnYXV0bycgPyAnJyA6IGVsZW1lbnQuX292ZXJmbG93OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBudWxsOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgY3VtdWxhdGl2ZU9mZnNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZhbHVlVCA9IDAsIHZhbHVlTCA9IDA7CiAgICBkbyB7CiAgICAgIHZhbHVlVCArPSBlbGVtZW50Lm9mZnNldFRvcCAgfHwgMDsKICAgICAgdmFsdWVMICs9IGVsZW1lbnQub2Zmc2V0TGVmdCB8fCAwOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIHBvc2l0aW9uZWRPZmZzZXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAwOwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxlbWVudC5vZmZzZXRUb3AgIHx8IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9mZnNldExlZnQgfHwgMDsKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgICBpZiAoZWxlbWVudCkgewogICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT0gJ0JPRFknKSBicmVhazsKICAgICAgICB2YXIgcCA9IEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJyk7CiAgICAgICAgaWYgKHAgIT09ICdzdGF0aWMnKSBicmVhazsKICAgICAgfQogICAgfSB3aGlsZSAoZWxlbWVudCk7CiAgICByZXR1cm4gRWxlbWVudC5fcmV0dXJuT2Zmc2V0KHZhbHVlTCwgdmFsdWVUKTsKICB9LAoKICBhYnNvbHV0aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIHJldHVybjsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8gYmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgogICAgdmFyIG9mZnNldHMgPSBlbGVtZW50LnBvc2l0aW9uZWRPZmZzZXQoKTsKICAgIHZhciB0b3AgICAgID0gb2Zmc2V0c1sxXTsKICAgIHZhciBsZWZ0ICAgID0gb2Zmc2V0c1swXTsKICAgIHZhciB3aWR0aCAgID0gZWxlbWVudC5jbGllbnRXaWR0aDsKICAgIHZhciBoZWlnaHQgID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CgogICAgZWxlbWVudC5fb3JpZ2luYWxMZWZ0ICAgPSBsZWZ0IC0gcGFyc2VGbG9hdChlbGVtZW50LnN0eWxlLmxlZnQgIHx8IDApOwogICAgZWxlbWVudC5fb3JpZ2luYWxUb3AgICAgPSB0b3AgIC0gcGFyc2VGbG9hdChlbGVtZW50LnN0eWxlLnRvcCB8fCAwKTsKICAgIGVsZW1lbnQuX29yaWdpbmFsV2lkdGggID0gZWxlbWVudC5zdHlsZS53aWR0aDsKICAgIGVsZW1lbnQuX29yaWdpbmFsSGVpZ2h0ID0gZWxlbWVudC5zdHlsZS5oZWlnaHQ7CgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICBlbGVtZW50LnN0eWxlLnRvcCAgICA9IHRvcCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmxlZnQgICA9IGxlZnQgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS53aWR0aCAgPSB3aWR0aCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZWxhdGl2aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09ICdyZWxhdGl2ZScpIHJldHVybjsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8gYmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CiAgICB2YXIgdG9wICA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgIHx8IDApIC0gKGVsZW1lbnQuX29yaWdpbmFsVG9wIHx8IDApOwogICAgdmFyIGxlZnQgPSBwYXJzZUZsb2F0KGVsZW1lbnQuc3R5bGUubGVmdCB8fCAwKSAtIChlbGVtZW50Ll9vcmlnaW5hbExlZnQgfHwgMCk7CgogICAgZWxlbWVudC5zdHlsZS50b3AgICAgPSB0b3AgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5fb3JpZ2luYWxIZWlnaHQ7CiAgICBlbGVtZW50LnN0eWxlLndpZHRoICA9IGVsZW1lbnQuX29yaWdpbmFsV2lkdGg7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjdW11bGF0aXZlU2Nyb2xsT2Zmc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGdldE9mZnNldFBhcmVudDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSByZXR1cm4gJChlbGVtZW50Lm9mZnNldFBhcmVudCk7CiAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5ib2R5KSByZXR1cm4gJChlbGVtZW50KTsKCiAgICB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpICYmIGVsZW1lbnQgIT0gZG9jdW1lbnQuYm9keSkKICAgICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgIT0gJ3N0YXRpYycpCiAgICAgICAgcmV0dXJuICQoZWxlbWVudCk7CgogICAgcmV0dXJuICQoZG9jdW1lbnQuYm9keSk7CiAgfSwKCiAgdmlld3BvcnRPZmZzZXQ6IGZ1bmN0aW9uKGZvckVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAwOwoKICAgIHZhciBlbGVtZW50ID0gZm9yRWxlbWVudDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7CgogICAgICAvLyBTYWZhcmkgZml4CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1bWVudC5ib2R5ICYmCiAgICAgICAgRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSBicmVhazsKCiAgICB9IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpOwoKICAgIGVsZW1lbnQgPSBmb3JFbGVtZW50OwogICAgZG8gewogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyLk9wZXJhIHx8IGVsZW1lbnQudGFnTmFtZSA9PSAnQk9EWScpIHsKICAgICAgICB2YWx1ZVQgLT0gZWxlbWVudC5zY3JvbGxUb3AgIHx8IDA7CiAgICAgICAgdmFsdWVMIC09IGVsZW1lbnQuc2Nyb2xsTGVmdCB8fCAwOwogICAgICB9CiAgICB9IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKTsKCiAgICByZXR1cm4gRWxlbWVudC5fcmV0dXJuT2Zmc2V0KHZhbHVlTCwgdmFsdWVUKTsKICB9LAoKICBjbG9uZVBvc2l0aW9uOiBmdW5jdGlvbihlbGVtZW50LCBzb3VyY2UpIHsKICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICAgIHNldExlZnQ6ICAgIHRydWUsCiAgICAgIHNldFRvcDogICAgIHRydWUsCiAgICAgIHNldFdpZHRoOiAgIHRydWUsCiAgICAgIHNldEhlaWdodDogIHRydWUsCiAgICAgIG9mZnNldFRvcDogIDAsCiAgICAgIG9mZnNldExlZnQ6IDAKICAgIH0sIGFyZ3VtZW50c1syXSB8fCB7IH0pOwoKICAgIC8vIGZpbmQgcGFnZSBwb3NpdGlvbiBvZiBzb3VyY2UKICAgIHNvdXJjZSA9ICQoc291cmNlKTsKICAgIHZhciBwID0gc291cmNlLnZpZXdwb3J0T2Zmc2V0KCk7CgogICAgLy8gZmluZCBjb29yZGluYXRlIHN5c3RlbSB0byB1c2UKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGRlbHRhID0gWzAsIDBdOwogICAgdmFyIHBhcmVudCA9IG51bGw7CiAgICAvLyBkZWx0YSBbMCwwXSB3aWxsIGRvIGZpbmUgd2l0aCBwb3NpdGlvbjogZml4ZWQgZWxlbWVudHMsCiAgICAvLyBwb3NpdGlvbjphYnNvbHV0ZSBuZWVkcyBvZmZzZXRQYXJlbnQgZGVsdGFzCiAgICBpZiAoRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSB7CiAgICAgIHBhcmVudCA9IGVsZW1lbnQuZ2V0T2Zmc2V0UGFyZW50KCk7CiAgICAgIGRlbHRhID0gcGFyZW50LnZpZXdwb3J0T2Zmc2V0KCk7CiAgICB9CgogICAgLy8gY29ycmVjdCBieSBib2R5IG9mZnNldHMgKGZpeGVzIFNhZmFyaSkKICAgIGlmIChwYXJlbnQgPT0gZG9jdW1lbnQuYm9keSkgewogICAgICBkZWx0YVswXSAtPSBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CiAgICAgIGRlbHRhWzFdIC09IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgfQoKICAgIC8vIHNldCBwb3NpdGlvbgogICAgaWYgKG9wdGlvbnMuc2V0TGVmdCkgICBlbGVtZW50LnN0eWxlLmxlZnQgID0gKHBbMF0gLSBkZWx0YVswXSArIG9wdGlvbnMub2Zmc2V0TGVmdCkgKyAncHgnOwogICAgaWYgKG9wdGlvbnMuc2V0VG9wKSAgICBlbGVtZW50LnN0eWxlLnRvcCAgID0gKHBbMV0gLSBkZWx0YVsxXSArIG9wdGlvbnMub2Zmc2V0VG9wKSArICdweCc7CiAgICBpZiAob3B0aW9ucy5zZXRXaWR0aCkgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBzb3VyY2Uub2Zmc2V0V2lkdGggKyAncHgnOwogICAgaWYgKG9wdGlvbnMuc2V0SGVpZ2h0KSBlbGVtZW50LnN0eWxlLmhlaWdodCA9IHNvdXJjZS5vZmZzZXRIZWlnaHQgKyAncHgnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9OwoKRWxlbWVudC5NZXRob2RzLmlkZW50aWZ5LmNvdW50ZXIgPSAxOwoKT2JqZWN0LmV4dGVuZChFbGVtZW50Lk1ldGhvZHMsIHsKICBnZXRFbGVtZW50c0J5U2VsZWN0b3I6IEVsZW1lbnQuTWV0aG9kcy5zZWxlY3QsCiAgY2hpbGRFbGVtZW50czogRWxlbWVudC5NZXRob2RzLmltbWVkaWF0ZURlc2NlbmRhbnRzCn0pOwoKRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zID0gewogIHdyaXRlOiB7CiAgICBuYW1lczogewogICAgICBjbGFzc05hbWU6ICdjbGFzcycsCiAgICAgIGh0bWxGb3I6ICAgJ2ZvcicKICAgIH0sCiAgICB2YWx1ZXM6IHsgfQogIH0KfTsKCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSkgewogIEVsZW1lbnQuTWV0aG9kcy5nZXRTdHlsZSA9IEVsZW1lbnQuTWV0aG9kcy5nZXRTdHlsZS53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCwgc3R5bGUpIHsKICAgICAgc3dpdGNoIChzdHlsZSkgewogICAgICAgIGNhc2UgJ2xlZnQnOiBjYXNlICd0b3AnOiBjYXNlICdyaWdodCc6IGNhc2UgJ2JvdHRvbSc6CiAgICAgICAgICBpZiAocHJvY2VlZChlbGVtZW50LCAncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHJldHVybiBudWxsOwogICAgICAgIGNhc2UgJ2hlaWdodCc6IGNhc2UgJ3dpZHRoJzoKICAgICAgICAgIC8vIHJldHVybnMgJzBweCcgZm9yIGhpZGRlbiBlbGVtZW50czsgd2Ugd2FudCBpdCB0byByZXR1cm4gbnVsbAogICAgICAgICAgaWYgKCFFbGVtZW50LnZpc2libGUoZWxlbWVudCkpIHJldHVybiBudWxsOwoKICAgICAgICAgIC8vIHJldHVybnMgdGhlIGJvcmRlci1ib3ggZGltZW5zaW9ucyByYXRoZXIgdGhhbiB0aGUgY29udGVudC1ib3gKICAgICAgICAgIC8vIGRpbWVuc2lvbnMsIHNvIHdlIHN1YnRyYWN0IHBhZGRpbmcgYW5kIGJvcmRlcnMgZnJvbSB0aGUgdmFsdWUKICAgICAgICAgIHZhciBkaW0gPSBwYXJzZUludChwcm9jZWVkKGVsZW1lbnQsIHN0eWxlKSwgMTApOwoKICAgICAgICAgIGlmIChkaW0gIT09IGVsZW1lbnRbJ29mZnNldCcgKyBzdHlsZS5jYXBpdGFsaXplKCldKQogICAgICAgICAgICByZXR1cm4gZGltICsgJ3B4JzsKCiAgICAgICAgICB2YXIgcHJvcGVydGllczsKICAgICAgICAgIGlmIChzdHlsZSA9PT0gJ2hlaWdodCcpIHsKICAgICAgICAgICAgcHJvcGVydGllcyA9IFsnYm9yZGVyLXRvcC13aWR0aCcsICdwYWRkaW5nLXRvcCcsCiAgICAgICAgICAgICAncGFkZGluZy1ib3R0b20nLCAnYm9yZGVyLWJvdHRvbS13aWR0aCddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbJ2JvcmRlci1sZWZ0LXdpZHRoJywgJ3BhZGRpbmctbGVmdCcsCiAgICAgICAgICAgICAncGFkZGluZy1yaWdodCcsICdib3JkZXItcmlnaHQtd2lkdGgnXTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLmluamVjdChkaW0sIGZ1bmN0aW9uKG1lbW8sIHByb3BlcnR5KSB7CiAgICAgICAgICAgIHZhciB2YWwgPSBwcm9jZWVkKGVsZW1lbnQsIHByb3BlcnR5KTsKICAgICAgICAgICAgcmV0dXJuIHZhbCA9PT0gbnVsbCA/IG1lbW8gOiBtZW1vIC0gcGFyc2VJbnQodmFsLCAxMCk7CiAgICAgICAgICB9KSArICdweCc7CiAgICAgICAgZGVmYXVsdDogcmV0dXJuIHByb2NlZWQoZWxlbWVudCwgc3R5bGUpOwogICAgICB9CiAgICB9CiAgKTsKCiAgRWxlbWVudC5NZXRob2RzLnJlYWRBdHRyaWJ1dGUgPSBFbGVtZW50Lk1ldGhvZHMucmVhZEF0dHJpYnV0ZS53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCwgYXR0cmlidXRlKSB7CiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICd0aXRsZScpIHJldHVybiBlbGVtZW50LnRpdGxlOwogICAgICByZXR1cm4gcHJvY2VlZChlbGVtZW50LCBhdHRyaWJ1dGUpOwogICAgfQogICk7Cn0KCmVsc2UgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgLy8gSUUgZG9lc24ndCByZXBvcnQgb2Zmc2V0cyBjb3JyZWN0bHkgZm9yIHN0YXRpYyBlbGVtZW50cywgc28gd2UgY2hhbmdlIHRoZW0KICAvLyB0byAicmVsYXRpdmUiIHRvIGdldCB0aGUgdmFsdWVzLCB0aGVuIGNoYW5nZSB0aGVtIGJhY2suCiAgRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBhcmVudCA9IEVsZW1lbnQuTWV0aG9kcy5nZXRPZmZzZXRQYXJlbnQud3JhcCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICAgIHZhciBwb3NpdGlvbiA9IGVsZW1lbnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJyk7CiAgICAgIGlmIChwb3NpdGlvbiAhPT0gJ3N0YXRpYycpIHJldHVybiBwcm9jZWVkKGVsZW1lbnQpOwogICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246ICdyZWxhdGl2ZScgfSk7CiAgICAgIHZhciB2YWx1ZSA9IHByb2NlZWQoZWxlbWVudCk7CiAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogcG9zaXRpb24gfSk7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICApOwoKICAkdygncG9zaXRpb25lZE9mZnNldCB2aWV3cG9ydE9mZnNldCcpLmVhY2goZnVuY3Rpb24obWV0aG9kKSB7CiAgICBFbGVtZW50Lk1ldGhvZHNbbWV0aG9kXSA9IEVsZW1lbnQuTWV0aG9kc1ttZXRob2RdLndyYXAoCiAgICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQpIHsKICAgICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgICB2YXIgcG9zaXRpb24gPSBlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpOwogICAgICAgIGlmIChwb3NpdGlvbiAhPT0gJ3N0YXRpYycpIHJldHVybiBwcm9jZWVkKGVsZW1lbnQpOwogICAgICAgIC8vIFRyaWdnZXIgaGFzTGF5b3V0IG9uIHRoZSBvZmZzZXQgcGFyZW50IHNvIHRoYXQgSUU2IHJlcG9ydHMKICAgICAgICAvLyBhY2N1cmF0ZSBvZmZzZXRUb3AgYW5kIG9mZnNldExlZnQgdmFsdWVzIGZvciBwb3NpdGlvbjogZml4ZWQuCiAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW1lbnQuZ2V0T2Zmc2V0UGFyZW50KCk7CiAgICAgICAgaWYgKG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpCiAgICAgICAgICBvZmZzZXRQYXJlbnQuc2V0U3R5bGUoeyB6b29tOiAxIH0pOwogICAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTsKICAgICAgICB2YXIgdmFsdWUgPSBwcm9jZWVkKGVsZW1lbnQpOwogICAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogcG9zaXRpb24gfSk7CiAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CiAgICApOwogIH0pOwoKICBFbGVtZW50Lk1ldGhvZHMuZ2V0U3R5bGUgPSBmdW5jdGlvbihlbGVtZW50LCBzdHlsZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBzdHlsZSA9IChzdHlsZSA9PSAnZmxvYXQnIHx8IHN0eWxlID09ICdjc3NGbG9hdCcpID8gJ3N0eWxlRmxvYXQnIDogc3R5bGUuY2FtZWxpemUoKTsKICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQuc3R5bGVbc3R5bGVdOwogICAgaWYgKCF2YWx1ZSAmJiBlbGVtZW50LmN1cnJlbnRTdHlsZSkgdmFsdWUgPSBlbGVtZW50LmN1cnJlbnRTdHlsZVtzdHlsZV07CgogICAgaWYgKHN0eWxlID09ICdvcGFjaXR5JykgewogICAgICBpZiAodmFsdWUgPSAoZWxlbWVudC5nZXRTdHlsZSgnZmlsdGVyJykgfHwgJycpLm1hdGNoKC9hbHBoYVwob3BhY2l0eT0oLiopXCkvKSkKICAgICAgICBpZiAodmFsdWVbMV0pIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlWzFdKSAvIDEwMDsKICAgICAgcmV0dXJuIDEuMDsKICAgIH0KCiAgICBpZiAodmFsdWUgPT0gJ2F1dG8nKSB7CiAgICAgIGlmICgoc3R5bGUgPT0gJ3dpZHRoJyB8fCBzdHlsZSA9PSAnaGVpZ2h0JykgJiYgKGVsZW1lbnQuZ2V0U3R5bGUoJ2Rpc3BsYXknKSAhPSAnbm9uZScpKQogICAgICAgIHJldHVybiBlbGVtZW50WydvZmZzZXQnICsgc3R5bGUuY2FwaXRhbGl6ZSgpXSArICdweCc7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIHZhbHVlOwogIH07CgogIEVsZW1lbnQuTWV0aG9kcy5zZXRPcGFjaXR5ID0gZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGZ1bmN0aW9uIHN0cmlwQWxwaGEoZmlsdGVyKXsKICAgICAgcmV0dXJuIGZpbHRlci5yZXBsYWNlKC9hbHBoYVwoW15cKV0qXCkvZ2ksJycpOwogICAgfQogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgY3VycmVudFN0eWxlID0gZWxlbWVudC5jdXJyZW50U3R5bGU7CiAgICBpZiAoKGN1cnJlbnRTdHlsZSAmJiAhY3VycmVudFN0eWxlLmhhc0xheW91dCkgfHwKICAgICAgKCFjdXJyZW50U3R5bGUgJiYgZWxlbWVudC5zdHlsZS56b29tID09ICdub3JtYWwnKSkKICAgICAgICBlbGVtZW50LnN0eWxlLnpvb20gPSAxOwoKICAgIHZhciBmaWx0ZXIgPSBlbGVtZW50LmdldFN0eWxlKCdmaWx0ZXInKSwgc3R5bGUgPSBlbGVtZW50LnN0eWxlOwogICAgaWYgKHZhbHVlID09IDEgfHwgdmFsdWUgPT09ICcnKSB7CiAgICAgIChmaWx0ZXIgPSBzdHJpcEFscGhhKGZpbHRlcikpID8KICAgICAgICBzdHlsZS5maWx0ZXIgPSBmaWx0ZXIgOiBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ2ZpbHRlcicpOwogICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0gZWxzZSBpZiAodmFsdWUgPCAwLjAwMDAxKSB2YWx1ZSA9IDA7CiAgICBzdHlsZS5maWx0ZXIgPSBzdHJpcEFscGhhKGZpbHRlcikgKwogICAgICAnYWxwaGEob3BhY2l0eT0nICsgKHZhbHVlICogMTAwKSArICcpJzsKICAgIHJldHVybiBlbGVtZW50OwogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucyA9IHsKICAgIHJlYWQ6IHsKICAgICAgbmFtZXM6IHsKICAgICAgICAnY2xhc3MnOiAnY2xhc3NOYW1lJywKICAgICAgICAnZm9yJzogICAnaHRtbEZvcicKICAgICAgfSwKICAgICAgdmFsdWVzOiB7CiAgICAgICAgX2dldEF0dHI6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgMik7CiAgICAgICAgfSwKICAgICAgICBfZ2V0QXR0ck5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgICAgICAgdmFyIG5vZGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoYXR0cmlidXRlKTsKICAgICAgICAgIHJldHVybiBub2RlID8gbm9kZS52YWx1ZSA6ICIiOwogICAgICAgIH0sCiAgICAgICAgX2dldEV2OiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAgICAgIGF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgICAgICAgICByZXR1cm4gYXR0cmlidXRlID8gYXR0cmlidXRlLnRvU3RyaW5nKCkuc2xpY2UoMjMsIC0yKSA6IG51bGw7CiAgICAgICAgfSwKICAgICAgICBfZmxhZzogZnVuY3Rpb24oZWxlbWVudCwgYXR0cmlidXRlKSB7CiAgICAgICAgICByZXR1cm4gJChlbGVtZW50KS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSA/IGF0dHJpYnV0ZSA6IG51bGw7CiAgICAgICAgfSwKICAgICAgICBzdHlsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpOwogICAgICAgIH0sCiAgICAgICAgdGl0bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpdGxlOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy53cml0ZSA9IHsKICAgIG5hbWVzOiBPYmplY3QuZXh0ZW5kKHsKICAgICAgY2VsbHBhZGRpbmc6ICdjZWxsUGFkZGluZycsCiAgICAgIGNlbGxzcGFjaW5nOiAnY2VsbFNwYWNpbmcnCiAgICB9LCBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMucmVhZC5uYW1lcyksCiAgICB2YWx1ZXM6IHsKICAgICAgY2hlY2tlZDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSAhIXZhbHVlOwogICAgICB9LAoKICAgICAgc3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7CiAgICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gdmFsdWUgPyB2YWx1ZSA6ICcnOwogICAgICB9CiAgICB9CiAgfTsKCiAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhcyA9IHt9OwoKICAkdygnY29sU3BhbiByb3dTcGFuIHZBbGlnbiBkYXRlVGltZSBhY2Nlc3NLZXkgdGFiSW5kZXggJyArCiAgICAgICdlbmNUeXBlIG1heExlbmd0aCByZWFkT25seSBsb25nRGVzYycpLmVhY2goZnVuY3Rpb24oYXR0cikgewogICAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLndyaXRlLm5hbWVzW2F0dHIudG9Mb3dlckNhc2UoKV0gPSBhdHRyOwogICAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyLnRvTG93ZXJDYXNlKCldID0gYXR0cjsKICB9KTsKCiAgKGZ1bmN0aW9uKHYpIHsKICAgIE9iamVjdC5leHRlbmQodiwgewogICAgICBocmVmOiAgICAgICAgdi5fZ2V0QXR0ciwKICAgICAgc3JjOiAgICAgICAgIHYuX2dldEF0dHIsCiAgICAgIHR5cGU6ICAgICAgICB2Ll9nZXRBdHRyLAogICAgICBhY3Rpb246ICAgICAgdi5fZ2V0QXR0ck5vZGUsCiAgICAgIGRpc2FibGVkOiAgICB2Ll9mbGFnLAogICAgICBjaGVja2VkOiAgICAgdi5fZmxhZywKICAgICAgcmVhZG9ubHk6ICAgIHYuX2ZsYWcsCiAgICAgIG11bHRpcGxlOiAgICB2Ll9mbGFnLAogICAgICBvbmxvYWQ6ICAgICAgdi5fZ2V0RXYsCiAgICAgIG9udW5sb2FkOiAgICB2Ll9nZXRFdiwKICAgICAgb25jbGljazogICAgIHYuX2dldEV2LAogICAgICBvbmRibGNsaWNrOiAgdi5fZ2V0RXYsCiAgICAgIG9ubW91c2Vkb3duOiB2Ll9nZXRFdiwKICAgICAgb25tb3VzZXVwOiAgIHYuX2dldEV2LAogICAgICBvbm1vdXNlb3Zlcjogdi5fZ2V0RXYsCiAgICAgIG9ubW91c2Vtb3ZlOiB2Ll9nZXRFdiwKICAgICAgb25tb3VzZW91dDogIHYuX2dldEV2LAogICAgICBvbmZvY3VzOiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uYmx1cjogICAgICB2Ll9nZXRFdiwKICAgICAgb25rZXlwcmVzczogIHYuX2dldEV2LAogICAgICBvbmtleWRvd246ICAgdi5fZ2V0RXYsCiAgICAgIG9ua2V5dXA6ICAgICB2Ll9nZXRFdiwKICAgICAgb25zdWJtaXQ6ICAgIHYuX2dldEV2LAogICAgICBvbnJlc2V0OiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uc2VsZWN0OiAgICB2Ll9nZXRFdiwKICAgICAgb25jaGFuZ2U6ICAgIHYuX2dldEV2CiAgICB9KTsKICB9KShFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMucmVhZC52YWx1ZXMpOwp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5HZWNrbyAmJiAvcnY6MVwuOFwuMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkgewogIEVsZW1lbnQuTWV0aG9kcy5zZXRPcGFjaXR5ID0gZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gKHZhbHVlID09IDEpID8gMC45OTk5OTkgOgogICAgICAodmFsdWUgPT09ICcnKSA/ICcnIDogKHZhbHVlIDwgMC4wMDAwMSkgPyAwIDogdmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Owp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICBFbGVtZW50Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICh2YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAnJykgPyAnJyA6CiAgICAgICh2YWx1ZSA8IDAuMDAwMDEpID8gMCA6IHZhbHVlOwoKICAgIGlmICh2YWx1ZSA9PSAxKQogICAgICBpZihlbGVtZW50LnRhZ05hbWUgPT0gJ0lNRycgJiYgZWxlbWVudC53aWR0aCkgewogICAgICAgIGVsZW1lbnQud2lkdGgrKzsgZWxlbWVudC53aWR0aC0tOwogICAgICB9IGVsc2UgdHJ5IHsKICAgICAgICB2YXIgbiA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJyk7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKG4pOwogICAgICB9IGNhdGNoIChlKSB7IH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBTYWZhcmkgcmV0dXJucyBtYXJnaW5zIG9uIGJvZHkgd2hpY2ggaXMgaW5jb3JyZWN0IGlmIHRoZSBjaGlsZCBpcyBhYnNvbHV0ZWx5CiAgLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCByZWRlZmluZSBFbGVtZW50I2N1bXVsYXRpdmVPZmZzZXQgZm9yCiAgLy8gS0hUTUwvV2ViS2l0IG9ubHkuCiAgRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQsICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAoZWxlbWVudCk7CgogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCh2YWx1ZUwsIHZhbHVlVCk7CiAgfTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFIHx8IFByb3RvdHlwZS5Ccm93c2VyLk9wZXJhKSB7CiAgLy8gSUUgYW5kIE9wZXJhIGFyZSBtaXNzaW5nIC5pbm5lckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBhbmQgU0VMRUNUIGVsZW1lbnRzCiAgRWxlbWVudC5NZXRob2RzLnVwZGF0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwoKICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29udGVudC50b0VsZW1lbnQoKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KGNvbnRlbnQpKSByZXR1cm4gZWxlbWVudC51cGRhdGUoKS5pbnNlcnQoY29udGVudCk7CgogICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CiAgICB2YXIgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmICh0YWdOYW1lIGluIEVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucy50YWdzKSB7CiAgICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbihub2RlKSB7IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSkgfSk7CiAgICAgIEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKQogICAgICAgIC5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKSB9KTsKICAgIH0KICAgIGVsc2UgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwoKICAgIGNvbnRlbnQuZXZhbFNjcmlwdHMuYmluZChjb250ZW50KS5kZWZlcigpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKaWYgKCdvdXRlckhUTUwnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB7CiAgRWxlbWVudC5NZXRob2RzLnJlcGxhY2UgPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRvRWxlbWVudCkgY29udGVudCA9IGNvbnRlbnQudG9FbGVtZW50KCk7CiAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICBlbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KCiAgICBjb250ZW50ID0gT2JqZWN0LnRvSFRNTChjb250ZW50KTsKICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUgPSBwYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmIChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMudGFnc1t0YWdOYW1lXSkgewogICAgICB2YXIgbmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHQoKTsKICAgICAgdmFyIGZyYWdtZW50cyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICBpZiAobmV4dFNpYmxpbmcpCiAgICAgICAgZnJhZ21lbnRzLmVhY2goZnVuY3Rpb24obm9kZSkgeyBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nKSB9KTsKICAgICAgZWxzZQogICAgICAgIGZyYWdtZW50cy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgcGFyZW50LmFwcGVuZENoaWxkKG5vZGUpIH0pOwogICAgfQogICAgZWxzZSBlbGVtZW50Lm91dGVySFRNTCA9IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Owp9CgpFbGVtZW50Ll9yZXR1cm5PZmZzZXQgPSBmdW5jdGlvbihsLCB0KSB7CiAgdmFyIHJlc3VsdCA9IFtsLCB0XTsKICByZXN1bHQubGVmdCA9IGw7CiAgcmVzdWx0LnRvcCA9IHQ7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCkVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGh0bWwpIHsKICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpLCB0ID0gRWxlbWVudC5faW5zZXJ0aW9uVHJhbnNsYXRpb25zLnRhZ3NbdGFnTmFtZV07CiAgaWYgKHQpIHsKICAgIGRpdi5pbm5lckhUTUwgPSB0WzBdICsgaHRtbCArIHRbMV07CiAgICB0WzJdLnRpbWVzKGZ1bmN0aW9uKCkgeyBkaXYgPSBkaXYuZmlyc3RDaGlsZCB9KTsKICB9IGVsc2UgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgcmV0dXJuICRBKGRpdi5jaGlsZE5vZGVzKTsKfTsKCkVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucyA9IHsKICBiZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWxlbWVudCk7CiAgfSwKICB0b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgfSwKICBib3R0b206IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgfSwKICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgbm9kZSkgewogICAgZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBlbGVtZW50Lm5leHRTaWJsaW5nKTsKICB9LAogIHRhZ3M6IHsKICAgIFRBQkxFOiAgWyc8dGFibGU+JywgICAgICAgICAgICAgICAgJzwvdGFibGU+JywgICAgICAgICAgICAgICAgICAgMV0sCiAgICBUQk9EWTogIFsnPHRhYmxlPjx0Ym9keT4nLCAgICAgICAgICc8L3Rib2R5PjwvdGFibGU+JywgICAgICAgICAgIDJdLAogICAgVFI6ICAgICBbJzx0YWJsZT48dGJvZHk+PHRyPicsICAgICAnPC90cj48L3Rib2R5PjwvdGFibGU+JywgICAgICAzXSwKICAgIFREOiAgICAgWyc8dGFibGU+PHRib2R5Pjx0cj48dGQ+JywgJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JywgNF0sCiAgICBTRUxFQ1Q6IFsnPHNlbGVjdD4nLCAgICAgICAgICAgICAgICc8L3NlbGVjdD4nLCAgICAgICAgICAgICAgICAgIDFdCiAgfQp9OwoKKGZ1bmN0aW9uKCkgewogIE9iamVjdC5leHRlbmQodGhpcy50YWdzLCB7CiAgICBUSEVBRDogdGhpcy50YWdzLlRCT0RZLAogICAgVEZPT1Q6IHRoaXMudGFncy5UQk9EWSwKICAgIFRIOiAgICB0aGlzLnRhZ3MuVEQKICB9KTsKfSkuY2FsbChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMpOwoKRWxlbWVudC5NZXRob2RzLlNpbXVsYXRlZCA9IHsKICBoYXNBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgYXR0cmlidXRlID0gRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyaWJ1dGVdIHx8IGF0dHJpYnV0ZTsKICAgIHZhciBub2RlID0gJChlbGVtZW50KS5nZXRBdHRyaWJ1dGVOb2RlKGF0dHJpYnV0ZSk7CiAgICByZXR1cm4gbm9kZSAmJiBub2RlLnNwZWNpZmllZDsKICB9Cn07CgpFbGVtZW50Lk1ldGhvZHMuQnlUYWcgPSB7IH07CgpPYmplY3QuZXh0ZW5kKEVsZW1lbnQsIEVsZW1lbnQuTWV0aG9kcyk7CgppZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgJiYKICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLl9fcHJvdG9fXykgewogIHdpbmRvdy5IVE1MRWxlbWVudCA9IHsgfTsKICB3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fOwogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgPSB0cnVlOwp9CgpFbGVtZW50LmV4dGVuZCA9IChmdW5jdGlvbigpIHsKICBpZiAoUHJvdG90eXBlLkJyb3dzZXJGZWF0dXJlcy5TcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25zKQogICAgcmV0dXJuIFByb3RvdHlwZS5LOwoKICB2YXIgTWV0aG9kcyA9IHsgfSwgQnlUYWcgPSBFbGVtZW50Lk1ldGhvZHMuQnlUYWc7CgogIHZhciBleHRlbmQgPSBPYmplY3QuZXh0ZW5kKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlIHx8CiAgICAgICAgZWxlbWVudC5ub2RlVHlwZSAhPSAxIHx8IGVsZW1lbnQgPT0gd2luZG93KSByZXR1cm4gZWxlbWVudDsKCiAgICB2YXIgbWV0aG9kcyA9IE9iamVjdC5jbG9uZShNZXRob2RzKSwKICAgICAgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZSwgcHJvcGVydHksIHZhbHVlOwoKICAgIC8vIGV4dGVuZCBtZXRob2RzIGZvciBzcGVjaWZpYyB0YWdzCiAgICBpZiAoQnlUYWdbdGFnTmFtZV0pIE9iamVjdC5leHRlbmQobWV0aG9kcywgQnlUYWdbdGFnTmFtZV0pOwoKICAgIGZvciAocHJvcGVydHkgaW4gbWV0aG9kcykgewogICAgICB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odmFsdWUpICYmICEocHJvcGVydHkgaW4gZWxlbWVudCkpCiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPSB2YWx1ZS5tZXRob2RpemUoKTsKICAgIH0KCiAgICBlbGVtZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247CiAgICByZXR1cm4gZWxlbWVudDsKCiAgfSwgewogICAgcmVmcmVzaDogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGV4dGVuZCBtZXRob2RzIGZvciBhbGwgdGFncyAoU2FmYXJpIGRvZXNuJ3QgbmVlZCB0aGlzKQogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgICAgICBPYmplY3QuZXh0ZW5kKE1ldGhvZHMsIEVsZW1lbnQuTWV0aG9kcyk7CiAgICAgICAgT2JqZWN0LmV4dGVuZChNZXRob2RzLCBFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkKTsKICAgICAgfQogICAgfQogIH0pOwoKICBleHRlbmQucmVmcmVzaCgpOwogIHJldHVybiBleHRlbmQ7Cn0pKCk7CgpFbGVtZW50Lmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgcmV0dXJuIEVsZW1lbnQuTWV0aG9kcy5TaW11bGF0ZWQuaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSk7Cn07CgpFbGVtZW50LmFkZE1ldGhvZHMgPSBmdW5jdGlvbihtZXRob2RzKSB7CiAgdmFyIEYgPSBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLCBUID0gRWxlbWVudC5NZXRob2RzLkJ5VGFnOwoKICBpZiAoIW1ldGhvZHMpIHsKICAgIE9iamVjdC5leHRlbmQoRm9ybSwgRm9ybS5NZXRob2RzKTsKICAgIE9iamVjdC5leHRlbmQoRm9ybS5FbGVtZW50LCBGb3JtLkVsZW1lbnQuTWV0aG9kcyk7CiAgICBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcy5CeVRhZywgewogICAgICAiRk9STSI6ICAgICBPYmplY3QuY2xvbmUoRm9ybS5NZXRob2RzKSwKICAgICAgIklOUFVUIjogICAgT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlNFTEVDVCI6ICAgT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlRFWFRBUkVBIjogT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKQogICAgfSk7CiAgfQoKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICB2YXIgdGFnTmFtZSA9IG1ldGhvZHM7CiAgICBtZXRob2RzID0gYXJndW1lbnRzWzFdOwogIH0KCiAgaWYgKCF0YWdOYW1lKSBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcywgbWV0aG9kcyB8fCB7IH0pOwogIGVsc2UgewogICAgaWYgKE9iamVjdC5pc0FycmF5KHRhZ05hbWUpKSB0YWdOYW1lLmVhY2goZXh0ZW5kKTsKICAgIGVsc2UgZXh0ZW5kKHRhZ05hbWUpOwogIH0KCiAgZnVuY3Rpb24gZXh0ZW5kKHRhZ05hbWUpIHsKICAgIHRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICBpZiAoIUVsZW1lbnQuTWV0aG9kcy5CeVRhZ1t0YWdOYW1lXSkKICAgICAgRWxlbWVudC5NZXRob2RzLkJ5VGFnW3RhZ05hbWVdID0geyB9OwogICAgT2JqZWN0LmV4dGVuZChFbGVtZW50Lk1ldGhvZHMuQnlUYWdbdGFnTmFtZV0sIG1ldGhvZHMpOwogIH0KCiAgZnVuY3Rpb24gY29weShtZXRob2RzLCBkZXN0aW5hdGlvbiwgb25seUlmQWJzZW50KSB7CiAgICBvbmx5SWZBYnNlbnQgPSBvbmx5SWZBYnNlbnQgfHwgZmFsc2U7CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBtZXRob2RzKSB7CiAgICAgIHZhciB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoIU9iamVjdC5pc0Z1bmN0aW9uKHZhbHVlKSkgY29udGludWU7CiAgICAgIGlmICghb25seUlmQWJzZW50IHx8ICEocHJvcGVydHkgaW4gZGVzdGluYXRpb24pKQogICAgICAgIGRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IHZhbHVlLm1ldGhvZGl6ZSgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZmluZERPTUNsYXNzKHRhZ05hbWUpIHsKICAgIHZhciBrbGFzczsKICAgIHZhciB0cmFucyA9IHsKICAgICAgIk9QVEdST1VQIjogIk9wdEdyb3VwIiwgIlRFWFRBUkVBIjogIlRleHRBcmVhIiwgIlAiOiAiUGFyYWdyYXBoIiwKICAgICAgIkZJRUxEU0VUIjogIkZpZWxkU2V0IiwgIlVMIjogIlVMaXN0IiwgIk9MIjogIk9MaXN0IiwgIkRMIjogIkRMaXN0IiwKICAgICAgIkRJUiI6ICJEaXJlY3RvcnkiLCAiSDEiOiAiSGVhZGluZyIsICJIMiI6ICJIZWFkaW5nIiwgIkgzIjogIkhlYWRpbmciLAogICAgICAiSDQiOiAiSGVhZGluZyIsICJINSI6ICJIZWFkaW5nIiwgIkg2IjogIkhlYWRpbmciLCAiUSI6ICJRdW90ZSIsCiAgICAgICJJTlMiOiAiTW9kIiwgIkRFTCI6ICJNb2QiLCAiQSI6ICJBbmNob3IiLCAiSU1HIjogIkltYWdlIiwgIkNBUFRJT04iOgogICAgICAiVGFibGVDYXB0aW9uIiwgIkNPTCI6ICJUYWJsZUNvbCIsICJDT0xHUk9VUCI6ICJUYWJsZUNvbCIsICJUSEVBRCI6CiAgICAgICJUYWJsZVNlY3Rpb24iLCAiVEZPT1QiOiAiVGFibGVTZWN0aW9uIiwgIlRCT0RZIjogIlRhYmxlU2VjdGlvbiIsICJUUiI6CiAgICAgICJUYWJsZVJvdyIsICJUSCI6ICJUYWJsZUNlbGwiLCAiVEQiOiAiVGFibGVDZWxsIiwgIkZSQU1FU0VUIjoKICAgICAgIkZyYW1lU2V0IiwgIklGUkFNRSI6ICJJRnJhbWUiCiAgICB9OwogICAgaWYgKHRyYW5zW3RhZ05hbWVdKSBrbGFzcyA9ICdIVE1MJyArIHRyYW5zW3RhZ05hbWVdICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lLmNhcGl0YWxpemUoKSArICdFbGVtZW50JzsKICAgIGlmICh3aW5kb3dba2xhc3NdKSByZXR1cm4gd2luZG93W2tsYXNzXTsKCiAgICB3aW5kb3dba2xhc3NdID0geyB9OwogICAgd2luZG93W2tsYXNzXS5wcm90b3R5cGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpLl9fcHJvdG9fXzsKICAgIHJldHVybiB3aW5kb3dba2xhc3NdOwogIH0KCiAgaWYgKEYuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgIGNvcHkoRWxlbWVudC5NZXRob2RzLCBIVE1MRWxlbWVudC5wcm90b3R5cGUpOwogICAgY29weShFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkLCBIVE1MRWxlbWVudC5wcm90b3R5cGUsIHRydWUpOwogIH0KCiAgaWYgKEYuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucykgewogICAgZm9yICh2YXIgdGFnIGluIEVsZW1lbnQuTWV0aG9kcy5CeVRhZykgewogICAgICB2YXIga2xhc3MgPSBmaW5kRE9NQ2xhc3ModGFnKTsKICAgICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZChrbGFzcykpIGNvbnRpbnVlOwogICAgICBjb3B5KFRbdGFnXSwga2xhc3MucHJvdG90eXBlKTsKICAgIH0KICB9CgogIE9iamVjdC5leHRlbmQoRWxlbWVudCwgRWxlbWVudC5NZXRob2RzKTsKICBkZWxldGUgRWxlbWVudC5CeVRhZzsKCiAgaWYgKEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2gpIEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2goKTsKICBFbGVtZW50LmNhY2hlID0geyB9Owp9OwoKZG9jdW1lbnQudmlld3BvcnQgPSB7CiAgZ2V0RGltZW5zaW9uczogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGltZW5zaW9ucyA9IHsgfTsKICAgIHZhciBCID0gUHJvdG90eXBlLkJyb3dzZXI7CiAgICAkdygnd2lkdGggaGVpZ2h0JykuZWFjaChmdW5jdGlvbihkKSB7CiAgICAgIHZhciBEID0gZC5jYXBpdGFsaXplKCk7CiAgICAgIGRpbWVuc2lvbnNbZF0gPSAoQi5XZWJLaXQgJiYgIWRvY3VtZW50LmV2YWx1YXRlKSA/IHNlbGZbJ2lubmVyJyArIERdIDoKICAgICAgICAoQi5PcGVyYSkgPyBkb2N1bWVudC5ib2R5WydjbGllbnQnICsgRF0gOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbJ2NsaWVudCcgKyBEXTsKICAgIH0pOwogICAgcmV0dXJuIGRpbWVuc2lvbnM7CiAgfSwKCiAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZ2V0RGltZW5zaW9ucygpLndpZHRoOwogIH0sCgogIGdldEhlaWdodDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5nZXREaW1lbnNpb25zKCkuaGVpZ2h0OwogIH0sCgogIGdldFNjcm9sbE9mZnNldHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCgKICAgICAgd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCwKICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApOwogIH0KfTsKLyogUG9ydGlvbnMgb2YgdGhlIFNlbGVjdG9yIGNsYXNzIGFyZSBkZXJpdmVkIGZyb20gSmFjayBTbG9jdW3DouKCrOKEonMgRG9tUXVlcnksCiAqIHBhcnQgb2YgWVVJLUV4dCB2ZXJzaW9uIDAuNDAsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtc3R5bGUKICogbGljZW5zZS4gIFBsZWFzZSBzZWUgaHR0cDovL3d3dy55dWktZXh0LmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uICovCgp2YXIgU2VsZWN0b3IgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uc3RyaXAoKTsKICAgIHRoaXMuY29tcGlsZU1hdGNoZXIoKTsKICB9LAoKICBzaG91bGRVc2VYUGF0aDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHJldHVybiBmYWxzZTsKCiAgICB2YXIgZSA9IHRoaXMuZXhwcmVzc2lvbjsKCiAgICAvLyBTYWZhcmkgMyBjaG9rZXMgb24gOiotb2YtdHlwZSBhbmQgOmVtcHR5CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0ICYmCiAgICAgKGUuaW5jbHVkZSgiLW9mLXR5cGUiKSB8fCBlLmluY2x1ZGUoIjplbXB0eSIpKSkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFhQYXRoIGNhbid0IGRvIG5hbWVzcGFjZWQgYXR0cmlidXRlcywgbm9yIGNhbiBpdCByZWFkCiAgICAvLyB0aGUgImNoZWNrZWQiIHByb3BlcnR5IGZyb20gRE9NIG5vZGVzCiAgICBpZiAoKC8oXFtbXHctXSo/Onw6Y2hlY2tlZCkvKS50ZXN0KHRoaXMuZXhwcmVzc2lvbikpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBjb21waWxlTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5zaG91bGRVc2VYUGF0aCgpKQogICAgICByZXR1cm4gdGhpcy5jb21waWxlWFBhdGhNYXRjaGVyKCk7CgogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3IucGF0dGVybnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2VsZWN0b3IuY3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0pIHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2VdOwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5tYXRjaGVyID0gWyJ0aGlzLm1hdGNoZXIgPSBmdW5jdGlvbihyb290KSB7IiwKICAgICAgICAgICAgICAgICAgICAidmFyIHIgPSByb290LCBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIGMgPSBmYWxzZSwgbjsiXTsKCiAgICB3aGlsZSAoZSAmJiBsZSAhPSBlICYmICgvXFMvKS50ZXN0KGUpKSB7CiAgICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAgIHAgPSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAgICAgIHRoaXMubWF0Y2hlci5wdXNoKE9iamVjdC5pc0Z1bmN0aW9uKGNbaV0pID8gY1tpXShtKSA6CiAgICAJICAgICAgbmV3IFRlbXBsYXRlKGNbaV0pLmV2YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdGhpcy5tYXRjaGVyLnB1c2goInJldHVybiBoLnVuaXF1ZShuKTtcbn0iKTsKICAgIGV2YWwodGhpcy5tYXRjaGVyLmpvaW4oJ1xuJykpOwogICAgU2VsZWN0b3IuX2NhY2hlW3RoaXMuZXhwcmVzc2lvbl0gPSB0aGlzLm1hdGNoZXI7CiAgfSwKCiAgY29tcGlsZVhQYXRoTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICB2YXIgZSA9IHRoaXMuZXhwcmVzc2lvbiwgcHMgPSBTZWxlY3Rvci5wYXR0ZXJucywKICAgICAgICB4ID0gU2VsZWN0b3IueHBhdGgsIGxlLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0pIHsKICAgICAgdGhpcy54cGF0aCA9IFNlbGVjdG9yLl9jYWNoZVtlXTsgcmV0dXJuOwogICAgfQoKICAgIHRoaXMubWF0Y2hlciA9IFsnLi8vKiddOwogICAgd2hpbGUgKGUgJiYgbGUgIT0gZSAmJiAoL1xTLykudGVzdChlKSkgewogICAgICBsZSA9IGU7CiAgICAgIGZvciAodmFyIGkgaW4gcHMpIHsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocHNbaV0pKSB7CiAgICAgICAgICB0aGlzLm1hdGNoZXIucHVzaChPYmplY3QuaXNGdW5jdGlvbih4W2ldKSA/IHhbaV0obSkgOgogICAgICAgICAgICBuZXcgVGVtcGxhdGUoeFtpXSkuZXZhbHVhdGUobSkpOwogICAgICAgICAgZSA9IGUucmVwbGFjZShtWzBdLCAnJyk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB0aGlzLnhwYXRoID0gdGhpcy5tYXRjaGVyLmpvaW4oJycpOwogICAgU2VsZWN0b3IuX2NhY2hlW3RoaXMuZXhwcmVzc2lvbl0gPSB0aGlzLnhwYXRoOwogIH0sCgogIGZpbmRFbGVtZW50czogZnVuY3Rpb24ocm9vdCkgewogICAgcm9vdCA9IHJvb3QgfHwgZG9jdW1lbnQ7CiAgICBpZiAodGhpcy54cGF0aCkgcmV0dXJuIGRvY3VtZW50Ll9nZXRFbGVtZW50c0J5WFBhdGgodGhpcy54cGF0aCwgcm9vdCk7CiAgICByZXR1cm4gdGhpcy5tYXRjaGVyKHJvb3QpOwogIH0sCgogIG1hdGNoOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLnRva2VucyA9IFtdOwoKICAgIHZhciBlID0gdGhpcy5leHByZXNzaW9uLCBwcyA9IFNlbGVjdG9yLnBhdHRlcm5zLCBhcyA9IFNlbGVjdG9yLmFzc2VydGlvbnM7CiAgICB2YXIgbGUsIHAsIG07CgogICAgd2hpbGUgKGUgJiYgbGUgIT09IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgbGUgPSBlOwogICAgICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgcCA9IHBzW2ldOwogICAgICAgIGlmIChtID0gZS5tYXRjaChwKSkgewogICAgICAgICAgLy8gdXNlIHRoZSBTZWxlY3Rvci5hc3NlcnRpb25zIG1ldGhvZHMgdW5sZXNzIHRoZSBzZWxlY3RvcgogICAgICAgICAgLy8gaXMgdG9vIGNvbXBsZXguCiAgICAgICAgICBpZiAoYXNbaV0pIHsKICAgICAgICAgICAgdGhpcy50b2tlbnMucHVzaChbaSwgT2JqZWN0LmNsb25lKG0pXSk7CiAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gcmVsdWN0YW50bHkgZG8gYSBkb2N1bWVudC13aWRlIHNlYXJjaAogICAgICAgICAgICAvLyBhbmQgbG9vayBmb3IgYSBtYXRjaCBpbiB0aGUgYXJyYXkKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZEVsZW1lbnRzKGRvY3VtZW50KS5pbmNsdWRlKGVsZW1lbnQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHZhciBtYXRjaCA9IHRydWUsIG5hbWUsIG1hdGNoZXM7CiAgICBmb3IgKHZhciBpID0gMCwgdG9rZW47IHRva2VuID0gdGhpcy50b2tlbnNbaV07IGkrKykgewogICAgICBuYW1lID0gdG9rZW5bMF0sIG1hdGNoZXMgPSB0b2tlblsxXTsKICAgICAgaWYgKCFTZWxlY3Rvci5hc3NlcnRpb25zW25hbWVdKGVsZW1lbnQsIG1hdGNoZXMpKSB7CiAgICAgICAgbWF0Y2ggPSBmYWxzZTsgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbWF0Y2g7CiAgfSwKCiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAiIzxTZWxlY3RvcjoiICsgdGhpcy5leHByZXNzaW9uLmluc3BlY3QoKSArICI+IjsKICB9Cn0pOwoKT2JqZWN0LmV4dGVuZChTZWxlY3RvciwgewogIF9jYWNoZTogeyB9LAoKICB4cGF0aDogewogICAgZGVzY2VuZGFudDogICAiLy8qIiwKICAgIGNoaWxkOiAgICAgICAgIi8qIiwKICAgIGFkamFjZW50OiAgICAgIi9mb2xsb3dpbmctc2libGluZzo6KlsxXSIsCiAgICBsYXRlclNpYmxpbmc6ICcvZm9sbG93aW5nLXNpYmxpbmc6OionLAogICAgdGFnTmFtZTogICAgICBmdW5jdGlvbihtKSB7CiAgICAgIGlmIChtWzFdID09ICcqJykgcmV0dXJuICcnOwogICAgICByZXR1cm4gIltsb2NhbC1uYW1lKCk9JyIgKyBtWzFdLnRvTG93ZXJDYXNlKCkgKwogICAgICAgICAgICAgIicgb3IgbG9jYWwtbmFtZSgpPSciICsgbVsxXS50b1VwcGVyQ2FzZSgpICsgIiddIjsKICAgIH0sCiAgICBjbGFzc05hbWU6ICAgICJbY29udGFpbnMoY29uY2F0KCcgJywgQGNsYXNzLCAnICcpLCAnICN7MX0gJyldIiwKICAgIGlkOiAgICAgICAgICAgIltAaWQ9JyN7MX0nXSIsCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG0pIHsKICAgICAgbVsxXSA9IG1bMV0udG9Mb3dlckNhc2UoKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZSgiW0AjezF9XSIpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIGF0dHI6IGZ1bmN0aW9uKG0pIHsKICAgICAgbVsxXSA9IG1bMV0udG9Mb3dlckNhc2UoKTsKICAgICAgbVszXSA9IG1bNV0gfHwgbVs2XTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShTZWxlY3Rvci54cGF0aC5vcGVyYXRvcnNbbVsyXV0pLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVkbzogZnVuY3Rpb24obSkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbbVsxXV07CiAgICAgIGlmICghaCkgcmV0dXJuICcnOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oaCkpIHJldHVybiBoKG0pOwogICAgICByZXR1cm4gbmV3IFRlbXBsYXRlKFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbbVsxXV0pLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIG9wZXJhdG9yczogewogICAgICAnPSc6ICAiW0AjezF9PScjezN9J10iLAogICAgICAnIT0nOiAiW0AjezF9IT0nI3szfSddIiwKICAgICAgJ149JzogIltzdGFydHMtd2l0aChAI3sxfSwgJyN7M30nKV0iLAogICAgICAnJD0nOiAiW3N1YnN0cmluZyhAI3sxfSwgKHN0cmluZy1sZW5ndGgoQCN7MX0pIC0gc3RyaW5nLWxlbmd0aCgnI3szfScpICsgMSkpPScjezN9J10iLAogICAgICAnKj0nOiAiW2NvbnRhaW5zKEAjezF9LCAnI3szfScpXSIsCiAgICAgICd+PSc6ICJbY29udGFpbnMoY29uY2F0KCcgJywgQCN7MX0sICcgJyksICcgI3szfSAnKV0iLAogICAgICAnfD0nOiAiW2NvbnRhaW5zKGNvbmNhdCgnLScsIEAjezF9LCAnLScpLCAnLSN7M30tJyldIgogICAgfSwKICAgIHBzZXVkb3M6IHsKICAgICAgJ2ZpcnN0LWNoaWxkJzogJ1tub3QocHJlY2VkaW5nLXNpYmxpbmc6OiopXScsCiAgICAgICdsYXN0LWNoaWxkJzogICdbbm90KGZvbGxvd2luZy1zaWJsaW5nOjoqKV0nLAogICAgICAnb25seS1jaGlsZCc6ICAnW25vdChwcmVjZWRpbmctc2libGluZzo6KiBvciBmb2xsb3dpbmctc2libGluZzo6KildJywKICAgICAgJ2VtcHR5JzogICAgICAgIltjb3VudCgqKSA9IDAgYW5kIChjb3VudCh0ZXh0KCkpID0gMCBvciB0cmFuc2xhdGUodGV4dCgpLCAnIFx0XHJcbicsICcnKSA9ICcnKV0iLAogICAgICAnY2hlY2tlZCc6ICAgICAiW0BjaGVja2VkXSIsCiAgICAgICdkaXNhYmxlZCc6ICAgICJbQGRpc2FibGVkXSIsCiAgICAgICdlbmFibGVkJzogICAgICJbbm90KEBkaXNhYmxlZCldIiwKICAgICAgJ25vdCc6IGZ1bmN0aW9uKG0pIHsKICAgICAgICB2YXIgZSA9IG1bNl0sIHAgPSBTZWxlY3Rvci5wYXR0ZXJucywKICAgICAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRoLCBsZSwgdjsKCiAgICAgICAgdmFyIGV4Y2x1c2lvbiA9IFtdOwogICAgICAgIHdoaWxlIChlICYmIGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgICAgIGxlID0gZTsKICAgICAgICAgIGZvciAodmFyIGkgaW4gcCkgewogICAgICAgICAgICBpZiAobSA9IGUubWF0Y2gocFtpXSkpIHsKICAgICAgICAgICAgICB2ID0gT2JqZWN0LmlzRnVuY3Rpb24oeFtpXSkgPyB4W2ldKG0pIDogbmV3IFRlbXBsYXRlKHhbaV0pLmV2YWx1YXRlKG0pOwogICAgICAgICAgICAgIGV4Y2x1c2lvbi5wdXNoKCIoIiArIHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSkgKyAiKSIpOwogICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAiW25vdCgiICsgZXhjbHVzaW9uLmpvaW4oIiBhbmQgIikgKyAiKV0iOwogICAgICB9LAogICAgICAnbnRoLWNoaWxkJzogICAgICBmdW5jdGlvbihtKSB7CiAgICAgICAgcmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCIoY291bnQoLi9wcmVjZWRpbmctc2libGluZzo6KikgKyAxKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ250aC1sYXN0LWNoaWxkJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vZm9sbG93aW5nLXNpYmxpbmc6OiopICsgMSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtb2YtdHlwZSc6ICAgIGZ1bmN0aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRvcy5udGgoInBvc2l0aW9uKCkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtbGFzdC1vZi10eXBlJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zLm50aCgiKGxhc3QoKSArIDEgLSBwb3NpdGlvbigpKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ2ZpcnN0LW9mLXR5cGUnOiAgZnVuY3Rpb24obSkgewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zWydudGgtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICAnbGFzdC1vZi10eXBlJzogICBmdW5jdGlvbihtKSB7CiAgICAgICAgbVs2XSA9ICIxIjsgcmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbJ250aC1sYXN0LW9mLXR5cGUnXShtKTsKICAgICAgfSwKICAgICAgJ29ubHktb2YtdHlwZSc6ICAgZnVuY3Rpb24obSkgewogICAgICAgIHZhciBwID0gU2VsZWN0b3IueHBhdGgucHNldWRvczsgcmV0dXJuIHBbJ2ZpcnN0LW9mLXR5cGUnXShtKSArIHBbJ2xhc3Qtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICBudGg6IGZ1bmN0aW9uKGZyYWdtZW50LCBtKSB7CiAgICAgICAgdmFyIG1tLCBmb3JtdWxhID0gbVs2XSwgcHJlZGljYXRlOwogICAgICAgIGlmIChmb3JtdWxhID09ICdldmVuJykgZm9ybXVsYSA9ICcybiswJzsKICAgICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXihcZCspJC8pKSAvLyBkaWdpdCBvbmx5CiAgICAgICAgICByZXR1cm4gJ1snICsgZnJhZ21lbnQgKyAiPSAiICsgbW1bMV0gKyAnXSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXigtP1xkKik/bigoWystXSkoXGQrKSk/LykpIHsgLy8gYW4rYgogICAgICAgICAgaWYgKG1tWzFdID09ICItIikgbW1bMV0gPSAtMTsKICAgICAgICAgIHZhciBhID0gbW1bMV0gPyBOdW1iZXIobW1bMV0pIDogMTsKICAgICAgICAgIHZhciBiID0gbW1bMl0gPyBOdW1iZXIobW1bMl0pIDogMDsKICAgICAgICAgIHByZWRpY2F0ZSA9ICJbKCgje2ZyYWdtZW50fSAtICN7Yn0pIG1vZCAje2F9ID0gMCkgYW5kICIgKwogICAgICAgICAgIigoI3tmcmFnbWVudH0gLSAje2J9KSBkaXYgI3thfSA+PSAwKV0iOwogICAgICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShwcmVkaWNhdGUpLmV2YWx1YXRlKHsKICAgICAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LCBhOiBhLCBiOiBiIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCgogIGNyaXRlcmlhOiB7CiAgICB0YWdOYW1lOiAgICAgICduID0gaC50YWdOYW1lKG4sIHIsICIjezF9IiwgYyk7ICAgICAgYyA9IGZhbHNlOycsCiAgICBjbGFzc05hbWU6ICAgICduID0gaC5jbGFzc05hbWUobiwgciwgIiN7MX0iLCBjKTsgICAgYyA9IGZhbHNlOycsCiAgICBpZDogICAgICAgICAgICduID0gaC5pZChuLCByLCAiI3sxfSIsIGMpOyAgICAgICAgICAgYyA9IGZhbHNlOycsCiAgICBhdHRyUHJlc2VuY2U6ICduID0gaC5hdHRyUHJlc2VuY2UobiwgciwgIiN7MX0iLCBjKTsgYyA9IGZhbHNlOycsCiAgICBhdHRyOiBmdW5jdGlvbihtKSB7CiAgICAgIG1bM10gPSAobVs1XSB8fCBtWzZdKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZSgnbiA9IGguYXR0cihuLCByLCAiI3sxfSIsICIjezN9IiwgIiN7Mn0iLCBjKTsgYyA9IGZhbHNlOycpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVkbzogZnVuY3Rpb24obSkgewogICAgICBpZiAobVs2XSkgbVs2XSA9IG1bNl0ucmVwbGFjZSgvIi9nLCAnXFwiJyk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoJ24gPSBoLnBzZXVkbyhuLCAiI3sxfSIsICIjezZ9IiwgciwgYyk7IGMgPSBmYWxzZTsnKS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBkZXNjZW5kYW50OiAgICdjID0gImRlc2NlbmRhbnQiOycsCiAgICBjaGlsZDogICAgICAgICdjID0gImNoaWxkIjsnLAogICAgYWRqYWNlbnQ6ICAgICAnYyA9ICJhZGphY2VudCI7JywKICAgIGxhdGVyU2libGluZzogJ2MgPSAibGF0ZXJTaWJsaW5nIjsnCiAgfSwKCiAgcGF0dGVybnM6IHsKICAgIC8vIGNvbWJpbmF0b3JzIG11c3QgYmUgbGlzdGVkIGZpcnN0CiAgICAvLyAoYW5kIGRlc2NlbmRhbnQgbmVlZHMgdG8gYmUgbGFzdCBjb21iaW5hdG9yKQogICAgbGF0ZXJTaWJsaW5nOiAvXlxzKn5ccyovLAogICAgY2hpbGQ6ICAgICAgICAvXlxzKj5ccyovLAogICAgYWRqYWNlbnQ6ICAgICAvXlxzKlwrXHMqLywKICAgIGRlc2NlbmRhbnQ6ICAgL15ccy8sCgogICAgLy8gc2VsZWN0b3JzIGZvbGxvdwogICAgdGFnTmFtZTogICAgICAvXlxzKihcKnxbXHdcLV0rKShcYnwkKT8vLAogICAgaWQ6ICAgICAgICAgICAvXiMoW1x3XC1cKl0rKShcYnwkKS8sCiAgICBjbGFzc05hbWU6ICAgIC9eXC4oW1x3XC1cKl0rKShcYnwkKS8sCiAgICBwc2V1ZG86Ci9eOigoZmlyc3R8bGFzdHxudGh8bnRoLWxhc3R8b25seSkoLWNoaWxkfC1vZi10eXBlKXxlbXB0eXxjaGVja2VkfChlbnxkaXMpYWJsZWR8bm90KShcKCguKj8pXCkpPyhcYnwkfCg/PVxzfFs6K34+XSkpLywKICAgIGF0dHJQcmVzZW5jZTogL15cWyhbXHddKylcXS8sCiAgICBhdHRyOiAgICAgICAgIC9cWygoPzpbXHctXSo6KT9bXHctXSspXHMqKD86KFshXiQqfnxdPz0pXHMqKChbJyJdKShbXlw0XSo/KVw0fChbXiciXVteXF1dKj8pKSk/XF0vCiAgfSwKCiAgLy8gZm9yIFNlbGVjdG9yLm1hdGNoIGFuZCBFbGVtZW50I21hdGNoCiAgYXNzZXJ0aW9uczogewogICAgdGFnTmFtZTogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAgICByZXR1cm4gbWF0Y2hlc1sxXS50b1VwcGVyQ2FzZSgpID09IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwogICAgfSwKCiAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIG1hdGNoZXMpIHsKICAgICAgcmV0dXJuIEVsZW1lbnQuaGFzQ2xhc3NOYW1lKGVsZW1lbnQsIG1hdGNoZXNbMV0pOwogICAgfSwKCiAgICBpZDogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAgICByZXR1cm4gZWxlbWVudC5pZCA9PT0gbWF0Y2hlc1sxXTsKICAgIH0sCgogICAgYXR0clByZXNlbmNlOiBmdW5jdGlvbihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAgIHJldHVybiBFbGVtZW50Lmhhc0F0dHJpYnV0ZShlbGVtZW50LCBtYXRjaGVzWzFdKTsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAgICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKGVsZW1lbnQsIG1hdGNoZXNbMV0pOwogICAgICByZXR1cm4gbm9kZVZhbHVlICYmIFNlbGVjdG9yLm9wZXJhdG9yc1ttYXRjaGVzWzJdXShub2RlVmFsdWUsIG1hdGNoZXNbNV0gfHwgbWF0Y2hlc1s2XSk7CiAgICB9CiAgfSwKCiAgaGFuZGxlcnM6IHsKICAgIC8vIFVUSUxJVFkgRlVOQ1RJT05TCiAgICAvLyBqb2lucyB0d28gY29sbGVjdGlvbnMKICAgIGNvbmNhdDogZnVuY3Rpb24oYSwgYikgewogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IGJbaV07IGkrKykKICAgICAgICBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBtYXJrcyBhbiBhcnJheSBvZiBub2RlcyBmb3IgY291bnRpbmcKICAgIG1hcms6IGZ1bmN0aW9uKG5vZGVzKSB7CiAgICAgIHZhciBfdHJ1ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlID0gX3RydWU7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0sCgogICAgdW5tYXJrOiBmdW5jdGlvbihub2RlcykgewogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlID0gdW5kZWZpbmVkOwogICAgICByZXR1cm4gbm9kZXM7CiAgICB9LAoKICAgIC8vIG1hcmsgZWFjaCBjaGlsZCBub2RlIHdpdGggaXRzIHBvc2l0aW9uIChmb3IgbnRoIGNhbGxzKQogICAgLy8gIm9mVHlwZSIgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSdyZSBpbmRleGluZyBmb3IgbnRoLW9mLXR5cGUKICAgIC8vIHJhdGhlciB0aGFuIG50aC1jaGlsZAogICAgaW5kZXg6IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHJldmVyc2UsIG9mVHlwZSkgewogICAgICBwYXJlbnROb2RlLl9jb3VudGVkQnlQcm90b3R5cGUgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICBmb3IgKHZhciBub2RlcyA9IHBhcmVudE5vZGUuY2hpbGROb2RlcywgaSA9IG5vZGVzLmxlbmd0aCAtIDEsIGogPSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTsKICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgJiYgKCFvZlR5cGUgfHwgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlKSkgbm9kZS5ub2RlSW5kZXggPSBqKys7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gMSwgbm9kZXMgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXM7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiAoIW9mVHlwZSB8fCBub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpKSBub2RlLm5vZGVJbmRleCA9IGorKzsKICAgICAgfQogICAgfSwKCiAgICAvLyBmaWx0ZXJzIG91dCBkdXBsaWNhdGVzIGFuZCBleHRlbmRzIGFsbCBub2RlcwogICAgdW5pcXVlOiBmdW5jdGlvbihub2RlcykgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJldHVybiBub2RlczsKICAgICAgdmFyIHJlc3VsdHMgPSBbXSwgbjsKICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspCiAgICAgICAgaWYgKCEobiA9IG5vZGVzW2ldKS5fY291bnRlZEJ5UHJvdG90eXBlKSB7CiAgICAgICAgICBuLl9jb3VudGVkQnlQcm90b3R5cGUgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgICAgICAgIHJlc3VsdHMucHVzaChFbGVtZW50LmV4dGVuZChuKSk7CiAgICAgICAgfQogICAgICByZXR1cm4gU2VsZWN0b3IuaGFuZGxlcnMudW5tYXJrKHJlc3VsdHMpOwogICAgfSwKCiAgICAvLyBDT01CSU5BVE9SIEZVTkNUSU9OUwogICAgZGVzY2VuZGFudDogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaC5jb25jYXQocmVzdWx0cywgbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIGNoaWxkOiBmdW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAgIGZvciAodmFyIGogPSAwLCBjaGlsZDsgY2hpbGQgPSBub2RlLmNoaWxkTm9kZXNbal07IGorKykKICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PSAxICYmIGNoaWxkLnRhZ05hbWUgIT0gJyEnKSByZXN1bHRzLnB1c2goY2hpbGQpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBhZGphY2VudDogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICB2YXIgbmV4dCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nKG5vZGUpOwogICAgICAgIGlmIChuZXh0KSByZXN1bHRzLnB1c2gobmV4dCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIGxhdGVyU2libGluZzogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaC5jb25jYXQocmVzdWx0cywgRWxlbWVudC5uZXh0U2libGluZ3Mobm9kZSkpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgbmV4dEVsZW1lbnRTaWJsaW5nOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIHdoaWxlIChub2RlID0gbm9kZS5uZXh0U2libGluZykKCSAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgcHJldmlvdXNFbGVtZW50U2libGluZzogZnVuY3Rpb24obm9kZSkgewogICAgICB3aGlsZSAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKQogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gVE9LRU4gRlVOQ1RJT05TCiAgICB0YWdOYW1lOiBmdW5jdGlvbihub2Rlcywgcm9vdCwgdGFnTmFtZSwgY29tYmluYXRvcikgewogICAgICB2YXIgdVRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICAgIHZhciByZXN1bHRzID0gW10sIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAgICAgICAgIC8vIGZhc3RsYW5lIGZvciBvcmRpbmFyeSBkZXNjZW5kYW50IGNvbWJpbmF0b3JzCiAgICAgICAgICBpZiAoY29tYmluYXRvciA9PSAiZGVzY2VuZGFudCIpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGguY29uY2F0KHJlc3VsdHMsIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkpOwogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAgICAgaWYgKHRhZ05hbWUgPT0gIioiKSByZXR1cm4gbm9kZXM7CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgIGlmIChub2RlLnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gdVRhZ05hbWUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSBlbHNlIHJldHVybiByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwogICAgfSwKCiAgICBpZDogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGlkLCBjb21iaW5hdG9yKSB7CiAgICAgIHZhciB0YXJnZXROb2RlID0gJChpZCksIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm4gW107CiAgICAgIGlmICghbm9kZXMgJiYgcm9vdCA9PSBkb2N1bWVudCkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAgICAgICAgIGlmIChjb21iaW5hdG9yID09ICdjaGlsZCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmICh0YXJnZXROb2RlLnBhcmVudE5vZGUgPT0gbm9kZSkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAnZGVzY2VuZGFudCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmIChFbGVtZW50LmRlc2NlbmRhbnRPZih0YXJnZXROb2RlLCBub2RlKSkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAnYWRqYWNlbnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyh0YXJnZXROb2RlKSA9PSBub2RlKQogICAgICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IGhbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZSA9PSB0YXJnZXROb2RlKSByZXR1cm4gW3RhcmdldE5vZGVdOwogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICByZXR1cm4gKHRhcmdldE5vZGUgJiYgRWxlbWVudC5kZXNjZW5kYW50T2YodGFyZ2V0Tm9kZSwgcm9vdCkpID8gW3RhcmdldE5vZGVdIDogW107CiAgICB9LAoKICAgIGNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSwgY29tYmluYXRvcikgewogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmhhbmRsZXJzLmJ5Q2xhc3NOYW1lKG5vZGVzLCByb290LCBjbGFzc05hbWUpOwogICAgfSwKCiAgICBieUNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSkgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IFNlbGVjdG9yLmhhbmRsZXJzLmRlc2NlbmRhbnQoW3Jvb3RdKTsKICAgICAgdmFyIG5lZWRsZSA9ICcgJyArIGNsYXNzTmFtZSArICcgJzsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZSwgbm9kZUNsYXNzTmFtZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAgICAgaWYgKG5vZGVDbGFzc05hbWUubGVuZ3RoID09IDApIGNvbnRpbnVlOwogICAgICAgIGlmIChub2RlQ2xhc3NOYW1lID09IGNsYXNzTmFtZSB8fCAoJyAnICsgbm9kZUNsYXNzTmFtZSArICcgJykuaW5jbHVkZShuZWVkbGUpKQogICAgICAgICAgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG5vZGVzLCByb290LCBhdHRyLCBjb21iaW5hdG9yKSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChFbGVtZW50Lmhhc0F0dHJpYnV0ZShub2RlLCBhdHRyKSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGF0dHIsIHZhbHVlLCBvcGVyYXRvciwgY29tYmluYXRvcikgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgaWYgKG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVzID0gdGhpc1tjb21iaW5hdG9yXShub2Rlcyk7CiAgICAgIHZhciBoYW5kbGVyID0gU2VsZWN0b3Iub3BlcmF0b3JzW29wZXJhdG9yXSwgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKG5vZGUsIGF0dHIpOwogICAgICAgIGlmIChub2RlVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlOwogICAgICAgIGlmIChoYW5kbGVyKG5vZGVWYWx1ZSwgdmFsdWUpKSByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIHBzZXVkbzogZnVuY3Rpb24obm9kZXMsIG5hbWUsIHZhbHVlLCByb290LCBjb21iaW5hdG9yKSB7CiAgICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9yKSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3NbbmFtZV0obm9kZXMsIHZhbHVlLCByb290KTsKICAgIH0KICB9LAoKICBwc2V1ZG9zOiB7CiAgICAnZmlyc3QtY2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSkgY29udGludWU7CiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAgJ2xhc3QtY2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMubmV4dEVsZW1lbnRTaWJsaW5nKG5vZGUpKSBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCiAgICAnb25seS1jaGlsZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIWgucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSAmJiAhaC5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSkpCiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKICAgICdudGgtY2hpbGQnOiAgICAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBmb3JtdWxhLCByb290KTsKICAgIH0sCiAgICAnbnRoLWxhc3QtY2hpbGQnOiAgIGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSk7CiAgICB9LAogICAgJ250aC1vZi10eXBlJzogICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsIGZvcm11bGEsIHJvb3QsIGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICAnbnRoLWxhc3Qtb2YtdHlwZSc6IGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSwgdHJ1ZSk7CiAgICB9LAogICAgJ2ZpcnN0LW9mLXR5cGUnOiAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsICIxIiwgcm9vdCwgZmFsc2UsIHRydWUpOwogICAgfSwKICAgICdsYXN0LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCAiMSIsIHJvb3QsIHRydWUsIHRydWUpOwogICAgfSwKICAgICdvbmx5LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgdmFyIHAgPSBTZWxlY3Rvci5wc2V1ZG9zOwogICAgICByZXR1cm4gcFsnbGFzdC1vZi10eXBlJ10ocFsnZmlyc3Qtb2YtdHlwZSddKG5vZGVzLCBmb3JtdWxhLCByb290KSwgZm9ybXVsYSwgcm9vdCk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgdGhlIGFuK2IgbG9naWMKICAgIGdldEluZGljZXM6IGZ1bmN0aW9uKGEsIGIsIHRvdGFsKSB7CiAgICAgIGlmIChhID09IDApIHJldHVybiBiID4gMCA/IFtiXSA6IFtdOwogICAgICByZXR1cm4gJFIoMSwgdG90YWwpLmluamVjdChbXSwgZnVuY3Rpb24obWVtbywgaSkgewogICAgICAgIGlmICgwID09IChpIC0gYikgJSBhICYmIChpIC0gYikgLyBhID49IDApIG1lbW8ucHVzaChpKTsKICAgICAgICByZXR1cm4gbWVtbzsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgbnRoKC1sYXN0KS1jaGlsZCwgbnRoKC1sYXN0KS1vZi10eXBlLCBhbmQgKGZpcnN0fGxhc3QpLW9mLXR5cGUKICAgIG50aDogZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QsIHJldmVyc2UsIG9mVHlwZSkgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJldHVybiBbXTsKICAgICAgaWYgKGZvcm11bGEgPT0gJ2V2ZW4nKSBmb3JtdWxhID0gJzJuKzAnOwogICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIHJlc3VsdHMgPSBbXSwgaW5kZXhlZCA9IFtdLCBtOwogICAgICBoLm1hcmsobm9kZXMpOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoIW5vZGUucGFyZW50Tm9kZS5fY291bnRlZEJ5UHJvdG90eXBlKSB7CiAgICAgICAgICBoLmluZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2ZXJzZSwgb2ZUeXBlKTsKICAgICAgICAgIGluZGV4ZWQucHVzaChub2RlLnBhcmVudE5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZm9ybXVsYS5tYXRjaCgvXlxkKyQvKSkgeyAvLyBqdXN0IGEgbnVtYmVyCiAgICAgICAgZm9ybXVsYSA9IE51bWJlcihmb3JtdWxhKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gZm9ybXVsYSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9IGVsc2UgaWYgKG0gPSBmb3JtdWxhLm1hdGNoKC9eKC0/XGQqKT9uKChbKy1dKShcZCspKT8vKSkgeyAvLyBhbitiCiAgICAgICAgaWYgKG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7CiAgICAgICAgdmFyIGEgPSBtWzFdID8gTnVtYmVyKG1bMV0pIDogMTsKICAgICAgICB2YXIgYiA9IG1bMl0gPyBOdW1iZXIobVsyXSkgOiAwOwogICAgICAgIHZhciBpbmRpY2VzID0gU2VsZWN0b3IucHNldWRvcy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVzLmxlbmd0aCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRpY2VzLmxlbmd0aDsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbDsgaisrKQogICAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gaW5kaWNlc1tqXSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBoLnVubWFyayhub2Rlcyk7CiAgICAgIGgudW5tYXJrKGluZGV4ZWQpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VtcHR5JzogZnVuY3Rpb24obm9kZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7CiAgICAgICAgLy8gSUUgdHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1lbnQgbm9kZXMKICAgICAgICBpZiAobm9kZS50YWdOYW1lID09ICchJyB8fCAobm9kZS5maXJzdENoaWxkICYmICFub2RlLmlubmVySFRNTC5tYXRjaCgvXlxzKiQvKSkpIGNvbnRpbnVlOwogICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ25vdCc6IGZ1bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9vdCkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5cGUsIG07CiAgICAgIHZhciBleGNsdXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKS5maW5kRWxlbWVudHMocm9vdCk7CiAgICAgIGgubWFyayhleGNsdXNpb25zKTsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKCFub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgaC51bm1hcmsoZXhjbHVzaW9ucyk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICAnZW5hYmxlZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIW5vZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgICdkaXNhYmxlZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAobm9kZS5kaXNhYmxlZCkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2NoZWNrZWQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUuY2hlY2tlZCkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KICB9LAoKICBvcGVyYXRvcnM6IHsKICAgICc9JzogIGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudiA9PSB2OyB9LAogICAgJyE9JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuIG52ICE9IHY7IH0sCiAgICAnXj0nOiBmdW5jdGlvbihudiwgdikgeyByZXR1cm4gbnYuc3RhcnRzV2l0aCh2KTsgfSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5lbmRzV2l0aCh2KTsgfSwKICAgICcqPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5pbmNsdWRlKHYpOyB9LAogICAgJ349JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuICgnICcgKyBudiArICcgJykuaW5jbHVkZSgnICcgKyB2ICsgJyAnKTsgfSwKICAgICd8PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJy0nICsgbnYudG9VcHBlckNhc2UoKSArICctJykuaW5jbHVkZSgnLScgKyB2LnRvVXBwZXJDYXNlKCkgKyAnLScpOyB9CiAgfSwKCiAgc3BsaXQ6IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgZXhwcmVzc2lvbi5zY2FuKC8oKFtcdyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9cXSkrKVxzKigsfCQpLywgZnVuY3Rpb24obSkgewogICAgICBleHByZXNzaW9ucy5wdXNoKG1bMV0uc3RyaXAoKSk7CiAgICB9KTsKICAgIHJldHVybiBleHByZXNzaW9uczsKICB9LAoKICBtYXRjaEVsZW1lbnRzOiBmdW5jdGlvbihlbGVtZW50cywgZXhwcmVzc2lvbikgewogICAgdmFyIG1hdGNoZXMgPSAkJChleHByZXNzaW9uKSwgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgaC5tYXJrKG1hdGNoZXMpOwogICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnRzW2ldOyBpKyspCiAgICAgIGlmIChlbGVtZW50Ll9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVzaChlbGVtZW50KTsKICAgIGgudW5tYXJrKG1hdGNoZXMpOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgZmluZEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnRzLCBleHByZXNzaW9uLCBpbmRleCkgewogICAgaWYgKE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSkgewogICAgICBpbmRleCA9IGV4cHJlc3Npb247IGV4cHJlc3Npb24gPSBmYWxzZTsKICAgIH0KICAgIHJldHVybiBTZWxlY3Rvci5tYXRjaEVsZW1lbnRzKGVsZW1lbnRzLCBleHByZXNzaW9uIHx8ICcqJylbaW5kZXggfHwgMF07CiAgfSwKCiAgZmluZENoaWxkRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb25zKSB7CiAgICBleHByZXNzaW9ucyA9IFNlbGVjdG9yLnNwbGl0KGV4cHJlc3Npb25zLmpvaW4oJywnKSk7CiAgICB2YXIgcmVzdWx0cyA9IFtdLCBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGV4cHJlc3Npb25zLmxlbmd0aCwgc2VsZWN0b3I7IGkgPCBsOyBpKyspIHsKICAgICAgc2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZXhwcmVzc2lvbnNbaV0uc3RyaXAoKSk7CiAgICAgIGguY29uY2F0KHJlc3VsdHMsIHNlbGVjdG9yLmZpbmRFbGVtZW50cyhlbGVtZW50KSk7CiAgICB9CiAgICByZXR1cm4gKGwgPiAxKSA/IGgudW5pcXVlKHJlc3VsdHMpIDogcmVzdWx0czsKICB9Cn0pOwoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgT2JqZWN0LmV4dGVuZChTZWxlY3Rvci5oYW5kbGVycywgewogICAgLy8gSUUgcmV0dXJucyBjb21tZW50IG5vZGVzIG9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikuCiAgICAvLyBGaWx0ZXIgdGhlbSBvdXQuCiAgICBjb25jYXQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBiW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gIiEiKSBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBJRSBpbXByb3Blcmx5IHNlcmlhbGl6ZXMgX2NvdW50ZWRCeVByb3RvdHlwZSBpbiAoaW5uZXJ8b3V0ZXIpSFRNTC4KICAgIHVubWFyazogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdfY291bnRlZEJ5UHJvdG90eXBlJyk7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0KICB9KTsKfQoKZnVuY3Rpb24gJCQoKSB7CiAgcmV0dXJuIFNlbGVjdG9yLmZpbmRDaGlsZEVsZW1lbnRzKGRvY3VtZW50LCAkQShhcmd1bWVudHMpKTsKfQp2YXIgRm9ybSA9IHsKICByZXNldDogZnVuY3Rpb24oZm9ybSkgewogICAgJChmb3JtKS5yZXNldCgpOwogICAgcmV0dXJuIGZvcm07CiAgfSwKCiAgc2VyaWFsaXplRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnRzLCBvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT0gJ29iamVjdCcpIG9wdGlvbnMgPSB7IGhhc2g6ICEhb3B0aW9ucyB9OwogICAgZWxzZSBpZiAoT2JqZWN0LmlzVW5kZWZpbmVkKG9wdGlvbnMuaGFzaCkpIG9wdGlvbnMuaGFzaCA9IHRydWU7CiAgICB2YXIga2V5LCB2YWx1ZSwgc3VibWl0dGVkID0gZmFsc2UsIHN1Ym1pdCA9IG9wdGlvbnMuc3VibWl0OwoKICAgIHZhciBkYXRhID0gZWxlbWVudHMuaW5qZWN0KHsgfSwgZnVuY3Rpb24ocmVzdWx0LCBlbGVtZW50KSB7CiAgICAgIGlmICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgICBrZXkgPSBlbGVtZW50Lm5hbWU7IHZhbHVlID0gJChlbGVtZW50KS5nZXRWYWx1ZSgpOwogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIChlbGVtZW50LnR5cGUgIT0gJ3N1Ym1pdCcgfHwgKCFzdWJtaXR0ZWQgJiYKICAgICAgICAgICAgc3VibWl0ICE9PSBmYWxzZSAmJiAoIXN1Ym1pdCB8fCBrZXkgPT0gc3VibWl0KSAmJiAoc3VibWl0dGVkID0gdHJ1ZSkpKSkgewogICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpIHsKICAgICAgICAgICAgLy8gYSBrZXkgaXMgYWxyZWFkeSBwcmVzZW50OyBjb25zdHJ1Y3QgYW4gYXJyYXkgb2YgdmFsdWVzCiAgICAgICAgICAgIGlmICghT2JqZWN0LmlzQXJyYXkocmVzdWx0W2tleV0pKSByZXN1bHRba2V5XSA9IFtyZXN1bHRba2V5XV07CiAgICAgICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSByZXN1bHRba2V5XSA9IHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogICAgfSk7CgogICAgcmV0dXJuIG9wdGlvbnMuaGFzaCA/IGRhdGEgOiBPYmplY3QudG9RdWVyeVN0cmluZyhkYXRhKTsKICB9Cn07CgpGb3JtLk1ldGhvZHMgPSB7CiAgc2VyaWFsaXplOiBmdW5jdGlvbihmb3JtLCBvcHRpb25zKSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxpemVFbGVtZW50cyhGb3JtLmdldEVsZW1lbnRzKGZvcm0pLCBvcHRpb25zKTsKICB9LAoKICBnZXRFbGVtZW50czogZnVuY3Rpb24oZm9ybSkgewogICAgcmV0dXJuICRBKCQoZm9ybSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKSkuaW5qZWN0KFtdLAogICAgICBmdW5jdGlvbihlbGVtZW50cywgY2hpbGQpIHsKICAgICAgICBpZiAoRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzW2NoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKV0pCiAgICAgICAgICBlbGVtZW50cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKGNoaWxkKSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgICB9CiAgICApOwogIH0sCgogIGdldElucHV0czogZnVuY3Rpb24oZm9ybSwgdHlwZU5hbWUsIG5hbWUpIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAgdmFyIGlucHV0cyA9IGZvcm0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7CgogICAgaWYgKCF0eXBlTmFtZSAmJiAhbmFtZSkgcmV0dXJuICRBKGlucHV0cykubWFwKEVsZW1lbnQuZXh0ZW5kKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbWF0Y2hpbmdJbnB1dHMgPSBbXSwgbGVuZ3RoID0gaW5wdXRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBpbnB1dCA9IGlucHV0c1tpXTsKICAgICAgaWYgKCh0eXBlTmFtZSAmJiBpbnB1dC50eXBlICE9IHR5cGVOYW1lKSB8fCAobmFtZSAmJiBpbnB1dC5uYW1lICE9IG5hbWUpKQogICAgICAgIGNvbnRpbnVlOwogICAgICBtYXRjaGluZ0lucHV0cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKGlucHV0KSk7CiAgICB9CgogICAgcmV0dXJuIG1hdGNoaW5nSW5wdXRzOwogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGZvcm0pIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAgRm9ybS5nZXRFbGVtZW50cyhmb3JtKS5pbnZva2UoJ2Rpc2FibGUnKTsKICAgIHJldHVybiBmb3JtOwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZm9ybSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICBGb3JtLmdldEVsZW1lbnRzKGZvcm0pLmludm9rZSgnZW5hYmxlJyk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICBmaW5kRmlyc3RFbGVtZW50OiBmdW5jdGlvbihmb3JtKSB7CiAgICB2YXIgZWxlbWVudHMgPSAkKGZvcm0pLmdldEVsZW1lbnRzKCkuZmluZEFsbChmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgIHJldHVybiAnaGlkZGVuJyAhPSBlbGVtZW50LnR5cGUgJiYgIWVsZW1lbnQuZGlzYWJsZWQ7CiAgICB9KTsKICAgIHZhciBmaXJzdEJ5SW5kZXggPSBlbGVtZW50cy5maW5kQWxsKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKCd0YWJJbmRleCcpICYmIGVsZW1lbnQudGFiSW5kZXggPj0gMDsKICAgIH0pLnNvcnRCeShmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnRhYkluZGV4IH0pLmZpcnN0KCk7CgogICAgcmV0dXJuIGZpcnN0QnlJbmRleCA/IGZpcnN0QnlJbmRleCA6IGVsZW1lbnRzLmZpbmQoZnVuY3Rpb24oZWxlbWVudCkgewogICAgICByZXR1cm4gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXS5pbmNsdWRlKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKICAgIH0pOwogIH0sCgogIGZvY3VzRmlyc3RFbGVtZW50OiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3JtID0gJChmb3JtKTsKICAgIGZvcm0uZmluZEZpcnN0RWxlbWVudCgpLmFjdGl2YXRlKCk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbihmb3JtLCBvcHRpb25zKSB7CiAgICBmb3JtID0gJChmb3JtKSwgb3B0aW9ucyA9IE9iamVjdC5jbG9uZShvcHRpb25zIHx8IHsgfSk7CgogICAgdmFyIHBhcmFtcyA9IG9wdGlvbnMucGFyYW1ldGVycywgYWN0aW9uID0gZm9ybS5yZWFkQXR0cmlidXRlKCdhY3Rpb24nKSB8fCAnJzsKICAgIGlmIChhY3Rpb24uYmxhbmsoKSkgYWN0aW9uID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICBvcHRpb25zLnBhcmFtZXRlcnMgPSBmb3JtLnNlcmlhbGl6ZSh0cnVlKTsKCiAgICBpZiAocGFyYW1zKSB7CiAgICAgIGlmIChPYmplY3QuaXNTdHJpbmcocGFyYW1zKSkgcGFyYW1zID0gcGFyYW1zLnRvUXVlcnlQYXJhbXMoKTsKICAgICAgT2JqZWN0LmV4dGVuZChvcHRpb25zLnBhcmFtZXRlcnMsIHBhcmFtcyk7CiAgICB9CgogICAgaWYgKGZvcm0uaGFzQXR0cmlidXRlKCdtZXRob2QnKSAmJiAhb3B0aW9ucy5tZXRob2QpCiAgICAgIG9wdGlvbnMubWV0aG9kID0gZm9ybS5tZXRob2Q7CgogICAgcmV0dXJuIG5ldyBBamF4LlJlcXVlc3QoYWN0aW9uLCBvcHRpb25zKTsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZvcm0uRWxlbWVudCA9IHsKICBmb2N1czogZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChlbGVtZW50KS5mb2N1cygpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnNlbGVjdCgpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9OwoKRm9ybS5FbGVtZW50Lk1ldGhvZHMgPSB7CiAgc2VyaWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgdmFyIHZhbHVlID0gZWxlbWVudC5nZXRWYWx1ZSgpOwogICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdmFyIHBhaXIgPSB7IH07CiAgICAgICAgcGFpcltlbGVtZW50Lm5hbWVdID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIE9iamVjdC50b1F1ZXJ5U3RyaW5nKHBhaXIpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gJyc7CiAgfSwKCiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG1ldGhvZCA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVyc1ttZXRob2RdKGVsZW1lbnQpOwogIH0sCgogIHNldFZhbHVlOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgbWV0aG9kID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICBGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnNbbWV0aG9kXShlbGVtZW50LCB2YWx1ZSk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjbGVhcjogZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChlbGVtZW50KS52YWx1ZSA9ICcnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgcHJlc2VudDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkudmFsdWUgIT0gJyc7CiAgfSwKCiAgYWN0aXZhdGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdHJ5IHsKICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICBpZiAoZWxlbWVudC5zZWxlY3QgJiYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdpbnB1dCcgfHwKICAgICAgICAgICFbJ2J1dHRvbicsICdyZXNldCcsICdzdWJtaXQnXS5pbmNsdWRlKGVsZW1lbnQudHlwZSkpKQogICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5ibHVyKCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBGaWVsZCA9IEZvcm0uRWxlbWVudDsKdmFyICRGID0gRm9ybS5FbGVtZW50Lk1ldGhvZHMuZ2V0VmFsdWU7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZvcm0uRWxlbWVudC5TZXJpYWxpemVycyA9IHsKICBpbnB1dDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIHN3aXRjaCAoZWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVycy5pbnB1dFNlbGVjdG9yKGVsZW1lbnQsIHZhbHVlKTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzLnRleHRhcmVhKGVsZW1lbnQsIHZhbHVlKTsKICAgIH0KICB9LAoKICBpbnB1dFNlbGVjdG9yOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybiBlbGVtZW50LmNoZWNrZWQgPyBlbGVtZW50LnZhbHVlIDogbnVsbDsKICAgIGVsc2UgZWxlbWVudC5jaGVja2VkID0gISF2YWx1ZTsKICB9LAoKICB0ZXh0YXJlYTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm4gZWxlbWVudC52YWx1ZTsKICAgIGVsc2UgZWxlbWVudC52YWx1ZSA9IHZhbHVlOwogIH0sCgogIHNlbGVjdDogZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQoaW5kZXgpKQogICAgICByZXR1cm4gdGhpc1tlbGVtZW50LnR5cGUgPT0gJ3NlbGVjdC1vbmUnID8KICAgICAgICAnc2VsZWN0T25lJyA6ICdzZWxlY3RNYW55J10oZWxlbWVudCk7CiAgICBlbHNlIHsKICAgICAgdmFyIG9wdCwgdmFsdWUsIHNpbmdsZSA9ICFPYmplY3QuaXNBcnJheShpbmRleCk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbGVtZW50Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3B0ID0gZWxlbWVudC5vcHRpb25zW2ldOwogICAgICAgIHZhbHVlID0gdGhpcy5vcHRpb25WYWx1ZShvcHQpOwogICAgICAgIGlmIChzaW5nbGUpIHsKICAgICAgICAgIGlmICh2YWx1ZSA9PSBpbmRleCkgewogICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2Ugb3B0LnNlbGVjdGVkID0gaW5kZXguaW5jbHVkZSh2YWx1ZSk7CiAgICAgIH0KICAgIH0KICB9LAoKICBzZWxlY3RPbmU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciBpbmRleCA9IGVsZW1lbnQuc2VsZWN0ZWRJbmRleDsKICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5vcHRpb25WYWx1ZShlbGVtZW50Lm9wdGlvbnNbaW5kZXhdKSA6IG51bGw7CiAgfSwKCiAgc2VsZWN0TWFueTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZhbHVlcywgbGVuZ3RoID0gZWxlbWVudC5sZW5ndGg7CiAgICBpZiAoIWxlbmd0aCkgcmV0dXJuIG51bGw7CgogICAgZm9yICh2YXIgaSA9IDAsIHZhbHVlcyA9IFtdOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIG9wdCA9IGVsZW1lbnQub3B0aW9uc1tpXTsKICAgICAgaWYgKG9wdC5zZWxlY3RlZCkgdmFsdWVzLnB1c2godGhpcy5vcHRpb25WYWx1ZShvcHQpKTsKICAgIH0KICAgIHJldHVybiB2YWx1ZXM7CiAgfSwKCiAgb3B0aW9uVmFsdWU6IGZ1bmN0aW9uKG9wdCkgewogICAgLy8gZXh0ZW5kIGVsZW1lbnQgYmVjYXVzZSBoYXNBdHRyaWJ1dGUgbWF5IG5vdCBiZSBuYXRpdmUKICAgIHJldHVybiBFbGVtZW50LmV4dGVuZChvcHQpLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA/IG9wdC52YWx1ZSA6IG9wdC50ZXh0OwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQWJzdHJhY3QuVGltZWRPYnNlcnZlciA9IENsYXNzLmNyZWF0ZShQZXJpb2RpY2FsRXhlY3V0ZXIsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbigkc3VwZXIsIGVsZW1lbnQsIGZyZXF1ZW5jeSwgY2FsbGJhY2spIHsKICAgICRzdXBlcihjYWxsYmFjaywgZnJlcXVlbmN5KTsKICAgIHRoaXMuZWxlbWVudCAgID0gJChlbGVtZW50KTsKICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogIH0sCgogIGV4ZWN1dGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogICAgaWYgKE9iamVjdC5pc1N0cmluZyh0aGlzLmxhc3RWYWx1ZSkgJiYgT2JqZWN0LmlzU3RyaW5nKHZhbHVlKSA/CiAgICAgICAgdGhpcy5sYXN0VmFsdWUgIT0gdmFsdWUgOiBTdHJpbmcodGhpcy5sYXN0VmFsdWUpICE9IFN0cmluZyh2YWx1ZSkpIHsKICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLmVsZW1lbnQsIHZhbHVlKTsKICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTsKICAgIH0KICB9Cn0pOwoKRm9ybS5FbGVtZW50Lk9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LlRpbWVkT2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LmdldFZhbHVlKHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uT2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoQWJzdHJhY3QuVGltZWRPYnNlcnZlciwgewogIGdldFZhbHVlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBGb3JtLnNlcmlhbGl6ZSh0aGlzLmVsZW1lbnQpOwogIH0KfSk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNhbGxiYWNrKSB7CiAgICB0aGlzLmVsZW1lbnQgID0gJChlbGVtZW50KTsKICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKCiAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICAgIGlmICh0aGlzLmVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09ICdmb3JtJykKICAgICAgdGhpcy5yZWdpc3RlckZvcm1DYWxsYmFja3MoKTsKICAgIGVsc2UKICAgICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKHRoaXMuZWxlbWVudCk7CiAgfSwKCiAgb25FbGVtZW50RXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogICAgaWYgKHRoaXMubGFzdFZhbHVlICE9IHZhbHVlKSB7CiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5lbGVtZW50LCB2YWx1ZSk7CiAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7CiAgICB9CiAgfSwKCiAgcmVnaXN0ZXJGb3JtQ2FsbGJhY2tzOiBmdW5jdGlvbigpIHsKICAgIEZvcm0uZ2V0RWxlbWVudHModGhpcy5lbGVtZW50KS5lYWNoKHRoaXMucmVnaXN0ZXJDYWxsYmFjaywgdGhpcyk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQudHlwZSkgewogICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZS50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICAgIGNhc2UgJ3JhZGlvJzoKICAgICAgICAgIEV2ZW50Lm9ic2VydmUoZWxlbWVudCwgJ2NsaWNrJywgdGhpcy5vbkVsZW1lbnRFdmVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBFdmVudC5vYnNlcnZlKGVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLm9uRWxlbWVudEV2ZW50LmJpbmQodGhpcykpOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9Cn0pOwoKRm9ybS5FbGVtZW50LkV2ZW50T2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoQWJzdHJhY3QuRXZlbnRPYnNlcnZlciwgewogIGdldFZhbHVlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBGb3JtLkVsZW1lbnQuZ2V0VmFsdWUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwoKRm9ybS5FdmVudE9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxpemUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwppZiAoIXdpbmRvdy5FdmVudCkgdmFyIEV2ZW50ID0geyB9OwoKT2JqZWN0LmV4dGVuZChFdmVudCwgewogIEtFWV9CQUNLU1BBQ0U6IDgsCiAgS0VZX1RBQjogICAgICAgOSwKICBLRVlfUkVUVVJOOiAgIDEzLAogIEtFWV9FU0M6ICAgICAgMjcsCiAgS0VZX0xFRlQ6ICAgICAzNywKICBLRVlfVVA6ICAgICAgIDM4LAogIEtFWV9SSUdIVDogICAgMzksCiAgS0VZX0RPV046ICAgICA0MCwKICBLRVlfREVMRVRFOiAgIDQ2LAogIEtFWV9IT01FOiAgICAgMzYsCiAgS0VZX0VORDogICAgICAzNSwKICBLRVlfUEFHRVVQOiAgIDMzLAogIEtFWV9QQUdFRE9XTjogMzQsCiAgS0VZX0lOU0VSVDogICA0NSwKCiAgY2FjaGU6IHsgfSwKCiAgcmVsYXRlZFRhcmdldDogZnVuY3Rpb24oZXZlbnQpIHsKICAgIHZhciBlbGVtZW50OwogICAgc3dpdGNoKGV2ZW50LnR5cGUpIHsKICAgICAgY2FzZSAnbW91c2VvdmVyJzogZWxlbWVudCA9IGV2ZW50LmZyb21FbGVtZW50OyBicmVhazsKICAgICAgY2FzZSAnbW91c2VvdXQnOiAgZWxlbWVudCA9IGV2ZW50LnRvRWxlbWVudDsgICBicmVhazsKICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gRWxlbWVudC5leHRlbmQoZWxlbWVudCk7CiAgfQp9KTsKCkV2ZW50Lk1ldGhvZHMgPSAoZnVuY3Rpb24oKSB7CiAgdmFyIGlzQnV0dG9uOwoKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKICAgIHZhciBidXR0b25NYXAgPSB7IDA6IDEsIDE6IDQsIDI6IDIgfTsKICAgIGlzQnV0dG9uID0gZnVuY3Rpb24oZXZlbnQsIGNvZGUpIHsKICAgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PSBidXR0b25NYXBbY29kZV07CiAgICB9OwoKICB9IGVsc2UgaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCkgewogICAgaXNCdXR0b24gPSBmdW5jdGlvbihldmVudCwgY29kZSkgewogICAgICBzd2l0Y2ggKGNvZGUpIHsKICAgICAgICBjYXNlIDA6IHJldHVybiBldmVudC53aGljaCA9PSAxICYmICFldmVudC5tZXRhS2V5OwogICAgICAgIGNhc2UgMTogcmV0dXJuIGV2ZW50LndoaWNoID09IDEgJiYgZXZlbnQubWV0YUtleTsKICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH07CgogIH0gZWxzZSB7CiAgICBpc0J1dHRvbiA9IGZ1bmN0aW9uKGV2ZW50LCBjb2RlKSB7CiAgICAgIHJldHVybiBldmVudC53aGljaCA/IChldmVudC53aGljaCA9PT0gY29kZSArIDEpIDogKGV2ZW50LmJ1dHRvbiA9PT0gY29kZSk7CiAgICB9OwogIH0KCiAgcmV0dXJuIHsKICAgIGlzTGVmdENsaWNrOiAgIGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMCkgfSwKICAgIGlzTWlkZGxlQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMSkgfSwKICAgIGlzUmlnaHRDbGljazogIGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMikgfSwKCiAgICBlbGVtZW50OiBmdW5jdGlvbihldmVudCkgewogICAgICB2YXIgbm9kZSA9IEV2ZW50LmV4dGVuZChldmVudCkudGFyZ2V0OwogICAgICByZXR1cm4gRWxlbWVudC5leHRlbmQobm9kZS5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERSA/IG5vZGUucGFyZW50Tm9kZSA6IG5vZGUpOwogICAgfSwKCiAgICBmaW5kRWxlbWVudDogZnVuY3Rpb24oZXZlbnQsIGV4cHJlc3Npb24pIHsKICAgICAgdmFyIGVsZW1lbnQgPSBFdmVudC5lbGVtZW50KGV2ZW50KTsKICAgICAgaWYgKCFleHByZXNzaW9uKSByZXR1cm4gZWxlbWVudDsKICAgICAgdmFyIGVsZW1lbnRzID0gW2VsZW1lbnRdLmNvbmNhdChlbGVtZW50LmFuY2VzdG9ycygpKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmZpbmRFbGVtZW50KGVsZW1lbnRzLCBleHByZXNzaW9uLCAwKTsKICAgIH0sCgogICAgcG9pbnRlcjogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBldmVudC5wYWdlWCB8fCAoZXZlbnQuY2xpZW50WCArCiAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSksCiAgICAgICAgeTogZXZlbnQucGFnZVkgfHwgKGV2ZW50LmNsaWVudFkgKwogICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApKQogICAgICB9OwogICAgfSwKCiAgICBwb2ludGVyWDogZnVuY3Rpb24oZXZlbnQpIHsgcmV0dXJuIEV2ZW50LnBvaW50ZXIoZXZlbnQpLnggfSwKICAgIHBvaW50ZXJZOiBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gRXZlbnQucG9pbnRlcihldmVudCkueSB9LAoKICAgIHN0b3A6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIEV2ZW50LmV4dGVuZChldmVudCk7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICBldmVudC5zdG9wcGVkID0gdHJ1ZTsKICAgIH0KICB9Owp9KSgpOwoKRXZlbnQuZXh0ZW5kID0gKGZ1bmN0aW9uKCkgewogIHZhciBtZXRob2RzID0gT2JqZWN0LmtleXMoRXZlbnQuTWV0aG9kcykuaW5qZWN0KHsgfSwgZnVuY3Rpb24obSwgbmFtZSkgewogICAgbVtuYW1lXSA9IEV2ZW50Lk1ldGhvZHNbbmFtZV0ubWV0aG9kaXplKCk7CiAgICByZXR1cm4gbTsKICB9KTsKCiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgICBPYmplY3QuZXh0ZW5kKG1ldGhvZHMsIHsKICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsgdGhpcy5jYW5jZWxCdWJibGUgPSB0cnVlIH0sCiAgICAgIHByZXZlbnREZWZhdWx0OiAgZnVuY3Rpb24oKSB7IHRoaXMucmV0dXJuVmFsdWUgPSBmYWxzZSB9LAogICAgICBpbnNwZWN0OiBmdW5jdGlvbigpIHsgcmV0dXJuICJbb2JqZWN0IEV2ZW50XSIgfQogICAgfSk7CgogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIGlmICghZXZlbnQpIHJldHVybiBmYWxzZTsKICAgICAgaWYgKGV2ZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlKSByZXR1cm4gZXZlbnQ7CgogICAgICBldmVudC5fZXh0ZW5kZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICB2YXIgcG9pbnRlciA9IEV2ZW50LnBvaW50ZXIoZXZlbnQpOwogICAgICBPYmplY3QuZXh0ZW5kKGV2ZW50LCB7CiAgICAgICAgdGFyZ2V0OiBldmVudC5zcmNFbGVtZW50LAogICAgICAgIHJlbGF0ZWRUYXJnZXQ6IEV2ZW50LnJlbGF0ZWRUYXJnZXQoZXZlbnQpLAogICAgICAgIHBhZ2VYOiAgcG9pbnRlci54LAogICAgICAgIHBhZ2VZOiAgcG9pbnRlci55CiAgICAgIH0pOwogICAgICByZXR1cm4gT2JqZWN0LmV4dGVuZChldmVudCwgbWV0aG9kcyk7CiAgICB9OwoKICB9IGVsc2UgewogICAgRXZlbnQucHJvdG90eXBlID0gRXZlbnQucHJvdG90eXBlIHx8IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIikuX19wcm90b19fOwogICAgT2JqZWN0LmV4dGVuZChFdmVudC5wcm90b3R5cGUsIG1ldGhvZHMpOwogICAgcmV0dXJuIFByb3RvdHlwZS5LOwogIH0KfSkoKTsKCk9iamVjdC5leHRlbmQoRXZlbnQsIChmdW5jdGlvbigpIHsKICB2YXIgY2FjaGUgPSBFdmVudC5jYWNoZTsKCiAgZnVuY3Rpb24gZ2V0RXZlbnRJRChlbGVtZW50KSB7CiAgICBpZiAoZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRCkgcmV0dXJuIGVsZW1lbnQuX3Byb3RvdHlwZUV2ZW50SURbMF07CiAgICBhcmd1bWVudHMuY2FsbGVlLmlkID0gYXJndW1lbnRzLmNhbGxlZS5pZCB8fCAxOwogICAgcmV0dXJuIGVsZW1lbnQuX3Byb3RvdHlwZUV2ZW50SUQgPSBbKythcmd1bWVudHMuY2FsbGVlLmlkXTsKICB9CgogIGZ1bmN0aW9uIGdldERPTUV2ZW50TmFtZShldmVudE5hbWUpIHsKICAgIGlmIChldmVudE5hbWUgJiYgZXZlbnROYW1lLmluY2x1ZGUoJzonKSkgcmV0dXJuICJkYXRhYXZhaWxhYmxlIjsKICAgIHJldHVybiBldmVudE5hbWU7CiAgfQoKICBmdW5jdGlvbiBnZXRDYWNoZUZvcklEKGlkKSB7CiAgICByZXR1cm4gY2FjaGVbaWRdID0gY2FjaGVbaWRdIHx8IHsgfTsKICB9CgogIGZ1bmN0aW9uIGdldFdyYXBwZXJzRm9yRXZlbnROYW1lKGlkLCBldmVudE5hbWUpIHsKICAgIHZhciBjID0gZ2V0Q2FjaGVGb3JJRChpZCk7CiAgICByZXR1cm4gY1tldmVudE5hbWVdID0gY1tldmVudE5hbWVdIHx8IFtdOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpIHsKICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCk7CiAgICB2YXIgYyA9IGdldFdyYXBwZXJzRm9yRXZlbnROYW1lKGlkLCBldmVudE5hbWUpOwogICAgaWYgKGMucGx1Y2soImhhbmRsZXIiKS5pbmNsdWRlKGhhbmRsZXIpKSByZXR1cm4gZmFsc2U7CgogICAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbihldmVudCkgewogICAgICBpZiAoIUV2ZW50IHx8ICFFdmVudC5leHRlbmQgfHwKICAgICAgICAoZXZlbnQuZXZlbnROYW1lICYmIGV2ZW50LmV2ZW50TmFtZSAhPSBldmVudE5hbWUpKQogICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgRXZlbnQuZXh0ZW5kKGV2ZW50KTsKICAgICAgaGFuZGxlci5jYWxsKGVsZW1lbnQsIGV2ZW50KTsKICAgIH07CgogICAgd3JhcHBlci5oYW5kbGVyID0gaGFuZGxlcjsKICAgIGMucHVzaCh3cmFwcGVyKTsKICAgIHJldHVybiB3cmFwcGVyOwogIH0KCiAgZnVuY3Rpb24gZmluZFdyYXBwZXIoaWQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgdmFyIGMgPSBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZlbnROYW1lKTsKICAgIHJldHVybiBjLmZpbmQoZnVuY3Rpb24od3JhcHBlcikgeyByZXR1cm4gd3JhcHBlci5oYW5kbGVyID09IGhhbmRsZXIgfSk7CiAgfQoKICBmdW5jdGlvbiBkZXN0cm95V3JhcHBlcihpZCwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICB2YXIgYyA9IGdldENhY2hlRm9ySUQoaWQpOwogICAgaWYgKCFjW2V2ZW50TmFtZV0pIHJldHVybiBmYWxzZTsKICAgIGNbZXZlbnROYW1lXSA9IGNbZXZlbnROYW1lXS53aXRob3V0KGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpKTsKICB9CgogIGZ1bmN0aW9uIGRlc3Ryb3lDYWNoZSgpIHsKICAgIGZvciAodmFyIGlkIGluIGNhY2hlKQogICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gY2FjaGVbaWRdKQogICAgICAgIGNhY2hlW2lkXVtldmVudE5hbWVdID0gbnVsbDsKICB9CgogIGlmICh3aW5kb3cuYXR0YWNoRXZlbnQpIHsKICAgIHdpbmRvdy5hdHRhY2hFdmVudCgib251bmxvYWQiLCBkZXN0cm95Q2FjaGUpOwogIH0KCiAgcmV0dXJuIHsKICAgIG9ic2VydmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIHZhciB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIHJldHVybiBlbGVtZW50OwogICAgfSwKCiAgICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlvbihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCksIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIGlmICghaGFuZGxlciAmJiBldmVudE5hbWUpIHsKICAgICAgICBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZlbnROYW1lKS5lYWNoKGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgICAgICAgIGVsZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUsIHdyYXBwZXIuaGFuZGxlcik7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CgogICAgICB9IGVsc2UgaWYgKCFldmVudE5hbWUpIHsKICAgICAgICBPYmplY3Qua2V5cyhnZXRDYWNoZUZvcklEKGlkKSkuZWFjaChmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAgICAgIGVsZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICB9CgogICAgICB2YXIgd3JhcHBlciA9IGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwoKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9LAoKICAgIGZpcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgbWVtbykgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgIWVsZW1lbnQuZGlzcGF0Y2hFdmVudCkKICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoKICAgICAgdmFyIGV2ZW50OwogICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHsKICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7CiAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCJkYXRhYXZhaWxhYmxlIiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpOwogICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9ICJvbmRhdGFhdmFpbGFibGUiOwogICAgICB9CgogICAgICBldmVudC5ldmVudE5hbWUgPSBldmVudE5hbWU7CiAgICAgIGV2ZW50Lm1lbW8gPSBtZW1vIHx8IHsgfTsKCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCkgewogICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5maXJlRXZlbnQoZXZlbnQuZXZlbnRUeXBlLCBldmVudCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgfQogIH07Cn0pKCkpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgRXZlbnQuTWV0aG9kcyk7CgpFbGVtZW50LmFkZE1ldGhvZHMoewogIGZpcmU6ICAgICAgICAgIEV2ZW50LmZpcmUsCiAgb2JzZXJ2ZTogICAgICAgRXZlbnQub2JzZXJ2ZSwKICBzdG9wT2JzZXJ2aW5nOiBFdmVudC5zdG9wT2JzZXJ2aW5nCn0pOwoKT2JqZWN0LmV4dGVuZChkb2N1bWVudCwgewogIGZpcmU6ICAgICAgICAgIEVsZW1lbnQuTWV0aG9kcy5maXJlLm1ldGhvZGl6ZSgpLAogIG9ic2VydmU6ICAgICAgIEVsZW1lbnQuTWV0aG9kcy5vYnNlcnZlLm1ldGhvZGl6ZSgpLAogIHN0b3BPYnNlcnZpbmc6IEVsZW1lbnQuTWV0aG9kcy5zdG9wT2JzZXJ2aW5nLm1ldGhvZGl6ZSgpLAogIGxvYWRlZDogICAgICAgIGZhbHNlCn0pOwoKKGZ1bmN0aW9uKCkgewogIC8qIFN1cHBvcnQgZm9yIHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50IGlzIGJhc2VkIG9uIHdvcmsgYnkgRGFuIFdlYmIsCiAgICAgTWF0dGhpYXMgTWlsbGVyLCBEZWFuIEVkd2FyZHMgYW5kIEpvaG4gUmVzaWcuICovCgogIHZhciB0aW1lcjsKCiAgZnVuY3Rpb24gZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpIHsKICAgIGlmIChkb2N1bWVudC5sb2FkZWQpIHJldHVybjsKICAgIGlmICh0aW1lcikgd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgZG9jdW1lbnQuZmlyZSgiZG9tOmxvYWRlZCIpOwogICAgZG9jdW1lbnQubG9hZGVkID0gdHJ1ZTsKICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB7CiAgICAgIHRpbWVyID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKQogICAgICAgICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9LCAwKTsKCiAgICAgIEV2ZW50Lm9ic2VydmUod2luZG93LCAibG9hZCIsIGZpcmVDb250ZW50TG9hZGVkRXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgIGZpcmVDb250ZW50TG9hZGVkRXZlbnQsIGZhbHNlKTsKICAgIH0KCiAgfSBlbHNlIHsKICAgIGRvY3VtZW50LndyaXRlKCI8c2NyaXB0IGlkPV9fb25ET01Db250ZW50TG9hZGVkIGRlZmVyIHNyYz0vLzo+PFwvc2NyaXB0PiIpOwogICAgJCgiX19vbkRPTUNvbnRlbnRMb2FkZWQiKS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CiAgICAgICAgdGhpcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgIGZpcmVDb250ZW50TG9hZGVkRXZlbnQoKTsKICAgICAgfQogICAgfTsKICB9Cn0pKCk7Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBERVBSRUNBVEVEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKSGFzaC50b1F1ZXJ5U3RyaW5nID0gT2JqZWN0LnRvUXVlcnlTdHJpbmc7Cgp2YXIgVG9nZ2xlID0geyBkaXNwbGF5OiBFbGVtZW50LnRvZ2dsZSB9OwoKRWxlbWVudC5NZXRob2RzLmNoaWxkT2YgPSBFbGVtZW50Lk1ldGhvZHMuZGVzY2VuZGFudE9mOwoKdmFyIEluc2VydGlvbiA9IHsKICBCZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmluc2VydChlbGVtZW50LCB7YmVmb3JlOmNvbnRlbnR9KTsKICB9LAoKICBUb3A6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmluc2VydChlbGVtZW50LCB7dG9wOmNvbnRlbnR9KTsKICB9LAoKICBCb3R0b206IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmluc2VydChlbGVtZW50LCB7Ym90dG9tOmNvbnRlbnR9KTsKICB9LAoKICBBZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewogICAgcmV0dXJuIEVsZW1lbnQuaW5zZXJ0KGVsZW1lbnQsIHthZnRlcjpjb250ZW50fSk7CiAgfQp9OwoKdmFyICRjb250aW51ZSA9IG5ldyBFcnJvcignInRocm93ICRjb250aW51ZSIgaXMgZGVwcmVjYXRlZCwgdXNlICJyZXR1cm4iIGluc3RlYWQnKTsKCi8vIFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIHNjcmlwdC5hY3Vsby51czsgbm90aWNlIHRoZSBkZXByZWNhdGVkIG1ldGhvZHMKLy8gZnVydGhlciBiZWxvdywgdGhhdCBtYXAgdG8gdGhlIG5ld2VyIEVsZW1lbnQgbWV0aG9kcy4KdmFyIFBvc2l0aW9uID0gewogIC8vIHNldCB0byB0cnVlIGlmIG5lZWRlZCwgd2FybmluZzogZmlyZWZveCBwZXJmb3JtYW5jZSBwcm9ibGVtcwogIC8vIE5PVCBuZWVlZGVkIGZvciBwYWdlIHNjcm9sbGluZywgb25seSBpZiBkcmFnZ2FibGUgY29udGFpbmVkIGluCiAgLy8gc2Nyb2xsYWJsZSBlbGVtZW50cwogIGluY2x1ZGVTY3JvbGxPZmZzZXRzOiBmYWxzZSwKCiAgLy8gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgd2l0aGluSW5jbHVkaW5nU2Nyb2xsb2Zmc2V0LCBldmVyeSB0aW1lIHRoZQogIC8vIHBhZ2UgaXMgc2Nyb2xsZWQKICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZGVsdGFYID0gIHdpbmRvdy5wYWdlWE9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQKICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdAogICAgICAgICAgICAgICAgfHwgMDsKICAgIHRoaXMuZGVsdGFZID0gIHdpbmRvdy5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIHx8IDA7CiAgfSwKCiAgLy8gY2FjaGVzIHgveSBjb29yZGluYXRlIHBhaXIgdG8gdXNlIHdpdGggb3ZlcmxhcAogIHdpdGhpbjogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkgewogICAgaWYgKHRoaXMuaW5jbHVkZVNjcm9sbE9mZnNldHMpCiAgICAgIHJldHVybiB0aGlzLndpdGhpbkluY2x1ZGluZ1Njcm9sbG9mZnNldHMoZWxlbWVudCwgeCwgeSk7CiAgICB0aGlzLnhjb21wID0geDsKICAgIHRoaXMueWNvbXAgPSB5OwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh5ID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHkgPCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAgICB4ID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHggPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICB3aXRoaW5JbmNsdWRpbmdTY3JvbGxvZmZzZXRzOiBmdW5jdGlvbihlbGVtZW50LCB4LCB5KSB7CiAgICB2YXIgb2Zmc2V0Y2FjaGUgPSBFbGVtZW50LmN1bXVsYXRpdmVTY3JvbGxPZmZzZXQoZWxlbWVudCk7CgogICAgdGhpcy54Y29tcCA9IHggKyBvZmZzZXRjYWNoZVswXSAtIHRoaXMuZGVsdGFYOwogICAgdGhpcy55Y29tcCA9IHkgKyBvZmZzZXRjYWNoZVsxXSAtIHRoaXMuZGVsdGFZOwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh0aGlzLnljb21wID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHRoaXMueWNvbXAgPCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAgICB0aGlzLnhjb21wID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHRoaXMueGNvbXAgPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICAvLyB3aXRoaW4gbXVzdCBiZSBjYWxsZWQgZGlyZWN0bHkgYmVmb3JlCiAgb3ZlcmxhcDogZnVuY3Rpb24obW9kZSwgZWxlbWVudCkgewogICAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICAgIGlmIChtb2RlID09ICd2ZXJ0aWNhbCcpCiAgICAgIHJldHVybiAoKHRoaXMub2Zmc2V0WzFdICsgZWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gdGhpcy55Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0OwogICAgaWYgKG1vZGUgPT0gJ2hvcml6b250YWwnKQogICAgICByZXR1cm4gKCh0aGlzLm9mZnNldFswXSArIGVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gdGhpcy54Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgfSwKCiAgLy8gRGVwcmVjYXRpb24gbGF5ZXIgLS0gdXNlIG5ld2VyIEVsZW1lbnQgbWV0aG9kcyBub3cgKDEuNS4yKS4KCiAgY3VtdWxhdGl2ZU9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQsCgogIHBvc2l0aW9uZWRPZmZzZXQ6IEVsZW1lbnQuTWV0aG9kcy5wb3NpdGlvbmVkT2Zmc2V0LAoKICBhYnNvbHV0aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CiAgICByZXR1cm4gRWxlbWVudC5hYnNvbHV0aXplKGVsZW1lbnQpOwogIH0sCgogIHJlbGF0aXZpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIFBvc2l0aW9uLnByZXBhcmUoKTsKICAgIHJldHVybiBFbGVtZW50LnJlbGF0aXZpemUoZWxlbWVudCk7CiAgfSwKCiAgcmVhbE9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVTY3JvbGxPZmZzZXQsCgogIG9mZnNldFBhcmVudDogRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBhcmVudCwKCiAgcGFnZTogRWxlbWVudC5NZXRob2RzLnZpZXdwb3J0T2Zmc2V0LAoKICBjbG9uZTogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpIHsKICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTsKICAgIHJldHVybiBFbGVtZW50LmNsb25lUG9zaXRpb24odGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpOwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gZnVuY3Rpb24oaW5zdGFuY2VNZXRob2RzKXsKICBmdW5jdGlvbiBpdGVyKG5hbWUpIHsKICAgIHJldHVybiBuYW1lLmJsYW5rKCkgPyBudWxsIDogIltjb250YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgIiArIG5hbWUgKyAiICcpXSI7CiAgfQoKICBpbnN0YW5jZU1ldGhvZHMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGggPwogIGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lLnRvU3RyaW5nKCkuc3RyaXAoKTsKICAgIHZhciBjb25kID0gL1xzLy50ZXN0KGNsYXNzTmFtZSkgPyAkdyhjbGFzc05hbWUpLm1hcChpdGVyKS5qb2luKCcnKSA6IGl0ZXIoY2xhc3NOYW1lKTsKICAgIHJldHVybiBjb25kID8gZG9jdW1lbnQuX2dldEVsZW1lbnRzQnlYUGF0aCgnLi8vKicgKyBjb25kLCBlbGVtZW50KSA6IFtdOwogIH0gOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZS50b1N0cmluZygpLnN0cmlwKCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXSwgY2xhc3NOYW1lcyA9ICgvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICR3KGNsYXNzTmFtZSkgOiBudWxsKTsKICAgIGlmICghY2xhc3NOYW1lcyAmJiAhY2xhc3NOYW1lKSByZXR1cm4gZWxlbWVudHM7CgogICAgdmFyIG5vZGVzID0gJChlbGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOwogICAgY2xhc3NOYW1lID0gJyAnICsgY2xhc3NOYW1lICsgJyAnOwoKICAgIGZvciAodmFyIGkgPSAwLCBjaGlsZCwgY247IGNoaWxkID0gbm9kZXNbaV07IGkrKykgewogICAgICBpZiAoY2hpbGQuY2xhc3NOYW1lICYmIChjbiA9ICcgJyArIGNoaWxkLmNsYXNzTmFtZSArICcgJykgJiYgKGNuLmluY2x1ZGUoY2xhc3NOYW1lKSB8fAogICAgICAgICAgKGNsYXNzTmFtZXMgJiYgY2xhc3NOYW1lcy5hbGwoZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICByZXR1cm4gIW5hbWUudG9TdHJpbmcoKS5ibGFuaygpICYmIGNuLmluY2x1ZGUoJyAnICsgbmFtZSArICcgJyk7CiAgICAgICAgICB9KSkpKQogICAgICAgIGVsZW1lbnRzLnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50czsKICB9OwoKICByZXR1cm4gZnVuY3Rpb24oY2xhc3NOYW1lLCBwYXJlbnRFbGVtZW50KSB7CiAgICByZXR1cm4gJChwYXJlbnRFbGVtZW50IHx8IGRvY3VtZW50LmJvZHkpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTsKICB9Owp9KEVsZW1lbnQuTWV0aG9kcyk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkVsZW1lbnQuQ2xhc3NOYW1lcyA9IENsYXNzLmNyZWF0ZSgpOwpFbGVtZW50LkNsYXNzTmFtZXMucHJvdG90eXBlID0gewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgfSwKCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5zZWxlY3QoZnVuY3Rpb24obmFtZSkgewogICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAwOwogICAgfSkuX2VhY2goaXRlcmF0b3IpOwogIH0sCgogIHNldDogZnVuY3Rpb24oY2xhc3NOYW1lKSB7CiAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogIH0sCgogIGFkZDogZnVuY3Rpb24oY2xhc3NOYW1lVG9BZGQpIHsKICAgIGlmICh0aGlzLmluY2x1ZGUoY2xhc3NOYW1lVG9BZGQpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS5jb25jYXQoY2xhc3NOYW1lVG9BZGQpLmpvaW4oJyAnKSk7CiAgfSwKCiAgcmVtb3ZlOiBmdW5jdGlvbihjbGFzc05hbWVUb1JlbW92ZSkgewogICAgaWYgKCF0aGlzLmluY2x1ZGUoY2xhc3NOYW1lVG9SZW1vdmUpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS53aXRob3V0KGNsYXNzTmFtZVRvUmVtb3ZlKS5qb2luKCcgJykpOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAkQSh0aGlzKS5qb2luKCcgJyk7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50LkNsYXNzTmFtZXMucHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKRWxlbWVudC5hZGRNZXRob2RzKCk7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/scriptaculous.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2NyaXB0LmFjdWxvLnVzIHNjcmlwdGFjdWxvdXMuanMgdjEuOC4xLCBUaHUgSmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAwNS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0cDovL21pci5hY3Vsby51cykKLy8gCi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwovLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLy8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwovLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwovLyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLy8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgovLyAKLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLy8gaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAovLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQovLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgovLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLy8KLy8gRm9yIGRldGFpbHMsIHNlZSB0aGUgc2NyaXB0LmFjdWxvLnVzIHdlYiBzaXRlOiBodHRwOi8vc2NyaXB0LmFjdWxvLnVzLwoKdmFyIFNjcmlwdGFjdWxvdXMgPSB7CiAgVmVyc2lvbjogJzEuOC4xJywKICByZXF1aXJlOiBmdW5jdGlvbihsaWJyYXJ5TmFtZSkgewogICAgLy8gaW5zZXJ0aW5nIHZpYSBET00gZmFpbHMgaW4gU2FmYXJpIDIuMCwgc28gYnJ1dGUgZm9yY2UgYXBwcm9hY2gKICAgIGRvY3VtZW50LndyaXRlKCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInK2xpYnJhcnlOYW1lKyciPjxcL3NjcmlwdD4nKTsKICB9LAogIFJFUVVJUkVEX1BST1RPVFlQRTogJzEuNi4wJywKICBsb2FkOiBmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGNvbnZlcnRWZXJzaW9uU3RyaW5nKHZlcnNpb25TdHJpbmcpewogICAgICB2YXIgciA9IHZlcnNpb25TdHJpbmcuc3BsaXQoJy4nKTsKICAgICAgcmV0dXJuIHBhcnNlSW50KHJbMF0pKjEwMDAwMCArIHBhcnNlSW50KHJbMV0pKjEwMDAgKyBwYXJzZUludChyWzJdKTsKICAgIH0KIAogICAgaWYoKHR5cGVvZiBQcm90b3R5cGU9PSd1bmRlZmluZWQnKSB8fCAKICAgICAgICh0eXBlb2YgRWxlbWVudCA9PSAndW5kZWZpbmVkJykgfHwgCiAgICAgICAodHlwZW9mIEVsZW1lbnQuTWV0aG9kcz09J3VuZGVmaW5lZCcpIHx8CiAgICAgICAoY29udmVydFZlcnNpb25TdHJpbmcoUHJvdG90eXBlLlZlcnNpb24pIDwgCiAgICAgICAgY29udmVydFZlcnNpb25TdHJpbmcoU2NyaXB0YWN1bG91cy5SRVFVSVJFRF9QUk9UT1RZUEUpKSkKICAgICAgIHRocm93KCJzY3JpcHQuYWN1bG8udXMgcmVxdWlyZXMgdGhlIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yayA+PSAiICsKICAgICAgICBTY3JpcHRhY3Vsb3VzLlJFUVVJUkVEX1BST1RPVFlQRSk7CiAgICAKICAgICRBKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkuZmluZEFsbCggZnVuY3Rpb24ocykgewogICAgICByZXR1cm4gKHMuc3JjICYmIHMuc3JjLm1hdGNoKC9zY3JpcHRhY3Vsb3VzXC5qcyhcPy4qKT8kLykpCiAgICB9KS5lYWNoKCBmdW5jdGlvbihzKSB7CiAgICAgIHZhciBwYXRoID0gcy5zcmMucmVwbGFjZSgvc2NyaXB0YWN1bG91c1wuanMoXD8uKik/JC8sJycpOwogICAgICB2YXIgaW5jbHVkZXMgPSBzLnNyYy5tYXRjaCgvXD8uKmxvYWQ9KFthLXosXSopLyk7CiAgICAgIChpbmNsdWRlcyA/IGluY2x1ZGVzWzFdIDogJ2J1aWxkZXIsZWZmZWN0cyxkcmFnZHJvcCxjb250cm9scyxzbGlkZXIsc291bmQnKS5zcGxpdCgnLCcpLmVhY2goCiAgICAgICBmdW5jdGlvbihpbmNsdWRlKSB7IFNjcmlwdGFjdWxvdXMucmVxdWlyZShwYXRoK2luY2x1ZGUrJy5qcycpIH0pOwogICAgfSk7CiAgfQp9CgpTY3JpcHRhY3Vsb3VzLmxvYWQoKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lytebox/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lytebox/images/blank.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/next_blue.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////H1+/L1+/H0+vD0+vDz+eXr+OPp9uHo9dfh9NPd8MvY8crX8MnW78jV7sfU7cbT7MXS68TR6sPQ6sHP6bfI6LDE6q/D6a3B56q+5Ka64Jax45Sv4ZKt35Cr3Y6p24yn2oql2Iij1oah1ISf0nmb2nSW1W+T2G+R0WqMzGKK1WiJymSIzmGGzF+H01mBzVZ9ylN6x055zFB3xE10wUpxv0ZuvDpsyjdoxzZkvi5jxzZiti9hwCpfxCZbwCdZuSJXvCRWtidWsR5TuBpPtRZLsRJHrQ5Dqgk/pv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAA/ACAAAAf/gElJAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihOhaFGzoLAK46s7MAJzcGhAY3JwAqtMAboD04CYQcPQwAyCUczhwAAjguhC44AgAXzi49zRzKnz4+MgEAHT4N5uiIGD4Y7RiH5+miQPYmAB5ADvn7iS88eLxApI+fqCEwWAzJ8GHIAwANh0j8YOiAxAOIGj4URSTGgBw/WhCBAAAEERQgQJAsVIEIkQqITK4MVWQGAAVFckYAEKLIzkMEgsyYEYTAoZ4/QxmhQUiDESMSAIiAiiiFEQQIjKQ4NDWqqCM1Cq04MgHAiCMrRqgdAWDCEbZmOskaOltWFBIbhQrsoACABJK/gAsI2WFoh5AChfzyTcW4sWMAgCP/fUy5suXLmDNr3kzpEWdGgj4zCgQAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/next_gold.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////n57/j47/f37/b27/T03/Hx3+/v3+7uz+joz+rqv+jov+fnv+Xlv+Tkv+Liv+Dgv9/fv93dv9/fn9zcv93dn9vbr9ran9bWn9TUf9HRf8/Pn87Of8vLf8jIf8XFf8bGX8LCf8TET7+/f76+X7y8f7+/P7m5f7q6P7e3X7S0T6+vX7CwT7GxP7CwL62tP6urX6+vD6ioP6mpD6qqAKOjP5+fP6SkAJqaP56eAJ2dD5qaH5aWP5eXAJOTD5KSAI2NL4yMD4yMAISEH4WFAH9/AHl5AHNzAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEgALAAAAAA/ACAAAAf/gEhIAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihNBOFGTQKAK40s7MAIjEFhAUxIgAmtMAZoDczCIQaNwsAyCAazhoAATMohCgzAQAVzig3zRrKnzk5LtgcOQwA5uiHFzkX7ReH6qM99SQAHT0N+PqJLTo6WiDKt0/UjxcqfmDw8MMBAIY/InowZCCiAUQMHYoSIkPADh8shDwA8EFIig8fRhayIESIBUQlVYYiUgNAAiI4IQAIQUTnoQFBatQIMuAQT5+hitggtKFIkQgARjxFtKLIgQNFVhySClWUERyFYBiRAKCEERgl0pYAIMHI2rJjOQ2ZJSvqCI9CBIBQAHDiiN+/BIYAMQRkCIFCffemWsy4MYC/kP06nky5suXLmDNrpvRoMyNBnhkFAgA7]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/next_green.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP///+/27+/17+/07+/z79/v39/r39/p38/lz8/fz7/ev7/bv7/cv7/Zv7/Yv7/Wv7/Uv7/Tv7/Rv7/Pv6/Mr5/On5/Ln5/Jn5/En5+8n3+9f3+6f3+3f3+zf3+wf3+tf3+pf3+mf3+jf3+gf1+oX1+gX0+lT1+YX1+QXz+cP0+TT1+MXz+XP0+OTz+NPz+JPz+EPy+KLz9+Pz96Pz90Pw+EDz9wPw99DwB8AB9vHw9xDy9kLwB1AABvAA9lDwBoAB9YHw9eDwBiAABbAABUAABOAABHAABBAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEgALAAAAAA/ACAAAAf/gEhIAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihOBWFGjgKAK44s7MAJjUFhAU1JgAptMAaoDw3CIQbPAwAyCQbzhsAATcshCw3AQAWziw8zRvKnz09MdgcPQsA5uiHFz0X7ReH6qM/9SUAHT8N+PqJLjo6XCDKt0+UkBcqhGDwIMQBAIZCInowZCCiAUQMHYoaAkNADh8thjwA8GHIiQ8fRhaiMGQIBUQlVYYiIgNAAiI4IQAAQUTnoQFBZMgIMuAQT5+hiswglKFIkQgAQjxFhKLIgQNFUBySClWUERqFVhiRAECEkRUi0ooAIMHI2rJjOQ2ZJSvqiI1CBHZMADDiiN+/BIDsMLQDCIFCffemWsy4MYC/kP06nky5suXLmDNrpvRoMyNBnhkFAgA7]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/next_grey.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////f39/b29vX19fT09PPz8+/v7+zs7Onp6ebm5t/f397e3tzc3Nra2tjY2NfX19XV1dPT09HR0dDQ0M3NzcrKysXFxcDAwL29vby8vLm5ubW1tbKysq+vr6ysrKurq6ioqKSkpKOjo6GhoaCgoJubm5WVlZKSkpGRkZCQkI2NjYuLi4iIiIeHh4KCgoGBgXx8fHp6enZ2dnV1dXNzc3JycnFxcWxsbGhoaGZmZmVlZWFhYV9fX1paWldXV1FRUUlJSUNDQ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEIALAAAAAA/ACAAAAf/gEJCAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihLxOFFy8KAK4vs7MAICwGhAYsIAAktMAXoDEuCYQZMQsAyB4ZzhkAAS4lhCUuAQAUziUxzRnKnzQ0KgIAGjQM5uiIFTQV7RWH5+miN/YiABs3Dfn7iSkzZqRApI+fKB0rTOiwwEGHAwANdUjkYOiAxAOIGj4UxaPFgBo4UPB4AKADjxIdOpAsRIEHDwqITK4M5eMFAAU+ckIA8MHHzkMEdszaQeBQz5+hfsAghOHHjwi2niI68QMBgh8nDoGQKgqIjEIqgEgAEAKIihBoQwCQAEQtWbGGOMqOFRXERqECOViNCMK3b4EeOQzl6FGg0F5WqRIrXgwAiOPHjxlLnky5suXLmDNTeqSZkaDOjAIBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/next_red.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////nv7/vv7/bv7/jv7/nf3/Tf3/Df3/TPz+vPz/C/v/K/v+6/v+u/v+a/v+m/v+S/v+K/v9+/v92/v+Cvr+yfn+mfn+Wfn96fn9Ofn+Z/f+F/f9x/f9h/f9N/f85/f8l/f8R/f8B/f7t/f9pfX85fX8JfX7ZfX7BfX9xPT8JPT7tPT9k/P9M/P8Q/P70/P7U/P64/P6c/P6A/P5k/P8cvL5AvL6kfH9APD8cPD4gfH7YPD6MPD5oPD80AAMQAALoAALEAAKcAAJ0AAJQAAIoAAIEAAHcAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEgALAAAAAA/ACAAAAf/gEhIAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihPhWFGj4LAK4+s7MAKTgFhAU4KQAstMAaoD85CIQbPwoAyCQbzhsAAjkthC05AgAWzi0/zRvKn0BANdgcQAwA5uiHF0AX7ReH6qNB9SUAHUEN+PqJLjs7XCDKt0+UkBcqhGDwIOQBAIZCInowZCCiAUQMHYoaAiPADR4rhjgA8GGIiQ8fRhaiMGQIBUQlVYYiEgNAAiI4IQAAQUTnIQI9YsToQeAQT5+hisgglKFIkQgAQjxFdKLIgQNFThySClWUkRmFUBiRAECEERQi0ooAIMHI2rJjOQ2ZJSvqCI1CA2xMADDiiN+/A3TYMGRDx4BCffemWsy4MYC/kP06nky5suXLmDNrpvRoMyNBnhkFAgA7]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEoklEQVRYheWYf0xVdRTAP/e+ex8+eDxQARNFIDPGD39ULyOxWv7c1CUTU6fV1qKWlLZqOl3LtelaRmWjTfqlzk3L1JiKWWjFMCQmpubL/MlkBKmIP0BxFOc++uPBhcvjPci1OfJs9497zrnnnve533PO9/uU1tbWVu5gUW93ArdbtNudwK2Kmr7BT+ctf7ZHW1fpswAA+kWloSgKqqrQdPGYxRYSlYpq2jwBY/RpALpuQ1UVFEXxs9l1rQ1O8Bja6Oxy88bpsPFgkounJg/GneTyc85YVMH6pSkkxYVZ9M/l/s6hU438+nm6RT86uxx3kot1S1IAuH5TeHN9JcVHrwKQFBfK0nkJuJNc5O+q4eNdNd0m2TVuu7QDULsBoGlqQDgWPxGD2IEhZD4SQ239X+wsrWPfoXr2vudmSFSI6bijtI5r1/9mY9GfvJ09whLEMLyIGH7BRQwMw2veL8o7ScXJBp6eEgvAD79cxumwAeD1+mLMHB9jeW8wses2c5l3Fb3d1jMA4a4BTl7KHAaA+95wln96ioL951k0K8F0/LrkPCLC3oN1LJufiCu0o3oMw0BEugEgGEYHmJ9/u8zY5EiWzU8EICczzozjAyBkZkQzNjmylwA0VCVACWg2sz8EE7VrkuEOGyKC19vx5WouNVPmqeeJjGiuNjazr+KSJUhvAQyK1Cjz1JvPd4bYDuDfbEvsmg1dt2HXbX42XfPp7VrwNqeKCFcamyk/foVtxbW8/9UZRITJ7mjTad3uKkSEV7ISGdRf57PCc5YghgQB0Kk03l2YjMMO2asPM3dFBeXHr/gBmLPiIPGzi4ifXcSarWeDA7Br2HUNu93/R+qa5ru6gdNZNBEDz9lrZL3ha4bhoRq5OamkJISbTl/uq2biA1EMjXGQ9dhgPthyhuPnGklN9DVK3woI1AM69OmpAyjLf5QV606w7ccaSo9dYs3iUcyZMBSvtxURgycnDCUuxuHzT+kfNHldD7zM7fbelYAmIqQmulj1QhoA40ZGWRy2fP8HVxubiR0YQpmnniFR/RARPtlRSd6r93UC0HMJALjCdD5cPIrsGfFMXFzC6k0n2gC0rYDHY/1yCAhACzYF2m3BY2gigrOfGvClXxSdQ0TILzhNfsFpU19YWsPK59OIcOqEOVREBE9lAyOHRwDgqWxARAhzdAzihhstRDh1ANLujuCh5EgOeOqBW+wBQcag3jYGezEFrKOqs1RfaKLkyEUWzhrBOzljTP3moipycivYfaCWBVMTmDdpGIU/1TDttWJyskbQcKOFzUVViBi8mHmP+dyytUepvtDE+DHRVF+4ScmRi0wfF9sJgMGm76rYf7TOksfyZ1IDANCCbIRsqIqK0lMJtIgghn/9Any0/RQtIsyfEm/RL5iawOt5h8jbeoIFUxOYkTGETW89zKoNHlau921JRw6PZO0SN+NHdzRTZ6iNytpGig+fxxWmM3dSHLkv328CaBFh4x7/xhcYQOCdoK754PTUA5S+ehxW0zcwfeZsE8Cugq2Ww9CUaZkobSXwbWHB//Mw9M3O7QFte/fs6FWMPrsC/iu54/8QueMB/AOAcvU85V3mOwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEDElEQVRYheWYzWsTXRSHn5RJU6y0g5gaIpiYRdEW+5GAoC46VSoFv/oKbtx0XHVp/oT0P4h0pSBOd0LVpn6g6MIEpSUisW8gLQZM02pLaBdt1aAzU62LIZNO06TxRZC+/cEs5p5zzz33uefezI1tfX19nV2smr+dwN+W8LcT+K8aGLCVtN28ub6tbbN2LAAApxNsNqipgVyuettG7WgAdrsxSVvpgiMIRQCVJIyMFHvb7Y04nRLNzUGcTqnEORIRkaQoothhaY9GJZaWYly5Yi2zkREbTmcXkhQFQNdXePNGZmFhDABRbKejI4zTKZFKhZiaGtwyyc1xN0+yEoCtbBY/TYP6eg8+n0w+nyWTGSabHaOvb4b6eq/pmMko5POrTE+HOXFCsQTRddC00uCaZtgKikb7WFyMceTIdQA+fowgCCIAP34Y/j5fv2XcislXWOXfArBvn5e2thAA+/dLvH59jXRaobMzZDq+f6+gaZDJRAgEVqitFU3b2lp5AGtrxfdPn2K4XF0EAmEAjh0LmXEKAA4flnG5pGrm/0e2QM3mVbLbRTTNSKigL1+yzM3F8Hr7+fp1lZmZiCVItRXgcHiYm4uRzRr9N0IsAPj5s3LCGyUIBgS7vbxN2OaUq9E0yOdXmJ+PMj2tMDERQtPA4+kznd69C6NpEAiEcDg8JBJhS5BqK6CrSwEaefToHx48kJifj5q2AoD797sZGrIxNGQjHg9VTL4wwXIACk8lCZoGCwv/cvduNwAORyOnT9/B6SwedMmkwqFDl2ho8NLcLDMxMcji4iRNTYZPtRVw8KCELGd5+TJIKjXMzEw3vb13aG2VTQCtrf00NHgBcLulbQGUK/NKNgsAVYWmpnZ6eoxV9XisgyaTCp8/r7Jnj5fZ2Sh793pRVYjHw1y4oJgAVLU0uKpaAQA4HCK9vQqdnUFu3+4kGg2ZAFQVjh6VS3Iom7xgTLDcGVDOZvHTdRAEseygiYSCrsP4+A3Gx2+Y7alUhJ6eFerqRARBRNchl5vE5TKqIpebpBC7oO/fDX+AAwc6cLu7mJ2NAcYW0HX4nZvJdgCq+hXYapUKWl7Okk7HOHnyOufPF/d9IqFw7941pqYi+P0ybW0yyeQYt25JnDoV5Nu3FRIJBVWF48eDZr/Hj4MsL2fx+SQzdkvLJROAqsLbtwofPkQteZw5E9oyv0plXvWHkK5bD6qNevUqjK6D3y9b2v1+mdHRILFYGL9fpqWlj6tXR3nxIsSzZ8bHjNvdzuXLIXw+yexXWyuytJQlnR6krq6R9vZ+Ll4MmwB0HeLx4ZI8ygGopgK2A2DbqdfhgQEb584VATx8aL0MnT1btD19+j+9DD15Ut72/Hl1MXZsBfwp7fo/RHY9gF/qXKwTZv0LugAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAD0klEQVRYheWYT2gcVRzHPxNDgi1lp6InxZ1CqQfF3ZAcFKo7cwgKhmZz0oO4ExpU9LBz0IOH0ClS0IIwqVatWPKCEDy5s+ClFnSmUVFoyUQMWCpme1IPmln/gDtan4fZzP7NdqOBEPOFd5j3/b3f+87v/X6/2beKlFKyhzGw0wJ2GoM7LeDfQhlTOubkZXlTrh27NgAA3AUoxHl8vY27sz7fjWvC7g7AEI2X3ArXhAFlVmFjqKdU8ot5vDWvq7F6SiX4PuiY18/rKLOdaafMKujn9eQ5/CMkv5hP9suezSZ72R/bNGtpHptiqGlshWvCIDVIH0xjjplUfq6wcGWBclBm7aU1tINaYiguC6rVKs4lB/G4aPXyJ1Dr4r1W5+rIizz+dz7Fo0UA3FUXdViNyRuxfWG0gHab1u6pO4b5zxkwSATaAQ173AZAP6QzvTiN+FJgP2onhuILARG4yy7hsRD1VrXh5S8g6uI9qnN1+N/45A7ncI45ANjjdsPPjdjeHDXRD+u9VW9gIwDdkqTfEqDWKl4dVuOTaxJe+amCv+pTGClQrVZxA7fVS8TmGdDkO70/jb/q467E6zuCWAP+7i24BRspPtyDu0kJDBBB+EuId9VDfCawSzZEkL8/nxg5HzkQgf2YTfpAGueC0+qlzwwQTwlSt6SYOjOFflrHu+o1yHoGGK8aKMcVlOMKdtnurX64x0tupQesfLuC8bIBQGpfivnCPNm7sw3hnwgm75tEu13DfMDk5AcnCa4HZNN1mz57gH6PTuV0Bes9i4WlBYyvDOafnsd82Gz0gIcKaHdosf0Rvbf6bfgKDFKDjJbBMeNT1e9t3VR4gup6FU3V8Fa9uEHVwPnQQTwvYqM+SwBA3acinhFYj1iMvDiC/b4dB6BeAuZRs0PDptiuJqgOqZtuKi4KiGDOnWPOnUvm3U9dQjNE3a/GfSOCYC0geyjOimAtgIhGlwfC32N7gKyWJXckh/+1H5P1EmArN5NeAejFNWGw2yltoPJjBf+KTzFfxHm2UffiomD6tWncz13McRNTNylfKqO/oGNNWYS/hXHgamBNWMk6622Lyg8V9Iye+J58cDIm6yUgLgi8wGvRYT9pdxfYTwn0+BkRw0DmrJzshuIbRYmBXL623MGlJlIyM5NJnktLJZmZyUgMJAYyM5ORpaVSh7/0E2mJgUxNpGThlYJc/3VdSinlCXEiWds+uoFRJG8hOYfkHSSjtHIOkteRnG3l2qHs1uuwMqbAczQy4EzbZWiGxj3h3P/1MvRmD+7d/lzs2gzYLuz5P0T2fAD+AXj47gHCmF1+AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEV0lEQVRYheWYX0hTbxjHPxv7ky1QUaib5okxhSgZIqzGoCinZEwFuyrQm0HoVRchQuDFboZ40c0QuooiImGRCwrSXThRQUpF0UPeNBIJdtGfhcF5X6d2ETvtOLfW7/eD8Nf37jzP8z573u/zPc973pn29vb2+Ith/tMF/GlY/nQB/xTNzc0Ftjdv3vzStx+HlgCA48ePYzKZMJvNfPjwoWxfPg41AVarFbPZjMlkOtCXI6AULOFwWH+w2+0oioLX60VRlILg4eFhent7OXHihMH+4MED3r9/z9DQkMEeDoepq6ujt7cXAE3TiMfjrK+vAz+61NbWhqIoJJNJksnkgUXuz5u/yWIEWCyWoj5DnBCCqqoqmpqa+PLlC4uLi6ysrHD79m2qq6v1wMXFRb5+/crs7Czd3d2GJNvb2wghCpILIdje3tafHz16RCqVwufzAaCqKna7HYBsNosQgqamJqqqqkoWvZ+Ag7pctgKEEBw7dozLly8D4HQ6GRsb4/Xr17S2tuqB8/PzCCFYWlqivb2dioqK3ybg7du3uFwurl69CsClS5f0PDs7Owgh8Hg8uFyusgiw2WyYTKZ/9QqYhRBIKXWD3W5HCEE2m9Vtnz59QlVVPB4PmUyGlZUVQxIpZVEC8nM7HA5UVdXX55OYU8Du7u4vtv0TFosFq9WK1Wot6rNYSo85ixCCTCbD+vo6Hz9+JJFIIITg7NmzetDk5CRCCK5cucLa2hqvXr3C6/Xq/nIVcP36dUZHR4lGo9TX1xMMBmloaAB+KmBkZESPDwaDBIPBosXnFHBQl3Mz4JevgJSSd+/eEYlEgB9d6enp4eTJk3rQ1NQUZ86coaamBq/Xy/j4OBsbGzidTuBH9/I7nYOU0qCkhoYGIpEIjx8/ZmZmhtXVVUKhEH6/n52dHaSU+P1+amtrAXC73SWLLyXzUuQYCNA0zTCpT58+bQhIJpN8/vyZyspKVFWluroaTdN48eIFfX19+kY1TStIrmlaATFHjx4lFArR0tLC4OAgT548we/3k81m0TQNn89XUEPR4ktM+rJPASklNput6I8mEgmklMTjceLxuG6fnZ2lp6cHh8OBzWZDSkkqleLUqVMApFIpcrlz+PbtGw6HAwBFUXC73aytrQHoCvidGVDqFCibgIO6lEM6nWZhYYHOzk5u3ryp2ycnJ7l79y5zc3MEAgEuXLjA9PQ0AwMDdHV1sbW1RSKRQNM02tvb9XX37t0jnU7T2Nio5z537hyAroCJiQmWl5cNddy4cePA+krJvNQ3goEAKaVhUOXj6dOnSClpaWkx2AOBANFolFgsRiAQ4Pz589y5c4eHDx9y//59AFwuF7du3aKxsVFfd+TIETY3N1lYWMDhcHDx4kX6+/uBnwp4+fJlQR3FCCjV5XKPQdNhvQ43Nzdz7do1fZNjY2OGy1BHR4dOzrNnz/6fl6FYLFbU9/z587JyHFoF/Ff46/8Q+esJ+A78YvHUKzu/UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADwklEQVRYheWY3WvkZBTGf6nTjrLCpOxQWL8my1JdFewUBPdmtxnwwpu1s+D9vGXBGy+aPyHzH6SCCIL2nav1rpmrvVjECYL1xjZVS6Wyu0FrWwoLGdfOtN1d6kWTTOYrnYpQah8IQ845Oe95nzznJBnl8PDwkHOModMu4LSROu0C/i1uK0qX7ctAzEm+TpxZAgDygMKRjH88gS+OM03AMK1NdiKV4ItjaElRCI8VVeV+scjjWq1n8Iqq0nTdLvu6rrPUQ3ZLisK6rkfnz3yf+8VitN5aPh+ttWWaxGuJH/0wDIwEvyfxxZFqAulcjjEh2Pc8tisVtqtV3n34kLSmRYE7UvJ3vc6GZTEuZVuSA6DZI3kzKCLEWrFI3XF4aXYWgEe2zZCqAvAkiB8rldrWTUKSAkJff/qOkGoAaU3jNdME4IKuszozw4aUXAlsAL9LSQPYsG0u+z6poHCAPaDRI3kDSMfOtxyH0akpLlsWAK+aZpTnSRCfFYLRmGqSkLTJgVugCezHDapKE3ga34jnsek4ZEslHtfrbNl2W5J9+isgnptcjk3HYTu4Pk7i0yD+2TEFx5HiiIReMg99xw25oV3gL99np1bjgZQsmya7wFixGAX9alnsAq+bJuRy/BLcwRB7wG6P5LuBL8SElBxkMnx76xbf6Do7sVlzEMTfKxS4oyjcURR+jimwF8IN9iMgPJKQagCNlRU2CwUARjIZrs3PM5rPR0GrUnJpepoLmsYrQrBcLvPIdbkYxCS1QJyAMV3nQ8/jB8Pgt0oFr1Dgxvw840JELTBeKvFiMAOyx7TCMEcS7zcDhhhgBjSB7MQE14O7+nLHomtSUq/X0TSNP2s1XtA0msCyZfF+MAyThuBBh21EVbkhJW8ZBl9PTvK9aTIuRNQCV4ToqqEfkjY5MAEN4FBV+y7qBsNvcW6Oxbm5yL5q21z3fdKqCqpKA9hxXcYCVey47pEqYn2+H8YD2Xyei1NT/OE4QGsInmQGJG0yleBri+saVDH4nse64/De7CwfxPrelZLqzAxrtk1eCN4Ugp+qVb7Sda4ZBnu+jysl+8CkYUTX3TUMfM9D0/Uo9xvT00DrMbgkJQ863kP0PrNgkMfgcU+BVCOBgO8siwbwjhBt9rwQLBgGNcsiLwRXi0U+Wljgnmlyt1wG4NLEBDdNEy2mrOdUlW3PY61c5vlMhrdLJW4GxIYKWKxUuupIIiBJAYMQoJzVz+HbisIntAj4lPaPoY9pEfA5/9OPoc8SfF8MmOPMKuC/wrn/Q+TcE/APuGhlNl9y9I4AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEJElEQVRYheWXbUyVZRjHf/dzzuFwIA7ydjqKQ5TJFHG0tDal6EMT59JmSXPDii0wzXKylmtztLXR0sack9qYY81Vy+YbyaIPYKUZOhBcLd7iRIC8iigQR41T931OH46cOOE5POAHO+u/3R+e67r+931d/+d6rj238Hg8Hv7H0B50Ag8aIS/AviMtXB36Y878kBegvnWE1JwKTpzrnxM/5AUwaALlEeQWfUdRedus+boEyCio963M3Y0UfuSgsX3c588vaSOjoF7XgZm7G2nvveNnc95RZO5uJL+kTZd9KoQAg9FMuHU++482kv1mra48JqFLACkltmgDr26cz1MZ0ZxtHCZvfxP9N1wAKKWQUs64z5na64w5XXxS7d+uUREGdmxaQF3LCGdqr/vs+491MuZ0sXdrUuACNIGmCayxdmLsKZy73EP6SzX0DU/oKU2/APZYE69vTuL9gqUUv5KClJKKC4OAfgFOfz+IlJKay9cZv+Mf/3L2AmzzjBw+1QVA//AEp88PsGlNHMuSIgPuKYRA0zTCTEYessZiX7yS3/qdpG+roq5lbMac9AmgFEop33NUhAGpFG639xdCKYWc4r8X+oYnuNR8k2czbYw6XZxtGJ4Ws+/FJfQM3ebwqS72lrViMQveeD45eAFCoAmB2WTEbDISEW4hcdFyPJqFrJ1VfPnDteD8oN67kFIy4nRR1zLCyfMDHDzegZSSdavjAX0d8HFVN1JK9uQk83CMifKq7mkx61YnsDo1ivKvurjYdIO89YksTAgPXoAmEJogLMzgW5YIC0kpadgWLCbn7Wr2lDYH5s9cvleApo5RthTVUXj4J7oHnJS8lkZachSgT4Avvunh6UfjWJhgYUuWnaaOUVq6xqfFFb6whNHxCSxhkP9M4G9/EuJuB5hMRr9lMAjcSoLHK1IgGGc8AVBSsWKxleLt6QCsXRnn71dulAz8CRz/tpexcReJ8eFcarrJwoRwlFQcqeyktPARv9g16XEoqVieNA9rpGnG3CaHoNlk8NncSvGro5m/XLepPLiBjWttAfm6BJBSEhmuTSt8EjN1wOfV3vYvq3BQVuHw2atq+yjevoLofxUqpfSbOcEg8M6BMJO3lFvO33G0/UyM1Uz9Z5uZH2cOytctQLCEJgU48GmLn/2JDBtJ9ggu/HiNnc8t5cCuf972sZpudpU08PXFfnKzk2d13lRomobQBEajxtBgHx3trTy5ahFnD2Xq4usUQKGUO6BfKTdSKt472uRn35eXztitP5FSkZu9yM+Xm53MW6VX+PDEL/cQIPh5UzE5A652Oujv7WLPtlV8sGOZLi6ACPXr8NZ3r1B5rp151kiOvpPJhsfjZ8XX1QH/aQhBarKNmkNZ2GPDZk8P9Q6obhhh/WOxc+aHvAD3i5C/Dt8v/gYj07joKVyTbwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADyklEQVRYheWXMWwTVxjHf+f4cBIlxh6CqUTsi9QmJgOxgoIEQ+tEsliCmqVSO2HUThloVgZUFxg6MJgBlgwYhooqCFwECCFBbamERsQOGJGAFRk7kiMESuQQW8F3CWY4nNg1dl5goFb/0hvue9937/v/3/+900mFQqHA/xiGz93A50bdC3Dt2jEWF1MfXV/3AqRS/3D8+JdMTf3xUfV1L4AkScAqo6M/cP36sS3XCwkwNiatj2DQwr17Q7x6FVqfD4XcjI1JQgsGgxYymYdlMU3LEAxaCIXcQvFSSBIYjWA2F7hx4zfOnu0X6qMIIQFUFWTZQVfXL9hsQySTf3L7dj+5XPJ9o3rOZkgkAuRyS8zM+MvismzB6fSRTodJJALr8cnJEXK5JXp6/FSDJIHBAFYr2GwwPR3i1KmvyGTmRKiJC2AyKezZ42P//gD79p1HVSEe15tdXRUT4NmzAKoKiUQQVc2UzTmdI2zb5iAS8QGQzSZ5+vQCdvthrFZXdQIGXQRZBrMZFAUWFmY5edJJMvn3pj0JC6BpG8+ybEFVYW1NfxZxwPJykrm5MIpymGx2iefPgxU5fX1+FhdTTE76uHvXC2zH5fLVfG/RAbKsj8ZGsNvBaFzh9Omvefy49uUoLEAulyGdDjEzE+D+fR+qCg7HECDmgKkpP6oKe/f6MJkcRKOVtlaUIdraviES8ZNKhenuHqG1ValNoMQBxdHUBB0dsHNngXPnvufKlZ+q12/KHp3c/PwjLl3q5+bNIywsJBkYOE9bm25NEQfEYgHs9m8xmxU6O73Mzz/i5cuHFXl9fT6y2SUkaTsu14hIe2UOKI6GBnj7FgoFMBiqX9BGkQXyedixowePR981h8NdNq9pek41xGIBXr9eorlZIZUK0dKikM/DxISfQ4cCZbnt7W7yebDZXJhMlk17K3VAEWtrMDsLKytGjh79ne7u76rWCwmgaWA0WiqIF7G6Wn5H/BvRaABNg/HxM4yPn1mPP3kSxOPJ0NhYTlTT9HeKQJI2PoUAy8sQj0Nzs4UTJ2KYze0164UdUItg0QF37vjK4h0dbqxWhXg8zIEDPzM4uHHuo9EAly8fYXo6SG+vd0vrlaJ4CTY0wIsX+s7v3t3L8HBEqF7YAbV2pOiAW7d+LYt7PPDmTQZNo4Jkb6+Xq1dHCIf9FXNbcUDxCCSTkE5LHDz4I4ODo2LFgFTvv8MXLw7w4MFftLQ04fVeoKur+nn/EIQc8N9GgV27vmB4eILW1trn/UOoewfE42N0dm5t10tR9wJ8Kur+d/hT8Q4KGoLMFNqDmgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADnklEQVRYheWYT2gcZRjGf7OJia2NGRtBK8QdaQKtlWTNxR40mQWDiJQsYrABYSc0B8FDR28RSqeUQA8WJvVQIdZ8FQkkPTiBImpBZyVqljZ1E0ghEHG3UCuI7YwoMePKeNhNsuu6O5P2UBcfmMv75/ve95nnfWFG8n3f53+MyL0u4F6j7gkYfW+U3E+5O86vewLmr83T8XIH019M31F+3RMgRSTyfp6ht4cYnRjddn4oAqRj0uYjj8kkphLYP9ibfvWcinRMCnWhPCaTuZkpszl/OMhjMuo5NZS9ooMm8Nt8Tr1/ivib8VB1lKYHYx2iO6Mc7z1OoiPBbGaW+Nk42dvZgv/PQkwQxBWB67qYX5lldvl+GaPXILWSQlwRm3Z9Vi/Ev2hSFRGgAXgUUMBO23S+1sn1n6+Hai0cAR4oLQpGv4F4VTD5yiR4INLFYvOFmCCIeQEeWN9ZOGtOmU9/Tie6K4rxiQFA9laW89+eJxlLEnssVv1QqdhFM9AGHIDVG6vsG9rH3LW5wJpCK6C0QblZLtjyRYNHoAKyv2RJLadIPp3EdV2sjFURYw6Y5G7mMC4aaEKjNdKK8YJR++AGtghoBnYBT8Ja0xq9I71Mz9VejqEV4PzqYK/YiK8FxscGeJDoShT8IRRgfm6CB8ZLBtGWKOZnlbJOdCfoe6IP81OT1HIKvU9HaVNqH1yqgI2nBegCf6/P4bcOM/LuSNX00ApYXF0kfjLO8Nlhsj9mmUxOEnu8KM0QO0B8KRh4agDlYQXtoMbi6iKZXKYizjhk4DourQ2t6P16cG0RKgloBhqBvwohUkP1Bd0YfAOwDt1KN6ZWeGvqAbXcHzACwha4t10UWcFetlF2K7AO5kUT8YYoi1X3q7AOsb0x5J1ycG2lBGwgDyxA4++NTJ2ZYvDgYNX0cAR4IDfJlY2XXlhjBMQlAR6MW+OMW+ObdmvOwtEc5Af+0ajH1n4JQukIANwC0iA/KLP04RLtu9trpodWQM0ZLyrA+MgoM6tdKsojCqmFFEcTRzFf35p7cUkwfHoY6xsLrV/b3n2l2FDAfcD3wFXoeaaHhXcWQqWHVkDNN1JUwIkPTpTbk+D85oAH2vNamUvr19DP6JgzZiUB21HABgFLIK1IHEkeYWJkImQy4Nc54ifjPs/i7zi0w5+5PLPt/HAK+A/Dx2dP5x7Sp9O0P1R73v8Nku/X9w+RC1cvMNhTfcsHoe4JuFvU/efw3eJvwJswMInEJWIAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAD70lEQVRYheWYTSh0bxjGf3MYw5iIWWChmVA0Gdkgo1n5KCJipTQ2StZWNpSNbAyyQkmTnQULJArJMMlHPiYsiBJSGIlzzmDexdtMJq+Zw7t4/9P/qlPn3M99Pee+r3Od5+kclc/n8/E/hvCvC/jXiHgBhoeHubm5+TE/4gU4PDykvr6epaWlH/EjXgBBEHh/f6ejo4PR0dFv86OVJHV3dwfONRoNRqORoqIijEYjAOPj45yfn9PZ2Rl2rt7eXpqbm0lNTQ3ERFFkYGCA1NRUmpubw8Y/QqVSodFo0Ol0jIyM4Ha76evrU9IWoNABkiQRFxdHSUkJWVlZ7O3tMTIywv39PQBerxdJksLOs729zePjI2tra0Hx2NhYrFYrJycnbG9vB+IzMzM8Pj5SUVHxdQOCgCAIpKSkYDQa2djYoKmpidvbWyWtKRdAp9NRWlpKQ0MDdXV1SJLE5uYmoFwAl8uFJEns7Ozw8vISNGaxWNBqtczNzQFwd3fH+vo6ZrOZtLS0L+dUqVSoVCrUajVJSUmYTCYuLy9pbGzE7XaHrUmxALIsB641Gg2SJPH6+gqALMthBbi7u8PtdpOfn4/H42Fvb+9TTk1NDdfX18zOzuJwOBAEIeTTh98CCIKAWq1GrVYTFxdHdnY20dHRtLS0sLq6GpKvWACPx8Px8TFOp5OpqSkkScJsNgPKHLCwsIAkSVRWVqLT6Zifn/+Uk5eXh8FgYH5+nsPDQ6xWK8nJyaEbEISAA/yHVqvFZDJhMBhob29ncHDwa76C/pFlmdPTU3p6ehgeHubq6gqbzUZ6ejoAr6+vQQ75E5aXl8nNzUWv11NUVMTp6SkXFxef8qqrq/F4PERFRVFaWhq2to+vwMdDEATe3t5+Nyl83aaiXUAURQwGQ2AlNplMQeOyLCOK4pf8lZUV7u/vSUxMxO12k5SUhCiKzMzM0NbWFpSbk5ODKIpkZGSg1WrD1uZfBGNiYgKxt7c39vf3eX5+ZmBggOLi4i/5igSQZZmYmJhPjfvh9XpDOmBxcRFZlpmenmZ6ejoQX1tbw2azER8f/+l+Xq9XSWkAgTUA4OHhgd3dXRISEnA4HOj1+pBcxQ4I1aDfARMTE0Fxs9lMSkoKW1tb1NbW0traGhhbWFjAbrfjdDopLy//1v0+wr8GREVFcXFxwcHBAYWFhdjtdkV8xQ4I9UT8DhgbGwuK22w2np6ekGWZsrKyoLHy8nKGhoaYnJz8JMB3HODfBY6Ojjg7O8NmswUJHRa+CEdXV5fPYrH4qqqqfC6X69t8RQ74ryMzM5P+/v6wW+afoPL5IvuHyObmJgUFBT/mR7wAf4uI/xz+W/wCOnmf4nT7HYQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADjElEQVRYheWYT2gUZxjGf7Omlvwp+YRYjJruWIzGgk1qFS+iu7TgqbgXQU/ZoBRKD87BS0rBUS+5ObkUioeMl4B6cCPSenMGhCitaWapElP/TKKmJdU6Q2Sm0dXxkNm4uzE7Ez3YpQ98h33nffZ732ef94VZKQiCgP8xEu+6gHeNmhfgp95eHk9MvDG/5gWwr1zh+/XryZ8+/Ub8mhcgIUkEhQI/7N/Pxd7epfPjJI1I0vyxhOB2JsOMYcw/H0+lGJGkWBdaQuCPjpbFnjsOlhCMp1Kx4qWQgHpgbRBwrq+PH9PpWHUUEUsAH3iRTNJy5AgNmQx/DQ2RT6eZtW0AnoY5UZjWdZ64Lvc1rSy+TAhWqip/mybTuj4fv6MoPHFd1lTkVzaQANqAT4C8YdDX3o47ORmntXgCeACyzEeqSruus25gAA+4Hxb7bzEnApO6PsfL5Sg4Ttmz1YrCi2SSm6oKgG/b2KdOIbq7aezqWvQ7pfC8B6wEtgEPb93iWEcHk5cvR9YU2wGzpSQh8IFC+HmWaAd4ts2UadLS3c2M6/JnLrcgp13TeDwxwU1VZSSbpdDczLpQkGoNJIDl4WkCPgMafJ++nTu5EbEcYztgxnGYNgzu6jqjqooHfJjJAHMCRDlgTNPwgA2qipRMcv01tl6VydC0axe/axr3TJM2RaFBliPrSzDngOJpArYCHUHAiX37OH/wYFVuJDxgyrK4kE5zqaeHh7bN5wMDrAitGWcEbug6LXv20CjLrM1mmbIs/qlYhgCbVBXXdSk0N7NBUSJrS/BqBEqPBDwr5lRZ0HWRNzBn75bOTnaEv9qaiq0cNQJjuo7rusiyzAPDoF6W8YHfNI0vSpYeQGsqhQ+s6OpiuRCRtUm8ckARBeAXYKaujsODg2zcu3dRfiwBPCAQYkHjRUSNwGi4/Ib7+xnu75+PX8/l2OE4vF/RqEf5zqmG0iUI8AgYBhqF4Hg+zwdtbVX5sR1QraCiA8yKhZVMpRCyzLhpsv3QIXaXzL2l6wz19DCWy9GZzS7pvlIUR2AZcBv4Ffh0yxa+vnYtFj+2A6IE8ICfjx4ti38J+I6DB2yuaLIzm+WcomBo2gIBluqABGABY5LEVwcOsPvkyZhsIKhxDKbTwbcQfFdfH/xx5syS+bEc8F+GFATIra18c/UqjRHzvgi/tv8QuXP2LB9X2fJRqHkB3hY1/zr8tngJ3kU5hNPkqc8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/prev_blue.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////L1+/H0+/Dz+uTr+OHn9Nji9Nfh9NXf8tPd8NHb7svY8crX8MnW78jV7sfU7cbT7MXS68TR6sPQ6sHP6brK6rbH57LD463B56zA5qq+5Km945614pqy3pax45Sv4ZKt35Cr3Y6p24yn2omn34ql2Iij1oah1ISf0nyd3Hmb2neVz2+T2GyR1mGGzF+H01yE0FmBzVZ9ylV6wlN6x055zE10wUdzxUpxv0Ryy0Rvw0ZuvDpsykFsvz1rxDNlxDZkvi5jxy9hwDJhuipfxCtdvCZbwCtatCdZuSJXvB5TuCBSshpPtRxOrxZLsRJHrQ5Dqgk/pv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFIALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGUlKLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipm0GsPCwLgh6sQTwpAYILs7MLJEEGgwZBJKJEOR8qREQEAB9EKh8vRC2CDEQvH9gfBAfOg8gHokYwghhGIAAgRg2CNUaCDeaGNT+DPzWjSTGCFUkhACFJHAAQ4EOIIAf9DHFIkgFAhiQcRim58UDDDSUIAIiYKKOIEg2CHigZqUTGIAElAchQImAUk5dMkGwQNIKJDiBMOgyCwITGiBEzB7lgwtMFKSc9IkQgVMJJhARIB0VwUuKQBSdDnFgg9cSGIRNPJAAAa0KQhCdlDy15sqQUFByGSU5AmQBgwJEmBQBMeHui74m8glZAWVEqyg5DKKJQEHQhygwAFKJInrxYkIIoClRp3sx50OTPUTqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/prev_gold.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////r67/n57/j47/f37/T03+7u3+/vz+7uz+rqz+rqv+joz+jov+fnv+Xlz+Xlv+Tkv+Liv+Dgv9/fv9/fr93dv9zcv9nZr9ran9jYn9bWn9PTr9TUn9TUf9LSj9HRf87Of8/Pb8zMj8vLf8jIf8rKX8XFf8bGX8LCf8TET7+/f7y8f8DAT7m5f7q6P7Ozb7a2P7GxP7CwT7CwL62tP6+vH6+vD6ioP6qqAKamL6WlH6SkD6SkAKGhL5+fP56eT5qaP5ubL56eD56eAJqaH5aWP5iYD5iYAJSUH5OTD5KSAImJH4yMAIeHD4WFAIGBD4CAAHl5AHNzAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFMALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGU1OLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipmzisNikKgh2sODYlAYIKs7MKITgHgwc4IaI8NR8nPDwFAB88Jx8uPCyCDDwuH9gfBQjOg8gIokMwghhDIAAgQw2CM0OCDeaGMzuDOzOjRzGCFEcjACNHHgAQoEOIoAf9DHk4kgFAhiMeRinJAUFDDiUJAJCYSMOIEg2CICgZqYTGoAElAdBQMmAUk5dMknAQZIJJDyJMRAyKwOSGCRMzB8lgwlMGKSdBJEgghMKJhAVIB0lwguLQBSdInFwgBcWHIRVQJgAAq0LQBChlDzWB0qRUFCCGSVZEqQCAwJInBgBUeLui74q8gl5EeVFKShFDLaRYELRByg8AFqRInrxYkAMpDlRp3sx50OTPUjqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/prev_green.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP///+/27+/37+/17+/079/u39/o38/mz8/lz8/hz8/fz8/bz7/ev7/bv7/cv7/Zv7/Yv7/Wv7/Uv7/Tv7/Qv7/Rv6/Qr6/Kr6/Er5/Jn5/Gn5/En5/Cn4+9j3+9f4+3j3+6f3+3f3+zf3+wf2+1b3+tf3+qf3+nf3+kf3+gf1+tX1+oX0+lT2+Yb0+gTz+XP0+OTz+TPz+NPz+JPz+EPy+KL099Tz97Px+GHy9/Lz92Py96Lz9xPw+EDx96Hy90Lw93Dx9wHwB8AA9xDx9qHwB1AA9rDwBvAA9mDx9fHwBoAABiAA9aDwBcAA9UDwBVAABQAABJAABCAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFMALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGU1OLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipm0KsPSwMgh6sQj0qAoIMs7MMJEIHgwdCJKJFOCArRUUFACBFKyAvRS6CDkUvINggBQjOg8gIokcxghlHIQAhRw2CNUeCDeaGNUCDQDWjSjKCFkoiACJKHgAI4GOIoAf9DHVQogGABiUdRi3JAWFDjiUJAIyYOMPIkg2CICwZuWTGoAElAcxYMmBUk5dNkHAQVKLJjiBNPgyK0IRGiRIzB8FowhMGqSc/JEggZOKJBAVIB0l4YuLQhSdEnlwgBeWGoRNQJgAAe0LQBChlDzGBwqRUFB2GSVBEqQCAQBInBgBUeIuiL4q8glpEaVFKCg9DKaRQEIRBig0AFKRInrxY0AIpC1Rp3sx50OTPUjqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/prev_grey.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////f39/b29vX19fT09O7u7ujo6Ofn5+bm5uLi4t/f397e3tzc3Nra2tjY2NfX19XV1dPT09HR0dDQ0MrKysjIyMXFxcTExMPDw8DAwL6+vry8vLm5ubi4uLW1tbKysrCwsK+vr6ysrKurq6ioqKSkpKOjo6GhoZubm5iYmJaWlpGRkZCQkI2NjYuLi4qKioiIiIeHh4GBgX5+fn19fXx8fHt7e3p6enZ2dnV1dXNzc3JycnFxcW5ubmxsbGtra2hoaGVlZV9fX1tbW1dXV1RUVFFRUUlJSUNDQ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGSUmLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipmzKsMCQKghmsMjAgAYIKs7MKHTIHgwcyHaI3LxsiNzcFABs3IhsoNyaCCzcoG9gbBQjOg8gIojoqghQ6HAAcOgyCLTqCDOaGLTaDNi2jPiyCEj4eAB4+GgAQMCOHoAb9DGnwUQFABR8aRgWR4cCCjCAJAHyY6KJHEAuCHAQZGcTFoAElAbgIMmCUkJdCgGAQFEJIjR1Czgl6ICRGiBAzB60QwnMFKSI4IEAgNIIIBAVIB0EgMuIQBSI/iFAgZaSGIRJGIgAAS0JQBCNlDw0xMqTUERyGSUockQCAgJAiBgBIeFuib4m8glIcSVEKCQ9DJ5BMEHQBCQ0AE5BInrz4HZJ1qjJr3izoiOfPnjmLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/prev_red.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////rv7/nv7/zv7/fv7/jf3+/f3/bPz/TPz+7Pz+vPz+XPz/C/v/K/v+6/v+u/v+m/v+a/v+G/v+S/v9+/v92/v+evr92vr9Svr+Wfn+Kfn92fn9qfn92Pj9SPj+Z/f+F/f9x/f9h/f9J/f81/f8l/f8R/f79/f7p/f+Nvb7dvb+BfX9pfX9xPT9ZPT7tPT6BPT9M/P8s/P8Q/P7w/P7Q/P6Y/P58/P5g/P8cvL7YvL64vL6cvL8sfH7ofH6gfH6AfH9APD48fH74PD7YPD6sPD6IPD80AAJAPD8QAAIcPD7oAALEAAKYAAJwAAJMAAIkAAIAAAHYAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFMALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGU1OLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipm0esQS0Ngh+sR0ErA4INs7MNKUcHgwdHKaJJPSAsSUkFACBJLCAxSS6CDEkxINggBQjOg8gIoksyghlLIQAhSw6COUuCDuaGOUODQzmjTDOCFkwiACJMHgAI4IOIoAf9DHVgogGABiYdRjXRAWGDjiYJAIyYSKNIkw2CIDQZ2YTGIAElAdBoImCUk5dOjHAQRMLJjh9OPAyK4KQGCRIzB71wwvMFqSc8JkwgVOLJBAVIB014UuLQhSdAnlwgBcWGIRNQJAAAa0KQBChlDyGBgqRUlBuGSU5EoQCAgBAlBgBQeHui74m8glREUVFKCg5DKKRUEIRBCgwAFaRInrxY0AIpC1Rp3sx50OTPUjqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/lytebox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2xiT3ZlcmxheSB7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyBsZWZ0OiAwOyB6LWluZGV4OiA5OTk5ODsgd2lkdGg6IDEwMCU7IGhlaWdodDogNTAwcHg7IH0NCgkjbGJPdmVybGF5LmdyZXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9DQoJI2xiT3ZlcmxheS5yZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMwMDAwOyB9DQoJI2xiT3ZlcmxheS5ncmVlbiB7IGJhY2tncm91bmQtY29sb3I6ICMwMDMzMDA7IH0NCgkjbGJPdmVybGF5LmJsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDExRDUwOyB9DQoJI2xiT3ZlcmxheS5nb2xkIHsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjYwMDsgfQ0KDQojbGJNYWluIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgei1pbmRleDogOTk5OTk7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7IH0NCiNsYk1haW4gYSBpbWcgeyBib3JkZXI6IG5vbmU7IH0NCg0KI2xiT3V0ZXJDb250YWluZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgbWFyZ2luOiAwIGF1dG87IH0NCgkjbGJPdXRlckNvbnRhaW5lci5ncmV5IHsgYm9yZGVyOiAzcHggc29saWQgIzg4ODg4ODsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLnJlZCB7IGJvcmRlcjogM3B4IHNvbGlkICNERDAwMDA7IH0NCgkjbGJPdXRlckNvbnRhaW5lci5ncmVlbiB7IGJvcmRlcjogM3B4IHNvbGlkICMwMEIwMDA7IH0NCgkjbGJPdXRlckNvbnRhaW5lci5ibHVlIHsgYm9yZGVyOiAzcHggc29saWQgIzVGODlEODsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLmdvbGQgeyBib3JkZXI6IDNweCBzb2xpZCAjQjBCMDAwOyB9DQoNCiNsYkRldGFpbHNDb250YWluZXIgewlmb250OiAxMHB4IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgd2lkdGg6IDEwMCU7IGxpbmUtaGVpZ2h0OiAxLjRlbTsJb3ZlcmZsb3c6IGF1dG87IG1hcmdpbjogMCBhdXRvOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5ncmV5IHsgYm9yZGVyOiAzcHggc29saWQgIzg4ODg4ODsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIucmVkIHsgYm9yZGVyOiAzcHggc29saWQgI0REMDAwMDsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIuZ3JlZW4geyBib3JkZXI6IDNweCBzb2xpZCAjMDBCMDAwOyBib3JkZXItdG9wOiBub25lOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5ibHVlIHsgYm9yZGVyOiAzcHggc29saWQgIzVGODlEODsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIuZ29sZCB7IGJvcmRlcjogM3B4IHNvbGlkICNCMEIwMDA7IGJvcmRlci10b3A6IG5vbmU7IH0NCg0KI2xiSW1hZ2VDb250YWluZXIsICNsYklmcmFtZUNvbnRhaW5lciB7IHBhZGRpbmc6IDEwcHg7IH0NCiNsYkxvYWRpbmcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0NSU7IGxlZnQ6IDAlOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAwOyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2xvYWRpbmcuZ2lmKSBjZW50ZXIgbm8tcmVwZWF0Ow0KfQ0KDQojbGJIb3Zlck5hdiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDsgfQ0KI2xiSW1hZ2VDb250YWluZXI+I2xiSG92ZXJOYXYgeyBsZWZ0OiAwOyB9DQojbGJIb3Zlck5hdiBhIHsgb3V0bGluZTogbm9uZTsgfQ0KDQojbGJQcmV2IHsgd2lkdGg6IDQ5JTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoaW1hZ2VzL2JsYW5rLmdpZikgbm8tcmVwZWF0OyBkaXNwbGF5OiBibG9jazsgbGVmdDogMDsgZmxvYXQ6IGxlZnQ7IH0NCgkjbGJQcmV2LmdyZXk6aG92ZXIsICNsYlByZXYuZ3JleTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wcmV2X2dyZXkuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LnJlZDpob3ZlciwgI2xiUHJldi5yZWQ6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvcHJldl9yZWQuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmdyZWVuOmhvdmVyLCAjbGJQcmV2LmdyZWVuOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3ByZXZfZ3JlZW4uZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmJsdWU6aG92ZXIsICNsYlByZXYuYmx1ZTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wcmV2X2JsdWUuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmdvbGQ6aG92ZXIsICNsYlByZXYuZ29sZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wcmV2X2dvbGQuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkNCiNsYk5leHQgeyB3aWR0aDogNDklOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChpbWFnZXMvYmxhbmsuZ2lmKSBuby1yZXBlYXQ7IGRpc3BsYXk6IGJsb2NrOyByaWdodDogMDsgZmxvYXQ6IHJpZ2h0OyB9DQoJI2xiTmV4dC5ncmV5OmhvdmVyLCAjbGJOZXh0LmdyZXk6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvbmV4dF9ncmV5LmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQucmVkOmhvdmVyLCAjbGJOZXh0LnJlZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9uZXh0X3JlZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJOZXh0LmdyZWVuOmhvdmVyLCAjbGJOZXh0LmdyZWVuOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL25leHRfZ3JlZW4uZ2lmKSByaWdodCAxNSUgbm8tcmVwZWF0OyB9DQoJI2xiTmV4dC5ibHVlOmhvdmVyLCAjbGJOZXh0LmJsdWU6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvbmV4dF9ibHVlLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQuZ29sZDpob3ZlciwgI2xiTmV4dC5nb2xkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL25leHRfZ29sZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCg0KI2xiUHJldjIsICNsYk5leHQyIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDsgfQ0KCSNsYlByZXYyLmdyZXksICNsYk5leHQyLmdyZXksICNsYlNwYWNlci5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0NCgkjbGJQcmV2Mi5yZWQsICNsYk5leHQyLnJlZCwgI2xiU3BhY2VyLnJlZCB7IGNvbG9yOiAjNjIwMDAwOyB9DQoJI2xiUHJldjIuZ3JlZW4sICNsYk5leHQyLmdyZWVuLCAjbGJTcGFjZXIuZ3JlZW4geyBjb2xvcjogIzAwMzMwMDsgfQ0KCSNsYlByZXYyLmJsdWUsICNsYk5leHQyLmJsdWUsICNsYlNwYWNlci5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0NCgkjbGJQcmV2Mi5nb2xkLCAjbGJOZXh0Mi5nb2xkLCAjbGJTcGFjZXIuZ29sZCB7IGNvbG9yOiAjNjY2NjAwOyB9DQoJDQojbGJQcmV2Ml9PZmYsICNsYk5leHQyX09mZiB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQoJI2xiUHJldjJfT2ZmLmdyZXksICNsYk5leHQyX09mZi5ncmV5IHsgY29sb3I6ICNDQ0NDQ0M7IH0NCgkjbGJQcmV2Ml9PZmYucmVkLCAjbGJOZXh0Ml9PZmYucmVkIHsgY29sb3I6ICNGRkNDQ0M7IH0NCgkjbGJQcmV2Ml9PZmYuZ3JlZW4sICNsYk5leHQyX09mZi5ncmVlbiB7IGNvbG9yOiAjODJGRjgyOyB9DQoJI2xiUHJldjJfT2ZmLmJsdWUsICNsYk5leHQyX09mZi5ibHVlIHsgY29sb3I6ICNCN0NBRUU7IH0NCgkjbGJQcmV2Ml9PZmYuZ29sZCwgI2xiTmV4dDJfT2ZmLmdvbGQgeyBjb2xvcjogI0UxRTEwMDsgfQ0KCQ0KI2xiRGV0YWlsc0RhdGEgeyBwYWRkaW5nOiAwIDEwcHg7IH0NCgkjbGJEZXRhaWxzRGF0YS5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0NCgkjbGJEZXRhaWxzRGF0YS5yZWQgeyBjb2xvcjogIzYyMDAwMDsgfQ0KCSNsYkRldGFpbHNEYXRhLmdyZWVuIHsgY29sb3I6ICMwMDMzMDA7IH0NCgkjbGJEZXRhaWxzRGF0YS5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0NCgkjbGJEZXRhaWxzRGF0YS5nb2xkIHsgY29sb3I6ICM2NjY2MDA7IH0NCg0KI2xiRGV0YWlscyB7IHdpZHRoOiA2MCU7IGZsb2F0OiBsZWZ0OyB0ZXh0LWFsaWduOiBsZWZ0OyB9DQojbGJDYXB0aW9uIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQojbGJOdW1iZXJEaXNwbGF5IHsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLWJvdHRvbTogMS4wZW07IH0NCiNsYk5hdkRpc3BsYXkgeyBmbG9hdDogbGVmdDsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmctYm90dG9tOiAxLjBlbTsgfQ0KDQojbGJDbG9zZSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9DQoJI2xiQ2xvc2UuZ3JleSB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvY2xvc2VfZ3JleS5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLnJlZCB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvY2xvc2VfcmVkLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UuZ3JlZW4geyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Nsb3NlX2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UuYmx1ZSB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvY2xvc2VfYmx1ZS5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Nsb3NlX2dvbGQucG5nKSBuby1yZXBlYXQ7IH0NCg0KI2xiUGxheSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9DQoJI2xiUGxheS5ncmV5IHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wbGF5X2dyZXkucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LnJlZCB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvcGxheV9yZWQucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wbGF5X2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGxheS5ibHVlIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wbGF5X2JsdWUucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BsYXlfZ29sZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCQ0KI2xiUGF1c2UgeyB3aWR0aDogNjRweDsgaGVpZ2h0OiAyOHB4OyBmbG9hdDogcmlnaHQ7IG1hcmdpbi1ib3R0b206IDFweDsgfQ0KCSNsYlBhdXNlLmdyZXkgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BhdXNlX2dyZXkucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5yZWQgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BhdXNlX3JlZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBhdXNlLmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wYXVzZV9ncmVlbi5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBhdXNlLmJsdWUgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BhdXNlX2JsdWUucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5nb2xkIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wYXVzZV9nb2xkLnBuZykgbm8tcmVwZWF0OyB9]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/lytebox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8vCUx5dGVCb3ggdjMuMjINCi8vDQovLwkgQXV0aG9yOiBNYXJrdXMgRi4gSGF5DQovLyAgV2Vic2l0ZTogaHR0cDovL3d3dy5kb2xlbS5jb20vbHl0ZWJveA0KLy8JICAgRGF0ZTogT2N0b2JlciAyLCAyMDA3DQovLwlMaWNlbnNlOiBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMCBMaWNlbnNlIChodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvKQ0KLy8gQnJvd3NlcnM6IFRlc3RlZCBzdWNjZXNzZnVsbHkgb24gV2luWFAgd2l0aCB0aGUgZm9sbG93aW5nIGJyb3dzZXJzICh1c2luZyBubyBET0NUWVBFIGFuZCBTdHJpY3QvVHJhbnNpdGlvbmFsL0xvb3NlIERPQ1RZUEVTKToNCi8vCQkJCSogRmlyZWZveDogMi4wLjAuNywgMS41LjAuMTINCi8vCQkJCSogSW50ZXJuZXQgRXhwbG9yZXI6IDcuMCwgNi4wIFNQMiwgNS41IFNQMg0KLy8JCQkJKiBPcGVyYTogOS4yMw0KLy8NCi8vIFJlbGVhc2VzOiBGb3IgdXAtdG8tZGF0ZSBhbmQgY29tcGxldGUgcmVsZWFzZSBpbmZvcm1hdGlvbiwgdmlzaXQgaHR0cDovL3d3dy5kb2xlbS5jb20vZm9ydW0vc2hvd3RocmVhZC5waHA/dGlkPTYyDQovLw0KLy8JCQkJKiBpZTggaGFjayBodHRwOi8vbmVkZXJ2ZWxkLndvcmRwcmVzcy5jb20vMjAwOS8wNy8wMi9seXRlYm94LWFuZC1pbnRlcm5ldC1leHBsb3Jlci04Lw0KLy8JCQkJKiB2My4yMiAoMTAvMDIvMDcpDQovLwkJCQkqIHYzLjIxICgwOS8zMC8wNykNCi8vCQkJCSogdjMuMjAgKDA3LzEyLzA3KQ0KLy8JCQkJKiB2My4xMCAoMDUvMjgvMDcpDQovLwkJCQkqIHYzLjAwICgwNS8xNS8wNykNCi8vCQkJCSogdjIuMDIgKDExLzEzLzA2KQ0KLy8NCi8vICAgQ3JlZGl0OiBMeXRlQm94IHdhcyBvcmlnaW5hbGx5IGRlcml2ZWQgZnJvbSB0aGUgTGlnaHRib3ggY2xhc3MgKHYyLjAyKSB0aGF0IHdhcyB3cml0dGVuIGJ5IExva2VzaCBEaGFrYXIuIEZvciBtb3JlDQovLwkJCSBpbmZvcm1hdGlvbiBwbGVhc2UgdmlzaXQgaHR0cDovL2h1ZGRsZXRvZ2V0aGVyLmNvbS9wcm9qZWN0cy9saWdodGJveDIvDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KQXJyYXkucHJvdG90eXBlLnJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiAoKSB7IGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykgeyBpZiAodGhpc1tpXVswXSA9PSB0aGlzW2ktMV1bMF0pIHsgdGhpcy5zcGxpY2UoaSwxKTsgfSB9IH0NCkFycmF5LnByb3RvdHlwZS5lbXB0eSA9IGZ1bmN0aW9uICgpIHsgZm9yICh2YXIgaSA9IDA7IGkgPD0gdGhpcy5sZW5ndGg7IGkrKykgeyB0aGlzLnNoaWZ0KCk7IH0gfQ0KU3RyaW5nLnByb3RvdHlwZS50cmltID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpOyB9DQoNCmZ1bmN0aW9uIEx5dGVCb3goKSB7DQoJLyoqKiBTdGFydCBHbG9iYWwgQ29uZmlndXJhdGlvbiAqKiovDQoJCXRoaXMudGhlbWUJCQkJPSAnZ3JleSc7CS8vIHRoZW1lczogZ3JleSAoZGVmYXVsdCksIHJlZCwgZ3JlZW4sIGJsdWUsIGdvbGQNCgkJdGhpcy5oaWRlRmxhc2gJCQk9IHRydWU7CQkvLyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBGbGFzaCBvYmplY3RzIHNob3VsZCBiZSBoaWRkZW4NCgkJdGhpcy5vdXRlckJvcmRlcgkJPSB0cnVlOwkJLy8gY29udHJvbHMgd2hldGhlciB0byBzaG93IHRoZSBvdXRlciBncmV5IChvciB0aGVtZSkgYm9yZGVyDQoJCXRoaXMucmVzaXplU3BlZWQJCT0gNTsJCS8vIGNvbnRyb2xzIHRoZSBzcGVlZCBvZiB0aGUgaW1hZ2UgcmVzaXppbmcgKDE9c2xvd2VzdCBhbmQgMTA9ZmFzdGVzdCkNCgkJdGhpcy5tYXhPcGFjaXR5CQkJPSA4MDsJCS8vIGhpZ2hlciBvcGFjaXR5ID0gZGFya2VyIG92ZXJsYXksIGxvd2VyIG9wYWNpdHkgPSBsaWdodGVyIG92ZXJsYXkNCgkJdGhpcy5uYXZUeXBlCQkJPSAxOwkJLy8gMSA9ICJQcmV2L05leHQiIGJ1dHRvbnMgb24gdG9wIGxlZnQgYW5kIGxlZnQgKGRlZmF1bHQpLCAyID0gIjw8IHByZXYgfCBuZXh0ID4+IiBsaW5rcyBuZXh0IHRvIGltYWdlIG51bWJlcg0KCQl0aGlzLmF1dG9SZXNpemUJCQk9IHRydWU7CQkvLyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBpbWFnZXMgc2hvdWxkIGJlIHJlc2l6ZWQgaWYgbGFyZ2VyIHRoYW4gdGhlIGJyb3dzZXIgd2luZG93IGRpbWVuc2lvbnMNCgkJdGhpcy5kb0FuaW1hdGlvbnMJCT0gdHJ1ZTsJCS8vIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90ICJhbmltYXRlIiBMeXRlYm94LCBpLmUuIHJlc2l6ZSB0cmFuc2l0aW9uIGJldHdlZW4gaW1hZ2VzLCBmYWRlIGluL291dCBlZmZlY3RzLCBldGMuDQoJCQ0KCQl0aGlzLmJvcmRlclNpemUJCQk9IDEyOwkJLy8gaWYgeW91IGFkanVzdCB0aGUgcGFkZGluZyBpbiB0aGUgQ1NTLCB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSB0aGlzIHZhcmlhYmxlIC0tIG90aGVyd2lzZSwgbGVhdmUgdGhpcyBhbG9uZS4uLg0KCS8qKiogRW5kIEdsb2JhbCBDb25maWd1cmF0aW9uICoqKi8NCgkNCgkvKioqIENvbmZpZ3VyZSBTbGlkZXNob3cgT3B0aW9ucyAqKiovDQoJCXRoaXMuc2xpZGVJbnRlcnZhbAkJPSA0MDAwOwkJLy8gQ2hhbmdlIHZhbHVlIChtaWxsaXNlY29uZHMpIHRvIGluY3JlYXNlL2RlY3JlYXNlIHRoZSB0aW1lIGJldHdlZW4gInNsaWRlcyIgKDEwMDAwID0gMTAgc2Vjb25kcykNCgkJdGhpcy5zaG93TmF2aWdhdGlvbgkJPSB0cnVlOwkJLy8gdHJ1ZSB0byBkaXNwbGF5IE5leHQvUHJldiBidXR0b25zL3RleHQgZHVyaW5nIHNsaWRlc2hvdywgZmFsc2UgdG8gaGlkZQ0KCQl0aGlzLnNob3dDbG9zZQkJCT0gdHJ1ZTsJCS8vIHRydWUgdG8gZGlzcGxheSB0aGUgQ2xvc2UgYnV0dG9uLCBmYWxzZSB0byBoaWRlDQoJCXRoaXMuc2hvd0RldGFpbHMJCT0gdHJ1ZTsJCS8vIHRydWUgdG8gZGlzcGxheSBpbWFnZSBkZXRhaWxzIChjYXB0aW9uLCBjb3VudCksIGZhbHNlIHRvIGhpZGUNCgkJdGhpcy5zaG93UGxheVBhdXNlCQk9IHRydWU7CQkvLyB0cnVlIHRvIGRpc3BsYXkgcGF1c2UvcGxheSBidXR0b25zIG5leHQgdG8gY2xvc2UgYnV0dG9uLCBmYWxzZSB0byBoaWRlDQoJCXRoaXMuYXV0b0VuZAkJCT0gdHJ1ZTsJCS8vIHRydWUgdG8gYXV0b21hdGljYWxseSBjbG9zZSBMeXRlYm94IGFmdGVyIHRoZSBsYXN0IGltYWdlIGlzIHJlYWNoZWQsIGZhbHNlIHRvIGtlZXAgb3Blbg0KCQl0aGlzLnBhdXNlT25OZXh0Q2xpY2sJPSBmYWxzZTsJLy8gdHJ1ZSB0byBwYXVzZSB0aGUgc2xpZGVzaG93IHdoZW4gdGhlICJOZXh0IiBidXR0b24gaXMgY2xpY2tlZA0KICAgICAgICB0aGlzLnBhdXNlT25QcmV2Q2xpY2sgCT0gdHJ1ZTsJCS8vIHRydWUgdG8gcGF1c2UgdGhlIHNsaWRlc2hvdyB3aGVuIHRoZSAiUHJldiIgYnV0dG9uIGlzIGNsaWNrZWQNCgkvKioqIEVuZCBTbGlkZXNob3cgQ29uZmlndXJhdGlvbiAqKiovDQoJDQoJaWYodGhpcy5yZXNpemVTcGVlZCA+IDEwKSB7IHRoaXMucmVzaXplU3BlZWQgPSAxMDsgfQ0KCWlmKHRoaXMucmVzaXplU3BlZWQgPCAxKSB7IHJlc2l6ZVNwZWVkID0gMTsgfQ0KCXRoaXMucmVzaXplRHVyYXRpb24gPSAoMTEgLSB0aGlzLnJlc2l6ZVNwZWVkKSAqIDAuMTU7DQoJdGhpcy5yZXNpemVXVGltZXJBcnJheQkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLnJlc2l6ZVdUaW1lckNvdW50CQk9IDA7DQoJdGhpcy5yZXNpemVIVGltZXJBcnJheQkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLnJlc2l6ZUhUaW1lckNvdW50CQk9IDA7DQoJdGhpcy5zaG93Q29udGVudFRpbWVyQXJyYXkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLnNob3dDb250ZW50VGltZXJDb3VudAk9IDA7DQoJdGhpcy5vdmVybGF5VGltZXJBcnJheQkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLm92ZXJsYXlUaW1lckNvdW50CQk9IDA7DQoJdGhpcy5pbWFnZVRpbWVyQXJyYXkJCT0gbmV3IEFycmF5KCk7DQoJdGhpcy5pbWFnZVRpbWVyQ291bnQJCT0gMDsNCgl0aGlzLnRpbWVySURBcnJheQkJCT0gbmV3IEFycmF5KCk7DQoJdGhpcy50aW1lcklEQ291bnQJCQk9IDA7DQoJdGhpcy5zbGlkZXNob3dJREFycmF5CQk9IG5ldyBBcnJheSgpOw0KCXRoaXMuc2xpZGVzaG93SURDb3VudAkJPSAwOw0KCXRoaXMuaW1hZ2VBcnJheQkgPSBuZXcgQXJyYXkoKTsNCgl0aGlzLmFjdGl2ZUltYWdlID0gbnVsbDsNCgl0aGlzLnNsaWRlQXJyYXkJID0gbmV3IEFycmF5KCk7DQoJdGhpcy5hY3RpdmVTbGlkZSA9IG51bGw7DQoJdGhpcy5mcmFtZUFycmF5CSA9IG5ldyBBcnJheSgpOw0KCXRoaXMuYWN0aXZlRnJhbWUgPSBudWxsOw0KCXRoaXMuY2hlY2tGcmFtZSgpOw0KCXRoaXMuaXNTbGlkZXNob3cgPSBmYWxzZTsNCgl0aGlzLmlzTHl0ZWZyYW1lID0gZmFsc2U7DQoJLypAY2Nfb24NCgkJLypAaWYgKEBfanNjcmlwdCkNCgl0aGlzLmllID0gKGRvY3VtZW50LmFsbCAmJiAhd2luZG93Lm9wZXJhKSA/IGNoZWNrVmVyc2lvbigpIDogZmFsc2U7DQoJCS8qQGVsc2UgQCovDQoJCQl0aGlzLmllID0gZmFsc2U7DQoJCS8qQGVuZA0KCUAqLw0KCXRoaXMuaWU3ID0gKHRoaXMuaWUgJiYgd2luZG93LlhNTEh0dHBSZXF1ZXN0KTsJDQoJdGhpcy5pbml0aWFsaXplKCk7DQp9DQoNCmZ1bmN0aW9uIGNoZWNrVmVyc2lvbigpIHsNCiAgICBpZiAoL01TSUUgKFxkK1wuXGQrKTsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsNCiAgICAgICAgdmFyIGlldmVyc2lvbiA9IG5ldyBOdW1iZXIoUmVnRXhwLiQxKQ0KICAgICAgICByZXR1cm4gKGlldmVyc2lvbiA8IDgpOw0KICAgIH0NCiAgICByZXR1cm4gZmFsc2U7DQp9DQoNCkx5dGVCb3gucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHsNCgl0aGlzLnVwZGF0ZUx5dGVib3hJdGVtcygpOw0KCXZhciBvYmpCb2R5ID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKS5pdGVtKDApOwkNCglpZiAodGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3ZlcmxheScpKSB7DQoJCW9iakJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoImxiT3ZlcmxheSIpKTsNCgkJb2JqQm9keS5yZW1vdmVDaGlsZCh0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgibGJNYWluIikpOw0KCX0NCgl2YXIgb2JqT3ZlcmxheSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQlvYmpPdmVybGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk92ZXJsYXknKTsNCgkJb2JqT3ZlcmxheS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJaWYgKCh0aGlzLmllICYmICF0aGlzLmllNykgfHwgKHRoaXMuaWU3ICYmIHRoaXMuZG9jLmNvbXBhdE1vZGUgPT0gJ0JhY2tDb21wYXQnKSkgew0KCQkJb2JqT3ZlcmxheS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJCX0NCgkJb2JqT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlvYmpCb2R5LmFwcGVuZENoaWxkKG9iak92ZXJsYXkpOw0KCXZhciBvYmpMeXRlYm94ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iakx5dGVib3guc2V0QXR0cmlidXRlKCdpZCcsJ2xiTWFpbicpOw0KCQlvYmpMeXRlYm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCW9iakJvZHkuYXBwZW5kQ2hpbGQob2JqTHl0ZWJveCk7DQoJdmFyIG9iak91dGVyQ29udGFpbmVyID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iak91dGVyQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYk91dGVyQ29udGFpbmVyJyk7DQoJCW9iak91dGVyQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOw0KCQlvYmpMeXRlYm94LmFwcGVuZENoaWxkKG9iak91dGVyQ29udGFpbmVyKTsNCgl2YXIgb2JqSWZyYW1lQ29udGFpbmVyID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iaklmcmFtZUNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJZnJhbWVDb250YWluZXInKTsNCgkJb2JqSWZyYW1lQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCW9iak91dGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iaklmcmFtZUNvbnRhaW5lcik7DQoJdmFyIG9iaklmcmFtZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOw0KCQlvYmpJZnJhbWUuc2V0QXR0cmlidXRlKCdpZCcsJ2xiSWZyYW1lJyk7DQoJCW9iaklmcmFtZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCdsYklmcmFtZScpOw0KCQlvYmpJZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJb2JqSWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iaklmcmFtZSk7DQoJdmFyIG9iakltYWdlQ29udGFpbmVyID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iakltYWdlQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkltYWdlQ29udGFpbmVyJyk7DQoJCW9iak91dGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iakltYWdlQ29udGFpbmVyKTsNCgl2YXIgb2JqTHl0ZWJveEltYWdlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiaW1nIik7DQoJCW9iakx5dGVib3hJbWFnZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJbWFnZScpOw0KCQlvYmpJbWFnZUNvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpMeXRlYm94SW1hZ2UpOw0KCXZhciBvYmpMb2FkaW5nID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iakxvYWRpbmcuc2V0QXR0cmlidXRlKCdpZCcsJ2xiTG9hZGluZycpOw0KCQlvYmpPdXRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpMb2FkaW5nKTsNCgl2YXIgb2JqRGV0YWlsc0NvbnRhaW5lciA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQlvYmpEZXRhaWxzQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkRldGFpbHNDb250YWluZXInKTsNCgkJb2JqRGV0YWlsc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqTHl0ZWJveC5hcHBlbmRDaGlsZChvYmpEZXRhaWxzQ29udGFpbmVyKTsNCgl2YXIgb2JqRGV0YWlsc0RhdGEgPXRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQlvYmpEZXRhaWxzRGF0YS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJEZXRhaWxzRGF0YScpOw0KCQlvYmpEZXRhaWxzRGF0YS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqRGV0YWlsc0NvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpEZXRhaWxzRGF0YSk7DQoJdmFyIG9iakRldGFpbHMgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJb2JqRGV0YWlscy5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJEZXRhaWxzJyk7DQoJCW9iakRldGFpbHNEYXRhLmFwcGVuZENoaWxkKG9iakRldGFpbHMpOw0KCXZhciBvYmpDYXB0aW9uID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgic3BhbiIpOw0KCQlvYmpDYXB0aW9uLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkNhcHRpb24nKTsNCgkJb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpDYXB0aW9uKTsNCgl2YXIgb2JqSG92ZXJOYXYgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJb2JqSG92ZXJOYXYuc2V0QXR0cmlidXRlKCdpZCcsJ2xiSG92ZXJOYXYnKTsNCgkJb2JqSW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQob2JqSG92ZXJOYXYpOw0KCXZhciBvYmpCb3R0b21OYXYgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJb2JqQm90dG9tTmF2LnNldEF0dHJpYnV0ZSgnaWQnLCdsYkJvdHRvbU5hdicpOw0KCQlvYmpEZXRhaWxzRGF0YS5hcHBlbmRDaGlsZChvYmpCb3R0b21OYXYpOw0KCXZhciBvYmpQcmV2ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpQcmV2LnNldEF0dHJpYnV0ZSgnaWQnLCdsYlByZXYnKTsNCgkJb2JqUHJldi5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqUHJldi5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9iakhvdmVyTmF2LmFwcGVuZENoaWxkKG9ialByZXYpOw0KCXZhciBvYmpOZXh0ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpOZXh0LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk5leHQnKTsNCgkJb2JqTmV4dC5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqTmV4dC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9iakhvdmVyTmF2LmFwcGVuZENoaWxkKG9iak5leHQpOw0KCXZhciBvYmpOdW1iZXJEaXNwbGF5ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgic3BhbiIpOw0KCQlvYmpOdW1iZXJEaXNwbGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk51bWJlckRpc3BsYXknKTsNCgkJb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpOdW1iZXJEaXNwbGF5KTsNCgl2YXIgb2JqTmF2RGlzcGxheSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsNCgkJb2JqTmF2RGlzcGxheS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJOYXZEaXNwbGF5Jyk7DQoJCW9iak5hdkRpc3BsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpOYXZEaXNwbGF5KTsNCgl2YXIgb2JqQ2xvc2UgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJhIik7DQoJCW9iakNsb3NlLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkNsb3NlJyk7DQoJCW9iakNsb3NlLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOw0KCQlvYmpDbG9zZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9iakJvdHRvbU5hdi5hcHBlbmRDaGlsZChvYmpDbG9zZSk7DQoJdmFyIG9ialBhdXNlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpQYXVzZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJQYXVzZScpOw0KCQlvYmpQYXVzZS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqUGF1c2Uuc2V0QXR0cmlidXRlKCdocmVmJywnIycpOw0KCQlvYmpQYXVzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlvYmpCb3R0b21OYXYuYXBwZW5kQ2hpbGQob2JqUGF1c2UpOw0KCXZhciBvYmpQbGF5ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpQbGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYlBsYXknKTsNCgkJb2JqUGxheS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqUGxheS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9ialBsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJb2JqQm90dG9tTmF2LmFwcGVuZENoaWxkKG9ialBsYXkpOw0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnVwZGF0ZUx5dGVib3hJdGVtcyA9IGZ1bmN0aW9uKCkgewkNCgl2YXIgYW5jaG9ycyA9ICh0aGlzLmlzRnJhbWUpID8gd2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJykgOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOw0KCWZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgew0KCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsNCgkJdmFyIHJlbEF0dHJpYnV0ZSA9IFN0cmluZyhhbmNob3IuZ2V0QXR0cmlidXRlKCdyZWwnKSk7DQoJCWlmIChhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJykpIHsNCgkJCWlmIChyZWxBdHRyaWJ1dGUudG9Mb3dlckNhc2UoKS5tYXRjaCgnbHl0ZWJveCcpKSB7DQoJCQkJYW5jaG9yLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG15THl0ZWJveC5zdGFydCh0aGlzLCBmYWxzZSwgZmFsc2UpOyByZXR1cm4gZmFsc2U7IH0NCgkJCX0gZWxzZSBpZiAocmVsQXR0cmlidXRlLnRvTG93ZXJDYXNlKCkubWF0Y2goJ2x5dGVzaG93JykpIHsNCgkJCQlhbmNob3Iub25jbGljayA9IGZ1bmN0aW9uICgpIHsgbXlMeXRlYm94LnN0YXJ0KHRoaXMsIHRydWUsIGZhbHNlKTsgcmV0dXJuIGZhbHNlOyB9DQoJCQl9IGVsc2UgaWYgKHJlbEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKCdseXRlZnJhbWUnKSkgew0KCQkJCWFuY2hvci5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBteUx5dGVib3guc3RhcnQodGhpcywgZmFsc2UsIHRydWUpOyByZXR1cm4gZmFsc2U7IH0NCgkJCX0NCgkJfQ0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKGltYWdlTGluaywgZG9TbGlkZSwgZG9GcmFtZSkgew0KCWlmICh0aGlzLmllICYmICF0aGlzLmllNykgewl0aGlzLnRvZ2dsZVNlbGVjdHMoJ2hpZGUnKTsJfQ0KCWlmICh0aGlzLmhpZGVGbGFzaCkgeyB0aGlzLnRvZ2dsZUZsYXNoKCdoaWRlJyk7IH0NCgl0aGlzLmlzTHl0ZWZyYW1lID0gKGRvRnJhbWUgPyB0cnVlIDogZmFsc2UpOw0KCXZhciBwYWdlU2l6ZQk9IHRoaXMuZ2V0UGFnZVNpemUoKTsNCgl2YXIgb2JqT3ZlcmxheQk9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk92ZXJsYXknKTsNCgl2YXIgb2JqQm9keQkJPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpLml0ZW0oMCk7DQoJb2JqT3ZlcmxheS5zdHlsZS5oZWlnaHQgPSBwYWdlU2l6ZVsxXSArICJweCI7DQoJb2JqT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJdGhpcy5hcHBlYXIoJ2xiT3ZlcmxheScsICh0aGlzLmRvQW5pbWF0aW9ucyA/IDAgOiB0aGlzLm1heE9wYWNpdHkpKTsNCgl2YXIgYW5jaG9ycyA9ICh0aGlzLmlzRnJhbWUpID8gd2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJykgOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOw0KCWlmICh0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCXRoaXMuZnJhbWVBcnJheSA9IFtdOw0KCQl0aGlzLmZyYW1lTnVtID0gMDsNCgkJaWYgKChpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZWwnKSA9PSAnbHl0ZWZyYW1lJykpIHsNCgkJCXZhciByZXYgPSBpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZXYnKTsNCgkJCXRoaXMuZnJhbWVBcnJheS5wdXNoKG5ldyBBcnJheShpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksIChyZXYgPT0gbnVsbCB8fCByZXYgPT0gJycgPyAnd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDQwMHB4OyBzY3JvbGxpbmc6IGF1dG87JyA6IHJldikpKTsNCgkJfSBlbHNlIHsNCgkJCWlmIChpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZWwnKS5pbmRleE9mKCdseXRlZnJhbWUnKSAhPSAtMSkgew0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsNCgkJCQkJaWYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAmJiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykpKSB7DQoJCQkJCQl2YXIgcmV2ID0gYW5jaG9yLmdldEF0dHJpYnV0ZSgncmV2Jyk7DQoJCQkJCQl0aGlzLmZyYW1lQXJyYXkucHVzaChuZXcgQXJyYXkoYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBhbmNob3IuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCAocmV2ID09IG51bGwgfHwgcmV2ID09ICcnID8gJ3dpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgc2Nyb2xsaW5nOiBhdXRvOycgOiByZXYpKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdGhpcy5mcmFtZUFycmF5LnJlbW92ZUR1cGxpY2F0ZXMoKTsNCgkJCQl3aGlsZSh0aGlzLmZyYW1lQXJyYXlbdGhpcy5mcmFtZU51bV1bMF0gIT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB7IHRoaXMuZnJhbWVOdW0rKzsgfQ0KCQkJfQ0KCQl9DQoJfSBlbHNlIHsNCgkJdGhpcy5pbWFnZUFycmF5ID0gW107DQoJCXRoaXMuaW1hZ2VOdW0gPSAwOw0KCQl0aGlzLnNsaWRlQXJyYXkgPSBbXTsNCgkJdGhpcy5zbGlkZU51bSA9IDA7DQoJCWlmICgoaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gJ2x5dGVib3gnKSkgew0KCQkJdGhpcy5pbWFnZUFycmF5LnB1c2gobmV3IEFycmF5KGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSwgaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgndGl0bGUnKSkpOw0KCQl9IGVsc2Ugew0KCQkJaWYgKGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpLmluZGV4T2YoJ2x5dGVib3gnKSAhPSAtMSkgew0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsNCgkJCQkJaWYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAmJiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykpKSB7DQoJCQkJCQl0aGlzLmltYWdlQXJyYXkucHVzaChuZXcgQXJyYXkoYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBhbmNob3IuZ2V0QXR0cmlidXRlKCd0aXRsZScpKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdGhpcy5pbWFnZUFycmF5LnJlbW92ZUR1cGxpY2F0ZXMoKTsNCgkJCQl3aGlsZSh0aGlzLmltYWdlQXJyYXlbdGhpcy5pbWFnZU51bV1bMF0gIT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB7IHRoaXMuaW1hZ2VOdW0rKzsgfQ0KCQkJfQ0KCQkJaWYgKGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpLmluZGV4T2YoJ2x5dGVzaG93JykgIT0gLTEpIHsNCgkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGFuY2hvcnMubGVuZ3RoOyBpKyspIHsNCgkJCQkJdmFyIGFuY2hvciA9IGFuY2hvcnNbaV07DQoJCQkJCWlmIChhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJykgJiYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ3JlbCcpID09IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpKSkgew0KCQkJCQkJdGhpcy5zbGlkZUFycmF5LnB1c2gobmV3IEFycmF5KGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSwgYW5jaG9yLmdldEF0dHJpYnV0ZSgndGl0bGUnKSkpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXRoaXMuc2xpZGVBcnJheS5yZW1vdmVEdXBsaWNhdGVzKCk7DQoJCQkJd2hpbGUodGhpcy5zbGlkZUFycmF5W3RoaXMuc2xpZGVOdW1dWzBdICE9IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkgeyB0aGlzLnNsaWRlTnVtKys7IH0NCgkJCX0NCgkJfQ0KCX0NCgl2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTWFpbicpOw0KCQlvYmplY3Quc3R5bGUudG9wID0gKHRoaXMuZ2V0UGFnZVNjcm9sbCgpICsgKHBhZ2VTaXplWzNdIC8gMTUpKSArICJweCI7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJaWYgKCF0aGlzLm91dGVyQm9yZGVyKSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCX0gZWxzZSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyQm90dG9tID0gJyc7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7DQoJfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk92ZXJsYXknKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IG15THl0ZWJveC5lbmQoKTsgcmV0dXJuIGZhbHNlOyB9DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTWFpbicpLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7DQoJCXZhciBlID0gZTsNCgkJaWYgKCFlKSB7DQoJCQlpZiAod2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdICYmIChwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZyYW1lc2V0JykubGVuZ3RoIDw9IDApKSB7DQoJCQkJZSA9IHdpbmRvdy5wYXJlbnQud2luZG93LmV2ZW50Ow0KCQkJfSBlbHNlIHsNCgkJCQllID0gd2luZG93LmV2ZW50Ow0KCQkJfQ0KCQl9DQoJCXZhciBpZCA9IChlLnRhcmdldCA/IGUudGFyZ2V0LmlkIDogZS5zcmNFbGVtZW50LmlkKTsNCgkJaWYgKGlkID09ICdsYk1haW4nKSB7IG15THl0ZWJveC5lbmQoKTsgcmV0dXJuIGZhbHNlOyB9DQoJfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkNsb3NlJykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3guZW5kKCk7IHJldHVybiBmYWxzZTsgfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBhdXNlIiwgImxiUGxheSIpOyByZXR1cm4gZmFsc2U7IH0NCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQbGF5Jykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBsYXkiLCAibGJQYXVzZSIpOyByZXR1cm4gZmFsc2U7IH0JDQoJdGhpcy5pc1NsaWRlc2hvdyA9IGRvU2xpZGU7DQoJdGhpcy5pc1BhdXNlZCA9ICh0aGlzLnNsaWRlTnVtICE9IDAgPyB0cnVlIDogZmFsc2UpOw0KCWlmICh0aGlzLmlzU2xpZGVzaG93ICYmIHRoaXMuc2hvd1BsYXlQYXVzZSAmJiB0aGlzLmlzUGF1c2VkKSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBsYXknKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgl9DQoJaWYgKHRoaXMuaXNMeXRlZnJhbWUpIHsNCgkJdGhpcy5jaGFuZ2VDb250ZW50KHRoaXMuZnJhbWVOdW0pOw0KCX0gZWxzZSB7DQoJCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCQl0aGlzLmNoYW5nZUNvbnRlbnQodGhpcy5zbGlkZU51bSk7DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmNoYW5nZUNvbnRlbnQodGhpcy5pbWFnZU51bSk7DQoJCX0NCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUuY2hhbmdlQ29udGVudCA9IGZ1bmN0aW9uKGltYWdlTnVtKSB7DQoJaWYgKHRoaXMuaXNTbGlkZXNob3cpIHsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNsaWRlc2hvd0lEQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2xpZGVzaG93SURBcnJheVtpXSk7IH0NCgl9DQoJdGhpcy5hY3RpdmVJbWFnZSA9IHRoaXMuYWN0aXZlU2xpZGUgPSB0aGlzLmFjdGl2ZUZyYW1lID0gaW1hZ2VOdW07DQoJaWYgKCF0aGlzLm91dGVyQm9yZGVyKSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCX0gZWxzZSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyQm90dG9tID0gJyc7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7DQoJfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkxvYWRpbmcnKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSW1hZ2UnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYklmcmFtZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lQ29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOdW1iZXJEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCglpZiAodGhpcy5uYXZUeXBlID09IDIgfHwgdGhpcy5pc0x5dGVmcmFtZSkgew0KCQlvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOYXZEaXNwbGF5Jyk7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAnJm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gaWQ9ImxiUHJldjJfT2ZmIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGNsYXNzPSInICsgdGhpcy50aGVtZSArICciPiZsYXF1bzsgcHJldjwvc3Bhbj48YSBocmVmPSIjIiBpZD0ibGJQcmV2MiIgY2xhc3M9IicgKyB0aGlzLnRoZW1lICsgJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4mbGFxdW87IHByZXY8L2E+IDxiIGlkPSJsYlNwYWNlciIgY2xhc3M9IicgKyB0aGlzLnRoZW1lICsgJyI+fHw8L2I+IDxzcGFuIGlkPSJsYk5leHQyX09mZiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0iJyArIHRoaXMudGhlbWUgKyAnIj5uZXh0ICZyYXF1bzs8L3NwYW4+PGEgaHJlZj0iIyIgaWQ9ImxiTmV4dDIiIGNsYXNzPSInICsgdGhpcy50aGVtZSArICciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+bmV4dCAmcmFxdW87PC9hPic7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCX0NCglpZiAodGhpcy5pc0x5dGVmcmFtZSkgew0KCQl2YXIgaWZyYW1lID0gbXlMeXRlYm94LmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJZnJhbWUnKTsNCgkJdmFyIHN0eWxlcyA9IHRoaXMuZnJhbWVBcnJheVt0aGlzLmFjdGl2ZUZyYW1lXVsyXTsNCgkJdmFyIGFTdHlsZXMgPSBzdHlsZXMuc3BsaXQoJzsnKTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBhU3R5bGVzLmxlbmd0aDsgaSsrKSB7DQoJCQlpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCd3aWR0aDonKSA+PSAwKSB7DQoJCQkJdmFyIHcgPSBhU3R5bGVzW2ldLnJlcGxhY2UoJ3dpZHRoOicsICcnKTsNCgkJCQlpZnJhbWUud2lkdGggPSB3LnRyaW0oKTsNCgkJCX0gZWxzZSBpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCdoZWlnaHQ6JykgPj0gMCkgew0KCQkJCXZhciBoID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdoZWlnaHQ6JywgJycpOw0KCQkJCWlmcmFtZS5oZWlnaHQgPSBoLnRyaW0oKTsNCgkJCX0gZWxzZSBpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCdzY3JvbGxpbmc6JykgPj0gMCkgew0KCQkJCXZhciBzID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdzY3JvbGxpbmc6JywgJycpOw0KCQkJCWlmcmFtZS5zY3JvbGxpbmcgPSBzLnRyaW0oKTsNCgkJCX0gZWxzZSBpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCdib3JkZXI6JykgPj0gMCkgew0KCQkJCS8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQsIGFzIHRoZXJlIGFyZSBjcm9zcy1wbGF0Zm9ybSBpc3N1ZXMgd2l0aCBzZXR0aW5nIHRoZSBib3JkZXIgKGZyb20gYSBHVUkgc3RhbmRwb2ludCkNCgkJCQkvL3ZhciBiID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdib3JkZXI6JywgJycpOw0KCQkJCS8vaWZyYW1lLnN0eWxlLmJvcmRlciA9IGIudHJpbSgpOw0KCQkJfQ0KCQl9DQoJCXRoaXMucmVzaXplQ29udGFpbmVyKHBhcnNlSW50KGlmcmFtZS53aWR0aCksIHBhcnNlSW50KGlmcmFtZS5oZWlnaHQpKTsNCgl9IGVsc2Ugew0KCQlpbWdQcmVsb2FkZXIgPSBuZXcgSW1hZ2UoKTsNCgkJaW1nUHJlbG9hZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KCQkJdmFyIGltYWdlV2lkdGggPSBpbWdQcmVsb2FkZXIud2lkdGg7DQoJCQl2YXIgaW1hZ2VIZWlnaHQgPSBpbWdQcmVsb2FkZXIuaGVpZ2h0Ow0KCQkJaWYgKG15THl0ZWJveC5hdXRvUmVzaXplKSB7DQoJCQkJdmFyIHBhZ2VzaXplID0gbXlMeXRlYm94LmdldFBhZ2VTaXplKCk7DQoJCQkJdmFyIHggPSBwYWdlc2l6ZVsyXSAtIDE1MDsNCgkJCQl2YXIgeSA9IHBhZ2VzaXplWzNdIC0gMTUwOw0KCQkJCWlmIChpbWFnZVdpZHRoID4geCkgew0KCQkJCQlpbWFnZUhlaWdodCA9IE1hdGgucm91bmQoaW1hZ2VIZWlnaHQgKiAoeCAvIGltYWdlV2lkdGgpKTsNCgkJCQkJaW1hZ2VXaWR0aCA9IHg7IA0KCQkJCQlpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7IA0KCQkJCQkJaW1hZ2VXaWR0aCA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aCAqICh5IC8gaW1hZ2VIZWlnaHQpKTsNCgkJCQkJCWltYWdlSGVpZ2h0ID0geTsgDQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKGltYWdlSGVpZ2h0ID4geSkgeyANCgkJCQkJaW1hZ2VXaWR0aCA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aCAqICh5IC8gaW1hZ2VIZWlnaHQpKTsNCgkJCQkJaW1hZ2VIZWlnaHQgPSB5OyANCgkJCQkJaWYgKGltYWdlV2lkdGggPiB4KSB7DQoJCQkJCQlpbWFnZUhlaWdodCA9IE1hdGgucm91bmQoaW1hZ2VIZWlnaHQgKiAoeCAvIGltYWdlV2lkdGgpKTsNCgkJCQkJCWltYWdlV2lkdGggPSB4Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJdmFyIGxiSW1hZ2UgPSBteUx5dGVib3guZG9jLmdldEVsZW1lbnRCeUlkKCdsYkltYWdlJykNCgkJCWxiSW1hZ2Uuc3JjID0gKG15THl0ZWJveC5pc1NsaWRlc2hvdyA/IG15THl0ZWJveC5zbGlkZUFycmF5W215THl0ZWJveC5hY3RpdmVTbGlkZV1bMF0gOiBteUx5dGVib3guaW1hZ2VBcnJheVtteUx5dGVib3guYWN0aXZlSW1hZ2VdWzBdKTsNCgkJCWxiSW1hZ2Uud2lkdGggPSBpbWFnZVdpZHRoOw0KCQkJbGJJbWFnZS5oZWlnaHQgPSBpbWFnZUhlaWdodDsNCgkJCW15THl0ZWJveC5yZXNpemVDb250YWluZXIoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOw0KCQkJaW1nUHJlbG9hZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge307DQoJCX0NCgkJaW1nUHJlbG9hZGVyLnNyYyA9ICh0aGlzLmlzU2xpZGVzaG93ID8gdGhpcy5zbGlkZUFycmF5W3RoaXMuYWN0aXZlU2xpZGVdWzBdIDogdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzBdKTsNCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUucmVzaXplQ29udGFpbmVyID0gZnVuY3Rpb24oaW1nV2lkdGgsIGltZ0hlaWdodCkgew0KCXRoaXMud0N1ciA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykub2Zmc2V0V2lkdGg7DQoJdGhpcy5oQ3VyID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3V0ZXJDb250YWluZXInKS5vZmZzZXRIZWlnaHQ7DQoJdGhpcy54U2NhbGUgPSAoKGltZ1dpZHRoICArICh0aGlzLmJvcmRlclNpemUgKiAyKSkgLyB0aGlzLndDdXIpICogMTAwOw0KCXRoaXMueVNjYWxlID0gKChpbWdIZWlnaHQgICsgKHRoaXMuYm9yZGVyU2l6ZSAqIDIpKSAvIHRoaXMuaEN1cikgKiAxMDA7DQoJdmFyIHdEaWZmID0gKHRoaXMud0N1ciAtIHRoaXMuYm9yZGVyU2l6ZSAqIDIpIC0gaW1nV2lkdGg7DQoJdmFyIGhEaWZmID0gKHRoaXMuaEN1ciAtIHRoaXMuYm9yZGVyU2l6ZSAqIDIpIC0gaW1nSGVpZ2h0Ow0KCWlmICghKGhEaWZmID09IDApKSB7DQoJCXRoaXMuaERvbmUgPSBmYWxzZTsNCgkJdGhpcy5yZXNpemVIKCdsYk91dGVyQ29udGFpbmVyJywgdGhpcy5oQ3VyLCBpbWdIZWlnaHQgKyB0aGlzLmJvcmRlclNpemUqMiwgdGhpcy5nZXRQaXhlbFJhdGUodGhpcy5oQ3VyLCBpbWdIZWlnaHQpKTsNCgl9IGVsc2Ugew0KCQl0aGlzLmhEb25lID0gdHJ1ZTsNCgl9DQoJaWYgKCEod0RpZmYgPT0gMCkpIHsNCgkJdGhpcy53RG9uZSA9IGZhbHNlOw0KCQl0aGlzLnJlc2l6ZVcoJ2xiT3V0ZXJDb250YWluZXInLCB0aGlzLndDdXIsIGltZ1dpZHRoICsgdGhpcy5ib3JkZXJTaXplKjIsIHRoaXMuZ2V0UGl4ZWxSYXRlKHRoaXMud0N1ciwgaW1nV2lkdGgpKTsNCgl9IGVsc2Ugew0KCQl0aGlzLndEb25lID0gdHJ1ZTsNCgl9DQoJaWYgKChoRGlmZiA9PSAwKSAmJiAod0RpZmYgPT0gMCkpIHsNCgkJaWYgKHRoaXMuaWUpeyB0aGlzLnBhdXNlKDI1MCk7IH0gZWxzZSB7IHRoaXMucGF1c2UoMTAwKTsgfSANCgl9DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpLnN0eWxlLmhlaWdodCA9IGltZ0hlaWdodCArICJweCI7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpLnN0eWxlLmhlaWdodCA9IGltZ0hlaWdodCArICJweCI7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiRGV0YWlsc0NvbnRhaW5lcicpLnN0eWxlLndpZHRoID0gKGltZ1dpZHRoICsgKHRoaXMuYm9yZGVyU2l6ZSAqIDIpICsgKHRoaXMuaWUgJiYgdGhpcy5kb2MuY29tcGF0TW9kZSA9PSAiQmFja0NvbXBhdCIgJiYgdGhpcy5vdXRlckJvcmRlciA/IDIgOiAwKSkgKyAicHgiOw0KCXRoaXMuc2hvd0NvbnRlbnQoKTsNCn07DQpMeXRlQm94LnByb3RvdHlwZS5zaG93Q29udGVudCA9IGZ1bmN0aW9uKCkgew0KCWlmICh0aGlzLndEb25lICYmIHRoaXMuaERvbmUpIHsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNob3dDb250ZW50VGltZXJDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zaG93Q29udGVudFRpbWVyQXJyYXlbaV0pOyB9DQoJCWlmICh0aGlzLm91dGVyQm9yZGVyKSB7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlckJvdHRvbSA9ICdub25lJzsNCgkJfQ0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJMb2FkaW5nJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJaWYgKHRoaXMuaXNMeXRlZnJhbWUpIHsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYklmcmFtZScpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCXRoaXMuYXBwZWFyKCdsYklmcmFtZScsICh0aGlzLmRvQW5pbWF0aW9ucyA/IDAgOiAxMDApKTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkltYWdlJykuc3R5bGUuZGlzcGxheSA9ICcnOw0KCQkJdGhpcy5hcHBlYXIoJ2xiSW1hZ2UnLCAodGhpcy5kb0FuaW1hdGlvbnMgPyAwIDogMTAwKSk7DQoJCQl0aGlzLnByZWxvYWROZWlnaGJvckltYWdlcygpOw0KCQl9DQoJCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCQlpZih0aGlzLmFjdGl2ZVNsaWRlID09ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCQlpZiAodGhpcy5hdXRvRW5kKSB7DQoJCQkJCXRoaXMuc2xpZGVzaG93SURBcnJheVt0aGlzLnNsaWRlc2hvd0lEQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guZW5kKCdzbGlkZXNob3cnKSIsIHRoaXMuc2xpZGVJbnRlcnZhbCk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlpZiAoIXRoaXMuaXNQYXVzZWQpIHsNCgkJCQkJdGhpcy5zbGlkZXNob3dJREFycmF5W3RoaXMuc2xpZGVzaG93SURDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5jaGFuZ2VDb250ZW50KCIrKHRoaXMuYWN0aXZlU2xpZGUrMSkrIikiLCB0aGlzLnNsaWRlSW50ZXJ2YWwpOw0KCQkJCX0NCgkJCX0NCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkhvdmVyTmF2Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dOYXZpZ2F0aW9uICYmIHRoaXMubmF2VHlwZSA9PSAxID8gJycgOiAnbm9uZScpOw0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiQ2xvc2UnKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMuc2hvd0Nsb3NlID8gJycgOiAnbm9uZScpOw0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiRGV0YWlscycpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5zaG93RGV0YWlscyA/ICcnIDogJ25vbmUnKTsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dQbGF5UGF1c2UgJiYgIXRoaXMuaXNQYXVzZWQgPyAnJyA6ICdub25lJyk7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQbGF5Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dQbGF5UGF1c2UgJiYgIXRoaXMuaXNQYXVzZWQgPyAnbm9uZScgOiAnJyk7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOYXZEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dOYXZpZ2F0aW9uICYmIHRoaXMubmF2VHlwZSA9PSAyID8gJycgOiAnbm9uZScpOw0KCQl9IGVsc2Ugew0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSG92ZXJOYXYnKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMubmF2VHlwZSA9PSAxICYmICF0aGlzLmlzTHl0ZWZyYW1lID8gJycgOiAnbm9uZScpOw0KCQkJaWYgKCh0aGlzLm5hdlR5cGUgPT0gMiAmJiAhdGhpcy5pc0x5dGVmcmFtZSAmJiB0aGlzLmltYWdlQXJyYXkubGVuZ3RoID4gMSkgfHwgKHRoaXMuZnJhbWVBcnJheS5sZW5ndGggPiAxICYmIHRoaXMuaXNMeXRlZnJhbWUpKSB7DQoJCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCX0gZWxzZSB7DQoJCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQl9DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJDbG9zZScpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHMnKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQYXVzZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQbGF5Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJfQ0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJbWFnZUNvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5pc0x5dGVmcmFtZSA/ICdub25lJyA6ICcnKTsNCgkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lQ29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLmlzTHl0ZWZyYW1lID8gJycgOiAnbm9uZScpOw0KCQl0cnkgew0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lJykuc3JjID0gdGhpcy5mcmFtZUFycmF5W3RoaXMuYWN0aXZlRnJhbWVdWzBdOw0KCQl9IGNhdGNoKGUpIHsgfQ0KCX0gZWxzZSB7DQoJCXRoaXMuc2hvd0NvbnRlbnRUaW1lckFycmF5W3RoaXMuc2hvd0NvbnRlbnRUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnNob3dDb250ZW50KCkiLCAyMDApOw0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS51cGRhdGVEZXRhaWxzID0gZnVuY3Rpb24oKSB7DQoJdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkNhcHRpb24nKTsNCgl2YXIgc1RpdGxlID0gKHRoaXMuaXNTbGlkZXNob3cgPyB0aGlzLnNsaWRlQXJyYXlbdGhpcy5hY3RpdmVTbGlkZV1bMV0gOiAodGhpcy5pc0x5dGVmcmFtZSA/IHRoaXMuZnJhbWVBcnJheVt0aGlzLmFjdGl2ZUZyYW1lXVsxXSA6IHRoaXMuaW1hZ2VBcnJheVt0aGlzLmFjdGl2ZUltYWdlXVsxXSkpOw0KCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJb2JqZWN0LmlubmVySFRNTCA9IChzVGl0bGUgPT0gbnVsbCA/ICcnIDogc1RpdGxlKTsNCgl0aGlzLnVwZGF0ZU5hdigpOw0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHNDb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTnVtYmVyRGlzcGxheScpOw0KCWlmICh0aGlzLmlzU2xpZGVzaG93ICYmIHRoaXMuc2xpZGVBcnJheS5sZW5ndGggPiAxKSB7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAiSW1hZ2UgIiArIGV2YWwodGhpcy5hY3RpdmVTbGlkZSArIDEpICsgIiBvZiAiICsgdGhpcy5zbGlkZUFycmF5Lmxlbmd0aDsNCgkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5uYXZUeXBlID09IDIgJiYgdGhpcy5zaG93TmF2aWdhdGlvbiA/ICcnIDogJ25vbmUnKTsNCgl9IGVsc2UgaWYgKHRoaXMuaW1hZ2VBcnJheS5sZW5ndGggPiAxICYmICF0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAiSW1hZ2UgIiArIGV2YWwodGhpcy5hY3RpdmVJbWFnZSArIDEpICsgIiBvZiAiICsgdGhpcy5pbWFnZUFycmF5Lmxlbmd0aDsNCgkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5uYXZUeXBlID09IDIgPyAnJyA6ICdub25lJyk7DQoJfSBlbHNlIGlmICh0aGlzLmZyYW1lQXJyYXkubGVuZ3RoID4gMSAmJiB0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAiUGFnZSAiICsgZXZhbCh0aGlzLmFjdGl2ZUZyYW1lICsgMSkgKyAiIG9mICIgKyB0aGlzLmZyYW1lQXJyYXkubGVuZ3RoOw0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOYXZEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICcnOw0KCX0gZWxzZSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5hdkRpc3BsYXknKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCX0NCgl0aGlzLmFwcGVhcignbGJEZXRhaWxzQ29udGFpbmVyJywgKHRoaXMuZG9BbmltYXRpb25zID8gMCA6IDEwMCkpOw0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnVwZGF0ZU5hdiA9IGZ1bmN0aW9uKCkgew0KCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCWlmICh0aGlzLmFjdGl2ZVNsaWRlICE9IDApIHsNCgkJCXZhciBvYmplY3QgPSAodGhpcy5uYXZUeXBlID09IDIgPyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2MicpIDogdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpKTsNCgkJCQlvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOw0KCQkJCW9iamVjdC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7DQoJCQkJCWlmIChteUx5dGVib3gucGF1c2VPblByZXZDbGljaykgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBhdXNlIiwgImxiUGxheSIpOyB9DQoJCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVTbGlkZSAtIDEpOyByZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYgKHRoaXMubmF2VHlwZSA9PSAyKSB7IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsgfQ0KCQl9DQoJCWlmICh0aGlzLmFjdGl2ZVNsaWRlICE9ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCXZhciBvYmplY3QgPSAodGhpcy5uYXZUeXBlID09IDIgPyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0MicpIDogdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpKTsNCgkJCQlvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOw0KCQkJCW9iamVjdC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7DQoJCQkJCWlmIChteUx5dGVib3gucGF1c2VPbk5leHRDbGljaykgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBhdXNlIiwgImxiUGxheSIpOyB9DQoJCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVTbGlkZSArIDEpOyByZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYgKHRoaXMubmF2VHlwZSA9PSAyKSB7IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsgfQ0KCQl9DQoJfSBlbHNlIGlmICh0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCWlmKHRoaXMuYWN0aXZlRnJhbWUgIT0gMCkgew0KCQkJdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyJyk7DQoJCQkJb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCQlvYmplY3Qub25jbGljayA9IGZ1bmN0aW9uKCkgew0KCQkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlRnJhbWUgLSAxKTsgcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJfSBlbHNlIHsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJfQ0KCQlpZih0aGlzLmFjdGl2ZUZyYW1lICE9ICh0aGlzLmZyYW1lQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCXZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0MicpOw0KCQkJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCQkJb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCgkJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUZyYW1lICsgMSk7IHJldHVybiBmYWxzZTsNCgkJCQl9DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0Ml9PZmYnKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCX0JCQ0KCX0gZWxzZSB7DQoJCWlmKHRoaXMuYWN0aXZlSW1hZ2UgIT0gMCkgew0KCQkJdmFyIG9iamVjdCA9ICh0aGlzLm5hdlR5cGUgPT0gMiA/IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyJykgOiB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2JykpOw0KCQkJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCQkJb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCgkJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUltYWdlIC0gMSk7IHJldHVybiBmYWxzZTsNCgkJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZiAodGhpcy5uYXZUeXBlID09IDIpIHsgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldjJfT2ZmJykuc3R5bGUuZGlzcGxheSA9ICcnOyB9DQoJCX0NCgkJaWYodGhpcy5hY3RpdmVJbWFnZSAhPSAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB7DQoJCQl2YXIgb2JqZWN0ID0gKHRoaXMubmF2VHlwZSA9PSAyID8gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dDInKSA6IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQnKSk7DQoJCQkJb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCQlvYmplY3Qub25jbGljayA9IGZ1bmN0aW9uKCkgew0KCQkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlSW1hZ2UgKyAxKTsgcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmICh0aGlzLm5hdlR5cGUgPT0gMikgeyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0Ml9PZmYnKS5zdHlsZS5kaXNwbGF5ID0gJyc7IH0NCgkJfQ0KCX0NCgl0aGlzLmVuYWJsZUtleWJvYXJkTmF2KCk7DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUuZW5hYmxlS2V5Ym9hcmROYXYgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQub25rZXlkb3duID0gdGhpcy5rZXlib2FyZEFjdGlvbjsgfTsNCkx5dGVCb3gucHJvdG90eXBlLmRpc2FibGVLZXlib2FyZE5hdiA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5vbmtleWRvd24gPSAnJzsgfTsNCkx5dGVCb3gucHJvdG90eXBlLmtleWJvYXJkQWN0aW9uID0gZnVuY3Rpb24oZSkgew0KCXZhciBrZXljb2RlID0ga2V5ID0gZXNjYXBlID0gbnVsbDsNCglrZXljb2RlCT0gKGUgPT0gbnVsbCkgPyBldmVudC5rZXlDb2RlIDogZS53aGljaDsNCglrZXkJCT0gU3RyaW5nLmZyb21DaGFyQ29kZShrZXljb2RlKS50b0xvd2VyQ2FzZSgpOw0KCWVzY2FwZSAgPSAoZSA9PSBudWxsKSA/IDI3IDogZS5ET01fVktfRVNDQVBFOw0KCWlmICgoa2V5ID09ICd4JykgfHwgKGtleSA9PSAnYycpIHx8IChrZXljb2RlID09IGVzY2FwZSkpIHsNCgkJbXlMeXRlYm94LmVuZCgpOw0KCX0gZWxzZSBpZiAoKGtleSA9PSAncCcpIHx8IChrZXljb2RlID09IDM3KSkgew0KCQlpZiAobXlMeXRlYm94LmlzU2xpZGVzaG93KSB7DQoJCQlpZihteUx5dGVib3guYWN0aXZlU2xpZGUgIT0gMCkgew0KCQkJCW15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsNCgkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlU2xpZGUgLSAxKTsNCgkJCX0NCgkJfSBlbHNlIGlmIChteUx5dGVib3guaXNMeXRlZnJhbWUpIHsNCgkJCWlmKG15THl0ZWJveC5hY3RpdmVGcmFtZSAhPSAwKSB7DQoJCQkJbXlMeXRlYm94LmRpc2FibGVLZXlib2FyZE5hdigpOw0KCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVGcmFtZSAtIDEpOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYobXlMeXRlYm94LmFjdGl2ZUltYWdlICE9IDApIHsNCgkJCQlteUx5dGVib3guZGlzYWJsZUtleWJvYXJkTmF2KCk7DQoJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUltYWdlIC0gMSk7DQoJCQl9DQoJCX0NCgl9IGVsc2UgaWYgKChrZXkgPT0gJ24nKSB8fCAoa2V5Y29kZSA9PSAzOSkpIHsNCgkJaWYgKG15THl0ZWJveC5pc1NsaWRlc2hvdykgew0KCQkJaWYobXlMeXRlYm94LmFjdGl2ZVNsaWRlICE9IChteUx5dGVib3guc2xpZGVBcnJheS5sZW5ndGggLSAxKSkgew0KCQkJCW15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsNCgkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlU2xpZGUgKyAxKTsNCgkJCX0NCgkJfSBlbHNlIGlmIChteUx5dGVib3guaXNMeXRlZnJhbWUpIHsNCgkJCWlmKG15THl0ZWJveC5hY3RpdmVGcmFtZSAhPSAobXlMeXRlYm94LmZyYW1lQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCQlteUx5dGVib3guZGlzYWJsZUtleWJvYXJkTmF2KCk7DQoJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUZyYW1lICsgMSk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZihteUx5dGVib3guYWN0aXZlSW1hZ2UgIT0gKG15THl0ZWJveC5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB7DQoJCQkJbXlMeXRlYm94LmRpc2FibGVLZXlib2FyZE5hdigpOw0KCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVJbWFnZSArIDEpOw0KCQkJfQ0KCQl9DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnByZWxvYWROZWlnaGJvckltYWdlcyA9IGZ1bmN0aW9uKCkgew0KCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCWlmICgodGhpcy5zbGlkZUFycmF5Lmxlbmd0aCAtIDEpID4gdGhpcy5hY3RpdmVTbGlkZSkgew0KCQkJcHJlbG9hZE5leHRJbWFnZSA9IG5ldyBJbWFnZSgpOw0KCQkJcHJlbG9hZE5leHRJbWFnZS5zcmMgPSB0aGlzLnNsaWRlQXJyYXlbdGhpcy5hY3RpdmVTbGlkZSArIDFdWzBdOw0KCQl9DQoJCWlmKHRoaXMuYWN0aXZlU2xpZGUgPiAwKSB7DQoJCQlwcmVsb2FkUHJldkltYWdlID0gbmV3IEltYWdlKCk7DQoJCQlwcmVsb2FkUHJldkltYWdlLnNyYyA9IHRoaXMuc2xpZGVBcnJheVt0aGlzLmFjdGl2ZVNsaWRlIC0gMV1bMF07DQoJCX0NCgl9IGVsc2Ugew0KCQlpZiAoKHRoaXMuaW1hZ2VBcnJheS5sZW5ndGggLSAxKSA+IHRoaXMuYWN0aXZlSW1hZ2UpIHsNCgkJCXByZWxvYWROZXh0SW1hZ2UgPSBuZXcgSW1hZ2UoKTsNCgkJCXByZWxvYWROZXh0SW1hZ2Uuc3JjID0gdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2UgKyAxXVswXTsNCgkJfQ0KCQlpZih0aGlzLmFjdGl2ZUltYWdlID4gMCkgew0KCQkJcHJlbG9hZFByZXZJbWFnZSA9IG5ldyBJbWFnZSgpOw0KCQkJcHJlbG9hZFByZXZJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZSAtIDFdWzBdOw0KCQl9DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnRvZ2dsZVBsYXlQYXVzZSA9IGZ1bmN0aW9uKGhpZGVJRCwgc2hvd0lEKSB7DQoJaWYgKHRoaXMuaXNTbGlkZXNob3cgJiYgaGlkZUlEID09ICJsYlBhdXNlIikgew0KCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2xpZGVzaG93SURDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zbGlkZXNob3dJREFycmF5W2ldKTsgfQ0KCX0NCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChoaWRlSUQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoc2hvd0lEKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJaWYgKGhpZGVJRCA9PSAibGJQbGF5Iikgew0KCQl0aGlzLmlzUGF1c2VkID0gZmFsc2U7DQoJCWlmICh0aGlzLmFjdGl2ZVNsaWRlID09ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCXRoaXMuZW5kKCk7DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmNoYW5nZUNvbnRlbnQodGhpcy5hY3RpdmVTbGlkZSArIDEpOw0KCQl9DQoJfSBlbHNlIHsNCgkJdGhpcy5pc1BhdXNlZCA9IHRydWU7DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGNhbGxlcikgew0KCXZhciBjbG9zZUNsaWNrID0gKGNhbGxlciA9PSAnc2xpZGVzaG93JyA/IGZhbHNlIDogdHJ1ZSk7DQoJaWYgKHRoaXMuaXNTbGlkZXNob3cgJiYgdGhpcy5pc1BhdXNlZCAmJiAhY2xvc2VDbGljaykgeyByZXR1cm47IH0NCgl0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOw0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk1haW4nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCXRoaXMuZmFkZSgnbGJPdmVybGF5JywgKHRoaXMuZG9BbmltYXRpb25zID8gdGhpcy5tYXhPcGFjaXR5IDogMCkpOw0KCXRoaXMudG9nZ2xlU2VsZWN0cygndmlzaWJsZScpOw0KCWlmICh0aGlzLmhpZGVGbGFzaCkgeyB0aGlzLnRvZ2dsZUZsYXNoKCd2aXNpYmxlJyk7IH0NCglpZiAodGhpcy5pc1NsaWRlc2hvdykgew0KCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2xpZGVzaG93SURDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zbGlkZXNob3dJREFycmF5W2ldKTsgfQ0KCX0NCglpZiAodGhpcy5pc0x5dGVmcmFtZSkgew0KCQkgdGhpcy5pbml0aWFsaXplKCk7DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmNoZWNrRnJhbWUgPSBmdW5jdGlvbigpIHsNCglpZiAod2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdICYmIChwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZyYW1lc2V0JykubGVuZ3RoIDw9IDApKSB7DQoJCXRoaXMuaXNGcmFtZSA9IHRydWU7DQoJCXRoaXMubHl0ZWJveCA9ICJ3aW5kb3cucGFyZW50LiIgKyB3aW5kb3cubmFtZSArICIubXlMeXRlYm94IjsNCgkJdGhpcy5kb2MgPSBwYXJlbnQuZG9jdW1lbnQ7DQoJfSBlbHNlIHsNCgkJdGhpcy5pc0ZyYW1lID0gZmFsc2U7DQoJCXRoaXMubHl0ZWJveCA9ICJteUx5dGVib3giOw0KCQl0aGlzLmRvYyA9IGRvY3VtZW50Ow0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5nZXRQaXhlbFJhdGUgPSBmdW5jdGlvbihjdXIsIGltZykgew0KCXZhciBkaWZmID0gKGltZyA+IGN1cikgPyBpbWcgLSBjdXIgOiBjdXIgLSBpbWc7DQoJaWYgKGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEwMCkgeyByZXR1cm4gMTA7IH0NCglpZiAoZGlmZiA+IDEwMCAmJiBkaWZmIDw9IDIwMCkgeyByZXR1cm4gMTU7IH0NCglpZiAoZGlmZiA+IDIwMCAmJiBkaWZmIDw9IDMwMCkgeyByZXR1cm4gMjA7IH0NCglpZiAoZGlmZiA+IDMwMCAmJiBkaWZmIDw9IDQwMCkgeyByZXR1cm4gMjU7IH0NCglpZiAoZGlmZiA+IDQwMCAmJiBkaWZmIDw9IDUwMCkgeyByZXR1cm4gMzA7IH0NCglpZiAoZGlmZiA+IDUwMCAmJiBkaWZmIDw9IDYwMCkgeyByZXR1cm4gMzU7IH0NCglpZiAoZGlmZiA+IDYwMCAmJiBkaWZmIDw9IDcwMCkgeyByZXR1cm4gNDA7IH0NCglpZiAoZGlmZiA+IDcwMCkgeyByZXR1cm4gNDU7IH0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5hcHBlYXIgPSBmdW5jdGlvbihpZCwgb3BhY2l0eSkgew0KCXZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGU7DQoJb2JqZWN0Lm9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0Lk1vek9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0LktodG1sT3BhY2l0eSA9IChvcGFjaXR5IC8gMTAwKTsNCglvYmplY3QuZmlsdGVyID0gImFscGhhKG9wYWNpdHk9IiArIChvcGFjaXR5ICsgMTApICsgIikiOw0KCWlmIChvcGFjaXR5ID09IDEwMCAmJiAoaWQgPT0gJ2xiSW1hZ2UnIHx8IGlkID09ICdsYklmcmFtZScpKSB7DQoJCXRyeSB7IG9iamVjdC5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpOyB9IGNhdGNoKGUpIHt9CS8qIEZpeCBhZGRlZCBmb3IgSUUgQWxwaGEgT3BhY2l0eSBGaWx0ZXIgYnVnLiAqLw0KCQl0aGlzLnVwZGF0ZURldGFpbHMoKTsNCgl9IGVsc2UgaWYgKG9wYWNpdHkgPj0gdGhpcy5tYXhPcGFjaXR5ICYmIGlkID09ICdsYk92ZXJsYXknKSB7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vdmVybGF5VGltZXJDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5vdmVybGF5VGltZXJBcnJheVtpXSk7IH0NCgkJcmV0dXJuOw0KCX0gZWxzZSBpZiAob3BhY2l0eSA+PSAxMDAgJiYgaWQgPT0gJ2xiRGV0YWlsc0NvbnRhaW5lcicpIHsNCgkJdHJ5IHsgb2JqZWN0LnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7IH0gY2F0Y2goZSkge30JLyogRml4IGFkZGVkIGZvciBJRSBBbHBoYSBPcGFjaXR5IEZpbHRlciBidWcuICovDQoJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pbWFnZVRpbWVyQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuaW1hZ2VUaW1lckFycmF5W2ldKTsgfQ0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdmVybGF5Jykuc3R5bGUuaGVpZ2h0ID0gdGhpcy5nZXRQYWdlU2l6ZSgpWzFdICsgInB4IjsNCgl9IGVsc2Ugew0KCQlpZiAoaWQgPT0gJ2xiT3ZlcmxheScpIHsNCgkJCXRoaXMub3ZlcmxheVRpbWVyQXJyYXlbdGhpcy5vdmVybGF5VGltZXJDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5hcHBlYXIoJyIgKyBpZCArICInLCAiICsgKG9wYWNpdHkrMjApICsgIikiLCAxKTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuaW1hZ2VUaW1lckFycmF5W3RoaXMuaW1hZ2VUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LmFwcGVhcignIiArIGlkICsgIicsICIgKyAob3BhY2l0eSsxMCkgKyAiKSIsIDEpOw0KCQl9DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmZhZGUgPSBmdW5jdGlvbihpZCwgb3BhY2l0eSkgew0KCXZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGU7DQoJb2JqZWN0Lm9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0Lk1vek9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0LktodG1sT3BhY2l0eSA9IChvcGFjaXR5IC8gMTAwKTsNCglvYmplY3QuZmlsdGVyID0gImFscGhhKG9wYWNpdHk9IiArIG9wYWNpdHkgKyAiKSI7DQoJaWYgKG9wYWNpdHkgPD0gMCkgew0KCQl0cnkgew0KCQkJb2JqZWN0LmRpc3BsYXkgPSAnbm9uZSc7DQoJCX0gY2F0Y2goZXJyKSB7IH0NCgl9IGVsc2UgaWYgKGlkID09ICdsYk92ZXJsYXknKSB7DQoJCXRoaXMub3ZlcmxheVRpbWVyQXJyYXlbdGhpcy5vdmVybGF5VGltZXJDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5mYWRlKCciICsgaWQgKyAiJywgIiArIChvcGFjaXR5LTIwKSArICIpIiwgMSk7DQoJfSBlbHNlIHsNCgkJdGhpcy50aW1lcklEQXJyYXlbdGhpcy50aW1lcklEQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guZmFkZSgnIiArIGlkICsgIicsICIgKyAob3BhY2l0eS0xMCkgKyAiKSIsIDEpOw0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5yZXNpemVXID0gZnVuY3Rpb24oaWQsIGN1clcsIG1heFcsIHBpeGVscmF0ZSwgc3BlZWQpIHsNCglpZiAoIXRoaXMuaERvbmUpIHsNCgkJdGhpcy5yZXNpemVXVGltZXJBcnJheVt0aGlzLnJlc2l6ZVdUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnJlc2l6ZVcoJyIgKyBpZCArICInLCAiICsgY3VyVyArICIsICIgKyBtYXhXICsgIiwgIiArIHBpeGVscmF0ZSArICIpIiwgMTAwKTsNCgkJcmV0dXJuOw0KCX0NCgl2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KCXZhciB0aW1lciA9IHNwZWVkID8gc3BlZWQgOiAodGhpcy5yZXNpemVEdXJhdGlvbi8yKTsNCgl2YXIgbmV3VyA9ICh0aGlzLmRvQW5pbWF0aW9ucyA/IGN1clcgOiBtYXhXKTsNCglvYmplY3Quc3R5bGUud2lkdGggPSAobmV3VykgKyAicHgiOw0KCWlmIChuZXdXIDwgbWF4Vykgew0KCQluZXdXICs9IChuZXdXICsgcGl4ZWxyYXRlID49IG1heFcpID8gKG1heFcgLSBuZXdXKSA6IHBpeGVscmF0ZTsNCgl9IGVsc2UgaWYgKG5ld1cgPiBtYXhXKSB7DQoJCW5ld1cgLT0gKG5ld1cgLSBwaXhlbHJhdGUgPD0gbWF4VykgPyAobmV3VyAtIG1heFcpIDogcGl4ZWxyYXRlOw0KCX0NCgl0aGlzLnJlc2l6ZVdUaW1lckFycmF5W3RoaXMucmVzaXplV1RpbWVyQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3gucmVzaXplVygnIiArIGlkICsgIicsICIgKyBuZXdXICsgIiwgIiArIG1heFcgKyAiLCAiICsgcGl4ZWxyYXRlICsgIiwgIiArICh0aW1lciswLjAyKSArICIpIiwgdGltZXIrMC4wMik7DQoJaWYgKHBhcnNlSW50KG9iamVjdC5zdHlsZS53aWR0aCkgPT0gbWF4Vykgew0KCQl0aGlzLndEb25lID0gdHJ1ZTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlc2l6ZVdUaW1lckNvdW50OyBpKyspIHsgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVdUaW1lckFycmF5W2ldKTsgfQ0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5yZXNpemVIID0gZnVuY3Rpb24oaWQsIGN1ckgsIG1heEgsIHBpeGVscmF0ZSwgc3BlZWQpIHsNCgl2YXIgdGltZXIgPSBzcGVlZCA/IHNwZWVkIDogKHRoaXMucmVzaXplRHVyYXRpb24vMik7DQoJdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKGlkKTsNCgl2YXIgbmV3SCA9ICh0aGlzLmRvQW5pbWF0aW9ucyA/IGN1ckggOiBtYXhIKTsNCglvYmplY3Quc3R5bGUuaGVpZ2h0ID0gKG5ld0gpICsgInB4IjsNCglpZiAobmV3SCA8IG1heEgpIHsNCgkJbmV3SCArPSAobmV3SCArIHBpeGVscmF0ZSA+PSBtYXhIKSA/IChtYXhIIC0gbmV3SCkgOiBwaXhlbHJhdGU7DQoJfSBlbHNlIGlmIChuZXdIID4gbWF4SCkgew0KCQluZXdIIC09IChuZXdIIC0gcGl4ZWxyYXRlIDw9IG1heEgpID8gKG5ld0ggLSBtYXhIKSA6IHBpeGVscmF0ZTsNCgl9DQoJdGhpcy5yZXNpemVIVGltZXJBcnJheVt0aGlzLnJlc2l6ZUhUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnJlc2l6ZUgoJyIgKyBpZCArICInLCAiICsgbmV3SCArICIsICIgKyBtYXhIICsgIiwgIiArIHBpeGVscmF0ZSArICIsICIgKyAodGltZXIrLjAyKSArICIpIiwgdGltZXIrLjAyKTsNCglpZiAocGFyc2VJbnQob2JqZWN0LnN0eWxlLmhlaWdodCkgPT0gbWF4SCkgew0KCQl0aGlzLmhEb25lID0gdHJ1ZTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlc2l6ZUhUaW1lckNvdW50OyBpKyspIHsgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZUhUaW1lckFycmF5W2ldKTsgfQ0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5nZXRQYWdlU2Nyb2xsID0gZnVuY3Rpb24oKSB7DQoJaWYgKHNlbGYucGFnZVlPZmZzZXQpIHsNCgkJcmV0dXJuIHRoaXMuaXNGcmFtZSA/IHBhcmVudC5wYWdlWU9mZnNldCA6IHNlbGYucGFnZVlPZmZzZXQ7DQoJfSBlbHNlIGlmICh0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQgJiYgdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCl7DQoJCXJldHVybiB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOw0KCX0gZWxzZSBpZiAoZG9jdW1lbnQuYm9keSkgew0KCQlyZXR1cm4gdGhpcy5kb2MuYm9keS5zY3JvbGxUb3A7DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmdldFBhZ2VTaXplID0gZnVuY3Rpb24oKSB7CQ0KCXZhciB4U2Nyb2xsLCB5U2Nyb2xsLCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0Ow0KCWlmICh3aW5kb3cuaW5uZXJIZWlnaHQgJiYgd2luZG93LnNjcm9sbE1heFkpIHsNCgkJeFNjcm9sbCA9IHRoaXMuZG9jLnNjcm9sbFdpZHRoOw0KCQl5U2Nyb2xsID0gKHRoaXMuaXNGcmFtZSA/IHBhcmVudC5pbm5lckhlaWdodCA6IHNlbGYuaW5uZXJIZWlnaHQpICsgKHRoaXMuaXNGcmFtZSA/IHBhcmVudC5zY3JvbGxNYXhZIDogc2VsZi5zY3JvbGxNYXhZKTsNCgl9IGVsc2UgaWYgKHRoaXMuZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5kb2MuYm9keS5vZmZzZXRIZWlnaHQpew0KCQl4U2Nyb2xsID0gdGhpcy5kb2MuYm9keS5zY3JvbGxXaWR0aDsNCgkJeVNjcm9sbCA9IHRoaXMuZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0Ow0KCX0gZWxzZSB7DQoJCXhTY3JvbGwgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkub2Zmc2V0V2lkdGg7DQoJCXlTY3JvbGwgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkub2Zmc2V0SGVpZ2h0Ow0KCQl4U2Nyb2xsID0gKHhTY3JvbGwgPCB0aGlzLmRvYy5ib2R5Lm9mZnNldFdpZHRoKSA/IHRoaXMuZG9jLmJvZHkub2Zmc2V0V2lkdGggOiB4U2Nyb2xsOw0KCQl5U2Nyb2xsID0gKHlTY3JvbGwgPCB0aGlzLmRvYy5ib2R5Lm9mZnNldEhlaWdodCkgPyB0aGlzLmRvYy5ib2R5Lm9mZnNldEhlaWdodCA6IHlTY3JvbGw7DQoJfQ0KCWlmIChzZWxmLmlubmVySGVpZ2h0KSB7DQoJCXdpbmRvd1dpZHRoID0gKHRoaXMuaXNGcmFtZSkgPyBwYXJlbnQuaW5uZXJXaWR0aCA6IHNlbGYuaW5uZXJXaWR0aDsNCgkJd2luZG93SGVpZ2h0ID0gKHRoaXMuaXNGcmFtZSkgPyBwYXJlbnQuaW5uZXJIZWlnaHQgOiBzZWxmLmlubmVySGVpZ2h0Ow0KCX0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHsNCgkJd2luZG93V2lkdGggPSB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7DQoJCXdpbmRvd0hlaWdodCA9IHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7DQoJfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5KSB7DQoJCXdpbmRvd1dpZHRoID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKS5pdGVtKDApLmNsaWVudFdpZHRoOw0KCQl3aW5kb3dIZWlnaHQgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkuY2xpZW50SGVpZ2h0Ow0KCQl3aW5kb3dXaWR0aCA9ICh3aW5kb3dXaWR0aCA9PSAwKSA/IHRoaXMuZG9jLmJvZHkuY2xpZW50V2lkdGggOiB3aW5kb3dXaWR0aDsNCgkJd2luZG93SGVpZ2h0ID0gKHdpbmRvd0hlaWdodCA9PSAwKSA/IHRoaXMuZG9jLmJvZHkuY2xpZW50SGVpZ2h0IDogd2luZG93SGVpZ2h0Ow0KCX0NCgl2YXIgcGFnZUhlaWdodCA9ICh5U2Nyb2xsIDwgd2luZG93SGVpZ2h0KSA/IHdpbmRvd0hlaWdodCA6IHlTY3JvbGw7DQoJdmFyIHBhZ2VXaWR0aCA9ICh4U2Nyb2xsIDwgd2luZG93V2lkdGgpID8gd2luZG93V2lkdGggOiB4U2Nyb2xsOw0KCXJldHVybiBuZXcgQXJyYXkocGFnZVdpZHRoLCBwYWdlSGVpZ2h0LCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0KTsNCn07DQpMeXRlQm94LnByb3RvdHlwZS50b2dnbGVGbGFzaCA9IGZ1bmN0aW9uKHN0YXRlKSB7DQoJdmFyIG9iamVjdHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgib2JqZWN0Iik7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RzLmxlbmd0aDsgaSsrKSB7DQoJCW9iamVjdHNbaV0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7DQoJfQ0KCXZhciBlbWJlZHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZW1iZWQiKTsNCglmb3IgKHZhciBpID0gMDsgaSA8IGVtYmVkcy5sZW5ndGg7IGkrKykgew0KCQllbWJlZHNbaV0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7DQoJfQ0KCWlmICh0aGlzLmlzRnJhbWUpIHsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnQuZnJhbWVzLmxlbmd0aDsgaSsrKSB7DQoJCQl0cnkgew0KCQkJCW9iamVjdHMgPSBwYXJlbnQuZnJhbWVzW2ldLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgib2JqZWN0Iik7DQoJCQkJZm9yICh2YXIgaiA9IDA7IGogPCBvYmplY3RzLmxlbmd0aDsgaisrKSB7DQoJCQkJCW9iamVjdHNbal0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7DQoJCQkJfQ0KCQkJfSBjYXRjaChlKSB7IH0NCgkJCXRyeSB7DQoJCQkJZW1iZWRzID0gcGFyZW50LmZyYW1lc1tpXS53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImVtYmVkIik7DQoJCQkJZm9yICh2YXIgaiA9IDA7IGogPCBlbWJlZHMubGVuZ3RoOyBqKyspIHsNCgkJCQkJZW1iZWRzW2pdLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOw0KCQkJCX0NCgkJCX0gY2F0Y2goZSkgeyB9DQoJCX0NCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUudG9nZ2xlU2VsZWN0cyA9IGZ1bmN0aW9uKHN0YXRlKSB7DQoJdmFyIHNlbGVjdHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0Iik7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RzLmxlbmd0aDsgaSsrICkgew0KCQlzZWxlY3RzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOw0KCX0NCglpZiAodGhpcy5pc0ZyYW1lKSB7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50LmZyYW1lcy5sZW5ndGg7IGkrKykgew0KCQkJdHJ5IHsNCgkJCQlzZWxlY3RzID0gcGFyZW50LmZyYW1lc1tpXS53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpOw0KCQkJCWZvciAodmFyIGogPSAwOyBqIDwgc2VsZWN0cy5sZW5ndGg7IGorKykgew0KCQkJCQlzZWxlY3RzW2pdLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOw0KCQkJCX0NCgkJCX0gY2F0Y2goZSkgeyB9DQoJCX0NCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbihudW1iZXJNaWxsaXMpIHsNCgl2YXIgbm93ID0gbmV3IERhdGUoKTsNCgl2YXIgZXhpdFRpbWUgPSBub3cuZ2V0VGltZSgpICsgbnVtYmVyTWlsbGlzOw0KCXdoaWxlICh0cnVlKSB7DQoJCW5vdyA9IG5ldyBEYXRlKCk7DQoJCWlmIChub3cuZ2V0VGltZSgpID4gZXhpdFRpbWUpIHsgcmV0dXJuOyB9DQoJfQ0KfTsNCmlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgew0KCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixpbml0THl0ZWJveCxmYWxzZSk7DQp9IGVsc2UgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCkgew0KCXdpbmRvdy5hdHRhY2hFdmVudCgib25sb2FkIixpbml0THl0ZWJveCk7DQp9IGVsc2Ugew0KCXdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHtpbml0THl0ZWJveCgpO30NCn0NCmZ1bmN0aW9uIGluaXRMeXRlYm94KCkgeyBteUx5dGVib3ggPSBuZXcgTHl0ZUJveCgpOyB9]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/v3.22.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LSBhZGRlZCBhIGllOCBmaXggZnJvbSBodHRwOi8vbmVkZXJ2ZWxkLndvcmRwcmVzcy5jb20vMjAwOS8wNy8wMi9seXRlYm94LWFuZC1pbnRlcm5ldC1leHBsb3Jlci04Lw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/css/closelabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODdhQgAWAO4AAP7+/v///3p6etvb28DAwMHBwZ2dnVlZWdLS0oODg6+vr/X19eTk5IyMjLi4uFBQUJSUlFRUVFZWVtzc3MnJyVJSUlhYWFFRUVNTU+zs7FVVVf39/erq6vb29szMzN3d3Xt7e2BgYFdXV6Kiovr6+qampk9PT0xMTPf392ZmZl9fX+Dg4EtLS97e3qGhofz8/PDw8Ovr6/v7+7W1tWxsbJWVlXh4eMrKys3NzXl5efHx8WRkZFpaWufn5+/v77Ozs7GxsePj44eHh2lpaU5OTnNzc01NTZaWlmdnZ3x8fOXl5WNjY5KSkqmpqYiIiN/f37m5ubS0tHBwcIaGhmVlZe3t7XZ2dm1tbZiYmJeXl25ubm9vb46OjtXV1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAQgAWAAAH/4ABgoOEhYaHiImKi4yNjo+MAJKTlJWWl5eQAS+NmJ6fmJGSATJYXQGWAR4GJKigr6CiAChZJzsfrgCCOConRx2UGQMMsAAMw5cLAwO6i6M/LAcYVAOuqiERBydNkggNAuANCAAEAsyVBAngAgkElA7rCTcBBevrg6McAiYHD0hPgjyowHCAyBQYACgIaEBhAIUECsiZq6RAAAQEAxBAEBBRooKMJTrQ41igZAF8+UA8OBCBxgoc2A4YEYICVYIECybllHhOEgMBBioZmDiUkqB6Ew4ZzQCCn4Yr2Cw8cCISwAAB7iyV68mz0lUHACo62HlUQFJDlQLESFLhgAQRB/8qcKkpaeslu5OKWgIKIIM6ASUYlK1hoLADlEZhWNFwwEKEEa0m4UU3Ma+AS3wBLCDwzexIwoYRTwrgYwtjlhB0TUKA9W5lSfDGUWKdVTLHkWcLpV1RJJsGCXFdbHC14OZOYzknW81smZjmSUBxKx3dgsYFaUNSSLBQYcRwSQoZOkzQYDNHAuiZVbyYcSPYsOxLCDhZT4HJAlUEUU9x/YGNIDdIsN0FwrniTTzjlGNPVums00BtDYJz2Ej2eGbNBylUwMMDIHAgCBQCWnDBCC9Qcoxzr5x4yTI5RRLABEus5F8MqAgywwUiiMBCFMX0mIozAegAQQUmCOChUTNg8IAwFB/46OQozugiAxM5ZJALlEBoocSVT8IiSwAkVHXJBj1w2eUrsjTjiX5n+phmj4EAADs=]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhHwAfANUAAP///5qamiYmJuTk5Ly8vMzMzKqqqrCwsKKioujo6NTU1Pb29qioqKCgoK6urtLS0tzc3NjY2Li4uObm5nBwcMbGxmhoaEZGRkhISDIyMvj4+Pr6+lBQUDY2NsTExFZWVpKSkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAHwAfAAAG/0CAcEhMPAgOBKDDoQQKxKh0CJEErleAYLu1HDRT6YCALWu5XEolPIwYymY0GmNgAxrwuJybCUcaAHlYZ3sCdxFRA28BgVgHBQMLAAkeIB9ojQYDRGSDAQwKYRsIF4ZlBFR5AJt2a3kQQlZlDBN2QxMMcBKTeaG2Qwp5RnAHv1EHcEdwUMZDBXBIcKzNq3BJcJLUAAtwStrNCNjf3GUIDtLfA9adWMzUz6cPxN/IZQ8JvdTBcAkAsli0jOHSJQSCqmlhNr0awo7RJ19TFORqdAXVEEVZyjyKtG1AgXoZA2iK8oeiKkFZGiCaggelSTiA2LhxidLASjZjBL2siNBOFQ84LyXA+mYEiRJzBO7ZCQIAIfkEAQoAIQAsEAAAAA8ADwAABldAhIPwSISOyGRguZRAAEkkc0oYREPTqSESzU4bXe8ylDEgF4PCYRoSCDCVKEDBCLTdAormasXjD1chFRd+AhaBIQiFAgWBGx+FdoEghRSIHoUciAmFHUEAIfkEAQoAIQAsFgAFAAkAFQAABlnAkDDUiAyHgYBhcEwmCQCh0wkJTRjTgESoyAYSIcAh+xAWsgThIOsQLrKIo1yYENjtHaHnbucIQXwCFCEbH4EBIQiBAgUVF4EWQosHQ3wUGkd2GBVzGQZDQQAh+QQBCgAhACwQABAADwAPAAAGWcCQcChcBI5HBJE4QB4dy2HBGSBEQ4AD9XFVUAOJ6IRBlUQroS+EuEFcBGkkARBKeEAfgR5+NAyEe4F6IQ0RQ4KBGUuIehgGi4gUaJB7FgcaVx0cFAEFV0NBACH5BAEKACEALAUAFgAVAAkAAAZUwJAwVBkajYOjUHBBbJQhgIIROAqugg/IkwgtBoVDYFxdYs+CEHk9DmXQZzWb3DBg4Ff53BAhUvB6awRJQhoHFmiBARIQAFAFARQcHSEIDgQPXUZBACH5BAEKACEALAAAEAAPAA8AAAZZwI5gOEyEjsgjhzj0JJMUpgD0RAakn001VJAKENuQRXqpbA/e0KCqiRJDAYYC8KxghvCA/lAYLJAGGXl6hHpPDYWJTxEGiYRVAwSOAVsAEBKKYSEJDwQOCEEAIfkEAQoAIQAsAAAFAAkAFQAABlnAkNCQERpDFYxAcNRQlkvjAQoVWqiCS6WAFSBCAexnE3pSQUIO1iPsYBPHuBARqNcXQoe9PhAS9gEFQg+ABwAhCYABCkISgAwTIRCKQgB/dkcDBnVyEQ1HQQAh+QQBCgAhACwAAAAADwAPAAAGWMCQcEgsBCicDnGoOVgEUOgyVKFEr0sD5oolZrjdUKQRAkeFA0MgUI5+QJ5ECEBYr8sXxIYIsdupUxJ+AQwTUwmDAQpTIQ+DBwCMdX4FjCEOgwOWCIMLlkEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/nextlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAMQcAHp6eqqqqs7OzmFhYfPz89DQ0MLCwtvb221tbZ6enpycnFVVVYaGhra2tufn59bW1oeHh8/Pz76+vvr6+sHBwZKSkvn5+d/f383NzXJycklJSf///zMzMwAAAAAAAAAAACH5BAEAABwALAAAAAA/ACAAAAXfIMdtZGmeaKquLDq2cCzPdG3feK7vfO//wKBwSCwaj8igRsMwATSk53IJ2DA0gVJAU9lOpwIfuPSMYgPoxoYw0Bw2jsWAIFAoMhqI3SFuz82AKAIaVU9hWhqHP4RbCYFlKQlMGo4mW4piVQiJG5BPAKAAaiRsGn+WnECEGwemBJ6EoaOsY6iYPasbjbAqCAsHcgS2SlUkmwtQncknW1mNw6rFtEtmaNa0CCWbipfEqMlSXwTbJYOn3Unp6ukTEQXv8O8YF+stFhQG+fr5Eg/1/wADChxIsOCLgjBEIIQRAgA7]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/prevlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAMQaALGxsYSEhNLS0v39/WJiYm1tbenp6dzc3MfHx7q6upqamo+Pj6Wlpby8vN3d3Xl5efT09OXl5bu7u9ra2v7+/ra2tvv7+8zMzFdXV////zMzMwAAAAAAAAAAAAAAAAAAACH5BAEAABoALAAAAAA/ACAAAAXwYCaOZGmeaKqamra+cPy6cm3feK7vfO//wKBwSCwaj8jkDoBpYh4IkbO5cGQE06ZAgWmQGhhAkKkAMAgYQwZTAJgJhCsm4HYbHE9SID3GCEQIYWsBIwx+WGIlD3wZBhgLQkx/GYFicyMLaYgmYIlMUX1lZ3wYBAEBBZdYBaenIhAEBSIFspFOpqClAWgAEHKsrSNcDpVDkiaXZCKbJngMXGq2kySXGalqzCYPqZDGfsiEcoRYdHXTYBig0uCYh1mCr7FK8/T1IhETB/r7+gP2KxcqJBhIMIEEC/9UUBjAsGHDhBAjSpxIseIQGhZTtAgBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/slimbox2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU0xJTUJPWCAqLwoKI2xiT3ZlcmxheSB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl6LWluZGV4OiA5OTk5OwoJbGVmdDogMDsKCXRvcDogMDsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKCWN1cnNvcjogcG9pbnRlcjsKfQoKI2xiQ2VudGVyLCAjbGJCb3R0b21Db250YWluZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogOTk5OTsKCW92ZXJmbG93OiBoaWRkZW47CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoubGJMb2FkaW5nIHsKCWJhY2tncm91bmQ6ICNmZmYgdXJsKGxvYWRpbmcuZ2lmKSBuby1yZXBlYXQgY2VudGVyOwp9CgojbGJJbWFnZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglsZWZ0OiAwOwoJdG9wOiAwOwoJYm9yZGVyOiAxMHB4IHNvbGlkICNmZmY7CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgojbGJQcmV2TGluaywgI2xiTmV4dExpbmsgewoJZGlzcGxheTogYmxvY2s7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cgl3aWR0aDogNTAlOwoJb3V0bGluZTogbm9uZTsKfQoKI2xiUHJldkxpbmsgewoJbGVmdDogMDsKfQoKI2xiUHJldkxpbms6aG92ZXIgewoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKHByZXZsYWJlbC5naWYpIG5vLXJlcGVhdCAwIDE1JTsKfQoKI2xiTmV4dExpbmsgewoJcmlnaHQ6IDA7Cn0KCiNsYk5leHRMaW5rOmhvdmVyIHsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChuZXh0bGFiZWwuZ2lmKSBuby1yZXBlYXQgMTAwJSAxNSU7Cn0KCiNsYkJvdHRvbSB7Cglmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIEdlbmV2YSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMHB4OwoJY29sb3I6ICM2NjY7CglsaW5lLWhlaWdodDogMS40ZW07Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJYm9yZGVyOiAxMHB4IHNvbGlkICNmZmY7Cglib3JkZXItdG9wLXN0eWxlOiBub25lOwp9CgojbGJDbG9zZUxpbmsgewoJZGlzcGxheTogYmxvY2s7CglmbG9hdDogcmlnaHQ7Cgl3aWR0aDogNjZweDsKCWhlaWdodDogMjJweDsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChjbG9zZWxhYmVsLmdpZikgbm8tcmVwZWF0IGNlbnRlcjsKCW1hcmdpbjogNXB4IDA7CglvdXRsaW5lOiBub25lOwp9CgojbGJDYXB0aW9uLCAjbGJOdW1iZXIgewoJbWFyZ2luLXJpZ2h0OiA3MXB4Owp9CgojbGJDYXB0aW9uIHsKCWZvbnQtd2VpZ2h0OiBib2xkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/autoactivation.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVdpdGggdGhlIGZvbGxvd2luZyBjb2RlLCBTbGltYm94IHdpbGwgYWN0aXZhdGUgaXRzZWxmIGF1dG9tYXRpY2FsbHkgb24gYWxsIGxpbmtzIHBvaW50aW5nIHRvIGltYWdlcywKCW9yIG1vcmUgc3BlY2lmaWNhbGx5IGFsbCBsaW5rcyBoYXZpbmcgVVJMcyBlbmRpbmcgd2l0aDogIi5qcGciIG9yICIucG5nIiBvciAiLmdpZiIuCglBcyBhIHJlc3VsdCwgeW91IHdpbGwgbm90IG5lZWQgdG8gc2V0IHRoZSByZWw9ImxpZ2h0Ym94IiBhdHRyaWJ1dGUgb24gYW55IGxpbmsgdG8gYWN0aXZhdGUgU2xpbWJveC4KCUZ1cnRoZXJtb3JlLCBhbGwgaW1hZ2UgbGlua3MgY29udGFpbmVkIGluIHRoZSBzYW1lIGJsb2NrIG9yIHBhcmFncmFwaCAoaGF2aW5nIHRoZSBzYW1lIHBhcmVudCBlbGVtZW50KQoJd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGdyb3VwZWQgdG9nZXRoZXIgaW4gYSBnYWxsZXJ5LCBzbyB5b3Ugd2lsbCBub3QgbmVlZCB0byBzcGVjaWZ5IGdyb3VwcyBlaXRoZXIuCglJbWFnZXMgdGhhdCBhcmUgYWxvbmUgaW4gdGhlaXIgYmxvY2sgb3IgcGFyYWdyYXBoIHdpbGwgYmUgZGlzcGxheWVkIGluZGl2aWR1YWxseS4KCglSZXBsYWNlIHRoZSBkZWZhdWx0IGF1dG9sb2FkIGNvZGUgYmxvY2sgd2l0aCB0aGlzIG9uZS4KKi8KCmpRdWVyeShmdW5jdGlvbigkKSB7CgkkKCJhW2hyZWZdIikuZmlsdGVyKGZ1bmN0aW9uKCkgewoJCXJldHVybiAvXC4oanBnfHBuZ3xnaWYpJC9pLnRlc3QodGhpcy5ocmVmKTsKCX0pLnNsaW1ib3goe30sIG51bGwsIGZ1bmN0aW9uKGVsKSB7CgkJcmV0dXJuICh0aGlzID09IGVsKSB8fCAodGhpcy5wYXJlbnROb2RlICYmICh0aGlzLnBhcmVudE5vZGUgPT0gZWwucGFyZW50Tm9kZSkpOwoJfSk7Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/flickr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVRoaXMgY29kZSBhdXRvbWF0aWNhbGx5IGludGVncmF0ZXMgRmxpY2tyIHRodW1ibmFpbHMgd2l0aCBTbGltYm94LgoJSXQgd2lsbCBzY2FuIGZvciBhbGwgbGlua3MgYXJvdW5kIHRodW1ibmFpbCBpbWFnZXMgcG9pbnRpbmcgdG8gRmxpY2tyIHBob3RvIFBBR0VTLgoJTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIGFkZCByZWw9ImxpZ2h0Ym94IiB0byB0aGVzZSBsaW5rcy4KCVdoZW4gY2xpY2tpbmcgb24gYSBGbGlja3IgdGh1bWJuYWlsLCBTbGltYm94IHdpbGwgb3BlbiBhbmQgZGlzcGxheSB0aGUgbWVkaXVtLXNpemVkIGltYWdlLgoJVGhlIHRpdGxlIGF0dHJpYnV0ZSBvZiB0aGUgbGluayAob3IgdGhlIGFsdCBhdHRyaWJ1dGUgb2YgdGhlIHRodW1ibmFpbCBpZiBub3QgYXZhaWxhYmxlKSB3aWxsIGJlIHVzZWQKCWFzIGRlc2NyaXB0aW9uIHRleHQsIGFuZCBhIGxpbmsgdG8gdGhlIEZsaWNrciBwaG90byBwYWdlIHdpbGwgYmUgYWRkZWQgdW5kZXIgdGhlIGRlc2NyaXB0aW9uLgoKCUFkZCB0aGUgZm9sbG93aW5nIGNvZGUgdG8gdGhlIGF1dG9sb2FkIGNvZGUgYmxvY2suCiovCgpqUXVlcnkoZnVuY3Rpb24oJCkgewoJJCgiYVtocmVmXj0naHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy8nXSA+IGltZzpmaXJzdC1jaGlsZFtzcmNdIikucGFyZW50KCkuc2xpbWJveCh7fSwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gW2VsLmZpcnN0Q2hpbGQuc3JjLnJlcGxhY2UoL19bbXRzXVwuKFx3KykkLywgIi4kMSIpLAoJCQkoZWwudGl0bGUgfHwgZWwuZmlyc3RDaGlsZC5hbHQpICsgJzxiciAvPjxhIGhyZWY9IicgKyBlbC5ocmVmICsgJyI+RmxpY2tyIHBhZ2U8L2E+J107Cgl9KTsKfSk7]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/picasaweb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVRoaXMgY29kZSBhdXRvbWF0aWNhbGx5IGludGVncmF0ZXMgUGljYXNhIFdlYiBBbGJ1bXMgdGh1bWJuYWlscyB3aXRoIFNsaW1ib3guCglJdCB3aWxsIHNjYW4gZm9yIGFsbCBsaW5rcyBhcm91bmQgdGh1bWJuYWlsIGltYWdlcyBwb2ludGluZyB0byBQaWNhc2EgV2ViIEFsYnVtcyBwaG90byBQQUdFUy4KCU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBhZGQgcmVsPSJsaWdodGJveCIgdG8gdGhlc2UgbGlua3MuCglXaGVuIGNsaWNraW5nIG9uIGEgUGljYXNhIFdlYiBBbGJ1bXMgdGh1bWJuYWlsLCBTbGltYm94IHdpbGwgb3BlbiBhbmQgZGlzcGxheSB0aGUgbWVkaXVtLXNpemVkIGltYWdlLgoJVGhlIHRpdGxlIGF0dHJpYnV0ZSBvZiB0aGUgbGluayAob3IgdGhlIGFsdCBhdHRyaWJ1dGUgb2YgdGhlIHRodW1ibmFpbCBpZiBub3QgYXZhaWxhYmxlKSB3aWxsIGJlIHVzZWQKCWFzIGRlc2NyaXB0aW9uIHRleHQsIGFuZCBhIGxpbmsgdG8gdGhlIFBpY2FzYSBXZWIgQWxidW1zIHBob3RvIHBhZ2Ugd2lsbCBiZSBhZGRlZCB1bmRlciB0aGUgZGVzY3JpcHRpb24uCgoJQWRkIHRoZSBmb2xsb3dpbmcgY29kZSB0byB0aGUgYXV0b2xvYWQgY29kZSBibG9jay4KKi8KCmpRdWVyeShmdW5jdGlvbigkKSB7CgkkKCJhW2hyZWZePSdodHRwOi8vcGljYXNhd2ViLmdvb2dsZS4nXSA+IGltZzpmaXJzdC1jaGlsZFtzcmNdIikucGFyZW50KCkuc2xpbWJveCh7fSwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gW2VsLmZpcnN0Q2hpbGQuc3JjLnJlcGxhY2UoL1wvc1xkKyg/OlwtYyk/XC8oW15cL10rKSQvLCAiL3M1MTIvJDEiKSwKCQkJKGVsLnRpdGxlIHx8IGVsLmZpcnN0Q2hpbGQuYWx0KSArICc8YnIgLz48YSBocmVmPSInICsgZWwuaHJlZiArICciPlBpY2FzYSBXZWIgQWxidW1zIHBhZ2U8L2E+J107Cgl9KTsKfSk7]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/js/slimbox2.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVNsaW1ib3ggdjIuMDIgLSBUaGUgdWx0aW1hdGUgbGlnaHR3ZWlnaHQgTGlnaHRib3ggY2xvbmUgZm9yIGpRdWVyeQoJKGMpIDIwMDctMjAwOSBDaHJpc3RvcGhlIEJleWxzIDxodHRwOi8vd3d3LmRpZ2l0YWxpYS5iZT4KCU1JVC1zdHlsZSBsaWNlbnNlLgoqLwooZnVuY3Rpb24odyl7dmFyIEU9dyh3aW5kb3cpLHUsZyxGPS0xLG8seCxELHYseSxMLHMsbj0hd2luZG93LlhNTEh0dHBSZXF1ZXN0LGU9d2luZG93Lm9wZXJhJiYoZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiKSYmKHcuYnJvd3Nlci52ZXJzaW9uPj05LjMpLG09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGw9e30sdD1uZXcgSW1hZ2UoKSxKPW5ldyBJbWFnZSgpLEgsYSxoLHEsSSxkLEcsYyxBLEs7dyhmdW5jdGlvbigpe3coImJvZHkiKS5hcHBlbmQodyhbSD13KCc8ZGl2IGlkPSJsYk92ZXJsYXkiIC8+JylbMF0sYT13KCc8ZGl2IGlkPSJsYkNlbnRlciIgLz4nKVswXSxHPXcoJzxkaXYgaWQ9ImxiQm90dG9tQ29udGFpbmVyIiAvPicpWzBdXSkuY3NzKCJkaXNwbGF5Iiwibm9uZSIpKTtoPXcoJzxkaXYgaWQ9ImxiSW1hZ2UiIC8+JykuYXBwZW5kVG8oYSkuYXBwZW5kKHE9dygnPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyIgLz4nKS5hcHBlbmQoW0k9dygnPGEgaWQ9ImxiUHJldkxpbmsiIGhyZWY9IiMiIC8+JykuY2xpY2soQilbMF0sZD13KCc8YSBpZD0ibGJOZXh0TGluayIgaHJlZj0iIyIgLz4nKS5jbGljayhmKVswXV0pWzBdKVswXTtjPXcoJzxkaXYgaWQ9ImxiQm90dG9tIiAvPicpLmFwcGVuZFRvKEcpLmFwcGVuZChbdygnPGEgaWQ9ImxiQ2xvc2VMaW5rIiBocmVmPSIjIiAvPicpLmFkZChIKS5jbGljayhDKVswXSxBPXcoJzxkaXYgaWQ9ImxiQ2FwdGlvbiIgLz4nKVswXSxLPXcoJzxkaXYgaWQ9ImxiTnVtYmVyIiAvPicpWzBdLHcoJzxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyIgLz4nKVswXV0pWzBdfSk7dy5zbGltYm94PWZ1bmN0aW9uKE8sTixNKXt1PXcuZXh0ZW5kKHtsb29wOmZhbHNlLG92ZXJsYXlPcGFjaXR5OjAuOCxvdmVybGF5RmFkZUR1cmF0aW9uOjQwMCxyZXNpemVEdXJhdGlvbjo0MDAscmVzaXplRWFzaW5nOiJzd2luZyIsaW5pdGlhbFdpZHRoOjI1MCxpbml0aWFsSGVpZ2h0OjI1MCxpbWFnZUZhZGVEdXJhdGlvbjo0MDAsY2FwdGlvbkFuaW1hdGlvbkR1cmF0aW9uOjQwMCxjb3VudGVyVGV4dDoiSW1hZ2Uge3h9IG9mIHt5fSIsY2xvc2VLZXlzOlsyNyw4OCw2N10scHJldmlvdXNLZXlzOlszNyw4MF0sbmV4dEtleXM6WzM5LDc4XX0sTSk7aWYodHlwZW9mIE89PSJzdHJpbmciKXtPPVtbTyxOXV07Tj0wfXk9RS5zY3JvbGxUb3AoKSsoKGU/bS5jbGllbnRIZWlnaHQ6RS5oZWlnaHQoKSkvMik7TD11LmluaXRpYWxXaWR0aDtzPXUuaW5pdGlhbEhlaWdodDt3KGEpLmNzcyh7dG9wOk1hdGgubWF4KDAseS0ocy8yKSksd2lkdGg6TCxoZWlnaHQ6cyxtYXJnaW5MZWZ0Oi1MLzJ9KS5zaG93KCk7dj1ufHwoSC5jdXJyZW50U3R5bGUmJihILmN1cnJlbnRTdHlsZS5wb3NpdGlvbiE9ImZpeGVkIikpO2lmKHYpe0guc3R5bGUucG9zaXRpb249ImFic29sdXRlIn13KEgpLmNzcygib3BhY2l0eSIsdS5vdmVybGF5T3BhY2l0eSkuZmFkZUluKHUub3ZlcmxheUZhZGVEdXJhdGlvbik7eigpO2soMSk7Zz1PO3UubG9vcD11Lmxvb3AmJihnLmxlbmd0aD4xKTtyZXR1cm4gYihOKX07dy5mbi5zbGltYm94PWZ1bmN0aW9uKE0sUCxPKXtQPVB8fGZ1bmN0aW9uKFEpe3JldHVybltRLmhyZWYsUS50aXRsZV19O089T3x8ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX07dmFyIE49dGhpcztyZXR1cm4gTi51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24oKXt2YXIgUz10aGlzLFU9MCxULFE9MCxSO1Q9dy5ncmVwKE4sZnVuY3Rpb24oVyxWKXtyZXR1cm4gTy5jYWxsKFMsVyxWKX0pO2ZvcihSPVQubGVuZ3RoO1E8UjsrK1Epe2lmKFRbUV09PVMpe1U9UX1UW1FdPVAoVFtRXSxRKX1yZXR1cm4gdy5zbGltYm94KFQsVSxNKX0pfTtmdW5jdGlvbiB6KCl7dmFyIE49RS5zY3JvbGxMZWZ0KCksTT1lP20uY2xpZW50V2lkdGg6RS53aWR0aCgpO3coW2EsR10pLmNzcygibGVmdCIsTisoTS8yKSk7aWYodil7dyhIKS5jc3Moe2xlZnQ6Tix0b3A6RS5zY3JvbGxUb3AoKSx3aWR0aDpNLGhlaWdodDpFLmhlaWdodCgpfSl9fWZ1bmN0aW9uIGsoTSl7dygib2JqZWN0IikuYWRkKG4/InNlbGVjdCI6ImVtYmVkIikuZWFjaChmdW5jdGlvbihPLFApe2lmKE0pe3cuZGF0YShQLCJzbGltYm94IixQLnN0eWxlLnZpc2liaWxpdHkpfVAuc3R5bGUudmlzaWJpbGl0eT1NPyJoaWRkZW4iOncuZGF0YShQLCJzbGltYm94Iil9KTt2YXIgTj1NPyJiaW5kIjoidW5iaW5kIjtFW05dKCJzY3JvbGwgcmVzaXplIix6KTt3KGRvY3VtZW50KVtOXSgia2V5ZG93biIscCl9ZnVuY3Rpb24gcChPKXt2YXIgTj1PLmtleUNvZGUsTT13LmluQXJyYXk7cmV0dXJuKE0oTix1LmNsb3NlS2V5cyk+PTApP0MoKTooTShOLHUubmV4dEtleXMpPj0wKT9mKCk6KE0oTix1LnByZXZpb3VzS2V5cyk+PTApP0IoKTpmYWxzZX1mdW5jdGlvbiBCKCl7cmV0dXJuIGIoeCl9ZnVuY3Rpb24gZigpe3JldHVybiBiKEQpfWZ1bmN0aW9uIGIoTSl7aWYoTT49MCl7Rj1NO289Z1tGXVswXTt4PShGfHwodS5sb29wP2cubGVuZ3RoOjApKS0xO0Q9KChGKzEpJWcubGVuZ3RoKXx8KHUubG9vcD8wOi0xKTtyKCk7YS5jbGFzc05hbWU9ImxiTG9hZGluZyI7bD1uZXcgSW1hZ2UoKTtsLm9ubG9hZD1qO2wuc3JjPW99cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGooKXthLmNsYXNzTmFtZT0iIjt3KGgpLmNzcyh7YmFja2dyb3VuZEltYWdlOiJ1cmwoIitvKyIpIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6IiJ9KTt3KHEpLndpZHRoKGwud2lkdGgpO3coW3EsSSxkXSkuaGVpZ2h0KGwuaGVpZ2h0KTt3KEEpLmh0bWwoZ1tGXVsxXXx8IiIpO3coSykuaHRtbCgoKChnLmxlbmd0aD4xKSYmdS5jb3VudGVyVGV4dCl8fCIiKS5yZXBsYWNlKC97eH0vLEYrMSkucmVwbGFjZSgve3l9LyxnLmxlbmd0aCkpO2lmKHg+PTApe3Quc3JjPWdbeF1bMF19aWYoRD49MCl7Si5zcmM9Z1tEXVswXX1MPWgub2Zmc2V0V2lkdGg7cz1oLm9mZnNldEhlaWdodDt2YXIgTT1NYXRoLm1heCgwLHktKHMvMikpO2lmKGEub2Zmc2V0SGVpZ2h0IT1zKXt3KGEpLmFuaW1hdGUoe2hlaWdodDpzLHRvcDpNfSx1LnJlc2l6ZUR1cmF0aW9uLHUucmVzaXplRWFzaW5nKX1pZihhLm9mZnNldFdpZHRoIT1MKXt3KGEpLmFuaW1hdGUoe3dpZHRoOkwsbWFyZ2luTGVmdDotTC8yfSx1LnJlc2l6ZUR1cmF0aW9uLHUucmVzaXplRWFzaW5nKX13KGEpLnF1ZXVlKGZ1bmN0aW9uKCl7dyhHKS5jc3Moe3dpZHRoOkwsdG9wOk0rcyxtYXJnaW5MZWZ0Oi1MLzIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiIifSk7dyhoKS5jc3Moe2Rpc3BsYXk6Im5vbmUiLHZpc2liaWxpdHk6IiIsb3BhY2l0eToiIn0pLmZhZGVJbih1LmltYWdlRmFkZUR1cmF0aW9uLGkpfSl9ZnVuY3Rpb24gaSgpe2lmKHg+PTApe3coSSkuc2hvdygpfWlmKEQ+PTApe3coZCkuc2hvdygpfXcoYykuY3NzKCJtYXJnaW5Ub3AiLC1jLm9mZnNldEhlaWdodCkuYW5pbWF0ZSh7bWFyZ2luVG9wOjB9LHUuY2FwdGlvbkFuaW1hdGlvbkR1cmF0aW9uKTtHLnN0eWxlLnZpc2liaWxpdHk9IiJ9ZnVuY3Rpb24gcigpe2wub25sb2FkPW51bGw7bC5zcmM9dC5zcmM9Si5zcmM9bzt3KFthLGgsY10pLnN0b3AodHJ1ZSk7dyhbSSxkLGgsR10pLmhpZGUoKX1mdW5jdGlvbiBDKCl7aWYoRj49MCl7cigpO0Y9eD1EPS0xO3coYSkuaGlkZSgpO3coSCkuc3RvcCgpLmZhZGVPdXQodS5vdmVybGF5RmFkZUR1cmF0aW9uLGspfXJldHVybiBmYWxzZX19KShqUXVlcnkpOwoKLy8gQVVUT0xPQUQgQ09ERSBCTE9DSyAoTUFZIEJFIENIQU5HRUQgT1IgUkVNT1ZFRCkKalF1ZXJ5KGZ1bmN0aW9uKCQpIHsKCSQoImFbcmVsXj0nbGlnaHRib3gnXSIpLnNsaW1ib3goey8qIFB1dCBjdXN0b20gb3B0aW9ucyBoZXJlICovfSwgbnVsbCwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gKHRoaXMgPT0gZWwpIHx8ICgodGhpcy5yZWwubGVuZ3RoID4gOCkgJiYgKHRoaXMucmVsID09IGVsLnJlbCkpOwoJfSk7Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/README.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U0xJTUJPWCBWMi4wMiBSRUFETUUKPT09PT09PT09PT09PT09PT09PT0KVGhlIHVsdGltYXRlIGxpZ2h0d2VpZ2h0IExpZ2h0Ym94IGNsb25lCi4uLiBub3cgdXNpbmcgdGhlIGpRdWVyeSBqYXZhc2NyaXB0IGxpYnJhcnkKCihjKSBDaHJpc3RvcGhlIEJleWxzIDIwMDctMjAwOQpNSVQtc3R5bGUgbGljZW5zZQoKaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3NsaW1ib3gvCgoKSW5jbHVkZWQgZmlsZXM6CgpleGFtcGxlLmh0bWwJCUEgc2ltcGxlIGV4YW1wbGUgcGFnZSBkZW1vbnN0cmF0aW5nIGhvdyB0byB1c2UgU2xpbWJveCB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCmV4YW1wbGUuanBnCQlBbiBleGFtcGxlIGltYWdlIHVzZWQgb24gdGhlIGV4YW1wbGUgcGFnZS4KUkVBRE1FLnR4dAkJVGhlIGZpbGUgeW91IGFyZSByZWFkaW5nLgpjc3MvKgkJCVRoZSBTbGltYm94IHN0eWxlc2hlZXQgYW5kIGl0cyBhc3NvY2lhdGVkIGltYWdlcy4gWW91IGNhbiBlZGl0IHRoZW0gdG8gY3VzdG9taXplIFNsaW1ib3ggYXBwZWFyYW5jZS4KanMvc2xpbWJveDIuanMJCVRoZSBtaW5pZmllZCB2ZXJzaW9uIG9mIFNsaW1ib3ggMiwgcGx1cyB0aGUgZWRpdGFibGUgYXV0b2xvYWRpbmcgY29kZSB1c2luZyBkZWZhdWx0IG9wdGlvbnMuCnNyYy9zbGltYm94Mi5qcwkJVGhlIFNsaW1ib3ggMiBzb3VyY2UuIENvbnRhaW5zIG1hbnkgY29tbWVudHMgYW5kIGlzIG5vdCBzdWl0YWJsZSBmb3IgcHJvZHVjdGlvbiB1c2UgKG5lZWRzIHRvIGJlIG1pbmlmaWVkIGZpcnN0KS4KZXh0cmEvKgkJCVNvbWUgZXh0cmEgc2NyaXB0cyB0aGF0IHlvdSBjYW4gYWRkIHRvIHRoZSBhdXRvbG9hZCBjb2RlIGJsb2NrIGluc2lkZSBzbGltYm94Mi5qcyB0byBhZGQgc3BlY2lhbCBmdW5jdGlvbmFsaXR5LgoKClNsaW1ib3ggMiByZXF1aXJlcyB0aGUgalF1ZXJ5IGxpYnJhcnkgKHZlcnNpb24gMS4yLjYgb3IgbW9yZSByZWNlbnQpIHRvIGJlIGluc3RhbGxlZCBvbiB5b3VyIHdlYnNpdGUgaW4gb3JkZXIgdG8gd29yayBwcm9wZXJseS4KCllvdSBjYW4gcmVtb3ZlIG9yIGN1c3RvbWl6ZSB0aGUgcHJvdmlkZWQgYXV0b2xvYWQgY29kZSBibG9jayBieSBlZGl0aW5nIHRoZSBzbGltYm94Mi5qcyBmaWxlLiBCeSBkZWZhdWx0LCBpdCBiZWhhdmVzIGxpa2UgTGlnaHRib3guCldoZW4gZGVwbG95aW5nIHNsaW1ib3gyLmpzLCB5b3UgTVVTVCBhbHdheXMgcHJlc2VydmUgdGhlIGNvcHlyaWdodCBub3RpY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KCklmIHlvdSBhcmUgYSBkZXZlbG9wZXIgYW5kIHdhbnQgdG8gZWRpdCB0aGUgcHJvdmlkZWQgc291cmNlIGNvZGUsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIG1pbmlmeSB0aGUgc2NyaXB0IHVzaW5nICJZVUkgQ29tcHJlc3NvciIKYnkgSnVsaWVuIExlY29tdGUgYmVmb3JlIGRpc3RyaWJ1dGlvbi4gSXQgd2lsbCBzdHJpcCBzcGFjZXMgYW5kIGNvbW1lbnRzIGFuZCBzaHJpbmsgdGhlIHZhcmlhYmxlIG5hbWVzIGluIG9yZGVyIHRvIG9idGFpbiB0aGUgc21hbGxlc3QgZmlsZSBzaXplLgoKRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBvZmZpY2lhbCBwcm9qZWN0IHBhZ2UuCgoKRW5qb3kh]]></data>
	</file>
	<file>
	  <filename>/templates/template_fancybox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBGYW5jeWJveCAgLSAgdmVyc2lvbiAxLjIuNiAgIC0gIGh0dHA6Ly93d3cuZmFuY3lib3gubmV0LyAtLT4NCg0KPGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgY2xhc3M9Imdyb3VwIiBocmVmPSJ7JGltYWdlLT5maWxlfSIgdGl0bGU9InskaW1hZ2UtPnRpdGxlfSIgcmVsPSJnYWxsZXJ5Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+DQoJey9pZn0NCgk8L2Rpdj4NCnsvZm9yZWFjaH0NCjxkaXYgY2xhc3M9ImdhbGxlcnljbGVhciI+Jm5ic3A7PC9kaXY+DQo8L2Rpdj4NCg0KDQp7Ki0tLS0tLS0tLS0NCi5nYWxsZXJ5IC5pbWcgew0KCWhlaWdodDogMTIwcHg7DQoJLyp3aWR0aDogMTIwcHg7ICAgQWRqdXN0IGFzIHlvdSBzZWUgZml0ICovDQoJZmxvYXQ6IGxlZnQ7DQoJbWFyZ2luOiAxMHB4Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmdhbGxlcnkgLmltZyBhIHsNCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQoJYm9yZGVyOiAycHggc29saWQgI2RkZDsNCglwYWRkaW5nOiAxcHg7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgYTpob3ZlciB7DQoJYm9yZGVyLWNvbG9yOiAjOTk5Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gew0KCWhlaWdodDogNTBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGEsIC5nYWxsZXJ5IC5wcmV2cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7DQoJd2lkdGg6IDUwcHg7DQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3ByZXZpb3VzLnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLm5leHRwYWdlIGEsIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7DQoJd2lkdGg6IDUwcHg7DQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMCA2cHggMCAwOw0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvbmV4dC5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYXJlbnRsaW5rIGEgew0KCWRpc3BsYXk6IGJsb2NrOw0KCXdpZHRoOiA1MHB4Ow0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3VwcGFnZS5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbmF2aWdhdGlvbiBhOmhvdmVyIHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucHJldnBhZ2UgZW0sIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyB7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWJvcmRlci1yaWdodDogMnB4IHNvbGlkICM2NjY7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3MgYSwgLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJbWFyZ2luLXRvcDogNnB4Ow0KCXBhZGRpbmc6IDAgNnB4Ow0KCWJvcmRlci1sZWZ0OiAycHggc29saWQgIzY2NjsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJZm9udDogYm9sZCAxMXB4IHZlcmRhbmE7IGNvbG9yOiAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGVtIHsNCgljb2xvcjogIzAwMDsNCn0NCg0KLmdhbGxlcnljbGVhciB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCg0KLyogRkFOQ1lCT1ggIC0gIHZlcnNpb24gMS4yLjYgKi8NCg0KZGl2I2ZhbmN5X292ZXJsYXkgew0KCXBvc2l0aW9uOiBmaXhlZDsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJZGlzcGxheTogbm9uZTsNCgl6LWluZGV4OiAzMDsNCn0NCg0KZGl2I2ZhbmN5X2xvYWRpbmcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgloZWlnaHQ6IDQwcHg7DQoJd2lkdGg6IDQwcHg7DQoJY3Vyc29yOiBwb2ludGVyOw0KCWRpc3BsYXk6IG5vbmU7DQoJb3ZlcmZsb3c6IGhpZGRlbjsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCgl6LWluZGV4OiAxMDA7DQp9DQoNCmRpdiNmYW5jeV9sb2FkaW5nIGRpdiB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiA0MHB4Ow0KCWhlaWdodDogNDgwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9wcm9ncmVzcy5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdiNmYW5jeV9vdXRlciB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXotaW5kZXg6IDkwOw0KCXBhZGRpbmc6IDIwcHggMjBweCA0MHB4IDIwcHg7DQoJbWFyZ2luOiAwOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCmRpdiNmYW5jeV9pbm5lciB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwMCU7DQoJYmFja2dyb3VuZDogIzAwMDsNCn0NCg0KZGl2I2ZhbmN5X2NvbnRlbnQgew0KCW1hcmdpbjogMDsNCgl6LWluZGV4OiAxMDA7DQoJcG9zaXRpb246IGFic29sdXRlOw0KfQ0KDQpkaXYjZmFuY3lfZGl2IHsNCgliYWNrZ3JvdW5kOiAjMDAwOw0KCWNvbG9yOiAjRkZGOw0KCWhlaWdodDogMTAwJTsNCgl3aWR0aDogMTAwJTsNCgl6LWluZGV4OiAxMDA7DQp9DQoNCmltZyNmYW5jeV9pbWcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCglib3JkZXI6MDsNCglwYWRkaW5nOiAwOw0KCW1hcmdpbjogMDsNCgl6LWluZGV4OiAxMDA7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAxMDAlOw0KfQ0KDQpkaXYjZmFuY3lfY2xvc2Ugew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IC0xMnB4Ow0KCXJpZ2h0OiAtMTVweDsNCgloZWlnaHQ6IDMwcHg7DQoJd2lkdGg6IDMwcHg7DQoJYmFja2dyb3VuZDogdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9jbG9zZWJveC5wbmcnKSB0b3AgbGVmdCBuby1yZXBlYXQ7DQoJY3Vyc29yOiBwb2ludGVyOw0KCXotaW5kZXg6IDE4MTsNCglkaXNwbGF5OiBub25lOw0KfQ0KDQojZmFuY3lfZnJhbWUgew0KCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJZGlzcGxheTogbm9uZTsNCn0NCg0KI2ZhbmN5X2FqYXggew0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCglvdmVyZmxvdzogYXV0bzsNCn0NCg0KYSNmYW5jeV9sZWZ0LCBhI2ZhbmN5X3JpZ2h0IHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJYm90dG9tOiAwcHg7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAzNSU7DQoJY3Vyc29yOiBwb2ludGVyOw0KCXotaW5kZXg6IDExMTsNCglkaXNwbGF5OiBub25lOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LEFBQUEiKTsNCglvdXRsaW5lOiBub25lOw0KCW92ZXJmbG93OiBoaWRkZW47DQp9DQoNCmEjZmFuY3lfbGVmdCB7DQoJbGVmdDogMHB4Ow0KfQ0KDQphI2ZhbmN5X3JpZ2h0IHsNCglyaWdodDogMHB4Ow0KfQ0KDQpzcGFuLmZhbmN5X2ljbyB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogNTAlOw0KCW1hcmdpbi10b3A6IC0xNXB4Ow0KCXdpZHRoOiAzMHB4Ow0KCWhlaWdodDogMzBweDsNCgl6LWluZGV4OiAxMTI7DQoJY3Vyc29yOiBwb2ludGVyOw0KCWRpc3BsYXk6IGJsb2NrOw0KfQ0KDQpzcGFuI2ZhbmN5X2xlZnRfaWNvIHsNCglsZWZ0OiAtOTk5OXB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfbGVmdC5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCnNwYW4jZmFuY3lfcmlnaHRfaWNvIHsNCglyaWdodDogLTk5OTlweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3JpZ2h0LnBuZycpIG5vLXJlcGVhdDsNCn0NCg0KYSNmYW5jeV9sZWZ0OmhvdmVyLCBhI2ZhbmN5X3JpZ2h0OmhvdmVyIHsNCgl2aXNpYmlsaXR5OiB2aXNpYmxlOw0KCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Ow0KfQ0KDQphI2ZhbmN5X2xlZnQ6aG92ZXIgc3BhbiB7DQoJbGVmdDogMjBweDsNCn0NCg0KYSNmYW5jeV9yaWdodDpob3ZlciBzcGFuIHsNCglyaWdodDogMjBweDsNCn0NCg0KI2ZhbmN5X2JpZ0lmcmFtZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KZGl2I2ZhbmN5X2JnIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOiAwOyBsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgl6LWluZGV4OiA3MDsNCglib3JkZXI6IDA7DQoJcGFkZGluZzogMDsNCgltYXJnaW46IDA7DQp9DQoNCmRpdi5mYW5jeV9iZyB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWRpc3BsYXk6IGJsb2NrOw0KCXotaW5kZXg6IDcwOw0KCWJvcmRlcjogMDsNCglwYWRkaW5nOiAwOw0KCW1hcmdpbjogMDsNCn0NCg0KZGl2I2ZhbmN5X2JnX24gew0KCXRvcDogLTIwcHg7DQoJbGVmdDogMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbi5wbmcnKSByZXBlYXQteDsNCn0NCg0KZGl2I2ZhbmN5X2JnX25lIHsNCgl0b3A6IC0yMHB4Ow0KCXJpZ2h0OiAtMjBweDsNCgl3aWR0aDogMjBweDsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbmUucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfYmdfZSB7DQoJcmlnaHQ6IC0yMHB4Ow0KCWhlaWdodDogMTAwJTsNCgl3aWR0aDogMjBweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19lLnBuZycpIHJlcGVhdC15Ow0KfQ0KDQpkaXYjZmFuY3lfYmdfc2Ugew0KCWJvdHRvbTogLTIwcHg7DQoJcmlnaHQ6IC0yMHB4Ow0KCXdpZHRoOiAyMHB4Ow0KCWhlaWdodDogMjBweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zZS5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdiNmYW5jeV9iZ19zIHsNCglib3R0b206IC0yMHB4Ow0KCWxlZnQ6IDA7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAyMHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfc2hhZG93X3MucG5nJykgcmVwZWF0LXg7DQp9DQoNCmRpdiNmYW5jeV9iZ19zdyB7DQoJYm90dG9tOiAtMjBweDsNCglsZWZ0OiAtMjBweDsNCgl3aWR0aDogMjBweDsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfc3cucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfYmdfdyB7DQoJbGVmdDogLTIwcHg7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAyMHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfc2hhZG93X3cucG5nJykgcmVwZWF0LXk7DQp9DQoNCmRpdiNmYW5jeV9iZ19udyB7DQoJdG9wOiAtMjBweDsNCglsZWZ0OiAtMjBweDsNCgl3aWR0aDogMjBweDsNCgloZWlnaHQ6IDIwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbncucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfdGl0bGUgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl6LWluZGV4OiAxMDA7DQoJZGlzcGxheTogbm9uZTsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIGRpdiB7DQoJY29sb3I6ICNGRkY7DQoJZm9udDogYm9sZCAxMnB4IEFyaWFsOw0KCXBhZGRpbmctYm90dG9tOiAzcHg7DQoJd2hpdGUtc3BhY2U6IG5vd3JhcDsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIHRhYmxlIHsNCgltYXJnaW46IDAgYXV0bzsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIHRhYmxlIHRkIHsNCglwYWRkaW5nOiAwOw0KCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX2xlZnQgew0KCWhlaWdodDogMzJweDsNCgl3aWR0aDogMTVweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX2xlZnQucG5nJykgcmVwZWF0LXg7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX21haW4gew0KCWhlaWdodDogMzJweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX21haW4ucG5nJykgcmVwZWF0LXg7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX3JpZ2h0IHsNCgloZWlnaHQ6IDMycHg7DQoJd2lkdGg6IDE1cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV90aXRsZV9yaWdodC5wbmcnKSByZXBlYXQteDsNCn0NCg0KeyotLS0tLS0tLS0tDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2pxdWVyeS9qcXVlcnkuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9mYW5jeWJveC9qcXVlcnkuZmFuY3lib3guanMiPjwvc2NyaXB0Pg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCgkkKCJhLmdyb3VwIikuZmFuY3lib3goew0KCQknem9vbU9wYWNpdHknOgl0cnVlLA0KCQknem9vbVNwZWVkSW4nOgkzMDAsDQoJCSd6b29tU3BlZWRPdXQnOgkzMDAsDQoJCSdvdmVybGF5U2hvdyc6CXRydWUsDQoJCSdvdmVybGF5T3BhY2l0eSc6CTAuNQ0KCX0pOw0KfSk7DQo8L3NjcmlwdD4NCip9]]></data>
	</file>
	<file>
	  <filename>/templates/template_lightbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iIHJlbD0ibGlnaHRib3hbZ2FsbGVyeV0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT4NCgl7L2lmfQ0KCTwvZGl2Pg0Key9mb3JlYWNofQ0KPGRpdiBjbGFzcz0iZ2FsbGVyeWNsZWFyIj4mbmJzcDs8L2Rpdj4NCjwvZGl2Pg0KDQoNCnsqLS0tLS0tLS0tLQ0KLmdhbGxlcnkgLmltZyB7DQoJaGVpZ2h0OiAxMjBweDsNCgkvKndpZHRoOiAxMjBweDsqLw0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMTBweDsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgYSB7DQoJZGlzcGxheTogaW5saW5lLWJsb2NrOw0KCWJvcmRlcjogMnB4IHNvbGlkICNkZGQ7DQoJcGFkZGluZzogMXB4Ow0KfQ0KDQouZ2FsbGVyeSAuaW1nIGE6aG92ZXIgew0KCWJvcmRlci1jb2xvcjogIzk5OTsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VuYXZpZ2F0aW9uIHsNCgloZWlnaHQ6IDUwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wcmV2cGFnZSBhLCAuZ2FsbGVyeSAucHJldnBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgltYXJnaW46IDA7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9wcmV2aW91cy5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5uZXh0cGFnZSBhLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgltYXJnaW46IDAgNnB4IDAgMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL25leHQucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFyZW50bGluayBhIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy91cHBhZ2UucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gYTpob3ZlciB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNDBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGVtLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3Mgew0KCWZsb2F0OiByaWdodDsNCglib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGEsIC5nYWxsZXJ5IC5wYWdlbGlua3MgZW0gew0KCW1hcmdpbi10b3A6IDZweDsNCglwYWRkaW5nOiAwIDZweDsNCglib3JkZXItbGVmdDogMnB4IHNvbGlkICM2NjY7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCWZvbnQ6IGJvbGQgMTFweCB2ZXJkYW5hOyBjb2xvcjogIzY2NjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJY29sb3I6ICMwMDA7DQp9DQoNCi5nYWxsZXJ5Y2xlYXIgew0KCWNsZWFyOiBib3RoOw0KfQ0KDQoNCi8qIExJR0hUQk9YICovDQoNCiNsaWdodGJveHsJcG9zaXRpb246IGFic29sdXRlOwlsZWZ0OiAwOyB3aWR0aDogMTAwJTsgei1pbmRleDogMTAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAwO30NCiNsaWdodGJveCBpbWd7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87fQ0KI2xpZ2h0Ym94IGEgaW1neyBib3JkZXI6IG5vbmU7IH0NCg0KI291dGVySW1hZ2VDb250YWluZXJ7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4OyBtYXJnaW46IDAgYXV0bzsgfQ0KI2ltYWdlQ29udGFpbmVyeyBwYWRkaW5nOiAxMHB4OyB9DQoNCiNsb2FkaW5neyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDAlOyBsZWZ0OiAwJTsgaGVpZ2h0OiAyNSU7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAwOyB9DQojaG92ZXJOYXZ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDsgfQ0KI2ltYWdlQ29udGFpbmVyPiNob3Zlck5hdnsgbGVmdDogMDt9DQojaG92ZXJOYXYgYXsgb3V0bGluZTogbm9uZTt9DQoNCiNwcmV2TGluaywgI25leHRMaW5reyB3aWR0aDogNDklOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsQUFBQSk7IC8qIFRyaWNrIElFIGludG8gc2hvd2luZyBob3ZlciAqLyBkaXNwbGF5OiBibG9jazsgfQ0KI3ByZXZMaW5rIHsgbGVmdDogMDsgZmxvYXQ6IGxlZnQ7fQ0KI25leHRMaW5rIHsgcmlnaHQ6IDA7IGZsb2F0OiByaWdodDt9DQojcHJldkxpbms6aG92ZXIsICNwcmV2TGluazp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2xpZ2h0Ym94L2ltYWdlcy9wcmV2bGFiZWwuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCiNuZXh0TGluazpob3ZlciwgI25leHRMaW5rOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbGlnaHRib3gvaW1hZ2VzL25leHRsYWJlbC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCg0KI2ltYWdlRGF0YUNvbnRhaW5lcnsgZm9udDogMTBweCBWZXJkYW5hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IG1hcmdpbjogMCBhdXRvOyBsaW5lLWhlaWdodDogMS40ZW07IG92ZXJmbG93OiBhdXRvOyB3aWR0aDogMTAwJQk7IH0NCg0KI2ltYWdlRGF0YXsJcGFkZGluZzowIDEwcHg7IGNvbG9yOiAjNjY2OyB9DQojaW1hZ2VEYXRhICNpbWFnZURldGFpbHN7IHdpZHRoOiA3MCU7IGZsb2F0OiBsZWZ0OyB0ZXh0LWFsaWduOiBsZWZ0OyB9CQ0KI2ltYWdlRGF0YSAjY2FwdGlvbnsgZm9udC13ZWlnaHQ6IGJvbGQ7CX0NCiNpbWFnZURhdGEgI251bWJlckRpc3BsYXl7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogbGVmdDsgcGFkZGluZy1ib3R0b206IDEuMGVtOwl9CQkJDQojaW1hZ2VEYXRhICNib3R0b21OYXZDbG9zZXsgd2lkdGg6IDY2cHg7IGZsb2F0OiByaWdodDsgIHBhZGRpbmctYm90dG9tOiAwLjdlbTsgb3V0bGluZTogbm9uZTt9CSAJDQoNCiNvdmVybGF5eyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgei1pbmRleDogOTA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyB9DQoNCnsqLS0tLS0tLS0tLQ0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9saWdodGJveC9qcy9wcm90b3R5cGUuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9saWdodGJveC9qcy9zY3JpcHRhY3Vsb3VzLmpzP2xvYWQ9ZWZmZWN0cyxidWlsZGVyIj48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvbGlnaHRib3gvanMvbGlnaHRib3guanMiPjwvc2NyaXB0Pg0KKn0=]]></data>
	</file>
	<file>
	  <filename>/templates/template_lytebox_slideshow.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSAgaHR0cDovL3d3dy5kb2xlbS5jb20vbHl0ZWJveC8gIC0tPg0KDQo8ZGl2IGNsYXNzPSJnYWxsZXJ5Ij4NCntpZiAhZW1wdHkoJG1vZHVsZV9tZXNzYWdlKX08aDQ+eyRtb2R1bGVfbWVzc2FnZXxlc2NhcGV9PC9oND57L2lmfQ0Ke2lmICFlbXB0eSgkZ2FsbGVyeXRpdGxlKX08aDM+eyRnYWxsZXJ5dGl0bGV9PC9oMz57L2lmfQ0Ke2lmICFlbXB0eSgkZ2FsbGVyeWNvbW1lbnQpfTxkaXYgY2xhc3M9ImdhbGxlcnljb21tZW50Ij57JGdhbGxlcnljb21tZW50fTwvZGl2PnsvaWZ9DQo8cD57JGltYWdlY291bnR9PC9wPg0KPGRpdiBjbGFzcz0icGFnZW5hdmlnYXRpb24iPg0Ke2lmICRwYWdlcyA+IDF9DQo8ZGl2IGNsYXNzPSJwcmV2cGFnZSI+eyRwcmV2cGFnZX08L2Rpdj4NCjxkaXYgY2xhc3M9Im5leHRwYWdlIj57JG5leHRwYWdlfTwvZGl2Pg0Key9pZn0NCntpZiAhJGhpZGVwYXJlbnRsaW5rICYmICFlbXB0eSgkcGFyZW50bGluayl9PGRpdiBjbGFzcz0icGFyZW50bGluayI+eyRwYXJlbnRsaW5rfTwvZGl2PnsvaWZ9DQp7aWYgJHBhZ2VzID4gMX08ZGl2IGNsYXNzPSJwYWdlbGlua3MiPnskcGFnZWxpbmtzfTwvZGl2PnsvaWZ9DQo8L2Rpdj4NCg0Ke2ZvcmVhY2ggZnJvbT0kaW1hZ2VzIGl0ZW09aW1hZ2V9DQoJPGRpdiBjbGFzcz0iaW1nIj4NCgl7aWYgJGltYWdlLT5pc2Rpcn0NCgkJPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT48YnIgLz4NCgkJeyRpbWFnZS0+dGl0bGV9DQoJe2Vsc2V9DQogICA8YSBocmVmPSJ7JGltYWdlLT5maWxlfSIgdGl0bGU9InskaW1hZ2UtPnRpdGxlfSIgcmVsPSJseXRlc2hvd1tnYWxsZXJ5XSI+PGltZyBzcmM9InskaW1hZ2UtPnRodW1ifSIgYWx0PSJ7JGltYWdlLT50aXRsZX0iIC8+PC9hPg0KCXsvaWZ9DQoJPC9kaXY+DQp7L2ZvcmVhY2h9DQo8ZGl2IGNsYXNzPSJnYWxsZXJ5Y2xlYXIiPiZuYnNwOzwvZGl2Pg0KPC9kaXY+DQoNCg0KeyotLS0tLS0tLS0tDQouZ2FsbGVyeSAuaW1nIHsNCgloZWlnaHQ6IDEyMHB4Ow0KCS8qd2lkdGg6IDEyMHB4OyovDQoJZmxvYXQ6IGxlZnQ7DQoJbWFyZ2luOiAxMHB4Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmdhbGxlcnkgLmltZyBhIHsNCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQoJYm9yZGVyOiAycHggc29saWQgI2RkZDsNCglwYWRkaW5nOiAxcHg7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgYTpob3ZlciB7DQoJYm9yZGVyLWNvbG9yOiAjOTk5Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gew0KCWhlaWdodDogNTBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGEsIC5nYWxsZXJ5IC5wcmV2cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7DQoJd2lkdGg6IDUwcHg7DQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3ByZXZpb3VzLnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLm5leHRwYWdlIGEsIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7DQoJd2lkdGg6IDUwcHg7DQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMCA2cHggMCAwOw0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvbmV4dC5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYXJlbnRsaW5rIGEgew0KCWRpc3BsYXk6IGJsb2NrOw0KCXdpZHRoOiA1MHB4Ow0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3VwcGFnZS5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbmF2aWdhdGlvbiBhOmhvdmVyIHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucHJldnBhZ2UgZW0sIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyB7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWJvcmRlci1yaWdodDogMnB4IHNvbGlkICM2NjY7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3MgYSwgLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJbWFyZ2luLXRvcDogNnB4Ow0KCXBhZGRpbmc6IDAgNnB4Ow0KCWJvcmRlci1sZWZ0OiAycHggc29saWQgIzY2NjsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJZm9udDogYm9sZCAxMXB4IHZlcmRhbmE7IGNvbG9yOiAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGVtIHsNCgljb2xvcjogIzAwMDsNCn0NCg0KLmdhbGxlcnljbGVhciB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCg0KLyogTFlURUJPWCAqLw0KDQojbGJPdmVybGF5IHsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDk5OTk4OyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MDBweDsgfQ0KCSNsYk92ZXJsYXkuZ3JleSB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH0NCgkjbGJPdmVybGF5LnJlZCB7IGJhY2tncm91bmQtY29sb3I6ICMzMzAwMDA7IH0NCgkjbGJPdmVybGF5LmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMzMwMDsgfQ0KCSNsYk92ZXJsYXkuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6ICMwMTFENTA7IH0NCgkjbGJPdmVybGF5LmdvbGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NjAwOyB9DQoNCiNsYk1haW4geyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiA5OTk5OTsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMDsgfQ0KI2xiTWFpbiBhIGltZyB7IGJvcmRlcjogbm9uZTsgfQ0KDQojbGJPdXRlckNvbnRhaW5lciB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBtYXJnaW46IDAgYXV0bzsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLmdyZXkgeyBib3JkZXI6IDNweCBzb2xpZCAjODg4ODg4OyB9DQoJI2xiT3V0ZXJDb250YWluZXIucmVkIHsgYm9yZGVyOiAzcHggc29saWQgI0REMDAwMDsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLmdyZWVuIHsgYm9yZGVyOiAzcHggc29saWQgIzAwQjAwMDsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLmJsdWUgeyBib3JkZXI6IDNweCBzb2xpZCAjNUY4OUQ4OyB9DQoJI2xiT3V0ZXJDb250YWluZXIuZ29sZCB7IGJvcmRlcjogM3B4IHNvbGlkICNCMEIwMDA7IH0NCg0KI2xiRGV0YWlsc0NvbnRhaW5lciB7CWZvbnQ6IDEwcHggVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB3aWR0aDogMTAwJTsgbGluZS1oZWlnaHQ6IDEuNGVtOwlvdmVyZmxvdzogYXV0bzsgbWFyZ2luOiAwIGF1dG87IH0NCgkjbGJEZXRhaWxzQ29udGFpbmVyLmdyZXkgeyBib3JkZXI6IDNweCBzb2xpZCAjODg4ODg4OyBib3JkZXItdG9wOiBub25lOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5yZWQgeyBib3JkZXI6IDNweCBzb2xpZCAjREQwMDAwOyBib3JkZXItdG9wOiBub25lOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5ncmVlbiB7IGJvcmRlcjogM3B4IHNvbGlkICMwMEIwMDA7IGJvcmRlci10b3A6IG5vbmU7IH0NCgkjbGJEZXRhaWxzQ29udGFpbmVyLmJsdWUgeyBib3JkZXI6IDNweCBzb2xpZCAjNUY4OUQ4OyBib3JkZXItdG9wOiBub25lOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5nb2xkIHsgYm9yZGVyOiAzcHggc29saWQgI0IwQjAwMDsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KDQojbGJJbWFnZUNvbnRhaW5lciwgI2xiSWZyYW1lQ29udGFpbmVyIHsgcGFkZGluZzogMTBweDsgfQ0KI2xiTG9hZGluZyB7DQoJcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDQ1JTsgbGVmdDogMCU7IGhlaWdodDogMzJweDsgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9sb2FkaW5nLmdpZikgY2VudGVyIG5vLXJlcGVhdDsNCn0NCg0KI2xiSG92ZXJOYXYgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgei1pbmRleDogMTA7IH0NCiNsYkltYWdlQ29udGFpbmVyPiNsYkhvdmVyTmF2IHsgbGVmdDogMDsgfQ0KI2xiSG92ZXJOYXYgYSB7IG91dGxpbmU6IG5vbmU7IH0NCg0KI2xiUHJldiB7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL2x5dGVib3gvaW1hZ2VzL2JsYW5rLmdpZikgbm8tcmVwZWF0OyBkaXNwbGF5OiBibG9jazsgbGVmdDogMDsgZmxvYXQ6IGxlZnQ7IH0NCgkjbGJQcmV2LmdyZXk6aG92ZXIsICNsYlByZXYuZ3JleTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3ByZXZfZ3JleS5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYlByZXYucmVkOmhvdmVyLCAjbGJQcmV2LnJlZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3ByZXZfcmVkLmdpZikgbGVmdCAxNSUgbm8tcmVwZWF0OyB9DQoJI2xiUHJldi5ncmVlbjpob3ZlciwgI2xiUHJldi5ncmVlbjp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3ByZXZfZ3JlZW4uZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmJsdWU6aG92ZXIsICNsYlByZXYuYmx1ZTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3ByZXZfYmx1ZS5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYlByZXYuZ29sZDpob3ZlciwgI2xiUHJldi5nb2xkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcHJldl9nb2xkLmdpZikgbGVmdCAxNSUgbm8tcmVwZWF0OyB9DQoNCiNsYk5leHQgeyB3aWR0aDogNDklOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9seXRlYm94L2ltYWdlcy9ibGFuay5naWYpIG5vLXJlcGVhdDsgZGlzcGxheTogYmxvY2s7IHJpZ2h0OiAwOyBmbG9hdDogcmlnaHQ7IH0NCgkjbGJOZXh0LmdyZXk6aG92ZXIsICNsYk5leHQuZ3JleTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL25leHRfZ3JleS5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJOZXh0LnJlZDpob3ZlciwgI2xiTmV4dC5yZWQ6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9uZXh0X3JlZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJOZXh0LmdyZWVuOmhvdmVyLCAjbGJOZXh0LmdyZWVuOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvbmV4dF9ncmVlbi5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJOZXh0LmJsdWU6aG92ZXIsICNsYk5leHQuYmx1ZTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL25leHRfYmx1ZS5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJOZXh0LmdvbGQ6aG92ZXIsICNsYk5leHQuZ29sZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL25leHRfZ29sZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCg0KI2xiUHJldjIsICNsYk5leHQyIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDsgfQ0KCSNsYlByZXYyLmdyZXksICNsYk5leHQyLmdyZXksICNsYlNwYWNlci5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0NCgkjbGJQcmV2Mi5yZWQsICNsYk5leHQyLnJlZCwgI2xiU3BhY2VyLnJlZCB7IGNvbG9yOiAjNjIwMDAwOyB9DQoJI2xiUHJldjIuZ3JlZW4sICNsYk5leHQyLmdyZWVuLCAjbGJTcGFjZXIuZ3JlZW4geyBjb2xvcjogIzAwMzMwMDsgfQ0KCSNsYlByZXYyLmJsdWUsICNsYk5leHQyLmJsdWUsICNsYlNwYWNlci5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0NCgkjbGJQcmV2Mi5nb2xkLCAjbGJOZXh0Mi5nb2xkLCAjbGJTcGFjZXIuZ29sZCB7IGNvbG9yOiAjNjY2NjAwOyB9DQoNCiNsYlByZXYyX09mZiwgI2xiTmV4dDJfT2ZmIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0NCgkjbGJQcmV2Ml9PZmYuZ3JleSwgI2xiTmV4dDJfT2ZmLmdyZXkgeyBjb2xvcjogI0NDQ0NDQzsgfQ0KCSNsYlByZXYyX09mZi5yZWQsICNsYk5leHQyX09mZi5yZWQgeyBjb2xvcjogI0ZGQ0NDQzsgfQ0KCSNsYlByZXYyX09mZi5ncmVlbiwgI2xiTmV4dDJfT2ZmLmdyZWVuIHsgY29sb3I6ICM4MkZGODI7IH0NCgkjbGJQcmV2Ml9PZmYuYmx1ZSwgI2xiTmV4dDJfT2ZmLmJsdWUgeyBjb2xvcjogI0I3Q0FFRTsgfQ0KCSNsYlByZXYyX09mZi5nb2xkLCAjbGJOZXh0Ml9PZmYuZ29sZCB7IGNvbG9yOiAjRTFFMTAwOyB9DQoNCiNsYkRldGFpbHNEYXRhIHsgcGFkZGluZzogMCAxMHB4OyB9DQoJI2xiRGV0YWlsc0RhdGEuZ3JleSB7IGNvbG9yOiAjMzMzMzMzOyB9DQoJI2xiRGV0YWlsc0RhdGEucmVkIHsgY29sb3I6ICM2MjAwMDA7IH0NCgkjbGJEZXRhaWxzRGF0YS5ncmVlbiB7IGNvbG9yOiAjMDAzMzAwOyB9DQoJI2xiRGV0YWlsc0RhdGEuYmx1ZSB7IGNvbG9yOiAjMDEzNzlFOyB9DQoJI2xiRGV0YWlsc0RhdGEuZ29sZCB7IGNvbG9yOiAjNjY2NjAwOyB9DQoNCiNsYkRldGFpbHMgeyB3aWR0aDogNjAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogbGVmdDsgfQ0KI2xiQ2FwdGlvbiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXdlaWdodDogYm9sZDsgfQ0KI2xiTnVtYmVyRGlzcGxheSB7IGZsb2F0OiBsZWZ0OyBkaXNwbGF5OiBibG9jazsgcGFkZGluZy1ib3R0b206IDEuMGVtOyB9DQojbGJOYXZEaXNwbGF5IHsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLWJvdHRvbTogMS4wZW07IH0NCg0KI2xiQ2xvc2UgeyB3aWR0aDogNjRweDsgaGVpZ2h0OiAyOHB4OyBmbG9hdDogcmlnaHQ7IG1hcmdpbi1ib3R0b206IDFweDsgfQ0KCSNsYkNsb3NlLmdyZXkgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvY2xvc2VfZ3JleS5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLnJlZCB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9jbG9zZV9yZWQucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJDbG9zZS5ncmVlbiB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9jbG9zZV9ncmVlbi5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLmJsdWUgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvY2xvc2VfYmx1ZS5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvY2xvc2VfZ29sZC5wbmcpIG5vLXJlcGVhdDsgfQ0KDQojbGJQbGF5IHsgd2lkdGg6IDY0cHg7IGhlaWdodDogMjhweDsgZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiAxcHg7IH0NCgkjbGJQbGF5LmdyZXkgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGxheV9ncmV5LnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGxheS5yZWQgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGxheV9yZWQucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BsYXlfZ3JlZW4ucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmJsdWUgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGxheV9ibHVlLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGxheS5nb2xkIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BsYXlfZ29sZC5wbmcpIG5vLXJlcGVhdDsgfQ0KDQojbGJQYXVzZSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9DQoJI2xiUGF1c2UuZ3JleSB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wYXVzZV9ncmV5LnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGF1c2UucmVkIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BhdXNlX3JlZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBhdXNlLmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BhdXNlX2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGF1c2UuYmx1ZSB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wYXVzZV9ibHVlLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGF1c2UuZ29sZCB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wYXVzZV9nb2xkLnBuZykgbm8tcmVwZWF0OyB9DQoNCnsqLS0tLS0tLS0tLQ0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9seXRlYm94L2x5dGVib3guanMiPjwvc2NyaXB0Pg0KKn0=]]></data>
	</file>
	<file>
	  <filename>/templates/template_slimbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iIHJlbD0ibGlnaHRib3hbZ2FsbGVyeV0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT4NCgl7L2lmfQ0KCTwvZGl2Pg0Key9mb3JlYWNofQ0KPGRpdiBjbGFzcz0iZ2FsbGVyeWNsZWFyIj4mbmJzcDs8L2Rpdj4NCjwvZGl2Pg0KDQoNCnsqLS0tLS0tLS0tLQ0KLmdhbGxlcnkgLmltZyB7DQoJaGVpZ2h0OiAxMjBweDsNCgkvKndpZHRoOiAxMjBweDsgICBBZGp1c3QgYXMgeW91IHNlZSBmaXQgKi8NCglmbG9hdDogbGVmdDsNCgltYXJnaW46IDEwcHg7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQouZ2FsbGVyeSAuaW1nIGEgew0KCWRpc3BsYXk6IGlubGluZS1ibG9jazsNCglib3JkZXI6IDJweCBzb2xpZCAjZGRkOw0KCXBhZGRpbmc6IDFweDsNCn0NCg0KLmdhbGxlcnkgLmltZyBhOmhvdmVyIHsNCglib3JkZXItY29sb3I6ICM5OTk7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbmF2aWdhdGlvbiB7DQoJaGVpZ2h0OiA1MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucHJldnBhZ2UgYSwgLmdhbGxlcnkgLnByZXZwYWdlIGVtIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJbWFyZ2luOiAwOw0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvcHJldmlvdXMucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAubmV4dHBhZ2UgYSwgLmdhbGxlcnkgLm5leHRwYWdlIGVtIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJbWFyZ2luOiAwIDZweCAwIDA7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9uZXh0LnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLnBhcmVudGxpbmsgYSB7DQoJZGlzcGxheTogYmxvY2s7IA0KCXdpZHRoOiA1MHB4OyANCgloZWlnaHQ6IDM5cHg7DQoJZmxvYXQ6IGxlZnQ7IA0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvdXBwYWdlLnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VuYXZpZ2F0aW9uIGE6aG92ZXIgew0KCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTQwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wcmV2cGFnZSBlbSwgLmdhbGxlcnkgLm5leHRwYWdlIGVtIHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC04MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIHsNCglmbG9hdDogcmlnaHQ7DQoJYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzY2NjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyBhLCAuZ2FsbGVyeSAucGFnZWxpbmtzIGVtIHsNCgltYXJnaW4tdG9wOiA2cHg7DQoJcGFkZGluZzogMCA2cHg7DQoJYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjNjY2Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCglmb250OiBib2xkIDExcHggdmVyZGFuYTsgY29sb3I6ICM2NjY7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3MgZW0gew0KCWNvbG9yOiAjMDAwOw0KfQ0KDQouZ2FsbGVyeWNsZWFyIHsNCgljbGVhcjogYm90aDsNCn0NCg0KDQovKiBTTElNQk9YICovDQoNCiNsYk92ZXJsYXkgew0KCXBvc2l0aW9uOiBmaXhlZDsNCgl6LWluZGV4OiA5OTk5Ow0KCWxlZnQ6IDA7DQoJdG9wOiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOw0KCWN1cnNvcjogcG9pbnRlcjsNCn0NCg0KI2xiQ2VudGVyLCAjbGJCb3R0b21Db250YWluZXIgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl6LWluZGV4OiA5OTk5Ow0KCW92ZXJmbG93OiBoaWRkZW47DQoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCn0NCg0KLmxiTG9hZGluZyB7DQoJYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vc2xpbWJveC9jc3MvbG9hZGluZy5naWYpIG5vLXJlcGVhdCBjZW50ZXI7DQp9DQoNCiNsYkltYWdlIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJbGVmdDogMDsNCgl0b3A6IDA7DQoJYm9yZGVyOiAxMHB4IHNvbGlkICNmZmY7DQoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCn0NCg0KI2xiUHJldkxpbmssICNsYk5leHRMaW5rIHsNCglkaXNwbGF5OiBibG9jazsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOiAwOw0KCXdpZHRoOiA1MCU7DQoJb3V0bGluZTogbm9uZTsNCn0NCg0KI2xiUHJldkxpbmsgew0KCWxlZnQ6IDA7DQp9DQoNCiNsYlByZXZMaW5rOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vc2xpbWJveC9jc3MvcHJldmxhYmVsLmdpZikgbm8tcmVwZWF0IDAgMTUlOw0KfQ0KDQojbGJOZXh0TGluayB7DQoJcmlnaHQ6IDA7DQp9DQoNCiNsYk5leHRMaW5rOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vc2xpbWJveC9jc3MvbmV4dGxhYmVsLmdpZikgbm8tcmVwZWF0IDEwMCUgMTUlOw0KfQ0KDQojbGJCb3R0b20gew0KCWZvbnQtZmFtaWx5OiBWZXJkYW5hLCBBcmlhbCwgR2VuZXZhLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOiAxMHB4Ow0KCWNvbG9yOiAjNjY2Ow0KCWxpbmUtaGVpZ2h0OiAxLjRlbTsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCWJvcmRlcjogMTBweCBzb2xpZCAjZmZmOw0KCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7DQp9DQoNCiNsYkNsb3NlTGluayB7DQoJZGlzcGxheTogYmxvY2s7DQoJZmxvYXQ6IHJpZ2h0Ow0KCXdpZHRoOiA2NnB4Ow0KCWhlaWdodDogMjJweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vc2xpbWJveC9jc3MvY2xvc2VsYWJlbC5naWYpIG5vLXJlcGVhdCBjZW50ZXI7DQoJbWFyZ2luOiA1cHggMDsNCglvdXRsaW5lOiBub25lOw0KfQ0KDQojbGJDYXB0aW9uLCAjbGJOdW1iZXIgew0KCW1hcmdpbi1yaWdodDogNzFweDsNCn0NCg0KI2xiQ2FwdGlvbiB7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCnsqLS0tLS0tLS0tLQ0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9qcXVlcnkvanF1ZXJ5LmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvc2xpbWJveC9qcy9zbGltYm94Mi5qcyI+PC9zY3JpcHQ+DQoqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/template_thickbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iIGNsYXNzPSJ0aGlja2JveCIgcmVsPSJnYWxsZXJ5Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+DQoJey9pZn0NCgk8L2Rpdj4NCnsvZm9yZWFjaH0NCjxkaXYgY2xhc3M9ImdhbGxlcnljbGVhciI+Jm5ic3A7PC9kaXY+DQo8L2Rpdj4NCg0KDQp7Ki0tLS0tLS0tLS0NCi5nYWxsZXJ5IC5pbWcgew0KCWhlaWdodDogMTIwcHg7DQoJLyp3aWR0aDogMTIwcHg7ICAgQWRqdXN0IGFzIHlvdSBzZWUgZml0ICovDQoJZmxvYXQ6IGxlZnQ7DQoJbWFyZ2luOiAxMHB4Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmdhbGxlcnkgLmltZyBhIHsNCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQoJYm9yZGVyOiAycHggc29saWQgI2RkZDsNCglwYWRkaW5nOiAxcHg7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgYTpob3ZlciB7DQoJYm9yZGVyLWNvbG9yOiAjOTk5Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gew0KCWhlaWdodDogNTBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGEsIC5nYWxsZXJ5IC5wcmV2cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7IA0KCXdpZHRoOiA1MHB4OyANCgloZWlnaHQ6IDM5cHg7DQoJZmxvYXQ6IGxlZnQ7IA0KCW1hcmdpbjogMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3ByZXZpb3VzLnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLm5leHRwYWdlIGEsIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7IA0KCXdpZHRoOiA1MHB4OyANCgloZWlnaHQ6IDM5cHg7DQoJZmxvYXQ6IGxlZnQ7IA0KCW1hcmdpbjogMCA2cHggMCAwOw0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvbmV4dC5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYXJlbnRsaW5rIGEgew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3VwcGFnZS5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbmF2aWdhdGlvbiBhOmhvdmVyIHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucHJldnBhZ2UgZW0sIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyB7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWJvcmRlci1yaWdodDogMnB4IHNvbGlkICM2NjY7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3MgYSwgLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJbWFyZ2luLXRvcDogNnB4Ow0KCXBhZGRpbmc6IDAgNnB4Ow0KCWJvcmRlci1sZWZ0OiAycHggc29saWQgIzY2NjsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJZm9udDogYm9sZCAxMXB4IHZlcmRhbmE7IGNvbG9yOiAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGVtIHsNCgljb2xvcjogIzAwMDsNCn0NCg0KLmdhbGxlcnljbGVhciB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCg0KLyogVEhJQ0tCT1ggKi8NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAtLS0tLS0tLS0tPj4+IGdsb2JhbCBzZXR0aW5ncyBuZWVkZWQgZm9yIHRoaWNrYm94IDw8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKntwYWRkaW5nOiAwOyBtYXJnaW46IDA7fQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIC0tLS0tLS0tLS0+Pj4gdGhpY2tib3ggc3BlY2lmaWMgbGluayBhbmQgZm9udCBzZXR0aW5ncyA8PDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojVEJfd2luZG93IHsNCglmb250OiAxMnB4IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJY29sb3I6ICMzMzMzMzM7DQp9DQoNCiNUQl9zZWNvbmRMaW5lIHsNCglmb250OiAxMHB4IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJY29sb3I6IzY2NjY2NjsNCn0NCg0KI1RCX3dpbmRvdyBhOmxpbmsge2NvbG9yOiAjNjY2NjY2O30NCiNUQl93aW5kb3cgYTp2aXNpdGVkIHtjb2xvcjogIzY2NjY2Njt9DQojVEJfd2luZG93IGE6aG92ZXIge2NvbG9yOiAjMDAwO30NCiNUQl93aW5kb3cgYTphY3RpdmUge2NvbG9yOiAjNjY2NjY2O30NCiNUQl93aW5kb3cgYTpmb2N1c3tjb2xvcjogIzY2NjY2Njt9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogLS0tLS0tLS0tLT4+PiB0aGlja2JveCBzZXR0aW5ncyA8PDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNUQl9vdmVybGF5IHsNCglwb3NpdGlvbjogZml4ZWQ7DQoJei1pbmRleDoxMDA7DQoJdG9wOiAwcHg7DQoJbGVmdDogMHB4Ow0KCWhlaWdodDoxMDAlOw0KCXdpZHRoOjEwMCU7DQp9DQoNCi5UQl9vdmVybGF5TWFjRkZCR0hhY2sge2JhY2tncm91bmQ6IHVybChtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL3RoaWNrYm94L21hY0ZGQmdIYWNrLnBuZykgcmVwZWF0O30NCi5UQl9vdmVybGF5Qkcgew0KCWJhY2tncm91bmQtY29sb3I6IzAwMDsNCglmaWx0ZXI6YWxwaGEob3BhY2l0eT03NSk7DQoJLW1vei1vcGFjaXR5OiAwLjc1Ow0KCW9wYWNpdHk6IDAuNzU7DQp9DQoNCiogaHRtbCAjVEJfb3ZlcmxheSB7IC8qIGllNiBoYWNrICovDQogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgaGVpZ2h0OiBleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgPyBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA6IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ICsgJ3B4Jyk7DQp9DQoNCiNUQl93aW5kb3cgew0KCXBvc2l0aW9uOiBmaXhlZDsNCgliYWNrZ3JvdW5kOiAjZmZmZmZmOw0KCXotaW5kZXg6IDEwMjsNCgljb2xvcjojMDAwMDAwOw0KCWRpc3BsYXk6bm9uZTsNCglib3JkZXI6IDRweCBzb2xpZCAjNTI1MjUyOw0KCXRleHQtYWxpZ246bGVmdDsNCgl0b3A6NTAlOw0KCWxlZnQ6NTAlOw0KfQ0KDQoqIGh0bWwgI1RCX3dpbmRvdyB7IC8qIGllNiBoYWNrICovDQpwb3NpdGlvbjogYWJzb2x1dGU7DQptYXJnaW4tdG9wOiBleHByZXNzaW9uKDAgLSBwYXJzZUludCh0aGlzLm9mZnNldEhlaWdodCAvIDIpICsgKFRCV2luZG93TWFyZ2luID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApICsgJ3B4Jyk7DQp9DQoNCiNUQl93aW5kb3cgaW1nI1RCX0ltYWdlIHsNCglkaXNwbGF5OmJsb2NrOw0KCW1hcmdpbjogMTVweCAwIDAgMTVweDsNCglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjOw0KCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjOw0KCWJvcmRlci10b3A6IDFweCBzb2xpZCAjNjY2Ow0KCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzY2NjsNCn0NCg0KI1RCX2NhcHRpb257DQoJaGVpZ2h0OjI1cHg7DQoJcGFkZGluZzo3cHggMzBweCAxMHB4IDI1cHg7DQoJZmxvYXQ6bGVmdDsNCn0NCg0KI1RCX2Nsb3NlV2luZG93ew0KCWhlaWdodDoyNXB4Ow0KCXBhZGRpbmc6MTFweCAyNXB4IDEwcHggMDsNCglmbG9hdDpyaWdodDsNCn0NCg0KI1RCX2Nsb3NlQWpheFdpbmRvd3sNCglwYWRkaW5nOjdweCAxMHB4IDVweCAwOw0KCW1hcmdpbi1ib3R0b206MXB4Ow0KCXRleHQtYWxpZ246cmlnaHQ7DQoJZmxvYXQ6cmlnaHQ7DQp9DQoNCiNUQl9hamF4V2luZG93VGl0bGV7DQoJZmxvYXQ6bGVmdDsNCglwYWRkaW5nOjdweCAwIDVweCAxMHB4Ow0KCW1hcmdpbi1ib3R0b206MXB4Ow0KfQ0KDQojVEJfdGl0bGV7DQoJYmFja2dyb3VuZC1jb2xvcjojZThlOGU4Ow0KCWhlaWdodDoyN3B4Ow0KfQ0KDQojVEJfYWpheENvbnRlbnR7DQoJY2xlYXI6Ym90aDsNCglwYWRkaW5nOjJweCAxNXB4IDE1cHggMTVweDsNCglvdmVyZmxvdzphdXRvOw0KCXRleHQtYWxpZ246bGVmdDsNCglsaW5lLWhlaWdodDoxLjRlbTsNCn0NCg0KI1RCX2FqYXhDb250ZW50LlRCX21vZGFsew0KCXBhZGRpbmc6MTVweDsNCn0NCg0KI1RCX2FqYXhDb250ZW50IHB7DQoJcGFkZGluZzo1cHggMHB4IDVweCAwcHg7DQp9DQoNCiNUQl9sb2Fkew0KCXBvc2l0aW9uOiBmaXhlZDsNCglkaXNwbGF5Om5vbmU7DQoJaGVpZ2h0OjEzcHg7DQoJd2lkdGg6MjA4cHg7DQoJei1pbmRleDoxMDM7DQoJdG9wOiA1MCU7DQoJbGVmdDogNTAlOw0KCW1hcmdpbjogLTZweCAwIDAgLTEwNHB4OyAvKiAtaGVpZ2h0LzIgMCAwIC13aWR0aC8yICovDQp9DQoNCiogaHRtbCAjVEJfbG9hZCB7IC8qIGllNiBoYWNrICovDQpwb3NpdGlvbjogYWJzb2x1dGU7DQptYXJnaW4tdG9wOiBleHByZXNzaW9uKDAgLSBwYXJzZUludCh0aGlzLm9mZnNldEhlaWdodCAvIDIpICsgKFRCV2luZG93TWFyZ2luID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApICsgJ3B4Jyk7DQp9DQoNCiNUQl9IaWRlU2VsZWN0ew0KCXotaW5kZXg6OTk7DQoJcG9zaXRpb246Zml4ZWQ7DQoJdG9wOiAwOw0KCWxlZnQ6IDA7DQoJYmFja2dyb3VuZC1jb2xvcjojZmZmOw0KCWJvcmRlcjpub25lOw0KCWZpbHRlcjphbHBoYShvcGFjaXR5PTApOw0KCS1tb3otb3BhY2l0eTogMDsNCglvcGFjaXR5OiAwOw0KCWhlaWdodDoxMDAlOw0KCXdpZHRoOjEwMCU7DQp9DQoNCiogaHRtbCAjVEJfSGlkZVNlbGVjdCB7IC8qIGllNiBoYWNrICovDQogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgaGVpZ2h0OiBleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgPyBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA6IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ICsgJ3B4Jyk7DQp9DQoNCiNUQl9pZnJhbWVDb250ZW50ew0KCWNsZWFyOmJvdGg7DQoJYm9yZGVyOm5vbmU7DQoJbWFyZ2luLWJvdHRvbTotMXB4Ow0KCW1hcmdpbi10b3A6MXB4Ow0KCV9tYXJnaW4tYm90dG9tOjFweDsNCn0NCg0KeyotLS0tLS0tLS0tDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2pxdWVyeS9qcXVlcnkuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy90aGlja2JveC90aGlja2JveC5qcyI+PC9zY3JpcHQ+DQoqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/thickbox/loadingAnimation.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/macFFBgHack.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUANy8xNi8wN1qn/wsAAAAoSURBVEiJ7c1BAQAwCAAhtH+nVVsKf0cBBs+xvQ5KSkpKSkpKSkrAB1nRAPEf/J+FAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/thickbox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIC0tLS0tLS0tLS0+Pj4gZ2xvYmFsIHNldHRpbmdzIG5lZWRlZCBmb3IgdGhpY2tib3ggPDw8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKntwYWRkaW5nOiAwOyBtYXJnaW46IDA7fQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIC0tLS0tLS0tLS0+Pj4gdGhpY2tib3ggc3BlY2lmaWMgbGluayBhbmQgZm9udCBzZXR0aW5ncyA8PDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI1RCX3dpbmRvdyB7Cglmb250OiAxMnB4IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Cgljb2xvcjogIzMzMzMzMzsKfQoKI1RCX3NlY29uZExpbmUgewoJZm9udDogMTBweCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJY29sb3I6IzY2NjY2NjsKfQoKI1RCX3dpbmRvdyBhOmxpbmsge2NvbG9yOiAjNjY2NjY2O30KI1RCX3dpbmRvdyBhOnZpc2l0ZWQge2NvbG9yOiAjNjY2NjY2O30KI1RCX3dpbmRvdyBhOmhvdmVyIHtjb2xvcjogIzAwMDt9CiNUQl93aW5kb3cgYTphY3RpdmUge2NvbG9yOiAjNjY2NjY2O30KI1RCX3dpbmRvdyBhOmZvY3Vze2NvbG9yOiAjNjY2NjY2O30KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAtLS0tLS0tLS0tPj4+IHRoaWNrYm94IHNldHRpbmdzIDw8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNUQl9vdmVybGF5IHsKCXBvc2l0aW9uOiBmaXhlZDsKCXotaW5kZXg6MTAwOwoJdG9wOiAwcHg7CglsZWZ0OiAwcHg7CgloZWlnaHQ6MTAwJTsKCXdpZHRoOjEwMCU7Cn0KCi5UQl9vdmVybGF5TWFjRkZCR0hhY2sge2JhY2tncm91bmQ6IHVybChtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL3RoaWNrYm94L21hY0ZGQmdIYWNrLnBuZykgcmVwZWF0O30KLlRCX292ZXJsYXlCRyB7CgliYWNrZ3JvdW5kLWNvbG9yOiMwMDA7CglmaWx0ZXI6YWxwaGEob3BhY2l0eT03NSk7CgktbW96LW9wYWNpdHk6IDAuNzU7CglvcGFjaXR5OiAwLjc1Owp9CgoqIGh0bWwgI1RCX292ZXJsYXkgeyAvKiBpZTYgaGFjayAqLwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBoZWlnaHQ6IGV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCA/IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0IDogZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgKyAncHgnKTsKfQoKI1RCX3dpbmRvdyB7Cglwb3NpdGlvbjogZml4ZWQ7CgliYWNrZ3JvdW5kOiAjZmZmZmZmOwoJei1pbmRleDogMTAyOwoJY29sb3I6IzAwMDAwMDsKCWRpc3BsYXk6bm9uZTsKCWJvcmRlcjogNHB4IHNvbGlkICM1MjUyNTI7Cgl0ZXh0LWFsaWduOmxlZnQ7Cgl0b3A6NTAlOwoJbGVmdDo1MCU7Cn0KCiogaHRtbCAjVEJfd2luZG93IHsgLyogaWU2IGhhY2sgKi8KcG9zaXRpb246IGFic29sdXRlOwptYXJnaW4tdG9wOiBleHByZXNzaW9uKDAgLSBwYXJzZUludCh0aGlzLm9mZnNldEhlaWdodCAvIDIpICsgKFRCV2luZG93TWFyZ2luID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApICsgJ3B4Jyk7Cn0KCiNUQl93aW5kb3cgaW1nI1RCX0ltYWdlIHsKCWRpc3BsYXk6YmxvY2s7CgltYXJnaW46IDE1cHggMCAwIDE1cHg7Cglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjOwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7Cglib3JkZXItdG9wOiAxcHggc29saWQgIzY2NjsKCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzY2NjsKfQoKI1RCX2NhcHRpb257CgloZWlnaHQ6MjVweDsKCXBhZGRpbmc6N3B4IDMwcHggMTBweCAyNXB4OwoJZmxvYXQ6bGVmdDsKfQoKI1RCX2Nsb3NlV2luZG93ewoJaGVpZ2h0OjI1cHg7CglwYWRkaW5nOjExcHggMjVweCAxMHB4IDA7CglmbG9hdDpyaWdodDsKfQoKI1RCX2Nsb3NlQWpheFdpbmRvd3sKCXBhZGRpbmc6N3B4IDEwcHggNXB4IDA7CgltYXJnaW4tYm90dG9tOjFweDsKCXRleHQtYWxpZ246cmlnaHQ7CglmbG9hdDpyaWdodDsKfQoKI1RCX2FqYXhXaW5kb3dUaXRsZXsKCWZsb2F0OmxlZnQ7CglwYWRkaW5nOjdweCAwIDVweCAxMHB4OwoJbWFyZ2luLWJvdHRvbToxcHg7Cn0KCiNUQl90aXRsZXsKCWJhY2tncm91bmQtY29sb3I6I2U4ZThlODsKCWhlaWdodDoyN3B4Owp9CgojVEJfYWpheENvbnRlbnR7CgljbGVhcjpib3RoOwoJcGFkZGluZzoycHggMTVweCAxNXB4IDE1cHg7CglvdmVyZmxvdzphdXRvOwoJdGV4dC1hbGlnbjpsZWZ0OwoJbGluZS1oZWlnaHQ6MS40ZW07Cn0KCiNUQl9hamF4Q29udGVudC5UQl9tb2RhbHsKCXBhZGRpbmc6MTVweDsKfQoKI1RCX2FqYXhDb250ZW50IHB7CglwYWRkaW5nOjVweCAwcHggNXB4IDBweDsKfQoKI1RCX2xvYWR7Cglwb3NpdGlvbjogZml4ZWQ7CglkaXNwbGF5Om5vbmU7CgloZWlnaHQ6MTNweDsKCXdpZHRoOjIwOHB4OwoJei1pbmRleDoxMDM7Cgl0b3A6IDUwJTsKCWxlZnQ6IDUwJTsKCW1hcmdpbjogLTZweCAwIDAgLTEwNHB4OyAvKiAtaGVpZ2h0LzIgMCAwIC13aWR0aC8yICovCn0KCiogaHRtbCAjVEJfbG9hZCB7IC8qIGllNiBoYWNrICovCnBvc2l0aW9uOiBhYnNvbHV0ZTsKbWFyZ2luLXRvcDogZXhwcmVzc2lvbigwIC0gcGFyc2VJbnQodGhpcy5vZmZzZXRIZWlnaHQgLyAyKSArIChUQldpbmRvd01hcmdpbiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSArICdweCcpOwp9CgojVEJfSGlkZVNlbGVjdHsKCXotaW5kZXg6OTk7Cglwb3NpdGlvbjpmaXhlZDsKCXRvcDogMDsKCWxlZnQ6IDA7CgliYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Cglib3JkZXI6bm9uZTsKCWZpbHRlcjphbHBoYShvcGFjaXR5PTApOwoJLW1vei1vcGFjaXR5OiAwOwoJb3BhY2l0eTogMDsKCWhlaWdodDoxMDAlOwoJd2lkdGg6MTAwJTsKfQoKKiBodG1sICNUQl9IaWRlU2VsZWN0IHsgLyogaWU2IGhhY2sgKi8KICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgaGVpZ2h0OiBleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgPyBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA6IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ICsgJ3B4Jyk7Cn0KCiNUQl9pZnJhbWVDb250ZW50ewoJY2xlYXI6Ym90aDsKCWJvcmRlcjpub25lOwoJbWFyZ2luLWJvdHRvbTotMXB4OwoJbWFyZ2luLXRvcDoxcHg7CglfbWFyZ2luLWJvdHRvbToxcHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/thickbox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIFRoaWNrYm94IDMuMSAtIE9uZSBCb3ggVG8gUnVsZSBUaGVtIEFsbC4NCiAqIEJ5IENvZHkgTGluZGxleSAoaHR0cDovL3d3dy5jb2R5bGluZGxleS5jb20pDQogKiBDb3B5cmlnaHQgKGMpIDIwMDcgY29keSBsaW5kbGV5DQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2U6IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKg0KICogUGF0Y2hlZCBWZXJzaW9uIGJ5IEphbWllIFRob21wc29uIC0gRml4ZXMgSUU3IFBvc2l0aW9uaW5nIElzc3Vlcw0KICogaHR0cDovL2phbWF6b24uY28udWsvd2ViLzIwMDgvMDMvMTcvdGhpY2tib3gtMzEtaWU3LXBvc2l0aW9uaW5nLWJ1Zy8NCiovDQoNCnZhciB0Yl9wYXRoVG9JbWFnZSA9ICJsb2FkaW5nQW5pbWF0aW9uLmdpZiI7DQoNCi8qISEhISEhISEhISEhISEhISEgZWRpdCBiZWxvdyB0aGlzIGxpbmUgYXQgeW91ciBvd24gcmlzayAhISEhISEhISEhISEhISEhISEhISEhISovDQoNCi8vIGZpeGVzIHRoZSBmYWN0IHRoYXQgaWU3IG5vdyByZXBvcnRzIGl0c2VsZiBhcyBNU0lFIDYuMCBjb21wYXRpYmxlDQokLmJyb3dzZXIubXNpZTYgPQ0KICAgICAgICAkLmJyb3dzZXIubXNpZQ0KICAgICAgICAmJiAvTVNJRSA2XC4wL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkNCiAgICAgICAgJiYgIS9NU0lFIDdcLjAvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KQ0KICAgICAgICAmJiAhL01TSUUgOFwuMC9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpOw0KDQovL29uIHBhZ2UgbG9hZCBjYWxsIHRiX2luaXQNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7ICAgDQoJdGJfaW5pdCgnYS50aGlja2JveCwgYXJlYS50aGlja2JveCwgaW5wdXQudGhpY2tib3gnKTsvL3Bhc3Mgd2hlcmUgdG8gYXBwbHkgdGhpY2tib3gNCglpbWdMb2FkZXIgPSBuZXcgSW1hZ2UoKTsvLyBwcmVsb2FkIGltYWdlDQoJaW1nTG9hZGVyLnNyYyA9IHRiX3BhdGhUb0ltYWdlOw0KfSk7DQoNCi8vYWRkIHRoaWNrYm94IHRvIGhyZWYgJiBhcmVhIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGNsYXNzIG9mIC50aGlja2JveA0KZnVuY3Rpb24gdGJfaW5pdChkb21DaHVuayl7DQoJJChkb21DaHVuaykuY2xpY2soZnVuY3Rpb24oKXsNCgl2YXIgdCA9IHRoaXMudGl0bGUgfHwgdGhpcy5uYW1lIHx8IG51bGw7DQoJdmFyIGEgPSB0aGlzLmhyZWYgfHwgdGhpcy5hbHQ7DQoJdmFyIGcgPSB0aGlzLnJlbCB8fCBmYWxzZTsNCgl0Yl9zaG93KHQsYSxnKTsNCgl0aGlzLmJsdXIoKTsNCglyZXR1cm4gZmFsc2U7DQoJfSk7DQp9DQoNCmZ1bmN0aW9uIHRiX3Nob3coY2FwdGlvbiwgdXJsLCBpbWFnZUdyb3VwKSB7Ly9mdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gYSB0aGlja2JveCBsaW5rDQoNCgl0cnkgew0KCQlpZiAodHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGUubWF4SGVpZ2h0ID09PSAidW5kZWZpbmVkIikgey8vaWYgSUUgNg0KCQkJJCgiYm9keSIsImh0bWwiKS5jc3Moe2hlaWdodDogIjEwMCUiLCB3aWR0aDogIjEwMCUifSk7DQoJCQkkKCJodG1sIikuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpOw0KCQkJaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUQl9IaWRlU2VsZWN0IikgPT09IG51bGwpIHsvL2lmcmFtZSB0byBoaWRlIHNlbGVjdCBlbGVtZW50cyBpbiBpZTYNCgkJCQkkKCJib2R5IikuYXBwZW5kKCI8aWZyYW1lIGlkPSdUQl9IaWRlU2VsZWN0Jz48L2lmcmFtZT48ZGl2IGlkPSdUQl9vdmVybGF5Jz48L2Rpdj48ZGl2IGlkPSdUQl93aW5kb3cnPjwvZGl2PiIpOw0KCQkJCSQoIiNUQl9vdmVybGF5IikuY2xpY2sodGJfcmVtb3ZlKTsNCgkJCX0NCgkJfWVsc2V7Ly9hbGwgb3RoZXJzDQoJCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVEJfb3ZlcmxheSIpID09PSBudWxsKXsNCgkJCQkkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl9vdmVybGF5Jz48L2Rpdj48ZGl2IGlkPSdUQl93aW5kb3cnPjwvZGl2PiIpOw0KCQkJCSQoIiNUQl9vdmVybGF5IikuY2xpY2sodGJfcmVtb3ZlKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYodGJfZGV0ZWN0TWFjWEZGKCkpew0KCQkJJCgiI1RCX292ZXJsYXkiKS5hZGRDbGFzcygiVEJfb3ZlcmxheU1hY0ZGQkdIYWNrIik7Ly91c2UgcG5nIG92ZXJsYXkgc28gaGlkZSBmbGFzaA0KCQl9ZWxzZXsNCgkJCSQoIiNUQl9vdmVybGF5IikuYWRkQ2xhc3MoIlRCX292ZXJsYXlCRyIpOy8vdXNlIGJhY2tncm91bmQgYW5kIG9wYWNpdHkNCgkJfQ0KCQkNCgkJaWYoY2FwdGlvbj09PW51bGwpe2NhcHRpb249IiI7fQ0KCQkkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl9sb2FkJz48aW1nIHNyYz0nIitpbWdMb2FkZXIuc3JjKyInIC8+PC9kaXY+Iik7Ly9hZGQgbG9hZGVyIHRvIHRoZSBwYWdlDQoJCSQoJyNUQl9sb2FkJykuc2hvdygpOy8vc2hvdyBsb2FkZXINCgkJDQoJCXZhciBiYXNlVVJMOw0KCSAgIGlmKHVybC5pbmRleE9mKCI/IikhPT0tMSl7IC8vZmYgdGhlcmUgaXMgYSBxdWVyeSBzdHJpbmcgaW52b2x2ZWQNCgkJCWJhc2VVUkwgPSB1cmwuc3Vic3RyKDAsIHVybC5pbmRleE9mKCI/IikpOw0KCSAgIH1lbHNleyANCgkgICAJCWJhc2VVUkwgPSB1cmw7DQoJICAgfQ0KCSAgIA0KCSAgIHZhciB1cmxTdHJpbmcgPSAvXC5qcGckfFwuanBlZyR8XC5wbmckfFwuZ2lmJHxcLmJtcCQvOw0KCSAgIHZhciB1cmxUeXBlID0gYmFzZVVSTC50b0xvd2VyQ2FzZSgpLm1hdGNoKHVybFN0cmluZyk7DQoNCgkJaWYodXJsVHlwZSA9PSAnLmpwZycgfHwgdXJsVHlwZSA9PSAnLmpwZWcnIHx8IHVybFR5cGUgPT0gJy5wbmcnIHx8IHVybFR5cGUgPT0gJy5naWYnIHx8IHVybFR5cGUgPT0gJy5ibXAnKXsvL2NvZGUgdG8gc2hvdyBpbWFnZXMNCgkJCQkNCgkJCVRCX1ByZXZDYXB0aW9uID0gIiI7DQoJCQlUQl9QcmV2VVJMID0gIiI7DQoJCQlUQl9QcmV2SFRNTCA9ICIiOw0KCQkJVEJfTmV4dENhcHRpb24gPSAiIjsNCgkJCVRCX05leHRVUkwgPSAiIjsNCgkJCVRCX05leHRIVE1MID0gIiI7DQoJCQlUQl9pbWFnZUNvdW50ID0gIiI7DQoJCQlUQl9Gb3VuZFVSTCA9IGZhbHNlOw0KCQkJaWYoaW1hZ2VHcm91cCl7DQoJCQkJVEJfVGVtcEFycmF5ID0gJCgiYVtyZWw9IitpbWFnZUdyb3VwKyJdIikuZ2V0KCk7DQoJCQkJZm9yIChUQl9Db3VudGVyID0gMDsgKChUQl9Db3VudGVyIDwgVEJfVGVtcEFycmF5Lmxlbmd0aCkgJiYgKFRCX05leHRIVE1MID09PSAiIikpOyBUQl9Db3VudGVyKyspIHsNCgkJCQkJdmFyIHVybFR5cGVUZW1wID0gVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWYudG9Mb3dlckNhc2UoKS5tYXRjaCh1cmxTdHJpbmcpOw0KCQkJCQkJaWYgKCEoVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWYgPT0gdXJsKSkgewkJCQkJCQ0KCQkJCQkJCWlmIChUQl9Gb3VuZFVSTCkgew0KCQkJCQkJCQlUQl9OZXh0Q2FwdGlvbiA9IFRCX1RlbXBBcnJheVtUQl9Db3VudGVyXS50aXRsZTsNCgkJCQkJCQkJVEJfTmV4dFVSTCA9IFRCX1RlbXBBcnJheVtUQl9Db3VudGVyXS5ocmVmOw0KCQkJCQkJCQlUQl9OZXh0SFRNTCA9ICI8c3BhbiBpZD0nVEJfbmV4dCc+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0nIyc+TmV4dCAmZ3Q7PC9hPjwvc3Bhbj4iOw0KCQkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJCVRCX1ByZXZDYXB0aW9uID0gVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLnRpdGxlOw0KCQkJCQkJCQlUQl9QcmV2VVJMID0gVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWY7DQoJCQkJCQkJCVRCX1ByZXZIVE1MID0gIjxzcGFuIGlkPSdUQl9wcmV2Jz4mbmJzcDsmbmJzcDs8YSBocmVmPScjJz4mbHQ7IFByZXY8L2E+PC9zcGFuPiI7DQoJCQkJCQkJfQ0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlUQl9Gb3VuZFVSTCA9IHRydWU7DQoJCQkJCQkJVEJfaW1hZ2VDb3VudCA9ICJJbWFnZSAiICsgKFRCX0NvdW50ZXIgKyAxKSArIiBvZiAiKyAoVEJfVGVtcEFycmF5Lmxlbmd0aCk7CQkJCQkJCQkJCQkNCgkJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCWltZ1ByZWxvYWRlciA9IG5ldyBJbWFnZSgpOw0KCQkJaW1nUHJlbG9hZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCl7CQkNCgkJCWltZ1ByZWxvYWRlci5vbmxvYWQgPSBudWxsOw0KCQkJCQ0KCQkJLy8gUmVzaXppbmcgbGFyZ2UgaW1hZ2VzIC0gb3JnaW5hbCBieSBDaHJpc3RpYW4gTW9udG95YSBlZGl0ZWQgYnkgbWUuDQoJCQl2YXIgcGFnZXNpemUgPSB0Yl9nZXRQYWdlU2l6ZSgpOw0KCQkJdmFyIHggPSBwYWdlc2l6ZVswXSAtIDE1MDsNCgkJCXZhciB5ID0gcGFnZXNpemVbMV0gLSAxNTA7DQoJCQl2YXIgaW1hZ2VXaWR0aCA9IGltZ1ByZWxvYWRlci53aWR0aDsNCgkJCXZhciBpbWFnZUhlaWdodCA9IGltZ1ByZWxvYWRlci5oZWlnaHQ7DQoJCQlpZiAoaW1hZ2VXaWR0aCA+IHgpIHsNCgkJCQlpbWFnZUhlaWdodCA9IGltYWdlSGVpZ2h0ICogKHggLyBpbWFnZVdpZHRoKTsgDQoJCQkJaW1hZ2VXaWR0aCA9IHg7IA0KCQkJCWlmIChpbWFnZUhlaWdodCA+IHkpIHsgDQoJCQkJCWltYWdlV2lkdGggPSBpbWFnZVdpZHRoICogKHkgLyBpbWFnZUhlaWdodCk7IA0KCQkJCQlpbWFnZUhlaWdodCA9IHk7IA0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7IA0KCQkJCWltYWdlV2lkdGggPSBpbWFnZVdpZHRoICogKHkgLyBpbWFnZUhlaWdodCk7IA0KCQkJCWltYWdlSGVpZ2h0ID0geTsgDQoJCQkJaWYgKGltYWdlV2lkdGggPiB4KSB7IA0KCQkJCQlpbWFnZUhlaWdodCA9IGltYWdlSGVpZ2h0ICogKHggLyBpbWFnZVdpZHRoKTsgDQoJCQkJCWltYWdlV2lkdGggPSB4Ow0KCQkJCX0NCgkJCX0NCgkJCS8vIEVuZCBSZXNpemluZw0KCQkJDQoJCQlUQl9XSURUSCA9IGltYWdlV2lkdGggKyAzMDsNCgkJCVRCX0hFSUdIVCA9IGltYWdlSGVpZ2h0ICsgNjA7DQoJCQkkKCIjVEJfd2luZG93IikuYXBwZW5kKCI8YSBocmVmPScnIGlkPSdUQl9JbWFnZU9mZicgdGl0bGU9J0Nsb3NlJz48aW1nIGlkPSdUQl9JbWFnZScgc3JjPSciK3VybCsiJyB3aWR0aD0nIitpbWFnZVdpZHRoKyInIGhlaWdodD0nIitpbWFnZUhlaWdodCsiJyBhbHQ9JyIrY2FwdGlvbisiJy8+PC9hPiIgKyAiPGRpdiBpZD0nVEJfY2FwdGlvbic+IitjYXB0aW9uKyI8ZGl2IGlkPSdUQl9zZWNvbmRMaW5lJz4iICsgVEJfaW1hZ2VDb3VudCArIFRCX1ByZXZIVE1MICsgVEJfTmV4dEhUTUwgKyAiPC9kaXY+PC9kaXY+PGRpdiBpZD0nVEJfY2xvc2VXaW5kb3cnPjxhIGhyZWY9JyMnIGlkPSdUQl9jbG9zZVdpbmRvd0J1dHRvbicgdGl0bGU9J0Nsb3NlJz5jbG9zZTwvYT4gb3IgRXNjIEtleTwvZGl2PiIpOyAJCQ0KCQkJDQoJCQkkKCIjVEJfY2xvc2VXaW5kb3dCdXR0b24iKS5jbGljayh0Yl9yZW1vdmUpOw0KCQkJDQoJCQlpZiAoIShUQl9QcmV2SFRNTCA9PT0gIiIpKSB7DQoJCQkJZnVuY3Rpb24gZ29QcmV2KCl7DQoJCQkJCWlmKCQoZG9jdW1lbnQpLnVuYmluZCgiY2xpY2siLGdvUHJldikpeyQoZG9jdW1lbnQpLnVuYmluZCgiY2xpY2siLGdvUHJldik7fQ0KCQkJCQkkKCIjVEJfd2luZG93IikucmVtb3ZlKCk7DQoJCQkJCSQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX3dpbmRvdyc+PC9kaXY+Iik7DQoJCQkJCXRiX3Nob3coVEJfUHJldkNhcHRpb24sIFRCX1ByZXZVUkwsIGltYWdlR3JvdXApOw0KCQkJCQlyZXR1cm4gZmFsc2U7CQ0KCQkJCX0NCgkJCQkkKCIjVEJfcHJldiIpLmNsaWNrKGdvUHJldik7DQoJCQl9DQoJCQkNCgkJCWlmICghKFRCX05leHRIVE1MID09PSAiIikpIHsJCQ0KCQkJCWZ1bmN0aW9uIGdvTmV4dCgpew0KCQkJCQkkKCIjVEJfd2luZG93IikucmVtb3ZlKCk7DQoJCQkJCSQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX3dpbmRvdyc+PC9kaXY+Iik7DQoJCQkJCXRiX3Nob3coVEJfTmV4dENhcHRpb24sIFRCX05leHRVUkwsIGltYWdlR3JvdXApOwkJCQkNCgkJCQkJcmV0dXJuIGZhbHNlOwkNCgkJCQl9DQoJCQkJJCgiI1RCX25leHQiKS5jbGljayhnb05leHQpOw0KCQkJCQ0KCQkJfQ0KDQoJCQlkb2N1bWVudC5vbmtleWRvd24gPSBmdW5jdGlvbihlKXsgCQ0KCQkJCWlmIChlID09IG51bGwpIHsgLy8gaWUNCgkJCQkJa2V5Y29kZSA9IGV2ZW50LmtleUNvZGU7DQoJCQkJfSBlbHNlIHsgLy8gbW96aWxsYQ0KCQkJCQlrZXljb2RlID0gZS53aGljaDsNCgkJCQl9DQoJCQkJaWYoa2V5Y29kZSA9PSAyNyl7IC8vIGNsb3NlDQoJCQkJCXRiX3JlbW92ZSgpOw0KCQkJCX0gZWxzZSBpZihrZXljb2RlID09IDE5MCl7IC8vIGRpc3BsYXkgcHJldmlvdXMgaW1hZ2UNCgkJCQkJaWYoIShUQl9OZXh0SFRNTCA9PSAiIikpew0KCQkJCQkJZG9jdW1lbnQub25rZXlkb3duID0gIiI7DQoJCQkJCQlnb05leHQoKTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZihrZXljb2RlID09IDE4OCl7IC8vIGRpc3BsYXkgbmV4dCBpbWFnZQ0KCQkJCQlpZighKFRCX1ByZXZIVE1MID09ICIiKSl7DQoJCQkJCQlkb2N1bWVudC5vbmtleWRvd24gPSAiIjsNCgkJCQkJCWdvUHJldigpOw0KCQkJCQl9DQoJCQkJfQkNCgkJCX07DQoJCQkNCgkJCXRiX3Bvc2l0aW9uKCk7DQoJCQkkKCIjVEJfbG9hZCIpLnJlbW92ZSgpOw0KCQkJJCgiI1RCX0ltYWdlT2ZmIikuY2xpY2sodGJfcmVtb3ZlKTsNCgkJCSQoIiNUQl93aW5kb3ciKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pOyAvL2ZvciBzYWZhcmkgdXNpbmcgY3NzIGluc3RlYWQgb2Ygc2hvdw0KCQkJfTsNCgkJCQ0KCQkJaW1nUHJlbG9hZGVyLnNyYyA9IHVybDsNCgkJfWVsc2V7Ly9jb2RlIHRvIHNob3cgaHRtbA0KCQkJDQoJCQl2YXIgcXVlcnlTdHJpbmcgPSB1cmwucmVwbGFjZSgvXlteXD9dK1w/Py8sJycpOw0KCQkJdmFyIHBhcmFtcyA9IHRiX3BhcnNlUXVlcnkoIHF1ZXJ5U3RyaW5nICk7DQoNCgkJCVRCX1dJRFRIID0gKHBhcmFtc1snd2lkdGgnXSoxKSArIDMwIHx8IDYzMDsgLy9kZWZhdWx0cyB0byA2MzAgaWYgbm8gcGFyYW1hdGVycyB3ZXJlIGFkZGVkIHRvIFVSTA0KCQkJVEJfSEVJR0hUID0gKHBhcmFtc1snaGVpZ2h0J10qMSkgKyA0MCB8fCA0NDA7IC8vZGVmYXVsdHMgdG8gNDQwIGlmIG5vIHBhcmFtYXRlcnMgd2VyZSBhZGRlZCB0byBVUkwNCgkJCWFqYXhDb250ZW50VyA9IFRCX1dJRFRIIC0gMzA7DQoJCQlhamF4Q29udGVudEggPSBUQl9IRUlHSFQgLSA0NTsNCgkJCQ0KCQkJaWYodXJsLmluZGV4T2YoJ1RCX2lmcmFtZScpICE9IC0xKXsvLyBlaXRoZXIgaWZyYW1lIG9yIGFqYXggd2luZG93CQkNCgkJCQkJdXJsTm9RdWVyeSA9IHVybC5zcGxpdCgnVEJfJyk7DQoJCQkJCSQoIiNUQl9pZnJhbWVDb250ZW50IikucmVtb3ZlKCk7DQoJCQkJCWlmKHBhcmFtc1snbW9kYWwnXSAhPSAidHJ1ZSIpey8vaWZyYW1lIG5vIG1vZGFsDQoJCQkJCQkkKCIjVEJfd2luZG93IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl90aXRsZSc+PGRpdiBpZD0nVEJfYWpheFdpbmRvd1RpdGxlJz4iK2NhcHRpb24rIjwvZGl2PjxkaXYgaWQ9J1RCX2Nsb3NlQWpheFdpbmRvdyc+PGEgaHJlZj0nIycgaWQ9J1RCX2Nsb3NlV2luZG93QnV0dG9uJyB0aXRsZT0nQ2xvc2UnPmNsb3NlPC9hPiBvciBFc2MgS2V5PC9kaXY+PC9kaXY+PGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgaHNwYWNlPScwJyBzcmM9JyIrdXJsTm9RdWVyeVswXSsiJyBpZD0nVEJfaWZyYW1lQ29udGVudCcgbmFtZT0nVEJfaWZyYW1lQ29udGVudCIrTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDApKyInIG9ubG9hZD0ndGJfc2hvd0lmcmFtZSgpJyBzdHlsZT0nd2lkdGg6IisoYWpheENvbnRlbnRXICsgMjkpKyJweDtoZWlnaHQ6IisoYWpheENvbnRlbnRIICsgMTcpKyJweDsnID4gPC9pZnJhbWU+Iik7DQoJCQkJCX1lbHNley8vaWZyYW1lIG1vZGFsDQoJCQkJCSQoIiNUQl9vdmVybGF5IikudW5iaW5kKCk7DQoJCQkJCQkkKCIjVEJfd2luZG93IikuYXBwZW5kKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyBoc3BhY2U9JzAnIHNyYz0nIit1cmxOb1F1ZXJ5WzBdKyInIGlkPSdUQl9pZnJhbWVDb250ZW50JyBuYW1lPSdUQl9pZnJhbWVDb250ZW50IitNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwMCkrIicgb25sb2FkPSd0Yl9zaG93SWZyYW1lKCknIHN0eWxlPSd3aWR0aDoiKyhhamF4Q29udGVudFcgKyAyOSkrInB4O2hlaWdodDoiKyhhamF4Q29udGVudEggKyAxNykrInB4Oyc+IDwvaWZyYW1lPiIpOw0KCQkJCQl9DQoJCQl9ZWxzZXsvLyBub3QgYW4gaWZyYW1lLCBhamF4DQoJCQkJCWlmKCQoIiNUQl93aW5kb3ciKS5jc3MoImRpc3BsYXkiKSAhPSAiYmxvY2siKXsNCgkJCQkJCWlmKHBhcmFtc1snbW9kYWwnXSAhPSAidHJ1ZSIpey8vYWpheCBubyBtb2RhbA0KCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmFwcGVuZCgiPGRpdiBpZD0nVEJfdGl0bGUnPjxkaXYgaWQ9J1RCX2FqYXhXaW5kb3dUaXRsZSc+IitjYXB0aW9uKyI8L2Rpdj48ZGl2IGlkPSdUQl9jbG9zZUFqYXhXaW5kb3cnPjxhIGhyZWY9JyMnIGlkPSdUQl9jbG9zZVdpbmRvd0J1dHRvbic+Y2xvc2U8L2E+IG9yIEVzYyBLZXk8L2Rpdj48L2Rpdj48ZGl2IGlkPSdUQl9hamF4Q29udGVudCcgc3R5bGU9J3dpZHRoOiIrYWpheENvbnRlbnRXKyJweDtoZWlnaHQ6IithamF4Q29udGVudEgrInB4Jz48L2Rpdj4iKTsNCgkJCQkJCX1lbHNley8vYWpheCBtb2RhbA0KCQkJCQkJJCgiI1RCX292ZXJsYXkiKS51bmJpbmQoKTsNCgkJCQkJCSQoIiNUQl93aW5kb3ciKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX2FqYXhDb250ZW50JyBjbGFzcz0nVEJfbW9kYWwnIHN0eWxlPSd3aWR0aDoiK2FqYXhDb250ZW50VysicHg7aGVpZ2h0OiIrYWpheENvbnRlbnRIKyJweDsnPjwvZGl2PiIpOwkNCgkJCQkJCX0NCgkJCQkJfWVsc2V7Ly90aGlzIG1lYW5zIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSB1cCwgd2UgYXJlIGp1c3QgbG9hZGluZyBuZXcgY29udGVudCB2aWEgYWpheA0KCQkJCQkJJCgiI1RCX2FqYXhDb250ZW50IilbMF0uc3R5bGUud2lkdGggPSBhamF4Q29udGVudFcgKyJweCI7DQoJCQkJCQkkKCIjVEJfYWpheENvbnRlbnQiKVswXS5zdHlsZS5oZWlnaHQgPSBhamF4Q29udGVudEggKyJweCI7DQoJCQkJCQkkKCIjVEJfYWpheENvbnRlbnQiKVswXS5zY3JvbGxUb3AgPSAwOw0KCQkJCQkJJCgiI1RCX2FqYXhXaW5kb3dUaXRsZSIpLmh0bWwoY2FwdGlvbik7DQoJCQkJCX0NCgkJCX0NCgkJCQkJDQoJCQkkKCIjVEJfY2xvc2VXaW5kb3dCdXR0b24iKS5jbGljayh0Yl9yZW1vdmUpOw0KCQkJDQoJCQkJaWYodXJsLmluZGV4T2YoJ1RCX2lubGluZScpICE9IC0xKXsJDQoJCQkJCSQoIiNUQl9hamF4Q29udGVudCIpLmFwcGVuZCgkKCcjJyArIHBhcmFtc1snaW5saW5lSWQnXSkuY2hpbGRyZW4oKSk7DQoJCQkJCSQoIiNUQl93aW5kb3ciKS51bmxvYWQoZnVuY3Rpb24gKCkgew0KCQkJCQkJJCgnIycgKyBwYXJhbXNbJ2lubGluZUlkJ10pLmFwcGVuZCggJCgiI1RCX2FqYXhDb250ZW50IikuY2hpbGRyZW4oKSApOyAvLyBtb3ZlIGVsZW1lbnRzIGJhY2sgd2hlbiB5b3UncmUgZmluaXNoZWQNCgkJCQkJfSk7DQoJCQkJCXRiX3Bvc2l0aW9uKCk7DQoJCQkJCSQoIiNUQl9sb2FkIikucmVtb3ZlKCk7DQoJCQkJCSQoIiNUQl93aW5kb3ciKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pOyANCgkJCQl9ZWxzZSBpZih1cmwuaW5kZXhPZignVEJfaWZyYW1lJykgIT0gLTEpew0KCQkJCQl0Yl9wb3NpdGlvbigpOw0KCQkJCQlpZigkLmJyb3dzZXIuc2FmYXJpKXsvL3NhZmFyaSBuZWVkcyBoZWxwIGJlY2F1c2UgaXQgd2lsbCBub3QgZmlyZSBpZnJhbWUgb25sb2FkDQoJCQkJCQkkKCIjVEJfbG9hZCIpLnJlbW92ZSgpOw0KCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSk7DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJJCgiI1RCX2FqYXhDb250ZW50IikubG9hZCh1cmwgKz0gIiZyYW5kb209IiArIChuZXcgRGF0ZSgpLmdldFRpbWUoKSksZnVuY3Rpb24oKXsvL3RvIGRvIGEgcG9zdCBjaGFuZ2UgdGhpcyBsb2FkIG1ldGhvZA0KCQkJCQkJdGJfcG9zaXRpb24oKTsNCgkJCQkJCSQoIiNUQl9sb2FkIikucmVtb3ZlKCk7DQoJCQkJCQl0Yl9pbml0KCIjVEJfYWpheENvbnRlbnQgYS50aGlja2JveCIpOw0KCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSk7DQoJCQkJCX0pOw0KCQkJCX0NCgkJCQ0KCQl9DQoNCgkJaWYoIXBhcmFtc1snbW9kYWwnXSl7DQoJCQlkb2N1bWVudC5vbmtleXVwID0gZnVuY3Rpb24oZSl7IAkNCgkJCQlpZiAoZSA9PSBudWxsKSB7IC8vIGllDQoJCQkJCWtleWNvZGUgPSBldmVudC5rZXlDb2RlOw0KCQkJCX0gZWxzZSB7IC8vIG1vemlsbGENCgkJCQkJa2V5Y29kZSA9IGUud2hpY2g7DQoJCQkJfQ0KCQkJCWlmKGtleWNvZGUgPT0gMjcpeyAvLyBjbG9zZQ0KCQkJCQl0Yl9yZW1vdmUoKTsNCgkJCQl9CQ0KCQkJfTsNCgkJfQ0KCQkNCgl9IGNhdGNoKGUpIHsNCgkJLy9ub3RoaW5nIGhlcmUNCgl9DQp9DQoNCi8vaGVscGVyIGZ1bmN0aW9ucyBiZWxvdw0KZnVuY3Rpb24gdGJfc2hvd0lmcmFtZSgpew0KCSQoIiNUQl9sb2FkIikucmVtb3ZlKCk7DQoJJCgiI1RCX3dpbmRvdyIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSk7DQp9DQoNCmZ1bmN0aW9uIHRiX3JlbW92ZSgpIHsNCiAJJCgiI1RCX2ltYWdlT2ZmIikudW5iaW5kKCJjbGljayIpOw0KCSQoIiNUQl9jbG9zZVdpbmRvd0J1dHRvbiIpLnVuYmluZCgiY2xpY2siKTsNCgkkKCIjVEJfd2luZG93IikuZmFkZU91dCgiZmFzdCIsZnVuY3Rpb24oKXskKCcjVEJfd2luZG93LCNUQl9vdmVybGF5LCNUQl9IaWRlU2VsZWN0JykudHJpZ2dlcigidW5sb2FkIikudW5iaW5kKCkucmVtb3ZlKCk7fSk7DQoJJCgiI1RCX2xvYWQiKS5yZW1vdmUoKTsNCglpZiAodHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGUubWF4SGVpZ2h0ID09ICJ1bmRlZmluZWQiKSB7Ly9pZiBJRSA2DQoJCSQoImJvZHkiLCJodG1sIikuY3NzKHtoZWlnaHQ6ICJhdXRvIiwgd2lkdGg6ICJhdXRvIn0pOw0KCQkkKCJodG1sIikuY3NzKCJvdmVyZmxvdyIsIiIpOw0KCX0NCglkb2N1bWVudC5vbmtleWRvd24gPSAiIjsNCglkb2N1bWVudC5vbmtleXVwID0gIiI7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiB0Yl9wb3NpdGlvbigpIHsNCiQoIiNUQl93aW5kb3ciKS5jc3Moe21hcmdpbkxlZnQ6ICctJyArIHBhcnNlSW50KChUQl9XSURUSCAvIDIpLDEwKSArICdweCcsIHdpZHRoOiBUQl9XSURUSCArICdweCd9KTsNCglpZiAoICEoalF1ZXJ5LmJyb3dzZXIubXNpZTYpKSB7IC8vIHRha2UgYXdheSBJRTYNCgkJJCgiI1RCX3dpbmRvdyIpLmNzcyh7bWFyZ2luVG9wOiAnLScgKyBwYXJzZUludCgoVEJfSEVJR0hUIC8gMiksMTApICsgJ3B4J30pOw0KCX0NCn0NCg0KZnVuY3Rpb24gdGJfcGFyc2VRdWVyeSAoIHF1ZXJ5ICkgew0KICAgdmFyIFBhcmFtcyA9IHt9Ow0KICAgaWYgKCAhIHF1ZXJ5ICkge3JldHVybiBQYXJhbXM7fS8vIHJldHVybiBlbXB0eSBvYmplY3QNCiAgIHZhciBQYWlycyA9IHF1ZXJ5LnNwbGl0KC9bOyZdLyk7DQogICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBQYWlycy5sZW5ndGg7IGkrKyApIHsNCiAgICAgIHZhciBLZXlWYWwgPSBQYWlyc1tpXS5zcGxpdCgnPScpOw0KICAgICAgaWYgKCAhIEtleVZhbCB8fCBLZXlWYWwubGVuZ3RoICE9IDIgKSB7Y29udGludWU7fQ0KICAgICAgdmFyIGtleSA9IHVuZXNjYXBlKCBLZXlWYWxbMF0gKTsNCiAgICAgIHZhciB2YWwgPSB1bmVzY2FwZSggS2V5VmFsWzFdICk7DQogICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXCsvZywgJyAnKTsNCiAgICAgIFBhcmFtc1trZXldID0gdmFsOw0KICAgfQ0KICAgcmV0dXJuIFBhcmFtczsNCn0NCg0KZnVuY3Rpb24gdGJfZ2V0UGFnZVNpemUoKXsNCgl2YXIgZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7DQoJdmFyIHcgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBzZWxmLmlubmVyV2lkdGggfHwgKGRlJiZkZS5jbGllbnRXaWR0aCkgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsNCgl2YXIgaCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBzZWxmLmlubmVySGVpZ2h0IHx8IChkZSYmZGUuY2xpZW50SGVpZ2h0KSB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsNCglhcnJheVBhZ2VTaXplID0gW3csaF07DQoJcmV0dXJuIGFycmF5UGFnZVNpemU7DQp9DQoNCmZ1bmN0aW9uIHRiX2RldGVjdE1hY1hGRigpIHsNCiAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsNCiAgaWYgKHVzZXJBZ2VudC5pbmRleE9mKCdtYWMnKSAhPSAtMSAmJiB1c2VyQWdlbnQuaW5kZXhPZignZmlyZWZveCcpIT0tMSkgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQp9DQoNCg0K]]></data>
	</file>
</module>
