<?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.1</version>
    <mincmsversion>2.2.8</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+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9mcm9udGVuZHVzZXJzIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KPGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR0V4dGVuc2lvbnMgPSZndDsgMS42MTwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMTxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KPGxpPlZlcnNpb24gMS4xCiAgICA8dWw+CiAgICA8bGk+Q0hBTkdFOiBJbnRyb2R1Y2VzIHRoZSBuZXcgJ2pzJyBhY3Rpb24gdGhhdCBpcyByZXF1aXJlZCB0byBhZGQgdGhlIHN0YXJ0dXAgamF2YXNjcmlwdC48L2xpPgogICAgPGxpPk5vdyBhZGQgdGhlIGFiaWxpdHkgZm9yIG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgYWRkb25zLCBhbmQgb3RoZXIgaW5pdGlhbGl6YXRpb24gc2NyaXB0LjwvbGk+CiAgICA8bGk+QWRkcyBhIFNjcmlwdENvbWJpbmVyIGNsYXNzIHRvIGNvbWJpbmUgYW5kIGNhY2hlIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0LjwvbGk+CiAgICA8bGk+TWlub3IgaW1wcm92ZW1lbnRzIGluIHRoZSBzZXJ2aWNlIHdvcmtlciBzdHVmZi48L2xpPgogICAgPGxpPk1pbm9yIGJ1ZyBmaXguPC9saT4KICAgIDwvdWw+CjwvbGk+CjwvdWw+CjxiciAvPg==]]></about>
	<description><![CDATA[-- Missing Languagestring: moddescription --]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.61</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CmlmKCAhJGdDbXMgKSBleGl0OwovLyBpZiggISRnQ21zLT5pc19odHRwc19yZXF1ZXN0KCkgKSByZXR1cm47IC8vIGh0dHBzIG9ubHkKCiRnZXRfc2l6ZSA9IGZ1bmN0aW9uKCAkc3RyICkgewogICAgJHRtcCA9IGV4cGxvZGUoJ3gnLCRzdHIsMik7CiAgICByZXR1cm4gKGludCkgJHRtcFswXTsKfTsKCi8vIG91dHB1dCB0aGUgbWV0YSB0YWcgZm9yIHRoZSBzaXRlbWFwLnhtbAokcHJlZnMgPSAkdGhpcy0+c3RvcmFnZSgpLT5sb2FkUHJlZnMoKTsKCi8vIGZpbmQgdGhlIHNtYWxsZXN0IGljb24gdGhhdCBpcyA+IDE4MHgxODAKJGljb25fc3JjID0gbnVsbDsKJGljb25fc2l6ZSA9IDEwMDAwMDA7CmlmKCAhZW1wdHkoJHByZWZzLT5pY29ucykgKSB7CiAgICBmb3JlYWNoKCAkcHJlZnMtPmljb25zIGFzICRpY29uICkgewogICAgICAgICR0X3NpemUgPSAkZ2V0X3NpemUoJGljb25bJ3NpemVzJ10pOwogICAgICAgIGlmKCAkdF9zaXplID49IDE4MCAmJiAkdF9zaXplIDwgJGljb25fc2l6ZSApIHsKICAgICAgICAgICAgJGljb25fc3JjID0gJGljb25bJ3NyYyddOwogICAgICAgICAgICAkaWNvbl9zaXplID0gJHRfc2l6ZTsKICAgICAgICB9CiAgICB9Cn0KCi8vIGdldCBhZGRvbiBzdGFydHVwIGNvZGUKJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCAkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnZGVmYXVsdC50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSk7CiR0cGwtPmFzc2lnbigncHJlZnMnLCAkcHJlZnMpOwokdHBsLT5hc3NpZ24oJ21hbmlmZXN0X3VybCcsIENNU19ST09UX1VSTC4nLycuQ0dTaW1wbGVQV0E6Ok1BTklGRVNUX0ZJTEVOQU1FKTsKJHRwbC0+YXNzaWduKCJtYW5pZmVzdF9wYXRoIiwgJy8nLkNHU2ltcGxlUFdBOjpNQU5JRkVTVF9GSUxFTkFNRSk7CmlmKCAkaWNvbl9zcmMgKSAkdHBsLT5hc3NpZ24oJ2ljb25fMTgwJywgJGNvbmZpZ1snYXNzZXRzX3VybCddLicvJy4kaWNvbl9zcmMpOwokdHBsLT5kaXNwbGF5KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgY2dlX2ltYWdlOyAvLyBDR0V4dGVuc2lvbnMKCnRyeSB7CiAgICAkcHJlZnMgPSAkdGhpcy0+c3RvcmFnZSgpLT5sb2FkUHJlZnMoKTsKCiAgICBpZiggIWVtcHR5KCRfUE9TVCkgKSB7CgogICAgICAgIGlmKCBpc3NldCgkX1BPU1RbJ3N1Ym1pdCddKSApIHsKICAgICAgICAgICAgLy8gc2F2ZSBzZXR0aW5ncwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGFyciA9IG51bGw7CiAgICAgICAgICAgICAgICAkYXJyWyduYW1lJ10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ25hbWUnXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnc2hvcnRfbmFtZSddID0gZmlsdGVyX3ZhciggJF9QT1NUWydzaG9ydF9uYW1lJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICRhcnJbJ2Rlc2NyaXB0aW9uJ10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ2Rlc2NyaXB0aW9uJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICRhcnJbJ2JhY2tncm91bmRfY29sb3InXSA9IGZpbHRlcl92YXIoICRfUE9TVFsnYmFja2dyb3VuZF9jb2xvciddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICAkYXJyWyd0aGVtZV9jb2xvciddID0gZmlsdGVyX3ZhciggJF9QT1NUWyd0aGVtZV9jb2xvciddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICAkYXJyWydkaXNwbGF5J10gPSBmaWx0ZXJfdmFyKCAkX1BPU1RbJ2Rpc3BsYXknXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnb3JpZW50YXRpb24nXSA9IGZpbHRlcl92YXIoICRfUE9TVFsnb3JpZW50YXRpb24nXSwgRklMVEVSX1NBTklUSVpFX1NUUklORyApOwogICAgICAgICAgICAgICAgJGFyclsnaW5jbHVkZV9zdyddID0gY21zX3RvX2Jvb2woICRfUE9TVFsndXNlX3N3J10gKTsKICAgICAgICAgICAgICAgICRhcnJbJ2luY2x1ZGVfaW9zbWV0YSddID0gY21zX3RvX2Jvb2woICRfUE9TVFsndXNlX2lvc21ldGEnXSApOwogICAgICAgICAgICAgICAgJGFyclsnc3RhcnRfcGFnZSddID0gKGludCkgJF9QT1NUWydzdGFydHBhZ2UnXTsKCiAgICAgICAgICAgICAgICAkbWFzdGVyX2ljb24gPSAkYXJyWydtYXN0ZXJfaWNvbiddID0gZmlsdGVyX3ZhciggJF9QT1NUWydtYXN0ZXJfaWNvbiddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HICk7CiAgICAgICAgICAgICAgICBpZiggISRtYXN0ZXJfaWNvbiApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfbm9pbWFnZScpICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgICAgICAgICAgICAgJG1hc3Rlcl9mbiA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLicvJy4kbWFzdGVyX2ljb247CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19maWxlKCAkbWFzdGVyX2ZuICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfZmlsZW5vdGZvdW5kJykgKTsKCiAgICAgICAgICAgICAgICAgICAgJGRlc2lyZWRfc2l6ZXMgPSBbIDEwMjQsIDUxMiwgMjU2LCAxOTIsIDE4MCwgMTY3LCAxNTIsIDE0NCwgMTI4LCA2NCwgMTYgXTsKICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9IGdldGltYWdlc2l6ZSgkbWFzdGVyX2ZuKTsKICAgICAgICAgICAgICAgICAgICBpZiggISRzaXplICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX25vaW1hZ2VzaXplJykgKTsKCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAoIWVtcHR5KCRzaXplWydtaW1lJ10pKSA/ICRzaXplWydtaW1lJ10gOiBudWxsOwogICAgICAgICAgICAgICAgICAgICRvcmlnX3dpZHRoID0gJHNpemVbMF07CiAgICAgICAgICAgICAgICAgICAgJG9yaWdfaGVpZ2h0ID0gJHNpemVbMV07CiAgICAgICAgICAgICAgICAgICAgaWYoICRvcmlnX3dpZHRoIDwgNTEyICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX2ltYWdlc2l6ZScsICRkZXNpcmVkX3NpemVzWzBdICkgKTsKICAgICAgICAgICAgICAgICAgICBpZiggJG9yaWdfd2lkdGggIT0gJG9yaWdfaGVpZ2h0ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX2ltZ25vdHNxdWFyZScpICk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkdHlwZSB8fCAhc3RhcnRzd2l0aCgkdHlwZSwnaW1hZ2UvJykgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfaW1hZ2V0eXBlJykgKTsKICAgICAgICAgICAgICAgICAgICAkZXh0ID0gc3Vic3RyKHN0cnJjaHIoJG1hc3Rlcl9mbiwgJy4nKSwgMSk7CgogICAgICAgICAgICAgICAgICAgIC8vIG5vdywgZ2l2ZW4gc29tZSBzaXplcy4uLiB3ZSB0cnkgdG8gZ2VuZXJhdGUgc29tZSBpY29ucwogICAgICAgICAgICAgICAgICAgICRkZXN0cGF0aCA9ICRjb25maWdbJ2Fzc2V0c19wYXRoJ10uJy9pY29ucyc7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19kaXIoICRkZXN0cGF0aCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzID0gbWtkaXIoICRkZXN0cGF0aCApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfbWtkaXInLCRkZXN0cGF0aCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc193cml0YWJsZSggJGRlc3RwYXRoICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfd3JpdGFibGUnKSApOwogICAgICAgICAgICAgICAgICAgICRhcnJbJ2ljb25zJ10gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICRkZXNpcmVkX3NpemVzIGFzICRzaXplICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggJG9yaWdfd2lkdGggPCAkc2l6ZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSAicHdhX2ljb25feyRzaXplfS57JGV4dH0iOwogICAgICAgICAgICAgICAgICAgICAgICAkb3V0ZmlsZSA9ICIkZGVzdHBhdGgvJGZuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgY2dlX2ltYWdlOjpyZXNpemUoICRtYXN0ZXJfZm4sICRvdXRmaWxlLCAkc2l6ZSwgJHNpemUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydzcmMnXSA9ICRjb25maWdbJ2Fzc2V0c19kaXInXS4iL2ljb25zL3skZm5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlY1snc2l6ZXMnXT0gInskc2l6ZX14eyRzaXplfSI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHJlY1snd2lkdGgnXSA9ICRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAvLyRyZWNbJ2hlaWdodCddID0gJHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZWNbJ3R5cGUnXSA9ICR0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAkYXJyWydpY29ucyddW10gPSAkcmVjOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcHJlZnMgPSBQcmVmczo6Y3JlYXRlX2Zyb21fYXJyYXkoICRhcnIgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlKCktPnNhdmVQcmVmcyggJHByZWZzICk7CgogICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIG1hbmlmZXN0LnhtbAogICAgICAgICAgICAgICAgJHRoaXMtPmdlbmVyYXRvcigpLT5nZW5lcmF0ZU1hbmlmZXN0KCAkcHJlZnMgKTsKCiAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBzZXJ2aWNlIHdvcmtlcgogICAgICAgICAgICAgICAgLy8gJHRoaXMtPmdlbmVyYXRlU2VydmljZVdvcmtlciggJHByZWZzLCB0aW1lKCkgKTsKCiAgICAgICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93TWVzc2FnZSggJHRoaXMtPkxhbmcoJ21zZ19zYXZlZCcpICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCAkZS0+R2V0TWVzc2FnZSgpICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2UgaWYoICRfUE9TVFsnc3VibWl0X3N0YXRpYyddICkgewogICAgICAgICAgICAvLyBwYXJzZSBhbmQgc2F2ZSBzdGF0aWMgdGV4dC4KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzdGF0aWNfdGV4dCA9IGZpbHRlcl92YXIoICRfUE9TVFsnc3RhdGljJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlKCktPnNldFN0YXRpY1RleHQoICRzdGF0aWNfdGV4dCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycyggJGUtPkdldE1lc3NhZ2UoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRzdGF0aWNfdGV4dCA9ICR0aGlzLT5zdG9yYWdlKCktPmdldFN0YXRpY1RleHQoKTsKICAgICRkaXNwbGF5X2xpc3QgPQogICAgICAgIFsKICAgICAgICAgICAgUHJlZnM6OkRJU1BMQVlfU1RBTkRBTE9ORSA9PiAkdGhpcy0+TGFuZygnZGlzcGxheV9zdGFuZGFsb25lJyksCiAgICAgICAgICAgIFByZWZzOjpESVNQTEFZX0JST1dTRVIgPT4gJHRoaXMtPkxhbmcoJ2Rpc3BsYXlfYnJvd3NlcicpLAogICAgICAgICAgICBQcmVmczo6RElTUExBWV9GVUxMU0NSRUVOID0+ICR0aGlzLT5MYW5nKCdkaXNwbGF5X2Z1bGxzY3JlZW4nKSwKICAgICAgICAgICAgUHJlZnM6OkRJU1BMQVlfTUlOSU1BTFVJID0+ICR0aGlzLT5MYW5nKCdkaXNwbGF5X21pbmltYWx1aScpLAogICAgICAgIF07CiAgICAkb3JpZW50YXRpb25fbGlzdCA9CiAgICAgICAgWwogICAgICAgICAgICBQcmVmczo6T1JJRU5UQVRJT05fREZMVCA9PiAkdGhpcy0+TGFuZygnb3JpZW50YXRpb25fZGZsdCcpLAogICAgICAgICAgICBQcmVmczo6T1JJRU5UQVRJT05fUE9SVFJBSVQgPT4gJHRoaXMtPkxhbmcoJ29yaWVudGF0aW9uX3BvcnRyYWl0JyksCiAgICAgICAgICAgIFByZWZzOjpPUklFTlRBVElPTl9MQU5EU0NBUEUgPT4gJHRoaXMtPkxhbmcoJ29yaWVudGF0aW9uX2xhbmRzY2FwZScpLAogICAgICAgIF07CiAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCAnZGVmYXVsdGFkbWluLnRwbCcpICk7CiAgICAkdHBsLT5hc3NpZ24oJ3ByZWZzJywkcHJlZnMpOwogICAgJHRwbC0+YXNzaWduKCdkaXNwbGF5X2xpc3QnLCRkaXNwbGF5X2xpc3QpOwogICAgJHRwbC0+YXNzaWduKCdvcmllbnRhdGlvbl9saXN0Jywkb3JpZW50YXRpb25fbGlzdCk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXRpY190ZXh0Jywkc3RhdGljX3RleHQpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycyggJGUtPkdldE1lc3NhZ2UoKSApOwp9]]></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+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkxhbmcoJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJyk7CiAgICAgICAgJGNvbnRlbnRvcHMtPnJlZ2lzdGVyX2NvbnRlbnRfdHlwZSgkb2JqKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjEnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNtc1ZlcnNpb24oKSB7IHJldHVybiAnMi4yLjgnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiBUUlVFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgeyByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIFsnQ0dFeHRlbnNpb25zJz0+JzEuNjEnXTsgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplRnJvbnRlbmQoKQogICAgewogICAgICAgIHBhcmVudDo6SW5pdGlhbGl6ZUZyb250ZW5kKCk7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OkdldEhlYWRlckhUTUwoKTsKICAgICAgICAkb3V0IC49ICR0aGlzLT5nZXRJbml0aWFsaXphdGlvblNjcmlwdCgpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8vLy8gLS0tLSBNeSBmdW5jdGlvbnMgLS0tLSAvLy8vCgogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlckFkZG9uKCBTZXJ2aWNlV29ya2VyQWRkb24gJG9iaiApCiAgICB7CiAgICAgICAgJHRoaXMtPnNlcnZpY2VXb3JrZXJBZGRvbnNbXSA9ICRvYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNlcnZpY2VXb3JrZXJBZGRvbnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+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+VmVyc2lvbiAxLjEKICAgIDx1bD4KICAgIDxsaT5DSEFOR0U6IEludHJvZHVjZXMgdGhlIG5ldyAnanMnIGFjdGlvbiB0aGF0IGlzIHJlcXVpcmVkIHRvIGFkZCB0aGUgc3RhcnR1cCBqYXZhc2NyaXB0LjwvbGk+CiAgICA8bGk+Tm93IGFkZCB0aGUgYWJpbGl0eSBmb3Igb3RoZXIgbW9kdWxlcyB0byByZWdpc3RlciBzZXJ2aWNlIHdvcmtlciBhZGRvbnMsIGFuZCBvdGhlciBpbml0aWFsaXphdGlvbiBzY3JpcHQuPC9saT4KICAgIDxsaT5BZGRzIGEgU2NyaXB0Q29tYmluZXIgY2xhc3MgdG8gY29tYmluZSBhbmQgY2FjaGUgdGhlIHJlcXVpcmVkIGphdmFzY3JpcHQuPC9saT4KICAgIDxsaT5NaW5vciBpbXByb3ZlbWVudHMgaW4gdGhlIHNlcnZpY2Ugd29ya2VyIHN0dWZmLjwvbGk+CiAgICA8bGk+TWlub3IgYnVnIGZpeC48L2xpPgogICAgPC91bD4KPC9saT4KPC91bD4K]]></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+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[PD9waHAKJGxhbmdbJ2Vycl9ub2ltYWdlJ10gPSAnUGxlYXNlIHNwZWNpZnkgYW4gaW1hZ2UsIGZvciB0aGUgY3JlYXRpb24gb2YgaWNvbnMuJzsKJGxhbmdbJ2luZm9fZl91c2Vfc3cnXSA9ICdZb3UgY2FuIG9wdGlvbmFsbHkgZGlzYWJsZSB0aGUgc2VydmljZSB3b3JrZXIgaGVyZS4gIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciBhcyBpdCB3aWxsIHByZXZlbnQgdGhlIFBXQSBmcm9tIG9wZXJhdGluZyBwcm9wZXJseSc7CiRsYW5nWydpbmZvX2ZfdXNlX2lvc21ldGEnXSA9ICdIZXJlIHlvdSBjYW4gY2hvb3NlIHRvIG9wdGlvbmFsbHkgZGlzYWJsZSBJT1Mgc3BlY2lmaWMgbWV0YSB0YWdzIGluIHRoZSBoZWFkZXIuICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGluY2x1ZGluZyB0aGVtIG1hbnVhbGx5Lic7CiRsYW5nWydsYmxfc3RhcnRwYWdlJ10gPSAnU3RhcnQgcGFnZSc7CiRsYW5nWydpbmZvX2Zfc3RhcnRwYWdlJ10gPSAnT3B0aW9uYWxseSwgc3BlY2lmeSBhbiBhbHRlcm5hdGUgcGFnZSB0byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgYXBwIGZyb20gdGhlIGhvbWUgc2NyZWVuLiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZC4nOwokbGFuZ1snaW5mb19zdGF0aWNfdGFiJ10gPSAnU3BlY2lmeSBVUkxTIHRvIHJlc291cmNlcyAoY3NzLGpzLGltYWdlcykgdGhhdCBzaG91bGQgYWx3YXlzIGJlIGNhY2hlZCBieSB0aGUgc2VydmljZSB3b3JrZXIuICBUaGVzZSBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHRoZSBkZXZpY2UgaXMgb2ZmbGluZSB0byBkaXNwbGF5IGEgc3R5bGVkIG9mZmxpbmUgcGFnZSc7CiRsYW5nWydpbmZvX3N0YXRpY19yZXNvdXJjZXMnXSA9ICdTcGVjaWZ5IG9uZSBVUkwgcGVyIGxpbmUuICBBYnNvbHV0ZSBVUkxzIG9yIFVSTHMgcmVsYXRpdmUgdG8gdGhlIENNU01TIHJvb3QgYXJlIHBlcm1pdHRlZC4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHBsYWNlIGFsbCBjYWNoYWJsZSBhc3NldHMgd2l0aGluIHRoZSBhc3NldHMgZGlyZWN0b3J5Lic7CiRsYW5nWydsYmxfc3RhdGljX3Jlc291cmNlcyddID0gJ1N0YXRpYy9vZmZsaW5lIGFzc2V0cyc7CiRsYW5nWydoZHJfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydoZHJfc3RhdGljJ10gPSAnU3RhdGljL29mZmxpbmUgYXNzZXRzJzsKJGxhbmdbJ2luZm9fZl9uYW1lJ10gPSAnU3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBhcHBsaWNhdGlvbi4gIFNob3VsZCBiZSAxMiBjaGFyYWN0ZXJzIG9yIGxlc3MuICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZCc7CiRsYW5nWydpbmZvX2Zfc2hvcnRfbmFtZSddID0gJ09wdGlvbmFsbHkgc3BlY2lmeSBhIHNob3J0IG5hbWUgZm9yIHRoZSBhcHAuICBUaGlzIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIHByb21wdGVkIHRvIGFkZCB0aGUgYXBwIHRvIHRoZSBob21lIHNjcmVlbic7CiRsYW5nWydpbmZvX2ZfYmFja2dyb3VuZF9jb2xvciddID0gJ1NwZWNpZnkgYSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHNwbGFzaCBzY3JlZW4uICBTaG91bGQgYmUgYSBoZXhhZGVjaW1hbCBSR0IgY29sb3IgcHJlY2VkZWQgYnkgYSAjIGNoYXJhY3Rlcic7CiRsYW5nWydpbmZvX2ZfdGhlbWVfY29sb3InXSA9ICdTcGVjaWZ5IGEgdGhlbWUgY29sb3IgZm9yIHRoZSBhcHAuICBTaG91bGQgYmUgYSBoZXhhZGVjaW1hbCBSR0IgY29sb3IgcHJlY2VkZWQgYnkgYSAjIGNoYXJhY3Rlcic7CiRsYW5nWydpbmZvX2ZfZGlzcGxheSddID0gJ1NldCB0aGUgZGlzcGxheSBtb2RlIGZvciB0aGUgYXBwLiAgRm9yIGFuZHJvaWQgUFdBIGFwcHMsIHRoZSBkaXNwbGF5IG11c3QgYmUgc2V0IHRvICJTdGFuZGFsb25lIic7CiRsYW5nWydpbmZvX2Zfb3JpZW50YXRpb24nXSA9ICdPcHRpb25hbGx5IHNldCBhIGZpeGVkIG9yaWVudGF0aW9uIGZvciB0aGUgYXBwLiAgV2UgcmVjb21tZW5kIHlvdSBsZWF2ZSB0aGlzIGluICJhdXRvIiBtb2RlIi4nOwokbGFuZ1snaW5mb19mX21hc3Rlcl9pY29uJ10gPSAnU2VsZWN0IGEgc3F1YXJlLCBvcGFxdWUgaWNvbiB3aXRoIGEgc2l6ZSBvZiBhdCBsZWFzdCA1MTJ4NTEyLiAgVGhpcyBhcHBsaWNhdG9uIHdpbGwgY3JlYXRlIGEgc2VyaWVzIG9mIHNtYWxsZXIgaWNvbiBmcm9tIHRoaXMgaW1hZ2UgYW5kIHN0b3JlIHRoZW0gaW4gL2Fzc2V0cy9pY29ucyc7CiRsYW5nWydsYmxfdXNlX3N3J10gPSAnRW5hYmxlIGEgc2VydmljZSB3b3JrZXInOwokbGFuZ1snaW5mb191c2Vfc3cnXSA9ICdBIHNlcnZpY2Ugd29ya2VyIG11c3QgYmUgZW5hYmxlZCBmb3IgYSBQV0EgYXBwIHRvIGJlIHJlY29nbml6ZWQuICBJbiByYXJlIG9jY2FzaW9ucyB5b3UgbWF5IHdhbnQgdG8gZGlzYWJsZSBpdCc7CiRsYW5nWydsYmxfdXNlX2lvc21ldGEnXSA9ICdFbmFibGUgSU9TIG1ldGEgdGFncyc7CiRsYW5nWydpbmZvX3VzZV9zdyddID0gJ1RoaXMgZmxhZyB3aWxsIGRpc2FibGUgdGhlIGluc2VydGlvbiBvZiBJT1Mgc3BlY2lmaWMgbWV0YSB0YWdzIGluIHRoZSBwYWdlIGhlYWRlci4gIFlvdSBtYXkgd2lzaCB0byBkaXNhYmxlIHRoaXMgaWYgeW91IGhhdmUgbWV0YSB0YWdzIGZyb20gZWxzZXdoZXJlJzsKJGxhbmdbJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJ10gPSAnQ0dTaW1wbGVQV0EgT2ZmbGluZSBQYWdlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydsYmxfbmFtZSddID0gJ05hbWUnOwokbGFuZ1snbGJsX3Nob3J0X25hbWUnXSA9ICdTaG9ydCBuYW1lJzsKJGxhbmdbJ2xibF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ2xibF9iYWNrZ3JvdW5kX2NvbG9yJ10gPSAnQmFja2dyb3VuZCBjb2xvcic7CiRsYW5nWydsYmxfdGhlbWVfY29sb3InXSA9ICdUaGVtZSBjb2xvcic7CiRsYW5nWydsYmxfZGlzcGxheSddID0gJ0Rpc3BsYXknOwokbGFuZ1snbGJsX29yaWVudGF0aW9uJ10gPSAnT3JpZW50YXRpb24nOwokbGFuZ1snbGJsX21hc3Rlcl9pY29uJ10gPSAnTGFyZ2UgaWNvbic7CiRsYW5nWydkaXNwbGF5X2Jyb3dzZXInXSA9ICdCcm93c2VyJzsKJGxhbmdbJ2Rpc3BsYXlfZnVsbHNjcmVlbiddID0gJ0Z1bGxzY3JlZW4nOwokbGFuZ1snZGlzcGxheV9zdGFuZGFsb25lJ10gPSAnU3RhbmRhbG9uZSc7CiRsYW5nWydkaXNwbGF5X21pbmltYWx1aSddID0gJ01pbmltYWwtdWknOwokbGFuZ1snb3JpZW50YXRpb25fZGZsdCddID0gJ0RlZmF1bHQvQXV0byc7CiRsYW5nWydvcmllbnRhdGlvbl9wb3J0cmFpdCddID0gJ1BvcnRyYWl0JzsKJGxhbmdbJ29yaWVudGF0aW9uX2xhbmRzY2FwZSddID0gJ0xhbmRzY2FwZSc7CiRsYW5nWydtc2dfc2F2ZWQnXSA9ICdTZXR0aW5ncyBzYXZlZCc7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ0dTaW1wbGVQV0E7CnVzZSBjbXNfc2l0ZXByZWZzOwoKY2xhc3MgR2VuZXJhdG9yCnsKICAgIGNvbnN0IFBSRUZfTEFTVFRTID0gJ19sYXN0dHNfJzsKICAgIGNvbnN0IFBSRUZfU0lHID0gJ19wcmVmX3NpZ18nOwogICAgY29uc3QgUFJFRl9TVEFUSUNTSUcgPSAnX3N0YXRpY19zaWdfJzsKICAgIGNvbnN0IFBSRUZfU1RBUlRQQUdFVFMgPSAnX3N0YXJ0cGFnZXRzXyc7CgogICAgcHJpdmF0ZSAkbW9kOwogICAgcHJpdmF0ZSAkc3RvcmFnZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIENHU2ltcGxlUFdBICRtb2QsIFN0b3JhZ2UgJHN0b3JhZ2UgKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5zdG9yYWdlID0gJHN0b3JhZ2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRlTWFuaWZlc3QoIFByZWZzICRwcmVmcywgJGRlc3QgPSBudWxsICkKICAgIHsKICAgICAgICAkY29uZmlnID0gJHRoaXMtPm1vZC0+R2V0Q29uZmlnKCk7CiAgICAgICAgaWYoICEkZGVzdCApIHsKICAgICAgICAgICAgJGRlc3QgPSAkY29uZmlnWydyb290X3BhdGgnXS4nLycuQ0dTaW1wbGVQV0E6Ok1BTklGRVNUX0ZJTEVOQU1FOwogICAgICAgIH0KICAgICAgICBpZiggaXNfZmlsZSgkZGVzdCkgJiYgIWlzX3dyaXRhYmxlKCRkZXN0KSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPm1vZC0+TGFuZygnZXJyX3Blcm1pc3Npb24nLCAkZGVzdCkgKTsKCiAgICAgICAgJHN0YXJ0X3BhZ2UgPSAkcHJlZnMtPnN0YXJ0X3BhZ2U7CiAgICAgICAgJHN0YXJ0X3VybCA9IG51bGw7CiAgICAgICAgaWYoICRzdGFydF9wYWdlID4gMCApIHsKICAgICAgICAgICAgJGNvbnRlbnRfb2JqID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+TG9hZENvbnRlbnRGcm9tSUQoICRzdGFydF9wYWdlICk7CiAgICAgICAgICAgIGlmKCAkY29udGVudF9vYmogJiYgJGNvbnRlbnRfb2JqLT5BY3RpdmUoKSApIHsKICAgICAgICAgICAgICAgIC8vIG11c3QgYmUgYSByZWxhdGl2ZSB1cmwuLi4uIGJ1dCwgcHJldHR5IHVybHMgZG9uJ3QgbWF0dGVyIGluIFBXQSBhcHBzLgogICAgICAgICAgICAgICAgJHN0YXJ0X3VybCA9ICcuL2luZGV4LnBocD8nLiRjb25maWdbJ3F1ZXJ5X3ZhciddLic9Jy4kc3RhcnRfcGFnZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCBqc29uX2VuY29kZSggJHByZWZzICksIFRSVUUgKTsKICAgICAgICBpZiggZW1wdHkoJGRhdGFbJ25hbWUnXSkgKSAkZGF0YVsnbmFtZSddID0gY21zX3NpdGVwcmVmczo6Z2V0KCdzaXRlbmFtZScsJ0NNU01TIFNpdGUnKTsKICAgICAgICBpZiggIWVtcHR5KCRzdGFydF91cmwpICkgJGRhdGFbJ3N0YXJ0X3VybCddID0gJHN0YXJ0X3VybDsKICAgICAgICB1bnNldCggJGRhdGFbJ21hc3Rlcl9pY29uJ10sICRkYXRhWydpbmNsdWRlX3N3J10sICRkYXRhWydpbmNsdWRlX2lvc21ldGEnXSwgJGRhdGFbJ3N0YXJ0X3BhZ2UnXSApOwogICAgICAgIGlmKCAkZGF0YVsnb3JpZW50YXRpb24nXSA9PSBQcmVmczo6T1JJRU5UQVRJT05fREZMVCApIHVuc2V0KCAkZGF0YVsnb3JpZW50YXRpb24nXSApOwogICAgICAgICRvdXQgPSBqc29uX2VuY29kZSggJGRhdGEsIEpTT05fUFJFVFRZX1BSSU5UIHwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyApOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCAkZGVzdCwgJG91dCApOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaW5kTGFzdE1vZGlmaWVkQXNzZXRUaW1lKCkKICAgIHsKICAgICAgICAkZmluZF9sYXN0bW9kaWZpZWR0c19ieXBhdGggPSBmdW5jdGlvbigkc3RhcnRwYXRoLCAkbGF0ZXN0ID0gbnVsbCkgdXNlICgmJGZpbmRfbGFzdG1vZGlmaWVkdHNfYnlwYXRoKSB7CiAgICAgICAgICAgICRzdGFydHBhdGggPSB0cmltKCRzdGFydHBhdGgpOwogICAgICAgICAgICAkZGggPSBvcGVuZGlyKCRzdGFydHBhdGgpOwogICAgICAgICAgICB3aGlsZSggZmFsc2UgIT09ICgkZW50cnkgPSByZWFkZGlyKCRkaCkpICkgewogICAgICAgICAgICAgICAgaWYoICRlbnRyeSA9PSAnLicgfHwgJGVudHJ5ID09ICcuLicgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkZnVsbHBhdGggPSAkc3RhcnRwYXRoLicvJy4kZW50cnk7CiAgICAgICAgICAgICAgICBpZiggaXNfZmlsZSgkZnVsbHBhdGgpICkgewogICAgICAgICAgICAgICAgICAgICRtdGltZSA9IGZpbGVtdGltZSgkZnVsbHBhdGgpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkbXRpbWUgPiAkbGF0ZXN0ICkgJGxhdGVzdCA9ICRtdGltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYoIGlzX2RpcigkZnVsbHBhdGgpICkgewogICAgICAgICAgICAgICAgICAgICRsYXRlc3QgPSAkZmluZF9sYXN0bW9kaWZpZWR0c19ieXBhdGgoICRmdWxscGF0aCwgJGxhdGVzdCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlZGlyKCRkaCk7CiAgICAgICAgICAgIHJldHVybiAkbGF0ZXN0OwogICAgICAgIH07CgogICAgICAgICRhc3NldHNfcGF0aCA9ICR0aGlzLT5tb2QtPkdldENvbmZpZygpWydhc3NldHNfcGF0aCddOwogICAgICAgIHJldHVybiAkZmluZF9sYXN0bW9kaWZpZWR0c19ieXBhdGgoJGFzc2V0c19wYXRoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmluZExhc3RBZGRvbk1vZGlmaWVkVGltZShhcnJheSAkYWRkb25zID0gbnVsbCkKICAgIHsKICAgICAgICAkdmFsID0gMDsKICAgICAgICBpZiggIWVtcHR5KCRhZGRvbnMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkYWRkb25zIGFzICRhZGRvbiApIHsKICAgICAgICAgICAgICAgIGlmKCAhJGFkZG9uIGluc3RhbmNlb2YgU2VydmljZVdvcmtlckFkZG9uICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkdmFsID0gbWF4KCR2YWwsJGFkZG9uLT5nZXRNb2RpZmllZERhdGUoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR2YWw7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRTdGFydFBhZ2VMYXN0TW9kaWZpZWQoICRwYWdlX2lkICkKICAgIHsKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICBpZiggJHBhZ2VfaWQgPiAwICkgewogICAgICAgICAgICAkY29udGVudF9vYmogPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5Mb2FkQ29udGVudEZyb21JRCggJHBhZ2VfaWQgKTsKICAgICAgICAgICAgaWYoICRjb250ZW50X29iaiAmJiAkY29udGVudF9vYmotPkFjdGl2ZSgpICkgewogICAgICAgICAgICAgICAgJG91dCA9IHN0cnRvdGltZSggJGNvbnRlbnRfb2JqLT5HZXRNb2RpZmllZERhdGUoKSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhdXRvR2VuZXJhdGVTZXJ2aWNlV29ya2VyKCBhcnJheSAkYWRkb25zID0gbnVsbCApCiAgICB7CiAgICAgICAgJHByZWZzID0gJHRoaXMtPnN0b3JhZ2UtPmxvYWRQcmVmcygpOwogICAgICAgIGlmKCAhJHByZWZzLT5pbmNsdWRlX3N3ICkgcmV0dXJuOwoKICAgICAgICAvLyBmaW5kIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3QgbW9kaWZpZWQgZmlsZSBpbiB0aGUgYXNzZXRzX3BhdGgKICAgICAgICAvLyBpZiBpdCBpcyBncmVhdGVyIHRoYW4gdGhlIExBU1RUSU1FIHByZWYgdGhlbiBnZW5lcmF0ZSB0aGUgdHMKICAgICAgICAkbGFzdHRzID0gKGludCkgJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9MQVNUVFMgKTsKICAgICAgICAkZm91bmR0cyA9IChpbnQpICR0aGlzLT5maW5kTGFzdE1vZGlmaWVkQXNzZXRUaW1lKCk7CiAgICAgICAgJGZvdW5kdHMgPSBtYXgoICR0aGlzLT5maW5kTGFzdEFkZG9uTW9kaWZpZWRUaW1lKCRhZGRvbnMpLCAkZm91bmR0cyApOwogICAgICAgICRhc3NldHNfY2hhbmdlZCA9ICRsYXN0dHMgPCAkZm91bmR0czsKICAgICAgICAkcHJlZnNfc2lnID0gJHRoaXMtPnN0b3JhZ2UtPmdldFByZWZlcmVuY2VzU2lnKCk7CiAgICAgICAgJHByZWZzX2NoYW5nZWQgPSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NJRyApICE9ICRwcmVmc19zaWc7CiAgICAgICAgJHN0YXRpY19zaWcgPSBtZDUoJHRoaXMtPnN0b3JhZ2UtPmdldFN0YXRpY1RleHQoKSk7CiAgICAgICAgJHN0YXRpY19jaGFuZ2VkID0gJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNTSUcgKSAhPSAkc3RhdGljX3NpZyAmJiAkdGhpcy0+c3RvcmFnZS0+Z2V0U3RhdGljVGV4dCgpOwogICAgICAgICRzdGFydHBhZ2VfY2hhbmdlZCA9ICRzdGFydHBhZ2VfdHMgPSBudWxsOwogICAgICAgIGlmKCAkcHJlZnMtPnN0YXJ0X3BhZ2UgPiAwICkgewogICAgICAgICAgICAkc3RhcnRwYWdlX3RzID0gJHRoaXMtPmZpbmRTdGFydFBhZ2VMYXN0TW9kaWZpZWQoICRwcmVmcy0+c3RhcnRfcGFnZSApOwogICAgICAgICAgICAkc3RhcnRwYWdlX2xhc3R0cyA9ICR0aGlzLT5tb2QtPkdldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfU1RBUlRQQUdFVFMgKTsKICAgICAgICAgICAgJHN0YXJ0cGFnZV9jaGFuZ2VkID0gJHN0YXJ0cGFnZV90cyA+ICRzdGFydHBhZ2VfbGFzdHRzOwogICAgICAgIH0KCiAgICAgICAgaWYoICRhc3NldHNfY2hhbmdlZCB8fCAkcHJlZnNfY2hhbmdlZCB8fCAkc3RhdGljX2NoYW5nZWQgfHwgJHN0YXJ0cGFnZV9jaGFuZ2VkICkgewogICAgICAgICAgICAvLyBzb21lIGZpbGUgaGFzIGNoYW5nZWQgc2luY2Ugb3VyIGxhc3Qgc2NhbgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJhdGVTZXJ2aWNlV29ya2VyKCRwcmVmcywgdGltZSgpLCBudWxsLCAkYWRkb25zKTsKICAgICAgICAgICAgaWYoICRhc3NldHNfY2hhbmdlZCApICR0aGlzLT5tb2QtPlNldFByZWZlcmVuY2UoIHNlbGY6OlBSRUZfTEFTVFRTLCAkZm91bmR0cyApOwogICAgICAgICAgICBpZiggJHByZWZzX2NoYW5nZWQgKSAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NJRywgJHByZWZzX3NpZyApOwogICAgICAgICAgICBpZiggJHN0YXRpY19jaGFuZ2VkICkgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZSggc2VsZjo6UFJFRl9TVEFUSUNTSUcsICRzdGF0aWNfc2lnICk7CiAgICAgICAgICAgIGlmKCAkc3RhcnRwYWdlX2NoYW5nZWQgKSAkdGhpcy0+bW9kLT5TZXRQcmVmZXJlbmNlKCBzZWxmOjpQUkVGX1NUQVJUUEFHRVRTLCAkc3RhcnRwYWdlX3RzICk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBZGRvblNlcnZpY2VXb3JrZXJDb2RlKCBhcnJheSAkYWRkb25zID0gbnVsbCApCiAgICB7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgaWYoICFlbXB0eSgkYWRkb25zKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGFkZG9ucyBhcyAkYWRkb24gKSB7CiAgICAgICAgICAgICAgICBpZiggISRhZGRvbiBpbnN0YW5jZW9mIFNlcnZpY2VXb3JrZXJBZGRvbiApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJG91dCAuPSAkYWRkb24tPmdldFNlcnZpY2VXb3JrZXJDb2RlKCk7CiAgICAgICAgICAgICAgICAkb3V0IC49ICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG91dCA9ICJcblxuIi4kb3V0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdGVTZXJ2aWNlV29ya2VyKCBQcmVmcyAkcHJlZnMsICR0cywgc3RyaW5nICRkZXN0ID0gbnVsbCwgYXJyYXkgJGFkZG9ucyA9IG51bGwgKQogICAgewogICAgICAgICR0cyA9IChpbnQpICR0czsKCiAgICAgICAgLy8gYWJzb2x1dGVseSBnZW5lcmF0ZSB0aGUgc2VydmljZSB3b3JrZXIKICAgICAgICAkY29uZmlnID0gJHRoaXMtPm1vZC0+R2V0Q29uZmlnKCk7CiAgICAgICAgaWYoICEkZGVzdCApIHsKICAgICAgICAgICAgJGRlc3QgPSAkY29uZmlnWydyb290X3BhdGgnXS4nLycuQ0dTaW1wbGVQV0E6OldPUktFUl9GSUxFTkFNRTsKICAgICAgICB9CiAgICAgICAgaWYoIGlzX2ZpbGUoJGRlc3QpICYmICFpc193cml0YWJsZSgkZGVzdCkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9wZXJtaXNzaW9uJywgJGRlc3QpICk7CgogICAgICAgIC8vIGlmIHdlIGhhdmUgYW4gb2ZmbGluZSBwYWdlCiAgICAgICAgLy8gZ2V0IGl0cyBVUkwKICAgICAgICAkb2ZmbGluZV91cmwgPSBudWxsOwogICAgICAgICRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKICAgICAgICAkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21BbGlhcyggT2ZmbGluZVBhZ2VUeXBlOjpQQUdFX0FMSUFTICk7CiAgICAgICAgaWYoICRjb250ZW50b2JqICkgJG9mZmxpbmVfdXJsID0gJGNvbnRlbnRvYmotPkdldFVSTCgpOwoKICAgICAgICAvLyB3ZSBhbHJlYWR5IG11c3QgaGF2ZSBoYWQgdGhlc2UgcmVzb3VyY2VzIHBhcnNlZAogICAgICAgICRzdGF0aWNfdXJscyA9ICR0aGlzLT5zdG9yYWdlLT5nZXRTdGF0aWNVUkxTKCk7CgogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPm1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnc2VydmljZXdvcmtlci50cGwnKSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdjYWNoZV90cycsJHRzKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2Fzc2V0c19kaXInLCAkY29uZmlnWydhc3NldHNfZGlyJ10pOwogICAgICAgICR0cGwtPmFzc2lnbignb2ZmbGluZV91cmwnLCRvZmZsaW5lX3VybCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdzdGF0aWNfdXJscycsJHRoaXMtPnN0b3JhZ2UtPmdldFN0YXRpY1VSTFMoKSk7CiAgICAgICAgJG91dCA9ICR0cGwtPmZldGNoKCk7CgogICAgICAgICRvdXQgLj0gJHRoaXMtPmdldEFkZG9uU2VydmljZVdvcmtlckNvZGUoICRhZGRvbnMgKTsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZGVzdCwgJG91dCk7CiAgICB9Cn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.OfflinePageType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwp1c2UgQ29udGVudDsKCmNsYXNzIE9mZmxpbmVQYWdlVHlwZSBleHRlbmRzIENvbnRlbnQKewogICAgY29uc3QgUEFHRV9BTElBUyA9ICdjZ3B3YV9PZmZsaW5lUGFnZSc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgICR0aGlzLT5kb0FsaWFzQ2hlY2sgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+ZG9BdXRvQWxpYXNJZkVuYWJsZWQgPSBmYWxzZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X21vZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHU0lNUExFUFdBKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSGFuZGxlc0FsaWFzKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFR5cGUoKSB7IHJldHVybiAnY2dwd2Ffb2ZmbGluZXBhZ2V0eXBlJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEZyaWVuZGxZTmFtZSgpIHsgcmV0dXJuICR0aGlzLT5nZXRfbW9kKCktPkxhbmcoJ2NvbnRlbnR0eXBlX29mZmxpbmVwYWdlJyk7IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydGllcygpCiAgICB7CiAgICAgICAgcGFyZW50OjpTZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgLy8kdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3NlY3VyZScsMCk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdzZWFyY2hhYmxlJywwKTsKICAgICAgICAvLyR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgncGFyZW50JywtMSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdzaG93aW5tZW51JyxmYWxzZSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdtZW51dGV4dCcsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgndGFyZ2V0JywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdleHRyYTEnLCcnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2V4dHJhMicsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnZXh0cmEzJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdpbWFnZScsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgndGh1bWJuYWlsJywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCd0YWJpbmRleCcsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnYWNjZXNza2V5JywnJyk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCd0aXRsZWF0dHJpYnV0ZScsJycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnYWN0aXZlJyx0cnVlKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2NhY2hhYmxlJyxmYWxzZSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdwYWdlX3VybCcsJycpOwoKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2FsaWFzJywnJyk7CiAgICAgICAgJHRoaXMtPkFkZEJhc2VQcm9wZXJ0eSgnYWxpYXMnLDEwLDEpOwoKICAgICAgICAjVHVybiBvbiBwcmV2aWV3CiAgICAgICAgJHRoaXMtPm1QcmV2aWV3ID0gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNDb3B5YWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNEZWZhdWx0UG9zc2libGUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIEhhc1VzYWJsZUxpbmsoKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFdhbnRzQ2hpbGRyZW4oKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIElzU3lzdGVtUGFnZSgpIHsgcmV0dXJuIHRydWU7IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRmlsbFBhcmFtcygkcGFyYW1zLCAkZWRpdGluZyA9IGZhbHNlKQogICAgewoKICAgICAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyk7CiAgICAgICAgJHRoaXMtPm1TaG93SW5NZW51ID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPm1DYWNoYWJsZSA9IGZhbHNlOwogICAgICAgICR0aGlzLT5tQWN0aXZlID0gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZykKICAgIHsKICAgICAgICBzd2l0Y2goJG9uZSkgewogICAgICAgIGNhc2UgJ2FsaWFzJzoKICAgICAgICAgICAgJGZsZCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhbGlhcyIgdmFsdWU9Iicuc2VsZjo6UEFHRV9BTElBUy4nIiByZWFkb25seS8+PHNwYW4+Jy5zZWxmOjpQQUdFX0FMSUFTLic8L3NwYW4+JzsKICAgICAgICAgICAgcmV0dXJuIFsgbGFuZygnYWxpYXMnKSwgJGZsZCBdOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIFZhbGlkYXRlRGF0YSgpCiAgICB7CiAgICAgICAgJGVycm9ycyA9IHBhcmVudDo6VmFsaWRhdGVEYXRhKCk7CiAgICAgICAgaWYoICRlcnJvcnMgPT09IEZBTFNFICkgJGVycm9ycyA9IFtdOwoKICAgICAgICAvL0RvIG91ciBvd24gYWxpYXMgY2hlY2sKICAgICAgICBpZiAoJHRoaXMtPm1BbGlhcyA9PSAnJykgewogICAgICAgICAgICAkZXJyb3JzW10gPSBsYW5nKCdub2ZpZWxkZ2l2ZW4nLCBbbGFuZygnZXJyb3JfdHlwZScpXSApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCAkdGhpcy0+bUFsaWFzICE9IHNlbGY6OlBBR0VfQUxJQVMgKSB7CiAgICAgICAgICAgICRlcnJvcnNbXSA9ICdpbnZhbGlkIGFsaWFzICcuJHRoaXMtPm1BbGlhczsgLy8gdG9kbzogdHJhbnNsYXRlIG1lLgogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgkdGhpcy0+bUFsaWFzICE9ICR0aGlzLT5tT2xkQWxpYXMpIHsKICAgICAgICAgICAgJGdDbXMgPSBjbXNtcygpOwogICAgICAgICAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwogICAgICAgICAgICAkZXJyb3IgPSAkY29udGVudG9wcy0+Q2hlY2tBbGlhc0Vycm9yKCR0aGlzLT5tQWxpYXMsICR0aGlzLT5tSWQpOwogICAgICAgICAgICBpZiAoJGVycm9yICE9PSBGQUxTRSkgJGVycm9yc1tdID0gJGVycm9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChjb3VudCgkZXJyb3JzKSA+IDAgPyAkZXJyb3JzIDogRkFMU0UpOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.Prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHU2ltcGxlUFdBOwoKY2xhc3MgUHJlZnMgaW1wbGVtZW50cyBcSnNvblNlcmlhbGl6YWJsZSwgXEFycmF5QWNjZXNzCnsKICAgIGNvbnN0IERJU1BMQVlfQlJPV1NFUiA9ICdicm93c2VyJzsKICAgIGNvbnN0IERJU1BMQVlfRlVMTFNDUkVFTiA9ICdmdWxsc2NyZWVuJzsKICAgIGNvbnN0IERJU1BMQVlfU1RBTkRBTE9ORSA9ICdzdGFuZGFsb25lJzsKICAgIGNvbnN0IERJU1BMQVlfTUlOSU1BTFVJICA9ICdtaW5pbWFsLXVpJzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX0RGTFQgICA9ICdkZmx0JzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX1BPUlRSQUlUID0gJ3BvcnRyYWl0JzsKICAgIGNvbnN0IE9SSUVOVEFUSU9OX0xBTkRTQ0FQRSA9ICdsYW5kc2NhcGUnOwoKICAgIHByaXZhdGUgJF9kYXRhID0KICAgICAgICBbCiAgICAgICAgICAgICduYW1lJz0+bnVsbCwgJ3Nob3J0X25hbWUnPT5udWxsLCAnZGVzY3JpcHRpb24nPT5udWxsLAogICAgICAgICAgICAnZGlzcGxheSc9PnNlbGY6OkRJU1BMQVlfU1RBTkRBTE9ORSwgJ29yaWVudGF0aW9uJz0+c2VsZjo6T1JJRU5UQVRJT05fREZMVCwKICAgICAgICAgICAgJ2JhY2tncm91bmRfY29sb3InPT4nI2ZmZmZmZicsICd0aGVtZV9jb2xvcic9PicjMDAwMDAwJywgJ21hc3Rlcl9pY29uJz0+bnVsbCwgJ2ljb25zJz0+bnVsbCwKICAgICAgICAgICAgJ3N0YXJ0X3BhZ2UnPT5udWxsLAogICAgICAgICAgICAnaW5jbHVkZV9zdyc9PnRydWUsICdpbmNsdWRlX2lvc21ldGEnPT50cnVlLAogICAgICAgIF07CgogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCggJGtleSApCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX2dldCggJGtleSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggJGtleSApCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgIGNhc2UgJ3Nob3J0X25hbWUnOgogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICBjYXNlICdkaXNwbGF5JzoKICAgICAgICBjYXNlICdvcmllbnRhdGlvbic6CiAgICAgICAgY2FzZSAnYmFja2dyb3VuZF9jb2xvcic6CiAgICAgICAgY2FzZSAndGhlbWVfY29sb3InOgogICAgICAgIGNhc2UgJ21hc3Rlcl9pY29uJzoKICAgICAgICBjYXNlICdzdGFydF9wYWdlJzoKICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHRoaXMtPl9kYXRhWyRrZXldKTsKCiAgICAgICAgY2FzZSAnaW5jbHVkZV9zdyc6CiAgICAgICAgY2FzZSAnaW5jbHVkZV9pb3NtZXRhJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ2ljb25zJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldFNldCggJGtleSwgJHZhbCApCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX3NldCggJGtleSwgJHZhbCApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCggJGtleSwgJHZhbCApCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgc2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCAka2V5ICkKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoICR0aGlzLT5fZGF0YVska2V5XSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCggJGtleSApIHt9CgogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGE7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVfZnJvbV9hcnJheSggYXJyYXkgJGluICkKICAgIHsKICAgICAgICAkb2JqID0gbmV3IHNlbGY7CiAgICAgICAgZm9yZWFjaCggJGluIGFzICRrZXkgPT4gJHZhbCkgewogICAgICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgICAgICBjYXNlICdzaG9ydF9uYW1lJzoKICAgICAgICAgICAgY2FzZSAnZGlzcGxheSc6CiAgICAgICAgICAgIGNhc2UgJ3RoZW1lX2NvbG9yJzoKICAgICAgICAgICAgY2FzZSAnYmFja2dyb3VuZF9jb2xvcic6CiAgICAgICAgICAgIGNhc2UgJ21hc3Rlcl9pY29uJzoKICAgICAgICAgICAgY2FzZSAnc3RhcnRfcGFnZSc6CgkgICAgY2FzZSAnZGVzY3JpcHRpb24nOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2luY2x1ZGVfc3cnOgogICAgICAgICAgICBjYXNlICdpbmNsdWRlX2lvc21ldGEnOgogICAgICAgICAgICAgICAgJG9iai0+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[W21vZHVsZV0KbmFtZSA9ICJDR1NpbXBsZVBXQSIKdmVyc2lvbiA9IDEuMQphdXRob3IgPSAiY2FsZ3V5MTAwMCIKYXV0aG9yZW1haWwgPSAiY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyIKbWluY21zdmVyc2lvbiA9ICIyLjIuOCIKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAKW2RlcGVuZHNdCkNHRXh0ZW5zaW9ucyA9IDEuNjEK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0ieyRtYW5pZmVzdF91cmx9Ij4Ke2lmICRwcmVmcy0+aW5jbHVkZV9pb3NtZXRhfQogICB7KiBJT1MgbWV0YSB0YWdzLAogICAgICBub3RlOiByZWNlbnQgdmVyc2lvbnMgb2YgSU9TIHJlYWQgdGhlIG1hbmlmZXN0LCBhbmQgc3VwcG9ydCBzZXJ2aWNlIHdvcmtlcnMKICAgICAgbm90ZTogcmVjZW50IHZlcnNpb25zIG9mIElPUyB3aWxsIHJlc2l6ZSAoc21hbGxlcikgaWNvbnMgdGhhdCBhcmUgc21hbGxlciB0aGFuIDE4MHgxODAgZm9yIHZhcmlvdXMgZGV2aWNlcwogICAqfQogICA8bWV0YSBuYW1lPSJhcHBsZS1tb2JpbGUtd2ViLWFwcC1jYXBhYmxlIiBjb250ZW50PSJ5ZXMiPgogICA8bWV0YSBuYW1lPSJhcHBsZS1tb2JpbGUtd2ViLWFwcC10aXRsZSIgY29udGVudD0ieyRwcmVmcy0+c2hvcnRfbmFtZXxkZWZhdWx0OiRwcmVmcy0+bmFtZXx0cnVuY2F0ZToxMn0iPgogICB7aWYgIWVtcHR5KCRpY29uXzE4MCl9PGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSJ7JGljb25fMTgwfSIgLz57L2lmfQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD4KJChmdW5jdGlvbigpewogICAkKCdbbmFtZT1tYXN0ZXJfaWNvbl0nKS5yZW1vdmVBdHRyKCdzaXplJyk7Cn0pCjwvc2NyaXB0PgoKe3RhYl9oZWFkZXIgbmFtZT0nc2V0dGluZ3MnIGxhYmVsPSRtb2QtPkxhbmcoJ2hkcl9zZXR0aW5ncycpfQp7dGFiX2hlYWRlciBuYW1lPSdzdGF0aWMnIGxhYmVsPSRtb2QtPkxhbmcoJ2hkcl9zdGF0aWMnKX0KCnt0YWJfc3RhcnQgbmFtZT0nc2V0dGluZ3MnfQp7Zm9ybV9zdGFydH0KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiIGZvcj0iZl9uYW1lIj57JG1vZC0+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+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIiBmb3I9ImZfdXNlX2lvc21ldGEiPnskbW9kLT5MYW5nKCdsYmxfdXNlX2lvc21ldGEnKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgICAgICA8c2VsZWN0IGNsYXNzPSJncmlkXzEyIiBpZD0iZl91c2VfaW9zbWV0YSIgbmFtZT0idXNlX2lvc21ldGEiPgoJICAgIHtjbXNfeWVzbm8gc2VsZWN0ZWQ9JHByZWZzLmluY2x1ZGVfaW9zbWV0YX0KCTwvc2VsZWN0PgoJPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fZl91c2VfaW9zbWV0YScpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8ZGl2IGNsYXNzPSJncmlkXzMiPiZuYnNwOzwvZGl2PgogICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZ3JpZF8yIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgPC9kaXY+CjwvZGl2Pgp7Zm9ybV9lbmR9Cgp7dGFiX3N0YXJ0IG5hbWU9J3N0YXRpYyd9Cntmb3JtX3N0YXJ0fQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fc3RhdGljX3RhYicpfTwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ2xibF9zdGF0aWNfcmVzb3VyY2VzJyl9PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0iZ3JpZF8xMiIgbmFtZT0ic3RhdGljIiByb3dzPSIxMCI+eyRzdGF0aWNfdGV4dH08L3RleHRhcmVhPgogICAgICAgPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fc3RhdGljX3Jlc291cmNlcycpfTwvZGl2PgogICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF9zdGF0aWMiIHZhbHVlPSJ7bGFuZygnc3VibWl0Jyl9Ii8+CjwvZGl2Pgp7Zm9ybV9lbmR9Cgp7dGFiX2VuZH0=]]></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[LyogYSBzaW1wbGUgc2VydmljZSB3b3JrZXIgdGhhdCB3aWxsIGNhY2hlIGFsbCBVUkxTIGluIHRoZSAvYXNzZXRzIGRpcmVjdG9yeSAqLwpjb25zdCBDQUNIRV9OQU1FICA9ICdjYWNoZS17JGNhY2hlX3RzfScKY29uc3QgQVNTRVRTX0RJUiAgPSAneyRhc3NldHNfZGlyfScKY29uc3QgUk9PVF9VUkwgICAgPSAne3Jvb3RfdXJsfScKY29uc3QgT0ZGTElORV9VUkwgPSAneyRvZmZsaW5lX3VybH0nCmNvbnN0IFNUQVRJQ19VUkxTID0ge2pzb25fZW5jb2RlKCRzdGF0aWNfdXJscyl9CgpmdW5jdGlvbiBjcmVhdGVDYWNoZUJ1c3RlZFJlcXVlc3QodXJsKSB7CiAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwgeyBjYWNoZTogJ3JlbG9hZCcgfSk7CgogICAgLy8gU2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXJlcXVlc3QtbW9kZQogICAgLy8gVGhpcyBpcyBub3QgeWV0IHN1cHBvcnRlZCBpbiBDaHJvbWUgYXMgb2YgTTQ4LCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2hlY2sgdG8gc2VlCiAgICAvLyBpZiB0aGUgY2FjaGU6ICdyZWxvYWQnIG9wdGlvbiBoYWQgYW55IGVmZmVjdC4KICAgIGlmICgnY2FjaGUnIGluIHJlcXVlc3QpIHJldHVybiByZXF1ZXN0OwoKICAgIC8vIElmIHsgY2FjaGU6ICdyZWxvYWQnIH0gZGlkbid0IGhhdmUgYW55IGVmZmVjdCwgYXBwZW5kIGEgY2FjaGUtYnVzdGluZyBVUkwgcGFyYW1ldGVyIGluc3RlYWQuCiAgICBsZXQgYnVzdGVkVXJsID0gbmV3IFVSTCh1cmwsIHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBidXN0ZWRVcmwuc2VhcmNoICs9IChidXN0ZWRVcmwuc2VhcmNoID8gJyYnIDogJycpICsgJ2NhY2hlYnVzdD0nICsgRGF0ZS5ub3coKTsKICAgIHJldHVybiBuZXcgUmVxdWVzdChidXN0ZWRVcmwpOwp9CgpmdW5jdGlvbiBpc0Fzc2V0UmVxdWVzdCggcmVxdWVzdCApIHsKICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKQogICAgbGV0IHJlID0gbmV3IFJlZ0V4cCggJy8nICsgQVNTRVRTX0RJUiArICcvJyApCiAgICBpZiggcmVxdWVzdC5tZXRob2QgPT09ICdHRVQnICYmIHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoUk9PVF9VUkwpICYmIHJlcXVlc3QudXJsLm1hdGNoKHJlKSApIHJldHVybiB0cnVlCn0KCi8qKgoqIG9uIGluc3RhbGwsIGNhY2hlIHRoZSBvZmZsaW5lIFVSTCwgYW5kIGFueSBoYXJkY29kZWQgcmVzb3VyY2VzIHRoYXQgaXQgcmVxdWlyZXMuCiovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignaW5zdGFsbCcsZnVuY3Rpb24oZXZlbnQpIHsKICAgIGlmKCBPRkZMSU5FX1VSTC5sZW5ndGggKSB7CiAgICAgICAgZXZlbnQud2FpdFVudGlsKAogICAgICAgICAgICBmZXRjaCggY3JlYXRlQ2FjaGVCdXN0ZWRSZXF1ZXN0KCBPRkZMSU5FX1VSTCApICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewoJICAgICAgICByZXR1cm4gY2FjaGVzLm9wZW4oQ0FDSEVfTkFNRSkudGhlbihmdW5jdGlvbihjYWNoZSkgewoJICAgICAgICAgICAgcmV0dXJuIGNhY2hlLnB1dChPRkZMSU5FX1VSTCwgcmVzcG9uc2UpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KQogICAgICAgICkKICAgIH0KICAgIGlmKCBTVEFUSUNfVVJMUyAmJiBTVEFUSUNfVVJMUy5sZW5ndGggKSB7CiAgICAgICAgZXZlbnQud2FpdFVudGlsKAoJICAgIFByb21pc2UuYWxsKAoJICAgICAgICBTVEFUSUNfVVJMUy5tYXAoKGl0ZW0pID0+IHsKCQkgICAgcmV0dXJuIGZldGNoKGl0ZW0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CgkJICAgICAgIHJldHVybiBjYWNoZXMub3BlbihDQUNIRV9OQU1FKS50aGVuKGZ1bmN0aW9uKGNhY2hlKSB7CgkJICAgICAgICAgIHJldHVybiBjYWNoZS5wdXQoaXRlbSwgcmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKQogICAgICAgICkKICAgIH0KfSkKCi8qKgogKiBPbiBhY3RpdmF0ZSwgY2xlYXIgY2FjaGVzIHRoYXQgYXJlIE5PVCBlcXVhbCB0byBDQUNIRV9OQU1FCiovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLGZ1bmN0aW9uKGV2ZW50KSB7CiAgICBldmVudC53YWl0VW50aWwoCiAgICAgICAgY2FjaGVzLmtleXMoKS50aGVuKCAoY2FjaGVOYW1lcykgPT4gewoJICAgIHJldHVybiBQcm9taXNlLmFsbCgKCSAgICAgICAgY2FjaGVOYW1lcy5maWx0ZXIoIChjYWNoZW5hbWUpID0+IHsKCQkgICAgcmV0dXJuIGNhY2hlbmFtZSAhPSBDQUNIRV9OQU1FCiAgICAgICAgICAgICAgICB9KS5tYXAoIChjYWNoZW5hbWUpID0+IHsKCQkgICAgcmV0dXJuIGNhY2hlcy5kZWxldGUoY2FjaGVuYW1lKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKQogICAgICAgIH0pCiAgICApCn0pCgoKLyogaW50ZXJjZXB0IGZldGNoLCBhbmQgc2VlIGlmIGl0IGlzIGluIHRoZSBjYWNoZS4KICAgaWYgaXQgaXMgbm90IGluIHRoZSBjYWNoZSwgdGhlbiBmZXRjaCBpdAogICBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCAvYXNzZXRzIHRoZW4gd2UgY2FuIGNhY2hlIGl0LgoqLwpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgIGV2ZW50LnJlc3BvbmRXaXRoKAogICAgICAgIGNhY2hlcy5vcGVuKENBQ0hFX05BTUUpLnRoZW4oZnVuY3Rpb24oY2FjaGUpIHsKCSAgICAvLyBpZiB3ZSBhcmUgcmVxdWVzdGluZyBhbiBodG1sIHBhZ2UKCSAgICAvLyBvdGhlcndpc2Ugc29tZSBvdGhlciBhc3NldCB0eXBlCgkgICAgaWYgKGV2ZW50LnJlcXVlc3QubW9kZSA9PT0gJ25hdmlnYXRlJyB8fCAoZXZlbnQucmVxdWVzdC5tZXRob2QgPT09ICdHRVQnICYmICBldmVudC5yZXF1ZXN0LmhlYWRlcnMuZ2V0KCdhY2NlcHQnKS5pbmNsdWRlcygndGV4dC9odG1sJykpKSB7CgkgICAgICAgLy8gZm9yIEhUTUwgcmVxdWVzdHMsIHBhc3MgdGhlbSB0aHJvdWdoLCBidXQgaWYgdGhleSBmYWlsLCByZXR1cm4gdGhlIG9mZmxpbmUgcGFnZQoJICAgICAgIHJldHVybiBmZXRjaChldmVudC5yZXF1ZXN0KS5jYXRjaChlcnJvciA9PiB7CgkgICAgICAgCSAgIGlmKCBPRkZMSU5FX1VSTC5sZW5ndGggKSByZXR1cm4gY2FjaGVzLm1hdGNoKE9GRkxJTkVfVVJMKQoJCSAgIHRocm93IGVycm9yCiAgICAgICAgICAgICAgIH0pCgkgICAgfSBlbHNlIGlmKCBldmVudC5yZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJyAmJiBpc0Fzc2V0UmVxdWVzdChldmVudC5yZXF1ZXN0KSApIHsKCSAgICAgICAgLy8gcmV0dXJuIGNhY2hlIGZpbGUgT1IgZmV0Y2ggYW5kIGNhY2hlIChjYWNoZSBmaXJzdCwgdGhlbiBuZXR3b3JrIGFuZCBjYWNoZSkKCSAgICAgICAgcmV0dXJuIGNhY2hlLm1hdGNoKGV2ZW50LnJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpewoJICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlIHx8IGZldGNoKGV2ZW50LnJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpewoJCSAgICAgICAgLy8gYWRkIHRoZSBpdGVtIHRvIHRoZSBjYWNoZQoJCSAgICAgICAgY2FjaGUucHV0KGV2ZW50LnJlcXVlc3QsIHJlc3BvbnNlLmNsb25lKCkpOwoJCSAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KQoJICAgIH0gZWxzZSB7CgkgICAgICAgLy8gbm9ybWFsIHJlcXVlc3QuCiAgICAgICAgICAgICAgIHJldHVybiBmZXRjaChldmVudC5yZXF1ZXN0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICApCn0pCg==]]></data>
	</file>
</module>
