<?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>CGTweet</name>
	<version>1.3</version>
    <mincmsversion>2.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPkNHVHdlZXQgaXMgYSBtb2R1bGUgZm9yIHJlYWRpbmcgZnJvbSwgYW5kIHdyaXRpbmcgdG8gdHdpdHRlci4gIEl0IGlzIGNhcGFibGUgb2YgdHdlZXRpbmcgbWVzc2FnZXMgZm9yIGFueSBGcm9udGVuZCB1c2VyLCBhbmQgZGlzcGxheWluZyBhIHNpbXBsZSB0aW1lbGluZSBmb3IgYSB1c2VyIGFjY291bnQuPC9wPgo8aDM+RmVhdHVyZXM8L2gzPgo8dWw+CiAgPGxpPkNyZWF0ZXMgYSB1c2VyIHByb3BlcnR5IGluIEZFVSBmb3Igc3RvcmluZyBhIHVzZXJzIHR3aXR0ZXIgY3JlZGVudGlhbHMuPC9saT4KICA8bGk+UHJvdmlkZXMgYSBmb3JtIGZvciBhbGxvd2luZyB0aGUgdXNlciB0byBhbGxvdyB5b3VyIGFwcCA8ZW0+KHdlYnNpdGUpPC9lbT4gdG8gdHdlZXQgZm9yIHRoZW0uPC9saT4KICA8bGk+UHJvdmlkZXMgYW4gQVBJIGZvciBzZW5kaW5nIHR3ZWV0cy48L2xpPgogIDxsaT5Qcm92aWRlcyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDR05vdGlmaWVyIG1vZHVsZSB0byBhbGxvdyBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdmlhIHR3aXR0ZXIuPC9saT4KICA8bGk+UHJvdmlkZXMgaW50ZXJlY3Rpb24gd2l0aCB0aGUgQ0dTb2NpYWxCbGFzdGVyIG1vZHVsZSB0byBhbGxvdyBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdG8gbXVsdGlwbGUgc29jaWFsIG5ldHdvcmtzIGF0IG9uY2UgZnJvbSBtb2R1bGVzIGxpa2UgQ0dCbG9nLjwvbGk+CiAgPGxpPlByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGRpc3BsYXkgYSB0aW1lbGluZSBmcm9tIGEgdHdpdHRlciBhY2NvdW50LCB3aXRoIGNhY2hpbmcgY2FwYWJpbGl0aWVzIGFuZCBjb21wbGV0ZSB0ZW1wbGF0ZSBjb250cm9sLjwvbGk+CiAgPGxpPkNhbiBhdXRvbWF0aWNhbGx5IHNob3J0ZW4gVVJMUyBvZiB0d2VldHMgdmlhIHRoZSBDR1RpbnkgbW9kdWxlLjwvbGk+CjwvdWw+CjxoMz5Ib3cgZG8gSSBVc2UgaXQ/PC9oMz4KPHVsPgogIDxsaT4xLiAgQ3JlYXRlIGEgdHdpdHRlciBhcHAgYXQgPGEgaHJlZj0iaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vIj5odHRwczovL2Rldi50d2l0dGVyLmNvbS88L2E+IGFuZCByZW1lbWJlciB0aGUgY29uc3VtZXIgc2VjcmV0IGFuZCBjb25zdW1lciBrZXkuPC9saT4KICA8bGk+Mi4gIEVudGVyIHRoZSBjb25zdW1lciBrZXkgYW5kIGNvbnN1bWVyIHNlY3JldCBpbiB0aGUgbW9kdWxlcyBhZG1pbiBjb25zb2xlLjwvbGk+CiAgPGxpPjMuICBDb25maWd1cmUgYSB0d2l0dGVyIGFjY291bnQgdGhhdCB3aWxsIGFsbG93IHlvdXIgYXBwIHRvIHNlbmQgZ2VuZXJpYyB0d2VldHMuICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gZG8gdGhpczoKICAgICA8dWw+CiAgICAgICA8bGk+YS4gQ2xpY2sgb24gdGhlIDxzdHJvbmc+QXV0aG9yaXplIHZpYSBUd2l0dGVyPC9zdHJvbmc+IGxpbmsgaW4gdGhlIGFkbWluIHBhbmVsIHRvIHVzZSBhIGd1aWRlZCBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLjwvbGk+CiAgICAgICA8bGk+Yi4gTWFudWFsbHkgZW50ZXIgdGhlIEFjY2VzcyBUb2tlbiBhbmQgQWNjZXNzIFRva2VuIHNlY3JldCBhdmFpbGFibGUgaW4gdGhlIHR3aXR0ZXIgYWNjb3VudCBwcm9maWxlLjwvbGk+CiAgICAgPC91bD4KICA8L2xpPgogIDxsaT40LiAgKG9wdGlvbmFsKSAtIGNhbGwge0NHVHdlZXQgYWN0aW9uPWF1dGhvcml6ZX0gb24gYSBwYWdlLiAgVGhpcyB3aWxsIGFsbG93IGF1dGhlbnRpY2F0ZWQgRkVVIHVzZXJzIHRvIGFzc29jaWF0ZSB0aGVpciB0d2l0dGVyIGNyZWRlbnRpYWxzIHdpdGggdGhlaXIgRkVVIGFjY291bnQuICAgWW91ciBhcHAgd2lsbCB0aGVuIGJlIGFibGUgdG8gdHdlZXQgb24gdGhlaXIgYmVoYWxmLjwvbGk+CiAgPGxpPjUuICAob3B0aW9uYWwpIC0gY2FsbCB7Q0dUd2VldCBhY3Rpb249dGltZWxpbmV9IG9uIGEgcGFnZS4gIFRoaXMgd2lsbCBkaXNwbGF5IGEgdGltZWxpbmUgb2YgdHdlZXRzIGZvciB0aGUgYWNjb3VudCBzcGVjaWZpZWQgaW4gdGhlIG1vZHVsZXMgYWRtaW4gcGFuZWwuPC9saT4KPC91bD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD48aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjU3LjE8L2xpPjxsaT5Gcm9udEVuZFVzZXJzID0mZ3Q7IDIuNS4yPC9saT48bGk+Q0dTaW1wbGVTbWFydHkgPSZndDsgMi4xLjc8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249IiIgLSBEZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBtb2R1bGUgb24gYSBmcm9udGVuZCByZXF1ZXN0LiAgUG9zc2libGUgdmFsdWVzIGFyZTogJnF1b3Q7YXV0aG9yaXplJnF1b3Q7IGFuZCAmcXVvdDt0aW1lbGluZSZxdW90Oy4gIFRoaXMgbW9kdWxlIGhhcyBubyBkZWZhdWx0IGFjdGlvbi48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGF1dGh0ZW1wbGF0ZT0iIiAtIEFwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7YXV0aG9yaXplJnF1b3Q7IGFjdGlvbiwgaXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgYSBub24gZGVmYXVsdCBhdXRob3JpemF0aW9uIHRlbXBsYXRlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gaW5saW5lPSIiIC0gKGludGVnZXIpIEFwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7YXV0aG9yaXplJnF1b3Q7IGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoYXQgdGhlIGZvcm0gc2hvdWxkIGJlIGNyZWF0ZWQgaW5saW5lLiBBbnkgbm9uIHplcm8gdmFsdWUgY2FuIGJlIHNwZWNpZmllZC48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNvdW50PSIiIC0gKGludGVnZXIpIEFwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7dGltZWxpbmUmcXVvdDsgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0d2VldHMgdG8gZGlzcGxheS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDIwPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkZWVwPSIiIC0gKGludGVnZXIpIEFwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7dGltZWxpbmUmcXVvdDsgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhhdCBlbnRpdGllcyAoc3VjaCBhcyBtZWRpYSwgdXJscywgaGFzaHRhZ3MgZXRjKSBpbiB0aGUgb3V0cHV0LiAgQnkgZGVmYXVsdCB0aGlzIG9wdGlvbiBpcyBvZmYuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBub3JlcGxpZXM9IiIgLSAoaW50ZWdlcikgQXBwbGljYWJsZSBvbmx5IHRvIHRoZSAmcXVvdDt0aW1lbGluZSZxdW90OyBhY3Rpb24uICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBleGNsdWRlIHJlcGxpZXMgdG8gdHdlZXRzIGluIHRoZSBnZW5lcmF0ZWQgb3V0cHV0LiAgQnkgZGVmYXVsdCByZXBsaWVzIHdpbGwgYmUgaW5jbHVkZWQuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiByZXR3ZWV0cz0iIiAtIChpbnRlZ2VyKSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlICZxdW90O3RpbWVsaW5lJnF1b3Q7IGFjdGlvbi4gIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGluY2x1ZGUgcmV0d2VldHMgaW4gdGhlIGdlbmVyYXRlZCBvdXRwdXQuICBCeSBkZWZhdWx0IHRoaXMgb3B0aW9uIGlzIG9mZi48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRpbWVsaW5ldGVtcGxhdGU9IiIgLSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlICZxdW90O3RpbWVsaW5lJnF1b3Q7IGFjdGlvbi4gIFRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIGEgbm9uIGRlZmF1bHQgdGltZWxpbmUgdGVtcGxhdGU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHVzZXI9IiIgLSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlICZxdW90O3RpbWVsaW5lJnF1b3Q7IGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSB0d2l0dGVyIHVzZXIgaWQgb3Igc2NyZWVuIG5hbWUgdG8gZmlsdGVyIG1lc3NhZ2VzIGJ5PC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMzxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KICA8bGk+VmVyc2lvbiAxLjAgLSBJbml0aWFsIFJlbGVhc2U8L2xpPgogIDxsaT5WZXJzaW9uIDEuMQogICAgPHVsPgogICAgICA8bGk+VXBncmFkZWQgdG8gbGF0ZXN0IHZlcnNpb24gb2YgdHdpdHRlcm9hdXRoIC4uLiBzdXBwb3J0cyB0d2l0dGVyIDEuMS48L2xpPgogICAgICA8bGk+QWRkcyBhbiBpY29uLjwvbGk+CiAgICAgIDxsaT5Ob3cgc3VwcG9ydHMgQ0dTb2NpYWxCbGFzdGVyLjwvbGk+CiAgICAgIDxsaT5JbXByb3ZlZCBlcnJvciBoYW5kbGluZy48L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDEuMgogICAgPHVsPgogICAgICA8bGk+QWRkcyB0aGUgdXNlciBwYXJhbWV0ZXIgdG8gYWxsb3cgdmlld2luZyB0aW1lbGluZXMgZm9yIGRpZmZlcmVudCB1c2Vycy48L2xpPgogICAgPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAxLjMKCTx1bD4KCTxsaT5Ob3cgbm90aWZpY2F0aW9ucyBhcmUgc2VudCBhcyBETSBtZXNzYWdlcy48L2xpPgoJPGxpPk5vdyB3b3JrcyB3aXRoIG5ldyBDR05vdGlmaWVyLjwvbGk+Cgk8bGk+Tm93IHdvcmtzIHdpdGggbmV3IENHU29jaWFsQmxhc3RlcjwvbGk+Cgk8bGk+VHdlYWtzIHRvIHNob3J0ZW5pbmcgYmVoYXZpb3IuPC9saT4KCTxsaT5BZG1pbiB1c2VycyBjYW4gbm93IGVudGVyIHRoZWlyIHR3aXR0ZXIgc2NyZWVuIG5hbWUuPC9saT4KCTxsaT5tb3JlLi4uPC9saT4KCTwvdWw+CiAgPC9saT4KPC91bD4KPGJyIC8+]]></about>
	<description><![CDATA[A module for sending tweets]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.57.1</requiredversion>
	</requires>
	<requires>
	  <requiredname>FrontEndUsers</requiredname>
	  <requiredversion>2.5.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGSimpleSmarty</requiredname>
	  <requiredversion>2.1.7</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_authorize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNvbnZlcnNpb24gb2YgcG9zdGFsIGNvZGVzCiMgIGZyb20gdGhlIGdlb25hbWUgc2VydmljZS4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSBleGl0OwoKcmVxdWlyZV9vbmNlKF9fRElSX18uJy9saWIvdHdpdHRlcm9hdXRoL3R3aXR0ZXJvYXV0aC5waHAnKTsKCiRjb25zdW1lcl9rZXkgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9rZXknKSk7CiRjb25zdW1lcl9zZWNyZXQgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9zZWNyZXQnKSk7CmlmKCAkY29uc3VtZXJfa2V5ID09ICcnIHx8ICRjb25zdW1lcl9zZWNyZXQgPT0gJycgKSB7CiAgJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3NldHRpbmdzJyk7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9jb25zdW1lcl9zZXR0aW5ncycpKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwp9CgokY29ubmVjdGlvbiA9IG5ldyBUd2l0dGVyT0F1dGgoJGNvbnN1bWVyX2tleSwkY29uc3VtZXJfc2VjcmV0KTsKJHVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdtMV8nLCdhZG1pbl9hdXRob3JpemUyJyk7CiR1cmwgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywkdXJsKTsKJHJlcXVlc3RfdG9rZW4gPSAkY29ubmVjdGlvbi0+Z2V0UmVxdWVzdFRva2VuKCR1cmwpOwppZiggaXNfYXJyYXkoJHJlcXVlc3RfdG9rZW4pICkgewogICRzZXNzID0gbmV3IGNnZV9zZXNzaW9uKCR0aGlzLT5HZXROYW1lKCkpOwogICR0b2tlbiA9ICRyZXF1ZXN0X3Rva2VuWydvYXV0aF90b2tlbiddOwogICRzZXNzLT5wdXQoJ29hdXRoX3Rva2VuJywkcmVxdWVzdF90b2tlblsnb2F1dGhfdG9rZW4nXSk7CiAgJHNlc3MtPnB1dCgnb2F1dGhfdG9rZW5fc2VjcmV0JywkcmVxdWVzdF90b2tlblsnb2F1dGhfdG9rZW5fc2VjcmV0J10pOwp9Cgpzd2l0Y2goJGNvbm5lY3Rpb24tPmh0dHBfY29kZSkgewogY2FzZSAyMDA6CiAgICR1cmwgPSAkY29ubmVjdGlvbi0+Z2V0QXV0aG9yaXplVVJMKCR0b2tlbik7CiAgIHJlZGlyZWN0KCR1cmwpOwogICBicmVhazsKCiBkZWZhdWx0OgogICR0aGlzLT5TZXRDdXJyZW50VGFiKCdzZXR0aW5ncycpOwogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY29ubmVjdCcpKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogIGJyZWFrOwp9CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_authorize2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgY29udmVyc2lvbiBvZiBwb3N0YWwgY29kZXMKIyAgZnJvbSB0aGUgZ2VvbmFtZSBzZXJ2aWNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSBleGl0OwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvbGliL3R3aXR0ZXJvYXV0aC90d2l0dGVyb2F1dGgucGhwJyk7CgokdGhpcy0+U2V0Q3VycmVudFRhYignc2V0dGluZ3MnKTsKCiRjb25zdW1lcl9rZXkgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9rZXknKSk7CiRjb25zdW1lcl9zZWNyZXQgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9zZWNyZXQnKSk7CmlmKCAkY29uc3VtZXJfa2V5ID09ICcnIHx8ICRjb25zdW1lcl9zZWNyZXQgPT0gJycgKSB7CiAgJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3NldHRpbmdzJyk7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9jb25zdW1lcl9zZXR0aW5ncycpKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwp9Cgokc2VzcyA9IG5ldyBjZ2Vfc2Vzc2lvbigkdGhpcy0+R2V0TmFtZSgpKTsKaWYoIGlzc2V0KCRfUkVRVUVTVFsnb2F1dGhfdG9rZW4nXSkgJiYgJHNlc3MtPmdldCgnb2F1dGhfdG9rZW4nKSAhPT0gJF9SRVFVRVNUWydvYXV0aF90b2tlbiddICkgewogICRzZXNzLT5jbGVhcigpOwogICR0aGlzLT5TZXRDdXJyZW50VGFiKCdzZXR0aW5ncycpOwogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfb2xkdG9rZW4nKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKfQoKJGNvbm5lY3Rpb24gPSBuZXcgVHdpdHRlck9BdXRoKCRjb25zdW1lcl9rZXksJGNvbnN1bWVyX3NlY3JldCwKCQkJICAgICAgICRzZXNzLT5nZXQoJ29hdXRoX3Rva2VuJyksCgkJCSAgICAgICAkc2Vzcy0+Z2V0KCdvYXV0aF90b2tlbl9zZWNyZXQnKSk7CiRhY2Nlc3NfdG9rZW4gPSAkY29ubmVjdGlvbi0+Z2V0QWNjZXNzVG9rZW4oJF9SRVFVRVNUWydvYXV0aF92ZXJpZmllciddKTsKJHNlc3MtPmNsZWFyKCk7CgppZiggJGNvbm5lY3Rpb24tPmh0dHBfY29kZSA9PSAyMDAgKSB7CiAgLy8gc2F2ZSB0aGUgYWNjZXNzIHRva2VuIHRvIHRoZSBtb2R1bGUgcHJlZnMuCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWNjZXNzX3Rva2VuJyxjZ3R3ZWV0X3V0aWxzOjplbmNyeXB0KCRhY2Nlc3NfdG9rZW5bJ29hdXRoX3Rva2VuJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhY2Nlc3NfdG9rZW5fc2VjcmV0JyxjZ3R3ZWV0X3V0aWxzOjplbmNyeXB0KCRhY2Nlc3NfdG9rZW5bJ29hdXRoX3Rva2VuX3NlY3JldCddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VuZGVyX25hbWUnLCRhY2Nlc3NfdG9rZW5bJ3NjcmVlbl9uYW1lJ10pOwogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ19hY2Nlc3N0b2tlbnNfZ29vZCcpKTsKfQplbHNlIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2FjY2Vzc3Rva2VucycpKTsKfQokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_mytwitter_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dUd2VldDo6VVNFUl9QRVJNKSApIGV4aXQ7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdteXR3aXR0ZXInKTsKCnRyeSB7CiAgICBpZiggXGNnZV9wYXJhbTo6ZXhpc3RzKCAkcGFyYW1zLCdzdWJtaXQnKSApIHsKICAgICAgICBjZ3R3ZWV0X3V0aWxzOjpzZXRfbXlfc2NyZWVuX25hbWUoIFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdzY3JlZW5fbmFtZScgKSApOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7CiAgICB9CgogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnYWRtaW5fbXl0d2l0dGVyX3RhYi50cGwnKTsKICAgICR0cGwtPmFzc2lnbignc2NyZWVuX25hbWUnLGNndHdlZXRfdXRpbHM6OmdldF9teV9zY3JlZW5fbmFtZSgpKTsKICAgICR0cGwtPmFzc2lnbignc2VuZGVyX25hbWUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZW5kZXJfbmFtZScpKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICR0aGlzLT5TZXRNZXNzYWdlKCAkZS0+R2V0TWVzc2FnZSgpICk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSBleGl0OwokdGhpcy0+U2V0Q3VycmVudFRhYignc2V0dGluZ3MnKTsKCmlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywnc3VibWl0JykgKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJpZW5kbHluYW1lJyx0cmltKCRwYXJhbXNbJ2ZyaWVuZGx5bmFtZSddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29uc3VtZXJfa2V5JyxjZ3R3ZWV0X3V0aWxzOjplbmNyeXB0KHRyaW0oJHBhcmFtc1snY29uc3VtZXJfa2V5J10pKSk7CiAgICAkYSA9IGNndHdlZXRfdXRpbHM6OmVuY3J5cHQodHJpbSgkcGFyYW1zWydjb25zdW1lcl9zZWNyZXQnXSkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NvbnN1bWVyX3NlY3JldCcsJGEpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FjY2Vzc190b2tlbicsY2d0d2VldF91dGlsczo6ZW5jcnlwdCh0cmltKCRwYXJhbXNbJ2FjY2Vzc190b2tlbiddKSkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FjY2Vzc190b2tlbl9zZWNyZXQnLGNndHdlZXRfdXRpbHM6OmVuY3J5cHQodHJpbSgkcGFyYW1zWydhY2Nlc3NfdG9rZW5fc2VjcmV0J10pKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmV1X3NjcmVlbm5hbWVfcHJvcCcsXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdmZXVfc2NyZWVubmFtZV9wcm9wJykpOwogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ3NldHRpbmdzX2NoYW5nZWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CgovLyBrZXlzIGFyZSBlbmNyeXB0ZWQuCiRzbWFydHktPmFzc2lnbignY29uc3VtZXJfa2V5JyxjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9rZXknKSkpOwokYSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9zZWNyZXQnKTsKJGIgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCRhKTsKJHNtYXJ0eS0+YXNzaWduKCdmcmllbmRseW5hbWUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnKSk7CiRzbWFydHktPmFzc2lnbignY29uc3VtZXJfc2VjcmV0JyxjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb25zdW1lcl9zZWNyZXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2FjY2Vzc190b2tlbicsY2d0d2VldF91dGlsczo6ZGVjcnlwdCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWNjZXNzX3Rva2VuJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdhY2Nlc3NfdG9rZW5fc2VjcmV0JyxjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhY2Nlc3NfdG9rZW5fc2VjcmV0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmZXVfc2NyZWVubmFtZV9wcm9wJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZldV9zY3JlZW5uYW1lX3Byb3AnKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3NldHRpbmdzX3RhYi50cGwnKTsK]]></data>
	</file>
	<file>
	  <filename>/action.admin_testtweet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNvbnZlcnNpb24gb2YgcG9zdGFsIGNvZGVzCiMgIGZyb20gdGhlIGdlb25hbWUgc2VydmljZS4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSBleGl0OwoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3NldHRpbmdzJyk7Cgp0cnkgewogICRtc2cgPSBuZXcgbm90aWZpY2F0aW9uX21lc3NhZ2U7CiAgJG1zZy0+Ym9keSA9ICdDR1R3ZWV0IGlzIGFsaXZlISBhdCAnLnRpbWUoKS4nIGZyb20gQGNhbGd1eTEwMDAuIGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcnOwogICR0aGlzLT5zZW5kX21lc3NhZ2UoJG1zZyk7CiAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ190d2VldHNlbnQnKSk7Cn0KY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.authorize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHVHdlZXQgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGludGVyYWN0aW5nIHdpdGggdHdpdHRlci4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGlubGluZSA9IDA7CiRhdXRoc3RlcCA9IDE7CiRmZXUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKJHVpZCA9ICRmZXUtPkxvZ2dlZEluSWQoKTsKaWYoICR1aWQgPD0gMCApIHsKICAvLyB1c2VyIGlzIG5vdCBsb2dnZWQgaW4gLi4uIG5vdGhpbmcgd2UgY2FuIGRvLgogIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ2F1dGhvcml6ZSBhY3Rpb24gb24gcGFnZSAnLiRyZXR1cm5pZC4nOiB1c2VyIG5vdCBsb2dnZWQgaW4nKTsKICByZXR1cm47Cn0KJGZldS0+U2V0RW5jcnlwdGlvbktleSgkdWlkKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ2F1dGhzdGVwJ10pICkgewogICRhdXRoc3RlcCA9IChpbnQpJHBhcmFtc1snYXV0aHN0ZXAnXTsKfQppZiggaXNzZXQoJHBhcmFtc1snaW5saW5lJ10pICkgewogICRpbmxpbmUgPSAoaW50KSRpbmxpbmU7Cn0KJGNvbnN1bWVyX2tleSA9IGNndHdlZXRfdXRpbHM6OmRlY3J5cHQoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NvbnN1bWVyX2tleScpKTsKJGNvbnN1bWVyX3NlY3JldCA9IGNndHdlZXRfdXRpbHM6OmRlY3J5cHQoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NvbnN1bWVyX3NlY3JldCcpKTsKaWYoICRjb25zdW1lcl9rZXkgPT0gJycgfHwgJGNvbnN1bWVyX3NlY3JldCA9PSAnJyApIHsKICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdhdXRob3JpemUgYWN0aW9uIG9uIHBhZ2UgJy4kcmV0dXJuaWQuJzogY29uc3VtZXIga2V5IGFuZCBzZWNyZXQgbm90IHNldCcpOwogIHJldHVybjsKfQoKJHNtYXJ0eS0+YXNzaWduKCdhdXRoc3RlcCcsJGF1dGhzdGVwKTsKc3dpdGNoKCAkYXV0aHN0ZXAgKSB7CiBjYXNlIDE6CiAgIHsKICAgICAkcHJvcCA9IG51bGw7CiAgICAgJHJhd3Byb3AgPSAkZmV1LT5HZXRVc2VyUHJvcGVydHkoJ19fJy4kdGhpcy0+R2V0TmFtZSgpLidfXycpOwogICAgIGlmKCAkcmF3cHJvcCApIHsKICAgICAgICRyYXdwcm9wID0gY2d0d2VldF91dGlsczo6ZGVjcnlwdCgkcmF3cHJvcCk7CiAgICAgICAkcHJvcCA9IHVuc2VyaWFsaXplKCRyYXdwcm9wKTsKICAgICAgIGlmKCAhaXNfYXJyYXkoJHByb3ApIAoJICAgfHwgIWlzc2V0KCRwcm9wWydvYXV0aF90b2tlbiddKSAKCSAgIHx8ICFpc3NldCgkcHJvcFsnb2F1dGhfdG9rZW5fc2VjcmV0J10pICkgewoJICRwcm9wID0gbnVsbDsKICAgICAgIH0KICAgICB9CgogICAgIGlmKCAhJHByb3AgKSB7CiAgICAgICAvLyB3ZSBoYXZlIG5vIGF1dGggaW5mbyAuLi4gCiAgICAgICAkcGFybXMgPSAkcGFyYW1zOwogICAgICAgJHBhcm1zWydhdXRoc3RlcCddID0gMjsKICAgICAgICR1cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2F1dGhvcml6ZScsJHJldHVybmlkLCRwYXJtcywkaW5saW5lKTsKICAgICAgICRzbWFydHktPmFzc2lnbigndXJsX2F1dGhvcml6ZScsJHVybCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgaWYoIGlzc2V0KCRwcm9wWydzY3JlZW5fbmFtZSddKSApIHsKCSAkc21hcnR5LT5hc3NpZ24oJ3NjcmVlbl9uYW1lJywkcHJvcFsnc2NyZWVuX25hbWUnXSk7CiAgICAgICB9CiAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5MYW5nKCdtc2dfYXV0aF9rbm93bicpKTsKICAgICB9CiAgIH0KICAgYnJlYWs7CgogY2FzZSAyOgogICB7CiAgICAgLy8gcmVkaXJlY3QgdG8gdHdpdHRlciBmb3IgYXV0aG9yaXphdGlvbi4KICAgICByZXF1aXJlX29uY2UoX19ESVJfXy4nL2xpYi90d2l0dGVyb2F1dGgvdHdpdHRlcm9hdXRoLnBocCcpOwogICAgICRjb25uZWN0aW9uID0gbmV3IFR3aXR0ZXJPQXV0aCgkY29uc3VtZXJfa2V5LCRjb25zdW1lcl9zZWNyZXQpOwogICAgICRwYXJtcyA9ICRwYXJhbXM7CiAgICAgJHBhcm1zWydhdXRoc3RlcCddID0gMzsKICAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdhdXRob3JpemUnLCRyZXR1cm5pZCwkcGFybXMsJGlubGluZSk7CiAgICAgJHVybCA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCR1cmwpOwogICAgICRyZXF1ZXN0X3Rva2VuID0gJGNvbm5lY3Rpb24tPmdldFJlcXVlc3RUb2tlbigkdXJsKTsKICAgICBpZiggaXNfYXJyYXkoJHJlcXVlc3RfdG9rZW4pICkgewogICAgICAgJHNlc3MgPSBuZXcgY2dlX3Nlc3Npb24oJHRoaXMtPkdldE5hbWUoKSk7CiAgICAgICAkdG9rZW4gPSAkcmVxdWVzdF90b2tlblsnb2F1dGhfdG9rZW4nXTsKICAgICAgICRzZXNzLT5wdXQoJ3JlcXVlc3RfdG9rZW4nLCRyZXF1ZXN0X3Rva2VuKTsKICAgICB9CgogICAgIHN3aXRjaCgkY29ubmVjdGlvbi0+aHR0cF9jb2RlKSB7CiAgICAgY2FzZSAyMDA6CiAgICAgICAkdXJsID0gJGNvbm5lY3Rpb24tPmdldEF1dGhvcml6ZVVSTCgkdG9rZW4pOwogICAgICAgcmVkaXJlY3QoJHVybCk7CiAgICAgICBicmVhazsKCiAgICAgZGVmYXVsdDoKICAgICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLCR0aGlzLT5MYW5nKCdlcnJvcl9jb25uZWN0JykpOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGJyZWFrOwoKIGNhc2UgMzoKICAgLy8gYmFjayBmcm9tIHR3aXR0ZXIuCiAgIHJlcXVpcmVfb25jZShfX0RJUl9fLicvbGliL3R3aXR0ZXJvYXV0aC90d2l0dGVyb2F1dGgucGhwJyk7CiAgICRzZXNzID0gbmV3IGNnZV9zZXNzaW9uKCR0aGlzLT5HZXROYW1lKCkpOwogICAkcmVxdWVzdF90b2tlbiA9ICRzZXNzLT5nZXQoJ3JlcXVlc3RfdG9rZW4nKTsKICAgJHNlc3MtPmNsZWFyKCk7CiAgIGlmKCAhaXNfYXJyYXkoJHJlcXVlc3RfdG9rZW4pICkgewogICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLCR0aGlzLT5MYW5nKCdlcnJvcl9vbGR0b2tlbicpKTsKICAgfQogICBlbHNlIGlmKCBpc3NldCgkX1JFUVVFU1RbJ29hdXRoX3Rva2VuJ10pICYmIAoJICAgICRfUkVRVUVTVFsnb2F1dGhfdG9rZW4nXSAhPSAkcmVxdWVzdF90b2tlblsnb2F1dGhfdG9rZW4nXSApIHsKICAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywkdGhpcy0+TGFuZygnZXJyb3Jfb2xkdG9rZW4nKSk7CiAgIH0KICAgZWxzZSB7CiAgICAgJGNvbm5lY3Rpb24gPSBuZXcgVHdpdHRlck9BdXRoKCRjb25zdW1lcl9rZXksJGNvbnN1bWVyX3NlY3JldCwKCQkJCSAgICAkcmVxdWVzdF90b2tlblsnb2F1dGhfdG9rZW4nXSwKCQkJCSAgICAkcmVxdWVzdF90b2tlblsnb2F1dGhfdG9rZW5fc2VjcmV0J10pOwogICAgICRhY2Nlc3NfdG9rZW4gPSAkY29ubmVjdGlvbi0+Z2V0QWNjZXNzVG9rZW4oKTsKICAgICBpZiggJGNvbm5lY3Rpb24tPmh0dHBfY29kZSA9PSAyMDAgKSB7CiAgICAgICAkZGF0YSA9IGNndHdlZXRfdXRpbHM6OmVuY3J5cHQoc2VyaWFsaXplKCRhY2Nlc3NfdG9rZW4pKTsKICAgICAgICRmZXUtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJ19fJy4kdGhpcy0+R2V0TmFtZSgpLidfXycsJGRhdGEsJHVpZCk7CiAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5MYW5nKCdtc2dfYXV0aF9zdWNjZXNzJykpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLCR0aGlzLT5MYW5nKCdlcnJvcl9hY2Nlc3N0b2tlbnMnKSk7CiAgICAgfQogICB9CiAgIGJyZWFrOwogfSAvLyBzd2l0Y2gKCiR0aGV0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKENHVFdFRVRfQVVUSFRFTVBMQVRFX0RGTFROQU1FKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ2F1dGh0ZW1wbGF0ZSddKSApIHsKICAkdGhldGVtcGxhdGUgPSB0cmltKCRwYXJhbXNbJ2F1dGh0ZW1wbGF0ZSddKTsKfQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2F1dGhfJy4kdGhldGVtcGxhdGUpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgY29udmVyc2lvbiBvZiBwb3N0YWwgY29kZXMKIyAgZnJvbSB0aGUgZ2VvbmFtZSBzZXJ2aWNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKENHVHdlZXQ6OlVTRVJfUEVSTSkgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ215dHdpdHRlcicsJHRoaXMtPkxhbmcoJ215dHdpdHRlcicpKTsKfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApIHsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NldHRpbmdzJywkdGhpcy0+TGFuZygnc2V0dGluZ3MnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2F1dGh0ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ2F1dGh0ZW1wbGF0ZXMnKSk7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd0aW1lbGluZScsJHRoaXMtPkxhbmcoJ3RpbWVsaW5ldGVtcGxhdGVzJykpOwogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZGZsdHRlbXBsYXRlJywkdGhpcy0+TGFuZygnZGZsdF90ZW1wbGF0ZXMnKSk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKENHVHdlZXQ6OlVTRVJfUEVSTSkgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignbXl0d2l0dGVyJyk7CiAgICBpbmNsdWRlKF9fRElSX18uJy9hY3Rpb24uYWRtaW5fbXl0d2l0dGVyX3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzZXR0aW5ncycpOwogIGluY2x1ZGUoX19ESVJfXy4nL2FjdGlvbi5hZG1pbl9zZXR0aW5nc190YWIucGhwJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHsKICBlY2hvICR0aGlzLT5TdGFydFRhYignYXV0aHRlbXBsYXRlJyk7CiAgaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fYXV0aHRlbXBsYXRlX3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKCiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3RpbWVsaW5lJyk7CiAgaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fdGltZWxpbmVfdGFiLnBocCcpOwogIGVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICBlY2hvICR0aGlzLT5TdGFydFRhYignZGZsdHRlbXBsYXRlJyk7CiAgaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fZGZsdHRlbXBsYXRlX3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7CiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.timeline.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHVHdlZXQgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGludGVyYWN0aW5nIHdpdGggdHdpdHRlci4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKdHJ5IHsKICAkY2FjaGUgPSAzNjAwOwogICRyZXEgPSAiaG9tZV90aW1lbGluZSI7CiAgJHBhcm1zID0gYXJyYXkoJ2NvdW50Jz0+MjAsJ2luY2x1ZGVfZW50aXRpZXMnPT5mYWxzZSwnZXhjbHVkZV9yZXBsaWVzJz0+ZmFsc2UsCgkJICdleGNsdWRlX3J0cyc9PmZhbHNlKTsKICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbCApIHsKICAgIHN3aXRjaCggJGtleSApIHsKICAgIGNhc2UgJ3VzZXInOgogICAgICAkcmVxID0gJ3VzZXJfdGltZWxpbmUnOwogICAgICBpZiggaXNfbnVtZXJpYygkdmFsKSAmJiAoaW50KSR2YWwgPiAwICkgewoJJHBhcm1zWyd1c2VyX2lkJ10gPSAoaW50KSR2YWw7CiAgICAgIH0KICAgICAgZWxzZSB7CgkkcGFybXNbJ3NjcmVlbl9uYW1lJ10gPSB0cmltKCR2YWwpOwogICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2NvdW50JzoKICAgICAgJHBhcm1zWydjb3VudCddID0gKGludCkkdmFsOwogICAgICBicmVhazsKCiAgICBjYXNlICdjYWNoZSc6CiAgICAgICRjYWNoZSA9IG1pbigzNjAwKjEyLG1heCgzMCwkdmFsKSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2RlZXAnOgogICAgICBpZiggJHZhbCApIHsKCSRwYXJtc1snaW5jbHVkZV9lbnRpdGllcyddID0gdHJ1ZTsKICAgICAgfQogICAgICBlbHNlIHsKCSRwYXJtc1snaW5jbHVkZV9lbnRpdGllcyddID0gZmFsc2U7CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSAnbm9yZXBsaWVzJzoKICAgICAgaWYoICR2YWwgKSB7CgkkcGFybXNbJ2V4Y2x1ZGVfcmVwbGllcyddID0gdHJ1ZTsKICAgICAgfQogICAgICBlbHNlIHsKCSRwYXJtc1snZXhjbHVkZV9yZXBsaWVzJ10gPSBmYWxzZTsKICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlICdyZXR3ZWV0cyc6CiAgICAgIGlmKCAkdmFsICkgewoJJHBhcm1zWydleGNsdWRlX3J0cyddID0gZmFsc2U7CiAgICAgIH0KICAgICAgZWxzZSB7CgkkcGFybXNbJ2V4Y2x1ZGVfcnRzJ10gPSB0cnVlOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgfQogIH0KCiAgJHNpZ25hdHVyZSA9ICdtJy5tZDUoJ3N0YXR1c2VzLycuJHJlcS5zZXJpYWxpemUoJHBhcm1zKSk7CiAgJGhhbmRsZXIgPSBuZXcgY2dlX3NtYXJ0Y2FjaGVfaGFuZGxlcihhcnJheSgnbGlmZXRpbWUnPT4kY2FjaGUsJ2dyb3VwJz0+JHRoaXMtPkdldE5hbWUoKSkpOwogICRkYXRhID0gJyc7CiAgaWYoICRoYW5kbGVyLT5leGlzdHMoJHNpZ25hdHVyZSkgKSAkZGF0YSA9ICRoYW5kbGVyLT5nZXQoJHNpZ25hdHVyZSk7CiAgaWYoICEkZGF0YSApIHsKICAgICRjcmVkcyA9IGNndHdlZXRfdXRpbHM6OmdldF9kZWZhdWx0X2NyZWRlbnRpYWxzKCk7CiAgICAkZGF0YSA9IGNndHdlZXRfdXRpbHM6OmdldCgkY3JlZHMsJ3N0YXR1c2VzLycuJHJlcSwkcGFybXMpOwogICAgaWYoIGlzX2FycmF5KCRkYXRhKSAmJiBjb3VudCgkZGF0YSkgPiAwICkgewogICAgICAvLyBub3cgdHJhbnNsYXRlIHRoZSBkYXRhCiAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKyApIHsKCSRkYXRhWyRpXS0+aHRtbCA9IGNndHdlZXRfdXRpbHM6OnR3ZWV0X3RvX2h0bWwoJGRhdGFbJGldLT50ZXh0KTsKICAgICAgfQogICAgICAkaGFuZGxlci0+c2V0KCRzaWduYXR1cmUsJGRhdGEpOwogICAgfQogIH0KCiAgJHNtYXJ0eS0+YXNzaWduKCd0aW1lbGluZScsJGRhdGEpOwoKICAkdGhldGVtcGxhdGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZShDR1RXRUVUX1RJTUVMSU5FX0RGTFROQU1FKTsKICBpZiggaXNzZXQoJHBhcmFtc1sndGltZWxpbmV0ZW1wbGF0ZSddKSApIHsKICAgICR0aGV0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGltZWxpbmV0ZW1wbGF0ZSddKTsKICB9CiAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCd0aW1lbGluZV8nLiR0aGV0ZW1wbGF0ZSk7CiAgLy8gbm93IHdlJ3JlIGdvbm5hIGRpc3BsYXkgc29tZXRoaW5nCgp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgZGVidWdfZGlzcGxheSgkZS0+R2V0TWVzc2FnZSgpKTsKICByZXR1cm47IC8vIGRvIG5vdGhpbmcKfQovLyBwYXJhbXM6IGNhY2hlLCBjb3VudCwgZGVlcAojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/CGTweet.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgY29udmVyc2lvbiBvZiBwb3N0YWwgY29kZXMKIyAgZnJvbSB0aGUgZ2VvbmFtZSBzZXJ2aWNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmRlZmluZSgnQ0dUV0VFVF9BVVRIVEVNUExBVEVfREZMVE5BTUUnLCdjZ3R3ZWV0X2F1dGh0ZW1wbGF0ZV9kZmx0bmFtZScpOwpkZWZpbmUoJ0NHVFdFRVRfQVVUSFRFTVBMQVRFX1NZU0RGTFQnLCdjZ3R3ZWV0X2F1dGh0ZW1wbGF0ZV9zeXNkZmx0Jyk7CmRlZmluZSgnQ0dUV0VFVF9USU1FTElORV9ERkxUTkFNRScsJ2NndHdlZXRfdGltZWxpbmVfZGZsdG5hbWUnKTsKZGVmaW5lKCdDR1RXRUVUX1RJTUVMSU5FX1NZU0RGTFQnLCdjZ3R3ZWV0X3RpbWVsaW5lX3N5c2RmbHQnKTsKCmNsYXNzIENHVHdlZXQgZXh0ZW5kcyBDR0V4dGVuc2lvbnMKewogICAgY29uc3QgVVNFUl9QRVJNID0gJ1JlY2VpdmUgdHdlZXRzIHZpYSBDR1R3ZWV0JzsKICAgIGNvbnN0IFBSRUZfRkVVX1BST1BOQU1FID0gJ2ZldV9wcm9wbmFtZSc7IC8vIHRoaXMgZmV1IHByb3BlcnR5IHdpbGwgY29udGFpbiBhbiBGRVUgdXNlcnMgc2NyZWVuIG5hbWUKCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpIHsgcmV0dXJuICdDR1R3ZWV0JzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKSB7IHJldHVybiAnMS4zJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgcmV0dXJuICdjYWxndXkxMDAwJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyByZXR1cm4gJ2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiB0cnVlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiB0cnVlOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgeyByZXR1cm4gJ2V4dGVuc2lvbnMnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4yJzsgfQogICAgcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgICB7CiAgICAgICAgcmV0dXJuIFsgJ0NHRXh0ZW5zaW9ucyc9PicxLjU3LjEnLCAnRnJvbnRFbmRVc2Vycyc9PicyLjUuMicsJ0NHU2ltcGxlU21hcnR5Jz0+JzIuMS43JyBdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSB8fAogICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKHNlbGY6OlVTRVJfUEVSTSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgJHQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJpZW5kbHluYW1lJyk7CiAgICAgICAgaWYoICEkdCApICR0ID0gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogICAgICAgIHJldHVybiAkdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpCiAgICB7CiAgICAgICAgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cyhfX0RJUl9fLicvaGVscC5pbmMnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICAgIHsKICAgICAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18uJy9jaGFuZ2Vsb2cuaW5jJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhdXRodGVtcGxhdGUnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3VzZXInLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lubGluZScsQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYXV0aHN0ZXAnLENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvdW50JyxDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYWNoZScsQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGVlcCcsQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbm9yZXBsaWVzJyxDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZXR3ZWV0cycsQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGltZWxpbmV0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUFkbWluKCkKICAgIHsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhY3Rpb24nLCcnLCR0aGlzLT5MYW5nKCdoZWxwX2FjdGlvbicpKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhdXRodGVtcGxhdGUnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX2F1dGh0ZW1wbGF0ZScpKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdpbmxpbmUnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX2lubGluZScpKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjb3VudCcsJycsJHRoaXMtPkxhbmcoJ2hlbHBfY291bnQnKSk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGVlcCcsJycsJHRoaXMtPkxhbmcoJ2hlbHBfZGVlcCcpKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdub3JlcGxpZXMnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX25vcmVwbGllcycpKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdyZXR3ZWV0cycsJycsJHRoaXMtPkxhbmcoJ2hlbHBfcmV0d2VldHMnKSk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGltZWxpbmV0ZW1wbGF0ZScsJycsJHRoaXMtPkxhbmcoJ2hlbHBfdGltZWxpbmV0ZW1wbGF0ZScpKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd1c2VyJywnJywkdGhpcy0+TGFuZygnaGVscF91c2VyJykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsgfQogICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOyB9CgogICAgcHVibGljIGZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJGNhcGFiaWxpdHksICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgIGlmKCAkY2FwYWJpbGl0eSA9PSAnbm90aWZpY2F0aW9uX3RyYW5zcG9ydCcgKSByZXR1cm4gVFJVRTsKICAgICAgICBpZiggJGNhcGFiaWxpdHkgPT0gJ2NnX3NvY2lhbGJsYXN0X3RyYW5zcG9ydCcgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0X3RyYW5zcG9ydF9uYW1lKCkgeyByZXR1cm4gJ1R3aXR0ZXIgUG9zdCc7IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3RyYW5zcG9ydF9wcm9maWxlKCkKICAgIHsKICAgICAgICAkcHJvZmlsZSA9IG5ldyBcQ0dOb3RpZmllclx0cmFuc3BvcnRfcHJvZmlsZTsKICAgICAgICAkcHJvZmlsZS0+bW9kdWxlID0gJHRoaXMtPkdldE5hbWUoKTsKICAgICAgICAkcHJvZmlsZS0+dHJhbnNwb3J0X2Rlc2MgPSAkdGhpcy0+TGFuZygndHJhbnNwb3J0X2Rlc2MnKTsKICAgICAgICAkcHJvZmlsZS0+dHJhbnNwb3J0ID0gJ3R3aXR0ZXInOwogICAgICAgICRwcm9maWxlLT5jaGFybGltaXQgPSAxNDA7CiAgICAgICAgJHByb2ZpbGUtPnBpY3R1cmUgPSBmYWxzZTsgLy8gdG9kbwogICAgICAgIHJldHVybiAkcHJvZmlsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJfa2V5KCR1aWQpCiAgICB7CiAgICAgICAgJGZldSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgICAgIGlmKCAhaXNfb2JqZWN0KCRmZXUpICkgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3Jfbm9mZXUnKSk7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkdWlkJywkdWlkKSk7CiAgICAgICAgJGRhdGEgPSAkZmV1LT5HZXRVc2VyUHJvcGVydHkoJ19fJy4kdGhpcy0+R2V0TmFtZSgpLidfXycpOwogICAgICAgIGlmKCAkZGF0YSApIHsKICAgICAgICAgICAgJHJhd3Byb3AgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCRkYXRhKTsKICAgICAgICAgICAgJHByb3AgPSB1bnNlcmlhbGl6ZSgkcmF3cHJvcCk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkcHJvcCkgJiYgaXNzZXQoJHByb3BbJ3Rva2VuJ10pICYmIGlzc2V0KCRwcm9wWydzZWNyZXQnXSkgKSByZXR1cm4gJHByb3A7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfdXNlcl9rZXkoJHVpZCwkYXV0aF90b2tlbiwkYXV0aF9zZWNyZXQpCiAgICB7CiAgICAgICAgJGZldSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgICAgIGlmKCAhaXNfb2JqZWN0KCRmZXUpICkgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3Jfbm9mZXUnKSk7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkdWlkJywkdWlkKSk7CiAgICAgICAgaWYoICRhdXRoX3Rva2VuID09ICcnIHx8ICRhdXRoX3NlY3JldCA9PSAnJyApIHRocm93IG5ldyBDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWNjZXNzX3NldHRpbmdzJykpOwogICAgICAgICRkYXRhID0gY2d0d2VldF91dGlsczo6ZW5jcnlwdChzZXJpYWxpemUoYXJyYXkoJ3Rva2VuJz0+JGF1dGhfdG9rZW4sJ3NlY3JldCc9PiRhdXRoX3NlY3JldCkpKTsKICAgICAgICAkZmV1LT5TZXRVc2VyUHJvcGVydHlGdWxsKCdfXycuJHRoaXMtPkdldE5hbWUoKS4nX18nLCRkYXRhLCR1aWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcmVwYXJlX21lc3NhZ2VfdGV4dCgkaW5wdXRfdGV4dCwkc2hvcnRlbiA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiBjZ3R3ZWV0X3V0aWxzOjpodG1sX3RvX3R3ZWV0KCRpbnB1dF90ZXh0LCRzaG9ydGVuKTsKICAgIH0KCiAgICAvLyBjZ25vdGlmaWVyCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZF9tZXNzYWdlKG5vdGlmaWNhdGlvbl9tZXNzYWdlICRtc2csJHByZXBhcmVkID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYoICEkbXNnLT5ib2R5ICkgewogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdBdHRlbXB0IHRvIHNlbmQgYW4gaW52YWxpZCBtZXNzYWdlJyk7CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZG1lc3NhZ2UnKSk7CiAgICAgICAgfQoKICAgICAgICAkc2NyZWVuX25hbWUgPSBudWxsOwogICAgICAgIGlmKCAhJG1zZy0+dG8gKSByZXR1cm47CiAgICAgICAgaWYoICRtc2ctPnRvIDwgMCApIHsKICAgICAgICAgICAgLy8gZ2V0IHNjcmVlbiBuYW1lIGZvciB0aGlzIGFkbWluIGFjY291bnQKICAgICAgICAgICAgJHNjcmVlbl9uYW1lID0gY2d0d2VldF91dGlsczo6Z2V0X2FkbWluX3NjcmVlbl9uYW1lKCAkbXNnLT50byAqIC0xICk7CiAgICAgICAgICAgIGlmKCAhJHNjcmVlbl9uYW1lICkgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gZ2V0IHNjcmVlbiBuYW1lIGZvciB0aGlzIHVzZXIuCiAgICAgICAgICAgICRmZXUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKICAgICAgICAgICAgaWYoICRmZXUgKSB7CiAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGdldCB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaG9sZGluZyB0aGUgdHdpdHRlciBzY3JlZW4gbmFtZQogICAgICAgICAgICAgICAgJHByb3BuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZldV9zY3JlZW5uYW1lX3Byb3AnKTsKICAgICAgICAgICAgICAgIGlmKCAkcHJvcG5hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbCA9IHRyaW0oJGZldS0+R2V0VXNlclByb3BlcnR5RnVsbCggJHByb3BuYW1lLCAkbXNnLT50byApKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHZhbCApICRzY3JlZW5fbmFtZSA9ICR2YWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoICEkc2NyZWVuX25hbWUgKSByZXR1cm47CgogICAgICAgICRjcmVkcyA9IG5ldyBjZ3R3ZWV0X2NyZWRlbnRpYWxzOwogICAgICAgICRjcmVkcy0+Y29uc3VtZXJfa2V5ID0gY2d0d2VldF91dGlsczo6ZGVjcnlwdCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29uc3VtZXJfa2V5JykpOwogICAgICAgICRjcmVkcy0+Y29uc3VtZXJfc2VjcmV0ID0gY2d0d2VldF91dGlsczo6ZGVjcnlwdCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29uc3VtZXJfc2VjcmV0JykpOwogICAgICAgICRjcmVkcy0+dXNlcl9rZXkgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhY2Nlc3NfdG9rZW4nKSk7CiAgICAgICAgJGNyZWRzLT51c2VyX3NlY3JldCA9IGNndHdlZXRfdXRpbHM6OmRlY3J5cHQoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc190b2tlbl9zZWNyZXQnKSk7CiAgICAgICAgaWYoICEkY3JlZHMtPmlzX3ZhbGlkKCkgKSB7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJ0F0dGVtcHQgdG8gc2VuZCBtZXNzYWdlIGJ1dCBubyB2YWxpZCBhY2Nlc3MgdG9rZW5zIGZvdW5kJyk7CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY3JlZGVudGlhbHMnKSk7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBzaG9ydGVuIGFueSB1cmxzIGluIHRoZSBtZXNzYWdlIG1heWJlPwogICAgICAgICAgICAkc2hvcnRlbiA9ICggaXNzZXQoJG1zZy0+c2hvcnRlbikgJiYgJG1zZy0+c2hvcnRlbiApID8gVFJVRSA6IEZBTFNFOwogICAgICAgICAgICAkYm9keSA9IGNndHdlZXRfdXRpbHM6Omh0bWxfdG9fdHdlZXQoICRtc2ctPmJvZHksICRzaG9ydGVuICk7CiAgICAgICAgICAgICRwYXJtcyA9ICRzbHVnID0gbnVsbDsKICAgICAgICAgICAgJHNsdWcgPSAnZGlyZWN0X21lc3NhZ2VzL25ldyc7CiAgICAgICAgICAgICRwYXJtc1snc2NyZWVuX25hbWUnXSA9ICRzY3JlZW5fbmFtZTsKICAgICAgICAgICAgJHBhcm1zWyd0ZXh0J10gPSAkYm9keTsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkc2x1ZyA9ICdzdGF0dXNlcy91cGRhdGUnOwogICAgICAgICAgICAgICAgJHBhcm1zWydzdGF0dXMnXSA9ICRib2R5OwogICAgICAgICAgICB9CiAgICAgICAgICAgICovCiAgICAgICAgICAgIGlmKCAkbXNnLT5sYXQgJiYgJG1zZy0+bG9uZyApIHsKICAgICAgICAgICAgICAgICRwYXJtc1snbGF0J10gPSAkbXNnLT5sYXQ7CiAgICAgICAgICAgICAgICAkcGFybXNbJ2xvbmcnXSA9ICRtc2ctPmxvbmc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlcyA9IGNndHdlZXRfdXRpbHM6OnBvc3QoJGNyZWRzLCRzbHVnLCRwYXJtcyk7CiAgICAgICAgICAgIGlmKCAkcmVzICkgewogICAgICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnU2VudCB0d2l0dGVyIGRpcmVjdCBtZXNzYWdlIHRvICcuJHNjcmVlbl9uYW1lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1R3aXR0ZXIgZGlyZWN0IG1lc3NhZ2UgdG8gJy4kc2NyZWVuX25hbWUuJyBmYWlsZWQnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgLy8gY2dzb2NpYWxibGFzdGVyCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3NlbmRlcl9pbmZvKCkKICAgIHsKICAgICAgICAkcmVzID0gbmV3IHNiX3NlbmRlcl9pbmZvKCR0aGlzLT5HZXROYW1lKCksJ1R3aXR0ZXIgUG9zdCcsMTQwLDApOwogICAgICAgICRyZXNbJ2luZm9fbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2luZm9fc2VuZGVyX3R3aXR0ZXInKTsKICAgICAgICByZXR1cm4gJHJlczsKICAgIH0KCiAgICAvLyBjZ3NvY2lhbGJsYXN0ZXIKICAgIHB1YmxpYyBmdW5jdGlvbiBicm9hZGNhc3RfbWVzc2FnZShub3RpZmljYXRpb25fbWVzc2FnZSAkbXNnKQogICAgewogICAgICAgIC8vIGlnbm9yZXMgdGhlIHRvLCBhbmQgdG9fZ3JvdXAgZm9ybWF0Li4uIGFuZCBzZW5kcyBhIHN0YXR1cyB1cGRhdGUuCiAgICAgICAgaWYoICEkbXNnLT5ib2R5ICkgewogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdBdHRlbXB0IHRvIHNlbmQgYW4gaW52YWxpZCBtZXNzYWdlJyk7CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZG1lc3NhZ2UnKSk7CiAgICAgICAgfQoKICAgICAgICAkY3JlZHMgPSBuZXcgY2d0d2VldF9jcmVkZW50aWFsczsKICAgICAgICAkY3JlZHMtPmNvbnN1bWVyX2tleSA9IGNndHdlZXRfdXRpbHM6OmRlY3J5cHQoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NvbnN1bWVyX2tleScpKTsKICAgICAgICAkY3JlZHMtPmNvbnN1bWVyX3NlY3JldCA9IGNndHdlZXRfdXRpbHM6OmRlY3J5cHQoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NvbnN1bWVyX3NlY3JldCcpKTsKICAgICAgICAkY3JlZHMtPnVzZXJfa2V5ID0gY2d0d2VldF91dGlsczo6ZGVjcnlwdCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWNjZXNzX3Rva2VuJykpOwogICAgICAgICRjcmVkcy0+dXNlcl9zZWNyZXQgPSBjZ3R3ZWV0X3V0aWxzOjpkZWNyeXB0KCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhY2Nlc3NfdG9rZW5fc2VjcmV0JykpOwogICAgICAgIGlmKCAhJGNyZWRzLT5pc192YWxpZCgpICkgewogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLidBdHRlbXB0IHRvIHNlbmQgbWVzc2FnZSBidXQgbm8gdmFsaWQgYWNjZXNzIHRva2VucyBmb3VuZCcpOwogICAgICAgICAgICB0aHJvdyBuZXcgQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NyZWRlbnRpYWxzJykpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHNob3J0ZW4gPSAoIGlzc2V0KCRtc2ctPnNob3J0ZW4pICYmICRtc2ctPnNob3J0ZW4gKSA/IFRSVUUgOiBGQUxTRTsKICAgICAgICAgICAgJGJvZHkgPSBjZ3R3ZWV0X3V0aWxzOjpodG1sX3RvX3R3ZWV0KCAkbXNnLT5ib2R5LCAkc2hvcnRlbiApOwogICAgICAgICAgICAkcGFybXMgPSAkc2x1ZyA9IG51bGw7CiAgICAgICAgICAgICRzbHVnID0gJ3N0YXR1c2VzL3VwZGF0ZSc7CiAgICAgICAgICAgICRwYXJtc1snc3RhdHVzJ10gPSAkYm9keTsKICAgICAgICAgICAgJHJlcyA9IGNndHdlZXRfdXRpbHM6OnBvc3QoJGNyZWRzLCRzbHVnLCRwYXJtcyk7CiAgICAgICAgICAgIGlmKCAkcmVzICkgewogICAgICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnU2VudCB0d2l0dGVyIHN0YXVzIHVwZGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnVHdpdHRlciBzdGF0dXMgdXBkYXRlIGZhaWxlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT5WZXJzaW9uIDEuMCAtIEluaXRpYWwgUmVsZWFzZTwvbGk+CiAgPGxpPlZlcnNpb24gMS4xCiAgICA8dWw+CiAgICAgIDxsaT5VcGdyYWRlZCB0byBsYXRlc3QgdmVyc2lvbiBvZiB0d2l0dGVyb2F1dGggLi4uIHN1cHBvcnRzIHR3aXR0ZXIgMS4xLjwvbGk+CiAgICAgIDxsaT5BZGRzIGFuIGljb24uPC9saT4KICAgICAgPGxpPk5vdyBzdXBwb3J0cyBDR1NvY2lhbEJsYXN0ZXIuPC9saT4KICAgICAgPGxpPkltcHJvdmVkIGVycm9yIGhhbmRsaW5nLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4yCiAgICA8dWw+CiAgICAgIDxsaT5BZGRzIHRoZSB1c2VyIHBhcmFtZXRlciB0byBhbGxvdyB2aWV3aW5nIHRpbWVsaW5lcyBmb3IgZGlmZmVyZW50IHVzZXJzLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDEuMwoJPHVsPgoJPGxpPk5vdyBub3RpZmljYXRpb25zIGFyZSBzZW50IGFzIERNIG1lc3NhZ2VzLjwvbGk+Cgk8bGk+Tm93IHdvcmtzIHdpdGggbmV3IENHTm90aWZpZXIuPC9saT4KCTxsaT5Ob3cgd29ya3Mgd2l0aCBuZXcgQ0dTb2NpYWxCbGFzdGVyPC9saT4KCTxsaT5Ud2Vha3MgdG8gc2hvcnRlbmluZyBiZWhhdmlvci48L2xpPgoJPGxpPkFkbWluIHVzZXJzIGNhbiBub3cgZW50ZXIgdGhlaXIgdHdpdHRlciBzY3JlZW4gbmFtZS48L2xpPgoJPGxpPm1vcmUuLi48L2xpPgoJPC91bD4KICA8L2xpPgo8L3VsPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_authtemplate_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNvbnZlcnNpb24gb2YgcG9zdGFsIGNvZGVzCiMgIGZyb20gdGhlIGdlb25hbWUgc2VydmljZS4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHJldHVybjsKCmVjaG8gJHRoaXMtPlNob3dUZW1wbGF0ZUxpc3QoJGlkLCRyZXR1cm5pZCwnYXV0aF8nLAoJCQkgICAgIENHVFdFRVRfQVVUSFRFTVBMQVRFX1NZU0RGTFQsCgkJCSAgICAgJ2F1dGh0ZW1wbGF0ZScsCgkJCSAgICAgQ0dUV0VFVF9BVVRIVEVNUExBVEVfREZMVE5BTUUsCgkJCSAgICAgJHRoaXMtPkxhbmcoJ3RpdGxlX2FkZGVkaXRfYXV0aHRlbXBsYXRlJykpOwoJCQkgICAgIAojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_dflttemplate_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNvbnZlcnNpb24gb2YgcG9zdGFsIGNvZGVzCiMgIGZyb20gdGhlIGdlb25hbWUgc2VydmljZS4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHJldHVybjsKCmVjaG8gY2dlX3RlbXBsYXRlX2FkbWluOjpnZXRfc3RhcnRfdGVtcGxhdGVfZm9ybSgkdGhpcywkaWQsJHJldHVybmlkLAoJCQkJCQkgQ0dUV0VFVF9BVVRIVEVNUExBVEVfU1lTREZMVCwnZGVmYXVsdGFkbWluJywKCQkJCQkJICdkZmx0dGVtcGxhdGUnLAoJCQkJCQkgJHRoaXMtPkxhbmcoJ3RpdGxlX3N5c2RmbHRfYXV0aHRlbXBsYXRlJyksCgkJCQkJCSAnb3JpZ19hdXRodGVtcGxhdGUudHBsJyk7CgplY2hvIGNnZV90ZW1wbGF0ZV9hZG1pbjo6Z2V0X3N0YXJ0X3RlbXBsYXRlX2Zvcm0oJHRoaXMsJGlkLCRyZXR1cm5pZCwKCQkJCQkJIENHVFdFRVRfVElNRUxJTkVfU1lTREZMVCwnZGVmYXVsdGFkbWluJywKCQkJCQkJICdkZmx0dGVtcGxhdGUnLAoJCQkJCQkgJHRoaXMtPkxhbmcoJ3RpdGxlX3N5c2RmbHRfdGltZWxpbmUnKSwKCQkJCQkJICdvcmlnX3RpbWVsaW5lLnRwbCcpOwoJCQkJCQkJICAgICAKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_timeline_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIGFsbG93IGNvbnZlcnNpb24gb2YgcG9zdGFsIGNvZGVzCiMgIGZyb20gdGhlIGdlb25hbWUgc2VydmljZS4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHJldHVybjsKCmVjaG8gJHRoaXMtPlNob3dUZW1wbGF0ZUxpc3QoJGlkLCRyZXR1cm5pZCwndGltZWxpbmVfJywKCQkJICAgICBDR1RXRUVUX1RJTUVMSU5FX1NZU0RGTFQsCgkJCSAgICAgJ3RpbWVsaW5lJywKCQkJICAgICBDR1RXRUVUX1RJTUVMSU5FX0RGTFROQU1FLAoJCQkgICAgICR0aGlzLT5MYW5nKCd0aXRsZV9hZGRlZGl0X3RpbWVsaW5lJykpOwoJCQkgICAgIAojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPkNHVHdlZXQgaXMgYSBtb2R1bGUgZm9yIHJlYWRpbmcgZnJvbSwgYW5kIHdyaXRpbmcgdG8gdHdpdHRlci4gIEl0IGlzIGNhcGFibGUgb2YgdHdlZXRpbmcgbWVzc2FnZXMgZm9yIGFueSBGcm9udGVuZCB1c2VyLCBhbmQgZGlzcGxheWluZyBhIHNpbXBsZSB0aW1lbGluZSBmb3IgYSB1c2VyIGFjY291bnQuPC9wPgo8aDM+RmVhdHVyZXM8L2gzPgo8dWw+CiAgPGxpPkNyZWF0ZXMgYSB1c2VyIHByb3BlcnR5IGluIEZFVSBmb3Igc3RvcmluZyBhIHVzZXJzIHR3aXR0ZXIgY3JlZGVudGlhbHMuPC9saT4KICA8bGk+UHJvdmlkZXMgYSBmb3JtIGZvciBhbGxvd2luZyB0aGUgdXNlciB0byBhbGxvdyB5b3VyIGFwcCA8ZW0+KHdlYnNpdGUpPC9lbT4gdG8gdHdlZXQgZm9yIHRoZW0uPC9saT4KICA8bGk+UHJvdmlkZXMgYW4gQVBJIGZvciBzZW5kaW5nIHR3ZWV0cy48L2xpPgogIDxsaT5Qcm92aWRlcyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBDR05vdGlmaWVyIG1vZHVsZSB0byBhbGxvdyBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdmlhIHR3aXR0ZXIuPC9saT4KICA8bGk+UHJvdmlkZXMgaW50ZXJlY3Rpb24gd2l0aCB0aGUgQ0dTb2NpYWxCbGFzdGVyIG1vZHVsZSB0byBhbGxvdyBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdG8gbXVsdGlwbGUgc29jaWFsIG5ldHdvcmtzIGF0IG9uY2UgZnJvbSBtb2R1bGVzIGxpa2UgQ0dCbG9nLjwvbGk+CiAgPGxpPlByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGRpc3BsYXkgYSB0aW1lbGluZSBmcm9tIGEgdHdpdHRlciBhY2NvdW50LCB3aXRoIGNhY2hpbmcgY2FwYWJpbGl0aWVzIGFuZCBjb21wbGV0ZSB0ZW1wbGF0ZSBjb250cm9sLjwvbGk+CiAgPGxpPkNhbiBhdXRvbWF0aWNhbGx5IHNob3J0ZW4gVVJMUyBvZiB0d2VldHMgdmlhIHRoZSBDR1RpbnkgbW9kdWxlLjwvbGk+CjwvdWw+CjxoMz5Ib3cgZG8gSSBVc2UgaXQ/PC9oMz4KPHVsPgogIDxsaT4xLiAgQ3JlYXRlIGEgdHdpdHRlciBhcHAgYXQgPGEgaHJlZj0iaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vIj5odHRwczovL2Rldi50d2l0dGVyLmNvbS88L2E+IGFuZCByZW1lbWJlciB0aGUgY29uc3VtZXIgc2VjcmV0IGFuZCBjb25zdW1lciBrZXkuPC9saT4KICA8bGk+Mi4gIEVudGVyIHRoZSBjb25zdW1lciBrZXkgYW5kIGNvbnN1bWVyIHNlY3JldCBpbiB0aGUgbW9kdWxlcyBhZG1pbiBjb25zb2xlLjwvbGk+CiAgPGxpPjMuICBDb25maWd1cmUgYSB0d2l0dGVyIGFjY291bnQgdGhhdCB3aWxsIGFsbG93IHlvdXIgYXBwIHRvIHNlbmQgZ2VuZXJpYyB0d2VldHMuICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gZG8gdGhpczoKICAgICA8dWw+CiAgICAgICA8bGk+YS4gQ2xpY2sgb24gdGhlIDxzdHJvbmc+QXV0aG9yaXplIHZpYSBUd2l0dGVyPC9zdHJvbmc+IGxpbmsgaW4gdGhlIGFkbWluIHBhbmVsIHRvIHVzZSBhIGd1aWRlZCBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLjwvbGk+CiAgICAgICA8bGk+Yi4gTWFudWFsbHkgZW50ZXIgdGhlIEFjY2VzcyBUb2tlbiBhbmQgQWNjZXNzIFRva2VuIHNlY3JldCBhdmFpbGFibGUgaW4gdGhlIHR3aXR0ZXIgYWNjb3VudCBwcm9maWxlLjwvbGk+CiAgICAgPC91bD4KICA8L2xpPgogIDxsaT40LiAgKG9wdGlvbmFsKSAtIGNhbGwge0NHVHdlZXQgYWN0aW9uPWF1dGhvcml6ZX0gb24gYSBwYWdlLiAgVGhpcyB3aWxsIGFsbG93IGF1dGhlbnRpY2F0ZWQgRkVVIHVzZXJzIHRvIGFzc29jaWF0ZSB0aGVpciB0d2l0dGVyIGNyZWRlbnRpYWxzIHdpdGggdGhlaXIgRkVVIGFjY291bnQuICAgWW91ciBhcHAgd2lsbCB0aGVuIGJlIGFibGUgdG8gdHdlZXQgb24gdGhlaXIgYmVoYWxmLjwvbGk+CiAgPGxpPjUuICAob3B0aW9uYWwpIC0gY2FsbCB7Q0dUd2VldCBhY3Rpb249dGltZWxpbmV9IG9uIGEgcGFnZS4gIFRoaXMgd2lsbCBkaXNwbGF5IGEgdGltZWxpbmUgb2YgdHdlZXRzIGZvciB0aGUgYWNjb3VudCBzcGVjaWZpZWQgaW4gdGhlIG1vZHVsZXMgYWRtaW4gcGFuZWwuPC9saT4KPC91bD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwBAAPcAAAcbJggbJgkdKA4nMxMtOxMyQRlCVRtFWRxKXx1NYx9SaSNZciNhfEFoeSZsiyyEqjGEqC+JsEGUuEebv0ubvWeguC6Xwy6YxieayyybyzKXwjGZxTybxDCayCWe0jKgzz2izSah1iuh1Cel2ymm3Cqp3zOl1Tyl0jOq3Cur4TCs4Dqv4Tyw4kOdxEuewk2hxUuky1Shwl6kwlOmyVutz0Wn0UWp1FOt01ux1lSz3GKlw2apxWmpxGutynavx3iuxXCuyW6yz360ymSz1Wy11GS32mW63mu63Hi20HS51nm51XS82nq+20S040u35E+45VK55Vy952a+42i94WfA5mjB5mTA6GrD6XLG6nfI633L7IOyx4iyxYa1yoy6zZG6zJy+zIG91o6+0pG+0Z/Azo7B14XC3I/G3pXC1pzB0ZTF25fJ3pvI3KTF06XL3KvO3b3P17LO2bnP2K/R37bS3r3S24TF4IXO7YnP7ZzM4I7R7pzX8J3Y8KLO4a3T47PV47zW4r3Y5L7b6Knc8rrj9MPW38vY3tDa3sTa5Mrc5MLe6c/k7Nbg5Nzi5NPk69vm6t/o7NTo8Nvp8OPl5eTr7u3t7fDu7uXu8unu8Ofw8+vx8/X19fj39vj49/L3+fb4+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKEAIf8LSUNDUkdCRzEwMTL/AAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmll/3cAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAf8AAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0L/AAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVog/wAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAv8UAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWT/CXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kX/64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4f8uFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk3/Sk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+/3abdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqv8cqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LxU6Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//ACwAAAAAPwBAAAAI/gBDCRxIiA8eLQgT3rmjMKFDhg4jRoQoUcsdPXwGaiSoB8uVjyA/Ugl5ZSTJkyhBmiS58kqWjQMHZWmZsqbNmzaxvNQ4yCPOn0CDRolCMEvQo0hJWoHCokSJgXqSShXaRIVTpytCEfI5tetJKlBWpLh6NUWTPV6RSpFCpcrJJ2JTyCWLFU/an1OYnMnTJ4+ZI1KqUHlidSwJEnSxarlrc4odRZpASQb1SZIfHCjGlhgRIscNxIkX17SzRMrUI34+TV4teREODyFOFPkT6QVosipEozwSCRERmngVsR4OSlOZPpEkj8GQuETulFTsSPYNvLEf4tgnA9IwYkTi3NWl/uSZrIiI6Z9UzHjKjr2OhBNHhnjHrZuklD+rHSkxEpw9cUpg/JEJIi3Md9VzKN3H2iVo8HfTEpH5h90jLoTwnVEJXjccIkwYUV1JZ0iInSMxeNAcgidJcUYnxGnyRhJspeiGiBu2YOGJ9ZEEYXaX+BGGER6q1AeNq2lCwY0nYoiSEfixt8kib5ixxBFG5BAGkZNdUmBzTqF4UhVKZCJiJ5o4Isgab2Ap2SUccNlljiFVUQQaqqlp5yNtulkCnB+Jd0YPYERoJ5GLdKAneAn+0QklhUAyKJZ0ZHAonyXlUSd2LGaaHYuUEccpGia66WVIVDAhKKegdHLpapp6muon/q12wgkQSOJoRUpGIJLqZK3uqiqLdXKqqmScBjsZJi7chmNNUoQRWSfQ+iqtsNFWO+2usIKCiKGT2mSEG5tYm2m2qonbabTZVsupF6GKqmRKQ4A7LLTBQmvvJ/Vmaq+4nVTygoFcjopSEWM8Auu+CMN68MEIJwxtHBfo6RQKlMY5BA9cGBIuw7+mui/D+FJWLrSbbLJDrc3JVTFISyCSCCCNhLsJw5zYW3LNNtOrKiefcFJzHdxKTDFORVz3K8kkf7IJz0kvzfPNnZQcNSea6IBywCuXtAIMksiKNCcyg13y2BuHK7bY0LYRscROpbCyFWKFEAQmUcss9cw3j422/t1oM7Il285p8SHcV3kQBCRik6344oxvYgkPIgD+ZnVUiEVWCDPMUYnTjXdOthcYKCuxwFfAPRdZI2QwgxdxMOK5521YIProcBLu5ggYxKBx55o03gZ3mkk+KhVN0aUZZzawQQnjvVvSeRrcSU5fSFawIJeB3Y1gwg1oPEK2884rbkn4JU+yhQUAS6+CklQ0IRcKNtRwQg03EIEGIstv0rvjY49fcu/Nc5whdBA66dEFUVdoQttQgIQ6MOIRlPDf+CZIQUtUYnwXnOAmGvEFDkTOgGRJAQqY8JEnBK8EIngBGhiRwUq48IIvjKELMVgJRoCBAhhIn55O2LYMVOAK/lBoTupaIAQ5NGISMqwEEpGoRBc2Ag5bmEAOQZiyBzQgBzwkCwlCkIEX/IAMcDjEESdBxkk04hBwIMMPXKABD+iQimMxwQIIAIEsGo8zGegAB1wQAxn4MQYU4EAHMOBGKu7wAQQIhQE6YMfbZS97szNkYlKQgQMIRAAK+IABgweaRkqybSJQQAAGEgAEWCCEJRiLZlb5yVSyMpVtC6EGEiCAjQSgAA64gAnkwste+tKTXPqlMOViAgw4oACjhEkABECABDDAAdCMpjSjeUrppeAC08wmNBmQAAIIIJkwEQgAxhmAco6TnOUMwDgNYAFgluUCBgDAMtOpTnmmc5y1aAynPvc5EACw050p6IABwMnPghp0n/5sp5uuGc+DOvShG0moHa95AABA9KIQlajxBEpQjHqUn/68wAkFatGPmrSgIVVlJUt60pbqM6UdqKhLZ/rSA0RApjTN6UYEMIB86vSnlwRqKAICADs=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiNBCiRsYW5nWydhY2Nlc3NfdG9rZW4nXSA9ICdBY2Nlc3MgVG9rZW4nOwokbGFuZ1snYWNjZXNzX3Rva2VuX3NlY3JldCddID0gJ0FjY2VzcyBUb2tlbiBTZWNyZXQnOwokbGFuZ1snYXV0aHRlbXBsYXRlcyddID0gJ0F1dGhvcml6YXRpb24gVGVtcGxhdGVzJzsKJGxhbmdbJ2F1dGhvcml6ZV92aWFfdHdpdHRlciddID0gJ0F1dGhvcml6ZSB2aWEgVHdpdHRlcic7CgojQgoKI0MKJGxhbmdbJ2NvbnN1bWVyX3NlY3JldCddID0gJ0NvbnN1bWVyIFNlY3JldCc7CiRsYW5nWydjb25zdW1lcl9rZXknXSA9ICdDb25zdW1lciBLZXknOwoKI0QKJGxhbmdbJ2RmbHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwoKI0UKJGxhbmdbJ2Vycm9yX2FjY2Vzc19zZXR0aW5ncyddID0gJ0FjY2VzcyB0b2tlbiBhbmQgYWNjZXNzIHNlY3JldCBhcmUgZW1wdHkgb3IgaW52YWxpZCc7CiRsYW5nWydlcnJvcl9hY2Nlc3N0b2tlbnMnXSA9ICdFcnJvciByZXRyaWV2aW5nIGFjY2VzcyB0b2tlbnMnOwokbGFuZ1snZXJyb3JfY29ubmVjdCddID0gJ0Vycm9yIGNvbm5lY3Rpbmcgb3IgYXV0aGVudGljYXRpbmcgdG8gdHdpdHRlciBzZXJ2aWNlcyc7CiRsYW5nWydlcnJvcl9jb25zdW1lcl9zZXR0aW5ncyddID0gJ0NvbnN1bWVyIGtleSBhbmQgc2VjcmV0IGFyZSBlbXB0eSBvciBpbnZhbGlkJzsKJGxhbmdbJ2Vycm9yX2NyZWRlbnRpYWxzJ10gPSAnQXR0ZW1wdCB0byBzZW5kIGEgbWVzc2FnZSBidXQgYWNjZXNzIHRva2VuIG9yIG90aGVyIGNyZWRlbnRpYWxzIGFyZSBlbXB0eSBvciBpbnZhbGlkJzsKJGxhbmdbJ2Vycm9yX2NyZWRlbnRpYWxzMiddID0gJ0FjY2VzcyB0b2tlbiBvciBvdGhlciBjcmVkZW50aWFscyBhcmUgZW1wdHkgb3IgaW52YWxpZCc7CiRsYW5nWydlcnJvcl9ub2ZldSddID0gJ0NvdWxkIG5vdCBnZXQgdGhlIEZFVSBtb2R1bGUgdG8gZ2V0L3NldCBDR1RXZWV0IFVzZXIga2V5JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRtZXNzYWdlJ10gPSAnVGhlIG1lc3NhZ2Ugc3VwcGxpZWQgd2FzIGludmFsaWQgKG1pc3NpbmcgYm9keSBvciBhbm90aGVyIHJlcXVpcmVkIHBhcmFtZXRlciknOwokbGFuZ1snZXJyb3JfaW52YWxpZHVpZCddID0gJ0ludmFsaWQgVXNlciBJRCAlcyc7CgojRgokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2FsZ3V5cyBUd2VldCBNb2R1bGUnOwoKI0cKCiNICiRsYW5nWydoZWxwX2FjdGlvbiddID0gJ0RldGVybWluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIG1vZHVsZSBvbiBhIGZyb250ZW5kIHJlcXVlc3QuICBQb3NzaWJsZSB2YWx1ZXMgYXJlOiAmcXVvdDthdXRob3JpemUmcXVvdDsgYW5kICZxdW90O3RpbWVsaW5lJnF1b3Q7LiAgVGhpcyBtb2R1bGUgaGFzIG5vIGRlZmF1bHQgYWN0aW9uLic7CiRsYW5nWydoZWxwX2F1dGh0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7YXV0aG9yaXplJnF1b3Q7IGFjdGlvbiwgaXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgYSBub24gZGVmYXVsdCBhdXRob3JpemF0aW9uIHRlbXBsYXRlLic7CiRsYW5nWydoZWxwX2NvdW50J10gPSAnKGludGVnZXIpIEFwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7dGltZWxpbmUmcXVvdDsgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0d2VldHMgdG8gZGlzcGxheS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDIwJzsKJGxhbmdbJ2hlbHBfZGVlcCddID0gJyhpbnRlZ2VyKSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlICZxdW90O3RpbWVsaW5lJnF1b3Q7IGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoYXQgZW50aXRpZXMgKHN1Y2ggYXMgbWVkaWEsIHVybHMsIGhhc2h0YWdzIGV0YykgaW4gdGhlIG91dHB1dC4gIEJ5IGRlZmF1bHQgdGhpcyBvcHRpb24gaXMgb2ZmLic7CiRsYW5nWydoZWxwX25vcmVwbGllcyddID0gJyhpbnRlZ2VyKSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlICZxdW90O3RpbWVsaW5lJnF1b3Q7IGFjdGlvbi4gIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGV4Y2x1ZGUgcmVwbGllcyB0byB0d2VldHMgaW4gdGhlIGdlbmVyYXRlZCBvdXRwdXQuICBCeSBkZWZhdWx0IHJlcGxpZXMgd2lsbCBiZSBpbmNsdWRlZC4nOwokbGFuZ1snaGVscF9pbmxpbmUnXSA9ICcoaW50ZWdlcikgQXBwbGljYWJsZSBvbmx5IHRvIHRoZSAmcXVvdDthdXRob3JpemUmcXVvdDsgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhhdCB0aGUgZm9ybSBzaG91bGQgYmUgY3JlYXRlZCBpbmxpbmUuIEFueSBub24gemVybyB2YWx1ZSBjYW4gYmUgc3BlY2lmaWVkLic7CiRsYW5nWydoZWxwX3JldHdlZXRzJ10gPSAnKGludGVnZXIpIEFwcGxpY2FibGUgb25seSB0byB0aGUgJnF1b3Q7dGltZWxpbmUmcXVvdDsgYWN0aW9uLiAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSByZXR3ZWV0cyBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dC4gIEJ5IGRlZmF1bHQgdGhpcyBvcHRpb24gaXMgb2ZmLic7CiRsYW5nWydoZWxwX3RpbWVsaW5ldGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlICZxdW90O3RpbWVsaW5lJnF1b3Q7IGFjdGlvbi4gIFRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIGEgbm9uIGRlZmF1bHQgdGltZWxpbmUgdGVtcGxhdGUnOwokbGFuZ1snaGVscF91c2VyJ10gPSAnQXBwbGljYWJsZSBvbmx5IHRvIHRoZSAmcXVvdDt0aW1lbGluZSZxdW90OyBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIGEgdHdpdHRlciB1c2VyIGlkIG9yIHNjcmVlbiBuYW1lIHRvIGZpbHRlciBtZXNzYWdlcyBieSc7CiRsYW5nWydob21lcGFnZSddID0gJ0hvbWUgUGFnZSc7CgojSQokbGFuZ1snaW5mb19hY2NvdW50X3NldHRpbmdzJ10gPSAnQSB1c2VyIGFjY2VzcyB0b2tlbiwgYW5kIHRva2VuIHNlY3JldCBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIHNlbmQgc3RhdHVzIHVwZGF0ZXMgZXRjLiAgWW91IGNhbiBvYnRhaW4gdGhlc2UgZGlyZWN0bHkgZnJvbSB0d2l0dGVyLCBvciB1c2UgdGhlICZxdW90O0F1dGhvcml6ZSB2aWEgVHdpdHRlciZxdW90OyBsaW5rIGJlbG93Lic7CiRsYW5nWydpbmZvX2FwcF9zZXR0aW5ncyddID0gJ1lvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbnN1bWVyIGtleSBhbmQgY29uc3VtZXIgc2VjcmV0IGZyb20geW91ciB0d2l0dGVyIGFwcC4gIFRoZXNlIGNhbiBiZSBmb3VuZCB1bmRlciAmcXVvdDtNeSBBcHBsaWNhdGlvbnMmcXVvdDsgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi50d2l0dGVyLmNvbSI+ZGV2LnR3aXR0ZXIuY29tPC9hPic7CiRsYW5nWydpbmZvX2ZldV9zY3JlZW5uYW1lX3Byb3AnXSA9ICdFbnRlciB0aGUgbmFtZSBvZiBhbiBGRVUgcHJvcGVydHkgdGhhdCBjb250YWlucyBhIHR3aXR0ZXIgc2NyZWVuIG5hbWUgZm9yIHVzZXJzLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhbGxvdyBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdG8gRkVVIHVzZXJzIHZpYSB0d2l0dGVyIERpcmVjdCBNZXNzYWdlcy4gIFVzZXJzIG11c3QgYWxzbyBmb2xsb3cgeW91ciB0d2l0dGVyIGFjY291bnQnOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdUaGlzIHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGluIHRoZSBhZG1pbiBuYXZpZ2F0aW9uLiAgWW91IG1heSBuZWVkIHRvIGNsZWFyIHRoZSBzaXRlIGNhY2hlIGFmdGVyIGNoYW5naW5nIHRoaXMgc2V0dGluZyc7CiRsYW5nWydpbmZvX215dHdpdHRlciddID0gJ1NwZWNpZnkgeW91ciB0d2l0dGVyIHNjcmVlbiBuYW1lIGhlcmUgaW4gb3JkZXIgZm9yIHRoaXMgd2Vic2l0ZSB0byBiZSBhYmxlIHRvIHNlbmQgeW91IGRpcmVjdCBtZXNzYWdlcyBvbiB0d2l0dGVyLiAgWW91IG11c3QgYWxzbyBiZSBmb2xsb3dpbmcgdGhlIHR3aXR0ZXIgdXNlciAlcyc7CiRsYW5nWydpbmZvX3NlbmRlcl90d2l0dGVyJ10gPSAnVHdpdHRlciBtZXNzYWdlcyBhcmUgYSBtYXhpbXVtIG9mIDE0MCBjaGFyYWN0ZXJzIGxvbmcuIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gSXQgaGFzIGJlZW4gcmVwb3J0ZWQgdGhhdCB0d2l0dGVyIGNvdW50cyBlYWNoIGFuZCBldmVyeSBVUkwgYXMgaGF2aW5nIDIwIGNoYXJhY3RlcnMgYW5kIGF1dG9tYXRpY2FsbHkgc2hvcnRlbnMgVVJMUyBvZiAxOSBjaGFyYWN0ZXJzIG9yIG1vcmUuICBBbnkgY2hhcmFjdGVyIGNvdW50IGlzIGp1c3QgYW4gYXBwcm94aW1hdGlvbi4nOwokbGFuZ1snaW5mb19zaG9ydGVuX3VybHMnXSA9ICdJZiBhIHN1aXRhYmxlIG1vZHVsZSBpcyBmb3VuZCwgYW5kIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIFVSTFMgaW4gb3V0Z29pbmcgdHdlZXRzIGNhbiBiZSBzaG9ydGVuZWQnOwoKI0oKCiNLCgojTAoKI00KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBtb2R1bGUgZm9yIHNlbmRpbmcgdHdlZXRzJzsKJGxhbmdbJ21zZ19hY2Nlc3N0b2tlbnNfZ29vZCddID0gJ0FjY2VzcyB0b2tlbnMgcmVjZWl2ZWQnOwokbGFuZ1snbXNnX2F1dGhfa25vd24nXSA9ICdZb3VyIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGFyZSBzZWN1cmVseSBzdG9yZWQgYW5kIHJlYWR5IHRvIHVzZSc7CiRsYW5nWydtc2dfYXV0aF9zdWNjZXNzJ10gPSAnQXV0aG9yaXphdGlvbiBTdWNjZXNzZnVsbCc7CiRsYW5nWydtc2dfdHdlZXRzZW50J10gPSAnVHdlZXQgc3VjY2Vzc2Z1bGx5IHNlbnQnOwokbGFuZ1snbXl0d2l0dGVyJ10gPSAnTXkgVHdpdHRlcic7CgojTgoKI08KCiNQCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBtb2R1bGUgaGFzIGJlZW4gaW5zdGFsbGVkLiAgUGxlYXNlIHZpc2l0IHRoZSBtb2R1bGVzIGFkbWluIHBhbmVsIHRvIHNldCB0aGUgYXV0aG9yaXphdGlvbiB0b2tlbnMnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RoZSBtb2R1bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHVuaW5zdGFsbGVkLCBhbmQgYWxsIGRhdGEgcmVsYXRlZCB0byB0aGlzIG1vZHVsZSBwZXJtYW5lbnRseSByZW1vdmVkJzsKJGxhbmdbJ3Byb21wdF9mZXVfcHJvcCddID0gJ0ZFVSBUd2l0dGVyIFNjcmVlbiBOYW1lIFByb3BlcnR5JzsKJGxhbmdbJ3Byb21wdF9mcmllbmRseW5hbWUnXSA9ICdNb2R1bGUgRnJpZW5kbHkgTmFtZSc7CiRsYW5nWydwcm9tcHRfbXlzY3JlZW5uYW1lJ10gPSAnTXkgU2NyZWVuIE5hbWUnOwokbGFuZ1sncHJvbXB0X3Nob3J0ZW5fdXJscyddID0gJ1Nob3J0ZW4gVVJMUyc7CgojUQoKI1IKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgbW9kdWxlPyAgVW5pbnN0YWxsaW5nIHdpbGwgcmVtb3ZlIGFsbCBrbm93biB0d2l0dGVyIGNyZWRlbnRpYWxzIGZvciBhbnkgdXNlcnMgYW5kIG1heSBicmVhayBhIGZ1bmN0aW9uaW5nIHdlYnNpdGUuJzsKCiNTCiRsYW5nWydzZW5kX3Rlc3RfdHdlZXQnXSA9ICdTZW5kIFRlc3QgVHdlZXQnOwokbGFuZ1snc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydzZXR0aW5nc19jaGFuZ2VkJ10gPSAnU2V0dGluZ3MgdXBkYXRlZCc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwoKI1QKJGxhbmdbJ3RpbWVsaW5ldGVtcGxhdGVzJ10gPSAnVGltZWxpbmUgVGVtcGxhdGVzJzsKJGxhbmdbJ3RpdGxlX2FkZGVkaXRfYXV0aHRlbXBsYXRlJ10gPSAnQWRkIG9yIEVkaXQgYW4gQXV0aG9yaXphdGlvbiBUZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9hZGRlZGl0X3RpbWVsaW5lJ10gPSAnQWRkIG9yIEVkaXQgYSBUaW1lbGluZSBUZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9hcHBfc2V0dGluZ3MnXSA9ICdUd2l0dGVyIEFwcCBTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9nZW5lcmFsX3NldHRpbmdzJ10gPSAnR2VuZXJhbCBTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9zeXNkZmx0X2F1dGh0ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEF1dGhvcml6YXRpb24gVGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfc3lzZGZsdF90aW1lbGluZSddID0gJ1N5c3RlbSBEZWZhdWx0IFRpbWVsaW5lIFRlbXBsYXRlJzsKJGxhbmdbJ3RyYW5zcG9ydF9kZXNjJ10gPSAnU2VuZCBtZXNzYWdlcyBhbmQgdXBkYXRlcyB2aWEgdHdpdHRlcic7CiRsYW5nWyd0d2l0dGVyX2FjY291bnRfc2V0dGluZ3MnXSA9ICdUd2l0dGVyIEFjY291bnQgU2V0dGluZ3MnOwoKI1UKCiNWCiRsYW5nWyd2aWEnXSA9ICd2aWEnOwoKI1cKCiNYCgojWQoKI1oKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.cgtweetcommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIGNndHdlZXRjb21tYW5kCnsKICBwcml2YXRlICRfY29uc3VtZXJfa2V5OwogIHByaXZhdGUgJF9jb25zdW1lcl9zZWNyZXQ7CiAgcHJpdmF0ZSAkX3VzZXJfa2V5OwogIHByaXZhdGUgJF91c2VyX3NlY3JldDsKCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb25zdW1lcl9rZXksJGNvbnN1bWVyX3NlY3JldCkKICB7CiAgICBpZiggISRjb25zdW1lcl9rZXkgfHwgISRjb25zdW1lcl9zZWNyZXQgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbnZhbGlkIGNvbnN1bWVyIGtleSBvciBjb25zdW1lciBzZWNyZXQnKTsKICAgICR0aGlzLT5fY29uc3VtZXJfa2V5ID0gJGNvbnN1bWVyX2tleTsKICAgICR0aGlzLT5fY29uc3VtZXJfc2VjcmV0ID0gJGNvbnN1bWVyX3NlY3JldDsKCiAgICByZXF1aXJlX29uY2UoX19ESVJfXy4nL3R3aXR0ZXJvYXV0aC90d2l0dGVyb2F1dGgucGhwJyk7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X3VzZXJfdG9rZW4oJHVzZXJfa2V5LCR1c2VyX3NlY3JldCkKICB7CiAgICBpZiggISR1c2VyX2tleSB8fCAhJHVzZXJfc2VjcmV0ICkgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBjb25zdW1lciBrZXkgb3IgY29uc3VtZXIgc2VjcmV0Jyk7CiAgICAkdGhpcy0+X3VzZXJfa2V5ID0gJHVzZXJfa2V5OwogICAgJHRoaXMtPl91c2VyX3NlY3JldCA9ICR1c2VyX3NlY3JldDsKICB9CgogIHByaXZhdGUgZnVuY3Rpb24gJl9nZXRfY29ubmVjdGlvbigpCiAgewogICAgJG9iaiA9IG5ldyBUd2l0dGVyT0F1dGgoJHRoaXMtPl9jb25zdW1lcl9rZXksJHRoaXMtPl9jb25zdW1lcl9zZWNyZXQsICR0aGlzLT5fdXNlcl9rZXksJHRoaXMtPl91c2VyX3NlY3JldCk7CiAgICByZXR1cm4gJG9iajsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBwb3N0X3VwZGF0ZShub3RpZmljYXRpb25fbWVzc2FnZSAkbXNnKQogIHsKICAgIGlmKCAhJG1zZy0+Ym9keSApIHRocm93IG5ldyBFeGNlcHRpb24oJ05vdGhpbmcgdG8gc2VuZCcpOwoKICAgIC8vIHByb2Nlc3MgdGhlIG1lc3NhZ2UKICAgICRib2R5ID0gc3Vic3RyKHN0cmlwX3RhZ3MoJG1zZy0+Ym9keSksMCwxNDApOwoKICAgIC8vIGFuZCBzZW5kIGl0LgogICAgJGNvbm5lY3Rpb24gPSAkdGhpcy0+X2dldF9jb25uZWN0aW9uKCk7CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWydzdGF0dXMnXSA9ICRib2R5OwogICAgaWYoICRtc2ctPmxhdCAmJiAkbXNnLT5sb25nICkgewogICAgICAkcGFybXNbJ2xhdCddID0gJG1zZy0+bGF0OwogICAgICAkcGFybXNbJ2xvbmcnXSA9ICRtc2ctPmxvbmc7CiAgICB9CiAgICAkcmVzID0gJGNvbm5lY3Rpb24tPnBvc3QoJ3N0YXR1c2VzL3VwZGF0ZScsJHBhcm1zKTsKICAgIGlmKCAhaXNfb2JqZWN0KCRyZXMpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbignRXJyb3IgdHdlZXQgZmFpbGVkLCByZXN1bHQgbm90IGFuIG9iamVjdCcpOwogICAgaWYoIGlzc2V0KCRyZXMtPmVycm9yKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHJlcy0+ZXJyb3IpOwogICAgcmV0dXJuICRyZXM7CiAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgtweet_credentials.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIGNndHdlZXRfY3JlZGVudGlhbHMKewogIHByaXZhdGUgc3RhdGljICRfa2V5cyA9IGFycmF5KCdjb25zdW1lcl9rZXknLCdjb25zdW1lcl9zZWNyZXQnLCd1c2VyX2tleScsJ3VzZXJfc2VjcmV0Jyk7CiAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgpOwoKICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkKICB7CiAgICBpZiggIWluX2FycmF5KCRrZXksc2VsZjo6JF9rZXlzKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ0dldCBpbnZhbGlkIGtleSBpbiBjZ3R3ZWV0X2NyZWRlbnRpYWxzX29iamVjdCcpOwogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSB7CiAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CiAgICB9CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoJGtleSwkdmFsdWUpCiAgewogICAgaWYoICFpc19zdHJpbmcoJHZhbHVlKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgdmFsdWUgaW4gY2d0d2VldF9jcmVkZW50aWFscyBvYmplY3QgZm9yICcuJGtleSk7CiAgICBpZiggIWluX2FycmF5KCRrZXksc2VsZjo6JF9rZXlzKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ1NldCBpbnZhbGlkIGtleSBpbiBjZ3R3ZWV0X2NyZWRlbnRpYWxzX29iamVjdCcpOwoKICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBpc192YWxpZCgpCiAgewogICAgZm9yZWFjaCggc2VsZjo6JF9rZXlzIGFzICRrICkgewogICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVska10pIHx8ICR0aGlzLT5fZGF0YVska10gPT0gJycgKSByZXR1cm4gRkFMU0U7CiAgICB9CiAgICByZXR1cm4gVFJVRTsKICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgtweet_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmZpbmFsIGNsYXNzIGNndHdlZXRfdXRpbHMKewogICAgY29uc3QgUFJFRl9BRE1JTl9TQ1JFRU5fTkFNRSA9ICd0d2l0dGVyX3NjcmVlbl9uYW1lJzsgLy8gdGhpcyBhZG1pbiB1c2VyIHByb3BlcnR5IHdpbGwgY29udGFpbiBhIHR3aXR0ZXIgc2NyZWVuIG5hbWUKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZnZXRfZGVmYXVsdF9jcmVkZW50aWFscygpCiAgewogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dUd2VldCcpOwogICAgJGNyZWRzID0gbmV3IGNndHdlZXRfY3JlZGVudGlhbHM7CiAgICAkY3JlZHMtPmNvbnN1bWVyX2tleSA9IHNlbGY6OmRlY3J5cHQoJG1vZC0+R2V0UHJlZmVyZW5jZSgnY29uc3VtZXJfa2V5JykpOwogICAgJGNyZWRzLT5jb25zdW1lcl9zZWNyZXQgPSBzZWxmOjpkZWNyeXB0KCRtb2QtPkdldFByZWZlcmVuY2UoJ2NvbnN1bWVyX3NlY3JldCcpKTsKICAgICRjcmVkcy0+dXNlcl9rZXkgPSBzZWxmOjpkZWNyeXB0KCRtb2QtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc190b2tlbicpKTsKICAgICRjcmVkcy0+dXNlcl9zZWNyZXQgPSBzZWxmOjpkZWNyeXB0KCRtb2QtPkdldFByZWZlcmVuY2UoJ2FjY2Vzc190b2tlbl9zZWNyZXQnKSk7CgogICAgaWYoICEkY3JlZHMtPmlzX3ZhbGlkKCkgKSB0aHJvdyBuZXcgQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfYWNjZXNzdG9rZW5zJykpOwogICAgcmV0dXJuICRjcmVkczsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KGNndHdlZXRfY3JlZGVudGlhbHMmICRkYXRhX29iaiwkY21kLCRwYXJhbXMgPSBhcnJheSgpKQogIHsKICAgIGlmKCAhJGRhdGFfb2JqLT5pc192YWxpZCgpICkgewogICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWVsKE1PRF9DR1RXRUVUKTsKICAgICAgdGhyb3cgbmV3IENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2NyZWRlbnRpYWxzMicpKTsKICAgIH0KCiAgICByZXF1aXJlX29uY2UoX19ESVJfXy4nL3R3aXR0ZXJvYXV0aC90d2l0dGVyb2F1dGgucGhwJyk7CiAgICAkY29ubmVjdGlvbiA9IG5ldyBUd2l0dGVyT2F1dGgoJGRhdGFfb2JqLT5jb25zdW1lcl9rZXksJGRhdGFfb2JqLT5jb25zdW1lcl9zZWNyZXQsCgkJCQkgICAkZGF0YV9vYmotPnVzZXJfa2V5LCRkYXRhX29iai0+dXNlcl9zZWNyZXQpOwogICAgJHJlcyA9ICAkY29ubmVjdGlvbi0+Z2V0KCRjbWQsJHBhcmFtcyk7CiAgICBpZiggaXNfb2JqZWN0KCRyZXMpICYmIGlzc2V0KCRyZXMtPmVycm9yKSApIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJHJlcy0+ZXJyb3IpOwogICAgcmV0dXJuICRyZXM7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBvc3QoY2d0d2VldF9jcmVkZW50aWFscyYgJGRhdGFfb2JqLCRjbWQsJHBhcmFtcyA9IGFycmF5KCkpCiAgewogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dUV0VFVCk7CiAgICBpZiggISRkYXRhX29iai0+aXNfdmFsaWQoKSApIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfY3JlZGVudGlhbHMyJykpOwoKICAgIHJlcXVpcmVfb25jZShfX0RJUl9fLicvdHdpdHRlcm9hdXRoL3R3aXR0ZXJvYXV0aC5waHAnKTsKICAgICRjb25uZWN0aW9uID0gbmV3IFR3aXR0ZXJPYXV0aCgkZGF0YV9vYmotPmNvbnN1bWVyX2tleSwkZGF0YV9vYmotPmNvbnN1bWVyX3NlY3JldCwgJGRhdGFfb2JqLT51c2VyX2tleSwkZGF0YV9vYmotPnVzZXJfc2VjcmV0KTsKICAgICRyZXMgPSAkY29ubmVjdGlvbi0+cG9zdCgkY21kLCRwYXJhbXMpOwogICAgaWYoIGlzX29iamVjdCgkcmVzKSAmJiBpc3NldCgkcmVzLT5lcnJvcnMpICkgewogICAgICBmb3JlYWNoKCAkcmVzLT5lcnJvcnMgYXMgJGVycm9yICkgewoJdGhyb3cgbmV3IENtc0V4Y2VwdGlvbigkZXJyb3ItPm1lc3NhZ2UpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gJHJlczsKICB9CgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9nZXRfZW5jcnlwdGlvbl9rZXkoKQogIHsKICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHVHdlZXQnKTsKICAgICRrZXkgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdlbmNyeXB0aW9uX2tleScpOwogICAgaWYoICEka2V5ICkgewogICAgICAkY29uZmlnID0gY21zX3V0aWxzOjpnZXRfY29uZmlnKCk7CiAgICAgICRzdHIgPSAkY29uZmlnWydyb290X3VybCddLiRjb25maWdbJ3Jvb3RfcGF0aCddLnRpbWUoKTsKICAgICAgJGtleSA9IG1kNShzdHJfc2h1ZmZsZSgkc3RyKSk7CiAgICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2VuY3J5cHRpb25fa2V5Jywka2V5KTsKICAgIH0KICAgIHJldHVybiAka2V5OwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNyeXB0KCRzdHIpCiAgewogICAgaWYoICEkc3RyICkgcmV0dXJuOwogICAgJGtleSA9IHNlbGY6Ol9nZXRfZW5jcnlwdGlvbl9rZXkoKTsKICAgICRyZXQgPSBiYXNlNjRfZW5jb2RlKGNnZV9lbmNyeXB0OjplbmNyeXB0KCRrZXksJHN0cikpOwogICAgcmV0dXJuICRyZXQ7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY3J5cHQoJHN0cikKICB7CiAgICBpZiggISRzdHIgKSByZXR1cm47CiAgICAka2V5ID0gc2VsZjo6X2dldF9lbmNyeXB0aW9uX2tleSgpOwogICAgJHJldCA9IHJ0cmltKGNnZV9lbmNyeXB0OjpkZWNyeXB0KCRrZXksYmFzZTY0X2RlY29kZSgkc3RyKSkpOwogICAgcmV0dXJuICRyZXQ7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHR3ZWV0X3RvX2h0bWwoJHRleHQsJGJsYW5rdGFyZ2V0ID0gRkFMU0UpCiAgewogICAgJHRhcmdldCA9ICcnOwogICAgaWYoICRibGFua3RhcmdldCApICR0YXJnZXQ9JyB0YXJnZXQ9ImJsYW5rIic7CgogICAgJHRleHQgPSBodG1sc3BlY2lhbGNoYXJzKCR0ZXh0KTsKICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCclKGh0dHA6Ly8oW2EtejAtOV8uKyYhI34vLFwtXSspKSVpJywnPGEgaHJlZj0iaHR0cDovLyQyIicuJHRhcmdldC4nPiQxPC9hPicsJHRleHQpOwogICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoJy9AKFthLXowLTlfXSspL2knLCc8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vJDEiJy4kdGFyZ2V0Lic+QCQxPC9hPicsJHRleHQpOwogICAgcmV0dXJuICR0ZXh0OwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBodG1sX3RvX3R3ZWV0KCRodG1sLCRzaG9ydGVuX3VybHMgPSBUUlVFKQogIHsKICAgICR0ZXh0ID0gc3RyaXBfdGFncygkaHRtbCk7CgogICAgaWYoICRzaG9ydGVuX3VybHMgKSB7CiAgICAgICAgJHRtcCA9IE1vZHVsZU9wZXJhdGlvbnM6OmdldF9tb2R1bGVzX3dpdGhfY2FwYWJpbGl0eSgnc2hvcnRlbl91cmwnKTsKICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJG5hbWUgKSB7CiAgICAgICAgICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRuYW1lKTsKICAgICAgICAgICAgICAgIGlmKCAhJG1vZCApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJHRleHQgPSAkbW9kLT5zaG9ydGVuX3VybHNfaW5fdGV4dCgkdGV4dCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkdGV4dCA9IHRyaW0oJHRleHQpOwogICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnICAgJywnICcsJHRleHQpOwogICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnICAnLCcgJywkdGV4dCk7CiAgICAkdGV4dCA9IHN1YnN0cigkdGV4dCwwLDE0MCk7CiAgICByZXR1cm4gJHRleHQ7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9teV9zY3JlZW5fbmFtZSgpCiAgewogICAgICByZXR1cm4gXGNtc191c2VycHJlZnM6OmdldCggc2VsZjo6UFJFRl9BRE1JTl9TQ1JFRU5fTkFNRSApOwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXRfbXlfc2NyZWVuX25hbWUoICR2YWwgKQogIHsKICAgICAgcmV0dXJuIFxjbXNfdXNlcnByZWZzOjpzZXQoIHNlbGY6OlBSRUZfQURNSU5fU0NSRUVOX05BTUUsICR2YWwgKTsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2FkbWluX3NjcmVlbl9uYW1lKCAkYWRtaW5fdWlkICkKICB7CiAgICAgIGlmKCAkYWRtaW5fdWlkIDwgMSApIHJldHVybjsKICAgICAgcmV0dXJuIFxjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoICRhZG1pbl91aWQsIHNlbGY6OlBSRUZfQURNSU5fU0NSRUVOX05BTUUgKTsKICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.notification_message.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIG5vdGlmaWNhdGlvbl9tZXNzYWdlIAp7CiAgY29uc3QgUFJJT1JJVFlfSElHSCA9IDE7CiAgY29uc3QgUFJJT1JJVFlfTk9STUFMID0gMjsKICBjb25zdCBQUklPUklUWV9MT1cgPSAzOwoKICBwcml2YXRlIHN0YXRpYyAkX2tleXMgPSBhcnJheSgnc3ViamVjdCcsJ2JvZHknLCdwcmlvcml0eScsCgkJCQknb3JpZ2luYXRvcicsJ3NlbmRlcicsJ2xhdCcsJ2xvbmcnKTsKICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCk7CgogIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgka2V5KQogIHsKICAgICRrZXkgPSBzdHJ0b2xvd2VyKCRrZXkpOwogICAgaWYoICFpbl9hcnJheSgka2V5LHNlbGY6OiRfa2V5cykgKSB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0F0dGVtcHQgdG8gcmV0cmlldmUgaW52YWxpZCBrZXkgZnJvbSBtZXNzYWdlIG9iamVjdCcpOwogICAgfQogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRrZXksJHZhbHVlKQogIHsKICAgICRrZXkgPSBzdHJ0b2xvd2VyKCRrZXkpOwogICAgaWYoICFpbl9hcnJheSgka2V5LHNlbGY6OiRfa2V5cykgKSB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0F0dGVtcHQgdG8gc3RvcmUgaW52YWxpZCBkYXRhIGludG8gbWVzc2FnZSBvYmplY3QnKTsKICAgIH0KICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgewogICAgLy8gc2VuZHRvIGNhbiBiZSBlbXB0eSAoaW5kaWNhdGluZyB1c2UgZGVmYXVsdCBtb2R1bGUgcHJvZmlsZSkKICAgIC8vICBvdGhlcndpc2UsIG11c3QgYmUgYW4gaW50ZWdlciBGRVUgdWlkCiAgICAvLyBzdWJqZWN0IGNhbiBiZSBlbXB0eQogICAgLy8gbGF0L2xvbmcgYXJlIG9wdGlvbmFsCgogICAgaWYoICR0aGlzLT5ib2R5ID09ICcnICkgewogICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbnZhbGlkIG5vdGlmaWNhdGlvbiBtZXNzYWdlOiBlbXB0eSBib2R5Jyk7CiAgICB9CiAgICBpZiggJHRoaXMtPm9yaWdpbmF0b3IgPT0gJycgKSB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgbm90aWZpY2F0aW9uIG1lc3NhZ2U6IGVtcHR5IG9yaWdpbmF0b3InKTsKICAgICAgLy8gbXVzdCBtYXRjaCBhIG1vZHVsZSBuYW1lIG9yICAnY29yZScKICAgIH0KICAgIGlmKCAkdGhpcy0+cHJpb3JpdHkgPiBzZWxmOjpQUklPUklUWV9MT1cgfHwgJHRoaXMtPnByaW9yaXR5IDwgc2VsZjo6UFJJT1JJVFlfSElHSCApIHsKICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBub3RpZmljYXRpb24gbWVzc2FnZTogaW52YWxpZCBwcmlvcml0eScpOwogICAgfQogIH0KfSAvLyBlbmQgb2YgY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/twitteroauth/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/twitteroauth/OAuth.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gdmltOiBmb2xkbWV0aG9kPW1hcmtlcgoKLyogR2VuZXJpYyBleGNlcHRpb24gY2xhc3MKICovCmlmICghY2xhc3NfZXhpc3RzKCdPQXV0aEV4Y2VwdGlvbicpKSB7CiAgY2xhc3MgT0F1dGhFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24gewogICAgLy8gcGFzcwogIH0KfQoKY2xhc3MgT0F1dGhDb25zdW1lciB7CiAgcHVibGljICRrZXk7CiAgcHVibGljICRzZWNyZXQ7CgogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRrZXksICRzZWNyZXQsICRjYWxsYmFja191cmw9TlVMTCkgewogICAgJHRoaXMtPmtleSA9ICRrZXk7CiAgICAkdGhpcy0+c2VjcmV0ID0gJHNlY3JldDsKICAgICR0aGlzLT5jYWxsYmFja191cmwgPSAkY2FsbGJhY2tfdXJsOwogIH0KCiAgZnVuY3Rpb24gX190b1N0cmluZygpIHsKICAgIHJldHVybiAiT0F1dGhDb25zdW1lcltrZXk9JHRoaXMtPmtleSxzZWNyZXQ9JHRoaXMtPnNlY3JldF0iOwogIH0KfQoKY2xhc3MgT0F1dGhUb2tlbiB7CiAgLy8gYWNjZXNzIHRva2VucyBhbmQgcmVxdWVzdCB0b2tlbnMKICBwdWJsaWMgJGtleTsKICBwdWJsaWMgJHNlY3JldDsKCiAgLyoqCiAgICoga2V5ID0gdGhlIHRva2VuCiAgICogc2VjcmV0ID0gdGhlIHRva2VuIHNlY3JldAogICAqLwogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRrZXksICRzZWNyZXQpIHsKICAgICR0aGlzLT5rZXkgPSAka2V5OwogICAgJHRoaXMtPnNlY3JldCA9ICRzZWNyZXQ7CiAgfQoKICAvKioKICAgKiBnZW5lcmF0ZXMgdGhlIGJhc2ljIHN0cmluZyBzZXJpYWxpemF0aW9uIG9mIGEgdG9rZW4gdGhhdCBhIHNlcnZlcgogICAqIHdvdWxkIHJlc3BvbmQgdG8gcmVxdWVzdF90b2tlbiBhbmQgYWNjZXNzX3Rva2VuIGNhbGxzIHdpdGgKICAgKi8KICBmdW5jdGlvbiB0b19zdHJpbmcoKSB7CiAgICByZXR1cm4gIm9hdXRoX3Rva2VuPSIgLgogICAgICAgICAgIE9BdXRoVXRpbDo6dXJsZW5jb2RlX3JmYzM5ODYoJHRoaXMtPmtleSkgLgogICAgICAgICAgICImb2F1dGhfdG9rZW5fc2VjcmV0PSIgLgogICAgICAgICAgIE9BdXRoVXRpbDo6dXJsZW5jb2RlX3JmYzM5ODYoJHRoaXMtPnNlY3JldCk7CiAgfQoKICBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewogICAgcmV0dXJuICR0aGlzLT50b19zdHJpbmcoKTsKICB9Cn0KCi8qKgogKiBBIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgYSBTaWduYXR1cmUgTWV0aG9kCiAqIFNlZSBzZWN0aW9uIDkgKCJTaWduaW5nIFJlcXVlc3RzIikgaW4gdGhlIHNwZWMKICovCmFic3RyYWN0IGNsYXNzIE9BdXRoU2lnbmF0dXJlTWV0aG9kIHsKICAvKioKICAgKiBOZWVkcyB0byByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIFNpZ25hdHVyZSBNZXRob2QgKGllIEhNQUMtU0hBMSkKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRfbmFtZSgpOwoKICAvKioKICAgKiBCdWlsZCB1cCB0aGUgc2lnbmF0dXJlCiAgICogTk9URTogVGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uIE1VU1QgTk9UIGJlIHVybGVuY29kZWQuCiAgICogdGhlIGVuY29kaW5nIGlzIGhhbmRsZWQgaW4gT0F1dGhSZXF1ZXN0IHdoZW4gdGhlIGZpbmFsCiAgICogcmVxdWVzdCBpcyBzZXJpYWxpemVkCiAgICogQHBhcmFtIE9BdXRoUmVxdWVzdCAkcmVxdWVzdAogICAqIEBwYXJhbSBPQXV0aENvbnN1bWVyICRjb25zdW1lcgogICAqIEBwYXJhbSBPQXV0aFRva2VuICR0b2tlbgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGJ1aWxkX3NpZ25hdHVyZSgkcmVxdWVzdCwgJGNvbnN1bWVyLCAkdG9rZW4pOwoKICAvKioKICAgKiBWZXJpZmllcyB0aGF0IGEgZ2l2ZW4gc2lnbmF0dXJlIGlzIGNvcnJlY3QKICAgKiBAcGFyYW0gT0F1dGhSZXF1ZXN0ICRyZXF1ZXN0CiAgICogQHBhcmFtIE9BdXRoQ29uc3VtZXIgJGNvbnN1bWVyCiAgICogQHBhcmFtIE9BdXRoVG9rZW4gJHRva2VuCiAgICogQHBhcmFtIHN0cmluZyAkc2lnbmF0dXJlCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGNoZWNrX3NpZ25hdHVyZSgkcmVxdWVzdCwgJGNvbnN1bWVyLCAkdG9rZW4sICRzaWduYXR1cmUpIHsKICAgICRidWlsdCA9ICR0aGlzLT5idWlsZF9zaWduYXR1cmUoJHJlcXVlc3QsICRjb25zdW1lciwgJHRva2VuKTsKICAgIHJldHVybiAkYnVpbHQgPT0gJHNpZ25hdHVyZTsKICB9Cn0KCi8qKgogKiBUaGUgSE1BQy1TSEExIHNpZ25hdHVyZSBtZXRob2QgdXNlcyB0aGUgSE1BQy1TSEExIHNpZ25hdHVyZSBhbGdvcml0aG0gYXMgZGVmaW5lZCBpbiBbUkZDMjEwNF0gCiAqIHdoZXJlIHRoZSBTaWduYXR1cmUgQmFzZSBTdHJpbmcgaXMgdGhlIHRleHQgYW5kIHRoZSBrZXkgaXMgdGhlIGNvbmNhdGVuYXRlZCB2YWx1ZXMgKGVhY2ggZmlyc3QgCiAqIGVuY29kZWQgcGVyIFBhcmFtZXRlciBFbmNvZGluZykgb2YgdGhlIENvbnN1bWVyIFNlY3JldCBhbmQgVG9rZW4gU2VjcmV0LCBzZXBhcmF0ZWQgYnkgYW4gJyYnIAogKiBjaGFyYWN0ZXIgKEFTQ0lJIGNvZGUgMzgpIGV2ZW4gaWYgZW1wdHkuCiAqICAgLSBDaGFwdGVyIDkuMiAoIkhNQUMtU0hBMSIpCiAqLwpjbGFzcyBPQXV0aFNpZ25hdHVyZU1ldGhvZF9ITUFDX1NIQTEgZXh0ZW5kcyBPQXV0aFNpZ25hdHVyZU1ldGhvZCB7CiAgZnVuY3Rpb24gZ2V0X25hbWUoKSB7CiAgICByZXR1cm4gIkhNQUMtU0hBMSI7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gYnVpbGRfc2lnbmF0dXJlKCRyZXF1ZXN0LCAkY29uc3VtZXIsICR0b2tlbikgewogICAgJGJhc2Vfc3RyaW5nID0gJHJlcXVlc3QtPmdldF9zaWduYXR1cmVfYmFzZV9zdHJpbmcoKTsKICAgICRyZXF1ZXN0LT5iYXNlX3N0cmluZyA9ICRiYXNlX3N0cmluZzsKCiAgICAka2V5X3BhcnRzID0gYXJyYXkoCiAgICAgICRjb25zdW1lci0+c2VjcmV0LAogICAgICAoJHRva2VuKSA/ICR0b2tlbi0+c2VjcmV0IDogIiIKICAgICk7CgogICAgJGtleV9wYXJ0cyA9IE9BdXRoVXRpbDo6dXJsZW5jb2RlX3JmYzM5ODYoJGtleV9wYXJ0cyk7CiAgICAka2V5ID0gaW1wbG9kZSgnJicsICRrZXlfcGFydHMpOwoKICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKGhhc2hfaG1hYygnc2hhMScsICRiYXNlX3N0cmluZywgJGtleSwgdHJ1ZSkpOwogIH0KfQoKLyoqCiAqIFRoZSBQTEFJTlRFWFQgbWV0aG9kIGRvZXMgbm90IHByb3ZpZGUgYW55IHNlY3VyaXR5IHByb3RlY3Rpb24gYW5kIFNIT1VMRCBvbmx5IGJlIHVzZWQgCiAqIG92ZXIgYSBzZWN1cmUgY2hhbm5lbCBzdWNoIGFzIEhUVFBTLiBJdCBkb2VzIG5vdCB1c2UgdGhlIFNpZ25hdHVyZSBCYXNlIFN0cmluZy4KICogICAtIENoYXB0ZXIgOS40ICgiUExBSU5URVhUIikKICovCmNsYXNzIE9BdXRoU2lnbmF0dXJlTWV0aG9kX1BMQUlOVEVYVCBleHRlbmRzIE9BdXRoU2lnbmF0dXJlTWV0aG9kIHsKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKSB7CiAgICByZXR1cm4gIlBMQUlOVEVYVCI7CiAgfQoKICAvKioKICAgKiBvYXV0aF9zaWduYXR1cmUgaXMgc2V0IHRvIHRoZSBjb25jYXRlbmF0ZWQgZW5jb2RlZCB2YWx1ZXMgb2YgdGhlIENvbnN1bWVyIFNlY3JldCBhbmQgCiAgICogVG9rZW4gU2VjcmV0LCBzZXBhcmF0ZWQgYnkgYSAnJicgY2hhcmFjdGVyIChBU0NJSSBjb2RlIDM4KSwgZXZlbiBpZiBlaXRoZXIgc2VjcmV0IGlzIAogICAqIGVtcHR5LiBUaGUgcmVzdWx0IE1VU1QgYmUgZW5jb2RlZCBhZ2Fpbi4KICAgKiAgIC0gQ2hhcHRlciA5LjQuMSAoIkdlbmVyYXRpbmcgU2lnbmF0dXJlcyIpCiAgICoKICAgKiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBzZWNvbmQgZW5jb2RpbmcgTVVTVCBOT1QgaGFwcGVuIGluIHRoZSBTaWduYXR1cmVNZXRob2QsIGFzCiAgICogT0F1dGhSZXF1ZXN0IGhhbmRsZXMgdGhpcyEKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gYnVpbGRfc2lnbmF0dXJlKCRyZXF1ZXN0LCAkY29uc3VtZXIsICR0b2tlbikgewogICAgJGtleV9wYXJ0cyA9IGFycmF5KAogICAgICAkY29uc3VtZXItPnNlY3JldCwKICAgICAgKCR0b2tlbikgPyAkdG9rZW4tPnNlY3JldCA6ICIiCiAgICApOwoKICAgICRrZXlfcGFydHMgPSBPQXV0aFV0aWw6OnVybGVuY29kZV9yZmMzOTg2KCRrZXlfcGFydHMpOwogICAgJGtleSA9IGltcGxvZGUoJyYnLCAka2V5X3BhcnRzKTsKICAgICRyZXF1ZXN0LT5iYXNlX3N0cmluZyA9ICRrZXk7CgogICAgcmV0dXJuICRrZXk7CiAgfQp9CgovKioKICogVGhlIFJTQS1TSEExIHNpZ25hdHVyZSBtZXRob2QgdXNlcyB0aGUgUlNBU1NBLVBLQ1MxLXYxXzUgc2lnbmF0dXJlIGFsZ29yaXRobSBhcyBkZWZpbmVkIGluIAogKiBbUkZDMzQ0N10gc2VjdGlvbiA4LjIgKG1vcmUgc2ltcGx5IGtub3duIGFzIFBLQ1MjMSksIHVzaW5nIFNIQS0xIGFzIHRoZSBoYXNoIGZ1bmN0aW9uIGZvciAKICogRU1TQS1QS0NTMS12MV81LiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIENvbnN1bWVyIGhhcyBwcm92aWRlZCBpdHMgUlNBIHB1YmxpYyBrZXkgaW4gYSAKICogdmVyaWZpZWQgd2F5IHRvIHRoZSBTZXJ2aWNlIFByb3ZpZGVyLCBpbiBhIG1hbm5lciB3aGljaCBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgCiAqIHNwZWNpZmljYXRpb24uCiAqICAgLSBDaGFwdGVyIDkuMyAoIlJTQS1TSEExIikKICovCmFic3RyYWN0IGNsYXNzIE9BdXRoU2lnbmF0dXJlTWV0aG9kX1JTQV9TSEExIGV4dGVuZHMgT0F1dGhTaWduYXR1cmVNZXRob2QgewogIHB1YmxpYyBmdW5jdGlvbiBnZXRfbmFtZSgpIHsKICAgIHJldHVybiAiUlNBLVNIQTEiOwogIH0KCiAgLy8gVXAgdG8gdGhlIFNQIHRvIGltcGxlbWVudCB0aGlzIGxvb2t1cCBvZiBrZXlzLiBQb3NzaWJsZSBpZGVhcyBhcmU6CiAgLy8gKDEpIGRvIGEgbG9va3VwIGluIGEgdGFibGUgb2YgdHJ1c3RlZCBjZXJ0cyBrZXllZCBvZmYgb2YgY29uc3VtZXIKICAvLyAoMikgZmV0Y2ggdmlhIGh0dHAgdXNpbmcgYSB1cmwgcHJvdmlkZWQgYnkgdGhlIHJlcXVlc3RlcgogIC8vICgzKSBzb21lIHNvcnQgb2Ygc3BlY2lmaWMgZGlzY292ZXJ5IGNvZGUgYmFzZWQgb24gcmVxdWVzdAogIC8vCiAgLy8gRWl0aGVyIHdheSBzaG91bGQgcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZQogIHByb3RlY3RlZCBhYnN0cmFjdCBmdW5jdGlvbiBmZXRjaF9wdWJsaWNfY2VydCgmJHJlcXVlc3QpOwoKICAvLyBVcCB0byB0aGUgU1AgdG8gaW1wbGVtZW50IHRoaXMgbG9va3VwIG9mIGtleXMuIFBvc3NpYmxlIGlkZWFzIGFyZToKICAvLyAoMSkgZG8gYSBsb29rdXAgaW4gYSB0YWJsZSBvZiB0cnVzdGVkIGNlcnRzIGtleWVkIG9mZiBvZiBjb25zdW1lcgogIC8vCiAgLy8gRWl0aGVyIHdheSBzaG91bGQgcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZQogIHByb3RlY3RlZCBhYnN0cmFjdCBmdW5jdGlvbiBmZXRjaF9wcml2YXRlX2NlcnQoJiRyZXF1ZXN0KTsKCiAgcHVibGljIGZ1bmN0aW9uIGJ1aWxkX3NpZ25hdHVyZSgkcmVxdWVzdCwgJGNvbnN1bWVyLCAkdG9rZW4pIHsKICAgICRiYXNlX3N0cmluZyA9ICRyZXF1ZXN0LT5nZXRfc2lnbmF0dXJlX2Jhc2Vfc3RyaW5nKCk7CiAgICAkcmVxdWVzdC0+YmFzZV9zdHJpbmcgPSAkYmFzZV9zdHJpbmc7CgogICAgLy8gRmV0Y2ggdGhlIHByaXZhdGUga2V5IGNlcnQgYmFzZWQgb24gdGhlIHJlcXVlc3QKICAgICRjZXJ0ID0gJHRoaXMtPmZldGNoX3ByaXZhdGVfY2VydCgkcmVxdWVzdCk7CgogICAgLy8gUHVsbCB0aGUgcHJpdmF0ZSBrZXkgSUQgZnJvbSB0aGUgY2VydGlmaWNhdGUKICAgICRwcml2YXRla2V5aWQgPSBvcGVuc3NsX2dldF9wcml2YXRla2V5KCRjZXJ0KTsKCiAgICAvLyBTaWduIHVzaW5nIHRoZSBrZXkKICAgICRvayA9IG9wZW5zc2xfc2lnbigkYmFzZV9zdHJpbmcsICRzaWduYXR1cmUsICRwcml2YXRla2V5aWQpOwoKICAgIC8vIFJlbGVhc2UgdGhlIGtleSByZXNvdXJjZQogICAgb3BlbnNzbF9mcmVlX2tleSgkcHJpdmF0ZWtleWlkKTsKCiAgICByZXR1cm4gYmFzZTY0X2VuY29kZSgkc2lnbmF0dXJlKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBjaGVja19zaWduYXR1cmUoJHJlcXVlc3QsICRjb25zdW1lciwgJHRva2VuLCAkc2lnbmF0dXJlKSB7CiAgICAkZGVjb2RlZF9zaWcgPSBiYXNlNjRfZGVjb2RlKCRzaWduYXR1cmUpOwoKICAgICRiYXNlX3N0cmluZyA9ICRyZXF1ZXN0LT5nZXRfc2lnbmF0dXJlX2Jhc2Vfc3RyaW5nKCk7CgogICAgLy8gRmV0Y2ggdGhlIHB1YmxpYyBrZXkgY2VydCBiYXNlZCBvbiB0aGUgcmVxdWVzdAogICAgJGNlcnQgPSAkdGhpcy0+ZmV0Y2hfcHVibGljX2NlcnQoJHJlcXVlc3QpOwoKICAgIC8vIFB1bGwgdGhlIHB1YmxpYyBrZXkgSUQgZnJvbSB0aGUgY2VydGlmaWNhdGUKICAgICRwdWJsaWNrZXlpZCA9IG9wZW5zc2xfZ2V0X3B1YmxpY2tleSgkY2VydCk7CgogICAgLy8gQ2hlY2sgdGhlIGNvbXB1dGVkIHNpZ25hdHVyZSBhZ2FpbnN0IHRoZSBvbmUgcGFzc2VkIGluIHRoZSBxdWVyeQogICAgJG9rID0gb3BlbnNzbF92ZXJpZnkoJGJhc2Vfc3RyaW5nLCAkZGVjb2RlZF9zaWcsICRwdWJsaWNrZXlpZCk7CgogICAgLy8gUmVsZWFzZSB0aGUga2V5IHJlc291cmNlCiAgICBvcGVuc3NsX2ZyZWVfa2V5KCRwdWJsaWNrZXlpZCk7CgogICAgcmV0dXJuICRvayA9PSAxOwogIH0KfQoKY2xhc3MgT0F1dGhSZXF1ZXN0IHsKICBwcml2YXRlICRwYXJhbWV0ZXJzOwogIHByaXZhdGUgJGh0dHBfbWV0aG9kOwogIHByaXZhdGUgJGh0dHBfdXJsOwogIC8vIGZvciBkZWJ1ZyBwdXJwb3NlcwogIHB1YmxpYyAkYmFzZV9zdHJpbmc7CiAgcHVibGljIHN0YXRpYyAkdmVyc2lvbiA9ICcxLjAnOwogIHB1YmxpYyBzdGF0aWMgJFBPU1RfSU5QVVQgPSAncGhwOi8vaW5wdXQnOwoKICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaHR0cF9tZXRob2QsICRodHRwX3VybCwgJHBhcmFtZXRlcnM9TlVMTCkgewogICAgQCRwYXJhbWV0ZXJzIG9yICRwYXJhbWV0ZXJzID0gYXJyYXkoKTsKICAgICRwYXJhbWV0ZXJzID0gYXJyYXlfbWVyZ2UoIE9BdXRoVXRpbDo6cGFyc2VfcGFyYW1ldGVycyhwYXJzZV91cmwoJGh0dHBfdXJsLCBQSFBfVVJMX1FVRVJZKSksICRwYXJhbWV0ZXJzKTsKICAgICR0aGlzLT5wYXJhbWV0ZXJzID0gJHBhcmFtZXRlcnM7CiAgICAkdGhpcy0+aHR0cF9tZXRob2QgPSAkaHR0cF9tZXRob2Q7CiAgICAkdGhpcy0+aHR0cF91cmwgPSAkaHR0cF91cmw7CiAgfQoKCiAgLyoqCiAgICogYXR0ZW1wdCB0byBidWlsZCB1cCBhIHJlcXVlc3QgZnJvbSB3aGF0IHdhcyBwYXNzZWQgdG8gdGhlIHNlcnZlcgogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbV9yZXF1ZXN0KCRodHRwX21ldGhvZD1OVUxMLCAkaHR0cF91cmw9TlVMTCwgJHBhcmFtZXRlcnM9TlVMTCkgewogICAgJHNjaGVtZSA9ICghaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pIHx8ICRfU0VSVkVSWydIVFRQUyddICE9ICJvbiIpCiAgICAgICAgICAgICAgPyAnaHR0cCcKICAgICAgICAgICAgICA6ICdodHRwcyc7CiAgICBAJGh0dHBfdXJsIG9yICRodHRwX3VybCA9ICRzY2hlbWUgLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOi8vJyAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6JyAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfU0VSVkVSWydTRVJWRVJfUE9SVCddIC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107CiAgICBAJGh0dHBfbWV0aG9kIG9yICRodHRwX21ldGhvZCA9ICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddOwoKICAgIC8vIFdlIHdlcmVuJ3QgaGFuZGVkIGFueSBwYXJhbWV0ZXJzLCBzbyBsZXQncyBmaW5kIHRoZSBvbmVzIHJlbGV2YW50IHRvCiAgICAvLyB0aGlzIHJlcXVlc3QuCiAgICAvLyBJZiB5b3UgcnVuIFhNTC1SUEMgb3Igc2ltaWxhciB5b3Ugc2hvdWxkIHVzZSB0aGlzIHRvIHByb3ZpZGUgeW91ciBvd24KICAgIC8vIHBhcnNlZCBwYXJhbWV0ZXItbGlzdAogICAgaWYgKCEkcGFyYW1ldGVycykgewogICAgICAvLyBGaW5kIHJlcXVlc3QgaGVhZGVycwogICAgICAkcmVxdWVzdF9oZWFkZXJzID0gT0F1dGhVdGlsOjpnZXRfaGVhZGVycygpOwoKICAgICAgLy8gUGFyc2UgdGhlIHF1ZXJ5LXN0cmluZyB0byBmaW5kIEdFVCBwYXJhbWV0ZXJzCiAgICAgICRwYXJhbWV0ZXJzID0gT0F1dGhVdGlsOjpwYXJzZV9wYXJhbWV0ZXJzKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSk7CgogICAgICAvLyBJdCdzIGEgUE9TVCByZXF1ZXN0IG9mIHRoZSBwcm9wZXIgY29udGVudC10eXBlLCBzbyBwYXJzZSBQT1NUCiAgICAgIC8vIHBhcmFtZXRlcnMgYW5kIGFkZCB0aG9zZSBvdmVycmlkaW5nIGFueSBkdXBsaWNhdGVzIGZyb20gR0VUCiAgICAgIGlmICgkaHR0cF9tZXRob2QgPT0gIlBPU1QiCiAgICAgICAgICAmJiBAc3Ryc3RyKCRyZXF1ZXN0X2hlYWRlcnNbIkNvbnRlbnQtVHlwZSJdLAogICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikKICAgICAgICAgICkgewogICAgICAgICRwb3N0X2RhdGEgPSBPQXV0aFV0aWw6OnBhcnNlX3BhcmFtZXRlcnMoCiAgICAgICAgICBmaWxlX2dldF9jb250ZW50cyhzZWxmOjokUE9TVF9JTlBVVCkKICAgICAgICApOwogICAgICAgICRwYXJhbWV0ZXJzID0gYXJyYXlfbWVyZ2UoJHBhcmFtZXRlcnMsICRwb3N0X2RhdGEpOwogICAgICB9CgogICAgICAvLyBXZSBoYXZlIGEgQXV0aG9yaXphdGlvbi1oZWFkZXIgd2l0aCBPQXV0aCBkYXRhLiBQYXJzZSB0aGUgaGVhZGVyCiAgICAgIC8vIGFuZCBhZGQgdGhvc2Ugb3ZlcnJpZGluZyBhbnkgZHVwbGljYXRlcyBmcm9tIEdFVCBvciBQT1NUCiAgICAgIGlmIChAc3Vic3RyKCRyZXF1ZXN0X2hlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSwgMCwgNikgPT0gIk9BdXRoICIpIHsKICAgICAgICAkaGVhZGVyX3BhcmFtZXRlcnMgPSBPQXV0aFV0aWw6OnNwbGl0X2hlYWRlcigKICAgICAgICAgICRyZXF1ZXN0X2hlYWRlcnNbJ0F1dGhvcml6YXRpb24nXQogICAgICAgICk7CiAgICAgICAgJHBhcmFtZXRlcnMgPSBhcnJheV9tZXJnZSgkcGFyYW1ldGVycywgJGhlYWRlcl9wYXJhbWV0ZXJzKTsKICAgICAgfQoKICAgIH0KCiAgICByZXR1cm4gbmV3IE9BdXRoUmVxdWVzdCgkaHR0cF9tZXRob2QsICRodHRwX3VybCwgJHBhcmFtZXRlcnMpOwogIH0KCiAgLyoqCiAgICogcHJldHR5IG11Y2ggYSBoZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHVwIHRoZSByZXF1ZXN0CiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tX2NvbnN1bWVyX2FuZF90b2tlbigkY29uc3VtZXIsICR0b2tlbiwgJGh0dHBfbWV0aG9kLCAkaHR0cF91cmwsICRwYXJhbWV0ZXJzPU5VTEwpIHsKICAgIEAkcGFyYW1ldGVycyBvciAkcGFyYW1ldGVycyA9IGFycmF5KCk7CiAgICAkZGVmYXVsdHMgPSBhcnJheSgib2F1dGhfdmVyc2lvbiIgPT4gT0F1dGhSZXF1ZXN0OjokdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICJvYXV0aF9ub25jZSIgPT4gT0F1dGhSZXF1ZXN0OjpnZW5lcmF0ZV9ub25jZSgpLAogICAgICAgICAgICAgICAgICAgICAgIm9hdXRoX3RpbWVzdGFtcCIgPT4gT0F1dGhSZXF1ZXN0OjpnZW5lcmF0ZV90aW1lc3RhbXAoKSwKICAgICAgICAgICAgICAgICAgICAgICJvYXV0aF9jb25zdW1lcl9rZXkiID0+ICRjb25zdW1lci0+a2V5KTsKICAgIGlmICgkdG9rZW4pCiAgICAgICRkZWZhdWx0c1snb2F1dGhfdG9rZW4nXSA9ICR0b2tlbi0+a2V5OwoKICAgICRwYXJhbWV0ZXJzID0gYXJyYXlfbWVyZ2UoJGRlZmF1bHRzLCAkcGFyYW1ldGVycyk7CgogICAgcmV0dXJuIG5ldyBPQXV0aFJlcXVlc3QoJGh0dHBfbWV0aG9kLCAkaHR0cF91cmwsICRwYXJhbWV0ZXJzKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfcGFyYW1ldGVyKCRuYW1lLCAkdmFsdWUsICRhbGxvd19kdXBsaWNhdGVzID0gdHJ1ZSkgewogICAgaWYgKCRhbGxvd19kdXBsaWNhdGVzICYmIGlzc2V0KCR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXSkpIHsKICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGFkZGVkIHBhcmFtZXRlcihzKSB3aXRoIHRoaXMgbmFtZSwgc28gYWRkIHRvIHRoZSBsaXN0CiAgICAgIGlmIChpc19zY2FsYXIoJHRoaXMtPnBhcmFtZXRlcnNbJG5hbWVdKSkgewogICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGR1cGxpY2F0ZSwgc28gdHJhbnNmb3JtIHNjYWxhciAoc3RyaW5nKQogICAgICAgIC8vIGludG8gYW4gYXJyYXkgc28gd2UgY2FuIGFkZCB0aGUgZHVwbGljYXRlcwogICAgICAgICR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXSA9IGFycmF5KCR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXSk7CiAgICAgIH0KCiAgICAgICR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXVtdID0gJHZhbHVlOwogICAgfSBlbHNlIHsKICAgICAgJHRoaXMtPnBhcmFtZXRlcnNbJG5hbWVdID0gJHZhbHVlOwogICAgfQogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9wYXJhbWV0ZXIoJG5hbWUpIHsKICAgIHJldHVybiBpc3NldCgkdGhpcy0+cGFyYW1ldGVyc1skbmFtZV0pID8gJHRoaXMtPnBhcmFtZXRlcnNbJG5hbWVdIDogbnVsbDsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBnZXRfcGFyYW1ldGVycygpIHsKICAgIHJldHVybiAkdGhpcy0+cGFyYW1ldGVyczsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiB1bnNldF9wYXJhbWV0ZXIoJG5hbWUpIHsKICAgIHVuc2V0KCR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXSk7CiAgfQoKICAvKioKICAgKiBUaGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBzb3J0ZWQgYW5kIGNvbmNhdGVuYXRlZCBpbnRvIGEgbm9ybWFsaXplZCBzdHJpbmcuCiAgICogQHJldHVybiBzdHJpbmcKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3NpZ25hYmxlX3BhcmFtZXRlcnMoKSB7CiAgICAvLyBHcmFiIGFsbCBwYXJhbWV0ZXJzCiAgICAkcGFyYW1zID0gJHRoaXMtPnBhcmFtZXRlcnM7CgogICAgLy8gUmVtb3ZlIG9hdXRoX3NpZ25hdHVyZSBpZiBwcmVzZW50CiAgICAvLyBSZWY6IFNwZWM6IDkuMS4xICgiVGhlIG9hdXRoX3NpZ25hdHVyZSBwYXJhbWV0ZXIgTVVTVCBiZSBleGNsdWRlZC4iKQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ29hdXRoX3NpZ25hdHVyZSddKSkgewogICAgICB1bnNldCgkcGFyYW1zWydvYXV0aF9zaWduYXR1cmUnXSk7CiAgICB9CgogICAgcmV0dXJuIE9BdXRoVXRpbDo6YnVpbGRfaHR0cF9xdWVyeSgkcGFyYW1zKTsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGJhc2Ugc3RyaW5nIG9mIHRoaXMgcmVxdWVzdAogICAqCiAgICogVGhlIGJhc2Ugc3RyaW5nIGRlZmluZWQgYXMgdGhlIG1ldGhvZCwgdGhlIHVybAogICAqIGFuZCB0aGUgcGFyYW1ldGVycyAobm9ybWFsaXplZCksIGVhY2ggdXJsZW5jb2RlZAogICAqIGFuZCB0aGUgY29uY2F0ZWQgd2l0aCAmLgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfc2lnbmF0dXJlX2Jhc2Vfc3RyaW5nKCkgewogICAgJHBhcnRzID0gYXJyYXkoCiAgICAgICR0aGlzLT5nZXRfbm9ybWFsaXplZF9odHRwX21ldGhvZCgpLAogICAgICAkdGhpcy0+Z2V0X25vcm1hbGl6ZWRfaHR0cF91cmwoKSwKICAgICAgJHRoaXMtPmdldF9zaWduYWJsZV9wYXJhbWV0ZXJzKCkKICAgICk7CgogICAgJHBhcnRzID0gT0F1dGhVdGlsOjp1cmxlbmNvZGVfcmZjMzk4NigkcGFydHMpOwoKICAgIHJldHVybiBpbXBsb2RlKCcmJywgJHBhcnRzKTsKICB9CgogIC8qKgogICAqIGp1c3QgdXBwZXJjYXNlcyB0aGUgaHR0cCBtZXRob2QKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25vcm1hbGl6ZWRfaHR0cF9tZXRob2QoKSB7CiAgICByZXR1cm4gc3RydG91cHBlcigkdGhpcy0+aHR0cF9tZXRob2QpOwogIH0KCiAgLyoqCiAgICogcGFyc2VzIHRoZSB1cmwgYW5kIHJlYnVpbGRzIGl0IHRvIGJlCiAgICogc2NoZW1lOi8vaG9zdC9wYXRoCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9ub3JtYWxpemVkX2h0dHBfdXJsKCkgewogICAgJHBhcnRzID0gcGFyc2VfdXJsKCR0aGlzLT5odHRwX3VybCk7CgogICAgJHBvcnQgPSBAJHBhcnRzWydwb3J0J107CiAgICAkc2NoZW1lID0gJHBhcnRzWydzY2hlbWUnXTsKICAgICRob3N0ID0gJHBhcnRzWydob3N0J107CiAgICAkcGF0aCA9IEAkcGFydHNbJ3BhdGgnXTsKCiAgICAkcG9ydCBvciAkcG9ydCA9ICgkc2NoZW1lID09ICdodHRwcycpID8gJzQ0MycgOiAnODAnOwoKICAgIGlmICgoJHNjaGVtZSA9PSAnaHR0cHMnICYmICRwb3J0ICE9ICc0NDMnKQogICAgICAgIHx8ICgkc2NoZW1lID09ICdodHRwJyAmJiAkcG9ydCAhPSAnODAnKSkgewogICAgICAkaG9zdCA9ICIkaG9zdDokcG9ydCI7CiAgICB9CiAgICByZXR1cm4gIiRzY2hlbWU6Ly8kaG9zdCRwYXRoIjsKICB9CgogIC8qKgogICAqIGJ1aWxkcyBhIHVybCB1c2FibGUgZm9yIGEgR0VUIHJlcXVlc3QKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gdG9fdXJsKCkgewogICAgJHBvc3RfZGF0YSA9ICR0aGlzLT50b19wb3N0ZGF0YSgpOwogICAgJG91dCA9ICR0aGlzLT5nZXRfbm9ybWFsaXplZF9odHRwX3VybCgpOwogICAgaWYgKCRwb3N0X2RhdGEpIHsKICAgICAgJG91dCAuPSAnPycuJHBvc3RfZGF0YTsKICAgIH0KICAgIHJldHVybiAkb3V0OwogIH0KCiAgLyoqCiAgICogYnVpbGRzIHRoZSBkYXRhIG9uZSB3b3VsZCBzZW5kIGluIGEgUE9TVCByZXF1ZXN0CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHRvX3Bvc3RkYXRhKCkgewogICAgcmV0dXJuIE9BdXRoVXRpbDo6YnVpbGRfaHR0cF9xdWVyeSgkdGhpcy0+cGFyYW1ldGVycyk7CiAgfQoKICAvKioKICAgKiBidWlsZHMgdGhlIEF1dGhvcml6YXRpb246IGhlYWRlcgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiB0b19oZWFkZXIoJHJlYWxtPW51bGwpIHsKICAgICRmaXJzdCA9IHRydWU7CglpZigkcmVhbG0pIHsKICAgICAgJG91dCA9ICdBdXRob3JpemF0aW9uOiBPQXV0aCByZWFsbT0iJyAuIE9BdXRoVXRpbDo6dXJsZW5jb2RlX3JmYzM5ODYoJHJlYWxtKSAuICciJzsKICAgICAgJGZpcnN0ID0gZmFsc2U7CiAgICB9IGVsc2UKICAgICAgJG91dCA9ICdBdXRob3JpemF0aW9uOiBPQXV0aCc7CgogICAgJHRvdGFsID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJhbWV0ZXJzIGFzICRrID0+ICR2KSB7CiAgICAgIGlmIChzdWJzdHIoJGssIDAsIDUpICE9ICJvYXV0aCIpIGNvbnRpbnVlOwogICAgICBpZiAoaXNfYXJyYXkoJHYpKSB7CiAgICAgICAgdGhyb3cgbmV3IE9BdXRoRXhjZXB0aW9uKCdBcnJheXMgbm90IHN1cHBvcnRlZCBpbiBoZWFkZXJzJyk7CiAgICAgIH0KICAgICAgJG91dCAuPSAoJGZpcnN0KSA/ICcgJyA6ICcsJzsKICAgICAgJG91dCAuPSBPQXV0aFV0aWw6OnVybGVuY29kZV9yZmMzOTg2KCRrKSAuCiAgICAgICAgICAgICAgJz0iJyAuCiAgICAgICAgICAgICAgT0F1dGhVdGlsOjp1cmxlbmNvZGVfcmZjMzk4NigkdikgLgogICAgICAgICAgICAgICciJzsKICAgICAgJGZpcnN0ID0gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gJG91dDsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewogICAgcmV0dXJuICR0aGlzLT50b191cmwoKTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gc2lnbl9yZXF1ZXN0KCRzaWduYXR1cmVfbWV0aG9kLCAkY29uc3VtZXIsICR0b2tlbikgewogICAgJHRoaXMtPnNldF9wYXJhbWV0ZXIoCiAgICAgICJvYXV0aF9zaWduYXR1cmVfbWV0aG9kIiwKICAgICAgJHNpZ25hdHVyZV9tZXRob2QtPmdldF9uYW1lKCksCiAgICAgIGZhbHNlCiAgICApOwogICAgJHNpZ25hdHVyZSA9ICR0aGlzLT5idWlsZF9zaWduYXR1cmUoJHNpZ25hdHVyZV9tZXRob2QsICRjb25zdW1lciwgJHRva2VuKTsKICAgICR0aGlzLT5zZXRfcGFyYW1ldGVyKCJvYXV0aF9zaWduYXR1cmUiLCAkc2lnbmF0dXJlLCBmYWxzZSk7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gYnVpbGRfc2lnbmF0dXJlKCRzaWduYXR1cmVfbWV0aG9kLCAkY29uc3VtZXIsICR0b2tlbikgewogICAgJHNpZ25hdHVyZSA9ICRzaWduYXR1cmVfbWV0aG9kLT5idWlsZF9zaWduYXR1cmUoJHRoaXMsICRjb25zdW1lciwgJHRva2VuKTsKICAgIHJldHVybiAkc2lnbmF0dXJlOwogIH0KCiAgLyoqCiAgICogdXRpbCBmdW5jdGlvbjogY3VycmVudCB0aW1lc3RhbXAKICAgKi8KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZV90aW1lc3RhbXAoKSB7CiAgICByZXR1cm4gdGltZSgpOwogIH0KCiAgLyoqCiAgICogdXRpbCBmdW5jdGlvbjogY3VycmVudCBub25jZQogICAqLwogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlX25vbmNlKCkgewogICAgJG10ID0gbWljcm90aW1lKCk7CiAgICAkcmFuZCA9IG10X3JhbmQoKTsKCiAgICByZXR1cm4gbWQ1KCRtdCAuICRyYW5kKTsgLy8gbWQ1cyBsb29rIG5pY2VyIHRoYW4gbnVtYmVycwogIH0KfQoKY2xhc3MgT0F1dGhTZXJ2ZXIgewogIHByb3RlY3RlZCAkdGltZXN0YW1wX3RocmVzaG9sZCA9IDMwMDsgLy8gaW4gc2Vjb25kcywgZml2ZSBtaW51dGVzCiAgcHJvdGVjdGVkICR2ZXJzaW9uID0gJzEuMCc7ICAgICAgICAgICAgIC8vIGhpIGJsYWluZQogIHByb3RlY3RlZCAkc2lnbmF0dXJlX21ldGhvZHMgPSBhcnJheSgpOwoKICBwcm90ZWN0ZWQgJGRhdGFfc3RvcmU7CgogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkYXRhX3N0b3JlKSB7CiAgICAkdGhpcy0+ZGF0YV9zdG9yZSA9ICRkYXRhX3N0b3JlOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGFkZF9zaWduYXR1cmVfbWV0aG9kKCRzaWduYXR1cmVfbWV0aG9kKSB7CiAgICAkdGhpcy0+c2lnbmF0dXJlX21ldGhvZHNbJHNpZ25hdHVyZV9tZXRob2QtPmdldF9uYW1lKCldID0KICAgICAgJHNpZ25hdHVyZV9tZXRob2Q7CiAgfQoKICAvLyBoaWdoIGxldmVsIGZ1bmN0aW9ucwoKICAvKioKICAgKiBwcm9jZXNzIGEgcmVxdWVzdF90b2tlbiByZXF1ZXN0CiAgICogcmV0dXJucyB0aGUgcmVxdWVzdCB0b2tlbiBvbiBzdWNjZXNzCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGZldGNoX3JlcXVlc3RfdG9rZW4oJiRyZXF1ZXN0KSB7CiAgICAkdGhpcy0+Z2V0X3ZlcnNpb24oJHJlcXVlc3QpOwoKICAgICRjb25zdW1lciA9ICR0aGlzLT5nZXRfY29uc3VtZXIoJHJlcXVlc3QpOwoKICAgIC8vIG5vIHRva2VuIHJlcXVpcmVkIGZvciB0aGUgaW5pdGlhbCB0b2tlbiByZXF1ZXN0CiAgICAkdG9rZW4gPSBOVUxMOwoKICAgICR0aGlzLT5jaGVja19zaWduYXR1cmUoJHJlcXVlc3QsICRjb25zdW1lciwgJHRva2VuKTsKCiAgICAvLyBSZXYgQSBjaGFuZ2UKICAgICRjYWxsYmFjayA9ICRyZXF1ZXN0LT5nZXRfcGFyYW1ldGVyKCdvYXV0aF9jYWxsYmFjaycpOwogICAgJG5ld190b2tlbiA9ICR0aGlzLT5kYXRhX3N0b3JlLT5uZXdfcmVxdWVzdF90b2tlbigkY29uc3VtZXIsICRjYWxsYmFjayk7CgogICAgcmV0dXJuICRuZXdfdG9rZW47CiAgfQoKICAvKioKICAgKiBwcm9jZXNzIGFuIGFjY2Vzc190b2tlbiByZXF1ZXN0CiAgICogcmV0dXJucyB0aGUgYWNjZXNzIHRva2VuIG9uIHN1Y2Nlc3MKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZmV0Y2hfYWNjZXNzX3Rva2VuKCYkcmVxdWVzdCkgewogICAgJHRoaXMtPmdldF92ZXJzaW9uKCRyZXF1ZXN0KTsKCiAgICAkY29uc3VtZXIgPSAkdGhpcy0+Z2V0X2NvbnN1bWVyKCRyZXF1ZXN0KTsKCiAgICAvLyByZXF1aXJlcyBhdXRob3JpemVkIHJlcXVlc3QgdG9rZW4KICAgICR0b2tlbiA9ICR0aGlzLT5nZXRfdG9rZW4oJHJlcXVlc3QsICRjb25zdW1lciwgInJlcXVlc3QiKTsKCiAgICAkdGhpcy0+Y2hlY2tfc2lnbmF0dXJlKCRyZXF1ZXN0LCAkY29uc3VtZXIsICR0b2tlbik7CgogICAgLy8gUmV2IEEgY2hhbmdlCiAgICAkdmVyaWZpZXIgPSAkcmVxdWVzdC0+Z2V0X3BhcmFtZXRlcignb2F1dGhfdmVyaWZpZXInKTsKICAgICRuZXdfdG9rZW4gPSAkdGhpcy0+ZGF0YV9zdG9yZS0+bmV3X2FjY2Vzc190b2tlbigkdG9rZW4sICRjb25zdW1lciwgJHZlcmlmaWVyKTsKCiAgICByZXR1cm4gJG5ld190b2tlbjsKICB9CgogIC8qKgogICAqIHZlcmlmeSBhbiBhcGkgY2FsbCwgY2hlY2tzIGFsbCB0aGUgcGFyYW1ldGVycwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlfcmVxdWVzdCgmJHJlcXVlc3QpIHsKICAgICR0aGlzLT5nZXRfdmVyc2lvbigkcmVxdWVzdCk7CiAgICAkY29uc3VtZXIgPSAkdGhpcy0+Z2V0X2NvbnN1bWVyKCRyZXF1ZXN0KTsKICAgICR0b2tlbiA9ICR0aGlzLT5nZXRfdG9rZW4oJHJlcXVlc3QsICRjb25zdW1lciwgImFjY2VzcyIpOwogICAgJHRoaXMtPmNoZWNrX3NpZ25hdHVyZSgkcmVxdWVzdCwgJGNvbnN1bWVyLCAkdG9rZW4pOwogICAgcmV0dXJuIGFycmF5KCRjb25zdW1lciwgJHRva2VuKTsKICB9CgogIC8vIEludGVybmFscyBmcm9tIGhlcmUKICAvKioKICAgKiB2ZXJzaW9uIDEKICAgKi8KICBwcml2YXRlIGZ1bmN0aW9uIGdldF92ZXJzaW9uKCYkcmVxdWVzdCkgewogICAgJHZlcnNpb24gPSAkcmVxdWVzdC0+Z2V0X3BhcmFtZXRlcigib2F1dGhfdmVyc2lvbiIpOwogICAgaWYgKCEkdmVyc2lvbikgewogICAgICAvLyBTZXJ2aWNlIFByb3ZpZGVycyBNVVNUIGFzc3VtZSB0aGUgcHJvdG9jb2wgdmVyc2lvbiB0byBiZSAxLjAgaWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHByZXNlbnQuIAogICAgICAvLyBDaGFwdGVyIDcuMCAoIkFjY2Vzc2luZyBQcm90ZWN0ZWQgUmVzc291cmNlcyIpCiAgICAgICR2ZXJzaW9uID0gJzEuMCc7CiAgICB9CiAgICBpZiAoJHZlcnNpb24gIT09ICR0aGlzLT52ZXJzaW9uKSB7CiAgICAgIHRocm93IG5ldyBPQXV0aEV4Y2VwdGlvbigiT0F1dGggdmVyc2lvbiAnJHZlcnNpb24nIG5vdCBzdXBwb3J0ZWQiKTsKICAgIH0KICAgIHJldHVybiAkdmVyc2lvbjsKICB9CgogIC8qKgogICAqIGZpZ3VyZSBvdXQgdGhlIHNpZ25hdHVyZSB3aXRoIHNvbWUgZGVmYXVsdHMKICAgKi8KICBwcml2YXRlIGZ1bmN0aW9uIGdldF9zaWduYXR1cmVfbWV0aG9kKCYkcmVxdWVzdCkgewogICAgJHNpZ25hdHVyZV9tZXRob2QgPQogICAgICAgIEAkcmVxdWVzdC0+Z2V0X3BhcmFtZXRlcigib2F1dGhfc2lnbmF0dXJlX21ldGhvZCIpOwoKICAgIGlmICghJHNpZ25hdHVyZV9tZXRob2QpIHsKICAgICAgLy8gQWNjb3JkaW5nIHRvIGNoYXB0ZXIgNyAoIkFjY2Vzc2luZyBQcm90ZWN0ZWQgUmVzc291cmNlcyIpIHRoZSBzaWduYXR1cmUtbWV0aG9kCiAgICAgIC8vIHBhcmFtZXRlciBpcyByZXF1aXJlZCwgYW5kIHdlIGNhbid0IGp1c3QgZmFsbGJhY2sgdG8gUExBSU5URVhUCiAgICAgIHRocm93IG5ldyBPQXV0aEV4Y2VwdGlvbignTm8gc2lnbmF0dXJlIG1ldGhvZCBwYXJhbWV0ZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkJyk7CiAgICB9CgogICAgaWYgKCFpbl9hcnJheSgkc2lnbmF0dXJlX21ldGhvZCwKICAgICAgICAgICAgICAgICAgYXJyYXlfa2V5cygkdGhpcy0+c2lnbmF0dXJlX21ldGhvZHMpKSkgewogICAgICB0aHJvdyBuZXcgT0F1dGhFeGNlcHRpb24oCiAgICAgICAgIlNpZ25hdHVyZSBtZXRob2QgJyRzaWduYXR1cmVfbWV0aG9kJyBub3Qgc3VwcG9ydGVkICIgLgogICAgICAgICJ0cnkgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICIgLgogICAgICAgIGltcGxvZGUoIiwgIiwgYXJyYXlfa2V5cygkdGhpcy0+c2lnbmF0dXJlX21ldGhvZHMpKQogICAgICApOwogICAgfQogICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVfbWV0aG9kc1skc2lnbmF0dXJlX21ldGhvZF07CiAgfQoKICAvKioKICAgKiB0cnkgdG8gZmluZCB0aGUgY29uc3VtZXIgZm9yIHRoZSBwcm92aWRlZCByZXF1ZXN0J3MgY29uc3VtZXIga2V5CiAgICovCiAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfY29uc3VtZXIoJiRyZXF1ZXN0KSB7CiAgICAkY29uc3VtZXJfa2V5ID0gQCRyZXF1ZXN0LT5nZXRfcGFyYW1ldGVyKCJvYXV0aF9jb25zdW1lcl9rZXkiKTsKICAgIGlmICghJGNvbnN1bWVyX2tleSkgewogICAgICB0aHJvdyBuZXcgT0F1dGhFeGNlcHRpb24oIkludmFsaWQgY29uc3VtZXIga2V5Iik7CiAgICB9CgogICAgJGNvbnN1bWVyID0gJHRoaXMtPmRhdGFfc3RvcmUtPmxvb2t1cF9jb25zdW1lcigkY29uc3VtZXJfa2V5KTsKICAgIGlmICghJGNvbnN1bWVyKSB7CiAgICAgIHRocm93IG5ldyBPQXV0aEV4Y2VwdGlvbigiSW52YWxpZCBjb25zdW1lciIpOwogICAgfQoKICAgIHJldHVybiAkY29uc3VtZXI7CiAgfQoKICAvKioKICAgKiB0cnkgdG8gZmluZCB0aGUgdG9rZW4gZm9yIHRoZSBwcm92aWRlZCByZXF1ZXN0J3MgdG9rZW4ga2V5CiAgICovCiAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfdG9rZW4oJiRyZXF1ZXN0LCAkY29uc3VtZXIsICR0b2tlbl90eXBlPSJhY2Nlc3MiKSB7CiAgICAkdG9rZW5fZmllbGQgPSBAJHJlcXVlc3QtPmdldF9wYXJhbWV0ZXIoJ29hdXRoX3Rva2VuJyk7CiAgICAkdG9rZW4gPSAkdGhpcy0+ZGF0YV9zdG9yZS0+bG9va3VwX3Rva2VuKAogICAgICAkY29uc3VtZXIsICR0b2tlbl90eXBlLCAkdG9rZW5fZmllbGQKICAgICk7CiAgICBpZiAoISR0b2tlbikgewogICAgICB0aHJvdyBuZXcgT0F1dGhFeGNlcHRpb24oIkludmFsaWQgJHRva2VuX3R5cGUgdG9rZW46ICR0b2tlbl9maWVsZCIpOwogICAgfQogICAgcmV0dXJuICR0b2tlbjsKICB9CgogIC8qKgogICAqIGFsbC1pbi1vbmUgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIHNpZ25hdHVyZSBvbiBhIHJlcXVlc3QKICAgKiBzaG91bGQgZ3Vlc3MgdGhlIHNpZ25hdHVyZSBtZXRob2QgYXBwcm9wcmlhdGVseQogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tfc2lnbmF0dXJlKCYkcmVxdWVzdCwgJGNvbnN1bWVyLCAkdG9rZW4pIHsKICAgIC8vIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGluIGEgZGlmZmVyZW50IG1ldGhvZAogICAgJHRpbWVzdGFtcCA9IEAkcmVxdWVzdC0+Z2V0X3BhcmFtZXRlcignb2F1dGhfdGltZXN0YW1wJyk7CiAgICAkbm9uY2UgPSBAJHJlcXVlc3QtPmdldF9wYXJhbWV0ZXIoJ29hdXRoX25vbmNlJyk7CgogICAgJHRoaXMtPmNoZWNrX3RpbWVzdGFtcCgkdGltZXN0YW1wKTsKICAgICR0aGlzLT5jaGVja19ub25jZSgkY29uc3VtZXIsICR0b2tlbiwgJG5vbmNlLCAkdGltZXN0YW1wKTsKCiAgICAkc2lnbmF0dXJlX21ldGhvZCA9ICR0aGlzLT5nZXRfc2lnbmF0dXJlX21ldGhvZCgkcmVxdWVzdCk7CgogICAgJHNpZ25hdHVyZSA9ICRyZXF1ZXN0LT5nZXRfcGFyYW1ldGVyKCdvYXV0aF9zaWduYXR1cmUnKTsKICAgICR2YWxpZF9zaWcgPSAkc2lnbmF0dXJlX21ldGhvZC0+Y2hlY2tfc2lnbmF0dXJlKAogICAgICAkcmVxdWVzdCwKICAgICAgJGNvbnN1bWVyLAogICAgICAkdG9rZW4sCiAgICAgICRzaWduYXR1cmUKICAgICk7CgogICAgaWYgKCEkdmFsaWRfc2lnKSB7CiAgICAgIHRocm93IG5ldyBPQXV0aEV4Y2VwdGlvbigiSW52YWxpZCBzaWduYXR1cmUiKTsKICAgIH0KICB9CgogIC8qKgogICAqIGNoZWNrIHRoYXQgdGhlIHRpbWVzdGFtcCBpcyBuZXcgZW5vdWdoCiAgICovCiAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja190aW1lc3RhbXAoJHRpbWVzdGFtcCkgewogICAgaWYoICEgJHRpbWVzdGFtcCApCiAgICAgIHRocm93IG5ldyBPQXV0aEV4Y2VwdGlvbigKICAgICAgICAnTWlzc2luZyB0aW1lc3RhbXAgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIHJlcXVpcmVkJwogICAgICApOwogICAgCiAgICAvLyB2ZXJpZnkgdGhhdCB0aW1lc3RhbXAgaXMgcmVjZW50aXNoCiAgICAkbm93ID0gdGltZSgpOwogICAgaWYgKGFicygkbm93IC0gJHRpbWVzdGFtcCkgPiAkdGhpcy0+dGltZXN0YW1wX3RocmVzaG9sZCkgewogICAgICB0aHJvdyBuZXcgT0F1dGhFeGNlcHRpb24oCiAgICAgICAgIkV4cGlyZWQgdGltZXN0YW1wLCB5b3VycyAkdGltZXN0YW1wLCBvdXJzICRub3ciCiAgICAgICk7CiAgICB9CiAgfQoKICAvKioKICAgKiBjaGVjayB0aGF0IHRoZSBub25jZSBpcyBub3QgcmVwZWF0ZWQKICAgKi8KICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrX25vbmNlKCRjb25zdW1lciwgJHRva2VuLCAkbm9uY2UsICR0aW1lc3RhbXApIHsKICAgIGlmKCAhICRub25jZSApCiAgICAgIHRocm93IG5ldyBPQXV0aEV4Y2VwdGlvbigKICAgICAgICAnTWlzc2luZyBub25jZSBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQnCiAgICAgICk7CgogICAgLy8gdmVyaWZ5IHRoYXQgdGhlIG5vbmNlIGlzIHVuaXF1ZWlzaAogICAgJGZvdW5kID0gJHRoaXMtPmRhdGFfc3RvcmUtPmxvb2t1cF9ub25jZSgKICAgICAgJGNvbnN1bWVyLAogICAgICAkdG9rZW4sCiAgICAgICRub25jZSwKICAgICAgJHRpbWVzdGFtcAogICAgKTsKICAgIGlmICgkZm91bmQpIHsKICAgICAgdGhyb3cgbmV3IE9BdXRoRXhjZXB0aW9uKCJOb25jZSBhbHJlYWR5IHVzZWQ6ICRub25jZSIpOwogICAgfQogIH0KCn0KCmNsYXNzIE9BdXRoRGF0YVN0b3JlIHsKICBmdW5jdGlvbiBsb29rdXBfY29uc3VtZXIoJGNvbnN1bWVyX2tleSkgewogICAgLy8gaW1wbGVtZW50IG1lCiAgfQoKICBmdW5jdGlvbiBsb29rdXBfdG9rZW4oJGNvbnN1bWVyLCAkdG9rZW5fdHlwZSwgJHRva2VuKSB7CiAgICAvLyBpbXBsZW1lbnQgbWUKICB9CgogIGZ1bmN0aW9uIGxvb2t1cF9ub25jZSgkY29uc3VtZXIsICR0b2tlbiwgJG5vbmNlLCAkdGltZXN0YW1wKSB7CiAgICAvLyBpbXBsZW1lbnQgbWUKICB9CgogIGZ1bmN0aW9uIG5ld19yZXF1ZXN0X3Rva2VuKCRjb25zdW1lciwgJGNhbGxiYWNrID0gbnVsbCkgewogICAgLy8gcmV0dXJuIGEgbmV3IHRva2VuIGF0dGFjaGVkIHRvIHRoaXMgY29uc3VtZXIKICB9CgogIGZ1bmN0aW9uIG5ld19hY2Nlc3NfdG9rZW4oJHRva2VuLCAkY29uc3VtZXIsICR2ZXJpZmllciA9IG51bGwpIHsKICAgIC8vIHJldHVybiBhIG5ldyBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQgdG8gdGhpcyBjb25zdW1lcgogICAgLy8gZm9yIHRoZSB1c2VyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRva2VuIGlmIHRoZSByZXF1ZXN0IHRva2VuCiAgICAvLyBpcyBhdXRob3JpemVkCiAgICAvLyBzaG91bGQgYWxzbyBpbnZhbGlkYXRlIHRoZSByZXF1ZXN0IHRva2VuCiAgfQoKfQoKY2xhc3MgT0F1dGhVdGlsIHsKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVybGVuY29kZV9yZmMzOTg2KCRpbnB1dCkgewogIGlmIChpc19hcnJheSgkaW5wdXQpKSB7CiAgICByZXR1cm4gYXJyYXlfbWFwKGFycmF5KCdPQXV0aFV0aWwnLCAndXJsZW5jb2RlX3JmYzM5ODYnKSwgJGlucHV0KTsKICB9IGVsc2UgaWYgKGlzX3NjYWxhcigkaW5wdXQpKSB7CiAgICByZXR1cm4gc3RyX3JlcGxhY2UoCiAgICAgICcrJywKICAgICAgJyAnLAogICAgICBzdHJfcmVwbGFjZSgnJTdFJywgJ34nLCByYXd1cmxlbmNvZGUoJGlucHV0KSkKICAgICk7CiAgfSBlbHNlIHsKICAgIHJldHVybiAnJzsKICB9Cn0KCgogIC8vIFRoaXMgZGVjb2RlIGZ1bmN0aW9uIGlzbid0IHRha2luZyBpbnRvIGNvbnNpZGVyYXRpb24gdGhlIGFib3ZlCiAgLy8gbW9kaWZpY2F0aW9ucyB0byB0aGUgZW5jb2RpbmcgcHJvY2Vzcy4gSG93ZXZlciwgdGhpcyBtZXRob2QgZG9lc24ndAogIC8vIHNlZW0gdG8gYmUgdXNlZCBhbnl3aGVyZSBzbyBsZWF2aW5nIGl0IGFzIGlzLgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXJsZGVjb2RlX3JmYzM5ODYoJHN0cmluZykgewogICAgcmV0dXJuIHVybGRlY29kZSgkc3RyaW5nKTsKICB9CgogIC8vIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHR1cm5pbmcgdGhlIEF1dGhvcml6YXRpb246IGhlYWRlciBpbnRvCiAgLy8gcGFyYW1ldGVycywgaGFzIHRvIGRvIHNvbWUgdW5lc2NhcGluZwogIC8vIENhbiBmaWx0ZXIgb3V0IGFueSBub24tb2F1dGggcGFyYW1ldGVycyBpZiBuZWVkZWQgKGRlZmF1bHQgYmVoYXZpb3VyKQogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3BsaXRfaGVhZGVyKCRoZWFkZXIsICRvbmx5X2FsbG93X29hdXRoX3BhcmFtZXRlcnMgPSB0cnVlKSB7CiAgICAkcGF0dGVybiA9ICcvKChbLV9hLXpdKik9KCIoW14iXSopInwoW14sXSopKSw/KS8nOwogICAgJG9mZnNldCA9IDA7CiAgICAkcGFyYW1zID0gYXJyYXkoKTsKICAgIHdoaWxlIChwcmVnX21hdGNoKCRwYXR0ZXJuLCAkaGVhZGVyLCAkbWF0Y2hlcywgUFJFR19PRkZTRVRfQ0FQVFVSRSwgJG9mZnNldCkgPiAwKSB7CiAgICAgICRtYXRjaCA9ICRtYXRjaGVzWzBdOwogICAgICAkaGVhZGVyX25hbWUgPSAkbWF0Y2hlc1syXVswXTsKICAgICAgJGhlYWRlcl9jb250ZW50ID0gKGlzc2V0KCRtYXRjaGVzWzVdKSkgPyAkbWF0Y2hlc1s1XVswXSA6ICRtYXRjaGVzWzRdWzBdOwogICAgICBpZiAocHJlZ19tYXRjaCgnL15vYXV0aF8vJywgJGhlYWRlcl9uYW1lKSB8fCAhJG9ubHlfYWxsb3dfb2F1dGhfcGFyYW1ldGVycykgewogICAgICAgICRwYXJhbXNbJGhlYWRlcl9uYW1lXSA9IE9BdXRoVXRpbDo6dXJsZGVjb2RlX3JmYzM5ODYoJGhlYWRlcl9jb250ZW50KTsKICAgICAgfQogICAgICAkb2Zmc2V0ID0gJG1hdGNoWzFdICsgc3RybGVuKCRtYXRjaFswXSk7CiAgICB9CgogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3JlYWxtJ10pKSB7CiAgICAgIHVuc2V0KCRwYXJhbXNbJ3JlYWxtJ10pOwogICAgfQoKICAgIHJldHVybiAkcGFyYW1zOwogIH0KCiAgLy8gaGVscGVyIHRvIHRyeSB0byBzb3J0IG91dCBoZWFkZXJzIGZvciBwZW9wbGUgd2hvIGFyZW4ndCBydW5uaW5nIGFwYWNoZQogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2hlYWRlcnMoKSB7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhcGFjaGVfcmVxdWVzdF9oZWFkZXJzJykpIHsKICAgICAgLy8gd2UgbmVlZCB0aGlzIHRvIGdldCB0aGUgYWN0dWFsIEF1dGhvcml6YXRpb246IGhlYWRlcgogICAgICAvLyBiZWNhdXNlIGFwYWNoZSB0ZW5kcyB0byB0ZWxsIHVzIGl0IGRvZXNuJ3QgZXhpc3QKICAgICAgJGhlYWRlcnMgPSBhcGFjaGVfcmVxdWVzdF9oZWFkZXJzKCk7CgogICAgICAvLyBzYW5pdGl6ZSB0aGUgb3V0cHV0IG9mIGFwYWNoZV9yZXF1ZXN0X2hlYWRlcnMgYmVjYXVzZQogICAgICAvLyB3ZSBhbHdheXMgd2FudCB0aGUga2V5cyB0byBiZSBDYXNlZC1MaWtlLVRoaXMgYW5kIGFyaCgpCiAgICAgIC8vIHJldHVybnMgdGhlIGhlYWRlcnMgaW4gdGhlIHNhbWUgY2FzZSBhcyB0aGV5IGFyZSBpbiB0aGUKICAgICAgLy8gcmVxdWVzdAogICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgZm9yZWFjaCggJGhlYWRlcnMgQVMgJGtleSA9PiAkdmFsdWUgKSB7CiAgICAgICAgJGtleSA9IHN0cl9yZXBsYWNlKAogICAgICAgICAgICAiICIsCiAgICAgICAgICAgICItIiwKICAgICAgICAgICAgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCItIiwgIiAiLCAka2V5KSkpCiAgICAgICAgICApOwogICAgICAgICRvdXRbJGtleV0gPSAkdmFsdWU7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIC8vIG90aGVyd2lzZSB3ZSBkb24ndCBoYXZlIGFwYWNoZSBhbmQgYXJlIGp1c3QgZ29pbmcgdG8gaGF2ZSB0byBob3BlCiAgICAgIC8vIHRoYXQgJF9TRVJWRVIgYWN0dWFsbHkgY29udGFpbnMgd2hhdCB3ZSBuZWVkCiAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICBpZiggaXNzZXQoJF9TRVJWRVJbJ0NPTlRFTlRfVFlQRSddKSApCiAgICAgICAgJG91dFsnQ29udGVudC1UeXBlJ10gPSAkX1NFUlZFUlsnQ09OVEVOVF9UWVBFJ107CiAgICAgIGlmKCBpc3NldCgkX0VOVlsnQ09OVEVOVF9UWVBFJ10pICkKICAgICAgICAkb3V0WydDb250ZW50LVR5cGUnXSA9ICRfRU5WWydDT05URU5UX1RZUEUnXTsKCiAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgaWYgKHN1YnN0cigka2V5LCAwLCA1KSA9PSAiSFRUUF8iKSB7CiAgICAgICAgICAvLyB0aGlzIGlzIGNoYW9zLCBiYXNpY2FsbHkgaXQgaXMganVzdCB0aGVyZSB0byBjYXBpdGFsaXplIHRoZSBmaXJzdAogICAgICAgICAgLy8gbGV0dGVyIG9mIGV2ZXJ5IHdvcmQgdGhhdCBpcyBub3QgYW4gaW5pdGlhbCBIVFRQIGFuZCBzdHJpcCBIVFRQCiAgICAgICAgICAvLyBjb2RlIGZyb20gcHJ6ZW1lawogICAgICAgICAgJGtleSA9IHN0cl9yZXBsYWNlKAogICAgICAgICAgICAiICIsCiAgICAgICAgICAgICItIiwKICAgICAgICAgICAgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCJfIiwgIiAiLCBzdWJzdHIoJGtleSwgNSkpKSkKICAgICAgICAgICk7CiAgICAgICAgICAkb3V0WyRrZXldID0gJHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuICRvdXQ7CiAgfQoKICAvLyBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgaW5wdXQgbGlrZSBhPWImYT1jJmQ9ZSBhbmQgcmV0dXJucyB0aGUgcGFyc2VkCiAgLy8gcGFyYW1ldGVycyBsaWtlIHRoaXMKICAvLyBhcnJheSgnYScgPT4gYXJyYXkoJ2InLCdjJyksICdkJyA9PiAnZScpCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZV9wYXJhbWV0ZXJzKCAkaW5wdXQgKSB7CiAgICBpZiAoIWlzc2V0KCRpbnB1dCkgfHwgISRpbnB1dCkgcmV0dXJuIGFycmF5KCk7CgogICAgJHBhaXJzID0gZXhwbG9kZSgnJicsICRpbnB1dCk7CgogICAgJHBhcnNlZF9wYXJhbWV0ZXJzID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRwYWlycyBhcyAkcGFpcikgewogICAgICAkc3BsaXQgPSBleHBsb2RlKCc9JywgJHBhaXIsIDIpOwogICAgICAkcGFyYW1ldGVyID0gT0F1dGhVdGlsOjp1cmxkZWNvZGVfcmZjMzk4Nigkc3BsaXRbMF0pOwogICAgICAkdmFsdWUgPSBpc3NldCgkc3BsaXRbMV0pID8gT0F1dGhVdGlsOjp1cmxkZWNvZGVfcmZjMzk4Nigkc3BsaXRbMV0pIDogJyc7CgogICAgICBpZiAoaXNzZXQoJHBhcnNlZF9wYXJhbWV0ZXJzWyRwYXJhbWV0ZXJdKSkgewogICAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSByZWNpZXZlZCBwYXJhbWV0ZXIocykgd2l0aCB0aGlzIG5hbWUsIHNvIGFkZCB0byB0aGUgbGlzdAogICAgICAgIC8vIG9mIHBhcmFtZXRlcnMgd2l0aCB0aGlzIG5hbWUKCiAgICAgICAgaWYgKGlzX3NjYWxhcigkcGFyc2VkX3BhcmFtZXRlcnNbJHBhcmFtZXRlcl0pKSB7CiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBkdXBsaWNhdGUsIHNvIHRyYW5zZm9ybSBzY2FsYXIgKHN0cmluZykgaW50byBhbiBhcnJheQogICAgICAgICAgLy8gc28gd2UgY2FuIGFkZCB0aGUgZHVwbGljYXRlcwogICAgICAgICAgJHBhcnNlZF9wYXJhbWV0ZXJzWyRwYXJhbWV0ZXJdID0gYXJyYXkoJHBhcnNlZF9wYXJhbWV0ZXJzWyRwYXJhbWV0ZXJdKTsKICAgICAgICB9CgogICAgICAgICRwYXJzZWRfcGFyYW1ldGVyc1skcGFyYW1ldGVyXVtdID0gJHZhbHVlOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJzZWRfcGFyYW1ldGVyc1skcGFyYW1ldGVyXSA9ICR2YWx1ZTsKICAgICAgfQogICAgfQogICAgcmV0dXJuICRwYXJzZWRfcGFyYW1ldGVyczsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGRfaHR0cF9xdWVyeSgkcGFyYW1zKSB7CiAgICBpZiAoISRwYXJhbXMpIHJldHVybiAnJzsKCiAgICAvLyBVcmxlbmNvZGUgYm90aCBrZXlzIGFuZCB2YWx1ZXMKICAgICRrZXlzID0gT0F1dGhVdGlsOjp1cmxlbmNvZGVfcmZjMzk4NihhcnJheV9rZXlzKCRwYXJhbXMpKTsKICAgICR2YWx1ZXMgPSBPQXV0aFV0aWw6OnVybGVuY29kZV9yZmMzOTg2KGFycmF5X3ZhbHVlcygkcGFyYW1zKSk7CiAgICAkcGFyYW1zID0gYXJyYXlfY29tYmluZSgka2V5cywgJHZhbHVlcyk7CgogICAgLy8gUGFyYW1ldGVycyBhcmUgc29ydGVkIGJ5IG5hbWUsIHVzaW5nIGxleGljb2dyYXBoaWNhbCBieXRlIHZhbHVlIG9yZGVyaW5nLgogICAgLy8gUmVmOiBTcGVjOiA5LjEuMSAoMSkKICAgIHVrc29ydCgkcGFyYW1zLCAnc3RyY21wJyk7CgogICAgJHBhaXJzID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRwYXJhbXMgYXMgJHBhcmFtZXRlciA9PiAkdmFsdWUpIHsKICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAvLyBJZiB0d28gb3IgbW9yZSBwYXJhbWV0ZXJzIHNoYXJlIHRoZSBzYW1lIG5hbWUsIHRoZXkgYXJlIHNvcnRlZCBieSB0aGVpciB2YWx1ZQogICAgICAgIC8vIFJlZjogU3BlYzogOS4xLjEgKDEpCiAgICAgICAgbmF0c29ydCgkdmFsdWUpOwogICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkZHVwbGljYXRlX3ZhbHVlKSB7CiAgICAgICAgICAkcGFpcnNbXSA9ICRwYXJhbWV0ZXIgLiAnPScgLiAkZHVwbGljYXRlX3ZhbHVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAkcGFpcnNbXSA9ICRwYXJhbWV0ZXIgLiAnPScgLiAkdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIC8vIEZvciBlYWNoIHBhcmFtZXRlciwgdGhlIG5hbWUgaXMgc2VwYXJhdGVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgYnkgYW4gJz0nIGNoYXJhY3RlciAoQVNDSUkgY29kZSA2MSkKICAgIC8vIEVhY2ggbmFtZS12YWx1ZSBwYWlyIGlzIHNlcGFyYXRlZCBieSBhbiAnJicgY2hhcmFjdGVyIChBU0NJSSBjb2RlIDM4KQogICAgcmV0dXJuIGltcGxvZGUoJyYnLCAkcGFpcnMpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/twitteroauth/twitteroauth.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIEFicmFoYW0gV2lsbGlhbXMgKGFicmFoYW1AYWJyYWguYW0pIGh0dHA6Ly9hYnJhaC5hbQogKgogKiBUaGUgZmlyc3QgUEhQIExpYnJhcnkgdG8gc3VwcG9ydCBPQXV0aCBmb3IgVHdpdHRlcidzIFJFU1QgQVBJLgogKi8KCi8qIExvYWQgT0F1dGggbGliLiBZb3UgY2FuIGZpbmQgaXQgYXQgaHR0cDovL29hdXRoLm5ldCAqLwpyZXF1aXJlX29uY2UoJ09BdXRoLnBocCcpOwoKLyoqCiAqIFR3aXR0ZXIgT0F1dGggY2xhc3MKICovCmNsYXNzIFR3aXR0ZXJPQXV0aCB7CiAgLyogQ29udGFpbnMgdGhlIGxhc3QgSFRUUCBzdGF0dXMgY29kZSByZXR1cm5lZC4gKi8KICBwdWJsaWMgJGh0dHBfY29kZTsKICAvKiBDb250YWlucyB0aGUgbGFzdCBBUEkgY2FsbC4gKi8KICBwdWJsaWMgJHVybDsKICAvKiBTZXQgdXAgdGhlIEFQSSByb290IFVSTC4gKi8KICBwdWJsaWMgJGhvc3QgPSAiaHR0cHM6Ly9hcGkudHdpdHRlci5jb20vMS4xLyI7CiAgLyogU2V0IHRpbWVvdXQgZGVmYXVsdC4gKi8KICBwdWJsaWMgJHRpbWVvdXQgPSAzMDsKICAvKiBTZXQgY29ubmVjdCB0aW1lb3V0LiAqLwogIHB1YmxpYyAkY29ubmVjdHRpbWVvdXQgPSAzMDsgCiAgLyogVmVyaWZ5IFNTTCBDZXJ0LiAqLwogIHB1YmxpYyAkc3NsX3ZlcmlmeXBlZXIgPSBGQUxTRTsKICAvKiBSZXNwb25zIGZvcm1hdC4gKi8KICBwdWJsaWMgJGZvcm1hdCA9ICdqc29uJzsKICAvKiBEZWNvZGUgcmV0dXJuZWQganNvbiBkYXRhLiAqLwogIHB1YmxpYyAkZGVjb2RlX2pzb24gPSBUUlVFOwogIC8qIENvbnRhaW5zIHRoZSBsYXN0IEhUVFAgaGVhZGVycyByZXR1cm5lZC4gKi8KICBwdWJsaWMgJGh0dHBfaW5mbzsKICAvKiBTZXQgdGhlIHVzZXJhZ25ldC4gKi8KICBwdWJsaWMgJHVzZXJhZ2VudCA9ICdUd2l0dGVyT0F1dGggdjAuMi4wLWJldGEyJzsKICAvKiBJbW1lZGlhdGVseSByZXRyeSB0aGUgQVBJIGNhbGwgaWYgdGhlIHJlc3BvbnNlIHdhcyBub3Qgc3VjY2Vzc2Z1bC4gKi8KICAvL3B1YmxpYyAkcmV0cnkgPSBUUlVFOwoKCgoKICAvKioKICAgKiBTZXQgQVBJIFVSTFMKICAgKi8KICBmdW5jdGlvbiBhY2Nlc3NUb2tlblVSTCgpICB7IHJldHVybiAnaHR0cHM6Ly9hcGkudHdpdHRlci5jb20vb2F1dGgvYWNjZXNzX3Rva2VuJzsgfQogIGZ1bmN0aW9uIGF1dGhlbnRpY2F0ZVVSTCgpIHsgcmV0dXJuICdodHRwczovL2FwaS50d2l0dGVyLmNvbS9vYXV0aC9hdXRoZW50aWNhdGUnOyB9CiAgZnVuY3Rpb24gYXV0aG9yaXplVVJMKCkgICAgeyByZXR1cm4gJ2h0dHBzOi8vYXBpLnR3aXR0ZXIuY29tL29hdXRoL2F1dGhvcml6ZSc7IH0KICBmdW5jdGlvbiByZXF1ZXN0VG9rZW5VUkwoKSB7IHJldHVybiAnaHR0cHM6Ly9hcGkudHdpdHRlci5jb20vb2F1dGgvcmVxdWVzdF90b2tlbic7IH0KCiAgLyoqCiAgICogRGVidWcgaGVscGVycwogICAqLwogIGZ1bmN0aW9uIGxhc3RTdGF0dXNDb2RlKCkgeyByZXR1cm4gJHRoaXMtPmh0dHBfc3RhdHVzOyB9CiAgZnVuY3Rpb24gbGFzdEFQSUNhbGwoKSB7IHJldHVybiAkdGhpcy0+bGFzdF9hcGlfY2FsbDsgfQoKICAvKioKICAgKiBjb25zdHJ1Y3QgVHdpdHRlck9BdXRoIG9iamVjdAogICAqLwogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb25zdW1lcl9rZXksICRjb25zdW1lcl9zZWNyZXQsICRvYXV0aF90b2tlbiA9IE5VTEwsICRvYXV0aF90b2tlbl9zZWNyZXQgPSBOVUxMKSB7CiAgICAkdGhpcy0+c2hhMV9tZXRob2QgPSBuZXcgT0F1dGhTaWduYXR1cmVNZXRob2RfSE1BQ19TSEExKCk7CiAgICAkdGhpcy0+Y29uc3VtZXIgPSBuZXcgT0F1dGhDb25zdW1lcigkY29uc3VtZXJfa2V5LCAkY29uc3VtZXJfc2VjcmV0KTsKICAgIGlmICghZW1wdHkoJG9hdXRoX3Rva2VuKSAmJiAhZW1wdHkoJG9hdXRoX3Rva2VuX3NlY3JldCkpIHsKICAgICAgJHRoaXMtPnRva2VuID0gbmV3IE9BdXRoQ29uc3VtZXIoJG9hdXRoX3Rva2VuLCAkb2F1dGhfdG9rZW5fc2VjcmV0KTsKICAgIH0gZWxzZSB7CiAgICAgICR0aGlzLT50b2tlbiA9IE5VTEw7CiAgICB9CiAgfQoKCiAgLyoqCiAgICogR2V0IGEgcmVxdWVzdF90b2tlbiBmcm9tIFR3aXR0ZXIKICAgKgogICAqIEByZXR1cm5zIGEga2V5L3ZhbHVlIGFycmF5IGNvbnRhaW5pbmcgb2F1dGhfdG9rZW4gYW5kIG9hdXRoX3Rva2VuX3NlY3JldAogICAqLwogIGZ1bmN0aW9uIGdldFJlcXVlc3RUb2tlbigkb2F1dGhfY2FsbGJhY2spIHsKICAgICRwYXJhbWV0ZXJzID0gYXJyYXkoKTsKICAgICRwYXJhbWV0ZXJzWydvYXV0aF9jYWxsYmFjayddID0gJG9hdXRoX2NhbGxiYWNrOyAKICAgICRyZXF1ZXN0ID0gJHRoaXMtPm9BdXRoUmVxdWVzdCgkdGhpcy0+cmVxdWVzdFRva2VuVVJMKCksICdHRVQnLCAkcGFyYW1ldGVycyk7CiAgICAkdG9rZW4gPSBPQXV0aFV0aWw6OnBhcnNlX3BhcmFtZXRlcnMoJHJlcXVlc3QpOwogICAgJHRoaXMtPnRva2VuID0gbmV3IE9BdXRoQ29uc3VtZXIoJHRva2VuWydvYXV0aF90b2tlbiddLCAkdG9rZW5bJ29hdXRoX3Rva2VuX3NlY3JldCddKTsKICAgIHJldHVybiAkdG9rZW47CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGF1dGhvcml6ZSBVUkwKICAgKgogICAqIEByZXR1cm5zIGEgc3RyaW5nCiAgICovCiAgZnVuY3Rpb24gZ2V0QXV0aG9yaXplVVJMKCR0b2tlbiwgJHNpZ25faW5fd2l0aF90d2l0dGVyID0gVFJVRSkgewogICAgaWYgKGlzX2FycmF5KCR0b2tlbikpIHsKICAgICAgJHRva2VuID0gJHRva2VuWydvYXV0aF90b2tlbiddOwogICAgfQogICAgaWYgKGVtcHR5KCRzaWduX2luX3dpdGhfdHdpdHRlcikpIHsKICAgICAgcmV0dXJuICR0aGlzLT5hdXRob3JpemVVUkwoKSAuICI/b2F1dGhfdG9rZW49eyR0b2tlbn0iOwogICAgfSBlbHNlIHsKICAgICAgIHJldHVybiAkdGhpcy0+YXV0aGVudGljYXRlVVJMKCkgLiAiP29hdXRoX3Rva2VuPXskdG9rZW59IjsKICAgIH0KICB9CgogIC8qKgogICAqIEV4Y2hhbmdlIHJlcXVlc3QgdG9rZW4gYW5kIHNlY3JldCBmb3IgYW4gYWNjZXNzIHRva2VuIGFuZAogICAqIHNlY3JldCwgdG8gc2lnbiBBUEkgY2FsbHMuCiAgICoKICAgKiBAcmV0dXJucyBhcnJheSgib2F1dGhfdG9rZW4iID0+ICJ0aGUtYWNjZXNzLXRva2VuIiwKICAgKiAgICAgICAgICAgICAgICAib2F1dGhfdG9rZW5fc2VjcmV0IiA9PiAidGhlLWFjY2Vzcy1zZWNyZXQiLAogICAqICAgICAgICAgICAgICAgICJ1c2VyX2lkIiA9PiAiOTQzNjk5MiIsCiAgICogICAgICAgICAgICAgICAgInNjcmVlbl9uYW1lIiA9PiAiYWJyYWhhbSIpCiAgICovCiAgZnVuY3Rpb24gZ2V0QWNjZXNzVG9rZW4oJG9hdXRoX3ZlcmlmaWVyKSB7CiAgICAkcGFyYW1ldGVycyA9IGFycmF5KCk7CiAgICAkcGFyYW1ldGVyc1snb2F1dGhfdmVyaWZpZXInXSA9ICRvYXV0aF92ZXJpZmllcjsKICAgICRyZXF1ZXN0ID0gJHRoaXMtPm9BdXRoUmVxdWVzdCgkdGhpcy0+YWNjZXNzVG9rZW5VUkwoKSwgJ0dFVCcsICRwYXJhbWV0ZXJzKTsKICAgICR0b2tlbiA9IE9BdXRoVXRpbDo6cGFyc2VfcGFyYW1ldGVycygkcmVxdWVzdCk7CiAgICAkdGhpcy0+dG9rZW4gPSBuZXcgT0F1dGhDb25zdW1lcigkdG9rZW5bJ29hdXRoX3Rva2VuJ10sICR0b2tlblsnb2F1dGhfdG9rZW5fc2VjcmV0J10pOwogICAgcmV0dXJuICR0b2tlbjsKICB9CgogIC8qKgogICAqIE9uZSB0aW1lIGV4Y2hhbmdlIG9mIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3IgYWNjZXNzIHRva2VuIGFuZCBzZWNyZXQuCiAgICoKICAgKiBAcmV0dXJucyBhcnJheSgib2F1dGhfdG9rZW4iID0+ICJ0aGUtYWNjZXNzLXRva2VuIiwKICAgKiAgICAgICAgICAgICAgICAib2F1dGhfdG9rZW5fc2VjcmV0IiA9PiAidGhlLWFjY2Vzcy1zZWNyZXQiLAogICAqICAgICAgICAgICAgICAgICJ1c2VyX2lkIiA9PiAiOTQzNjk5MiIsCiAgICogICAgICAgICAgICAgICAgInNjcmVlbl9uYW1lIiA9PiAiYWJyYWhhbSIsCiAgICogICAgICAgICAgICAgICAgInhfYXV0aF9leHBpcmVzIiA9PiAiMCIpCiAgICovICAKICBmdW5jdGlvbiBnZXRYQXV0aFRva2VuKCR1c2VybmFtZSwgJHBhc3N3b3JkKSB7CiAgICAkcGFyYW1ldGVycyA9IGFycmF5KCk7CiAgICAkcGFyYW1ldGVyc1sneF9hdXRoX3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiAgICAkcGFyYW1ldGVyc1sneF9hdXRoX3Bhc3N3b3JkJ10gPSAkcGFzc3dvcmQ7CiAgICAkcGFyYW1ldGVyc1sneF9hdXRoX21vZGUnXSA9ICdjbGllbnRfYXV0aCc7CiAgICAkcmVxdWVzdCA9ICR0aGlzLT5vQXV0aFJlcXVlc3QoJHRoaXMtPmFjY2Vzc1Rva2VuVVJMKCksICdQT1NUJywgJHBhcmFtZXRlcnMpOwogICAgJHRva2VuID0gT0F1dGhVdGlsOjpwYXJzZV9wYXJhbWV0ZXJzKCRyZXF1ZXN0KTsKICAgICR0aGlzLT50b2tlbiA9IG5ldyBPQXV0aENvbnN1bWVyKCR0b2tlblsnb2F1dGhfdG9rZW4nXSwgJHRva2VuWydvYXV0aF90b2tlbl9zZWNyZXQnXSk7CiAgICByZXR1cm4gJHRva2VuOwogIH0KCiAgLyoqCiAgICogR0VUIHdyYXBwZXIgZm9yIG9BdXRoUmVxdWVzdC4KICAgKi8KICBmdW5jdGlvbiBnZXQoJHVybCwgJHBhcmFtZXRlcnMgPSBhcnJheSgpKSB7CiAgICAkcmVzcG9uc2UgPSAkdGhpcy0+b0F1dGhSZXF1ZXN0KCR1cmwsICdHRVQnLCAkcGFyYW1ldGVycyk7CiAgICBpZiAoJHRoaXMtPmZvcm1hdCA9PT0gJ2pzb24nICYmICR0aGlzLT5kZWNvZGVfanNvbikgewogICAgICByZXR1cm4ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsKICAgIH0KICAgIHJldHVybiAkcmVzcG9uc2U7CiAgfQogIAogIC8qKgogICAqIFBPU1Qgd3JhcHBlciBmb3Igb0F1dGhSZXF1ZXN0LgogICAqLwogIGZ1bmN0aW9uIHBvc3QoJHVybCwgJHBhcmFtZXRlcnMgPSBhcnJheSgpKSB7CiAgICAkcmVzcG9uc2UgPSAkdGhpcy0+b0F1dGhSZXF1ZXN0KCR1cmwsICdQT1NUJywgJHBhcmFtZXRlcnMpOwogICAgaWYgKCR0aGlzLT5mb3JtYXQgPT09ICdqc29uJyAmJiAkdGhpcy0+ZGVjb2RlX2pzb24pIHsKICAgICAgcmV0dXJuIGpzb25fZGVjb2RlKCRyZXNwb25zZSk7CiAgICB9CiAgICByZXR1cm4gJHJlc3BvbnNlOwogIH0KCiAgLyoqCiAgICogREVMRVRFIHdyYXBwZXIgZm9yIG9BdXRoUmVxZXVzdC4KICAgKi8KICBmdW5jdGlvbiBkZWxldGUoJHVybCwgJHBhcmFtZXRlcnMgPSBhcnJheSgpKSB7CiAgICAkcmVzcG9uc2UgPSAkdGhpcy0+b0F1dGhSZXF1ZXN0KCR1cmwsICdERUxFVEUnLCAkcGFyYW1ldGVycyk7CiAgICBpZiAoJHRoaXMtPmZvcm1hdCA9PT0gJ2pzb24nICYmICR0aGlzLT5kZWNvZGVfanNvbikgewogICAgICByZXR1cm4ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsKICAgIH0KICAgIHJldHVybiAkcmVzcG9uc2U7CiAgfQoKICAvKioKICAgKiBGb3JtYXQgYW5kIHNpZ24gYW4gT0F1dGggLyBBUEkgcmVxdWVzdAogICAqLwogIGZ1bmN0aW9uIG9BdXRoUmVxdWVzdCgkdXJsLCAkbWV0aG9kLCAkcGFyYW1ldGVycykgewogICAgaWYgKHN0cnJwb3MoJHVybCwgJ2h0dHBzOi8vJykgIT09IDAgJiYgc3RycnBvcygkdXJsLCAnaHR0cDovLycpICE9PSAwKSB7CiAgICAgICR1cmwgPSAieyR0aGlzLT5ob3N0fXskdXJsfS57JHRoaXMtPmZvcm1hdH0iOwogICAgfQogICAgJHJlcXVlc3QgPSBPQXV0aFJlcXVlc3Q6OmZyb21fY29uc3VtZXJfYW5kX3Rva2VuKCR0aGlzLT5jb25zdW1lciwgJHRoaXMtPnRva2VuLCAkbWV0aG9kLCAkdXJsLCAkcGFyYW1ldGVycyk7CiAgICAkcmVxdWVzdC0+c2lnbl9yZXF1ZXN0KCR0aGlzLT5zaGExX21ldGhvZCwgJHRoaXMtPmNvbnN1bWVyLCAkdGhpcy0+dG9rZW4pOwogICAgc3dpdGNoICgkbWV0aG9kKSB7CiAgICBjYXNlICdHRVQnOgogICAgICByZXR1cm4gJHRoaXMtPmh0dHAoJHJlcXVlc3QtPnRvX3VybCgpLCAnR0VUJyk7CiAgICBkZWZhdWx0OgogICAgICByZXR1cm4gJHRoaXMtPmh0dHAoJHJlcXVlc3QtPmdldF9ub3JtYWxpemVkX2h0dHBfdXJsKCksICRtZXRob2QsICRyZXF1ZXN0LT50b19wb3N0ZGF0YSgpKTsKICAgIH0KICB9CgogIC8qKgogICAqIE1ha2UgYW4gSFRUUCByZXF1ZXN0CiAgICoKICAgKiBAcmV0dXJuIEFQSSByZXN1bHRzCiAgICovCiAgZnVuY3Rpb24gaHR0cCgkdXJsLCAkbWV0aG9kLCAkcG9zdGZpZWxkcyA9IE5VTEwpIHsKICAgICR0aGlzLT5odHRwX2luZm8gPSBhcnJheSgpOwogICAgJGNpID0gY3VybF9pbml0KCk7CiAgICAvKiBDdXJsIHNldHRpbmdzICovCiAgICBjdXJsX3NldG9wdCgkY2ksIENVUkxPUFRfVVNFUkFHRU5ULCAkdGhpcy0+dXNlcmFnZW50KTsKICAgIGN1cmxfc2V0b3B0KCRjaSwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRoaXMtPmNvbm5lY3R0aW1lb3V0KTsKICAgIGN1cmxfc2V0b3B0KCRjaSwgQ1VSTE9QVF9USU1FT1VULCAkdGhpcy0+dGltZW91dCk7CiAgICBjdXJsX3NldG9wdCgkY2ksIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOwogICAgY3VybF9zZXRvcHQoJGNpLCBDVVJMT1BUX0hUVFBIRUFERVIsIGFycmF5KCdFeHBlY3Q6JykpOwogICAgY3VybF9zZXRvcHQoJGNpLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAkdGhpcy0+c3NsX3ZlcmlmeXBlZXIpOwogICAgY3VybF9zZXRvcHQoJGNpLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCBhcnJheSgkdGhpcywgJ2dldEhlYWRlcicpKTsKICAgIGN1cmxfc2V0b3B0KCRjaSwgQ1VSTE9QVF9IRUFERVIsIEZBTFNFKTsKCiAgICBzd2l0Y2ggKCRtZXRob2QpIHsKICAgICAgY2FzZSAnUE9TVCc6CiAgICAgICAgY3VybF9zZXRvcHQoJGNpLCBDVVJMT1BUX1BPU1QsIFRSVUUpOwogICAgICAgIGlmICghZW1wdHkoJHBvc3RmaWVsZHMpKSB7CiAgICAgICAgICBjdXJsX3NldG9wdCgkY2ksIENVUkxPUFRfUE9TVEZJRUxEUywgJHBvc3RmaWVsZHMpOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgY2FzZSAnREVMRVRFJzoKICAgICAgICBjdXJsX3NldG9wdCgkY2ksIENVUkxPUFRfQ1VTVE9NUkVRVUVTVCwgJ0RFTEVURScpOwogICAgICAgIGlmICghZW1wdHkoJHBvc3RmaWVsZHMpKSB7CiAgICAgICAgICAkdXJsID0gInskdXJsfT97JHBvc3RmaWVsZHN9IjsKICAgICAgICB9CiAgICB9CgogICAgY3VybF9zZXRvcHQoJGNpLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNpKTsKICAgICR0aGlzLT5odHRwX2NvZGUgPSBjdXJsX2dldGluZm8oJGNpLCBDVVJMSU5GT19IVFRQX0NPREUpOwogICAgJHRoaXMtPmh0dHBfaW5mbyA9IGFycmF5X21lcmdlKCR0aGlzLT5odHRwX2luZm8sIGN1cmxfZ2V0aW5mbygkY2kpKTsKICAgICR0aGlzLT51cmwgPSAkdXJsOwogICAgY3VybF9jbG9zZSAoJGNpKTsKICAgIHJldHVybiAkcmVzcG9uc2U7CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGhlYWRlciBpbmZvIHRvIHN0b3JlLgogICAqLwogIGZ1bmN0aW9uIGdldEhlYWRlcigkY2gsICRoZWFkZXIpIHsKICAgICRpID0gc3RycG9zKCRoZWFkZXIsICc6Jyk7CiAgICBpZiAoIWVtcHR5KCRpKSkgewogICAgICAka2V5ID0gc3RyX3JlcGxhY2UoJy0nLCAnXycsIHN0cnRvbG93ZXIoc3Vic3RyKCRoZWFkZXIsIDAsICRpKSkpOwogICAgICAkdmFsdWUgPSB0cmltKHN1YnN0cigkaGVhZGVyLCAkaSArIDIpKTsKICAgICAgJHRoaXMtPmh0dHBfaGVhZGVyWyRrZXldID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuIHN0cmxlbigkaGVhZGVyKTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHVHdlZXQgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgaW50ZXJhY3Rpbmcgd2l0aCB0d2l0dGVyLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oQ0dUd2VldDo6VVNFUl9QRVJNLENHVHdlZXQ6OlVTRVJfUEVSTSk7CiRmZXUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKCiRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19hdXRodGVtcGxhdGUudHBsJzsKaWYoIGZpbGVfZXhpc3RzKCRmbikgKSB7CiAgJHRwbCA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICR0aGlzLT5TZXRUZW1wbGF0ZShDR1RXRUVUX0FVVEhURU1QTEFURV9TWVNERkxULCR0cGwpOwogICR0aGlzLT5TZXRUZW1wbGF0ZSgnYXV0aF9TYW1wbGUnLCR0cGwpOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHVFdFRVRfQVVUSFRFTVBMQVRFX0RGTFROQU1FLCdTYW1wbGUnKTsKfQoKJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX3RpbWVsaW5lLnRwbCc7CmlmKCBmaWxlX2V4aXN0cygkZm4pICkgewogICR0cGwgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAkdGhpcy0+U2V0VGVtcGxhdGUoQ0dUV0VFVF9USU1FTElORV9TWVNERkxULCR0cGwpOwogICR0aGlzLT5TZXRUZW1wbGF0ZSgndGltZWxpbmVfU2FtcGxlJywkdHBsKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZShDR1RXRUVUX1RJTUVMSU5FX0RGTFROQU1FLCdTYW1wbGUnKTsKfQoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHU2VuZFR3aXR0ZXIgKGMpIDIwMTIgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgY29udmVyc2lvbiBvZiBwb3N0YWwgY29kZXMKIyAgZnJvbSB0aGUgZ2VvbmFtZSBzZXJ2aWNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oQ0dUd2VldDo6VVNFUl9QRVJNKTsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoICRvbGR2ZXJzaW9uLCAnMS4zLjEnKSA8IDAgKSB7CiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbihDR1R3ZWV0OjpVU0VSX1BFUk0sQ0dUd2VldDo6VVNFUl9QRVJNKTsKCiAgICAvLyBkb24ndCBuZWVkIHRoaXMgcHJvcGVydHkgYW55IG1vcmUuICB3ZSBqdXN0IG5lZWQgYSB1c2VycyBzY3JlZW4gbmFtZS4KICAgIC8vIHdlJ2xsIG1hcCBhIHJlZ3VsYXIgRkVVIHByb3BlcnR5IGZvciB0aGlzLgogICAgJGZldSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgJGZldS0+RGVsZXRlUHJvcGVydHlEZWZuKCdfXycuJHRoaXMtPkdldE5hbWUoKS4nX18nLFRSVUUpOwp9]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR1R3ZWV0Igp2ZXJzaW9uID0gMS4zCmF1dGhvciA9ICJjYWxndXkxMDAwIgphdXRob3JlbWFpbCA9ICJjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIgptaW5jbXN2ZXJzaW9uID0gMi4yCmxhenlsb2FkYWRtaW4gPSAxCmxhenlsb2FkZnJvbnRlbmQgPSAwCltkZXBlbmRzXQpDR0V4dGVuc2lvbnMgPSAiMS41Ny4xIgpGcm9udEVuZFVzZXJzID0gIjIuNS4yIgpDR1NpbXBsZVNtYXJ0eSA9ICIyLjEuNyIK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_mytwitter_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX215dHdpdHRlcicsJHNlbmRlcl9uYW1lKX08L2Rpdj4KCntmb3JtX3N0YXJ0IGFjdGlvbj1hZG1pbl9teXR3aXR0ZXJfdGFifQo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiPip7JG1vZC0+TGFuZygncHJvbXB0X215c2NyZWVubmFtZScpfTo8L2xhYmVsPgogICAgPGlucHV0IGNsYXNzPSJncmlkXzgiIHJlcXVpcmVkIG5hbWU9InskYWN0aW9uaWR9c2NyZWVuX25hbWUiIHZhbHVlPSJ7JHNjcmVlbl9uYW1lfSIvPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIj4mbmJzcDs8L2xhYmVsPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CjwvZGl2Pgp7Zm9ybV9lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_settings_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Zvcm1fc3RhcnQgYWN0aW9uPWFkbWluX3NldHRpbmdzX3RhYn0KCjxmaWVsZHNldD4KPGxlZ2VuZD57JG1vZC0+TGFuZygndGl0bGVfZ2VuZXJhbF9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZnJpZW5kbHluYW1lJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZyaWVuZGx5bmFtZSIgdmFsdWU9InskZnJpZW5kbHluYW1lfGRlZmF1bHQ6Jyd9IiBzaXplPSIzMCIgbWF4bGVuZ3RoPSIyNTUiLz4KICAgIDxici8+CiAgICB7JG1vZC0+TGFuZygnaW5mb19mcmllbmRseW5hbWUnKX0KICA8L3A+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZmV1X3Byb3AnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZldV9zY3JlZW5uYW1lX3Byb3AiIHZhbHVlPSJ7JGZldV9zY3JlZW5uYW1lX3Byb3B9IiBzaXplPSIyMCIgbWF4bGVuZ3RoPSIyNTUiLz4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19mZXVfc2NyZWVubmFtZV9wcm9wJyl9MgogICAgPC9wPgogIDwvZGl2Pgo8L2Rpdj4KPC9maWVsZHNldD4KCjxmaWVsZHNldD4KPGxlZ2VuZD57JG1vZC0+TGFuZygndGl0bGVfYXBwX3NldHRpbmdzJyl9OjwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fYXBwX3NldHRpbmdzJyl9PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY29uc3VtZXJfa2V5Jyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNvbnN1bWVyX2tleSIgdmFsdWU9InskY29uc3VtZXJfa2V5fSIgc2l6ZT0iMjAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdjb25zdW1lcl9zZWNyZXQnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Y29uc3VtZXJfc2VjcmV0IiB2YWx1ZT0ieyRjb25zdW1lcl9zZWNyZXR9IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCd0d2l0dGVyX2FjY291bnRfc2V0dGluZ3MnKX06PC9sZWdlbmQ+CjxwIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fYWNjb3VudF9zZXR0aW5ncycpfTwvcD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhY2Nlc3NfdG9rZW4nKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9YWNjZXNzX3Rva2VuIiB2YWx1ZT0ieyRhY2Nlc3NfdG9rZW59IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2FjY2Vzc190b2tlbl9zZWNyZXQnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9YWNjZXNzX3Rva2VuX3NlY3JldCIgdmFsdWU9InskYWNjZXNzX3Rva2VuX3NlY3JldH0iIHNpemU9IjUwIiBtYXhsZW5ndGg9IjI1NSIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7bW9kdWxlX2FjdGlvbl9saW5rIG1vZHVsZT0nQ0dUd2VldCcgYWN0aW9uPSdhZG1pbl9hdXRob3JpemUnIHRleHQ9JG1vZC0+TGFuZygnYXV0aG9yaXplX3ZpYV90d2l0dGVyJyl9CiAgICB7aWYgJGFjY2Vzc190b2tlbiAmJiAkYWNjZXNzX3Rva2VuX3NlY3JldH0KICAgICAgPGJyLz4KICAgICAge21vZHVsZV9hY3Rpb25fbGluayBtb2R1bGU9J0NHVHdlZXQnIGFjdGlvbj0nYWRtaW5fdGVzdHR3ZWV0JyB0ZXh0PSRtb2QtPkxhbmcoJ3NlbmRfdGVzdF90d2VldCcpfQogICAgey9pZn0KICA8L3A+CjwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_authtemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogYXV0aG9yaXphdGlvbiB0ZW1wbGF0ZSAqfQo8ZGl2IGNsYXNzPSJjZ3R3ZWV0X2F1dGh7JGF1dGhzdGVwfSI+CntpZiBpc3NldCgkZXJyb3IpfQogIDxkaXYgY2xhc3M9ImVycm9yIj57JGVycm9yfTwvZGl2Pgp7ZWxzZWlmIGlzc2V0KCRtZXNzYWdlKX0KICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj57JHNjcmVlbl9uYW1lfTogeyRtZXNzYWdlfTwvZGlmdj4Key9pZn0KCntpZiBpc3NldCgkdXJsX2F1dGhvcml6ZSl9CiAgeyogb25seSBoYXBwZW5zIGZvciBhdXRoc3RlcCAxICp9CiAgPGEgaHJlZj0ieyR1cmxfYXV0aG9yaXplfSI+Q29ubmVjdCBXaXRoIFR3aXR0ZXI8L2E+CnsvaWZ9CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_timeline.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdGltZWxpbmUgdGVtcGxhdGUgKn0KPGRpdiBjbGFzcz0idHdpdHRlcl90aW1lbGluZSI+CiAge2ZvcmVhY2ggZnJvbT0kdGltZWxpbmUgaXRlbT10d2VldH0KICA8ZGl2IGlkPSJ0d2VldF97JHR3ZWV0LT5pZH0iIGNsYXNzPSJ0d2VldCI+CiAgICA8ZGl2IGNsYXNzPSJ0d2VldF9waWN0dXJlIj4KICAgICAge2lmIGlzc2V0KCR0d2VldC0+dXNlci0+cHJvZmlsZV9pbWFnZV91cmwpfQogICAgICAgIDxpbWcgc3JjPSJ7JHR3ZWV0LT51c2VyLT5wcm9maWxlX2ltYWdlX3VybH0iIGFsdD0ieyR0d2VldC0+dXNlci0+c2NyZWVuX25hbWV9Ii8+CiAgICAgIHsvaWZ9CiAgICA8L2Rpdj4KICAgIDxwIGNsYXNzPSJ0d2VldF9hdXRob3IiPjxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS97JHR3ZWV0LT51c2VyLT5zY3JlZW5fbmFtZX0iIHJlbD0iZXh0ZXJuYWwiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idHdlZXRfbGluayI+eyR0d2VldC0+dXNlci0+bmFtZX08L2E+CiAgICB7aWYgJHR3ZWV0LT51c2VyLT51cmx9PGJyLz48YSBocmVmPSJ7JHR3ZWV0LT51c2VyLT51cmx9IiByZWw9ImV4dGVybmFsIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InR3ZWV0X2xpbmsiPnskbW9kLT5MYW5nKCdob21lcGFnZScpfTwvYT57L2lmfQogICAgPHAgY2xhc3M9InR3ZWV0X3RleHQiPnskdHdlZXQtPmh0bWx9PC9wPgogICAgPHAgY2xhc3M9InR3ZWV0X3N1bW1hcnkiPnskdHdlZXQtPmNyZWF0ZWRfYXR8Y21zX2RhdGVfZm9ybWF0fSB7JG1vZC0+TGFuZygndmlhJyl9IHskdHdlZXQtPnNvdXJjZX08L3A+CiAgPC9kaXY+CiAgey9mb3JlYWNofQo8L2Rpdj4=]]></data>
	</file>
</module>
