<?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>CMSForms</name>
	<version>1.11.0</version>
  <mincmsversion>1.10</mincmsversion>
	<help><![CDATA[Cgk8aDM+SG93IHRvIHVzZSB0aGlzIG1vZHVsZT88L2gzPgoJPHA+VGhpcyBtb2R1bGUgaXMgYWltZWQgdG8gcmVwbGFjZSB0aGUgdHJhZGl0aW9uYWwgd2F5IG9mIG1hbmlwdWxhdGUgZm9ybXMgaW4gQ01TTVMgIkFQSSIuIEl0IGFsbG93cyB5b3UgdG8gZm9jdXMgbW9yZSBvbiB5b3VyIG9iamVjdHMgYW5kIGNvZGUuPC9wPgoJCgk8aDM+UEhQIFNpZGU8L2gzPgoJPHA+VG8gY3JlYXRlIGEgZm9ybSwgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0LjwvcD4KICA8dGV4dGFyZWEgY29scz0iMjAwIiByb3dzPSIyIiBzdHlsZT0iaGVpZ2h0OjQwcHg7ICI+CiAgJGZvcm0gPSBuZXcgQ01TRm9ybSgnTXlNb2R1bGUnLCAkaWQsICdhY3Rpb24nLCAkcmV0dXJuaWQpOwogICR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybScsICRmb3JtKTsKICA8L3RleHRhcmVhPgkKICA8cD5UbyBnbyBmdXJ0ZXIsIHlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOjwvcD4KCTx0ZXh0YXJlYSBjb2xzPSIyMDAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oJ015TW9kdWxlJywgJGlkLCAnYWN0aW9uJywgJHJldHVybmlkKTsKICAKICAkZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc2F2ZScsJ2NhbmNlbCcpKTsKICAKICAkZm9ybS0+c2V0V2lkZ2V0KCd0aXRsZScsICd0ZXh0JywgYXJyYXkoJ2NsYXNzJyA9PiAnZmllbGQnKSk7CiAgCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJGZvcm0pOwogIDwvdGV4dGFyZWE+CiAgPGgzPlNtYXJ0eSBzaWRlPC9oMz4KICA8Y29kZT48cHJlPgogIHtpZiBpc3NldCgkZm9ybSl9CiAgICB7aWYgJGZvcm0tJmd0O2hhc0Vycm9ycygpfSZsdDtkaXYgc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDsmZ3Q7eyRmb3JtLSZndDtzaG93RXJyb3JzKCl9Jmx0Oy9kaXYmZ3Q7ey9pZn0KCXskZm9ybS0mZ3Q7Z2V0SGVhZGVycygpfQoKCXskZm9ybS0mZ3Q7c2hvd1dpZGdldHMoXCYjeDI3OyZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZW92ZXJmbG93JnF1b3Q7Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZXRleHQmcXVvdDsmZ3Q7JUxBQkVMJTombHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyZndDslSU5QVVQlICZsdDtlbSZndDslVElQUyUmbHQ7L2VtJmd0OyZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0OyVFUlJPUlMlJmx0Oy9kaXYmZ3Q7CgkmbHQ7L2RpdiZndDtcJiN4Mjc7KX0KCgl7JGZvcm0tJmd0O3JlbmRlckZpZWxkc2V0cyhcJiN4Mjc7Jmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlb3ZlcmZsb3cmcXVvdDsmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdldGV4dCZxdW90OyZndDslTEFCRUwlOiZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7Jmd0OyVJTlBVVCUgJmx0O2VtJmd0OyVUSVBTJSZsdDsvZW0mZ3Q7Jmx0Oy9kaXYmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlaW5wdXQmcXVvdDsgc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDsmZ3Q7JUVSUk9SUyUmbHQ7L2RpdiZndDsKCSZsdDsvZGl2Jmd0O1wmI3gyNzspfQoKCSZsdDtwJmd0OwoJCXskZm9ybS0mZ3Q7Z2V0QnV0dG9ucygpfQoJJmx0Oy9wJmd0OwoJeyRmb3JtLSZndDtnZXRGb290ZXJzKCl9CnsvaWZ9CiAgPC9wcmU+PC9jb2RlPgoKICA8aDM+Q2hhbmdlbG9nPC9oMz4KPHByZT4KMS4xMC4xNgotLS0tLS0tCi0gRXJyb3JzIG1lc3NhZ2VzIGNhbiBiZSB0cmFuc2xhdGVkIHVzaW5nIEkxOG4KLSBWYWxpZGF0b3JzIGFyZSBub3cgaW4gc2VwYXJhdGUgY2xhc3NlcwotIFZhbGlkYXRvcnMgY2FuIG5vdyBkaXJlY3RseSBwYXNzZWQgZnJvbSB0aGUgd2lkZ2V0IGNvbnN0cnVjdG9yIChleDogJ3ZhbGlkYXRvcnMnID0+IGFycmF5KCdteV92YWxpZGF0b3InID0+IG5ldyBDTVNGVmFsaWRhdG9yTm90RW1wdHkoYXJyYXkoJ2ZvbycgPT4gJ2JhcicpKSkKPC9wcmU+Cgk8aDM+Q3JlZGl0czwvaDM+Cgk8cD5KZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSB0b3RvcGhlQHRvdG9waGUuY29tPC9wPgkKCTxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0BhdG9tc2VlZHMuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMTEuMDxiciAvPg==]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/.name</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q01TRm9ybXM=]]></data>
	</file>
	<file>
	  <filename>/.idea/CMSForms.iml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1vZHVsZSB0eXBlPSJXRUJfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIj4KICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgogICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiPgogICAgICA8bGlicmFyeSBuYW1lPSJQSFAiPgogICAgICAgIDxDTEFTU0VTPgogICAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkLy4uLy4uL2xpYiIgLz4KICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgPFNPVVJDRVM+CiAgICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvLi4vLi4vbGliIiAvPgogICAgICAgIDwvU09VUkNFUz4KICAgICAgPC9saWJyYXJ5PgogICAgPC9vcmRlckVudHJ5PgogIDwvY29tcG9uZW50Pgo8L21vZHVsZT4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/encodings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJFbmNvZGluZyIgdXNlVVRGR3Vlc3Npbmc9InRydWUiIG5hdGl2ZTJBc2NpaUZvclByb3BlcnRpZXNGaWxlcz0iZmFsc2UiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/misc.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/modules.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CiAgICA8bW9kdWxlcz4KICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC8uaWRlYS9DTVNGb3Jtcy5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkLy5pZGVhL0NNU0Zvcm1zLmltbCIgLz4KICAgIDwvbW9kdWxlcz4KICA8L2NvbXBvbmVudD4KPC9wcm9qZWN0PgoK]]></data>
	</file>
	<file>
	  <filename>/.idea/scopes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/scopes/scope_settings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgogIDxzdGF0ZT4KICAgIDxvcHRpb24gbmFtZT0iU0tJUF9JTVBPUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgogIDwvc3RhdGU+CjwvY29tcG9uZW50Pg==]]></data>
	</file>
	<file>
	  <filename>/.idea/vcs.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NEaXJlY3RvcnlNYXBwaW5ncyI+CiAgICA8bWFwcGluZyBkaXJlY3Rvcnk9IiRQUk9KRUNUX0RJUiQiIHZjcz0iR2l0IiAvPgogIDwvY29tcG9uZW50Pgo8L3Byb2plY3Q+Cgo=]]></data>
	</file>
	<file>
	  <filename>/.idea/workspace.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VMaXN0TWFuYWdlciI+CiAgICA8bGlzdCBkZWZhdWx0PSJ0cnVlIiBpZD0iZTE1YjhkNmMtZDI2NC00MzRiLWI2MjctMDQyMjQzYjZmZThlIiBuYW1lPSJEZWZhdWx0IiBjb21tZW50PSIiPgogICAgICA8Y2hhbmdlIHR5cGU9Ik1PRElGSUNBVElPTiIgYmVmb3JlUGF0aD0iJFBST0pFQ1RfRElSJC9DTVNGb3Jtcy5tb2R1bGUucGhwIiBhZnRlclBhdGg9IiRQUk9KRUNUX0RJUiQvQ01TRm9ybXMubW9kdWxlLnBocCIgLz4KICAgIDwvbGlzdD4KICAgIDxpZ25vcmVkIHBhdGg9IkNNU0Zvcm1zLml3cyIgLz4KICAgIDxpZ25vcmVkIHBhdGg9Ii5pZGVhL3dvcmtzcGFjZS54bWwiIC8+CiAgICA8b3B0aW9uIG5hbWU9IlRSQUNLSU5HX0VOQUJMRUQiIHZhbHVlPSJ0cnVlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJTSE9XX0RJQUxPRyIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJISUdITElHSFRfQ09ORkxJQ1RTIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iSElHSExJR0hUX05PTl9BQ1RJVkVfQ0hBTkdFTElTVCIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJMQVNUX1JFU09MVVRJT04iIHZhbHVlPSJJR05PUkUiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VzVmlld01hbmFnZXIiIGZsYXR0ZW5lZF92aWV3PSJ0cnVlIiBzaG93X2lnbm9yZWQ9ImZhbHNlIiAvPgogIDxjb21wb25lbnQgbmFtZT0iQ3JlYXRlUGF0Y2hDb21taXRFeGVjdXRvciI+CiAgICA8b3B0aW9uIG5hbWU9IlBBVENIX1BBVEgiIHZhbHVlPSIiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJEYWVtb25Db2RlQW5hbHl6ZXIiPgogICAgPGRpc2FibGVfaGludHMgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkV4ZWN1dGlvblRhcmdldE1hbmFnZXIiIFNFTEVDVEVEX1RBUkdFVD0iZGVmYXVsdF90YXJnZXQiIC8+CiAgPGNvbXBvbmVudCBuYW1lPSJGYXZvcml0ZXNNYW5hZ2VyIj4KICAgIDxmYXZvcml0ZXNfbGlzdCBuYW1lPSJDTVNGb3JtcyIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkZpbGVFZGl0b3JNYW5hZ2VyIj4KICAgIDxsZWFmPgogICAgICA8ZmlsZSBsZWFmLWZpbGUtbmFtZT0iQ01TRm9ybXMubW9kdWxlLnBocCIgcGlubmVkPSJmYWxzZSIgY3VycmVudD0idHJ1ZSIgY3VycmVudC1pbi10YWI9InRydWUiPgogICAgICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9DTVNGb3Jtcy5tb2R1bGUucGhwIj4KICAgICAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICAgICAgPHN0YXRlIGxpbmU9IjEzIiBjb2x1bW49IjYwIiBzZWxlY3Rpb24tc3RhcnQ9IjQ1OCIgc2VsZWN0aW9uLWVuZD0iNDU4IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xMDA2NzExNCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxMzQxIj4KICAgICAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgICAgICA8L3N0YXRlPgogICAgICAgICAgPC9wcm92aWRlcj4KICAgICAgICA8L2VudHJ5PgogICAgICA8L2ZpbGU+CiAgICA8L2xlYWY+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJGaW5kTWFuYWdlciI+CiAgICA8RmluZFVzYWdlc01hbmFnZXI+CiAgICAgIDxzZXR0aW5nIG5hbWU9Ik9QRU5fTkVXX1RBQiIgdmFsdWU9ImZhbHNlIiAvPgogICAgPC9GaW5kVXNhZ2VzTWFuYWdlcj4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkdpdC5TZXR0aW5ncyI+CiAgICA8b3B0aW9uIG5hbWU9IlJFQ0VOVF9HSVRfUk9PVF9QQVRIIiB2YWx1ZT0iJFBST0pFQ1RfRElSJCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkdpdExvZ1NldHRpbmdzIj4KICAgIDxvcHRpb24gbmFtZT0ibXlEYXRlU3RhdGUiPgogICAgICA8TXlEYXRlU3RhdGUgLz4KICAgIDwvb3B0aW9uPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iSWRlRG9jdW1lbnRIaXN0b3J5Ij4KICAgIDxvcHRpb24gbmFtZT0iY2hhbmdlZEZpbGVzIj4KICAgICAgPGxpc3Q+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0U3RhdGljLnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL0NIQU5HRUxPRyIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXRDaGVja2JveC5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0RmlsZS5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC90ZW1wbGF0ZXMvYWRtaW4uZm9ybS50cGwiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC90ZW1wbGF0ZXMvZm9ybS5lcnJvcnMudHBsIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dEhpZGRlbi5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC90ZW1wbGF0ZXMvZm9ybS53aWRnZXQudHBsIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvdGVtcGxhdGVzL2Zvcm0uZmllbGRzLnRwbCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXQucGhwIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1XaWRnZXQucGhwIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvdGVtcGxhdGVzL2Zvcm0uZmllbGRzZXQudHBsIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1GaWVsZHNldC5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybS5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC90ZW1wbGF0ZXMvZm9ybS5mb3JtLnRwbCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtUGx1Z2lucy5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9DTVNGb3Jtcy5tb2R1bGUucGhwIiAvPgogICAgICA8L2xpc3Q+CiAgICA8L29wdGlvbj4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlBocFdvcmtzcGFjZVByb2plY3RDb25maWd1cmF0aW9uIiBiYWNrd2FyZF9jb21wYXRpYmlsaXR5X3BlcmZvcm1lZD0idHJ1ZSI+CiAgICA8aW5jbHVkZV9wYXRoPgogICAgICA8cGF0aCB2YWx1ZT0iJFBST0pFQ1RfRElSJC8uLi8uLi9saWIiIC8+CiAgICA8L2luY2x1ZGVfcGF0aD4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RGcmFtZUJvdW5kcyI+CiAgICA8b3B0aW9uIG5hbWU9IndpZHRoIiB2YWx1ZT0iMjU2MCIgLz4KICAgIDxvcHRpb24gbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iMTQ0MCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RMZXZlbFZjc01hbmFnZXIiIHNldHRpbmdzRWRpdGVkTWFudWFsbHk9ImZhbHNlIj4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkFkZCIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlJlbW92ZSIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkNoZWNrb3V0IiAvPgogICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iVXBkYXRlIiAvPgogICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iU3RhdHVzIiAvPgogICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iRWRpdCIgLz4KICAgIDxDb25maXJtYXRpb25zU2V0dGluZyB2YWx1ZT0iMCIgaWQ9IkFkZCIgLz4KICAgIDxDb25maXJtYXRpb25zU2V0dGluZyB2YWx1ZT0iMCIgaWQ9IlJlbW92ZSIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSZWxvYWRTdGF0ZSI+CiAgICA8b3B0aW9uIG5hbWU9IlNUQVRFIiB2YWx1ZT0iMCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RWaWV3Ij4KICAgIDxuYXZpZ2F0b3IgY3VycmVudFZpZXc9IlByb2plY3RQYW5lIiBwcm9wb3J0aW9ucz0iIiB2ZXJzaW9uPSIxIiBzcGxpdHRlclByb3BvcnRpb249IjAuNSI+CiAgICAgIDxmbGF0dGVuUGFja2FnZXMgLz4KICAgICAgPHNob3dNZW1iZXJzIC8+CiAgICAgIDxzaG93TW9kdWxlcyAvPgogICAgICA8c2hvd0xpYnJhcnlDb250ZW50cyBQcm9qZWN0UGFuZT0idHJ1ZSIgLz4KICAgICAgPGhpZGVFbXB0eVBhY2thZ2VzIC8+CiAgICAgIDxhYmJyZXZpYXRlUGFja2FnZU5hbWVzIC8+CiAgICAgIDxhdXRvc2Nyb2xsVG9Tb3VyY2UgLz4KICAgICAgPGF1dG9zY3JvbGxGcm9tU291cmNlIC8+CiAgICAgIDxzb3J0QnlUeXBlIC8+CiAgICA8L25hdmlnYXRvcj4KICAgIDxwYW5lcz4KICAgICAgPHBhbmUgaWQ9IlByb2plY3RQYW5lIj4KICAgICAgICA8c3ViUGFuZT4KICAgICAgICAgIDxQQVRIPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9InRlbXBsYXRlcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9ImxpYiIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9ImxhbmciIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgPC9QQVRIPgogICAgICAgIDwvc3ViUGFuZT4KICAgICAgPC9wYW5lPgogICAgICA8cGFuZSBpZD0iU2NvcGUiIC8+CiAgICA8L3BhbmVzPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUHJvcGVydGllc0NvbXBvbmVudCI+CiAgICA8cHJvcGVydHkgbmFtZT0iV2ViU2VydmVyVG9vbFdpbmRvd0ZhY3RvcnlTdGF0ZSIgdmFsdWU9ImZhbHNlIiAvPgogICAgPHByb3BlcnR5IG5hbWU9IkZ1bGxTY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPgogICAgPHByb3BlcnR5IG5hbWU9IkxheW91dENvZGUucmVhcnJhbmdlRW50cmllc1BIUCIgdmFsdWU9ImZhbHNlIiAvPgogICAgPHByb3BlcnR5IG5hbWU9Imxhc3Rfb3BlbmVkX2ZpbGVfcGF0aCIgdmFsdWU9IiRQUk9KRUNUX0RJUiQvLi4vLi4vbGliIiAvPgogICAgPHByb3BlcnR5IG5hbWU9IkxheW91dENvZGUucmVhcnJhbmdlRW50cmllc1NtYXJ0eSIgdmFsdWU9ImZhbHNlIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUnVuTWFuYWdlciI+CiAgICA8Y29uZmlndXJhdGlvbiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJQSFBVbml0UnVuQ29uZmlndXJhdGlvblR5cGUiIGZhY3RvcnlOYW1lPSJQSFBVbml0Ij4KICAgICAgPFRlc3RSdW5uZXIgLz4KICAgICAgPG1ldGhvZCAvPgogICAgPC9jb25maWd1cmF0aW9uPgogICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iUGhwTG9jYWxSdW5Db25maWd1cmF0aW9uVHlwZSIgZmFjdG9yeU5hbWU9IlBIUCBDb25zb2xlIj4KICAgICAgPG1ldGhvZCAvPgogICAgPC9jb25maWd1cmF0aW9uPgogICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iSmF2YXNjcmlwdERlYnVnVHlwZSIgZmFjdG9yeU5hbWU9IkphdmFTY3JpcHQgRGVidWciIHNpbmdsZXRvbj0idHJ1ZSI+CiAgICAgIDxtZXRob2QgLz4KICAgIDwvY29uZmlndXJhdGlvbj4KICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9InRydWUiIHR5cGU9IlBocFVuaXRSZW1vdGVSdW5Db25maWd1cmF0aW9uVHlwZSIgZmFjdG9yeU5hbWU9IlBIUFVuaXQgb24gU2VydmVyIj4KICAgICAgPG1ldGhvZCAvPgogICAgPC9jb25maWd1cmF0aW9uPgogICAgPGxpc3Qgc2l6ZT0iMCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlNoZWx2ZUNoYW5nZXNNYW5hZ2VyIiBzaG93X3JlY3ljbGVkPSJmYWxzZSIgLz4KICA8Y29tcG9uZW50IG5hbWU9IlRhc2tNYW5hZ2VyIj4KICAgIDx0YXNrIGFjdGl2ZT0idHJ1ZSIgaWQ9IkRlZmF1bHQiIHN1bW1hcnk9IkRlZmF1bHQgdGFzayI+CiAgICAgIDxjaGFuZ2VsaXN0IGlkPSJlMTViOGQ2Yy1kMjY0LTQzNGItYjYyNy0wNDIyNDNiNmZlOGUiIG5hbWU9IkRlZmF1bHQiIGNvbW1lbnQ9IiIgLz4KICAgICAgPGNyZWF0ZWQ+MTM4MDYzOTMxNjcxMzwvY3JlYXRlZD4KICAgICAgPHVwZGF0ZWQ+MTM4MDYzOTMxNjcxMzwvdXBkYXRlZD4KICAgIDwvdGFzaz4KICAgIDxzZXJ2ZXJzIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJUb29sV2luZG93TWFuYWdlciI+CiAgICA8ZnJhbWUgeD0iMCIgeT0iMCIgd2lkdGg9IjI1NjAiIGhlaWdodD0iMTQ0MCIgZXh0ZW5kZWQtc3RhdGU9IjAiIC8+CiAgICA8ZWRpdG9yIGFjdGl2ZT0idHJ1ZSIgLz4KICAgIDxsYXlvdXQ+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQ2hhbmdlcyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI3IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlRlcm1pbmFsIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjgiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iVE9ETyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI2IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IkRhdGFiYXNlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMyIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJTdHJ1Y3R1cmUiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMjUiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iUHJvamVjdCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0idHJ1ZSIgd2VpZ2h0PSIwLjI1MjM0Mzc0IiBzaWRlV2VpZ2h0PSIwLjAiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJjb21ibyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJEZWJ1ZyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjQiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjMiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRmF2b3JpdGVzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImxlZnQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIyIiBzaWRlX3Rvb2w9InRydWUiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRXZlbnQgTG9nIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0idHJ1ZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJSdW4iIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJWZXJzaW9uIENvbnRyb2wiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNyIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJDdnMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJNZXNzYWdlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRmluZCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIxIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IkFudCBCdWlsZCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJyaWdodCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMjUiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQ29tbWFuZGVyIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJTTElESU5HIiB0eXBlPSJTTElESU5HIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjQiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iSW5zcGVjdGlvbiIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjQiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjUiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iSGllcmFyY2h5IiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0iY29tYm8iIC8+CiAgICA8L2xheW91dD4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlZjcy5Mb2cuVWlQcm9wZXJ0aWVzIj4KICAgIDxvcHRpb24gbmFtZT0iUkVDRU5UTFlfRklMVEVSRURfVVNFUl9HUk9VUFMiPgogICAgICA8Y29sbGVjdGlvbiAvPgogICAgPC9vcHRpb24+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NDb250ZW50QW5ub3RhdGlvblNldHRpbmdzIj4KICAgIDxvcHRpb24gbmFtZT0ibXlMaW1pdCIgdmFsdWU9IjI2Nzg0MDAwMDAiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NNYW5hZ2VyQ29uZmlndXJhdGlvbiI+CiAgICA8b3B0aW9uIG5hbWU9Im15VG9kb1BhbmVsU2V0dGluZ3MiPgogICAgICA8VG9kb1BhbmVsU2V0dGluZ3MgLz4KICAgIDwvb3B0aW9uPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iWERlYnVnZ2VyTWFuYWdlciI+CiAgICA8YnJlYWtwb2ludC1tYW5hZ2VyPgogICAgICA8b3B0aW9uIG5hbWU9InRpbWUiIHZhbHVlPSIxIiAvPgogICAgPC9icmVha3BvaW50LW1hbmFnZXI+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJlZGl0b3JIaXN0b3J5TWFuYWdlciI+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvQ01TRm9ybXMubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjYiIGNvbHVtbj0iNSIgc2VsZWN0aW9uLXN0YXJ0PSI5MzEiIHNlbGVjdGlvbi1lbmQ9IjkzMSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzOTAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjU0MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtUGx1Z2lucy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjkwIiBjb2x1bW49IjczIiBzZWxlY3Rpb24tc3RhcnQ9IjM0MDAiIHNlbGVjdGlvbi1lbmQ9IjM0MDAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMTM1MCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMzA5MCI+CiAgICAgICAgICA8Zm9sZGluZz4KICAgICAgICAgICAgPGVsZW1lbnQgc2lnbmF0dXJlPSJuI3JlbmRlckZpbGUjMDtuI0NNU0Zvcm1QbHVnaW5zIzA7biMhIXRvcCIgZXhwYW5kZWQ9ImZhbHNlIiAvPgogICAgICAgICAgICA8ZWxlbWVudCBzaWduYXR1cmU9ImUjMTUyNSMxNjEyIzAiIGV4cGFuZGVkPSJmYWxzZSIgLz4KICAgICAgICAgIDwvZm9sZGluZz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybVdpZGdldC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjY0MyIgY29sdW1uPSI1MiIgc2VsZWN0aW9uLXN0YXJ0PSIxOTc2MCIgc2VsZWN0aW9uLWVuZD0iMTk3NjAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iOTY0NSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTAxNTUiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNDk4IiBjb2x1bW49IjUiIHNlbGVjdGlvbi1zdGFydD0iMTM5NDciIHNlbGVjdGlvbi1lbmQ9IjEzOTQ3IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9Ijc0NzAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9Ijc5MzUiPgogICAgICAgICAgPGZvbGRpbmc+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4MDk4OTAwMCIgZXhwYW5kZWQ9InRydWUiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4MDk4OTAwMCIgZXhwYW5kZWQ9InRydWUiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4MDk4OTAwMCIgZXhwYW5kZWQ9ImZhbHNlIiBzaWduYXR1cmU9Ii0xOi0xIiBwbGFjZWhvbGRlcj0iLi4uIiAvPgogICAgICAgICAgPC9mb2xkaW5nPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNTA3IiBjb2x1bW49IjUiIHNlbGVjdGlvbi1zdGFydD0iMTI5MzciIHNlbGVjdGlvbi1lbmQ9IjEyOTM3IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9Ijc2MDUiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjgwMTAiPgogICAgICAgICAgPGZvbGRpbmc+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4Mjg5NjAwMCIgZXhwYW5kZWQ9InRydWUiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4Mjg5NjAwMCIgZXhwYW5kZWQ9ImZhbHNlIiBzaWduYXR1cmU9Ii0xOi0xIiBwbGFjZWhvbGRlcj0iLi4uIiAvPgogICAgICAgICAgICA8bWFya2VyIGRhdGU9IjEzOTgxODI4OTYwMDAiIGV4cGFuZGVkPSJmYWxzZSIgc2lnbmF0dXJlPSItMTotMSIgcGxhY2Vob2xkZXI9Ii4uLiIgLz4KICAgICAgICAgIDwvZm9sZGluZz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUZpZWxkc2V0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNDAiIGNvbHVtbj0iMzEiIHNlbGVjdGlvbi1zdGFydD0iODY1IiBzZWxlY3Rpb24tZW5kPSI4NjUiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iNjAwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxMTQwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVtcGxhdGVzL2Zvcm0uZm9ybS50cGwiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjEiIGNvbHVtbj0iMjciIHNlbGVjdGlvbi1zdGFydD0iNDUiIHNlbGVjdGlvbi1lbmQ9IjQ1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjE1IiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxNTAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC90ZW1wbGF0ZXMvZm9ybS5maWVsZHNldC50cGwiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjIiIGNvbHVtbj0iMzAiIHNlbGVjdGlvbi1zdGFydD0iMTU2IiBzZWxlY3Rpb24tZW5kPSIxNTYiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMzAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjEzNSI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0NNU0Zvcm1zLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjEyIiBjb2x1bW49IjYxIiBzZWxlY3Rpb24tc3RhcnQ9IjM0NSIgc2VsZWN0aW9uLWVuZD0iMzQ1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjEyMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMzMwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dEZpbGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIxOSIgY29sdW1uPSIzNSIgc2VsZWN0aW9uLXN0YXJ0PSIzNjEiIHNlbGVjdGlvbi1lbmQ9IjM3NiIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIyODUiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjE0MTAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtV2lkZ2V0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iOTYiIGNvbHVtbj0iMTAiIHNlbGVjdGlvbi1zdGFydD0iMzEyMSIgc2VsZWN0aW9uLWVuZD0iMzEyMSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIxNDQwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI5ODQwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dEZpbGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIwIiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMCIgc2VsZWN0aW9uLWVuZD0iMCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxMjc1IiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybVdpZGdldC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9Ijc5IiBjb2x1bW49IjM3IiBzZWxlY3Rpb24tc3RhcnQ9IjI1NTEiIHNlbGVjdGlvbi1lbmQ9IjI1NTEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvQ01TRm9ybXMubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTIiIGNvbHVtbj0iNjEiIHNlbGVjdGlvbi1zdGFydD0iMzQ1IiBzZWxlY3Rpb24tZW5kPSIzNDUiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvQ0hBTkdFTE9HIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIxIiBjb2x1bW49IjEiIHNlbGVjdGlvbi1zdGFydD0iOSIgc2VsZWN0aW9uLWVuZD0iOSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMCIgY29sdW1uPSIwIiBzZWxlY3Rpb24tc3RhcnQ9IjAiIHNlbGVjdGlvbi1lbmQ9IjAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMCI+CiAgICAgICAgICA8Zm9sZGluZz4KICAgICAgICAgICAgPG1hcmtlciBkYXRlPSIxMzk4MTgwOTg5MDAwIiBleHBhbmRlZD0idHJ1ZSIgc2lnbmF0dXJlPSItMTotMSIgcGxhY2Vob2xkZXI9Ii4uLiIgLz4KICAgICAgICAgICAgPG1hcmtlciBkYXRlPSIxMzk4MTgwOTg5MDAwIiBleHBhbmRlZD0idHJ1ZSIgc2lnbmF0dXJlPSItMTotMSIgcGxhY2Vob2xkZXI9Ii4uLiIgLz4KICAgICAgICAgICAgPG1hcmtlciBkYXRlPSIxMzk4MTgwOTg5MDAwIiBleHBhbmRlZD0iZmFsc2UiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICA8L2ZvbGRpbmc+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dFN0YXRpYy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjYiIGNvbHVtbj0iMjAiIHNlbGVjdGlvbi1zdGFydD0iMTA4IiBzZWxlY3Rpb24tZW5kPSIxMDgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dERhdGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI2IiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iNDMiIHNlbGVjdGlvbi1lbmQ9Ijk4IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXREYXRlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNiIgY29sdW1uPSIwIiBzZWxlY3Rpb24tc3RhcnQ9IjQzIiBzZWxlY3Rpb24tZW5kPSI5OCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249Ii0wLjA0ODM4NzA5NSIgdmVydGljYWwtb2Zmc2V0PSI5MCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iOTkwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0U3RhdGljLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNiIgY29sdW1uPSIyMCIgc2VsZWN0aW9uLXN0YXJ0PSIxMDgiIHNlbGVjdGlvbi1lbmQ9IjEwOCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMTQ1MTYxMjkiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNjIwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9DSEFOR0VMT0ciPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjEiIGNvbHVtbj0iMzAiIHNlbGVjdGlvbi1zdGFydD0iMzgiIHNlbGVjdGlvbi1lbmQ9IjM4IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wMTc5MjExNDgiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iODM3IiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0Q2hlY2tib3gucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIyMSIgY29sdW1uPSIzMiIgc2VsZWN0aW9uLXN0YXJ0PSI2MTMiIHNlbGVjdGlvbi1lbmQ9IjYxMyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMTY3NzY3NTEiIHZlcnRpY2FsLW9mZnNldD0iMTU4IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI5MTUiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXRGaWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTkiIGNvbHVtbj0iMzUiIHNlbGVjdGlvbi1zdGFydD0iMzYxIiBzZWxlY3Rpb24tZW5kPSIzNzYiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMjg1IiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxNDEwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC8uLi8uLi9saWIvY2xhc3Nlcy9jbGFzcy5DTVNNb2R1bGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI2ODYiIGNvbHVtbj0iMjMiIHNlbGVjdGlvbi1zdGFydD0iMTYxMzAiIHNlbGVjdGlvbi1lbmQ9IjE2MTMwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4zNDQwODYwMiIgdmVydGljYWwtb2Zmc2V0PSI5Nzc5IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MzAxMCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xhbmcvZW5fVVMucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI0NSIgY29sdW1uPSI3NiIgc2VsZWN0aW9uLXN0YXJ0PSIxNDYwIiBzZWxlY3Rpb24tZW5kPSIxNDYwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iLTEzLjEyNSIgdmVydGljYWwtb2Zmc2V0PSIzNjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjEyNjAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3RlbXBsYXRlcy9hZG1pbi5mb3JtLnRwbCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMCIgY29sdW1uPSIxNSIgc2VsZWN0aW9uLXN0YXJ0PSIxNSIgc2VsZWN0aW9uLWVuZD0iMTUiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNzU3IiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC8uLi8uLi9saWIvc21hcnR5L2xpYnMvc3lzcGx1Z2lucy9zbWFydHlfaW50ZXJuYWxfdGVtcGxhdGViYXNlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMzEiIGNvbHVtbj0iMjAiIHNlbGVjdGlvbi1zdGFydD0iMTA4MCIgc2VsZWN0aW9uLWVuZD0iMTA4MCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249Ii0xMC42NjY2NjciIHZlcnRpY2FsLW9mZnNldD0iODkiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjEyMzAwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dERhdGVUaW1lLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMCIgY29sdW1uPSIwIiBzZWxlY3Rpb24tc3RhcnQ9IjAiIHNlbGVjdGlvbi1lbmQ9IjAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNzU4IiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0SGlkZGVuLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjUiIGNvbHVtbj0iMjAiIHNlbGVjdGlvbi1zdGFydD0iNDMxIiBzZWxlY3Rpb24tZW5kPSI0MzEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjQ3MDAyNzI0IiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjczNCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVtcGxhdGVzL2Zvcm0ud2lkZ2V0LnRwbCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMCIgY29sdW1uPSIzOSIgc2VsZWN0aW9uLXN0YXJ0PSIzOSIgc2VsZWN0aW9uLWVuZD0iMzkiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSItMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjkwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC90ZW1wbGF0ZXMvZm9ybS5lcnJvcnMudHBsIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI5IiBjb2x1bW49IjI4IiBzZWxlY3Rpb24tc3RhcnQ9IjM1NSIgc2VsZWN0aW9uLWVuZD0iMzU1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xODM5MjM3IiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjczNCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVtcGxhdGVzL2Zvcm0uZmllbGRzLnRwbCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMSIgY29sdW1uPSI0IiBzZWxlY3Rpb24tc3RhcnQ9IjI3IiBzZWxlY3Rpb24tZW5kPSIxMjAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSItMC42MjUiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTUwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybVdpZGdldC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjY0MyIgY29sdW1uPSI1MiIgc2VsZWN0aW9uLXN0YXJ0PSIxOTc2MCIgc2VsZWN0aW9uLWVuZD0iMTk3NjAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iOTY0NSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTAxNTUiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNDk4IiBjb2x1bW49IjUiIHNlbGVjdGlvbi1zdGFydD0iMTM5NDciIHNlbGVjdGlvbi1lbmQ9IjEzOTQ3IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9Ijc0NzAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9Ijc5MzUiPgogICAgICAgICAgPGZvbGRpbmc+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4MDk4OTAwMCIgZXhwYW5kZWQ9InRydWUiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4MDk4OTAwMCIgZXhwYW5kZWQ9InRydWUiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4MDk4OTAwMCIgZXhwYW5kZWQ9ImZhbHNlIiBzaWduYXR1cmU9Ii0xOi0xIiBwbGFjZWhvbGRlcj0iLi4uIiAvPgogICAgICAgICAgPC9mb2xkaW5nPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3RlbXBsYXRlcy9mb3JtLmZpZWxkc2V0LnRwbCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMiIgY29sdW1uPSIzMCIgc2VsZWN0aW9uLXN0YXJ0PSIxNTYiIHNlbGVjdGlvbi1lbmQ9IjE1NiIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTM1Ij4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm0ucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI1MDciIGNvbHVtbj0iNSIgc2VsZWN0aW9uLXN0YXJ0PSIxMjkzNyIgc2VsZWN0aW9uLWVuZD0iMTI5MzciIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iNzYwNSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iODAxMCI+CiAgICAgICAgICA8Zm9sZGluZz4KICAgICAgICAgICAgPG1hcmtlciBkYXRlPSIxMzk4MTgyODk2MDAwIiBleHBhbmRlZD0idHJ1ZSIgc2lnbmF0dXJlPSItMTotMSIgcGxhY2Vob2xkZXI9Ii4uLiIgLz4KICAgICAgICAgICAgPG1hcmtlciBkYXRlPSIxMzk4MTgyODk2MDAwIiBleHBhbmRlZD0iZmFsc2UiIHNpZ25hdHVyZT0iLTE6LTEiIHBsYWNlaG9sZGVyPSIuLi4iIC8+CiAgICAgICAgICAgIDxtYXJrZXIgZGF0ZT0iMTM5ODE4Mjg5NjAwMCIgZXhwYW5kZWQ9ImZhbHNlIiBzaWduYXR1cmU9Ii0xOi0xIiBwbGFjZWhvbGRlcj0iLi4uIiAvPgogICAgICAgICAgPC9mb2xkaW5nPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3RlbXBsYXRlcy9mb3JtLmZvcm0udHBsIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIxIiBjb2x1bW49IjI3IiBzZWxlY3Rpb24tc3RhcnQ9IjQ1IiBzZWxlY3Rpb24tZW5kPSI0NSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIxNSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTUwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1GaWVsZHNldC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjQwIiBjb2x1bW49IjMxIiBzZWxlY3Rpb24tc3RhcnQ9Ijg2NSIgc2VsZWN0aW9uLWVuZD0iODY1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjYwMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTE0MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtUGx1Z2lucy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjkwIiBjb2x1bW49IjczIiBzZWxlY3Rpb24tc3RhcnQ9IjM0MDAiIHNlbGVjdGlvbi1lbmQ9IjM0MDAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSItMC4xMzQyMjgxOCIgdmVydGljYWwtb2Zmc2V0PSIxMzUwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIzMDkwIj4KICAgICAgICAgIDxmb2xkaW5nPgogICAgICAgICAgICA8ZWxlbWVudCBzaWduYXR1cmU9Im4jcmVuZGVyRmlsZSMwO24jQ01TRm9ybVBsdWdpbnMjMDtuIyEhdG9wIiBleHBhbmRlZD0iZmFsc2UiIC8+CiAgICAgICAgICAgIDxlbGVtZW50IHNpZ25hdHVyZT0iZSMxNTI1IzE2MTIjMCIgZXhwYW5kZWQ9ImZhbHNlIiAvPgogICAgICAgICAgPC9mb2xkaW5nPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0NNU0Zvcm1zLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjEzIiBjb2x1bW49IjYwIiBzZWxlY3Rpb24tc3RhcnQ9IjQ1OCIgc2VsZWN0aW9uLWVuZD0iNDU4IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xMDA2NzExNCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxMzQxIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgPC9jb21wb25lbnQ+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/CHANGELOG</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MS4xMC4xNgotLS0tLS0tCi0gRXJyb3JzIG1lc3NhZ2VzIGNhbiBiZSB0cmFuc2xhdGVkIHVzaW5nIEkxOG4KLSBWYWxpZGF0b3JzIGFyZSBub3cgaW4gc2VwYXJhdGUgY2xhc3NlcwotIFZhbGlkYXRvcnMgY2FuIG5vdyBkaXJlY3RseSBwYXNzZWQgZnJvbSB0aGUgd2lkZ2V0IGNvbnN0cnVjdG9yIChleDogJ3ZhbGlkYXRvcnMnID0+IGFycmF5KCdteV92YWxpZGF0b3InID0+IG5ldyBDTVNGVmFsaWRhdG9yTm90RW1wdHkoYXJyYXkoJ2ZvbycgPT4gJ2JhcicpKSkK]]></data>
	</file>
	<file>
	  <filename>/CMSForms.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCglNb2R1bGU6IENNUyBGb3JtcyAtIFRoaXMgbW9kdWxlIGhlbHBzIGRldmVsb3BlcnMgdG8gaGFuZGxlIGZvcm1zIGZvciB0aGVpciBmcm9udGVuZCBvciBiYWNrZW5kIGFwcGxpY2F0aW9ucwoJCglDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSAyMDEyIMKpCiovCgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2xpYicgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2NsYXNzLkNNU0Zvcm1QbHVnaW5zLnBocCcpOwoKY2xhc3MgQ01TRm9ybXMgZXh0ZW5kcyBDTVNNb2R1bGUKewoJcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSAgICAgICAgICAgICAgIHsgcmV0dXJuICdDTVNGb3Jtcyc7CSAgICAgICAgICAgICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgICAgICAgICAgICB7IHJldHVybiAnMS4xMS4wJzsgICAgICAgICAgICAgICAgICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSAgICAgICAgICAgICB7IHJldHVybiAnSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyJzsgfQoJcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgICAgICAgIHsgcmV0dXJuICdqY2NAYXRvbXNlZWRzLmNvbSc7ICAgfQoJCiAgICBwdWJsaWMgIGZ1bmN0aW9uIEdldEhlbHAoKSB7ICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgIH0KCXB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpICAgIHsgcmV0dXJuICcxLjEwJzsgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICAgIHsKICAgICAgICBDTVNGb3JtUGx1Z2luczo6UmVnaXN0ZXJQbHVnaW5zKCR0aGlzLT5zbWFydHkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogICAgewogICAgICAgIENNU0Zvcm1QbHVnaW5zOjpSZWdpc3RlclBsdWdpbnMoJHRoaXMtPnNtYXJ0eSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRsYW5nID0gYXJyYXkoCgkKCQoJCgkKCQovLyBFeGNlcHRpb25zCgonZmllbGRfaXNfZW1wdHknID0+ICdUaGUgZmllbGQgJXMgaXMgZW1wdHkuJywJCidmaWVsZF9jYW5ub3RfYmVfZW1wdHknID0+ICdUaGUgZmllbGQgIiVzIiBjYW5ub3QgYmUgZW1wdHkuJywJCid1bmtub3duIGZpZWxkJyA9PiAnVW5rbm93biBmaWVsZCAiJXMiJywKJ2ZpZWxkcyBub3QgZXF1YWwnID0+ICdUaGUgIiVzIiBhbmQgIiVzIiBoYXZlIHRvIGJlIHRoZSBzYW1lLicsCidpbnZhbGlkIGVtYWlsJyA9PiAnVGhlIGVtYWlsICZsYXF1bzslcyZyYXF1bzsgaXMgbm90IHZhbGlkLicsCidmaWVsZCBub3QgdW5pcXVlJyA9PiAnJXMgYWxyZWFkeSBleGlzdHMuJywKJ3NlbGVjdCBvbmUnID0+ICdTZWxlY3Qgb25lJywKCQoJCgknaGVscCcgPT4gJwoJPGgzPkhvdyB0byB1c2UgdGhpcyBtb2R1bGU/PC9oMz4KCTxwPlRoaXMgbW9kdWxlIGlzIGFpbWVkIHRvIHJlcGxhY2UgdGhlIHRyYWRpdGlvbmFsIHdheSBvZiBtYW5pcHVsYXRlIGZvcm1zIGluIENNU01TICJBUEkiLiBJdCBhbGxvd3MgeW91IHRvIGZvY3VzIG1vcmUgb24geW91ciBvYmplY3RzIGFuZCBjb2RlLjwvcD4KCQoJPGgzPlBIUCBTaWRlPC9oMz4KCTxwPlRvIGNyZWF0ZSBhIGZvcm0sIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdC48L3A+CiAgPHRleHRhcmVhIGNvbHM9IjIwMCIgcm93cz0iMiIgc3R5bGU9ImhlaWdodDo0MHB4OyAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oXCdNeU1vZHVsZVwnLCAkaWQsIFwnYWN0aW9uXCcsICRyZXR1cm5pZCk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKFwnZm9ybVwnLCAkZm9ybSk7CiAgPC90ZXh0YXJlYT4JCiAgPHA+VG8gZ28gZnVydGVyLCB5b3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb21tYW5kczo8L3A+Cgk8dGV4dGFyZWEgY29scz0iMjAwIj4KICAkZm9ybSA9IG5ldyBDTVNGb3JtKFwnTXlNb2R1bGVcJywgJGlkLCBcJ2FjdGlvblwnLCAkcmV0dXJuaWQpOwogIAogICRmb3JtLT5zZXRCdXR0b25zKGFycmF5KFwnc2F2ZVwnLFwnY2FuY2VsXCcpKTsKICAKICAkZm9ybS0+c2V0V2lkZ2V0KFwndGl0bGVcJywgXCd0ZXh0XCcsIGFycmF5KFwnY2xhc3NcJyA9PiBcJ2ZpZWxkXCcpKTsKICAKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oXCdmb3JtXCcsICRmb3JtKTsKICA8L3RleHRhcmVhPgogIDxoMz5TbWFydHkgc2lkZTwvaDM+CiAgPGNvZGU+PHByZT4KICB7aWYgaXNzZXQoJGZvcm0pfQogICAge2lmICRmb3JtLSZndDtoYXNFcnJvcnMoKX0mbHQ7ZGl2IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0O3skZm9ybS0mZ3Q7c2hvd0Vycm9ycygpfSZsdDsvZGl2Jmd0O3svaWZ9Cgl7JGZvcm0tJmd0O2dldEhlYWRlcnMoKX0KCgl7JGZvcm0tJmd0O3Nob3dXaWRnZXRzKFwmI3gyNzsmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VvdmVyZmxvdyZxdW90OyZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2V0ZXh0JnF1b3Q7Jmd0OyVMQUJFTCU6Jmx0Oy9kaXYmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlaW5wdXQmcXVvdDsmZ3Q7JUlOUFVUJSAmbHQ7ZW0mZ3Q7JVRJUFMlJmx0Oy9lbSZndDsmbHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyBzdHlsZT0mcXVvdDtjb2xvcjogcmVkOyZxdW90OyZndDslRVJST1JTJSZsdDsvZGl2Jmd0OwoJJmx0Oy9kaXYmZ3Q7XCYjeDI3Oyl9CgoJeyRmb3JtLSZndDtyZW5kZXJGaWVsZHNldHMoXCYjeDI3OyZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZW92ZXJmbG93JnF1b3Q7Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZXRleHQmcXVvdDsmZ3Q7JUxBQkVMJTombHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyZndDslSU5QVVQlICZsdDtlbSZndDslVElQUyUmbHQ7L2VtJmd0OyZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0OyVFUlJPUlMlJmx0Oy9kaXYmZ3Q7CgkmbHQ7L2RpdiZndDtcJiN4Mjc7KX0KCgkmbHQ7cCZndDsKCQl7JGZvcm0tJmd0O2dldEJ1dHRvbnMoKX0KCSZsdDsvcCZndDsKCXskZm9ybS0mZ3Q7Z2V0Rm9vdGVycygpfQp7L2lmfQogIDwvcHJlPjwvY29kZT4KCiAgPGgzPkNoYW5nZWxvZzwvaDM+CjxwcmU+CjEuMTAuMTYKLS0tLS0tLQotIEVycm9ycyBtZXNzYWdlcyBjYW4gYmUgdHJhbnNsYXRlZCB1c2luZyBJMThuCi0gVmFsaWRhdG9ycyBhcmUgbm93IGluIHNlcGFyYXRlIGNsYXNzZXMKLSBWYWxpZGF0b3JzIGNhbiBub3cgZGlyZWN0bHkgcGFzc2VkIGZyb20gdGhlIHdpZGdldCBjb25zdHJ1Y3RvciAoZXg6IFwndmFsaWRhdG9yc1wnID0+IGFycmF5KFwnbXlfdmFsaWRhdG9yXCcgPT4gbmV3IENNU0ZWYWxpZGF0b3JOb3RFbXB0eShhcnJheShcJ2Zvb1wnID0+IFwnYmFyXCcpKSkKPC9wcmU+Cgk8aDM+Q3JlZGl0czwvaDM+Cgk8cD5KZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSB0b3RvcGhlQHRvdG9waGUuY29tPC9wPgkKCScsCgkKCQoJCik7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.CMSForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgVGhpcyBjbGFzcyBhaW0gdG8gaGFuZGxlIENNUyBGb3JtcyB2ZXJ5IGRpZmZlcmVudGx5LgoKICBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8Y3liZXJ0b3RvcGhlQGdtYWlsLmNvbT4KICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogIExpY2VuY2U6IEdQTAoKKi8KCmNsYXNzIENNU0Zvcm0gLy9leHRlbmRzICBDbXNPYmplY3QKewoKICAgIHByb3RlY3RlZCAkbW9kdWxlX25hbWU7CiAgICBwcm90ZWN0ZWQgJGlkOyAvLyBUaGUgZm9ybSBJRAogICAgcHJvdGVjdGVkICRyZXR1cm5pZDsKICAgIHByb3RlY3RlZCAkYWN0aW9uOwogICAgcHJvdGVjdGVkICRtZXRob2QgPSAnZ2V0JzsKICAgIHByb3RlY3RlZCAkZW5jdHlwZTsKICAgIHByb3RlY3RlZCAkaW5saW5lID0gZmFsc2U7CgogICAgcHJvdGVjdGVkICR3aWRnZXRzID0gYXJyYXkoKTsgLy8gVGhlIGZvcm0gd2lkZ2V0cwogICAgcHJvdGVjdGVkICRoaWRkZW5fd2lkZ2V0cyA9IGFycmF5KCk7IC8vIFNwZWNpZmljIHdpZGdldHMgc2hvd24gb24gdGhlIGJlZ2luOwogICAgcHJvdGVjdGVkICRmaWVsZHNldHMgPSBhcnJheSgpOyAvLyBTdWIgZm9ybXMgZm9yIGZpZWxkc2V0cwoKICAgIHByb3RlY3RlZCAkbGFiZWxzID0gYXJyYXkoCiAgICAgICAgJ3N1Ym1pdCcgPT4gJ1N1Ym1pdCcsCiAgICAgICAgJ2FwcGx5JyA9PiAnQXBwbHknLAogICAgICAgICdjYW5jZWwnID0+ICdDYW5jZWwnLAogICAgICAgICduZXh0JyA9PiAnTmV4dCcsCiAgICAgICAgJ3ByZXZpb3VzJyA9PiAnUHJldmlvdXMnCiAgICApOwoKICAgIHByb3RlY3RlZCAkY2xhc3M7CgogICAgcHJvdGVjdGVkICRhY3RpdmVfYnV0dG9ucyA9IGFycmF5KCdzdWJtaXQnLCAnY2FuY2VsJyk7CiAgICBwcm90ZWN0ZWQgJGZvcm1fZXJyb3JzID0gYXJyYXkoKTsKICAgIHByb3RlY3RlZCAkc2hvd19wcmlvcml0eSA9IGZhbHNlOwoKICAgIHByb3RlY3RlZCAkdGVtcGxhdGVzID0gYXJyYXkoCiAgICAgICAgJ3dpZGdldCcgPT4gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVQUkVGSVglICVJTlBVVCUgJVNVRklYJTxlbT4lVElQUyU8L2VtPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KICAgIDwvZGl2PicsCiAgICAgICAgJ2Vycm9ycycgPT4gJzxkaXYgc3R5bGU9ImNvbG9yOiByZWQ7Ij4lRVJST1JTJTwvZGl2PicsCiAgICAgICAgJ2J1dHRvbnMnID0+ICc8cD4lQlVUVE9OUyU8L3A+JwogICAgKTsKCiAgICBwcm90ZWN0ZWQgJGFjdGlvbl91cmw7IC8vIFRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgZm9ybSBhY3Rpb24KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIGZvcm0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1vZHVsZV9uYW1lIFRoZSBtb2R1bGUgbmFtZSBmb3IgdGhlIGZvcm0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGlkIFRoZSBJRCBvZiB0aGUgcGFnZQogICAgICogQHBhcmFtIHN0cmluZyAkYWN0aW9uIFRoZSBhY3Rpb24geW91IHdhbnQgdG8gZXhlY3V0ZQogICAgICogQHBhcmFtIHN0cmluZyAkcmV0dXJuaWQgVGhlIHJldHVybiBJRCAocmV0dXJuIHBhZ2UpCiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1vZHVsZV9uYW1lLCAkaWQsICRhY3Rpb24sICRyZXR1cm5pZCkKICAgIHsKICAgICAgICAkdGhpcy0+bW9kdWxlX25hbWUgPSAkbW9kdWxlX25hbWU7CiAgICAgICAgJHRoaXMtPmlkID0gJGlkOwogICAgICAgICR0aGlzLT5yZXR1cm5pZCA9ICRyZXR1cm5pZDsKICAgICAgICAkdGhpcy0+YWN0aW9uID0gJGFjdGlvbjsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TWV0aG9kKCRtZXRob2QgPSAnZ2V0JykKICAgIHsKICAgICAgICBpZiAoJG1ldGhvZCA9PSAncG9zdCcpIHsKICAgICAgICAgICAgJHRoaXMtPm1ldGhvZCA9ICdwb3N0JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0QWN0aW9uVXJsKCRhY3Rpb25fdXJsKQogICAgewogICAgICAgICR0aGlzLT5hY3Rpb25fdXJsID0gJGFjdGlvbl91cmw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldE11bHRpcGFydEZvcm0oKQogICAgewogICAgICAgICR0aGlzLT5tZXRob2QgPSAncG9zdCc7CiAgICAgICAgJHRoaXMtPmVuY3R5cGUgPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SW5saW5lKCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5saW5lID0gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2VzcygpCiAgICB7CiAgICAgICAgJHN0YXRlID0gdHJ1ZTsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+d2lkZ2V0cyBhcyAkd2lkZ2V0KSB7CiAgICAgICAgICAgIGlmICgkd2lkZ2V0LT5wcm9jZXNzKCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkc3RhdGUgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhpZGRlbl93aWRnZXRzIGFzICR3aWRnZXQpIHsKICAgICAgICAgICAgaWYgKCR3aWRnZXQtPnByb2Nlc3MoKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRzdGF0ZSA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZmllbGRzZXRzIGFzICRmaWVsZHNldCkgewogICAgICAgICAgICBpZiAoJGZpZWxkc2V0LT5wcm9jZXNzKCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkc3RhdGUgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHN0YXRlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzcygkY2xhc3MpCiAgICB7CiAgICAgICAgJHRoaXMtPmNsYXNzID0gJGNsYXNzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFzcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyXygpCiAgICB7CiAgICAgICAgLy8gVE9ETzogTE9BRCBURU1QTEFURSBGUk9NIEZJTEUuLi4KICAgICAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnYWRtaW4uZm9ybS50cGwnKTsKCiAgICAgICAgJHNtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkdGhpcyk7CiAgICAgICAgJHNtYXJ0eS0+X2NvbXBpbGVfc291cmNlKCd0ZW1wb3JhcnkgdGVtcGxhdGUnLCAkdGVtcGxhdGUsICRfY29tcGlsZWQpOwogICAgICAgIEBvYl9zdGFydCgpOwogICAgICAgICRzbWFydHktPl9ldmFsKCc/PicgLiAkX2NvbXBpbGVkKTsKICAgICAgICAkX2NvbnRlbnRzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgICAgICByZXR1cm4gJF9jb250ZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBDTVNGb3JtUGx1Z2luczo6Rm9ybQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkKICAgIHsKICAgICAgICAkY21zX3NtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKICAgICAgICAkc21hcnR5ID0gbmV3IFNtYXJ0eSgpOwogICAgICAgICRzbWFydHktPmNvbXBpbGVfZGlyID0gJGNtc19zbWFydHktPmNvbXBpbGVfZGlyOwogICAgICAgICRzbWFydHktPmFzc2lnbignZm9ybScsICR0aGlzKTsKCi8vICAgICAgICBDTVNGb3JtUGx1Z2luczo6UmVnaXN0ZXJQbHVnaW5zKCRzbWFydHkpOwoKICAgICAgICAkZmlsZSA9IGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd0ZW1wbGF0ZXMnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdhZG1pbi5mb3JtLnRwbCc7CiAgICAgICAgcmV0dXJuICRzbWFydHktPmZldGNoKCdmaWxlOicgLiAkZmlsZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lLCAkdGVtcGxhdGUpCiAgICB7CiAgICAgICAgJHRoaXMtPnRlbXBsYXRlc1skdGVtcGxhdGVfbmFtZV0gPSAkdGVtcGxhdGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKQogICAgewogICAgICAgIGlmIChjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmFjdGlvbl91cmwpIHsKICAgICAgICAgICAgICAgICRodG1sID0gJzxmb3JtIG5hbWU9IicgLiAkdGhpcy0+aWQgLiAnIiBtZXRob2Q9IicgLiAkdGhpcy0+bWV0aG9kIC4gJyIgYWN0aW9uPSInIC4gJHRoaXMtPmFjdGlvbl91cmwgLiAnIic7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5lbmN0eXBlKSAkaHRtbCAuPSAnIGVuY3R5cGU9IicgLiAkdGhpcy0+ZW5jdHlwZSAuICciJzsKCiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaHRtbCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVGb3JtU3RhcnQoJHRoaXMtPmlkLCAkdGhpcy0+YWN0aW9uLCAkdGhpcy0+cmV0dXJuaWQsICR0aGlzLT5tZXRob2QsICR0aGlzLT5lbmN0eXBlLCAkdGhpcy0+aW5saW5lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhpZGRlbl93aWRnZXRzIGFzICR3aWRnZXQpIHsKICAgICAgICAgICAgICAgICRodG1sIC49ICR3aWRnZXQtPmdldElucHV0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRodG1sOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9vdGVycygpCiAgICB7CiAgICAgICAgaWYgKChjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKSkpIHsKICAgICAgICAgICAgJGh0bWwgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Q3JlYXRlRm9ybUVuZCgpOwogICAgICAgICAgICByZXR1cm4gJGh0bWw7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRMYWJlbCgkbGFiZWwsICR0aXRsZSkKICAgIHsKICAgICAgICAkdGhpcy0+bGFiZWxzWyRsYWJlbF0gPSAkdGl0bGU7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFiZWxzKCRsYWJlbHMgPSBhcnJheSgpKQogICAgewogICAgICAgIGZvcmVhY2ggKCRsYWJlbHMgYXMgJGxhYmVsID0+ICR0aXRsZSkgewogICAgICAgICAgICAkdGhpcy0+c2V0TGFiZWwoJGxhYmVsLCAkdGl0bGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRCdXR0b25zKCRidXR0b25zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJGJ1dHRvbnMpKSAkdGhpcy0+YWN0aXZlX2J1dHRvbnMgPSAkYnV0dG9uczsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCdXR0b25zKCkKICAgIHsKICAgICAgICAkaHRtbCA9ICcnOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hY3RpdmVfYnV0dG9ucyBhcyAkYnV0dG9uKSB7CiAgICAgICAgICAgIC8vICRodG1sIC49IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVJbnB1dFN1Ym1pdCgkdGhpcy0+aWQsICRidXR0b24sICR0aGlzLT5sYWJlbHNbJGJ1dHRvbl0pOwogICAgICAgICAgICAkaHRtbCAuPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Q3JlYXRlSW5wdXRTdWJtaXQoJHRoaXMtPmlkLCAkYnV0dG9uLCAkdGhpcy0+bGFiZWxzWyRidXR0b25dLCAnY2xhc3M9InN1Ym1pdCInKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhbiBpbnB1dCBmaWVsZCB0byB0aGUgZm9ybQogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgVGhlIHR5cGUgb2YgaW5wdXQKICAgICAqIEBwYXJhbSBhcnJheSAkc2V0dGluZ3MKICAgICAqIEByZXR1cm4gbnVsbAogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uIHNldFdpZGdldCgkbmFtZSwgJHR5cGUgPSAndGV4dCcsICRzZXR0aW5ncyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJHdpZGdldCA9IG5ldyBDTVNGb3JtV2lkZ2V0KCR0aGlzLCAkdGhpcy0+aWQsICR0aGlzLT5tb2R1bGVfbmFtZSwgJG5hbWUsICR0eXBlLCAkc2V0dGluZ3MpOwogICAgICAgIGlmICgkdHlwZSA9PSAnaGlkZGVuJykgewogICAgICAgICAgICAkdGhpcy0+aGlkZGVuX3dpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgICAgICB9IGVsc2VpZiAoJHR5cGUgPT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRNdWx0aXBhcnRGb3JtKCk7IC8vIElmIHdlIGFkZCBmaWxlcywgd2UgaGF2ZSB0byBiZSBwb3N0ZWQgbXVsdGlwYXJ0IGZvcm1zLi4uCiAgICAgICAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICAgICAgfSBlbHNlaWYgKCR0eXBlID09ICdwYXNzd29yZCcpIHsKICAgICAgICAgICAgJHRoaXMtPnNldE1ldGhvZCgncG9zdCcpOyAvLyBJZiB3ZSBhc2sgcGFzc3dvcmQsIHdlIHNob3VsZCBhbHdheXMgcG9zdCB0aGUgZm9ybSBmb3Igc2VjdXJpdHkgcmVhc29uICEKICAgICAgICAgICAgJHRoaXMtPndpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgICAgICB9IGVsc2VpZiAoKCR0eXBlID09ICd0ZXh0YXJlYScpIHx8ICgkdHlwZSA9PSAnY29kZWFyZWEnKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0TWV0aG9kKCdwb3N0Jyk7IC8vIElmIHdlIGFzayBwYXNzd29yZCwgd2Ugc2hvdWxkIGFsd2F5cyBwb3N0IHRoZSBmb3JtIGZvciBzZWN1cml0eSByZWFzb24gIQogICAgICAgICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0gPSAkd2lkZ2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgkbmFtZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFdpZGdldHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsV2lkZ2V0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXRzICsgJHRoaXMtPmhpZGRlbl93aWRnZXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgd2lkZ2V0IG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIENNU0Zvcm1XaWRnZXR8bnVsbAogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uICYgZ2V0V2lkZ2V0KCRuYW1lKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0c1skbmFtZV07CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGlkZGVuX3dpZGdldHNbJG5hbWVdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlkZVdpZGdldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPndpZGdldHNbJG5hbWVdKSkgewogICAgICAgICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0tPmhpZGUoKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXS0+aGlkZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlV2lkZ2V0KCRuYW1lKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT53aWRnZXRzWyRuYW1lXSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd1dpZGdldHMoJHRlbXBsYXRlID0gbnVsbCwgJGZvcmNlID0gZmFsc2UpCiAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+d2lkZ2V0cyBhcyAkd2lkZ2V0KSB7CiAgICAgICAgICAgICRodG1sIC49ICR3aWRnZXQtPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGh0bWw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNob3dXaWRnZXQoJG5hbWUsICR0ZW1wbGF0ZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgICRodG1sID0gJyc7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT53aWRnZXRzWyRuYW1lXSkpIHsKICAgICAgICAgICAgJHdpZGdldCA9ICR0aGlzLT53aWRnZXRzWyRuYW1lXTsKICAgICAgICAgICAgJGh0bWwgLj0gJHdpZGdldC0+c2hvdygkdGVtcGxhdGUsICRmb3JjZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzRXJyb3JzKCkKICAgIHsKICAgICAgICAkaGFzX2Vycm9ycyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+d2lkZ2V0cyBhcyAkd2lkZ2V0KSB7CiAgICAgICAgICAgIGlmICgkd2lkZ2V0LT5oYXNFcnJvcnMoKSkgewogICAgICAgICAgICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+aGlkZGVuX3dpZGdldHMgYXMgJHdpZGdldCkgewogICAgICAgICAgICBpZiAoJHdpZGdldC0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgICAgICRoYXNfZXJyb3JzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpIHsKICAgICAgICAgICAgaWYgKCRmaWVsZHNldC0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgICAgICRoYXNfZXJyb3JzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT5mb3JtX2Vycm9ycykgIT0gMCkgewogICAgICAgICAgICAkaGFzX2Vycm9ycyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhhc19lcnJvcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5vRXJyb3IoKQogICAgewogICAgICAgIHJldHVybiAhJHRoaXMtPmhhc0Vycm9ycygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ZhbGlkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5vRXJyb3IoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvd1ByaW9yaXR5KCkKICAgIHsKICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5zaG93X3ByaW9yaXR5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybV9lcnJvcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbEVycm9ycygpCiAgICB7CiAgICAgICAgJGVycm9ycyA9ICR0aGlzLT5mb3JtX2Vycm9yczsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPndpZGdldHMgYXMgJHdpZGdldCkgewogICAgICAgICAgICBpZiAoJHdpZGdldC0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgICAgICRlcnJvcnNbJHdpZGdldC0+Z2V0TmFtZSgpXSA9ICR3aWRnZXQtPmdldEVycm9ycygpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGVycm9yczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd0Vycm9ycygpCiAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBpZiAoY291bnQoJHRoaXMtPmZvcm1fZXJyb3JzKSA+IDApIHsKICAgICAgICAgICAgJGh0bWwgLj0gJzx1bCBjbGFzcz0iZXJyb3JzIj4nOwogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+Zm9ybV9lcnJvcnMgYXMgJHByaW9yaXR5ID0+ICRlcnJvcnMpIHsKICAgICAgICAgICAgICAgICRodG1sIC49ICc8bGk+JzsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2hvd19wcmlvcml0eSkgJGh0bWwgLj0gJzxlbSBjbGFzcz0iZm9ybV9lcnJvcl9wcmlvcml0eSI+JyAuICRwcmlvcml0eSAuICc8L2VtPic7CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPHVsPic7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikgewogICAgICAgICAgICAgICAgICAgICRodG1sIC49ICc8bGk+JyAuICRlcnJvciAuICc8L2xpPic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPC91bD48L2xpPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGh0bWwgLj0gJzwvdWw+JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRodG1sOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRFcnJvcigkbWVzc2FnZSwgJHByaW9yaXR5ID0gJ2RlZmF1bHQnKQogICAgewogICAgICAgICR0aGlzLT5mb3JtX2Vycm9yc1skcHJpb3JpdHldW10gPSAkbWVzc2FnZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdWJtaXR0ZWQoKQogICAgewogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ3N1Ym1pdCddKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0FwcGxpZWQoKQogICAgewogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ2FwcGx5J10pKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQ2FuY2VsbGVkKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdjYW5jZWwnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgMS4xMC44IFVzZSBpc1NlbnQKICAgICAqLwoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1Bvc3RlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pc1NlbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFZlcmlmeSB0aGF0IHRoZSBmb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCB2aWEgYSBzcGVjaWZpYyBidXR0b24KICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1dHRvbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uIGlzUHVzaGVkKCRidXR0b24pCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkYnV0dG9uXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFZlcmlmeSB0aGF0IHRoZSBmb3JtIGhhcyBiZWVuIHNlbnQgKHZpYSBhbnkgYWN0aXZlIGJ1dHRvbnMpCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlbnQoKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hY3RpdmVfYnV0dG9ucyBhcyAkYnV0dG9uKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNQdXNoZWQoJGJ1dHRvbikpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGaWVsZHNldCgkbmFtZSwgJGxlZ2VuZCA9ICcnKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0pKQogICAgICAgICAgICAkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSA9IG5ldyBDTVNGb3JtRmllbGRzZXQoJHRoaXMsICRuYW1lLCAkbGVnZW5kKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbmFtZQogICAgICogQHJldHVybiBDTVNGb3JtRmllbGRzZXR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gJiBnZXRGaWVsZHNldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEZpZWxkc2V0cygpCiAgICB7CiAgICAgICAgIHJldHVybiAkdGhpcy0+ZmllbGRzZXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXJGaWVsZHNldHMoJHdpZGdldF90ZW1wbGF0ZSA9IG51bGwsICRsZWdlbmQgPSB0cnVlKQogICAgewogICAgICAgICRodG1sID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpIHsKICAgICAgICAgICAgJGh0bWwgLj0gJGZpZWxkc2V0LT5yZW5kZXIoJHdpZGdldF90ZW1wbGF0ZSwgJGxlZ2VuZCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyRmllbGRzZXQoJG5hbWUsICR3aWRnZXRfdGVtcGxhdGUgPSBudWxsKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5maWVsZHNldHNbJG5hbWVdLT5yZW5kZXIoJHdpZGdldF90ZW1wbGF0ZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormFieldset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0Zvcm1GaWVsZHNldCBleHRlbmRzIENNU0Zvcm0KewogICAgcHJvdGVjdGVkICRwYXJlbnRfZm9ybTsKICAgIHByb3RlY3RlZCAkbmFtZTsKICAgIHByb3RlY3RlZCAkbGVnZW5kOwoKICAgIHByb3RlY3RlZCAkcmVuZGVyZWQgPSBmYWxzZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZvcm0sICRuYW1lLCAkbGVnZW5kID0gJycpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkZm9ybS0+bW9kdWxlX25hbWUsICRmb3JtLT5pZCwgJGZvcm0tPmFjdGlvbiwgJGZvcm0tPnJldHVybmlkKTsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgIGlmICgkbGVnZW5kID09ICcnKSB7CiAgICAgICAgICAgICR0aGlzLT5sZWdlbmQgPSAkbmFtZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+bGVnZW5kID0gJGxlZ2VuZDsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnBhcmVudF9mb3JtID0mICRmb3JtOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZWdlbmQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGVnZW5kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1Nob3duZWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVuZGVyZWQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNob3duZWQoKQogICAgewogICAgICAgICR0aGlzLT5yZW5kZXJlZCA9IHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkd2lkZ2V0X3RlbXBsYXRlID0gbnVsbCwgJGxlZ2VuZCA9IHRydWUpCiAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBpZiAoISR0aGlzLT5pc1Nob3duZWQoKSkgewogICAgICAgICAgICAkaHRtbCAuPSAnPGZpZWxkc2V0JzsKICAgICAgICAgICAgJGh0bWwgLj0gKCR0aGlzLT5jbGFzcykgPyAnIGNsYXNzPSInIC4gJHRoaXMtPmNsYXNzIC4gJyInIDogJyc7CiAgICAgICAgICAgICRodG1sIC49ICc+JzsKICAgICAgICAgICAgaWYgKCRsZWdlbmQpIHsKICAgICAgICAgICAgICAgICRodG1sIC49ICc8bGVnZW5kPicgLiAkdGhpcy0+bGVnZW5kIC4gJzwvbGVnZW5kPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGh0bWwgLj0gJHRoaXMtPnNob3dXaWRnZXRzKCR3aWRnZXRfdGVtcGxhdGUpOwogICAgICAgICAgICAkaHRtbCAuPSAnPC9maWVsZHNldD4nOwogICAgICAgICAgICAkdGhpcy0+c2hvd25lZCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRodG1sOwoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCRuYW1lLCAkdHlwZSA9ICd0ZXh0JywgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKICAgICAgICBpZiAoJHR5cGUgPT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgICR0aGlzLT5wYXJlbnRfZm9ybS0+c2V0TXVsdGlwYXJ0Rm9ybSgpOwogICAgICAgIH0KICAgICAgICBwYXJlbnQ6OnNldFdpZGdldCgkbmFtZSwgJHR5cGUsICRzZXR0aW5ncyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUG9zdGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmVudF9mb3JtLT5pc1Bvc3RlZCgpOwogICAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBiYXNlCiovCgovKioKICogQHByb3BlcnR5IGJvb2wgc2hvd19wcmlvcml0eQogKi8KY2xhc3MgQ01TRm9ybUlucHV0CnsKICAgIHByb3RlY3RlZCAkaWQ7CiAgICBwcm90ZWN0ZWQgJG5hbWU7CiAgICBwcm90ZWN0ZWQgJHZhbHVlcyA9IGFycmF5KCk7IC8vIFdlIGFsd2F5cyBzdG9yZSByZXN1bHRzIGluIGFuIGFycmF5LiBJbiBjYXNlIG9mIHNpbmdsZSBmaWVsZCwgdGhlIHNpbmdsZSB2YWx1ZSBpcyBhcnJheVswXQoKICAgIHByb3RlY3RlZCAkZm9ybTsKICAgIHByb3RlY3RlZCAkbW9kdWxlX25hbWU7CiAgICBwcm90ZWN0ZWQgJHNldHRpbmdzID0gYXJyYXkoKTsKCiAgICAvLyBWQUxJREFUSU9OCiAgICBwcm90ZWN0ZWQgJGlzX3ZhbGlkID0gdHJ1ZTsKICAgIHByb3RlY3RlZCAkZm9ybV9lcnJvcnM7CgogICAgLy8gUFJPQ0VTU0lORwogICAgcHJvdGVjdGVkICRzaG93bmVkID0gZmFsc2U7CiAgICBwcm90ZWN0ZWQgJGhpZGUgPSBmYWxzZTsKCiAgICBwcm90ZWN0ZWQgJHRlbXBsYXRlID0gJzxkaXYgY2xhc3M9ImZvcm1fd2lkZ2V0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtX2xhYmVsIj48bGFiZWwgZm9yPSIlSUQlIj4lTEFCRUwlPC9sYWJlbD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtX2Vycm9ycyI+JUVSUk9SUyU8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtX2lucHV0Ij4lSU5QVVQlIDxlbT4lVElQUyU8L2VtPjwvZGl2PgogICAgICA8L2Rpdj4nOwoKICAgIHByb3RlY3RlZCAkYWRtaW5fdGVtcGxhdGUgPSAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0IiBzdHlsZT0iY29sb3I6IHJlZDsiPiVFUlJPUlMlPC9kaXY+Cgk8L2Rpdj4nOwoKLy8gICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKLy8gICAgewovLyAgICAgICAgcmV0dXJuICR0aGlzOwovLyAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRuYW1lKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+JG5hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRyYWNlID0gZGVidWdfYmFja3RyYWNlKCk7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoCiAgICAgICAgICAgICAgICAnVW5kZWZpbmVkIHByb3BlcnR5IHZpYSBfX2dldCgpOiAnIC4gJG5hbWUgLgogICAgICAgICAgICAgICAgJyBpbiAnIC4gJHRyYWNlWzBdWydmaWxlJ10gLgogICAgICAgICAgICAgICAgJyBvbiBsaW5lICcgLiAkdHJhY2VbMF1bJ2xpbmUnXSwKICAgICAgICAgICAgICAgIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldHVwKCRpZCwgJG5hbWUsICYkZm9ybSwgJG1vZHVsZV9uYW1lLCAkc2V0dGluZ3MgPSBhcnJheSgpKQogICAgewogICAgICAgICR0aGlzLT5pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+bmFtZSA9IGlzc2V0KCRzZXR0aW5nc1snbmFtZSddKSA/ICRzZXR0aW5nc1snbmFtZSddIDogJG5hbWU7CiAgICAgICAgJHRoaXMtPmZvcm0gPSAkZm9ybTsKICAgICAgICAkdGhpcy0+bW9kdWxlX25hbWUgPSAkbW9kdWxlX25hbWU7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGluaXQoKQogICAgewogICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGZpZWxkCiAgICAgICAgJHRoaXMtPmluaXRWYWx1ZXMoKTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBDTVNGb3JtCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb3JtKCkKICAgIHsKICAgICAgICBpZiAoIWlzX29iamVjdCgkdGhpcy0+Zm9ybSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQW4gZXJyb3Igb2NjdXJlZCByZXRyaWV2aW5nIHRoZSBmb3JtIG9iamVjdC4nKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bGUoKQogICAgewogICAgICAgIGlmICgkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuICRtb2R1bGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKTsgLy8gRGVmYXVsdCBzYWZlYmFjawogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2V0dGluZygkc2V0dGluZywgJGRlZmF1bHRfdmFsdWUgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJHNldHRpbmddKSA/ICR0aGlzLT5zZXR0aW5nc1skc2V0dGluZ10gOiAkZGVmYXVsdF92YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2V0dGluZygkc2V0dGluZywgJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT5zZXR0aW5nc1skc2V0dGluZ10gPSAkdmFsdWU7CiAgICB9CgogICAgLy8gIyMjIyMgRk9STSAjIyMjIwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgICByZXR1cm4gKHN0cmluZykkdGhpcy0+Z2V0VmFsdWUoKTsgLy8gRG9uJ3Qga25vdyB3aGF0IHRvIGRvPyBTaG93IHRoZSB2YWx1ZS4KICAgIH0KCiAgICAvLyAjIyMjIyBXSURHRVQgUFJPQ0VTU0lORyAjIyMjIwoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzKCRzYXZlID0gdHJ1ZSkKICAgIHsKICAgICAgICAvLyBWYWxpZGF0ZQogICAgICAgICR0aGlzLT52YWxpZGF0ZSgpOwoKICAgICAgICAvLyBTYXZlIHZhbHVlcwogICAgICAgIGlmICgkc2F2ZSA9PSB0cnVlKSB7CiAgICAgICAgICAgICR0aGlzLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93KCR0ZW1wbGF0ZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgIC8vIFRPRE86IFJFRkFDVE9SSU5HCgogICAgICAgIGlmICgoISR0aGlzLT5pc1Nob3duZWQoKSB8fCAkZm9yY2UpKSB7CiAgICAgICAgICAgICRodG1sID0gJyc7CgogICAgICAgICAgICAvLyBpZiAoIWlzX251bGwoJHRlbXBsYXRlKSAmJiAoJHRoaXMtPnR5cGUgIT0gJ2hpZGRlbicpKSAvLyBGSVhNRQogICAgICAgICAgICBpZiAoIWlzX251bGwoJHRlbXBsYXRlKSkgewogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUlEJScsICR0aGlzLT5pZCAuICR0aGlzLT5uYW1lLCAkdGVtcGxhdGUpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUZJRUxETkFNRSUnLCAkdGhpcy0+bmFtZSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUxBQkVMJScsICR0aGlzLT5nZXRMYWJlbCgpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclTEFCRUxfVEFHJScsICR0aGlzLT5nZXRMYWJlbFRhZygpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclSU5QVVQlJywgJHRoaXMtPmdldElucHV0KCksICR0ZXh0KTsKICAgICAgICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoJyVFUlJPUlMlJywgJHRoaXMtPnNob3dFcnJvcnMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVRJUFMlJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVBSRUZJWCUnLCAkdGhpcy0+Z2V0VGlwcygpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclU1VGSVglJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJGh0bWwgLj0gJHRleHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAoc3RyaW5nKSR0aGlzOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd3aXRoX2RpdiddKSkgewogICAgICAgICAgICAgICAgJGh0bWwgPSAnPGRpdiBjbGFzcz0iJyAuICR0aGlzLT5nZXRTZXR0aW5nKCdjbGFzcycsICdmaWVsZF8nIC4gJHRoaXMtPm5hbWUpIC4gJyI+JyAuICRodG1sIC4gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zaG93bmVkKCk7CiAgICAgICAgICAgIHJldHVybiAkaHRtbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNob3duZWQoKQogICAgewogICAgICAgICR0aGlzLT5zaG93bmVkID0gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTaG93bmVkKCkKICAgIHsKICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5zaG93bmVkOwogICAgfQoKICAgIC8vICMjIyMjIENPU01FVElDUyAjIyMjIwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNob3coJHRoaXMtPmdldFRlbXBsYXRlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZW1wbGF0ZSgpCiAgICB7CiAgICAgICAgZ2xvYmFsICRDTVNfQURNSU5fUEFHRTsKCiAgICAgICAgaWYgKCRDTVNfQURNSU5fUEFHRSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmFkbWluX3RlbXBsYXRlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dGVtcGxhdGU7CiAgICAgICAgfQogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFiZWwoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2xhYmVsJ10pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ2xhYmVsJ107CiAgICAgICAgfQogICAgICAgIC8vIFRyeSB0byBnZXQgaXQgZnJvbSBsYW5ndWFnZSBmaWxlCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+bGFuZygnZm9ybV8nIC4gJHRoaXMtPm5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgaWYoJHRoaXMtPmdldExhYmVsKCkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldExhYmVsKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TmFtZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFiZWxUYWcoKQogICAgewogICAgICAgIHJldHVybiAnPGxhYmVsIGZvcj0iJyAuICR0aGlzLT5pZCAuICR0aGlzLT5uYW1lIC4gJyI+JyAuICR0aGlzLT5nZXRMYWJlbCgpIC4gJzwvbGFiZWw+JzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGlwcygpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndGlwcyddKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWyd0aXBzJ107CiAgICAgICAgfQogICAgICAgIC8vIFRyeSB0byBnZXQgaXQgZnJvbSBsYW5ndWFnZSBmaWxlCiAgICAgICAgLy8gaWYgKGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpKQogICAgICAgIC8vICAgewogICAgICAgIC8vICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBzaG93biBvbmx5IGl0IHRoZSBsYW5nIGtleSBleGlzdHMuLi4KICAgICAgICAvLyAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5sYW5nKCd0aXBzXycuJHRoaXMtPm5hbWUpOwogICAgICAgIC8vICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKCiAgICAvLyAjIyMjIyBWQUxVRVMgIyMjIyMKCiAgICAvLyBTQVZFCgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+aXNWYWxpZCgpID09IHRydWUpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2F2ZU9iamVjdCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zYXZlUHJlZmVyZW5jZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNhdmVVc2VyUHJlZmVyZW5jZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RlZmF1bHRfdmFsdWUnXSkgJiYgISR0aGlzLT5nZXRGb3JtKCktPmlzU2VudCgpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzYXZlT2JqZWN0KCkKICAgIHsKCiAgICAgICAgLy8gVGhpcyBkbyBub3Qgc2F2ZSB0aGUgb2JqZWN0IHN0YXRlLCBzbyB3ZSBoYXZlIHRvIGRvIGl0IG91dHNpZGUgdGhlIGZvcm0KCiAgICAgICAgJHZhbHVlcyA9ICR0aGlzLT5nZXRWYWx1ZSgpOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydzZXRfbWV0aG9kJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnskdGhpcy0+c2V0dGluZ3NbJ3NldF9tZXRob2QnXX0oJHZhbHVlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZmllbGRfbmFtZSddKSkgewogICAgICAgICAgICAgICAgJG5hbWUgPSAkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPm5hbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10sICdzZXQnKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+c2V0KCRuYW1lLCAkdmFsdWVzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+JG5hbWUgPSAkdmFsdWVzOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAgICAgZGllKCdVbmFibGUgdG8gc2F2ZSB0aGUgb2JqZWN0OiAnIC4gJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVQcmVmZXJlbmNlKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICYmICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ2NhbmNlbCddKSkgewogICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBubyBjYW5jZWwgYnV0dG9uIGZpcnN0IGJlY2F1c2Ugd2Ugc2F2ZSB0aGUgdmFsdWUgZGlyZWN0bHkgIQogICAgICAgICAgICAkdGhpcy0+Z2V0TW9kdWxlKCktPnNldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10sICR0aGlzLT5nZXRWYWx1ZSgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVVc2VyUHJlZmVyZW5jZSgpCiAgICB7CiAgICAgICAgJF9TRVNTSU9OWydtb2R1bGVzJ11bJHRoaXMtPm1vZHVsZV9uYW1lXVsncHJlZmVyZW5jZXMnXVskdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddXSA9ICR0aGlzLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIC8vIFZhbHVlcyBtYW5pcHVsYXRpb24KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdFZhbHVlcygpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoaHRtbF9lbnRpdHlfZGVjb2RlKCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWyd2YWx1ZSddKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkgJiYgISR0aGlzLT5nZXRGb3JtKCktPmlzUG9zdGVkKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+ZmV0Y2hPYmplY3RWYWx1ZXMoKSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAmJiAkdGhpcy0+Z2V0TW9kdWxlKCktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICE9ICcnKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPmdldE1vZHVsZSgpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndXNlcl9wcmVmZXJlbmNlJ10pICYmICgkdmFsdWUgPSAkdGhpcy0+Z2V0VXNlclByZWZlcmVuY2UoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZGVmYXVsdF92YWx1ZSddKSAmJiAhJHRoaXMtPmdldEZvcm0oKS0+aXNTZW50KCkpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmZXRjaE9iamVjdFZhbHVlcygpCiAgICB7CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSAmJiBpc19vYmplY3QoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnskdGhpcy0+c2V0dGluZ3NbJ2dldF9tZXRob2QnXX0oKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuYW1lID0gaXNzZXQoJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10pID8gJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10gOiAkdGhpcy0+bmFtZTsKCiAgICAgICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnZ2V0JykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+Z2V0KCRuYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICAgICBhdWRpdCgnJywgJ0NNU0Zvcm1zJywgJ1VuYWJsZSB0byByZXRyaWV2ZSB2YWx1ZSBmb3IgZmllbGQgJyAuICRuYW1lIC4gJyB3aXRoIG1lc3NhZ2UgJyAuICRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFVzZXJQcmVmZXJlbmNlKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9TRVNTSU9OWydtb2R1bGVzJ11bJHRoaXMtPm1vZHVsZV9uYW1lXVsncHJlZmVyZW5jZXMnXVskdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRfU0VTU0lPTlsnbW9kdWxlcyddWyR0aGlzLT5tb2R1bGVfbmFtZV1bJ3ByZWZlcmVuY2VzJ11bJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXV07CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpCiAgICB7CiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT52YWx1ZXMpID09IDEpIHsKICAgICAgICAgICAgcmVzZXQoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKWN1cnJlbnQoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpaW1wbG9kZSgnfHx8JywgJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZSgkdmFsdWUsICRrZXkgPSAwKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZXNbJGtleV0gPSAoc3RyaW5nKSR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJZkVxdWFsKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmdldFZhbHVlKCkgPT0gJHZhbHVlKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoYXJyYXkoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZXMoJHZhbHVlcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXMgPSAkdmFsdWVzOwogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJHZhbHVlcywgJ3x8fCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkdGhpcy0+dmFsdWVzID0gZXhwbG9kZSgnfHx8JywgJHZhbHVlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlc1swXSA9ICR2YWx1ZXM7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNldFZhbHVlcygpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlcyA9IGFycmF5KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldERlZmF1bHRWYWx1ZXMoJHZhbHVlcykKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlcykpIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICR2YWx1ZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlcyA9IGFycmF5KCR2YWx1ZXMpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpCiAgICB7CiAgICAgICAgaWYgKChjb3VudCgkdGhpcy0+dmFsdWVzKSA9PSAxKSAmJiAoZW1wdHkoJHRoaXMtPnZhbHVlc1swXSkpIHx8IChjb3VudCgkdGhpcy0+dmFsdWVzKSA9PSAwKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFZhbHVlcyB2YWxpZGF0aW9uCgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ10pICYmIGlzX2FycmF5KCR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddKSkgewogICAgICAgICAgICAvLyBDSEFOR0UgVEhBVAoKICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ10gYXMgJHZhbGlkYXRvciA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmIChpc19vYmplY3QoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICR2YWxpZGF0ZSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAkdmFsaWRhdGUtPnNldFdpZGdldCgkdGhpcyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIERFUFJFQ0FURUQKICAgICAgICAgICAgICAgICAgICAkdmFsaWRhdGUgPSBuZXcgQ01TRm9ybVZhbGlkYXRvcigkdGhpcywgJHZhbGlkYXRvciwgJHZhbHVlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsaWRhdGUtPmNoZWNrKCkgPT09IGZhbHNlKSAkdGhpcy0+aXNfdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRFcnJvcigkZS0+Z2V0TWVzc2FnZSgpLCAnZm9ybSBlcnJvcicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ZhbGlkKCkKICAgIHsKICAgICAgICBpZiAoKCR0aGlzLT5pc192YWxpZCA9PSBmYWxzZSkgfHwgJHRoaXMtPmhhc0Vycm9ycygpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ3ZhbGlkYXRvcnMnXVskdmFsaWRhdG9yXSA9ICRwYXJhbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVZhbGlkYXRvcigkdmFsaWRhdG9yKQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddWyR2YWxpZGF0b3JdKTsKICAgIH0KCiAgICAvLyBFUlJPUlMKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvd1ByaW9yaXR5KCkKICAgIHsKICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5zaG93X3ByaW9yaXR5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNFcnJvcnMoKQogICAgewogICAgICAgIGlmIChjb3VudCgkdGhpcy0+Zm9ybV9lcnJvcnMpID09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9FcnJvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+aGFzRXJyb3JzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9ycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtX2Vycm9yczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd0Vycm9ycygpCiAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBpZiAoY291bnQoJHRoaXMtPmZvcm1fZXJyb3JzKSA+IDApIHsKICAgICAgICAgICAgJGh0bWwgLj0gJzx1bCBjbGFzcz0iZm9ybV93aWRnZXRfZXJyb3JzIj4nOwogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+Zm9ybV9lcnJvcnMgYXMgJHByaW9yaXR5ID0+ICRlcnJvcnMpIHsKICAgICAgICAgICAgICAgICRodG1sIC49ICc8bGk+JzsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2hvd19wcmlvcml0eSkgJGh0bWwgLj0gJzxlbSBjbGFzcz0iZm9ybV93aWRnZXRfZXJyb3JfcHJpb3JpdHkiPicgLiAkcHJpb3JpdHkgLiAnPC9lbT4nOwogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzx1bD4nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVycm9ycyBhcyAkZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpIGNsYXNzPSJmb3JtX3dpZGdldF9lcnJvcl9tZXNzYWdlIj4nIC4gJGVycm9yIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8L3VsPjwvbGk+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaHRtbCAuPSAnPC91bD4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGh0bWw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCAkcHJpb3JpdHkgPSAnZGVmYXVsdCcpCiAgICB7CiAgICAgICAgJHRoaXMtPmZvcm1fZXJyb3JzWyRwcmlvcml0eV1bXSA9ICRtZXNzYWdlOwogICAgfQoKCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCheckbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBDaGVja2JveAoqLwoKY2xhc3MgQ01TRm9ybUlucHV0Q2hlY2tib3ggZXh0ZW5kcyBDTVNGb3JtSW5wdXQKewoKICAgIHByb3RlY3RlZCAkdGVtcGxhdGUgPSAnPGRpdiBjbGFzcz0iZm9ybV93aWRnZXQiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1fbGFiZWwiPjxsYWJlbCBmb3I9IiVJRCUiPiVMQUJFTCU8L2xhYmVsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1fZXJyb3JzIj4lRVJST1JTJTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1faW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CiAgICAgIDwvZGl2Pic7CgogICAgcHJvdGVjdGVkICRhZG1pbl90ZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9sYWJlbD48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2Pic7CgogICAgcHVibGljIGZ1bmN0aW9uIGluaXRWYWx1ZXMoKQogICAgewogICAgICAgIC8vIHZhcl9kdW1wKCdpbml0IGNoZWNrYm94ICcgLiAkdGhpcy0+bmFtZSk7CiAgICAgICAgLy8gdmFyX2R1bXAoJHRoaXMtPmdldFZhbHVlcygpKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICghaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkgfHwgaXNfbnVsbCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKSkKICAgICAgICAgICAgJiYKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdzdWJtaXQnXSkKICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICBpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ2FwcGx5J10pCiAgICAgICAgICAgICkKCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8vIENhc2Ugd2hlbiBjaGVja2JveCBpcyB1bmNoZWNrZWQgYW5kIGZvcm0gaXMgc3VibWl0dGVkLCB3ZSBzaG91bGQgZW1wdHkgdGhlIHZhbHVlCiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoKTsKICAgICAgICAgICAgLy8gJHRoaXMtPnNldFZhbHVlKC0xKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwYXJlbnQ6OmluaXRWYWx1ZXMoKTsKICAgICAgICB9CiAgICAgICAgLy8gdmFyX2R1bXAoJHRoaXMtPmdldFZhbHVlcygpKTsKICAgICAgICAvLyB2YXJfZHVtcCgkdGhpcy0+Z2V0VmFsdWVzKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgJGlucHV0ID0gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVJbnB1dENoZWNrYm94KCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICcxJywgKGludGVnZXIpKGJvb2xlYW4pJHRoaXMtPmdldFZhbHVlKCkpOwoKICAgICAgICBpZigkdGV4dCA9ICR0aGlzLT5nZXRTZXR0aW5nKCd0ZXh0JykpCiAgICAgICAgewogICAgICAgICAgICAkaW5wdXQgLj0gJyAnIC4gJHRleHQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGlucHV0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCountries.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0Q291bnRyaWVzIGV4dGVuZHMgQ01TRm9ybUlucHV0U2VsZWN0CiAgewogICAgcHVibGljIHN0YXRpYyAkY291bnRyaWVzID0gYXJyYXkoCiAgICAgICdBRicgPT4gJ0FmZ2hhbmlzdGFuJywgJ0FMJyA9PiAnQWxiYW5pYScsICdEWicgPT4gJ0FsZ2VyaWEnLCAnQVMnID0+ICdBbWVyaWNhbiBTYW1vYScsICdBRCcgPT4gJ0FuZG9ycmEnLCAnQU8nID0+ICdBbmdvbGEnLCAnQUknID0+ICdBbmd1aWxsYScsICdBUScgPT4gJ0FudGFyY3RpY2EnLCAnQUcnID0+ICdBbnRpZ3VhIGFuZCBCYXJidWRhJywgJ0FSJyA9PiAnQXJnZW50aW5hJywgJ0FNJyA9PiAnQXJtZW5pYScsICdBVycgPT4gJ0FydWJhJywgJ0FVJyA9PiAnQXVzdHJhbGlhJywgJ0FUJyA9PiAnQXVzdHJpYScsICdBWicgPT4gJ0F6ZXJiYWlqYW4nLCAnQlMnID0+ICdCYWhhbWFzJywgJ0JIJyA9PiAnQmFocmFpbicsICdCRCcgPT4gJ0JhbmdsYWRlc2gnLCAnQkInID0+ICdCYXJiYWRvcycsICdCWScgPT4gJ0JlbGFydXMnLCAnQkUnID0+ICdCZWxnaXVtJywgJ0JaJyA9PiAnQmVsaXplJywgJ0JKJyA9PiAnQmVuaW4nLCAnQk0nID0+ICdCZXJtdWRhJywgJ0JUJyA9PiAnQmh1dGFuJywgJ0JPJyA9PiAnQm9saXZpYScsICdCQScgPT4gJ0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnLCAnQlcnID0+ICdCb3Rzd2FuYScsICdCVicgPT4gJ0JvdXZldCBJc2xhbmQnLCAnQlInID0+ICdCcmF6aWwnLCAnSU8nID0+ICdCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnknLCAnVkcnID0+ICdCcml0aXNoIFZpcmdpbiBJc2xhbmRzJywgJ0JOJyA9PiAnQnJ1bmVpJywgJ0JHJyA9PiAnQnVsZ2FyaWEnLCAnQkYnID0+ICdCdXJraW5hIEZhc28nLCAnQkknID0+ICdCdXJ1bmRpJywgJ0tIJyA9PiAnQ2FtYm9kaWEnLCAnQ00nID0+ICdDYW1lcm9vbicsICdDQScgPT4gJ0NhbmFkYScsICdDVicgPT4gJ0NhcGUgVmVyZGUnLCAnS1knID0+ICdDYXltYW4gSXNsYW5kcycsICdDRicgPT4gJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYycsICdURCcgPT4gJ0NoYWQnLCAnQ0wnID0+ICdDaGlsZScsICdDTicgPT4gJ0NoaW5hJywgJ0NYJyA9PiAnQ2hyaXN0bWFzIElzbGFuZCcsICdDQycgPT4gJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJywgJ0NPJyA9PiAnQ29sb21iaWEnLCAnS00nID0+ICdDb21vcm9zJywgJ0NHJyA9PiAnQ29uZ28nLCAnQ0snID0+ICdDb29rIElzbGFuZHMnLCAnQ1InID0+ICdDb3N0YSBSaWNhJywgJ0hSJyA9PiAnQ3JvYXRpYScsICdDVScgPT4gJ0N1YmEnLCAnQ1knID0+ICdDeXBydXMnLCAnQ1onID0+ICdDemVjaCBSZXB1YmxpYycsICdDSScgPT4gJ0PDtHRlIGRcJ0l2b2lyZScsICdDRCcgPT4gJ0RlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlIENvbmdvJywgJ0RLJyA9PiAnRGVubWFyaycsICdESicgPT4gJ0RqaWJvdXRpJywgJ0RNJyA9PiAnRG9taW5pY2EnLCAnRE8nID0+ICdEb21pbmljYW4gUmVwdWJsaWMnLCAnRUMnID0+ICdFY3VhZG9yJywgJ0VHJyA9PiAnRWd5cHQnLCAnU1YnID0+ICdFbCBTYWx2YWRvcicsICdHUScgPT4gJ0VxdWF0b3JpYWwgR3VpbmVhJywgJ0VSJyA9PiAnRXJpdHJlYScsICdFRScgPT4gJ0VzdG9uaWEnLCAnRVQnID0+ICdFdGhpb3BpYScsICdGSycgPT4gJ0ZhbGtsYW5kIElzbGFuZHMnLCAnRk8nID0+ICdGYXJvZSBJc2xhbmRzJywgJ0ZKJyA9PiAnRmlqaScsICdGSScgPT4gJ0ZpbmxhbmQnLCAnRlInID0+ICdGcmFuY2UnLCAnR0YnID0+ICdGcmVuY2ggR3VpYW5hJywgJ1BGJyA9PiAnRnJlbmNoIFBvbHluZXNpYScsICdURicgPT4gJ0ZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllcycsICdHQScgPT4gJ0dhYm9uJywgJ0dNJyA9PiAnR2FtYmlhJywgJ0dFJyA9PiAnR2VvcmdpYScsICdERScgPT4gJ0dlcm1hbnknLCAnR0gnID0+ICdHaGFuYScsICdHSScgPT4gJ0dpYnJhbHRhcicsICdHUicgPT4gJ0dyZWVjZScsICdHTCcgPT4gJ0dyZWVubGFuZCcsICdHRCcgPT4gJ0dyZW5hZGEnLCAnR1AnID0+ICdHdWFkZWxvdXBlJywgJ0dVJyA9PiAnR3VhbScsICdHVCcgPT4gJ0d1YXRlbWFsYScsICdHTicgPT4gJ0d1aW5lYScsICdHVycgPT4gJ0d1aW5lYS1CaXNzYXUnLCAnR1knID0+ICdHdXlhbmEnLCAnSFQnID0+ICdIYWl0aScsICdITScgPT4gJ0hlYXJkIElzbGFuZCBhbmQgTWNEb25hbGQgSXNsYW5kcycsICdITicgPT4gJ0hvbmR1cmFzJywgJ0hLJyA9PiAnSG9uZyBLb25nIFMuQS5SLiwgQ2hpbmEnLCAnSFUnID0+ICdIdW5nYXJ5JywgJ0lTJyA9PiAnSWNlbGFuZCcsICdJTicgPT4gJ0luZGlhJywgJ0lEJyA9PiAnSW5kb25lc2lhJywgJ0lSJyA9PiAnSXJhbicsICdJUScgPT4gJ0lyYXEnLCAnSUUnID0+ICdJcmVsYW5kJywgJ0lMJyA9PiAnSXNyYWVsJywgJ0lUJyA9PiAnSXRhbHknLCAnSk0nID0+ICdKYW1haWNhJywgJ0pQJyA9PiAnSmFwYW4nLCAnSk8nID0+ICdKb3JkYW4nLCAnS1onID0+ICdLYXpha2hzdGFuJywgJ0tFJyA9PiAnS2VueWEnLCAnS0knID0+ICdLaXJpYmF0aScsICdLVicgPT4gJ0tvc292bycsICdLVycgPT4gJ0t1d2FpdCcsICdLRycgPT4gJ0t5cmd5enN0YW4nLCAnTEEnID0+ICdMYW9zJywgJ0xWJyA9PiAnTGF0dmlhJywgJ0xCJyA9PiAnTGViYW5vbicsICdMUycgPT4gJ0xlc290aG8nLCAnTFInID0+ICdMaWJlcmlhJywgJ0xZJyA9PiAnTGlieWEnLCAnTEknID0+ICdMaWVjaHRlbnN0ZWluJywgJ0xUJyA9PiAnTGl0aHVhbmlhJywgJ0xVJyA9PiAnTHV4ZW1ib3VyZycsICdNTycgPT4gJ01hY2FvIFMuQS5SLiwgQ2hpbmEnLCAnTUsnID0+ICdNYWNlZG9uaWEnLCAnTUcnID0+ICdNYWRhZ2FzY2FyJywgJ01XJyA9PiAnTWFsYXdpJywgJ01ZJyA9PiAnTWFsYXlzaWEnLCAnTVYnID0+ICdNYWxkaXZlcycsICdNTCcgPT4gJ01hbGknLCAnTVQnID0+ICdNYWx0YScsICdNSCcgPT4gJ01hcnNoYWxsIElzbGFuZHMnLCAnTVEnID0+ICdNYXJ0aW5pcXVlJywgJ01SJyA9PiAnTWF1cml0YW5pYScsICdNVScgPT4gJ01hdXJpdGl1cycsICdZVCcgPT4gJ01heW90dGUnLCAnTVgnID0+ICdNZXhpY28nLCAnRk0nID0+ICdNaWNyb25lc2lhJywgJ01EJyA9PiAnTW9sZG92YScsICdNQycgPT4gJ01vbmFjbycsICdNTicgPT4gJ01vbmdvbGlhJywgJ01TJyA9PiAnTW9udHNlcnJhdCcsICdNQScgPT4gJ01vcm9jY28nLCAnTVonID0+ICdNb3phbWJpcXVlJywgJ01NJyA9PiAnTXlhbm1hcicsICdOQScgPT4gJ05hbWliaWEnLCAnTlInID0+ICdOYXVydScsICdOUCcgPT4gJ05lcGFsJywgJ05MJyA9PiAnTmV0aGVybGFuZHMnLCAnQU4nID0+ICdOZXRoZXJsYW5kcyBBbnRpbGxlcycsICdOQycgPT4gJ05ldyBDYWxlZG9uaWEnLCAnTlonID0+ICdOZXcgWmVhbGFuZCcsICdOSScgPT4gJ05pY2FyYWd1YScsICdORScgPT4gJ05pZ2VyJywgJ05HJyA9PiAnTmlnZXJpYScsICdOVScgPT4gJ05pdWUnLCAnTkYnID0+ICdOb3Jmb2xrIElzbGFuZCcsICdLUCcgPT4gJ05vcnRoIEtvcmVhJywgJ01QJyA9PiAnTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywgJ05PJyA9PiAnTm9yd2F5JywgJ09NJyA9PiAnT21hbicsICdQSycgPT4gJ1Bha2lzdGFuJywgJ1BXJyA9PiAnUGFsYXUnLCAnUFMnID0+ICdQYWxlc3RpbmlhbiBUZXJyaXRvcnknLCAnUEEnID0+ICdQYW5hbWEnLCAnUEcnID0+ICdQYXB1YSBOZXcgR3VpbmVhJywgJ1BZJyA9PiAnUGFyYWd1YXknLCAnUEUnID0+ICdQZXJ1JywgJ1BIJyA9PiAnUGhpbGlwcGluZXMnLCAnUE4nID0+ICdQaXRjYWlybicsICdQTCcgPT4gJ1BvbGFuZCcsICdQVCcgPT4gJ1BvcnR1Z2FsJywgJ1BSJyA9PiAnUHVlcnRvIFJpY28nLCAnUUEnID0+ICdRYXRhcicsICdSTycgPT4gJ1JvbWFuaWEnLCAnUlUnID0+ICdSdXNzaWEnLCAnUlcnID0+ICdSd2FuZGEnLCAnUkUnID0+ICdSw6l1bmlvbicsICdTSCcgPT4gJ1NhaW50IEhlbGVuYScsICdLTicgPT4gJ1NhaW50IEtpdHRzIGFuZCBOZXZpcycsICdMQycgPT4gJ1NhaW50IEx1Y2lhJywgJ1BNJyA9PiAnU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbicsICdWQycgPT4gJ1NhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzJywgJ1dTJyA9PiAnU2Ftb2EnLCAnU00nID0+ICdTYW4gTWFyaW5vJywgJ1NUJyA9PiAnU2FvIFRvbWUgYW5kIFByaW5jaXBlJywgJ1NBJyA9PiAnU2F1ZGkgQXJhYmlhJywgJ1NOJyA9PiAnU2VuZWdhbCcsICdTUCcgPT4gJ1NlcmJpYScsICdSUycgPT4gJ1NlcmJpYScsICdTQycgPT4gJ1NleWNoZWxsZXMnLCAnU0wnID0+ICdTaWVycmEgTGVvbmUnLCAnU0cnID0+ICdTaW5nYXBvcmUnLCAnU0snID0+ICdTbG92YWtpYScsICdTSScgPT4gJ1Nsb3ZlbmlhJywgJ1NCJyA9PiAnU29sb21vbiBJc2xhbmRzJywgJ1NPJyA9PiAnU29tYWxpYScsICdaQScgPT4gJ1NvdXRoIEFmcmljYScsICdHUycgPT4gJ1NvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzJywgJ0tSJyA9PiAnU291dGggS29yZWEnLCAnRVMnID0+ICdTcGFpbicsICdMSycgPT4gJ1NyaSBMYW5rYScsICdTRCcgPT4gJ1N1ZGFuJywgJ1NSJyA9PiAnU3VyaW5hbWUnLCAnU0onID0+ICdTdmFsYmFyZCBhbmQgSmFuIE1heWVuJywgJ1NaJyA9PiAnU3dhemlsYW5kJywgJ1NFJyA9PiAnU3dlZGVuJywgJ0NIJyA9PiAnU3dpdHplcmxhbmQnLCAnU1knID0+ICdTeXJpYScsICdUVycgPT4gJ1RhaXdhbicsICdUSicgPT4gJ1RhamlraXN0YW4nLCAnVFonID0+ICdUYW56YW5pYScsICdUSCcgPT4gJ1RoYWlsYW5kJywgJ1RMJyA9PiAnVGltb3ItTGVzdGUnLCAnVEcnID0+ICdUb2dvJywgJ1RLJyA9PiAnVG9rZWxhdScsICdUTycgPT4gJ1RvbmdhJywgJ1RUJyA9PiAnVHJpbmlkYWQgYW5kIFRvYmFnbycsICdUTicgPT4gJ1R1bmlzaWEnLCAnVFInID0+ICdUdXJrZXknLCAnVE0nID0+ICdUdXJrbWVuaXN0YW4nLCAnVEMnID0+ICdUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMnLCAnVFYnID0+ICdUdXZhbHUnLCAnVkknID0+ICdVLlMuIFZpcmdpbiBJc2xhbmRzJywgJ1VHJyA9PiAnVWdhbmRhJywgJ1VBJyA9PiAnVWtyYWluZScsICdBRScgPT4gJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywgJ0dCJyA9PiAnVW5pdGVkIEtpbmdkb20nLCAnVVMnID0+ICdVbml0ZWQgU3RhdGVzJywgJ1VNJyA9PiAnVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzJywgJ1VZJyA9PiAnVXJ1Z3VheScsICdVWicgPT4gJ1V6YmVraXN0YW4nLCAnVlUnID0+ICdWYW51YXR1JywgJ1ZBJyA9PiAnVmF0aWNhbicsICdWRScgPT4gJ1ZlbmV6dWVsYScsICdWTicgPT4gJ1ZpZXRuYW0nLCAnV0YnID0+ICdXYWxsaXMgYW5kIEZ1dHVuYScsICdFSCcgPT4gJ1dlc3Rlcm4gU2FoYXJhJywgJ1lFJyA9PiAnWWVtZW4nLCAnWVUnID0+ICdZdWdvc2xhdmlhJywgJ1pNJyA9PiAnWmFtYmlhJywgJ1pXJyA9PiAnWmltYmFid2UnCiAgICAgICk7CiAgICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUNvdW50cmllc1NlbGVjdG9yKCR0aGlzLT5pZCwkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWVzKCksJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVDb3VudHJpZXNTZWxlY3RvcigkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpCiAgICB7CiAgICAgICRzZXR0aW5nc1sndmFsdWVzJ10gPSBzZWxmOjokY291bnRyaWVzOwogICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZSBleHRlbmRzIENNU0Zvcm1JbnB1dFNlbGVjdAogIHsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkgIHsKICAgICAgaWYgKChjb3VudCgkdGhpcy0+dmFsdWVzKSA+IDEpKQogICAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJzAnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzEnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzInXTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLScsICR0aGlzLT52YWx1ZXMpOwogICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZURhdGVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLCR0aGlzLT5nZXRWYWx1ZXMoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydD0wKSB7CiAgICAgIGlmICgoJGVuZCA8IDApfHwoIWlzX251bWVyaWMoJGVuZCkpKSAkZW5kID0gMTsKICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKQogICAgICB7CiAgICAgICAgJGxpc3RbJGldID0gKCRpIDwgMTApPyAnMCcgLiAoc3RyaW5nKSRpOihzdHJpbmcpJGk7CiAgICAgIH0KICAgICAgcmV0dXJuICRsaXN0OwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURhdGVTZWxlY3QoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKSAgewogICAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgICAgewogICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJy0nKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCctJywkdmFsdWVzWzBdKTsKICAgICAgfQogICAgICAkc3RhcnRfeWVhciA9IGlzc2V0KCRzZXR0aW5nc1snc3RhcnRfeWVhciddKT8kc2V0dGluZ3NbJ3N0YXJ0X3llYXInXTpkYXRlKCdZJyk7CiAgICAgICRudW1iZXJfeWVhcnMgPSBpc3NldCgkc2V0dGluZ3NbJ251bWJlcl95ZWFycyddKT8kc2V0dGluZ3NbJ251bWJlcl95ZWFycyddOjIwOwogICAgICAkZW5kX3llYXIgPSAkc3RhcnRfeWVhciArICRudW1iZXJfeWVhcnM7CgogICAgICAkeWVhciA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1swXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgkZW5kX3llYXIsJHN0YXJ0X3llYXIpLGFycmF5KCR2YWx1ZXNbMF0pLDEsJycsZmFsc2UpOwogICAgICAkbW9udGggPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMV0nLHNlbGY6OkNyZWF0ZU1vbnRoc0xpc3QoKSxhcnJheSgkdmFsdWVzWzFdKSwxLCcnLGZhbHNlKTsKICAgICAgJGRheSA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1syXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgzMSwxKSxhcnJheSgkdmFsdWVzWzJdKSwxLCcnLGZhbHNlKTsKICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXVyb3BlYW5fZGF0ZSddKSkKICAgICAgewogICAgICAgIHJldHVybiAkZGF5IC4gJG1vbnRoIC4gJHllYXI7CiAgICAgIH0KICAgICAgcmV0dXJuICR5ZWFyIC4gJG1vbnRoIC4gJGRheTsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVNb250aHNMaXN0KCkgewogICAgICAkbW9udGhzID0gYXJyYXkoKTsKICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDEyOyArKyRpKSB7CiAgICAgICAgJHQgPSBta3RpbWUoMCwgMCwgMCwgJGksIDEsIDIwMDApOwogICAgICAgICRtb250aHNbJGldID0gZGF0ZSgnTScsICR0KTsKICAgICAgfQogICAgICByZXR1cm4gJG1vbnRoczsKICAgIH0KICAKICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDateTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZVRpbWUKCQlCYXNlZCBvbiBhIHRpbWVzdGFtcCB2YWx1ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZVRpbWUgZXh0ZW5kcyBDTVNGb3JtSW5wdXRUaW1lCiAgewogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKSAgewogICAgICBpZiAoKGNvdW50KCR0aGlzLT52YWx1ZXMpID4gMSkpCiAgICAgIHsKCQkJCXJldHVybiBzdHJ0b3RpbWUoCgkJCQkJJHRoaXMtPnZhbHVlc1snMCddIC4gJy0nIC4gJHRoaXMtPnZhbHVlc1snMSddIC4gJy0nIC4gJHRoaXMtPnZhbHVlc1snMiddCgkJCQkJLiAnICcgLiAKCQkJCQkkdGhpcy0+dmFsdWVzWyczJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWyc0J10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWyc1J10KCQkJCSk7CgogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIHJldHVybiBpbXBsb2RlKCctJywgJHRoaXMtPnZhbHVlcyk7CiAgICAgIH0KICAgIH0KCgkJcHVibGljIGZ1bmN0aW9uIGdldFRpbWUoKQoJCXsKCQkJcmV0dXJuIGRhdGUoJ0g6aTpzJywgJHRoaXMtPmdldFZhbHVlKCkpOwoJCX0KCQkKCQlwdWJsaWMgZnVuY3Rpb24gZ2V0RGF0ZSgpCgkJewoJCQlyZXR1cm4gZGF0ZSgnWS1tLWQnLCAkdGhpcy0+Z2V0VmFsdWUoKSk7CQkJCgkJfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CQogICAgICByZXR1cm4KIAkJCQlzZWxmOjpDcmVhdGVEYXRlU2VsZWN0KCR0aGlzLT5pZCwkdGhpcy0+bmFtZSxleHBsb2RlKCctJywgJHRoaXMtPmdldERhdGUoKSksICR0aGlzLT5zZXR0aW5ncykKIAkJCQkuIHNlbGY6OkNyZWF0ZVRpbWVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLGV4cGxvZGUoJzonLCR0aGlzLT5nZXRUaW1lKCkpLCAzKTsKICAgIH0gCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBGaWxlCiovCgpjbGFzcyBDTVNGb3JtSW5wdXRGaWxlIGV4dGVuZHMgQ01TRm9ybUlucHV0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRVcGxvYWRGaWVsZCgpOwogICAgICAgIC8vIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZUlucHV0SGlkZGVuKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZSgpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpCiAgICB7CiAgICAgICAgLy8gVE9ETzogVGhpcyBjYXNlCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVwbG9hZGVkRmlsZSgpCiAgICB7CiAgICAgICAgaWYoaXNzZXQoJF9GSUxFU1skdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRfRklMRVNbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0VXBsb2FkRmllbGQoKQogICAgewogICAgICAgICRmaWVsZCA9ICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRGaWxlKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICcnLCAkdGhpcy0+Z2V0U2V0dGluZygnc2l6ZScsIDMwKSk7CgogICAgICAgICRodG1sID0gJzxzcGFuPic7CiAgICAgICAgaWYgKCEkdGhpcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RpcmVjdF9saW5rJ10pICYmICR0aGlzLT5zZXR0aW5nc1snZGlyZWN0X2xpbmsnXSAhPSAnJykgewogICAgICAgICAgICAgICAgJGZpbGVfdXJsID0gJHRoaXMtPnNldHRpbmdzWydkaXJlY3RfbGluayddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZpbGVfdXJsID0gaXNzZXQoJHRoaXMtPnNldHRpbmdzWydiYXNlX3VybCddKSA/ICR0aGlzLT5zZXR0aW5nc1snYmFzZV91cmwnXSA6ICcnOwogICAgICAgICAgICAgICAgaWYgKChzdWJzdHIoJGZpbGVfdXJsLCAtMSkgIT0gJy8nKSAmJiAoc3Vic3RyKCR0aGlzLT5nZXRWYWx1ZSgpLCAwLCAxKSAhPSAnLycpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVfdXJsIC49ICcvJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmaWxlX3VybCAuPSAkdGhpcy0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgICAgICRmaWxlX3VybCA9IHN0cl9yZXBsYWNlKERJUkVDVE9SWV9TRVBBUkFUT1IsICcvJywgJGZpbGVfdXJsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHNlbGY6OmlzSW1hZ2UoJHRoaXMtPmdldFZhbHVlKCkpKSB7CiAgICAgICAgICAgICAgICAkdGV4dCA9ICc8aW1nIHNyYz0iJyAuICRmaWxlX3VybCAuICciIC8+JzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0ZXh0ID0gYmFzZW5hbWUoJHRoaXMtPnZhbHVlc1swXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRodG1sIC49ICc8c3BhbiBzdHlsZT0iZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTogN3B4OyI+PGEgaHJlZj0iJyAuICRmaWxlX3VybCAuICciIHJlbD0iZXh0ZXJuYWwiID4nIC4gJHRleHQgLiAnPC9hPjwvc3Bhbj4gJzsKCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RlbGV0ZV9jaGVja2JveCddKSkgewogICAgICAgICAgICAgICAgJGZpZWxkIC49ICcgJyAuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRDaGVja2JveCgKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlkLAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0dGluZ3NbJ2RlbGV0ZV9jaGVja2JveCddLAogICAgICAgICAgICAgICAgICAgICAgICAnMScKICAgICAgICAgICAgICAgICAgICApIC4gJyAnIC4gJHRoaXMtPmdldE1vZHVsZSgpLT5sYW5nKCdkZWxldGUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICRodG1sIC49ICRmaWVsZCAuICc8L3NwYW4+JzsKCiAgICAgICAgcmV0dXJuICRodG1sOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gaXNJbWFnZSgkZmlsZW5hbWUpCiAgICB7CiAgICAgICAgJHZhbGlkX2V4dGVuc2lvbnMgPSBhcnJheSgnanBlZycsICdqcGcnLCAnZ2lmJywgJ3BuZycpOwogICAgICAgIGlmIChpbl9hcnJheShzZWxmOjpnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSksICR2YWxpZF9leHRlbnNpb25zKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oJGZpbGVuYW1lKQogICAgewogICAgICAgICRmaWxlID0gZXhwbG9kZSgnLicsICRmaWxlbmFtZSk7CiAgICAgICAgaWYgKGNvdW50KCRmaWxlKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cnRvbG93ZXIoZW5kKCRmaWxlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputHidden.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBIaWRkZW4KKi8KCmNsYXNzIENNU0Zvcm1JbnB1dEhpZGRlbiBleHRlbmRzIENNU0Zvcm1JbnB1dAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRJbnB1dCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRIaWRkZW4oJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYWJlbCgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsVGFnKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputPages.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgUGFnZXMKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFBhZ2VzIGV4dGVuZHMgQ01TRm9ybUlucHV0U2VsZWN0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgJHRoaXMtPnNldHRpbmdzWyd2YWx1ZXMnXSA9IGFycmF5KDAgPT4gJyZsYXF1bzsgJyAuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygnc2VsZWN0IG9uZScpIC4gJyAmcmFxdW87JykgKyBzZWxmOjpnZXRQYWdlc0xpc3QoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWUoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZVNlbGVjdG9yKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZXMoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlc0xpc3QoJGlkLCRuYW1lLCR2YWx1ZSwkc2V0dGluZ3MgPSBhcnJheSgpKSB7CgogICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAgICRhcnJheSA9IGFycmF5KCk7CgogICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKQogICAgICB7CiAgICAgICAgJGNoaWxkcmVub2YgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pOwogICAgICB9CgogICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKQogICAgICB7CiAgICAgICAgJHN0YXJ0X3BhZ2UgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pOwogICAgICB9CgogICAgICBmb3JlYWNoKCRwYWdlcyBhcyAkcGFnZSkKICAgICAgewogICAgICAgIGlmICgKICAgICAgICAgICghaXNzZXQoJHN0YXJ0X3BhZ2UpICYmICFpc3NldCgkY2hpbGRyZW5vZikpIAogICAgICAgICAgfHwKICAgICAgICAgIChpc3NldCgkY2hpbGRyZW5vZikgJiYgKCRwYWdlLT5QYXJlbnRJZCgpID09ICRjaGlsZHJlbm9mKSkgLy8gTGlzdCBvZiBhbGwgY2hpbGRyZW5zCiAgICAgICAgICB8fAogICAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZS4nLicpID09PSAwKSkgLy8gTGlzdCBvZiBhbGwgZGVzY2VuZGFudHMKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAkYXJyYXlbJHBhZ2UtPklkKCldID0gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpOwogICAgICAgIH0KCiAgICAgIH0KCiAgICAgIHJldHVybiAkYXJyYXk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlSWQoJGFsaWFzKSAgewogICAgICAkbWFuYWdlciA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKICAgICAgJG5vZGUgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRhbGlhcyk7CiAgICAgIGlmICgkbm9kZSkgewogICAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgICAgaWYgKCRjb250ZW50KQogICAgICAgICAgewogICAgICAgICAgICAgIHJldHVybiAkY29udGVudC0+SWQoKTsKICAgICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkYWxpYXMpOwogICAgICAgICAgaWYgKCRub2RlKSB7CiAgICAgICAgICAgIHJldHVybiAkYWxpYXM7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQYWdlU2VsZWN0KCRpZCwkbmFtZSwkdmFsdWUsJHNldHRpbmdzID0gYXJyYXkoKSkgewogICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CgogICAgICAkaHRtbCA9ICc8c2VsZWN0IG5hbWU9IicuJGlkLiRuYW1lLiciPjxvcHRpb24+Jy5jbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NNU0Zvcm1zJyktPmxhbmcoJ3NlbGVjdCBvbmUnKS4nPC9vcHRpb24+JzsKCiAgICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJzxvcHRpb24gdmFsdWU9IicgLiAkcGFnZS0+SWQoKSAuICciJzsKCiAgICAgICAgaWYoJHZhbHVlID09ICRwYWdlLT5JZCgpKQogICAgICAgIHsKICAgICAgICAgICRodG1sIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgfSAgICAgIAoKICAgICAgICAkaHRtbCAuPSAnPicgLiAkcGFnZS0+SGllcmFyY2h5KCkuJy4gLSAnLiRwYWdlLT5OYW1lKCkgLiAnPC9vcHRpb24+JzsKICAgICAgfQoKICAgICAgJGh0bWwgLj0gJzwvc2VsZWN0Pic7ICAgIAoKICAgICAgcmV0dXJuICRodG1sOwogICAgfQogICAgCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputPassword.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgUGFzc3dvcmQKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFBhc3N3b3JkIGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRQYXNzd29yZCgkdGhpcy0+aWQsICR0aGlzLT5uYW1lLCAnJywkdGhpcy0+Z2V0U2V0dGluZygnc2l6ZScsIDIwKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKSB7CgkJCWlmKCR0aGlzLT5nZXRWYWx1ZSgpICE9ICcnKQogICAgICB7CgkJCQlwYXJlbnQ6OnNhdmUoKTsKCQkJfQoJCX0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBTZWxlY3QKKi8KCmNsYXNzIENNU0Zvcm1JbnB1dFNlbGVjdCBleHRlbmRzIENNU0Zvcm1JbnB1dAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVTZWxlY3RvcigkdGhpcy0+aWQsICR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0VmFsdWVzKCksICR0aGlzLT5zZXR0aW5ncyk7CiAgICB9CgoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlU2VsZWN0b3IoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKCiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXhwYW5kZWQnXSkgJiYgJHNldHRpbmdzWydleHBhbmRlZCddID09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsIGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pID8gJHNldHRpbmdzWyd2YWx1ZXMnXSA6IGFycmF5KCksICR2YWx1ZXMsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKSA/ICRzZXR0aW5nc1snYWRkdGV4dCddIDogJycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSkgPyB0cnVlIDogZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGl0ZW1zID0gaXNzZXQoJHNldHRpbmdzWyd2YWx1ZXMnXSkgPyAkc2V0dGluZ3NbJ3ZhbHVlcyddIDogYXJyYXkoKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkpIHsKICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRzZXR0aW5nc1snY3VzdG9tX3ZhbHVlJ10pKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGFycmF5KCRzZXR0aW5nc1snY3VzdG9tX3ZhbHVlJ10gPT4gJHNldHRpbmdzWydpbmNsdWRlX2N1c3RvbSddKSArICRpdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbXMgPSBhcnJheSgnJyA9PiAkc2V0dGluZ3NbJ2luY2x1ZGVfY3VzdG9tJ10pICsgJGl0ZW1zOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkdmFsdWVzLCBpc3NldCgkc2V0dGluZ3NbJ3NpemUnXSkgPyAkc2V0dGluZ3NbJ3NpemUnXSA6IDEsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKSA/ICRzZXR0aW5nc1snYWRkdGV4dCddIDogJycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSkgPyB0cnVlIDogZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkc2l6ZSA9IDMsICRhZGR0dGV4dCA9ICcnLCAkbXVsdGlwbGUgPSB0cnVlLCAkc2V0dGluZ3MgPSBhcnJheSgpKQogICAgewogICAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgICAkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwogICAgICAgICRzaXplID0gY21zX2h0bWxlbnRpdGllcygkc2l6ZSk7CiAgICAgICAgJG11bHRpcGxlID0gY21zX2h0bWxlbnRpdGllcygkbXVsdGlwbGUpOwoKICAgICAgICBpZiAoJG11bHRpcGxlID09IHRydWUpIHsKICAgICAgICAgICAgJG5hbWUgLj0gJ1tdJzsKICAgICAgICB9CgogICAgICAgICR0ZXh0ID0gJzxzZWxlY3QgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyIgaWQ9IicgLiAkaWQgLiAkbmFtZSAuICciJzsKCiAgICAgICAgaWYgKCRhZGR0dGV4dCAhPSAnJykgewogICAgICAgICAgICAkdGV4dCAuPSAnICcgLiAkYWRkdHRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG11bHRpcGxlKSB7CiAgICAgICAgICAgICR0ZXh0IC49ICcgbXVsdGlwbGU9Im11bHRpcGxlIiAnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzaXplID4gMSkgewogICAgICAgICAgICAkdGV4dCAuPSAnIHNpemU9IicgLiAkc2l6ZSAuICciJzsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ2NsYXNzJ10pKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkc2V0dGluZ3NbJ2NsYXNzJ10pKSAkc2V0dGluZ3NbJ2NsYXNzJ10gPSBpbXBsb2RlKCcgJywgJHNldHRpbmdzWydjbGFzcyddKTsKICAgICAgICAgICAgJHRleHQgLj0gJyBjbGFzcz0iJyAuICRzZXR0aW5nc1snY2xhc3MnXSAuICciJzsKICAgICAgICB9CgogICAgICAgIGlmICgoY291bnQoJGl0ZW1zKSA+IDApICYmIChrZXkoJGl0ZW1zKSA9PSAwKSAmJiAhaXNfYXJyYXkoY3VycmVudCgkaXRlbXMpKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnIGRhdGEtcGxhY2Vob2xkZXI9IicgLiAoc3RyaW5nKWN1cnJlbnQoJGl0ZW1zKSAuICciJzsKICAgICAgICB9CgogICAgICAgICR0ZXh0IC49ICc+JzsKCiAgICAgICAgJGNvdW50ID0gMDsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR0ZXh0IC49ICc8b3B0Z3JvdXAgbGFiZWw9IicgLiAka2V5IC4gJyI+JzsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAka2V5MiA9PiAkZW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSBzZWxmOjpnZW5lcmF0ZU9wdGlvbigka2V5MiwgJGVudHJ5LCAkc2VsZWN0ZWRpdGVtcyk7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAnPC9vcHRncm91cD4nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRleHQgLj0gc2VsZjo6Z2VuZXJhdGVPcHRpb24oJGtleSwgJHZhbHVlLCAkc2VsZWN0ZWRpdGVtcyk7CiAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGV4dCAuPSAnPC9zZWxlY3Q+JyAuICJcbiI7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlT3B0aW9uKCRrZXksICR2YWx1ZSwgJHNlbGVjdGVkaXRlbXMpCiAgICB7CiAgICAgICAgJHRleHQgPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRrZXkgLiAnIic7CiAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRzZWxlY3RlZGl0ZW1zKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnICcgLiAnc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgfQogICAgICAgICR0ZXh0IC49ICc+JzsKICAgICAgICAkdGV4dCAuPSAkdmFsdWU7CiAgICAgICAgJHRleHQgLj0gJzwvb3B0aW9uPic7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgICAkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwogICAgICAgICRtdWx0aXBsZSA9IGNtc19odG1sZW50aXRpZXMoJG11bHRpcGxlKTsKCiAgICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkaXRlbSkpIHsKICAgICAgICAgICAgICAgICRsaXN0W10gPSBhcnJheSgnbGFiZWwnID0+ICc8c3Ryb25nPicgLiAka2V5IC4gJzwvc3Ryb25nPicsICdpbnB1dCcgPT4gJycpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVtIGFzICRrZXkyID0+ICRlbnRyeSkgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OmdlbmVyYXRlRXhwYW5kZWRMaXN0KCRsaXN0LCAkaWQsICRlbnRyeSwgJG5hbWUsICRrZXkyLCAkc2VsZWN0ZWRpdGVtcywgJG11bHRpcGxlLCAkYWRkdHRleHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNlbGY6OmdlbmVyYXRlRXhwYW5kZWRMaXN0KCRsaXN0LCAkaWQsICRpdGVtLCAkbmFtZSwgJGtleSwgJHNlbGVjdGVkaXRlbXMsICRtdWx0aXBsZSwgJGFkZHR0ZXh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgJiYgKCRwYXJhbXNbJ21vZGUnXSA9PSAnaHRtbCcpKSB7CiAgICAgICAgICAgIC8vIFRPRE8KICAgICAgICAgICAgcmV0dXJuICdOb3QgaW1wbGVtZW50ZWQgeWV0JzsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHBhcmFtc1snbW9kZSddKSAmJiAoJHBhcmFtc1snbW9kZSddID09ICdhcnJheScpKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlzdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaHRtbCA9ICcnOwogICAgICAgICAgICBpZiAoY291bnQoJGxpc3QpID4gMCkgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzx1bD4nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpPicgLiAkaXRlbVsnaW5wdXQnXSAuICcgJyAuICRpdGVtWydsYWJlbCddIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8L3VsPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRodG1sOwogICAgICAgIH0KCiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZUV4cGFuZGVkTGlzdCgmJGxpc3QsICRpZCwgJGl0ZW0sICRuYW1lLCAka2V5LCAkc2VsZWN0ZWRpdGVtcywgJG11bHRpcGxlLCAkYWRkdHRleHQpCiAgICB7CiAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRzZWxlY3RlZGl0ZW1zKSkgewogICAgICAgICAgICAkdGV4dCA9ICcgY2hlY2tlZD0iY2hlY2tlZCInIC4gJyAnIC4gJGFkZHR0ZXh0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0ZXh0ID0gJyAnIC4gJGFkZHR0ZXh0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtdWx0aXBsZSkgewogICAgICAgICAgICAkbGlzdFtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnbGFiZWwnID0+ICc8bGFiZWwgZm9yPSInIC4gJGlkIC4gJG5hbWUgLiAnWycgLiAka2V5IC4gJ10iPicgLiAkaXRlbSAuICc8L2xhYmVsPicsCiAgICAgICAgICAgICAgICAnaW5wdXQnID0+ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IicgLiAkaWQgLiAkbmFtZSAuICdbJyAuICRrZXkgLiAnXSIgaWQ9IicgLiAkaWQgLiAkbmFtZSAuICdbJyAuICRrZXkgLiAnXSIgdmFsdWU9IicgLiAka2V5IC4gJyInIC4gJHRleHQgLiAnIC8+JwogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRsaXN0W10gPSBhcnJheSgKICAgICAgICAgICAgICAgICdsYWJlbCcgPT4gJzxsYWJlbCBmb3I9IicgLiAkaWQgLiAkbmFtZSAuICRrZXkgLiAnIj4nIC4gJGl0ZW0gLiAnPC9sYWJlbD4nLAogICAgICAgICAgICAgICAgJ2lucHV0JyA9PiAnPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInIC4gJGlkIC4gJG5hbWUgLiAnIiBpZD0iJyAuICRpZCAuICRuYW1lIC4gJGtleSAuICciIHZhbHVlPSInIC4gJGtleSAuICciJyAuICR0ZXh0IC4gJyAvPicKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8vIERFUFJFQ0FURUQgVE8gQkUgUkVNT1ZFRAoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRGVwcmVjYXRlZENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zID0gYXJyYXkoKSwgJHNpemUgPSAzLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMsICRzaXplLCAkYWRkdHRleHQsICRtdWx0aXBsZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcyA9IGFycmF5KCksICRhZGR0dGV4dCA9ICcnLCAkbXVsdGlwbGUgPSB0cnVlLCAkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputStatic.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0Zvcm1JbnB1dFN0YXRpYyBleHRlbmRzIENNU0Zvcm1JbnB1dAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cgp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputSyntaxarea.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgQ01TRm9ybUlucHV0U3ludGF4YXJlYQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0U3ludGF4YXJlYSBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZVN5bnRheEFyZWEoJHRoaXMtPmlkLCAkdGhpcy0+Z2V0VmFsdWUoKSwgJHRoaXMtPm5hbWUsJ3BhZ2ViaWd0ZXh0YXJlYScsICcnLCcnLCAnJywgOTAsIDE1KTsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputText.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGV4dCBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICRpbnB1dCA9ICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRUZXh0KCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZSgpLCBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3NpemUnXSk/JHRoaXMtPnNldHRpbmdzWydzaXplJ106ODAsIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ10pPyR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ106MjU1KTsKCiAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJ2NsYXNzPSJjbXNfdGV4dGZpZWxkIicsICdjbGFzcz0iJy4oc3RyaW5nKSR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10uJyInLCAkaW5wdXQpOwogICAgICB9CgogICAgICBpZihpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3BsYWNlaG9sZGVyJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJz4nLCAncGxhY2Vob2xkZXI9IicuKHN0cmluZykkdGhpcy0+c2V0dGluZ3NbJ3BsYWNlaG9sZGVyJ10uJyI+JywgJGlucHV0KTsKICAgICAgfQoKICAgICAgcmV0dXJuICRpbnB1dDsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputTextarea.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dGFyZWEKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFRleHRhcmVhIGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2hvd193eXNpd3lnJ10pICYmICR0aGlzLT5zZXR0aW5nc1snc2hvd193eXNpd3lnJ10gPT0gdHJ1ZSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZVRleHRBcmVhKHRydWUsICR0aGlzLT5pZCwgJHRoaXMtPmdldFZhbHVlKCksICR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3MnKSwgJHRoaXMtPmdldFNldHRpbmcoJ2h0bWxpZCcpKTsgICAgICAgICAgICAKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVUZXh0QXJlYSgKICAgICAgICAgIGZhbHNlLAogICAgICAgICAgJHRoaXMtPmlkLAogICAgICAgICAgJHRoaXMtPmdldFZhbHVlKCksIAogICAgICAgICAgJHRoaXMtPm5hbWUsCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3NuYW1lJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnaHRtbGlkJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnZW5jb2RpbmcnLCcnKSwKICAgICAgICAgICR0aGlzLT5nZXRTZXR0aW5nKCdzdHlsZXNoZWV0JywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnY29scycsJzgwJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygncm93cycsJzE1JyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnZm9yY2V3eXNpd3lnJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnd2FudGVkc3ludGF4JywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnYWRkdGV4dCcsJycpCiAgICAgICAgICApOwogICAgICB9CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGltZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGltZSBleHRlbmRzIENNU0Zvcm1JbnB1dERhdGUKICB7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpICB7CiAgICAgIGlmICgoY291bnQoJHRoaXMtPnZhbHVlcykgPiAxKSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzWycwJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWycxJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWycyJ107CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJzonLCAkdGhpcy0+dmFsdWVzKTsKICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CiAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVUaW1lU2VsZWN0KCR0aGlzLT5pZCwkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWVzKCkpOwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZVRpbWVTZWxlY3QoJGlkLCRuYW1lLCR2YWx1ZXMsICRwb3MgPSAwKSAgewogICAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgICAgewogICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJzonKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCc6JywkdmFsdWVzWzBdKTsKICAgICAgfQogICAgICAkaG91cnMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbJy4kcG9zLiddJyxzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KDIzKSxhcnJheSgkdmFsdWVzWzBdKSwxLCcnLGZhbHNlKTsKICAgICAgJG1pbnV0ZXMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbJy4oJHBvcysxKS4nXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1sxXSksMSwnJyxmYWxzZSk7CiAgICAgICRzZWNvbmRzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWycuKCRwb3MrMikuJ10nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoNTkpLGFycmF5KCR2YWx1ZXNbMl0pLDEsJycsZmFsc2UpOwogICAgICByZXR1cm4gJGhvdXJzIC4gJyA6ICcgLiAkbWludXRlcyAuICcgOiAnIC4gJHNlY29uZHM7CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormPlugins.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEYXRlOiAyMi8wNC8xNAogKiBUaW1lOiAxNTozOAogKiBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8amNjQG1vcnJpcy1jaGFwbWFuLmNvbT4KICovCmNsYXNzIENNU0Zvcm1QbHVnaW5zCnsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFJlZ2lzdGVyUGx1Z2lucyhTbWFydHlfQ01TICYkc21hcnR5KQogICAgewogICAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdmb3JtJywgYXJyYXkoJ0NNU0Zvcm1QbHVnaW5zJywgJ0Zvcm0nKSk7CiAgICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2Zvcm1fc3RhcnQnLCBhcnJheSgnQ01TRm9ybVBsdWdpbnMnLCAnRm9ybVN0YXJ0JykpOwogICAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdmb3JtX3JvdycsIGFycmF5KCdDTVNGb3JtUGx1Z2lucycsICdGb3JtUm93JykpOwogICAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdmb3JtX3Jvd3MnLCBhcnJheSgnQ01TRm9ybVBsdWdpbnMnLCAnRm9ybVJvd3MnKSk7CiAgICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2Zvcm1fZmllbGRzZXQnLCBhcnJheSgnQ01TRm9ybVBsdWdpbnMnLCAnRm9ybUZpZWxkc2V0JykpOwogICAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdmb3JtX2ZpZWxkc2V0cycsIGFycmF5KCdDTVNGb3JtUGx1Z2lucycsICdGb3JtRmllbGRzZXRzJykpOwogICAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdmb3JtX2Vycm9ycycsIGFycmF5KCdDTVNGb3JtUGx1Z2lucycsICdGb3JtRXJyb3JzJykpOwogICAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdmb3JtX2xhYmVsJywgYXJyYXkoJ0NNU0Zvcm1QbHVnaW5zJywgJ0Zvcm1MYWJlbCAnKSk7CiAgICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2Zvcm1fd2lkZ2V0JywgYXJyYXkoJ0NNU0Zvcm1QbHVnaW5zJywgJ0Zvcm1XaWRnZXQnKSk7CiAgICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2Zvcm1fZW5kJywgYXJyYXkoJ0NNU0Zvcm1QbHVnaW5zJywgJ0Zvcm1FbmQnKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmVuZGVyRmlsZSgkZmlsZW5hbWUsIFNtYXJ0eV9JbnRlcm5hbF9UZW1wbGF0ZSAmJHNtYXJ0eSwgJHBhcmVudCA9IG51bGwpCiAgICB7CiAgICAgICAgJGZpbGUgPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZW5hbWU7CiAgICAgICAgaWYgKGlzX2ZpbGUoJGZpbGUpKSB7CiAgICAgICAgICAgIHJldHVybiAkc21hcnR5LT5mZXRjaCgnZmlsZTonIC4gJGZpbGUsIG51bGwsIG51bGwsICRwYXJlbnQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTbWFydHlFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBmaWxlICcgLiAkZmlsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtICRwYXJhbXMKICAgICAqIEByZXR1cm4gQ01TRm9ybQogICAgICogQHRocm93cyBTbWFydHlFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0Rm9ybSgkcGFyYW1zKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHBhcmFtc1snZm9ybSddKSB8fCAoIWlzX2EoJHBhcmFtc1snZm9ybSddLCAnQ01TRm9ybScpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU21hcnR5RXhjZXB0aW9uKCdwYXJhbWV0ZXIgZm9ybSBtdXN0IGJlIGRlZmluZWQgYW5kIGJlaW5nIGEgQ01TRm9ybSBvYmplY3QnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJHBhcmFtc1snZm9ybSddOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkcGFyYW1zCiAgICAgKiBAcmV0dXJuIENNU0Zvcm1GaWVsZHNldAogICAgICogQHRocm93cyBTbWFydHlFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RmllbGRzZXQoJHBhcmFtcykKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkc2V0J10pIHx8ICghaXNfYSgkcGFyYW1zWydmaWVsZHNldCddLCAnQ01TRm9ybUZpZWxkc2V0JykpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTbWFydHlFeGNlcHRpb24oJ3BhcmFtZXRlciBmb3JtIG11c3QgYmUgZGVmaW5lZCBhbmQgYmVpbmcgYSBDTVNGb3JtRmllbGRzZXQgb2JqZWN0Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRwYXJhbXNbJ2ZpZWxkc2V0J107CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtICRwYXJhbXMKICAgICAqIEByZXR1cm4gQ01TRm9ybVdpZGdldAogICAgICogQHRocm93cyBTbWFydHlFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0V2lkZ2V0KCRwYXJhbXMpCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWyd3aWRnZXQnXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNtYXJ0eUV4Y2VwdGlvbigncGFyYW1ldGVyIHdpZGdldCBtdXN0IGJlIGRlZmluZWQnKTsKICAgICAgICB9IGVsc2VpZiAoIWlzX29iamVjdCgkcGFyYW1zWyd3aWRnZXQnXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNtYXJ0eUV4Y2VwdGlvbigncGFyYW1ldGVyIHdpZGdldCBtdXN0IGJlIGFuIG9iamVjdCcpOwogICAgICAgIH0gZWxzZWlmICghaXNfYSgkcGFyYW1zWyd3aWRnZXQnXSwgJ0NNU0Zvcm1XaWRnZXQnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU21hcnR5RXhjZXB0aW9uKCdwYXJhbWV0ZXIgd2lkZ2V0IG11c3QgYmUgYSBDTVNGb3JtV2lkZ2V0IG9iamVjdCwgJyAuIGdldF9jbGFzcygkcGFyYW1zWyd3aWRnZXQnXSkgLiAnIGlzIGdpdmVuJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRwYXJhbXNbJ3dpZGdldCddOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIE5vdEltcGxlbWVudGVkKCRwYXJhbXMsIFNtYXJ0eV9JbnRlcm5hbF9UZW1wbGF0ZSAmJHNtYXJ0eSkKICAgIHsKICAgICAgICByZXR1cm4gJ05vdCBpbXBsZW1lbnRlZCc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBGb3JtKCRwYXJhbXMsIFNtYXJ0eV9JbnRlcm5hbF9UZW1wbGF0ZSAmJHNtYXJ0eSkKICAgIHsKICAgICAgICAkbG9jYWxfc21hcnR5ID0gbmV3IFNtYXJ0eSgpOwogICAgICAgICRsb2NhbF9zbWFydHktPmFzc2lnbignZm9ybScsIHNlbGY6OmdldEZvcm0oJHBhcmFtcykpOwoKICAgICAgICByZXR1cm4gc2VsZjo6cmVuZGVyRmlsZSgnZm9ybS5mb3JtLnRwbCcsICRzbWFydHksICRsb2NhbF9zbWFydHkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRm9ybVN0YXJ0KCRwYXJhbXMsIFNtYXJ0eV9JbnRlcm5hbF9UZW1wbGF0ZSAmJHNtYXJ0eSkKICAgIHsKICAgICAgICAkZm9ybSA9IHNlbGY6OmdldEZvcm0oJHBhcmFtcyk7CgogICAgICAgIHJldHVybiAkZm9ybS0+Z2V0SGVhZGVycygpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRm9ybUVuZCgkcGFyYW1zLCBTbWFydHlfSW50ZXJuYWxfVGVtcGxhdGUgJiRzbWFydHkpCiAgICB7CiAgICAgICAgJGZvcm0gPSBzZWxmOjpnZXRGb3JtKCRwYXJhbXMpOwoKICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgIHNlbGY6OkZvcm1Sb3dzKGFycmF5KCdmb3JtJyA9PiAkZm9ybSksICRzbWFydHkpCiAgICAgICAgICAgIC4gICBzZWxmOjpGb3JtRmllbGRzZXRzKGFycmF5KCdmb3JtJyA9PiAkZm9ybSksICRzbWFydHkpCiAgICAgICAgICAgIC4gICAkZm9ybS0+Z2V0QnV0dG9ucygpCiAgICAgICAgICAgIC4gICAkZm9ybS0+Z2V0Rm9vdGVycygpCiAgICAgICAgOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRm9ybUVycm9ycygkcGFyYW1zLCBTbWFydHlfSW50ZXJuYWxfVGVtcGxhdGUgJiRzbWFydHkpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2Zvcm0nXSkpIHsKICAgICAgICAgICAgJGVudGl0eSA9IHNlbGY6OmdldEZvcm0oJHBhcmFtcyk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRwYXJhbXNbJ3dpZGdldCddKSkgewogICAgICAgICAgICAkZW50aXR5ID0gc2VsZjo6Z2V0V2lkZ2V0KCRwYXJhbXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTbWFydHlFeGNlcHRpb24oJ2Zvcm0gb3Igd2lkZ2V0IHBhcmFtZXRlciB1bmRlZmluZWQnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZW50aXR5LT5oYXNFcnJvcnMoKSkgewogICAgICAgICAgICAkbG9jYWxfc21hcnR5ID0gbmV3IFNtYXJ0eSgpOwogICAgICAgICAgICAkbG9jYWxfc21hcnR5LT5hc3NpZ24oJ2Vycm9ycycsICRlbnRpdHktPmdldEVycm9ycygpKTsKICAgICAgICAgICAgJGxvY2FsX3NtYXJ0eS0+YXNzaWduKCdzaG93X3ByaW9yaXR5JywgJGVudGl0eS0+Z2V0U2hvd1ByaW9yaXR5KCkpOwoKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnJlbmRlckZpbGUoJ2Zvcm0uZXJyb3JzLnRwbCcsICRzbWFydHksICRsb2NhbF9zbWFydHkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEZvcm1GaWVsZHNldHMoJHBhcmFtcywgU21hcnR5X0ludGVybmFsX1RlbXBsYXRlICYkc21hcnR5KQogICAgewogICAgICAgICRmb3JtID0gc2VsZjo6Z2V0Rm9ybSgkcGFyYW1zKTsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCgkZm9ybS0+Z2V0RmllbGRzZXRzKCkgYXMgJGZpZWxkc2V0KQogICAgICAgIHsKICAgICAgICAgICAgaWYoISRmaWVsZHNldC0+aXNTaG93bmVkKCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gc2VsZjo6Rm9ybUZpZWxkc2V0KGFycmF5KCdmaWVsZHNldCcgPT4gJGZpZWxkc2V0KSwgJHNtYXJ0eSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBGb3JtRmllbGRzZXQoJHBhcmFtcywgU21hcnR5X0ludGVybmFsX1RlbXBsYXRlICYkc21hcnR5KQogICAgewogICAgICAgICRmaWVsZHNldCA9IHNlbGY6OmdldEZpZWxkc2V0KCRwYXJhbXMpOwogICAgICAgIGlmKCEkZmllbGRzZXQtPmlzU2hvd25lZCgpKQogICAgICAgIHsKICAgICAgICAgICAgJGxvY2FsX3NtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICAgICAgICAgJGxvY2FsX3NtYXJ0eS0+YXNzaWduKCdmaWVsZHNldCcsICRmaWVsZHNldCk7CiAgICAgICAgICAgICRmaWVsZHNldC0+c2hvd25lZCgpOwogICAgICAgICAgICByZXR1cm4gc2VsZjo6cmVuZGVyRmlsZSgnZm9ybS5maWVsZHNldC50cGwnLCAkc21hcnR5LCAkbG9jYWxfc21hcnR5KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBGb3JtUm93cygkcGFyYW1zLCBTbWFydHlfSW50ZXJuYWxfVGVtcGxhdGUgJiRzbWFydHkpCiAgICB7CiAgICAgICAgJGZvcm0gPSBzZWxmOjpnZXRGb3JtKCRwYXJhbXMpOwoKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIGZvcmVhY2goJGZvcm0tPmdldEFsbFdpZGdldHMoKSBhcyAkd2lkZ2V0KQogICAgICAgIHsKICAgICAgICAgICAgaWYoISR3aWRnZXQtPmlzU2hvd25lZCgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkcmVzdWx0IC49IHNlbGY6OkZvcm1Sb3coYXJyYXkoJ3dpZGdldCcgPT4gJHdpZGdldCksICRzbWFydHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEZvcm1Sb3coJHBhcmFtcywgU21hcnR5X0ludGVybmFsX1RlbXBsYXRlICYkc21hcnR5KQogICAgewogICAgICAgICR3aWRnZXQgPSBzZWxmOjpnZXRXaWRnZXQoJHBhcmFtcyk7CiAgICAgICAgaWYgKCEkd2lkZ2V0LT5pc1Nob3duZWQoKSkgewogICAgICAgICAgICAkbG9jYWxfc21hcnR5ID0gbmV3IFNtYXJ0eSgpOwogICAgICAgICAgICAkbG9jYWxfc21hcnR5LT5hc3NpZ24oJ3dpZGdldCcsICR3aWRnZXQpOwoKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnJlbmRlckZpbGUoJ2Zvcm0uZmllbGRzLnRwbCcsICRzbWFydHksICRsb2NhbF9zbWFydHkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBGb3JtV2lkZ2V0KCRwYXJhbXMsIFNtYXJ0eV9JbnRlcm5hbF9UZW1wbGF0ZSAmJHNtYXJ0eSkKICAgIHsKICAgICAgICAkd2lkZ2V0ID0gc2VsZjo6Z2V0V2lkZ2V0KCRwYXJhbXMpOwogICAgICAgIGlmICghJHdpZGdldC0+aXNTaG93bmVkKCkpIHsKICAgICAgICAgICAgJGxvY2FsX3NtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICAgICAgICAgJGxvY2FsX3NtYXJ0eS0+YXNzaWduKCdpbnB1dCcsICR3aWRnZXQtPmdldElucHV0KCkpOwogICAgICAgICAgICBpZiAoJHRpcHMgPSAkd2lkZ2V0LT5nZXRUaXBzKCkpIHsKICAgICAgICAgICAgICAgICRsb2NhbF9zbWFydHktPmFzc2lnbigndGlwcycsICR0aXBzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkd2lkZ2V0LT5zaG93bmVkKCk7CgogICAgICAgICAgICByZXR1cm4gc2VsZjo6cmVuZGVyRmlsZSgnZm9ybS53aWRnZXQudHBsJywgJHNtYXJ0eSwgJGxvY2FsX3NtYXJ0eSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEZvcm1MYWJlbCgkcGFyYW1zLCBTbWFydHlfSW50ZXJuYWxfVGVtcGxhdGUgJiRzbWFydHkpCiAgICB7CiAgICAgICAgJHdpZGdldCA9IHNlbGY6OmdldFdpZGdldCgkcGFyYW1zKTsKCiAgICAgICAgcmV0dXJuICR3aWRnZXQtPmdldExhYmVsVGFnKCk7CiAgICB9Cn0g]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgVGhpcyBjbGFzcyBhaW0gdG8gaGFuZGxlIENNUyBGb3JtcyB2ZXJ5IGRpZmZlcmVudGx5LgoKICBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8Y3liZXJ0b3RvcGhlQGdtYWlsLmNvbT4KICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogIExpY2VuY2U6IEdQTAoKKi8KCi8qKgogKiBDbGFzcyBDTVNGb3JtVmFsaWRhdG9yCiAqIEBkZXByZWNhdGVkIHVzZSBDTVNGVmFsaWRhdG9yIHN1Yi1jbGFzc2VzCiAqLwoKY2xhc3MgQ01TRm9ybVZhbGlkYXRvcgp7CgogICAgcHJpdmF0ZSAkdmFsaWRhdG9yOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJHdpZGdldCwgJHZhbGlkYXRvcl9uYW1lLCAkcGFyYW1zKQogICAgewogICAgICAgICR0aGlzLT52YWxpZGF0b3IgPSAkdGhpcy0+YnVpbGRWYWxpZGF0b3IoJHZhbGlkYXRvcl9uYW1lLCAkd2lkZ2V0LCAkcGFyYW1zKTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYnVpbGRWYWxpZGF0b3IoJHZhbGlkYXRvcl9uYW1lLCAmJHdpZGdldCwgJHBhcmFtcykKICAgIHsKICAgICAgICBzd2l0Y2goJHZhbGlkYXRvcl9uYW1lKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAnbm90X2VtcHR5JzoKICAgICAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgQ01TRlZhbGlkYXRvck5vdEVtcHR5KCRwYXJhbXMpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2VxdWFsX2ZpZWxkJzoKICAgICAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgQ01TRlZhbGlkYXRvckVxdWFsRmllbGQoJHBhcmFtcyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZW1haWwnOgogICAgICAgICAgICAgICAgJHZhbGlkYXRvciA9IG5ldyBDTVNGVmFsaWRhdG9yRW1haWwoJHBhcmFtcyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndW5pcXVlJzoKICAgICAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgQ01TRlZhbGlkYXRvclVuaXF1ZSgkcGFyYW1zKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OwogICAgICAgICAgICAgICAgJHZhbGlkYXRvciA9IG5ldyBDTVNGVmFsaWRhdG9yKCRwYXJhbXMpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkdmFsaWRhdG9yLT5zZXRXaWRnZXQoJHdpZGdldCk7CiAgICAgICAgcmV0dXJuICR2YWxpZGF0b3I7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRWYWxpZGF0b3IoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsaWRhdG9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRWYWxpZGF0b3IoKS0+Y2hlY2soKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkZW1haWwKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogQGRlcHJlY2F0ZWQgdXNlIENNU0ZWYWxpZGF0b3JFbWFpbDo6dmFsaWRFbWFpbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkRW1haWwoJGVtYWlsKQogICAgewogICAgICAgIHJldHVybiBDTVNGVmFsaWRhdG9yRW1haWw6OnZhbGlkRW1haWwoJGVtYWlsKTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormWidget.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgVGhpcyBjbGFzcyBhaW0gdG8gaGFuZGxlIENNUyBGb3JtcyB2ZXJ5IGRpZmZlcmVudGx5LgoKICBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8Y3liZXJ0b3RvcGhlQGdtYWlsLmNvbT4KICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogIExpY2VuY2U6IEdQTAoKKi8KCmNsYXNzIENNU0Zvcm1XaWRnZXQgLy9leHRlbmRzIENtc09iamVjdAp7CiAgICAvKioKICAgICAqIEB2YXIgJHdpZGdldAogICAgICovCiAgICBwcm90ZWN0ZWQgJHdpZGdldDsKCiAgICBwdWJsaWMgc3RhdGljICRmaWVsZHMgPSBhcnJheSgKICAgICAgICAndGV4dCcgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnVGV4dCBmaWVsZCcsICdhZG8nID0+ICdDKDI1NSknKSwKICAgICAgICAndGV4dGFyZWEnID0+IGFycmF5KCd0aXRsZScgPT4gJ1RleHQgYXJlYScsICdhZG8nID0+ICdYTCcpLAogICAgICAgICdjaGVja2JveCcgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnQ2hlY2tib3gnLCAnYWRvJyA9PiAnSScpLAogICAgICAgICdzZWxlY3QnID0+IGFycmF5KCd0aXRsZScgPT4gJ1NlbGVjdCcsICdhZG8nID0+ICdDKDI1NSknKSwKICAgICAgICAncGFzc3dvcmQnID0+IGFycmF5KCd0aXRsZScgPT4gJ1Bhc3N3b3JkJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgICAgICdkYXRlJyA9PiBhcnJheSgndGl0bGUnID0+ICdEYXRlJywgJ2FkbycgPT4gJ0RUJyksCiAgICAgICAgJ3RpbWUnID0+IGFycmF5KCd0aXRsZScgPT4gJ1RpbWUnLCAnYWRvJyA9PiAnRFQnKSwKICAgICAgICAnZGF0ZXRpbWUnID0+IGFycmF5KCd0aXRsZScgPT4gJ0RhdGUgJiBUaW1lJywgJ2FkbycgPT4gJ0knKSwKICAgICAgICAnZmlsZScgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnRmlsZScsICdhZG8nID0+ICdDKDI1NSknKSk7CgogICAgY29uc3QgRklFTERfVEVYVCA9ICd0ZXh0JzsKCiAgICAvLyBSRUZBQ1RPUgoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGZvcm0sICRpZCwgJG1vZHVsZV9uYW1lLCAkbmFtZSwgJHR5cGUsICRzZXR0aW5ncyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgICR0aGlzLT53aWRnZXQgPSAkdGhpcy0+Z2V0V2lkZ2V0T2JqZWN0KCR0eXBlKQogICAgICAgICAgICAtPnNldHVwKCRpZCwgJG5hbWUsICRmb3JtLCAkbW9kdWxlX25hbWUsICRzZXR0aW5ncykKICAgICAgICAgICAgLT5pbml0KCk7CiAgICAgICAgLy8gdmFyX2R1bXAoJHRoaXMtPndpZGdldCk7CiAgICAgICAgLy8gREVQUkVDQVRFRAogICAgICAgIC8vICR0aGlzLT5mb3JtID0gJGZvcm07CiAgICAgICAgLy8gJHRoaXMtPmlkID0gJGlkOwogICAgICAgIC8vICR0aGlzLT5tb2R1bGVfbmFtZSA9ICRtb2R1bGVfbmFtZTsKICAgICAgICAvLyAkdGhpcy0+bmFtZSA9IGlzc2V0KCRzZXR0aW5nc1snbmFtZSddKT8kc2V0dGluZ3NbJ25hbWUnXTokbmFtZTsKICAgICAgICAvLyAkdGhpcy0+dHlwZSA9ICR0eXBlOwogICAgICAgIC8vICR0aGlzLT5zZXR0aW5ncyA9ICRzZXR0aW5nczsKICAgICAgICAvLyAvLyAgLS0KICAgICAgICAvLwogICAgICAgIC8vICR0aGlzLT5pbml0KCk7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V2lkZ2V0T2JqZWN0KCR0eXBlKQogICAgewogICAgICAgIHN3aXRjaCAoJHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAndGV4dCc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFRleHQoKTsKICAgICAgICAgICAgY2FzZSAnaGlkZGVuJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0SGlkZGVuKCk7CiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFNlbGVjdCgpOwogICAgICAgICAgICBjYXNlICdwYWdlcyc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFBhZ2VzKCk7CiAgICAgICAgICAgIGNhc2UgJ2NvdW50cmllcyc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dENvdW50cmllcygpOwogICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFRleHRhcmVhKCk7CiAgICAgICAgICAgIGNhc2UgJ2NvZGVhcmVhJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0U3ludGF4YXJlYSgpOwogICAgICAgICAgICBjYXNlICdkYXRlJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0RGF0ZSgpOwogICAgICAgICAgICBjYXNlICdkYXRldGltZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dERhdGVUaW1lKCk7CiAgICAgICAgICAgIGNhc2UgJ3RpbWUnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRUaW1lKCk7CiAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0Q2hlY2tib3goKTsKICAgICAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRQYXNzd29yZCgpOwogICAgICAgICAgICBjYXNlICdmaWxlJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0RmlsZSgpOwogICAgICAgICAgICBjYXNlICdzdGF0aWMnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRTdGF0aWMoKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRjbGFzcyA9ICdDTVNGb3JtSW5wdXQnIC4gJHR5cGU7CiAgICAgICAgICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3MoKTsKICAgICAgICAgICAgICAgICRjbGFzcyA9ICdDTVNGb3JtSW5wdXQnIC4gdWNmaXJzdCgkdHlwZSk7CiAgICAgICAgICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3MoKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0KCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRXaWRnZXQoKQogICAgewogICAgICAgIGlmIChpc19vYmplY3QoJHRoaXMtPndpZGdldCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXQoKTsgLy8gU29tZXRoaW5nIHdoZW50IHdyb25nIGR1cmluZyBpbml0IFRPRE86RklYCiAgICAgICAgfQogICAgfQoKCiAgICAvLyBPTEQgV0FZICoqKioqKioqKioqKioqKioqCgogICAgLy8gU2V0dGluZ3MKICAgIHByb3RlY3RlZCAkaWQ7IC8vIFRoZSBmb3JtIElECiAgICBwcm90ZWN0ZWQgJG1vZHVsZV9uYW1lOwogICAgcHJvdGVjdGVkICRuYW1lOyAvLyBUaGUgaW5wdXQgbmFtZQogICAgcHJvdGVjdGVkICR0eXBlOwogICAgcHJvdGVjdGVkICRpbnB1dDsKICAgIHByb3RlY3RlZCAkdmFsdWVzID0gYXJyYXkoKTsKICAgIHByb3RlY3RlZCAkc2V0dGluZ3MgPSBhcnJheSgpOwogICAgcHJvdGVjdGVkICRmb3JtX2Vycm9yczsKICAgIHByb3RlY3RlZCAkc2hvd19wcmlvcml0eSA9IGZhbHNlOwogICAgLy8gIHByb3RlY3RlZCAkdmFsaWRhdGlvbnMgPSBhcnJheSgpOwogICAgcHJvdGVjdGVkICRzaG93bmVkID0gZmFsc2U7CiAgICBwcm90ZWN0ZWQgJGZvcm07CgogICAgcHJvdGVjdGVkICRpc192YWxpZCA9IHRydWU7CiAgICBwcm90ZWN0ZWQgJHRlbXBsYXRlID0gJyVJTlBVVCUnOwoKICAgIHB1YmxpYyBzdGF0aWMgJGNvdW50cmllcyA9IGFycmF5KCk7IC8vREVQUkVDQVRFRCBDTVNGb3JtSW5wdXRDb3VudHJpZXM6OiRjb3VudHJpZXM7CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPiRuYW1lKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPiRuYW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0cmFjZSA9IGRlYnVnX2JhY2t0cmFjZSgpOwogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKAogICAgICAgICAgICAgICAgJ1VuZGVmaW5lZCBwcm9wZXJ0eSB2aWEgX19nZXQoKTogJyAuICRuYW1lIC4KICAgICAgICAgICAgICAgICcgaW4gJyAuICR0cmFjZVswXVsnZmlsZSddIC4KICAgICAgICAgICAgICAgICcgb24gbGluZSAnIC4gJHRyYWNlWzBdWydsaW5lJ10sCiAgICAgICAgICAgICAgICBFX1VTRVJfTk9USUNFKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFNFVFVQCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlkZSgpCiAgICB7CgogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0U2V0dGluZygnbGFiZWwnLCAnJyk7CgogICAgICAgICR3aWRnZXQgPSBuZXcgQ01TRm9ybUlucHV0SGlkZGVuKCk7CiAgICAgICAgJHdpZGdldC0+c2V0dXAoCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+aWQsCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+bmFtZSwKICAgICAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5mb3JtLAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPm1vZHVsZV9uYW1lLAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldHRpbmdzCiAgICAgICAgKQogICAgICAgICAgICAtPmluaXQoKQogICAgICAgICAgICAtPnNldFZhbHVlcygkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlcygpKTsKICAgICAgICAkdGhpcy0+d2lkZ2V0ID0gJHdpZGdldDsKICAgIH0KCiAgICAvLyBGSUxMCgoKICAgIC8qIENIRUNLIEdURCAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbml0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5pdFZhbHVlcygpOwogICAgfQoKICAgIC8qIEdURCAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluaXRWYWx1ZXMoKQogICAgewoKICAgICAgICBzd2l0Y2ggKCR0aGlzLT50eXBlKSB7CiAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkKICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdzdWJtaXQnXSkKICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdhcHBseSddKQogICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIHdoZW4gY2hlY2tib3ggaXMgdW5jaGVja2VkIGFuZCBmb3JtIGlzIHN1Ym1pdHRlZCwgd2Ugc2hvdWxkIGVtcHR5IHRoZSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcyhodG1sX2VudGl0eV9kZWNvZGUoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pICYmICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ3N1Ym1pdCddKSAmJiAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdhcHBseSddKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+ZmV0Y2hWYWx1ZXMoKSk7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICYmIGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgICAgICAgICAgICAgICAvLyR0aGlzLT5zZXRWYWx1ZXMoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pICYmICEkdGhpcy0+Zm9ybS0+aXNQb3N0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgLyogR1REICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmV0Y2hWYWx1ZXMoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSAmJiBpc19vYmplY3QoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnskdGhpcy0+c2V0dGluZ3NbJ2dldF9tZXRob2QnXX0oKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuYW1lID0gaXNzZXQoJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10pID8gJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10gOiAkdGhpcy0+bmFtZTsKCiAgICAgICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnZ2V0JykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+Z2V0KCRuYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyAgZGllKCd1bmFibGUgdG8gZG8nKTsgLy8gVE9ETzogVHJlYXRoIGVycm9yCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8vIExJTktFRCBUTyBXSURHRVRTCgoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93KCR0ZW1wbGF0ZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1Nob3duZWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0LT5pc1Nob3duZWQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd25lZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5zaG93bmVkKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFiZWwoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldExhYmVsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsVGFnKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRMYWJlbFRhZygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXBzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRUaXBzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlZnJlc2goKQogICAgewogICAgICAgIC8vIFRPRE86IENoZWNrIGNvbnNlcXVlbmNlcwogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+aW5pdCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXROYW1lKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNldHRpbmcoJHNldHRpbmcsICRkZWZhdWx0X3ZhbHVlID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRTZXR0aW5nKCRzZXR0aW5nLCAkZGVmYXVsdF92YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFNldHRpbmcoJHNldHRpbmcsICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFNldHRpbmcoJHNldHRpbmcsICR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEZvcm0oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZvcm0oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmllbmRseU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZyaWVuZGx5TmFtZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+aW5wdXQpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aW5wdXQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRJbnB1dCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBDcmVhdGVJbnB1dFRleHQoKQogICAgewogICAgICAgICRpbnB1dCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVJbnB1dFRleHQoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCksIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2l6ZSddKSA/ICR0aGlzLT5zZXR0aW5nc1snc2l6ZSddIDogODAsIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ10pID8gJHRoaXMtPnNldHRpbmdzWydtYXhsZW5ndGgnXSA6IDI1NSk7CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2NsYXNzbmFtZSddKSkgewogICAgICAgICAgICAvLyBPdmVybG9hZCB0aGlzICIjI0AhwqckIyIgY2xhc3Mgc3lzdGVtCiAgICAgICAgICAgIC8vIEluIGZyZW5jaCBpbiB0aGUgdGV4dDogTm9tIGRlIERpZXUgZGUgcHV0YWluIGRlIGJvcmRlbCBkZSBtZXJkZSBkZSBzYWxvcGVyaWUgZGUgY29ubmFyZCBkJ2VuY3Vsw6kgZGUgdGEgbcOocmUKICAgICAgICAgICAgLy8gKGh0dHA6Ly93d3cuaW1kYi5jb20vdGl0bGUvdHQwMjM0MjE1L3RyaXZpYT90YWI9dHImaXRlbT10cjA3NTIzODIpCiAgICAgICAgICAgIC8vIChTb3JyeSBmb3IgcHJ1ZGUgZWFycywgdGhpcyBpcyBqdXN0IGEgY29tbWVudCBpbiBhIHNvdXJjZSBjb2RlLi4uKQogICAgICAgICAgICAkaW5wdXQgPSBzdHJfcmVwbGFjZSgnY2xhc3M9ImNtc190ZXh0ZmllbGQiJywgJ2NsYXNzPSInIC4gJHRoaXMtPnNldHRpbmdzWydjbGFzc25hbWUnXSAuICciJywgJGlucHV0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW5wdXQ7CiAgICB9CgogICAgLy8gUFJPQ0VTUwoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzKCRzYXZlID0gdHJ1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnByb2Nlc3MoJHNhdmUpOwogICAgfQoKICAgIC8vIFZBTElEQVRJT04KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNWYWxpZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+aXNWYWxpZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0VmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5hZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVZhbGlkYXRvcigkdmFsaWRhdG9yKQogICAgewogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+cmVtb3ZlVmFsaWRhdG9yKCR2YWxpZGF0b3IpOwogICAgfQoKICAgIC8vIEFDQ0VTUwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWUoJHZhbHVlLCAka2V5ID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbHVlKCR2YWx1ZSwgJGtleSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVZhbHVlSWZFcXVhbCgkdmFsdWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5yZW1vdmVWYWx1ZUlmRXF1YWwoJHZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZXMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWVzKCR2YWx1ZXMgPSBhcnJheSgpKQogICAgewogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0VmFsdWVzKCR2YWx1ZXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREZWZhdWx0VmFsdWVzKCR2YWx1ZXMpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXREZWZhdWx0VmFsdWVzKCR2YWx1ZXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5pc0VtcHR5KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlKCkKICAgIHsKICAgICAgICAvL0RFUFJFQ0FURUQKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZXNUb1N0cmluZygpCiAgICB7CiAgICAgICAgLy8gREVQUkVDQVRFRAogICAgICAgIHJldHVybiAoc3RyaW5nKSR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICAgIH0KCiAgICAvLyBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eVZhbHVlcygpIHsKICAgIC8vICAgLy9ERVBSRUNBVEVECiAgICAvLwogICAgLy8gICBpZiAoaXNfYXJyYXkoJHRoaXMtPnZhbHVlcykpCiAgICAvLyAgIHsKICAgIC8vICAgICByZXR1cm4gJHRoaXMtPmlzRW1wdHkoKTsKICAgIC8vICAgfQogICAgLy8gICBlbHNlaWYoZW1wdHkoJHRoaXMtPnZhbHVlcykpCiAgICAvLyAgIHsKICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKICAgIC8vICAgfQogICAgLy8gICByZXR1cm4gZmFsc2U7CiAgICAvLyB9CgogICAgLy8gRElWRVJTCgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWVsZHNMaXN0KCkKICAgIHsKICAgICAgICAkbGlzdCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6JGZpZWxkcyBhcyAkdHlwZSA9PiAkZmllbGQpIHsKICAgICAgICAgICAgJGxpc3RbJHR5cGVdID0gJGZpZWxkWyd0aXRsZSddOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGxpc3Q7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRBZG9UeXBlKCR0eXBlKQogICAgewogICAgICAgIGlmIChpc3NldChzZWxmOjokZmllbGRzWyR0eXBlXVsnYWRvJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokZmllbGRzWyR0eXBlXVsnYWRvJ107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICdDKDI1NSknOyAvLyBCZXR0ZXIgdGhhbiBub3RoaW5nLi4uCiAgICAgICAgfQogICAgfQoKICAgIC8vIFRvb2xzIChERVBSRUNBVEVEID09PiBTRUUgQ0xBU1NFUykKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFBhZ2VzTGlzdCgkaWQsICRuYW1lLCAkdmFsdWUsICRzZXR0aW5ncyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgICRwYWdlcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldEFsbENvbnRlbnQoKTsKICAgICAgICAkYXJyYXkgPSBhcnJheSgpOwoKICAgICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKSB7CiAgICAgICAgICAgICRjaGlsZHJlbm9mID0gc2VsZjo6Z2V0UGFnZUlkKCRzZXR0aW5nc1snY2hpbGRyZW5vZiddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ3N0YXJ0X3BhZ2UnXSkpIHsKICAgICAgICAgICAgJHN0YXJ0X3BhZ2UgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHBhZ2VzIGFzICRwYWdlKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICghaXNzZXQoJHN0YXJ0X3BhZ2UpICYmICFpc3NldCgkY2hpbGRyZW5vZikpCiAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgKGlzc2V0KCRjaGlsZHJlbm9mKSAmJiAoJHBhZ2UtPlBhcmVudElkKCkgPT0gJGNoaWxkcmVub2YpKSAvLyBMaXN0IG9mIGFsbCBjaGlsZHJlbnMKICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICAoaXNzZXQoJHN0YXJ0X3BhZ2UpICYmIChzdHJwb3MoJHBhZ2UtPklkSGllcmFyY2h5KCksICRzdGFydF9wYWdlIC4gJy4nKSA9PT0gMCkpIC8vIExpc3Qgb2YgYWxsIGRlc2NlbmRhbnRzCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGFycmF5WyRwYWdlLT5JZCgpXSA9ICRwYWdlLT5IaWVyYXJjaHkoKSAuICcuIC0gJyAuICRwYWdlLT5OYW1lKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFycmF5OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UGFnZUlkKCRhbGlhcykKICAgIHsKICAgICAgICAkbWFuYWdlciA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJGFsaWFzKTsKICAgICAgICBpZiAoJG5vZGUpIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgICAgICBpZiAoJGNvbnRlbnQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY29udGVudC0+SWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkYWxpYXMpOwogICAgICAgICAgICBpZiAoJG5vZGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYWxpYXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQYWdlU2VsZWN0KCRpZCwgJG5hbWUsICR2YWx1ZSwgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CgogICAgICAgICRodG1sID0gJzxzZWxlY3QgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyI+PG9wdGlvbj4nIC4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDTVNGb3JtcycpLT5sYW5nKCdzZWxlY3Qgb25lJykgLiAnPC9vcHRpb24+JzsKCiAgICAgICAgZm9yZWFjaCAoJHBhZ2VzIGFzICRwYWdlKSB7CiAgICAgICAgICAgICRodG1sIC49ICc8b3B0aW9uIHZhbHVlPSInIC4gJHBhZ2UtPklkKCkgLiAnIic7CgogICAgICAgICAgICBpZiAoJHZhbHVlID09ICRwYWdlLT5JZCgpKSB7CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaHRtbCAuPSAnPicgLiAkcGFnZS0+SGllcmFyY2h5KCkgLiAnLiAtICcgLiAkcGFnZS0+TmFtZSgpIC4gJzwvb3B0aW9uPic7CiAgICAgICAgfQoKICAgICAgICAkaHRtbCAuPSAnPC9zZWxlY3Q+JzsKCiAgICAgICAgcmV0dXJuICRodG1sOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRGF0ZVNlbGVjdCgkaWQsICRuYW1lLCAkdmFsdWVzLCAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgaWYgKGNvdW50KCR2YWx1ZXMpID09IDEpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkdmFsdWVzWzBdLCAnLScpICE9PSBmYWxzZSkgJHZhbHVlcyA9IGV4cGxvZGUoJy0nLCAkdmFsdWVzWzBdKTsKICAgICAgICB9CiAgICAgICAgJHN0YXJ0X3llYXIgPSBpc3NldCgkc2V0dGluZ3NbJ3N0YXJ0X3llYXInXSkgPyAkc2V0dGluZ3NbJ3N0YXJ0X3llYXInXSA6IGRhdGUoJ1knKTsKICAgICAgICAkbnVtYmVyX3llYXJzID0gaXNzZXQoJHNldHRpbmdzWydudW1iZXJfeWVhcnMnXSkgPyAkc2V0dGluZ3NbJ251bWJlcl95ZWFycyddIDogMjA7CiAgICAgICAgJGVuZF95ZWFyID0gJHN0YXJ0X3llYXIgKyAkbnVtYmVyX3llYXJzOwoKICAgICAgICAkeWVhciA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gJ1swXScsIHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoJGVuZF95ZWFyLCAkc3RhcnRfeWVhciksIGFycmF5KCR2YWx1ZXNbMF0pLCAxLCAnJywgZmFsc2UpOwogICAgICAgICRtb250aCA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gJ1sxXScsIHNlbGY6OkNyZWF0ZU1vbnRoc0xpc3QoKSwgYXJyYXkoJHZhbHVlc1sxXSksIDEsICcnLCBmYWxzZSk7CiAgICAgICAgJGRheSA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gJ1syXScsIHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoMzEsIDEpLCBhcnJheSgkdmFsdWVzWzJdKSwgMSwgJycsIGZhbHNlKTsKICAgICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydldXJvcGVhbl9kYXRlJ10pKSB7CiAgICAgICAgICAgIHJldHVybiAkZGF5IC4gJG1vbnRoIC4gJHllYXI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkeWVhciAuICRtb250aCAuICRkYXk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVUaW1lU2VsZWN0KCRpZCwgJG5hbWUsICR2YWx1ZXMpCiAgICB7CiAgICAgICAgaWYgKGNvdW50KCR2YWx1ZXMpID09IDEpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkdmFsdWVzWzBdLCAnOicpICE9PSBmYWxzZSkgJHZhbHVlcyA9IGV4cGxvZGUoJzonLCAkdmFsdWVzWzBdKTsKICAgICAgICB9CiAgICAgICAgJGhvdXJzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUgLiAnWzBdJywgc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgyMyksIGFycmF5KCR2YWx1ZXNbMF0pLCAxLCAnJywgZmFsc2UpOwogICAgICAgICRtaW51dGVzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUgLiAnWzFdJywgc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksIGFycmF5KCR2YWx1ZXNbMV0pLCAxLCAnJywgZmFsc2UpOwogICAgICAgICRzZWNvbmRzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUgLiAnWzJdJywgc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksIGFycmF5KCR2YWx1ZXNbMl0pLCAxLCAnJywgZmFsc2UpOwogICAgICAgIHJldHVybiAkaG91cnMgLiAnIDogJyAuICRtaW51dGVzIC4gJyA6ICcgLiAkc2Vjb25kczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZU1vbnRoc0xpc3QoKQogICAgewogICAgICAgICRtb250aHMgPSBhcnJheSgpOwogICAgICAgIGZvciAoJGkgPSAxOyAkaSA8PSAxMjsgKyskaSkgewogICAgICAgICAgICAkdCA9IG1rdGltZSgwLCAwLCAwLCAkaSwgMSwgMjAwMCk7CiAgICAgICAgICAgICRtb250aHNbJGldID0gZGF0ZSgnTScsICR0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRtb250aHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydCA9IDApCiAgICB7CiAgICAgICAgcmV0dXJuIENNU0Zvcm1JbnB1dERhdGU6OkNyZWF0ZU51bWJlckxpc3QoJGVuZCwgJHN0YXJ0KTsKCiAgICAgICAgLy8gaWYgKCgkZW5kIDwgMCl8fCghaXNfbnVtZXJpYygkZW5kKSkpICRlbmQgPSAxOwogICAgICAgIC8vICRsaXN0ID0gYXJyYXkoKTsKICAgICAgICAvLyBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKQogICAgICAgIC8vIHsKICAgICAgICAvLyAgICRsaXN0WyRpXSA9IChzdHJpbmcpJGk7CiAgICAgICAgLy8gfQogICAgICAgIC8vIHJldHVybiAkbGlzdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUNvdW50cmllc1NlbGVjdG9yKCRpZCwgJG5hbWUsICR2YWx1ZXMsICRzZXR0aW5ncykKICAgIHsKICAgICAgICByZXR1cm4gQ01TRm9ybUlucHV0Q291bnRyaWVzOjpDcmVhdGVDb3VudHJpZXNTZWxlY3RvcigkaWQsICRuYW1lLCAkdmFsdWVzLCAkc2V0dGluZ3MpOwoKICAgICAgICAvLyAkc2V0dGluZ3NbJ3ZhbHVlcyddID0gQ01TRm9ybUlucHV0Q291bnRyaWVzOjokY291bnRyaWVzOwogICAgICAgIC8vIHJldHVybiBzZWxmOjpDcmVhdGVTZWxlY3RvcigkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlU2VsZWN0b3IoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzKQogICAgewoKICAgICAgICByZXR1cm4gQ01TRm9ybUlucHV0U2VsZWN0OjpDcmVhdGVTZWxlY3RvcigkaWQsICRuYW1lLCAkdmFsdWVzLCAkc2V0dGluZ3MpOwoKICAgICAgICAvLyBERVBSRUNBVEVECiAgICAgICAgLy8gaWYoaXNzZXQoJHNldHRpbmdzWydleHBhbmRlZCddKSAmJiAkc2V0dGluZ3NbJ2V4cGFuZGVkJ10gPT0gdHJ1ZSkKICAgICAgICAvLyAgICB7CiAgICAgICAgLy8gICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgaXNzZXQoJHNldHRpbmdzWyd2YWx1ZXMnXSk/JHNldHRpbmdzWyd2YWx1ZXMnXTphcnJheSgpLCAkdmFsdWVzLCBpc3NldCgkc2V0dGluZ3NbJ2FkZHRleHQnXSk/JHNldHRpbmdzWydhZGR0ZXh0J106JycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSk/dHJ1ZTpmYWxzZSwgJHNldHRpbmdzKTsKICAgICAgICAvLyAgICB9CiAgICAgICAgLy8gICAgZWxzZQogICAgICAgIC8vICAgIHsKICAgICAgICAvLyAgICAgICRpdGVtcyA9IGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pPyRzZXR0aW5nc1sndmFsdWVzJ106YXJyYXkoKTsKICAgICAgICAvLyAgICAgIGlmKGlzc2V0KCRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkpCiAgICAgICAgLy8gICAgICB7CiAgICAgICAgLy8gICAgICAgICRpdGVtcyA9IGFycmF5KCcnID0+ICRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkgKyAkaXRlbXM7CiAgICAgICAgLy8gICAgICB9CiAgICAgICAgLy8gICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHZhbHVlcywgaXNzZXQoJHNldHRpbmdzWydzaXplJ10pPyRzZXR0aW5nc1snc2l6ZSddOjEsICcnLCBpc3NldCgkc2V0dGluZ3NbJ211bHRpcGxlJ10pP3RydWU6ZmFsc2UpOwogICAgICAgIC8vICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zID0gYXJyYXkoKSwgJHNpemUgPSAzLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSkKICAgIHsKCiAgICAgICAgcmV0dXJuIENNU0Zvcm1JbnB1dFNlbGVjdDo6RGVwcmVjYXRlZENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zLCAkc2l6ZSwgJGFkZHR0ZXh0LCAkbXVsdGlwbGUpOwoKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgIHJldHVybiBDTVNGb3JtSW5wdXRTZWxlY3Q6OkRlcHJlY2F0ZWRDcmVhdGVJbnB1dEV4cGFuZGVkTGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zLCAkYWRkdHRleHQsICRtdWx0aXBsZSwgJHBhcmFtcyk7CgogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcGxvYWRGaWVsZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VXBsb2FkRmllbGQoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzSW1hZ2UoJGZpbGVuYW1lKQogICAgewogICAgICAgICR2YWxpZF9leHRlbnNpb25zID0gYXJyYXkoJ2pwZWcnLCAnanBnJywgJ2dpZicsICdwbmcnKTsKICAgICAgICBpZiAoaW5fYXJyYXkoc2VsZjo6Z2V0RmlsZUV4dGVuc2lvbigkZmlsZW5hbWUpLCAkdmFsaWRfZXh0ZW5zaW9ucykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oJGZpbGVuYW1lKQogICAgewogICAgICAgICRmaWxlID0gZXhwbG9kZSgnLicsICRmaWxlbmFtZSk7CiAgICAgICAgaWYgKGNvdW50KCRmaWxlKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cnRvbG93ZXIoZW5kKCRmaWxlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8vIEVSUk9SUwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3dQcmlvcml0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0U2hvd1ByaW9yaXR5KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0Vycm9ycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+aGFzRXJyb3JzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5vRXJyb3IoKQogICAgewogICAgICAgIHJldHVybiAhJHRoaXMtPmdldFdpZGdldCgpLT5oYXNFcnJvcnMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRFcnJvcnMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd0Vycm9ycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+c2hvd0Vycm9ycygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRFcnJvcigkbWVzc2FnZSwgJHByaW9yaXR5ID0gJ2RlZmF1bHQnKQogICAgewogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0RXJyb3IoJG1lc3NhZ2UsICRwcmlvcml0eSk7CiAgICB9Cgp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3IKewogICAgLyoqIEB2YXIgQ01TRm9ybVdpZGdldCAkd2lkZ2V0ICovCiAgICBwcm90ZWN0ZWQgJHdpZGdldDsKCiAgICBwcm90ZWN0ZWQgJHBhcmFtczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJHRoaXMtPnBhcmFtcyA9ICRwYXJhbXM7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCYkd2lkZ2V0KQogICAgewogICAgICAgICR0aGlzLT53aWRnZXQgPSAkd2lkZ2V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRXaWRnZXQoKQogICAgewogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPndpZGdldCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignV2lkZ2V0IG5vdCBkZWZpbmVkIGZvciB0aGUgdmFsaWRhdG9yJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNXaWRnZXQoKQogICAgewogICAgICAgIHJldHVybiAoYm9vbCkoIWVtcHR5KCR0aGlzLT53aWRnZXQpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2soKQogICAgewogICAgICAgIHJldHVybiB0cnVlOyAvLyBUaGlzIHZhbGlkYXRvciBkb24ndCB2YWxpZGF0ZSBhbnl0aGluZwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRGaWVsZEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPnBhcmFtc1snZmllbGRfbmFtZSddKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cGFyYW1zWydmaWVsZF9uYW1lJ107CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZyaWVuZGx5TmFtZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKCRtZXNzYWdlLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR0aGlzLT5wYXJhbXMpICYmIGlzc2V0KCR0aGlzLT5wYXJhbXNbJ2Vycm9yX21lc3NhZ2UnXSkgJiYgJHRoaXMtPnBhcmFtc1snZXJyb3JfbWVzc2FnZSddICE9ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cGFyYW1zWydlcnJvcl9tZXNzYWdlJ107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYoJGkxOG4gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0kxOG4nKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygkbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAkdHJhbnNsYXRpb24gPSBJMThuOjpfXygkdGVtcGxhdGUpOwogICAgICAgICAgICAgICAgJGVycm9yID0gQHZzcHJpbnRmKCR0cmFuc2xhdGlvbiwgJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRlcnJvciA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygkbWVzc2FnZSwgJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJGVycm9yOwogICAgICAgIH0KICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorEmail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JFbWFpbCBleHRlbmRzIENNU0ZWYWxpZGF0b3IKewoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgICB7CiAgICAgICAgJGVtYWlsID0gaW1wbG9kZSgnfCcsICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWVzKCkpOwogICAgICAgIGlmICghc2VsZjo6dmFsaWRFbWFpbCgkZW1haWwpKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdpbnZhbGlkIGVtYWlsJywgJGVtYWlsKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vIEV4dGVybmFsIGZ1bmN0aW9ucwogICAgLyoqCiAgICBWYWxpZGF0ZSBhbiBlbWFpbCBhZGRyZXNzLgogICAgUHJvdmlkZSBlbWFpbCBhZGRyZXNzIChyYXcgaW5wdXQpCiAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVtYWlsIGFkZHJlc3MgaGFzIHRoZSBlbWFpbAogICAgYWRkcmVzcyBmb3JtYXQgYW5kIHRoZSBkb21haW4gZXhpc3RzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkRW1haWwoJGVtYWlsKQogICAgewogICAgICAgICRpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAkYXRJbmRleCA9IHN0cnJwb3MoJGVtYWlsLCAiQCIpOwogICAgICAgIGlmIChpc19ib29sKCRhdEluZGV4KSAmJiAhJGF0SW5kZXgpCiAgICAgICAgewogICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAkZG9tYWluID0gc3Vic3RyKCRlbWFpbCwgJGF0SW5kZXgrMSk7CiAgICAgICAgICAgICRsb2NhbCA9IHN1YnN0cigkZW1haWwsIDAsICRhdEluZGV4KTsKICAgICAgICAgICAgJGxvY2FsTGVuID0gc3RybGVuKCRsb2NhbCk7CiAgICAgICAgICAgICRkb21haW5MZW4gPSBzdHJsZW4oJGRvbWFpbik7CiAgICAgICAgICAgIGlmICgkbG9jYWxMZW4gPCAxIHx8ICRsb2NhbExlbiA+IDY0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBsb2NhbCBwYXJ0IGxlbmd0aCBleGNlZWRlZAogICAgICAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICgkZG9tYWluTGVuIDwgMSB8fCAkZG9tYWluTGVuID4gMjU1KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBkb21haW4gcGFydCBsZW5ndGggZXhjZWVkZWQKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoJGxvY2FsWzBdID09ICcuJyB8fCAkbG9jYWxbJGxvY2FsTGVuLTFdID09ICcuJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gbG9jYWwgcGFydCBzdGFydHMgb3IgZW5kcyB3aXRoICcuJwogICAgICAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChwcmVnX21hdGNoKCcvXFwuXFwuLycsICRsb2NhbCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGxvY2FsIHBhcnQgaGFzIHR3byBjb25zZWN1dGl2ZSBkb3RzCiAgICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCFwcmVnX21hdGNoKCcvXltBLVphLXowLTlcXC1cXC5dKyQvJywgJGRvbWFpbikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBub3QgdmFsaWQgaW4gZG9tYWluIHBhcnQKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAocHJlZ19tYXRjaCgnL1xcLlxcLi8nLCAkZG9tYWluKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gZG9tYWluIHBhcnQgaGFzIHR3byBjb25zZWN1dGl2ZSBkb3RzCiAgICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYKICAgICAgICAgICAgKCFwcmVnX21hdGNoKCcvXihcXFxcLnxbQS1aYS16MC05ISMlJmBfPVxcLyRcJyorP157fXx+Li1dKSskLycsCiAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZSgiXFxcXCIsIiIsJGxvY2FsKSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBub3QgdmFsaWQgaW4gbG9jYWwgcGFydCB1bmxlc3MKICAgICAgICAgICAgICAgIC8vIGxvY2FsIHBhcnQgaXMgcXVvdGVkCiAgICAgICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eIihcXFxcInxbXiJdKSsiJC8nLAogICAgICAgICAgICAgICAgICAgIHN0cl9yZXBsYWNlKCJcXFxcIiwiIiwkbG9jYWwpKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkaXNWYWxpZCAmJiAhKGNoZWNrZG5zcnIoJGRvbWFpbiwiTVgiKSB8fAogICAgICAgICAgICAgICAgICAgIGNoZWNrZG5zcnIoJGRvbWFpbiwiQSIpKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gZG9tYWluIG5vdCBmb3VuZCBpbiBETlMKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRpc1ZhbGlkOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorEqualField.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JFcXVhbEZpZWxkIGV4dGVuZHMgQ01TRlZhbGlkYXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2soKQogICAgewogICAgICAgICR2YWx1ZTEgPSBzZXJpYWxpemUoJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZXMoKSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR2YWx1ZTIgPSBzZXJpYWxpemUoJHRoaXMtPmdldFdpZGdldCgpLT5nZXRGb3JtKCktPmdldFdpZGdldCgkdGhpcy0+cGFyYW1zKS0+Z2V0VmFsdWVzKCkpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ3Vua25vd24gZmllbGQnLCAkdGhpcy0+cGFyYW1zKSk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUxICE9ICR2YWx1ZTIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZHMgbm90IGVxdWFsJywgJHRoaXMtPmdldFdpZGdldCgpLT5nZXRMYWJlbCgpLCAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZvcm0oKS0+Z2V0V2lkZ2V0KCR0aGlzLT5wYXJhbXMpLT5nZXRMYWJlbCgpKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorNotEmpty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JOb3RFbXB0eSBleHRlbmRzIENNU0ZWYWxpZGF0b3IKewogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrKCkKICAgIHsKICAgICAgICAkdmFsdWVzID0gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZXMoKTsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlKCk7CiAgICAgICAgLy8gVE9ETzogSXNzdWUgd2hlbiB2YWx1ZSA9PT0gMAogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWVzKSAmJiBjb3VudCgkdmFsdWVzKSA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZF9jYW5ub3RfYmVfZW1wdHknLCAkdGhpcy0+Z2V0RmllbGRGcmllbmRseU5hbWUoKSkpOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoZW1wdHkoJHZhbHVlcykpCiAgICAgICAgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkX2Nhbm5vdF9iZV9lbXB0eScsICR0aGlzLT5nZXRGaWVsZEZyaWVuZGx5TmFtZSgpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZihlbXB0eSgkdmFsdWUpKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZF9jYW5ub3RfYmVfZW1wdHknLCAkdGhpcy0+Z2V0RmllbGRGcmllbmRseU5hbWUoKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorUnique.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JVbmlxdWUgZXh0ZW5kcyBDTVNGVmFsaWRhdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZSgpOwogICAgICAgIGlmIChjYWxsX3VzZXJfZnVuYygkdGhpcy0+cGFyYW1zLCAkdmFsdWUpICE9PSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZCBub3QgdW5pcXVlJywgJHZhbHVlKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin.form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogREVQUkVDQVRFRCAqfQp7aWYgaXNzZXQoJGZvcm0pfQp7aWYgJGZvcm0tPmhhc0Vycm9ycygpfTxkaXYgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGZvcm0tPnNob3dFcnJvcnMoKX08L2Rpdj57L2lmfQoJeyRmb3JtLT5nZXRIZWFkZXJzKCl9CgkKCXskZm9ybS0+c2hvd1dpZGdldHMoKX0KCQoJeyRmb3JtLT5yZW5kZXJGaWVsZHNldHMoKX0KCQoJPHA+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+Cgl7JGZvcm0tPmdldEZvb3RlcnMoKX0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/form.errors.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRlcnJvcnMpfQogICAgPHVsIGNsYXNzPSJlcnJvcnMiPgogICAgICAgIHtmb3JlYWNoIGZyb209JGVycm9ycyBpdGVtPWVycm9yX2xpc3Qga2V5PXByaW9yaXR5fQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICB7aWYgJHNob3dfcHJpb3JpdHl9CiAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJmb3JtX2Vycm9yX3ByaW9yaXR5Ij57JHByaW9yaXR5fTwvZW0+CiAgICAgICAgICAgICAgICB7L2lmfQogICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JGVycm9yX2xpc3QgaXRlbT1lcnJvcn0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnskZXJyb3J9PC9saT4KICAgICAgICAgICAgICAgICAgICB7L2ZvcmVhY2h9CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2xpPgogICAgICAgIHsvZm9yZWFjaH0KICAgIDwvdWw+CnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/form.fields.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZm9ybV9yb3ciPgogICAge2Zvcm1fbGFiZWwgd2lkZ2V0PSR3aWRnZXR9CiAgICB7Zm9ybV9lcnJvcnMgd2lkZ2V0PSR3aWRnZXR9CiAgICB7Zm9ybV93aWRnZXQgd2lkZ2V0PSR3aWRnZXR9CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/form.fieldset.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGZpZWxkc2V0e2lmICRmaWVsZHNldC0+Z2V0Q2xhc3MoKSBuZSAnJ30gY2xhc3M9InskZmllbGRzZXQtPmdldENsYXNzKCl9InsvaWZ9PgogICAgPGxlZ2VuZD57JGZpZWxkc2V0LT5nZXRMZWdlbmQoKX08L2xlZ2VuZD4KICAgIHtmb3JtX3Jvd3MgZm9ybT0kZmllbGRzZXR9CjwvZmllbGRzZXQ+]]></data>
	</file>
	<file>
	  <filename>/templates/form.form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0KICAgIHtmb3JtX3N0YXJ0IGZvcm09JGZvcm19CiAgICB7Zm9ybV9lcnJvcnMgZm9ybT0kZm9ybX0KICAgIHtmb3JtX2VuZCBmb3JtPSRmb3JtfQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/form.widget.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRpbnB1dH17aWYgaXNzZXQoJHRpcHMpfSA8ZW0+eyR0aXBzfTwvZW0+ey9pZn0=]]></data>
	</file>
</module>
