<?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>CGFEURegister</name>
	<version>1.0.4</version>
    <mincmsversion>2.2.10</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGEgY29tcGFuaW9uIG1vZHVsZSB0byBGcm9udEVuZHVzZXJzIHRvIGFsbG93IHVzZXJzIHRvIGNyZWF0ZSB0aGVpciBvd24gYWNjb3VudCBvbiB5b3VyIHdlYnNpdGUuPC9wPgoKPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KICAgPGxpPldvcmtzIHdpdGggRkVVIEdyb3VwcyBhbmQgUHJvcGVydGllczwvbGk+CiAgIDxsaT5Xb3JrcyB3aXRoIEZyb250RW5kVXNlcnMnIGVtYWlsIGFuZCBwYXNzd29yZCBwb2xpY2llcy48L2xpPgogICA8bGk+U3RvcmVzIHRlbXBvcmFyeSB1c2VyIGluZm9ybWF0aW9uIHNlY3VyZWx5PC9saT4KICAgPGxpPlNlbmRzIGVtYWlsIHJlbWluZGVycyB0byB1c2VycyB3aG8gaGF2ZSBub3QgcmVnaXN0ZXJlZC48L2xpPgogICA8bGk+UmVxdWlyZXMgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIHJlZ2lzdHJhdGlvbiBieSBjbGlja2luZyBvbiBhIGxpbmsgaW4gYW4gZW1haWwgYmVmb3JlIGJlaW5nIHB1c2hlZCBsaXZlLjwvcD4KICAgPGxpPkZsZXhpYmxlIHRlbXBsYXRlczwvbGk+CiAgIDxsaT5DdXN0b21pemFibGUgZW1haWwgdGVtcGxhdGVzPC9saT4KICAgPGxpPlVzZXJuYW1lIGJsYWNrbGlzdCBhbmQgd2hpdGVsaXN0PC9saT4KICAgPGxpPndvcmtzIHdpdGggY2FwdGNoYTwvbGk+CiAgIDxsaT5DU1JGIHByb3RlY3Rpb248L2xpPgogICA8bGk+QW4gYWRtaW4gaW50ZXJmYWNlIHRvIGFsbG93IG1hbmFnZXJzIHRvIG1hbmFnZSB1c2VycyB3aG8gaGF2ZSBub3QgY29tcGxldGVkIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy48L2xpPgogICA8bGk+bW9yZS4uPC9saT4KPC91bD4KCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPgo8cD5UbyBwcm9wZXJseSB1c2UgdGhpcyBtb2R1bGUsIHlvdSBuZWVkIHRvIGhhdmUgdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHByb3Blcmx5IGNvbmZpZ3VyZWQgd2l0aCBhdCBsZWFzdCBvbmUgZ3JvdXAuICBZb3Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBjcmVhdGVkIGFuZCB0ZXN0ZWQgbG9naW4sIGFuZCBsb2dvdXQgZnVuY3Rpb25hbGl0eS48L3A+CjxwPk5leHQsIGFmdGVyIGluc3RhbGxpbmcgdGhlIG1vZHVsZSwgYWRkIHRoZSA8Y29kZT57Q0dGRVVSZWdpc3RlciBncm91cD0nVEhFR1JPVVAnfTwvY29kZT4gdGFnIHRvIGEgY29udGVudCBwYWdlLiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiBhIHZhbGlkIEZyb250RW5kVXNlcnMgZ3JvdXAuPC9wPgo8cD5Zb3Ugc2hvdWxkIGFkanVzdCB5b3VyIGNvbmZpZy5waHAgZmlsZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzIDxlbT4oc2VlIGJlbG93KTwvZW0+IHRvIGNvbmZpZ3VyZSB0aGlzIG1vZHVsZSB0byB5b3VyIGxpa2luZy48L3A+CjxwPk90aGVyIHRoYW4gdGhlIGdyb3VwIHBhcmFtZXRlciwgbW9zdCBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgdGhpcyBtb2R1bGUgdXRpbGl6ZXMgc2hvdWxkIGJlIHNldCB1c2luZyB0aGUge2Ntc19tb2R1bGVfaGludH0gcGx1Z2luIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSBvciBwYWdlIHNwZWNpZmljIHNtYXJ0eSBsb2dpYyBmaWVsZCwgIGJlZm9yZSB0aGUgbW9kdWxlIGlzIGNhbGxlZC48L3A+Cgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KICAgIDxoMyBpZD0icHJpdmFjeSI+UHJpdmFjeSBXYXJuaW5nOjwvaDM+CiAgICA8cD5BZG1pbmlzdHJhdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQuPC9wPgogICAgPHA+VGhpcyBtb2R1bGUgZG9lcyBsb2cgdGhlIElQIGFkZHJlc3Mgb2YgdXNlcnMuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEby1Ob3QtVHJhY2sgcG9saWNpZXMsIGFuZCBtYXkgYnJlYWsgc29tZSBsYXdzLjwvcD4KPC9kaXY+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICAgPGxpPjxjb2RlPmFjdGlvbjwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9InJlZ2lzdGVyIik8L2VtPgogICAgICAgPHVsPgogICAgICAgICAgIDxsaT48Y29kZT5yZWdpc3RlcjwvY29kZT4gLSBUaGlzIGlzIHRoZSBkZWZhdWx0IGFjdGlvbi4gIEl0IHByb3ZpZGVzIHRoZSByZWdpc3RyYXRpb24gZm9ybS48L2xpPgoJICAgPGxpPjxjb2RlPnJlcGVhdGNvZGU8L2NvZGU+IC0gVGhpcyBhY3Rpb24gcHJvdmlkZXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHJlcXVlc3QgYW5vdGhlciB2ZXJpZmljYXRpb24gY29kZS48L2xpPgogICAgICAgPC91bD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyLCB1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMsIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIG1vZHVsZSB0YWcuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmdyb3VwPC9jb2RlPiA8c3Ryb25nPnJlcXVpcmVkIHN0cmluZzwvc3Ryb25nPgogICAgICAgPHA+VXNlZCBvbnkgYnkgdGhlICJyZWdpc3RlciIgYWN0aW9uLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBuYW1lIG9mIGEgdmFsaWQgRnJvbnRFbmRVc2VycyBncm91cCBmb3IgdXNlcnMgdG8gcmVnaXN0ZXIgdG8uPC9wPgogICAgICAgPHA+VGhpcyBwYXJhbWV0ZXIsIHVubGlrZSB0aGUgb3RoZXIgcGFyYW1ldGVycywgc2hvdWxkIGJlIHNwZWNpZmllZCBvbiB0aGUgbW9kdWxlIHRhZywgd2hlbiBjYWxsaW5nIHRoZSByZWdpc3RlciBhY3Rpb24uPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmlubGluZTwvY29kZT4gPGVtPihvcHRpb25hbCBib29sZWFuPWZhbHNlKTwvZW0+CiAgICAgICA8cD5Vc2VkIGJ5IHRoZSAicmVnaXN0ZXIiIGFuZCAicmVwZWF0Y29kZSIgYWN0aW9ucywgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIG91dHB1dCBmcm9tIHRoZSBtb2R1bGUgYWN0aW9uLCBmb3IgZXhhbXBsZSBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQsIHNob3VsZCByZXBsYWNlIHRoZSBvcmlnaW5hbCB0YWcuICAgVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBleGFtcGxlIHRvIHBsYWNlIGEgcmVnaXN0cmF0aW9uIGZvcm0gaW4gYSBzaWRlYmFyLCBldGMuPC9wPgogICAgICAgPHA+VGhpcyBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdCBvbiB0aGUgdmVyaWZ5IGZvcm0gYWN0aW9uLjwvcD4KICAgPC9saT4KCiAgIDxsaT48Y29kZT5ub2NhcHRjaGE8L2NvZGU+IDxlbT4ob3B0aW9uYWwgYm9vbGVhbj1mYWxzZSk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInJlZ2lzdGVyIiBhbmQgInJlcGVhdGNvZGUiIGFjdGlvbnMsIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IGNhcHRjaGEgc2hvdWxkIG5vdCBiZSB1c2VkIChldmVuIGlmIGl0IGlzIGF2YWlsYWJsZSkgZm9yIHRob3NlIGFjdGlvbnMuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPnJlZ3RlbXBsYXRlPC9jb2RlPiA8ZW0+KG9wdGlvbmFsIHN0cmluZz0ncmVnaXN0ZXIudHBsJyk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgZGVmYXVsdCAicmVnaXN0ZXIiIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgYW4gYWx0ZXJuYXRlIHRlbXBsYXRlLiAgU2VlIHRoZSBzZWN0aW9uIGFib3V0IHRlbXBsYXRlcyBiZWxvdy48L3A+CiAgIDwvbGk+CgogICA8bGk+PGNvZGU+YWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZTwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9J2FmdGVyX3ZlcmlmeS50cGwnKTwvZW0+CiAgICAgICA8cD5Vc2VkIGJ5IHRoZSAidmVyaWZ5IiBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIGFuIGFsdGVybmF0ZSB0ZW1wbGF0ZSBmb3IgZGF0YSB0aGF0IGlzIGRpc3BsYXllZCBhZnRlciBhdHRlbXB0cyBhdCB2ZXJpZmljYXRpb24uPC9wPgogICAgICAgPHA+U2VlIHRoZSBzZWN0aW9uIGFib3V0IHRlbXBsYXRlcyBiZWxvdy48L3A+CiAgIDwvbGk+CgogICA8bGk+PGNvZGU+cmVwZWF0Y29kZXRlbXBsYXRlPC9jb2RlPiA8ZW0+KG9wdGlvbmFsIHN0cmluZz0ncmVwZWF0Y29kZS50cGwnKTwvZW0+CiAgICAgICA8cD5Vc2VkIGJ5IHRoZSAicmVwZWF0Y29kZSIgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgdGVtcGxhdGUgZm9yIHRoZSByZXBlYXQgY29kZSBmb3JtLjwvcD4KICAgICAgIDxwPlNlZSB0aGUgc2VjdGlvbiBhYm91dCB0ZW1wbGF0ZXMgYmVsb3cuPC9wPgogICA8L2xpPgo8L3VsPgoKPGgzPkNvbmZpZyBlbnRyaWVzPC9oMz4KPHA+VGhpcyBtb2R1bGUgd2lsbCByZWFkIHNvbWUgc2V0dGluZ3MgZnJvbSB0aGUgQ01TTVMgY29uZmlnLnBocCBmaWxlLCBpdCBjYW4gYWxzbyB1dGlsaXplIHNvbWUgY29uZmlnIGVudHJpZXMgZnJvbSB0aGUgRnJvbnRFbmR1c2VycyBtb2R1bGUuPC9wPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgbW9kdWxlIHdpbGwgbm90IHJlYWQgdGhlIG9wdGlvbmFsIGFzc2V0cy9jb25maWdzL2ZldV9zZXR0aW5ncy5qc29uIGZpbGUuPC9wPgo8dWw+CiAgICA8bGk+PGNvZGU+Y2dmcl9sb2dpbl9hZnRlcl92ZXJpZnk8L2NvZGU+IC0gPGVtPihib29sPWZhbHNlKTwvZW0+CiAgICAgICAgPHA+SWYgZW5hYmxlZCwgYWZ0ZXIgdGhlIHVzZXIgY29tcGxldGVzIHRoZSB2ZXJpZmljYXRpb24gb2YgaGlzIGVtYWlsIGFjY291bnQsIGhlIHdpbGwgYmUgaW1tZWRpYXRlbHkgbG9nZ2VkIGluIHRvIEZFVS48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfdXNlcm5hbWVfd2hpdGVsaXN0PC9jb2RlPiAtIDxlbT4oc3RyaW5nPW51bGwpPC9lbT4KICAgICAgICA8cD5BIHN0cmluZyBjb250YWluaW5nIHVzZXJuYW1lIHBhdHRlcm5zICh3aWxkY2FyZHMgYXJlIHN1cHBvcnRlZCkgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byByZWdpc3Rlci4gIElmIHlvdSB3aXNoIHRvIGhhdmUgbXVsdGlwbGUgcGF0dGVybnMgc2VwYXJhdGUgZWFjaCBwYXR0ZXJuIG9uIHNlcGFyYXRlIGxpbmVzLiBpLmUuOjwvcD4KCTxwcmU+PGNvZGU+JGNvbmZpZ1snY2dmcl91c2VybmFtZV93aGl0ZWxpc3QnXSA9ICcqQG15ZG9tYWluLmNvbTxici8+CipAbXlvdGhlcmRvbWFpbi5jb20nOzwvY29kZT48L3ByZT4KICAgICAgICA8cD5JZiB0aGlzIGNvbmZpZyBlbnRyeSBpcyBzcGVjaWZpZWQgYW5kIHRoZSBjZ2ZyX3VzZXJuYW1lX2JsYWNrbGlzdCBpcyBub3QsIHRoZW4gT05MWSB1c2VycyBtYXRjaGluZyB0aGVzZSBwYXR0ZXJucyB3aWxsIGJlIGFibGUgdG8gcmVnaXN0ZXIuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3VzZXJuYW1lX2JsYWNrbGlzdDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgPHA+QSBzdHJpbmcgY29udGFpbmluZyB1c2VybmFtZSBwYXR0ZXJucyAod2lsZGNhcmRzIGFyZSBzdXBwb3J0ZWQpIHRoYXQgYXJlIGFic29sdXRlbHkgbm90IGFsbG93ZWQgdG8gcmVnaXN0ZXIuICBJZiB5b3Ugd2lzaCB0byBoYXZlIG11bHRpcGxlIHBhdHRlcm5zLCBzZXBhcmF0ZSBlYWNoIHBhdHRlcm4gb24gc2VwYXJhdGUgbGluZXMuICBpLmUuOjwvcD4KCTxwcmU+PGNvZGU+JGNvbmZpZ1snY2dmcl91c2VybmFtZV9ibGFja2xpc3QnXSA9ICdyb290QCo8YnIvPgoqQGJhZGRvbWFpbi5jb20nOzwvY29kZT48L3ByZT4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwPC9jb2RlPiAtIDxlbT4oc3RyaW5nPW51bGwpPC9lbT4KICAgICAgICAgPHA+SWYgdGhpcyBpcyB0aGUgbmFtZSBvZiBhIHZhbGlkIGFkbWluIGdyb3VwIDxlbT4oY2FzZSBzZW5zaXRpdmUpPC9lbT4gVGhlbiB0aGUgbWVtYmVycyBvZiB0aGlzIGdyb3VwIHdpbGwgYmUgbm90aWZpZWQgdGhhdCBhIHVzZXIgaGFzIHJlZ2lzdGVyZWQKCSAgIHVzaW5nIHRoZSAiYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCIgdGVtcGxhdGUuCgkgPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX29ucHVzaF9ub3RpZnlfYWRtaW5ncm91cDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgIDxwPklmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSB2YWxpZCBhZG1pbiBncm91cCA8ZW0+KGNhc2Ugc2Vuc2l0aXZlKTwvZW0+IFRoZW4gdGhlIG1lbWJlcnMgb2YgdGhpcyBncm91cCB3aWxsIGJlIG5vdGlmaWVkIHRoYXQgYSB1c2VyIGhhcyBjb21wbGV0ZWQKCSAgIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgYW5kIGhhcyBiZWVuIHB1c2hlZCB0byBGRVUgdXNpbmcgdGhlICJhZG1pbl9ub3RpZnlfdXNlcnJlZ2lzdGVyZWQuZW1sIiB0ZW1wbGF0ZS4KCSA8L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfZGlzYWJsZV9yZXBlYXRjb2RlPC9jb2RlPiAtIDxlbT4oYm9vbD1mYWxzZSk8L2VtPgogICAgICAgICA8cD5Vc2UgdGhpcyBjb25maWcgZW50cnkgdG8gY29tcGxldGVseSBkaXNhYmxlIHRoZSByZXBlYXRjb2RlIGFjdGlvbi48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfdmVyaWZ5Y29kZV9leHBpcmVfaG91cnM8L2NvZGU+IC0gPGVtPihpbnQ9MjQqNyk8L2VtPgogICAgICAgICA8cD5UaGlzIGNvbmZpZyBlbnRyeSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBob3VycyB0aGF0IGFuIGV4cGlyeSBjb2RlIGlzIHZhbGlkIGZvci4gIElmIHNldCB0byAwIHRoZW4gY29kZXMgZG8gbm90IGV4cGlyZSBvbiB0aGVpciBvd24uPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3VzZXJfZXhwaXJlX2hvdXJzPC9jb2RlPiAtIDxlbT4oaW50PTI0KjcpPC9lbT4KICAgICAgICAgPHA+VGhpcyBjb25maWcgZW50cnkgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaG91cnMgdGhhdCB1c2VyIGhhcyB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuICBJZiBzZXQgdG8gMCB0aGVuIHVzZXIgYWNjb3VudHMgbmV2ZXIgZXhwaXJlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9yZXBlYXRjb2RlX3BhZ2U8L2NvZGU+IC0gPGVtPihzdHJpbmc9IiIpPC9lbT4KICAgICAgICA8cD5UaGlzIGNvbmZpZyBlbnRyeSBpcyB1c2VkIGJ5IHRoZSB0YXNrIHRoYXQgcmVtaW5kcyB1c2VycyB0byByZWdpc3RlciB0byBzcGVjaWZ5IGEgcGFnZSB0byByZXR1cm50byBpbiB0aGUgbGluayB0aGF0IGlzIHByb3ZpZGVkIHdpdGhpbiB0aGF0IGVtYWlsLiAgSXQgc3BlY2lmaWVzIGEgcGFnZSBhbGlhcyBvZiBhIGNvbnRlbnQgcGFnZS48L3A+Cgk8cD5JZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBjb250ZW50IHBhZ2Ugd2lsbCBiZSB1c2VkLjwvcD4KCTxwPlRoaXMgY29uZmlnIGVudHJ5IGlzIG5vdCBzcGVjaWZpY2FsbHkgbmVlZGVkLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBhZ2UgaW4gdGhlIG9uX3JlbWluZC5lbWwgdGVtcGxhdGUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3JlbWluZHVzZXJzX2FmdGVyX2hvdXJzPC9jb2RlPiAtIDxlbT4oaW50PTI0KTwvZW0+CiAgICAgICAgIDxwPlRoaXMgY29uZmlnIGVudHJ5IGVuYWJsZXMgZnVuY3Rpb25hbGl0eSB0aGF0IHdpbGwgc2VuZCBlbWFpbHMgdG8gdXNlcnMgd2hvIGhhdmUgcmVnaXN0ZXJlZCwgYnV0IGhhdmUgbm90IHZlcmlmaWVkIHRoZWlyIGFjY291bnQgd2l0aCBhIHJlZ2lzdHJhdGlvbiBjb2RlLiAgQnkgZGVmYXVsdCB0aGUgZW1haWwgd2lsbCBiZSBzZW50IGV2ZXJ5IDI0IGhvdXJzIGFmdGVyIHJlZ2lzdHJhdGlvbiBVTlRJTCB0aGUgdXNlciBpcyBwdXNoZWQgbGl2ZSBpbnRvIEZFVS4gIElmIHRoaXMgdmFsdWUgaXMgc2V0IHRvIDAgdGhlbiBubyByZW1pbmRlcnMgd2lsbCBiZSBzZW50LjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZmV1X3VzZXJuYW1lX2lzX2VtYWlsPC9jb2RlPiAtIDxlbT4oYm9vbD10cnVlKTwvZW0+CiAgICAgICAgIDxwPlRoaXMgaXMgdGhlIGJvb2xlYW4gc2V0dGluZyB1c2VkIGJ5IHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB0aGF0IGNvbnRyb2xzIHRoZSB0eXBlIG9mIGZpZWxkIHVzZWQgZm9yIHRoZSB1c2VybmFtZS48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmZldV9leHBpcmVhZ2VfbW9udGhzPC9jb2RlPiAtIDxlbT4oaW50PTUyMCk8L2VtPgogICAgICAgICA8cD5UaGlzIGlzIHRoZSBpbnRlZ2VyIHNldHRpbmcgdXNlZCBieSB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUgdG8gaW5kaWNhdGUgdGhlIG51bWJlciBvZiBtb250aHMgYmVvZnJlIG5ldyB1c2VyIGFjY291bnRzIGV4cGlyZS48L3A+CgkgPHA+VGhpcyBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIHVzZXIgYWNjb3VudCBpbiB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUuIFVzZXIgZXhwaXJ5IGNhbiBiZSBhZGp1c3RlZCBvbiBhIHBlci11c2VyIGJhc2lzIGZyb20gd2l0aGluIEZFVS48L3A+CiAgICA8L2xpPgo8L3VsPgoKPGgzPlRlbXBsYXRlczwvaDM+CjxwPlVzaW5nIGEgY3VzdG9tIHRlbXBsYXRlIGZvciBhIGZyb250ZW5kIGFjdGlvbiBvZiBDR0ZFVVJlZ2lzdGVyIGlzIGEgdGhyZWUgc3RlcCBwcm9jZXNzOjwvPgo8b2w+CiAgIDxsaT5Db3B5IHRoZSBkZXNpcmVkIHRlbXBsYXRlIGZpbGUgdG8gYSBuZXcgbG9jYXRpb24uCiAgICAgICA8cD5XaGVuIENHRkVVUmVnaXN0ZXIgaXMgc2hpcHBlZCwgaXQncyBmYWN0b3J5IHRlbXBsYXRlcyB3aWxsIGJlIGxvY2F0ZWQgaW4gL21vZHVsZXMvQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMuICBFYWNoIGRpZmZlcmVudCBhY3Rpb24gaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQgdGVtcGxhdGU6PC9wPgogICAgICAgPHVsPgogICAgICAgICAgIDxsaT5UaGUgcmVnaXN0cmF0aW9uIGZvcm0KCSAgICAgICA8cD5Mb2NhdGlvbjogIDxjb2RlPi9tb2R1bGVzL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzL3JlZ2lzdGVyLnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgoJICAgPGxpPlRoZSB2ZXJpZnkgbWVzc2FnZQoJICAgICAgIDxwPkxvY2F0aW9uOiAgPGNvZGU+L21vZHVsZXMvQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMvYWZ0ZXJfdmVyaWZ5LnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgoJICAgPGxpPlRoZSByZXF1ZXN0Y29kZSBmb3JtCgkgICAgICAgPHA+TG9jYXRpb246ICA8Y29kZT4vbW9kdWxlcy9DR0ZFVVJlZ2lzdGVyL3RlbXBsYXRlcy9yZXF1ZXN0Y29kZS50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KICAgICAgIDwvdWw+CiAgICAgICA8cD5Zb3Ugc2hvdWxkIDxzdHJvbmc+TkVWRVI8L3N0cm9uZz4gbW9kaWZ5IHRoZXNlIHNvdXJjZSBmaWxlcy4gIFRoZXNlIGZpbGVzIGNhbiBiZSBvdmVyd3JpdHRlbiB3aGVuIHRoZSBtb2R1bGUgaXMgdXBncmFkZWQuICBBbHdheXMgY29weSB0aGVtIHRvIGEgbmV3IGxvY2F0aW9uLjwvcD4KCiAgICAgICA8cD5UaGVyZSBhcmUgbnVtZXJvdXMgbG9jYXRpb25zIHdoZXJlIHlvdSBjYW4gbG9jYXRlIHlvdXIgY3VzdG9tIHRlbXBsYXRlczo8L3A+CiAgICAgICA8dWw+CgkgICA8bGk+SW50byB0aGUgPGNvZGU+L2Fzc2V0cy9tb2R1bGVfY3VzdG9tL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzPC9jb2RlPiBkaXJlY3RvcnkgPHN0cm9uZz4ocmVjb21tZW5kZWQpPC9zdHJvbmc+LgoJICAgICAgIDxwPllvdSBtYXkgbmVlZCB0byBjcmVhdGUgdGhpcyBkaXJlY3Rvcnkgc3RydWN0dXJlLCBhcyBpdCBkb2VzIG5vdCBleGlzdCBieSBkZWZhdWx0LiAgRmlsZXMgaW4gdGhlIG1vZHVsZV9jdXN0b20gZGlyZWN0b3J5IHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIHdoZW4gdGhlIG1vZHVsZSBpcyB1cGdyYWRlZC48L3A+CgkgICAgICAgPHA+RmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgTVVTVCBlbmQgd2l0aCBhIC50cGwgZXh0ZW5zaW9uLCBhbmQgYXJlIGFjY2Vzc2VkIGJ5IGp1c3Qgc3BlY2lmeWluZyB0aGUgZmlsZW5hbWUuICBpLmUuOiAgPGNvZGU+bXlfbG9naW5fdGVtcGxhdGUudHBsPC9jb2RlPjwvcD4KCSAgIDwvbGk+CiAgICAgICAgICAgPGxpPkludG8gdGhlIDxjb2RlPi9hc3NldHMvdGVtcGxhdGVzPC9jb2RlPiBkaXJlY3RvcnkuCgkgICAgICAgPHA+Q29weSB0aGUgZmFjdG9yeSB0ZW1wbGF0ZSB0byBhIGRlc2lyZWQgZmlsZW5hbWUgaW4gPGNvZGU+L2Fzc2V0cy90ZW1wbGF0ZXM8L2NvZGU+LiAgR2l2ZSB0aGUgbmV3IGZpbGUgYSAudHBsIGV4dGVuc2lvbi48L3A+CgkgICAgICAgPHA+RmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIGFjY2Vzc2VkIGJ5IHNwZWNpZnlpbmcgdGhlIGNtc19maWxlIHJlc291cmNlLiAgIGkuZTogIDxjb2RlPmNtc19maWxlOm15X2xvZ2luX3RlbXBsYXRlLnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgoJICAgPGxpPkludG8gRGVzaWduIE1hbmFnZXIKCSAgICAgICA8cD5PcGVuIHRoZSBmaWxlIGluIHlvdXIgZmF2b3JpdGUgZWRpdG9yLCBhbmQgJ2NvcHknIHRoZSB0ZXh0IGludG8gdGhlIGNsaXBib2FyZC48L3A+CgkgICAgICAgPHA+Q3JlYXRlIGEgbmV3IHRlbXBsYXRlIG9mIGFueSB0eXBlIGluIHRoZSBEZXNpZ25NYW5hZ2VyIG1vZHVsZS4gYW5kICdwYXN0ZScgdGhlIGNvbnRlbnRzIGZyb20gdGhlIGNsaXBib2FyZCBpbnRvIHRoZSB0ZXh0YXJlYTwvcD4KCSAgICAgICA8cD5HaXZlIHRoZSBuZXcgdGVtcGxhdGUgYSBuYW1lIFdJVEhPVVQgYSAudHBsIGV4dGVuc2lvbi48L3A+CgkgICAgICAgPHA+VGVtcGxhdGVzIGluIGRlc2lnbiBtYW5hZ2VyIGFyZSBhY2Nlc3NlZCBieSBqdXN0IHNwZWNpZnlpbmcgdGhlIHRlbXBsYXRlIG5hbWUuICBpLmU6IDxjb2RlPnJlZ2lzdGVydGVtcGxhdGU9IiJteSBsb2dpbiB0ZW1wbGF0ZSI8L2NvZGU+PC9wPgoJICAgPC9saT4KICAgICAgIDwvdWw+CiAgIDwvbGk+CgogICA8bGk+VGVsbCBDR0ZFVVJlZ2lzdGVyIHRvIHVzZSB0aGUgbmV3IHRlbXBsYXRlCiAgICAgICA8cD5JbiBhIHBhcmVudCBwYWdlIHRlbXBsYXRlLCBvciBpbiB0aGUgJ3NtYXJ0eSBsb2dpYyB0aGF0IGlzIHNwZWNpZmljIHRvIHRoaXMgcGFnZScgZmllbGQgaW4gYSBjb250ZW50IHBhZ2UgeW91IHNob3VsZCB1c2UgdGhlIDxjb2RlPntjbXNfbW9kdWxlX2hpbnR9PC9jb2RlPiBwbHVnaW4gdG8gdGVsbCBDR0ZFVVJlZ2lzdGVyIHRvIHVzZSB0aGUgbmV3IHRlbXBsYXRlLiAgaS5lLjo8L3A+CiAgICAgICA8cHJlPjxjb2RlPntjbXNfbW9kdWxlX2hpbnQgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgbG9naW50ZW1wbGF0ZT0ibXlfcmVnaXN0ZXJfdGVtcGxhdGUudHBsIn08L2NvZGU+PC9wcmU+CiAgICAgICA8cD5UaGUgZXhhbXBsZSBhYm92ZSBhc3N1bWVzIHRoYXQgdGhlIHBhdGggdG8gdGhlIGZpbGUgaXM6ICA8Y29kZT4vYXNzZXRzL21vZHVsZV9jdXN0b20vQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMvbXlfbG9naW5fdGVtcGxhdGUudHBsPC9jb2RlPgogICAgICAgPHA+VGhlIHtjbXNfbW9kdWxlX2hpbnR9IHBsdWdpbiB0ZWxscyBDTVMgdG8gcHJvdmlkZSB0aGF0IHBhcmFtZXRlciB0byB0aGUgbW9kdWxlIGJ5IGRlZmF1bHQgd2hlbiBpdCBpcyBjYWxsZWQuICBUaGlzIHBsdWdpbiBtdXN0IGJlIGNhbGxlZCBCRUZPUkUgdGhlIHByaW1hcnkgY29udGVudCBibG9jayBpbiB5b3VyIHRlbXBsYXRlLiAgIFlvdSBtYXkgY2FsbCB0aGlzIHBsdWdpbiBtdWx0aXBsZSB0aW1lcyB0byBwcmVzZXQgcGFyYW1ldGVycyBmb3IgZGlmZmVyZW50IG1vZHVsZXMuIGkuZTo8L3A+CiAgICAgICA8cHJlPjxjb2RlPntjbXNfbW9kdWxlX2hpbnQgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgbG9naW50ZW1wbGF0ZT0nbXlfcmVnaXN0ZXJfdGVtcGxhdGUudHBsJ308YnIvPgp7Y21zX21vZHVsZV9oaW50IG1vZHVsZT1DR0ZFVVJlZ2lzdGVyIGFmdGVydmVyaWZ5dGVtcGxhdGU9J215X3ZlcmlmeV90ZW1wbGF0ZS50cGwnfTxici8+CiAgIDwvbGk+CgogICA8bGk+TW9kaWZ5IGFuZCB0ZXN0IHlvdXIgbmV3IHRlbXBsYXRlCiAgICAgICA8cD5JZiB0aGUgdGVtcGxhdGUgaXMgc3RvcmVkIGluIHRoZSBmaWxlc3lzdGVtIHlvdSBjYW4gbm93IHVzZSB5b3VyIGZhdm9yaXRlIGVkaXRvciwgYW5kIHNvdXJjZSBjb2RlIG1hbmFnZW1lbnQgc3lzdGVtIHRvIG1hbmFnZSB0aGlzIGZpbGUuPC9jb2RlPgogICA8L2xpPgo8L29sPgoKPGgzPkVtYWlsczwvaDM+CjxwPlRoaXMgbW9kdWxlIHVzZXMgdGhlIHRlbXBsYXRhYmxlIGVtYWlsIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhlIENHRXh0ZW5zaW9ucyBtb2R1bGUgdG8gc2VuZCBlbWFpbCBtZXNzYWdlcy4gIFRoZSBmb2xsb3dpbmcgZW1haWwgdGVtcGxhdGVzIGFyZSBwcm92aWRlZDo8L3A+Cjx1bD4KICAgIDxsaT48Y29kZT5lbWFpbHMvb25fcmVnaXN0ZXIuZW1sCiAgICAgICAgPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHdpdGggaW5mb3JtYXRpb24gYXMgdG8gaG93IHRvIHZlcmlmeSBoaXMgZW1haWwgYWRkcmVzcyBhbmQgY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL29uX3JlcGVhdGNvZGUuZW1sCgk8cD5UaGlzIGVtYWlsIHRlbXBsYXRlIGlzIHVzZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgd2hlbiB0aGV5IGhhdmUgcmVxdWVzdGVkIGFub3RoZXIgdmVyaWZpY2F0aW9uIGNvZGUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5lbWFpbHMvb25fcmVtaW5kLmVtbAoJPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHdobyBoYXMgcmVnaXN0ZXJlZCwgYnV0IGhhcyBub3QgeWV0IGNvbXBsZXRlZCB0aGUgcmVnaXN0cmF0aW4gcHJvY2VzcyBieSB2ZXJpZnlpbmcgdGhlIHJlZ2lzdHJhdGlvbiBjb2RlLjwvcD4KCTxwPk5vdGU6IHRoaXMgZW1haWwgaXMgdHJpZ2dlcmVkIGZyb20gYSBiYWNrZ3JvdW5kIHRhc2suICBJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIGEgdXNlcnMgbGFuZ3VhZ2UuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5lbWFpbHMvYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbAogICAgICAgIDxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byBtZW1iZXJzIG9mIGEgbmFtZWQgYWRtaW4gZ3JvdXAgaW5kaWNhdGluZyB0aGF0IGEgbmV3IHVzZXIgaGFzIHJlZ2lzdGVyZWQuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5lbWFpbHMvYWRtaW5fbm90aWZ5X3VzZXJwdXNoZWQuZW1sCiAgICAgICAgPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIG1lbWJlcnMgb2YgYSBuYW1lZCBhZG1pbiBncm91cCBpbmRpY2F0aW5nIHRoYXQgYSBuZXcgdXNlciBoYXMgY29tcGxldGVkIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBhbmQgaXMgbm93IGluIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZS48L3A+CiAgICA8L2xpPgo8L3VsPgo8cD5UbyBjdXN0b21pemUgdGhlc2UgdGVtcGxhdGVzLCB5b3Ugc2hvdWxkIGNvcHkgdGhlIGFwcHJvcHJpYXRlIGZpbGUgdG8gdGhlIDxjb2RlPi9hc3NldHMvbW9kdWxlX2N1c3RvbS9DR0ZFVVJlZ2lzdGVyL2VtYWlsczwvY29kZT4gZGlyZWN0b3J5IGJlbG93IHRoZSBDTVNNUyByb290IHBhdGguICBDcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBuZWNlc3NhcnkuICAgWW91IHNob3VsZCBORVZFUiBtb2RpZnkgdGhlIGZpbGVzIGluIHRoZSBtb2R1bGUncyBzb3VyY2UgY29kZSBkaXJlY3RvcnkuPC9wPgo8cD5TZWUgdGhlIGhlbHAgaW4gdGhlIENHRXh0ZW5zaW9ucyBtb2R1bGUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJ1Y3R1cmUgb2YgLmVtbCBmaWxlcy48L3A+Cgo8aDM+SG9va3M8L2gzPgo8dWw+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpQcmVSZW5kZXIoKTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBzZW5kcyBubyBwYXJhbWV0ZXJzLjwvcD4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgYmVmb3JlIHJlbmRlcmluZyBvZiBhbnkgZnJvbnRlbmQgYWN0aW9uLiAgSXQgYWxsb3dzIHRoaXJkIHBhcnR5IGNvZGUgdG8gZG8gcGVybWlzc2lvbnMgY2hlY2ssIHJhdGUgbGltaXRpbmcgZXRjLjwvcD4KICAgICAgIDxwPlRvIHN0b3AgcHJvY2Vzc2luZywgaGFuZGxlcnMgc2hvdWxkIHRocm93IHJ1bnRpbWUgZXhjZXB0aW9ucy48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpCZWZvcmVSZWdpc3RlcihVc2VyKTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgcHJpb3IgdG8gc2F2aW5nIHRoZSBuZXcgdXNlciBpbmZvcm1hdGlvbiB0byB0aGUgZGF0YWJhc2UuICBJdCBpcyB1c2VmdWwgZm9yIHZhbGlkYXRpbmcgZGF0YSBiZWZvcmUgcmVnaXN0ZXJpbmcgYSB1c2VyIG9yIHNlbmRpbmcgZW1haWxzLjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnM6PC9wPgogICAgICAgPHVsPgoJICAgIDxsaT48Y29kZT5Vc2VyPC9jb2RlPiAtIEEgdXNlciBvYmplY3QgY29vbnRhaW5pbmcgdGhlIHVzZXIgcmVnaXN0cmF0aW9uIGRhdGEuPC9saT4KICAgICAgIDwvdWw+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpBZnRlclJlZ2lzdGVyKFVzZXIpPC9jb2RlPgogICAgICAgPHA+VGhpcyBob29rIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBhZnRlciBzYXZpbmcgdGhlIG5ldyB1c2VyIGluZm9ybWF0aW9uIHRvIHRoZSBkYXRhYmFzZS4gSXQgaXMgdXNlZnVsIGZvciB0cmlnZ2VyaW5nIG90aGVyIHRoaXJkIHBhcnR5IGZ1bmN0aW9uYWxpdHkuPC9wPgogICAgICAgPHA+UGFyYW1ldGVyczo8L3A+CiAgICAgICA8dWw+CgkgICAgPGxpPjxjb2RlPlVzZXI8L2NvZGU+IC0gQSB1c2VyIG9iamVjdCBjb29udGFpbmluZyB0aGUgdXNlciByZWdpc3RyYXRpb24gZGF0YS48L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPjxjb2RlPkNHRkVVUmVnaXN0ZXI6OkFmdGVyUmVwZWF0Q29kZShhcnJheSk8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgcmVwZWF0IGNvZGUgaXMgc2VudCBmcm9tIHRoZSByZXBlYXQgY29kZSBhY3Rpb24uICBJdCBpcyB1c2VmdWwgdG8gdGllIGluIG90aGVyIHRoaXJkIHBhcnR5IGZ1bmN0aW9uYWxpdHkuPC9wPgogICAgICAgPHA+UGFyYW1ldGVycyA8ZW0+KGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvZW0+OjwvcD4KICAgICAgIDx1bD4KCSAgICA8bGk+PGNvZGU+ZmllbGRzPC9jb2RlPiAtIDxlbT4odHlwZT1SZWdGaWVsZFNldCk8L2VtPiAtIFRoZSBzZXQgb2YgZmllbGRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdGhhdCB0aGUgdXNlciBpcyBhc3NvY2lhdGVkIHdpdGguPC9saT4KCSAgICA8bGk+PGNvZGU+dXNlcjwvY29kZT4gLSA8ZW0+KHR5cGU9VXNlcik8L2VtPiAtIFRoZSB1c2VyIG9iamVjdDwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6QWZ0ZXJVc2VyUHVzaGVkKGFycmF5KTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSByZXBlYXQgY29kZSBpcyBwdXNoZWQgZnJvbSB0aGlzIG1vZHVsZSBpbnRvIEZFVS4gIEl0IGlzIHVzZWZ1bCB0byB0aWUgaW4gb3RoZXIgdGhpcmQgcGFydHkgZnVuY3Rpb25hbGl0eS48L3A+CiAgICAgICA8cD5QYXJhbWV0ZXJzIDxlbT4oYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9lbT46PC9wPgogICAgICAgPHVsPgoJICAgIDxsaT48Y29kZT5maWVsZHM8L2NvZGU+IC0gPGVtPih0eXBlPVJlZ0ZpZWxkU2V0KTwvZW0+IC0gVGhlIHNldCBvZiBmaWVsZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cCB0aGF0IHRoZSB1c2VyIGlzIGFzc29jaWF0ZWQgd2l0aC48L2xpPgoJICAgIDxsaT48Y29kZT5mZXVfdWlkPC9jb2RlPiAtIDxlbT4odHlwZT1pbnQpPC9lbT4gLSBUaGUgbmV3IGZldSB1c2VyIGlkLjwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgo8L3VsPgoKCjxoMz5SZXF1aXJlbWVudHM8L2gzPgo8dWw+CiAgICA8bGk+T3BlbiBTU0wgbGlicmFyaWVzIGZvciBlbmNyeXB0aW9uLjwvbGk+CiAgICA8bGk+RnJvbnRFbmRVc2VycyAzLjArPC9saT4KICAgIDxsaT5DR0V4dGVuc2lvbnM8L2xpPgo8L3VsPgoKPGgzPkltcG9ydGFudCBDbGFzc2VzPC9oMz4KPHVsPgogICAgIDxsaT5UaGUgVXNlciBjbGFzcwogICAgICAgICA8cD5UaGlzIGNsYXNzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGluZm9ybWF0aW9uIGFib3V0IGEgdXNlciB0aGF0IGlzIHJlZ2lzdGVyaW5nLiAgSXQgaXMgcHJvdmlkZWQgdG8gaG9va3MsIGFuZCB0byB2YXJpb3VzIHRlbXBsYXRlcy48L3A+CiAgICAgICAgIDxwPlN0YW5kYXJkIHByb3BlcnRpZXM6PC9wPgoJIDx1bD4KICAgICAgICAgICAgIDxsaT48Y29kZT5pZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIHVuaXF1ZSBpZCB3aXRoaW4gdGhpcyBtb2R1bGUgb2YgdGhlIHJlZ2lzdHJhdGlvbi4gIFRoaXMgaXMgTk9UIHRoZSBGRVUgdWlkLjwvbGk+CgkgICAgIDxsaT48Y29kZT5jcmVhdGVkPC9jb2RlPiAtIDxlbT4odHlwZT1pbnQpPC9lbT4gLSBUaGUgdW5peCB0aW1lc3RhbXAgb2YgdGhlIHRpbWUgdGhhdCB0aGlzIHVzZXIgaW5pdGlhbGx5IHJlZ2lzdGVyZWQuPC9saT4KCSAgICAgPGxpPjxjb2RlPmdpZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIEZFVSBncm91cCBpZCBvZiB0aGUgZ3JvdXAgdGhlIHVzZXIgaXMgcmVnaXN0ZXJpbmcgdG8uPC9saT4KCSA8L3VsPgoJIDxwPkFkZGl0aW9uYWxseSwgdGhlIHVzZXIgd2lsbCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIHN1Y2ggYXMgdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgd2hhdGV2ZXIgb3RoZXIgcHJvcGVydGllcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBGRVUgZ3JvdXAgdGhhdCB1c2VycyBhcmUgcmVnaXN0ZXJpbmcgdG8uICBUaGV5IGNhbiBiZSBhZGRyZXNzZWQgc3VjaCBhcyA8Y29kZT57JHVzZXItPnVzZXJuYW1lfTwvY29kZT4uPC9wPgogICAgIDwvbGk+CgogICAgIDxsaT5UaGUgUmVnRmllbGQgY2xhc3MKICAgICAgICAgPHA+VGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgZmllbGQgdGhhdCBhIHVzZXIgbXVzdCBjb21wbGV0ZSB3aGVuIHJlZ2lzdGVyaW5nLiAgVGhlcmUgYXJlIGEgZmV3IHN0YW5kYXJkIGZpZWxkcyBzdWNoIGFzIHVzZXJuYW1lL2VtYWlsLCBwYXNzd29yZCBhbmQgcmVwZWF0IHBhc3N3b3JkLiAgVGhlcmUgbWF5IGFsc28gYmUgYWRkaXRpb25hbCBmaWVsZHMgdGhhdCBhcmUgc3RpcHVsYXRlZCBieSB0aGUgRkVVIGdyb3VwIHRoYXQgdGhlIHVzZXIgaXMgcmVnaXN0ZXJpbmcgdG8uPC9wPgoJIDxwPlN0YW5kYXJkIHByb3BlcnRpZXM6PC9wPgoJIDx1bD4KCSAgICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IC0gPGVtPih0eXBlPXN0cmluZyk8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZC48L2xpPgoJICAgICA8bGk+PGNvZGU+dHlwZTwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIHR5cGUgb2YgdGhlIGZpZWxkLgoJICAgICAgICAgIDx1bD4KCQkJPGxpPjAgPT0gVGV4dCBmaWVsZDwvbGk+CgkJCTxsaT4xID09IENoZWNrYm94IGZpZWxkPC9saT4KCQkJPGxpPjIgPT0gRW1haWwgZmllbGQ8L2xpPgoJCQk8bGk+MyA9PSBUZXh0QXJlYSBmaWVsZDwvbGk+CgkJCTxsaT40ID09IERyb3Bkb3duIGZpZWxkPC9saT4KCQkJPGxpPjUgPT0gTXVsdGlzZWxlY3QgZmllbGQ8L2xpPgoJCQk8bGk+NiA9PSBJbWFnZSBmaWVsZCA8ZW0+KFlvdSBzaG91bGQgbmV2ZXIgc2VlIHRoZXNlIGZpZWxkcyBpbiBDR0ZFVVJlZ2lzdGVyKTwvZW0+PC9saT4KCQkJPGxpPjcgPT0gUmFkaW8gYnV0dG9uIGdyb3VwPC9saT4KCQkJPGxpPjggPT0gRGF0ZSBmaWVsZDwvbGk+CgkJCTxsaT45ID09IERhdGEgZmllbGQgPGVtPihZb3Ugc2hvdWxkIG5ldmVyIHNlZSB0aGVzZSBmaWVsZHMgaW4gQ0dGRVVSZWdpc3Rlcik8L2VtPjwvbGk+CgkJCTxsaT4xMCA9PSBUZWwgZmllbGQ8L2xpPgoJCSAgPC91bD4KICAgICAgICAgICAgIDwvbGk+CgkgICAgIDxsaT48Y29kZT5wcm9tcHQ8L2NvZGU+IC0gPGVtPih0eXBlPXN0cmluZyk8L2VtPiAtIEEgcHJvbXB0IHRvIHVzZSBmb3IgdGhlIGZpZWxkLgoJICAgICAgICAgPHA+SXQgaXMgbm90IG1hbmRhdG9yeSB0aGF0IHlvdSB1c2UgdGhlIHByb21wdCBpbiBlbWFpbHMgb3IgdGVtcGxhdGVzLjwvcD48L2xpPgoJICAgICA8bGk+PGNvZGU+cmVxdWlyZWQ8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIEluZGljYXRlcyB0aGUgcmVxdWlyZWQgc3RhdHVzIGZvciB0aGlzIGZpZWxkLgoJICAgICAgICAgIDxwPjAgPT0gb2ZmLCAxID0gb3B0aW9uYWwsIDIgPT0gcmVxdWlyZWQsIDMgPT0gaGlkZGVuLCA0ID09IHJlYWRvbmx5LjwvcD4KCQkgIDxwPk5vcm1hbGx5IHlvdSBzaG91bGQgb25seSBzZWUgcHJvcGVydGllcyB0aGF0IGFyZSByZXF1aXJlZCBvciBvcHRpb25hbC48L3A+CiAgICAgICAgICAgICA8L2xpPgoJICAgICA8bGk+PGNvZGU+b3B0aW9uczwvY29kZT4gLSA8ZW0+KHR5cGU9aGFzaCk8L2VtPiAtIEZvciBzZWxlY3QsIGRyb3Bkb3duLCByYWRpb2J1dHRvbiBhbmQgbXVsdGlzZWxlY3QgZmllbGRzIHRoaXMgcHJvcGVydHkgd2lsbCBjb250YWluIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnMuPC9saT4KCSAgICAgPGxpPjxjb2RlPnVuaXF1ZTwvY29kZT4gLSA8ZW0+KHR5cGU9Ym9vbCk8L2VtPiAtIFdoZXRoZXIgdGhlIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5IG11c3QgYmUgdW5pcXVlIGFjcm9zcyBhbGwgdXNlcnMuPC9saT4KCSAgICAgPGxpPjxjb2RlPmV4dHJhPC9jb2RlPiAtIDxlbT4odHlwZT1oYXNoKTwvZW0+PC9saT4KCSA8L3VsPgogICAgIDwvbGk+CgogICAgIDxsaT5UaGUgUmVnRmllbGRTZXQgY2xhc3MKICAgICAgICAgPHA+VGhpcyBjbGFzcyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBSZWdGaWVsZCBvYmplY3RzLiAgSXQgaXMgY291bnRhYmxlIGFuZCBpdGVyYXRhYmxlLiAgU28gPGNvZGU+e2NvdW50KCRzZXQpfTwvY29kZT4gYW5kIDxjb2RlPntmb3JlYWNoICRzZXQgYXMgJGZpZWxkfS4uLnsvZm9yZWFjaH08L2NvZGU+IHdpbGwgd29yayBwcm9wZXJseS48L3A+CgkgPHA+QWRkaXRpb25hbCBtZXRob2RzOjwvcD4KCSA8dWw+CgkgICAgIDxsaT48Y29kZT5oYXNfZmllbGQoc3RyaW5nICRmaWVsZG5hbWUpIDogYm9vbDwvY29kZT4KCSAgICAgICAgIDxwPlRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uIGEgUmVnRmllbGRTZXQgdG8gdGVzdCBpZiBhIHNwZWNpZmljIGZpZWxkIChieSBuYW1lKSBpcyBjb250YWluZWQgaW4gdGhlIHNldC48L2xpPgoJICAgICA8L2xpPgoJICAgICA8bGk+PGNvZGU+Z2V0X2VtYWlsX2ZpZWxkKCkgOiBSZWdGaWVsZDwvY29kZT4KCSAgICAgICAgIDxwPlRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uIGEgUmVnRmllbGRTZXQgdG8gcmV0dXJuIHRoZSBmaWVsZCBkZWZpbml0aW9uIG9mIHRoZSBmaXJzdCBmaWVsZCB0aGF0IGlzIG9mIHR5cGUgJ2VtYWlsJy48L3A+CgkgICAgIDwvbGk+CgkgPC91bD4KICAgICA8L2xpPgo8L3VsPgoKPGgzPkJhY2tncm91bmQgVGFza3M8L2gzPgo8cD5UaGlzIG1vZHVsZSBwZXJmb3JtcyBzb21lIHRhc2tzIGluIHRoZSBiYWNrZ291bmQ6PC9wPgo8dWw+CiAgICA8bGk+UmVtaW5kIHVzZXJzIHdobyBoYXZlIG5vdCBjb21wbGV0ZWQgcmVnaXN0ZXJpbmcuPC9saT4KICAgIDxsaT5DbGVhbiB1cCB1c2VyIHJlZ2lzdHJhdGlvbiBkYXRhIHRoYXQgaGFzIGV4cGlyZWQuPC9saT4KPC91bD4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhlIG1vZHVsZSBhdXRob3IgaXMgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Zyb250ZW5kdXNlcnMiPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjY0LjI8L2xpPjxsaT5Gcm9udEVuZFVzZXJzID0mZ3Q7IDIuOTk8L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC40PGJyIC8+]]></about>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.64.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>FrontEndUsers</requiredname>
	  <requiredversion>2.99</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_edit_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBjZ2VfcGFyYW07CgokZmlsdGVyX2ZpZWxkcyA9IGZ1bmN0aW9uKFJlZ0ZpZWxkU2V0ICRzZXQpIDogUmVnRmllbGRTZXQgewogICAgJGxpc3QgPSBudWxsOwogICAgZm9yZWFjaCggJHNldCBhcyAkb25lICkgewogICAgICAgIGlmKCAkb25lLT50eXBlICE9PSAtMTAwICkgJGxpc3RbJG9uZS0+bmFtZV0gPSAkb25lOwogICAgfQogICAgcmV0dXJuIG5ldyBSZWdGaWVsZFNldCgkbGlzdCk7Cn07Cgp0cnkgewogICAgJHVpZCA9IGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAndWlkJyk7CiAgICAkdXNlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmxvYWRfdXNlcl9ieV9pZCgkdWlkKTsKICAgIGlmKCAhJHVzZXIgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdVc2VyIG5vdCBmb3VuZCcpOwogICAgJGZpZWxkcyA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCR1c2VyLT5naWQpOwogICAgJGZpZWxkcyA9ICRmaWx0ZXJfZmllbGRzKCRmaWVsZHMpOwoKICAgIGlmKCAhZW1wdHkoJF9QT1NUKSApIHsKICAgICAgICBpZiggY2dlX3BhcmFtOjpleGlzdHMoJF9QT1NULCAnY2FuY2VsJykgKSB7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgICAgICB9CiAgICAgICAgZWxzZWlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICdkZWxldGV1c2VyJykgKSB7CiAgICAgICAgICAgICR0aGlzLT5yZWdNYW5hZ2VyKCktPmRlbGV0ZV91c2VyX2Z1bGwoJHVzZXIpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPkdldE5hbWUoKSwnVXNlciAnLiR1c2VyLT51c2VybmFtZS4nIGRlbGV0ZWQnKTsKCiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcl9kZWxldGVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiggY2dlX3BhcmFtOjpleGlzdHMoJF9QT1NULCAncHVzaHVzZXInKSApIHsKICAgICAgICAgICAgJGZldV91aWQgPSAkdGhpcy0+cmVnX2hhbmRsZXIoKS0+Zm9yY2VfcHVzaF91c2VyX2xpdmUoJHVzZXIpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPkdldE5hbWUoKSwnVXNlciAnLiR1c2VyLT51c2VybmFtZS4nIHB1c2hlZCB0byBGRVUgd2l0aCB1aWQgJy4kZmV1X3VpZCk7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgICAgICB9CiAgICAgICAgZWxzZWlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICduZXdjb2RlJykgKSB7CiAgICAgICAgICAgICRjb2RlID0gJHRoaXMtPnJlZ01hbmFnZXIoKS0+Y3JlYXRlX3JlZ2lzdHJhdGlvbl9jb2RlKCR1c2VyKTsKICAgICAgICAgICAgJHRoaXMtPnJlZ01hbmFnZXIoKS0+c2F2ZV92ZXJpZmljYXRpb25fY29kZSgkY29kZSk7CiAgICAgICAgICAgICR0aGlzLT5yZWdfc2VuZGVyKCktPmV4ZWN1dGUoJGZpZWxkcywgJHVzZXIsICRjb2RlKTsKICAgICAgICAgICAgYXVkaXQoJHVzZXItPmlkLCR0aGlzLT5HZXROYW1lKCksJ1NlbnQgYSBuZXcgY29kZSB0byAnLiR1c2VyLT51c2VybmFtZSk7CgogICAgICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX3VzZXJfbmV3Y29kZScpKTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoIGNnZV9wYXJhbTo6ZXhpc3RzKCRfUE9TVCwgJ3N1Ym1pdCcpICkgewogICAgICAgICAgICAkdXNlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmZpbGxfZnJvbV9kYXRhKCRmaWVsZHMsICR1c2VyLCAkX1BPU1QpOwogICAgICAgICAgICAkdGhpcy0+cmVnVmVyaWZpZXIoKS0+dmFsaWRhdGVfcHVyZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwogICAgICAgICAgICAkdGhpcy0+cmVnTWFuYWdlcigpLT5zYXZlX3VzZXIoJHVzZXIpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPkdldE5hbWUoKSwnVXNlciAnLiR1c2VyLT51c2VybmFtZS4nIGVkaXRlZCcpOwoKICAgICAgICAgICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ191c2VyX3NhdmVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7CiAgICAgICAgfQogICAgfQogICAgLy8gdG9kbzpwYWdpbmF0aW9uIGFuZCBmaWx0ZXJpbmcKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXRfdXNlci50cGwnKTsKICAgICR0cGwtPmFzc2lnbigndXNlcicsICR1c2VyKTsKICAgICR0cGwtPmFzc2lnbignZmllbGRzJywgJGZpZWxkcyk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGFuIGFsaWFzIGZvciB0aGUgcmVnaXN0ZXIgYWN0aW9uCnJlcXVpcmUoX19ESVJfXy4iL2FjdGlvbi5yZWdpc3Rlci5waHAiKTsK]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgovLyBsb2FkIHJlZ2lzdHJhdGlvbnMsIGFsbG93IGZpbHRlcmluZyBieSBkYXRlIGFuZCB1c2VybmFtZSBtYXRjaAp0cnkgewogICAgJGZpbHRlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmNyZWF0ZV91c2VyX2ZpbHRlcigpOwogICAgLy8gdG9kbzpwYWdpbmF0aW9uIGFuZCBmaWx0ZXJpbmcKCiAgICAkbWF0Y2hlcyA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmxvYWRfdXNlcnNfYnlfZmlsdGVyKCRmaWx0ZXIpOwogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLnRwbCcpOwogICAgJHRwbC0+YXNzaWduKCd1c2VycycsICRtYXRjaGVzKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUpOwp9]]></data>
	</file>
	<file>
	  <filename>/action.register.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKdXNlIGNnZV9wYXJhbTsKdXNlIGNnZV91dGlsczsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKY2xhc3MgTm9Vc2VyRGF0YUV4Y2VwdGlvbiBleHRlbmRzIFxSdW50aW1lRXhjZXB0aW9uIHt9Cgp0cnkgewogICAgSG9va01hbmFnZXI6OmRvX2hvb2soJ0NHRkVVUmVnaXN0ZXI6OlByZVJlbmRlcicpOwoKICAgICRlcnJvciA9ICRmaW5hbF9tZXNzYWdlID0gJHVzZXIgPSAkY2FwdGNoYSA9IG51bGw7CiAgICAkZmV1ID0gJHRoaXMtPmZldSgpOwogICAgJHJlZ01hbmFnZXIgPSAkdGhpcy0+cmVnTWFuYWdlcigpOwogICAgaWYoICRmZXUtPkxvZ2dlZEluSUQoKSApIHJldHVybjsgIC8vIGFscmVhZHkgbG9nZ2VkIGluCiAgICAkdGhldGVtcGxhdGUgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ3JlZ3RlbXBsYXRlJywgJ3JlZ2lzdGVyLnRwbCcpOwogICAgJGlubGluZSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywgJ2lubGluZScpOwogICAgJG5vY2FwdGNoYSA9IGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAnbm9jYXB0Y2hhJyk7CiAgICBpZiggISRub2NhcHRjaGEgKSAkY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwoKICAgIC8vIGdyb3VwIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyLgogICAgJGdyb3VwID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdncm91cCcpOwogICAgaWYoICEkZ3JvdXAgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignTm8gZ3JvdXAgcGFyYW1ldGVyIHBhc3NlZCB0byAnLiR0aGlzLT5HZXROYW1lKCkpOwogICAgJGdpZCA9ICRmZXUtPkdldEdyb3VwSUQoJGdyb3VwKTsKICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDRFeGNlcHRpb24oJ0ludmFsaWQgZ3JvdXAgbmFtZSBwYXNzZWQgdG8gJy4kdGhpcy0+R2V0TmFtZSgpKTsKICAgICRncm91cGluZm8gPSAkZmV1LT5HZXRHcm91cEluZm8oJGdpZCk7CiAgICBpZiggISRncm91cGluZm8gKSB0aHJvdyBuZXcgXENtc0Vycm9yNDA0RXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBGRVUgZ3JvdXAgJy4kZ3JvdXApOwoKICAgICRmaWVsZHMgPSAkcmVnTWFuYWdlci0+Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJGdpZCk7CiAgICBpZiggIWNvdW50KCRmaWVsZHMpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignTm8gcHJvcGVydGllcyBmb3VuZCBmb3IgdGhlIHNlbGVjdGVkIHJlZ2lzdHJhdGlvbiBncm91cCcpOwogICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+Y3JlYXRlX25ld191c2VyKCRmaWVsZHMsIG51bGwsICRnaWQpOwoKICAgIGlmKCAoJGtleSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnYWZ0ZXInKSkgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5zZXNzaW9uX2dldCgka2V5KTsKICAgICAgICAgICAgJHRoaXMtPnNlc3Npb25fY2xlYXIoJGtleSk7CiAgICAgICAgICAgIGlmKCAhJHRtcCApIHRocm93IG5ldyBOb1VzZXJEYXRhRXhjZXB0aW9uKCdDb3VsZCBub3QgcmV0cmlldmUgdXNlciBkYXRhJyk7CiAgICAgICAgICAgICRkYXRhID0ganNvbl9kZWNvZGUoJHRtcCxUUlVFKTsKICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+Y3JlYXRlX25ld191c2VyKCRmaWVsZHMsICRkYXRhKTsKICAgICAgICAgICAgJGZpbmFsX21lc3NhZ2UgPSAkdGhpcy0+cmVnX3NlbmRlcigpLT5nZXRfZmluYWxfbWVzc2FnZSgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBOb1VzZXJEYXRhRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGVycm9yID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsICRpZC4nc3VibWl0JykgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYoICFjZ2VfdXRpbHM6OnZhbGlkX2Zvcm1fY3NyZigpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyX3NlY3VyaXR5JykgKTsKICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+ZmlsbF9mcm9tX2RhdGEoJGZpZWxkcywgJHVzZXIsICRfUE9TVCk7CgogICAgICAgICAgICAvLyBjaGVjayB0aGUgY2FwdGNoYQogICAgICAgICAgICBpZiggISRub2NhcHRjaGEgJiYgJGNhcHRjaGEgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhcHRjaGFfdGV4dCcpKSApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY2FwdGNoYW1pc21hdGNoJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzYXZlIHRoaXMgdGhpbmcKICAgICAgICAgICAgJHVzZXIgPSAkdGhpcy0+cmVnX2hhbmRsZXIoKS0+cmVnaXN0ZXJfdXNlcigkdXNlcik7CgogICAgICAgICAgICAvLyByZWRpcmVjdCBhZnRlciBwb3N0LgogICAgICAgICAgICAkZ3VpZCA9IGNnZV91dGlsczo6Y3JlYXRlX2d1aWQoKTsKICAgICAgICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCRndWlkLCBqc29uX2VuY29kZSgkdXNlcikpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdyZWdpc3RlcicsICRyZXR1cm5pZCwgWydhZnRlcic9PiRndWlkLCAnZ3JvdXAnPT4kZ3JvdXBdLCAkaW5saW5lKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxSdW50aW1lRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgLy8gZ29ubmEgZGVsZXRlIHRoZSB1c2VyIGlmIHdlIGNhbgogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgICAgICBpZiggJHVzZXItPmlkICkgewogICAgICAgICAgICAgICAgJHJlZ01hbmFnZXItPmRlbGV0ZV91c2VyX2Z1bGwoJHVzZXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+bG9hZF91c2VyX2J5X3VzZXJuYW1lKCR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgICAgICAgICAkcmVnTWFuYWdlci0+ZGVsZXRlX3VzZXJfZnVsbCgkdXNlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgJHRwbC0+YXNzaWduKCdncm91cCcsICRncm91cGluZm8pOwogICAgJHRwbC0+YXNzaWduKCdwcm9wZXJ0aWVzJywgJGZpZWxkcyk7CiAgICAkdHBsLT5hc3NpZ24oJ2Vycm9yJywgJGVycm9yKTsKICAgICR0cGwtPmFzc2lnbignZmluYWxfbWVzc2FnZScsICRmaW5hbF9tZXNzYWdlKTsKICAgICR0cGwtPmFzc2lnbigndXNlcicsICR1c2VyKTsKICAgICR0cGwtPmFzc2lnbignaW5saW5lJywgJGlubGluZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGEnLCAoaXNfb2JqZWN0KCRjYXB0Y2hhKSkgPyAkY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpIDogbnVsbCk7CiAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGFfaW5wdXRfbmFtZScsIChpc19vYmplY3QoJGNhcHRjaGEpICYmICRjYXB0Y2hhLT5OZWVkc0lucHV0RmllbGQoKSkgPyAkaWQuJ2NhcHRjaGFfdGV4dCcgOiBudWxsICk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICB0aHJvdyAkZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/action.repeatcode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKdXNlIGNnZV9wYXJhbTsKdXNlIGNnZV91dGlsczsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKdHJ5IHsKICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MoKS0+ZGlzYWJsZV9yZXBlYXRjb2RlKSB0aHJvdyBuZXcgXENtc0Vycm9yNDAzRXhjZXB0aW9uKCdQZXJtaXNzaW9uIGRlbmllZCcpOwogICAgSG9va01hbmFnZXI6OmRvX2hvb2soJ0NHRkVVUmVnaXN0ZXI6OlByZVJlbmRlcicpOwogICAgJHVzZXJuYW1lID0gJGVycm9yID0gJGZpbmFsX21lc3NhZ2UgPSAkY2FwdGNoYSA9IG51bGw7CiAgICAkcmVnTWFuYWdlciA9ICR0aGlzLT5yZWdNYW5hZ2VyKCk7CgogICAgJHRoZXRlbXBsYXRlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdyZXBlYXRjb2RldGVtcGxhdGUnLCAncmVwZWF0Y29kZS50cGwnKTsKICAgICRpbmxpbmUgPSBjZ2VfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsICdpbmxpbmUnKTsKICAgICRub2NhcHRjaGEgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywgJ25vY2FwdGNoYScpOwogICAgaWYoICEkbm9jYXB0Y2hhICkgJGNhcHRjaGEgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NhcHRjaGEnKTsKICAgICR1c2VybmFtZV90eXBlID0gKCR0aGlzLT5mZXUoKS0+R2V0VXNlcm5hbWVGaWVsZFR5cGUoKSA9PSAyKSA/ICdlbWFpbCcgOiAndGV4dCc7CgogICAgaWYoICgka2V5ID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdhZnRlcicpKSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdG1wID0gJHRoaXMtPnNlc3Npb25fZ2V0KCRrZXkpOwogICAgICAgICAgICAkdGhpcy0+c2Vzc2lvbl9jbGVhcigka2V5KTsKICAgICAgICAgICAgaWYoICEkdG1wICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IHJldHJpZXZlIHVzZXIgZGF0YScpOwogICAgICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCR0bXAsVFJVRSk7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJGRhdGFbJ2lkJ10pIHx8ICFpc3NldCgkZGF0YVsnY3JlYXRlZCddKSB8fCAhaXNzZXQoJGRhdGFbJ2dpZCddKSApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdXNlciBkYXRhIHJldHJpZXZlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRnaWQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJGRhdGEsJ2dpZCcpOwogICAgICAgICAgICAkZmllbGRzID0gJHJlZ01hbmFnZXItPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCRnaWQpOwogICAgICAgICAgICAkdXNlciA9ICRyZWdNYW5hZ2VyLT5jcmVhdGVfbmV3X3VzZXIoJGZpZWxkcywgJGRhdGEpOwogICAgICAgICAgICAvLyBmaWVsZHMgbWF5IGJlIGVtcHR5IGlmIGdyb3VwIGlzIHJlbW92ZWQgd2l0aCB3aGlsZSB1c2VyIGlzIHJlZ2lzdGVyaW5nLgogICAgICAgICAgICBpZiggISRmaWVsZHMgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGZpZWxkcyBmb3IgdXNlciB3aXRoIGdpZCAnLiR1c2VyLT5naWQpOwogICAgICAgICAgICAkZmluYWxfbWVzc2FnZSA9ICR0aGlzLT5yZWdfc2VuZGVyKCktPmdldF9yZXBlYXRjb2RlX2ZpbmFsbWVzc2FnZSgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgICAgICBjZ2VfdXRpbHM6OmxvZ19leGNlcHRpb24oKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkX1BPU1QsJGlkLid1c2VybmFtZScpICkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmKCAhY2dlX3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycl9zZWN1cml0eScpICk7CgogICAgICAgICAgICAkdXNlcm5hbWUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAndXNlcm5hbWUnKSk7CgogICAgICAgICAgICAvLyBjaGVjayB0aGUgY2FwdGNoYQogICAgICAgICAgICBpZiggJGNhcHRjaGEgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdjYXB0Y2hhX3RleHQnKSkgKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycl9jYXB0Y2hhbWlzbWF0Y2gnKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGxvYWQgdGhlIHVzZXIgZ2l2ZW4gdGhlIHVzZXJuYW1lIGFuZCBtYWtlIHN1cmUgaXQgaXMgbm90IHRvbyBvbGQKICAgICAgICAgICAgJHVzZXIgPSAkcmVnTWFuYWdlci0+bG9hZF91c2VyX2J5X3VzZXJuYW1lKCR1c2VybmFtZSk7CiAgICAgICAgICAgIGlmKCAhJHVzZXIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfdXNlcl9ub3Rmb3VuZCcpICk7CiAgICAgICAgICAgIGlmKCAoJGhycyA9ICR0aGlzLT5zZXR0aW5ncygpLT51c2VyX2V4cGlyZV9ob3VycykgPiAwICYmICR1c2VyLT5jcmVhdGVkIDwgdGltZSgpIC0gJGhycyAqIDM2MDAgKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfdXNlcl9ub3Rmb3VuZCcpICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRmaWVsZHMgPSAkcmVnTWFuYWdlci0+Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJHVzZXItPmdpZCk7CiAgICAgICAgICAgIC8vIGZpZWxkcyBtYXkgYmUgZW1wdHkgaWYgZ3JvdXAgaXMgcmVtb3ZlZCB3aXRoIHdoaWxlIHVzZXIgaXMgcmVnaXN0ZXJpbmcuCiAgICAgICAgICAgIGlmKCAhJGZpZWxkcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgZmllbGRzIGZvciB1c2VyIHdpdGggZ2lkICcuJHVzZXItPmdpZCk7CgogICAgICAgICAgICAvLyBnZW5lcmF0ZSBhbm90aGVyIHJlZ2lzdHJhdGlvbiBjb2RlCiAgICAgICAgICAgICRjb2RlID0gJHJlZ01hbmFnZXItPmNyZWF0ZV9yZWdpc3RyYXRpb25fY29kZSgkdXNlcik7CiAgICAgICAgICAgICRyZWdNYW5hZ2VyLT5zYXZlX3ZlcmlmaWNhdGlvbl9jb2RlKCRjb2RlKTsKCiAgICAgICAgICAgIC8vIGNhbGwgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzb3IKICAgICAgICAgICAgJHRoaXMtPnJlZ19zZW5kZXIoKS0+ZXhlY3V0ZV9yZXBlYXRjb2RlKCRmaWVsZHMsICR1c2VyLCAkY29kZSk7CiAgICAgICAgICAgIEhvb2tNYW5hZ2VyOjpkb19ob29rKCdDR0ZFVVJlZ2lzdGVyOjpBZnRlclJlcGVhdENvZGUnLCBbJ2ZpZWxkcyc9PiRmaWVsZHMsICd1c2VyJz0+JHVzZXJdKTsKCiAgICAgICAgICAgIC8vIHJlZGlyZWN0IGFmdGVyIHBvc3QKICAgICAgICAgICAgJGd1aWQgPSBjZ2VfdXRpbHM6OmNyZWF0ZV9ndWlkKCk7CiAgICAgICAgICAgICR0aGlzLT5zZXNzaW9uX3B1dCgkZ3VpZCwganNvbl9lbmNvZGUoJHVzZXIpKTsKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwncmVwZWF0Y29kZScsICRyZXR1cm5pZCwgWydhZnRlcic9PiRndWlkXSwgJGlubGluZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcUnVudGltZUV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGVycm9yID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICB9CiAgICB9CgogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgJHRwbC0+YXNzaWduKCdpbmxpbmUnLCAkaW5saW5lKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCAkdXNlcm5hbWUpOwogICAgJHRwbC0+YXNzaWduKCdmaW5hbF9tZXNzYWdlJywkZmluYWxfbWVzc2FnZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2Vycm9yJywgJGVycm9yKTsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYScsIChpc19vYmplY3QoJGNhcHRjaGEpKSA/ICRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCkgOiBudWxsKTsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV9pbnB1dF9uYW1lJywgKGlzX29iamVjdCgkY2FwdGNoYSkgJiYgJGNhcHRjaGEtPk5lZWRzSW5wdXRGaWVsZCgpKSA/ICRpZC4nY2FwdGNoYV90ZXh0JyA6IG51bGwgKTsKICAgICR0cGwtPmFzc2lnbignaW5wdXRfdHlwZScsICR1c2VybmFtZV90eXBlKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGNnZV91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICB0aHJvdyAkZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/action.verify.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKdXNlIGNnZV9wYXJhbTsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGZpbmFsX21lc3NhZ2UgPSAkZXJyb3IgPSAkbG9nZ2VkX2luID0gJHVzZXIgPSAkZmV1X3VpZCA9IG51bGw7CnRyeSB7CiAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6UHJlUmVuZGVyJyApOwogICAgJGVycm9yID0gJGZpbmFsX21lc3NhZ2UgPSAkdXNlciA9IG51bGw7CiAgICAkZmV1ID0gJHRoaXMtPmZldSgpOwogICAgJHJlZ01hbmFnZXIgPSAkdGhpcy0+cmVnTWFuYWdlcigpOwogICAgJHVzZXJfaWQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJyk7CiAgICAkY29kZV9zdHIgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY29kZScpOwoKICAgICR1c2VyID0gJHJlZ01hbmFnZXItPmxvYWRfdXNlcl9ieV9pZCgkdXNlcl9pZCk7CiAgICBpZiggISR1c2VyICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgcmVnaXN0ZXJpbmcgdXNlciB3aXRoIGlkICcuJHVzZXJfaWQpOwogICAgJGZldV91aWQgPSAkdGhpcy0+cmVnX2hhbmRsZXIoKS0+cHVzaF91c2VyX2xpdmUoJHVzZXJfaWQsICRjb2RlX3N0cik7CiAgICBpZiggJHRoaXMtPnNldHRpbmdzKCktPmxvZ2luX2FmdGVyX3ZlcmlmeSApIHsKCSR0aGlzLT5mZXUoKS0+U2V0VXNlckxvZ2dlZGluKCRmZXVfdWlkKTsKCSRsb2dnZWRfaW4gPSB0cnVlOwogICAgfQoKICAgICRmaW5hbF9tZXNzYWdlID0gJHRoaXMtPkxhbmcoJ21zZ19hZnRlcl92ZXJpZnknKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGRpc3BsYXkgZXJyb3IgbWVzc2FnZQogICAgJGVycm9yID0gJGUtPkdldE1lc3NhZ2UoKTsKfQoKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZScsJ2FmdGVyX3ZlcmlmeS50cGwnKSk7CiR0cGwtPmFzc2lnbignZXJyb3InLCAkZXJyb3IpOwokdHBsLT5hc3NpZ24oJ2ZpbmFsX21lc3NhZ2UnLCAkZmluYWxfbWVzc2FnZSk7CiR0cGwtPmFzc2lnbignbG9nZ2VkX2luJywgJGxvZ2dlZF9pbik7CiR0cGwtPmFzc2lnbignZmV1X3VpZCcsICRmZXVfdWlkKTsKJHRwbC0+ZGlzcGxheSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/CGFEURegister.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIENHRkVVUmVnaXN0ZXJcUmVnaXN0cmF0aW9uTWFuYWdlcjsKdXNlIENHRkVVUmVnaXN0ZXJcTWVtb3J5Q2FjaGVSZWdpc3RyYXRpb25NYW5hZ2VyOwp1c2UgQ0dGRVVSZWdpc3RlclxSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZTsKdXNlIENHRkVVUmVnaXN0ZXJcUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlOwp1c2UgQ0dGRVVSZWdpc3RlclxOb3JtYWxSZWdpc3RyYXRpb25WZXJpZmllcjsKdXNlIENHRkVVUmVnaXN0ZXJcQmxhY2tsaXN0UmVnaXN0cmF0aW9uVmVyaWZpZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyXFNldHRpbmdzOwp1c2UgQ0dGRVVSZWdpc3RlclxFbWFpbFJlZ2lzdHJhdGlvblByb2Nlc3NvcjsKdXNlIENHRkVVUmVnaXN0ZXJcUmVnaXN0cmF0aW9uSGFuZGxlckludGVyZmFjZTsKdXNlIENHRkVVUmVnaXN0ZXJcSG9va1JlZ2lzdHJhdGlvbkhhbmRsZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyXEFkbWluTm90aWZpZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyXEVtYWlsQWRtaW5Ob3RpZmllcjsKdXNlIENHRkVVUmVnaXN0ZXJcQWRtaW5Ob3RpZmllclVzaW5nTm90aWZpY2F0aW9uczsKdXNlIENHRkVVUmVnaXN0ZXJcSG91cmx5SG9va1Rhc2s7CnVzZSBDR0ZFVVJlZ2lzdGVyXFRhc2tNYW5hZ2VyOwp1c2UgQ0dGRVVSZWdpc3RlclxSZW1pbmRVc2Vyc1Rhc2s7CnVzZSBDR0ZFVVJlZ2lzdGVyXENsZWFyRXhwaXJlZFVzZXJzVGFzazsKdXNlIENNU01TXEhvb2tNYW5hZ2VyOwoKZmluYWwgY2xhc3MgQ0dGRVVSZWdpc3RlciBleHRlbmRzIENHRXh0ZW5zaW9ucwp7CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjAuNCc7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjIuMTAnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgeyByZXR1cm4gWyAnQ0dFeHRlbnNpb25zJz0+JzEuNjQuMicsICdGcm9udEVuZFVzZXJzJz0+JzIuOTknIF07IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24gKCkgeyByZXR1cm4gJ3VzZXJzZ3JvdXBzJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OlNldFBhcmFtZXRlcnMoKTsKICAgICAgICBIb29rTWFuYWdlcjo6YWRkX2hvb2soJ0NHRkVVUmVnaXN0ZXI6Ol9fSW50ZXJuYWxIb3VybHlUYXNrJywgWyAkdGhpcywgJ2hvb2tfaG91cmx5J10gKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OkluaXRpYWxpemVGcm9udGVuZCgpOwogICAgICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwogICAgICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvY2dmZXVyXC92ZXJpZnlcLyg/UDxyZXR1cm5pZD5bMC05XSspXC8oP1A8dWlkPlswLTldKylcLyg/UDxjb2RlPi4qPykkLycsIFsnYWN0aW9uJz0+J3ZlcmlmeSddICk7CgogICAgICAgIEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnQ0dGRVVSZWdpc3Rlcjo6QWZ0ZXJSZWdpc3RlcicsIFsgJHRoaXMsICdob29rX2FmdGVycmVnaXN0ZXJfZW1haWxhZG1pbiddICk7CiAgICAgICAgSG9va01hbmFnZXI6OmFkZF9ob29rKCdDR0ZFVVJlZ2lzdGVyOjpBZnRlclVzZXJQdXNoZWQnLCBbICR0aGlzLCAnaG9va19hZnRlcnB1c2hlZF9lbWFpbGFkbWluJ10gKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZXR0eV91cmwoJGlkLCRhY3Rpb24sJHJldHVybmlkPScnLCRwYXJhbXM9YXJyYXkoKSwkaW5saW5lPWZhbHNlKQogICAgewogICAgICAgIGlmKCAkYWN0aW9uICE9ICd2ZXJpZnknICkgcmV0dXJuOwogICAgICAgIGlmKCAhKCRjb2RlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NvZGUnKSkgKSByZXR1cm47CiAgICAgICAgJHVpZCA9IGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCd1aWQnKTsKICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm47CiAgICAgICAgcmV0dXJuICJjZ2ZldXIvdmVyaWZ5LyRyZXR1cm5pZC8kdWlkLyRjb2RlIjsKICAgIH0KCiAgICBmdW5jdGlvbiBIYXNDYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgIHN3aXRjaCggJGNhcGFiaWxpdHkgKSB7CiAgICAgICAgY2FzZSAndGFza3MnOgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldF90YXNrcygpCiAgICB7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgJG91dFtdID0gbmV3IEhvdXJseUhvb2tUYXNrKCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmV1KCkgOiBGcm9udEVuZFVzZXJzCiAgICB7CiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZShNT0RfRlJPTlRFTkRVU0VSUyk7CiAgICAgICAgcmV0dXJuICRfb2JqOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXR0aW5ncygpIDogU2V0dGluZ3MKICAgIHsKICAgICAgICAvLyBhIHNldHRpbmdzIGNsYXNzCiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBTZXR0aW5ncygkdGhpcy0+Y29uZmlnKTsKICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlZ01hbmFnZXIoKSA6IFJlZ2lzdHJhdGlvbk1hbmFnZXIKICAgIHsKICAgICAgICAvLyB0aGlzIGlzIHJlc3BvbnNpYmxlIGZvciBzYXZpbmcgYW5kIHJldHJpZXZpbmcgdXNlcnMgYW5kIHZlcmlmaWNhdGlvbiBjb2RlcyB0by9mcm9tIHRoZSBkYXRhYmFzZQogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgewogICAgICAgICAgICAkX29iaiA9IG5ldyBNZW1vcnlDYWNoZVJlZ2lzdHJhdGlvbk1hbmFnZXIoJHRoaXMsICR0aGlzLT5mZXUoKSwgJHRoaXMtPmdldF9leHRlbmRlZF9kYigpLCAkdGhpcy0+c2V0dGluZ3MoKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVnVmVyaWZpZXIoKSA6IFJlZ2lzdHJhdGlvblZlcmlmaWVySW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gdG9kbzogY291bGQgaGF2ZSBkZWNvcmF0b3IgaGVyZSB0aGF0IHNlbmRzIGhvb2tzCiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSB7CiAgICAgICAgICAgICRfb2JqID0gbmV3IE5vcm1hbFJlZ2lzdHJhdGlvblZlcmlmaWVyKCR0aGlzLCAkdGhpcy0+ZmV1KCksICR0aGlzLT5nZXRfZXh0ZW5kZWRfZGIoKSk7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+Y21zLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgJiYgJHRoaXMtPnNldHRpbmdzKCktPnVzZXJuYW1lX2JsYWNrbGlzdCApICRfb2JqID0gbmV3IEJsYWNrbGlzdFJlZ2lzdHJhdGlvblZlcmlmaWVyKCRfb2JqLCAkdGhpcy0+c2V0dGluZ3MoKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVnX3NlbmRlcigpIDogUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gdGhpcyBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSByZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIuCiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBFbWFpbFJlZ2lzdHJhdGlvblByb2Nlc3NvcigkdGhpcywgJHRoaXMtPnNldHRpbmdzKCkpOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWRtaW5fbm90aWZpZXIoKSA6IEFkbWluTm90aWZpZXIKICAgIHsKICAgICAgICAvLyBhbiBvYmplY3QgdGhhdCBrbm93cyBob3cgdG8gbm90aWZ5IGFkbWlucwogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgewogICAgICAgICAgICAkbm90aWZpZXIgPSBudWxsOwogICAgICAgICAgICAkbGlzdCA9ICR0aGlzLT5HZXRNb2R1bGVzV2l0aENhcGFiaWxpdHkoJ25vdGlmaWNhdGlvbnMnKTsKICAgICAgICAgICAgaWYoICFlbXB0eSgkbGlzdCkgJiYgISR0aGlzLT5zZXR0aW5ncygpLT51c2VfYnVpbHRpbl9ub3RpZmljYXRpb25zICkgewogICAgICAgICAgICAgICAgJG1vZF9uYW1lID0gJGxpc3RbMF07CiAgICAgICAgICAgICAgICBpZiggJG1vZF9uYW1lICkgJG5vdGlmaWVyID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCRtb2RfbmFtZSk7CiAgICAgICAgICAgICAgICBpZiggJG5vdGlmaWVyICkgJF9vYmogPSBuZXcgQWRtaW5Ob3RpZmllclVzaW5nTm90aWZpY2F0aW9ucygkdGhpcywgJHRoaXMtPnNldHRpbmdzKCksICRub3RpZmllcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICEkX29iaiApICRfb2JqID0gbmV3IEVtYWlsQWRtaW5Ob3RpZmllcigkdGhpcywgJHRoaXMtPnNldHRpbmdzKCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlZ19oYW5kbGVyKCkgOiBSZWdpc3RyYXRpb25IYW5kbGVySW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gYW4gYWdncmVnYXRlIHRoYXQga25vd3MgaG93IHRvIGhhbmRsZSBib3RoIHVzZXIgcmVnaXN0cmF0aW9uIEFORCBwdXNoaW5nIGxpdmUuCiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBIb29rUmVnaXN0cmF0aW9uSGFuZGxlcigkdGhpcy0+cmVnTWFuYWdlcigpLCAkdGhpcy0+cmVnX3NlbmRlcigpLCAkdGhpcy0+cmVnVmVyaWZpZXIoKSk7CiAgICAgICAgcmV0dXJuICRfb2JqOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB0YXNrX21hbmFnZXIoKSA6IFRhc2tNYW5hZ2VyCiAgICB7CiAgICAgICAgLy8gc2hvdWxkIGJlIGFuIGFic3RyYWN0IGNsYXNzIG9yIGludGVyZmFjZQogICAgICAgIHN0YXRpYyAkX29iajsKICAgICAgICBpZiggISRfb2JqICkgewogICAgICAgICAgICAkX29iaiA9IG5ldyBUYXNrTWFuYWdlcigkdGhpcy0+Z2V0X3Rhc2tzKCkpOwogICAgICAgICAgICAkX29iai0+cmVnaXN0ZXJfdGFzayhuZXcgUmVtaW5kVXNlcnNUYXNrKCR0aGlzLCAkdGhpcy0+cmVnTWFuYWdlcigpLCAkdGhpcy0+c2V0dGluZ3MoKSkpOwogICAgICAgICAgICAkX29iai0+cmVnaXN0ZXJfdGFzayhuZXcgQ2xlYXJFeHBpcmVkVXNlcnNUYXNrKCR0aGlzLCAkdGhpcy0+cmVnTWFuYWdlcigpLCAkdGhpcy0+c2V0dGluZ3MoKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9vYmo7CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaG9va19hZnRlcnJlZ2lzdGVyX2VtYWlsYWRtaW4oYXJyYXkgJHBhcmFtcykKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZ3JvdXAgPSAkdGhpcy0+c2V0dGluZ3MoKS0+b25yZWdpc3Rlcl9ub3RpZnlfYWRtaW5ncm91cDsKICAgICAgICAgICAgaWYoICEkZ3JvdXAgKSByZXR1cm47CgogICAgICAgICAgICAkdXNlciA9ICRwYXJhbXNbJ3VzZXInXTsKICAgICAgICAgICAgJGZpZWxkcyA9ICR0aGlzLT5yZWdNYW5hZ2VyKCktPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCR1c2VyLT5naWQpOwogICAgICAgICAgICAkdGhpcy0+YWRtaW5fbm90aWZpZXIoKS0+bm90aWZ5X3VzZXJfcmVnaXN0ZXJlZCgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcQ0dFeHRlbnNpb25zXEVtYWlsXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgZGVidWdfdG9fbG9nKF9fTUVUSE9EX18pOwogICAgICAgICAgICBjZ2VfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaG9va19hZnRlcnB1c2hlZF9lbWFpbGFkbWluKGFycmF5ICRwYXJhbXMpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGdyb3VwID0gJHRoaXMtPnNldHRpbmdzKCktPm9ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXA7CiAgICAgICAgICAgIGlmKCAhJGdyb3VwICkgcmV0dXJuOwoKICAgICAgICAgICAgJHRoaXMtPmFkbWluX25vdGlmaWVyKCktPm5vdGlmeV91c2VyX3B1c2hlZCgkcGFyYW1zWydmZXVfdWlkJ10sICRwYXJhbXNbJ2ZpZWxkcyddLCAkcGFyYW1zWyd1c2VyJ10pOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXENHRXh0ZW5zaW9uc1xFbWFpbFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKICAgICAgICAgICAgY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhvb2tfaG91cmx5KCkKICAgIHsKICAgICAgICBkZWJ1Z190b19sb2coX19NRVRIT0RfXyk7CgogICAgICAgIC8vIHJ1bnMgdmlhIHBzZXVkb2Nyb24uCiAgICAgICAgLy8gd2Ugd2FudCBkYWlseSwgaG91cmx5LCBhbmQgd2Vla2x5IHN0dWZmCiAgICAgICAgJG5vdyA9IHRpbWUoKTsKICAgICAgICAkbHJfaG91cmx5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hvdXJseV9sYXN0cnVuJyk7CiAgICAgICAgIGlmKCAkbHJfaG91cmx5IDwgJG5vdyAtIDM2MDAgKSB7CiAgICAgICAgICAgICR0aGlzLT50YXNrX21hbmFnZXIoKS0+aG91cmx5KCk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdob3VybHlfbGFzdHJ1bicsICRub3cpOwogICAgICAgIH0KICAgICAgICAkbHJfZGFpbHkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGFpbHlfbGFzdHJ1bicpOwogICAgICAgIGlmKCAkbHJfZGFpbHkgPCAkbm93IC0gMzYwMCAqIDI0ICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coJ2RvIGRhaWx5IHRhc2tzJyk7CiAgICAgICAgICAgICR0aGlzLT50YXNrX21hbmFnZXIoKS0+ZGFpbHkoKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RhaWx5X2xhc3RydW4nLCAkbm93KTsKICAgICAgICB9CiAgICAgICAgJGxyX3dlZWtseSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3ZWVrbHlfbGFzdHJ1bicpOwogICAgICAgIGlmKCAkbHJfd2Vla2x5ID0gJG5vdyAtIDM2MDAgKiAyNCAqIDcgKSB7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygnZG8gd2Vla2x5IHRhc2tzJyk7CiAgICAgICAgICAgICR0aGlzLT50YXNrX21hbmFnZXIoKS0+d2Vla2x5KCk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd3ZWVrbHlfbGFzdHJ1bicsICRub3cpOwogICAgICAgIH0KICAgICAgICAkbHJfbW9udGhseSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtb250aGx5X2xhc3RydW4nKTsKICAgICAgICBpZiggJGxyX21vbnRobHkgPSAkbm93IC0gMzYwMCAqIDI0ICogMzAgKSB7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygnZG8gbW9udGhseSB0YXNrcycpOwogICAgICAgICAgICAkdGhpcy0+dGFza19tYW5hZ2VyKCktPm1vbnRobHkoKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21vbnRobHlfbGFzdHJ1bicsICRub3cpOwogICAgICAgIH0KICAgIH0KCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHB1YmxpYyBmdW5jdGlvbiB1c2Vyc190YWJsZV9uYW1lKCkgeyByZXR1cm4gQ01TX0RCX1BSRUZJWC4nbW9kX2NnZnJfdXNlcnMnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gY29kZXNfdGFibGVfbmFtZSgpIHsgcmV0dXJuIENNU19EQl9QUkVGSVguJ21vZF9jZ2ZyX2NvZGVzJzsgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</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[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGEgY29tcGFuaW9uIG1vZHVsZSB0byBGcm9udEVuZHVzZXJzIHRvIGFsbG93IHVzZXJzIHRvIGNyZWF0ZSB0aGVpciBvd24gYWNjb3VudCBvbiB5b3VyIHdlYnNpdGUuPC9wPgoKPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KICAgPGxpPldvcmtzIHdpdGggRkVVIEdyb3VwcyBhbmQgUHJvcGVydGllczwvbGk+CiAgIDxsaT5Xb3JrcyB3aXRoIEZyb250RW5kVXNlcnMnIGVtYWlsIGFuZCBwYXNzd29yZCBwb2xpY2llcy48L2xpPgogICA8bGk+U3RvcmVzIHRlbXBvcmFyeSB1c2VyIGluZm9ybWF0aW9uIHNlY3VyZWx5PC9saT4KICAgPGxpPlNlbmRzIGVtYWlsIHJlbWluZGVycyB0byB1c2VycyB3aG8gaGF2ZSBub3QgcmVnaXN0ZXJlZC48L2xpPgogICA8bGk+UmVxdWlyZXMgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIHJlZ2lzdHJhdGlvbiBieSBjbGlja2luZyBvbiBhIGxpbmsgaW4gYW4gZW1haWwgYmVmb3JlIGJlaW5nIHB1c2hlZCBsaXZlLjwvcD4KICAgPGxpPkZsZXhpYmxlIHRlbXBsYXRlczwvbGk+CiAgIDxsaT5DdXN0b21pemFibGUgZW1haWwgdGVtcGxhdGVzPC9saT4KICAgPGxpPlVzZXJuYW1lIGJsYWNrbGlzdCBhbmQgd2hpdGVsaXN0PC9saT4KICAgPGxpPndvcmtzIHdpdGggY2FwdGNoYTwvbGk+CiAgIDxsaT5DU1JGIHByb3RlY3Rpb248L2xpPgogICA8bGk+QW4gYWRtaW4gaW50ZXJmYWNlIHRvIGFsbG93IG1hbmFnZXJzIHRvIG1hbmFnZSB1c2VycyB3aG8gaGF2ZSBub3QgY29tcGxldGVkIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy48L2xpPgogICA8bGk+bW9yZS4uPC9saT4KPC91bD4KCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPgo8cD5UbyBwcm9wZXJseSB1c2UgdGhpcyBtb2R1bGUsIHlvdSBuZWVkIHRvIGhhdmUgdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHByb3Blcmx5IGNvbmZpZ3VyZWQgd2l0aCBhdCBsZWFzdCBvbmUgZ3JvdXAuICBZb3Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBjcmVhdGVkIGFuZCB0ZXN0ZWQgbG9naW4sIGFuZCBsb2dvdXQgZnVuY3Rpb25hbGl0eS48L3A+CjxwPk5leHQsIGFmdGVyIGluc3RhbGxpbmcgdGhlIG1vZHVsZSwgYWRkIHRoZSA8Y29kZT57Q0dGRVVSZWdpc3RlciBncm91cD0nVEhFR1JPVVAnfTwvY29kZT4gdGFnIHRvIGEgY29udGVudCBwYWdlLiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgbmFtZSBvZiBhIHZhbGlkIEZyb250RW5kVXNlcnMgZ3JvdXAuPC9wPgo8cD5Zb3Ugc2hvdWxkIGFkanVzdCB5b3VyIGNvbmZpZy5waHAgZmlsZSB3aXRoIGFwcHJvcHJpYXRlIHNldHRpbmdzIDxlbT4oc2VlIGJlbG93KTwvZW0+IHRvIGNvbmZpZ3VyZSB0aGlzIG1vZHVsZSB0byB5b3VyIGxpa2luZy48L3A+CjxwPk90aGVyIHRoYW4gdGhlIGdyb3VwIHBhcmFtZXRlciwgbW9zdCBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgdGhpcyBtb2R1bGUgdXRpbGl6ZXMgc2hvdWxkIGJlIHNldCB1c2luZyB0aGUge2Ntc19tb2R1bGVfaGludH0gcGx1Z2luIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSBvciBwYWdlIHNwZWNpZmljIHNtYXJ0eSBsb2dpYyBmaWVsZCwgIGJlZm9yZSB0aGUgbW9kdWxlIGlzIGNhbGxlZC48L3A+Cgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KICAgIDxoMyBpZD0icHJpdmFjeSI+UHJpdmFjeSBXYXJuaW5nOjwvaDM+CiAgICA8cD5BZG1pbmlzdHJhdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQuPC9wPgogICAgPHA+VGhpcyBtb2R1bGUgZG9lcyBsb2cgdGhlIElQIGFkZHJlc3Mgb2YgdXNlcnMuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEby1Ob3QtVHJhY2sgcG9saWNpZXMsIGFuZCBtYXkgYnJlYWsgc29tZSBsYXdzLjwvcD4KPC9kaXY+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICAgPGxpPjxjb2RlPmFjdGlvbjwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9InJlZ2lzdGVyIik8L2VtPgogICAgICAgPHVsPgogICAgICAgICAgIDxsaT48Y29kZT5yZWdpc3RlcjwvY29kZT4gLSBUaGlzIGlzIHRoZSBkZWZhdWx0IGFjdGlvbi4gIEl0IHByb3ZpZGVzIHRoZSByZWdpc3RyYXRpb24gZm9ybS48L2xpPgoJICAgPGxpPjxjb2RlPnJlcGVhdGNvZGU8L2NvZGU+IC0gVGhpcyBhY3Rpb24gcHJvdmlkZXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHJlcXVlc3QgYW5vdGhlciB2ZXJpZmljYXRpb24gY29kZS48L2xpPgogICAgICAgPC91bD4KICAgICAgIDxwPlRoaXMgcGFyYW1ldGVyLCB1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMsIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIG1vZHVsZSB0YWcuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmdyb3VwPC9jb2RlPiA8c3Ryb25nPnJlcXVpcmVkIHN0cmluZzwvc3Ryb25nPgogICAgICAgPHA+VXNlZCBvbnkgYnkgdGhlICJyZWdpc3RlciIgYWN0aW9uLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBuYW1lIG9mIGEgdmFsaWQgRnJvbnRFbmRVc2VycyBncm91cCBmb3IgdXNlcnMgdG8gcmVnaXN0ZXIgdG8uPC9wPgogICAgICAgPHA+VGhpcyBwYXJhbWV0ZXIsIHVubGlrZSB0aGUgb3RoZXIgcGFyYW1ldGVycywgc2hvdWxkIGJlIHNwZWNpZmllZCBvbiB0aGUgbW9kdWxlIHRhZywgd2hlbiBjYWxsaW5nIHRoZSByZWdpc3RlciBhY3Rpb24uPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPmlubGluZTwvY29kZT4gPGVtPihvcHRpb25hbCBib29sZWFuPWZhbHNlKTwvZW0+CiAgICAgICA8cD5Vc2VkIGJ5IHRoZSAicmVnaXN0ZXIiIGFuZCAicmVwZWF0Y29kZSIgYWN0aW9ucywgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIG91dHB1dCBmcm9tIHRoZSBtb2R1bGUgYWN0aW9uLCBmb3IgZXhhbXBsZSBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQsIHNob3VsZCByZXBsYWNlIHRoZSBvcmlnaW5hbCB0YWcuICAgVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBleGFtcGxlIHRvIHBsYWNlIGEgcmVnaXN0cmF0aW9uIGZvcm0gaW4gYSBzaWRlYmFyLCBldGMuPC9wPgogICAgICAgPHA+VGhpcyBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdCBvbiB0aGUgdmVyaWZ5IGZvcm0gYWN0aW9uLjwvcD4KICAgPC9saT4KCiAgIDxsaT48Y29kZT5ub2NhcHRjaGE8L2NvZGU+IDxlbT4ob3B0aW9uYWwgYm9vbGVhbj1mYWxzZSk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgInJlZ2lzdGVyIiBhbmQgInJlcGVhdGNvZGUiIGFjdGlvbnMsIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IGNhcHRjaGEgc2hvdWxkIG5vdCBiZSB1c2VkIChldmVuIGlmIGl0IGlzIGF2YWlsYWJsZSkgZm9yIHRob3NlIGFjdGlvbnMuPC9wPgogICA8L2xpPgoKICAgPGxpPjxjb2RlPnJlZ3RlbXBsYXRlPC9jb2RlPiA8ZW0+KG9wdGlvbmFsIHN0cmluZz0ncmVnaXN0ZXIudHBsJyk8L2VtPgogICAgICAgPHA+VXNlZCBieSB0aGUgZGVmYXVsdCAicmVnaXN0ZXIiIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgYW4gYWx0ZXJuYXRlIHRlbXBsYXRlLiAgU2VlIHRoZSBzZWN0aW9uIGFib3V0IHRlbXBsYXRlcyBiZWxvdy48L3A+CiAgIDwvbGk+CgogICA8bGk+PGNvZGU+YWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZTwvY29kZT4gPGVtPihvcHRpb25hbCBzdHJpbmc9J2FmdGVyX3ZlcmlmeS50cGwnKTwvZW0+CiAgICAgICA8cD5Vc2VkIGJ5IHRoZSAidmVyaWZ5IiBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIGFuIGFsdGVybmF0ZSB0ZW1wbGF0ZSBmb3IgZGF0YSB0aGF0IGlzIGRpc3BsYXllZCBhZnRlciBhdHRlbXB0cyBhdCB2ZXJpZmljYXRpb24uPC9wPgogICAgICAgPHA+U2VlIHRoZSBzZWN0aW9uIGFib3V0IHRlbXBsYXRlcyBiZWxvdy48L3A+CiAgIDwvbGk+CgogICA8bGk+PGNvZGU+cmVwZWF0Y29kZXRlbXBsYXRlPC9jb2RlPiA8ZW0+KG9wdGlvbmFsIHN0cmluZz0ncmVwZWF0Y29kZS50cGwnKTwvZW0+CiAgICAgICA8cD5Vc2VkIGJ5IHRoZSAicmVwZWF0Y29kZSIgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgdGVtcGxhdGUgZm9yIHRoZSByZXBlYXQgY29kZSBmb3JtLjwvcD4KICAgICAgIDxwPlNlZSB0aGUgc2VjdGlvbiBhYm91dCB0ZW1wbGF0ZXMgYmVsb3cuPC9wPgogICA8L2xpPgo8L3VsPgoKPGgzPkNvbmZpZyBlbnRyaWVzPC9oMz4KPHA+VGhpcyBtb2R1bGUgd2lsbCByZWFkIHNvbWUgc2V0dGluZ3MgZnJvbSB0aGUgQ01TTVMgY29uZmlnLnBocCBmaWxlLCBpdCBjYW4gYWxzbyB1dGlsaXplIHNvbWUgY29uZmlnIGVudHJpZXMgZnJvbSB0aGUgRnJvbnRFbmR1c2VycyBtb2R1bGUuPC9wPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgbW9kdWxlIHdpbGwgbm90IHJlYWQgdGhlIG9wdGlvbmFsIGFzc2V0cy9jb25maWdzL2ZldV9zZXR0aW5ncy5qc29uIGZpbGUuPC9wPgo8dWw+CiAgICA8bGk+PGNvZGU+Y2dmcl9sb2dpbl9hZnRlcl92ZXJpZnk8L2NvZGU+IC0gPGVtPihib29sPWZhbHNlKTwvZW0+CiAgICAgICAgPHA+SWYgZW5hYmxlZCwgYWZ0ZXIgdGhlIHVzZXIgY29tcGxldGVzIHRoZSB2ZXJpZmljYXRpb24gb2YgaGlzIGVtYWlsIGFjY291bnQsIGhlIHdpbGwgYmUgaW1tZWRpYXRlbHkgbG9nZ2VkIGluIHRvIEZFVS48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfdXNlcm5hbWVfd2hpdGVsaXN0PC9jb2RlPiAtIDxlbT4oc3RyaW5nPW51bGwpPC9lbT4KICAgICAgICA8cD5BIHN0cmluZyBjb250YWluaW5nIHVzZXJuYW1lIHBhdHRlcm5zICh3aWxkY2FyZHMgYXJlIHN1cHBvcnRlZCkgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byByZWdpc3Rlci4gIElmIHlvdSB3aXNoIHRvIGhhdmUgbXVsdGlwbGUgcGF0dGVybnMgc2VwYXJhdGUgZWFjaCBwYXR0ZXJuIG9uIHNlcGFyYXRlIGxpbmVzLiBpLmUuOjwvcD4KCTxwcmU+PGNvZGU+JGNvbmZpZ1snY2dmcl91c2VybmFtZV93aGl0ZWxpc3QnXSA9ICcqQG15ZG9tYWluLmNvbTxici8+CipAbXlvdGhlcmRvbWFpbi5jb20nOzwvY29kZT48L3ByZT4KICAgICAgICA8cD5JZiB0aGlzIGNvbmZpZyBlbnRyeSBpcyBzcGVjaWZpZWQgYW5kIHRoZSBjZ2ZyX3VzZXJuYW1lX2JsYWNrbGlzdCBpcyBub3QsIHRoZW4gT05MWSB1c2VycyBtYXRjaGluZyB0aGVzZSBwYXR0ZXJucyB3aWxsIGJlIGFibGUgdG8gcmVnaXN0ZXIuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3VzZXJuYW1lX2JsYWNrbGlzdDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgPHA+QSBzdHJpbmcgY29udGFpbmluZyB1c2VybmFtZSBwYXR0ZXJucyAod2lsZGNhcmRzIGFyZSBzdXBwb3J0ZWQpIHRoYXQgYXJlIGFic29sdXRlbHkgbm90IGFsbG93ZWQgdG8gcmVnaXN0ZXIuICBJZiB5b3Ugd2lzaCB0byBoYXZlIG11bHRpcGxlIHBhdHRlcm5zLCBzZXBhcmF0ZSBlYWNoIHBhdHRlcm4gb24gc2VwYXJhdGUgbGluZXMuICBpLmUuOjwvcD4KCTxwcmU+PGNvZGU+JGNvbmZpZ1snY2dmcl91c2VybmFtZV9ibGFja2xpc3QnXSA9ICdyb290QCo8YnIvPgoqQGJhZGRvbWFpbi5jb20nOzwvY29kZT48L3ByZT4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwPC9jb2RlPiAtIDxlbT4oc3RyaW5nPW51bGwpPC9lbT4KICAgICAgICAgPHA+SWYgdGhpcyBpcyB0aGUgbmFtZSBvZiBhIHZhbGlkIGFkbWluIGdyb3VwIDxlbT4oY2FzZSBzZW5zaXRpdmUpPC9lbT4gVGhlbiB0aGUgbWVtYmVycyBvZiB0aGlzIGdyb3VwIHdpbGwgYmUgbm90aWZpZWQgdGhhdCBhIHVzZXIgaGFzIHJlZ2lzdGVyZWQKCSAgIHVzaW5nIHRoZSAiYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCIgdGVtcGxhdGUuCgkgPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX29ucHVzaF9ub3RpZnlfYWRtaW5ncm91cDwvY29kZT4gLSA8ZW0+KHN0cmluZz1udWxsKTwvZW0+CiAgICAgICAgIDxwPklmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSB2YWxpZCBhZG1pbiBncm91cCA8ZW0+KGNhc2Ugc2Vuc2l0aXZlKTwvZW0+IFRoZW4gdGhlIG1lbWJlcnMgb2YgdGhpcyBncm91cCB3aWxsIGJlIG5vdGlmaWVkIHRoYXQgYSB1c2VyIGhhcyBjb21wbGV0ZWQKCSAgIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgYW5kIGhhcyBiZWVuIHB1c2hlZCB0byBGRVUgdXNpbmcgdGhlICJhZG1pbl9ub3RpZnlfdXNlcnJlZ2lzdGVyZWQuZW1sIiB0ZW1wbGF0ZS4KCSA8L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfZGlzYWJsZV9yZXBlYXRjb2RlPC9jb2RlPiAtIDxlbT4oYm9vbD1mYWxzZSk8L2VtPgogICAgICAgICA8cD5Vc2UgdGhpcyBjb25maWcgZW50cnkgdG8gY29tcGxldGVseSBkaXNhYmxlIHRoZSByZXBlYXRjb2RlIGFjdGlvbi48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmNnZnJfdmVyaWZ5Y29kZV9leHBpcmVfaG91cnM8L2NvZGU+IC0gPGVtPihpbnQ9MjQqNyk8L2VtPgogICAgICAgICA8cD5UaGlzIGNvbmZpZyBlbnRyeSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBob3VycyB0aGF0IGFuIGV4cGlyeSBjb2RlIGlzIHZhbGlkIGZvci4gIElmIHNldCB0byAwIHRoZW4gY29kZXMgZG8gbm90IGV4cGlyZSBvbiB0aGVpciBvd24uPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3VzZXJfZXhwaXJlX2hvdXJzPC9jb2RlPiAtIDxlbT4oaW50PTI0KjcpPC9lbT4KICAgICAgICAgPHA+VGhpcyBjb25maWcgZW50cnkgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaG91cnMgdGhhdCB1c2VyIGhhcyB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuICBJZiBzZXQgdG8gMCB0aGVuIHVzZXIgYWNjb3VudHMgbmV2ZXIgZXhwaXJlLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+Y2dmcl9yZXBlYXRjb2RlX3BhZ2U8L2NvZGU+IC0gPGVtPihzdHJpbmc9IiIpPC9lbT4KICAgICAgICA8cD5UaGlzIGNvbmZpZyBlbnRyeSBpcyB1c2VkIGJ5IHRoZSB0YXNrIHRoYXQgcmVtaW5kcyB1c2VycyB0byByZWdpc3RlciB0byBzcGVjaWZ5IGEgcGFnZSB0byByZXR1cm50byBpbiB0aGUgbGluayB0aGF0IGlzIHByb3ZpZGVkIHdpdGhpbiB0aGF0IGVtYWlsLiAgSXQgc3BlY2lmaWVzIGEgcGFnZSBhbGlhcyBvZiBhIGNvbnRlbnQgcGFnZS48L3A+Cgk8cD5JZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBjb250ZW50IHBhZ2Ugd2lsbCBiZSB1c2VkLjwvcD4KCTxwPlRoaXMgY29uZmlnIGVudHJ5IGlzIG5vdCBzcGVjaWZpY2FsbHkgbmVlZGVkLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBhZ2UgaW4gdGhlIG9uX3JlbWluZC5lbWwgdGVtcGxhdGUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5jZ2ZyX3JlbWluZHVzZXJzX2FmdGVyX2hvdXJzPC9jb2RlPiAtIDxlbT4oaW50PTI0KTwvZW0+CiAgICAgICAgIDxwPlRoaXMgY29uZmlnIGVudHJ5IGVuYWJsZXMgZnVuY3Rpb25hbGl0eSB0aGF0IHdpbGwgc2VuZCBlbWFpbHMgdG8gdXNlcnMgd2hvIGhhdmUgcmVnaXN0ZXJlZCwgYnV0IGhhdmUgbm90IHZlcmlmaWVkIHRoZWlyIGFjY291bnQgd2l0aCBhIHJlZ2lzdHJhdGlvbiBjb2RlLiAgQnkgZGVmYXVsdCB0aGUgZW1haWwgd2lsbCBiZSBzZW50IGV2ZXJ5IDI0IGhvdXJzIGFmdGVyIHJlZ2lzdHJhdGlvbiBVTlRJTCB0aGUgdXNlciBpcyBwdXNoZWQgbGl2ZSBpbnRvIEZFVS4gIElmIHRoaXMgdmFsdWUgaXMgc2V0IHRvIDAgdGhlbiBubyByZW1pbmRlcnMgd2lsbCBiZSBzZW50LjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZmV1X3VzZXJuYW1lX2lzX2VtYWlsPC9jb2RlPiAtIDxlbT4oYm9vbD10cnVlKTwvZW0+CiAgICAgICAgIDxwPlRoaXMgaXMgdGhlIGJvb2xlYW4gc2V0dGluZyB1c2VkIGJ5IHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB0aGF0IGNvbnRyb2xzIHRoZSB0eXBlIG9mIGZpZWxkIHVzZWQgZm9yIHRoZSB1c2VybmFtZS48L3A+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPmZldV9leHBpcmVhZ2VfbW9udGhzPC9jb2RlPiAtIDxlbT4oaW50PTUyMCk8L2VtPgogICAgICAgICA8cD5UaGlzIGlzIHRoZSBpbnRlZ2VyIHNldHRpbmcgdXNlZCBieSB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUgdG8gaW5kaWNhdGUgdGhlIG51bWJlciBvZiBtb250aHMgYmVvZnJlIG5ldyB1c2VyIGFjY291bnRzIGV4cGlyZS48L3A+CgkgPHA+VGhpcyBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIHVzZXIgYWNjb3VudCBpbiB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUuIFVzZXIgZXhwaXJ5IGNhbiBiZSBhZGp1c3RlZCBvbiBhIHBlci11c2VyIGJhc2lzIGZyb20gd2l0aGluIEZFVS48L3A+CiAgICA8L2xpPgo8L3VsPgoKPGgzPlRlbXBsYXRlczwvaDM+CjxwPlVzaW5nIGEgY3VzdG9tIHRlbXBsYXRlIGZvciBhIGZyb250ZW5kIGFjdGlvbiBvZiBDR0ZFVVJlZ2lzdGVyIGlzIGEgdGhyZWUgc3RlcCBwcm9jZXNzOjwvPgo8b2w+CiAgIDxsaT5Db3B5IHRoZSBkZXNpcmVkIHRlbXBsYXRlIGZpbGUgdG8gYSBuZXcgbG9jYXRpb24uCiAgICAgICA8cD5XaGVuIENHRkVVUmVnaXN0ZXIgaXMgc2hpcHBlZCwgaXQncyBmYWN0b3J5IHRlbXBsYXRlcyB3aWxsIGJlIGxvY2F0ZWQgaW4gL21vZHVsZXMvQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMuICBFYWNoIGRpZmZlcmVudCBhY3Rpb24gaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQgdGVtcGxhdGU6PC9wPgogICAgICAgPHVsPgogICAgICAgICAgIDxsaT5UaGUgcmVnaXN0cmF0aW9uIGZvcm0KCSAgICAgICA8cD5Mb2NhdGlvbjogIDxjb2RlPi9tb2R1bGVzL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzL3JlZ2lzdGVyLnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgoJICAgPGxpPlRoZSB2ZXJpZnkgbWVzc2FnZQoJICAgICAgIDxwPkxvY2F0aW9uOiAgPGNvZGU+L21vZHVsZXMvQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMvYWZ0ZXJfdmVyaWZ5LnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgoJICAgPGxpPlRoZSByZXF1ZXN0Y29kZSBmb3JtCgkgICAgICAgPHA+TG9jYXRpb246ICA8Y29kZT4vbW9kdWxlcy9DR0ZFVVJlZ2lzdGVyL3RlbXBsYXRlcy9yZXF1ZXN0Y29kZS50cGw8L2NvZGU+PC9wPgoJICAgPC9saT4KICAgICAgIDwvdWw+CiAgICAgICA8cD5Zb3Ugc2hvdWxkIDxzdHJvbmc+TkVWRVI8L3N0cm9uZz4gbW9kaWZ5IHRoZXNlIHNvdXJjZSBmaWxlcy4gIFRoZXNlIGZpbGVzIGNhbiBiZSBvdmVyd3JpdHRlbiB3aGVuIHRoZSBtb2R1bGUgaXMgdXBncmFkZWQuICBBbHdheXMgY29weSB0aGVtIHRvIGEgbmV3IGxvY2F0aW9uLjwvcD4KCiAgICAgICA8cD5UaGVyZSBhcmUgbnVtZXJvdXMgbG9jYXRpb25zIHdoZXJlIHlvdSBjYW4gbG9jYXRlIHlvdXIgY3VzdG9tIHRlbXBsYXRlczo8L3A+CiAgICAgICA8dWw+CgkgICA8bGk+SW50byB0aGUgPGNvZGU+L2Fzc2V0cy9tb2R1bGVfY3VzdG9tL0NHRkVVUmVnaXN0ZXIvdGVtcGxhdGVzPC9jb2RlPiBkaXJlY3RvcnkgPHN0cm9uZz4ocmVjb21tZW5kZWQpPC9zdHJvbmc+LgoJICAgICAgIDxwPllvdSBtYXkgbmVlZCB0byBjcmVhdGUgdGhpcyBkaXJlY3Rvcnkgc3RydWN0dXJlLCBhcyBpdCBkb2VzIG5vdCBleGlzdCBieSBkZWZhdWx0LiAgRmlsZXMgaW4gdGhlIG1vZHVsZV9jdXN0b20gZGlyZWN0b3J5IHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIHdoZW4gdGhlIG1vZHVsZSBpcyB1cGdyYWRlZC48L3A+CgkgICAgICAgPHA+RmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgTVVTVCBlbmQgd2l0aCBhIC50cGwgZXh0ZW5zaW9uLCBhbmQgYXJlIGFjY2Vzc2VkIGJ5IGp1c3Qgc3BlY2lmeWluZyB0aGUgZmlsZW5hbWUuICBpLmUuOiAgPGNvZGU+bXlfbG9naW5fdGVtcGxhdGUudHBsPC9jb2RlPjwvcD4KCSAgIDwvbGk+CiAgICAgICAgICAgPGxpPkludG8gdGhlIDxjb2RlPi9hc3NldHMvdGVtcGxhdGVzPC9jb2RlPiBkaXJlY3RvcnkuCgkgICAgICAgPHA+Q29weSB0aGUgZmFjdG9yeSB0ZW1wbGF0ZSB0byBhIGRlc2lyZWQgZmlsZW5hbWUgaW4gPGNvZGU+L2Fzc2V0cy90ZW1wbGF0ZXM8L2NvZGU+LiAgR2l2ZSB0aGUgbmV3IGZpbGUgYSAudHBsIGV4dGVuc2lvbi48L3A+CgkgICAgICAgPHA+RmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIGFjY2Vzc2VkIGJ5IHNwZWNpZnlpbmcgdGhlIGNtc19maWxlIHJlc291cmNlLiAgIGkuZTogIDxjb2RlPmNtc19maWxlOm15X2xvZ2luX3RlbXBsYXRlLnRwbDwvY29kZT48L3A+CgkgICA8L2xpPgoJICAgPGxpPkludG8gRGVzaWduIE1hbmFnZXIKCSAgICAgICA8cD5PcGVuIHRoZSBmaWxlIGluIHlvdXIgZmF2b3JpdGUgZWRpdG9yLCBhbmQgJ2NvcHknIHRoZSB0ZXh0IGludG8gdGhlIGNsaXBib2FyZC48L3A+CgkgICAgICAgPHA+Q3JlYXRlIGEgbmV3IHRlbXBsYXRlIG9mIGFueSB0eXBlIGluIHRoZSBEZXNpZ25NYW5hZ2VyIG1vZHVsZS4gYW5kICdwYXN0ZScgdGhlIGNvbnRlbnRzIGZyb20gdGhlIGNsaXBib2FyZCBpbnRvIHRoZSB0ZXh0YXJlYTwvcD4KCSAgICAgICA8cD5HaXZlIHRoZSBuZXcgdGVtcGxhdGUgYSBuYW1lIFdJVEhPVVQgYSAudHBsIGV4dGVuc2lvbi48L3A+CgkgICAgICAgPHA+VGVtcGxhdGVzIGluIGRlc2lnbiBtYW5hZ2VyIGFyZSBhY2Nlc3NlZCBieSBqdXN0IHNwZWNpZnlpbmcgdGhlIHRlbXBsYXRlIG5hbWUuICBpLmU6IDxjb2RlPnJlZ2lzdGVydGVtcGxhdGU9IiJteSBsb2dpbiB0ZW1wbGF0ZSI8L2NvZGU+PC9wPgoJICAgPC9saT4KICAgICAgIDwvdWw+CiAgIDwvbGk+CgogICA8bGk+VGVsbCBDR0ZFVVJlZ2lzdGVyIHRvIHVzZSB0aGUgbmV3IHRlbXBsYXRlCiAgICAgICA8cD5JbiBhIHBhcmVudCBwYWdlIHRlbXBsYXRlLCBvciBpbiB0aGUgJ3NtYXJ0eSBsb2dpYyB0aGF0IGlzIHNwZWNpZmljIHRvIHRoaXMgcGFnZScgZmllbGQgaW4gYSBjb250ZW50IHBhZ2UgeW91IHNob3VsZCB1c2UgdGhlIDxjb2RlPntjbXNfbW9kdWxlX2hpbnR9PC9jb2RlPiBwbHVnaW4gdG8gdGVsbCBDR0ZFVVJlZ2lzdGVyIHRvIHVzZSB0aGUgbmV3IHRlbXBsYXRlLiAgaS5lLjo8L3A+CiAgICAgICA8cHJlPjxjb2RlPntjbXNfbW9kdWxlX2hpbnQgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgbG9naW50ZW1wbGF0ZT0ibXlfcmVnaXN0ZXJfdGVtcGxhdGUudHBsIn08L2NvZGU+PC9wcmU+CiAgICAgICA8cD5UaGUgZXhhbXBsZSBhYm92ZSBhc3N1bWVzIHRoYXQgdGhlIHBhdGggdG8gdGhlIGZpbGUgaXM6ICA8Y29kZT4vYXNzZXRzL21vZHVsZV9jdXN0b20vQ0dGRVVSZWdpc3Rlci90ZW1wbGF0ZXMvbXlfbG9naW5fdGVtcGxhdGUudHBsPC9jb2RlPgogICAgICAgPHA+VGhlIHtjbXNfbW9kdWxlX2hpbnR9IHBsdWdpbiB0ZWxscyBDTVMgdG8gcHJvdmlkZSB0aGF0IHBhcmFtZXRlciB0byB0aGUgbW9kdWxlIGJ5IGRlZmF1bHQgd2hlbiBpdCBpcyBjYWxsZWQuICBUaGlzIHBsdWdpbiBtdXN0IGJlIGNhbGxlZCBCRUZPUkUgdGhlIHByaW1hcnkgY29udGVudCBibG9jayBpbiB5b3VyIHRlbXBsYXRlLiAgIFlvdSBtYXkgY2FsbCB0aGlzIHBsdWdpbiBtdWx0aXBsZSB0aW1lcyB0byBwcmVzZXQgcGFyYW1ldGVycyBmb3IgZGlmZmVyZW50IG1vZHVsZXMuIGkuZTo8L3A+CiAgICAgICA8cHJlPjxjb2RlPntjbXNfbW9kdWxlX2hpbnQgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgbG9naW50ZW1wbGF0ZT0nbXlfcmVnaXN0ZXJfdGVtcGxhdGUudHBsJ308YnIvPgp7Y21zX21vZHVsZV9oaW50IG1vZHVsZT1DR0ZFVVJlZ2lzdGVyIGFmdGVydmVyaWZ5dGVtcGxhdGU9J215X3ZlcmlmeV90ZW1wbGF0ZS50cGwnfTxici8+CiAgIDwvbGk+CgogICA8bGk+TW9kaWZ5IGFuZCB0ZXN0IHlvdXIgbmV3IHRlbXBsYXRlCiAgICAgICA8cD5JZiB0aGUgdGVtcGxhdGUgaXMgc3RvcmVkIGluIHRoZSBmaWxlc3lzdGVtIHlvdSBjYW4gbm93IHVzZSB5b3VyIGZhdm9yaXRlIGVkaXRvciwgYW5kIHNvdXJjZSBjb2RlIG1hbmFnZW1lbnQgc3lzdGVtIHRvIG1hbmFnZSB0aGlzIGZpbGUuPC9jb2RlPgogICA8L2xpPgo8L29sPgoKPGgzPkVtYWlsczwvaDM+CjxwPlRoaXMgbW9kdWxlIHVzZXMgdGhlIHRlbXBsYXRhYmxlIGVtYWlsIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhlIENHRXh0ZW5zaW9ucyBtb2R1bGUgdG8gc2VuZCBlbWFpbCBtZXNzYWdlcy4gIFRoZSBmb2xsb3dpbmcgZW1haWwgdGVtcGxhdGVzIGFyZSBwcm92aWRlZDo8L3A+Cjx1bD4KICAgIDxsaT48Y29kZT5lbWFpbHMvb25fcmVnaXN0ZXIuZW1sCiAgICAgICAgPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHdpdGggaW5mb3JtYXRpb24gYXMgdG8gaG93IHRvIHZlcmlmeSBoaXMgZW1haWwgYWRkcmVzcyBhbmQgY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+ZW1haWxzL29uX3JlcGVhdGNvZGUuZW1sCgk8cD5UaGlzIGVtYWlsIHRlbXBsYXRlIGlzIHVzZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgd2hlbiB0aGV5IGhhdmUgcmVxdWVzdGVkIGFub3RoZXIgdmVyaWZpY2F0aW9uIGNvZGUuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5lbWFpbHMvb25fcmVtaW5kLmVtbAoJPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHdobyBoYXMgcmVnaXN0ZXJlZCwgYnV0IGhhcyBub3QgeWV0IGNvbXBsZXRlZCB0aGUgcmVnaXN0cmF0aW4gcHJvY2VzcyBieSB2ZXJpZnlpbmcgdGhlIHJlZ2lzdHJhdGlvbiBjb2RlLjwvcD4KCTxwPk5vdGU6IHRoaXMgZW1haWwgaXMgdHJpZ2dlcmVkIGZyb20gYSBiYWNrZ3JvdW5kIHRhc2suICBJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIGEgdXNlcnMgbGFuZ3VhZ2UuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5lbWFpbHMvYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbAogICAgICAgIDxwPlRoaXMgZW1haWwgdGVtcGxhdGUgaXMgdXNlZCB0byBzZW5kIGEgbWVzc2FnZSB0byBtZW1iZXJzIG9mIGEgbmFtZWQgYWRtaW4gZ3JvdXAgaW5kaWNhdGluZyB0aGF0IGEgbmV3IHVzZXIgaGFzIHJlZ2lzdGVyZWQuPC9wPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5lbWFpbHMvYWRtaW5fbm90aWZ5X3VzZXJwdXNoZWQuZW1sCiAgICAgICAgPHA+VGhpcyBlbWFpbCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHNlbmQgYSBtZXNzYWdlIHRvIG1lbWJlcnMgb2YgYSBuYW1lZCBhZG1pbiBncm91cCBpbmRpY2F0aW5nIHRoYXQgYSBuZXcgdXNlciBoYXMgY29tcGxldGVkIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBhbmQgaXMgbm93IGluIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZS48L3A+CiAgICA8L2xpPgo8L3VsPgo8cD5UbyBjdXN0b21pemUgdGhlc2UgdGVtcGxhdGVzLCB5b3Ugc2hvdWxkIGNvcHkgdGhlIGFwcHJvcHJpYXRlIGZpbGUgdG8gdGhlIDxjb2RlPi9hc3NldHMvbW9kdWxlX2N1c3RvbS9DR0ZFVVJlZ2lzdGVyL2VtYWlsczwvY29kZT4gZGlyZWN0b3J5IGJlbG93IHRoZSBDTVNNUyByb290IHBhdGguICBDcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBuZWNlc3NhcnkuICAgWW91IHNob3VsZCBORVZFUiBtb2RpZnkgdGhlIGZpbGVzIGluIHRoZSBtb2R1bGUncyBzb3VyY2UgY29kZSBkaXJlY3RvcnkuPC9wPgo8cD5TZWUgdGhlIGhlbHAgaW4gdGhlIENHRXh0ZW5zaW9ucyBtb2R1bGUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJ1Y3R1cmUgb2YgLmVtbCBmaWxlcy48L3A+Cgo8aDM+SG9va3M8L2gzPgo8dWw+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpQcmVSZW5kZXIoKTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBzZW5kcyBubyBwYXJhbWV0ZXJzLjwvcD4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgYmVmb3JlIHJlbmRlcmluZyBvZiBhbnkgZnJvbnRlbmQgYWN0aW9uLiAgSXQgYWxsb3dzIHRoaXJkIHBhcnR5IGNvZGUgdG8gZG8gcGVybWlzc2lvbnMgY2hlY2ssIHJhdGUgbGltaXRpbmcgZXRjLjwvcD4KICAgICAgIDxwPlRvIHN0b3AgcHJvY2Vzc2luZywgaGFuZGxlcnMgc2hvdWxkIHRocm93IHJ1bnRpbWUgZXhjZXB0aW9ucy48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpCZWZvcmVSZWdpc3RlcihVc2VyKTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgcHJpb3IgdG8gc2F2aW5nIHRoZSBuZXcgdXNlciBpbmZvcm1hdGlvbiB0byB0aGUgZGF0YWJhc2UuICBJdCBpcyB1c2VmdWwgZm9yIHZhbGlkYXRpbmcgZGF0YSBiZWZvcmUgcmVnaXN0ZXJpbmcgYSB1c2VyIG9yIHNlbmRpbmcgZW1haWxzLjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnM6PC9wPgogICAgICAgPHVsPgoJICAgIDxsaT48Y29kZT5Vc2VyPC9jb2RlPiAtIEEgdXNlciBvYmplY3QgY29vbnRhaW5pbmcgdGhlIHVzZXIgcmVnaXN0cmF0aW9uIGRhdGEuPC9saT4KICAgICAgIDwvdWw+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVJlZ2lzdGVyOjpBZnRlclJlZ2lzdGVyKFVzZXIpPC9jb2RlPgogICAgICAgPHA+VGhpcyBob29rIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBhZnRlciBzYXZpbmcgdGhlIG5ldyB1c2VyIGluZm9ybWF0aW9uIHRvIHRoZSBkYXRhYmFzZS4gSXQgaXMgdXNlZnVsIGZvciB0cmlnZ2VyaW5nIG90aGVyIHRoaXJkIHBhcnR5IGZ1bmN0aW9uYWxpdHkuPC9wPgogICAgICAgPHA+UGFyYW1ldGVyczo8L3A+CiAgICAgICA8dWw+CgkgICAgPGxpPjxjb2RlPlVzZXI8L2NvZGU+IC0gQSB1c2VyIG9iamVjdCBjb29udGFpbmluZyB0aGUgdXNlciByZWdpc3RyYXRpb24gZGF0YS48L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPjxjb2RlPkNHRkVVUmVnaXN0ZXI6OkFmdGVyUmVwZWF0Q29kZShhcnJheSk8L2NvZGU+CiAgICAgICA8cD5UaGlzIGhvb2sgaXMgdHJpZ2dlcmVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgcmVwZWF0IGNvZGUgaXMgc2VudCBmcm9tIHRoZSByZXBlYXQgY29kZSBhY3Rpb24uICBJdCBpcyB1c2VmdWwgdG8gdGllIGluIG90aGVyIHRoaXJkIHBhcnR5IGZ1bmN0aW9uYWxpdHkuPC9wPgogICAgICAgPHA+UGFyYW1ldGVycyA8ZW0+KGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvZW0+OjwvcD4KICAgICAgIDx1bD4KCSAgICA8bGk+PGNvZGU+ZmllbGRzPC9jb2RlPiAtIDxlbT4odHlwZT1SZWdGaWVsZFNldCk8L2VtPiAtIFRoZSBzZXQgb2YgZmllbGRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdGhhdCB0aGUgdXNlciBpcyBhc3NvY2lhdGVkIHdpdGguPC9saT4KCSAgICA8bGk+PGNvZGU+dXNlcjwvY29kZT4gLSA8ZW0+KHR5cGU9VXNlcik8L2VtPiAtIFRoZSB1c2VyIG9iamVjdDwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgogICA8bGk+PGNvZGU+Q0dGRVVSZWdpc3Rlcjo6QWZ0ZXJVc2VyUHVzaGVkKGFycmF5KTwvY29kZT4KICAgICAgIDxwPlRoaXMgaG9vayBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSByZXBlYXQgY29kZSBpcyBwdXNoZWQgZnJvbSB0aGlzIG1vZHVsZSBpbnRvIEZFVS4gIEl0IGlzIHVzZWZ1bCB0byB0aWUgaW4gb3RoZXIgdGhpcmQgcGFydHkgZnVuY3Rpb25hbGl0eS48L3A+CiAgICAgICA8cD5QYXJhbWV0ZXJzIDxlbT4oYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9lbT46PC9wPgogICAgICAgPHVsPgoJICAgIDxsaT48Y29kZT5maWVsZHM8L2NvZGU+IC0gPGVtPih0eXBlPVJlZ0ZpZWxkU2V0KTwvZW0+IC0gVGhlIHNldCBvZiBmaWVsZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cCB0aGF0IHRoZSB1c2VyIGlzIGFzc29jaWF0ZWQgd2l0aC48L2xpPgoJICAgIDxsaT48Y29kZT5mZXVfdWlkPC9jb2RlPiAtIDxlbT4odHlwZT1pbnQpPC9lbT4gLSBUaGUgbmV3IGZldSB1c2VyIGlkLjwvbGk+CiAgICAgICA8L3VsPgogICA8L2xpPgo8L3VsPgoKCjxoMz5SZXF1aXJlbWVudHM8L2gzPgo8dWw+CiAgICA8bGk+T3BlbiBTU0wgbGlicmFyaWVzIGZvciBlbmNyeXB0aW9uLjwvbGk+CiAgICA8bGk+RnJvbnRFbmRVc2VycyAzLjArPC9saT4KICAgIDxsaT5DR0V4dGVuc2lvbnM8L2xpPgo8L3VsPgoKPGgzPkltcG9ydGFudCBDbGFzc2VzPC9oMz4KPHVsPgogICAgIDxsaT5UaGUgVXNlciBjbGFzcwogICAgICAgICA8cD5UaGlzIGNsYXNzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGluZm9ybWF0aW9uIGFib3V0IGEgdXNlciB0aGF0IGlzIHJlZ2lzdGVyaW5nLiAgSXQgaXMgcHJvdmlkZWQgdG8gaG9va3MsIGFuZCB0byB2YXJpb3VzIHRlbXBsYXRlcy48L3A+CiAgICAgICAgIDxwPlN0YW5kYXJkIHByb3BlcnRpZXM6PC9wPgoJIDx1bD4KICAgICAgICAgICAgIDxsaT48Y29kZT5pZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIHVuaXF1ZSBpZCB3aXRoaW4gdGhpcyBtb2R1bGUgb2YgdGhlIHJlZ2lzdHJhdGlvbi4gIFRoaXMgaXMgTk9UIHRoZSBGRVUgdWlkLjwvbGk+CgkgICAgIDxsaT48Y29kZT5jcmVhdGVkPC9jb2RlPiAtIDxlbT4odHlwZT1pbnQpPC9lbT4gLSBUaGUgdW5peCB0aW1lc3RhbXAgb2YgdGhlIHRpbWUgdGhhdCB0aGlzIHVzZXIgaW5pdGlhbGx5IHJlZ2lzdGVyZWQuPC9saT4KCSAgICAgPGxpPjxjb2RlPmdpZDwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIEZFVSBncm91cCBpZCBvZiB0aGUgZ3JvdXAgdGhlIHVzZXIgaXMgcmVnaXN0ZXJpbmcgdG8uPC9saT4KCSA8L3VsPgoJIDxwPkFkZGl0aW9uYWxseSwgdGhlIHVzZXIgd2lsbCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIHN1Y2ggYXMgdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgd2hhdGV2ZXIgb3RoZXIgcHJvcGVydGllcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBGRVUgZ3JvdXAgdGhhdCB1c2VycyBhcmUgcmVnaXN0ZXJpbmcgdG8uICBUaGV5IGNhbiBiZSBhZGRyZXNzZWQgc3VjaCBhcyA8Y29kZT57JHVzZXItPnVzZXJuYW1lfTwvY29kZT4uPC9wPgogICAgIDwvbGk+CgogICAgIDxsaT5UaGUgUmVnRmllbGQgY2xhc3MKICAgICAgICAgPHA+VGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgZmllbGQgdGhhdCBhIHVzZXIgbXVzdCBjb21wbGV0ZSB3aGVuIHJlZ2lzdGVyaW5nLiAgVGhlcmUgYXJlIGEgZmV3IHN0YW5kYXJkIGZpZWxkcyBzdWNoIGFzIHVzZXJuYW1lL2VtYWlsLCBwYXNzd29yZCBhbmQgcmVwZWF0IHBhc3N3b3JkLiAgVGhlcmUgbWF5IGFsc28gYmUgYWRkaXRpb25hbCBmaWVsZHMgdGhhdCBhcmUgc3RpcHVsYXRlZCBieSB0aGUgRkVVIGdyb3VwIHRoYXQgdGhlIHVzZXIgaXMgcmVnaXN0ZXJpbmcgdG8uPC9wPgoJIDxwPlN0YW5kYXJkIHByb3BlcnRpZXM6PC9wPgoJIDx1bD4KCSAgICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IC0gPGVtPih0eXBlPXN0cmluZyk8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZC48L2xpPgoJICAgICA8bGk+PGNvZGU+dHlwZTwvY29kZT4gLSA8ZW0+KHR5cGU9aW50KTwvZW0+IC0gVGhlIHR5cGUgb2YgdGhlIGZpZWxkLgoJICAgICAgICAgIDx1bD4KCQkJPGxpPjAgPT0gVGV4dCBmaWVsZDwvbGk+CgkJCTxsaT4xID09IENoZWNrYm94IGZpZWxkPC9saT4KCQkJPGxpPjIgPT0gRW1haWwgZmllbGQ8L2xpPgoJCQk8bGk+MyA9PSBUZXh0QXJlYSBmaWVsZDwvbGk+CgkJCTxsaT40ID09IERyb3Bkb3duIGZpZWxkPC9saT4KCQkJPGxpPjUgPT0gTXVsdGlzZWxlY3QgZmllbGQ8L2xpPgoJCQk8bGk+NiA9PSBJbWFnZSBmaWVsZCA8ZW0+KFlvdSBzaG91bGQgbmV2ZXIgc2VlIHRoZXNlIGZpZWxkcyBpbiBDR0ZFVVJlZ2lzdGVyKTwvZW0+PC9saT4KCQkJPGxpPjcgPT0gUmFkaW8gYnV0dG9uIGdyb3VwPC9saT4KCQkJPGxpPjggPT0gRGF0ZSBmaWVsZDwvbGk+CgkJCTxsaT45ID09IERhdGEgZmllbGQgPGVtPihZb3Ugc2hvdWxkIG5ldmVyIHNlZSB0aGVzZSBmaWVsZHMgaW4gQ0dGRVVSZWdpc3Rlcik8L2VtPjwvbGk+CgkJCTxsaT4xMCA9PSBUZWwgZmllbGQ8L2xpPgoJCSAgPC91bD4KICAgICAgICAgICAgIDwvbGk+CgkgICAgIDxsaT48Y29kZT5wcm9tcHQ8L2NvZGU+IC0gPGVtPih0eXBlPXN0cmluZyk8L2VtPiAtIEEgcHJvbXB0IHRvIHVzZSBmb3IgdGhlIGZpZWxkLgoJICAgICAgICAgPHA+SXQgaXMgbm90IG1hbmRhdG9yeSB0aGF0IHlvdSB1c2UgdGhlIHByb21wdCBpbiBlbWFpbHMgb3IgdGVtcGxhdGVzLjwvcD48L2xpPgoJICAgICA8bGk+PGNvZGU+cmVxdWlyZWQ8L2NvZGU+IC0gPGVtPih0eXBlPWludCk8L2VtPiAtIEluZGljYXRlcyB0aGUgcmVxdWlyZWQgc3RhdHVzIGZvciB0aGlzIGZpZWxkLgoJICAgICAgICAgIDxwPjAgPT0gb2ZmLCAxID0gb3B0aW9uYWwsIDIgPT0gcmVxdWlyZWQsIDMgPT0gaGlkZGVuLCA0ID09IHJlYWRvbmx5LjwvcD4KCQkgIDxwPk5vcm1hbGx5IHlvdSBzaG91bGQgb25seSBzZWUgcHJvcGVydGllcyB0aGF0IGFyZSByZXF1aXJlZCBvciBvcHRpb25hbC48L3A+CiAgICAgICAgICAgICA8L2xpPgoJICAgICA8bGk+PGNvZGU+b3B0aW9uczwvY29kZT4gLSA8ZW0+KHR5cGU9aGFzaCk8L2VtPiAtIEZvciBzZWxlY3QsIGRyb3Bkb3duLCByYWRpb2J1dHRvbiBhbmQgbXVsdGlzZWxlY3QgZmllbGRzIHRoaXMgcHJvcGVydHkgd2lsbCBjb250YWluIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnMuPC9saT4KCSAgICAgPGxpPjxjb2RlPnVuaXF1ZTwvY29kZT4gLSA8ZW0+KHR5cGU9Ym9vbCk8L2VtPiAtIFdoZXRoZXIgdGhlIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5IG11c3QgYmUgdW5pcXVlIGFjcm9zcyBhbGwgdXNlcnMuPC9saT4KCSAgICAgPGxpPjxjb2RlPmV4dHJhPC9jb2RlPiAtIDxlbT4odHlwZT1oYXNoKTwvZW0+PC9saT4KCSA8L3VsPgogICAgIDwvbGk+CgogICAgIDxsaT5UaGUgUmVnRmllbGRTZXQgY2xhc3MKICAgICAgICAgPHA+VGhpcyBjbGFzcyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBSZWdGaWVsZCBvYmplY3RzLiAgSXQgaXMgY291bnRhYmxlIGFuZCBpdGVyYXRhYmxlLiAgU28gPGNvZGU+e2NvdW50KCRzZXQpfTwvY29kZT4gYW5kIDxjb2RlPntmb3JlYWNoICRzZXQgYXMgJGZpZWxkfS4uLnsvZm9yZWFjaH08L2NvZGU+IHdpbGwgd29yayBwcm9wZXJseS48L3A+CgkgPHA+QWRkaXRpb25hbCBtZXRob2RzOjwvcD4KCSA8dWw+CgkgICAgIDxsaT48Y29kZT5oYXNfZmllbGQoc3RyaW5nICRmaWVsZG5hbWUpIDogYm9vbDwvY29kZT4KCSAgICAgICAgIDxwPlRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uIGEgUmVnRmllbGRTZXQgdG8gdGVzdCBpZiBhIHNwZWNpZmljIGZpZWxkIChieSBuYW1lKSBpcyBjb250YWluZWQgaW4gdGhlIHNldC48L2xpPgoJICAgICA8L2xpPgoJICAgICA8bGk+PGNvZGU+Z2V0X2VtYWlsX2ZpZWxkKCkgOiBSZWdGaWVsZDwvY29kZT4KCSAgICAgICAgIDxwPlRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIG9uIGEgUmVnRmllbGRTZXQgdG8gcmV0dXJuIHRoZSBmaWVsZCBkZWZpbml0aW9uIG9mIHRoZSBmaXJzdCBmaWVsZCB0aGF0IGlzIG9mIHR5cGUgJ2VtYWlsJy48L3A+CgkgICAgIDwvbGk+CgkgPC91bD4KICAgICA8L2xpPgo8L3VsPgoKPGgzPkJhY2tncm91bmQgVGFza3M8L2gzPgo8cD5UaGlzIG1vZHVsZSBwZXJmb3JtcyBzb21lIHRhc2tzIGluIHRoZSBiYWNrZ291bmQ6PC9wPgo8dWw+CiAgICA8bGk+UmVtaW5kIHVzZXJzIHdobyBoYXZlIG5vdCBjb21wbGV0ZWQgcmVnaXN0ZXJpbmcuPC9saT4KICAgIDxsaT5DbGVhbiB1cCB1c2VyIHJlZ2lzdHJhdGlvbiBkYXRhIHRoYXQgaGFzIGV4cGlyZWQuPC9saT4KPC91bD4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhlIG1vZHVsZSBhdXRob3IgaXMgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Zyb250ZW5kdXNlcnMiPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/todo.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MS4gIERPTkUgVGFzayB0byBjbGVhciBleHBpcmVkIHVzZXJzIChhY2NvcmRpbmcgdG8gc2V0dGluZ3MpCjIuICBUYXNrIHRvIGNsZWFyIGV4cGlyZWQgYXV0aHRva2VucwozLiAgRE9ORSBCbGFja2xpc3QvV2hpdGVsaXN0IHVzZXJuYW1lcyAodXNlcyBhIHByb2Nlc3NvcikKNC4gIERvY3VtZW50YXRpb24KICAgIC0gZmVhdHVyZXMKICAgIC0gc2VjdXJpdHkgbWVjaGFuaXNtcwogICAgLSBhY3Rpb25zCiAgICAtIHBhcmFtcwogICAgLSBpbmxpbmUKICAgIC0gY29uZmlnIGVudHJpZXMKICAgIC0gdGVtcGxhdGVzCiAgICAtIGVtYWlscwogICAgLSBob29rcwogICAgLSB1c2VyIG9iamVjdAogICAgLSBmaWVsZHMgYXJyYXkKICAgIC0gYmFja2dyb3VuZCB0YXNrcwo1LiAgRE9ORSBBZG1pbiBDUlVECjYuICBET05FIEFkbWluIFB1c2ggdXNlciBsaXZlCjcuICBET05FIEFkbWluIENyZWF0ZSBuZXcgdmVyaWZ5Y29kZSBmb3IgdXNlcgogICAgKHNlbmRzIHRoZSByZWdpc3RyYXRpb24gZW1haWwgYWdhaW4gd2l0aCBuZXcgY29kZSkKICAgIC0gdXNlIHJlZ1Byb2Nlc3Nvcgo4LiAgRE9ORTogRW1haWwgbm90aWZ5IG5ldyByZWdpc3RyYXRpb24KOS4gIERPTkU6IExhbmcgc3RyaW5ncwoxMC4gQWRtaW4gbm90aWZpY2F0aW9uIGZvciBvbGQsIHVuZXhwaXJlZCByZWdpc3RyYXRpb25zCjExLiBET05FIFRhc2sgdG8gU2VuZCByZW1pbmRlciBlbWFpbHMgZXZlcnkgTiBob3VycyBhZnRlciByZWdpc3RlcmluZwoxMi4gQ0xJIENvbW1hbmRzCg==]]></data>
	</file>
	<file>
	  <filename>/emails/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/emails/admin_notify_userpushed.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3QgPSB0cnVlCj09PT0gc3ViamVjdCA9PT09ClJlZ2lzdHJhdGlvbiBjb21wbGV0ZWQgb24ge3NpdGVuYW1lfQo9PT09IGJvZHkgPT09PQo8cD5BIG5ldyB1c2VyIGhhcyBjb21wbGV0ZWQgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGFuZCBpcyBub3cgYSBjb21wbGV0ZWQgdXNlciBvbiB7c2l0ZW5hbWV9LjwvcD4KCjxwPlVzZXJuYW1lOiA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV8ZGVmYXVsdDonKiogdW5rbm93biAqKid9PC9zdHJvbmc+PC9wPgo8cD5GRVUgVUlEOiAgPHN0cm9uZz57JGZldV91aWR9PC9zdHJvbmc+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/emails/admin_notify_userregistered.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3QgPSB0cnVlCj09PT0gc3ViamVjdCA9PT09Ck5ldyByZWdpc3RyYXRpb24gb24ge3NpdGVuYW1lfQo9PT09IGJvZHkgPT09PQo8cD5BIG5ldyB1c2VyIGhhcyBub3cgcmVnaXN0ZXJlZCBvbiB7c2l0ZW5hbWV9PC9wPgo8cD5UaGlzIG1lc3NhZ2UgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1c2VyIGhhcyBjb21wbGV0ZWQgdGhlIHByb2Nlc3MsIGp1c3QgdGhhdCBoZSBoYXMgcmVnaXN0cmVkLjwvcD4KCjxwPlVzZXJuYW1lOiA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV8ZGVmYXVsdDonKiogdW5rbm93biAqKid9PC9zdHJvbmc+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/emails/on_register.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3Q9dHJ1ZQo9PT09IHN1YmplY3QgPT09PQpXZWxjb21lIHRvIHtzaXRlbmFtZX0KPT09PSBib2R5ID09PT0KPGgyPldlbGNvbWU8L2gyPgo8cD5IZWxsbyA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV9PC9zdHJvbmc+IHRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgdG8gPGVtPntzaXRlbmFtZX08L2VtPi48L3A+Cgp7Y21zX2FjdGlvbl91cmwgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgYWN0aW9uPXZlcmlmeSB1aWQ9JHVzZXItPmlkIGNvZGU9JGRhdGEtPnZlcmlmeV9jb2RlIGFzc2lnbj12ZXJpZnlfdXJsfQo8cD5UaGVyZSBpcyBvbmx5IG9uZSBtb3JlIHRoaW5nIHRvIGRvLiAgIFBsZWFzZSBjbGljayB0aGUgYnV0dG9uIGJlbG93LjwvcD4KPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPgogICAgPGEgaHJlZj0ieyR2ZXJpZnlfdXJsfSIgdGFyZ2V0PSJfX2JsYW5rIj48YnV0dG9uPlZlcmlmeTwvYnV0dG9uPjwvYT4KPC9wPgoKPHA+SWYgeW91ciBicm93c2VyIGRvZXMgbm90IGFsbG93IHlvdSB0byBjbGljayBvbiBsaW5rcywgdGhlbiB5b3UgY2FuIGNvcHkgYW5kIHBhc3RlIHRoZSBmb2xsb3dpbmcgVVJMIGludG8geW91ciBicm93c2VyLjwvcD4KPHByZT48Y29kZT57JHZlcmlmeV91cmx9PC9jb2RlPjwvcHJlPgoKe2lmICRkYXRhLT5leHBpcmVzfQo8cD5UaGlzIGNvZGUgd2lsbCBleHBpcmUgYXQgYXBwcm94aW1hdGVseSB7JGRhdGEtPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4ICVYJ30gPGVtPihzZXJ2ZXIgdGltZSk8L2VtPi48L3A+CnsvaWZ9Cgo8aHIvPgo8cD5UaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIHdpdGgge3NpdGVuYW1lfTwvcD4KPHA+SWYgeW91IGFyZSByZWNlaXZpbmcgdGhpcyBlbWFpbCBpbmNvcnJlY3RseSwgeW91IGNhbiBzYWZlbHkgaWdub3JlIGl0LjwvcD4K]]></data>
	</file>
	<file>
	  <filename>/emails/on_remind.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3QgPSB0cnVlCj09PT0gc3ViamVjdCA9PT09ClBsZWFzZSBjb21wbGV0ZSB5b3VyIHJlZ2lzdHJhdGlvbgo9PT09IGJvZHkgPT09PQo8aDM+SGVsbG8gPHN0cm9uZz57JHVzZXItPnVzZXJuYW1lfTwvc3Ryb25nPjwvaDM+Cgo8cD5JdCBhcHBlYXJzIHlvdSBoYXZlIG5vdCBmaW5pc2hlZCByZWdpc3RlcmluZyB3aXRoIDxzdHJvbmc+e3NpdGVuYW1lfTwvc3Ryb25nPiB5ZXQuPC9wPgoKPHA+V2UgcHJldmlvdXNseSBzZW50IHlvdSBhbiBlbWFpbCBjb250YWluaW5nIGEgbGluayB0aGF0IGFsbG93ZWQgeW91IHRvIGNvbXBsZXRlIHlvdXIgcmVnaXN0cmF0aW9uIG9uIHtzaXRlbmFtZX0uCiAgIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhhdCBlbWFpbCwgb3IgaGF2ZSBsb3N0IGl0LCBpdCBpcyBub3QgYW4gaXNzdWUuICBZb3UgY2FuIHJlcXVlc3QgYW5vdGhlciBjb2RlIGJ5IGNsaWNraW5nIG9uIHRoZSBsaW5rIGJlbG93Lgo8L3A+Cgo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgeyogd2UgaGF2ZSBhIHBhZ2UgaWQgcmVzb2x2ZWQgZnJvbSB0aGUgc2V0dGluZ3MgcGFnZSwgaWYgbm90IHNldCBpbiB0aGUgc2V0dGluZ3MgdGhlIGRlZmF1bHQgY29udGVudCBwYWdlIHdpbGwgYmUgdXNlZCAqfQogICAgIHsqIHlvdSBjb3VsZCBzcGVjaWZ5IGFueSBwYWdlIGhlcmUgKn0KICAgICB7Y21zX2FjdGlvbl91cmwgbW9kdWxlPUNHRkVVUmVnaXN0ZXIgYWN0aW9uPXJlcGVhdGNvZGUgcmV0dXJuaWQ9JHJlcGVhdGNvZGVfcGFnZSBhc3NpZ249J3JlcGVhdGNvZGVfdXJsJ30KICAgICA8YSBocmVmPSJ7JHJlcGVhdGNvZGVfdXJsfSI+PGJ1dHRvbj5SZXF1ZXN0IGNvZGU8L2J1dHRvbj48L2E+CjwvcD4KCjxwPklmIHlvdSByZWNlaXZlZCB0aGlzIGVtYWlsIGluIGVycm9yLCB5b3UgY2FuIHNhZmVseSBpZ25vcmUgaXQuPC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/emails/on_repeatcode.eml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZW5jb2RlX3N1YmplY3Q9dHJ1ZQo9PT09IHN1YmplY3QgPT09PQpZb3VyIHZlcmlmaWNhdGlvbiBjb2RlCj09PT0gYm9keSA9PT09CjxoMz5IZWxsbyA8c3Ryb25nPnskdXNlci0+dXNlcm5hbWV9PC9zdHJvbmc+PC9oMz4KCntjbXNfYWN0aW9uX3VybCBtb2R1bGU9Q0dGRVVSZWdpc3RlciBhY3Rpb249dmVyaWZ5IHVpZD0kdXNlci0+aWQgY29kZT0kZGF0YS0+dmVyaWZ5X2NvZGUgYXNzaWduPXZlcmlmeV91cmx9CjxwPldlIGFyZSBzb3JyeSB0aGF0IHlvdSBoYXZlIGhhZCBhIHByb2JsZW0gZ2V0dGluZyB5b3VyIHZlcmlmaWNhdGlvbiBjb2RlLiAgTGV0cyBob3BlIHRoYXQgdGhpcyBvbmUgd29ya3MuPC9wPgoKPHA+UGxlYXNlIGNsaWNrIHRoZSBidXR0b24gYmVsb3cuPC9wPgo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICA8YSBocmVmPSJ7JHZlcmlmeV91cmx9IiB0YXJnZXQ9Il9fYmxhbmsiPjxidXR0b24+VmVyaWZ5PC9idXR0b24+PC9hPgo8L3A+Cgo8cD5JZiB5b3VyIGJyb3dzZXIgZG9lcyBub3QgYWxsb3cgeW91IHRvIGNsaWNrIG9uIGxpbmtzLCB0aGVuIHlvdSBjYW4gY29weSBhbmQgcGFzdGUgdGhlIGZvbGxvd2luZyBVUkwgaW50byB5b3VyIGJyb3dzZXIuPC9wPgo8cHJlPjxjb2RlPnskdmVyaWZ5X3VybH08L2NvZGU+PC9wcmU+Cgp7aWYgJGRhdGEtPmV4cGlyZXN9CjxwPlRoaXMgY29kZSB3aWxsIGV4cGlyZSBhdCBhcHByb3hpbWF0ZWx5IHskZGF0YS0+ZXhwaXJlc3xkYXRlX2Zvcm1hdDonJXggJVgnfSA8ZW0+KHNlcnZlciB0aW1lKTwvZW0+LjwvcD4Key9pZn0KCjxoci8+CjxwPlRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgd2l0aCB7c2l0ZW5hbWV9PC9wPgo8cD5JZiB5b3UgYXJlIHJlY2VpdmluZyB0aGlzIGVtYWlsIGluY29ycmVjdGx5LCB5b3UgY2FuIHNhZmVseSBpZ25vcmUgaXQuPC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCddID0gJ1RoZSBjYXB0Y2hhIGRhdGEgc3VibWl0dGVkIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZSc7CiRsYW5nWydsYmxfbmV3Y29kZSddID0gJ1NlbmQgdXNlciBhIG5ldyBjb2RlJzsKJGxhbmdbJ21zZ19ub3VzZXJzJ10gPSAnVGhlcmUgYXJlIG5vIHJlZ2lzdGVyaW5nIHVzZXJzIHRoYXQgbWF0Y2ggeW91ciBjcml0ZXJpYSc7CiRsYW5nWydtc2dfdXNlcl9kZWxldGVkJ10gPSAnVXNlciBkZWxldGVkJzsKJGxhbmdbJ21zZ191c2VyX25ld2NvZGUnXSA9ICdOZXcgdmVyaWZpY2F0aW9uIGNvZGUgc2VudCB0byB1c2VyJzsKJGxhbmdbJ21zZ191c2VyX3NhdmVkJ10gPSAnVXNlciBzYXZlZCc7CiRsYW5nWydtc2dfdXNlcl9wdXNoZWRsaXZlJ10gPSAnVXNlciBwdXNoZWQgdG8gRnJvbnRFbmRVc2Vycyc7CiRsYW5nWydoZHJfbWFuYWdlX3VzZXInXSA9ICdNYW5hZ2UgdXNlciByZWdpc3RyYXRpb24nOwokbGFuZ1snbGJsX3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydsYmxfY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2xibF9kZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snbGJsX3B1c2hsaXZlJ10gPSAnUHVzaCBsaXZlJzsKJGxhbmdbJ2xibF9lZGl0J10gPSAnRWRpdCc7CiRsYW5nWydsYmxfZXhwaXJlZCddID0gJ0V4cGlyZWQnOwokbGFuZ1snbGJsX3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1snbGJsX2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0Zyb250ZW5kIFVzZXIgUmVnaXN0cmF0aW9ucyc7CiRsYW5nWydlcnJfdXNlcm5hbWVfY2Fubm90cmVnaXN0ZXInXSA9ICdTb3JyeSwgY2Fubm90IHJlZ2lzdGVyJzsKJGxhbmdbJ3NlbmRjb2RlJ10gPSAnU2VuZCBjb2RlJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0ZXInOwokbGFuZ1sncHJvbXB0X2NhcHRjaGEnXSA9ICdQbGVhc2UgZW50ZXIgdGhlIGNhcHRjaGEgdGV4dCc7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWVlbWFpbCddID0gJ1VzZXJuYW1lL0VtYWlsJzsKJGxhbmdbJ2Vycl9jYXB0Y2hhbWlzbWF0Y2gnXSA9ICdUaGUgY2FwdGNoYSB0ZXh0IGlzIGluY29ycmVjdCc7CiRsYW5nWydlcnJfbWlzc2luZ191c2VybmFtZSddID0gJ1BsZWFzZSBlbnRlciBhIHVzZXJuYW1lJzsKJGxhbmdbJ2Vycl9pbnZhbGlkX3VzZXJuYW1lJ10gPSAnVGhlIHVzZXJuYW1lIGVudGVyZWQgaXMgaW52YWxpZCc7CiRsYW5nWydlcnJfc2VjdXJpdHknXSA9ICdJbnZhbGlkIGZvcm0gc3VibWlzc2lvbiAoc29tZSBzZWN1cml0eSBkYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCknOwokbGFuZ1snZXJyX3VzZXJfbm90Zm91bmQnXSA9ICdTb3JyeSwgd2UgY291bGQgbm90IGZpbmQgdGhhdCB1c2VyJzsKJGxhbmdbJ2Vycl91c2VybmFtZV9leGlzdHMnXSA9ICdUaGF0IHVzZXJuYW1lIGlzIGFscmVhZHkgdGFrZW4nOwokbGFuZ1snZXJyX3JlcXVpcmVkX2ZpZWxkJ10gPSAnUGxlYXNlIGVudGVyIGEgdmFsdWUgZm9yICIlcyInOwokbGFuZ1snZXJyX2ludmFsaWRfZmllbGQnXSA9ICdUaGUgdmFsdWUgZW50ZXJlZCBmb3IgIiVzIiBpcyBpbnZhbGlkJzsKJGxhbmdbJ2Vycl9ub3VuaXF1ZV9maWVsZCddID0gJ1RoZSB2YWx1ZSBlbnRlcmVkIGZvciAiJXMiIGlzIG5vdCB1bmlxdWUgb24gdGhpcyBzeXN0ZW0uJzsKJGxhbmdbJ2Vycl9wYXNzd29yZF9taXNtYXRjaCddID0gJ1BsZWFzZSBlbnRlciB0aGUgcGFzc3dvcmRzIGluIGJvdGggZmllbGRzIG1hdGNoJzsKJGxhbmdbJ2Vycl9pbnZhbGlkX3Bhc3N3b3JkJ10gPSAnVGhlIHBhc3N3b3JkIHlvdSBlbnRlcmVkIGlzIG5vdCBzdHJvbmcgZW5vdWdoLiAgUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBkaWdpdCwgYXQgbGVhc3Qgb25lIHVwcGVyY2FzZSBjaGFyYWN0ZXIsIGFuZCBvbmUgbG93ZXJjYXNlIGxldHRlcic7CiRsYW5nWydlcnJfY2Fubm90dmVyaWZ5J10gPSAnU29ycnksIHdlIGNvdWxkIG5vdCBjb25maXJtIHlvdXIgdmFsaWRhdGlvbic7CiRsYW5nWydtc2dfd2VsY29tZSddID0gJ1dlbGNvbWUnOwokbGFuZ1snbXNnX2FmdGVyX3ZlcmlmeSddID0gJ1RoYW5rIHlvdSBmb3IgdmVyaWZ5aW5nIHlvdXIgcmVnaXN0cmF0aW9uJzsKJGxhbmdbJ2luZm9fcmVwZWF0Y29kZSddID0gJ0lmIHlvdSBoYXZlIGFscmVhZHkgc3VibWl0dGVkIHJlZ2lzdHJhdGlvbiBpbmZvLCBidXQgZGlkIG5vdCByZWNlaXZlIHRoZSByZWdpc3RyYXRpb24gY29kZGUsIHlvdSBjYW4gZW50ZXIgeW91ciB1c2VybmFtZSBhZ2FpbiBhbmQgd2Ugd2lsbCBhdHRlbXB0IHRvIHNlbmQgeW91IGFub3RoZXIgY29kZS4nOwokbGFuZ1sncG9zdF9yZXBlYXRjb2RlX21lc3NhZ2UnXSA9ICdUaGFua3MsIGNoZWNrIHlvdXIgZW1haWwgZm9yIGEgbmV3IHZlcmlmaWNhdGlvbiBjb2RlJzsK]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/.#class.RegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/abstract.FilterResultSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgphYnN0cmFjdCBjbGFzcyBGaWx0ZXJSZXN1bHRTZXQgZXh0ZW5kcyBTZXQKewogICAgcHJpdmF0ZSAkX2ZpbHRlcjsKICAgIHByaXZhdGUgJF90b3RhbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRmlsdGVyICRmaWx0ZXIsIGludCAkbm1hdGNoZXMsIGFycmF5ICRtYXRjaGVzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2ZpbHRlciA9ICRmaWx0ZXI7CiAgICAgICAgJHRoaXMtPl90b3RhbCA9ICRubWF0Y2hlczsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYXRjaGVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoIHN0cmluZyAka2V5ICkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAncGFnZWNvdW50JzoKICAgICAgICAgICAgcmV0dXJuIGNlaWwoJHRoaXMtPl90b3RhbCAvICR0aGlzLT5fZmlsdGVyLT5saW1pdCk7CgogICAgICAgIGNhc2UgJ3BhZ2UnOgogICAgICAgICAgICByZXR1cm4gZmxvb3IoJHRoaXMtPl9maWx0ZXItPm9mZnNldCAvICR0aGlzLT5fZmlsdGVyLT5saW1pdCkgKyAxOwoKICAgICAgICBjYXNlICd0b3RhbCc6CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3RvdGFsOwoKICAgICAgICBjYXNlICdmaWx0ZXInOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9maWx0ZXI7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIGdldHRhYmxlIHByb3BlcnR5IG9mICIuZ2V0X2NsYXNzKCR0aGlzKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwYWdlTGlzdChpbnQgJHN1cnJvdW5kID0gNSkKICAgIHsKICAgICAgICAkc3Vycm91bmQgPSBtYXgoMixtaW4oNTAsJHN1cnJvdW5kKSk7CgogICAgICAgICRsaXN0ID0gYXJyYXkoKTsKICAgICAgICBmb3IoICRpID0gMTsgJGkgPD0gbWluKCRzdXJyb3VuZCwkdGhpcy0+cGFnZWNvdW50KTsgJGkrKyApIHsKICAgICAgICAgICAgJGxpc3RbXSA9IChpbnQpJGk7CiAgICAgICAgfQoKICAgICAgICAkeDEgPSBtYXgoMSwoaW50KSgkdGhpcy0+cGFnZSAtICRzdXJyb3VuZCAvIDIpKTsKICAgICAgICAkeDIgPSBtaW4oJHRoaXMtPnBhZ2Vjb3VudCAtIDEsKGludCkoJHRoaXMtPnBhZ2UgKyAkc3Vycm91bmQgLyAyKSApOwogICAgICAgIGZvciggJGkgPSAkeDE7ICRpIDw9ICR4MjsgJGkrKyApIHsKICAgICAgICAgICAgJGxpc3RbXSA9IChpbnQpJGk7CiAgICAgICAgfQoKICAgICAgICBmb3IoICRpID0gbWF4KDEsJHRoaXMtPnBhZ2Vjb3VudCAtICRzdXJyb3VuZCk7ICRpIDwgJHRoaXMtPnBhZ2Vjb3VudDsgJGkrKykgewogICAgICAgICAgICAkbGlzdFtdID0gKGludCkkaTsKICAgICAgICB9CgogICAgICAgICRsaXN0ID0gYXJyYXlfdW5pcXVlKCRsaXN0KTsKICAgICAgICBzb3J0KCRsaXN0KTsKICAgICAgICByZXR1cm4gJGxpc3Q7CiAgICB9CgoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/abstract.Set.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBJdGVyYXRvcjsKdXNlIENvdW50YWJsZTsKCmFic3RyYWN0IGNsYXNzIFNldCBpbXBsZW1lbnRzIEl0ZXJhdG9yLCBDb3VudGFibGUKewogICAgcHJpdmF0ZSAkX2xpc3Q7CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBhcnJheSAkbWF0Y2hlcyA9IG51bGwgKQogICAgewogICAgICAgICR0aGlzLT5fbGlzdCA9ICRtYXRjaGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKSB7IGlmKCAhZW1wdHkoJHRoaXMtPl9saXN0KSApIHJlc2V0KCR0aGlzLT5fbGlzdCk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJyZW50KCkgeyByZXR1cm4gIWVtcHR5KCR0aGlzLT5fbGlzdCkgPyBjdXJyZW50KCR0aGlzLT5fbGlzdCkgOiBudWxsOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24ga2V5KCkgeyByZXR1cm4gIWVtcHR5KCR0aGlzLT5fbGlzdCkgPyBrZXkoJHRoaXMtPl9saXN0KSA6IG51bGw7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBuZXh0KCkgeyByZXR1cm4gbmV4dCgkdGhpcy0+X2xpc3QpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKSB7IHJldHVybiAoJHRoaXMtPmtleSgpICE9PSBudWxsKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCkgeyByZXR1cm4gKGVtcHR5KCR0aGlzLT5fbGlzdCkpID8gMCA6IGNvdW50KCR0aGlzLT5fbGlzdCk7IH0KCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.AbstractVerifierDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgphYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZlcmlmaWVyRGVjb3JhdG9yCnsKICAgIHByb3RlY3RlZCAkcGFyZW50OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZSAkcGFyZW50ID0gbnVsbCkKICAgIHsKICAgICAgICAvLyBub3RlOiB3ZSB3YW50IHRvIHVzZSBhIHNwZWNpZmljIGludGVyZmFjZSBoZXJlLgogICAgICAgICR0aGlzLT5wYXJlbnQgPSAkcGFyZW50OwogICAgfQoKICAgIC8vIHRoaXMgaXMgYW4gZW1wdHkgdHlwZSBzbyBmYXIuCglwdWJsaWMgZnVuY3Rpb24gX19jYWxsKHN0cmluZyAkbWV0aG9kLCAkYXJncykKCXsKICAgICAgICBpZiggISR0aGlzLT5wYXJlbnQgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oZ2V0X2NsYXNzKCR0aGlzKS4nIGRvZXMgbm90IGhhdmUgYSBtZXRob2QgZW50aXRsZWQgJy4kbWV0aG9kKTsKICAgICAgICB9CgkgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KCBbICR0aGlzLT5wYXJlbnQsICRtZXRob2QgXSwgJGFyZ3MgKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.AdminNotifierUsingNotifications.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBub3RpZmljYXRpb25fbWVzc2FnZTsgLy8gQ0dFeHRlbnNpb25zCnVzZSBjZ2VfdXNlcm9wczsKdXNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNb2R1bGU7CgpjbGFzcyBBZG1pbk5vdGlmaWVyVXNpbmdOb3RpZmljYXRpb25zIGltcGxlbWVudHMgQWRtaW5Ob3RpZmllcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRzZXR0aW5nczsKICAgIHByaXZhdGUgJG5vdGlmaWVyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDR0ZFVVJlZ2lzdGVyICRtb2QsIFNldHRpbmdzICRzZXR0aW5ncywgQ01TTW9kdWxlICRub3RpZmllcikKICAgIHsKICAgICAgICBpZiggIW1ldGhvZF9leGlzdHMoJG5vdGlmaWVyLCdzZW5kX21lc3NhZ2UnKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIG5vdGlmaWVyIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5zZXR0aW5ncyA9ICRzZXR0aW5nczsKICAgICAgICAkdGhpcy0+bm90aWZpZXIgPSAkbm90aWZpZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5vdGlmeV91c2VyX3JlZ2lzdGVyZWQoUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikKICAgIHsKICAgICAgICBpZiggISgkZ25hbWUgPSAkdGhpcy0+c2V0dGluZ3MtPm9ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXApICkgcmV0dXJuOwoKCWRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCcpOwogICAgICAgIGlmKCAhJGVtbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHRoZSBhZG1pbl9ub3RpZnlfdXNlcnJlZ2lzdGVyZWQuZW1sIGVtYWlsIHRlbXBsYXRlJyk7CiAgICAgICAgJGVtbCA9ICRlbWwtPmFkZF9kYXRhKCd1c2VyJywgJHVzZXIpCiAgICAgICAgICAgIC0+YWRkX2RhdGEoJ2ZpZWxkcycsICRmaWVsZHMpCiAgICAgICAgICAgIC0+YWRkX2FkbWluX2dyb3VwKCRnbmFtZSk7CiAgICAgICAgJHByb2MgPSAkdGhpcy0+bW9kLT5jcmVhdGVfbmV3X21haWxwcm9jZXNzb3IoJGVtbCk7CgogICAgICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCBhIG5vdGlmaWNhdGlvbiBtZXNzYWdlCiAgICAgICAgJG1zZyA9IG5ldyBub3RpZmljYXRpb25fbWVzc2FnZTsKICAgICAgICAkbXNnLT50b19ncm91cCA9IGNnZV91c2Vyb3BzOjpnZXRfZ3JvdXBpZCgkZ25hbWUpICogLTE7CiAgICAgICAgJG1zZy0+c3ViamVjdCA9ICRwcm9jLT5nZXRfZW1haWxfc3ViamVjdCgkZW1sKTsKICAgICAgICAkbXNnLT5ib2R5ID0gJHByb2MtPmdldF9lbWFpbF9ib2R5KCRlbWwpOwogICAgICAgICRtc2ctPmh0bWwgPSB0cnVlOwogICAgICAgICR0aGlzLT5ub3RpZmllci0+c2VuZF9tZXNzYWdlKCRtc2cpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9wdXNoZWQoaW50ICRmZXVfdWlkLCBSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgIGlmKCAhKCRnbmFtZSA9ICR0aGlzLT5zZXR0aW5ncy0+b25wdXNoX25vdGlmeV9hZG1pbmdyb3VwKSApIHJldHVybjsKICAgICAgICBpZiggJGZldV91aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignaW52YWxpZCBmZXVfdWlkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKCWRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnYWRtaW5fbm90aWZ5X3VzZXJwdXNoZWQuZW1sJyk7CiAgICAgICAgaWYoICEkZW1sICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgdGhlIGFkbWluX25vdGlmeV91c2VycHVzaGVkLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICRlbWwgPSAkZW1sLT5hZGRfZGF0YSgndXNlcicsICR1c2VyKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmaWVsZHMnLCAkZmllbGRzKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmZXVfdWlkJywgJGZldV91aWQpCiAgICAgICAgICAgIC0+YWRkX2FkbWluX2dyb3VwKCRnbmFtZSk7CiAgICAgICAgJHByb2MgPSAkdGhpcy0+bW9kLT5jcmVhdGVfbmV3X21haWxwcm9jZXNzb3IoJGVtbCk7CgogICAgICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCBhIG5vdGlmaWNhdGlvbiBtZXNzYWdlCiAgICAgICAgJG1zZyA9IG5ldyBub3RpZmljYXRpb25fbWVzc2FnZTsKICAgICAgICAkbXNnLT50b19ncm91cCA9IGNnZV91c2Vyb3BzOjpnZXRfZ3JvdXBpZCgkZ25hbWUpICogLTE7CiAgICAgICAgJG1zZy0+c3ViamVjdCA9ICRwcm9jLT5nZXRfZW1haWxfc3ViamVjdCgpOwogICAgICAgICRtc2ctPmJvZHkgPSAkcHJvYy0+Z2V0X2VtYWlsX2JvZHkoKTsKICAgICAgICAkbXNnLT5odG1sID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+bm90aWZpZXItPnNlbmRfbWVzc2FnZSgkbXNnKTsKICAgIH0KfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.AuditRegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBSZWdpc3RyYXRpb25NYW5hZ2VyIGV4dGVuZHMgUmVnaXN0cmF0aW9uTWFuYWdlckRlY29yYXRvcgp7Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.BlacklistRegistrationVerifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwoKY2xhc3MgQmxhY2tsaXN0UmVnaXN0cmF0aW9uVmVyaWZpZXIKICAgIGV4dGVuZHMgQWJzdHJhY3RWZXJpZmllckRlY29yYXRvcgogICAgaW1wbGVtZW50cyBSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZQp7CiAgICBwcml2YXRlICRzZXR0aW5nczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUmVnaXN0cmF0aW9uVmVyaWZpZXJJbnRlcmZhY2UgJHBhcmVudCwgU2V0dGluZ3MgJHNldHRpbmdzKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHBhcmVudCk7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYXRjaF91c2VybmFtZV9mcm9tX3N0cmluZyhzdHJpbmcgJGxpc3QsIHN0cmluZyAkdXNlcm5hbWUpIDogYm9vbAogICAgewogICAgICAgICRsaXN0ID0gcHJlZ19zcGxpdCgiLygoXHIoPyFcbikpfCgoPzwhXHIpXG4pfChcclxuKSkvIiwgJGxpc3QpOwogICAgICAgIGlmIChjb3VudCgkbGlzdCkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJG9uZV9saW5lKSB7CiAgICAgICAgICAgICAgICAkcmVnZXggPSAnL14nIC4gc3RyX3JlcGxhY2UoIkAiLCAiXEAiLCBzdHJfcmVwbGFjZSgiXCoiLCAiLioiLCBwcmVnX3F1b3RlKCRvbmVfbGluZSkpKSAuICckLyc7CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgkcmVnZXgsICR1c2VybmFtZSkgPiAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfcHVyZV9yZWdpc3RyYXRpb24oUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikKICAgIHsKICAgICAgICAvLyBiZWNhdXNlIHRoZSBpbnRlcmZhY2Ugc2F5cyB3ZSBoYXZlIHRvIGhhdmUgdGhpcyBtZXRob2QKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmVudC0+dmFsaWRhdGVfcHVyZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZV9yZWdpc3RyYXRpb24oUmVnRmllbGRTZXQgJGZpZWxkcywgVXNlciAkdXNlcikKICAgIHsKICAgICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGJsYWNrbGlzdCBzdHVmZgogICAgICAgICRtYXRjaGVzX2JsYWNrbGlzdCA9ICRtYXRjaGVzX3doaXRlbGlzdCA9IG51bGw7CiAgICAgICAgaWYoICR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfYmxhY2tsaXN0ICkgewogICAgICAgICAgICAkbWF0Y2hlc19ibGFja2xpc3QgPSAkdGhpcy0+bWF0Y2hfdXNlcm5hbWVfZnJvbV9zdHJpbmcoJHRoaXMtPnNldHRpbmdzLT51c2VybmFtZV9ibGFja2xpc3QsICR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgfQogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnVzZXJuYW1lX3doaXRlbGlzdCApIHsKICAgICAgICAgICAgJG1hdGNoZXNfd2hpdGVsaXN0ID0gJHRoaXMtPm1hdGNoX3VzZXJuYW1lX2Zyb21fc3RyaW5nKCR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfd2hpdGVsaXN0LCAkdXNlci0+dXNlcm5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfYmxhY2tsaXN0ICkgewogICAgICAgICAgICBpZiggISRtYXRjaGVzX2JsYWNrbGlzdCAmJiAhJG1hdGNoZXNfd2hpdGVsaXN0ICkgewogICAgICAgICAgICAgICAgLy8gZmFpbGVkIHZhbGlkIGJsYWNrbGlzdCwgbm90IGV4Y2x1ZGVkIGluIHdoaXRlbGlzdC4KICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX3VzZXJuYW1lX2Nhbm5vdHJlZ2lzdGVyJykpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR0aGlzLT5zZXR0aW5ncy0+dXNlcm5hbWVfd2hpdGVsaXN0ICYmICEkbWF0Y2hlc193aGl0ZWxpc3QgKSB7CiAgICAgICAgICAgIC8vIG5vIGJsYWNrbGlzdCwgaGF2ZSB3aGl0ZWxpc3QgYW5kIGRvZXMgbm90IG1hdGNoIHdoaXRlbGlzdC4KICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcigkdGhpcy0+bW9kLT5MYW5nKCdlcnJfdXNlcm5hbWVfY2Fubm90cmVnaXN0ZXInKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmVudC0+dmFsaWRhdGVfcmVnaXN0cmF0aW9uKCRmaWVsZHMsICR1c2VyKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ClearExpiredUsersTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgY21zX3V0aWxzOwoKaW5jbHVkZV9vbmNlKF9fRElSX18uJy9pbnRlcmZhY2UuVGFza0ludGVyZmFjZS5waHAnICk7IC8vIGdyb3NzLgpjbGFzcyBDbGVhckV4cGlyZWRVc2Vyc1Rhc2sgaW1wbGVtZW50cyBEYWlseVRhc2sKewogICAgY29uc3QgTEFTVFJVTl9QUkVGID0gJ0NsZWFyRXhwaXJlZFVzZXJzVGFza19sYXN0cnVuJzsKCiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRyZWdtZ3I7CiAgICBwcml2YXRlICRzZXR0aW5nczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ0dGRVVSZWdpc3RlciAkbW9kLCBSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yICRyZWdtZ3IsIFNldHRpbmdzICRzZXR0aW5ncykKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+cmVnbWdyID0gJHJlZ21ncjsKICAgICAgICAkdGhpcy0+c2V0dGluZ3MgPSAkc2V0dGluZ3M7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRhaWx5KCkKICAgIHsKICAgICAgICBpZiggKCR1c2VyX2V4cGlyZV9ob3VycyA9ICR0aGlzLT5zZXR0aW5ncy0+dXNlcl9leHBpcmVfaG91cnMpIDwgMSApIHJldHVybjsKICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgICRsYXN0cnVuID0gKGludCkgJHRoaXMtPm1vZC0+R2V0UHJlZmVyZW5jZShzZWxmOjpMQVNUUlVOX1BSRUYpOwogICAgICAgICR0aGlzLT5tb2QtPlNldFByZWZlcmVuY2Uoc2VsZjo6TEFTVFJVTl9QUkVGLCAkbm93KTsKCiAgICAgICAgJGZpbHRlciA9ICR0aGlzLT5yZWdtZ3ItPmNyZWF0ZV91c2VyX2ZpbHRlciggWydleHBpcmVkJz0+dHJ1ZSBdICk7CiAgICAgICAgJHVzZXJzID0gJHRoaXMtPnJlZ21nci0+bG9hZF91c2Vyc19ieV9maWx0ZXIoJGZpbHRlcik7CiAgICAgICAgZm9yZWFjaCggJHVzZXJzIGFzICR1c2VyICkgewogICAgICAgICAgICAkdGhpcy0+cmVnbWdyLT5kZWxldGVfdXNlcl9mdWxsKCR1c2VyKTsKICAgICAgICAgICAgYXVkaXQoJHVzZXItPmlkLCR0aGlzLT5tb2QtPkdldE5hbWUoKSwnRGVsZXRlZCBleHBpcmVkIHVzZXIgJy4kdXNlci0+dXNlcm5hbWUpOwogICAgICAgIH0KICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.EmailAdminNotifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwoKY2xhc3MgRW1haWxBZG1pbk5vdGlmaWVyIGltcGxlbWVudHMgQWRtaW5Ob3RpZmllcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRzZXR0aW5nczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ0dGRVVSZWdpc3RlciAkbW9kLCBTZXR0aW5ncyAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9yZWdpc3RlcmVkKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgaWYoICEoJGduYW1lID0gJHRoaXMtPnNldHRpbmdzLT5vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwKSApIHJldHVybjsKCglkZWJ1Z190b19sb2coX19NRVRIT0RfXyk7CiAgICAgICAgJGVtbCA9ICR0aGlzLT5tb2QtPmdldF9lbWFpbF9zdG9yYWdlKCktPmxvYWQoJ2FkbWluX25vdGlmeV91c2VycmVnaXN0ZXJlZC5lbWwnKTsKICAgICAgICBpZiggISRlbWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCB0aGUgYWRtaW5fbm90aWZ5X3VzZXJyZWdpc3RlcmVkLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICRlbWwgPSAkZW1sLT5hZGRfZGF0YSgndXNlcicsICR1c2VyKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmaWVsZHMnLCAkZmllbGRzKQogICAgICAgICAgICAtPmFkZF9hZG1pbl9ncm91cCgkZ25hbWUpOwogICAgICAgICR0aGlzLT5tb2QtPmNyZWF0ZV9uZXdfbWFpbHByb2Nlc3NvcigkZW1sKS0+c2VuZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9wdXNoZWQoaW50ICRmZXVfdWlkLCBSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgIGlmKCAhKCRnbmFtZSA9ICR0aGlzLT5zZXR0aW5ncy0+b25wdXNoX25vdGlmeV9hZG1pbmdyb3VwKSApIHJldHVybjsKICAgICAgICBpZiggJGZldV91aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignaW52YWxpZCBmZXVfdWlkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKCWRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnYWRtaW5fbm90aWZ5X3VzZXJwdXNoZWQuZW1sJyk7CiAgICAgICAgaWYoICEkZW1sICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgdGhlIGFkbWluX25vdGlmeV91c2VycHVzaGVkLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICRlbWwgPSAkZW1sLT5hZGRfZGF0YSgndXNlcicsICR1c2VyKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmaWVsZHMnLCAkZmllbGRzKQogICAgICAgICAgICAtPmFkZF9kYXRhKCdmZXVfdWlkJywgJGZldV91aWQpCiAgICAgICAgICAgIC0+YWRkX2FkbWluX2dyb3VwKCRnbmFtZSk7CiAgICAgICAgJHRoaXMtPm1vZC0+Y3JlYXRlX25ld19tYWlscHJvY2Vzc29yKCRlbWwpLT5zZW5kKCk7CiAgICB9Cn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.EmailRegistrationProcessor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgRnJvbnRFbmRVc2VyczsKCmNsYXNzIEVtYWlsUmVnaXN0cmF0aW9uUHJvY2Vzc29yIGltcGxlbWVudHMgUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJHNldHRpbmdzOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDR0ZFVVJlZ2lzdGVyICRtb2QsIFNldHRpbmdzICRzZXR0aW5ncykKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+c2V0dGluZ3MgPSAkc2V0dGluZ3M7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9lbWFpbChSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKQogICAgewogICAgICAgIC8vIGdldCBhbiBlbWFpbCBhZGRyZXNzCiAgICAgICAgJGVtYWlsID0gbnVsbDsKICAgICAgICBpZiggJHRoaXMtPnNldHRpbmdzLT51c2VybmFtZV9pc19lbWFpbCApIHsKICAgICAgICAgICAgcmV0dXJuICR1c2VyLT5nZXQoJHVzZXI6OlVTRVJOQU1FX0ZJRUxEKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3JlYWNoKCAkc2V0IGFzICRmaWVsZCApIHsKICAgICAgICAgICAgICAgIGlmKCAkZmllbGQtPnR5cGUgPT0gRnJvbnRlbmRVc2Vyczo6UFJPUFRZUEVfRU1BSUwgKSB7CiAgICAgICAgICAgICAgICAgICAgJHByb3BuYW1lID0gJGZpZWxkLT5uYW1lOwogICAgICAgICAgICAgICAgICAgICRlbWFpbCA9ICR1c2VyLT5nZXQoJHByb3BuYW1lKTsKICAgICAgICAgICAgICAgICAgICBpZiggJGVtYWlsICkgcmV0dXJuICRlbWFpbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZShSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyLCBWZXJpZmljYXRpb25EYXRhICRkYXRhKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRlbWFpbCA9ICR0aGlzLT5nZXRfZW1haWwoJHNldCwgJHVzZXIpOwogICAgICAgICAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIGEgdmFsaWQgZW1haWwgYWRkcmVzcyB0byBzZW5kIHRvJyk7CgogICAgICAgICAgICAkZW1sID0gJHRoaXMtPm1vZC0+Z2V0X2VtYWlsX3N0b3JhZ2UoKS0+bG9hZCgnb25fcmVnaXN0ZXIuZW1sJyk7CiAgICAgICAgICAgIGlmKCAhJGVtbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHRoZSBvbl9yZWdpc3Rlci5lbWwgZW1haWwgdGVtcGxhdGUnKTsKICAgICAgICAgICAgJGVtbCA9ICRlbWwtPmFkZF9hZGRyZXNzKCRlbWFpbCkKICAgICAgICAgICAgICAgIC0+YWRkX2RhdGEoJ2ZpZWxkcycsICRzZXQpCiAgICAgICAgICAgICAgICAtPmFkZF9kYXRhKCd1c2VyJywgJHVzZXIpCiAgICAgICAgICAgICAgICAtPmFkZF9kYXRhKCdkYXRhJywgJGRhdGEpOwogICAgICAgICAgICAkdGhpcy0+bW9kLT5jcmVhdGVfbmV3X21haWxwcm9jZXNzb3IoICRlbWwgKS0+c2VuZCgpOwogICAgICAgICAgICBhdWRpdCgkdXNlci0+aWQsJHRoaXMtPm1vZC0+R2V0TmFtZSgpLCdTZW50IHJlZ2lzdHJhdGlvbiBlbWFpbCB0byAnLiR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9maW5hbF9tZXNzYWdlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJGVtYWlsID0gJHRoaXMtPmdldF9lbWFpbCgkc2V0LCAkdXNlcik7CiAgICAgICAgaWYoICEkZW1haWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgdG8gc2VuZCB0bycpOwoKICAgICAgICAkdHBsID0gJHRoaXMtPm1vZC0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ3Bvc3RfcmVnaXN0ZXJfbWVzc2FnZS50cGwnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2VtYWlsJywkZW1haWwpOwogICAgICAgICR0cGwtPmFzc2lnbigndXNlcicsJHVzZXIpOwogICAgICAgIHJldHVybiAkdHBsLT5mZXRjaCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlX3JlcGVhdGNvZGUoUmVnRmllbGRTZXQgJHNldCwgVXNlciAkdXNlciwgVmVyaWZpY2F0aW9uRGF0YSAkZGF0YSkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZW1haWwgPSAkdGhpcy0+Z2V0X2VtYWlsKCRzZXQsICR1c2VyKTsKICAgICAgICAgICAgaWYoICEkZW1haWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgdG8gc2VuZCB0bycpOwoKICAgICAgICAgICAgJHN0b3JhZ2UgPSAkdGhpcy0+bW9kLT5nZXRfZW1haWxfc3RvcmFnZSgpOwogICAgICAgICAgICAkZW1sID0gJHN0b3JhZ2UtPmxvYWQoJ29uX3JlcGVhdGNvZGUuZW1sJyk7CiAgICAgICAgICAgIGlmKCAhJGVtbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHRoZSBvbl9yZXBlYXRjb2RlLmVtbCBlbWFpbCB0ZW1wbGF0ZScpOwogICAgICAgICAgICAkZW1sID0gJGVtbC0+YWRkX2FkZHJlc3MoJGVtYWlsKQogICAgICAgICAgICAgICAgLT5hZGRfZGF0YSgnZmllbGRzJywgJHNldCkKICAgICAgICAgICAgICAgIC0+YWRkX2RhdGEoJ3VzZXInLCAkdXNlcikKICAgICAgICAgICAgICAgIC0+YWRkX2RhdGEoJ2RhdGEnLCAkZGF0YSk7CiAgICAgICAgICAgICR0aGlzLT5tb2QtPmNyZWF0ZV9uZXdfbWFpbHByb2Nlc3NvciggJGVtbCApLT5zZW5kKCk7CiAgICAgICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwkdGhpcy0+bW9kLT5HZXROYW1lKCksJ1NlbnQgcmVwZWF0Y29kZSBlbWFpbCB0byAnLiR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9yZXBlYXRjb2RlX2ZpbmFsbWVzc2FnZShSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kLT5MYW5nKCdwb3N0X3JlcGVhdGNvZGVfbWVzc2FnZScpOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.Filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGlzIGZpbGUgZGVzY3JpYmVzIGFuIGFic3RyYWN0IGZpbHRlciBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dGRVVSZWdpc3RlcgogKiBAY2F0ZWdvcnkgUXVlcnkvRmlsdGVyCiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTkgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgovKioKICogQSBjbGFzcyB0aGF0IGRlc2NyaWJlcyBhIGZpbHRlci4KICoKICogQHByb3AgaW50ICRsaW1pdCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuICBNaW5pbXVtIG9mIDEuCiAqIEBwcm9wIGludCAkb2Zmc2V0IFRoZSBzdGFydCBwb3NpdGlvbiAoc3RhcnRpbmcgYXQgMCkgb2YgaXRlbXMgdG8gcmV0dXJuLgogKi8KYWJzdHJhY3QgY2xhc3MgRmlsdGVyCnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfZGF0YSA9IFsgJ2xpbWl0Jz0+MTAwMCwgJ29mZnNldCc9PiAwIF07CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RvcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkaW4gQW4gYXJyYXkgb2YgaW5wdXQgcHJvcGVydGllcy4gIFRoZSBhYnN0cmFjdCBjbGFzcyB1bmRlcnN0YW5kcyB0aGUgbGltaXQsIGFuZCBvZmZzZXQgcHJvb3BlcnR5LiBib3RoIGludGVnZXJzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRpbiA9IG51bGwgKQogICAgewogICAgICAgIGlmKCAhaXNfbnVsbCgkaW4pICkgewogICAgICAgICAgICBmb3JlYWNoKCAkaW4gYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgICAgY2FzZSAnbGltaXQnOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IG1heCgxLChpbnQpJHZhbCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdvZmZzZXQnOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IG1heCgwLChpbnQpJHZhbCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggc3RyaW5nICRrZXkgKQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdsaW1pdCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ29mZnNldCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCggc3RyaW5nICRrZXksICR2YWwgKQogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgc2V0dGFibGUgcHJvcGVydHkgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgbWV0aG9kIHRvIGFkanVzdCB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhZGp1c3Qoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2xpbWl0JzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gbWF4KDEsbWluKDEwMDAwMCwoaW50KSR2YWwpKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnb2Zmc2V0JzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gbWF4KDAsKGludCkkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYW4gYWRqdXN0YWJsZSBwcm9wZXJ0eSBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgICAgIH0KICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.HookRegistrationHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKCmNsYXNzIEhvb2tSZWdpc3RyYXRpb25IYW5kbGVyIGV4dGVuZHMgU2ltcGxlUmVnaXN0cmF0aW9uSGFuZGxlcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJfdXNlcihVc2VyICR1c2VyKSA6IFVzZXIKICAgIHsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6QmVmb3JlUmVnaXN0ZXInLCBbJ3VzZXInPT4kdXNlcl0pOwogICAgICAgICR1c2VyID0gcGFyZW50OjpyZWdpc3Rlcl91c2VyKCR1c2VyKTsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6QWZ0ZXJSZWdpc3RlcicsIFsndXNlcic9PiR1c2VyXSk7CiAgICAgICAgcmV0dXJuICR1c2VyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwdXNoX3VzZXJfbGl2ZShpbnQgJHVzZXJfaWQsIHN0cmluZyAkY29kZV9zdHIpIDogaW50CiAgICB7CiAgICAgICAgJHVzZXIgPSAkdGhpcy0+cmVnaXN0cmF0aW9uX21hbmFnZXIoKS0+bG9hZF91c2VyX2J5X2lkKCR1c2VyX2lkKTsKICAgICAgICAkZmllbGRzID0gJHRoaXMtPnJlZ2lzdHJhdGlvbl9tYW5hZ2VyKCktPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCR1c2VyLT5naWQpOwogICAgICAgICRmZXVfdWlkID0gcGFyZW50OjpwdXNoX3VzZXJfbGl2ZSgkdXNlcl9pZCwgJGNvZGVfc3RyKTsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6QWZ0ZXJVc2VyUHVzaGVkJywgWyd1c2VyJz0+JHVzZXIsICdmaWVsZHMnPT4kZmllbGRzLCAnZmV1X3VpZCc9PiRmZXVfdWlkXSk7CiAgICAgICAgcmV0dXJuICRmZXVfdWlkOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.HourlyHookTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgQ21zUmVndWxhclRhc2s7CnVzZSBjbXNfdXRpbHM7CnVzZSBjbXNfc2l0ZXByZWZzOwp1c2UgQ01TTVNcSG9va01hbmFnZXI7CgpjbGFzcyBIb3VybHlIb29rVGFzayBpbXBsZW1lbnRzIENtc1JlZ3VsYXJUYXNrCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbmFtZSgpIHsgcmV0dXJuIGdldF9jbGFzcygpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Rlc2NyaXB0aW9uKCkge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgICAgICAkbGFzdHJ1biA9IChpbnQpIGNtc19zaXRlcHJlZnM6OmdldChfX0NMQVNTX18pOwogICAgICAgIGlmKCAkdGltZSAtICRsYXN0cnVuID4gMzYwMCApIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgICAgICBIb29rTWFuYWdlcjo6ZG9faG9vaygnQ0dGRVVSZWdpc3Rlcjo6X19JbnRlcm5hbEhvdXJseVRhc2snLCAkdGltZSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG9uX3N1Y2Nlc3MoJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICAgICAgY21zX3NpdGVwcmVmczo6c2V0KF9fQ0xBU1NfXywkdGltZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICB9Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.MemoryCacheRegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xIb29rTWFuYWdlcjsKCi8qKgogKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGZvciBwZXItcmVxdWVzdCBjYWNoaW5nIG9mIGNvbW1vbiBpbmZvcm1hdGlvbiBpbiB0aGUgUmVnaXN0cmF0aW9uIE1hbmFnZXIKICoKICovCmNsYXNzIE1lbW9yeUNhY2hlUmVnaXN0cmF0aW9uTWFuYWdlciBleHRlbmRzIFJlZ2lzdHJhdGlvbk1hbmFnZXIKewogICAgcHJpdmF0ZSAkY2FjaGUgPSBbXTsKICAgIHByaXZhdGUgJGZpZWxkX2NhY2hlID0gW107CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVfdXNlcihVc2VyICR1c2VyKSA6IFVzZXIKICAgIHsKICAgICAgICAkdGhpcy0+Y2FjaGUgPSBbXTsKICAgICAgICByZXR1cm4gcGFyZW50OjpzYXZlX3VzZXIoJHVzZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVfdXNlcl9mdWxsKCBVc2VyICR1c2VyICkKICAgIHsKICAgICAgICAkdGhpcy0+Y2FjaGUgPSBbXTsKICAgICAgICByZXR1cm4gcGFyZW50OjpkZWxldGVfdXNlcl9mdWxsKCR1c2VyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF91c2VyX2J5X2lkKGludCAkaWQpCiAgICB7CiAgICAgICAgaWYoICRpZCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiaW52YWxpZCBpZCBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPmNhY2hlWyRpZF0pICkgcmV0dXJuICR0aGlzLT5jYWNoZVskaWRdOwogICAgICAgICRyZXMgPSBwYXJlbnQ6OmxvYWRfdXNlcl9ieV9pZCgkaWQpOwogICAgICAgIGlmKCAkcmVzICkgJHRoaXMtPmNhY2hlWyRpZF0gPSAkcmVzOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmVnaXN0cmF0aW9uX2ZpZWxkcyhpbnQgJGdpZCkgOiBSZWdGaWVsZFNldAogICAgewogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJpbnZhbGlkIGdpZCBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPmZpZWxkX2NhY2hlWyRnaWRdKSApIHJldHVybiAkdGhpcy0+ZmllbGRfY2FjaGVbJGdpZF07CiAgICAgICAgJHJlcyA9IHBhcmVudDo6Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJGdpZCk7CiAgICAgICAgaWYoICRyZXMgKSAkdGhpcy0+ZmllbGRfY2FjaGVbJGdpZF0gPSAkcmVzOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.NormalRegistrationVerifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgRnJvbnRFbmRVc2VyczsKdXNlIENNU01TXERhdGFiYXNlXENvbm5lY3Rpb24gYXMgRGF0YWJhc2U7CgoKY2xhc3MgTm9ybWFsUmVnaXN0cmF0aW9uVmVyaWZpZXIgZXh0ZW5kcyBBYnN0cmFjdFZlcmlmaWVyRGVjb3JhdG9yCiAgICBpbXBsZW1lbnRzIFJlZ2lzdHJhdGlvblZlcmlmaWVySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJGZldTsKICAgIHByaXZhdGUgJGRiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDR0ZFVVJlZ2lzdGVyICRtb2QsIEZyb250RW5kVXNlcnMgJGZldSwgRGF0YWJhc2UgJGRiKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5mZXUgPSAkZmV1OwogICAgICAgICR0aGlzLT5kYiA9ICRkYjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNfdXNlcm5hbWVVc2VkKHN0cmluZyAkdXNlcm5hbWUsIGludCAkdWlkID0gbnVsbCkgOiBib29sCiAgICB7CiAgICAgICAgLy8gY2hlY2sgb3VyIGV4aXN0aW5nIGRhdGFiYXNlCiAgICAgICAgaWYoICEkdXNlcm5hbWUgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB1c2VybmFtZSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICAkc3FsID0gJ1NFTEVDVCBpZCBGUk9NICcuJHRoaXMtPm1vZC0+dXNlcnNfdGFibGVfbmFtZSgpLicgV0hFUkUgdXNlcm5hbWUgPSA/JzsKICAgICAgICAkcGFybXMgPSBbICR1c2VybmFtZSBdOwogICAgICAgIGlmICgkdWlkID4gIDApIHsKICAgICAgICAgICAgJHNxbCAuPSAnIEFORCBpZCAhPSA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkdWlkOwogICAgICAgIH0KICAgICAgICAkcmVzID0gJHRoaXMtPmRiLT5HZXRPbmUoJHNxbCwgJHBhcm1zKTsKICAgICAgICBpZiggJHJlcyApIHJldHVybiB0cnVlOwoKICAgICAgICAkdWlkID0gJHRoaXMtPmZldS0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICR1aWQgPiAwICkgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZV9wdXJlX3JlZ2lzdHJhdGlvbihSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgICR1c2VybmFtZSA9ICR1c2VyLT5nZXQoJHVzZXI6OlVTRVJOQU1FX0ZJRUxEKTsKICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX21pc3NpbmdfdXNlcm5hbWUnKSk7CgogICAgICAgIGlmKCAhJHRoaXMtPmZldS0+SXNWYWxpZFVzZXJuYW1lKCR1c2VybmFtZSkgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9pbnZhbGlkX3VzZXJuYW1lJykpOwogICAgICAgIGlmKCAkdGhpcy0+aXNfdXNlcm5hbWVVc2VkKCR1c2VybmFtZSwgJHVzZXItPmlkKSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX3VzZXJuYW1lX2V4aXN0cycpKTsKCiAgICAgICAgLy8gdmFsaWRhdGUgdGhhdCByZXF1aXJlZCBwcm9wZXJ0aWVzIGFyZSBzZXQKICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHByb3BlcnR5IHZhbHVlcyBhcmUgdmFsaWQKICAgICAgICAvLyB2YWxpZGF0ZSBhbnkgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgdW5pcXVlCiAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgICRuYW1lID0gJGZpZWxkLT5uYW1lOwogICAgICAgICAgICAkdmFsID0gJHVzZXItPmdldCgkbmFtZSk7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPnJlcXVpcmVkID09IC0xMDAgKSBjb250aW51ZTsgLy8gbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IGludGVybmFsIGRhdGEgdmFsdWVzLCBpbmRlcGVuZGVudCBvZiB0eXBlLgogICAgICAgICAgICBpZiggJGZpZWxkLT5yZXF1aXJlZCA9PSAyICYmICEkdmFsICkgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcigkdGhpcy0+bW9kLT5MYW5nKCdlcnJfcmVxdWlyZWRfZmllbGQnLCAkZmllbGQtPnByb21wdCkpOwoKICAgICAgICAgICAgc3dpdGNoKCAkZmllbGQtPnR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgMjogLy8gZW1haWwKICAgICAgICAgICAgICAgIGlmKCAkdmFsICYmICFpc19lbWFpbCgkdmFsKSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX2ludmFsaWRfZmllbGQnLCAkZmllbGQtPnByb21wdCkpOwogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dW5pcXVlICYmICEkdGhpcy0+ZmV1LT5Jc1VzZXJQcm9wZXJ0eVZhbHVlVW5pcXVlKG51bGwsJG5hbWUsJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcigkdGhpcy0+bW9kLT5MYW5nKCdlcnJfbm9udW5pcXVlX2ZpZWxkJywgJGZpZWxkLT5wcm9tcHQsICRmaWVsZC0+dmFsdWUpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgICAgICAgIGNhc2UgNzogLy8gcmFkaW9idG5zCiAgICAgICAgICAgICAgICBpZiggJHZhbCAmJiAhYXJyYXlfa2V5X2V4aXN0cygkdmFsLCRmaWVsZC0+b3B0aW9ucykgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9pbnZhbGlkX2ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGQtPnByb21wdCkpOwogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dW5pcXVlICYmICEkdGhpcy0+ZmV1LT5Jc1VzZXJQcm9wZXJ0eVZhbHVlVW5pcXVlKG51bGwsICRuYW1lLCR2YWwpICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX25vbnVuaXF1ZV9maWVsZCcsICRmaWVsZC0+cHJvbXB0LCAkZmllbGQtPnZhbHVlKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAgICAgICAgICAgJGRpZmYgPSBhcnJheV9kaWZmKCR2YWwsJGZpZWxkLT5vcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBpZiggIWVtcHR5KCRkaWZmKSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX2ludmFsaWRfZmllbGQnLCAkZmllbGQtPnByb21wdCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3JlZ2lzdHJhdGlvbihSZWdGaWVsZFNldCAkZmllbGRzLCBVc2VyICR1c2VyKQogICAgewogICAgICAgICRwYXNzd29yZCA9ICR1c2VyLT5nZXQoJHVzZXI6OlBBU1NXT1JEX0ZJRUxEKTsKICAgICAgICAkcmVwZWF0ICAgPSAkdXNlci0+Z2V0KCR1c2VyOjpSRVBFQVRfRklFTEQpOwoKICAgICAgICBpZiggISRwYXNzd29yZCApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+bGFuZygnZXJyX3Bhc3N3b3JkX3JlcXVpcmVkJykpOwogICAgICAgIGlmKCAkcmVwZWF0ICE9ICRwYXNzd29yZCApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJHRoaXMtPm1vZC0+TGFuZygnZXJyX3Bhc3N3b3JkX21pc21hdGNoJykpOwogICAgICAgIGlmKCAhJHRoaXMtPmZldS0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCkgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCR0aGlzLT5tb2QtPkxhbmcoJ2Vycl9pbnZhbGlkX3Bhc3N3b3JkaCcpKTsKCiAgICAgICAgJHRoaXMtPnZhbGlkYXRlX3B1cmVfcmVnaXN0cmF0aW9uKCRmaWVsZHMsICR1c2VyKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegField.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBjZ2VfYXJyYXk7CgpjbGFzcyBSZWdGaWVsZAp7CiAgICBwcml2YXRlICRfZGF0YSA9IFsKICAgICAgICAnbmFtZSc9Pm51bGwsICdwcm9tcHQnPT5udWxsLCAndHlwZSc9Pm51bGwsICdyZXF1aXJlZCc9PjIsICdvcHRpb25zJz0+bnVsbCwgJ3VuaXF1ZSc9PmZhbHNlLCAnZXh0cmEnPT5udWxsCiAgICAgICAgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgIGNhc2UgJ3Byb21wdCc6CiAgICAgICAgICAgIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgY2FzZSAndHlwZSc6CiAgICAgICAgY2FzZSAncmVxdWlyZWQnOgogICAgICAgICAgICByZXR1cm4gKGludCkgJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIGNhc2UgJ3VuaXF1ZSc6CiAgICAgICAgICAgIHJldHVybiAoYm9vbCkgJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIGNhc2UgJ29wdGlvbnMnOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIGNhc2UgJ2V4dHJhJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIGdldHRhYmxlIHByb3BlcnR5IG9mICIuX19NRVRIT0RfXyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldChzdHJpbmcgJGtleSwgJHZhbCkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIHNldHRhYmxlIHByb3BlcnR5IG9mICIuX19NRVRIT0RfXyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tX2FycmF5KCBhcnJheSAkaW4gKSA6IFJlZ0ZpZWxkCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBzZWxmOwogICAgICAgIGZvcmVhY2goICRpbiBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgIGNhc2UgJ3Byb21wdCc6CiAgICAgICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndHlwZSc6CiAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoKICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdvcHRpb25zJzoKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSAmJiAhZW1wdHkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgaWYoIGlzc2V0KCR2YWxbMF0pICYmIGlzX2FycmF5KCR2YWxbMF0pICYmIGlzc2V0KCR2YWxbMF1bJ29wdGlvbl9uYW1lJ10pICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHZhbCBhcyAkcmVjICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcFskcmVjWydvcHRpb25fbmFtZSddXSA9ICRyZWNbJ29wdGlvbl90ZXh0J107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9ICR0bXA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdleHRyYSc6CiAgICAgICAgICAgICAgICBpZiggY2dlX2FycmF5Ojppc19oYXNoKCR2YWwpICkgJG9iai0+X2RhdGFbJGtleV0gPSAkdmFsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3VuaXF1ZSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSBjbXNfdG9fYm9vbCgkdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyB2YWxpZGF0ZQogICAgICAgIGlmKCAhJG9iai0+bmFtZSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFdmVyeSBSZWdGaWVsZCBtdXN0IGhhdmUgYSBuYW1lJyk7CiAgICAgICAgaWYoICEkb2JqLT5wcm9tcHQgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRXZlcnkgUmVnRmllbGQgbXVzdCBoYXZlIGEgcHJvbXB0Jyk7CiAgICAgICAgaWYoICRvYmotPnR5cGUgIT0gLTEwMCAmJiAkb2JqLT50eXBlIDwgMCAmJiAkb2JqLT50eXBlID4gOCAmJiAkb2JqLT50eXBlICE9IDYgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGZpZWxkIHR5cGUgJy4kb2JqLT50eXBlKTsKICAgICAgICB9CiAgICAgICAgaWYoICRvYmotPnJlcXVpcmVkICE9IDEgJiYgJG9iai0+cmVxdWlyZWQgIT0gMiApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50KCdJbnZhbGlkIHJlcXVpcmVkIHZhbHVlLiAgbXVzdCBiZSAxIG9yIDInKTsKICAgICAgICBzd2l0Y2goICRvYmotPnR5cGUgKSB7CiAgICAgICAgY2FzZSA0OiAvLyBkcm9wZG93bgogICAgICAgIGNhc2UgNTogLy8gbXVsdGlzZWxlY3QKICAgICAgICBjYXNlIDc6IC8vIHJhZGlvYnRucwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRvYmotPm9wdGlvbnMpIHx8IGNvdW50KCRvYmotPm9wdGlvbnMpIDwgMiApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50KCdkcm9wZG93bi9yYWRpbyBidXR0b24gZmllbGRzIG11c3QgaGF2ZSBhdCBsZWFzdCAyIG9wdGlvbnMnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2JqOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegFieldSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBSZWdGaWVsZFNldCBleHRlbmRzIFNldAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRtYXRjaGVzID0gbnVsbCApCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCRtYXRjaGVzKSAmJiAhZW1wdHkoJG1hdGNoZXMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkbWF0Y2hlcyBhcyAkbWF0Y2ggKSB7CiAgICAgICAgICAgICAgICBpZiggISRtYXRjaCBpbnN0YW5jZW9mIFJlZ0ZpZWxkICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYXRjaGVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzX2ZpZWxkKHN0cmluZyAka2V5KSA6IGJvb2wKICAgIHsKICAgICAgICBmb3JlYWNoKCAkdGhpcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPm5hbWUgPT0gJGtleSApIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9lbWFpbF9maWVsZCgpIDogUmVnRmllbGQKICAgIHsKICAgICAgICBmb3JlYWNoKCAkdGhpcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPnR5cGUgPT0gMiApIHJldHVybiAkZmllbGQ7CiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGZpZWxkIG9mIHR5cGUgZW1haWwnKTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegistrationManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDTVNNU1xEYXRhYmFzZVxDb25uZWN0aW9uIGFzIERhdGFiYXNlOwp1c2UgQ0dGRVVSZWdpc3RlcjsKdXNlIEZyb250RW5kVXNlcnM7CnVzZSBjZ2VfcGFyYW07CnVzZSBjZ2VfZW5jcnlwdDsKdXNlIGNnZV91dGlsczsKCmNsYXNzIFJlZ2lzdHJhdGlvbk1hbmFnZXIgZXh0ZW5kcyBSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yCnsKICAgIGNvbnN0IEVOQ1JZUFRJT05fS0VZID0gJ0VuY3J5cHRpb25LZXknOwoKICAgIHByaXZhdGUgJG1vZDsKICAgIHByaXZhdGUgJGZldTsKICAgIHByaXZhdGUgJGRiOwogICAgcHJpdmF0ZSAkc2V0dGluZ3M7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENHRkVVUmVnaXN0ZXIgJG1vZCwgRnJvbnRFbmRVc2VycyAkZmV1LCBEYXRhYmFzZSAkZGIsIFNldHRpbmdzICRzZXR0aW5ncykKICAgIHsKICAgICAgICAkdGhpcy0+bW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+ZmV1ID0gJGZldTsKICAgICAgICAkdGhpcy0+ZGIgPSAkZGI7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgICAgIC8vIGRvIG5vdCBjYWxsIHBhcmVudAogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfZW5jcnlwdGlvbl9rZXkoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKHNlbGY6OkVOQ1JZUFRJT05fS0VZKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlX25ld191c2VyKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIGFycmF5ICRpbiA9IG51bGwsIGludCAkZ2lkID0gbnVsbCkgOiBVc2VyCiAgICB7CiAgICAgICAgJHRtcCA9IFtdOwogICAgICAgIGZvcmVhY2goICRmaWVsZHMgYXMgJG5hbWUgPT4gJGZpZWxkICkgewogICAgICAgICAgICAkdG1wWyRuYW1lXSA9ICRpblskbmFtZV0gPz8gbnVsbDsKICAgICAgICB9CiAgICAgICAgaWYoICRnaWQgPiAwICkgJHRtcFsnZ2lkJ10gPSAkZ2lkOwogICAgICAgICR1c2VyID0gbmV3IFVzZXIoJHRtcCk7CiAgICAgICAgcmV0dXJuICR1c2VyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlX3VzZXIoVXNlciAkdXNlcikgOiBVc2VyCiAgICB7CiAgICAgICAgJHVzZXJuYW1lID0gJHVzZXItPmdldCgkdXNlcjo6VVNFUk5BTUVfRklFTEQpOwogICAgICAgICR1aWQgPSAkdXNlci0+aWQ7CgogICAgICAgICRkYXRhID0ganNvbl9lbmNvZGUoJHVzZXIpOwogICAgICAgICRlbmNyeXB0ZWQgPSBiYXNlNjRfZW5jb2RlKGNnZV9lbmNyeXB0OjplbmNyeXB0KCR0aGlzLT5nZXRfZW5jcnlwdGlvbl9rZXkoKSwgJGRhdGEpKTsKICAgICAgICAkc2lnID0gc2hhMShfX0ZJTEVfXy4kdGhpcy0+Z2V0X2VuY3J5cHRpb25fa2V5KCkuJGVuY3J5cHRlZCk7CgogICAgICAgIGlmKCAkdWlkIDwgMSApIHsKICAgICAgICAgICAgLy8gaXQgaXMgYW4gaW5zZXJ0CiAgICAgICAgICAgICRub3cgPSB0aW1lKCk7CiAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdGhpcy0+bW9kLT51c2Vyc190YWJsZV9uYW1lKCkuJyAodXNlcm5hbWUsIGNyZWF0ZWQsIHNpZywgZGF0YSkgVkFMVUVTICg/LD8sPyw/KSc7CiAgICAgICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJHVzZXJuYW1lLCAkbm93LCAkc2lnLCAkZW5jcnlwdGVkXSApOwogICAgICAgICAgICAkbmV3X2lkID0gJHRoaXMtPmRiLT5JbnNlcnRfSUQoKTsKICAgICAgICAgICAgLy8gbm90ZSBpZCBhbmQgY3JlYXRlZCBhcmUgbm90IHN0b3JlZCB3aXRoIHRoZSBlbmNyeXB0ZWQgZGF0YS4KICAgICAgICAgICAgJHVzZXIgPSAkdXNlci0+d2l0aCgnaWQnLCRuZXdfaWQpLT53aXRoKCdjcmVhdGVkJywkbm93KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGl0IGlzIGFuIHVwZGF0ZQogICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKS4nIFNFVCB1c2VybmFtZSA9ID8sIHNpZyA9ID8sIGRhdGEgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJHVzZXJuYW1lLCAkc2lnLCAkZW5jcnlwdGVkLCAkdWlkXSApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHVzZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZV91c2VyX2Z1bGwoIFVzZXIgJHVzZXIgKQogICAgewogICAgICAgIGlmKCAkdXNlci0+aWQgPCAxIHx8ICR1c2VyLT5jcmVhdGVkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCBkZWxldGUgYSB0ZW1wIHVzZXIgd2l0aG91dCBhIHZhbGlkIGlkIG9yIGNyZWF0ZSBkYXRlJyk7CgogICAgICAgIC8vIGRlbGV0ZSB0ZW1wIGNvZGVzCiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5tb2QtPmNvZGVzX3RhYmxlX25hbWUoKS4nIFdIRVJFIHVpZCA9ID8nOwogICAgICAgICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLCBbJHVzZXItPmlkXSk7CgogICAgICAgIC8vIGRlbGV0ZSB0aGUgdXNlciByZWNvcmQuCiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKS4nIFdIRVJFIGlkID0gPyc7CiAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRzcWwsIFskdXNlci0+aWRdKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF91c2VyX2J5X2lkKGludCAkaWQpCiAgICB7CiAgICAgICAgaWYoICRpZCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiaW52YWxpZCBpZCBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICAkc3FsID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+bW9kLT51c2Vyc190YWJsZV9uYW1lKCkuJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICRyb3cgPSAkdGhpcy0+ZGItPkdldFJvdygkc3FsLCBbICRpZCBdICk7CiAgICAgICAgaWYoICEkcm93ICkgcmV0dXJuOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmNyZWF0ZV91c2VyX2Zyb21fcm93KCRyb3cpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVfdXNlcl9mcm9tX3JvdyhhcnJheSAkcm93KQogICAgewogICAgICAgIGlmKCAhJHJvd1snZGF0YSddIHx8ICEkcm93WydzaWcnXSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBmb3VuZCBpbiB1c2VycyB0YWJsZSBmb3IgdXNlciAnLiRpZCk7CiAgICAgICAgJGNhbGMgPSBzaGExKF9fRklMRV9fLiR0aGlzLT5nZXRfZW5jcnlwdGlvbl9rZXkoKS4kcm93WydkYXRhJ10pOwogICAgICAgIGlmKCAkY2FsYyAhPSAkcm93WydzaWcnXSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0NvdWxkIG5vdCB2ZXJpZnkgc2lnbmF0dXJlIG9mIGRhdGFiYXNlIGRhdGEgZm9yIHVzZXIgJy4kaWQpOwogICAgICAgICRkZWNyeXB0ZWQgPSBjZ2VfZW5jcnlwdDo6ZGVjcnlwdCgkdGhpcy0+Z2V0X2VuY3J5cHRpb25fa2V5KCksIGJhc2U2NF9kZWNvZGUoJHJvd1snZGF0YSddKSk7CiAgICAgICAgaWYoICEkZGVjcnlwdGVkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGRlY3J5cHQgcmVnaXN0cmF0aW9uIGRhdGEgZm9yIHVzZXIgJy4kaWQpOwogICAgICAgICRkZWNyeXB0ZWQgPSBqc29uX2RlY29kZSgkZGVjcnlwdGVkLFRSVUUpOwogICAgICAgICRkZWNyeXB0ZWRbJ2lkJ10gPSAkcm93WydpZCddOwogICAgICAgICRkZWNyeXB0ZWRbJ2NyZWF0ZWQnXSA9ICRyb3dbJ2NyZWF0ZWQnXTsKICAgICAgICByZXR1cm4gbmV3IFVzZXIoJGRlY3J5cHRlZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRfdXNlcl9ieV91c2VybmFtZShzdHJpbmcgJHVzZXJuYW1lKQogICAgewogICAgICAgICR1c2VybmFtZSA9IHRyaW0oJHVzZXJuYW1lKTsKICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJpbnZhbGlkIHVzZXJuYW1lIHBhc3NlZCB0byAiLl9fTUVUSE9EX18pOwogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKS4nIFdIRVJFIHVzZXJuYW1lID0gPyc7CiAgICAgICAgJHJvdyA9ICR0aGlzLT5kYi0+R2V0Um93KCRzcWwsIFsgJHVzZXJuYW1lIF0pOwogICAgICAgIGlmKCAhJHJvdyApIHJldHVybjsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVfdXNlcl9mcm9tX3Jvdygkcm93KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfdXNlcl9leHBpcmVkKFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgaWYoICEkdXNlci0+aWQgfHwgISR1c2VyLT5jcmVhdGVkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHRlc3QgaWYgYSB1c2VyIGlzIGV4cGlyZWQgd2l0aG91dCBhIHVpZCBvciBjcmVyYXRlZGF0ZScpOwogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnVzZXJfZXhwaXJlX2hvdXJzIDwgMSApIHJldHVybiBmYWxzZTsKICAgICAgICBpZiggJHVzZXItPmNyZWF0ZWQgPj0gdGltZSgpIC0gJHRoaXMtPnNldHRpbmdzLT51c2VyX2V4cGlyZV9ob3VycyAqIDM2MDAgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHB1c2hfdXNlcl9saXZlKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpIDogaW50CiAgICB7CiAgICAgICAgaWYoICEkdXNlci0+aWQgfHwgISR1c2VyLT5jcmVhdGVkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHB1c2ggdXNlciBsaXZlIHdpdGhvdXQgYSB1aWQgb3IgY3JlcmF0ZWRhdGUnKTsKICAgICAgICBpZiggJHRoaXMtPmlzX3VzZXJfZXhwaXJlZCgkdXNlcikgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcHVzaCBleHBpcmVkIHVzZXIgbGl2ZScpOwogICAgICAgIGlmKCAhJHVzZXItPnBhc3N3b3JkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQSB1c2VyIG11c3QgaGF2ZSBhIHBhc3N3b3JkIHRvIHB1c2ggbGl2ZScpOwogICAgICAgIGlmKCAkdXNlci0+Z2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ05vIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0ZW1wIHVzZXInKTsKCiAgICAgICAgJGZtdCA9ICIrJWQgbW9udGhzIjsKICAgICAgICAkZXhwaXJlcyA9IHN0cnRvdGltZShzcHJpbnRmKCcrJWQgbW9udGhzJyxtYXgoMSwkdGhpcy0+c2V0dGluZ3MtPmV4cGlyZWFnZV9tb250aHMpKSk7CiAgICAgICAgaWYoICRleHBpcmVzID09IDAgKSAkZXhwaXJlcyA9IFBIUF9JTlRfTUFYOwoKICAgICAgICAkcHJvcHMgPSBudWxsOwogICAgICAgIGZvcmVhY2goJGZpZWxkcyBhcyAkZmllbGQpIHsKICAgICAgICAgICAgaWYoICRmaWVsZC0+bmFtZSA9PSBVc2VyOjpVU0VSTkFNRV9GSUVMRCApIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggJGZpZWxkLT5uYW1lID09IFVzZXI6OlBBU1NXT1JEX0ZJRUxEICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAkZmllbGQtPm5hbWUgPT0gVXNlcjo6UkVQRUFUX0ZJRUxEICkgY29udGludWU7CiAgICAgICAgICAgICRwcm9wc1skZmllbGQtPm5hbWVdID0gJHVzZXItPmdldCgkZmllbGQtPm5hbWUpOwogICAgICAgIH0KCiAgICAgICAgJGZldV91aWQgPSBudWxsOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+ZmV1LT5BZGRVc2VyKCR1c2VyLT51c2VybmFtZSwgJHVzZXItPnBhc3N3b3JkLCAkZXhwaXJlcywgZmFsc2UsICR1c2VyLT5jcmVhdGVkKTsKICAgICAgICAgICAgaWYoICFpc19hcnJheSgkcmVzKSB8fCAhaXNzZXQoJHJlc1swXSkgfHwgISRyZXNbMF0gKSB7CiAgICAgICAgICAgICAgICAkbXNnID0gJHJlc1sxXSA/PyBudWxsOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignUHJvYmxlbSBjcmVhdGluZyB1c2VyOiAnLiRtc2cpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmZXVfdWlkID0gKGludCkgJHJlc1sxXTsKCiAgICAgICAgICAgIC8vIGFkZCBoaW0gdG8gaGlzIGdyb3VwCiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+ZmV1LT5Bc3NpZ25Vc2VyVG9Hcm91cCgkZmV1X3VpZCwgJHVzZXItPmdpZCk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ1Byb2JsZW0gYXNzaWduaW5nIHVzZXIgdG8gZ3JvdXAnKTsKCiAgICAgICAgICAgIC8vIG5vdyBhZGQgdGhlIHVzZXIgcHJvcGVydGllcwogICAgICAgICAgICAkcmVzID0gJHRoaXMtPmZldS0+U2V0VXNlclByb3BlcnRpZXMoJGZldV91aWQsICRwcm9wcyk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ1Byb2JsZW0gc2V0dGluZyB1c2VyIHByb3BlcnRpZXMnKTsKICAgICAgICAgICAgcmV0dXJuICRmZXVfdWlkOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXExvZ2ljRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBpZiggJGZldV91aWQgPiAwICkgJHRoaXMtPmZldS0+RGVsZXRlVXNlckZ1bGwoJGZldV91aWQpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9ncm91cF9wcm9wZXJ0aWVzKGludCAkZ2lkKSA6IGFycmF5CiAgICB7CiAgICAgICAgaWYoICRnaWQgPCAxICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2ludmFsaWQgZ2lkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICRkZWZucyA9ICR0aGlzLT5mZXUtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICBpZiggIWNvdW50KCRkZWZucykgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdObyBwcm9wZXJ0eSBkZWZpbml0aW9ucyBmb3VuZCcpOwogICAgICAgIGZvcmVhY2goICRkZWZucyBhcyAmJGRlZm4gKSB7CiAgICAgICAgICAgIC8vIHRvZG86IGlmIGl0IGlzIGEgc2VsZWN0IGZpZWxkLCBnZXQgdGhlIG9wdGlvbnMKICAgICAgICAgICAgJGRlZm5bJ29wdGlvbnMnXSA9ICR0aGlzLT5mZXUtPkdldFNlbGVjdE9wdGlvbnMoJGRlZm5bJ25hbWUnXSwyKTsKICAgICAgICB9CiAgICAgICAgJHJlbG5zID0gJHRoaXMtPmZldS0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAgICAgICBpZiggISRyZWxucyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ05vIHByb3BlcnRpZXMgYXNzaWVkIHRvIHRoZSBncm91cCAnLiRnaWQpOwoKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgZm9yZWFjaCggJHJlbG5zIGFzICRyZWxuICkgewogICAgICAgICAgICAkbmFtZSA9ICRyZWxuWyduYW1lJ107CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJGRlZm5zWyRuYW1lXSkgKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoICRkZWZuc1skbmFtZV1bJ3R5cGUnXSA9PSA2IHx8ICRkZWZuc1skbmFtZV1bJ3R5cGUnXSA9PSA5ICkgY29udGludWU7IC8vIGltYWdlCiAgICAgICAgICAgIGlmKCAkcmVsblsncmVxdWlyZWQnXSAhPSAxICYmICRyZWxuWydyZXF1aXJlZCddICE9IDIpIGNvbnRpbnVlOwogICAgICAgICAgICAkb3V0WyRuYW1lXSA9IGFycmF5X21lcmdlKCAkZGVmbnNbJG5hbWVdLCAkcmVsbiApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoaW50ICRnaWQpIDogUmVnRmllbGRTZXQKICAgIHsKICAgICAgICAkdXNlcm5hbWVfdHlwZSA9ICR0aGlzLT5mZXUtPkdldFVzZXJuYW1lRmllbGRUeXBlKCk7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgJGFyciA9IFsKICAgICAgICAgICAgLy8gdXNlcm5hbWUgaXMgYSB0ZXh0IGZpZWxkCiAgICAgICAgICAgICduYW1lJz0+IFVzZXI6OlVTRVJOQU1FX0ZJRUxELAogICAgICAgICAgICAncHJvbXB0Jz0+KCR1c2VybmFtZV90eXBlID09IDIpID8gJHRoaXMtPmZldS0+TGFuZygncHJvbXB0X2VtYWlsJykgOiAkdGhpcy0+ZmV1LT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKSwKICAgICAgICAgICAgJ3R5cGUnPT4kdXNlcm5hbWVfdHlwZSwKICAgICAgICAgICAgJ3JlcXVpcmVkJz0+MiwKICAgICAgICAgICAgJ29wdGlvbnMnPT5udWxsLAogICAgICAgICAgICBdOwogICAgICAgICRvdXRbJ3VzZXJuYW1lJ10gPSBSZWdGaWVsZDo6ZnJvbV9hcnJheSgkYXJyKTsKICAgICAgICAkYXJyID0gWwogICAgICAgICAgICAvLyBwYXNzd29yZAogICAgICAgICAgICAnbmFtZSc9PiBVc2VyOjpQQVNTV09SRF9GSUVMRCwKICAgICAgICAgICAgJ3Byb21wdCc9PiR0aGlzLT5mZXUtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpLCAndHlwZSc9Pi0xMDAsCiAgICAgICAgICAgICdyZXF1aXJlZCc9PjIsCiAgICAgICAgICAgICdvcHRpb25zJz0+bnVsbCwKICAgICAgICAgICAgXTsKICAgICAgICAkb3V0WydwYXNzd29yZCddID0gUmVnRmllbGQ6OmZyb21fYXJyYXkoJGFycik7CiAgICAgICAgJGFyciA9IFsKICAgICAgICAgICAgLy8gcmVwZWF0IHBhc3N3b3JkCiAgICAgICAgICAgICduYW1lJz0+IFVzZXI6OlJFUEVBVF9GSUVMRCwKICAgICAgICAgICAgJ3Byb21wdCc9PiR0aGlzLT5mZXUtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyksICd0eXBlJz0+LTEwMCwKICAgICAgICAgICAgJ3JlcXVpcmVkJz0+MiwKICAgICAgICAgICAgJ29wdGlvbnMnPT5udWxsLAogICAgICAgICAgICBdOwogICAgICAgICRvdXRbJ3JlcGVhdHBhc3N3b3JkJ10gPSBSZWdGaWVsZDo6ZnJvbV9hcnJheSgkYXJyKTsKICAgICAgICAkcHJvcHMgPSAkdGhpcy0+Z2V0X2dyb3VwX3Byb3BlcnRpZXMoJGdpZCk7CiAgICAgICAgZm9yZWFjaCggJHByb3BzIGFzICRuYW1lID0+ICRwcm9wICkgewogICAgICAgICAgICAkb3V0WyRuYW1lXSA9IFJlZ0ZpZWxkOjpmcm9tX2FycmF5KCRwcm9wKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBSZWdGaWVsZFNldCgkb3V0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZmlsbF9mcm9tX2RhdGEoUmVnRmllbGRTZXQgJGZpZWxkc2V0LCBVc2VyICR1c2VyLCBhcnJheSAkZm9ybWRhdGEpIDogVXNlcgogICAgewogICAgICAgIGZvcmVhY2goICRmaWVsZHNldCBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGZpZWxkLT50eXBlICkgewogICAgICAgICAgICBjYXNlIC0xMDA6IC8vIHBhc3N3b3JkCiAgICAgICAgICAgIGNhc2UgMDogICAgLy8gdGV4dAogICAgICAgICAgICBjYXNlIDE6ICAgIC8vIGNoZWNrYm94CiAgICAgICAgICAgIGNhc2UgMjogICAgLy8gZW1haWwKICAgICAgICAgICAgY2FzZSAxMDogICAgLy8gdGVsCiAgICAgICAgICAgICAgICAkdXNlciA9ICR1c2VyLT53aXRoKCRmaWVsZC0+bmFtZSwgY21zX2h0bWxfZW50aXR5X2RlY29kZShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJGZvcm1kYXRhLCAkZmllbGQtPm5hbWUpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOiAgICAvLyB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJHVzZXIgPSAkdXNlci0+d2l0aCgkZmllbGQtPm5hbWUsIGNtc19odG1sX2VudGl0eV9kZWNvZGUoY2dlX3BhcmFtOjpnZXRfaHRtbCgkZm9ybWRhdGEsICRmaWVsZC0+bmFtZSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6ICAgIC8vIGRyb3Bkb3duCiAgICAgICAgICAgIGNhc2UgNzogICAgLy8gcmFkaW9idG5zCiAgICAgICAgICAgICAgICAkdXNlciA9ICR1c2VyLT53aXRoKCRmaWVsZC0+bmFtZSwgY21zX2h0bWxfZW50aXR5X2RlY29kZShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJGZvcm1kYXRhLCAkZmllbGQtPm5hbWUpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OiAgICAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICBjYXNlIDg6ICAgIC8vIGRhdGUKICAgICAgICAgICAgICAgIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkZm9ybWRhdGEsICRmaWVsZC0+bmFtZS4nTW9udGgnKSApIHsKICAgICAgICAgICAgICAgICAgICAkdXNlciA9ICR1c2VyLT53aXRoKCRmaWVsZC0+bmFtZSwgY2dlX3BhcmFtOjpnZXRfc2VwYXJhdGVkX2RhdGUoJGZvcm1kYXRhLCAkZmllbGQtPm5hbWUpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHVzZXIgPSAkdXNlci0+d2l0aCgkZmllbGQtPm5hbWUsIHN0cnRvdGltZShjZ2VfcGFyYW06OmdldF9kYXRlKCRmb3JtZGF0YSwgJGZpZWxkLT5uYW1lKSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR1c2VyOwogICAgfQoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVfcmVnaXN0cmF0aW9uX2NvZGUoVXNlciAkdXNlcikgOiBWZXJpZmljYXRpb25EYXRhCiAgICB7CiAgICAgICAgJGV4cGlyZXMgPSAoJHRoaXMtPnNldHRpbmdzLT52ZXJpZnljb2RlX2V4cGlyZV9ob3VycyA8IDEpID8gMCA6ICR0aGlzLT5zZXR0aW5ncy0+dmVyaWZ5Y29kZV9leHBpcmVfaG91cnMgKiAzNjAwICsgdGltZSgpOwogICAgICAgICRhcnIgPSBbICd1aWQnPT4kdXNlci0+Z2V0KCdpZCcpLCAnZXhwaXJlcyc9PiRleHBpcmVzLCAndmVyaWZ5X2NvZGUnPT5jZ2VfdXRpbHM6OmNyZWF0ZV9ndWlkKCkgXTsKICAgICAgICByZXR1cm4gbmV3IFZlcmlmaWNhdGlvbkRhdGEoJGFycik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRfdmVyaWZpY2F0aW9uX2NvZGUoc3RyaW5nICRjb2RlKQogICAgewogICAgICAgICRjb2RlID0gdHJpbSgkY29kZSk7CiAgICAgICAgaWYoICEkY29kZSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGRhdGEgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CgogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPbSAnLiR0aGlzLT5tb2QtPmNvZGVzX3RhYmxlX25hbWUoKS4nIFdIRVJFIHZlcmlmeV9jb2RlID0gPyc7CiAgICAgICAgJHJvdyA9ICR0aGlzLT5kYi0+R2V0Um93KCRzcWwsIFskY29kZV0pOwogICAgICAgIGlmKCAhJHJvdyApIHJldHVybjsKICAgICAgICByZXR1cm4gbmV3IFZlcmlmaWNhdGlvbkRhdGEoJHJvdyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVfdmVyaWZpY2F0aW9uX2NvZGUoVmVyaWZpY2F0aW9uRGF0YSAkY29kZSkKICAgIHsKICAgICAgICBpZiggJGNvZGUtPnVpZCA8IDEgfHwgJGNvZGUtPmV4cGlyZXMgPCAwIHx8ICEkY29kZS0+dmVyaWZ5X2NvZGUgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHZlcmlmaWNhdGlvbiBjb2RlIGRhdGEgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CiAgICAgICAgfQoKICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHRoaXMtPm1vZC0+Y29kZXNfdGFibGVfbmFtZSgpLicgKHVpZCwgdmVyaWZ5X2NvZGUsIGV4cGlyZXMpIFZBTFVFUyAoPyw/LD8pJzsKICAgICAgICAkdGhpcy0+ZGItPkV4ZWN1dGUoJHNxbCwgWyRjb2RlLT51aWQsICRjb2RlLT52ZXJpZnlfY29kZSwgJGNvZGUtPmV4cGlyZXNdKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlX2V4cGlyZWRfY29kZXMoKQogICAgewogICAgICAgICRzcWwgPSAnREVMRVRFIEZST00gJy4kdGhpcy0+bW9kLT5jb2Rlc190YWJsZV9uYW1lKCkuJyBXSEVSRSBleHBpcmVzIDwgPyc7CiAgICAgICAgJHRoaXMtPmRiLT5FeGVjdXRlKCRzcWwsIFt0aW1lKCkgLSAzMDBdICk7CiAgICB9CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZV91c2VyX2ZpbHRlciggYXJyYXkgJHBhcm1zID0gbnVsbCApIDogVXNlckZpbHRlcgogICAgewogICAgICAgIGlmKCBpc19udWxsKCRwYXJtcykgKSAkcGFybXMgPSBbXTsKICAgICAgICByZXR1cm4gbmV3IFVzZXJGaWx0ZXIoJHBhcm1zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF91c2Vyc19ieV9maWx0ZXIoVXNlckZpbHRlciAkZmlsdGVyKSA6IFVzZXJTZXQKICAgIHsKICAgICAgICAkc3FsID0gJ1NFTEVDVCBTUUxfQ0FMQ19GT1VORF9ST1dTICogRlJPTSAnLiR0aGlzLT5tb2QtPnVzZXJzX3RhYmxlX25hbWUoKTsKICAgICAgICAkd2hlcmUgPSAkcGFybXMgPSBudWxsOwoKICAgICAgICBpZiggJGZpbHRlci0+dXNlcm5hbWVfcGF0dGVybiApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAndXNlcm5hbWUgTElLRSA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkdGhpcy0+d2lsZGNhcmQoJGZpbHRlci0+dXNlcm5hbWVfcGF0dGVybik7CiAgICAgICAgfQogICAgICAgIGlmKCAkZmlsdGVyLT5jcmVhdGVkX2JlZm9yZSA+IDAgKSB7CiAgICAgICAgICAgICR3aGVyZVtdID0gJ2NyZWF0ZWQgPCA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkZmlsdGVyLT5jcmVhdGVkX2JlZm9yZTsKICAgICAgICB9CiAgICAgICAgaWYoICRmaWx0ZXItPmNyZWF0ZWRfYWZ0ZXIgPiAwICkgewogICAgICAgICAgICAkd2hlcmVbXSA9ICdjcmVhdGVkID4gPyc7CiAgICAgICAgICAgICRwYXJtc1tdID0gJGZpbHRlci0+Y3JlYXRlZF9hZnRlcjsKICAgICAgICB9CiAgICAgICAgaWYoICRmaWx0ZXItPmV4cGlyZWQgJiYgJHRoaXMtPnNldHRpbmdzLT51c2VyX2V4cGlyZV9ob3VycyA+IDAgKSB7CiAgICAgICAgICAgICR3aGVyZVtdID0gJ2NyZWF0ZWQgPCA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSB0aW1lKCkgLSAkdGhpcy0+c2V0dGluZ3MtPnVzZXJfZXhwaXJlX2hvdXJzICogMzYwMDsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJHdoZXJlKSApICRzcWwgLj0gJyBXSEVSRSAnLmltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwoKICAgICAgICAkcnMgPSAkdGhpcy0+ZGItPlNlbGVjdExpbWl0KCRzcWwsICRmaWx0ZXItPmxpbWl0LCAkZmlsdGVyLT5vZmZzZXQsICRwYXJtcyk7CiAgICAgICAgJGZvdW5kX3Jvd3MgPSAkdGhpcy0+ZGItPkdldE9uZSgnU0VMRUNUIEZPVU5EX1JPV1MoKScpOwoKICAgICAgICAkbWF0Y2hlcyA9IG51bGw7CiAgICAgICAgd2hpbGUoICRycyAmJiAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgJG1hdGNoZXNbXSA9ICR0aGlzLT5jcmVhdGVfdXNlcl9mcm9tX3JvdygkcnMtPmZpZWxkcyk7CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgVXNlclNldCgkZmlsdGVyLCAkZm91bmRfcm93cywgJG1hdGNoZXMpOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.RegistrationManagerDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgphYnN0cmFjdCBjbGFzcyBSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yCnsKICAgIHByb3RlY3RlZCAkcGFyZW50OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZWdpc3RyYXRpb25NYW5hZ2VyRGVjb3JhdG9yICRwYXJlbnQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5wYXJlbnQgPSAkcGFyZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoc3RyaW5nICRtZXRob2QsICRhcmdzKQogICAgewogICAgICAgIGlmKCAhJHRoaXMtPnBhcmVudCApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbihnZXRfY2xhc3MoJHRoaXMpLicgZG9lcyBub3QgaGF2ZSBhIG1ldGhvZCBlbnRpdGxlZCAnLiRtZXRob2QpOwogICAgICAgIH0KCXJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSggWyAkdGhpcy0+cGFyZW50LCAkbWV0aG9kIF0sICRhcmdzICk7CiAgICB9Cn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.RemindUsersTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBDR0ZFVVJlZ2lzdGVyOwp1c2UgY21zX3V0aWxzOwoKaW5jbHVkZV9vbmNlKF9fRElSX18uJy9pbnRlcmZhY2UuVGFza0ludGVyZmFjZS5waHAnICk7IC8vIGdyb3NzLgpjbGFzcyBSZW1pbmRVc2Vyc1Rhc2sgaW1wbGVtZW50cyBIb3VybHlUYXNrCnsKICAgIGNvbnN0IExBU1RSVU5fUFJFRiA9ICdSZW1pbmRVc2Vyc1Rhc2tfbGFzdHJ1bic7CgogICAgcHJpdmF0ZSAkbW9kOwogICAgcHJpdmF0ZSAkcmVnbWdyOwogICAgcHJpdmF0ZSAkc2V0dGluZ3M7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENHRkVVUmVnaXN0ZXIgJG1vZCwgUmVnaXN0cmF0aW9uTWFuYWdlckRlY29yYXRvciAkcmVnbWdyLCBTZXR0aW5ncyAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPnJlZ21nciA9ICRyZWdtZ3I7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfZW1haWwoUmVnRmllbGRTZXQgJHNldCwgVXNlciAkdXNlcikKICAgIHsKICAgICAgICAvLyB0aGlzIHV0aWxpdHkgbWV0aG9kIHNob3VsZCBwcm9sbHkgYmUgaW4gdGhlIFJlZ2lzdHJhdGlvbk1hbmFnZXIKICAgICAgICAkZW1haWwgPSBudWxsOwogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnVzZXJuYW1lX2lzX2VtYWlsICkgewogICAgICAgICAgICByZXR1cm4gJHVzZXItPmdldCgkdXNlcjo6VVNFUk5BTUVfRklFTEQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZvcmVhY2goICRzZXQgYXMgJGZpZWxkICkgewogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dHlwZSA9PSBGcm9udGVuZFVzZXJzOjpQUk9QVFlQRV9FTUFJTCApIHsKICAgICAgICAgICAgICAgICAgICAkcHJvcG5hbWUgPSAkZmllbGQtPm5hbWU7CiAgICAgICAgICAgICAgICAgICAgJGVtYWlsID0gJHVzZXItPmdldCgkcHJvcG5hbWUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkZW1haWwgKSByZXR1cm4gJGVtYWlsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kX3JlbWluZGVyX2VtYWlsKFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgJGZpZWxkcyA9ICR0aGlzLT5yZWdtZ3ItPmdldF9yZWdpc3RyYXRpb25fZmllbGRzKCR1c2VyLT5naWQpOwogICAgICAgICRlbWFpbCA9ICR0aGlzLT5nZXRfZW1haWwoJGZpZWxkcywgJHVzZXIpOwogICAgICAgIGlmKCAhJGVtYWlsICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIHRvIHNlbmQgdG8nKTsKCiAgICAgICAgJGRlc3RwYWdlID0gJHRoaXMtPm1vZC0+Y21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICAgIGlmKCAkdGhpcy0+c2V0dGluZ3MtPnJlcGVhdGNvZGVfcGFnZSApIHsKICAgICAgICAgICAgJGRlc3RwYWdlID0gJHRoaXMtPm1vZC0+cmVzb2x2ZV9hbGlhc19vcl9pZCggJHRoaXMtPnNldHRpbmdzLT5yZXBlYXRjb2RlX3BhZ2UsICRkZXN0cGFnZSApOwogICAgICAgIH0KCiAgICAgICAgJGVtbCA9ICR0aGlzLT5tb2QtPmdldF9lbWFpbF9zdG9yYWdlKCktPmxvYWQoJ29uX3JlbWluZC5lbWwnKTsKICAgICAgICBpZiggISRlbWwgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCB0aGUgb25fcmVnaXN0ZXIuZW1sIGVtYWlsIHRlbXBsYXRlJyk7CiAgICAgICAgJGVtbCA9ICRlbWwtPmFkZF9hZGRyZXNzKCRlbWFpbCkKICAgICAgICAgICAgLT5hZGRfZGF0YSgnZmllbGRzJywgJGZpZWxkcykKICAgICAgICAgICAgLT5hZGRfZGF0YSgncmVwZWF0Y29kZV9wYWdlJywgJGRlc3RwYWdlKQogICAgICAgICAgICAtPmFkZF9kYXRhKCd1c2VyJywgJHVzZXIpOwogICAgICAgICR0aGlzLT5tb2QtPmNyZWF0ZV9uZXdfbWFpbHByb2Nlc3NvciggJGVtbCApLT5zZW5kKCk7CiAgICB9CgogICAgLy8gcHJvYmFibHkgc2hvdWxkIGJlIGEgZGFpbHkgdGFzawogICAgcHVibGljIGZ1bmN0aW9uIGhvdXJseSgpCiAgICB7CiAgICAgICAgLy8gZ2V0IHRoZSBsYXN0IHJ1bgogICAgICAgIGRlYnVnX3RvX2xvZyhfX01FVEhPRF9fKTsKCiAgICAgICAgaWYoICgkcmVtaW5kX2hvdXJzX2ludGVydmFsID0gJHRoaXMtPnNldHRpbmdzLT5yZW1pbmR1c2Vyc19hZnRlcl9ob3VycykgPCAxICkgcmV0dXJuOwogICAgICAgICRub3cgPSB0aW1lKCk7CiAgICAgICAgJGxhc3RydW4gPSAoaW50KSAkdGhpcy0+bW9kLT5HZXRQcmVmZXJlbmNlKHNlbGY6OkxBU1RSVU5fUFJFRik7CiAgICAgICAgJHRoaXMtPm1vZC0+U2V0UHJlZmVyZW5jZShzZWxmOjpMQVNUUlVOX1BSRUYsICRub3cpOwoKICAgICAgICAkbWF4X2NyZWF0ZWQgPSBtYXgoJGxhc3RydW4sICRub3cgLSAkcmVtaW5kX2hvdXJzX2ludGVydmFsKTsKICAgICAgICAkZmlsdGVyID0gJHRoaXMtPnJlZ21nci0+Y3JlYXRlX3VzZXJfZmlsdGVyKCBbJ2NyZWF0ZWRfYmVmb3JlJz0+JG1heF9jcmVhdGVkIF0gKTsKICAgICAgICAkdXNlcnMgPSAkdGhpcy0+cmVnbWdyLT5sb2FkX3VzZXJzX2J5X2ZpbHRlcigkZmlsdGVyKTsKICAgICAgICBmb3JlYWNoKCAkdXNlcnMgYXMgJHVzZXIgKSB7CiAgICAgICAgICAgIGlmKCAoJGhycyA9ICR0aGlzLT5zZXR0aW5ncy0+dXNlcl9leHBpcmVfaG91cnMpID4gMCAmJiAkdXNlci0+Y3JlYXRlZCA+PSAkbm93IC0gJGhycyAqIDM2MDAgKSB7CiAgICAgICAgICAgICAgICAvLyBub3QgZXhwaXJlZAogICAgICAgICAgICAgICAgJHRoaXMtPnNlbmRfcmVtaW5kZXJfZW1haWwoJHVzZXIpOwogICAgICAgICAgICAgICAgYXVkaXQoJHVzZXItPmlkLCR0aGlzLT5tb2QtPkdldE5hbWUoKSwnU2VudCByZW1pbmRlciBlbWFpbCB0byAnLiR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.Settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBGcm9udEVuZFVzZXJzOwp1c2UgY2dlX3BhcmFtOwoKY2xhc3MgU2V0dGluZ3MKewogICAgcHJpdmF0ZSAkX2RhdGEgPSBbCiAgICAgICAgJ3VzZXJuYW1lX3doaXRlbGlzdCc9Pm51bGwsICd1c2VybmFtZV9ibGFja2xpc3QnPT5udWxsLCAnbG9naW5fYWZ0ZXJfdmVyaWZ5Jz0+ZmFsc2UsCiAgICAgICAgJ3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzJyA9PiAwLCAndXNlcm5hbWVfaXNfZW1haWwnPT5udWxsLCAndXNlcl9leHBpcmVfaG91cnMnID0+IDAsCiAgICAgICAgJ2V4cGlyZWFnZV9tb250aHMnID0+IDAsICdkaXNhYmxlX3JlcGVhdGNvZGUnPT5udWxsLAogICAgICAgICdvbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwJz0+bnVsbCwgJ25vcHVzaF9ub3RpZnlfYWRtaW5ncm91cCc9Pm51bGwsCiAgICAgICAgJ3VzZV9idWlsdGluX25vdGlmaWNhdGlvbnMnPT5mYWxzZSwKICAgICAgICBdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJG9wdHMgKQogICAgewogICAgICAgIGlmKCAhaXNfYXJyYXkoJG9wdHMpICYmICEgJG9wdHMgaW5zdGFuY2VvZiBcY21zX2NvbmZpZyApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGlucHV0IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKICAgICAgICAkdGhpcy0+X2RhdGFbJ2xvZ2luX2FmdGVyX3ZlcmlmeSddID0gY2dlX3BhcmFtOjpnZXRfYm9vbCgkb3B0cywnY2dmcl9sb2dpbl9hZnRlcl92ZXJpZnknLGZhbHNlKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3VzZV9idWlsdGluX25vdGlmaWNhdGlvbnMnXSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJG9wdHMsJ2NnZnJfdXNlX2J1aWx0aW5fbm90aWZpY2F0aW9ucycsZmFsc2UpOwogICAgICAgICR0aGlzLT5fZGF0YVsndXNlcm5hbWVfd2hpdGVsaXN0J10gPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJG9wdHMsJ2NnZnJfdXNlcm5hbWVfd2hpdGVsaXN0Jyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd1c2VybmFtZV9ibGFja2xpc3QnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl91c2VybmFtZV9ibGFja2xpc3QnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ29ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXAnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl9vbnJlZ2lzdGVyX25vdGlmeV9hZG1pbmdyb3VwJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydvbnB1c2hfbm90aWZ5X2FkbWluZ3JvdXAnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl9vbnB1c2hfbm90aWZ5X2FkbWluZ3JvdXAnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2Rpc2FibGVfcmVwZWF0Y29kZSddID0gY2dlX3BhcmFtOjpnZXRfYm9vbCgkb3B0cywnY2dmcl9kaXNhYmxlX3JlcGVhdGNvZGUnLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2ZXJpZnljb2RlX2V4cGlyZV9ob3VycyddID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRvcHRzLCdjZ2ZyX3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzJywgMjQgKiA3KTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3JlbWluZHVzZXJzX2FmdGVyX2hvdXJzJ10gPSBjZ2VfcGFyYW06OmdldF9pbnQoJG9wdHMsJ2NnZnJfcmVtaW5kdXNlcnNfYWZ0ZXJfaG91cnMnLCAyNCk7ICAvLyBvbmUgZGF5CiAgICAgICAgJHRoaXMtPl9kYXRhWydyZXBlYXRjb2RlX3BhZ2UnXSA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkb3B0cywnY2dmcl9yZXBlYXRjb2RlX3BhZ2UnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3VzZXJfZXhwaXJlX2hvdXJzJ10gPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJG9wdHMsJ2NnZnJfdXNlcl9leHBpcmVfaG91cnMnLCAyNCAqIDcpOyAvLyBvbmUgd2VlawogICAgICAgICR0aGlzLT5fZGF0YVsndXNlcm5hbWVfaXNfZW1haWwnXSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJG9wdHMsICdmZXVfdXNlcm5hbWVfaXNfZW1haWwnLCB0cnVlKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2V4cGlyZWFnZV9tb250aHMnXSA9IGNnZV9wYXJhbTo6R2V0X2ludCgkb3B0cywgJ2ZldV9leHBpcmVhZ2VfbW9udGhzJywgNTIwKTsKCiAgICAgICAgaWYoICR0aGlzLT52ZXJpZnljb2RlX2V4cGlyZV9ob3VycyA+ICR0aGlzLT51c2VyX2V4cGlyZV9ob3VycyApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdjZ2ZyX3ZlcmlmeWNvZGVfZXhwaXJlX2hvdXJzIGdyZWF0ZXIgdGhhbiBjZ2ZyX3VzZXJfZXhwaXJlX2hvdXJzJyk7CiAgICAgICAgaWYoICR0aGlzLT5leHBpcmVhZ2VfbW9udGhzIDwgMSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdmZXVfZXhwaXJlYWdlX21vbnRocyBoYXMgYW4gaW52YWxpZCB2YWx1ZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldChzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnbG9naW5fYWZ0ZXJfdmVyaWZ5JzoKICAgICAgICBjYXNlICd1c2VybmFtZV9pc19lbWFpbCc6CiAgICAgICAgY2FzZSAnZGlzYWJsZV9yZXBlYXRjb2RlJzoKICAgICAgICBjYXNlICd1c2VfYnVpbHRpbl9ub3RpZmljYXRpb25zJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgY2FzZSAndXNlcm5hbWVfd2hpdGVsaXN0JzoKICAgICAgICBjYXNlICd1c2VybmFtZV9ibGFja2xpc3QnOgogICAgICAgIGNhc2UgJ29ucmVnaXN0ZXJfbm90aWZ5X2FkbWluZ3JvdXAnOwogICAgICAgIGNhc2UgJ29ucHVzaF9ub3RpZnlfYWRtaW5ncm91cCc7CiAgICAgICAgY2FzZSAncmVwZWF0Y29kZV9wYWdlJzoKICAgICAgICAgICAgaWYoICFpc19udWxsKCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd2ZXJpZnljb2RlX2V4cGlyZV9ob3Vycyc6CiAgICAgICAgY2FzZSAndXNlcl9leHBpcmVfaG91cnMnOgogICAgICAgIGNhc2UgJ2V4cGlyZWFnZV9tb250aHMnOgogICAgICAgIGNhc2UgJ3JlbWluZHVzZXJzX2FmdGVyX2hvdXJzJzoKICAgICAgICAgICAgcmV0dXJuIG1heCgwLCAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.SimpleRegistrationHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBTaW1wbGVSZWdpc3RyYXRpb25IYW5kbGVyIGltcGxlbWVudHMgUmVnaXN0cmF0aW9uSGFuZGxlckludGVyZmFjZQp7CiAgICBwcml2YXRlJHJtZ3I7CiAgICBwcml2YXRlICRwcm9jZXNzb3I7CiAgICBwcml2YXRlICR2ZXJpZmllcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUmVnaXN0cmF0aW9uTWFuYWdlciAkcm1nciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RyYXRpb25Qcm9jZXNzb3JJbnRlcmZhY2UgJHByb2Nlc3NvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RyYXRpb25WZXJpZmllckludGVyZmFjZSAkdmVyaWZpZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPnJtZ3IgPSAkcm1ncjsKICAgICAgICAkdGhpcy0+cHJvY2Vzc29yID0gJHByb2Nlc3NvcjsKICAgICAgICAkdGhpcy0+dmVyaWZpZXIgPSAkdmVyaWZpZXI7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbl9tYW5hZ2VyKCkgOiBSZWdpc3RyYXRpb25NYW5hZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5ybWdyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3Rlcl91c2VyKFVzZXIgJHVzZXIpIDogVXNlcgogICAgewogICAgICAgICRmaWVsZHMgPSAkdGhpcy0+cm1nci0+Z2V0X3JlZ2lzdHJhdGlvbl9maWVsZHMoJHVzZXItPmdpZCk7CiAgICAgICAgJHRoaXMtPnZlcmlmaWVyLT52YWxpZGF0ZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwoKICAgICAgICAkdXNlciA9ICR0aGlzLT5ybWdyLT5zYXZlX3VzZXIoJHVzZXIpOwogICAgICAgICRjb2RlID0gJHRoaXMtPnJtZ3ItPmNyZWF0ZV9yZWdpc3RyYXRpb25fY29kZSgkdXNlcik7CiAgICAgICAgJHRoaXMtPnJtZ3ItPnNhdmVfdmVyaWZpY2F0aW9uX2NvZGUoJGNvZGUpOwogICAgICAgICR0aGlzLT5wcm9jZXNzb3ItPmV4ZWN1dGUoJGZpZWxkcywgJHVzZXIsICRjb2RlKTsKICAgICAgICByZXR1cm4gJHVzZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZvcmNlX3B1c2hfdXNlcl9saXZlKFVzZXIgJHVzZXIpIDogaW50CiAgICB7CiAgICAgICAgJGZpZWxkcyA9ICR0aGlzLT5ybWdyLT5nZXRfcmVnaXN0cmF0aW9uX2ZpZWxkcygkdXNlci0+Z2lkKTsKICAgICAgICAkZmV1X3VpZCA9ICR0aGlzLT5ybWdyLT5wdXNoX3VzZXJfbGl2ZSgkZmllbGRzLCAkdXNlcik7CiAgICAgICAgJHRoaXMtPnJtZ3ItPmRlbGV0ZV91c2VyX2Z1bGwoJHVzZXIpOwogICAgICAgIHJldHVybiAkZmV1X3VpZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcHVzaF91c2VyX2xpdmUoaW50ICR1c2VyX2lkLCBzdHJpbmcgJGNvZGVfc3RyKSA6IGludAogICAgewogICAgICAgICR1c2VyID0gJHRoaXMtPnJtZ3ItPmxvYWRfdXNlcl9ieV9pZCgkdXNlcl9pZCk7CiAgICAgICAgJGNvZGUgPSAkdGhpcy0+cm1nci0+bG9hZF92ZXJpZmljYXRpb25fY29kZSgkY29kZV9zdHIpOwoKICAgICAgICAvLyBjaGVjayBpZiB0aGUgdXNlciBpcyB2YWxpZCBpZiB0aGUgY29kZSBpcyB2YWxpZAogICAgICAgIGlmKCAhJHVzZXIgfHwgISRjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJfY2Fubm90dmVyaWZ5JykpOwogICAgICAgIGlmKCAkdXNlci0+Z2lkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2Nhbm5vdHZlcmlmeScpLicgMicpOwogICAgICAgIGlmKCAkdXNlci0+aWQgIT0gJGNvZGUtPnVpZCB8fCAkY29kZS0+ZXhwaXJlcyA8IHRpbWUoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2Nhbm5vdHZlcmlmeScpLicgMycpOwogICAgICAgIGlmKCAkdGhpcy0+cm1nci0+aXNfdXNlcl9leHBpcmVkKCR1c2VyKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2Nhbm5vdHZlcmlmeScpLicgNCcpOwoKICAgICAgICAvLyBmb3JjZXB1c2ggbGl2ZQogICAgICAgIHJldHVybiAkdGhpcy0+Zm9yY2VfcHVzaF91c2VyX2xpdmUoJHVzZXIpOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.TaskManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBUYXNrTWFuYWdlcgp7CiAgICBwcml2YXRlICR0YXNrcyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3Rlcl90YXNrKFRhc2tJbnRlcmZhY2UgJGludGFzaykKICAgIHsKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+dGFza3MgYXMgJG9uZXRhc2sgKSB7CiAgICAgICAgICAgIGlmKCBnZXRfY2xhc3MoJG9uZXRhc2spID09IGdldF9jbGFzcygkaW50YXNrKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdBbiBpbnN0YW5jZSBvZiAnLmdldF9jbGFzcygkaW50YXNrKS4nIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCcpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+dGFza3NbXSA9ICRpbnRhc2s7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhvdXJseSgpCiAgICB7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPnRhc2tzIGFzICR0YXNrICkgewogICAgICAgICAgICBpZiggJHRhc2sgaW5zdGFuY2VvZiBIb3VybHlUYXNrICkgJHRhc2stPmhvdXJseSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGFpbHkoKQogICAgewogICAgICAgIGZvcmVhY2goICR0aGlzLT50YXNrcyBhcyAkdGFzayApIHsKICAgICAgICAgICAgaWYoICR0YXNrIGluc3RhbmNlb2YgRGFpbHlUYXNrICkgJHRhc2stPmRhaWx5KCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3ZWVrbHkoKQogICAgewogICAgICAgIGZvcmVhY2goICR0aGlzLT50YXNrcyBhcyAkdGFzayApIHsKICAgICAgICAgICAgaWYoICR0YXNrIGluc3RhbmNlb2YgV2Vla2x5VGFzayApICR0YXNrLT53ZWVrbHkoKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vbnRobHkoKQogICAgewogICAgICAgIGZvcmVhY2goICR0aGlzLT50YXNrcyBhcyAkdGFzayApIHsKICAgICAgICAgICAgaWYoICR0YXNrIGluc3RhbmNlb2YgTW9udGx5VGFzayApICR0YXNrLT5tb250aGx5KCk7CiAgICAgICAgfQogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.User.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBKc29uU2VyaWFsaXphYmxlOwp1c2UgY2dlX2FycmF5OwoKY2xhc3MgVXNlciBpbXBsZW1lbnRzIEpzb25TZXJpYWxpemFibGUKewogICAgY29uc3QgVVNFUk5BTUVfRklFTEQgPSAndXNlcm5hbWUnOwogICAgY29uc3QgUEFTU1dPUkRfRklFTEQgPSAncGFzc3dvcmQnOwogICAgY29uc3QgUkVQRUFUX0ZJRUxEID0gJ3JlcGVhdHBhc3N3b3JkJzsKICAgIHByaXZhdGUgJF9kYXRhID0gWyAnaWQnPT5udWxsLCAnY3JlYXRlZCc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRpbiApCiAgICB7CiAgICAgICAgZm9yZWFjaCggJGluIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWQnOgogICAgICAgICAgICBjYXNlICdnaWQnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYoICFpc19udWxsKCR2YWwpICYmICFpc19zdHJpbmcoJHZhbCkgJiYgIWlzX3NjYWxhcigkdmFsKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHByb3BlcnR5IGRhdGEgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldChzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldCgka2V5KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faXNzZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGgoc3RyaW5nICRrZXksICR2YWwpIDogVXNlcgogICAgewogICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgIGlmKCAhJGtleSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGtleSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJG9iaiA9IGNsb25lICR0aGlzOwogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnY3JlYXRlZCc6CiAgICAgICAgY2FzZSAnZ2lkJzoKICAgICAgICAgICAgaWYoICFpc19pbnQoJHZhbCkgfHwgJHZhbCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCB2YWx1ZSBmb3IgJGtleSBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSAkdmFsOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBpZiggIWFycmF5X2tleV9leGlzdHMoJGtleSwgJHRoaXMtPl9kYXRhKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgc2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgICAgICBpZiggIWlzX251bGwoJHZhbCkgJiYgIWlzX3NjYWxhcigkdmFsKSAmJiAhaXNfc3RyaW5nKCR2YWwpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgdmFsdWUgZm9yICRrZXkgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CiAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgJGtleSA9IHRyaW0oJGtleSk7CiAgICAgICAgaWYoICEka2V5ICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQga2V5ICcuJGtleS4nIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCAhYXJyYXlfa2V5X2V4aXN0cygka2V5LCR0aGlzLT5fZGF0YSkgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBrZXkgJGtleSBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBKc29uU2VyaWFsaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9kYXRhOwogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.UserFilter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CnVzZSBjZ2VfYXJyYXk7CgpjbGFzcyBVc2VyRmlsdGVyIGV4dGVuZHMgRmlsdGVyCnsKICAgIHByaXZhdGUgJF9kYXRhID0gWyAndXNlcm5hbWVfcGF0dGVybic9Pm51bGwsICdjcmVhdGVkX2FmdGVyJz0+bnVsbCwgJ2NyZWF0ZWRfYmVmb3JlJz0+bnVsbCwgJ2V4cGlyZWQnPT5udWxsIF07CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBhcnJheSAkb3B0cyApCiAgICB7CiAgICAgICAgaWYoICFjZ2VfYXJyYXk6OmlzX2hhc2goJG9wdHMpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRvcHRzKTsKICAgICAgICBmb3JlYWNoKCAkb3B0cyBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAndXNlcm5hbWVfcGF0dGVybic6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWRfYmVmb3JlJzoKICAgICAgICAgICAgY2FzZSAnY3JlYXRlZF9hZnRlcic6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAoaW50KSAkdmFsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2V4cGlyZWQnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gY21zX3RvX2Jvb2woJHZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3VzZXJuYW1lX3BhdHRlcm4nOgogICAgICAgICAgICByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgIGNhc2UgJ2NyZWF0ZWRfYmVmb3JlJzoKICAgICAgICBjYXNlICdjcmVhdGVkX2FmdGVyJzoKICAgICAgICAgICAgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICBjYXNlICdleHBpcmVkJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKCn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.UsernameFilterDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBVc2VybmFtZUZpbHRlckRlY29yYXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfcmVnaXN0cmF0aW9uKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpCiAgICB7CiAgICAgICAgLy8gdG9kbzogbWF0Y2ggdXNlcm5hbWUvZW1haWxzCiAgICAgICAgLy8gb24gZmFpbHVyZSwgZG8gYSBob29rIGFuZCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbgogICAgICAgIHJldHVybiAkdGhpcy0+cGFyZW50LT52YWxpZGF0ZV9yZWdpc3RyYXRpb24oJGZpZWxkcywgJHVzZXIpOwogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.UserSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBVc2VyU2V0IGV4dGVuZHMgRmlsdGVyUmVzdWx0U2V0CnsKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ValidationError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.VerificationData.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgpjbGFzcyBWZXJpZmljYXRpb25EYXRhCnsKICAgIHByaXZhdGUgJF9kYXRhID0gWyd1aWQnPT5udWxsLCAndmVyaWZ5X2NvZGUnPT5udWxsLCAnZXhwaXJlcyc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGluKQogICAgewogICAgICAgIGZvcmVhY2goJGluIGFzICRrZXkgPT4gJHZhbCkgewogICAgICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgICAgIGNhc2UgJ3VpZCc6CiAgICAgICAgICAgIGNhc2UgJ2V4cGlyZXMnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd2ZXJpZnlfY29kZSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiggJHRoaXMtPnVpZCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBkYXRhIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCAhJHRoaXMtPnZlcmlmeV9jb2RlICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3VpZCc6CiAgICAgICAgY2FzZSAnZXhwaXJlcyc6CiAgICAgICAgICAgIGlmKCAhaXNfbnVsbCgkdGhpcy0+X2RhdGFbJGtleV0pICkgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndmVyaWZ5X2NvZGUnOgogICAgICAgICAgICBpZiggIWlzX251bGwoJHRoaXMtPl9kYXRhWyRrZXldKSApIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9Cgp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/interface.AdminNotifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgQWRtaW5Ob3RpZmllcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gbm90aWZ5X3VzZXJfcmVnaXN0ZXJlZChSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKTsKICAgIHB1YmxpYyBmdW5jdGlvbiBub3RpZnlfdXNlcl9wdXNoZWQoaW50ICRmZXVfdWlkLCBSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKTsKfSAvLyBpbnRlcmZhY2U=]]></data>
	</file>
	<file>
	  <filename>/lib/interface.RegistrationHandlerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgUmVnaXN0cmF0aW9uSGFuZGxlckludGVyZmFjZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJfdXNlcihVc2VyICR1c2VyKSA6IFVzZXI7CiAgICBwdWJsaWMgZnVuY3Rpb24gZm9yY2VfcHVzaF91c2VyX2xpdmUoVXNlciAkdXNlcikgOiBpbnQ7CiAgICBwdWJsaWMgZnVuY3Rpb24gcHVzaF91c2VyX2xpdmUoaW50ICR1c2VyX2lkLCBzdHJpbmcgJGNvZGVfc3RyKSA6IGludDsKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/interface.RegistrationProcessorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgUmVnaXN0cmF0aW9uUHJvY2Vzc29ySW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIsIFZlcmlmaWNhdGlvbkRhdGEgJGRhdGEpOwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9maW5hbF9tZXNzYWdlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIpIDogc3RyaW5nOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlX3JlcGVhdGNvZGUoUmVnRmllbGRTZXQgJHNldCwgVXNlciAkdXNlciwgVmVyaWZpY2F0aW9uRGF0YSAkZGF0YSk7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3JlcGVhdGNvZGVfZmluYWxtZXNzYWdlKFJlZ0ZpZWxkU2V0ICRzZXQsIFVzZXIgJHVzZXIpIDogc3RyaW5nOwp9IC8vIGludGVyZmFjZQ==]]></data>
	</file>
	<file>
	  <filename>/lib/interface.RegistrationVerifierInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgUmVnaXN0cmF0aW9uVmVyaWZpZXJJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3B1cmVfcmVnaXN0cmF0aW9uKFJlZ0ZpZWxkU2V0ICRmaWVsZHMsIFVzZXIgJHVzZXIpOwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3JlZ2lzdHJhdGlvbihSZWdGaWVsZFNldCAkc2V0LCBVc2VyICR1c2VyKTsKfSAvLyBpbnRlcmZhY2U=]]></data>
	</file>
	<file>
	  <filename>/lib/interface.TaskInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CgppbnRlcmZhY2UgVGFza0ludGVyZmFjZSB7fQoKaW50ZXJmYWNlIEhvdXJseVRhc2sgZXh0ZW5kcyBUYXNrSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBob3VybHkoKTsKfQoKaW50ZXJmYWNlIERhaWx5VGFzayBleHRlbmRzIFRhc2tJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGRhaWx5KCk7Cn0KCmludGVyZmFjZSBXZWVrbHlUYXNrIGV4dGVuZHMgVGFza0ludGVyZmFjZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gd2Vla2x5KCk7Cn0KCmludGVyZmFjZSBNb250aGx5VGFzayBleHRlbmRzIFRhc2tJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIG1vbnRobHkoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9ICR0aGlzLT5nZXRfZXh0ZW5kZWRfZGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFTkdJTkU9SW5ub0RCJyk7CgokZmxkcyA9ICIKICAgICAgaWQgSSBLRVkgQVVUTyBOT1ROVUxMLAogICAgICB1c2VybmFtZSBDKDI1NikgTk9UTlVMTCwKICAgICAgY3JlYXRlZCBJIE5PVE5VTEwsCiAgICAgIHNpZyBDKDI1NikgTk9UTlVMTCwKICAgICAgZGF0YSBYMiBOT1ROVUxMCiI7CiRzcWxhcnIgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPnVzZXJzX3RhYmxlX25hbWUoKSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycik7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChDTVNfREJfUFJFRklYLidtb2RfY2dmcl9pZHgwJywkdGhpcy0+dXNlcnNfdGFibGVfbmFtZSgpLCd1c2VybmFtZScsIFsgJ1VOSVFVRScgXSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRmbGRzID0gIgogICAgICB1aWQgSSBLRVkgTk9UTlVMTCwKICAgICAgdmVyaWZ5X2NvZGUgQyg2NCkgS0VZIE5PVE5VTEwsCiAgICAgIGV4cGlyZXMgSSBOT1ROVUxMCiI7CiRzcWxhcnIgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPmNvZGVzX3RhYmxlX25hbWUoKSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycik7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChDTVNfREJfUFJFRklYLidtb2RfY2dmcl9pZHgxJywkdGhpcy0+Y29kZXNfdGFibGVfbmFtZSgpLCd1c2VybmFtZScpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChDTVNfREJfUFJFRklYLidtb2RfY2dmcl9pZHgyJywkdGhpcy0+Y29kZXNfdGFibGVfbmFtZSgpLCd2ZXJpZnlfY29kZScsIFsnVU5JUVVFJ10pOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Ci8vIHRvZG86IGZvcmVpZ24ga2V5IHJlbGF0aW9uc2hpcCBvbiBpZAoKJGtleSA9IGJpbjJoZXgocmFuZG9tX2J5dGVzKDY0KSkuX19GSUxFX187CiRrZXkgPSBoYXNoKCdzaGEyNTYnLCRrZXkpOwoka2V5ID0gaGFzaCgnc2hhMjU2Jywka2V5KTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJHRoaXMtPnJlZ01hbmFnZXIoKTo6RU5DUllQVElPTl9LRVksJGtleSk7]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVUmVnaXN0ZXI7CmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9ICR0aGlzLT5nZXRfZXh0ZW5kZWRfZGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFTkdJTkU9SW5ub0RCJyk7Cgokc3FsYXJyID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgkdGhpcy0+Y29kZXNfdGFibGVfbmFtZSgpKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyKTsKJHNxbGFyciA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoJHRoaXMtPnVzZXJzX3RhYmxlX25hbWUoKSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycik7CiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR0ZFVVJlZ2lzdGVyIgp2ZXJzaW9uID0gIjEuMC40IgphdXRob3IgPSAiY2FsZ3V5MTAwMCIKYXV0aG9yZW1haWwgPSAiY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyIKbWluY21zdmVyc2lvbiA9ICIyLjIuMTAiCmxhenlsb2FkYWRtaW4gPSAwCmxhenlsb2FkZnJvbnRlbmQgPSAwCltkZXBlbmRzXQpDR0V4dGVuc2lvbnMgPSAiMS42NC4yIgpGcm9udEVuZFVzZXJzID0gMi45OQo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_edit_user.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfbWFuYWdlX3VzZXInKX08L2gzPgoKe2Zvcm1fc3RhcnQgdWlkPSR1c2VyLT5pZH0KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2xibF9zdWJtaXQnKX0iLz4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnbGJsX2NhbmNlbCcpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRlbGV0ZXVzZXIiIHZhbHVlPSJ7JG1vZC0+TGFuZygnbGJsX2RlbGV0ZScpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InB1c2h1c2VyIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2xibF9wdXNobGl2ZScpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im5ld2NvZGUiIHZhbHVlPSJ7JG1vZC0+TGFuZygnbGJsX25ld2NvZGUnKX0iLz4KICAgIDwvZGl2PgogICAgPGJyLz4KCiAgICB7Zm9yZWFjaCAkZmllbGRzIGFzICRuYW1lID0+ICRmaWVsZH0KICAgICAgICB7JHJlcXVpcmVkPScnfXtpZiAkZmllbGQtPnJlcXVpcmVkPT0yfXskcmVxdWlyZWQ9J3JlcXVpcmVkJ317L2lmfQogICAgICAgIHskcGF0dGVybj0nJ317aWYgIWVtcHR5KCRmaWVsZC0+ZXh0cmEucGF0dGVybil9eyRwYXR0ZXJuPSJwYXR0ZXJuPXskZmllbGQtPmV4dHJhLnBhdHRlcm59In17L2lmfQogICAgICAgIHskcGxhY2Vob2xkZXI9Jyd9e2lmICFlbXB0eSgkZmllbGQtPmV4dHJhLnBsYWNlaG9sZGVyKX17JHBsYWNlaG9sZGVyPSJwbGFjZWhvbGRlcj17JGZpZWxkLT5leHRyYS5wbGFjZWhvbGRlcn0ifXsvaWZ9CiAgICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIHtpZiAkcmVxdWlyZWR9cmVxdWlyZWR7L2lmfSI+CiAgICAgICAgICAgIHtpZiAkZmllbGQtPnR5cGUgPT0gMH17KiB0ZXh0ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9InRleHQiIGNsYXNzPSJncmlkXzgiIG5hbWU9InskbmFtZX0iIHZhbHVlPSJ7JHVzZXItPmdldCgkbmFtZSl9IiB7JHJlcXVpcmVkfSB7JHBhdHRlcm59IHskcGxhY2Vob2xkZXJ9IC8+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSAxfXsqIGNoZWNrYm94ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNwYW4gY2xhc3M9ImdyaWRfOCI+CiAgICAJCSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMCIvPgogICAgCQkgICAgPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMSIge2lmICR1c2VyLT5nZXQoJG5hbWUpfWNoZWNrZWR7L2lmfSB7JHJlcXVpcmVkfSAvPgogICAgCQk8L3NwYW4+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSAyfXsqIGVtYWlsICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9ImVtYWlsIiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0ieyR1c2VyLT5nZXQoJG5hbWUpfSIgeyRyZXF1aXJlZH0geyRwYXR0ZXJufSB7JHBsYWNlaG9sZGVyfSAvPgogICAgCSAgICB7ZWxzZSBpZiAkZmllbGQtPnR5cGUgPT0gM317KiB0ZXh0YXJlYSAqfQogICAgCSAgICAgICAgPGxhYmVsIGZvcj0icHJvcF97JG5hbWV9IiBjbGFzcz0iZ3JpZF8zIj57JGZpZWxkLT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTx0ZXh0YXJlYSBpZD0icHJvcF97JG5hbWV9IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9IiB7JHJlcXVpcmVkfT57JHVzZXItPmdldCgkbmFtZSl9PC90ZXh0YXJlYT4KICAgIAkgICAge2Vsc2UgaWYgJGZpZWxkLT50eXBlID09IDR9eyogZHJvcGRvd24gKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImdyaWRfMyI+eyRmaWVsZC0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c2VsZWN0IGlkPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzgiIG5hbWU9InskbmFtZX0iIHskcmVxdWlyZWR9PgogICAgCQkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kdXNlci0+Z2V0KCRuYW1lKX0KICAgIAkJPC9zZWxlY3Q+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSA1fXsqIG11bHRpc2VsZWN0ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJncmlkXzMiPnskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNlbGVjdCBpZD0icHJvcF97JG5hbWV9IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JG5hbWV9W10iIG11bHRpcGxlIHskcmVxdWlyZWR9PgogICAgCQkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kdXNlci0+Z2V0KCRuYW1lKX0KICAgIAkJPC9zZWxlY3Q+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSA3fXsqIHJhZGlvYnV0bnMgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImdyaWRfMyI+eyRmaWVsZC0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c3BhbiBjbGFzcz0iZ3JpZF84Ij4KICAgIAkJICAgIHtmb3JlYWNoICRmaWVsZC0+b3B0aW9ucyBhcyAkdmFsID0+ICRsYmx9CgkJICAgICAgIDxzcGFuIGNsYXNzPSJyYWRpb2J0biI+CgkJICAgICAgICAgICA8aW5wdXQge2lmICRsYmxAZmlyc3R9aWQ9InByb3BfeyRuYW1lfSJ7L2lmfSB0eXBlPSJyYWRpbyIgbmFtZT0ieyRuYW1lfVtdIiB2YWx1ZT0ieyR2YWx9IiB7aWYgJHVzZXItPmdldCgkbmFtZSkgPT0gJHZhbH1jaGVja2Vkey9pZn0geyRyZXF1aXJlZH0+CgkJCSAgIDxzcGFuPnskbGJsfTwvc3Bhbj4KCQkgICAgICAgPC9zcGFuPgogICAgCQkgICAgICAge2lmICEkbGJsQGxhc3R9PGJyLz57L2lmfQogICAgCQkgICAgey9mb3JlYWNofQogICAgCQk8L3NwYW4+CiAgICAJICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSA4fXsqIGRhdGUgKn0KICAgIAkgICAgICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIj57JGZpZWxkLT5wcm9tcHR9OjwvbGFiZWw+CgkJPHNwYW4gY2xhc3M9ImdyaWRfOCI+CgkJICAgIHtodG1sX3NlbGVjdF9kYXRlIHRpbWU9JHVzZXItPmdldCgkbmFtZSkgc3RhcnRfeWVhcj0kZmllbGQtPmV4dHJhLnN0YXJ0X3llYXJ8ZGVmYXVsdDoxOTAwIGVuZF95ZWFyPSRmaWVsZC0+ZXh0cmEuZW5kX3llYXJ8ZGVmYXVsdDonKzIwJyBwcmVmaXg9InskbmFtZX0ifQoJICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIHtlbHNlIGlmICRmaWVsZC0+dHlwZSA9PSAxMH17KiB0ZWwgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImdyaWRfMyI+eyRmaWVsZC0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8aW5wdXQgaWQ9InByb3BfeyRuYW1lfSIgdHlwZT0idGV4dCIgY2xhc3M9ImdyaWRfOCIgbmFtZT0ieyRuYW1lfSIgdmFsdWU9InskdXNlci0+Z2V0KCRuYW1lKX0iIHskcmVxdWlyZWR9IHskcGF0dGVybn0geyRwbGFjZWhvbGRlcn0gLz4KICAgICAgICAgICAgey9pZn0KICAgICAgICA8L2Rpdj4KICAgIHsvZm9yZWFjaH0KCntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/after_verify.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CiAgICA8aDM+eyRtb2QtPkxhbmcoJ21zZ193ZWxjb21lJyl9IDxzcGFuPnskdXNlci0+dXNlcm5hbWV9PC9zcGFuPiA8ZW0+KHskZmV1X3VpZH0pPC9lbT48L2gzPgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+CiAgICAgICAgeyRmaW5hbF9tZXNzYWdlfQoJe2lmICRsb2dnZWRfaW59CgkgICAgeyogd2UgYXJlIGxvZ2dlZCBpbiwgd2UgY291bGQgbGluayB0byB0aGUgbWVtYmVycyBhcmUsIG9yIHJlZGlyZWN0IHRoZXJlICp9Cgl7ZWxzZX0KCSAgICB7KiB3ZSBjb3VsZCB1c2UgY21zX3NlbGZsaW5rIHRvIGxpbmsgdG8gYSBsb2dpbiBwYWdlICp9Cgl7L2lmfQogICAgPC9kaXY+CiAgICB7KiB3ZSBjb3VsZCBhbHNvIHJlZGlyZWN0IGhlcmUgaWYgd2Ugd2lzaGVkICp9CntlbHNlaWYgIWVtcHR5KCRlcnJvcil9CiAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskZXJyb3J9PC9kaXY+CntlbHNlfQogICAgPHA+SU5URVJOQUwgRVJST1IgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4pPC9wPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFjb3VudCgkdXNlcnMpfQogICAgPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdtc2dfbm91c2VycycpfTwvZGl2Pgp7ZWxzZX0KICAgIDx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICAgICAgICA8dGhlYWQ+CgkgICAgPHRyPgoJICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ2xibF91c2VybmFtZScpfTwvdGg+CgkgICAgICAgIDx0aD57JG1vZC0+TGFuZygnbGJsX2NyZWF0ZWQnKX08L3RoPgoJICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ2xibF9leHBpcmVkJyl9PC90aD4KCQk8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgoJICAgIDwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJICAgIHtmb3JlYWNoICR1c2VycyBhcyAkdXNlcn0KCSAgICAgICAge2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9lZGl0X3VzZXIgdWlkPSR1c2VyLT5pZCBhc3NpZ249J2VkaXRfdXJsJ30KCSAgICAgICAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSdyb3cxLHJvdzInfSI+CgkJICAgIDx0ZD48YSBocmVmPSJ7JGVkaXRfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCdsYmxfZWRpdCcpfSI+eyR1c2VyLT51c2VybmFtZX08L2E+PC90ZD4KCQkgICAgPHRkPnskdXNlci0+Y3JlYXRlZHxkYXRlX2Zvcm1hdDonJXggJUg6JU0nfTwvdGQ+CgkJICAgIDx0ZD5UT0RPPC90ZD4KCQkgICAgPHRkPjxhIGhyZWY9InskZWRpdF91cmx9Ij57YWRtaW5faWNvbiBpY29uPSdlZGl0LmdpZicgdGl0bGU9JG1vZC0+TGFuZygnbGJsX2VkaXQnKX08L2E+PC90ZD4KCQk8L3RyPgoJICAgIHsvZm9yZWFjaH0KCTwvdGJvZHk+CiAgICA8L3RhYmxlPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/post_register_message.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+VGhhbmsgeW91IGZvciByZWdpc3RlcmluZyB3aXRoIHVzLjwvcD4KPHA+VGhlcmUgaXMganVzdCBvbmUgbW9yZSBzdGVwLiBBbiBlbWFpbCBoYXMgYmVlbiBzZW50IHRvIDxzcGFuIGNsYXNzPSJlbWFpbCI+eyRlbWFpbH08L3NwYW4+IHRoYXQgY29udGFpbnMgYSBsaW5rLjwvcD4KPHA+VG8gY29uZmlybSB5b3VyIGFjY291bnQsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBpbiB0aGUgZW1haWwuPC9wPg==]]></data>
	</file>
	<file>
	  <filename>/templates/register.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRmaW5hbF9tZXNzYWdlfTwvZGl2PgogICAgeyogY291bGQgY2hhbmdlIG91ciBmaW5hbCBtZXNzYWdlIGhlcmUgKn0KICAgIHsqIGNvdWxkIGFsc28gZG8gcmVkaXJlY3Rpb24gaGVyZSAqfQoKe2Vsc2V9CgogICAge2lmICRlcnJvcn08ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskZXJyb3J9PC9kaXY+ey9pZn0KCiAgICB7Zm9ybV9zdGFydCBncm91cD0kZ3JvdXAuZ3JvdXBuYW1lIGlubGluZT0kaW5saW5lfXtjZ2VfZm9ybV9jc3JmfQogICAge2lmICFlbXB0eSgkcHJvcGVydGllcyl9CiAgICAgICAge2ZvcmVhY2ggJHByb3BlcnRpZXMgYXMgJG5hbWUgPT4gJHByb3BlcnR5fQogICAgICAgICAgICB7JHJlcXVpcmVkPScnfXtpZiAkcHJvcGVydHktPnJlcXVpcmVkPT0yfXskcmVxdWlyZWQ9J3JlcXVpcmVkJ317L2lmfQoJICAgIHskcGF0dGVybj0nJ317aWYgIWVtcHR5KCRwcm9wZXJ0eS0+ZXh0cmEucGF0dGVybil9eyRwYXR0ZXJuPSJwYXR0ZXJuPXskcHJvcGVydHktPmV4dHJhLnBhdHRlcm59In17L2lmfQoJICAgIHskcGxhY2Vob2xkZXI9Jyd9e2lmICFlbXB0eSgkcHJvcGVydHktPmV4dHJhLnBsYWNlaG9sZGVyKX17JHBsYWNlaG9sZGVyPSJwbGFjZWhvbGRlcj17JHByb3BlcnR5LT5leHRyYS5wbGFjZWhvbGRlcn0ifXsvaWZ9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyB7aWYgJHJlcXVpcmVkfXJlcXVpcmVkey9pZn0iPgogICAgICAgICAgICB7aWYgJHByb3BlcnR5LT50eXBlID09IC0xMDB9eyogcGFzc3dvcmQgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTxpbnB1dCBpZD0icHJvcF97JG5hbWV9IiB0eXBlPSJwYXNzd29yZCIgY2xhc3M9ImNvbC1zbS0xMCIgbmFtZT0ieyRuYW1lfSIgdmFsdWU9InskdXNlci0+Z2V0KCRuYW1lKX0iIHskcmVxdWlyZWR9IC8+CiAgICAgICAgICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAwfXsqIHRleHQgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTxpbnB1dCBpZD0icHJvcF97JG5hbWV9IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sLXNtLTEwIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0ieyR1c2VyLT5nZXQoJG5hbWUpfSIgeyRyZXF1aXJlZH0geyRwYXR0ZXJufSB7JHBsYWNlaG9sZGVyfSAvPgogICAgCSAgICB7ZWxzZSBpZiAkcHJvcGVydHktPnR5cGUgPT0gMX17KiBjaGVja2JveCAqfQogICAgCSAgICAgICAgPGxhYmVsIGZvcj0icHJvcF97JG5hbWV9IiBjbGFzcz0iY29sLXNtLTIiPnskcHJvcGVydHktPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNwYW4gY2xhc3M9ImNvbC1zbS0xMCI+CiAgICAJCSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMCIvPgogICAgCQkgICAgPGlucHV0IGlkPSJwcm9wX3skbmFtZX0iIHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iY29sLXNtLTEwIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0iMSIge2lmICR1c2VyLT5nZXQoJG5hbWUpfWNoZWNrZWR7L2lmfSB7JHJlcXVpcmVkfSAvPgogICAgCQk8L3NwYW4+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAyfXsqIGVtYWlsICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8aW5wdXQgaWQ9InByb3BfeyRuYW1lfSIgdHlwZT0iZW1haWwiIGNsYXNzPSJjb2wtc20tMTAiIG5hbWU9InskbmFtZX0iIHZhbHVlPSJ7JHVzZXItPmdldCgkbmFtZSl9IiB7JHJlcXVpcmVkfSB7JHBhdHRlcm59IHskcGxhY2Vob2xkZXJ9IC8+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAzfXsqIHRleHRhcmVhICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8dGV4dGFyZWEgaWQ9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0xMCIgbmFtZT0ieyRuYW1lfSIgeyRyZXF1aXJlZH0+eyR1c2VyLT5nZXQoJG5hbWUpfTwvdGV4dGFyZWE+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSA0fXsqIGRyb3Bkb3duICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c2VsZWN0IGlkPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMTAiIG5hbWU9InskbmFtZX0iIHskcmVxdWlyZWR9PgogICAgCQkgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRwcm9wZXJ0eS0+b3B0aW9ucyBzZWxlY3RlZD0kdXNlci0+Z2V0KCRuYW1lKX0KICAgIAkJPC9zZWxlY3Q+CiAgICAJICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSA1fXsqIG11bHRpc2VsZWN0ICp9CiAgICAJICAgICAgICA8bGFiZWwgZm9yPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMiI+eyRwcm9wZXJ0eS0+cHJvbXB0fTo8L2xhYmVsPgogICAgCQk8c2VsZWN0IGlkPSJwcm9wX3skbmFtZX0iIGNsYXNzPSJjb2wtc20tMTAiIG5hbWU9InskbmFtZX1bXSIgbXVsdGlwbGUgeyRyZXF1aXJlZH0+CiAgICAJCSAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JHByb3BlcnR5LT5vcHRpb25zIHNlbGVjdGVkPSR1c2VyLT5nZXQoJG5hbWUpfQogICAgCQk8L3NlbGVjdD4KICAgIAkgICAge2Vsc2UgaWYgJHByb3BlcnR5LT50eXBlID09IDd9eyogcmFkaW9idXRucyAqfQogICAgCSAgICAgICAgPGxhYmVsIGZvcj0icHJvcF97JG5hbWV9IiBjbGFzcz0iY29sLXNtLTIiPnskcHJvcGVydHktPnByb21wdH06PC9sYWJlbD4KICAgIAkJPHNwYW4gY2xhc3M9ImNvbC1zbS0xMCI+CiAgICAJCSAgICB7Zm9yZWFjaCAkcHJvcGVydHktPm9wdGlvbnMgYXMgJHZhbCA9PiAkbGJsfQoJCSAgICAgICA8c3BhbiBjbGFzcz0icmFkaW9idG4iPgoJCSAgICAgICAgICAgPGlucHV0IHtpZiAkbGJsQGZpcnN0fWlkPSJwcm9wX3skbmFtZX0iey9pZn0gdHlwZT0icmFkaW8iIG5hbWU9InskbmFtZX1bXSIgdmFsdWU9InskdmFsfSIge2lmICR1c2VyLT5nZXQoJG5hbWUpID09ICR2YWx9Y2hlY2tlZHsvaWZ9IHskcmVxdWlyZWR9PgoJCQkgICA8c3Bhbj57JGxibH08L3NwYW4+CgkJICAgICAgIDwvc3Bhbj4KICAgIAkJICAgICAgIHtpZiAhJGxibEBsYXN0fTxici8+ey9pZn0KICAgIAkJICAgIHsvZm9yZWFjaH0KICAgIAkJPC9zcGFuPgogICAgCSAgICB7ZWxzZSBpZiAkcHJvcGVydHktPnR5cGUgPT0gOH17KiBkYXRlICp9CiAgICAJICAgICAgICA8bGFiZWwgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CgkJPHNwYW4gY2xhc3M9ImNvbC1zbS0xMCI+CgkJICAgIHtodG1sX3NlbGVjdF9kYXRlIHRpbWU9JHVzZXItPmdldCgkbmFtZSkgc3RhcnRfeWVhcj0kcHJvcGVydHktPmV4dHJhLnN0YXJ0X3llYXJ8ZGVmYXVsdDoxOTAwIGVuZF95ZWFyPSRwcm9wZXJ0eS0+ZXh0cmEuZW5kX3llYXJ8ZGVmYXVsdDonKzIwJyBwcmVmaXg9InskbmFtZX0ifQoJICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIHtlbHNlIGlmICRwcm9wZXJ0eS0+dHlwZSA9PSAxMH17KiB0ZWwgKn0KICAgIAkgICAgICAgIDxsYWJlbCBmb3I9InByb3BfeyRuYW1lfSIgY2xhc3M9ImNvbC1zbS0yIj57JHByb3BlcnR5LT5wcm9tcHR9OjwvbGFiZWw+CiAgICAJCTxpbnB1dCBpZD0icHJvcF97JG5hbWV9IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sLXNtLTEwIiBuYW1lPSJ7JG5hbWV9IiB2YWx1ZT0ieyR1c2VyLT5nZXQoJG5hbWUpfSIgeyRyZXF1aXJlZH0geyRwYXR0ZXJufSB7JHBsYWNlaG9sZGVyfSAvPgogICAgICAgICAgICB7L2lmfQogICAgCSAgICA8L2Rpdj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICB7L2lmfQoKICAgIHsqIG9wdGlvbmFsIGNhcHRjaGEgKn0KICAgIHtpZiAkY2FwdGNoYX0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FwdGNoYSI+CgkgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+eyRjYXB0Y2hhfTwvZGl2PgoJCXtpZiAkY2FwdGNoYV9pbnB1dF9uYW1lfQoJICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPnskbW9kLT5MYW5nKCdwcm9tcHRfY2FwdGNoYScpfTwvZGl2PgoJICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvbC1zbS02IiBuYW1lPSJ7JGNhcHRjaGFfaW5wdXRfbmFtZX0iIGF1dG9jb21wbGV0ZT0ib2ZmIi8+CgkgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIHsvaWZ9CgkgICAgPC9kaXY+CiAgICB7L2lmfQoKICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygncmVnaXN0ZXInKX0iLz4KICAgIDwvZGl2PgogICAge2Zvcm1fZW5kfQoKey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/repeatcode.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRmaW5hbF9tZXNzYWdlfTwvZGl2PgogICAgeyogY291bGQgY2hhbmdlIG91ciBmaW5hbCBtZXNzYWdlIGhlcmUgKn0KICAgIHsqIGNvdWxkIGFsc28gZG8gcmVkaXJlY3Rpb24gaGVyZSAqfQoKe2Vsc2V9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtb2QtPkxhbmcoJ2luZm9fcmVwZWF0Y29kZScpfTwvZGl2PgoKICAgIHtpZiAkZXJyb3J9PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIj57JGVycm9yfTwvZGl2PnsvaWZ9CgogICAge2Zvcm1fc3RhcnQgaW5saW5lPSRpbmxpbmV9e2NnZV9mb3JtX2NzcmZ9CiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KCSAgICA8bGFiZWwgZm9yPSJ1c2VybmFtZSIgY2xhc3M9ImNvbC1zbS02Ij57JG1vZC0+TGFuZygncHJvbXB0X3VzZXJuYW1lZW1haWwnKX08L2xhYmVsPgoJICAgIDxpbnB1dCBpZD0idXNlcm5hbWUiIGNsYXNzPSJjb2wtc20tNiIgdHlwZT0ieyRpbnB1dF90eXBlfSIgdmFsdWU9InskdXNlcm5hbWV9IiBuYW1lPSJ7JGFjdGlvbmlkfXVzZXJuYW1lIiByZXF1aXJlZCBhdXRvY29tcGxldGU9Im9mZiIvPgoJPC9kaXY+CgogICAgICAgIHsqIG9wdGlvbmFsIGNhcHRjaGEgKn0KICAgICAgICB7aWYgJGNhcHRjaGF9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcHRjaGEiPgoJICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPnskY2FwdGNoYX08L2Rpdj4KCQl7aWYgJGNhcHRjaGFfaW5wdXRfbmFtZX0KCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02Ij57JG1vZC0+TGFuZygncHJvbXB0X2NhcHRjaGEnKX08L2Rpdj4KCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2wtc20tNiIgbmFtZT0ieyRjYXB0Y2hhX2lucHV0X25hbWV9IiBhdXRvY29tcGxldGU9Im9mZiIvPgoJICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICB7L2lmfQoJICAgIDwvZGl2PgogICAgICAgIHsvaWZ9CgogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2VuZGNvZGUnKX0iLz4KICAgICAgICA8L2Rpdj4KICAgIHtmb3JtX2VuZH0KCnsvaWZ9]]></data>
	</file>
</module>
