<?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>CGJobMgr</name>
	<version>1.0</version>
  <mincmsversion>1.9.1</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoZXJlIGFyZSBvZnRlbiB0aW1lcyBvbiB3ZWJzaXRlcyB3aGVyZSB0YXNrcyB0aGF0IG1heSB0YWtlIGEgY29uc2lkZXJhYmxlIGFtb3VudCBvZiB0aW1lIG5lZWQgdG8gYmUgYXV0b21hdGVkLiAgRm9yIGV4YW1wbGUsIHNlbmRpbmcgb3V0IGFuIGVtYWlsIG5ld3NsZXR0ZXIsIGltcG9ydGluZyByZWNvcmRzIGZyb20gYSBDU1YgZmlsZSwgb3IgcmVxdWVzdGluZyBsYXJnZSBhbW91bnRzIG9mIGRhdGEgZnJvbSBhIHJlbW90ZSBzZXJ2aWNlLiAgIFBIUCAocGVydGljdWxhcmx5IG9uIGhvc3RlZCB3ZWJzaXRlcykgZG9lcyBub3QgbGlrZSB0byBydW4gZm9yIGxvbmcgcGVyaW9kcyBvZiB0aW1lLiAgVGhpcyBtb2R1bGUgYWxsb3dzIGEgZGV2ZWxvcGVyIHRvIGNyZWF0ZSAmcXVvdDtqb2JzJnF1b3Q7IGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgJnF1b3Q7dGFza3MmcXVvdDsgdGhhdCBhcmUgaGFuZGxlZCBieSBhbiBodHRwIHJlcXVlc3QgdGhhdCBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgYmFja2dyb3VuZCBhdXRvbWF0aWNhbGx5LjxwPgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gQVBJIHRoYXQgYWxsb3dzIG90aGVyIG1vZHVsZSBkZXZlbG9wZXJzIHRvIGNyZWF0ZSBqb2JzLiAgRnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUgeW91IG1lcmVseSBuZWVkIHRvIGZvbGxvdyB0d28gc3RlcHM6PC9wPgo8b2w+CiAgPGxpPkluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgbW9kdWxlLjwvbGk+CiAgPGxpPkNvbmZpZ3VyZSBhIHNjaGVkdWxlZCB0YXNrIHRvIGFjY2VzcyB0aGUgc3VwcGxpZWQgcHJvY2VzcyB1cmwgb24gYSByZWd1bGFyLCBmcmVxdWVudCBiYXNpcyA8ZW0+KGEgY3JvbiBqb2Igd29ya3MgZ3JlYXQgZm9yIHRoaXMpPC9lbT4KPC9vbD4KPGgzPkZlYXR1cmVzPC9oMz4KPHVsPgogIDxsaT5UaGUgQVBJIGFsbG93cyBmb3IgY3JlYXRpbmcgc3RhcnR1cCBhbmQgZmluaXNoIGpvYnMuLi48L2xpPgogIDxsaT5BbiBpdGVyYXRpdmUgdGFzayB0eXBlIHRoYXQgd2lsbCBydW4gc21hbGwgc3RlcHMgKHN1Y2ggYXMgY29udmVydGluZyBvbmUgbGluZSBvZiBhIENTViBmaWxlKSB1bnRpbCB0aGUgYWxsb3dlZCB0aW1lIGlzIG5lYXJseSBleGhhdXN0ZWQ8L2xpPgogIDxsaT5BIFNpbXBsZSB0YXNrIHR5cGUgdGhhdCBydW5zIG9uY2UgYW5kIGlzIGV4cGVjdGVkIHRvIGNvbXBsZXRlLjwvbGk+CiAgPGxpPkV4dGVuc2l2ZSBsb2dnaW5nIHRvIHRoZSBhZG1pbiBsb2c8L2xJPgogIDxsaT5Kb2JzIGFyZSBzdGFydGVkIGJ5IHRoZSBwcm9jZXNzIGFjdGlvbiAoYWNjZXNzZWQgdmlhIHRoZSBwcm9jZXNzIHVybCBwcm92aWRlZCBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLCBvbmUgam9iIHBlciByZXF1ZXN0KSB0aGVuIGNvbXBsZXRlIHVudGlsIGZpbmlzaGVkZSB2aWEgY29udGludWVkIHJlZGlyZWN0c3cgYmFjayB0byB0aGUgcHJvY2VzcyBhY3Rpb24uICBUaGVyZWZvcmUgam9icyB3aWxsIGNvbXBsZXRlIGZhc3Rlci48L2xpPgogIDxsaT5TbWFsbCBhbW91bnRzIG9mIGRhdGEgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBqb2IsIGFuZCB0byBpbmRpdmlkdWFsIHRhc2tzIHRoYXQgaXMgc2VyaWFsaXplZCBhbmQgc3RvcmVkIHdpdGggdGhlIGpvYiBpbiB0aGUgZGF0YWJhc2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJvdmlkaW5nIGluZm9ybWF0aW9uIHN1Y2ggYXMgZmlsZW5hbWVzLCB0aW1lIGxpbWl0cywgbm90aWZpY2F0aW9uIGFkZHJlc3NlcyBldGMuIHRvIHRoZSB0YXNrIGZ1bmN0aW9ucy48L2xpPgo8L3VsPgo8aDM+QXV0b21hdGljIFByb2Nlc3Npbmc8L2gzPgo8cD5UaG91Z2ggdGhlIENHSm9iTWdyIG1vZHVsZSBwcm92aWRlcyBhIGxpbmsgaW4gaXRzIGFkbWluIHBhbmVsIHRvIHByb2Nlc3MgdGhlIG5leHQgam9iLCBpdCBpcyBiZXN0IGlmIHRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IG9uIGEgZnJlcXVlbnQgYmFzaXMuICBUaGVyZSBhcmUgbnVtZXJvdXMgd2F5cyB0aGF0IHRoaXMgY2FuIGJlIGRvbmUuPC9wPgo8cD5Nb3N0IHdlYmhvc3RzIHByb3ZpZGUgYSBjb250cm9sIHBhbmVsIHRoYXQgaGFzIGFuIG9wdGlvbiBmb3IgY3JlYXRpbmcgYW5kIG1hbmFnaW5nIHNjaGVkdWxlZCB0YXNrcyAoc3R1ZmYgdGhhdCB5b3Ugd2FudCB0byBkbyBvbiBhIHJlZ3VsYXIgYmFzaXMpLiAgSWYgbm90LCBhbmQgeW91IGhhdmUgYWNjZXNzIHRvIGEgdGFzayBtYW5hZ2VyIG9uIGFub3RoZXIgbWFjaGluZSB0aGF0IGlzIGludGVybmV0IGVuYWJsZWQgeW91IGNhbiBjcmVhdGUgYSBzY2hlZHVsZWQgdGFzayB0aGVyZS48L3A+CjxwPkxpbnV4L1VuaXggYmFzZWQgbWFjaGluZXMgaGF2ZSBhIGJ1aWx0IGluIG1lY2hhbmlzbSBjYWxsZWQgJnF1b3Q7Y3JvbiZxdW90OyBCZWxvdyBpcyBhIHNhbXBsZSBqb2IgdGhhdCBpcyBleGVjdXRlZCBldmVyeSAxMCBtaW51dGVzLCBhbmQgdXNlcyB3Z2V0IHRvIHRyaWdnZXIgdGhlIHByb2Nlc3NpbmcgYW5kIGRpc3JlZ2FyZCBpdHMgb3V0cHV0LjwvcD4KPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiA0ZW07IG1hcmdpbi1yaWdodDogNGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDFlbTsiPgoqLzEwICogKiAqICogd2dldCAtTyAvZGV2L251bGwgaHR0cDovL215c2l0ZS5jb20vQ0dKb2JNZ3IvcHJvY2Vzcwo8L3NwYW4+CjxoMz5BUEk8L2gzPgo8cD5OdW1lcm91cyBQSFAgY2xhc3NlcyBkZWZpbmUgdGhlIEFQSSBmb3IgY3JlYXRpbmcgam9icywgdGhlaXIgdGFza3MsIGFuZCB0aGVuIHN1Ym1pdHRpbmcgdGhlbSB0byB0aGUgam9iIG1hbmFnZXIuICAgVGhlIGNsYXNzZXMgYXJlIGZ1bGx5IGRvY3VtZW50ZWQgaW4gdGhlaXIgYXBwcm9wcmlhdGUgUEhQIGZpbGVzLiAgVGhlIGZpbGVzIGFyZSBhcyBmb2xsb3dzOjwvcD4KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDJlbTsgd2lkdGg6IDc1JTsiPgogPHRoZWFkPgogIDx0cj4KICAgIDx0aD5DbGFzczwvdGg+CiAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgPHRoPkZpbGVuYW1lPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4KICAgPHRyPgogICAgIDx0ZD5jZ2pvYm1ncl9qb2I8L3RkPgogICAgIDx0ZD5UaGUgam9iIGNsYXNzPC90ZD4KICAgICA8dGQ+bGliL2NsYXNzLmNnam9ibWdyX2pvYi5waHA8L3RkPgogICA8L3RyPgogICA8dHI+CiAgICAgPHRkPmNnam9ibWdyX3Rhc2s8L3RkPgogICAgIDx0ZD5BYnN0cmFjdCBiYXNlIGNsYXNzPC90ZD4KICAgICA8dGQ+bGliL2NsYXNzLmNnam9ibWdyX3Rhc2sucGhwPC90ZD4KICAgPC90cj4KICAgPHRyPgogICAgIDx0ZD5jZ2pvYm1ncl9zaW1wbGV0YXNrPC90ZD4KICAgICA8dGQ+QSBzaW1wbGUgJnF1b3Q7cnVuIG9uY2UmcXVvdDsgdGFzazwvdGQ+CiAgICAgPHRkPmxpYi9jbGFzcy5jZ2pvYm1ncl9zaW1wbGV0YXNrLnBocDwvdGQ+CiAgIDwvdHI+CiAgIDx0cj4KICAgICA8dGQ+Y2dqb2JtZ3JfaXRlcmF0aXZldGFzazwvdGQ+CiAgICAgPHRkPkEgdGFzayB0aGF0IHdpbGwgcnVuIHNtYWxsIHN0ZXBzIChpLmU6IHByb2Nlc3Mgb25lIGxpbmUgb2YgYSBDU1YgZmlsZSkgdW50aWwgYWxsb3R0ZWQgdGltZSBpcyBjbG9zZSB0byBleHBpcnkuPC90ZD4KICAgICA8dGQ+bGliL2NsYXNzLmNnam9ibWdyX2l0ZXJhdGl2ZXRhc2sucGhwPC90ZD4KICAgPC90cj4KICAgPHRyPgogICAgIDx0ZD5jZ2pvYm1ncl9qb2JoYW5kbGVyPC90ZD4KICAgICA8dGQ+QW4gYWJzdHJhY3Qgc2luZ2xldG9uIGNsYXNzIHRoYXQgcHJvdmlkZXMgdGhlIGludGVyZmFjZSBmb3IgZGlmZmVyZW50IGpvYiBoYW5kbGVycy48L3RkPgogICAgIDx0ZD5saWIvY2xhc3MuY2dqb2JtZ3Jfam9iaGFuZGxlci5waHA8L3RkPgogICA8L3RyPgogPC90Ym9keT4KPC90YWJsZT4KPGgzPkV4YW1wbGU6PC9oMz4KPHA+VGhlIGZvbGxvd2luZyBjb2RlIGlzIGEgbWFya2VkIHVwIGNvcHkgb2YgdGhlIGNvZGUgZnJvbSB0aGUgQ0dSYXBMZWFmIG1vZHVsZSB0aGF0IHN1Ym1pdHMgdGhlIGpvYi48L3A+CjxwcmUgc3R5bGU9Im1hcmdpbi1sZWZ0OiA0ZW07IG1hcmdpbi1yaWdodDogNGVtOyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ij48Y29kZT4vLyBDcmVhdGUgYSBuZXcgam9iLCBnaXZlIGl0IGEgbmFtZSwgYW5kIHNwZWNpZnkgd2hvIG93bnMgaXQKJGpvYiA9IG5ldyBjZ2pvYm1ncl9qb2IoJHRoaXMtPkdldE5hbWUoKS4nIGJ1bGsgc3VibWlzc2lvbicsZ2V0X3VzZXJpZChGQUxTRSkpOwoKLy8gQ3JlYXRlIGEgbmV3ICZxdW90O2l0ZXJhdGl2ZSZxdW90OyB0YXNrIHRoYXQgd2lsbCByZXBlYXQgYSBzbWFsbCBzdGVwIHVudGlsIHRoZXJlIGlzIG5vIHRpbWUgbGVmdAokdGFzayA9IG5ldyBjZ2pvYm1ncl9pdGVyYXRpdmV0YXNrKCdwcm9jZXNzIGVtYWlsIGFkZHJlc3MnKTsKCi8vIFNwZWNpZnkgd2hpY2ggZnVuY3Rpb24gdGhpcyB0YXNrIHdpbGwgY2FsbCB0byBhY3R1YWxseSBkbyB0aGUgd29yawokdGFzay0+c2V0X2Z1bmN0aW9uKGFycmF5KCdjZ3JhcGxlYWZfdGFzaycsJ3Byb2Nlc3NfdGFzaycpKTsKCi8vIFByb3ZpZGUgc29tZSBkYXRhIHRvIHRoZSB0YXNrCiR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdpbnB1dF9maWxlJywkaW5maWxlKTsKJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ291dHB1dF9maWxlJywkb3V0ZmlsZSk7CiR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdsb2dmaWxlJywkbG9nZmlsZSk7CiR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdjb2x1bW4nLCRjb2x1bW4pOwokdGFzay0+c2V0X3BlcnNpc3RlbnRfZGF0YSgnZGVsaW1ldGVyJywkZGVsaW1pdGVyKTsKCi8vIEFkZCB0aGUgdGFzayB0byB0aGUgam9iCiRqb2ItPmFkZF90YXNrKCR0YXNrKTsKCi8vIENyZWF0ZSBhbm90aGVyIHRhc2suLi4gYSBzaW1wbGUgcnVuLW9uY2UgdGFzawokdGFzayA9IG5ldyBjZ2pvYm1ncl9zaW1wbGV0YXNrKCdzZW5kIHJlc3VsdCcpOwokdGFzay0+c2V0X2Z1bmN0aW9uKGFycmF5KCdjZ3JhcGxlYWZfdGFzaycsJ25vdGlmeScpKTsKCi8vIEFkZCBzb21lIGRhdGEgaW50byB0aGlzIHRhc2sKJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ2lucHV0X2ZpbGUnLCRpbmZpbGUpOwokdGFzay0+c2V0X3BlcnNpc3RlbnRfZGF0YSgnb3V0cHV0X2ZpbGUnLCRvdXRmaWxlKTsKJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ2xvZ2ZpbGUnLCRsb2dmaWxlKTsKJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ2Rlc3RfZW1haWwnLCRlbWFpbCk7CgovLyBBZGQgdGhlIHRhc2sgdG8gdGhlIGpvYgokam9iLT5hZGRfdGFzaygkdGFzayk7CgovLyBTYXZlIHRoZSBqb2IgaW50byB0aGUgZGF0YWJhc2UuLi4gaXQgd2lsbCBydW4gYXV0b21hdGljYWxseSB0aGUgbmV4dCB0aW1lIHRoZSBwcm9jZXNpbmcgdXJsIGlzIGFjY2Vzc2VkLgokam9iLT5zYXZlKCk7CjwvY29kZT48L3ByZT48YnIvPgo8aDQ+VGFzayBmdW5jdGlvbnM6PC9oND4KPHA+VGFzayBmdW5jdGlvbnMgbWF5IGJlIHNpbXBsZSBQSFAgZnVuY3Rpb25zLCBvciBzdGF0aWMgbWVtYmVycyBvZiBhIHBocCBjbGFzcy4gIFRoZXkgYWNjZXB0IGEgY2dqb2JtZ3JfdGFzayByZWZlcmVuY2UgYXMgdGhlaXIgc2luZ2xlIHBhcmFtZXRlci4gIFRoZXkgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBhIGNnam9ibWdyX3Rhc2sgc3RhdHVzLiAgaS5lOjwvcD4KPHByZSBzdHlsZT0ibWFyZ2luLWxlZnQ6IDRlbTsgbWFyZ2luLXJpZ2h0OiA0ZW07IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsiPjxjb2RlPgpjbGFzcyBjZ3JhcGxlYWZfdGFzawp7CiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3RpZnkoY2dqb2JtZ3JfdGFzayYgJHRhc2spCiAgewogICAgJGRlc3RfZW1haWwgPSAkdGFzay0+Z2V0X3BlcnNpc3RlbnRfZGF0YSgnZGVzdF9lbWFpbCcpOwogICAgJG91dGZpbGUgPSAkdGFzay0+Z2V0X3BlcnNpc3RlbnRfZGF0YSgnb3V0cHV0X2ZpbGUnKTsKCiAgICBpZiggISRkZXN0X2VtYWlsICkKICAgICAgewoJYXVkaXQoJycsJ2NncmFwbGVhZl90YXNrJywnTm8gZGVzdGluYXRpb24gZW1haWwgc3BlY2lmaWVkJyk7CglyZXR1cm4gY2dqb2JtZ3JfdGFzazo6U1RBVFVTX0VSUk9SOwogICAgICB9CiAgICAkdG9fYWRkcnMgPSBjZ2VfYXJyYXk6OnNtYXJ0X2V4cGxvZGUoJGRlc3RfZW1haWwpOwogICAgaWYoICFpc19hcnJheSgkdG9fYWRkcnMpIHx8IGNvdW50KCR0b19hZGRycykgPT0gMCApCiAgICAgIHsKCWF1ZGl0KCcnLCdjZ3JhcGxlYWZfdGFzaycsJ0NvdWxkIG5vdCBmaW5kIGEgZGVzdGluYXRpb24gZW1haWwgYWRkcmVzcycpOwoJcmV0dXJuIGNnam9ibWdyX3Rhc2s6OlNUQVRVU19FUlJPUjsKICAgICAgfQoKICAgIGlmKCAhJG91dGZpbGUgfHwgIWZpbGVfZXhpc3RzKCRvdXRmaWxlKSApCiAgICAgIHsKCWF1ZGl0KCcnLCdjZ3JhcGxlYWZfdGFzaycsJ0NvdWxkIG5vdCBmaW5kIG91dHB1dCBmaWxlJyk7CglyZXR1cm4gY2dqb2JtZ3JfdGFzazo6U1RBVFVTX0VSUk9SOwogICAgICB9CiAgICAkb3V0dHlwZSA9IGNnZV91dGlsczo6Z2V0X21pbWVfdHlwZSgkb3V0ZmlsZSk7CiAgICAkcmFwbGVhZiA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dSYXBMZWFmJyk7CiAgICAkY21zbWFpbGVyID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDTVNNYWlsZXInKTsKICAgICRjbXNtYWlsZXItPnJlc2V0KCk7CiAgICAkbnVtX3RvID0gMDsKICAgIGZvcmVhY2goICR0b19hZGRycyBhcyAkb25lICkKICAgICAgewoJaWYoICFpc19lbWFpbCgkb25lKSApIGNvbnRpbnVlOwoJJG51bV90bysrOwoJJGNtc21haWxlci0+QWRkQWRkcmVzcygkb25lKTsKICAgICAgfQogICAgJGNtc21haWxlci0+U2V0U3ViamVjdCgkcmFwbGVhZi0+TGFuZygnYnVsa2VtYWlsX3N1YmplY3QnKSk7CiAgICAkY21zbWFpbGVyLT5BZGRBdHRhY2htZW50KCAkb3V0ZmlsZSwgJ3JhcGxlYWYuY3N2JywgJ2Jhc2U2NCcsICRvdXR0eXBlICk7CiAgICBpZiggJGxvZ2ZpbGUgJiYgZmlsZV9leGlzdHMoJGxvZ2ZpbGUpICkKICAgICAgewoJJGNtc21haWxlci0+QWRkQXR0YWNobWVudCggJGxvZ2ZpbGUsICdyYXBsZWFmLmxvZycsICdiYXNlNjQnLCBjZ2VfdXRpbHM6OmdldF9taW1lX3R5cGUoJGxvZ2ZpbGUpKTsKICAgICAgfQogICAgLy8gbm93IHRoZSBib2R5LgogICAgJGJvZHkgPSAnWW91ciBDR1JhcExlYWYgSm9iIGhhcyBjb21wbGV0ZWQuICBUaGUgb3V0cHV0IGZpbGUocykgYXJlIGF0dGFjaGVkIHRvIHRoaXMgZW1haWwnOwogICAgJGNtc21haWxlci0+U2V0Qm9keSgkYm9keSk7CiAgICAkY21zbWFpbGVyLT5TZW5kKCk7CgogICAgYXVkaXQoJycsJ2NncmFwbGVhZl90YXNrJyxzcHJpbnRmKCdTZW50IGVtYWlsIHRvICVkIGFkZHJlc3NlcycsY291bnQoJG51bV90bykpKTsKICAgIHJldHVybiBjZ2pvYm1ncl90YXNrOjpTVEFUVVNfQ09NUExFVEU7CgogIH0KfQo8L2NvZGU+PC9wcmU+CjxoMz5GdXR1cmUgdmVyc2lvbnM8L2gzPgo8dWw+CiAgPGxpPkZvcmVncm91bmQgam9icyAtIFRoZSBhYmlsaXR5IHRvIHByb2Nlc3MgdGhlIGpvYiBpbiB0aGUgZm9yZWdyb3VuZCB3aXRoIGEgcHJvZ3Jlc3MgYmFyIGFuZCBmZWVkYmFjay48L2xpPgogIDxsaT5Nb3JlIHRhc2sgdHlwZXM8L2xpPgogIDxsaT5CZXR0ZXIgcmVwb3J0aW5nIC0gcGVyaGFwcyBzb21lIGVtYWlsIG5vdGlmaWNhdGlvbiBvbiBmYWlsZWQgam9icywgZXRjLjwvbGk+CiAgPGxpPkltcHJvdmVkIGFkbWluIGludGVyZmFjZSAtIFRoZSBhYmlsaXR5IHRvIHJlc3VtZSBhIGZhaWxlZCBqb2IsIHN1c3BlbmQgam9icyBmb3IgbGF0ZXIuLi48L2xpPgogIDxsaT4KPC91bD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCBjYWxndXlcJ3MKbW9kdWxlIGhvbWVwYWdlIGF0IDxhIGhyZWY9Imh0dHA6Ly9jYWxndXkxMDAwLmNvbSI+Y2FsZ3V5MTAwMC5jb208L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgCjwvdWw+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTEsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIApzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+PGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR0V4dGVuc2lvbnMgPSZndDsgMS4yNC40PC9saT48L3VsPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGdtYWlsLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjA8YnIgLz4=]]></about>
	<description><![CDATA[A module for managing jobs that take considerable amounts of time]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.24.4</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_deletefinished.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEpvYnMnKSApIGV4aXQ7CgokcXVlcnkgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2pvYm1nciBXSEVSRSBzdGF0dXMgPSA/JzsKJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoY2dqb2JtZ3Jfam9iOjpTVEFUVVNfRklOSVNIRUQpKTsKCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdqb2JzJyk7CiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deletejob.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEpvYnMnKSApIGV4aXQ7CmlmKCAhaXNzZXQoJHBhcmFtc1snam9iaWQnXSkgKSBleGl0OwoKJGpvYmlkID0gKGludCkkcGFyYW1zWydqb2JpZCddOwppZiggJGpvYmlkIDw9IDAgKSBleGl0OwoKJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2dqb2JtZ3IgV0hFUkUgaWQgPSA/JzsKJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGpvYmlkKSk7CgokdGhpcy0+U2V0Q3VycmVudFRhYignam9icycpOwokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_savesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApIGV4aXQ7CgokdGhpcy0+U2V0Q3VycmVudFRhYignc2V0dGluZ3MnKTsKCiR0aW1lb3V0ID0gKGludCkkcGFyYW1zWyd0aW1lb3V0J107CmlmKCAkdGltZW91dCA8PSAwICkKICAkdGltZW91dCA9ICcnOwplbHNlIGlmKCAkdGltZW91dCA8IDEwICkKICAkdGltZW91dCA9IDEwOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfcGFnZScsJHBhcmFtc1snZGZsdHBhZ2UnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0YXNrX3RpbWVvdXQnLCR0aW1lb3V0KTsKCiRzbGFjayA9IChmbG9hdCkkcGFyYW1zWydpdGVyYXRpdmVfc2xhY2snXTsKJHNsYWNrID0gbWluKG1heCgwLjI1LCRzbGFjayksNSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpdGVyYXRpdmVfc2xhY2snLCRzbGFjayk7CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBKb2JzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignam9icycsJHRoaXMtPkxhbmcoJ2pvYnMnKSk7CiAgfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApCiAgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3NldHRpbmdzJykpOwogIH0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgSm9icycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignam9icycsJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fam9ic3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwogIH0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzZXR0aW5ncycsJHBhcmFtcyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fc2V0dGluZ3N0YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICB9CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.process.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgovLwovLyBzZXR1cAovLwokaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7IApmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKJGpvYl90aW1lb3V0ID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnam9iX3RpbWVvdXQnKTsKaWYoICRqb2JfdGltZW91dCA+IDAgKQogIHsKICAgICRqb2JfdGltZW91dCA9IG1pbigxMCxtYXgoOTk5OSwkam9iX3RpbWVvdXQpKTsKICAgIHNldF90aW1lX2xpbWl0KCRqb2JfdGltZW91dCk7CiAgfQokaXRlcmF0aXZlX3NsYWNrID0gKGZsb2F0KSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVyYXRpdmVfc2xhY2snLDEuNSk7CiRpdGVyYXRpdmVfc2xhY2sgPSBtYXgoMC4yNSxtaW4oNS4wLCRpdGVyYXRpdmVfc2xhY2spKTsKCnRyeQp7CiAgJGtleXMgPSBhcnJheShjZ2pvYm1ncl9qb2I6OlNUQVRVU19GSU5JU0hFRCxjZ2pvYm1ncl9qb2I6OlNUQVRVU19FUlJPUixjZ2pvYm1ncl9qb2I6OlNUQVRVU19BQk9SVEVELGNnam9ibWdyX2pvYjo6U1RBVFVTX0VSUk9SKTsKICAkdG1wID0gJyc7CiAgaWYoICFpc3NldCgkcGFyYW1zWydqb2JpZCddKSApCiAgICB7CiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2dqb2JtZ3IgV0hFUkUgQ09BTEVTQ0UobG9ja2VkLDApID0gMCBBTkQgc3RhdHVzIE5PVCBJTiAoJy5jZ2VfYXJyYXk6OmltcGxvZGVfcXVvdGVkKCRrZXlzKS4nKSBPUkRFUiBCWSBwcmlvcml0eSBERVNDJzsKICAgICAgJHRtcCA9ICRkYi0+R2V0Um93KCRxdWVyeSk7CgogICAgICAvLyBnZXQgc3RhdHMuCiAgICAgICRzdGF0cyAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdqb2JzdGF0cycpOwogICAgICBpZiggJHN0YXRzICkKCXsKCSAgJHN0YXRzID0gdW5zZXJpYWxpemUoJHN0YXRzKTsKCX0KICAgICAgZWxzZQoJewoJICAkc3RhdHMgPSBhcnJheSgpOwoJICAkc3RhdHNbJ251bXJ1bnMnXSA9IDA7CgkgICRzdGF0c1snYXZndGltZSddID0gMDsKCSAgJHN0YXRzWyd0aW1lbGFzdCddID0gMDsKCX0KICAgICAgLy8gdXBkYXRlIHN0YXRzCiAgICAgIGlmKCAkc3RhdHNbJ3RpbWVsYXN0J10gJiYgJHN0YXRzWydudW1ydW5zJ10gKQoJewoJICAkc3RhdHNbJ2F2Z3RpbWUnXSA9ICgoJHN0YXRzWydhdmd0aW1lJ10gKiAkc3RhdHNbJ251bXJ1bnMnXSkgKyAodGltZSgpIC0gJHN0YXRzWyd0aW1lbGFzdCddKSkgLyAoJHN0YXRzWydudW1ydW5zJ10gKyAxKTsKCX0KICAgICAgJHN0YXRzWyd0aW1lbGFzdCddID0gdGltZSgpOwogICAgICAkc3RhdHNbJ251bXJ1bnMnXSsrOwogICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnam9ic3RhdHMnLHNlcmlhbGl6ZSgkc3RhdHMpKTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2dqb2JtZ3IgV0hFUkUgQ09BTEVTQ0UobG9ja2VkLDApID0gMSBBTkQgaWQgPSA/IEFORCBzdGF0dXMgTk9UIElOICgnLmNnZV9hcnJheTo6aW1wbG9kZV9xdW90ZWQoJGtleXMpLicpJzsKICAgICAgJHRtcCA9ICRkYi0+R2V0Um93KCRxdWVyeSxhcnJheSgoaW50KSRwYXJhbXNbJ2pvYmlkJ10pKTsKICAgIH0KCiAgLy8gZGlkIHdlIGdldCBhIGpvYj8KICBpZiggISR0bXAgKSAKICB7CiAgICBkZWJ1Z190b19sb2coJGRiLT5zcWwpOwogICAgZGVidWdfdG9fbG9nKCRkYi0+RXJyb3JNc2coKSk7CiAgICBkZWJ1Z190b19sb2coJ25vIGpvYnMgZm91bmQnKTsKICAgIHJldHVybjsKICB9CgogIC8vIHdlIGhhdmUgYSBqb2IgdG8gcGxheSB3aXRoLgogIC8vIGdldCB0aGUgam9iCiAgJGpvYiA9IGNnam9ibWdyX2pvYjo6bG9hZF9mcm9tX2RhdGEoJHRtcCk7CiAgJGpvYi0+bG9jaygpOwogICRpdGVycyA9ICRqb2ItPmdldF9wZXJzaXN0ZW50X3ZhbHVlKCdfX2l0ZXJhdGlvbnNfXycsMCk7CiAgJGl0ZXJzKys7CiAgJGpvYi0+c2V0X3BlcnNpc3RlbnRfdmFsdWUoJ19faXRlcmF0aW9uc19fJywkaXRlcnMpOwogIAogIC8vIGdldCBvdXIgaGFuZGxlci4KICAkam9ibWdyID0gbmV3IGNnam9ibWdyX2F1dG9oYW5kbGVyKCRqb2IpOwoKICAvLyBzZXQgc29tZSBzdHVmZiBpbnRvIHRoZSBqb2IgbWFuYWdlci4uLiBtYXliZSB0aW1lIGxpbWl0cywgbm90aWZpY2F0aW9uIHJ1bGVzLCBldGMuCiAgJGpvYm1nci0+c2V0X3ZhbHVlKCdpdGVyYXRpdmVfc2xhY2snLCRpdGVyYXRpdmVfc2xhY2spOwogICRqb2JtZ3ItPnNldF92YWx1ZSgnbWF4X3RpbWUnLCRqb2JfdGltZW91dCk7CgogIC8vIHRoZW4gZG8gdGhlIHdvcmsuCiAgJHN0YXR1cyA9ICRqb2JtZ3ItPnByb2Nlc3MoKTsKICAKICAvLyBzYXZlIHRoZSBqb2IKICAkam9iLT5zYXZlKCk7CgogIC8vIGFyZSB3ZSBkb25lLCBvciBkbyB3ZSBoYXZlIHRvIHJlZGlyZWN0PwogIGlmKCBpbl9hcnJheSgkam9iLT5nZXRfc3RhdHVzKCksJGtleXMpICkKICAgIHsKICAgICAgLy8gam9iIGlzIGZpbmlzaGVkIChvciBzdG9wcGVkIGZvciBzb21lIHJlYXNvbikKICAgICAgJGpvYi0+dW5sb2NrKCk7CiAgICB9CiAgZWxzZQogICAgewogICAgICAvLyBpZiB0aGUgam9iIGlzIG5vdCBkb25lLi4uIHdlIGhhdmUgdG8gcmVkaXJlY3Qgc29tZXdoZXJlLgogICAgICAkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICAgICRyZXR1cm5pZCA9ICRjb250ZW50b3BzLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICBhdWRpdCgkam9iLT5nZXRfaWQoKSwkdGhpcy0+R2V0TmFtZSgpLCdwcm9jZXNzZWQgaXRlcmF0aW9uICcuJGl0ZXJzKTsKICAgICAgLy8gdGhlIHJlcGVhdCBwcm9jZXNzLi4gaXMganVzdCBzbyB3ZSBkb250JyBnZXQgdG9vIG1hbnkgcmVkaXJlY3RzLgogICAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdwcm9jZXNzJywkcmV0dXJuaWQsYXJyYXkoJ3Nob3d0ZW1wbGF0ZSc9PidmYWxzZScsJ3J1bmNvdW50Jz0+JGl0ZXJzLCdqb2JpZCc9PiRqb2ItPmdldF9pZCgpKSk7CiAgICAgICR1cmwgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywkdXJsKTsKICAgICAgcmVkaXJlY3QoJHVybCk7CiAgICB9Cn0KY2F0Y2goIEV4Y2VwdGlvbiAkZSApCnsKICBkZWJ1Z19kaXNwbGF5KCRlKTsgZGllKCk7CiAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0V4Y2VwdGlvbjogJy4kZS0+Z2V0TWVzc2FnZSgpKTsKfQoKZXhpdDsKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/CGJobMgr.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKJGNnZXh0ZW5zaW9ucyA9IGNtc19qb2luX3BhdGgoJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10sJ21vZHVsZXMnLAoJCQkgICAgICAnQ0dFeHRlbnNpb25zJywnQ0dFeHRlbnNpb25zLm1vZHVsZS5waHAnKTsKaWYoICFpc19yZWFkYWJsZSggJGNnZXh0ZW5zaW9ucyApICkKewogIGVjaG8gJzxoMT48Zm9udCBjb2xvcj0icmVkIj5FUlJPUjogVGhlIENHRXh0ZW5zaW9ucyBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLjwvZm9udD48L2gxPic7CiAgcmV0dXJuOwp9CnJlcXVpcmVfb25jZSgkY2dleHRlbnNpb25zKTsKCmNsYXNzIENHSm9iTWdyIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKICBwdWJsaWMgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCiAgewogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3J1bmNvdW50JyxDTEVBTl9JTlQpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2pvYmlkJyxDTEVBTl9JTlQpOwogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy8nLiR0aGlzLT5HZXROYW1lKCkuJ1wvcHJvY2VzcyQvJywKCQkJIGFycmF5KCdhY3Rpb24nPT4ncHJvY2VzcycsCgkJCSAgICAgICAnc2hvd3RlbXBsYXRlJz0+J2ZhbHNlJykpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldE5hbWUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldE5hbWUoKQogIHsKICAgIHJldHVybiBnZXRfY2xhc3MoJHRoaXMpOwogIH0KCiAgCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RnJpZW5kbHlOYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgfQogIAogIAogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS4wJzsKICB9CgogIAogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldERlcGVuZGVuY2llcygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKICB7CiAgICByZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucyc9PicxLjI0LjQnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBNaW5pbXVtQ01TVmVyc2lvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS45LjEnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEhlbHAoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEhlbHAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwogIH0KICAKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMCc7CiAgfQogIAoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3JFbWFpbCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMEBnbWFpbC5jb20nOwogIH0KICAKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0Q2hhbmdlTG9nKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogIHsKICAgIHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoZGlybmFtZShfX0ZJTEVfXykuJy9jaGFuZ2Vsb2cuaHRtbC5pbmMnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBJc1BsdWdpbk1vZHVsZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsKICB9CiAgCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEhhc0FkbWluKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBIYXNBZG1pbigpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQogIAoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgSm9icycpIHx8CiAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyk7CiAgfQogIAoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBWaXNpYmxlVG9BZG1pblVzZXIoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEhhbmRsZXNFdmVudHMgKCkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgogIAogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pgo=]]></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_jobstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEpvYnMnKSApIGV4aXQ7CgokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2Nnam9ibWdyIE9SREVSIEJZIG1vZGlmaWVkIERFU0MnOwokam9icyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKJHVzZXJvcHMgPSBjbXNtcygpLT5HZXRVc2VyT3BlcmF0aW9ucygpOwokdXNlcmNhY2hlID0gYXJyYXkoKTsKCmlmKCAkam9icyApIAogIHsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRqb2JzKTsgJGkrKyApCiAgICAgIHsKCWlmKCBpc3NldCgkam9ic1skaV1bJ293bmVyJ10pICYmICRqb2JzWyRpXVsnb3duZXInXSA+IDAgKQoJICB7CgkgICAgJHVpZCA9ICRqb2JzWyRpXVsnb3duZXInXTsKCSAgICBpZiggIWlzc2V0KCR1c2VyY2FjaGVbJHVpZF0pICkKCSAgICAgIHsKCQkkdXNlciA9ICR1c2Vyb3BzLT5Mb2FkVXNlckJ5SWQoJHVpZCk7CgkJaWYoIGlzX29iamVjdCgkdXNlcikgKQoJCSAgewoJCSAgICAkdXNlcmNhY2hlWyR1aWRdID0gJHVzZXItPnVzZXJuYW1lOwoJCSAgfQoJICAgICAgfQoJICAgIGlmKCBpc3NldCgkdXNlcmNhY2hlWyR1aWRdKSApCgkgICAgICB7CgkJJGpvYnNbJGldWydvd25lcl9uYW1lJ10gPSAkdXNlcmNhY2hlWyR1aWRdOwoJICAgICAgfQoJICB9CglpZiggIWluX2FycmF5KCRqb2JzWyRpXVsnc3RhdHVzJ10sYXJyYXkoY2dqb2JtZ3Jfam9iOjpTVEFUVVNfSU5QUk9HUkVTUyxjZ2pvYm1ncl9qb2I6OlNUQVRVU19DT01QTEVUSU5HKSkgKQoJICB7CgkgICAgJGpvYnNbJGldWydkZWxldGVfbGluayddID0gJHRoaXMtPkNyZWF0ZUltYWdlTGluaygkaWQsJ2FkbWluX2RlbGV0ZWpvYicsJycsCgkJCQkJCQkgICAgICAkdGhpcy0+TGFuZygnZGVsZXRlJyksCgkJCQkJCQkgICAgICAnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAoJCQkJCQkJICAgICAgYXJyYXkoJ2pvYmlkJz0+JGpvYnNbJGldWydpZCddKSwKCQkJCQkJCSAgICAgICcnLCR0aGlzLT5MYW5nKCdjb25maXJtX2RlbGV0ZScpKTsKCSAgfQogICAgICB9CiAgICAkc21hcnR5LT5hc3NpZ24oJ2pvYnMnLCRqb2JzKTsKICB9Cgokc21hcnR5LT5hc3NpZ24oJ2xpbmtfZGVsZXRlZmluaXNoZWQnLAoJCSR0aGlzLT5DcmVhdGVJbWFnZUxpbmsoJGlkLCdhZG1pbl9kZWxldGVmaW5pc2hlZCcsJHJldHVybmlkLAoJCQkJICAgICAgICR0aGlzLT5MYW5nKCdwcm9tcHRfZGVsZXRlZmluaXNoZWQnKSwKCQkJCSAgICAgICAnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAoJCQkJICAgICAgIGFycmF5KCksJycsCgkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ2NvbmZpcm1fZGVsZXRlZmluaXNoZWQnKSwKCQkJCSAgICAgICBmYWxzZSkpOwoJCQkJICAgICAgIAplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2pvYnN0YWIudHBsJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settingstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApIGV4aXQ7CgokY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwokZGZsdF9wYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfcGFnZScsJGNvbnRlbnRvcHMtPkdldERlZmF1bHRDb250ZW50KCkpOwoKJHVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywncHJvY2VzcycsJGRmbHRfcGFnZSxhcnJheSgpLGZhbHNlLGZhbHNlLCR0aGlzLT5HZXRuYW1lKCkuJy9wcm9jZXNzJyk7CiRzbWFydHktPmFzc2lnbigncHJvY2Vzc191cmwnLCR1cmwpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fc2F2ZXNldHRpbmdzJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RmbHRwYWdlJywkY29udGVudG9wcy0+Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJycsJGRmbHRfcGFnZSwkaWQuJ2RmbHRwYWdlJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpbWVvdXQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0YXNrX3RpbWVvdXQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlcmF0aXZlX3NsYWNrJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlcmF0aXZlX3NsYWNrJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9zZXR0aW5nc3RhYi50cGwnKTsKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0EKJGxhbmdbJ2Fib3J0ZWQnXSA9ICdBYm9ydGVkJzsKCiNCCgoKI0MKJGxhbmdbJ2NsaWNrbWVfcHJvY2Vzc3VybCddID0gJ0NsaWNrIHRoaXMgbGluayB0byBzdGFydCBwcm9jZXNzaW5nIG5vdyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBqb2I/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlZmluaXNoZWQnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFsbCBmaW5pc2hlZCBqb2JzPyc7CiRsYW5nWydjb21wbGV0aW5nJ10gPSAnQ29tcGxldGluZyc7CgojRAokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKCiNFCiRsYW5nWydlcnJvciddID0gJ0Vycm9yJzsKCiNGCiRsYW5nWydmaW5pc2hlZCddID0gJ0ZpbmlzaGVkJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhbGd1eXMgSm9iIFByb2Nlc3NpbmcgTWFuYWdlcic7CgojRwoKCiNICiRsYW5nWydoZWxwJ10gPSA8PDxFT1QKPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoZXJlIGFyZSBvZnRlbiB0aW1lcyBvbiB3ZWJzaXRlcyB3aGVyZSB0YXNrcyB0aGF0IG1heSB0YWtlIGEgY29uc2lkZXJhYmxlIGFtb3VudCBvZiB0aW1lIG5lZWQgdG8gYmUgYXV0b21hdGVkLiAgRm9yIGV4YW1wbGUsIHNlbmRpbmcgb3V0IGFuIGVtYWlsIG5ld3NsZXR0ZXIsIGltcG9ydGluZyByZWNvcmRzIGZyb20gYSBDU1YgZmlsZSwgb3IgcmVxdWVzdGluZyBsYXJnZSBhbW91bnRzIG9mIGRhdGEgZnJvbSBhIHJlbW90ZSBzZXJ2aWNlLiAgIFBIUCAocGVydGljdWxhcmx5IG9uIGhvc3RlZCB3ZWJzaXRlcykgZG9lcyBub3QgbGlrZSB0byBydW4gZm9yIGxvbmcgcGVyaW9kcyBvZiB0aW1lLiAgVGhpcyBtb2R1bGUgYWxsb3dzIGEgZGV2ZWxvcGVyIHRvIGNyZWF0ZSAmcXVvdDtqb2JzJnF1b3Q7IGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgJnF1b3Q7dGFza3MmcXVvdDsgdGhhdCBhcmUgaGFuZGxlZCBieSBhbiBodHRwIHJlcXVlc3QgdGhhdCBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgYmFja2dyb3VuZCBhdXRvbWF0aWNhbGx5LjxwPgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gQVBJIHRoYXQgYWxsb3dzIG90aGVyIG1vZHVsZSBkZXZlbG9wZXJzIHRvIGNyZWF0ZSBqb2JzLiAgRnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUgeW91IG1lcmVseSBuZWVkIHRvIGZvbGxvdyB0d28gc3RlcHM6PC9wPgo8b2w+CiAgPGxpPkluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgbW9kdWxlLjwvbGk+CiAgPGxpPkNvbmZpZ3VyZSBhIHNjaGVkdWxlZCB0YXNrIHRvIGFjY2VzcyB0aGUgc3VwcGxpZWQgcHJvY2VzcyB1cmwgb24gYSByZWd1bGFyLCBmcmVxdWVudCBiYXNpcyA8ZW0+KGEgY3JvbiBqb2Igd29ya3MgZ3JlYXQgZm9yIHRoaXMpPC9lbT4KPC9vbD4KPGgzPkZlYXR1cmVzPC9oMz4KPHVsPgogIDxsaT5UaGUgQVBJIGFsbG93cyBmb3IgY3JlYXRpbmcgc3RhcnR1cCBhbmQgZmluaXNoIGpvYnMuLi48L2xpPgogIDxsaT5BbiBpdGVyYXRpdmUgdGFzayB0eXBlIHRoYXQgd2lsbCBydW4gc21hbGwgc3RlcHMgKHN1Y2ggYXMgY29udmVydGluZyBvbmUgbGluZSBvZiBhIENTViBmaWxlKSB1bnRpbCB0aGUgYWxsb3dlZCB0aW1lIGlzIG5lYXJseSBleGhhdXN0ZWQ8L2xpPgogIDxsaT5BIFNpbXBsZSB0YXNrIHR5cGUgdGhhdCBydW5zIG9uY2UgYW5kIGlzIGV4cGVjdGVkIHRvIGNvbXBsZXRlLjwvbGk+CiAgPGxpPkV4dGVuc2l2ZSBsb2dnaW5nIHRvIHRoZSBhZG1pbiBsb2c8L2xJPgogIDxsaT5Kb2JzIGFyZSBzdGFydGVkIGJ5IHRoZSBwcm9jZXNzIGFjdGlvbiAoYWNjZXNzZWQgdmlhIHRoZSBwcm9jZXNzIHVybCBwcm92aWRlZCBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLCBvbmUgam9iIHBlciByZXF1ZXN0KSB0aGVuIGNvbXBsZXRlIHVudGlsIGZpbmlzaGVkZSB2aWEgY29udGludWVkIHJlZGlyZWN0c3cgYmFjayB0byB0aGUgcHJvY2VzcyBhY3Rpb24uICBUaGVyZWZvcmUgam9icyB3aWxsIGNvbXBsZXRlIGZhc3Rlci48L2xpPgogIDxsaT5TbWFsbCBhbW91bnRzIG9mIGRhdGEgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBqb2IsIGFuZCB0byBpbmRpdmlkdWFsIHRhc2tzIHRoYXQgaXMgc2VyaWFsaXplZCBhbmQgc3RvcmVkIHdpdGggdGhlIGpvYiBpbiB0aGUgZGF0YWJhc2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJvdmlkaW5nIGluZm9ybWF0aW9uIHN1Y2ggYXMgZmlsZW5hbWVzLCB0aW1lIGxpbWl0cywgbm90aWZpY2F0aW9uIGFkZHJlc3NlcyBldGMuIHRvIHRoZSB0YXNrIGZ1bmN0aW9ucy48L2xpPgo8L3VsPgo8aDM+QXV0b21hdGljIFByb2Nlc3Npbmc8L2gzPgo8cD5UaG91Z2ggdGhlIENHSm9iTWdyIG1vZHVsZSBwcm92aWRlcyBhIGxpbmsgaW4gaXRzIGFkbWluIHBhbmVsIHRvIHByb2Nlc3MgdGhlIG5leHQgam9iLCBpdCBpcyBiZXN0IGlmIHRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IG9uIGEgZnJlcXVlbnQgYmFzaXMuICBUaGVyZSBhcmUgbnVtZXJvdXMgd2F5cyB0aGF0IHRoaXMgY2FuIGJlIGRvbmUuPC9wPgo8cD5Nb3N0IHdlYmhvc3RzIHByb3ZpZGUgYSBjb250cm9sIHBhbmVsIHRoYXQgaGFzIGFuIG9wdGlvbiBmb3IgY3JlYXRpbmcgYW5kIG1hbmFnaW5nIHNjaGVkdWxlZCB0YXNrcyAoc3R1ZmYgdGhhdCB5b3Ugd2FudCB0byBkbyBvbiBhIHJlZ3VsYXIgYmFzaXMpLiAgSWYgbm90LCBhbmQgeW91IGhhdmUgYWNjZXNzIHRvIGEgdGFzayBtYW5hZ2VyIG9uIGFub3RoZXIgbWFjaGluZSB0aGF0IGlzIGludGVybmV0IGVuYWJsZWQgeW91IGNhbiBjcmVhdGUgYSBzY2hlZHVsZWQgdGFzayB0aGVyZS48L3A+CjxwPkxpbnV4L1VuaXggYmFzZWQgbWFjaGluZXMgaGF2ZSBhIGJ1aWx0IGluIG1lY2hhbmlzbSBjYWxsZWQgJnF1b3Q7Y3JvbiZxdW90OyBCZWxvdyBpcyBhIHNhbXBsZSBqb2IgdGhhdCBpcyBleGVjdXRlZCBldmVyeSAxMCBtaW51dGVzLCBhbmQgdXNlcyB3Z2V0IHRvIHRyaWdnZXIgdGhlIHByb2Nlc3NpbmcgYW5kIGRpc3JlZ2FyZCBpdHMgb3V0cHV0LjwvcD4KPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiA0ZW07IG1hcmdpbi1yaWdodDogNGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDFlbTsiPgoqLzEwICogKiAqICogd2dldCAtTyAvZGV2L251bGwgaHR0cDovL215c2l0ZS5jb20vQ0dKb2JNZ3IvcHJvY2Vzcwo8L3NwYW4+CjxoMz5BUEk8L2gzPgo8cD5OdW1lcm91cyBQSFAgY2xhc3NlcyBkZWZpbmUgdGhlIEFQSSBmb3IgY3JlYXRpbmcgam9icywgdGhlaXIgdGFza3MsIGFuZCB0aGVuIHN1Ym1pdHRpbmcgdGhlbSB0byB0aGUgam9iIG1hbmFnZXIuICAgVGhlIGNsYXNzZXMgYXJlIGZ1bGx5IGRvY3VtZW50ZWQgaW4gdGhlaXIgYXBwcm9wcmlhdGUgUEhQIGZpbGVzLiAgVGhlIGZpbGVzIGFyZSBhcyBmb2xsb3dzOjwvcD4KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDJlbTsgd2lkdGg6IDc1JTsiPgogPHRoZWFkPgogIDx0cj4KICAgIDx0aD5DbGFzczwvdGg+CiAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgPHRoPkZpbGVuYW1lPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4KICAgPHRyPgogICAgIDx0ZD5jZ2pvYm1ncl9qb2I8L3RkPgogICAgIDx0ZD5UaGUgam9iIGNsYXNzPC90ZD4KICAgICA8dGQ+bGliL2NsYXNzLmNnam9ibWdyX2pvYi5waHA8L3RkPgogICA8L3RyPgogICA8dHI+CiAgICAgPHRkPmNnam9ibWdyX3Rhc2s8L3RkPgogICAgIDx0ZD5BYnN0cmFjdCBiYXNlIGNsYXNzPC90ZD4KICAgICA8dGQ+bGliL2NsYXNzLmNnam9ibWdyX3Rhc2sucGhwPC90ZD4KICAgPC90cj4KICAgPHRyPgogICAgIDx0ZD5jZ2pvYm1ncl9zaW1wbGV0YXNrPC90ZD4KICAgICA8dGQ+QSBzaW1wbGUgJnF1b3Q7cnVuIG9uY2UmcXVvdDsgdGFzazwvdGQ+CiAgICAgPHRkPmxpYi9jbGFzcy5jZ2pvYm1ncl9zaW1wbGV0YXNrLnBocDwvdGQ+CiAgIDwvdHI+CiAgIDx0cj4KICAgICA8dGQ+Y2dqb2JtZ3JfaXRlcmF0aXZldGFzazwvdGQ+CiAgICAgPHRkPkEgdGFzayB0aGF0IHdpbGwgcnVuIHNtYWxsIHN0ZXBzIChpLmU6IHByb2Nlc3Mgb25lIGxpbmUgb2YgYSBDU1YgZmlsZSkgdW50aWwgYWxsb3R0ZWQgdGltZSBpcyBjbG9zZSB0byBleHBpcnkuPC90ZD4KICAgICA8dGQ+bGliL2NsYXNzLmNnam9ibWdyX2l0ZXJhdGl2ZXRhc2sucGhwPC90ZD4KICAgPC90cj4KICAgPHRyPgogICAgIDx0ZD5jZ2pvYm1ncl9qb2JoYW5kbGVyPC90ZD4KICAgICA8dGQ+QW4gYWJzdHJhY3Qgc2luZ2xldG9uIGNsYXNzIHRoYXQgcHJvdmlkZXMgdGhlIGludGVyZmFjZSBmb3IgZGlmZmVyZW50IGpvYiBoYW5kbGVycy48L3RkPgogICAgIDx0ZD5saWIvY2xhc3MuY2dqb2JtZ3Jfam9iaGFuZGxlci5waHA8L3RkPgogICA8L3RyPgogPC90Ym9keT4KPC90YWJsZT4KPGgzPkV4YW1wbGU6PC9oMz4KPHA+VGhlIGZvbGxvd2luZyBjb2RlIGlzIGEgbWFya2VkIHVwIGNvcHkgb2YgdGhlIGNvZGUgZnJvbSB0aGUgQ0dSYXBMZWFmIG1vZHVsZSB0aGF0IHN1Ym1pdHMgdGhlIGpvYi48L3A+CjxwcmUgc3R5bGU9Im1hcmdpbi1sZWZ0OiA0ZW07IG1hcmdpbi1yaWdodDogNGVtOyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ij48Y29kZT4vLyBDcmVhdGUgYSBuZXcgam9iLCBnaXZlIGl0IGEgbmFtZSwgYW5kIHNwZWNpZnkgd2hvIG93bnMgaXQKXCRqb2IgPSBuZXcgY2dqb2JtZ3Jfam9iKFwkdGhpcy0+R2V0TmFtZSgpLicgYnVsayBzdWJtaXNzaW9uJyxnZXRfdXNlcmlkKEZBTFNFKSk7CgovLyBDcmVhdGUgYSBuZXcgJnF1b3Q7aXRlcmF0aXZlJnF1b3Q7IHRhc2sgdGhhdCB3aWxsIHJlcGVhdCBhIHNtYWxsIHN0ZXAgdW50aWwgdGhlcmUgaXMgbm8gdGltZSBsZWZ0ClwkdGFzayA9IG5ldyBjZ2pvYm1ncl9pdGVyYXRpdmV0YXNrKCdwcm9jZXNzIGVtYWlsIGFkZHJlc3MnKTsKCi8vIFNwZWNpZnkgd2hpY2ggZnVuY3Rpb24gdGhpcyB0YXNrIHdpbGwgY2FsbCB0byBhY3R1YWxseSBkbyB0aGUgd29yawpcJHRhc2stPnNldF9mdW5jdGlvbihhcnJheSgnY2dyYXBsZWFmX3Rhc2snLCdwcm9jZXNzX3Rhc2snKSk7CgovLyBQcm92aWRlIHNvbWUgZGF0YSB0byB0aGUgdGFzawpcJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ2lucHV0X2ZpbGUnLFwkaW5maWxlKTsKXCR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdvdXRwdXRfZmlsZScsXCRvdXRmaWxlKTsKXCR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdsb2dmaWxlJyxcJGxvZ2ZpbGUpOwpcJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ2NvbHVtbicsXCRjb2x1bW4pOwpcJHRhc2stPnNldF9wZXJzaXN0ZW50X2RhdGEoJ2RlbGltZXRlcicsXCRkZWxpbWl0ZXIpOwoKLy8gQWRkIHRoZSB0YXNrIHRvIHRoZSBqb2IKXCRqb2ItPmFkZF90YXNrKFwkdGFzayk7CgovLyBDcmVhdGUgYW5vdGhlciB0YXNrLi4uIGEgc2ltcGxlIHJ1bi1vbmNlIHRhc2sKXCR0YXNrID0gbmV3IGNnam9ibWdyX3NpbXBsZXRhc2soJ3NlbmQgcmVzdWx0Jyk7ClwkdGFzay0+c2V0X2Z1bmN0aW9uKGFycmF5KCdjZ3JhcGxlYWZfdGFzaycsJ25vdGlmeScpKTsKCi8vIEFkZCBzb21lIGRhdGEgaW50byB0aGlzIHRhc2sKXCR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdpbnB1dF9maWxlJyxcJGluZmlsZSk7ClwkdGFzay0+c2V0X3BlcnNpc3RlbnRfZGF0YSgnb3V0cHV0X2ZpbGUnLFwkb3V0ZmlsZSk7ClwkdGFzay0+c2V0X3BlcnNpc3RlbnRfZGF0YSgnbG9nZmlsZScsXCRsb2dmaWxlKTsKXCR0YXNrLT5zZXRfcGVyc2lzdGVudF9kYXRhKCdkZXN0X2VtYWlsJyxcJGVtYWlsKTsKCi8vIEFkZCB0aGUgdGFzayB0byB0aGUgam9iClwkam9iLT5hZGRfdGFzayhcJHRhc2spOwoKLy8gU2F2ZSB0aGUgam9iIGludG8gdGhlIGRhdGFiYXNlLi4uIGl0IHdpbGwgcnVuIGF1dG9tYXRpY2FsbHkgdGhlIG5leHQgdGltZSB0aGUgcHJvY2VzaW5nIHVybCBpcyBhY2Nlc3NlZC4KXCRqb2ItPnNhdmUoKTsKPC9jb2RlPjwvcHJlPjxici8+CjxoND5UYXNrIGZ1bmN0aW9uczo8L2g0Pgo8cD5UYXNrIGZ1bmN0aW9ucyBtYXkgYmUgc2ltcGxlIFBIUCBmdW5jdGlvbnMsIG9yIHN0YXRpYyBtZW1iZXJzIG9mIGEgcGhwIGNsYXNzLiAgVGhleSBhY2NlcHQgYSBjZ2pvYm1ncl90YXNrIHJlZmVyZW5jZSBhcyB0aGVpciBzaW5nbGUgcGFyYW1ldGVyLiAgVGhleSBhcmUgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgY2dqb2JtZ3JfdGFzayBzdGF0dXMuICBpLmU6PC9wPgo8cHJlIHN0eWxlPSJtYXJnaW4tbGVmdDogNGVtOyBtYXJnaW4tcmlnaHQ6IDRlbTsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyI+PGNvZGU+CmNsYXNzIGNncmFwbGVhZl90YXNrCnsKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdGlmeShjZ2pvYm1ncl90YXNrJiBcJHRhc2spCiAgewogICAgXCRkZXN0X2VtYWlsID0gXCR0YXNrLT5nZXRfcGVyc2lzdGVudF9kYXRhKCdkZXN0X2VtYWlsJyk7CiAgICBcJG91dGZpbGUgPSBcJHRhc2stPmdldF9wZXJzaXN0ZW50X2RhdGEoJ291dHB1dF9maWxlJyk7CgogICAgaWYoICFcJGRlc3RfZW1haWwgKQogICAgICB7CglhdWRpdCgnJywnY2dyYXBsZWFmX3Rhc2snLCdObyBkZXN0aW5hdGlvbiBlbWFpbCBzcGVjaWZpZWQnKTsKCXJldHVybiBjZ2pvYm1ncl90YXNrOjpTVEFUVVNfRVJST1I7CiAgICAgIH0KICAgIFwkdG9fYWRkcnMgPSBjZ2VfYXJyYXk6OnNtYXJ0X2V4cGxvZGUoXCRkZXN0X2VtYWlsKTsKICAgIGlmKCAhaXNfYXJyYXkoXCR0b19hZGRycykgfHwgY291bnQoXCR0b19hZGRycykgPT0gMCApCiAgICAgIHsKCWF1ZGl0KCcnLCdjZ3JhcGxlYWZfdGFzaycsJ0NvdWxkIG5vdCBmaW5kIGEgZGVzdGluYXRpb24gZW1haWwgYWRkcmVzcycpOwoJcmV0dXJuIGNnam9ibWdyX3Rhc2s6OlNUQVRVU19FUlJPUjsKICAgICAgfQoKICAgIGlmKCAhXCRvdXRmaWxlIHx8ICFmaWxlX2V4aXN0cyhcJG91dGZpbGUpICkKICAgICAgewoJYXVkaXQoJycsJ2NncmFwbGVhZl90YXNrJywnQ291bGQgbm90IGZpbmQgb3V0cHV0IGZpbGUnKTsKCXJldHVybiBjZ2pvYm1ncl90YXNrOjpTVEFUVVNfRVJST1I7CiAgICAgIH0KICAgIFwkb3V0dHlwZSA9IGNnZV91dGlsczo6Z2V0X21pbWVfdHlwZShcJG91dGZpbGUpOwogICAgXCRyYXBsZWFmID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDR1JhcExlYWYnKTsKICAgIFwkY21zbWFpbGVyID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDTVNNYWlsZXInKTsKICAgIFwkY21zbWFpbGVyLT5yZXNldCgpOwogICAgXCRudW1fdG8gPSAwOwogICAgZm9yZWFjaCggXCR0b19hZGRycyBhcyBcJG9uZSApCiAgICAgIHsKCWlmKCAhaXNfZW1haWwoXCRvbmUpICkgY29udGludWU7CglcJG51bV90bysrOwoJXCRjbXNtYWlsZXItPkFkZEFkZHJlc3MoXCRvbmUpOwogICAgICB9CiAgICBcJGNtc21haWxlci0+U2V0U3ViamVjdChcJHJhcGxlYWYtPkxhbmcoJ2J1bGtlbWFpbF9zdWJqZWN0JykpOwogICAgXCRjbXNtYWlsZXItPkFkZEF0dGFjaG1lbnQoIFwkb3V0ZmlsZSwgJ3JhcGxlYWYuY3N2JywgJ2Jhc2U2NCcsIFwkb3V0dHlwZSApOwogICAgaWYoIFwkbG9nZmlsZSAmJiBmaWxlX2V4aXN0cyhcJGxvZ2ZpbGUpICkKICAgICAgewoJXCRjbXNtYWlsZXItPkFkZEF0dGFjaG1lbnQoIFwkbG9nZmlsZSwgJ3JhcGxlYWYubG9nJywgJ2Jhc2U2NCcsIGNnZV91dGlsczo6Z2V0X21pbWVfdHlwZShcJGxvZ2ZpbGUpKTsKICAgICAgfQogICAgLy8gbm93IHRoZSBib2R5LgogICAgXCRib2R5ID0gJ1lvdXIgQ0dSYXBMZWFmIEpvYiBoYXMgY29tcGxldGVkLiAgVGhlIG91dHB1dCBmaWxlKHMpIGFyZSBhdHRhY2hlZCB0byB0aGlzIGVtYWlsJzsKICAgIFwkY21zbWFpbGVyLT5TZXRCb2R5KFwkYm9keSk7CiAgICBcJGNtc21haWxlci0+U2VuZCgpOwoKICAgIGF1ZGl0KCcnLCdjZ3JhcGxlYWZfdGFzaycsc3ByaW50ZignU2VudCBlbWFpbCB0byAlZCBhZGRyZXNzZXMnLGNvdW50KFwkbnVtX3RvKSkpOwogICAgcmV0dXJuIGNnam9ibWdyX3Rhc2s6OlNUQVRVU19DT01QTEVURTsKCiAgfQp9CjwvY29kZT48L3ByZT4KPGgzPkZ1dHVyZSB2ZXJzaW9uczwvaDM+Cjx1bD4KICA8bGk+Rm9yZWdyb3VuZCBqb2JzIC0gVGhlIGFiaWxpdHkgdG8gcHJvY2VzcyB0aGUgam9iIGluIHRoZSBmb3JlZ3JvdW5kIHdpdGggYSBwcm9ncmVzcyBiYXIgYW5kIGZlZWRiYWNrLjwvbGk+CiAgPGxpPk1vcmUgdGFzayB0eXBlczwvbGk+CiAgPGxpPkJldHRlciByZXBvcnRpbmcgLSBwZXJoYXBzIHNvbWUgZW1haWwgbm90aWZpY2F0aW9uIG9uIGZhaWxlZCBqb2JzLCBldGMuPC9saT4KICA8bGk+SW1wcm92ZWQgYWRtaW4gaW50ZXJmYWNlIC0gVGhlIGFiaWxpdHkgdG8gcmVzdW1lIGEgZmFpbGVkIGpvYiwgc3VzcGVuZCBqb2JzIGZvciBsYXRlci4uLjwvbGk+CiAgPGxpPgo8L3VsPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eVwncwptb2R1bGUgaG9tZXBhZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2NhbGd1eTEwMDAuY29tIj5jYWxndXkxMDAwLmNvbTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMSwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KRU9UOwoKI0kKJGxhbmdbJ2luZm9fZGZsdHBhZ2UnXSA9ICdTcGVjaWZ5IHRoZSBwYWdlIGlkIHRvIHVzZSB3aGVuIHdoZW4gaGFuZGxpbmcgam9icy4gIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoaXMgcGFnZSBub3QgYmUgY2FjaGFibGUnOwokbGFuZ1snaW5mb19wcm9jZXNzdXJsJ10gPSAnVGhpcyBpcyB0aGUgVVJMIHRoYXQgd2hlbiB0cmlnZ2VyZWQgd2lsbCBiZWdpbiBwcm9jZXNzaW5nIG9mIHF1ZXVlZCBqb2JzLiAgIFlvdSBjb3VsZCB1c2UgYSBjcm9uIHRhc2ssIGFuZCB3Z2V0IHRoZSBzcGVjaWZpZWQgdXJsIHRvIHJlZ3VsYXJseSByZXF1ZXN0IHRoaXMgVVJMJzsKJGxhbmdbJ2luZm9fc2xhY2snXSA9ICdVc2VkIHdpdGggJnF1b3Q7aXRlcmF0aXZlJnF1b3Q7IHRhc2tzIHRoaXMgdmFsdWUgc3BlY2lmaWVzIGEgc2xhY2sgZmFjdG9yIChhIG11bHRpcGxlIG9mIHRoZSBhdmVyYWdlIHRpbWUgY29uc3VtZWQgZm9yIGFuIGl0ZXJhdGlvbikgdG8gYWxsb3cgZm9yIHdoZW4gY2FsY3VsYXRpbmcgd2V0aGVyIGFub3RoZXIgaXRlcmF0aW9uIHNob3VsZCBiZSBjb21wbGF0ZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxLjUuICBNaW5pbXVtIHZhbHVlIGlzIDAuMjUgYW5kIE1heGltdW0gdmFsdWUgaXMgNS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0b28gaGlnaCBtYXkgcmVzdWx0IGluIGFuIGVuZGxlc3MgcHJvY2Vzc2luZyBsb29wLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvbyBsb3cgbWF5IHJlc3VsdCBpbiBlcnJvcnMgaW4gam9icyc7CiRsYW5nWydpbmZvX3RpbWVvdXQnXSA9ICdUaGlzIHNldHRpbmcgKGluIHNlY29uZHMpIHNwZWNpZmllcyBob3cgbXVjaCB0aW1lIHRoZSBzeXN0ZW0gc2hvdWxkIGJlIGFsbG93ZWQgdG8gcHJvY2VzcyBhIHNpbmdsZSB0YXNrIGluIGEgam9iLiAgWW91IG1heSB3YW50IHRvIGV4dGVuZCB0aGlzIHZhbHVlIGZvciBsb25nIGpvYnMgdGhhdCBhcmUgdGltaW5nIG91dCBhbmQgY2F1c2luZyBlcnJvcnMgaG93ZXZlciB0aGF0IG1heSBoYXZlIG5lZ2F0aXZlIGltcGxpY2F0aW9ucyBvbiB5b3VyIHNlcnZlciBwZXJmb3JtYW5jZS4gIEVhY2ggJnF1b3Q7c2ltcGxlJnF1b3Q7IHNob3VsZCBiZSBhYmxlIHRvIGNvbXBsZXRlIGl0c2VsZiB3aXRoaW4gdGhpcyB0aW1lIGxpbWl0LiAgJnF1b3Q7aXRlcmF0aXZlJnF1b3Q7IHRhc2tzIHdpbGwgdXNlIHRoaXMgdmFsdWUgKG9yIHRoZSBzeXN0ZW0gdmFsdWUpIGFuZCB0aGUgYW1vdW50IG9mIGVsYXBzZWQgdGltZSwgd2hlbiBhbmFseXppbmcgaWYgcHJvY2Vzc2luZyBjYW4gY29udGludWUgYmVmb3JlIHJlZnJlc2hpbmcuICBTcGVjaWZ5aW5nIGEgbmVnYXRpdmUsIDAgb3IgZW1wdHkgdmFsdWUgd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIHN5c3RlbSBkZWZhdWx0IHRpbWVvdXQuICBOb3RlIHlvdXIgaG9zdCBtYXkgbm90IGFsbG93IGFkanVzdGluZyB0aGlzIHZhbHVlLiAgWW91IG1heSBub3RpY2UgZXJyb3JzIHJlZ2FyZGluZyB0aGlzIGluIHRoZSBDTVNNUyBhZG1pbiBsb2cuJzsKJGxhbmdbJ2luX3Byb2dyZXNzJ10gPSAnSW4gUHJvZ3Jlc3MnOwoKI0oKJGxhbmdbJ2pvYnMnXSA9ICdKb2JzJzsKJGxhbmdbJ2pvYl9jcmVhdGVkJ10gPSAnQ3JlYXRlZCc7CiRsYW5nWydqb2JfaWQnXSA9ICdJZCc7CiRsYW5nWydqb2JfbW9kaWZpZWQnXSA9ICdNb2RpZmllZCc7CiRsYW5nWydqb2JfbmFtZSddID0gJ05hbWUnOwokbGFuZ1snam9iX293bmVyJ10gPSAnT3duZXInOwokbGFuZ1snam9iX3N0YXR1cyddID0gJ1N0YXR1cyc7CgoKI0sKCgojTAoKCiNNCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0EgbW9kdWxlIGZvciBtYW5hZ2luZyBqb2JzIHRoYXQgdGFrZSBjb25zaWRlcmFibGUgYW1vdW50cyBvZiB0aW1lJzsKJGxhbmdbJ21zZ19ub2pvYnMnXSA9ICdUaGVyZSBhcmUgbm8gam9icyBpbiB0aGUgZGF0YWJhc2UnOwoKI04KCgojTwoKCiNQCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBDR0pvYk1nciBtb2R1bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIENHSm9iTWdyIG1vZHVsZSBoYXMgYmVlbiB1bmluc3RhbGxlZC4gIFlvdSBtYXkgbm93IHNhZmVseSByZW1vdmUgdGhpcyBtb2R1bGUnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZWZpbmlzaGVkJ10gPSAnRGVsZXRlIEZpbmlzaGVkIEpvYnMnOwokbGFuZ1sncHJvbXB0X2RmbHRwYWdlJ10gPSAnRGVmYXVsdCBQYWdlIGZvciBQcm9jZXNzaW5nJzsKJGxhbmdbJ3Byb21wdF9wcm9jZXNzdXJsJ10gPSAnSm9iIFByb2Nlc3NpbmcgVVJMJzsKJGxhbmdbJ3Byb21wdF9zbGFjayddID0gJ0l0ZXJhdGl2ZSBUYXNrIFNsYWNrJzsKJGxhbmdbJ3Byb21wdF90aW1lb3V0J10gPSAnSXRlcmF0aW9uIFRpbWVvdXQgKHNlY29uZHMpJzsKCiNRCgoKI1IKCgojUwokbGFuZ1snc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwoKI1QKCgojVQokbGFuZ1sndW5zdGFydGVkJ10gPSAnTm90IFN0YXJ0ZWQnOwoKI1YKCgojVwoKCiNYCgoKI1kKCgojWgoKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_autohandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgY2dqb2JtZ3JfYXV0b2hhbmRsZXIgZXh0ZW5kcyBjZ2pvYm1ncl9qb2JoYW5kbGVyCnsKICBwdWJsaWMgZnVuY3Rpb24gcHJvY2VzcygpCiAgewogICAgJGpvYiA9JiAkdGhpcy0+X2pvYjsKCiAgICAvLyBwcm9jZXNzIGEgdGFzawogICAgc3dpdGNoKCAkam9iLT5nZXRfc3RhdHVzKCkgKQogICAgICB7CiAgICAgIGNhc2UgY2dqb2JtZ3Jfam9iOjpTVEFUVVNfVU5TVEFSVEVEOgoJdHJ5IAoJewoJICAvLyBpZiB0aGVyZSBpcyBhIHN0YXJ0IHRhc2sKCSAgaWYoICgkdGFzayA9ICRqb2ItPmdldF9zdGFydF90YXNrKCkpICkKCSAgICB7CgkgICAgICAkdGFzay0+ZXhlY3V0ZSgpOwoJICAgICAgYXVkaXQoJGpvYi0+Z2V0X2lkKCksJ0NHSm9iTWdyIC0gQXV0b0pvYkhhbmRsZXIgLS0gRXhlY3V0ZWQgc3RhcnQgdGFzazogJy4kdGFzay0+Z2V0X25hbWUoKSk7CgkgICAgfQoJICAkam9iLT5zZXRfc3RhdHVzKGNnam9ibWdyX2pvYjo6U1RBVFVTX0lOUFJPR1JFU1MpOwoJfQoJY2F0Y2goIEV4Y2VwdGlvbiAkZSApIAoJewoJICBhdWRpdCgkam9iLT5nZXRfaWQoKSwnQ0dKb2JNZ3InLCdFUlJPUjogJy4kZS0+Z2V0TWVzc2FnZSgpKTsKCSAgJGpvYi0+c2V0X3N0YXR1cyhjZ2pvYm1ncl9qb2I6OlNUQVRVU19FUlJPUik7Cgl9CglicmVhazsKCiAgICAgIGNhc2UgY2dqb2JtZ3Jfam9iOjpTVEFUVVNfSU5QUk9HUkVTUzoKCXRyeQoJewoJICAvLyBmaXJzdCwgZ2V0IHRoZSBjdXJyZW50IHRhc2suCgkgICR0YXNrID0gJGpvYi0+Z2V0X2N1cnJlbnRfdGFzaygpOwoJICBpZiggJHRhc2sgKQoJICAgIHsKCSAgICAgICR0YXNrLT5leGVjdXRlKCk7CgkgICAgICAkam9iLT5zZXRfcHJpb3JpdHkoJGpvYi0+Z2V0X3ByaW9yaXR5KCktMSk7CgkgICAgICBhdWRpdCgkam9iLT5nZXRfaWQoKSwnQ0dKb2JNZ3InLCdDR0pvYk1nciAtIEF1dG9Kb2JIYW5kbGVyIC0tIEV4ZWN1dGVkIHRhc2s6ICcuJHRhc2stPmdldF9uYW1lKCkuJyBzdGF0dXMgJy4kdGFzay0+Z2V0X3N0YXR1cygpKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkam9iLT5zZXRfc3RhdHVzKGNnam9ibWdyX2pvYjo6U1RBVFVTX0NPTVBMRVRJTkcpOwoJICAgIH0KCX0KCWNhdGNoKCBFeGNlcHRpb24gJGUgKSAKCXsKCSAgYXVkaXQoJGpvYi0+Z2V0X2lkKCksJ0NHSm9iTWdyJywnRVJST1I6ICcuJGUtPmdldE1lc3NhZ2UoKSk7CgkgICRqb2ItPnNldF9zdGF0dXMoY2dqb2JtZ3Jfam9iOjpTVEFUVVNfRVJST1IpOwoJfQoJYnJlYWs7CgogICAgICBjYXNlIGNnam9ibWdyX2pvYjo6U1RBVFVTX0NPTVBMRVRJTkc6Cgl0cnkgCgl7CgkgIC8vIGlmIHRoZXJlIGlzIGEgZW5kIHRhc2sKCSAgaWYoICgkdGFzayA9ICRqb2ItPmdldF9lbmRfdGFzaygpKSApCgkgICAgewoJICAgICAgJHRhc2stPmV4ZWN1dGUoKTsKCSAgICAgIGF1ZGl0KCRqb2ItPmdldF9pZCgpLCdDR0pvYk1ncicsJ0F1dG9Kb2JIYW5kbGVyIC0tIEV4ZWN1dGVkIGVuZCB0YXNrOiAnLiR0YXNrLT5nZXRfbmFtZSgpKTsKCSAgICB9CgkgICRqb2ItPnNldF9zdGF0dXMoY2dqb2JtZ3Jfam9iOjpTVEFUVVNfRklOSVNIRUQpOwoJfQoJY2F0Y2goIEV4Y2VwdGlvbiAkZSApIAoJewoJICBhdWRpdCgkam9iLT5nZXRfaWQoKSwnQ0dKb2JNZ3InLCdFUlJPUjogJy4kZS0+Z2V0TWVzc2FnZSgpKTsKCSAgJGpvYi0+c2V0X3N0YXR1cyhjZ2pvYm1ncl9qb2I6OlNUQVRVU19FUlJPUik7Cgl9CglicmVhazsKCiAgICAgIGRlZmF1bHQ6CgkvLyB0aHJvdyBhIG5ldyBleGNlcHRpb24sIHNob3VsZG4ndCBldmVyIGdldCBoZXJlLgoJdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCdKb2Igd2l0aCBpbnZhbGlkIHN0YXR1cyBhdHRlbXB0ZWQgdG8gcHJvY2VzcycpOwoJYnJlYWs7CiAgICAgIH0KCiAgICAvLyBoYW5kbGUgYW4gZXJyb3Igb3Igc29tZXRoaW5nCiAgICBzd2l0Y2goICRqb2ItPmdldF9zdGF0dXMoKSApCiAgICAgIHsKICAgICAgY2FzZSBjZ2pvYm1ncl9qb2I6OlNUQVRVU19FUlJPUjoKCS8vIGhlcmUgd2Ugd2lsbCB0cnkgdG8gc2VuZCBhbiBlbWFpbCBvciBzb21ldGhpbmcuCglicmVhazsKCiAgICAgIGRlZmF1bHQ6CgkvLyBkbyBub3RoaW5nLi4uCglicmVhazsKICAgICAgfQoKICAgIHJldHVybiAkam9iLT5nZXRfc3RhdHVzKCk7CiAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_iterativetask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgY2dqb2JtZ3JfaXRlcmF0aXZldGFzayBleHRlbmRzIGNnam9ibWdyX3Rhc2sKewogIC8qKgogICAqIFJ1biB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9ucy4KICAgKiBUaGlzIHRhc2sgY2FsbHMgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBhbmQgaW50ZXJwcmV0cyB0aGUgcmVzdWx0CiAgICoKICAgKiBJZiB0aGUgc3RhdHVzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uIGlzIGludmFsaWQsIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9ydW5fdGFzaygpCiAgewogICAgJGZuID0gJHRoaXMtPmdldF9mdW5jdGlvbigpOwogICAgaWYoICFpc19jYWxsYWJsZSgkZm4pICkKICAgICAgewoJdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCdJbnZhbGlkIGZ1bmN0aW9uIHNwZWNpZmljYXRpb24nKTsKICAgICAgfQoKICAgICRyZXMgPSBjYWxsX3VzZXJfZnVuY19hcnJheSgkZm4sYXJyYXkoJiR0aGlzKSk7CiAgICBzd2l0Y2goICRyZXMgKQogICAgICB7CiAgICAgIGNhc2Ugc2VsZjo6U1RBVFVTX0VSUk9SOgogICAgICBjYXNlIHNlbGY6OlNUQVRVU19JTkNPTVBMRVRFOgogICAgICBjYXNlIHNlbGY6OlNUQVRVU19DT01QTEVURToKCSR0aGlzLT5zZXRfc3RhdHVzKCRyZXMpOwoJcmV0dXJuICRyZXM7CiAgICAgIGRlZmF1bHQ6Cgl0aHJvdyBuZXcgQ0dKb2JNZ3JFeGNlcHRpb24oJ0ludmFsaWQgcmV0dXJuIHZhbHVlIGZyb20gdGFzayBmdW5jdGlvbicpOwogICAgICB9CiAgfQoKCiAgLyoqCiAgICogUGVyZm9ybSB0aGUgdGFzayBudW1lcm91cyB0aW1lcyB1bnRpbCBhbGxvd2VkIHRpbWUgaXMgZWxhcHNlZAogICAqCiAgICogVGhpcyBtZXRob2QgYXNrcyB0aGUgam9iIG1hbmFnZXIgZm9yIHRoZSBhbW91dCBvZiB0aW1lIHRoYXQgaXQgaXMgYWxsb3dlZCB0byBydW4sIGFuZCBvdGhlciBkYXRhCiAgICogdGhlbiBleGVjdXRlcyB0aGUgdGFzaywgYW5kIGNhbGN1bGF0ZXMgYSBydW5uaW5nIGF2ZXJhZ2Ugb2YgdGhlIGFtb3VudCBvZiB0aW1lIHJlcXVpcmVkIHRvIHBlcmZvcm0KICAgKiB0aGUgdGFzay4gIFRoZSBydW5uaW5nIGF2YWVyYWdlLCBhbmQgYSBzbGFjayBmYWN0b3IgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHRhc2sgY2FuIGJlCiAgICogZXhlY3V0ZWQgYWdhaW4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgpCiAgewogICAgJGpvYm1nciA9IGNnam9ibWdyX2pvYmhhbmRsZXI6OmdldF9pbnN0YW5jZSgpOwoKICAgIC8vIGdldCB0aGUgdG90YWwgYW1vdW50IG9mIHRpbWUgd2UncmUgYWxsb3dlZCB0byBwcm9jZXNzCiAgICAkb3JpZ190aW1lbGltaXQgPSBpbmlfZ2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnKTsKICAgIGlmKCAkb3JpZ190aW1lbGltaXQgPD0gMCApICRvcmlnX3RpbWVsaW1pdCA9IDMwOwogICAgJG1heF90aW1lbGltaXQgPSAkam9ibWdyLT5nZXRfdmFsdWUoJ21heF90aW1lJywwKTsKICAgICRtYXhfdGltZWxpbWl0ID0gbWF4KCRvcmlnX3RpbWVsaW1pdCwkbWF4X3RpbWVsaW1pdCk7CiAgICBzZXRfdGltZV9saW1pdCgkbWF4X3RpbWVsaW1pdCk7CgogICAgLy8gZ2V0IGEgc2xhY2sgZmFjdG9yLi4uCiAgICAkaXRlcmF0aXZlX3NsYWNrID0gJGpvYm1nci0+Z2V0X3ZhbHVlKCdpdGVyYXRpdmVfc2xhY2snLDEuNSk7CiAgICAkaXRlcmF0aXZlX3NsYWNrID0gbWF4KDAuMjUsbWluKDUsJGl0ZXJhdGl2ZV9zbGFjaykpOwoKICAgIC8vIHJlYWR5IHRvIGdvLgogICAgJHRvdGFsX3RpbWUgPSAwOwogICAgJGF2ZXJhZ2VfdGltZSA9IDA7CiAgICAkbnVtX2l0ZXJhdGlvbnMgPSAwOwogICAgd2hpbGUoICgkbWF4X3RpbWVsaW1pdCAtICR0b3RhbF90aW1lKSA+ICgkYXZlcmFnZV90aW1lICogJGl0ZXJhdGl2ZV9zbGFjaykgKQogICAgICB7Cgkkc3RhcnRfdGltZSA9IG1pY3JvdGltZSh0cnVlKTsKCSRzdGF0dXMgPSAkdGhpcy0+X3J1bl90YXNrKCk7CgoJJHRkID0gbWljcm90aW1lKHRydWUpIC0gJHN0YXJ0X3RpbWU7CgkkdG90YWxfdGltZSArPSAkdGQ7CgkkYXZlcmFnZV90aW1lID0gKCRhdmVyYWdlX3RpbWUgKiAkbnVtX2l0ZXJhdGlvbnMgKyAkdGQpLygkbnVtX2l0ZXJhdGlvbnMgKyAxKTsKCSRudW1faXRlcmF0aW9ucysrOwoKCXN3aXRjaCggJHN0YXR1cyApCgkgIHsKCSAgY2FzZSBzZWxmOjpTVEFUVVNfRVJST1I6CgkgICAgJHRoaXMtPnNldF9zdGF0dXMoJHN0YXR1cyk7CgkgICAgdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCR0aGlzLT5nZXRfbmFtZSgpLicgZmFpbGVkJyk7CgoJICBjYXNlIHNlbGY6OlNUQVRVU19DT01QTEVURToKCSAgICAvLyBkb25lCgkgICAgJHRoaXMtPnNldF9zdGF0dXMoJHN0YXR1cyk7CgkgICAgcmV0dXJuOwoKCSAgY2FzZSBzZWxmOjpTVEFUVVNfSU5DT01QTEVURToKCSAgICAvLyBnbyBhdCBpdCBhZ2FpbgoJICAgICR0aGlzLT5zZXRfc3RhdHVzKCRzdGF0dXMpOwoJICAgIGJyZWFrOwoKCSAgZGVmYXVsdDoKCSAgICB0aHJvdyBuZXcgQ0dKb2JNZ3JFeGNlcHRpb24oJ0ludmFsaWQgcmV0dXJuIHZhbHVlIGZyb20gdGFzayBmdW5jdGlvbicpOwoJICB9CiAgICAgIH0KICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_job.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgY2dqb2JtZ3Jfam9iCnsKICBjb25zdCBTVEFUVVNfVU5TVEFSVEVEICA9ICd1bnN0YXJ0ZWQnOwogIGNvbnN0IFNUQVRVU19JTlBST0dSRVNTID0gJ2luX3Byb2dyZXNzJzsKICBjb25zdCBTVEFUVVNfRVJST1IgICAgICA9ICdlcnJvcic7CiAgY29uc3QgU1RBVFVTX0NPTVBMRVRJTkcgPSAnY29tcGxldGluZyc7CiAgY29uc3QgU1RBVFVTX0ZJTklTSEVEICAgPSAnZmluaXNoZWQnOwogIGNvbnN0IFNUQVRVU19BQk9SVEVEICAgID0gJ2Fib3J0ZWQnOwogIGNvbnN0IFBSSU9SSVRZX0hJR0ggICAgID0gMzAwOwogIGNvbnN0IFBSSU9SSVRZX05PUk1BTCAgID0gMjAwOwogIGNvbnN0IFBSSU9SSVRZX0xPVyAgICAgID0gMTAwOwoKICBwcml2YXRlICRfaWQ7CiAgcHJpdmF0ZSAkX293bmVyOwogIHByaXZhdGUgJF9uYW1lOwogIHByaXZhdGUgJF9wcmlvcml0eTsKICBwcml2YXRlICRfc3RhdHVzOwogIHByaXZhdGUgJF9wZXJzaXN0ZW50OwoKICBwcml2YXRlICRfc3RhcnRfdGFzazsKICBwcml2YXRlICRfdGFza3M7CiAgcHJpdmF0ZSAkX2VuZF90YXNrOwoKCiAgLyoqCiAgICogQ29uc3RydWN0b3IKICAgKgogICAqIEF1dG1hdGljYWxseSBjcmVhdGVzIGEgbmV3IGpvYiB3aXRoIGEgbm9ybWFsIHByaW9yaXR5LCBhbmQgYSBzdGF0dXMgb2YgVU5TVEFSVEVECiAgICoKICAgKiBAcGFyYW0gc3RyaW5nIFRoZSBuYW1lIGZvciB0aGUgam9iIChvcHRpb25hbCkKICAgKiBAcGFyYW0gaW50ZWdlciBUaGUgam9iIG93bmVyJ3MgdWlkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lID0gJycsJG93bmVyID0gLTEsJHByaW9yaXR5ID0gc2VsZjo6UFJJT1JJVFlfTk9STUFMKQogIHsKICAgICR0aGlzLT5fbmFtZSA9ICRuYW1lOwogICAgJHRoaXMtPl9wcmlvcml0eSA9ICRwcmlvcml0eTsKICAgICR0aGlzLT5fb3duZXIgPSAkb3duZXI7CiAgICAkdGhpcy0+c2V0X3N0YXR1cyhzZWxmOjpTVEFUVVNfVU5TVEFSVEVEKTsKICB9CgoKICAvKioKICAgKiBSZXR1cm4gdGhlIGpvYiBpZCAoaWYgdGhlIGpvYiBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkKQogICAqCiAgICogQHJldHJ1biBtaXhlZCAgaW50ZWdlciBqb2IgaWQgaWYgdGhlIGpvYiBoYXMgYmVlbiBzYXZlZCwgb3IgbnVsbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfaWQoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2lkOwogIH0KCgogIC8qKgogICAqIFNldCBhbiBvcHRpb25hbCBzdGFydCB0YXNrICh0byBiZSBkb25lIGJlZm9yZSByZWd1bGFyIHRhc2tzKQogICAqCiAgICogQHBhcmFtIGNnam9ibWdyX3Rhc2sgVGhlIHRhc2sgb2JqZWN0CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHNldF9zdGFydF90YXNrKGNnam9ibWdyX3Rhc2smICRzdGFydF90YXNrKQogIHsKICAgICR0aGlzLT5fc3RhcnRfdGFzayA9ICRzdGFydF90YXNrOwogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIHRoZSBzdGFydCB0YXNrIChpZiBhbnkpCiAgICoKICAgKiBAcmV0dXJucyBjZ2pvYm1ncl90YXNrIG9iamVjdCwgb3IgbnVsbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfc3RhcnRfdGFzaygpCiAgewogICAgcmV0dXJuICR0aGlzLT5fc3RhcnRfdGFzazsKICB9CgoKICAvKioKICAgKiBTZXQgYW4gb3B0aW9uYWwgZW5kIHRhc2sgKHRvIGJlIGRvbmUgYWZ0ZXIgcmVndWxhciB0YXNrcykKICAgKgogICAqIEBwYXJhbSBjZ2pvYm1ncl90YXNrIFRoZSB0YXNrIG9iamVjdAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBzZXRfZW5kX3Rhc2soY2dqb2JtZ3JfdGFzayYgJGVuZF90YXNrKQogIHsKICAgICR0aGlzLT5fZW5kX3Rhc2sgPSAkZW5kX3Rhc2s7CiAgfQoKCiAgLyoqCiAgICogUmV0cmlldmUgdGhlIGVuZCB0YXNrIChpZiBhbnkpCiAgICoKICAgKiBAcmV0dXJucyBjZ2pvYm1ncl90YXNrIG9iamVjdCwgb3IgbnVsbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfZW5kX3Rhc2soKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2VuZF90YXNrOwogIH0KCgogIC8qKgogICAqIEFkZCBhIHRhc2sgaW50byB0aGUgcHJvY2Vzc2luZyBsb29wCiAgICoKICAgKgogICAqIEBwYXJhbSBjZ2pvYm1ncl90YXNrIFRoZSB0YXNrIG9iamVjdAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBhZGRfdGFzayhjZ2pvYm1ncl90YXNrJiAkdGFzaykKICB7CiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fdGFza3MpICkgJHRoaXMtPl90YXNrcyA9IGFycmF5KCk7CiAgICAkdGhpcy0+X3Rhc2tzW10gPSAkdGFzazsKICB9CgoKICAvKioKICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBqb2IKICAgKgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfc3RhdHVzKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9zdGF0dXM7CiAgfQoKCiAgLyoqCiAgICogU2V0IHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgam9iCiAgICogTW9zdCBkZXZlbG9wZXJzIHdpbGwgbm90IG5lZWQgdGhpcyBtZXRob2QuCiAgICoKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0YXR1cygkc3RhdHVzKQogIHsKICAgIHN3aXRjaCggJHN0YXR1cyApCiAgICAgIHsKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfVU5TVEFSVEVEOgogICAgICBjYXNlIHNlbGY6OlNUQVRVU19JTlBST0dSRVNTOgogICAgICBjYXNlIHNlbGY6OlNUQVRVU19FUlJPUjoKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfQ09NUExFVElORzoKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfRklOSVNIRUQ6CiAgICAgIGNhc2Ugc2VsZjo6U1RBVFVTX0FCT1JURUQ6CgkkdGhpcy0+X3N0YXR1cyA9ICRzdGF0dXM7CglicmVhazsKCiAgICAgIGRlZmF1bHQ6Cgl0aHJvdyBuZXcgQ0dKb2JNZ3JFeGNlcHRpb24oJ0F0dGVtcHQgdG8gc2V0IGpvYiB0byBpbnZhbGlkIHN0YXR1czogJy4kc3RhdHVzKTsKICAgICAgfQogIH0KCgogIC8qKgogICAqIFJldHVybiB0aGUgY3VycmVudCBqb2IgcHJpb3JpdHkKICAgKgogICAqIEByZXR1cm5zIGludGVnZXIKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByaW9yaXR5KCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9wcmlvcml0eTsKICB9CgoKICAvKioKICAgKiBTZXQgdGhlIGpvYiBwcmlvcml0eQogICAqCiAgICogQHBhcmFtIGludGVnZXIgcHJpb3JpdHkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ByaW9yaXR5KCRwcmlvcml0eSkKICB7CiAgICAkcHJpb3JpdHkgPSBtYXgoJHByaW9yaXR5LDApOwogICAgJHByaW9yaXR5ID0gbWluKCRwcmlvcml0eSxzZWxmOjpQUklPUklUWV9ISUdIKTsKICAgICR0aGlzLT5fcHJpb3JpdHkgPSAkcHJpb3JpdHk7CiAgfQoKCiAgLyoqCiAgICogUmV0cmlldmUgYSBwaWVjZSBvZiBkYXRhIGF0dGFjaGVkIHRvIHRoZSBqb2IKICAgKgogICAqIEBwYXJhbSBzdHJpbmcgVGhlIGtleSBmb3IgdGhlIGRhdGEKICAgKiBAcGFyYW0gbWl4ZWQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBkYXRhCiAgICogQHJldHVybnMgbWl4ZWQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BlcnNpc3RlbnRfdmFsdWUoJGtleSwkZGZsdCA9ICcnKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9wZXJzaXN0ZW50KSApIHJldHVybiAkZGZsdDsKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9wZXJzaXN0ZW50WyRrZXldKSApIHJldHVybiAkZGZsdDsKICAgIHJldHVybiAkdGhpcy0+X3BlcnNpc3RlbnRbJGtleV07CiAgfQoKCiAgLyoqCiAgICogQXR0YWNoIGEgcGllY2Ugb2YgZGF0YSB0byB0aGUgam9iLgogICAqIFRoZSBkYXRhIGlzIHNlcmlhbGl6ZWQgYW5kIHN0b3JlZCB3aXRoIHRoZSBqb2Igd2hlbiBpdCBpcyBzYXZlZC4KICAgKgogICAqIEBwYXJhbSBzdHJpbmcgVGhlIGtleSBmb3IgdGhlIGRhdGEKICAgKiBAcGFyYW0gbWl4ZWQgIFRoZSBkYXRhIHRvIHNhdmUuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHNldF9wZXJzaXN0ZW50X3ZhbHVlKCRrZXksJHZhbCkKICB7CiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fcGVyc2lzdGVudCkgKSAkdGhpcy0+X3BlcnNpc3RlbnQgPSBhcnJheSgpOwogICAgJHRoaXMtPl9wZXJzaXN0ZW50WyRrZXldID0gJHZhbDsKICB9CgoKICAvKioKICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGFzayB0aGF0IHRvIHByb2Nlc3MKICAgKgogICAqIEBpbnRlcm5hbAogICAqIEByZXR1cm5zIGNnam9ibWdyX3Rhc2sgZGVyaXZlZCBvYmplY3QKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gJmdldF9jdXJyZW50X3Rhc2soKQogIHsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fdGFza3MpOyAkaSsrICkKICAgICAgewoJaWYoICR0aGlzLT5fdGFza3NbJGldLT5nZXRfc3RhdHVzKCkgPT0gY2dqb2JtZ3JfdGFzazo6U1RBVFVTX0NPTVBMRVRFICkgY29udGludWU7CgkKCXJldHVybiAkdGhpcy0+X3Rhc2tzWyRpXTsKICAgICAgfQogIH0KCgogIC8qKgogICAqIENyZWF0ZSBhIGpvYiBvYmplY3QgZnJvbSBkYXRhYmFzZSBkYXRhCiAgICoKICAgKiBAaW50ZXJuYWwKICAgKiBAcmV0dXJucyBjZ2pvYm1ncl9qb2Igb2JqZWN0CiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkX2Zyb21fZGF0YSgkcm93KQogIHsKICAgICRvYmogPSBuZXcgY2dqb2JtZ3Jfam9iKCk7CiAgICBmb3JlYWNoKCAkcm93IGFzICRrZXkgPT4gJHZhbHVlICkKICAgICAgewoJc3dpdGNoKCAka2V5ICkKCSAgewoJICBjYXNlICdpZCc6CgkgIGNhc2UgJ25hbWUnOgoJICBjYXNlICdvd25lcic6CgkgIGNhc2UgJ3ByaW9yaXR5JzoKCSAgY2FzZSAnc3RhdHVzJzoKCSAgICAkZmxkID0gJ18nLiRrZXk7CgkgICAgJG9iai0+JGZsZCA9ICR2YWx1ZTsKCSAgICBicmVhazsKCSAgICAKCSAgY2FzZSAnYXNzb2MnOgoJICAgICRvYmotPl9wZXJzaXN0ZW50ID0gdW5zZXJpYWxpemUoJHZhbHVlKTsKCSAgICBicmVhazsKCSAgICAKCSAgY2FzZSAndGFza3MnOgoJICAgICRvYmotPl90YXNrcyA9IHVuc2VyaWFsaXplKCR2YWx1ZSk7CgkgICAgYnJlYWs7CgkgICAgCgkgIGNhc2UgJ2NyZWF0ZWQnOgoJICBjYXNlICdtb2RpZmllZCc6CgkgIGNhc2UgJ2xvY2tlZCc6CgkgICAgYnJlYWs7CgoJICBkZWZhdWx0OgoJICAgIHRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbignVW5rbm93biBmaWVsZCAnLiRrZXkuJyBpbiByb3cgZGF0YScpOwoJICB9CiAgICAgIH0gLy8gZm9yZWFjaAoKICAgIHJldHVybiAkb2JqOwogIH0KCgogIHByaXZhdGUgZnVuY3Rpb24gX2luc2VydCgpCiAgewogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2Nnam9ibWdyCiAgICAgICAgICAgICAgKG5hbWUsb3duZXIscHJpb3JpdHksc3RhdHVzLGFzc29jLHRhc2tzLGNyZWF0ZWQsbW9kaWZpZWQpCiAgICAgICAgICAgICAgVkFMVUVTICg/LD8sPyw/LD8sPyxOT1coKSxOT1coKSkiOwogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksCgkJCWFycmF5KCR0aGlzLT5fbmFtZSwkdGhpcy0+X293bmVyLCR0aGlzLT5fcHJpb3JpdHksCgkJCSAgICAgICR0aGlzLT5fc3RhdHVzLHNlcmlhbGl6ZSgkdGhpcy0+X3BlcnNpc3RlbnQpLAoJCQkgICAgICBzZXJpYWxpemUoJHRoaXMtPl90YXNrcykpKTsKICAgIGlmKCAhJGRiciApCiAgICAgIHRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbignRXJyb3IgSW5zZXJ0aW5nIGpvYiByZWNvcmQgJyk7CgogICAgJHRoaXMtPl9pZCA9ICRkYi0+SW5zZXJ0X0lkKCk7CiAgfQoKCiAgcHJpdmF0ZSBmdW5jdGlvbiBfdXBkYXRlKCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2Nnam9ibWdyCiAgICAgICAgICAgICAgU0VUIG5hbWUgPSA/LCBvd25lciA9ID8sIHByaW9yaXR5ID0gPywgc3RhdHVzID0gPywKICAgICAgICAgICAgICAgICAgYXNzb2MgPSA/LCB0YXNrcyA9ID8sIG1vZGlmaWVkID0gTk9XKCkKICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8iOwogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksCgkJCWFycmF5KCR0aGlzLT5fbmFtZSwkdGhpcy0+X293bmVyLCR0aGlzLT5fcHJpb3JpdHksCgkJCSAgICAgICR0aGlzLT5fc3RhdHVzLHNlcmlhbGl6ZSgkdGhpcy0+X3BlcnNpc3RlbnQpLAoJCQkgICAgICBzZXJpYWxpemUoJHRoaXMtPl90YXNrcyksJHRoaXMtPl9pZCkpOwogICAgaWYoICEkZGJyICkKICAgICAgdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCdFcnJvciBJbnNlcnRpbmcgam9iIHJlY29yZCAnKTsKICB9CgoKICAvKioKICAgKiBTYXZlIHRoZSBqb2JzIGN1cnJlbnQgc3RhdGUgdG8gdGhlIGRhdGFiYXNlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogIHsKICAgIGlmKCAkdGhpcy0+X2lkIDw9IDAgKQogICAgICB7CglyZXR1cm4gJHRoaXMtPl9pbnNlcnQoKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CglyZXR1cm4gJHRoaXMtPl91cGRhdGUoKTsKICAgICAgfQogIH0KCgogIC8qKgogICAqIExvY2sgdGhlIGN1cnJlbnQgam9iIHNvIHRoYXQgaXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhlIGF1dG9tYXRpYyBwcm9jZXNzIGhhbmRsaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGxvY2soKQogIHsKICAgIGlmKCAhJHRoaXMtPl9pZCApCiAgICAgIHRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbignQXR0ZW1wdCB0byBsb2NrIGEgam9iIHRoYXQgaGFzIG5vdCBiZWVuIHNhdmVkJyk7CgogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2pvYm1nciBTRVQgbG9ja2VkID0gMSBXSEVSRSBpZCA9ID8nOwogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXMtPl9pZCkpOwogICAgaWYoICRkYi0+RXJyb3JNc2coKSApCiAgICAgIHRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbignUHJvYmxlbSBsb2NraW5nIGpvYiAnLiR0aGlzLT5faWQpOwogIH0KCgogIC8qKgogICAqIFVubG9jayB0aGUgY3VycmVudCBqb2IgdG8gYWxsb3cgZm9yIGF1dG9tYXRpYyBwcm9jZXNzaW5nLgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiB1bmxvY2soKQogIHsKICAgIGlmKCAhJHRoaXMtPl9pZCApCiAgICAgIHRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbignQXR0ZW1wdCB0byB1bmxvY2sgYSBqb2IgdGhhdCBoYXMgbm90IGJlZW4gc2F2ZWQnKTsKCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2Nnam9ibWdyIFNFVCBsb2NrZWQgPSAwIFdIRVJFIGlkID0gPyc7CiAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2lkKSk7CiAgICBpZiggJGRiLT5FcnJvck1zZygpICkKICAgICAgdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCdQcm9ibGVtIHVubG9ja2luZyBqb2IgJy4kdGhpcy0+X2lkKTsKICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_jobhandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKYWJzdHJhY3QgY2xhc3MgY2dqb2JtZ3Jfam9iaGFuZGxlcgp7CiAgcHJvdGVjdGVkICRfam9iOwogIHByaXZhdGUgICAkX3ZhbHVlczsKCiAgc3RhdGljIHByaXZhdGUgJF9pbnN0YW5jZTsKCiAgLyoqCiAgICogSW5pdGlhbGl6ZSB0aGUgam9iIG1hbmFnZXIgd2l0aCBhIGpvYgogICAqCiAgICogQHBhcmFtIGNnam9ibWdyX2pvYiBUaGUgam9iIG9iamVjdC4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY2dqb2JtZ3Jfam9iJiAkam9iKQogIHsKICAgIGlmKCBpc19vYmplY3Qoc2VsZjo6JF9pbnN0YW5jZSkgKQogICAgICB0aHJvdyBuZXcgQ0dKb2JNZ3JFeGNlcHRpb24oJ0F0dGVtcHQgdG8gY3JlYXRlIG11bHRpcGxlIGpvYiBtYW5hZ2VycycpOwoKICAgIHNlbGY6OiRfaW5zdGFuY2UgPSAkdGhpczsKICAgICR0aGlzLT5fam9iID0gJGpvYjsKICB9CgogIC8qKgogICAqIFByb2Nlc3MgdGhlIGpvYiB0byB0aGUgbmV4dCBzdGVwCiAgICovCiAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoKTsKCiAgLyoqCiAgICogR2V0IHRoZSBqb2IgaW5zdGFuY2UKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZnZXRfaW5zdGFuY2UoKQogIHsKICAgIHJldHVybiBzZWxmOjokX2luc3RhbmNlOwogIH0KCiAgLyoqCiAgICogQXR0YWNoIGRhdGEgdG8gdGhlIGpvYiBoYW5kbGVyLgogICAqIFRoaXMgZGF0YSBpcyBvbmx5IHZhbGlkIGZvciBvbmUgcmVxdWVzdC4gIEl0IGlzIG5vdCBzZXJpYWxpemVkIG9yIHN0b3JlZC4KICAgKgogICAqIEBwYXJhbSBzdHJpbmcgVGhlIGRhdGEga2V5CiAgICogQHBhcmFtIG1peGVkICBUaGUgdmFsdWUuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHNldF92YWx1ZSgka2V5LCR2YWx1ZSkKICB7CiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fdmFsdWVzKSApICR0aGlzLT5fdmFsdWVzID0gYXJyYXkoKTsKICAgICR0aGlzLT5fdmFsdWVzWyRrZXldID0gJHZhbHVlOwogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIGRhdGEgYXR0YWNoZWQgdG8gdGhlIGpvYiBoYW5kbGVyCiAgICoKICAgKiBAcGFyYW0gc3RyaW5nIFRoZSBkYXRhIGtleQogICAqIEBwYXJhbSBtaXhlZCAgVGhlIGRlZmF1bHQgZGF0YSBpZiB0aGUgZGF0YSBoYXMgbm90IGJlZW4gc2V0CiAgICogQHJldHVybnMgbWl4ZWQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ZhbHVlKCRrZXksJGRmbHQgPSAnJykKICB7CiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fdmFsdWVzKSApIHJldHVybiAkZGZsdDsKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl92YWx1ZXNbJGtleV0pICkgcmV0dXJuICRkZmx0OwogICAgCiAgICByZXR1cm4gJHRoaXMtPl92YWx1ZXNbJGtleV07CiAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_simpletask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgY2dqb2JtZ3Jfc2ltcGxldGFzayBleHRlbmRzIGNnam9ibWdyX3Rhc2sKewogIC8qKgogICAqIFJ1biB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9ucy4KICAgKiBUaGlzIHRhc2sgY2FsbHMgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBhbmQgaW50ZXJwcmV0cyB0aGUgcmVzdWx0CiAgICoKICAgKiBJZiB0aGUgc3RhdHVzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uIGlzIGludmFsaWQsIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9ydW5fdGFzaygpCiAgewogICAgJGZuID0gJHRoaXMtPmdldF9mdW5jdGlvbigpOwogICAgaWYoICFpc19jYWxsYWJsZSgkZm4pICkKICAgICAgewoJdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCdJbnZhbGlkIGZ1bmN0aW9uIHNwZWNpZmljYXRpb24nKTsKICAgICAgfQogICAgLy8gdGhpcyBpcyBhIHJlZ3VsYXIgdGFzay4uLiBpdCBydW5zIG9uY2UgYW5kIHRoZW4gd2UgZ28gb24gdG8gdGhlIHRoZSBuZXh0IG9uZS4KICAgIAogICAgJHJlcyA9IGNhbGxfdXNlcl9mdW5jX2FycmF5KCRmbixhcnJheSgmJHRoaXMpKTsKICAgIHN3aXRjaCggJHJlcyApCiAgICAgIHsKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfRVJST1I6CgkkdGhpcy0+c2V0X3N0YXR1cygkcmVzKTsKCXRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbigkdGhpcy0+Z2V0X25hbWUoKS4nIGZhaWxlZCcpOwoJCiAgICAgIGNhc2Ugc2VsZjo6U1RBVFVTX0NPTVBMRVRFOgoJJHRoaXMtPnNldF9zdGF0dXMoJHJlcyk7CglyZXR1cm4gJHJlczsKCiAgICAgIGRlZmF1bHQ6Cgl0aHJvdyBuZXcgQ0dKb2JNZ3JFeGNlcHRpb24oJ0ludmFsaWQgcmV0dXJuIHZhbHVlIGZyb20gdGFzayBmdW5jdGlvbicpOwogICAgICB9CiAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_task.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKYWJzdHJhY3QgY2xhc3MgY2dqb2JtZ3JfdGFzawp7CiAgY29uc3QgU1RBVFVTX05PTkUgPSAnbm9uZSc7CiAgY29uc3QgU1RBVFVTX0VSUk9SID0gJ2Vycm9yJzsKICBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9ICdpbmNvbXBsZXRlJzsKICBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSAnY29tcGxldGUnOwogIAogIHByaXZhdGUgJF9uYW1lOwogIHByaXZhdGUgJF9wZXJzaXNldGVudDsKICBwcml2YXRlICRfZnVuY3Rpb247CgogIC8qKgogICAqIENvbnN0cnVjdG9yCiAgICoKICAgKiBAcGFyYW0gc3RyaW5nIFRoZSB0YXNrIG5hbWUKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUgPSAnJykKICB7CiAgICAkdGhpcy0+c2V0X3BlcnNpc3RlbnRfZGF0YSgnc3RhdHVzJyxzZWxmOjpTVEFUVVNfTk9ORSk7CiAgICAkdGhpcy0+X25hbWUgPSAkbmFtZTsKICB9CgoKICAvKioKICAgKiBHZXQgdGhlIHRhc2sgbmFtZQogICAqCiAgICogQHJldHVybnMgc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9uYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9uYW1lOwogIH0KCgogIC8qKgogICAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IHRoZSB0YXNrIHRvIGFjdHVhbGx5IGRvIHRoZSB3b3JrCiAgICoKICAgKiBpLmU6ICAkdGFzay0+c2V0X2Z1bmN0aW9uKCdzb21lX2Z1bmN0aW9uJyk7CiAgICogaS5lOiAgJHRhc2stPnNldF9mdW5jdGlvbignc29tZV9jbGFzczo6c29tZV9mdW5jdGlvbicpOyAtLSBjYWxsIGEgc3RhdGljIG1ldGhvZAogICAqIGkuZTogICR0YXNrLT5zZXRfZnVuY3Rpb24oYXJyYXkoJ3NvbWVfY2xhc3MnLCdzb21lX2Z1bmN0aW9uJykpOyAtLSBjYWxsIGEgc3RhdGljIG1ldGhvZAogICAqCiAgICogQHBhcmFtIG1peGVkIGZuLi4uIG1heSBiZSBhIHN0cmluZyBjb250YWluaW5nIGEgZnVuY3Rpb24gbmFtZSAob3Igc3RhdGljIG1ldGhvZCBuYW1lKQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBzZXRfZnVuY3Rpb24oJGZuKQogIHsKICAgIGlmKCBpc19zdHJpbmcoJGZuKSApCiAgICAgIHsKCSR0aGlzLT5fZnVuY3Rpb24gPSAkZm47CiAgICAgIH0KICAgIGVsc2UgaWYoIGlzX2FycmF5KCRmbikgJiYgY291bnQoJGZuKSA9PSAyICYmIGlzX3N0cmluZygkZm5bMF0pICYmIGlzX3N0cmluZygkZm5bMV0pICkKICAgICAgewoJJHRoaXMtPl9mdW5jdGlvbiA9ICRmbjsKICAgICAgfQogICAgZWxzZQogICAgICB7Cgl0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbnZhbGlkIHZhbHVlIHBhc3NlZCB0byBzZXRfZnVuY3Rpb24nKTsKICAgICAgfQogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIGRhdGEgc3RvcmVkIHdpdGggdGhlIHRhc2sKICAgKgogICAqIEBwYXJhbSBzdHJpbmcgdGhlIGRhdGEga2V5CiAgICogQHBhcmFtIG1peGVkIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUga2V5IGlmIGl0IGNhbm5vdCBiZSBmb3VuZAogICAqIEByZXR1cm5zIG1peGVkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9wZXJzaXN0ZW50X2RhdGEoJGtleSwkZGZsdCA9ICcnKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9wZXJzaXN0ZW50KSApIHJldHVybiAkZGZsdDsKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9wZXJzaXN0ZW50WyRrZXldKSApIHJldHVybiAkZGZsdDsKICAgIHJldHVybiAkdGhpcy0+X3BlcnNpc3RlbnRbJGtleV07CiAgfQoKCiAgLyoqCiAgICogQXNzb2NpYXRlIGRhdGEgd2l0aCB0aGUgdGFzay4KICAgKiBUaGUgZGF0YSBpcyBzZXJpYWxpemVkIGJlZm9yZSBiZWluZyBzYXZlZC4KICAgKgogICAqIEBwYXJhbSBzdHJpbmcgVGhlIGRhdGEga2V5CiAgICogQHBhcmFtIG1peGVkICBUaGUgZGF0YSB0byBzdG9yZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBzZXRfcGVyc2lzdGVudF9kYXRhKCRrZXksJHZhbHVlKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9wZXJzaXN0ZW50KSApICR0aGlzLT5fcGVyc2lzdGVudCA9IGFycmF5KCk7CiAgICAkdGhpcy0+X3BlcnNpc3RlbnRbJGtleV0gPSAkdmFsdWU7CiAgfQoKCiAgLyoqCiAgICogUmV0cmlldmVzIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgZG8gdGhlIGFjdHVhbCB3b3JrIGZvciB0aGUgdGFzawogICAqIAogICAqIEByZXR1cm5zIG1peGVkCiAgICogQGludGVybmFsCiAgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9mdW5jdGlvbigpCiAgewogICAgaWYoICEkdGhpcy0+X2Z1bmN0aW9uICkKICAgICAgdGhyb3cgbmV3IENHSm9iTWdyRXhjZXB0aW9uKCdObyBmdW5jdGlvbiBkZWZpbmVkIGZvciB0YXNrJyk7CgogICAgcmV0dXJuICR0aGlzLT5fZnVuY3Rpb247CiAgfQoKCiAgLyoqCiAgICogUHJvdGVjdGVkIG1ldGhvZCB0aGF0IGFjdHVhbGx5IGNhbGxzIHRoZSBwcm9jZXNzaW5nIGZ1bmN0aW9uCiAgICogCiAgICogQGludGVybmFsCiAgICogQHJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgdGFzawogICAqLwogIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBfcnVuX3Rhc2soKTsKCgogIC8qKgogICAqIFNldCB0aGUgdGFzayBzdGF0dXMKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0YXR1cygkc3RhdHVzKQogIHsKICAgIHN3aXRjaCggJHN0YXR1cyApCiAgICAgIHsKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfTk9ORToKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfSU5DT01QTEVURToKICAgICAgY2FzZSBzZWxmOjpTVEFUVVNfQ09NUExFVEU6CgkkdGhpcy0+c2V0X3BlcnNpc3RlbnRfZGF0YSgnX19zdGF0dXNfXycsJHN0YXR1cyk7CglicmVhazsKICAgICAgZGVmYXVsdDoKCXRocm93IG5ldyBDR0pvYk1nckV4Y2VwdGlvbignQ2Fubm90IHNldCB0YXNrIHN0YXR1cyB0bzogJy4kc3RhdHVzKTsKICAgICAgfQogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIHRoZSB0YXNrIHN0YXR1cwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfc3RhdHVzKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPmdldF9wZXJzaXN0ZW50X2RhdGEoJ19fc3RhdHVzX18nLHNlbGY6OlNUQVRVU19OT05FKTsKICB9CgoKICAvKioKICAgKiBFeGVjdXRlIHRoZSB0YXNrCiAgICoKICAgKiBAcmV0dXJucyB0aGUgc3RhdHVzIG9mIHRoZSB0YXNrCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogIHsKICAgICRyZXMgPSAkdGhpcy0+X3J1bl90YXNrKCk7CiAgICByZXR1cm4gJHJlczsKICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgjobmgr_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgY2dqb2JtZ3JfdXRpbHMKewogIHByb3RlY3RlZCBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9IAoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhdmVfam9iKGNnam9ibWdyX2pvYiYgJGpvYikKICB7CiAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/extraclasses.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgQ0dKb2JNZ3JFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24ge30KCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgokZGIgPSBjbXNtcygpLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgokZmxkcyA9ICdpZCBJIEFVVE8gS0VZLAogICAgICAgICBuYW1lIEMoMjU1KSwgCiAgICAgICAgIG93bmVyIEksCiAgICAgICAgIHByaW9yaXR5IEksCiAgICAgICAgIHN0YXR1cyBDKDI1KSwKICAgICAgICAgYXNzb2MgIFgsCiAgICAgICAgIHRhc2tzICBYLAogICAgICAgICBsb2NrZWQgIEkxLAogICAgICAgICBjcmVhdGVkICcuQ01TX0FET0RCX0RULicsCiAgICAgICAgIG1vZGlmaWVkICcuQ01TX0FET0RCX0RUOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2dqb2JtZ3InLCRmbGRzLCR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgSm9icycsJ01hbmFnZSBKb2JzJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHSm9iTWdyIChjKSAyMDExIGJ5IFJvYmVydCBDYW1wYmVsbCAKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBtYW5hZ2Ugam9icyB0aGF0IHRha2UgY29uc2lkZXJhYmxlCiMgIGFtb3VudHMgb2YgdGltZSB0byBwcm9jZXNzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2Nnam9ibWdyIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgokdGhpcy0+RGVsZXRlVGVtcGxhdGUoKTsKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBKb2JzJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_jobstab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFpc3NldCgkam9icyl9CjxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiByZWQ7Ij57JG1vZC0+TGFuZygnbXNnX25vam9icycpfTwvcD4Ke2Vsc2V9Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2pvYl9pZCcpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnam9iX25hbWUnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2pvYl9vd25lcicpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnam9iX3N0YXR1cycpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnam9iX2NyZWF0ZWQnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2pvYl9tb2RpZmllZCcpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnsqIGRlbGV0ZSAqfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnsqIGNoZWNrYm94ICp9PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggZnJvbT0kam9icyBpdGVtPSdqb2InfQogICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQogICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KICAgICAgPHRkPnskam9iLmlkfTwvdGQ+CiAgICAgIDx0ZD57JGpvYi5uYW1lfTwvdGQ+CiAgICAgIDx0ZD57aWYgaXNzZXQoJGpvYi5vd25lcl9uYW1lKX17JGpvYi5vd25lcl9uYW1lfSB7L2lmfXtpZiAkam9iLm93bmVyfSh7JGpvYi5vd25lcn0pey9pZn08L3RkPgogICAgICA8dGQ+eyRtb2QtPkxhbmcoJGpvYi5zdGF0dXMpfTwvdGQ+IAogICAgICA8dGQ+eyRqb2IuY3JlYXRlZHxjbXNfZGF0ZV9mb3JtYXR9PC90ZD4KICAgICAgPHRkPnskam9iLm1vZGlmaWVkfGNtc19kYXRlX2Zvcm1hdH08L3RkPgogICAgICA8dGQ+eyRqb2IuZGVsZXRlX2xpbmt9PC90ZD4KICAgICAgPHRkPjwvdGQ+CiAgICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CnskbGlua19kZWxldGVmaW5pc2hlZH0KPC9kaXY+CnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_settingstab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3Byb2Nlc3N1cmwnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGEgc3R5bGU9ImNvbG9yOiBibHVlOyIgaHJlZj0ieyRwcm9jZXNzX3VybH0iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2NsaWNrbWVfcHJvY2Vzc3VybCcpfSI+eyRwcm9jZXNzX3VybH08L2E+CiAgICA8YnIvPgogICAgeyRtb2QtPkxhbmcoJ2luZm9fcHJvY2Vzc3VybCcpfQogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RmbHRwYWdlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIHskaW5wdXRfZGZsdHBhZ2V9CiAgICA8YnIvPgogICAgeyRtb2QtPkxhbmcoJ2luZm9fZGZsdHBhZ2UnKX0KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90aW1lb3V0Jyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXRpbWVvdXQiIHZhbHVlPSJ7JHRpbWVvdXR9IiBzaXplPSI0IiBtYXhsZW5ndGg9IjQiLz4KICAgIDxici8+CiAgICB7JG1vZC0+TGFuZygnaW5mb190aW1lb3V0Jyl9CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfc2xhY2snKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9aXRlcmF0aXZlX3NsYWNrIiB2YWx1ZT0ieyRpdGVyYXRpdmVfc2xhY2t9IiBzaXplPSI2IiBtYXhsZW5ndGg9IjYiLz4KICAgIDxici8+CiAgICB7JG1vZC0+TGFuZygnaW5mb19zbGFjaycpfQogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICA8L3A+CjwvZGl2Pgp7JGZvcm1lbmR9]]></data>
	</file>
</module>
