<?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>Skeleton</name>
	<version>1.7</version>
  <mincmsversion>1.0</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPk5vdGhpbmcuIEl0J3MgZGVzaWduZWQgdG8gYmUgYSBzdGFydGluZyBwb2ludCBmb3IgeW91IHRvIGRldmVsb3AgeW91ciBvd24gbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XZWxsLCB5b3UgY291bGQgYWN0dWFsbHkgaW5zdGFsbCBpdCBieSBwbGFjaW5nIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yIHRlbXBsYXRlIHVzaW5nIHRoZQpzbWFydHkgdGFnICYjMTIzO2Ntc19tb2R1bGUgbW9kdWxlPSdTa2VsZXRvbid9PC9wPgo8cD5Zb3Ugd291bGQgYmUgd2lzZXIsIGhvd2V2ZXIsIHRvIHVzZSB0aGUgbW9kdWxlIGFzIGEgc3RhcnRpbmcgcG9pbnQsIGFuZCBlZGl0aW5nIHRoZSBjb2RlIHRvIGRvCndoYXRldmVyIGl0IGlzIHlvdSBhcmUgd2FudGluZyB0byBkby48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8iPlNrZWxldG9uIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIFNqRywgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0Cm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+Jmx0O3NqZ0BjbXNtb2R1bGVzLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+CjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNrZWxldG9uX2lkPSItMSIgLSBJbnRlcm5hbGx5IGlkZW50aWZpZXIgZm9yIHNlbGVjdGluZyByZWNvcmRzPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBtb2R1bGVfbWVzc2FnZT0iIiAtIEludGVybmFsbHkgdXNlZCBwYXJhbWV0ZXIgZm9yIHBhc3NpbmcgbWVzc2FnZXMgdG8gdXNlcjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZGVzY3JpcHRpb249IiIgLSBJbnRlcm5hbCBwYXJhbWV0ZXIgdXNlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IHJlY29yZDwvbGk+PC91bD4=</help>
	<about>PGJyIC8+QXV0aG9yOiBTakcgJmx0O3NqZ0BjbXNtb2R1bGVzLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjc8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT5WZXJzaW9uIDEuNywgU2VwIDIwMDkgU2pHLCBDbGVhbmVkIHVwLCBhbmQgbW9kZXJuaXplZCBhIGJpdC48L2xpPgo8bGk+VmVyc2lvbiAxLjYsIE5vdiAyMDA4IFNqRywgYWRkZWQgcGFyYW1ldGVyIHNhbml0aXppbmcgZm9yIE51bm88L2xpPgo8bGk+VmVyc2lvbiAxLjUsIEp1bHkgMjAwNyBTakcKPHVsPgogICA8bGk+QWRkZWQgYWN0dWFsIGRhdGFiYXNlIGFwcC48L2xpPgogICA8bGk+TWFkZSBBZG1pbiB0YWJiZWQgZm9yIGludGVyZXN0LjwvbGk+CiAgIDxsaT5VcGRhdGVkIE1pbmltdW0gYW5kIE1heGltdW0gQ01TIHZlcnNpb25zLjwvbGk+CjwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuNCwgSnVuZSAyMDA2IChjYWxndXkxMDAwKS4gCiAgPHVsPgogICAgPGxpPlJlcGxhY2VkIERpc3BsYXlBZG1pbk5hdiB3aXRoIGEgc2luZ2xlIHRhYjwvbGk+CiAgICA8bGk+UmVwbGFjZWQgY2FsbCB0byBEb0FjdGlvbiB3aXRoIGEgUmVkaXJlY3Q8L2xpPgogICAgPGxpPkNoYW5nZWQgbWluaW11bSBjbXMgdmVyc2lvbiB0byAxLjAtc3ZuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjMuIEp1bmUgMjAwNiAoc2pnKS4gCiAgPHVsPgogICAgPGxpPlNwbGl0IG91dCBpbnN0YWxsLCB1cGdyYWRlLCBhbmQgdW5pbnN0YWxsIG1ldGhvZHM8L2xpPgogICAgPGxpPkFkZGVkIEV2ZW50czwvbGk+CiAgICA8bGk+QWRkZWQgcmVmZXJlbmNlcyB0byBwcmV0dHkgdXJscyBhbmQgcm91dGUgcmVnaXN0cmF0aW9uPC9saT4KICAgIDxsaT5jb3JyZWN0ZWQgbGFuZ3VhZ2UgZmlsZSBkaXJlY3Rvcnkgc3RydWN0dXJlPC9saT4KICAgIDxsaT5hZGRlZCBtb3JlIGNvbW1lbnRzPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjIuIDI5IERlY2VtYmVyIDIwMDUuIEZpeGVzIHRvIGJ1Z3MgcG9pbnRlZCBvdXQgYnkgUGF0cmljayBMb3NjaG1pZHQuIFVwZGF0ZXMgdG8gYmUgY29ycmVjdCBmb3IgQ01TIE1hZGUgU2ltcGxlIHZlcnNpb25zIDAuMTEueC48L2xpPgo8bGk+VmVyc2lvbiAxLjEuIDExIFNlcHRlbWJlciAyMDA1LiBDbGVhbmVkIHVwIHJlZmVyZW5jZXMgdGhhdCBjYXVzZWQgcHJvYmxlbXMgZm9yIFBIUCA0LjQueCBvciA1LjAuNS48L2xpPgo8bGk+VmVyc2lvbiAxLjAuIDYgQXVndXN0IDIwMDUuIEluaXRpYWwgUmVsZWFzZS48L2xpPjwvdWw+PGJyIC8+</about>
	<description>This module is a skeleton module that does nothing.</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICoNCiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGhvZCB0byBhZGQNCiAqIGRhdGFiYXNlIGRhdGEgb24gcGFnZSB1c2luZyBhIHRlbXBsYXRlLg0KICoNCiAqIElmIHRoZSAic2tlbGV0b25faWQiIHBhcmFtZXRlciBpcyBzZXQsIHRoaXMgcGFnZSB3aWxsDQogKiBhbGxvdyB5b3UgdG8gZWRpdCB0aGF0IHJlY29yZC4gT3RoZXJ3aXNlLCBpdCB3aWxsIGxldCB5b3UNCiAqIGFkZCBhIG5ldyByZWNvcmQgLg0KICoNCiAqIE5vdGUgdGhhdCBpdCB1c2VzIGEgdGVtcGxhdGUsIGFuZCBpcyB0aHVzIHZlcnkgcG93ZXJmdWwsDQogKiBldmVuIGlmIGl0J3Mgc2ltcGxlLg0KICovDQoNCi8qKg0KICogRm9yIHNlcGFyYXRlZCBtZXRob2RzLCB5b3UnbGwgYWx3YXlzIHdhbnQgdG8gc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nDQogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQ0KICogQVBJLCBhbmQgdGhhdCBldmVyeXRoaW5nJ3Mgc2FmZSB0byBjb250aW51ZToNCiAqLw0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIGRvbid0IHRydXN0IHRoYXQgdGhpcyB3YXMgc2FmZSwganVzdCBiZWNhdXNlIHRoZSBsaW5rIGlzIGhpZGRlbiBpZiB0aGUgb3B0aW9uIGlzIG9mZiENCi8vIGFsd2F5cyBjb2RlIGRlZmVuc2l2ZWx5ISBUaGVyZSBhcmUgYmVhc3RpZXMgdGhhdCBsdXJrIGFuZCB0aGluZ3MgZ28gYnVtcCBpbiB0aGUgbmlnaHQuDQppZiAoISAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfYWRkJywxKSA9PSAxKSBleGl0Ow0KDQovKioNCiAqIEFmdGVyIHRoaXMsIHRoZSBjb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQ0KICogd3JhcHBlZCBpbiB0aGUgYWN0aW9uLg0KICovDQoNCi8vIGdldCBvdXIgcmVjb3JkcyBmcm9tIHRoZSBkYXRhYmFzZQ0KJGRiID0gJiRnQ21zLT5HZXREYigpOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snc2tlbGV0b25faWQnXSkpDQogICB7DQogICAkcXVlcnkgPSAnU0VMRUNUIHNrZWxldG9uX2lkLCBkZXNjcmlwdGlvbiBmcm9tICcuY21zX2RiX3ByZWZpeCgpLg0KICAgICAgJ21vZHVsZV9za2VsZXRvbiB3aGVyZSBza2VsZXRvbl9pZCA9ID8nOw0KICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhcmFtc1snc2tlbGV0b25faWQnXSkpOw0KDQogICBpZiAoJHJlc3VsdCAhPT0gZmFsc2UpDQogICAgICB7DQogICAgICAkcm93PSRyZXN1bHQtPkZldGNoUm93KCk7DQogICAgICAkc2lkID0gJHJvd1snc2tlbGV0b25faWQnXTsgLy8gc3R1cGlkIC0tIHdlJ3JlIHBhc3NpbmcgdGhlIHBhcmFtLCBhbmQgdGhlbiB1c2luZyB0aGUgZGF0YWJhc2UgdmVyc2lvbi4NCiAgICAgICRkZXNjID0gJHJvd1snZGVzY3JpcHRpb24nXTsNCiAgICAgIH0NCiAgIGVsc2UNCiAgICAgIHsNCiAgICAgIC8vIHllYWgsIHRoYXQncyBncmFjZWZ1bCA6KA0KICAgICAgZWNobyAiRGF0YWJhc2UgZXJyb3IhIjsNCiAgICAgIGV4aXQ7DQogICAgICB9DQogICB9DQplbHNlDQogICB7DQogICAkc2lkID0gLTE7DQogICAkZGVzYyA9ICcnOw0KICAgfQ0KDQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3NhdmVfcmVjb3JkJywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Rlc2NyaXB0aW9uJywkdGhpcy0+TGFuZygndGl0bGVfZGVzY3JpcHRpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Rlc2NyaXB0aW9uJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnZGVzY3JpcHRpb24nLCRkZXNjKSk7DQovLyBwYXNzIGEgaGlkZGVuIGtleSB2YWx1ZSBhbG9uZyB3aXRoIHRoZSBzdWJtaXQgYnV0dG9uDQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3NrZWxldG9uX2lkJywkc2lkKS4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCg0KLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZF9lZGl0LnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqCiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIHNpbXBsZSBtZXRob2QgdG8gZGlzcGxheQogKiBkYXRhYmFzZSBkYXRhIG9uIHBhZ2UgdXNpbmcgYSB0ZW1wbGF0ZS4KICoKICogSWYgdGhlICJza2VsZXRvbl9pZCIgcGFyYW1ldGVyIGlzIHNldCwgdGhpcyBwYWdlIHdpbGwKICogZGlzcGxheSBvbmx5IHRoYXQgc2luZ2xlIHJlY29yZC4gT3RoZXJ3aXNlLCBpdCB3aWxsIGRpc3BsYXkKICogb25lIHBhZ2Ugd29ydGggb2YgcmVjb3Jkcy4gVGhpcyBpcyByZWFsbHkgc2lsbHkgaW4gdGhpcyBjYXNlLAogKiBiZWNhdXNlIHRoZSB2aWV3IGlzIGlkZW50aWNhbC4gSWYgeW91IGhhdmUgYSBtb3JlIGNvbXBsZXgKICogcmVjb3JkIHRob3VnaCwgeW91IGNvdWxkIGRvIHNvbWV0aGluZyB1c2VmdWwuCiAqCiAqIE5vdGUgdGhhdCBpdCB1c2VzIGEgdGVtcGxhdGUsIGFuZCBpcyB0aHVzIHZlcnkgcG93ZXJmdWwsCiAqIGV2ZW4gaWYgaXQncyBzaW1wbGUuCiAqLwoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgogKi8gCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKLyoqCiAqIEFmdGVyIHRoaXMsIHRoZSBjb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQogKiB3cmFwcGVkIGluIHRoZSBhY3Rpb24uCiAqLwoKLy8gZ2V0IG91ciByZWNvcmRzIGZyb20gdGhlIGRhdGFiYXNlCiRkYiA9ICYkZ0Ntcy0+R2V0RGIoKTsKCiRxdWVyeSA9ICdTRUxFQ1Qgc2tlbGV0b25faWQsIGRlc2NyaXB0aW9uIGZyb20gJy5jbXNfZGJfcHJlZml4KCkuCiAgICdtb2R1bGVfc2tlbGV0b24nOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3NrZWxldG9uX2lkJ10pKQogICB7CiAgIC8vICpBTFdBWVMqIHVzZSBwYXJhbWV0ZXJpemVkIHF1ZXJpZXMgd2l0aCB1c2VyLXByb3ZpZGVkIGlucHV0CiAgIC8vIHRvIHByZXZlbnQgU1FMLUluamVjdGlvbiBhdHRhY2tzIQogICAkcXVlcnkgLj0gJyB3aGVyZSBza2VsZXRvbl9pZCA9ID8nOwogICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWydza2VsZXRvbl9pZCddKSk7CiAgIH0KZWxzZQogICB7CiAgIC8vIHdlJ3JlIG5vdCBnZXR0aW5nIGEgc3BlY2lmaWMgcmVjb3JkLCBzbyBzaG93ICdlbSBhbGwuIFByb2JhYmx5IHNob3VsZCBwYWdpbmF0ZS4KICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICB9CiAgIAokcmVjb3JkcyA9IGFycmF5KCk7CndoaWxlICgkcmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkpCiAgIHsKICAgLy8gY3JlYXRlIGEgbmV3IG9iamVjdCBmb3IgZXZlcnkgcmVjb3JkIHRoYXQgd2UgcmV0cmlldmUKICAgJHJlYyA9IG5ldyBzdGRDbGFzcygpOwogICAkcmVjLT5pZCA9ICRyb3dbJ3NrZWxldG9uX2lkJ107CiAgICRyZWMtPm5hbWUgPSAkcm93WydkZXNjcmlwdGlvbiddOwogICAvLyBjcmVhdGUgYXR0cmlidXRlcyBmb3IgcmVuZGVyaW5nICJ2aWV3IiBsaW5rcyBmb3IgdGhlIG9iamVjdC4KICAgLy8gJGlkIGFuZCAkcmV0dXJuaWQgYXJlIHByZWRlZmluZWQgZm9yIHVzIGJ5IHRoZSBtb2R1bGUgQVBJCiAgICRyZWMtPnZpZXcgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICR0aGlzLT5MYW5nKCdsaW5rX3ZpZXcnKSwKICAgICAgYXJyYXkoJ3NrZWxldG9uX2lkJz0+JHJlYy0+aWQpKTsKICAgJHJlYy0+ZWRpdCA9ICR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdhZGRfZWRpdCcsICR0aGlzLT5MYW5nKCdlZGl0JyksCiAgICAgIGFycmF5KCdza2VsZXRvbl9pZCc9PiRyZWMtPmlkKSk7CiAgIGFycmF5X3B1c2goJHJlY29yZHMsJHJlYyk7CiAgIH0KCi8vIEV4cG9zZSB0aGUgbGlzdCB0byBzbWFydHkuIFVzZSAiYnlfcmVmIiB0byBzYXZlIG1lbW9yeS4KJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncmVjb3JkcycsJHJlY29yZHMpOwoKLy8gYW5kIGEgY291bnQgb2YgcmVjb3JkcwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX251bV9yZWNvcmRzJywkdGhpcy0+TGFuZygndGl0bGVfbnVtX3JlY29yZHMnLGFycmF5KGNvdW50KCRyZWNvcmRzKSkpKTsKCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfYWRkJywxKSA9PSAxKQogICB7CiAgICR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkJywgJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2FkZF9lZGl0JywKICAgICAgJHRoaXMtPkxhbmcoJ2FkZF9yZWNvcmQnKSkpOwoKICAgfQplbHNlCiAgIHsKICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGQnLCAnJyk7CiAgIH0KCmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKSkKICAgewogICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9tZXNzYWdlJywkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKTsKICAgfQplbHNlCiAgIHsKICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsJycpOwogICB9CgovLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdza2VsZXRvbl9saXN0LnRwbCcpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERpc3BsYXlBZG1pblBhbmVsKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkbWVzc2FnZSkKICogTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKICogCiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIHNpbXBsZSBtZXRob2QgdG8gcHJlc2VudCBhbiBBZG1pbgogKiBwYW5lbC4KICogCiAqIEl0IHNldHMgc21hcnR5IHRhZyB2YWx1ZXMsIGFuZCB0aGVuIGNhbGxzIHRoZQogKiBjb2RlIG5lY2Vzc2FyeSB0byByZW5kZXIgdGhlIHRlbXBsYXRlLiAgIAogKi8KCi8qKgogKiBGb3Igc2VwYXJhdGVkIG1ldGhvZHMsIHlvdSdsbCBhbHdheXMgd2FudCB0byBzdGFydCB3aXRoIHRoZSBmb2xsb3dpbmcKICogbGluZSB3aGljaCBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZCBmcm9tIHRoZSBtb2R1bGUKICogQVBJLCBhbmQgdGhhdCBldmVyeXRoaW5nJ3Mgc2FmZSB0byBjb250aW51ZToKICovIAppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCgovKiogCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91IHdvbid0IGJlIGFibGUgdG8gZG8gcGVybWlzc2lvbiBjaGVja3MgaW4KICogdGhlIERvQWN0aW9uIG1ldGhvZCwgc28geW91J2xsIG5lZWQgdG8gZG8gdGhlbSBhcyBuZWVkZWQgaW4geW91cgogKiBtZXRob2Q6CiovIAppZiAoISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgU2tlbGV0b24nKSkgewogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgovKioKICogQWZ0ZXIgdGhpcywgdGhlIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlCiAqIHdyYXBwZWQgaW4gdGhlIERpc3BsYXlBZG1pblBhbmVsKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCiAKLy8gVGFiIEluZnJhc3RydWN0dXJlIGZvciBBZG1pbiBBcmVhIC0tIGNyZWF0ZSB0d28gdGFicywgb25lIG9mIHdoaWNoCi8vIGlzIG9ubHkgYWNjZXNzaWJsZSBpZiBwZXJtaXNzaW9ucyBhcmUgcmlnaHQKaWYgKEZBTFNFID09IGVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpCiAgewogICAgJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKICB9IGVsc2UgewogICR0YWIgPSAnJzsKIH0KCiR0YWJfaGVhZGVyID0gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpIC4KICAgJHRoaXMtPlNldFRhYkhlYWRlcignZ2VuZXJhbCcsJHRoaXMtPkxhbmcoJ3RpdGxlX2dlbmVyYWwnKSwoJ2dlbmVyYWwnID09ICR0YWIpP3RydWU6ZmFsc2UpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2dlbmVyYWxfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ2dlbmVyYWwnLCAkcGFyYW1zKSk7CgoKaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NldCBTa2VsZXRvbiBQcmVmcycpKQogICB7CiAgICR0YWJfaGVhZGVyIC49ICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3ByZWZzJywkdGhpcy0+TGFuZygndGl0bGVfbW9kX3ByZWZzJyksCiAgICAgICgncHJlZnMnID09ICR0YWIpP3RydWU6ZmFsc2UpOwogICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3ByZWZzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdwcmVmcycsICRwYXJhbXMpKTsKICAgfQplbHNlCiAgIHsKICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wcmVmc190YWInLCcnKTsKICAgfQoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJzX3N0YXJ0JywkdGFiX2hlYWRlci4kdGhpcy0+RW5kVGFiSGVhZGVycygpLiR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2VuZCcsJHRoaXMtPkVuZFRhYigpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJzX2VuZCcsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7CgovLyBDb250ZW50IGRlZmluZXMgYW5kIEZvcm0gc3R1ZmYgZm9yIHRoZSBhZG1pbgokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3NhdmVfYWRtaW5fcHJlZnMnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGxvd19hZGQnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2FsbG93X2FkZCcsIDEsCiAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19hZGQnLCcwJykpLiAkdGhpcy0+TGFuZygndGl0bGVfYWxsb3dfYWRkX2hlbHAnKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7CgovLyBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUsIHNvIHNtYXJ0eSBoYXMgYWNjZXNzIHRvIG1vZHVsZSBtZXRob2RzCiRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ21vZCcsJHRoaXMpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnBhbmVsLnRwbCcpOwovKioKICogWW91IG1pZ2h0IGFsc28gd2FudCB0byBsb29rIGF0IG90aGVyIG1vZHVsZXMgdGhhdCBoYXZlIGRvbmUgdGhpcyA6KQogKiAgKE5ld3MgYW5kIFF1ZXN0aW9ucyBhcmUgZ29vZCBleGFtcGxlcykKICovCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.save_admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCiAqIAogKiBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBzaW1wbGUgbWV0aG9kIHRvIHNhdmUgQWRtaW4KICogcHJlZnMuCiAqLwoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgogKi8gCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKLyoqIAogKiBGb3Igc2VwYXJhdGVkIG1ldGhvZHMsIHlvdSB3b24ndCBiZSBhYmxlIHRvIGRvIHBlcm1pc3Npb24gY2hlY2tzIGluCiAqIHRoZSBEb0FjdGlvbiBtZXRob2QsIHNvIHlvdSdsbCBuZWVkIHRvIGRvIHRoZW0gYXMgbmVlZGVkIGluIHlvdXIKICogbWV0aG9kOgogKi8gCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBTa2VsZXRvbicpKSB7CiAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCQovKioKICogQWZ0ZXIgdGhpcywgdGhlIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlCiAqIHdyYXBwZWQgaW4gdGhlIERpc3BsYXlBZG1pblByZWZzKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgoKCi8vIHNldCBvdXIgcHJlZmVyZW5jZQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dfYWRkJywgaXNzZXQoJHBhcmFtc1snYWxsb3dfYWRkJ10pPyRwYXJhbXNbJ2FsbG93X2FkZCddOicwJyk7CgovLyBzZW5kIGFuIGV2ZW50IHRvIGFueSBzdWJzY3JpYmluZyB1c2VyIHRhZ3Mgb3IgbW9kdWxlcwokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ2FsbG93X2FkZCddID0gKGlzc2V0KCRwYXJhbXNbJ2FsbG93X2FkZCddKT90cnVlOmZhbHNlKTsKJHRoaXMtPlNlbmRFdmVudCgnT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnLCRwYXJtcyk7CgovLyB3cml0ZSB0byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygncHJlZnN1cGRhdGVkJykgKTsKCi8vIHNldCB0aGUgYWN0aXZlIHRhYiwgYW5kIGEgbWVzc2FnZSB0byBkaXNwbGF5CiRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ3ByZWZzdXBkYXRlZCcsICdhY3RpdmVfdGFiJyA9PiAncHJlZnMnKTsKCi8vIHJlZGlyZWN0IGJhY2sgdG8gZGVmYXVsdCBhZG1pbiBwYWdlCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.save_record.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICoNCiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGhvZCB0byBzYXZlDQogKiBkYXRhYmFzZSBkYXRhLg0KICoNCiAqIElmIHRoZSAic2tlbGV0b25faWQiIHBhcmFtZXRlciBpcyAtMSwgaXQncyBhIG5ldyByZWNvcmQuDQogKiBPdGhlcndpc2UsIHdlJ3JlIHVwZGF0aW5nIGFuIG9sZCByZWNvcmQuDQoNCiAqLw0KDQovKioNCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZw0KICogbGluZSB3aGljaCBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZCBmcm9tIHRoZSBtb2R1bGUNCiAqIEFQSSwgYW5kIHRoYXQgZXZlcnl0aGluZydzIHNhZmUgdG8gY29udGludWU6DQogKi8NCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyBkb24ndCB0cnVzdCB0aGF0IHRoaXMgd2FzIHNhZmUsIGp1c3QgYmVjYXVzZSB0aGUgbGluayBpcyBoaWRkZW4gaWYgdGhlIG9wdGlvbiBpcyBvZmYhDQovLyBhbHdheXMgY29kZSBkZWZlbnNpdmVseSEgVGhlcmUgYXJlIGJlYXN0aWVzIHRoYXQgbHVyayBhbmQgdGhpbmdzIGdvIGJ1bXAgaW4gdGhlIG5pZ2h0Lg0KaWYgKCEgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X2FkZCcsMSkgPT0gMSkgZXhpdDsNCg0KLyoqDQogKiBBZnRlciB0aGlzLCB0aGUgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGNvZGUgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUNCiAqIHdyYXBwZWQgaW4gdGhlIGFjdGlvbi4NCiAqLw0KDQovLyBnZXQgb3VyIHJlY29yZHMgZnJvbSB0aGUgZGF0YWJhc2UNCiRkYiA9ICYkZ0Ntcy0+R2V0RGIoKTsNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ3NrZWxldG9uX2lkJ10pICYmICRwYXJhbXNbJ3NrZWxldG9uX2lkJ10gIT0gLTEpDQogICB7DQogICAkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLg0KICAgICAgJ21vZHVsZV9za2VsZXRvbiBzZXQgZGVzY3JpcHRpb249PyB3aGVyZSBza2VsZXRvbl9pZCA9ID8nOw0KICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhcmFtc1snZGVzY3JpcHRpb24nXSwkcGFyYW1zWydza2VsZXRvbl9pZCddKSk7DQogICAkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3VwZGF0ZWRfcmVjb3JkJyk7DQogICB9DQplbHNlDQogICB7DQogICAvLyB1c2UgdGhlIHNlcXVlbmNlIHRvIGdldCBhIGZyZXNoIElEDQogICAkc2lkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9za2VsZXRvbl9zZXEnKTsNCiAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4NCiAgICAgICdtb2R1bGVfc2tlbGV0b24gKHNrZWxldG9uX2lkLCBkZXNjcmlwdGlvbikgVkFMVUVTICg/LD8pJzsNCiAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRzaWQsJHBhcmFtc1snZGVzY3JpcHRpb24nXSkpOw0KICAgJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdhZGRlZF9yZWNvcmQnKTsNCiAgIH0NCg0KaWYgKCRyZXN1bHQgPT09IGZhbHNlKQ0KICAgew0KICAgLy8geWVhaCwgdGhhdCdzIGdyYWNlZnVsIDooDQogICBlY2hvICJEYXRhYmFzZSBlcnJvciEiOw0KICAgZXhpdDsNCiAgIH0NCg0KdW5zZXQoJHBhcmFtc1snc2tlbGV0b25faWQnXSk7DQovLyBzZXQgYSBtZXNzYWdlIGFuZCByZXR1cm4gdG8gdGhlIHBhZ2UuDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAPcAAO3t7evr6/v7++7u7vHx8fz8/C8vL+np6RYWFkRERO/v7+rq6jg4OEBAQObm5vb29ikpKezs7PDw8ENDQ0tLSzU1NS0tLfj4+DExMfLy8h0dHUhISGdnZywsLCcnJx4eHgwMDA8PDwYGBklJSfn5+Q0NDVVVVVFRUWJiYl9fXzQ0ND4+PvPz8zMzM+Pj4xcXFzk5OSAgIE1NTRsbGyMjIxkZGQ4ODhISEhUVFQcHBwkJCQgICE9PTxoaGnx8fOfn58nJydnZ2VRUVFBQUHt7e29vb0JCQkxMTF1dXQQEBBMTE3Z2dlNTU2xsbC4uLrGxsTAwMDo6OkVFRTs7OzIyMiYmJisrKxwcHCEhIX19fbi4uMDAwMPDw/r6+kFBQcbGxhgYGJGRkWVlZZqamrm5uUpKSlxcXD8/P2RkZHJyclJSUn9/fz09Paampvf390dHR93d3VtbW5aWlhAQEN/f3yoqKuXl5Wtrazc3NyUlJQAAAAUFBf39/eTk5EZGRsLCws3NzdDQ0GFhYdPT0+Dg4KysrAMDA4WFhVlZWc7OzrOzs8rKyujo6K6urpycnJCQkF5eXq2trZ6entTU1NHR0YSEhCIiInNzc2BgYCgoKKKiom5ubnV1dZWVlVZWVqurq2hoaGNjY7y8vB8fH3BwcMHBwY2NjfX19aGhoVdXV+Li4qCgoBEREXh4eMvLy21tbU5OTmlpadzc3LKysrCwsPT09DY2NpmZmVpaWiQkJNfX14CAgK+vr8fHx4ODg5+fnwsLC1hYWGZmZtXV1QoKCv7+/hQUFJubm+Hh4bu7u7S0tHd3d35+fo+Pj5KSktbW1piYmHR0dDw8PI6OjpOTk8/Pz4yMjNjY2IaGhnp6etvb28XFxdra2sjIyNLS0qqqqqmpqb+/v2pqaoGBgbe3t4KCgr6+vqSkpImJiXFxcYeHhwEBAYiIiAICAqioqKOjo8TExLW1taenp6WlpYuLi8zMzJSUlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAgACAAAAj/APMgGPiix5UPBlL4cqTlT6RAq3Zx8AOFxoceNWqA0TDjBQ5LN5Ik0VFiDg4EHVCMAado0S1eyqy9EgKjwygESuaEoMJDxhtcStbpULKRRp1Uh6ipawTknJYvnYQ1MIBhChsruZxAWhKLAygLBqh4sBJlSJY7JxKsEKNFXqNujxp8mFOixhskpDRBu7PEFKkiRZKiYxZGmAEsPSAwIPKETJAsM0KUAKHDQKFw6cJMmqSFVqEwt765OtDJ0oeOeaQhOTZLFQcENnLswRJNzhgi44AQgqMrQoYnlSLFc2QGyosSODyYcLSNAK4ke3JgWNMqTx13khrBcxAAQJBPkcjB/7KFZNMlFMGQtOLFRUGzOCiaEJHBysYNFFySfXER4MCwei74gMcGENRggBdChGKKLow8QAYRTYyQxw0l5KADA20Ash93fTgwiCBMxKADMMZAUAEFaQQxAAv2yHACLGqYwAMGWGBRRBCA2EHHAAco8AUoo9yQSQUtWGGBEdggowABT6gw1w5JiACCFRPAsAUyP1AyAAAsKCINA1N0gMAOIoSgRAJwSKAAFxZAkEADHdwAwh6ZICIHAA4AEQGevqCxARgivACBBS1M4QkhAyzgwDGQUOCHFFRMYYsSUEgywA9cdDeIM3F8gEMHFXiARRUGqLHjAgNksUM7euhhCDAQrP/gxBIE/FAKAAP0UQkDDXhhhQ17iLBDCVAEQkAAAaxxEAIgGNIqDmX4MMwBWwwgwTXZcHDCDCLkQAwrV0DAAxwEEJCBMhvcsQEeLdBAjAg0LAHEAqIAoMAzbYgRQwgxqLDCGQkIcYksGZBwgSgTVFADCAhQsYIHM5zxBwCKdOeCHAxkMkECHfSAQwwYmECHBBcIsMUETlTRbBIaHLGBAWMMoMkACiQSih+IqKBDtzvU0UAKB0RAggAH/GKEF1fYAEIOCJyARhZ2/AJABppwwAkbIdgQggZOmPGGOA4IzccpkySAQQVghHCDDTGAcsggqADwwzvTHEFDD7lsMIIUgsD/UEYiClxQjBvacGLACgxUgcAVHrRQRB+fBLCAK6FYUEUDiMBQQxVSYDBBNRI8MPgC5qRAgwYW4BGFEWwwocofERBQihBSpOCJB8ZooIIMMqTSBwEkFHABAJQ0c0QLL8ywAhqQoAAINwoA0MYaawxhiQYxGFAGBWygMUAGAhTQBZ60oGDCBHWMUkETzixihwKMPCFJLDBY0AEDG5xRRhRpZMBCAQUQAAAWIAt2GOAII1ABBCgAjSAEYEWByMIQNsYBMQihLEboxAUeID4BsABZT2gBBKhAgRMwgRSJKJcbqrEMJpiAGZvwgwVGEAc1rOIBFwig8CIwADikQAMecEIw0NLgg1JIIAMPoMQ0dvEITOABAwxAAg+MIIcHBI8PYzvAAVxQiQpAQQUMiEMYFhG7B+DrE2k4QwUSwAEKUGAChbhAF8LHh1rY4QcBQMUbEuCFKTQgGkAIgARqQYgtmMIMPPBEE9QgBRlQoBcPEEAXAPgARhxgAWQYAQxGMIITNGEeATBXBMhwhxRgwgeCiEIDhlAOF7BAALAUAAkk54BkYAIDDWCCGIpAj5FFbxZEuAQnNmGCV4yhFwcAgARiWQA3HEByovBBAo5ghiUs4xHeCAgAOw==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1BlZGFudGljIFNrZWxldG9uIE1vZHVsZSc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCBlLmcuLCBCZSBzdXJlIHRvIHNldCAiVXNlIFNrZWxldG9ucyIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnUG9zdCBVbmluc3RhbGwgTWVzc2FnZSwgZS5nLiwgIkN1cnNlcyEgRm9pbGVkIEFnYWluISInOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlYWxseT8gWW91XCdyZSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIGZpbmUgbW9kdWxlPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snc3VibWl0J10gPSAnU2F2ZSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1snbGlua192aWV3J10gPSAnVmlldyBSZWNvcmQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQgUmVjb3JkJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMgcmVjb3JkcyBmb3VuZC4nOwokbGFuZ1snYWRkX3JlY29yZCddID0gJ0FkZCBhIFJlY29yZCc7CiRsYW5nWydhZGRlZF9yZWNvcmQnXSA9ICdBZGRlZCByZWNvcmQuJzsKJGxhbmdbJ3VwZGF0ZWRfcmVjb3JkJ10gPSAnUmVjb3JkIHVwZGF0ZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3RpdGxlX2FsbG93X2FkZCddID0gJ1VzZXJzIG1heSBhZGQgcmVjb3Jkcz8nOwokbGFuZ1sndGl0bGVfYWxsb3dfYWRkX2hlbHAnXSA9ICdDbGljayBoZXJlIHRvIGFsbG93IHVzZXJzIHRvIGFkZCByZWNvcmRzLic7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdNb2R1bGUgUHJlZmVyZW5jZXMnOwokbGFuZ1sndGl0bGVfZ2VuZXJhbCddID0gJ0dlbmVyYWwgSW5mbyc7CiRsYW5nWyd0aXRsZV9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ3RpdGxlX21vZF9hZG1pbiddID0gJ01vZHVsZSBBZG1pbiBQYW5lbCc7CiRsYW5nWydkYXNoX3JlY29yZF9jb3VudCddID0gJ1RoaXMgbW9kdWxlIGhhbmRsZXMgJXMgcmVjb3Jkcyc7CiRsYW5nWydhbGVydF9ub19yZWNvcmRzJ10gPSAnVGhlcmUgaGF2ZSBub3QgYmVlbiBhbnkgcmVjb3JkcyBhZGRlZCBpbiB0aGUgU2tlbGV0b24gbW9kdWxlISc7CiRsYW5nWydoZWxwX3NrZWxldG9uX2lkJ10gPSAnSW50ZXJuYWxseSBpZGVudGlmaWVyIGZvciBzZWxlY3RpbmcgcmVjb3Jkcyc7CiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uJ10gPSAnSW50ZXJuYWwgcGFyYW1ldGVyIHVzZWQgd2hlbiBjcmVhdGluZyBhIG5ldyByZWNvcmQnOwokbGFuZ1snaGVscF9tb2R1bGVfbWVzc2FnZSddID0gJ0ludGVybmFsbHkgdXNlZCBwYXJhbWV0ZXIgZm9yIHBhc3NpbmcgbWVzc2FnZXMgdG8gdXNlcic7CiRsYW5nWydldmVudF9pbmZvX09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gIHRoZSBwcmVmZXJlbmNlcyB0byB0aGUgU2tlbGV0b24gTW9kdWxlIGdldCBjaGFuZ2VkJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICc8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIFNrZWxldG9uIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICJBbGxvdyBBZGQiIHByZWZlcmVuY2U7IGJvb2xlYW48L2xpPgo8L3VsPiAKJzsKCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RoaXMgbW9kdWxlIGlzIGEgc2tlbGV0b24gbW9kdWxlIHRoYXQgZG9lcyBub3RoaW5nLic7CiRsYW5nWyd3ZWxjb21lX3RleHQnXSA9ICc8cD5XZWxjb21lIHRvIHRoZSBQZWRhbnRpYyBTa2VsZXRvbiBNb2R1bGUgYWRtaW4gc2VjdGlvbi4gU29tZXRoaW5nIGVsc2Ugd291bGQgcHJvYmFibHkgZ28gaGVyZQppZiB0aGUgbW9kdWxlIGFjdHVhbGx5IGRpZCBzb21ldGhpbmcuIEFkZCBpdCB0byB5b3VyIGZyb250LWVuZCBwYWdlcyB3aXRoIGEge1NrZWxldG9ufTwvcD4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjcsIFNlcCAyMDA5IFNqRywgQ2xlYW5lZCB1cCwgYW5kIG1vZGVybml6ZWQgYSBiaXQuPC9saT4KPGxpPlZlcnNpb24gMS42LCBOb3YgMjAwOCBTakcsIGFkZGVkIHBhcmFtZXRlciBzYW5pdGl6aW5nIGZvciBOdW5vPC9saT4KPGxpPlZlcnNpb24gMS41LCBKdWx5IDIwMDcgU2pHCjx1bD4KICAgPGxpPkFkZGVkIGFjdHVhbCBkYXRhYmFzZSBhcHAuPC9saT4KICAgPGxpPk1hZGUgQWRtaW4gdGFiYmVkIGZvciBpbnRlcmVzdC48L2xpPgogICA8bGk+VXBkYXRlZCBNaW5pbXVtIGFuZCBNYXhpbXVtIENNUyB2ZXJzaW9ucy48L2xpPgo8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjQsIEp1bmUgMjAwNiAoY2FsZ3V5MTAwMCkuIAogIDx1bD4KICAgIDxsaT5SZXBsYWNlZCBEaXNwbGF5QWRtaW5OYXYgd2l0aCBhIHNpbmdsZSB0YWI8L2xpPgogICAgPGxpPlJlcGxhY2VkIGNhbGwgdG8gRG9BY3Rpb24gd2l0aCBhIFJlZGlyZWN0PC9saT4KICAgIDxsaT5DaGFuZ2VkIG1pbmltdW0gY21zIHZlcnNpb24gdG8gMS4wLXN2bjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4zLiBKdW5lIDIwMDYgKHNqZykuIAogIDx1bD4KICAgIDxsaT5TcGxpdCBvdXQgaW5zdGFsbCwgdXBncmFkZSwgYW5kIHVuaW5zdGFsbCBtZXRob2RzPC9saT4KICAgIDxsaT5BZGRlZCBFdmVudHM8L2xpPgogICAgPGxpPkFkZGVkIHJlZmVyZW5jZXMgdG8gcHJldHR5IHVybHMgYW5kIHJvdXRlIHJlZ2lzdHJhdGlvbjwvbGk+CiAgICA8bGk+Y29ycmVjdGVkIGxhbmd1YWdlIGZpbGUgZGlyZWN0b3J5IHN0cnVjdHVyZTwvbGk+CiAgICA8bGk+YWRkZWQgbW9yZSBjb21tZW50czwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4yLiAyOSBEZWNlbWJlciAyMDA1LiBGaXhlcyB0byBidWdzIHBvaW50ZWQgb3V0IGJ5IFBhdHJpY2sgTG9zY2htaWR0LiBVcGRhdGVzIHRvIGJlIGNvcnJlY3QgZm9yIENNUyBNYWRlIFNpbXBsZSB2ZXJzaW9ucyAwLjExLnguPC9saT4KPGxpPlZlcnNpb24gMS4xLiAxMSBTZXB0ZW1iZXIgMjAwNS4gQ2xlYW5lZCB1cCByZWZlcmVuY2VzIHRoYXQgY2F1c2VkIHByb2JsZW1zIGZvciBQSFAgNC40Lnggb3IgNS4wLjUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiA2IEF1Z3VzdCAyMDA1LiBJbml0aWFsIFJlbGVhc2UuPC9saT48L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPk5vdGhpbmcuIEl0XCdzIGRlc2lnbmVkIHRvIGJlIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdSB0byBkZXZlbG9wIHlvdXIgb3duIG1vZHVsZXMuPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+V2VsbCwgeW91IGNvdWxkIGFjdHVhbGx5IGluc3RhbGwgaXQgYnkgcGxhY2luZyB0aGUgbW9kdWxlIGluIGEgcGFnZSBvciB0ZW1wbGF0ZSB1c2luZyB0aGUKc21hcnR5IHRhZyAmIzEyMztjbXNfbW9kdWxlIG1vZHVsZT1cJ1NrZWxldG9uXCd9PC9wPgo8cD5Zb3Ugd291bGQgYmUgd2lzZXIsIGhvd2V2ZXIsIHRvIHVzZSB0aGUgbW9kdWxlIGFzIGEgc3RhcnRpbmcgcG9pbnQsIGFuZCBlZGl0aW5nIHRoZSBjb2RlIHRvIGRvCndoYXRldmVyIGl0IGlzIHlvdSBhcmUgd2FudGluZyB0byBkby48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8iPlNrZWxldG9uIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIFNqRywgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0Cm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFNhbXVlbCBHb2xkc3RlaW4gPGEgaHJlZj0ibWFpbHRvOnNqZ0BjbXNtb2R1bGVzLmNvbSI+Jmx0O3NqZ0BjbXNtb2R1bGVzLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+Cic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuNSwgU2pHCiMgTWV0aG9kOiBJbnN0YWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgogKi8gCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKCi8qKiAKICogQWZ0ZXIgdGhpcywgdGhlIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlCiAqIHdyYXBwZWQgaW4gdGhlIEluc3RhbGwoKSBtZXRob2QgaW4gdGhlIG1vZHVsZSBib2R5LgogKi8KCiRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCi8vIG15c3FsLXNwZWNpZmljLCBidXQgaWdub3JlZCBieSBvdGhlciBkYXRhYmFzZQokdGFib3B0YXJyYXkgPSBhcnJheSggJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nICk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKICAgICAgICAgc2tlbGV0b25faWQgSSBLRVksCgkgZGVzY3JpcHRpb24gQyg4MCkKIjsKCQkJCi8vIGNyZWF0ZSBpdC4gVGhpcyBzaG91bGQgZG8gZXJyb3IgY2hlY2tpbmcsIGJ1dCBJJ20gYSBsYXp5IHNvZC4KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9za2VsZXRvbiIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBjcmVhdGUgYSBzZXF1ZW5jZQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3NrZWxldG9uX3NlcSIpOwoKLy8gY3JlYXRlIGEgcGVybWlzc2lvbgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignVXNlIFNrZWxldG9uJywgJ1VzZSBTa2VsZXRvbicpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignU2V0IFNrZWxldG9uIFByZWZzJywnU2V0IFNrZWxldG9uIFByZWZzJyk7CgovLyBjcmVhdGUgYSBwcmVmZXJlbmNlCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJhbGxvd19hZGQiLCB0cnVlKTsKCi8vIHJlZ2lzdGVyIGFuIGV2ZW50IHRoYXQgdGhlIFNrZWxldG9uIHdpbGwgaXNzdWUuIE90aGVyIG1vZHVsZXMKLy8gb3IgdXNlciB0YWdzIHdpbGwgYmUgYWJsZSB0byBzdWJzY3JpYmUgdG8gdGhpcyBldmVudCwgYW5kIHRyaWdnZXIKLy8gb3RoZXIgYWN0aW9ucyB3aGVuIGl0IGdldHMgY2FsbGVkLgokdGhpcy0+Q3JlYXRlRXZlbnQoICdPblNrZWxldG9uUHJlZmVyZW5jZUNoYW5nZScgKTsKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsIAoJICAgICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKCSAgICAgICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSApOwoKCSAgICAgIAo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuMywgU2pHCiMgTWV0aG9kOiBVbmluc3RhbGwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogRm9yIHNlcGFyYXRlZCBtZXRob2RzLCB5b3UnbGwgYWx3YXlzIHdhbnQgdG8gc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nCiAqIGxpbmUgd2hpY2ggY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQgZnJvbSB0aGUgbW9kdWxlCiAqIEFQSSwgYW5kIHRoYXQgZXZlcnl0aGluZydzIHNhZmUgdG8gY29udGludWU6CiAqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqIAogKiBBZnRlciB0aGlzLCB0aGUgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGNvZGUgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUKICogd3JhcHBlZCBpbiB0aGUgVW5pbnN0YWxsKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgokZGIgPSYgJGdDbXMtPkdldERiKCk7CgovLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9za2VsZXRvbiIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gcmVtb3ZlIHRoZSBzZXF1ZW5jZQokZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2tlbGV0b25fc2VxIiApOwoKLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignVXNlIFNrZWxldG9uJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdTZXQgU2tlbGV0b24gUHJlZnMnKTsKCi8vIHJlbW92ZSB0aGUgcHJlZmVyZW5jZQokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiYWxsb3dfYWRkIik7CgovLyByZW1vdmUgdGhlIGV2ZW50CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJyApOwoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuNSwgU2pHCiMgTWV0aG9kOiBVcGdyYWRlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgoqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqCiAqIEFmdGVyIHRoaXMsIHRoZSBjb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQogKiB3cmFwcGVkIGluIHRoZSBVcGdyYWRlKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CnN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQp7CiAgLy8gd2UgYXJlIG5vdyAxLjAgYW5kIHdhbnQgdG8gdXBncmFkZSB0byBsYXRlc3QKIGNhc2UgIjEuMCI6CiAgIC8vZG8gbWFnaWMKIGNhc2UgIjEuMSI6CiAgIC8vYW5kIHRoaXMgaXMgaGVyZSBmb3IgdGhlIG5leHQgdmVyc2lvbgogY2FzZSAiMS4yIjoKIGNhc2UgIjEuMyI6CiBjYXNlICIxLjQiOgogY2FzZSAiMS41IjoKIGNhc2UgIjEuNiI6CiBjYXNlICIxLjciOgp9CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygndXBncmFkZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7CgovL25vdGU6IG1vZHVsZSBhcGkgaGFuZGxlcyBzZW5kaW5nIGdlbmVyaWMgZXZlbnQgb2YgbW9kdWxlIHVwZ3JhZGVkIGhlcmUKPz4=]]></data>
	</file>
	<file>
	  <filename>/Skeleton.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqCiAqICBOT1RFUyBGT1IgVEhFIEFTUElSSU5HLCBVTkVYUEVSSUVOQ0VELCBPUiBGT1JHRVRGVUwgTU9EVUxFIERFVkVMT1BFUgogKgogKiBBcyBvbmUgb2YgdGhlIGxhdHRlciwgSSBwdXQgdG9nZXRoZXIgdGhlc2Ugbm90ZXMgdG8gaGVscCBtZSB3aGVuIEkgbmVlZAogKiB0byBzdGFydCB3b3JrIG9uIGEgbmV3IG1vZHVsZS4gSSB0YWtlIHRoaXMgU2tlbGV0b24gZmlsZSwgZGVsZXRlIG1vc3Qgb2YKICogdGhlIGNvbW1lbnRzLCBhbmQgY3VzdG9taXplIGl0IHRvIGRvIHdoYXRldmVyIGl0IGlzIEkgbmVlZCBkb25lLgogKgogKiBLZWVwIGluIG1pbmQgdGhhdCB0aGUgbW9kdWxlIGludGVyZmFjZSBoYXMgYSBodWdlIG51bWJlciBvZiBob29rcwogKiBhdmFpbGFibGUgdG8gY29udHJvbCBtYW55LCBtYW55IGFzcGVjdHMgb2YgaG93IENNUyBNYWRlIFNpbXBsZSB3b3Jrcy4KICogVGhpcyBtb2R1bGUgZG9lcyBub3QgZXZlbiBiZWdpbiB0byBzY3JhdGNoIHRoZSBzdXJmYWNlLCBleGNlcHQsCiAqIHBlcmhhcHMsIGFzIGFuIGV4YW1wbGUgb2YgYSAicGx1Zy1pbiIgdHlwZSBtb2R1bGUuIFRoZXJlIGFyZQogKiBtYW55IGZ1bmN0aW9uYWwgaG9va3MgZm9yIG1vZGlmeWluZyB1c2VycywgZ3JvdXBzLCBjb250ZW50LCB0ZW1wbGF0ZXMsCiAqIGdsb2JhbCBjb250ZW50IGJsb2Nrcywgb24gaW5zZXJ0aW9uLCBkZWxldGlvbiwgY2hhbmdlLCBhbmQgbXVjaCwgbXVjaCBtb3JlLgogKiBGb3IgdGhlIGRlZmluaXRpdmUgbGlzdCBvZiB0aGVzZSBmdW5jdGlvbnMsIGxvb2sgYXQgdGhlIGJhc2UgY2xhc3M6CiAqIAogKiBDTVNfUk9PVC9saWIvY2xhc3Nlcy9jbGFzcy5tb2R1bGUuaW5jLnBocAogKiAKICogSXQncyBnb29kIHJlYWRpbicsIGFuZCBpdCB0ZWxscyB5b3UgZXZlcnl0aGluZyB5b3UgbmVlZCB0byBrbm93LiBJCiAqIGxlYXJuIHNvbWV0aGluZyBuZXcgZXZlcnkgdGltZSBJIGxvb2sgYXQgaXQuCiAqIAogKiBGdXJ0aGVybW9yZSwgd2hlbiB0aGlzIFNrZWxldG9uIG1vZHVsZSB3YXMgc3RhcnRlZCwgdGhlcmUgd2FzIGEgcGF1Y2l0eQogKiBvZiBkb2N1bWVudGF0aW9uIG9uIHRoZSBDTVMgTWFkZSBTaW1wbGUgc2l0ZS4gVGhpcyBpcyBubyBsb25nZXIgdGhlCiAqIGNhc2UuIEF1dG9tYXRpYyBBUEkgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQKICogaHR0cDovL2Ntc21hZGVzaW1wbGUub3JnL2FwaWRvYy9DTVMvQ01TTW9kdWxlLmh0bWwKICoKICogQWxzbywgYSBjb250aW51b3VzbHkgaW1wcm92aW5nIGRvY3VtZW50YXRpb24gcHJvamVjdCBjYW4gYmUgZm91bmQKICogYXQgaHR0cDovL3dpa2kuY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL0NyZWF0aW5nX01vZHVsZXMKICogCiAqIDEuIERpcmVjdG9yeSBTdHJ1Y3R1cmUKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiAKICogVW5kZXJuZWF0aCB0aGlzIGN1cnJlbnQgZGlyZWN0b3J5LCB0aGVyZSBhcmUgImxhbmciIGFuZCAidGVtcGxhdGVzIgogKiBkaXJlY3Rvcmllcy4gVGhlIG1hZ2ljIG9mIHRoZSBDTVMgbW9kdWxlIGludGVyZmFjZSBzeXN0ZW0gaXMgc3VjaAogKiB0aGF0IGZpbGVzIHdpdGhpbiB0aG9zZSBkaXJlY3RvcmllcyBhcmUgYXV0b21hdGljYWxseSBhdmFpbGFibGUgdG8KICogeW91ciBtb2R1bGUsIHBhcnRpY3VsYXJseSB3aGVuIGl0IGNvbWVzIHRvIGxvY2FsaXphdGlvbiBhbmQKICogc21hcnR5IHRlbXBsYXRlcy4KICogCiAqIDIuIExvY2FsaXphdGlvbgogKiAtLS0tLS0tLS0tLS0tLS0KICogCiAqIEluIHRoZSAibGFuZyIgZGlyZWN0b3J5LCB5b3UgY2FuIGNyZWF0ZSB5b3VyIGxhbmd1YWdlIGZpbGVzLgogKiBOb3RlIHRoYXQgdGhlIG5ld2VzdCBzdHJ1Y3R1cmUgaW52b2x2ZXMgYSBkaXJlY3RvcnkgcGVyIGxhbmd1YWdlLAogKiB3aXRoIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGluIHRoZSB0b3AgbGV2ZWwsIHNvLCBmb3IgZXhhbXBsZSwKICogaWYgeW91J3JlIHdyaXRpbmcgdGhlIG1vZHVsZSBpbiBVUyBFbmdsaXNoLCB5b3VyIFVTIEVuZ2xpc2gKICogbGFuZ3VhZ2UgZmlsZXMgd291bGQgYmUgaW4gbGFuZy9lbl9VUy5waHAsIHdoaWxlIHlvdXIKICogU3dlZGlzaCBsYW5ndWFnZSBmaWxlcyB3b3VsZCBiZSBpbiBsYW5nL2V4dC9zdl9TRS5waHAuCiAqIAogKiBSZWFkIG1vcmUgYWJvdXQgbG9jYWxpemF0aW9uIGF0CiAqIGh0dHA6Ly93aWtpLmNtc21hZGVzaW1wbGUub3JnL2luZGV4LnBocC9DcmVhdGluZ19Nb2R1bGVzI0VuYWJsZV90cmFuc2xhdGlvbnNfZnJvbV90aGVfVHJhbnNsYXRpb25fQ2VudGVyCiAqIAogKiBGb3IgZWFjaCBsb2NhbGl6ZWQgd29yZCwgY3JlYXRlIGFuIGVudHJ5IGluIHRoYXQgZmlsZSBvZiB0aGUgZm9ybToKICogCiAqICRsYW5nWyd3b3JkJ10gPSAnTG9jYWxpemVkIFZlcnNpb24gb2YgV29yZCc7CiAqIAogKiBOb3csIHdpdGhpbmcgeW91ciBtb2R1bGUsIGFueSB0aW1lIHlvdSB3YW50IGEgbG9jYWxpemVkIHZlcnNpb24gb2YgdGhlCiAqIHdvcmQsIHlvdSBzaW1wbHkgcmVmZXIgdG86CiAqCiAqICR0aGlzLT5MYW5nKCd3b3JkJykKICogCiAqIFN1YnN0aXR1dGlvbiBpcyBhbHNvIHBvc3NpYmxlIGZvciB5b3VyIGxvY2FsaXplZCBwaHJhc2UuIFNheSB5b3Ugd2FudCB0bwogKiBpbmNsdWRlIGEgbnVtYmVyIGluIGEgc3RyaW5nLiBZb3UgY291bGQgdGhlbiB1c2Ugc3ludGF4IGxpa2U6CiAqIAogKiAkbGFuZ1snbnVtYmVyX3BocmFzZSddID0gJ0xvY2FsaXplZCBWZXJzaW9uIGhhcyAlcyBudW1iZXJzLic7CiAqIAogKiBhbmQgaW4geW91ciBjb2RlLCByZWZlciB0byAKICogCiAqICR0aGlzLT5MYW5nKCdudW1iZXJfcGhyYXNlJywgJG51bWJlcikKICogCiAqIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgJG51bWJlciB3aWxsIHJlcGxhY2UgdGhlICVzIGluCiAqIHRoZSBsb2NhbGl6ZWQgc3RyaW5nLgogKiAKICogMy4gVGVtcGxhdGVzCiAqIC0tLS0tLS0tLS0tLQogKiAKICogU21hcnR5IGlzIGJ1aWx0LWluIHRvIHRoZSBtb2R1bGUgQVBJLiBUZW1wbGF0ZXMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlCiAqICJ0ZW1wbGF0ZXMiIGRpcmVjdG9yeSBvZiB0aGUgbW9kdWxlLiBTZWUgdGhlIERpc3BsYXlBZG1pblByZWZzIG1ldGhvZAogKiBiZWxvdyAob3IgdGhlIGZpbGUgbWV0aG9kLmFkbWluX3ByZWZzLnBocCkuCiAqIAogKiBOb3dhZGF5cyBpdHMgYmV0dGVyIHRvIGNyZWF0ZSB0ZW1wbGF0ZXMgaW4gdGhlIGRhdGFiYXNlIHNvIHlvdSBjYW4gZ2l2ZQogKiB1c2VycyB0aGUgYWJpbGl0eSB0byBtb2RpZnkgdGVtcGxhdGVzIGFzIHRoZXkgd2lzaC4gVGFrZSBhIGxvb2sgYXQgTmV3cwogKiBtb2R1bGUgdG8gZ2V0IHBpY3R1cmUgb2YgaG93IGl0cyBkb25lLgogKiAKICogNC4gQWRtaW4gSWNvbnMKICogLS0tLS0tLS0tLS0tLS0KICogCiAqIElmIHlvdXIgbW9kdWxlIGhhcyBhbiBBZG1pbiBwYW5lbCwgYW5kIHlvdSdkIGxpa2UgdG8gZ2l2ZSBpdCBhIGN1c3RvbQogKiBpY29uLCBzaW1wbHkgY3JlYXRlIGEgZGlyZWN0b3J5IGNhbGxlZCAiaW1hZ2VzIiBhbmQgcGxhY2UgeW91ciBpY29uIGluCiAqIHRoYXQgZGlyZWN0b3J5IHdpdGggdGhlIG5hbWUgImljb24uZ2lmIiBUaGlzIGlzIG9ubHkgZ3VhcmFudGVlZCB0byB3b3JrCiAqIHdpdGggdGhlIGRlZmF1bHQgYWRtaW4gdGhlbWUuCiAqIAogKiA1LiBTZXBhcmF0aW9uIG9mIEZpbGVzCiAqIC0tLS0tLS0tLS0tLS0tCiAqIAogKiBXaXRoIHRoZSByZWxlYXNlIG9mIENNUyBNYWRlIFNpbXBsZSAwLjEyIG9yIHRoZXJlYWJvdXRzLCBpdCBiZWNhbWUKICogcG9zc2libGUgdG8gc3BsaXQgYSBsb3Qgb2YgdGhlIG1vZHVsZSBmdW5jdGlvbmFsaXR5IGludG8gc2VwYXJhdGUgZmlsZXMsIHJhdGhlcgogKiB0aGFuIHJlcXVpcmluZyBhbGwgb2YgdGhlIG1vZHVsZSB0byBiZSBpbXBsZW1lbnRlZCBpbiBvbmUgYmlnIG1vbm9saXRoaWMKICogY2h1bmsuIFRoaXMgcmVkdWNlcyB0aGUgb3ZlcmFsbCBtZW1vcnkgZm9vdHByaW50IG9mIHRoZSBtb2R1bGUsIHdoaWNoCiAqIGJlY29tZXMgaW1wb3J0YW50IGZvciBodWdlIG1vZHVsZXMuCiAqIAogKiBUaGlzIGlzIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBiZWxvdyBpbiB0aGUgU2VwYXJhYmxlIE1ldGhvZHMgY29tbWVudAogKiBhcyB3ZWxsIGFzIHRoZSBjb21tZW50IGZvciB0aGUgRG9BY3Rpb24uCiAqIAogKiBOb3RlIHRoYXQgeW91IGRvIG5vdCBoYXZlIHRvIHNwbGl0IHlvdXIgbW9kdWxlIGludG8gbXVsdGlwbGUgZmlsZXMuIEl0J3MKICogeW91ciBjaG9pY2UhIElmIHlvdXIgbW9kdWxlIGlzIHNtYWxsLCBpdCdzIHByb2JhYmx5IG5vdCBuZWNlc3NhcnkuIFRoZW4gYWdhaW4sCiAqIGdvb2QgY29kaW5nIChmb3IgYSBub25jb21waWxlZCBsYW5ndWFnZSwgYW55d2F5KSBzdWdnZXN0cyB0aGF0IHlvdSBkb24ndAogKiBpbmNsdWRlIGEgYnVuY2ggb2YgZXh0cmFuZW91cyBjb2RlIGVhY2ggdGltZSB5b3VyIG1vZHVsZSBsb2Fkcy4gSW4gdGhlCiAqIGVuZCwgaXQncyB5b3VyIGNhbGwuCiAqIAogKiA2LiBFdmVudHMgLyBFdmVudCBIb29rcwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiAKICogVGhpcyBpcyBhbiBleGNpdGluZyBuZXcgZmVhdHVyZSB0aGF0J3MgYmVlbiBhZGRlZCB0byB0aGUgQ01TIE1hZGUgU2ltcGxlCiAqIGNvcmUuIEl0IGFsbG93cyBtb2R1bGVzIHRvIGNyZWF0IGV2ZW50cywgaXNzdWUgZXZlbnRzLCBhbmQgc3Vic2NyaWJlIHRvCiAqIGV2ZW50cy4gV2hhdCB0aGlzIGRvZXMgaXMgZW5hYmxlIGFuIHVucHJlY2VkZW50ZWQgZGVncmVlIG9mIGZsZXhpYmlsaXR5CiAqIGFuZCBpbnRlcmFjdGlvbiBiZXR3ZWVuIG1vZHVsZXMuIFlvdSdsbCBzZWUgZWxlbWVudHMgb2YgdGhpcyBzcHJpbmtsZWQKICogdGhyb3VnaG91dCB0aGlzIGZpbGUuCiAqIAogKiA3LiBJbnB1dCBwYXJhbWV0ZXIgc2FuaXRpemluZwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiAKICogU3RhcnRpbmcgZnJvbSAxLjEgdmVyc2lvbiBvZiBDTVNNUyBtb2R1bGUgZGV2ZWxvcGVycyBhcmUgdXJnZWQgdG8gdGFrZSBjbG9zZXIKICogbG9vayBvZiB3aGF0IHBhcmFtZXRlcnMgdGhlaXIgbW9kdWxlIGFjY2VwdHMgYW5kIGhvdyB0aGV5IGFyZSBzYW5pdGl6ZWQuCiAqIAogKiBGZXcgbmV3IEFQSSBmdW5jdGlvbnMgYXJlIGludHJvZHVjZWQsIGFsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBtYXBwZWQgZm9yCiAqIGV2ZXJ5dGhpbmcgdG8gd29yayBzbW9vdGhseS4gVXNlICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwYXJhbW5hbWUnLFRZUEUpOyAKICogdG8gY2xlYW4geW91ciBpbnB1dCBwYXJhbWV0ZXJzIChwb3NzaWJsZSB0eXBlcyBhcmUgQ0xFQU5fSU5ULCBDTEVBTl9TVFJJTkcsCiAqIENMRUFOX0ZMT0FULCBDTEVBTl9TVFJJTkcpCiAqLwoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBTa2VsZXRvbiAtIGEgcGVkYW50aWMgInN0YXJ0aW5nIHBvaW50IiBtb2R1bGUKIyBWZXJzaW9uOiAxLjQsIFNqRwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiAqIFlvdXIgaW5pdGlhbCBDbGFzcyBkZWNsYXJhdGlvbi4gVGhpcyBmaWxlJ3MgbmFtZSBtdXN0CiAqIGJlICJbY2xhc3MncyBuYW1lXS5tb2R1bGUucGhwIiwgb3IsIGluIHRoaXMgY2FzZSwKICogU2tlbGV0b24ubW9kdWxlLnBocAogKi8gCgoKLyoqCiAqIFNrZWxldG9uIGV4YW1wbGUgY2xhc3MKICoKICogQGF1dGhvciBZb3VyIE5hbWUKICogQHNpbmNlIDEuMAogKiBAdmVyc2lvbiAkUmV2aXNpb246IDM4MjcgJAogKiBAbW9kaWZpZWRieSAkTGFzdENoYW5nZWRCeTogd2lzaHkgJAogKiBAbGFzdG1vZGlmaWVkICREYXRlOiAyMDA3LTAzLTEyIDExOjU2OjE2ICswMjAwIChNb24sIDEyIE1hciAyMDA3KSAkCiAqIEBsaWNlbnNlIEdQTAogKiovCmNsYXNzIFNrZWxldG9uIGV4dGVuZHMgQ01TTW9kdWxlCnsKICAKICAvKioKICAgKiBHZXROYW1lKCkKICAgKiBtdXN0IHJldHVybiB0aGUgZXhhY3QgY2xhc3MgbmFtZSBvZiB0aGUgbW9kdWxlLgogICAqIElmIHRoZXNlIGRvIG5vdCBtYXRjaCwgYmFkIHRoaW5ncyBoYXBwZW4uCiAgICoKICAgKiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQncyBzaG93biBpbiB0aGUgbWFpbiBNb2R1bGVzCiAgICogcGFnZSBpbiB0aGUgQWRtaW4uCiAgICoKICAgKiBJZiB5b3Ugd2FudCB0byBiZSBzYWZlLCB5b3UgY2FuIGp1c3QgcmVwbGFjZSB0aGUgYm9keQogICAqIG9mIHRoaXMgZnVuY3Rpb24gd2l0aDoKICAgKiByZXR1cm4gZ2V0X2NsYXNzKCR0aGlzKTsgCiAgICogQHJldHVybiBzdHJpbmcgY2xhc3MgbmFtZQogICAqLwogIGZ1bmN0aW9uIEdldE5hbWUoKQogIHsKICAgIHJldHVybiAnU2tlbGV0b24nOwogIH0KICAKICAvKioKICAgKiBHZXRGcmllbmRseU5hbWUoKQogICAqIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUKICAgKiBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQncyBzaG93biBpbiB0aGUKICAgKiBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4KICAgKiBjb21wb25lbnQpLgogICAqICAgCiAgICogU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgKiBAcmV0dXJuIHN0cmluZyBGcmllbmRseSBuYW1lIGZvciB0aGUgbW9kdWxlCiAgICovCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCiAgCiAgLyoqCiAgICogR2V0VmVyc2lvbigpCiAgICogVGhpcyBjYW4gcmV0dXJuIGFueSBzdHJpbmcsIHByZWZlcmFibHkgYSBudW1iZXIgb3IKICAgKiBzb21ldGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBmb3IgZGVzaWduYXRpbmcgYSB2ZXJzaW9uLgogICAqIFRoZSBDTVMgd2lsbCB1c2UgdGhpcyB0byBpZGVudGlmeSB3aGV0aGVyIG9yIG5vdAogICAqIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgbW9kdWxlIGlzIGN1cnJlbnQsIGFuZAogICAqIHRoZSBtb2R1bGUgd2lsbCB1c2UgaXQgdG8gZmlndXJlIG91dCBob3cgdG8gdXBncmFkZQogICAqIGl0c2VsZiBpZiByZXF1ZXN0ZWQuCSAgIAogICAqIEByZXR1cm4gc3RyaW5nIHZlcnNpb24gbnVtYmVyIChjYW4gYmUgc29tZXRoaW5nIGxpa2UgMS40cmMxKQogICAqLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS43JzsKICB9CiAgCiAgLyoqCiAgICogR2V0SGVscCgpCiAgICogVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4KICAgKiBUeXBpY2FsbHksIHlvdSdsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvCiAgICogdXNlIHRoZSBtb2R1bGUuCiAgICoKICAgKiBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgogICAqIEByZXR1cm4gc3RyaW5nIEhlbHAgZm9yIHRoaXMgbW9kdWxlCiAgICovCiAgZnVuY3Rpb24gR2V0SGVscCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgfQogIAogIC8qKgogICAqIEdldEF1dGhvcigpCiAgICogVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUKICAgKiBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4KICAgKiBAcmV0dXJuIHN0cmluZyBBdXRob3IgbmFtZQogICAqLwogIGZ1bmN0aW9uIEdldEF1dGhvcigpCiAgewogICAgcmV0dXJuICdTakcnOwogIH0KCiAgLyoqCiAgICogR2V0QXV0aG9yRW1haWwoKQogICAqIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgTW9kdWxlCiAgICogQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzCiAgICogb2YgeW91ciBtb2R1bGUgZ2V0IGluIHRvdWNoIHdpdGggeW91IHRvIHNlbmQgYnVnIHJlcG9ydHMsCiAgICogcXVlc3Rpb25zLCBjYXNlcyBvZiBiZWVyLCBhbmQvb3IgbGFyZ2Ugc3VtcyBvZiBtb25leS4KICAgKiBAcmV0dXJuIHN0cmluZyBBdXRob3JzIGVtYWlsCiAgICovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnc2pnQGNtc21vZHVsZXMuY29tJzsKICB9CiAgCiAgLyoqCiAgICogR2V0Q2hhbmdlTG9nKCkKICAgKiBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZHVsZQogICAqIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgQWJvdXQgbGluay4gSXQgaGVscHMgdXNlcnMKICAgKiBmaWd1cmUgb3V0IHdoYXQncyBjaGFuZ2VkIGJldHdlZW4gcmVsZWFzZXMuCiAgICogU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgKiBAcmV0dXJuIHN0cmluZyBDaGFuZ2VMb2cgZm9yIHRoaXMgbW9kdWxlCiAgICovCiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwogIH0KICAKICAvKioKICAgKiBJc1BsdWdpbk1vZHVsZSgpCiAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyB1cG9uCiAgICogd2hldGhlciB1c2VycyBjYW4gaW5jbHVkZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvcgogICAqIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQogICAqIHtTa2VsZXRvbiBwYXJhbTE9dmFsLi4ufQogICAqIAogICAqIElmIHlvdXIgbW9kdWxlIGRvZXMgbm90IGdldCBpbmNsdWRlZCBpbiBwYWdlcyBvcgogICAqIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4KICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0aGlzIG1vZHVsZSBjYW4gYmUgaW5jbHVkZWQgaW4gcGFnZSBhbmQgb3IgdGVtcGxhdGUKICAgKi8KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvKioKICAgKiBIYXNBZG1pbigpCiAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSwgZGVwZW5kaW5nIG9uCiAgICogd2hldGhlciB5b3VyIG1vZHVsZSBhZGRzIGFueXRoaW5nIHRvIHRoZSBBZG1pbiBhcmVhIG9mCiAgICogdGhlIHNpdGUuIEZvciB0aGUgcmVzdCBvZiB0aGVzZSBjb21tZW50cywgSSdsbCBiZSBjYWxsaW5nCiAgICogdGhlIGFkbWluIHBhcnQgb2YgeW91ciBtb2R1bGUgdGhlICJBZG1pbiBQYW5lbCIgZm9yCiAgICogd2FudCBvZiBhIGJldHRlciB0ZXJtLgogICAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIHRoaXMgbW9kdWxlIGhhcyBhZG1pbiBhcmVhCiAgICovCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyoqCiAgICogR2V0QWRtaW5TZWN0aW9uKCkKICAgKiBJZiB5b3VyIG1vZHVsZSBoYXMgYW4gQWRtaW4gUGFuZWwsIHlvdSBjYW4gc3BlY2lmeQogICAqIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cwogICAqIHVwIGluLiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHRvIHNwZWNpZnkgdGhhdAogICAqIHNlY3Rpb24uIFZhbGlkIHJldHVybiB2YWx1ZXMgYXJlOgogICAqIAogICAqIG1haW4gICAgICAgIC0gdGhlIE1haW4gbWVudSB0YWIuCiAgICogY29udGVudCAgICAgLSB0aGUgQ29udGVudCBtZW51CiAgICogbGF5b3V0ICAgICAgLSB0aGUgTGF5b3V0IG1lbnUKICAgKiB1c2Vyc2dyb3VwcyAtIHRoZSBVc2VycyBhbmQgR3JvdXBzIG1lbnUKICAgKiBleHRlbnNpb25zICAtIHRoZSBFeHRlbnNpb25zIG1lbnUgKHRoaXMgaXMgdGhlIGRlZmF1bHQpCiAgICogc2l0ZWFkbWluICAgLSB0aGUgU2l0ZSBBZG1pbiBtZW51CiAgICogdmlld3NpdGUgICAgLSB0aGUgVmlldyBTaXRlIG1lbnUgdGFiCiAgICogbG9nb3V0ICAgICAgLSB0aGUgTG9nb3V0IG1lbnUgdGFiCiAgICoKICAgKiBOb3RlIHRoYXQgaWYgeW91IHBsYWNlIHlvdXIgbW9kdWxlIGluIHRoZSBtYWluLAogICAqIHZpZXdzaXRlLCBvciBsb2dvdXQgc2VjdGlvbnMsIGl0IHdpbGwgc2hvdyB1cCBpbiB0aGUKICAgKiBtZW51cywgYnV0IHdpbGwgbm90IGJlIHZpc2libGUgaW4gYW55IHRvcC1sZXZlbAogICAqIHNlY3Rpb24gcGFnZXMuCiAgICogQHJldHVybiBzdHJpbmcgV2hpY2ggYWRtaW4gc2VjdGlvbiB0aGlzIG1vZHVsZSBiZWxvbmdzIHRvCiAgICovCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKICB7CiAgICByZXR1cm4gJ2V4dGVuc2lvbnMnOwogIH0KCiAgLyoqCiAgICogR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgICogSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKICAgKiBjYW4gaGF2ZSBpdCByZXR1cm4gYSBkZXNjcmlwdGlvbiBzdHJpbmcgdGhhdCBnZXRzIHNob3duCiAgICogaW4gdGhlIEFkbWluIFNlY3Rpb24gcGFnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUuCiAgICoKICAgKiBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgogICAqIEByZXR1cm4gc3RyaW5nIE1vZHVsZSBkZXNjcmlwdGlvbgogICAqLwogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsKICB9CgogIC8qKgogICAqIFZpc2libGVUb0FkbWluVXNlcigpCiAgICogSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKICAgKiBjYW4gY29udHJvbCB3aGV0aGVyIG9yIG5vdCBpdCdzIGRpc3BsYXllZCBieSB0aGUgYm9vbGVhbgogICAqIHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQKICAgKiB0byBoaWRlIG1vZHVsZXMgZnJvbSBhZG1pbnMgd2hvIGxhY2sgcGVybWlzc2lvbiB0byB1c2UKICAgKiB0aGVtLgogICAqIEluIHRoaXMgY2FzZSwgdGhlIG1vZHVsZSB3aWxsIG9ubHkgYmUgdmlzaWJsZSB0byBhZG1pbnMKICAgKiB3aG8gaGF2ZSAiVXNlIFNrZWxldG9uIiBwZXJtaXNzaW9ucy4KICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0aGlzIG1vZHVsZSBpcyBzaG93biB0byBjdXJyZW50IHVzZXIKICAgKi8KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgU2tlbGV0b24nKTsKICB9CiAgCiAgLyoqCiAgICogR2V0RGFzaGJvYXJkT3V0cHV0KCkKICAgKiBBIGNhcGFiaWxpdHkgb2YgbW9kdWxlcyB0aGF0IGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIENNU01TIDEuNi54CiAgICogaXMgdG8gb3V0cHV0IG5vdGljZXMgdG8gdGhlIGluaXRpYWwgRGFzaGJvYXJkIHBhZ2Ugb2YgdGhlIEFkbWluIGFyZWEuCiAgICogWW91IGNvdWxkIHVzZSB0aGlzIHRvIHBvc3QgYW55IGtpbmQgb2Ygbm90aWZpY2F0aW9uLgogICAqCiAgICogVGhpcyBleGFtcGxlIHBvc3RzIHRoZSBudW1iZXIgb2YgZGF0YWJhc2UgcmVjb3JkcyB0aGF0CiAgICogaGF2ZSBiZWVuIGFkZGVkIHZpYSB0aGUgbW9kdWxlLgogICAqCiAgICogQHJldHVybiBzdHJpbmcgZGFzaGJvYXJkIG91dHB1dAogICAqLwogIGZ1bmN0aW9uIEdldERhc2hib2FyZE91dHB1dCgpIAogIHsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9ICYkZ0Ntcy0+R2V0RGIoKTsKCgkkcmNvdW50ID0gJGRiLT5HZXRPbmUoJ3NlbGVjdCBjb3VudCgqKSBmcm9tICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2tlbGV0b24nKTsKCQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdkYXNoX3JlY29yZF9jb3VudCcsJHJjb3VudCk7CiAgfQoKICAvKioKICAgKiBJbiB0aGUgQWRtaW4gQXJlYSwgdGhlcmUgYXJlIG5vdGljZXMgd2hpY2ggY2FuIGJlIGRpc3BsYXllZCB0byB0aGUgYWRtaW4gdXNlci4KICAgKiBUaGVzZSB0ZW5kIHRvIGJlIGZvciBoaWdoLXByaW9yaXR5IG5vdGljZXMsIGxpa2UgdmVyc2lvbiB1cGdyYWRlcywgc2VjdXJpdHkgaXNzdWVzLAogICAqIHVuLWNvbmZpZ3VyZWQgbW9kdWxlcywgZXRjLgogICAqIFRoZXNlIG5vdGljZXMgYXJlIGFzc2lnbmVkIGEgcHJpb3JpdHkgZnJvbSAxIHRvIDMsIHdpdGggMSBiZWluZyB0aGUgaGlnaGVzdC4KICAgKiAocHJpb3JpdHkgZmlsdGVyaW5nIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLCBidXQgd2lsbCBiZSkuCiAgICogTm90aWNlcyBzaG91bGQgYmUgdXNlZCB2ZXJ5IHNwYXJpbmdseSwgYXMgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGFsZXJ0cywgdGhlIHVzZXIKICAgKiB3aWxsIHN0b3AgcGF5aW5nIGF0dGVudGlvbi4KICAgKiBUaGF0IGJlaW5nIHNhaWQsIHRoaXMgZXhhbXBsZSB3aWxsIHBvc3QgYW4gYWxlcnQgdW50aWwgc29tZW9uZSBhZGRzIGEgcmVjb3JkcwogICAqIHVzaW5nIHRoZSBTa2VsZXRvbiBNb2R1bGUuCiAgICogCiAgICogQHJldHVybnMgYSBzdGRDbGFzcyBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllcy4uLi4gcHJpb3JpdHkgKDEtPjMpLi4uIGFuZAogICAqIGh0bWwsIHdoaWNoIGluZGljYXRlcyB0aGUgdGV4dCB0byBkaXNwbGF5IGZvciB0aGUgTm90aWZpY2F0aW9uLgogICAqLwogIGZ1bmN0aW9uIEdldE5vdGlmaWNhdGlvbk91dHB1dCgkcHJpb3JpdHk9MikgCiAgewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gJiRnQ21zLT5HZXREYigpOwoJJHJjb3VudCA9ICRkYi0+R2V0T25lKCdzZWxlY3QgY291bnQoKikgZnJvbSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3NrZWxldG9uJyk7CiAgICBpZiAoJHByaW9yaXR5IDwgNCAmJiAkcmNvdW50ID09IDAgKQogICAgICB7CgkgICRyZXQgPSBuZXcgc3RkQ2xhc3M7CgkgICRyZXQtPnByaW9yaXR5ID0gMjsKCSAgJHJldC0+aHRtbD0kdGhpcy0+TGFuZygnYWxlcnRfbm9fcmVjb3JkcycpOwoJICByZXR1cm4gJHJldDsKICAgICAgfSAgCglyZXR1cm4gJyc7CiAgfQoKICAvKioKICAgKiBHZXREZXBlbmRlbmNpZXMoKQogICAqIFlvdXIgbW9kdWxlIG1heSBuZWVkIGFub3RoZXIgbW9kdWxlIHRvIGFscmVhZHkgYmUgaW5zdGFsbGVkCiAgICogYmVmb3JlIHlvdSBjYW4gaW5zdGFsbCBpdC4KICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kCiAgICogbWluaW11bSB2ZXJzaW9uIG51bWJlcnMgdGhhdCB0aGlzIG1vZHVsZSByZXF1aXJlcy4KICAgKgogICAqIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuCiAgICogcmV0dXJuIGFycmF5KCdzb21lbW9kdWxlJz0+JzEuMCcsICdvdGhlcm1vZHVsZSc9PicxLjEnKTsKICAgKiBAcmV0dXJuIGhhc2ggSGFzaCBvZiBvdGhlciBtb2R1bGVzIHRoaXMgbW9kdWxlIGRlcGVuZHMgb24KICAgKi8KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogIHsKICAgIHJldHVybiBhcnJheSgpOwogIH0KCiAgLyoqCiAgICogTWluaW11bUNNU1ZlcnNpb24oKQogICAqIFlvdXIgbW9kdWxlIG1heSByZXF1aXJlIGZ1bmN0aW9ucyBvciBvYmplY3RzIGZyb20KICAgKiBhIHNwZWNpZmljIHZlcnNpb24gb2YgQ01TIE1hZGUgU2ltcGxlLgogICAqIEV2ZXIgc2luY2UgdmVyc2lvbiAwLjExLCB5b3UgY2FuIHNwZWNpZnkgd2hpY2ggbWluaW11bQogICAqIENNUyBNUyB2ZXJzaW9uIGlzIHJlcXVpcmVkIGZvciB5b3VyIG1vZHVsZSwgd2hpY2ggd2lsbAogICAqIHByZXZlbnQgaXQgZnJvbSBiZWluZyBpbnN0YWxsZWQgYnkgYSB2ZXJzaW9uIG9mIENNUyB0aGF0CiAgICogY2FuJ3QgcnVuIGl0LgogICAqIAogICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQogICAqIG1pbmltdW0gdmVyc2lvbiB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLgogICAqIEByZXR1cm4gc3RyaW5nIE1pbmltdW0gY21zIHZlcnNpb24gdGhpcyBtb2R1bGUgc2hvdWxkIHdvcmsgb24KICAgKi8KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCiAgewogICAgcmV0dXJuICIxLjAiOwogIH0KICAKICAvKioKICAgKiBNYXhpbXVtQ01TVmVyc2lvbigpCiAgICogWW91IG1heSB3YW50IHRvIHByZXZlbnQgcGVvcGxlIGZyb20gdXNpbmcgeW91ciBtb2R1bGUgaW4KICAgKiBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQogICAqIHRoaW5rIEFQSSBmZWF0dXJlcyB5b3UgdXNlIG1heSBjaGFuZ2UgLS0gYWZ0ZXIgYWxsLCB5b3UKICAgKiBuZXZlciByZWFsbHkga25vdyBob3cgdGhlIENNUyBNUyBBUEkgY291bGQgZXZvbHZlLgogICAqIAogICAqIFNvLCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIGZsb29kaW5nIHlvdSB3aXRoIGJ1ZyByZXBvcnRzCiAgICogd2hlbiBhIG5ldyB2ZXJzaW9uIG9mIENNUyBNUyBpcyByZWxlYXNlZCwgeW91IGNhbiBzaW1wbHkKICAgKiByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UKICAgKiB0byByZWxlYXNlIGEgbmV3IHZlcnNpb24gb2YgeW91ciBtb2R1bGUgd2hlbiBhIG5ldyB2ZXJzaW9uCiAgICogb2YgdGhlIENNUyBpcyByZWxlYXNlZC4uLgogICAqIAogICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQogICAqIG1heGltdW0gdmVyc2lvbiB0aGF0IHRoaXMgbW9kdWxlIHN1cHBvcnRzLgogICAqCiAgICogSXQgY2FuIGFsc28gYmUgYSBtYWpvciBwYWluIGlmIHlvdSBkb24ndCBoYXZlIHRpbWUgdG8KICAgKiB1cGRhdGUgeW91ciBtb2R1bGVzIGV2ZXJ5IHRpbWUgYSBuZXcgcmVsZWFzZSBvZiBDTVNNUyBjb21lcwogICAqIG91dCwgaGVuY2UgdGhpcyBpcyBjb21tZW50ZWQgb3V0IGhlcmUuCiAgICovCiAgCiAgLyoKICBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCiAgewogICAgcmV0dXJuICIxLjUiOwogIH0KICAqLwoKICAvKioKICAgKiBTZXRQYXJhbWV0ZXJzKCkKICAgKiBUaGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhcmVhLgogICAqIFNwZWNpZmljYWxseSwgaXQgZW5hYmxlcyB5b3UgdG86CiAgICogMSkgU2ltcGxpZnkgeW91ciBtb2R1bGUncyB0YWcgKGlmIHlvdSdyZSB3cml0aW5nIGEgcGx1Zy1pbiBtb2R1bGUpCiAgICogMikgQ3JlYXRlIG1hcHBpbmdzIGZvciB5b3VyIG1vZHVsZSB3aGVuIHVzaW5nICJQcmV0dHkgVXJscyIuCiAgICogMykgSW1wb3NlIHNlY3VyaXR5IGJ5IGNvbnRyb2xsaW5nIGluY29taW5nIHBhcmFtZXRlcnMKICAgKiA0KSBSZWdpc3RlciB0aGUgZXZlbnRzIHlvdXIgbW9kdWxlIGhhbmRsZXMgCiAgICoKICAgKiAxLiBTaW1wbHkgbW9kdWxlIHRhZzoKICAgKiBTaW1wbGUhCiAgICogQ2FsbGluZyBSZWdpc3Rlck1vZHVsZVBsdWdpbiBhbGxvd3MgeW91IHRvIHVzZSB0aGUgdGFnIHtTa2VsZXRvbn0gaW4geW91cgogICAqIHRlbXBsYXRlIG9yIHBhZ2U7IG90aGVyd2lzZSwgeW91IHdvdWxkIGhhdmUgdG8gdXNlIHRoZSBtb3JlIGN1bWJlcnNvbWUKICAgKiB0YWcge2Ntc19tb2R1bGUgbW9kdWxlPSdTa2VsZXRvbid9CiAgICoKICAgKiAyLiBQcmV0dHkgVVJMUzoKICAgKiBUeXBpY2FsbHksIG1vZHVsZXMgY3JlYXRlIGludGVybmFsIGxpbmtzIHRoYXQgaGF2ZQogICAqIGJpZyB1Z2x5IHN0cmluZ3MgYWxvbmcgdGhlIGxpbmVzIG9mOgogICAqIGluZGV4LnBocD9tYWN0PU1vZE5hbWUsY250bnQwMSxhY3Rpb25OYW1lLDAmY250bnQwMXBhcmFtMT0xJmNudG50MDFwYXJhbTI9MiZjbnRudDAxcmV0dXJuaWQ9MwogICAqCiAgICogWW91IG1pZ2h0IHByZWZlciB0aGVzZSB0byBsb29rIGxpa2U6CiAgICogL01vZHVsZUZ1bmN0aW9uLzIvMwogICAqCiAgICogVG8gZG8gdGhpcywgeW91IGhhdmUgdG8gcmVnaXN0ZXIgcm91dGVzIGFuZCBtYXAKICAgKiB5b3VyIHBhcmFtZXRlcnMgaW4gYSB3YXkgdGhhdCB0aGUgQVBJIHdpbGwgYmUgYWJsZQogICAqIHRvIHVuZGVyc3RhbmQuCiAgICoKICAgKiBBbHNvIG5vdGUgdGhhdCBhbnkgY2FsbHMgdG8gQ3JlYXRlTGluayB3aWxsIG5lZWQgdG8KICAgKiBiZSB1cGRhdGVkIHRvIHBhc3MgdGhlIHByZXR0eSB1cmwgcGFyYW1ldGVyLgogICAqCiAgICogMy4gU2VjdXJpdHk6CiAgICogQnkgdXNpbmcgdGhlIFJlc3RyaWN0VW5rbm93blBhcmFtcyBmdW5jdGlvbiwgeW91ciBtb2R1bGUgd2lsbCBub3QKICAgKiByZWNlaXZlIGFueSBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gdGhlIG9uZXMgeW91IGRlY2xhcmUgaGVyZS4KICAgKiBGdXJ0aGVybW9yZSwgdGhlIHBhcmFtZXRlcnMgeW91ciBtb2R1bGUgZG9lcyByZWNlaXZlIHdpbGwgYmUgZmlsdGVyZWQKICAgKiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIHlvdSBzZXQgaGVyZS4KICAgKgogICAqIDQuIEV2ZW50IEhhbmRsaW5nCiAgICogSWYgeW91ciBtb2R1bGUgZ2VuZXJhdGVzIGV2ZW50cywgeW91IHJlZ2lzdGVyIHRoYXQgZmFjdCBpbiB5b3VyIGluc3RhbGwgbWV0aG9kCiAgICogKHNlZSBtZXRob2QuaW5zdGFsbC5waHAgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcykuIEhvd2V2ZXIsIGlmIHlvdXIgbW9kdWxlIHdpbGwKICAgKiBoYW5kbGUvcHJvY2Vzcy9jb25zdW1lIGV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIENvcmUgb3Igb3RoZXIgbW9kdWxlcywgeW91CiAgICogY2FuIHJlZ2lzdGVyIHRoYXQgaW4gdGhpcyBtZXRob2QuCiAgICogCiAgICovIAoKICBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKICB7CiAgIC8qCiAgICAqIDEuIFNpbXBseSBtb2R1bGUgdGFnCiAgICAqIFRoaXMgbmV4dCBsaW5lIGFsbG93cyB5b3UgdG8gdXNlIHRoZSB0YWcge1NrZWxldG9ufSBpbiB5b3VyIHRlbXBsYXRlIG9yIHBhZ2U7IG90aGVyd2lzZSwKICAgICogeW91IHdvdWxkIGhhdmUgdG8gdXNlIHRoZSBtb3JlIGN1bWJlcnNvbWUgdGFnIHtjbXNfbW9kdWxlIG1vZHVsZT0nU2tlbGV0b24nfQogICAgKi8KICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKCiAgIC8qCiAgICAqIDIuIFByZXR0eSBVUkxTCiAgICAqCgogICAgRm9yIGV4YW1wbGU6CiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL3NrZWxldG9uXC8oP1A8bnVtZXJpY19wYXJhbV9uYW1lPlswLTldKylcLyg/UDxzdHJpbmdfcGFyYW1fbmFtZT5bYS16QS1aXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywKCQkgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOwoKICAgIG5vdywgYW55IHVybCB0aGF0IGxvb2tzIGxpa2U6CiAgICAvc2tlbGV0b24vMy9mb28vNQogICAgd291bGQgY2FsbCB0aGUgZGVmYXVsdCBhY3Rpb24sIHdpdGg6CiAgICAkcGFyYW1zWydudW1lcmljX3BhcmFtX25hbWUnXSBzZXQgdG8gMwogICAgJHBhcmFtc1snc3RyaW5nX3BhcmFtX25hbWUnXSBzZXQgdG8gImZvbyIKICAgIGFuZCAkcmV0dXJuaWQgc2V0IHRvIDUKICAgICovCgogICAvKgogICAgKiAzLiBTZWN1cml0eQogICAgKgogICAgKi8KICAgLy8gRG9uJ3QgYWxsb3cgcGFyYW1ldGVycyBvdGhlciB0aGFuIHRoZSBvbmVzIHlvdSd2ZSBleHBsaWNpdGx5IGRlZmluZWQKICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogIAogICAvLyBzeW50YXggZm9yIGNyZWF0aW5nIGEgcGFyYW1ldGVyIGlzIHBhcmFtZXRlciBuYW1lLCBkZWZhdWx0IHZhbHVlLCBkZXNjcmlwdGlvbgogICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdza2VsZXRvbl9pZCcsIC0xLCAkdGhpcy0+TGFuZygnaGVscF9za2VsZXRvbl9pZCcpKTsKICAgLy8gc2tlbGV0b25faWQgbXVzdCBiZSBhbiBpbnRlZ2VyCiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdza2VsZXRvbl9pZCcsQ0xFQU5fSU5UKTsKCiAgIC8vIG1vZHVsZV9tZXNzYWdlIG11c3QgYmUgYSBzdHJpbmcKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbW9kdWxlX21lc3NhZ2UnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX21vZHVsZV9tZXNzYWdlJykpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbW9kdWxlX21lc3NhZ2UnLENMRUFOX1NUUklORyk7CgogICAvLyBkZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nCiAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2Rlc2NyaXB0aW9uJywnJywkdGhpcy0+TGFuZygnaGVscF9kZXNjcmlwdGlvbicpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Rlc2NyaXB0aW9uJyxDTEVBTl9TVFJJTkcpOwoKICAgLyoKICAgICogNC4gRXZlbnQgSGFuZGxpbmcKICAgICoKICAgCiAgICBUeXBpY2FsIGV4YW1wbGU6IHNwZWNpZnkgdGhlIG9yaWdpbmF0b3IsIHRoZSBldmVudCBuYW1lLCBhbmQgd2hldGhlciBvciBub3QKICAgIHRoZSBldmVudCBpcyByZW1vdmFibGUgKHVzZWQgZm9yIG9uZS10aW1lIGV2ZW50cykKCiAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50UG9zdFJlbmRlcicsIHRydWUgKTsKICAgICovCiAgfQoKICAvKioKICAgKiBHZXRFdmVudERlc2NyaXB0aW9uKCkKICAgKiBJZiB5b3VyIG1vZHVsZSBjYW4gY3JlYXRlIGV2ZW50cywgeW91IHdpbGwgbmVlZAogICAqIHRvIHByb3ZpZGUgdGhlIEFQSSB3aXRoIGRvY3VtZW50YXRpb24gb2Ygd2hhdAogICAqIHRoYXQgZXZlbnQgZG9lcy4gVGhpcyBtZXRob2Qgd3JhcHMgdXAgYSBzaW1wbGUKICAgKiByZXR1cm4gb2YgdGhlIGxvY2FsaXplZCBkZXNjcmlwdGlvbi4KICAgKiBAcGFyYW0gc3RyaW5nIEV2ZW50bmFtZQogICAqIEByZXR1cm4gc3RyaW5nIERlc2NyaXB0aW9uIGZvciBldmVudCAKICAgKi8KICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uICggJGV2ZW50bmFtZSApCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9pbmZvXycuJGV2ZW50bmFtZSApOwogIH0KICAKICAvKioKICAgKiBHZXRFdmVudEhlbHAoKQogICAqIElmIHlvdXIgbW9kdWxlIGNhbiBjcmVhdGUgZXZlbnRzLCB5b3Ugd2lsbCBuZWVkCiAgICogdG8gcHJvdmlkZSB0aGUgQVBJIHdpdGggZG9jdW1lbnRhdGlvbiBvZiBob3cgdG8KICAgKiB1c2UgdGhlIGV2ZW50LiBUaGlzIG1ldGhvZCB3cmFwcyB1cCBhIHNpbXBsZQogICAqIHJldHVybiBvZiB0aGUgbG9jYWxpemVkIGRlc2NyaXB0aW9uLgogICAqIEBwYXJhbSBzdHJpbmcgRXZlbnRuYW1lCiAgICogQHJldHVybiBzdHJpbmcgSGVscCBmb3IgZXZlbnQKICAgKi8KICBmdW5jdGlvbiBHZXRFdmVudEhlbHAgKCAkZXZlbnRuYW1lICkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJy4kZXZlbnRuYW1lICk7CiAgfQoKCiAgLyoqCiAgICogRG9FdmVudCgpCiAgICogSWYgeW91ciBtb2R1bGUgcmVjZWl2ZXMvaGFuZGxlcy9wcm9jZXNzZXMgZXZlbnRzIGdlbmVyYXRlZAogICAqIGJ5IHRoZSBjb3JlIG9yIGJ5IG90aGVyIG1vZHVsZXMsIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlkZQogICAqIHRoaXMgbWV0aG9kIHRvIGRvIHdoYXRldmVyIGl0IGlzIHlvdSdyZSBnb2luZyB0byBkby4KICAgKiBPdGhlciB0aGFuIHRoZSBldmVudCBkZXRhaWxzLCB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8geW91cgogICAqIG1ldGhvZCBkZXBlbmQgZW50aXJlbHkgb24gdGhlIGV2ZW50IG9yaWdpbmF0b3IuIFlvdSBjYW4KICAgKiBzZWUgd2hhdCB0aG9zZSBwYXJhbWV0ZXJzIGFyZSBieSBjbGlja2luZyBvbiB0aGUgSW5mb3JtYXRpb24KICAgKiBidXR0b24gZm9yIHRoZSBldmVudCBpbiB0aGUgQWRtaW4gPiBFeHRlbnNpb25zID4gRXZlbnQgTWFuYWdlcgogICAqCiAgICogQHBhcmFtIHN0cmluZyBvcmlnaW5hdG9yIHdoZXJlIHRoZSBldmVudCBvcmlnaW5hdGVkLCBlLmcuICJDb3JlIiwKICAgKiAiTmV3cyIsIGV0Yy4KICAgKiBAcGFyYW0gc3RyaW5nIGV2ZW50bmFtZSB0aGUgbmFtZSBvZiB0aGUgZXZlbnQKICAgKiBAcGFyYW0gbWl4ZWQgcGFyYW1zIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCBieSB0aGUgZXZlbnQgaW5pdGlhdG9yCgogICAgZnVuY3Rpb24gRG9FdmVudCggJG9yaWdpbmF0b3IsICRldmVudG5hbWUsICYkcGFyYW1zICkKCXsKCWlmICgkb3JpZ2luYXRvciA9PSAnQ29yZScgJiYgJGV2ZW50bmFtZSA9PSAnQ29udGVudFBvc3RSZW5kZXInKQoJCXsKCQkvLyBzdHVwaWQgZXhhbXBsZSAtLSBsb3dlcmNhc2VzIGVudGlyZSBvdXRwdXQKCQkkcGFyYW1zWydjb250ZW50J10gPSBzdHJ0b2xvd2VyKCRwYXJhbXNbJ2NvbnRlbnQnXSk7CgkJfQoJfQogICAqLwoKICAvKioKICAgKiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAqIEFmdGVyIGluc3RhbGxhdGlvbiwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwogICAqIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCiAgICogc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgogICAqIAogICAqIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCiAgICogQHJldHVybiBzdHJpbmcgTWVzc2FnZSB0byBiZSBzaG93biBhZnRlciBpbnN0YWxsYXRpb24KICAgKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgogIC8qKgogICAqIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgKiBBZnRlciByZW1vdmluZyBhIG1vZHVsZSwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwogICAqIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCiAgICogc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgogICAqCiAgICogU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgKiBAcmV0dXJuIHN0cmluZyBNZXNzYWdlIHRvIGJlIHNob3duIGFmdGVyIHVuaW5zdGFsbGF0aW9uCiAgICovCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwogIH0KCiAgLyoqCiAgICogVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgICogVGhpcyBhbGxvd3MgeW91IHRvIGRpc3BsYXkgYSBtZXNzYWdlIGFsb25nIHdpdGggYSBZZXMvTm8gZGlhbG9nIGJveC4gSWYgdGhlIHVzZXIgcmVzcG9uZHMKICAgKiBpbiB0aGUgYWZmaXJtYXRpdmUgdG8geW91ciBtZXNzYWdlLCB0aGUgdW5pbnN0YWxsIHdpbGwgcHJvY2VlZC4gSWYgdGhleSByZXNwb25kIGluIHRoZQogICAqIG5lZ2F0aXZlLCB0aGUgdW5pbnN0YWxsIHdpbGwgYmUgY2FuY2VsZWQuIFRodXMsIHlvdXIgbWVzc2FnZSBzaG91bGQgYmUgb2YgdGhlIGZvcm0KICAgKiAiQWxsIG1vZHVsZSBkYXRhIHdpbGwgYmUgZGVsZXRlZC4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZT8iCiAgICoKICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGlhbG9nLCBoYXZlIHRoaXMgbWV0aG9kIHJldHVybiBhIEZBTFNFLCB3aGljaCB3aWxsIGNhdXNlIHRoZQogICAqIG1vZHVsZSB0byB1bmluc3RhbGwgaW1tZWRpYXRlbHkgaWYgdGhlIHVzZXIgY2xpY2tzIHRoZSAidW5pbnN0YWxsIiBsaW5rLgogICAqIEByZXR1cm4gc3RyaW5nIE1lc3NhZ2UgdG8gYmUgc2hvd24gYmVmb3JlIHVuaW5zdGFsbGF0aW9uCiAgICovCiAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7CiAgfQogIAogIC8qKgogICAqIFlvdXIgbWV0aG9kcyBoZXJlCiAgICogCiAgICogVGhpcyB3b3VsZCBiZSBhIGdvb2QgcGxhY2UgdG8gZGVmaW5lIHNvbWUgZ2VuZXJhbCBtZXRob2RzIGZvciB5b3VyIG1vZHVsZQogICAqIAogICAqIEl0cyBhIGdvb2QgcHJhY3RpY2UgdG8gaGF2ZSB1bmRlcnNjb3JlIGluIGZyb250IG9mIHlvdXIgb3duIG1ldGhvZHMKICAgKi8KICBmdW5jdGlvbiBfU2V0U3RhdHVzKCRvaWQsICRzdGF0dXMpIHsKICAgIC8vLi4uCiAgfQoKICAvKioKICAgKiBEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCkKICAgKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgaWYgeW91ciBtb2R1bGUKICAgKiBpcyBhIHBsdWctaW4gdHlwZSBtb2R1bGUuCiAgICogCiAgICogSW4gZ2VuZXJhbCwgeW91J2xsIHdhbnQgdG8gY2FsbCB2YXJpb3VzIGRpZmZlcmVudAogICAqIG1ldGhvZHMsIGRlcGVuZGluZyB1cG9uIHRoZSByZXF1ZXN0ZWQgImFjdGlvbi4iCiAgICogICAKICAgKiBUaGVyZSBhcmUgdHdvIGJ1aWx0LWluIGFjdGlvbnM6ICJkZWZhdWx0IiB3aGljaCBnZXRzCiAgICogY2FsbGVkIGlmIHRoZSBtb2R1bGUgaXMgYWNjZXNzZWQgZnJvbSBhIHBhZ2Ugb3IgdGVtcGxhdGUsCiAgICogYW5kICJkZWZhdWx0YWRtaW4iIHdoaWNoIGdldHMgY2FsbGVkIGZyb20gdGhlIEFkbWluCiAgICogcGFuZWwuCiAgICogICAKICAgKiBUaGUgQWN0aW9uIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgYSBkaWZmZXJlbnQKICAgKiBhY3Rpb24gZWl0aGVyIGluIHlvdXIgdGFnLCBlLmcuLAogICAqIHtjbXNfbW9kdWxlIG1vZHVsZT0nU2tlbGV0b24nIGFjdGlvbj0nc29tZXRoaW5nJ30KICAgKiBvciBieSBwYXNzaW5nIGl0IGluIGEgbGluayBjcmVhdGUgYnkgdGhlIENyZWF0ZUxpbmsKICAgKiBtZXRob2QuIAogICAqCiAgICogU2ltaWxhciB0byB0aGUgU2VwYXJhYmxlIE1ldGhvZHMgZGVzY3JpYmVkIGFib3ZlLAogICAqIHlvdSBjYW4gYWN0dWFsbHkgcmVtb3ZlIGFsbCBvZiB0aGUgYWN0aW9ucyBpbnRvIHNlcGFyYXRlCiAgICogZmlsZXMgYXMgd2VsbC4gV2hlbiB0aGUgbW9kdWxlIEFQSSBjYWxscyB5b3VyIG1vZHVsZQogICAqIHdpdGggYW4gYWN0aW9uLCBpdCBjaGVja3MgZmlyc3QgdG8gc2VlIGlmIHRoZSBEb0FjdGlvbiBtZXRob2QKICAgKiBleGlzdHMuIElmIGl0IGRvZXMsIGl0IGdldHMgdXNlZCBub3JtYWxseS4gSWYgaXQgZG9lc24ndCBleGlzdHMsCiAgICogdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGF0IG1ldGhvZCBnZXRzIGxvYWRlZCBhbmQgY2FsbGVkLgogICAqIAogICAqIEZvciBleGFtcGxlLCB0aGUgZGVmYXVsdCBtZXRob2Qgd291bGQgZWl0aGVyIGJlIGFjY2Vzc2VkCiAgICogdmlhIHRoZSBEb0FjdGlvbiBtZXRob2QgYmVpbmcgY2FsbGVkIHdpdGggYW4gYWN0aW9uIG9mICdkZWZhdWx0Jywgb3IsCiAgICogaWYgbm8gRG9BY3Rpb24gbWV0aG9kIGV4aXN0cyBpbiB0aGUgbW9kdWxlLCB0aGUgQVBJIHdvdWxkCiAgICogZXhlY3V0ZSB0aGUgZmlsZSBuYW1lZCAiYWN0aW9uLmRlZmF1bHQucGhwIiBpbiB0aGlzIG1vZHVsZQogICAqIGRpcmVjdG9yeS4KICAgKiAKICAgKiBBcyB3aXRoIHRoZSBvdGhlciBTZXBhcmFibGUgTWV0aG9kcyBhYm92ZSwgSSdtIGxlYXZpbmcKICAgKiB0aGUgbWV0aG9kcyBpbiB0aGlzIG1haW4gZmlsZSwgYnV0IGNvbW1lbnRpbmcgdGhlbSBvdXQsCiAgICogYW5kIGRvaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgc2VwYXJhdGUgZmlsZXMuCiAgICogCiAgICogWW91IGNhbiBpbXBsZW1lbnQgeW91ciBtb2R1bGUgZWl0aGVyIHdheSwgCiAgICovCiAgLyoqIAogICAqIGNvbW1lbnRlZCBvdXQsIGFsbCBuZWVkZWQgYWN0aW9ucyBhcmUgZGVmaW5lZCBpbiBzZXBlcmF0ZQogICAqIGZpbGVzCiAgZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpCiAgewogICAgc3dpdGNoICgkYWN0aW9uKSB7CiAgICBjYXNlICdkZWZhdWx0JzoKICAgICAgewoJLy8gdGhpcyBpcyB0aGUgcGx1Zy1pbiBzaWRlLCBpLmUuLCBub24tQWRtaW4KCSR0aGlzLT5EaXNwbGF5TW9kdWxlT3V0cHV0KCRhY3Rpb24sICRpZCwgJHBhcmFtcyk7CglicmVhazsKICAgICAgfQogICAgY2FzZSAnZGVmYXVsdGFkbWluJzoKICAgICAgewoJLy8gb25seSBsZXQgcGVvcGxlIGFjY2VzcyBtb2R1bGUgcHJlZmVyZW5jZXMgaWYgdGhleSBoYXZlIHBlcm1pc3Npb24KCWlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgU2tlbGV0b24nKSkKCSAgewoJICAgICR0aGlzLT5EaXNwbGF5QWRtaW5QYW5lbCgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CgkgIH0KCWVsc2UKCSAgewoJICAgICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgIH0KCWJyZWFrOwogICAgICB9CiAgICBjYXNlICdzYXZlX2FkbWluX3ByZWZzJzoKICAgICAgewoJLy8gb25seSBsZXQgcGVvcGxlIHNhdmUgbW9kdWxlIHByZWZlcmVuY2VzIGlmIHRoZXkgaGF2ZSBwZXJtaXNzaW9uCgkKCWlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgU2tlbGV0b24nKSkKCSAgewoJICAgICR0aGlzLT5TYXZlQWRtaW5QcmVmcygkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CgkgIH0KCWJyZWFrOwogICAgICB9CiAgICB9CiAgfQogICovCgp9IC8vZW5kIGNsYXNzCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydF9mb3JtfQo8ZGl2IGNsYXNzPSJmb3JtX3JvdyI+CiAgIDxzcGFuIGNsYXNzPSJmaWVsZF90aXRsZSI+eyR0aXRsZV9kZXNjcmlwdGlvbn08L3NwYW4+CiAgIDxzcGFuIGNsYXNzPSJmaWVsZF9pbnB1dCI+eyRpbnB1dF9kZXNjcmlwdGlvbn08L3NwYW4+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJmb3JtX3JvdyI+CiAgIDxzcGFuIGNsYXNzPSJmaWVsZF90aXRsZSI+PC9zcGFuPgogICA8c3BhbiBjbGFzcz0iZmllbGRfaW5wdXQiPnskc3VibWl0fTwvc3Bhbj4KPC9kaXY+CnskZW5kX2Zvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0YWJzX3N0YXJ0fQogICB7JHN0YXJ0X2dlbmVyYWxfdGFifQogICAgICB7JG1vZC0+TGFuZygnd2VsY29tZV90ZXh0Jyl9CiAgIHskdGFiX2VuZH0KICAgeyRzdGFydF9wcmVmc190YWJ9CiAgICAgIHtpZiAkc3RhcnRfcHJlZnNfdGFiICE9ICcnfQogICAgICB7JHN0YXJ0X2Zvcm19CiAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RpdGxlX2FsbG93X2FkZCcpfTo8L3A+CiAgICAgIAkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hbGxvd19hZGR9PC9wPgogICAgICAJPC9kaXY+CiAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgICAJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KICAgICAgCTwvZGl2PgogICAgICB7JG1vZC0+Q3JlYXRlRm9ybUVuZCgpfQogICAgICB7L2lmfQogICB7JHRhYl9lbmR9CnskdGFic19lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/skeleton_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtb2R1bGVfbWVzc2FnZSl9PGgyPnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDI+ey9pZn0NCjxoMz57JHRpdGxlX251bV9yZWNvcmRzfTwvaDM+DQp7Zm9yZWFjaCBmcm9tPSRyZWNvcmRzIGl0ZW09ZW50cnl9DQogICA8ZGl2PnskZW50cnktPmlkfTogeyRlbnRyeS0+bmFtZX0gKHskZW50cnktPnZpZXd9fHskZW50cnktPmVkaXR9KSA8L2Rpdj4NCnsvZm9yZWFjaH0NCg0Ke2lmICRhZGQgIT0gJyd9PGRpdj57JGFkZH08L2Rpdj57L2lmfQ==]]></data>
	</file>
</module>
