<?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>CGSimplePWA</name>
	<version>1.2.1</version>
    <mincmsversion>2.2.10</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBxdWljayBhbmQgZWFzeSB3YXkgdG8gdHJhbnNmb3JtIHlvdXIgQ01TTVMgd2Vic2l0ZSBpbnRvIGEgQkFTSUMgUHJvZ3Jlc3NpdmUgV2ViIEFwcGxpY2F0aW9uIChQV0EpLiAgIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGVhc2lseSBhZGQgYW4gaWNvbiB0byB5b3VyIHdlYnNpdGUgdG8gdGhlaXIgbW9iaWxlIGRldmljZSdzIGhvbWUgc2NyZWVuLCBoYW5kbGVzIHdoZW4gdGhlIGRldmljZSBpcyBvZmZsaW5lLCBhbmQgcHJvdmlkZXMgYSBtb3JlIG5hdGl2ZS1leHBlcmllbmNlIGZvciBtb2JpbGUgZGV2aWNlcy48L3A+CjxwPlRoaXMgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBtYW5pZmVzdC5qc29uIGZpbGUsIGFuZCBhc3NvY2lhdGVkIG1ldGEgdGFncyB0byBsaW5rIHRvIHRoZSBtYW5pZmVzdC4gIEl0IHdpbGwgYWxzbyBnZW5lcmF0ZSBtZXRhIHRhZ3MgZm9yIElPUyBkZXZpY2VzIHRvIGFsbG93IHRoZW0gdG8gb3BlcmF0ZSBpbiBhIG1vcmUgbmF0aXZlIHdheS4gICBBbHNvLCB0aGUgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBzZXJ2aWNlIHdvcmtlciB0aGF0IGNhY2hlcyBzdGF0aWMgYXNzZXRzIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UgYW5kIG9mZmxpbmUgbW9kZS48L3A+Cgo8aDM+SG93IGRvIEkgVXNlIGl0PC9oMz4KPHVsPgogICAgPGxpPkluc3RhbGwgdGhlIG1vZHVsZTwvbGk+CiAgICA8bGk+U2V0IHRoZSBtb2R1bGUgc2V0dGluZ3M8L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgc2V0IHN0YXRpYyByZXNvdXJjZXM8L2xpPgogICAgPGxpPkFkZCB0aGUge0NHU2ltcGxlUFdBfSB0YWcgdG8gdGhlIGhlYWQgc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPkFkZCB0aGUge0NHU2ltcGxlUFdBIGFjdGlvbj1qc30gdGFnIHRvIHRoZSBib3R0b20gc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS4gIEp1c3QgYmVmb3JlIDxib2R5PgogICAgICAgIDxwPkl0IGlzIE5PVCByZXF1aXJlZCB0aGF0IHRoaXMgYWN0aW9uIGJlIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdGVtcGxhdGUsIHRob3VnaCBpdCBpcyByZWNvbW1lbmRlZCBmb3IgcGVyZm9ybWFuY2UuPC9wPgogICAgPC9saT4KICAgIDxsaT5PcHRpb25hbGx5IGNyZWF0ZSBhbiBvZmZsaW5lIHBhZ2U8L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgaW5jbHVkZSBzb21lIGphdmFzY3JpcHQgYW5kIHN0eWxpbmcgdG8gZ3VpZGUgdGhlIHVzZXIgaW4gYWRkaW5nIHRoZSBhcHAgdG8gdGhlaXIgaG9tZSBzY3JlZW4uPC9saT4KICAgIDxsaT5PcHRpb25hbGx5IGluY2x1ZGUgc29tZSBqYXZhc2NyaXB0IHRvIGFsbG93IHJlbG9hZGluZyBvZiB0aGUgcGFnZSAoaS5lOiBwdWxsIHRvIHJlbG9hZCk8L2xpPgo8L3VsPgoKPGgzPlJlcXVpcmVtZW50czwvaDM+CjxwPkluIG9yZGVyIHRvIGNyZWF0ZSBhIHByb2dyZXNzaXZlIGFwcGxpY2F0aW9uIHlvdXIgd2Vic2l0ZSBtdXN0IGF0IGEgbWluaW11bSBtZWV0IHRoaXMgcmVxdWlyZW1lbnRzOjwvcD4KPHVsPgogICAgPGxpPllvdXIgYXBwbGljYXRpb24gbXVzdCBiZSBzZXJ2ZWQgdmlhIEhUVFBTPC9saT4KICAgIDxsaT5Zb3VyIGFwcGxpY2F0aW9uIG11c3QgYmUgcmVzcG9uc2l2ZTwvbGk+CiAgICA8bGk+VGhlIENNU01TIHdlYiByb290IGRpcmVjdG9yeSBtdXN0IGJlIHdyaXRhYmxlIGJ5IENNU01TIGFzIHRoZSBtYW5pZmVzdCBhbmQgc2VydmljZSB3b3JrZXIgYXJlIHBsYWNlZCBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuPC9saT4KPC91bD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBXZSByZWNvbW1lbmQgdGhhdCB5b3UgcmVzZWFyY2ggUHJvZ3Jlc3NpdmUgV2ViIEFwcCB0ZWNobm9sb2d5IG9uIHRoZSB3ZWIuIFRoZXJlIGFyZSBtYW55LCBtYW55IHJlc291cmNlcy48L3A+CjxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gdGhlIENHV2ViUHVzaCBtb2R1bGUgaXMgY3VycmVudGx5IG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyBtb2R1bGUgYXMgdGhleSBib3RoIHByb3ZpZGUgdGhlaXIgb3duIHNlcnZpY2Ugd29ya2VycywgYW5kIG9ubHkgb25lIHNlcnZpY2Ugd29ya2VyIGlzIHBlcm1pdHRlZCBwZXIgc2l0ZS48L3A+Cgo8aDM+VGhlIFNlcnZpY2UgV29ya2VyPC9oMz4KPHA+VGhlIHNlcnZpY2Ugd29ya2VyIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHdoZW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhbmdlczo8L3A+Cjx1bD4KICAgPGxpPlRoZSBzZXJ2aWNlIHdvcmtlciB0ZW1wbGF0ZSBjaGFuZ2VzPC9saT4KICAgPGxpPkFueSBmaWxlIHdpdGhpbiB0aGUgQ01TTVMgYXNzZXRzIGRpcmVjdG9yeSBjaGFuZ2VzPC9saT4KICAgPGxpPlRoZSBvZmZsaW5lIHBhZ2UgKGlmIGl0IGV4aXN0cykgY2hhbmdlcy48L2xpPgogICA8bGk+VGhlIHN0YXRpYyBhc3NldCBsaXN0IHNwZWNpZmVpZCBpbiB0aGUgYWRtaW4gcGFuZWwgY2hhbmdlczwvbGk+CiAgIDxsaT5BbiBhZGRvbiwgc3VjaCBhcyBDR1dlYlB1c2ggaW5kaWNhdGVzIHRoYXQgaXQncyBjb2RlIGhhcyBjaGFuZ2VkLjwvbGk+CjwvdWw+CjxwPkl0J3MgYmVoYXZpb3IgaXMgdG8gY2FjaGUgdGhlIHN0YXRpYyBVUkxzIHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIHBhbmVsIG9uIGluc3RhbGxhdGlvbiwgYW5kIHRoZW4gZG8gYSBjaGFjaGUtdGhlbi1uZXR3b3JrLXRoZW4tY2FjaGUgYXBwcm9hY2ggZm9yIGFueSByZXF1ZXN0ZWQgYXNzZXRzIGJlbG93IHRoZSBDTVNNUyBhc3NldHMgZGlyZWN0b3J5LiAgIFRoaXMgYWxsb3dzIHlvdSB0byB1c2Ugc3RhdGljIGFzc2V0cyBhcyB5b3Ugd291bGQsIHdpdGhvdXQgaGF2aW5nIHRvIGV4cGxpY2l0bHkgd29ycnkgYWJvdXQgdXBkYXRpbmcgYSBsaXN0IG9mIGZpbGVzIHRvIGNhY2hlPC9wPgo8cD5PbGQgY2FjaGVzIGFyZSByZW1vdmVkIGV2ZXJ5IHRpbWUgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIGFjdGl2YXRlZCBhbmQvb3IgdGhlIHNlcnZpY2Ugd29ya2VyIGNoYW5nZXMgZm9yIHBlcmZvcm1hbmNlIGFuZCB0byByZWR1Y2Ugc3RvcmFnZSByZXF1aXJlbWVudHMuPC9wPgoKPGgzPkZpbGUgR2VuZXJhdGlvbjwvaDM+CjxwPlRoZSBtYW5pZmVzdCBqc29uIGZpbGUgaXMgZ2VuZXJhdGVkIGVhY2ggdGltZSB5b3UgY2xpY2sgdGhlIHN1Ym1pdCBidXR0b24gb24gdGhlIHNldHRpbmdzIHRhYiBvZiB0aGUgbW9kdWxlJ3MgYWRtaW4gcGFuZWwuPC9wPgo8cD5UaGUgc2VydmljZSB3b3JrZXIgamF2YXNjcmlwdCBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IG9uIHJlcXVlc3QgaWYgY2VydGFpbiBjb25kaXRpb25zIGhhdmUgYmVlbiBtZXQuICBUbyBmb3JjZSBpdCB0byBiZSByZWdlbmVyYWVkIHlvdSBjYW4gdG91Y2ggb3IgY2hhbmdlIGEgZmlsZSBpbiB5b3VyIGFzc2V0cyBkaXJlY3RvcnkuPC9wPgoKPGgzPlRoZSBPZmZsaW5lIFBhZ2UgVHlwZTwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgbmV3IGNvbnRlbnQgdHlwZSBjYWxsZWQgIkNHU2ltcGxlUFdBIE9mZmxpbmUgUGFnZSIgdGhhdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHBhZ2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG9mZmxpbmUuICBJZiBhIHBhZ2Ugb2YgdGhpcyB0eXBlIGV4aXN0cywgaXQgaXMgY2FjaGVkIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlci4gIE9ubHkgb25lIHBhZ2Ugb2YgdGhpcyB0eXBlIGlzIHBlcm1pdHRlZC48L3A+CjxwPkNyZWF0aW5nIGFuIG9mZmxpbmUgcGFnZSByZXF1aXJlcyBzcGVjaWFsIGNvbnNpZGVyYXRpb246PC9wPgo8dWxsPgogICA8bGk+QWxsIGFzc2V0cyB1c2VkIGJ5IHRoZSBvZmZsaW5lIHBhZ2UgbXVzdCBiZSBjYWNoZWQgYnkgdGhlIHNlcnZpY2Ugd29ya2VyCiAgICAgICA8cD5UaGlzIG1lYW5zIHRoYXQgZWFjaCBhc3NldCB1c2VkIGJ5IHRoZSBvZmZsaW5lIHBhZ2UgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlICJTdGF0aWMgQXNzZXRzIiB0YWIgb2YgdGhpcyBtb2R1bGUncyBhZG1pbiBwYW5lbC48L3A+CiAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEl0IGFsc28gbWVhbnMgdGhhdCB5b3UgcHJvYmFibHkgY2Fubm90IHVzZSB7Y21zX3N0eWxlc2hlZXR9IGluIHRoZSBwYWdlIHRlbXBsYXRlIGZvciB0aGUgZXJyb3IgcGF0aCBhcyB0aGlzIHBhdGggaXMgZHluYW1pYy4gIEkgc3VnZ2VzdCB5b3UgdXNlIHN0YXRpYyBzdHlsZXNoZWV0cyB1bmRlciB0aGUgYXNzZXRzIHBhdGggZm9yIHRoaXMgcGFnZS48L3A+CiAgIDwvbGk+CiAgIDxsaT5UaGUgb2ZmbGluZSBwYWdlIHNob3VsZCBub3QgbWFrZSBhbnkgYWpheCByZXF1ZXN0cywgb3Igc3VibWl0IGZvcm0gcmVzdWx0cyAodGhleSB3b3VsZCBwcm9iYWJseSBmYWlsIGFueXdheXMpPC9saT4KICAgPGxpPkl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIG9mZmxpbmUgcGFnZSBoYXZlIGEgcmVsb2FkIGJ1dHRvbiBvciBsaW5rIHRvIGFsbG93IHJlbG9hZGluZyB0aGUgd2Vic2l0ZSB3aGVuIHRoZSBkZXZpY2UgY29tZXMgYmFjayBvbmxpbmUuPC9saT4KPC91bD4KPGxpPkl0IGlzIHBvc3NpYmxlIHRvIHVzZSBqYXZhc2NyaXB0IGZ1bmN0aW9uYWxpdHkgaW4gdGhlIG9mZmxpbmUgcGFnZSBhcyBsb25nIGFzIHRoYXQgZnVuY3Rpb25hbGl0eSBkb2VzIG5vdCByZWx5IG9uIGV4dGVybmFsIHNlcnZpY2VzLjwvbGk+Cgo8aDM+Q2FjaGluZzwvaDM+CjxwPlRoaXMgc2VydmljZSB3b3JrZXIgaW1wbGVtZW50cyBjYWNoaW5nIG9mIGFzc2V0cy4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBpZiB5b3VyIGFwcGxpY2F0aW9uIHdvcmtzIG9mZmxpbmUuICBUaGVyZSBhcmUgdHdvIHByaW1hcnkgbWV0aG9kcyBvZiBjYWNoaW5nOjwvcD4KPHVsPgogICAgPGxpPmFic29sdXRlIGNhY2hpbmcgb2Ygc3RhdGljIGFzc2V0cwogICAgICAgIDxwPlRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbCBhbGxvd3MgbGlzdGluZyBhIHNldCBvZiBzdGF0aWMgYXNzZXRzIHRoYXQgc2hvdWxkIGJlIGNhY2hlZCB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBpbnN0YWxsZWQuICBZb3Ugc2hvdWxkIGxpc3QgYWxsIGFzc2V0cyByZXF1aXJlZCBmb3IgeW91ciBhcHBsaWNhdGlvbiB0byBvcGVyYXRlIHdoZW4gb2ZmbGluZS48L3A+CiAgICA8L2xpPgogICAgPGxpPmR5bmFtaWMgY2FjaGluZyBvZiByZXNvdXJjZXMKICAgICAgICA8cD5XaGVuIGEgcmVzb3VyY2UgaXMgcmVxdWVzdGVkLCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgY2FjaGUsIHRoZW4gaXQgd2lsbCBiZSBmZXRjaGVkIGFuZCB0aGVuIGFkZGVkIHRvIHRoZSBjYWNoZSBmb3Igc3Vic2VxdWVudCByZXF1ZXN0cy4gIFRoaXMgaXMgdG8gYWlkZSBpbiB1c2Ugd2hlbiBvZmZsaW5lLCBidXQgcHJpbWFyaWx5IHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIHlvdXIgYXBwbGljYXRpb24gb24gbG93ZXIgc3BlZWQgbmV0d29ya3MuPC9wPgogICAgPC9saT4KPC91bD4KPHA+VGhlIGNhY2hlIGlzIGFsd2F5cyB1cGRhdGVkIHdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2VuZXJhdGVkLCBzbyBpZiB5b3UgY2hhbmdlIGFuIGFzc2V0IE9SIHJlZ2VuZXJhdGUgdGhlIHNlcnZpY2Ugd29ya2VycywgZWFjaCBjbGllbnQgd2lsbCBzb29uIGNsZWFyIHRoZWlyIGNhY2hlcyBhbmQgc3RhcnQgcmVidWlsZGluZyBpdC48L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9mcm9udGVuZHVzZXJzIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KPGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR0V4dGVuc2lvbnMgPSZndDsgMS42MzwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMi4xPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAxLjIKICAgIDx1bD4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IGluIHRoZSBwcmVmZXJlbmNlcyB0byBlbmFibGUgb3IgZGlzYWJsZSBhdXRvIGNhY2hpbmcgb2YgYXNzZXRzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZC48L2xpPgogICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gc2NhbiB0aGUgcmVuZGVyZWQgb2ZmbGluZSBwYWdlIGZvciBzdGF0aWMgYXNzZXRzIHRvIGNhY2hlLjwvbGk+CiAgICA8bGk+SW1wcm92ZW1lbnRzIHRvIHRoZSBhdXRvIGdlbmVyYXRvci48L2xpPgogICAgPGxpPkZpeGVzIHRvIGdlbmVyYXRpbmcgdGhlIHN0YXJ0X3VybCBwb3J0aW9uIG9mIHRoZSBtYW5pZmVzdC48L2xpPgogICAgPGxpPk1vcmUuLi48L2xpPgogICAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xCiAgICA8dWw+CiAgICA8bGk+Q0hBTkdFOiBJbnRyb2R1Y2VzIHRoZSBuZXcgJ2pzJyBhY3Rpb24gdGhhdCBpcyByZXF1aXJlZCB0byBhZGQgdGhlIHN0YXJ0dXAgamF2YXNjcmlwdC48L2xpPgogICAgPGxpPk5vdyBhZGQgdGhlIGFiaWxpdHkgZm9yIG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgYWRkb25zLCBhbmQgb3RoZXIgaW5pdGlhbGl6YXRpb24gc2NyaXB0LjwvbGk+CiAgICA8bGk+QWRkcyBhIFNjcmlwdENvbWJpbmVyIGNsYXNzIHRvIGNvbWJpbmUgYW5kIGNhY2hlIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0LjwvbGk+CiAgICA8bGk+TWlub3IgaW1wcm92ZW1lbnRzIGluIHRoZSBzZXJ2aWNlIHdvcmtlciBzdHVmZi48L2xpPgogICAgPGxpPk1pbm9yIGJ1ZyBmaXguPC9saT4KICAgIDwvdWw+CjwvbGk+CjwvdWw+CjxiciAvPg==]]></about>
	<description><![CDATA[-- Missing Languagestring: moddescription --]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.63</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_ajax_scan_assets.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIENHU2ltcGxlUFdBXE9mZmxpbmVQYWdlVHlwZTsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSApIGV4aXQ7CgokaXNfdmFsaWRfaHJlZiA9IGZ1bmN0aW9uKHN0cmluZyAkaHJlZiwgc3RyaW5nICR0eXBlID0gbnVsbCkgewogICAgLy8gbXVzdCBiZSBhbiBodHRwIHVybCBvciBhIHJlbGF0aXZlIHVybCAoc3RhcnQgd2l0aCAuLCAuLyBvciAvKQogICAgaWYoIHN0YXJ0c3dpdGgoJGhyZWYsJ2h0dHAnKSB8fCBzdGFydHN3aXRoKCRocmVmLCcvJykgfHwgc3RhcnRzd2l0aCgkaHJlZiwnLi8nKSApIHsKICAgICAgICAvLyBub3RoaW5nCiAgICB9IGVsc2UgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkdXJsID0gbmV3IGNtc191cmwoc3RydG9sb3dlcigkaHJlZikpOwogICAgJGZuID0gYmFzZW5hbWUoJHVybC0+Z2V0X3BhdGgoKSk7CiAgICAkZm5fZXh0ID0gc3Vic3RyKHN0cnJjaHIoJGZuLCcuJyksIDEpOwogICAgaWYoICEkZm4gfHwgISRmbl9leHQgKSByZXR1cm47CgogICAgc3dpdGNoKCAkdHlwZSApIHsKICAgIGNhc2UgJ2ltYWdlJzoKICAgICAgICAvLyB0aGUgZmlsZW5hbWUgcG9ydGlvbiBtdXN0IGJlIG9uZSBvZiBwbmcsIGdpZiwgYm1wLCB3ZWJwLCBzdmcsIGpwZywganBlZyBBTkQgdGhlcmUgbXVzdCBiZSBubyBhcmd1bWVudHMKICAgICAgICBpZiggaW5fYXJyYXkoJGZuX2V4dCxbJ3BuZycsJ2dpZicsJ2JtcCcsJ3dlYnAnLCdzdmcnLCdqcGcnLCdqcGVnJ10pICkgcmV0dXJuIHRydWU7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnY3NzJzoKICAgICAgICAvLyB0aGUgZmlsZW5hbWUgcG9ydGlvbiBtdXN0IGJlIG9uZSBvZiBjc3MKICAgICAgICByZXR1cm4gJGZuX2V4dCA9PSAnY3NzJzsKCiAgICBjYXNlICdqcyc6CiAgICAgICAgLy8gdGhlIGZpbGVuYW1lIHBvcnRpb24gbXVzdCBiZSBvbmUgb2YganMKICAgICAgICByZXR1cm4gJGZuX2V4dCA9PSAnanMnOwogICAgfQp9OwoKdHJ5IHsKICAgICRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKICAgICRkZmx0X3BhZ2VpZCA9ICRvcHMtPkdldERlZmF1bHRDb250ZW50KCk7CiAgICBpZiggJGRmbHRfcGFnZWlkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCBnZXQgZGVmYXVsdCBjb250ZW50IGlkJyk7CgogICAgLy8gZ2V0IHRoZSBjb250ZW50IG9iamVjdCBhbmQgdXJsCiAgICAkb2JqID0gJG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoT2ZmbGluZVBhZ2VUeXBlOjpQQUdFX0FMSUFTKTsKICAgIGlmKCAhJG9iaiApIGRlYnVnX3RvX2xvZygnY291bGQgbm90IGdldCBvZmZsaW5lIHBhZ2UnKTsKICAgIGlmKCAhJG9iaiApICRvYmogPSAkb3BzLT5Mb2FkQ29udGVudEZyb21JZCggJGRmbHRfcGFnZWlkICk7CiAgICAkdXJsID0gJG9iai0+R2V0VXJsKCk7CgogICAgLy8gY3VybCB0byBnZXQgdGhlIHVybAogICAgJHJlcSA9IG5ldyBjbXNfaHR0cF9yZXF1ZXN0KCk7CiAgICAkaHRtbCA9ICRyZXEtPmV4ZWN1dGUoJHVybCk7CiAgICBpZiggJHJlcS0+Z2V0U3RhdHVzKCkgIT0gMjAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdQcm9ibGVtIGZldGNoaW5nIEhUTUwgZnJvbSAnLiR1cmwuJyA9ICcuJHJlcS0+Z2V0U3RhdHVzKCkpOwoKICAgIC8vIHBhcnNlIHRoZSBjb250ZW50CiAgICAkdXJscyA9IG51bGw7CiAgICAkeG1sID0gbmV3IERvbURvY3VtZW50KCk7CiAgICBAJHhtbC0+bG9hZEhUTUwoJGh0bWwpOwogICAgLy8kbWV0YXMgPSAkeG1sLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWV0YScpOwogICAgJGltZ3MgPSAkeG1sLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7CiAgICBmb3JlYWNoKCAkaW1ncyBhcyAkaW1nICkgewogICAgICAgICRzcmMgPSAkaW1nLT5nZXRBdHRyaWJ1dGUoJ3NyYycpOwogICAgICAgIGlmKCAhJHNyYyApIGNvbnRpbnVlOwogICAgICAgIGlmKCAhJGlzX3ZhbGlkX2hyZWYoJHNyYywnaW1hZ2UnKSApICR1cmxzW10gPSAkc3JjOwogICAgfQogICAgJGxpbmtzID0gJHhtbC0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTsKICAgIGZvcmVhY2goICRsaW5rcyBhcyAkbGluayApIHsKICAgICAgICAkcmVsID0gJGxpbmstPmdldEF0dHJpYnV0ZSgncmVsJyk7CiAgICAgICAgaWYoICEkcmVsICkgY29udGludWU7CiAgICAgICAgJHJlbCA9IHN0cnRvbG93ZXIoJHJlbCk7CiAgICAgICAgJGhyZWYgPSAkbGluay0+Z2V0QXR0cmlidXRlKCdocmVmJyk7CiAgICAgICAgaWYoICEkaHJlZiApIGNvbnRpbnVlOwogICAgICAgIGlmKCAkcmVsID09ICdzdHlsZXNoZWV0JyApIHsKICAgICAgICAgICAgaWYoICRpc192YWxpZF9ocmVmKCRocmVmLCdjc3MnKSApICR1cmxzW10gPSAkaHJlZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiggaW5fYXJyYXkoJHJlbCxbJ3N0YXJ0JywncHJldicsJ25leHQnLCdjYW5vbmljYWwnLCdtYW5pZmVzdCddKSApIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggISRpc192YWxpZF9ocmVmKCRocmVmKSApICR1cmxzW10gPSAkaHJlZjsKICAgICAgICB9CiAgICB9CiAgICAkc2NyaXB0cyA9ICR4bWwtPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsKICAgIGZvcmVhY2goICRzY3JpcHRzIGFzICRzY3JpcHQgKSB7CiAgICAgICAgJHNyYyA9ICRzY3JpcHQtPmdldEF0dHJpYnV0ZSgnc3JjJyk7CiAgICAgICAgaWYoICEkc3JjICkgY29udGludWU7CiAgICAgICAgaWYoICRpc192YWxpZF9ocmVmKCRzcmMsJ2pzJykgKSAkdXJsc1tdID0gJHNyYzsKICAgIH0KCiAgICAvLyBmb3IgZWFjaCBtZXRhIHRhZwogICAgLy8gZm9yIGVhY2ggc2NyaXB0CiAgICAvLyBmb3IgZWFjaCBsaW5rIHRhZwogICAgY2dlX3V0aWxzOjpzZW5kX2FqYXhfYW5kX2V4aXQoJHVybHMpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgIGhlYWRlcigiSFRUUC8xLjAgNTAwIFNlcnZlciBlcnJvciIpOwogICAgaGVhZGVyKCJTdGF0dXM6IDUwMCBTZXJ2ZXIgZXJyb3IiKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CmlmKCAhJGdDbXMgKSBleGl0OwovLyBpZiggISRnQ21zLT5pc19odHRwc19yZXF1ZXN0KCkgKSByZXR1cm47IC8vIGh0dHBzIG9ubHkKCiRnZXRfc2l6ZSA9IGZ1bmN0aW9uKCAkc3RyICkgewogICAgJHRtcCA9IGV4cGxvZGUoJ3gnLCRzdHIsMik7CiAgICByZXR1cm4gKGludCkgJHRtcFswXTsKfTsKCi8vIG91dHB1dCB0aGUgbWV0YSB0YWcgZm9yIHRoZSBzaXRlbWFwLnhtbAokcHJlZnMgPSAkdGhpcy0+c3RvcmFnZSgpLT5sb2FkUHJlZnMoKTsKCi8vIGZpbmQgdGhlIHNtYWxsZXN0IGljb24gdGhhdCBpcyA+IDE4MHgxODAKJGljb25fc3JjID0gbnVsbDsKJGljb25fc2l6ZSA9IDEwMDAwMDA7CmlmKCAkcHJlZnMtPmljb25zICkgewogICAgZm9yZWFjaCggJHByZWZzLT5pY29ucyBhcyAkaWNvbiApIHsKICAgICAgICAkdF9zaXplID0gJGdldF9zaXplKCRpY29uWydzaXplcyddKTsKICAgICAgICBpZiggJHRfc2l6ZSA+PSAxODAgJiYgJHRfc2l6ZSA8ICRpY29uX3NpemUgKSB7CiAgICAgICAgICAgICRpY29uX3NyYyA9ICRpY29uWydzcmMnXTsKICAgICAgICAgICAgJGljb25fc2l6ZSA9ICR0X3NpemU7CiAgICAgICAgfQogICAgfQp9CgovLyBnZXQgYWRkb24gc3RhcnR1cCBjb2RlCiR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2RlZmF1bHQudHBsJyksIG51bGwsIG51bGwsICRzbWFydHkpOwokdHBsLT5hc3NpZ24oJ3ByZWZzJywgJHByZWZzKTsKJHRwbC0+YXNzaWduKCdtYW5pZmVzdF91cmwnLCBDTVNfUk9PVF9VUkwuJy8nLkNHU2ltcGxlUFdBOjpNQU5JRkVTVF9GSUxFTkFNRSk7CiR0cGwtPmFzc2lnbigibWFuaWZlc3RfcGF0aCIsICcvJy5DR1NpbXBsZVBXQTo6TUFOSUZFU1RfRklMRU5BTUUpOwppZiggJGljb25fc3JjICkgJHRwbC0+YXNzaWduKCdpY29uXzE4MCcsICRjb25maWdbJ2Fzc2V0c191cmwnXS4nLycuJGljb25fc3JjKTsKJHRwbC0+ZGlzcGxheSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgY2dlX2ltYWdlOyAvLyBDR0V4dGVuc2lvbnMKCnRyeSB7CiAgICAkcHJlZnMgPSAkdGhpcy0+c3RvcmFnZSgpLT5sb2FkUHJlZnMoKTsKCiAgICBpZiggIWVtcHR5KCRfUE9TVCkgKSB7CgogICAgICAgIGlmKCBpc3NldCgkX1BPU1RbJ3N1Ym1pdCddKSApIHsKICAgICAgICAgICAgLy8gc2F2ZSBzZXR0aW5ncwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGFyciA9IG51bGw7CiAgICAgICAgICAgICAgICAkYXJyWyduYW1lJ10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ25hbWUnXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnc2hvcnRfbmFtZSddID0gZmlsdGVyX3ZhciggJF9QT1NUWydzaG9ydF9uYW1lJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICRhcnJbJ2Rlc2NyaXB0aW9uJ10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ2Rlc2NyaXB0aW9uJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICRhcnJbJ2JhY2tncm91bmRfY29sb3InXSA9IGZpbHRlcl92YXIoICRfUE9TVFsnYmFja2dyb3VuZF9jb2xvciddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICAkYXJyWyd0aGVtZV9jb2xvciddID0gZmlsdGVyX3ZhciggJF9QT1NUWyd0aGVtZV9jb2xvciddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICAkYXJyWydkaXNwbGF5J10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ2Rpc3BsYXknXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnb3JpZW50YXRpb24nXSA9IGZpbHRlcl92YXIoICRfUE9TVFsnb3JpZW50YXRpb24nXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnaW5jbHVkZV9zdyddID0gY21zX3RvX2Jvb2woICRfUE9TVFsndXNlX3N3J10gKTsKICAgICAgICAgICAgICAgICRhcnJbJ2luY2x1ZGVfaW9zbWV0YSddID0gY21zX3RvX2Jvb2woICRfUE9TVFsndXNlX2lvc21ldGEnXSApOwogICAgICAgICAgICAgICAgJGFyclsnYXV0b2NhY2hlJ10gPSBjbXNfdG9fYm9vbCggJF9QT1NUWydhdXRvY2FjaGUnXSApOwogICAgICAgICAgICAgICAgJGFyclsnc3RhcnRfcGFnZSddID0gKGludCkgJF9QT1NUWydzdGFydHBhZ2UnXTsKCiAgICAgICAgICAgICAgICAkbWFzdGVyX2ljb24gPSAkYXJyWydtYXN0ZXJfaWNvbiddID0gZmlsdGVyX3ZhciggJF9QT1NUWydtYXN0ZXJfaWNvbiddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICBpZiggISRtYXN0ZXJfaWNvbiApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfbm9pbWFnZScpICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgICAgICAgICAgICAgJG1hc3Rlcl9mbiA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLicvJy4kbWFzdGVyX2ljb247CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19maWxlKCAkbWFzdGVyX2ZuICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfZmlsZW5vdGZvdW5kJykgKTsKCiAgICAgICAgICAgICAgICAgICAgJGRlc2lyZWRfc2l6ZXMgPSBbIDEwMjQsIDUxMiwgMjU2LCAxOTIsIDE4MCwgMTY3LCAxNTIsIDE0NCwgMTI4LCA2NCwgMTYgXTsKICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9IGdldGltYWdlc2l6ZSgkbWFzdGVyX2ZuKTsKICAgICAgICAgICAgICAgICAgICBpZiggISRzaXplICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX25vaW1hZ2VzaXplJykgKTsKCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAoIWVtcHR5KCRzaXplWydtaW1lJ10pKSA/ICRzaXplWydtaW1lJ10gOiBudWxsOwogICAgICAgICAgICAgICAgICAgICRvcmlnX3dpZHRoID0gKGludCkgJHNpemVbMF07CiAgICAgICAgICAgICAgICAgICAgJG9yaWdfaGVpZ2h0ID0gKGludCkgJHNpemVbMV07CiAgICAgICAgICAgICAgICAgICAgaWYoICRvcmlnX3dpZHRoIDwgNTEyICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX2ltYWdlc2l6ZScsICRkZXNpcmVkX3NpemVzWzBdICkgKTsKICAgICAgICAgICAgICAgICAgICBpZiggJG9yaWdfd2lkdGggIT0gJG9yaWdfaGVpZ2h0ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX2ltZ25vdHNxdWFyZScpICk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkdHlwZSB8fCAhc3RhcnRzd2l0aCgkdHlwZSwnaW1hZ2UvJykgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfaW1hZ2V0eXBlJykgKTsKICAgICAgICAgICAgICAgICAgICAkZXh0ID0gc3Vic3RyKHN0cnJjaHIoJG1hc3Rlcl9mbiwgJy4nKSwgMSk7CgogICAgICAgICAgICAgICAgICAgIC8vIG5vdywgZ2l2ZW4gc29tZSBzaXplcy4uLiB3ZSB0cnkgdG8gZ2VuZXJhdGUgc29tZSBpY29ucwogICAgICAgICAgICAgICAgICAgICRkZXN0cGF0aCA9ICRjb25maWdbJ2Fzc2V0c19wYXRoJ10uJy9pY29ucyc7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19kaXIoICRkZXN0cGF0aCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzID0gbWtkaXIoICRkZXN0cGF0aCApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfbWtkaXInLCRkZXN0cGF0aCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc193cml0YWJsZSggJGRlc3RwYXRoICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfd3JpdGFibGUnKSApOwogICAgICAgICAgICAgICAgICAgICRhcnJbJ2ljb25zJ10gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICRkZXNpcmVkX3NpemVzIGFzICRzaXplICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggJG9yaWdfd2lkdGggPCAkc2l6ZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSAicHdhX2ljb25feyRzaXplfS57JGV4dH0iOwogICAgICAgICAgICAgICAgICAgICAgICAkb3V0ZmlsZSA9ICIkZGVzdHBhdGgvJGZuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2dlX2ltYWdlOjpyZXNpemUoICRtYXN0ZXJfZm4sICRvdXRmaWxlLCAkc2l6ZSwgJHNpemUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydzcmMnXSA9ICRjb25maWdbJ2Fzc2V0c19kaXInXS4iL2ljb25zL3skZm5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlY1snc2l6ZXMnXT0gInskc2l6ZX14eyRzaXplfSI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHJlY1snd2lkdGgnXSA9ICRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAvLyRyZWNbJ2hlaWdodCddID0gJHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZWNbJ3R5cGUnXSA9ICR0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAkYXJyWydpY29ucyddW10gPSAkcmVjOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcHJlZnMgPSBQcmVmczo6Y3JlYXRlX2Zyb21fYXJyYXkoICRhcnIgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlKCktPnNhdmVQcmVmcyggJHByZWZzICk7CgogICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIG1hbmlmZXN0LnhtbAogICAgICAgICAgICAgICAgJHRoaXMtPmdlbmVyYXRvcigpLT5nZW5lcmF0ZU1hbmlmZXN0KCAkcHJlZnMgKTsKCiAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBzZXJ2aWNlIHdvcmtlcgogICAgICAgICAgICAgICAgJHRoaXMtPmdlbmVyYXRlU2VydmljZVdvcmtlciggJHByZWZzLCB0aW1lKCkgKTsKCiAgICAgICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93TWVzc2FnZSggJHRoaXMtPkxhbmcoJ21zZ19zYXZlZCcpICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCAkZS0+R2V0TWVzc2FnZSgpICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2UgaWYoICRfUE9TVFsnc3VibWl0X3N0YXRpYyddICkgewogICAgICAgICAgICAvLyBwYXJzZSBhbmQgc2F2ZSBzdGF0aWMgdGV4dC4KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzdGF0aWNfdGV4dCA9IGZpbHRlcl92YXIoICRfUE9TVFsnc3RhdGljJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlKCktPnNldFN0YXRpY1RleHQoICRzdGF0aWNfdGV4dCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycyggJGUtPkdldE1lc3NhZ2UoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRzdGF0aWNfdGV4dCA9ICR0aGlzLT5zdG9yYWdlKCktPmdldFN0YXRpY1RleHQoKTsKICAgICRkaXNwbGF5X2xpc3QgPQogICAgICAgIFsKICAgICAgICAgICAgUHJlZnM6OkRJU1BMQVlfU1RBTkRBTE9ORSA9PiAkdGhpcy0+TGFuZygnZGlzcGxheV9zdGFuZGFsb25lJyksCiAgICAgICAgICAgIFByZWZzOjpESVNQTEFZX0JST1dTRVIgPT4gJHRoaXMtPkxhbmcoJ2Rpc3BsYXlfYnJvd3NlcicpLAogICAgICAgICAgICBQcmVmczo6RElTUExBWV9GVUxMU0NSRUVOID0+ICR0aGlzLT5MYW5nKCdkaXNwbGF5X2Z1bGxzY3JlZW4nKSwKICAgICAgICAgICAgUHJlZnM6OkRJU1BMQVlfTUlOSU1BTFVJID0+ICR0aGlzLT5MYW5nKCdkaXNwbGF5X21pbmltYWx1aScpLAogICAgICAgIF07CiAgICAkb3JpZW50YXRpb25fbGlzdCA9CiAgICAgICAgWwogICAgICAgICAgICBQcmVmczo6T1JJRU5UQVRJT05fREZMVCA9PiAkdGhpcy0+TGFuZygnb3JpZW50YXRpb25fZGZsdCcpLAogICAgICAgICAgICBQcmVmczo6T1JJRU5UQVRJT05fUE9SVFJBSVQgPT4gJHRoaXMtPkxhbmcoJ29yaWVudGF0aW9uX3BvcnRyYWl0JyksCiAgICAgICAgICAgIFByZWZzOjpPUklFTlRBVElPTl9MQU5EU0NBUEUgPT4gJHRoaXMtPkxhbmcoJ29yaWVudGF0aW9uX2xhbmRzY2FwZScpLAogICAgICAgIF07CiAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCAnZGVmYXVsdGFkbWluLnRwbCcpICk7CiAgICAkdHBsLT5hc3NpZ24oJ3ByZWZzJywkcHJlZnMpOwogICAgJHRwbC0+YXNzaWduKCdkaXNwbGF5X2xpc3QnLCRkaXNwbGF5X2xpc3QpOwogICAgJHRwbC0+YXNzaWduKCdvcmllbnRhdGlvbl9saXN0Jywkb3JpZW50YXRpb25fbGlzdCk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXRpY190ZXh0Jywkc3RhdGljX3RleHQpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycyggJGUtPkdldE1lc3NhZ2UoKSApOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.js.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CmlmKCAhJGdDbXMgKSBleGl0OwoKZWNobyAkdGhpcy0+Z2V0SW5pdGlhbGl6YXRpb25TY3JpcHQoKTsK]]></data>
	</file>
	<file>
	  <filename>/action.manifest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQokaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24nKTsKCiR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ21hbmlmZXN0LnRwbCcpICk7CiR0cGwtPmRpc3BsYXkoKTsKCmV4aXQ7]]></data>
	</file>
	<file>
	  <filename>/CGSimplePWA.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIENHU2ltcGxlUFdBXFByZWZzOwp1c2UgQ0dTaW1wbGVQV0FcT2ZmbGluZVBhZ2VUeXBlOwp1c2UgQ0dTaW1wbGVQV0FcU3RvcmFnZTsKdXNlIENHU2ltcGxlUFdBXEdlbmVyYXRvcjsKdXNlIENHU2ltcGxlUFdBXFNjcmlwdENvbWJpbmVyOwp1c2UgQ0dTaW1wbGVQV0FcU2VydmljZVdvcmtlckFkZG9uOwp1c2UgQ01TTVNcSG9va01hbmFnZXI7CgpmaW5hbCBjbGFzcyBDR1NpbXBsZVBXQSBleHRlbmRzIENHRXh0ZW5zaW9ucwp7CiAgICBjb25zdCBNQU5JRkVTVF9GSUxFTkFNRSA9ICdjZ3B3YV9tYW5pZmVzdC5qc29uJzsKICAgIGNvbnN0IFdPUktFUl9GSUxFTkFNRSA9ICdjZ3B3YV9zZXJ2aWNld29ya2VyLmpzJzsKCiAgICBwcml2YXRlICRzZXJ2aWNlV29ya2VyQWRkb25zOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgc3RhdGljICRfaW5pdGlhbGl6ZWQ7CiAgICAgICAgaWYoICRfaW5pdGlhbGl6ZWQgKSByZXR1cm47CiAgICAgICAgJF9pbml0aWFsaXplZCA9IHRydWU7CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsKCiAgICAgICAgJGNvbnRlbnRvcHMgPSBDb250ZW50T3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCk7CgogICAgICAgICRvYmogPSBuZXcgQ21zQ29udGVudFR5cGVQbGFjZWhvbGRlcigpOwogICAgICAgICRvYmotPmNsYXNzID0gJ0NHU2ltcGxlUFdBXFxPZmZsaW5lUGFnZVR5cGUnOwogICAgICAgICRvYmotPnR5cGUgPSAnY2dwd2Ffb2ZmbGluZXBhZ2V0eXBlJzsKICAgICAgICAkb2JqLT5maWxlbmFtZSA9IF9fRElSX18uJy9saWIvY2xhc3MuT2ZmbGluZVBhZ2VUeXBlLnBocCc7CiAgICAgICAgJG9iai0+bG9hZGVkID0gZmFsc2U7CiAgICAgICAgJG9iai0+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkxhbmcoJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJyk7CiAgICAgICAgJGNvbnRlbnRvcHMtPnJlZ2lzdGVyX2NvbnRlbnRfdHlwZSgkb2JqKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjIuMSc7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ21zVmVyc2lvbigpIHsgcmV0dXJuICcyLjIuMTAnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiBUUlVFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgeyByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIFsnQ0dFeHRlbnNpb25zJz0+JzEuNjMnXTsgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKQogICAgewogICAgICAgIHBhcmVudDo6SW5pdGlhbGl6ZUZyb250ZW5kKCk7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OkdldEhlYWRlckhUTUwoKTsKICAgICAgICAkb3V0IC49ICR0aGlzLT5nZXRJbml0aWFsaXphdGlvblNjcmlwdCgpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8vLy8gLS0tLSBNeSBmdW5jdGlvbnMgLS0tLSAvLy8vCgogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlckFkZG9uKCBTZXJ2aWNlV29ya2VyQWRkb24gJG9iaiApCiAgICB7CiAgICAgICAgJHRoaXMtPnNlcnZpY2VXb3JrZXJBZGRvbnNbXSA9ICRvYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNlcnZpY2VXb3JrZXJBZGRvbnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2VydmljZVdvcmtlckFkZG9uczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RvcmFnZSgpCiAgICB7CiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBTdG9yYWdlKCAkdGhpcyApOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2VuZXJhdG9yKCkKICAgIHsKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApICRfb2JqID0gbmV3IEdlbmVyYXRvciggJHRoaXMsICR0aGlzLT5zdG9yYWdlKCkgKTsKICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNjcmlwdENvbWJpbmVyKCkKICAgIHsKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApICRfb2JqID0gbmV3IFNjcmlwdENvbWJpbmVyKCk7CiAgICAgICAgcmV0dXJuICRfb2JqOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRJbml0aWFsaXphdGlvblNjcmlwdCgpCiAgICB7CiAgICAgICAgLy8gdGhpcyB3aWxsIGF1dG8gdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciBmaWxlCiAgICAgICAgLy8gYW5kIGdlbmVyYXRlIHRoZSA8c2NyaXB0PiB0YWdzIHRoYXQgYXJlIG5lZWRlZCB0byBpbml0aWFsaXplIGV2ZXJ5dGhpbmcuCiAgICAgICAgJHByZWZzID0gJHRoaXMtPnN0b3JhZ2UoKS0+bG9hZFByZWZzKCk7CiAgICAgICAgaWYoICRwcmVmcy0+aW5jbHVkZV9zdyApICR0aGlzLT5nZW5lcmF0b3IoKS0+YXV0b0dlbmVyYXRlU2VydmljZVdvcmtlcigkdGhpcy0+Z2V0U2VydmljZVdvcmtlckFkZG9ucygpKTsKCiAgICAgICAgJGNvbWJpbmVyID0gJHRoaXMtPnNjcmlwdENvbWJpbmVyKCk7CiAgICAgICAgJGFkZG9ucyA9ICR0aGlzLT5nZXRTZXJ2aWNlV29ya2VyQWRkb25zKCk7CiAgICAgICAgaWYoICFlbXB0eSgkYWRkb25zKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGFkZG9ucyBhcyAkYWRkb24gKSB7CiAgICAgICAgICAgICAgICAkbGlicyA9ICRhZGRvbi0+Z2V0TGlicmFyeUZpbGVzKCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkbGlicyBhcyAkbGliICkgewogICAgICAgICAgICAgICAgICAgICRjb21iaW5lci0+cXVldWVGaWxlKCRsaWIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBxdWV1ZSBvdXIgaW5pdCBzY3JpcHQKICAgICAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdqcy50cGwnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3Jvb3RfdXJsJyxDTVNfUk9PVF9VUkwpOwogICAgICAgICR0cGwtPmFzc2lnbignaW5jbHVkZV9zdycsJHByZWZzLT5pbmNsdWRlX3N3KTsKICAgICAgICAkY29kZSA9ICR0cGwtPmZldGNoKCk7CiAgICAgICAgaWYoICRjb2RlICkgJGNvbWJpbmVyLT5xdWV1ZUNvZGUoJGNvZGUpOwoKICAgICAgICAvLyBhbmQgb3RoZXIgaW5pdGlhbGl6YXRpb24gY29kZQogICAgICAgIGlmKCAhZW1wdHkoJGFkZG9ucykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICRhZGRvbnMgYXMgJGFkZG9uICkgewogICAgICAgICAgICAgICAgJGNvbWJpbmVyLT5xdWV1ZUNvZGUoICRhZGRvbi0+Z2V0U3RhcnR1cENvZGUoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAhJHRoaXMtPmNtcy0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpICkgewogICAgICAgICAgICByZXR1cm4gJGNvbWJpbmVyLT5yZW5kZXJfZm9yX2FkbWluKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY29tYmluZXItPnJlbmRlcigpOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgo8bGk+VmVyc2lvbiAxLjIKICAgIDx1bD4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IGluIHRoZSBwcmVmZXJlbmNlcyB0byBlbmFibGUgb3IgZGlzYWJsZSBhdXRvIGNhY2hpbmcgb2YgYXNzZXRzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZC48L2xpPgogICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gc2NhbiB0aGUgcmVuZGVyZWQgb2ZmbGluZSBwYWdlIGZvciBzdGF0aWMgYXNzZXRzIHRvIGNhY2hlLjwvbGk+CiAgICA8bGk+SW1wcm92ZW1lbnRzIHRvIHRoZSBhdXRvIGdlbmVyYXRvci48L2xpPgogICAgPGxpPkZpeGVzIHRvIGdlbmVyYXRpbmcgdGhlIHN0YXJ0X3VybCBwb3J0aW9uIG9mIHRoZSBtYW5pZmVzdC48L2xpPgogICAgPGxpPk1vcmUuLi48L2xpPgogICAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xCiAgICA8dWw+CiAgICA8bGk+Q0hBTkdFOiBJbnRyb2R1Y2VzIHRoZSBuZXcgJ2pzJyBhY3Rpb24gdGhhdCBpcyByZXF1aXJlZCB0byBhZGQgdGhlIHN0YXJ0dXAgamF2YXNjcmlwdC48L2xpPgogICAgPGxpPk5vdyBhZGQgdGhlIGFiaWxpdHkgZm9yIG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgYWRkb25zLCBhbmQgb3RoZXIgaW5pdGlhbGl6YXRpb24gc2NyaXB0LjwvbGk+CiAgICA8bGk+QWRkcyBhIFNjcmlwdENvbWJpbmVyIGNsYXNzIHRvIGNvbWJpbmUgYW5kIGNhY2hlIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0LjwvbGk+CiAgICA8bGk+TWlub3IgaW1wcm92ZW1lbnRzIGluIHRoZSBzZXJ2aWNlIHdvcmtlciBzdHVmZi48L2xpPgogICAgPGxpPk1pbm9yIGJ1ZyBmaXguPC9saT4KICAgIDwvdWw+CjwvbGk+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/doc/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBxdWljayBhbmQgZWFzeSB3YXkgdG8gdHJhbnNmb3JtIHlvdXIgQ01TTVMgd2Vic2l0ZSBpbnRvIGEgQkFTSUMgUHJvZ3Jlc3NpdmUgV2ViIEFwcGxpY2F0aW9uIChQV0EpLiAgIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGVhc2lseSBhZGQgYW4gaWNvbiB0byB5b3VyIHdlYnNpdGUgdG8gdGhlaXIgbW9iaWxlIGRldmljZSdzIGhvbWUgc2NyZWVuLCBoYW5kbGVzIHdoZW4gdGhlIGRldmljZSBpcyBvZmZsaW5lLCBhbmQgcHJvdmlkZXMgYSBtb3JlIG5hdGl2ZS1leHBlcmllbmNlIGZvciBtb2JpbGUgZGV2aWNlcy48L3A+CjxwPlRoaXMgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBtYW5pZmVzdC5qc29uIGZpbGUsIGFuZCBhc3NvY2lhdGVkIG1ldGEgdGFncyB0byBsaW5rIHRvIHRoZSBtYW5pZmVzdC4gIEl0IHdpbGwgYWxzbyBnZW5lcmF0ZSBtZXRhIHRhZ3MgZm9yIElPUyBkZXZpY2VzIHRvIGFsbG93IHRoZW0gdG8gb3BlcmF0ZSBpbiBhIG1vcmUgbmF0aXZlIHdheS4gICBBbHNvLCB0aGUgbW9kdWxlIHdpbGwgZ2VuZXJhdGUgYSBzZXJ2aWNlIHdvcmtlciB0aGF0IGNhY2hlcyBzdGF0aWMgYXNzZXRzIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UgYW5kIG9mZmxpbmUgbW9kZS48L3A+Cgo8aDM+SG93IGRvIEkgVXNlIGl0PC9oMz4KPHVsPgogICAgPGxpPkluc3RhbGwgdGhlIG1vZHVsZTwvbGk+CiAgICA8bGk+U2V0IHRoZSBtb2R1bGUgc2V0dGluZ3M8L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgc2V0IHN0YXRpYyByZXNvdXJjZXM8L2xpPgogICAgPGxpPkFkZCB0aGUge0NHU2ltcGxlUFdBfSB0YWcgdG8gdGhlIGhlYWQgc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPkFkZCB0aGUge0NHU2ltcGxlUFdBIGFjdGlvbj1qc30gdGFnIHRvIHRoZSBib3R0b20gc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS4gIEp1c3QgYmVmb3JlIDxib2R5PgogICAgICAgIDxwPkl0IGlzIE5PVCByZXF1aXJlZCB0aGF0IHRoaXMgYWN0aW9uIGJlIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdGVtcGxhdGUsIHRob3VnaCBpdCBpcyByZWNvbW1lbmRlZCBmb3IgcGVyZm9ybWFuY2UuPC9wPgogICAgPC9saT4KICAgIDxsaT5PcHRpb25hbGx5IGNyZWF0ZSBhbiBvZmZsaW5lIHBhZ2U8L2xpPgogICAgPGxpPk9wdGlvbmFsbHkgaW5jbHVkZSBzb21lIGphdmFzY3JpcHQgYW5kIHN0eWxpbmcgdG8gZ3VpZGUgdGhlIHVzZXIgaW4gYWRkaW5nIHRoZSBhcHAgdG8gdGhlaXIgaG9tZSBzY3JlZW4uPC9saT4KICAgIDxsaT5PcHRpb25hbGx5IGluY2x1ZGUgc29tZSBqYXZhc2NyaXB0IHRvIGFsbG93IHJlbG9hZGluZyBvZiB0aGUgcGFnZSAoaS5lOiBwdWxsIHRvIHJlbG9hZCk8L2xpPgo8L3VsPgoKPGgzPlJlcXVpcmVtZW50czwvaDM+CjxwPkluIG9yZGVyIHRvIGNyZWF0ZSBhIHByb2dyZXNzaXZlIGFwcGxpY2F0aW9uIHlvdXIgd2Vic2l0ZSBtdXN0IGF0IGEgbWluaW11bSBtZWV0IHRoaXMgcmVxdWlyZW1lbnRzOjwvcD4KPHVsPgogICAgPGxpPllvdXIgYXBwbGljYXRpb24gbXVzdCBiZSBzZXJ2ZWQgdmlhIEhUVFBTPC9saT4KICAgIDxsaT5Zb3VyIGFwcGxpY2F0aW9uIG11c3QgYmUgcmVzcG9uc2l2ZTwvbGk+CiAgICA8bGk+VGhlIENNU01TIHdlYiByb290IGRpcmVjdG9yeSBtdXN0IGJlIHdyaXRhYmxlIGJ5IENNU01TIGFzIHRoZSBtYW5pZmVzdCBhbmQgc2VydmljZSB3b3JrZXIgYXJlIHBsYWNlZCBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuPC9saT4KPC91bD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBXZSByZWNvbW1lbmQgdGhhdCB5b3UgcmVzZWFyY2ggUHJvZ3Jlc3NpdmUgV2ViIEFwcCB0ZWNobm9sb2d5IG9uIHRoZSB3ZWIuIFRoZXJlIGFyZSBtYW55LCBtYW55IHJlc291cmNlcy48L3A+CjxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gdGhlIENHV2ViUHVzaCBtb2R1bGUgaXMgY3VycmVudGx5IG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyBtb2R1bGUgYXMgdGhleSBib3RoIHByb3ZpZGUgdGhlaXIgb3duIHNlcnZpY2Ugd29ya2VycywgYW5kIG9ubHkgb25lIHNlcnZpY2Ugd29ya2VyIGlzIHBlcm1pdHRlZCBwZXIgc2l0ZS48L3A+Cgo8aDM+VGhlIFNlcnZpY2UgV29ya2VyPC9oMz4KPHA+VGhlIHNlcnZpY2Ugd29ya2VyIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHdoZW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhbmdlczo8L3A+Cjx1bD4KICAgPGxpPlRoZSBzZXJ2aWNlIHdvcmtlciB0ZW1wbGF0ZSBjaGFuZ2VzPC9saT4KICAgPGxpPkFueSBmaWxlIHdpdGhpbiB0aGUgQ01TTVMgYXNzZXRzIGRpcmVjdG9yeSBjaGFuZ2VzPC9saT4KICAgPGxpPlRoZSBvZmZsaW5lIHBhZ2UgKGlmIGl0IGV4aXN0cykgY2hhbmdlcy48L2xpPgogICA8bGk+VGhlIHN0YXRpYyBhc3NldCBsaXN0IHNwZWNpZmVpZCBpbiB0aGUgYWRtaW4gcGFuZWwgY2hhbmdlczwvbGk+CiAgIDxsaT5BbiBhZGRvbiwgc3VjaCBhcyBDR1dlYlB1c2ggaW5kaWNhdGVzIHRoYXQgaXQncyBjb2RlIGhhcyBjaGFuZ2VkLjwvbGk+CjwvdWw+CjxwPkl0J3MgYmVoYXZpb3IgaXMgdG8gY2FjaGUgdGhlIHN0YXRpYyBVUkxzIHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIHBhbmVsIG9uIGluc3RhbGxhdGlvbiwgYW5kIHRoZW4gZG8gYSBjaGFjaGUtdGhlbi1uZXR3b3JrLXRoZW4tY2FjaGUgYXBwcm9hY2ggZm9yIGFueSByZXF1ZXN0ZWQgYXNzZXRzIGJlbG93IHRoZSBDTVNNUyBhc3NldHMgZGlyZWN0b3J5LiAgIFRoaXMgYWxsb3dzIHlvdSB0byB1c2Ugc3RhdGljIGFzc2V0cyBhcyB5b3Ugd291bGQsIHdpdGhvdXQgaGF2aW5nIHRvIGV4cGxpY2l0bHkgd29ycnkgYWJvdXQgdXBkYXRpbmcgYSBsaXN0IG9mIGZpbGVzIHRvIGNhY2hlPC9wPgo8cD5PbGQgY2FjaGVzIGFyZSByZW1vdmVkIGV2ZXJ5IHRpbWUgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIGFjdGl2YXRlZCBhbmQvb3IgdGhlIHNlcnZpY2Ugd29ya2VyIGNoYW5nZXMgZm9yIHBlcmZvcm1hbmNlIGFuZCB0byByZWR1Y2Ugc3RvcmFnZSByZXF1aXJlbWVudHMuPC9wPgoKPGgzPkZpbGUgR2VuZXJhdGlvbjwvaDM+CjxwPlRoZSBtYW5pZmVzdCBqc29uIGZpbGUgaXMgZ2VuZXJhdGVkIGVhY2ggdGltZSB5b3UgY2xpY2sgdGhlIHN1Ym1pdCBidXR0b24gb24gdGhlIHNldHRpbmdzIHRhYiBvZiB0aGUgbW9kdWxlJ3MgYWRtaW4gcGFuZWwuPC9wPgo8cD5UaGUgc2VydmljZSB3b3JrZXIgamF2YXNjcmlwdCBmaWxlIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IG9uIHJlcXVlc3QgaWYgY2VydGFpbiBjb25kaXRpb25zIGhhdmUgYmVlbiBtZXQuICBUbyBmb3JjZSBpdCB0byBiZSByZWdlbmVyYWVkIHlvdSBjYW4gdG91Y2ggb3IgY2hhbmdlIGEgZmlsZSBpbiB5b3VyIGFzc2V0cyBkaXJlY3RvcnkuPC9wPgoKPGgzPlRoZSBPZmZsaW5lIFBhZ2UgVHlwZTwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgbmV3IGNvbnRlbnQgdHlwZSBjYWxsZWQgIkNHU2ltcGxlUFdBIE9mZmxpbmUgUGFnZSIgdGhhdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHBhZ2UgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG9mZmxpbmUuICBJZiBhIHBhZ2Ugb2YgdGhpcyB0eXBlIGV4aXN0cywgaXQgaXMgY2FjaGVkIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlci4gIE9ubHkgb25lIHBhZ2Ugb2YgdGhpcyB0eXBlIGlzIHBlcm1pdHRlZC48L3A+CjxwPkNyZWF0aW5nIGFuIG9mZmxpbmUgcGFnZSByZXF1aXJlcyBzcGVjaWFsIGNvbnNpZGVyYXRpb246PC9wPgo8dWxsPgogICA8bGk+QWxsIGFzc2V0cyB1c2VkIGJ5IHRoZSBvZmZsaW5lIHBhZ2UgbXVzdCBiZSBjYWNoZWQgYnkgdGhlIHNlcnZpY2Ugd29ya2VyCiAgICAgICA8cD5UaGlzIG1lYW5zIHRoYXQgZWFjaCBhc3NldCB1c2VkIGJ5IHRoZSBvZmZsaW5lIHBhZ2UgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlICJTdGF0aWMgQXNzZXRzIiB0YWIgb2YgdGhpcyBtb2R1bGUncyBhZG1pbiBwYW5lbC48L3A+CiAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEl0IGFsc28gbWVhbnMgdGhhdCB5b3UgcHJvYmFibHkgY2Fubm90IHVzZSB7Y21zX3N0eWxlc2hlZXR9IGluIHRoZSBwYWdlIHRlbXBsYXRlIGZvciB0aGUgZXJyb3IgcGF0aCBhcyB0aGlzIHBhdGggaXMgZHluYW1pYy4gIEkgc3VnZ2VzdCB5b3UgdXNlIHN0YXRpYyBzdHlsZXNoZWV0cyB1bmRlciB0aGUgYXNzZXRzIHBhdGggZm9yIHRoaXMgcGFnZS48L3A+CiAgIDwvbGk+CiAgIDxsaT5UaGUgb2ZmbGluZSBwYWdlIHNob3VsZCBub3QgbWFrZSBhbnkgYWpheCByZXF1ZXN0cywgb3Igc3VibWl0IGZvcm0gcmVzdWx0cyAodGhleSB3b3VsZCBwcm9iYWJseSBmYWlsIGFueXdheXMpPC9saT4KICAgPGxpPkl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIG9mZmxpbmUgcGFnZSBoYXZlIGEgcmVsb2FkIGJ1dHRvbiBvciBsaW5rIHRvIGFsbG93IHJlbG9hZGluZyB0aGUgd2Vic2l0ZSB3aGVuIHRoZSBkZXZpY2UgY29tZXMgYmFjayBvbmxpbmUuPC9saT4KPC91bD4KPGxpPkl0IGlzIHBvc3NpYmxlIHRvIHVzZSBqYXZhc2NyaXB0IGZ1bmN0aW9uYWxpdHkgaW4gdGhlIG9mZmxpbmUgcGFnZSBhcyBsb25nIGFzIHRoYXQgZnVuY3Rpb25hbGl0eSBkb2VzIG5vdCByZWx5IG9uIGV4dGVybmFsIHNlcnZpY2VzLjwvbGk+Cgo8aDM+Q2FjaGluZzwvaDM+CjxwPlRoaXMgc2VydmljZSB3b3JrZXIgaW1wbGVtZW50cyBjYWNoaW5nIG9mIGFzc2V0cy4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBpZiB5b3VyIGFwcGxpY2F0aW9uIHdvcmtzIG9mZmxpbmUuICBUaGVyZSBhcmUgdHdvIHByaW1hcnkgbWV0aG9kcyBvZiBjYWNoaW5nOjwvcD4KPHVsPgogICAgPGxpPmFic29sdXRlIGNhY2hpbmcgb2Ygc3RhdGljIGFzc2V0cwogICAgICAgIDxwPlRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbCBhbGxvd3MgbGlzdGluZyBhIHNldCBvZiBzdGF0aWMgYXNzZXRzIHRoYXQgc2hvdWxkIGJlIGNhY2hlZCB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBpbnN0YWxsZWQuICBZb3Ugc2hvdWxkIGxpc3QgYWxsIGFzc2V0cyByZXF1aXJlZCBmb3IgeW91ciBhcHBsaWNhdGlvbiB0byBvcGVyYXRlIHdoZW4gb2ZmbGluZS48L3A+CiAgICA8L2xpPgogICAgPGxpPmR5bmFtaWMgY2FjaGluZyBvZiByZXNvdXJjZXMKICAgICAgICA8cD5XaGVuIGEgcmVzb3VyY2UgaXMgcmVxdWVzdGVkLCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgY2FjaGUsIHRoZW4gaXQgd2lsbCBiZSBmZXRjaGVkIGFuZCB0aGVuIGFkZGVkIHRvIHRoZSBjYWNoZSBmb3Igc3Vic2VxdWVudCByZXF1ZXN0cy4gIFRoaXMgaXMgdG8gYWlkZSBpbiB1c2Ugd2hlbiBvZmZsaW5lLCBidXQgcHJpbWFyaWx5IHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIHlvdXIgYXBwbGljYXRpb24gb24gbG93ZXIgc3BlZWQgbmV0d29ya3MuPC9wPgogICAgPC9saT4KPC91bD4KPHA+VGhlIGNhY2hlIGlzIGFsd2F5cyB1cGRhdGVkIHdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2VuZXJhdGVkLCBzbyBpZiB5b3UgY2hhbmdlIGFuIGFzc2V0IE9SIHJlZ2VuZXJhdGUgdGhlIHNlcnZpY2Ugd29ya2VycywgZWFjaCBjbGllbnQgd2lsbCBzb29uIGNsZWFyIHRoZWlyIGNhY2hlcyBhbmQgc3RhcnQgcmVidWlsZGluZyBpdC48L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9mcm9udGVuZHVzZXJzIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4K]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/cgpwa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lyogc2NyaXB0IHRvIGluaXRpYWxpemUgdGhlIENHUFdBIHNlcnZpY2Ugd29ya2VyIC0tIG5vdCB1c2VkIC0tICovCmlmKCAnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yICkgewogICAgYmFzZV9wYXRoID0gZnVuY3Rpb24oKSB7CglsZXQgcGFnZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpLnBvcCgpOwogICAgICAgIGxldCBwYXRoQXJyYXkgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKQoJbGV0IGluZGV4T2ZTZWdtZW50ID0gcGF0aEFycmF5LmluZGV4T2YocGFnZSkKCWlmKCBwYWdlLmxlbmd0aCA9PSAwICkgaW5kZXhPZlNlZ21lbnQgPSBwYXRoQXJyYXkubGVuZ3RoIC0gMTsKICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHBhdGhBcnJheS5zbGljZSgwLGluZGV4T2ZTZWdtZW50KS5qb2luKCcvJykgKyAnLycKICAgIH0KCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCAoKSA9PiB7CglsZXQgdXJsID0gYmFzZV9wYXRoKCkgKyAnY2dwd2Ffc2VydmljZXdvcmtlci5qcycKCWNvbnNvbGUubG9nKCdzZXJ2aWNlIHdvcmtlciB1cmwgaXMgJyt1cmwpCgluYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlciggdXJsICkKICAgIH0pCn0K]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2xibF9hdXRvY2FjaGUnXSA9ICdBdXRvbWF0aWNhbGx5IGNhY2hlIGFzc2V0cyc7CiRsYW5nWydpbmZvX2F1dG9jYWNoZSddID0gJ0lmIGVuYWJsZWQsIHRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGF0dGVtcHQgdG8gYWdncmVzc2l2ZWx5IGNhY2hlIGFzc2V0cyBhbmQgb3RoZXIgcmVxdWVzdHMgdGhhdCBhcmUgTk9UIGluIGl0cyBjYWNoZS4nOwokbGFuZ1snc2NhbiddID0gJ1NjYW4nOwokbGFuZ1snY2xlYXInXSA9ICdDbGVhcic7CiRsYW5nWydlcnJfaW1nbm90c3F1YXJlJ10gPSAnVGhlIGltYWdlIHNwZWNpZmllZCBpcyBub3Qgc3VxYXJlJzsKJGxhbmdbJ2Vycl9ub2ltYWdlJ10gPSAnUGxlYXNlIHNwZWNpZnkgYW4gaW1hZ2UsIGZvciB0aGUgY3JlYXRpb24gb2YgaWNvbnMuJzsKJGxhbmdbJ2luZm9fZl91c2Vfc3cnXSA9ICdZb3UgY2FuIG9wdGlvbmFsbHkgZGlzYWJsZSB0aGUgc2VydmljZSB3b3JrZXIgaGVyZS4gIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBhcyBpdCB3aWxsIHByZXZlbnQgdGhlIFBXQSBmcm9tIG9wZXJhdGluZyBwcm9wZXJseSc7CiRsYW5nWydpbmZvX2ZfdXNlX2lvc21ldGEnXSA9ICdIZXJlIHlvdSBjYW4gY2hvb3NlIHRvIG9wdGlvbmFsbHkgZGlzYWJsZSBJT1Mgc3BlY2lmaWMgbWV0YSB0YWdzIGluIHRoZSBoZWFkZXIuICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGluY2x1ZGluZyB0aGVtIG1hbnVhbGx5Lic7CiRsYW5nWydsYmxfc3RhcnRwYWdlJ10gPSAnU3RhcnQgcGFnZSc7CiRsYW5nWydpbmZvX2Zfc3RhcnRwYWdlJ10gPSAnT3B0aW9uYWxseSwgc3BlY2lmeSBhbiBhbHRlcm5hdGUgcGFnZSB0byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgYXBwIGZyb20gdGhlIGhvbWUgc2NyZWVuLiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZC4nOwokbGFuZ1snaW5mb19zdGF0aWNfdGFiJ10gPSAnU3BlY2lmeSBVUkxTIHRvIHJlc291cmNlcyAoY3NzLGpzLGltYWdlcykgdGhhdCBzaG91bGQgYWx3YXlzIGJlIGNhY2hlZCBieSB0aGUgc2VydmljZSB3b3JrZXIuICBUaGVzZSBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHRoZSBkZXZpY2UgaXMgb2ZmbGluZSB0byBkaXNwbGF5IGEgc3R5bGVkIG9mZmxpbmUgcGFnZSc7CiRsYW5nWydpbmZvX3N0YXRpY19yZXNvdXJjZXMnXSA9ICdTcGVjaWZ5IG9uZSBVUkwgcGVyIGxpbmUuICBBYnNvbHV0ZSBVUkxzIG9yIFVSTHMgcmVsYXRpdmUgdG8gdGhlIENNU01TIHJvb3QgYXJlIHBlcm1pdHRlZC4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHBsYWNlIGFsbCBjYWNoYWJsZSBhc3NldHMgd2l0aGluIHRoZSBhc3NldHMgZGlyZWN0b3J5Lic7CiRsYW5nWydsYmxfc3RhdGljX3Jlc291cmNlcyddID0gJ1N0YXRpYy9vZmZsaW5lIGFzc2V0cyc7CiRsYW5nWydoZHJfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydoZHJfc3RhdGljJ10gPSAnU3RhdGljL29mZmxpbmUgYXNzZXRzJzsKJGxhbmdbJ2luZm9fZl9uYW1lJ10gPSAnU3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBhcHBsaWNhdGlvbi4gIFNob3VsZCBiZSAxMiBjaGFyYWN0ZXJzIG9yIGxlc3MuICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZCc7CiRsYW5nWydpbmZvX2Zfc2hvcnRfbmFtZSddID0gJ09wdGlvbmFsbHkgc3BlY2lmeSBhIHNob3J0IG5hbWUgZm9yIHRoZSBhcHAuICBUaGlzIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIHByb21wdGVkIHRvIGFkZCB0aGUgYXBwIHRvIHRoZSBob21lIHNjcmVlbic7CiRsYW5nWydpbmZvX2ZfYmFja2dyb3VuZF9jb2xvciddID0gJ1NwZWNpZnkgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHNwbGFzaCBzY3JlZW4uICBTaG91bGQgYmUgYSBoZXhhZGVjaW1hbCBSR0IgY29sb3IgcHJlY2VkZWQgYnkgYSAjIGNoYXJhY3Rlcic7CiRsYW5nWydpbmZvX2ZfdGhlbWVfY29sb3InXSA9ICdTcGVjaWZ5IGEgdGhlbWUgY29sb3IgZm9yIHRoZSBhcHAuICBTaG91bGQgYmUgYSBoZXhhZGVjaW1hbCBSR0IgY29sb3IgcHJlY2VkZWQgYnkgYSAjIGNoYXJhY3Rlcic7CiRsYW5nWydpbmZvX2ZfZGlzcGxheSddID0gJ1NldCB0aGUgZGlzcGxheSBtb2RlIGZvciB0aGUgYXBwLiAgRm9yIGFuZHJvaWQgUFdBIGFwcHMsIHRoZSBkaXNwbGF5IG11c3QgYmUgc2V0IHRvICJTdGFuZGFsb25lIic7CiRsYW5nWydpbmZvX2Zfb3JpZW50YXRpb24nXSA9ICdPcHRpb25hbGx5IHNldCBhIGZpeGVkIG9yaWVudGF0aW9uIGZvciB0aGUgYXBwLiAgV2UgcmVjb21tZW5kIHlvdSBsZWF2ZSB0aGlzIGluICJhdXRvIiBtb2RlIi4nOwokbGFuZ1snaW5mb19mX21hc3Rlcl9pY29uJ10gPSAnU2VsZWN0IGEgc3F1YXJlLCBvcGFxdWUgaWNvbiB3aXRoIGEgc2l6ZSBvZiBhdCBsZWFzdCA1MTJ4NTEyLiAgVGhpcyBhcHBsaWNhdG9uIHdpbGwgY3JlYXRlIGEgc2VyaWVzIG9mIHNtYWxsZXIgaWNvbiBmcm9tIHRoaXMgaW1hZ2UgYW5kIHN0b3JlIHRoZW0gaW4gL2Fzc2V0cy9pY29ucyc7CiRsYW5nWydsYmxfdXNlX3N3J10gPSAnRW5hYmxlIGEgc2VydmljZSB3b3JrZXInOwokbGFuZ1snaW5mb191c2Vfc3cnXSA9ICdBIHNlcnZpY2Ugd29ya2VyIG11c3QgYmUgZW5hYmxlZCBmb3IgYSBQV0EgYXBwIHRvIGJlIHJlY29nbml6ZWQuICBJbiByYXJlIG9jY2FzaW9ucyB5b3UgbWF5IHdhbnQgdG8gZGlzYWJsZSBpdCc7CiRsYW5nWydsYmxfdXNlX2lvc21ldGEnXSA9ICdFbmFibGUgSU9TIG1ldGEgdGFncyc7CiRsYW5nWydpbmZvX3VzZV9zdyddID0gJ1RoaXMgZmxhZyB3aWxsIGRpc2FibGUgdGhlIGluc2VydGlvbiBvZiBJT1Mgc3BlY2lmaWMgbWV0YSB0YWdzIGluIHRoZSBwYWdlIGhlYWRlci4gIFlvdSBtYXkgd2lzaCB0byBkaXNhYmxlIHRoaXMgaWYgeW91IGhhdmUgbWV0YSB0YWdzIGZyb20gZWxzZXdoZXJlJzsKJGxhbmdbJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJ10gPSAnQ0dTaW1wbGVQV0EgT2ZmbGluZSBQYWdlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydsYmxfbmFtZSddID0gJ05hbWUnOwokbGFuZ1snbGJsX3Nob3J0X25hbWUnXSA9ICdTaG9ydCBuYW1lJzsKJGxhbmdbJ2xibF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ2xibF9iYWNrZ3JvdW5kX2NvbG9yJ10gPSAnQmFja2dyb3VuZCBjb2xvcic7CiRsYW5nWydsYmxfdGhlbWVfY29sb3InXSA9ICdUaGVtZSBjb2xvcic7CiRsYW5nWydsYmxfZGlzcGxheSddID0gJ0Rpc3BsYXknOwokbGFuZ1snbGJsX29yaWVudGF0aW9uJ10gPSAnT3JpZW50YXRpb24nOwokbGFuZ1snbGJsX21hc3Rlcl9pY29uJ10gPSAnTGFyZ2UgaWNvbic7CiRsYW5nWydkaXNwbGF5X2Jyb3dzZXInXSA9ICdCcm93c2VyJzsKJGxhbmdbJ2Rpc3BsYXlfZnVsbHNjcmVlbiddID0gJ0Z1bGxzY3JlZW4nOwokbGFuZ1snZGlzcGxheV9zdGFuZGFsb25lJ10gPSAnU3RhbmRhbG9uZSc7CiRsYW5nWydkaXNwbGF5X21pbmltYWx1aSddID0gJ01pbmltYWwtdWknOwokbGFuZ1snb3JpZW50YXRpb25fZGZsdCddID0gJ0RlZmF1bHQvQXV0byc7CiRsYW5nWydvcmllbnRhdGlvbl9wb3J0cmFpdCddID0gJ1BvcnRyYWl0JzsKJGxhbmdbJ29yaWVudGF0aW9uX2xhbmRzY2FwZSddID0gJ0xhbmRzY2FwZSc7CiRsYW5nWydtc2dfc2F2ZWQnXSA9ICdTZXR0aW5ncyBzYXZlZCc7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CnVzZSBjbXNfc2l0ZXByZWZzOwp1c2UgY21zX3VybDsKCmNsYXNzIEdlbmVyYXRvcgp7CiAgICBjb25zdCBQUkVGX0xBU1RUUyA9ICdfbGFzdHRzXyc7CiAgICBjb25zdCBQUkVGX1NJRyA9ICdfcHJlZl9zaWdfJzsKICAgIGNvbnN0IFBSRUZfU1RBVElDU0lHID0gJ19zdGF0aWNfc2lnXyc7CiAgICBjb25zdCBQUkVGX1NUQVJUUEFHRVRTID0gJ19zdGFydHBhZ2V0c18nOwoKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJHN0b3JhZ2U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBDR1NpbXBsZVBXQSAkbW9kLCBTdG9yYWdlICRzdG9yYWdlICkKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+c3RvcmFnZSA9ICRzdG9yYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZU1hbmlmZXN0KCBQcmVmcyAkcHJlZnMsICRkZXN0ID0gbnVsbCApCiAgICB7CiAgICAgICAgaWYoICEkZGVzdCApIHsKICAgICAgICAgICAgJGRlc3QgPSBDTVNfUk9PVF9QQVRILicvJy5DR1NpbXBsZVBXQTo6TUFOSUZFU1RfRklMRU5BTUU7CiAgICAgICAgfQogICAgICAgIGlmKCBpc19maWxlKCRkZXN0KSAmJiAhaXNfd3JpdGFibGUoJGRlc3QpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+bW9kLT5MYW5nKCdlcnJfcGVybWlzc2lvbicsICRkZXN0KSApOwoKICAgICAgICAkc3RhcnRfcGFnZSA9ICRwcmVmcy0+c3RhcnRfcGFnZTsKICAgICAgICAkc3RhcnRfdXJsID0gbnVsbDsKICAgICAgICBpZiggJHN0YXJ0X3BhZ2UgPiAwICkgewogICAgICAgICAgICAvLyBub3RlOiB0aGlzIHdpbGwgaGF2ZSBwcm9ibGVtcyBpZiBwcmV0dHkgdXJscyBhcmUgbm90IGluIHBsYWNlCiAgICAgICAgICAgIC8vIG9yIHlvdSB3YW50IHRvIHJlZGlyZWN0IHRvIE1BQ1QgdXJscy4KICAgICAgICAgICAgJGNvbnRlbnRfb2JqID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+TG9hZENvbnRlbnRGcm9tSUQoICRzdGFydF9wYWdlICk7CiAgICAgICAgICAgIGlmKCAkY29udGVudF9vYmogJiYgJGNvbnRlbnRfb2JqLT5BY3RpdmUoKSApIHsKICAgICAgICAgICAgICAgICRzdGFydF91cmwgPSAkY29udGVudF9vYmotPkdldFVSTCgpOwogICAgICAgICAgICAgICAgLy8gbXVzdCBiZSBhIHJlbGF0aXZlIHVybC4uLi4gYnV0LCBwcmV0dHkgdXJscyBkb24ndCBtYXR0ZXIgaW4gUFdBIGFwcHMuCiAgICAgICAgICAgICAgICAvLyB0aGUgLiBpcyBpbXBvcnRhbnQgcGFydGljdWxhcmx5IGlmIHNpdGUgaXMgaW4gYSBzdWJkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAkc3RhcnRfdXJsID0gJy4nLnN1YnN0cigkc3RhcnRfdXJsLHN0cmxlbihDTVNfUk9PVF9VUkwpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzdGFydF91cmwgPSAnLi8nOwogICAgICAgIH0KICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCBqc29uX2VuY29kZSggJHByZWZzICksIFRSVUUgKTsKICAgICAgICBpZiggZW1wdHkoJGRhdGFbJ25hbWUnXSkgKSAkZGF0YVsnbmFtZSddID0gY21zX3NpdGVwcmVmczo6Z2V0KCdzaXRlbmFtZScsJ0NNU01TIFNpdGUnKTsKICAgICAgICBpZiggIWVtcHR5KCRzdGFydF91cmwpICkgJGRhdGFbJ3N0YXJ0X3VybCddID0gJHN0YXJ0X3VybDsKICAgICAgICB1bnNldCggJGRhdGFbJ21hc3Rlcl9pY29uJ10sICRkYXRhWydpbmNsdWRlX3N3J10sICRkYXRhWydpbmNsdWRlX2lvc21ldGEnXSwgJGRhdGFbJ3N0YXJ0X3BhZ2UnXSApOwogICAgICAgIGlmKCAkZGF0YVsnb3JpZW50YXRpb24nXSA9PSBQcmVmczo6T1JJRU5UQVRJT05fREZMVCApIHVuc2V0KCAkZGF0YVsnb3JpZW50YXRpb24nXSApOwogICAgICAgICRvdXQgPSBqc29uX2VuY29kZSggJGRhdGEsIEpTT05fUFJFVFRZX1BSSU5UIHwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyApOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCAkZGVzdCwgJG91dCApOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaW5kTGFzdE1vZGlmaWVkQXNzZXRUaW1lKCkKICAgIHsKICAgICAgICAkZmluZF9sYXN0bW9kaWZpZWR0c19ieXBhdGggPSBmdW5jdGlvbigkc3RhcnRwYXRoLCAkbGF0ZXN0ID0gbnVsbCkgdXNlICgmJGZpbmRfbGFzdG1vZGlmaWVkdHNfYnlwYXRoKSB7CiAgICAgICAgICAgICRzdGFydHBhdGggPSB0cmltKCRzdGFydHBhdGgpOwogICAgICAgICAgICAkZGggPSBvcGVuZGlyKCRzdGFydHBhdGgpOwogICAgICAgICAgICB3aGlsZSggZmFsc2UgIT09ICgkZW50cnkgPSByZWFkZGlyKCRkaCkpICkgewogICAgICAgICAgICAgICAgaWYoICRlbnRyeSA9PSAnLicgfHwgJGVudHJ5ID09ICcuLicgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkZnVsbHBhdGggPSAkc3RhcnRwYXRoLicvJy4kZW50cnk7CiAgICAgICAgICAgICAgICBpZiggaXNfZmlsZSgkZnVsbHBhdGgpICkgewogICAgICAgICAgICAgICAgICAgICRtdGltZSA9IGZpbGVtdGltZSgkZnVsbHBhdGgpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkbXRpbWUgPiAkbGF0ZXN0ICkgJGxhdGVzdCA9ICRtdGltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYoIGlzX2RpcigkZnVsbHBhdGgpICkgewogICAgICAgICAgICAgICAgICAgICRsYXRlc3QgPSAkZmluZF9sYXN0bW9kaWZpZWR0c19ieXBhdGgoICRmdWxscGF0aCwgJGxhdGVzdCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlZGlyKCRkaCk7CiAgICAgICAgICAgIHJldHVybiAkbGF0ZXN0OwogICAgICAgIH07CgogICAgICAgICRhc3NldHNfcGF0aCA9ICR0aGlzLT5tb2QtPkdldENvbmZpZygpWydhc3NldHNfcGF0aCddOwogICAgICAgIHJldHVybiAkZmluZF9sYXN0bW9kaWZpZWR0c19ieXBhdGgoJGFzc2V0c19wYXRoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmluZExhc3RBZGRvbk1vZGlmaWVkVGltZShhcnJheSAkYWRkb25zID0gbnVsbCkKICAgIHsKICAgICAgICAkdmFsID0gMDsKICAgICAgICBpZiggIWVtcHR5KCRhZGRvbnMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkYWRkb25zIGFzICRhZGRvbiApIHsKICAgICAgICAgICAgICAgIGlmKCAhJGFkZG9uIGluc3RhbmNlb2YgU2VydmljZVdvcmtlckFkZG9uICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkdmFsID0gbWF4KCR2YWwsJGFkZG9uLT5nZXRNb2RpZmllZERhdGUoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR2YWw7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRTdGFydFBhZ2VMYXN0TW9kaWZpZWQoICRwYWdlX2lkICkKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICBpZiggJHBhZ2VfaWQgPiAwICkgewogICAgICAgICAgICAkY29udGVudF9vYmogPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5Mb2FkQ29udGVudEZyb21JRCggJHBhZ2VfaWQgKTsKICAgICAgICAgICAgaWYoICRjb250ZW50X29iaiAmJiAkY29udGVudF9vYmotPkFjdGl2ZSgpICkgewogICAgICAgICAgICAgICAgJG91dCA9IHN0cnRvdGltZSggJGNvbnRlbnRfb2JqLT5HZXRNb2RpZmllZERhdGUoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhdXRvR2VuZXJhdGVTZXJ2aWNlV29ya2VyKCBhcnJheSAkYWRkb25zID0gbnVsbCApCiAgICB7CiAgICAgICAgJHByZWZzID0gJHRoaXMtPnN0b3JhZ2UtPmxvYWRQcmVmcygpOwogICAgICAgIGlmKCAhJHByZWZzLT5pbmNsdWRlX3N3ICkgcmV0dXJuOwoKICAgICAgICAvLyBmaW5kIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3QgbW9kaWZpZWQgZmlsZSBpbiB0aGUgYXNzZXRzX3BhdGgKICAgICAgICAvLyBpZiBpdCBpcyBncmVhdGVyIHRoYW4gdGhlIExBU1RUSU1FIHByZWYgdGhlbiBnZW5lcmF0ZSB0aGUgdHMKICAgICAgICAkbGFzdHRzID0gKGludCkgJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9MQVNUVFMgKTsKICAgICAgICAvLyBkb24ndCB3YW50IHRvIHJlZ2VuZXJhdGUgdGhlIHNlcnZpY2Ugd29ya2VyIGVhY2ggdGltZSBhbiBhc3NldCBpcyBjaGFuZ2VkCiAgICAgICAgLy8gd2Ugd2FudCBleHBsaWNpdCBjb250cm9sIG92ZXIgdGhpcy4KICAgICAgICAvLyRmb3VuZHRzID0gKGludCkgJHRoaXMtPmZpbmRMYXN0TW9kaWZpZWRBc3NldFRpbWUoKTsKICAgICAgICAvLyRmb3VuZHRzID0gbWF4KCAkdGhpcy0+ZmluZExhc3RBZGRvbk1vZGlmaWVkVGltZSgkYWRkb25zKSwgJGZvdW5kdHMgKTsKICAgICAgICAkZm91bmR0cyA9IChpbnQpICR0aGlzLT5maW5kTGFzdEFkZG9uTW9kaWZpZWRUaW1lKCk7CiAgICAgICAgJGFzc2V0c19jaGFuZ2VkID0gJGxhc3R0cyA8ICRmb3VuZHRzOwogICAgICAgICRwcmVmc19zaWcgPSAkdGhpcy0+c3RvcmFnZS0+Z2V0UHJlZmVyZW5jZXNTaWcoKTsKICAgICAgICAkcHJlZnNfY2hhbmdlZCA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfU0lHICkgIT0gJHByZWZzX3NpZzsKICAgICAgICAkc3RhdGljX3NpZyA9IG1kNSgkdGhpcy0+c3RvcmFnZS0+Z2V0U3RhdGljVGV4dCgpKTsKICAgICAgICAkc3RhdGljX2NoYW5nZWQgPSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NUQVRJQ1NJRyApICE9ICRzdGF0aWNfc2lnICYmICR0aGlzLT5zdG9yYWdlLT5nZXRTdGF0aWNUZXh0KCk7CiAgICAgICAgJHN0YXJ0cGFnZV9jaGFuZ2VkID0gJHN0YXJ0cGFnZV90cyA9IG51bGw7CiAgICAgICAgaWYoICRwcmVmcy0+c3RhcnRfcGFnZSA+IDAgKSB7CiAgICAgICAgICAgICRzdGFydHBhZ2VfdHMgPSAkdGhpcy0+ZmluZFN0YXJ0UGFnZUxhc3RNb2RpZmllZCggJHByZWZzLT5zdGFydF9wYWdlICk7CiAgICAgICAgICAgICRzdGFydHBhZ2VfbGFzdHRzID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFSVFBBR0VUUyApOwogICAgICAgICAgICAkc3RhcnRwYWdlX2NoYW5nZWQgPSAkc3RhcnRwYWdlX3RzID4gJHN0YXJ0cGFnZV9sYXN0dHM7CiAgICAgICAgfQogICAgICAgICRkZXN0ID0gQ01TX1JPT1RfUEFUSC4nLycuQ0dTaW1wbGVQV0E6OldPUktFUl9GSUxFTkFNRTsKCiAgICAgICAgaWYoICFpc19maWxlKCRkZXN0KSB8fCAgJGFzc2V0c19jaGFuZ2VkIHx8ICRwcmVmc19jaGFuZ2VkIHx8ICRzdGF0aWNfY2hhbmdlZCB8fCAkc3RhcnRwYWdlX2NoYW5nZWQgKSB7CiAgICAgICAgICAgIC8vIHNvbWUgZmlsZSBoYXMgY2hhbmdlZCBzaW5jZSBvdXIgbGFzdCBzY2FuCiAgICAgICAgICAgICR0aGlzLT5nZW5lcmF0ZVNlcnZpY2VXb3JrZXIoJHByZWZzLCB0aW1lKCksIG51bGwsICRhZGRvbnMpOwogICAgICAgICAgICBpZiggJGFzc2V0c19jaGFuZ2VkICkgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9MQVNUVFMsICRmb3VuZHRzICk7CiAgICAgICAgICAgIGlmKCAkcHJlZnNfY2hhbmdlZCApICR0aGlzLT5tb2QtPlNldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfU0lHLCAkcHJlZnNfc2lnICk7CiAgICAgICAgICAgIGlmKCAkc3RhdGljX2NoYW5nZWQgKSAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NUQVRJQ1NJRywgJHN0YXRpY19zaWcgKTsKICAgICAgICAgICAgaWYoICRzdGFydHBhZ2VfY2hhbmdlZCApICR0aGlzLT5tb2QtPlNldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfU1RBUlRQQUdFVFMsICRzdGFydHBhZ2VfdHMgKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEFkZG9uU2VydmljZVdvcmtlckNvZGUoIGFycmF5ICRhZGRvbnMgPSBudWxsICkKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICBpZiggIWVtcHR5KCRhZGRvbnMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkYWRkb25zIGFzICRhZGRvbiApIHsKICAgICAgICAgICAgICAgIGlmKCAhJGFkZG9uIGluc3RhbmNlb2YgU2VydmljZVdvcmtlckFkZG9uICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkb3V0IC49ICRhZGRvbi0+Z2V0U2VydmljZVdvcmtlckNvZGUoKTsKICAgICAgICAgICAgICAgICRvdXQgLj0gIlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0ID0gIlxuXG4iLiRvdXQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZVNlcnZpY2VXb3JrZXIoIFByZWZzICRwcmVmcywgJHRzLCBzdHJpbmcgJGRlc3QgPSBudWxsLCBhcnJheSAkYWRkb25zID0gbnVsbCApCiAgICB7CiAgICAgICAgLy8gdG9kbzogYSBwcmVmZXJlbmNlIGZvciAnbmV2ZXIgY2FjaGUgZHluYW1pY2NhbGx5JyAgc28gdGhhdCBvbmx5IHRoZSBvZmZsaW5lIGFzc2V0cyBjYW4gZ2V0IGNhY2hlZAogICAgICAgICR0cyA9IChpbnQpICR0czsKICAgICAgICAkY29uZmlnID0gJHRoaXMtPm1vZC0+R2V0Q29uZmlnKCk7CgogICAgICAgIC8vIGFic29sdXRlbHkgZ2VuZXJhdGUgdGhlIHNlcnZpY2Ugd29ya2VyCiAgICAgICAgaWYoICEkZGVzdCApICRkZXN0ID0gQ01TX1JPT1RfUEFUSC4nLycuQ0dTaW1wbGVQV0E6OldPUktFUl9GSUxFTkFNRTsKICAgICAgICBpZiggaXNfZmlsZSgkZGVzdCkgJiYgIWlzX3dyaXRhYmxlKCRkZXN0KSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPm1vZC0+TGFuZygnZXJyX3Blcm1pc3Npb24nLCAkZGVzdCkgKTsKCiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBvZmZsaW5lIHBhZ2UKICAgICAgICAvLyBnZXQgaXRzIFVSTAogICAgICAgICRvZmZsaW5lX3VybCA9IG51bGw7CiAgICAgICAgJGNvbnRlbnRvcHMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwogICAgICAgICRjb250ZW50b2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCBPZmZsaW5lUGFnZVR5cGU6OlBBR0VfQUxJQVMgKTsKICAgICAgICBpZiggJGNvbnRlbnRvYmogKSAkb2ZmbGluZV91cmwgPSAkY29udGVudG9iai0+R2V0VVJMKCk7CgogICAgICAgIC8vIHdlIGFscmVhZHkgbXVzdCBoYXZlIGhhZCB0aGVzZSByZXNvdXJjZXMgcGFyc2VkCiAgICAgICAgJHN0YXRpY191cmxzID0gJHRoaXMtPnN0b3JhZ2UtPmdldFN0YXRpY1VSTFMoKTsKICAgICAgICBpZiggIWVtcHR5KCRzdGF0aWNfdXJscykgKSAkc3RhdGljX3VybHMgPSBhcnJheV91bmlxdWUoJHN0YXRpY191cmxzKTsKCiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgkdGhpcy0+bW9kLT5HZXRUZW1wbGF0ZVJlc291cmNlKCdzZXJ2aWNld29ya2VyLnRwbCcpKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2NhY2hlX3RzJywkdHMpOwogICAgICAgICR0cGwtPmFzc2lnbignYXNzZXRzX2RpcicsICRjb25maWdbJ2Fzc2V0c19kaXInXSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdjc3NfdXJsJywgJGNvbmZpZ1snY3NzX3VybCddKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2FkbWluX3VybCcsICRjb25maWdbJ2FkbWluX3VybCddKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3B1YmxpY19jYWNoZV91cmwnLCAkY29uZmlnWydwdWJsaWNfY2FjaGVfdXJsJ10pOwogICAgICAgICR0cGwtPmFzc2lnbignb2ZmbGluZV91cmwnLCRvZmZsaW5lX3VybCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdzdGF0aWNfdXJscycsJHN0YXRpY191cmxzKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2F1dG9jYWNoZScsIChpbnQpICRwcmVmcy0+YXV0b2NhY2hlKTsKICAgICAgICAkb3V0ID0gJHRwbC0+ZmV0Y2goKTsKCiAgICAgICAgJG91dCAuPSAkdGhpcy0+Z2V0QWRkb25TZXJ2aWNlV29ya2VyQ29kZSggJGFkZG9ucyApOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRkZXN0LCAkb3V0KTsKICAgIH0KfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.OfflinePageType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ29udGVudDsKCmNsYXNzIE9mZmxpbmVQYWdlVHlwZSBleHRlbmRzIENvbnRlbnQKewogICAgY29uc3QgUEFHRV9BTElBUyA9ICdjZ3B3YV9PZmZsaW5lUGFnZSc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgICR0aGlzLT5kb0FsaWFzQ2hlY2sgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+ZG9BdXRvQWxpYXNJZkVuYWJsZWQgPSBmYWxzZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X21vZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHU0lNUExFUFdBKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSGFuZGxlc0FsaWFzKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFR5cGUoKSB7IHJldHVybiAnY2dwd2Ffb2ZmbGluZXBhZ2V0eXBlJzsgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBGcmllbmRsWU5hbWUoKQogICAgewogICAgICAgICRtb2QgPSAkdGhpcy0+Z2V0X21vZCgpOwogICAgICAgIGlmKCAkbW9kICkgcmV0dXJuICRtb2QtPkxhbmcoJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJyk7CiAgICAgICAgcmV0dXJuICdDR1NpbXBsZVBXQTo6T2ZmbGluZVBhZ2UnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKICAgICAgICAvLyR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnc2VjdXJlJywwKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3NlYXJjaGFibGUnLDApOwogICAgICAgIC8vJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdwYXJlbnQnLC0xKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3Nob3dpbm1lbnUnLGZhbHNlKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ21lbnV0ZXh0JywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCd0YXJnZXQnLCcnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2V4dHJhMScsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnZXh0cmEyJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdleHRyYTMnLCcnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2ltYWdlJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCd0aHVtYm5haWwnLCcnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3RhYmluZGV4JywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdhY2Nlc3NrZXknLCcnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3RpdGxlYXR0cmlidXRlJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdhY3RpdmUnLHRydWUpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnY2FjaGFibGUnLGZhbHNlKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3BhZ2VfdXJsJywnJyk7CgogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnYWxpYXMnLCcnKTsKICAgICAgICAkdGhpcy0+QWRkQmFzZVByb3BlcnR5KCdhbGlhcycsMTAsMSk7CgogICAgICAgICNUdXJuIG9uIHByZXZpZXcKICAgICAgICAkdGhpcy0+bVByZXZpZXcgPSB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJc0NvcHlhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc0RlZmF1bHRQb3NzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzVXNhYmxlTGluaygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gV2FudHNDaGlsZHJlbigpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNTeXN0ZW1QYWdlKCkgeyByZXR1cm4gdHJ1ZTsgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBGaWxsUGFyYW1zKCRwYXJhbXMsICRlZGl0aW5nID0gZmFsc2UpCiAgICB7CgogICAgICAgIHBhcmVudDo6RmlsbFBhcmFtcygkcGFyYW1zLCRlZGl0aW5nKTsKICAgICAgICAkdGhpcy0+bVNob3dJbk1lbnUgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+bUNhY2hhYmxlID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPm1BY3RpdmUgPSB0cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKQogICAgewogICAgICAgIHN3aXRjaCgkb25lKSB7CiAgICAgICAgY2FzZSAnYWxpYXMnOgogICAgICAgICAgICAkZmxkID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFsaWFzIiB2YWx1ZT0iJy5zZWxmOjpQQUdFX0FMSUFTLiciIHJlYWRvbmx5Lz48c3Bhbj4nLnNlbGY6OlBBR0VfQUxJQVMuJzwvc3Bhbj4nOwogICAgICAgICAgICByZXR1cm4gWyBsYW5nKCdhbGlhcycpLCAkZmxkIF07CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6OmRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gVmFsaWRhdGVEYXRhKCkKICAgIHsKICAgICAgICAkZXJyb3JzID0gcGFyZW50OjpWYWxpZGF0ZURhdGEoKTsKICAgICAgICBpZiggJGVycm9ycyA9PT0gRkFMU0UgKSAkZXJyb3JzID0gW107CgogICAgICAgIC8vRG8gb3VyIG93biBhbGlhcyBjaGVjawogICAgICAgIGlmICgkdGhpcy0+bUFsaWFzID09ICcnKSB7CiAgICAgICAgICAgICRlcnJvcnNbXSA9IGxhbmcoJ25vZmllbGRnaXZlbicsIFtsYW5nKCdlcnJvcl90eXBlJyldICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR0aGlzLT5tQWxpYXMgIT0gc2VsZjo6UEFHRV9BTElBUyApIHsKICAgICAgICAgICAgJGVycm9yc1tdID0gJ2ludmFsaWQgYWxpYXMgJy4kdGhpcy0+bUFsaWFzOyAvLyB0b2RvOiB0cmFuc2xhdGUgbWUuCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCR0aGlzLT5tQWxpYXMgIT0gJHRoaXMtPm1PbGRBbGlhcykgewogICAgICAgICAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAgICAgICAgICRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICAgICAgICAgICRlcnJvciA9ICRjb250ZW50b3BzLT5DaGVja0FsaWFzRXJyb3IoJHRoaXMtPm1BbGlhcywgJHRoaXMtPm1JZCk7CiAgICAgICAgICAgIGlmICgkZXJyb3IgIT09IEZBTFNFKSAkZXJyb3JzW10gPSAkZXJyb3I7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKGNvdW50KCRlcnJvcnMpID4gMCA/ICRlcnJvcnMgOiBGQUxTRSk7CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.Prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKY2xhc3MgUHJlZnMgaW1wbGVtZW50cyBcSnNvblNlcmlhbGl6YWJsZSwgXEFycmF5QWNjZXNzCnsKICAgIGNvbnN0IERJU1BMQVlfQlJPV1NFUiA9ICdicm93c2VyJzsKICAgIGNvbnN0IERJU1BMQVlfRlVMTFNDUkVFTiA9ICdmdWxsc2NyZWVuJzsKICAgIGNvbnN0IERJU1BMQVlfU1RBTkRBTE9ORSA9ICdzdGFuZGFsb25lJzsKICAgIGNvbnN0IERJU1BMQVlfTUlOSU1BTFVJICA9ICdtaW5pbWFsLXVpJzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX0RGTFQgICA9ICdkZmx0JzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX1BPUlRSQUlUID0gJ3BvcnRyYWl0JzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX0xBTkRTQ0FQRSA9ICdsYW5kc2NhcGUnOwoKICAgIHByaXZhdGUgJF9kYXRhID0KICAgICAgICBbCiAgICAgICAgICAgICduYW1lJz0+bnVsbCwgJ3Nob3J0X25hbWUnPT5udWxsLCAnZGVzY3JpcHRpb24nPT5udWxsLAogICAgICAgICAgICAnZGlzcGxheSc9PnNlbGY6OkRJU1BMQVlfU1RBTkRBTE9ORSwgJ29yaWVudGF0aW9uJz0+c2VsZjo6T1JJRU5UQVRJT05fREZMVCwKICAgICAgICAgICAgJ2JhY2tncm91bmRfY29sb3InPT4nI2ZmZmZmZicsICd0aGVtZV9jb2xvcic9PicjMDAwMDAwJywgJ21hc3Rlcl9pY29uJz0+bnVsbCwgJ2ljb25zJz0+bnVsbCwKICAgICAgICAgICAgJ3N0YXJ0X3BhZ2UnPT5udWxsLAogICAgICAgICAgICAnaW5jbHVkZV9zdyc9PnRydWUsICdpbmNsdWRlX2lvc21ldGEnPT50cnVlLCAnYXV0b2NhY2hlJz0+dHJ1ZQogICAgICAgIF07CgogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCggJGtleSApCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX2dldCggJGtleSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggJGtleSApCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgIGNhc2UgJ3Nob3J0X25hbWUnOgogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICBjYXNlICdkaXNwbGF5JzoKICAgICAgICBjYXNlICdvcmllbnRhdGlvbic6CiAgICAgICAgY2FzZSAnYmFja2dyb3VuZF9jb2xvcic6CiAgICAgICAgY2FzZSAndGhlbWVfY29sb3InOgogICAgICAgIGNhc2UgJ21hc3Rlcl9pY29uJzoKICAgICAgICBjYXNlICdzdGFydF9wYWdlJzoKICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHRoaXMtPl9kYXRhWyRrZXldKTsKCiAgICAgICAgY2FzZSAnaW5jbHVkZV9zdyc6CiAgICAgICAgY2FzZSAnaW5jbHVkZV9pb3NtZXRhJzoKICAgICAgICBjYXNlICdhdXRvY2FjaGUnOgogICAgICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgY2FzZSAnaWNvbnMnOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0U2V0KCAka2V5LCAkdmFsICkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9fc2V0KCAka2V5LCAkdmFsICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCAka2V5LCAkdmFsICkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRFeGlzdHMoICRrZXkgKQogICAgewogICAgICAgIHJldHVybiBpc3NldCggJHRoaXMtPl9kYXRhWyRrZXldICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldFVuc2V0KCAka2V5ICkge30KCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZV9mcm9tX2FycmF5KCBhcnJheSAkaW4gKQogICAgewogICAgICAgICRvYmogPSBuZXcgc2VsZjsKICAgICAgICBmb3JlYWNoKCAkaW4gYXMgJGtleSA9PiAkdmFsKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgIGNhc2UgJ3Nob3J0X25hbWUnOgogICAgICAgICAgICBjYXNlICdkaXNwbGF5JzoKICAgICAgICAgICAgY2FzZSAndGhlbWVfY29sb3InOgogICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kX2NvbG9yJzoKICAgICAgICAgICAgY2FzZSAnbWFzdGVyX2ljb24nOgogICAgICAgICAgICBjYXNlICdzdGFydF9wYWdlJzoKICAgICAgICAgICAgY2FzZSAnZGVzY3JpcHRpb24nOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2luY2x1ZGVfc3cnOgogICAgICAgICAgICBjYXNlICdpbmNsdWRlX2lvc21ldGEnOgogICAgICAgICAgICBjYXNlICdhdXRvY2FjaGUnOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSBjbXNfdG9fYm9vbCgkdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdkaXNwbGF5JzoKICAgICAgICAgICAgICAgICR2YWwgPSBzdHJ0b2xvd2VyKCR2YWwpOwogICAgICAgICAgICAgICAgc3dpdGNoKCAkdmFsICkgewogICAgICAgICAgICAgICAgY2FzZSBzZWxmOjpESVNQTEFZX0JST1dTRVI6CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6OkRJU1BMQVlfRlVMTFNDUkVFTjoKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6RElTUExBWV9TVEFOZEFMT05FOgogICAgICAgICAgICAgICAgY2FzZSBzZWxmOjpESVNQTEFZX01JTklNQUxVSToKICAgICAgICAgICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIC8vIHVua25vd24sIGRvIG5vdGhpbmcKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdvcmllbnRhdGlvbic6CiAgICAgICAgICAgICAgICAkdmFsID0gc3RydG9sb3dlcigkdmFsKTsKICAgICAgICAgICAgICAgIHN3aXRjaCggJHZhbCApIHsKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6T1JJRU5UQVRJT05fUE9SVFJBSVQ6CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6Ok9SSUVOVEFUSU9OX0xBTkRTQ0FQRToKICAgICAgICAgICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6Ok9SSUVOVEFUSU9OX0RGTFQ6CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gc2VsZjo6T1JJRU5UQVRJT05fREZMVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdpY29ucyc6CiAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHZhbCBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHJvd1snc3JjJ10pICYmICFlbXB0eSgkcm93WydzcmMnXSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2V0KCRyb3dbJ3NpemVzJ10pICYmICFlbXB0eSgkcm93WydzaXplcyddKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJHJvd1sndHlwZSddKSAmJiAhZW1wdHkoJHJvd1sndHlwZSddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldW10gPSAkcm93OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.ScriptCombiner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ01TTVNcSG9va01hbmFnZXI7CgovLyB0aGlzIGlzIGEgc2ltcGxlIHRvb2wgdG8gY29tYmluZSBqYXZhc2NyaXB0cwpjbGFzcyBTY3JpcHRDb21iaW5lcgp7CiAgICBzdGF0aWMgJF9jb3VudDsKICAgIHByaXZhdGUgJF9jb2RlcyA9IFtdOwogICAgcHJpdmF0ZSAkX3NpZzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIHNlbGY6OiRfY291bnQrKzsKICAgICAgICAkdGhpcy0+X3NpZyA9ICc8IS0tICcgLl9fQ0xBU1NfXy4nOjonLnNoYTEoc2VsZjo6JF9jb3VudC5fX0ZJTEVfXy5yYW5kKCkudGltZSgpKSAuICctLT4nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBxdWV1ZUZpbGUoc3RyaW5nICRmaWxlKQogICAgewogICAgICAgIGlmKCAhaXNfZmlsZSgkZmlsZSkgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRmlsZSAnLiRmaWxlLicgZG9lcyBub3QgZXhpc3QgaW4gJy5fX01FVEhPRF9fKTsKICAgICAgICAkdGhpcy0+X2NvZGVzW10gPSBbJ2ZpbGUnPT4kZmlsZSwgJ210aW1lJz0+ZmlsZW10aW1lKCRmaWxlKV07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHF1ZXVlQ29kZShzdHJpbmcgJGNvZGUpCiAgICB7CiAgICAgICAgJHRtcCA9IHRyaW0oJGNvZGUpOwogICAgICAgIGlmKCAhJHRtcCApIHJldHVybjsKICAgICAgICAkdGhpcy0+X2NvZGVzW10gPSBbJ2NvZGUnPT4kY29kZV07CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENoZWNrc3VtKCkKICAgIHsKICAgICAgICByZXR1cm4gc2hhMShzZXJpYWxpemUoJHRoaXMtPl9jb2RlcykpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRKU0ZpbGVuYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gUFVCTElDX0NBQ0hFX0xPQ0FUSU9OLicvY2dwd2FfJy4kdGhpcy0+Z2V0Q2hlY2tzdW0oKS4nLmpzJzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SlNVUkwoYm9vbCAkbm9jYWNoZSA9IGZhbHNlKQogICAgewogICAgICAgICRvdXQgPSBQVUJMSUNfQ0FDSEVfVVJMLicvJy5iYXNlbmFtZSgkdGhpcy0+Z2V0SnNGaWxlbmFtZSgpKTsKICAgICAgICBpZiggJG5vY2FjaGUgKSAkb3V0IC49ICc/X3Q9Jy50aW1lKCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZUpTRmlsZSgpCiAgICB7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jb2RlcyBhcyAkcm93ICkgewogICAgICAgICAgICBpZiggaXNzZXQoJHJvd1snZmlsZSddKSApIHsKICAgICAgICAgICAgICAgICRvdXQgLj0gZmlsZV9nZXRfY29udGVudHMoJHJvd1snZmlsZSddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkcm93Wydjb2RlJ10pICkgewogICAgICAgICAgICAgICAgJG91dCAuPSAkcm93Wydjb2RlJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG91dCAuPSAiXG5cbiI7CiAgICAgICAgfQogICAgICAgIC8vIGhlcmUgd2UgY291bGQgZG8gYSBob29rIHRvIG1pbmltaXplIHN0dWZmCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmdldEpTRmlsZW5hbWUoKSwkb3V0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKGJvb2wgJG5vY2FjaGUgPSBmYWxzZSwgYm9vbCAkZm9yY2UgPSBmYWxzZSkKICAgIHsKICAgICAgICAvLyBvdXRwdXQgYSBwbGFjZWhvbGRlcgogICAgICAgIGlmKCBlbXB0eSgkdGhpcy0+X2NvZGVzKSApIHJldHVybjsKCiAgICAgICAgJGhhbmRsZXIgPSBmdW5jdGlvbihhcnJheSAkcGFyYW1zKSB1c2UgKCRub2NhY2hlLCRmb3JjZSkgewogICAgICAgICAgICAvLyBnZXQgdGhlIGZpbGVuYW1lCiAgICAgICAgICAgICRmbiA9ICR0aGlzLT5nZXRKU0ZpbGVuYW1lKCk7CiAgICAgICAgICAgIGlmKCAhaXNfZmlsZSgkZm4pIHx8ICRmb3JjZSApIHsKICAgICAgICAgICAgICAgIC8vIGdvdHRhIGNyZWF0ZSBpdAogICAgICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZUpTRmlsZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGdldCBhIHVybAogICAgICAgICAgICAvLyBnZXQgdGhlIHNjcmlwdCB0YWcKICAgICAgICAgICAgJG91dCA9IHNwcmludGYoJzxzY3JpcHQgc3JjPSIlcyI+PC9zY3JpcHQ+JywkdGhpcy0+Z2V0SlNVUkwoJG5vY2FjaGUpKTsKICAgICAgICAgICAgJHBhcmFtc1snY29udGVudCddID0gc3RyX3JlcGxhY2UoJHRoaXMtPl9zaWcsJG91dCwkcGFyYW1zWydjb250ZW50J10pOwogICAgICAgIH07CiAgICAgICAgSG9va01hbmFnZXI6OmFkZF9ob29rKCdDb3JlOjpDb250ZW50UG9zdFJlbmRlcicsICRoYW5kbGVyKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5fc2lnOyAvLyBhIHBsYWNlaG9sZGVyCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcl9mb3JfYWRtaW4oKQogICAgewogICAgICAgIC8vIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB2aWEgdGhlIGFkbWluX2FkZF9oZWFkdGV4dCBob29rIChvciBhbm90aGVyIGFkbWluIGhvb2spCiAgICAgICAgLy8gaXQgc2hvdWxkIGdlbmVyYXRlIHRoZSBqcyBmaWxlLCBhbmQgcmV0dXJuIHRoZSBzY3JpcHQgdGFnLgogICAgICAgIC8vIG5vIG5lZWQgZm9yIHRoZSBwbGFjZWhvbGRlciBzdHVmZgogICAgICAgIGlmKCBlbXB0eSgkdGhpcy0+X2NvZGVzKSApIHJldHVybjsKCiAgICAgICAgJGZuID0gJHRoaXMtPmdldEpTRmlsZW5hbWUoKTsKICAgICAgICBpZiggIWlzX2ZpbGUoJGZuKSApIHsKICAgICAgICAgICAgLy8gZ290dGEgY3JlYXRlIGl0CiAgICAgICAgICAgICR0aGlzLT5jcmVhdGVKU0ZpbGUoKTsKICAgICAgICB9CiAgICAgICAgLy8gZ2V0IGEgdXJsCiAgICAgICAgLy8gZ2V0IHRoZSBzY3JpcHQgdGFnCiAgICAgICAgJG5vY2FjaGUgPSB0cnVlOwogICAgICAgICRvdXQgPSBzcHJpbnRmKCc8c2NyaXB0IHNyYz0iJXMiPjwvc2NyaXB0PicsJHRoaXMtPmdldEpTVVJMKCRub2NhY2hlKSk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.ServiceWorkerAddon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKYWJzdHJhY3QgY2xhc3MgU2VydmljZVdvcmtlckFkZG9uCnsKICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRMaWJyYXJ5RmlsZXMoKSA6IGFycmF5OwoKICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRNb2RpZmllZERhdGUoKSA6IGludDsKCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmljZVdvcmtlckNvZGUoKSA6IHN0cmluZzsKCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhcnR1cENvZGUoKSA6IHN0cmluZzsKCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.Storage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CgpjbGFzcyBTdG9yYWdlCnsKICAgIGNvbnN0IFBSRUZfUFJFRlNPQkogPSAnX3ByZWZzXyc7CiAgICBjb25zdCBQUkVGX1BSRUZTU0lHID0gJ19wcmVmc3NpZ18nOwogICAgY29uc3QgUFJFRl9TVEFUSUNUWFQgPSAnX3N0YXRpY18nOwogICAgY29uc3QgUFJFRl9TVEFUSUNTSUcgPSAnX3N0YXRpY3NpZ18nOwoKICAgIHByaXZhdGUgJG1vZDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIENHU2ltcGxlUFdBICRtb2QgKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkUHJlZnMoKQogICAgewogICAgICAgICRwcmVmcyA9IFByZWZzOjpjcmVhdGVfZnJvbV9hcnJheSggW10gKTsKICAgICAgICAkZGF0YSA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfUFJFRlNPQkogKTsKICAgICAgICBpZiggJGRhdGEgKSAkZGF0YSA9IGpzb25fZGVjb2RlKCAkZGF0YSwgVFJVRSApOwogICAgICAgIGlmKCAkZGF0YSApICRwcmVmcyA9IFByZWZzOjpjcmVhdGVfZnJvbV9hcnJheSggJGRhdGEgKTsKICAgICAgICByZXR1cm4gJHByZWZzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmVmZXJlbmNlc1NpZygpCiAgICB7CiAgICAgICAgJGRhdGEgPSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1BSRUZTT0JKICk7CiAgICAgICAgaWYoICRkYXRhICkgcmV0dXJuIG1kNSgkZGF0YSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVQcmVmcyggUHJlZnMgJHByZWZzICkKICAgIHsKICAgICAgICAkZGF0YSA9IGpzb25fZW5jb2RlKCAkcHJlZnMgKTsKICAgICAgICAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1BSRUZTT0JKLCAkZGF0YSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0aWNUZXh0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNUWFQgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U3RhdGljVGV4dCggJHN0ciApCiAgICB7CiAgICAgICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICAgICAgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNUWFQsICRzdHIgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGljVVJMUygpCiAgICB7CiAgICAgICAgJGNvbmZpZyA9ICR0aGlzLT5tb2QtPkdldENvbmZpZygpOwogICAgICAgICR2YWxpZGF0ZV9yZWxhdGl2ZV91cmwgPSBmdW5jdGlvbiggJHVybCApIHVzZSAoJGNvbmZpZykgewogICAgICAgICAgICAvLyBleGNsdWRlIGFueXRoaW5nIHdpdGggdGhlICcuLi8nIHBhdHRlcm4KICAgICAgICAgICAgaWYoIHN0cnBvcyggJHVybCwgJy4uLycpICE9PSBGQUxTRSApIHJldHVybjsKICAgICAgICAgICAgLy8gZXhjbHVkZSBhbnl0aGluZyB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBmdHAgcHJvdG9jb2wKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoICR1cmwsICdmdHA6Ly8nKSApIHJldHVybjsKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoICR1cmwsICdodHRwOi8vJykgfHwgc3RhcnRzd2l0aCgkdXJsLCdodHRwczovLycpICkgewogICAgICAgICAgICAgICAgLy8gc3R1ZmYgd2l0aCBodHRwIGNhbiBiZSBhY2NlcHRlZC4KICAgICAgICAgICAgICAgIGlmKCBzdGFydHN3aXRoKCAkdXJsLCAkY29uZmlnWydyb290X3VybCddKSApIHsKICAgICAgICAgICAgICAgICAgICAkdXJsID0gc3Vic3RyKCR1cmwsc3RybGVuKCRjb25maWdbJ3Jvb3RfdXJsJ10pKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZXh0ZXJuYWwgdXJsCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR1cmw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gaWYgaXQgc3RhcnRzIHdpdGggLyByZW1vdmUgdGhlIGxlYWRpbmcgc2xhc2gKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoICR1cmwsICcvJykgKSAkdXJsID0gc3Vic3RyKCR1cmwsMSk7CiAgICAgICAgICAgIC8vIGJ1aWxkIGEgZmlsZXNwZWMKICAgICAgICAgICAgLy8gZW5zdXJlIHRoZSBmaWxlIGV4aXN0cwogICAgICAgICAgICAkZnMgPSAkY29uZmlnWydyb290X3BhdGgnXS4nLycuJHVybDsKICAgICAgICAgICAgaWYoICFpc19maWxlKCRmcykgKSByZXR1cm47CiAgICAgICAgICAgIHJldHVybiAkdXJsOwogICAgICAgIH07CgogICAgICAgICR0ZXh0ID0gJHRoaXMtPmdldFN0YXRpY1RleHQoKTsKICAgICAgICBpZiggISR0ZXh0ICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkbGluZXMgPSBleHBsb2RlKCJcbiIsICR0ZXh0KTsKICAgICAgICBmb3JlYWNoKCAkbGluZXMgYXMgJGxpbmUgKSB7CiAgICAgICAgICAgICRsaW5lID0gdHJpbSgkbGluZSk7CiAgICAgICAgICAgIGlmKCAhJGxpbmUgKSBjb250aW51ZTsKCiAgICAgICAgICAgICR0bXAgPSAkdmFsaWRhdGVfcmVsYXRpdmVfdXJsKCAkbGluZSApOwogICAgICAgICAgICBpZiggJHRtcCApICRvdXRbXSA9ICR0bXA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR1NpbXBsZVBXQSIKdmVyc2lvbiA9ICIxLjIuMSIKYXV0aG9yID0gImNhbGd1eTEwMDAiCmF1dGhvcmVtYWlsID0gImNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciCm1pbmNtc3ZlcnNpb24gPSAiMi4yLjEwIgpsYXp5bG9hZGFkbWluID0gMApsYXp5bG9hZGZyb250ZW5kID0gMApbZGVwZW5kc10KQ0dFeHRlbnNpb25zID0gMS42Mwo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnZV9pc2lvcyBhc3NpZ249J2lzaW9zJ317aWYgISRpc2lvc30KICAgIHsqIAogICAgICAgYnkgZGVmYXVsdCB3ZSBkaXNhYmxlIHRoZSBtYW5pZmVzdCB1cmwgc3R1ZmYgb24gSU9TIGRldmljZXMsIGJlY2F1c2UgSU9TIHNhZmFyaSA8PSAxMi4yIGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsCiAgICAgICBmb3IgYSBQV0EgaW4gYWxsIGJ1dCB0aGUgc2ltcGxlc3Qgam9icy4KICAgICp9CiAgICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSJ7JG1hbmlmZXN0X3VybH0iPgp7L2lmfQp7aWYgJHByZWZzLT5pbmNsdWRlX2lvc21ldGF9CiAgIHsqIElPUyBtZXRhIHRhZ3MsCiAgICAgIG5vdGU6IHJlY2VudCB2ZXJzaW9ucyBvZiBJT1MgcmVhZCB0aGUgbWFuaWZlc3QsIGFuZCBzdXBwb3J0IHNlcnZpY2Ugd29ya2VycwogICAgICBub3RlOiByZWNlbnQgdmVyc2lvbnMgb2YgSU9TIHdpbGwgcmVzaXplIChzbWFsbGVyKSBpY29ucyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gMTgweDE4MCBmb3IgdmFyaW91cyBkZXZpY2VzCiAgICp9CiAgIDxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyI+CiAgIDxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLXRpdGxlIiBjb250ZW50PSJ7JHByZWZzLT5zaG9ydF9uYW1lfGRlZmF1bHQ6JHByZWZzLT5uYW1lfHRydW5jYXRlOjEyfSI+CiAgIHtpZiAhZW1wdHkoJGljb25fMTgwKX08bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9InskaWNvbl8xODB9IiAvPnsvaWZ9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD4KJChmdW5jdGlvbigpewogICBsZXQgdXJsID0gJ3tjbXNfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fYWpheF9zY2FuX2Fzc2V0cyBmb3Jqcz0xfSZzaG93dGVtcGxhdGU9ZmFsc2UnCiAgICQoJ1tuYW1lPW1hc3Rlcl9pY29uXScpLnJlbW92ZUF0dHIoJ3NpemUnKTsKICAgJCgnI3NjYW4nKS5jbGljayhmdW5jdGlvbihldil7CiAgICAgICAvLyBhamF4IHJlcXVlc3QgdG8gZG8gdGhlIHNjYW4KICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCkKICAgICAgICQuZ2V0KHVybCkudGhlbihmdW5jdGlvbihkYXRhKXsKICAgICAgICAgIGlmKCBkYXRhLmxlbmd0aCApIHsKCSAgICAgIGxldCBlbCA9ICQoJ1tuYW1lPXN0YXRpY10nKQoJICAgICAgbGV0IHRleHQgPSBlbC52YWwoKQoJICAgICAgaWYoIHRleHQubGVuZ3RoICkgdGV4dCA9IHRleHQgKyAiXG4iCgkgICAgICB0ZXh0ID0gdGV4dCArIGRhdGEuam9pbigiXG4iKQoJICAgICAgZWwudmFsKHRleHQpCgkgIH0KICAgICAgIH0pCiAgIH0pCiAgICQoJyNjbGVhcicpLmNsaWNrKGZ1bmN0aW9uKGV2KXsKICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCkKICAgICAgICQoJ1tuYW1lPXN0YXRpY10nKS52YWwoJycpCiAgIH0pCn0pCjwvc2NyaXB0PgoKe3RhYl9oZWFkZXIgbmFtZT0nc2V0dGluZ3MnIGxhYmVsPSRtb2QtPkxhbmcoJ2hkcl9zZXR0aW5ncycpfQp7dGFiX2hlYWRlciBuYW1lPSdzdGF0aWMnIGxhYmVsPSRtb2QtPkxhbmcoJ2hkcl9zdGF0aWMnKX0KCnt0YWJfc3RhcnQgbmFtZT0nc2V0dGluZ3MnfQp7Zm9ybV9zdGFydH0KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9uYW1lIj57JG1vZC0+TGFuZygnbGJsX25hbWUnKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX25hbWUiIG5hbWU9Im5hbWUiIHZhbHVlPSJ7JHByZWZzLm5hbWV9Ii8+Cgk8ZGl2IGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19mX25hbWUnKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX3Nob3J0X25hbWUiPnskbW9kLT5MYW5nKCdsYmxfc2hvcnRfbmFtZScpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgCTxpbnB1dCBjbGFzcz0iZ3JpZF8xMiIgaWQ9ImZfc2hvcnRfbmFtZSIgbmFtZT0ic2hvcnRfbmFtZSIgdmFsdWU9InskcHJlZnMuc2hvcnRfbmFtZX0iLz4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2Zfc2hvcnRfbmFtZScpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIiBmb3I9ImZfZGVzY3JpcHRpb24iPnskbW9kLT5MYW5nKCdsYmxfZGVzY3JpcHRpb24nKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX2Rlc2NyaXB0aW9uIiBuYW1lPSJkZXNjcmlwdGlvbiIgdmFsdWU9InskcHJlZnMuZGVzY3JpcHRpb259Ii8+CiAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9iZ2NvbG9yIj57JG1vZC0+TGFuZygnbGJsX2JhY2tncm91bmRfY29sb3InKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMiIgaWQ9ImZfYmdjb2xvciIgbmFtZT0iYmFja2dyb3VuZF9jb2xvciIgdmFsdWU9InskcHJlZnMuYmFja2dyb3VuZF9jb2xvcn0iIHR5cGU9ImNvbG9yIi8+Cgk8ZGl2IGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19mX2JhY2tncm91bmRfY29sb3InKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX3RoZW1lY29sb3IiPnskbW9kLT5MYW5nKCdsYmxfdGhlbWVfY29sb3InKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgIAk8aW5wdXQgY2xhc3M9ImdyaWRfMiIgaWQ9ImZfdGhlbWVjb2xvciIgbmFtZT0idGhlbWVfY29sb3IiIHZhbHVlPSJ7JHByZWZzLnRoZW1lX2NvbG9yfSIgdHlwZT0iY29sb3IiLz4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2ZfdGhlbWVfY29sb3InKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX2Rpc3BsYXkiPnskbW9kLT5MYW5nKCdsYmxfZGlzcGxheScpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX2Rpc3BsYXkiIG5hbWU9ImRpc3BsYXkiPgoJICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZGlzcGxheV9saXN0IHNlbGVjdGVkPSRwcmVmcy5kaXNwbGF5fQoJPC9zZWxlY3Q+Cgk8ZGl2IGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19mX2Rpc3BsYXknKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX2Rpc3BsYXkiPnskbW9kLT5MYW5nKCdsYmxfc3RhcnRwYWdlJyl9OjwvbGFiZWw+CiAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAge3BhZ2Vfc2VsZWN0b3IgbmFtZT0nc3RhcnRwYWdlJyB2YWx1ZT0kcHJlZnMuc3RhcnRfcGFnZX0KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2Zfc3RhcnRwYWdlJyl9PC9kaXY+CiAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9vcmllbnRhdGlvbiI+eyRtb2QtPkxhbmcoJ2xibF9vcmllbnRhdGlvbicpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX29yaWVudGF0aW9uIiBuYW1lPSJvcmllbnRhdGlvbiI+CgkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcmllbnRhdGlvbl9saXN0IHNlbGVjdGVkPSRwcmVmcy5vcmllbnRhdGlvbn0KCTwvc2VsZWN0PgoJPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fZl9vcmllbnRhdGlvbicpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ2xibF9tYXN0ZXJfaWNvbicpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzYiPgogICAgCXtjbXNfZmlsZXBpY2tlciBuYW1lPSdtYXN0ZXJfaWNvbicgdmFsdWU9JHByZWZzLm1hc3Rlcl9pY29ufQoJPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fZl9tYXN0ZXJfaWNvbicpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8aHIvPgoKPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl91c2Vfc3ciPnskbW9kLT5MYW5nKCdsYmxfdXNlX3N3Jyl9OjwvbGFiZWw+CiAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF8xMiIgaWQ9ImZfdXNlX3N3IiBuYW1lPSJ1c2Vfc3ciPgoJICAgIHtjbXNfeWVzbm8gc2VsZWN0ZWQ9JHByZWZzLmluY2x1ZGVfc3d9Cgk8L3NlbGVjdD4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2ZfdXNlX3N3Jyl9PC9kaXY+CiAgIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIiBmb3I9ImZfYXV0b2NhY2hlIj57JG1vZC0+TGFuZygnbGJsX2F1dG9jYWNoZScpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIGlkPSJmX2F1dG9jYWNoZSIgbmFtZT0iYXV0b2NhY2hlIj4KCSAgICB7Y21zX3llc25vIHNlbGVjdGVkPSRwcmVmcy5hdXRvY2FjaGV9Cgk8L3NlbGVjdD4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2F1dG9jYWNoZScpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyIgZm9yPSJmX3VzZV9pb3NtZXRhIj57JG1vZC0+TGFuZygnbGJsX3VzZV9pb3NtZXRhJyl9OjwvbGFiZWw+CiAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF8xMiIgaWQ9ImZfdXNlX2lvc21ldGEiIG5hbWU9InVzZV9pb3NtZXRhIj4KCSAgICB7Y21zX3llc25vIHNlbGVjdGVkPSRwcmVmcy5pbmNsdWRlX2lvc21ldGF9Cgk8L3NlbGVjdD4KCTxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2ZfdXNlX2lvc21ldGEnKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGRpdiBjbGFzcz0iZ3JpZF8zIj4mbmJzcDs8L2Rpdj4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgICAgICA8aW5wdXQgY2xhc3M9ImdyaWRfMiIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgIDwvZGl2Pgo8L2Rpdj4Ke2Zvcm1fZW5kfQoKe3RhYl9zdGFydCBuYW1lPSdzdGF0aWMnfQp7Zm9ybV9zdGFydH0KPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX3N0YXRpY190YWInKX08L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiPnskbW9kLT5MYW5nKCdsYmxfc3RhdGljX3Jlc291cmNlcycpfTwvbGFiZWw+CiAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICA8dGV4dGFyZWEgY2xhc3M9ImdyaWRfMTIiIG5hbWU9InN0YXRpYyIgcm93cz0iMTAiPnskc3RhdGljX3RleHR9PC90ZXh0YXJlYT4KICAgICAgIDxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX3N0YXRpY19yZXNvdXJjZXMnKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9ImdyaWRfMTIiPgogICAgICAgICAgIDxidXR0b24gaWQ9InNjYW4iPnskbW9kLT5MYW5nKCdzY2FuJyl9PC9idXR0b24+CiAgICAgICAgICAgPGJ1dHRvbiBpZD0iY2xlYXIiPnskbW9kLT5MYW5nKCdjbGVhcicpfTwvYnV0dG9uPgogICAgICAgPC9kaXY+CiAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X3N0YXRpYyIgdmFsdWU9IntsYW5nKCdzdWJtaXQnKX0iLz4KPC9kaXY+Cntmb3JtX2VuZH0KCnt0YWJfZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/js.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lyogc2NyaXB0IHRvIGluaXRpYWxpemUgdGhlIENHUFdBIHNlcnZpY2Ugd29ya2VyICovCntpZiAkaW5jbHVkZV9zd30KaWYoICdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IgKSB7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCAoKSA9PiB7CglsZXQgdXJsID0gJ3tyb290X3VybH0nICsgJy9jZ3B3YV9zZXJ2aWNld29ya2VyLmpzJwoJY29uc29sZS5sb2coJ3NlcnZpY2Ugd29ya2VyIHVybCBpcyAnK3VybCkKCW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCB1cmwgKQogICAgfSkKfQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/manifest.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAie2lmICFlbXB0eSgkcHJlZnMubmFtZSl9eyRwcmVmcy5uYW1lfXtlbHNlfXtzaXRlbmFtZX17L2lmfSIsCiAgICAic2hvcnRfbmFtZSI6ICJ7JHByZWZzLnNob3J0X25hbWV9IiwKICAgICJzdGFydF91cmwiOiAie3Jvb3RfdXJsfSIsCiAgICAiYmFja2dyb3VuZF9jb2xvciI6ICJ7JHByZWZzLmJhY2tncm91bmRfY29sb3J9IiwKICAgICJkZXNjcmlwdGlvbiI6ICJ7JHByZWZzLmRlc2NyaXB0aW9ufSIsCiAgICAiaWNvbnMiOiBbCntmb3JlYWNoICRwcmVmcy5pY29ucyBhcyAkaWNvbn0KICAgICAgIHsge3N0cmlwfQogICAgICAgICAic3JjIjogInskaWNvbi5zcmN9IiwKCSAidHlwZSI6ICJ7JGljb24udHlwZX0iLAoJICJzaXplcyI6ICJ7JGljb24ud2lkdGh9KnskaWNvbi5oZWlnaHR9IgogICAgICAgICB7L3N0cmlwfSB9e2lmICEkaWNvbkBsYXN0fSx7L2lmfQp7L2ZvcmVhY2h9CiAgICBdCn0=]]></data>
	</file>
	<file>
	  <filename>/templates/serviceworker.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogYSBzaW1wbGUgc2VydmljZSB3b3JrZXIgdGhhdCB3aWxsIGNhY2hlIGFsbCBVUkxTIGluIHRoZSAvYXNzZXRzIGRpcmVjdG9yeSAqLwpjb25zdCBDQUNIRV9OQU1FICAgICAgID0gJ2NhY2hlLXskY2FjaGVfdHN9Jwpjb25zdCBBU1NFVFNfRElSICAgICAgID0gJ3skYXNzZXRzX2Rpcn0nCmNvbnN0IFJPT1RfVVJMICAgICAgICAgPSAne3Jvb3RfdXJsfScKY29uc3QgUFVCTElDX0NBQ0hFX1VSTCA9ICd7JHB1YmxpY19jYWNoZV91cmx9Jwpjb25zdCBDU1NfVVJMICAgICAgICAgID0gJ3skY3NzX3VybH0nCmNvbnN0IEFETUlOX1VSTCAgICAgICAgPSAneyRhZG1pbl91cmx9Jwpjb25zdCBPRkZMSU5FX1VSTCAgICAgID0gJ3skb2ZmbGluZV91cmx9Jwpjb25zdCBTVEFUSUNfVVJMUyAgICAgID0ge2pzb25fZW5jb2RlKCRzdGF0aWNfdXJscyl9CmNvbnN0IEFVVE9DQUNIRSAgICAgICAgPSB7JGF1dG9jYWNoZX0KCmZ1bmN0aW9uIGNyZWF0ZUNhY2hlQnVzdGVkUmVxdWVzdCh1cmwpIHsKICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7IGNhY2hlOiAncmVsb2FkJyB9KTsKCiAgICAvLyBTZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVxdWVzdC1tb2RlCiAgICAvLyBUaGlzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIENocm9tZSBhcyBvZiBNNDgsIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayB0byBzZWUKICAgIC8vIGlmIHRoZSBjYWNoZTogJ3JlbG9hZCcgb3B0aW9uIGhhZCBhbnkgZWZmZWN0LgogICAgaWYgKCdjYWNoZScgaW4gcmVxdWVzdCkgcmV0dXJuIHJlcXVlc3Q7CgogICAgLy8gSWYgeyBjYWNoZTogJ3JlbG9hZCcgfSBkaWRuJ3QgaGF2ZSBhbnkgZWZmZWN0LCBhcHBlbmQgYSBjYWNoZS1idXN0aW5nIFVSTCBwYXJhbWV0ZXIgaW5zdGVhZC4KICAgIGxldCBidXN0ZWRVcmwgPSBuZXcgVVJMKHVybCwgc2VsZi5sb2NhdGlvbi5ocmVmKTsKICAgIGJ1c3RlZFVybC5zZWFyY2ggKz0gKGJ1c3RlZFVybC5zZWFyY2ggPyAnJicgOiAnJykgKyAnY2FjaGVidXN0PScgKyBEYXRlLm5vdygpOwogICAgcmV0dXJuIG5ldyBSZXF1ZXN0KGJ1c3RlZFVybCk7Cn0KCmZ1bmN0aW9uIGlzTm90QWRtaW5SZXF1ZXN0KCByZXF1ZXN0ICkgewogICAgcmV0dXJuICFyZXF1ZXN0LnVybC5zdGFydHNXaXRoKEFETUlOX1VSTCkKfQoKZnVuY3Rpb24gaXNBc3NldFJlcXVlc3QoIHJlcXVlc3QgKSB7CiAgICAvLyBsZXQgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCkKICAgIGxldCByZSA9IG5ldyBSZWdFeHAoICcvJyArIEFTU0VUU19ESVIgKyAnLycgKQogICAgaWYgKHJlcXVlc3QubWV0aG9kID09PSAnR0VUJykgewogICAgICAgIGlmKCBQVUJMSUNfQ0FDSEVfVVJMLmxlbmd0aCAmJiByZXF1ZXN0LnVybC5zdGFydHNXaXRoKFBVQkxJQ19DQUNIRV9VUkwpICkgcmV0dXJuIHRydWUKICAgICAgICBpZiggQ1NTX1VSTC5sZW5ndGggJiYgcmVxdWVzdC51cmwuc3RhcnRzV2l0aChDU1NfVVJMKSApIHJldHVybiB0cnVlCiAgICAgICAgaWYoIHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoUk9PVF9VUkwpICYmIHJlcXVlc3QudXJsLm1hdGNoKHJlKSApIHJldHVybiB0cnVlCiAgICB9Cn0KCi8qKgoqIG9uIGluc3RhbGwsIGNhY2hlIHRoZSBvZmZsaW5lIFVSTCwgYW5kIGFueSBoYXJkY29kZWQgcmVzb3VyY2VzIHRoYXQgaXQgcmVxdWlyZXMuCiovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignaW5zdGFsbCcsZnVuY3Rpb24oZXZlbnQpIHsKICAgIGlmKCBPRkZMSU5FX1VSTC5sZW5ndGggKSB7CiAgICAgICAgZXZlbnQud2FpdFVudGlsKAogICAgICAgICAgICBmZXRjaCggY3JlYXRlQ2FjaGVCdXN0ZWRSZXF1ZXN0KCBPRkZMSU5FX1VSTCApICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewoJICAgICAgICByZXR1cm4gY2FjaGVzLm9wZW4oQ0FDSEVfTkFNRSkudGhlbihmdW5jdGlvbihjYWNoZSkgewoJICAgICAgICAgICAgcmV0dXJuIGNhY2hlLnB1dChPRkZMSU5FX1VSTCwgcmVzcG9uc2UpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KQogICAgICAgICkKICAgIH0KICAgIGlmKCBTVEFUSUNfVVJMUyAmJiBTVEFUSUNfVVJMUy5sZW5ndGggKSB7CiAgICAgICAgZXZlbnQud2FpdFVudGlsKAoJICAgIFByb21pc2UuYWxsKAoJICAgICAgICBTVEFUSUNfVVJMUy5tYXAoKGl0ZW0pID0+IHsKCQkgICAgcmV0dXJuIGZldGNoKGl0ZW0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CgkJICAgICAgIHJldHVybiBjYWNoZXMub3BlbihDQUNIRV9OQU1FKS50aGVuKGZ1bmN0aW9uKGNhY2hlKSB7CgkJICAgICAgICAgIHJldHVybiBjYWNoZS5wdXQoaXRlbSwgcmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKQogICAgICAgICkKICAgIH0KfSkKCi8qKgogKiBPbiBhY3RpdmF0ZSwgY2xlYXIgY2FjaGVzIHRoYXQgYXJlIE5PVCBlcXVhbCB0byBDQUNIRV9OQU1FCiovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLGZ1bmN0aW9uKGV2ZW50KSB7CiAgICBldmVudC53YWl0VW50aWwoCiAgICAgICAgY2FjaGVzLmtleXMoKS50aGVuKCAoY2FjaGVOYW1lcykgPT4gewoJICAgIHJldHVybiBQcm9taXNlLmFsbCgKCSAgICAgICAgY2FjaGVOYW1lcy5maWx0ZXIoIChjYWNoZW5hbWUpID0+IHsKCQkgICAgcmV0dXJuIGNhY2hlbmFtZSAhPSBDQUNIRV9OQU1FCiAgICAgICAgICAgICAgICB9KS5tYXAoIChjYWNoZW5hbWUpID0+IHsKCQkgICAgcmV0dXJuIGNhY2hlcy5kZWxldGUoY2FjaGVuYW1lKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKQogICAgICAgIH0pCiAgICApCn0pCgoKLyogaW50ZXJjZXB0IGZldGNoLCBhbmQgc2VlIGlmIGl0IGlzIGluIHRoZSBjYWNoZS4KICAgaWYgaXQgaXMgbm90IGluIHRoZSBjYWNoZSwgdGhlbiBmZXRjaCBpdAogICBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCAvYXNzZXRzIHRoZW4gd2UgY2FuIGNhY2hlIGl0LgoqLwpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgIGV2ZW50LnJlc3BvbmRXaXRoKAogICAgICAgIGNhY2hlcy5vcGVuKENBQ0hFX05BTUUpLnRoZW4oZnVuY3Rpb24oY2FjaGUpIHsKCSAgICAvLyBpZiB3ZSBhcmUgcmVxdWVzdGluZyBhbiBodG1sIHBhZ2UKCSAgICAvLyBvdGhlcndpc2Ugc29tZSBvdGhlciBhc3NldCB0eXBlCgoJICAgIGlmICggKGV2ZW50LnJlcXVlc3QubW9kZSA9PT0gJ25hdmlnYXRlJyAmJiBpc05vdEFkbWluUmVxdWVzdChldmVudC5yZXF1ZXN0KSApIHx8CgkgICAgICAgCSAoaXNOb3RBZG1pblJlcXVlc3QoZXZlbnQucmVxdWVzdCkgJiYgZXZlbnQucmVxdWVzdC5tZXRob2QgPT09ICdHRVQnICYmICBldmVudC5yZXF1ZXN0LmhlYWRlcnMuZ2V0KCdhY2NlcHQnKS5pbmNsdWRlcygndGV4dC9odG1sJykpICkgewoJICAgICAgICAvLyBmb3IgSFRNTCByZXF1ZXN0cywgcGFzcyB0aGVtIHRocm91Z2gsIGJ1dCBpZiB0aGV5IGZhaWwsIHJldHVybiB0aGUgb2ZmbGluZSBwYWdlCgkgICAgICAgIHJldHVybiBmZXRjaChldmVudC5yZXF1ZXN0KS5jYXRjaChlcnJvciA9PiB7CgkgICAgICAgCSAgICBpZiggT0ZGTElORV9VUkwubGVuZ3RoICkgcmV0dXJuIGNhY2hlcy5tYXRjaChPRkZMSU5FX1VSTCkKCQkgICAgdGhyb3cgZXJyb3IKICAgICAgICAgICAgICAgIH0pCgkgICAgfSBlbHNlIGlmKCBBVVRPQ0FDSEUgPT0gMSAmJiBldmVudC5yZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJyAmJiBpc0Fzc2V0UmVxdWVzdChldmVudC5yZXF1ZXN0KSApIHsKCSAgICAgICAgLy8gcmV0dXJuIGNhY2hlIGZpbGUgT1IgZmV0Y2ggYW5kIGNhY2hlIChjYWNoZSBmaXJzdCwgdGhlbiBuZXR3b3JrIGFuZCBjYWNoZSkKCSAgICAgICAgcmV0dXJuIGNhY2hlLm1hdGNoKGV2ZW50LnJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpewoJICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlIHx8IGZldGNoKGV2ZW50LnJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpewoJCSAgICAgICAgLy8gYWRkIHRoZSBpdGVtIHRvIHRoZSBjYWNoZQoJCQljb25zb2xlLmxvZygnY2FjaGUgJytldmVudC5yZXF1ZXN0LnVybCkKCQkgICAgICAgIGNhY2hlLnB1dChldmVudC5yZXF1ZXN0LCByZXNwb25zZS5jbG9uZSgpKTsKCQkgICAgICAgIHJldHVybiByZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKCSAgICB9IGVsc2UgewoJICAgICAgICAvLyBub3JtYWwgcmVxdWVzdC4KCSAgICAgICAgY29uc29sZS5sb2coJ2ZldGNoICcrZXZlbnQucmVxdWVzdC51cmwpCiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2goZXZlbnQucmVxdWVzdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgKQp9KQo=]]></data>
	</file>
</module>
