<?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>MAMS</name>
	<version>1.0</version>
    <mincmsversion>2.2.9</mincmsversion>
	<help><![CDATA[PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vbG9jYWxob3N0L2Ntc21zMjIxNG1hbXMvbW9kdWxlcy9NQU1TL2Nzcy9tYW1zLmNzcyIgLz4KPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3QvY21zbXMyMjE0bWFtcy9tb2R1bGVzL01BTVMvanMvanMuY29va2llLmpzIj48L3NjcmlwdD4KPHNjcmlwdD4KalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogIHZhciBhY3RpdmVfdGFiID0gQ29va2llcy5nZXQoJ21hbXNfYWN0aXZlJyk7CgogIGlmKHR5cGVvZiBhY3RpdmVfdGFiID09PSAidW5kZWZpbmVkIikKICB7CiAgICBfc2V0X2FjdGl2ZV90YWIoJ2dlbmVyYWwnKTsKICB9CiAgZWxzZQogIHsKICAgIF9zZXRfYWN0aXZlX3RhYihhY3RpdmVfdGFiKTsKICB9CgogICQoJyNwYWdlX3RhYnMgPiBkaXYnKQogICAgLmVhY2goZnVuY3Rpb24oKQogICAgewogICAgICAkKHRoaXMpLmNsaWNrKGZ1bmN0aW9uKCkKICAgICAgewogICAgICAgIENvb2tpZXMuc2V0KCdtYW1zX2FjdGl2ZScsIHRoaXMuaWQpOwogICAgICB9KTsKICAgIH0pOwp9KTsKCgpmdW5jdGlvbiBfc2V0X2FjdGl2ZV90YWIodGFiX25hbWUpCnsKICAkKCcjcGFnZV90YWJzID4gZGl2JykKICAgIC5lYWNoKGZ1bmN0aW9uKCkKICAgIHsKICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICB9KTsKCiAgJCgnI3BhZ2VfY29udGVudCA+IGRpdicpCiAgICAuZWFjaChmdW5jdGlvbigpCiAgICB7CiAgICAgICQodGhpcykuaGlkZSgpOwogICAgfSk7CgogICQoJyMnICsgdGFiX25hbWUpLmFkZENsYXNzKCdhY3RpdmUnKTsKICAkKCcjJyArIHRhYl9uYW1lICsgJ19jJykuc2hvdygpOwogIENvb2tpZXMuc2V0KCdtYW1zX2FjdGl2ZScsIHRhYl9uYW1lKTsKCn0KPC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+Cgo8ZGl2IGlkPSJwYWdlX3RhYnMiPgoKICA8ZGl2ICBpZD0iZ2VuZXJhbCI+CiAgICBHZW5lcmFsCiAgPC9kaXY+CiAgPGRpdiBpZD0idXNpbmciPgogICAgSG93IERvIEkgVXNlIEl0CiAgPC9kaXY+CiAgPGRpdiBpZD0icGFyYW1ldGVycyI+CiAgICBQYXJhbWV0ZXJzCiAgPC9kaXY+CiAgPGRpdiBpZD0ic21hcnR5Ij4KICAgIFNtYXJ0eSBQbHVnaW5zCiAgPC9kaXY+CiAgPGRpdiBpZD0iaG9va3MiPgogICAgSG9va3MKICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImFib3V0Ij4KICAgIEFib3V0CiAgPC9kaXY+Cgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjxkaXYgaWQ9InBhZ2VfY29udGVudCI+CgogIDxkaXYgaWQ9ImdlbmVyYWxfYyI+CiAgICAKPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CiAgPHA+VGhpcyBtb2R1bGUgYWxsb3dzIG1hbmFnZW1lbnQgYW5kIGFkbWluaXN0cmF0aW9uIG9mIGZyb250IGVuZCB1c2VycyA8aT4odXNlcnMgd2hvIGhhdmUgbm8gYWRtaW4gYWNjZXNzcyk8L2k+LiAgSXQgYWxsb3dzIGNyZWF0aW9uIG9mIHVzZXIgZ3JvdXBzLCBhbmQgdXNlciBhY2NvdW50cyBhbmQgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGFuZCBsb2dvdXQuPC9wPgogIDxoND5GZWF0dXJlczo8L2g0PgogIDx1bD4KICAgIDxsaT5Vc2VycyBjYW4gYmUgbWVtYmVycyBvZiBtdWx0aXBsZSBncm91cHMuPC9saT4KICAgIDxsaT5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvbGk+CiAgICA8bGk+R3JvdXAgUHJvcGVydGllcy4gIFlvdSBjYW4gYXNrIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24gZnJvbSBtZW1iZXJzIG9mIGRpZmZlcmVudCBncm91cHMuPC9saT4KICAgIDxsaT5Mb3RzIG9mIGZpZWxkIHR5cGVzLjwvbGk+CiAgICA8bGk+UHJvdmlkZXMgYSBjb250ZW50IHR5cGUgdG8gbWFrZSBwcm90ZWN0aW5nIGNvbnRlbnQgc2ltcGxlLCBpZiBub3QgdHJpdmlhbC48L2xpPgogICAgPGxpPkNhcGFibGUgb2YgaGFuZGxpbmcgdGhvdXNhbmRzIG9mIHVzZXJzPC9saT4KICAgIDxsaT5FeHRlbnNpdmUgZmxleGliaWxpdHkgZm9yIGhhbmRsaW5nIHJlZGlyZWN0aW9uIGFmdGVyIGxvZ2luLCBhbmQgc2VuZHMgZXZlbnRzIHRvIGV4dGVuZCB0aGUgd29ya2Zsb3cgcHJvY2Vzcy48L2xpPgogICAgPGxpPkZvcmdvdHRlbiBwYXNzd29yZCwgYW5kIGZvcmdvdCB1c2VybmFtZSBmdW5jdGlvbmFsaXR5Li4uIGFsbG93cyB1c2VycyB0byBzZXQgYSBuZXcgcGFzc3dvcmQsIGFuZC9vciB0byByZWNvdmVyIHRoZWlyIHVzZXJuYW1lIGlmIHRoZXkgY29tcGxldGVseSBmb3Jnb3QgbG9naW4gZGV0YWlscy48L2xpPgogICAgPGxpPkV4dGVuZGFibGUgdG8gZGlmZmVyZW50IGF1dGhlbnRpY2F0aW9uIHR5cGVzIChMREFQLCBGYWNlYm9vaywgZXRjKS48L2xpPgogICAgPGxpPlByb3ZpZGVzIGV4dGVuc2l2ZSBpbXBvcnQgYW5kIGV4cG9ydCBjYXBhYmlsaXRpZXMuPC9saT4KICAgIDxsaT5IYXMgYW4gZXh0ZW5zaXZlIEFQSSBmb3IgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgaW50byB2YXJpb3VzIG90aGVyIENNU01TIGFkZG9uIG1vZHVsZXMuPC9saT4KICAgIDxsaT5UaGUgYWJpbGl0eSB0byBlbmNyeXB0IHNlbnNpdGl2ZSB1c2VyIGRhdGEuPC9saT4KICAgIDxsaT5TdHJvbmcgZW5jcnlwdGlvbiBhbmQgc2VjdXJpdHkuPC9saT4KICAgIDxsaT5FeHRlbnNpdmUgYWRtaW5pc3RyYXRpdmUgY2FwYWJpbGl0aWVzLjwvbGk+CiAgICA8bGk+QWRkaXRpb25hbCA8Yj5MSVNFPC9iPiBjdXN0b20gZmllbGRzIGlmIHlvdSBoYXZlIGl0IGluc3RhbGxlZC48L2xpPgogIDwvdWw+CgoKPGRpdiBjbGFzcz0id2FybmluZyI+CjxoMz5Qcml2YWN5IFdhcm5pbmc6PC9oMz4KPHA+QWRtaW5pc3RyYXRvcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgc2FmZXR5IGFuZCBzZWN1cml0eSBvZiBhbnkgcGVyc29uYWwgaW5mb3JtYXRpb24gY29sbGVjdGVkLjwvcD4KCjxwPlRoaXMgbW9kdWxlIGRvZXMgbG9nIHRoZSBJUCBhZGRyZXNzIG9mIHVzZXJzLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRG8tTm90LVRyYWNrIHBvbGljaWVzLCBhbmQgbWF5IGJyZWFrIHNvbWUgbGF3cy4gIDxzdHJvbmc+VXNlIEF0IFlvdXIgT3duIFJpc2suPC9zdHJvbmc+PC9wPgo8cD5BZGRpdGlvbmFsbHksIHRoZSBhZG1pbmlzdHJhdG9yIGhhcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgdGhlIG1vZHVsZSBzbyB0aGF0IGNvb2tpZXMgYXJlIHVzZWQuICBIb3dldmVyIG5vIHBlcnNvbmFsIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUgY29va2llcyAoaWYgZW5hYmxlZCkuICBPbmx5IGEgc3lzdGVtIGFzc2lnbmVkIHVuaXF1ZSB1c2VyIGlkZW50aWZlciwgYW5kIGEgc2Vzc2lvbiBpZGVudGlmaWVyLjwvcD4KCjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHNvbWUgYXNzaXN0YW5jZSBpbiBtYW5hZ2luZyB1c2VyIHByaXZhY3kuICBUaGVyZSBpcyBmdW5jdGlvbmFsaXR5IHRvIGFub25pbWl6ZSBhIHVzZXJzIGFjY291bnQsIGFuZCBmdW5jdGlvbmFsaXR5IHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNsZWFyIG9sZCBkYXRhIGZyb20gdXNlciBoaXN0b3J5IGxvZ3MuPC9wPgoKPHA+VGhpcyBtb2R1bGUgZG9lcyBOT1QgcHJvdmlkZSB0aGUgYWJpbGl0eSBmb3IgdXNlcnMgdG8gcmVtb3ZlIHRoZWlyIGFjY291bnRzLiAgVGhpcyBpcyBiZWNhdXNlIG90aGVyIGZ1bmN0aW9uYWxpdHkgKHN1Y2ggYXMgRS1jb21tZXJjZSkgbWF5IHJlcXVpcmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gZm9yIHJlZmVyZW50aWFsIGludGVncml0eS4gIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGFkbWluIG9wdGlvbiB0byBhbGxvdyBhbm9uaW1pemluZyBhIHVzZXIuPC9wPgo8L2Rpdj4KCjxoMz5FbmNyeXB0ZWQgRGF0YTo8L2gzPgo8cD5UaGUgRW5jcnlwdGVkIGZpZWxkIGZ1bmN0aW9uYWxpdHkgaXMgaW50ZW5kZWQgdG8gc3RvcmUgKGluIGEgc2VjdXJlIHdheSkgcGVyc29uYWwgYW5kIHByaXZhdGUgZGF0YSB0aGF0IGV2ZW4gdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBzaG91bGQgbm90IGhhdmUgYWNjZXNzIHRvLiAgaS5lOiBpdGVtcyBzdWNoIGFzIENyZWRpdCBDYXJkIGluZm9ybWF0aW9uLiAgVGhlIG9ubHkgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGFibGUgdG8gdmlldyBhbmQgZWRpdCB0aGlzIGRhdGEgaXMgdGhlIHVzZXIgaGltc2VsZi4gICBUaGlzIGRhdGEgc2hvdWxkIG5vdCBiZSBleHBvcnRlZCB0byBwbGFpbiB0ZXh0IGVpdGhlci4gIFRoZSBkYXRhIGNvdWxkIGhvd2V2ZXIgYmUgcmVhZCBhbmQgdXNlZCBieSBvdGhlciBtb2R1bGVzLjwvcD4KPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAgVGhlcmUgbWF5IGJlIHNtYWEgbmVlZCBmb3IgYW4gYWRkaXRpb25hbCBtb2R1bGUgdG8gZGlzcGxheSB0aGUgdW5lbmNyeXB0ZWQgZm9ybSBvZiBlbmNyeXRwZWQgdXNlciBpbmZvcm1hdGlvbiwgaG93ZXZlciB0aGUgTUFNUyBtb2R1bGUgZG9lcyBub3QgbmVlZCBpdC48L3A+Cgo8aDM+VGlwczwvaDM+Cjx1bD4KICA8bGk+RHluYW1pYyBOYXZpZ2F0aW9uczoKICAgIDxwPkluIG1vc3QgY2lyY3Vtc3RhbmNlcyB5b3UgY2Fubm90IGFsbG93IGJyb3dzZXIgY2FjaGluZyBvbiBhbnkgcGFnZSB0aGF0IGhhcyBhIGR5bmFtaWMgbmF2aWdhdGlvbi4uLiB0aGUgdHdvIHNob3VsZCBub3QgYmUgbWl4ZWQuPC9wPgogIDwvbGk+CiAgPGxpPlJlZGlyZWN0IFByZWZlcmVuY2VzIGFuZCA6CiAgICA8cD5JZiB1c2luZyB0aGUgPGNvZGU+PC9jb2RlPiBzbWFydHkgdmFyaWFibGUgaW4gYW55IG9mIHRoZSByZWRpcmVjdCBwcmVmZXJlbmNlcyBpbiB0aGUgTUFNUyBtb2R1bGUncyAmcXVvdDtidWlsdGluIGF1dGhlbnRpY2F0aW9uJnF1b3Q7IHRhYiBiZSBzdXJlIHRvIHR1cm4gT0ZGIHRoZSAmcXVvdDtFbWFpbCBpcyBVc2VybmFtZSZxdW90OyBwcmVmZXJlbmNlLjwvcD4KICA8L2xpPgo8L3VsPgoKPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPgogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gaWYgeW91IGhhdmUgPGI+RnJvbnQgRW5kIFVzZXJzIChGRVUpPC9iPiBpbnN0YWxsZWQgeW91J2xsIHNlZSBhIG5ldyB0YWIgaGVyZSByZWdhcmRpbmcgdGhlIG1pZ3JhdGlvbiBzdGVwcyBmcm9tIDxiPkZFVTwvYj4gdG8gPGI+TUFNUzwvYj4gc2hvdWxkIHlvdSByZXF1aXJlIGl0LjwvcD4KPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBpZD0idXNpbmdfYyI+CiAgICA8aDM+SG93IGRvIEkgdXNlIGl0OjwvaDM+CjxwPkFmdGVyIGluc3RhbGxhdGlvbiB5b3UgY2FuIHRoZSBhY2Nlc3MgYWRtaW4gcGFuZWwgdG8gdGhlIE1BTVMgbW9kdWxlIHVuZGVyIHRoZSAmcXVvdDtVc2VycyAmYW1wOyBHcm91cHMmcXVvdDsgbWVudS48L3A+CjxwPllvdSBuZWVkIHRvIGRlZmluZSBhdCBsZWFzdCBvbmUgcHJvcGVydHkuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIGV0Yy48L3A+CjxwPjxiPk5vdGU6PC9iPiBZb3UgZG8gbm90IG5lZWQgdG8gZGVmaW5lIHByb3BlcnRpZXMgZm9yIHVzZXJuYW1lIChvciBlbWFpbCBhZGRyZXNzKSBhbmQgcGFzc3dvcmQsIHRoZXNlIHdpbGwgYmUgcHJvdmlkZWQgZm9yIHlvdS4gIFRob3VnaCB5b3UgY2FuIHByb3ZpZGUgcHJvcGVydGllcyBmb3IgYWRkaXRpb25hbCBlbWFpbCBhZGRyZXNzZXMuPC9wPgo8cD48Yj5Ob3RlOjwvYj4gTmV3IGluc3RhbGxhdGlvbnMgb2YgdGhlIE1BTVMgbW9kdWxlIHNwZWNpZnkgdGhhdCB0aGUgdXNlcnMgZW1haWwgYWRkcmVzcyBpcyB0aGVpciB1c2VybmFtZSAodGhpcyBvcHRpb24gY2FuIGJlIGNoYW5nZWQgaW4gdGhlIG1vZHVsZXMgYWRtaW4gcGFuZWwpLiAgU28gaWYgdXNpbmcgdGhpcyBvcHRpb24geW91IHdpbGwgbm90IG5lZWQgdG8gY3JlYXRlIGFuIGVtYWlsIGFkZHJlc3MgcHJvcGVydHkuPC9wPgo8cD5OZXh0IHlvdSBtdXN0IGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2hldGhlciBpdCBpcyBhbiBvcHRpb25hbCwgcmVxdWlyZWQsIG9yIGhpZGRlbiBmaWVsZC4gIEF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIGdyb3VwLjwvcD4KPHA+PGI+Tm90ZTo8L2I+IEJlZm9yZSBwcm9jZWVkaW5nLCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBwcmVmZXJlbmNlcyBhcmUgc2V0IGNvcnJlY3RseS4gIFRha2Ugc29tZSB0aW1lIGhlcmUsIHRoZXJlIGFyZSBudW1lcm91cyBvcHRpb25zLjwvcD4KPHA+VGhpcmRseSB5b3Ugc2hvdWxkIGNyZWF0ZSBzb21lIHVzZXJzLiAgQWRkaW5nIHVzZXJzIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gIFdoZW4gY3JlYXRpbmcgYSB1c2VyIHlvdSBhcmUgYXNrZWQgZm9yIHRoZSB1c2VybmFtZS9lbWFpbCBhbmQgcGFzc3dvcmQsIGFuZCBhbiBleHBpcnkgZGF0ZSBmb3IgdGhhdCB1c2VyLiAgWW91IHRoZW4gbXVzdCBzZWxlY3QgdGhlIGdyb3VwcyB0aGF0IHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZiwgYW5kIGNsaWNrICZxdW90O05leHQmcXVvdDs8L3A+CjxwPjxlbT5Ob3RlOiA8L2VtPlRoaXMgaXMgYSBsYWJvdXIgaW50ZW5zaXZlIGFuZCBib3JpbmcgcHJvY2VzcywgaXQgaXMgZWFzaWVyIHRvIGxldCB1c2VycyByZWdpc3RlciB0aGVtc2VsdmVzIDxlbT4oU2VlIHRoZSBTZWxmUmVnaXN0cmF0aW9uIE1vZHVsZSk8L2VtPiwgYW5kIHRoZW4geW91IGNhbiBlZGl0IHRoZWlyIGdyb3VwIGluZm9ybWF0aW9uLiAgYnV0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBwbGVhc2UgY3JlYXRlIGF0IGxlYXN0IG9uZSB1c2VyPC9wPgo8cD5MYXN0bHksIGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGRldGVybWluZWQgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBmaWVsZHMgdG8gYmUgcHJlc2VudGVkIGZvciB0aGF0IHVzZXIsIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggYSBmb3JtIGFza2luZyBmb3IgYWxsIG9mIHRoZSByZXF1aXJlZCB1c2VyIGluZm9ybWF0aW9uLiAgQ29tcGxldGUgdGhpcyBmb3JtIHRvIGNvbXBsZXRlIHRoZSB1c2VyIGFkZGl0aW9uPC9wPgo8cD5Zb3UgYXJlIG5vdyByZWFkeSB0byBhZGQgdGhlIGZyb250IGVuZCBmdW5jdGlvbmFsaXR5IHRvIHlvdXIgc2l0ZS4gIFRoaXMgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUgJiMxMjM7TUFNU30gdGFnIHRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZS4gIFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoaXMgcGFnZSBpcyBzZXQgdG8gJnF1b3Q7bm90IGNhY2hlJnF1b3Q7IHdoZW4gZWRpdGluZyB0aGUgY29udGVudCBwYWdlKHMpIHdoZXJlIHRoZSBsb2dpbiBmb3JtIGlzIGRpc3BsYXllZC4gIElmIHlvdSBjYWxsIHRoZSAmIzEyMztNQU1TfSB0YWcgZnJvbSB3aXRoaW4gYSBwYWdlIHRlbXBsYXRlLCB5b3UgbXVzdCBkaXNhYmxlIGNhY2hpbmcgb24gYWxsIHBhZ2VzIHRoYXQgdXNlIHRoYXQgdGVtcGxhdGUuPC9wPgo8cD5BZGRpbmcgcHJvdGVjdGVkIGNvbnRlbnQgdG8geW91ciBDTVNNUyBzaXRlIGlzIGFzIHNpbXBsZSBhcyBjcmVhdGluZyBuZXcgcGFnZXMgb2YgdHlwZSAmcXVvdDtQcm90ZWN0ZWQgQ29udGVudCZxdW90OyBhbmQgc2VsZWN0aW5nIHdoaWNoIHVzZXIgZ3JvdXBzIChvciBhbGwpIHRoYXQgYXJlIGFsbG93ZWQgdG8gdmlldyB0aGUgcGFnZS48L3A+CjxwPjxlbT5PcHRpb25hbGx5PC9lbT4gQ3JlYXRlIGFub3RoZXIgbmV3IGNvbnRlbnQgcGFnZSBvZiB0eXBlICdFcnJvciBIYW5kbGVyJyBhbmQgc2V0IHRoZSBlcnJvciBoYW5kbGVyIHRvIDQwMyBlcnJvci4gIEluIHRoZSBjb250ZW50IGFyZWEgb2YgdGhhdCBwYWdlLCB5b3Ugc2hvdWxkIGNhbGwgJiMxMjM7TUFNU30gdG8gZGlzcGxheSBhIGxvZ2luIGZvcm0gb24gdGhlIDQwMyBlcnJvciBwYWdlLjwvcD4KCjxoMz5TdHJvbmcgUGFzc3dvcmRzOjwvaDM+CjxwPlRoaXMgbW9kdWxlLCB3aGVuIGZyZXNobHkgaW5zdGFsbGVkIChub3QgYW4gdXBncmFkZSkgZW5hYmxlcyBzdHJvbmcgcGFzc3dvcmRzLiAgQXQgYSBtaW5pbXVtIG9uZSB1cHBlciBjYXNlIGNoYXJhY3RlciBhbmQgb25lIGRpZ2l0IGFyZSByZXF1aXJlZCB0byBiZSBpbiBldmVyeSBwYXNzd29yZC4gIFRoZSBzaXRlIGFkbWluaXN0cmF0b3IgY2FuIGFsc28gc3BlY2lmeSBvdGhlciBvcHRpb25hbCBjaGFyYWN0ZXJzLCBvbmUgb2Ygd2hpY2ggbXVzdCBiZSBwcmVzZW50IGluIGFsbCBwYXNzd29yZHMuPC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9InBhcmFtZXRlcnNfYyI+CiAgICA8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb24gPSA8L2I+ImRlZmF1bHQiCiAgICA8cD5BY3Rpb25zOjwvcD4KICAgIDx1bD4KICAgICAgPGxpPjxiPjxlbT5kZWZhdWx0PC9lbT48L2I+IC0gVGhlIGRlZmF1bHQgYWN0aW9uLiAgSWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGUgbG9nb3V0Zm9ybSBhY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuICBJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluIHRoZSBsb2dpbiBhY3Rpb24gd2lsbCBiZSBjYWxsZWQuCiAgICAgIDxsaT48Yj48ZW0+bG9naW48L2VtPjwvYj4gLSBEaXNwbGF5IHRoZSBsb2dpbiBmb3JtLjwvbGk+CiAgICAgIDxsaT48Yj48ZW0+bG9nb3V0Zm9ybTwvZW0+PC9iPiAtIERpc3BsYXkgb3V0cHV0IGFib3V0IHlvdXIgY3VycmVudCB1c2VybmFtZSwgYW5kIGFjdGlvbnMgdG8gY2hhbmdlIHlvdXIgc2V0dGluZ3MsIG9yIGxvZ291dC4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPgogICAgICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gZm9yIGxvZ2dlZCBpbiB1c2Vycy4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPgogICAgICA8bGk+PGI+PGVtPmZvcmdvdHB3PC9lbT48L2I+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm0uPC9saT4KICAgICAgCiAgICAgIDxsaT48Yj48ZW0+bG9zdHVzZXJuYW1lPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgbG9zdHVzZXJuYW1lIGZvcm0gKGlmIHRoZSBzeXN0ZW0gaXMgcHJvcGVybHkgc2V0dXAgdG8gaGFuZGxlIGxvc3QgdXNlcm5hbWUgcmVxdWVzdHMsIGFuZCB0aGUgdXNlciBpcyBub3QgY3VycmVudGx5IGxvZ2dlZCBpbi48L2xpPgogICAgICA8bGk+PGI+PGVtPnJlc2V0X3Nlc3Npb248L2VtPjwvYj4gLSBQcm92aWRlIGEgamF2YXNjcmlwdCBjb250cm9sbGVkIHRlbXBsYXRlIHRvIGFsbG93IHRoZSBtYW51YWwsIG9yIGF1dG9tYXRpYyBwaW5naW5nIG9mIHRoZSB1c2VyIHNlc3Npb24uICBUaGlzIHRlbXBsYXRlIGNhbiBiZSB1c2VkIHRvIHJlbWluZCB0aGUgdXNlciB0aGF0IGhpcyBsb2dpbiBzZXNzaW9uIGlzIGFib3V0IHRvIGV4cGlyZSwgYW5kIHRvIHRyaWdnZXIgaXRzIHJlc2V0LiAgTm9ybWFsbHkgdGhpcyBtZXRob2QgaXMgbm90IHJlcXVpcmVkIGFzIGFueSBwYWdlIHRoYXQgZGlzcGxheXMgdGhlIEZyb250RW5kVXNlciBjb250cm9scyB3b3VsZCBoYW5kbGUgdGhpcywganVzdCByZXF1aXJpbmcgdGhlIHVzZXIgdG8gdmlldyBhIHBhZ2Ugb24gYSByZWd1bGFyIGJhc2lzLiAgSG93ZXZlciwgaWYgdGhlcmUgYXJlIHBhZ2VzIHdpdGggYWxvdCBvZiBjb250ZW50IHJlcXVpcmluZyBleHRlbnNpdmUgcmVhZGluZywgdGhpcyBtYXkgYmUgYSB1c2VmdWwgc29sdXRpb24uPC9saT4KICAgICAgPGxpPjxiPjxlbT52aWV3dXNlcjwvZW0+PC9iPiAtIERpc3BsYXkgYSByZXBvcnQgZm9yIGEgc2luZ2xlIHVzZXIsIHJlcXVpcmVzIHVzZSBvZiB0aGUgdWlkIHBhcmFtZXRlci48L2xpPgogICAgPC91bD4KICA8L2xpPgoKCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG8gPSA8L2I+InBhZ2UiCiAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luLCBsb2dvdXQsIGFuZCBjaGFuZ2VzZXR0aW5ncyBmb3JtcywgdGhpcyBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIHBhZ2UgaWQgb3IgYWxpYXMgb2YgYSBwYWdlIHRvIHJlZGlyZWN0IHRvLCB3aGVuIHRoZSBmb3JtIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQ8L3A+CiAgICA8cD5Ob3RlOiBUaGF0IG9uIGxvZ2luIHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLjwvcD4KICA8L0xJPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IG9ubHlfZ3JvdXBzID0gPC9iPiJncm91cDEsIGdyb3VwMiwgZ3JvdXAzIgogICAgIDxwPlVzZWQgd2l0aCB0aGUgbG9naW4gZm9ybXMuICBCYXNpY2FsbHkgb25seSBhbGxvd3MgdXNlcnMgdG8gbG9naW4gaWYgdGhleSBiZWxvbmcgdG8gdGhhdCBwYXJ0aWN1bGFyIGdyb3VwKHMpLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGxvc3R1bl9ncm91cCA9IDwvYj4iZ3JvdXAiCiAgICAgPHA+VXNlZCB3aXRoIHRoZSBsb3N0dXNlcm5hbWUgZm9ybSwgdGhpcyBmZWF0dXJlIHNwZWNpZmllcyB0aGUgZnJvbnRlbmQgdXNlciBncm91cCB0byBhc3N1bWUgdGh0IHVzZXJzIGFyZSBtZW1iZXJzIG9mLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IG5vY2FwdGNoYSA9IDwvYj4iMSIKICAgIDxwPlVzZWQgd2l0aCB0aGUgbG9naW4gYW5kIHZlcmlmeSBmb3JtcywgVGhpcyB3aWxsIGRpc2FibGUgY2FwdGNoYSBvbiB0aGUgZm9ybS4gQnkgZGVmYXVsdCwgaWYgdGhlIENhcHRjaGEgbW9kdWxlIGlzIGluc3RhbGxlZCwgdmFsaWRhdGlvbiBvZiBhIGNhcHRjaGEgaW1hZ2Ugd2lsbCBiZSByZXF1aXJlZCBmb3IgbG9naW4uICBUaGlzIGlzIGEgc2VjdXJpdHkgbWVhc3VyZSBpbnRlbnRlZCB0byBwcmV2ZW50IGJydXRlIGZvcmNlIGF0dGFja3MuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gdWlkID0gPC9iPm51bGwKICAgIDxwPlVzZWQgd2l0aCB0aGUgdmlld3VzZXIgYWN0aW9uLiAgVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSB3aGljaCB1c2VyIHRvIHZpZXcgdGhlIGRldGFpbHMgb2YuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gaW5saW5lID0gPC9iPnRydWUKICAgIDxwPlVzZWQgd2l0aCB0aGUgbG9naW4gYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBmb3JtIHN1Ym1pc3Npb24gc2hvdWxkIHJlcGxhY2UgdGhlIG9yaWdpbmFsIGlucHV0IHRhZy48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBsb2dpbnRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgbG9naW4gZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBsb2dvdXR0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGxvZ291dCB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgY2hhbmdlc2V0dGluZ3MgZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBmb3Jnb3Rwd3RlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgZm9yZ290IHBhc3N3b3JkIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9zdHVudGVtcGxhdGUgPSA8L2I+c3RyaW5nCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgbG9zdCB1c2VybmFtZSBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHZpZXd1c2VydGVtcGxhdGUgPSA8L2I+c3RyaW5nCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCB2aWV3dXNlciB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBhZnRlcnZlcmlmeXRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgYWZ0ZXIgdmVyaWZpY2F0aW9uIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHJlc2V0c2Vzc2lvbnRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgcmVzZXQgc2Vzc2lvbiBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHZlcmlmeWZvcm10ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IHZlcmlmaWNhdGlvbiBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4KICA8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlRpcDo8L3N0cm9uZz4gWW91IGNhbiB1c2UgdGhlICYjMTIzO3h0X21vZHVsZV9oaW50fSBwbHVnaW4gZnJvbSBDTVNFeHQsIG9yIHRoZSAmIzEyMztjbXNfbW9kdWxlX2hpbnR9IHBsdWdpbiBpbiBDTVNNUyAyLjAgdG8gc2V0IHRoZXNlIHBhcmFtZXRlcnMgb24gYSBnbG9iYWwsIHBlci1wYWdlLXRlbXBsYXRlLCBvciBwZXItcGFnZSBiYXNpcyB3aXRob3V0IGhhdmluZyB0byBhZGp1c3QgZXZlcnkgY2FsbCwgYW5kIHdoaWxlIHN0aWxsIG1haW50YWluaW5nIHByZXR0eSBVUkwncy48L3A+Cgo8aDM+VXNpbmcgRGlmZmVyZW50IFRlbXBsYXRlcy48L2gzPgo8cD5JdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGRpZmZlcmVudCB0ZW1wbGF0ZXMgZm9yIG1hbnkgb2YgdGhlIE1BTVMgbW9kdWxlIHRlbXBsYXRlcy4gIEl0IGlzIGFsc28gZmxleGlibGUuICBZb3UgY2FuIHVzZSBnbG9iYWwgY29udGVudCBibG9ja3MsIG9yIGZpbGUgYmFzZWQgdGVtcGxhdGVzIG9yCiBhbnkgb3RoZXIgc21hcnR5IHJlc291cmNlIGFzIGEgdGVtcGxhdGUuPC9wPgo8dWw+CiAgPGxpPlRlbXBsYXRlIG5hbWVzIGVuZGluZyB3aXRoIC50cGwKICAgIDxwPklmIHRoZSBzcGVjaWZpZWQgdGVtcGxhdGUgbmFtZSBpcyBub3QgYSBzbWFydHkgcmVzb3VyY2UsIGJ1dCBlbmRzIHdpdGggdGhlIGV4dGVuc2lvbiA8Y29kZT4udHBsPC9jb2RlPiwgdGhlbiBNQU1TIChhY3R1YWxseSBDTVNFeHQpIHdpbGwgYXNzdW1lIHRoYXQgeW91IHdhbnQgYSBmaWxlIHRlbXBsYXRlIGZyb20gdGhlIG1vZHVsZSBkaXJlY3RvcnksIG9yIGZyb20gdGhlIG1vZHVsZV9jdXN0b20gZGlyZWN0b3J5IDxlbT4oc2VlIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLmNtc21hZGVzaW1wbGUub3JnIj5odHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZzwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZV9jdXN0b20gc3R1ZmYpPC9lbT4uCiAgPC9saT4KICA8bGk+Z2xvYmFsY29udGVudDpnY2JfbmFtZQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2sgYXMgYXMgcmVwbGFjZW1lbnQgdGVtcGxhdGUuPC9wPgogIDwvbGk+CiAgPGxpPnRlbXBsYXRlOmdjYl9uYW1lCiAgICA8cD5TcGVjaWZ5aW5nIGEgdGVtcGxhdGUgaW4gdGhpcyBzeW50YXggYWxsb3dzIHlvdSB0byB1c2UgYSBwYWdlIHRlbXBsYXRlIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT5jbXNfdGVtcGxhdGU6bmFtZQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgdGVtcGxhdGUgZnJvbSB3aXRoaW4gRGVzaWduIE1hbmFnZXIgYXMgYXMgcmVwbGFjZW1lbnQgdGVtcGxhdGUuPC9wPgogIDwvbGk+CiAgPGxpPmZpbGU6ZmlsZW5hbWUudHBsCiAgICA8cD5Vc2luZyB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIGZpbGUgYmFzZWQgdGVtcGxhdGUgZnJvbSB3aXRoaW4gdGhlIHNtYXJ0eSB0ZW1wbGF0ZXMgZGlyIDxlbT4odXN1YWxseSB0bXAvdGVtcGxhdGVzKTwvZW0+LgogIDwvbGk+CjwvdWw+CjxwPlRoZXNlIG1ldGhvZHMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgbG9naW50ZW1wbGF0ZSwgbG9nb3V0dGVtcGxhdGUsIGNoYW5nZXNldHRpbmdzdGVtcGxhdGUsIGFuZCBmb3Jnb3Rwd3RlbXBsYXRlIHBhcmFtZXRlcnMuPC9wPgo8cD5Ob3RlOiBUaGVzZSBwYXJhbWV0ZXJzIG1heSBub3QgYmUgcGFzc2VkIHRvIHRoZSB2YXJpb3VzIGZvcm1zIGZyb20gdGhlIHByaW1hcnkgJiMxMjM7TUFNU30gY2FsbC4gIEluc3RlYWQsIHlvdSBzaG91bGQgdXNlIHRoZSAmIzEyMzt4dF9tb2R1bGVfaGludH0gdGFnIG9uIHRoZSBwYWdlIHdoZXJlIHRoZSB2YXJpb3VzIGZvcm1zIG9yIHZpZXdzIHdpbGwgYmUgZGlzcGxheWVkLiBpLmU6CjxwcmU+PGNvZGU+JiMxMjM7eHRfbW9kdWxlX2hpbnQgbW9kdWxlID0gTUFNUyBjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlID0gJ2dsb2JhbF9jb250ZW50Om15Y2hhbmdlc2V0dGluZ3MnfTwvY29kZT48L3ByZT4KICAuPC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9InNtYXJ0eV9jIj4KICAgIDxoMz5TbWFydHkgUGx1Z2luczo8L2gzPgo8aDQ+JiMxMjM7bWFtc191c2VyX29wdGlvbnN9PC9oND4KPHA+VGhpcyBmdW5jdGlvbiBwbHVnaW4gcHJvdmlkZXMgYSBjb252ZW5pZW50IG1ldGhvZCB0byBnZW5lcmF0ZSBvcHRpb25zIGZvciBhIHNlbGVjdCBlbGVtZW50IHdpdGggdXNlcnMgZnJvbSB0aGUgTUFNUyBtb2R1bGUuICBUaGlzIGlzIHVzZWZ1bCBpbiBhZG1pbiBpbnRlcmZhY2VzLjwvcD4KPGg1PlVzYWdlOjwvaDU+CjxwcmU+PGNvZGU+JiMxMjM7bWFtc191c2VyX29wdGlvbnMgW2dyb3VwPXN0cmluZ10gW25vdGRpc2FibGVkPWJvb2xdIFtub3RleHBpcmVkPWJvb2xdIFt1c2VfdXNlcmlkcz1ib29sXSBbc2VsZWN0ZWQgPSBtaXhlZF19PC9jb2RlPjwvcHJlPgo8aDU+UGFyYW1ldGVyczo8L2g1Pgo8dWw+CiAgICA8bGk+PGNvZGU+Z3JvdXA9c3RyaW5nPC9jb2RlPiAtIERpc3BsYXkgb25seSB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBuYW1lZCBncm91cC48L2xpPgogICAgPGxpPjxjb2RlPm5vdGV4cGlyZWQ9Ym9vbDwvY29kZT4gLSBEaXNwbGF5IG9ubHkgdXNlcnMgdGhhdCBhcmUgbm90IGV4cGlyZWQuPC9saT4KICAgIDxsaT48Y29kZT5ub3RkaXNhYmxlZD1ib29sPC9jb2RlPiAtIERpc3BsYXkgb25seSB1c2VycyB0aGF0IGFyZXIgbm90IGRpc2FibGVkLjwvbGk+CiAgICA8bGk+PGNvZGU+dXNlX3VzZXJpZHM9Ym9vbDwvY29kZT4gLSAoZGVmYXVsdCBmYWxzZSkgVGhlIHZhbHVlcyBmb3IgZWFjaCBvcHRpb24gd2lsbCBiZSB0aGUgdXNlcmlkLCBub3QgdGhlIHVzZXJuYW1lLjwvbGk+CiAgICA8bGk+PGNvZGU+c2VsZWN0ZWQgPSBtaXhlZDwvY29kZT4gLSBUaGUgdmFsdWUgb2YgdGhlIG9wdGlvbiB0byBzZWxlY3QuICBJZiB1c2VfdXNlcmlkcyBpcyBlbmFibGVkLCB0aGlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIHVpZC4gIE90aGVyd2lzZSB0aGlzIHNob3VsZCBiZSBhIHVzZXJuYW1lIHN0cmluZy48L2xpPgo8L3VsPgoKPGhyPgoKPGg0PiYjMTIzO21hbXNfcHJvdGVjdH08L2g0Pgo8cD5UaGUgPHN0cm9uZz5tYW1zX3Byb3RlY3Q8L3N0cm9uZz4gYmxvY2sgcGx1Z2luIHByb3ZpZGVzIGEgY29udmVuaWVudCBtZXRob2QgdG8gaGlkZSBzb21lIGNvbnRlbnQgZnJvbSB1c2VycyBvbiB3aGF0IGlzIG5vcm1hbGx5IGEgcHVibGljIHBhZ2UuPC9wPgoKPGRpdiBjbGFzcz0id2FybmluZyI+PHA+PHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPldhcm5pbmc6PC9zdHJvbmc+PC9wPgogIDxwPiBUaGlzIHBsdWdpbiBjYW5ub3QgYmUgY29uc2lkZXJlZCAxMDAlIHNlY3VyZSwgYW5kIHNob3VsZCBub3QgYXQgYW55IHRpbWUgYmUgdXNlZCBpbiB0aGUgcGFnZSB0ZW1wbGF0ZSB0byBwcm90ZWN0IHRoZSBkZWZhdWx0ICYjMTIzO2NvbnRlbnR9IHRhZy4gIFRoZXJlIGFyZSB3YXlzIHRvIGFjY2VzcyB0aGUgZGVmYXVsdCBjb250ZW50IHByb3BlcnR5IG9mIGEgcGFnZSwgb3IgdG8gY2FsbCBhIG1vZHVsZSBhY3Rpb24gd2l0aG91dCBwcm9jZXNzaW5nIHRoZSBwYWdlIHRlbXBsYXRlLiAgSWYgeW91IG5lZWQgdG8gcHJvdGVjdCB0aGUgY29udGVudCBhbmQgZW5zdXJlIHRoYXQgbm8gdW5hdXRob3JpemVkIHVzZXJzIGFjY2VzcyB0aGUgcGFnZSwgdXNlIHRoZSBwcm90ZWN0ZWQgcGFnZSBjb250ZW50IHR5cGUgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUuPC9wPgo8L2Rpdj4KPGg1PlVzYWdlOjwvaDU+CjxwcmU+PGNvZGU+JiMxMjM7bWFtc19wcm90ZWN0IGdyb3Vwcz0iZ3JvdXAxLGdyb3VwMixncm9wMyJ9CiAgJmx0O3AmZ3Q7U21hcnR5IGNvbnRlbnQgdGhhdCBzaG91bGQgb25seSBiZSB2aXNpYmxlIHRvIG1lbWJlcnMgb2YgdGhvc2UgZ3JvdXBzLiZsdDsvcCZndDsKJiMxMjM7L21hbXNfcHJvdGVjdH08L2NvZGU+PC9wcmU+CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj4KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSB1c2VyIG11c3QgYmUgYSBtZW1iZXIgb2YgYXQgbGVhc3Qgb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzLiAgVGhlIGdyb3VwIG5hbWVzIGFyZSBjYXNlIHNlbnNpdGl2ZS48L3A+CjwvZGl2Pgo8aHI+Cgo8aDQ+VGhlIG1hbXNfc21hcnR5IGNsYXNzPC9oND4KPHA+VGhlIDxzdHJvbmc+bWFtc19zbWFydHk8L3N0cm9uZz4gY2xhc3MgcHJvdmlkZXMgc29tZSBmdW5jdGlvbnMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZGF0YWJhc2UgYW5kIHB1bGwgYW5kIHRlc3QgZm9yIHVzZXIgaW5mb3JtYXRpb24uPC9wPgo8cD5Tb21lIGludGVyYWN0aW9uIHdpdGggdGhlIE1BTVMgbW9kdWxlIGRhdGFiYXNlIGlzIHBvc3NpYmxlIHdpdGggc21hcnR5IGFuZCB0aGUgbWFtc19zbWFydHkgY2xhc3MuPC9wPgoKPGg1PkZ1bmN0aW9uczo8L2g1Pgo8dWw+CjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VyaWQoKX08L2NvZGU+PC9zdHJvbmc+CjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgaW50ZWdlciB1c2VyIGlkIGlmIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgKGlmIGFueSkuPC9wPgo8cD5FeGFtcGxlOjwvcD4KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF9jdXJyZW50X3VzZXJpZCgpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1c2VyIG5hbWUgaWYgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciAoaWYgYW55KS48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyR1c2VybmFtZSA9IG1hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmlkKCR1c2VybmFtZSl9PC9jb2RlPjwvc3Ryb25nPgo8cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHVybiB0aGUgaW50ZWdlciB1c2VyIGlkIGdpdmVuIGEgdXNlcm5hbWUuPC9wPgo8cD5FeGFtcGxlOjwvcD4KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF91c2VyaWQoJHVzZXJuYW1lKX08L2NvZGU+PC9wcmU+CjwvbGk+Cgo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJuYW1lKFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPgo8cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHVybiB0aGUgc3RyaW5nIHVzZXJuYW1lIGdpdmVuIGFuIGludGVnZXIgdWlkLiAgSWYgbm8gdWlkIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyBhc3N1bWVkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VybmFtZSgkdGhlX3VpZCl9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9lbWFpbChbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXR1cm4gYW4gZW1haWwgYWRkZXJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBpbnRlZ2VyIHVpZC4gIElmIG5vIHVpZCBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgYXNzdW1lZC48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZW1haWwoJHRoZV91aWQpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmluZm8oWyR1aWRdKX08L2NvZGU+PC9zdHJvbmc+CjxwPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSB1c2VyIGluZm9ybWF0aW9uIGZvciBhIHNpbmdsZSB1c2VyLiAgSWYgbm8gdWlkIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyBhc3N1bWVkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7JHVpbmZvID0gbWFtc19zbWFydHk6OmdldF91c2VyaW5mbygkc29tZXRoaW5nLnVzZXJpZCl9PGJyIC8+JiMxMjM7JHVpbmZvfEBwcmludF9yfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCRncm91cG5hbWVbLCRmb3JfbGlzdF0pfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGFuIGFycmF5IG9mIHVzZXJuYW1lcyBhbmQgdXNlcmlkcyBmb3IgYWxsIHVzZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzcGVjaWZpZWQgZ3JvdXAuPC9wPgo8cD5UaGUgZ3JvdXBuYW1lIHBhcmFtZXRlciBtdXN0IGJlIGEgc2luZ2xlIHN0cmluZyBncm91cG5hbWUuPC9wPgo8cD5UaGUgZm9yX2xpc3QgcGFyYW1ldGVyIGlzIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvdXRwdXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBzZWxlY3QgbGlzdC48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyRteW1lbWJlcnMgPSBtYW1zX3NtYXJ0eTo6Z2V0X3VzZXJzX2J5X2dyb3VwbmFtZSgnbWVtYmVycycpfTxiciAvPiYjMTIzOyRteW1lbWJlcnN8QHByaW50X3J9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9ncm91cF9tZW1iZXJsaXN0KCRnaWQpfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgdWlkIGFuZCB1c2VybmFtZXMgZm9yIGFsbCB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXAgKGJ5IGdyb3VwIGlkKS48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMztodG1sX29wdGlvbnMgb3B0aW9ucyA9IG1hbXNfc21hcnR5OjpnZXRfZ3JvdXBfbWVtYmVybGlzdCgkZ2lkKSBzZWxlY3RlZD0kdWlkfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcl9leHBpcnkoWyR1aWRdKX08L2NvZGU+PC9zdHJvbmc+CjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGUgc3BlY2lmaWVkIHVpZCBhY2NvdW50IGV4cGlyZXMuICBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIHVpZCBjYW5ub3QgYmUgZm91bmQgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyRleHBpcnkgPSBtYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfZXhwaXJ5KDI1KX08YnIgLz4mIzEyMzskZXhwaXJ5fGNtc19kYXRlX2Zvcm1hdH08L2NvZGU+PC9wcmU+CjwvbGk+Cgo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6dXNlcl9leHBpcmVkKCR1aWQpfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdldGhlciB0aGUgc3BlY2lmaWVkIHVzZXIgYWNjb3VudCBoYXMgZXhwaXJlZC4gIFRoZSBtZXRob2Qgd2lsbCBhbHNvIHJldHVybiBmYWxzZSBpZiB0aGUgdWlkIGNhbm5vdCBiZSBmb3VuZCBvciBzb21lIG90aGVyIGVycm9yIG9jY3VycmVkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7JGV4cGlyZWQgPSBtYW1zX3NtYXJ0eTo6dXNlcl9leHBpcmVkKDI1KX08YnIgLz4mIzEyMztpZiAkZXhwaXJlZH1VSUQgMjUgY2FuIG5vIGxvbmdlciBsb2dpbiB0byB0aGUgc3lzdGVtJiMxMjM7L2lmfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcl9wcm9wZXJ0aWVzKCR1aWQpfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuICBJZiB0aGUgdWlkIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyB1c2VkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7JHVzZXJwcm9wcyA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcl9wcm9wZXJ0aWVzKDUpfTxiciAvPiYjMTIzOyR1c2VycHJvcHN8QHByaW50X3J9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX3Byb3BlcnR5KCRwcm9wZXJ0eSxbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgc3BlY2lmaWVkIHVpZC4gIElmIHRoZSB1aWQgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgdXNlZC48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfcHJvcGVydHkoJ2Z1bGxuYW1lJyw1KX08L2NvZGU+PC9wcmU+CjwvbGk+Cgo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2Ryb3Bkb3duX3RleHQoJHByb3BuYW1lLCRwcm9wdmFsdWUpfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRleHQgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgb3B0aW9uIHZhbHVlIGZvciBhIHNwZWNpZmllZCBkcm9wZG93biBwcm9wZXJ0eS48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2Ryb3Bkb3duX3RleHQoJ2FnZV9yYW5nZScsJG9uZXByb3B2YWx1ZSl9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9tdWx0aXNlbGVjdF90ZXh0KCRwcm9wbmFtZSwkcHJvcHZhbHVlKX08L2NvZGU+PC9zdHJvbmc+CiAgPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbiB0ZXh0cyBjb3JyZXNwb25kaW5nIHRvIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Ygb3B0aW9uIHZhbHVlcy48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMzskZmF2b3JpdGVfZm9vZHMgPSBtYW1zX3NtYXJ0eTo6Z2V0X211bHRpc2VsZWN0X3RleHQoJ2Zhdm9yaXRlX2Zvb2RzJywkb25lcHJvcHZhbHVlKX08YnIgLz4mIzEyMzskZmF2b3JpdGVfZm9vZHN8QHByaW50X3J9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9ncm91cF9saXN0KCl9PC9jb2RlPjwvc3Ryb25nPgogIDxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSBvZiBNQU1TIGdyb3VwcyB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBkcm9wZG93bi48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+Jmx0O3NlbGVjdCBpZD0iZ3JvdXAiJmd0OyYjMTIzO2h0bWxfb3B0aW9ucyBvcHRpb25zID0gbWFtc19zbWFydHk6OmdldF9ncm91cF9saXN0KCl9Jmx0Oy9zZWxlY3QmZ3Q7PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX2dyb3VwcyhbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgTUFNUyBncm91cHMgdGhhdCB0aGlzIHVzZXIgYmVsb25ncyB0byAoaWYgYW55KS4gIFRoZSBvdXRwdXQgaXMgYW4gYXJyYXkgc3VpdGFibGUgZm9yIHVzZSBpbiBhIHNlbGVjdCBsaXN0ICh0aGUga2V5IGlzIHRoZSBncm91cGlkLCB2YWx1ZSBpcyB0aGUgZ3JvdXAgbmFtZSkuPC9wPgogIDxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyRteWdyb3VwcyA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcl9ncm91cHMoKX0KJiMxMjM7JG15Z3JvdXBzfEBwcmludF9yfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpwcmVsb2FkX3VzZXJzKCR1aWRfbGlzdFssJGRlZXAgPSBmYWxzZV0pfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHdpbGwgcHJlbG9hZCBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2Vycy4gIEl0IGRvZXMgbm90IHJldHVybiBhbnkgb3V0cHV0LjwvcD4KICA8cD5FeGFtcGxlOjwvcD4KPHByZT48Y29kZT4mIzEyMzskbGlzdCA9IFsgNSwgMTAsIDExLCAxMywgMTggXX0KJiMxMjM7bWFtc19zbWFydHk6OnByZWxvYWRfdXNlcnMoJGxpc3QpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5Ojppc191c2VyX21lbWJlcm9mKCRncm91cHNbLCR1aWRdKX08L2NvZGU+PC9zdHJvbmc+CiAgPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpZiB0aGUgdXNlciBpcyBhIG1lbWJlciBvZiBvbmUgdGhlIHNwZWNpZmllZCBncm91cHMuPC9wPgogIDxwPlRoZSBncm91cHMgcGFyYW1ldGVyIGNhbiBiZSBhIGNvbW1hIGRlbGltaXRlZCBzdHJpbmcgb2YgZ3JvdXAgbmFtZXMsIG9yIGFuIGFycmF5IG9mIGdyb3VwIG5hbWVzLjwvcD4KICA8cD5JZiB0aGUgdWlkIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyaWQgaXMgdXNlZC48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7aWYgbWFtc19zbWFydHk6OmlzX3VzZXJfbWVtYmVyb2YoJ1N0YWZmLE1hbmFnZXJzJyl9SGVsbG8gQ3VzdG9tZXImIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPgo8L3VsPgogIDwvZGl2PgogIDxkaXYgaWQ9Imhvb2tzX2MiPgogICAgPGgzPkhvb2tzPC9oMz4KPHA+VGhpcyBtb2R1bGUgdXNlcyBIb29rcyB0byB0aWUgaW4gZXh0ZXJuYWwgZnVuY3Rpb25hbGl0eS4gIFRoZSBmb2xsb3dpbmcgaG9va3MgYXJlIGF2YWlsYWJsZTo8L3A+Cjx1bD4KICAgIDxsaT48Y29kZT5NQU1TOjpCZWZvcmVDaGFuZ2VTZXR0aW5nczwvY29kZT4KICAgICAgICA8cD5TZW50IGFmdGVyIHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQsIGJ1dCBiZWZvcmUgYW55IHZhbGlkYXRpb24gb2NjdXJzLjwvcD4KCTxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT51aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6Q2hhbmdlU2V0dGluZ3NBZnRlclZhbGlkYXRlPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYWxsIHZhbGlkYXRpb24gaXMgZG9uZSBpbiB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0sIGJ1dCBiZWZvcmUgYW55dGhpbmcgaXMgc2F2ZWQgdG8gdGhlIGRhdGFiYXNlLjwvcD4KCTxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT51aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25DcmVhdGVVc2VyPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPgoJICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uVXBkYXRlVXNlcjwvY29kZT4KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBpbmZvcm1hdGlvbiBpcyBlZGl0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPgoJICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRGVsZXRlVXNlcjwvY29kZT4KICAgICAgICA8cD5TZW50IGJlZm9yZSBhIHVzZXIgaXMgcmVtb3ZlZCBmcm9tICB0aGUgZGF0YWJhc2UuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uQ3JlYXRlR3JvdXA8L2NvZGU+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBncm91cCBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgbmFtZTwvbGk+CgkgICA8bGk+PGNvZGU+ZGVzY3JpcHRpb248L2NvZGU+IDogc3RyaW5nIC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uVXBkYXRlR3JvdXA8L2NvZGU+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBncm91cCBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgbmFtZTwvbGk+CgkgICA8bGk+PGNvZGU+ZGVzY3JpcHRpb248L2NvZGU+IDogc3RyaW5nIC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRGVsZXRlR3JvdXA8L2NvZGU+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBncm91cCBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgbmFtZTwvbGk+Cgk8L3VsPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5NQU1TOjpCZWZvcmVMb2dpbjwvY29kZT4KICAgICAgICA8cD5TZW50IGJlZm9yZSBhIHVzZXIgaXMgYXV0aGVudGljYXRlZCBvciBsb2dnZWQgaW4uIEhhbmRsZXJzIGNhbiB0aHJvdyB0aGUgPGNvZGU+RmV1TG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+Z3JvdXBzPC9jb2RlPiA6IHN0cmluZyAtIEEgbGlzdCBvZiBvbmx5Z3JvdXBzIChzZWUgdGhlIG9ubHlncm91cHMgcGFyYW0pPC9saT4KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyTG9naW5BdXRoPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGJ1dCBiZWZvcmUgYWN0dWFsbHkgYmVpbmcgbG9nZ2VkIGluLiAgVGhpcyBob29rIGlzIHVzZWZ1bCB0byBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIGRvIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLiAgSGFuZGxlcnMgY2FuIHRocm93IGEgPGNvZGU+RmV1TG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGlkIGRldGVjdGVkIGZvciB0aGlzIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+Z3JvdXBzPC9jb2RlPiA6IHN0cmluZyAtIEEgbGlzdCBvZiBvbmx5Z3JvdXBzIChzZWUgdGhlIG9ubHlncm91cHMgcGFyYW0pPC9saT4KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9naW5GYWlsZWQ8L2NvZGU+CiAgICAgICAgPHA+U2VudCB3aGVuIGEgbG9naW4gYXR0ZW1wdCBoYXMgZmFpbGVkIGZvciBzb21lIHJlYXNvbi48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBwcm92aWRlZCB1c2VybmFtZS48L2xpPgoJICAgPGxpPjxjb2RlPm1zZzwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGh0IGhlIGZhaWxlZCBsb2dpbiBhdHRlbXB0LjwvbGk+Cgk8L3VsPgogICAgPC9saT4KCiAgICA8bGk+PGNvZGU+TUFNUzo6T25FeHBpcmVVc2VyPC9jb2RlPgogICAgICAgIDxwPlNlbnQgd2hlbiBhIHVzZXIgc2Vzc2lvbiBpcyBleHBpcmVkLCBhbmQgdGhlIHVzZXIgaXMgbG9nZ2VkIG91dC48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBleHBpcmVkIHVzZXJpZC48L2xpPgoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBleHBpcmVkIHVzZXJuYW1lLjwvbGk+Cgk8L3VsPgogICAgPC9saT4KCiAgICA8bGk+PGNvZGU+TUFNUzo6QmVmb3JlQW5vbmltaXplVXNlcjwvY29kZT4KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGJlZm9yZSBhIHVzZXIgaXMgYW5vbmltaXplZC48L3A+Cgk8cD5QYXJhbWV0ZXJzOjwvcD4KCTx1bD4KCSAgICA8bGk+PGNvZGU+JHVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkIHRvIGV4cGlyZS48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyQW5vbmltaXplVXNlcjwvY29kZT4KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdXNlciBpcyBhbm9uaW1pemVkLjwvcD4KCTxwPlBhcmFtZXRlcnM6PC9wPgoJPHVsPgoJICAgIDxsaT48Y29kZT4kdWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQgdG8gZXhwaXJlLjwvbGk+Cgk8L3VsPgogICAgPC9saT4KCiAgICA8bGk+PGNvZGU+TUFNUzo6QWZlclZlcmlmeTwvY29kZT4KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdXNlciBhY2NvdW50IGlzIHZlcmlmaWVkLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkIHRvIGV4cGlyZS48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkNsZWFyVXNlckhpc3Rvcnk8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBiZWZvcmUgdXNlciBoaXN0b3J5IGlzIGNsZWFyZWQgZnJvbSB0aGUgZGF0YWJhc2UuPC9saT4KICAgICAgICA8cD5QYXJhbWV0ZXJzOjwvcD4KCTx1bD4KCSAgICA8bGk+PGNvZGU+JG9sZGVyX3RoYW48L2NvZGU+IDogaW50IC0gQSB1bml4IHRpbWVzdGFtcCBjb250YWluaW5nIHRoZSBtYXhpbXVtIHRpbWUgb2YgcmVjb3JkcyB0byBrZWVwLjwvbGk+Cgk8L3VsPgogIDwvbGk+CgogIDxsaT48Y29kZT5NQU1TOjpPbkxvZ2luPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luIG9wZXJhdGlvbi48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQuPC9saT4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWUuPC9saT4KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9nb3V0PC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGhhcyBiZWVuIGxvZ2dlZCBvdXQgb2YgdGhlIHN5c3RlbS48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQuPC9saT4KCTwvdWw+CiAgICA8L2xpPgo8L3VsPgogIDwvZGl2PgogICAgPGRpdiBpZD0iYWJvdXRfYyI+CiAgICA8aDM+QWJvdXQgdGhpcyBtb2R1bGU8L2gzPgoKICA8cD5UaGlzIG1vZHVsZSBpcyBhIGZvcmsgb2YgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGRldmVsb3BlZCBieSA8c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAmbHQ7Y2FsZ3V5MTAwMCZndDs8L3N0cm9uZz4uPGJyIC8+CiAgICAgIFRoaXMgaXMgYSAxc3QgZ2VuZXJhdGlvbiBmb3JrIG9mIHRoZSBtb2R1bGUuIENvbnNpZGVyIHRoaXMgYXMgYW5vdGhlciBmbGF2b3VyIG9mIHRoZSBvcmlnaW5hbCBtb2R1bGUuPGJyIC8+CgogIElmIHlvdSBmaW5kIGFueSBidWdzIHBsZWFzZSBmZWVsIGZyZWUgdG8gc3VibWl0IGEgYnVnIHJlcG9ydCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0NjUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiBvciBmb3IgYW55IGdvb2QgaWRlYXMgY29uc2lkZXIgc3VibWl0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQ2NSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvcD4KICA8cD5QbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgZGV2ZWxvcGVycyBkbyBoYXZlIHRoZWlyIGRhaWx5IGpvYnMgd2hpY2ggbWVhbnMgdGhhdCBmZWF0dXJlIHJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGFuZCBkb25lIGFzIHRpbWUgYWxsb3dzLiBJZiB5b3UgbmVlZCBhIGZlYXR1cmUgcmVhbGx5IGJhZGx5IGNvbnNpZGVyIGNvbnRhY3Rpbmcgb25lIG9mIHRoZSBkZXZlbG9wZXJzIGZvciBhIHNwb25zb3JlZCBkZXZlbG9wbWVudC4KICA8L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIC8gbWFpbnRhaW5lcnMgb3IgcHJvamVjdCBtYW5hZ2VycyBhcmUgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL21hbXMiPmhlcmU8L2E+LiBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxldmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAyMCAtIDIwMjEsIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDxhIGhyZWY9Im1haWx0bzppbmZvQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7aW5mb0BjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE5LCBSb2JlcnQgQ2FtcGJlbGwgJmx0O2NhbGd1eTEwMDAmZ3Q7LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+Cjxocj4KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGZyZWUgc29mdHdhcmU7PGJyIC8+IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFzIHB1Ymxpc2hlZCBieSB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cm9uZz47PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD48c3Ryb25nPkZyb250RW5kVXNlcnM8L3N0cm9uZz4gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IDxzdHJvbmc+V0lUSE9VVCBBTlkgV0FSUkFOVFk8L3N0cm9uZz47PGJyIC8+IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiA8c3Ryb25nPk1FUkNIQU5UQUJJTElUWTwvc3Ryb25nPiBvciA8c3Ryb25nPkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFPC9zdHJvbmc+LjwvcD4KPHA+U2VlIHRoZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9wPgogPHA+WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgPHN0cm9uZz5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTwvc3Ryb25nPiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPC9zdHJvbmc+IG9yIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPnJlYWQgaXQgb25saW5lPC9hPi48L3A+CjxwPjxzdHJvbmc+WW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyA8c3Ryb25nPkZyb250RW5kVXNlcnM8L3N0cm9uZz4uPC9zdHJvbmc+PC9wPgo8aHI+CjxoND5DdXJyZW50IE1haW50YWluZXJzPC9oND4KPHVsPgogIDxsaSBjbGFzcz0icF9ib3R0b21fMTUiPjxzdHJvbmc+RmVybmFuZG8gTW9yZ2FkbyAoSm8gTW9yZyk8L3N0cm9uZz48L2xpPgo8L3VsPgoKPGg0PlBhc3QgTWFpbnRhaW5lcnM8L2g0Pgo8dWw+CiAgPGxpPjxzdHJvbmc+Um9iZXJ0IENhbXBiZWxsIChjYWxndXkxMDAwKTwvc3Ryb25nPiA8YnIgLz53d3cuY2FsZ3V5MTAwMC5jb208L2xpPgo8L3VsPgoKPGg0Pktub3duIENvbnRyaWJ1dG9yczwvaDQ+Cjx1bD4KICA8bGk+PHN0cm9uZz5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApPC9zdHJvbmc+PGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4KPC91bD4KCgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj48aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNNU01TRXh0ID0mZ3Q7IDEuMDwvbGk+PGxpPlNtYXJ0eUV4dCA9Jmd0OyAxLjA8L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKbyBNb3JnICZsdDtqb21vcmdAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4wPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PCEtLSBlcnJvcjogbWlzc2luZyBjaGFuZ2Vsb2cgZmlsZSEgLS0+PGJyIC8+]]></about>
	<description><![CDATA[Members Area Made Simple: allow users to log in to the frontend of your site]]></description>
	<requires>
	  <requiredname>CMSMSExt</requiredname>
	  <requiredversion>1.0</requiredversion>
	</requires>
	<requires>
	  <requiredname>SmartyExt</requiredname>
	  <requiredversion>1.0</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.moduledata/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.moduledata/moduledata.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxtb2R1bGVkYXRhIHZlcnNpb249JzEuMCc+DQo8TW9kdWxlTmFtZT5NQU1TPC9Nb2R1bGVOYW1lPg0KPE1vZHVsZUZyaWVuZGx5TmFtZT48L01vZHVsZUZyaWVuZGx5TmFtZT4NCjxWZXJzaW9uPjEuMC5iLjM8L1ZlcnNpb24+DQo8QXV0aG9yPkpvIE1vcmc8L0F1dGhvcj4NCjxBdXRob3JFbWFpbD5qb21vcmdAY21zbWFkZXNpbXBsZS5vcmc8L0F1dGhvckVtYWlsPg0KPFN0YXJ0RGF0ZT48L1N0YXJ0RGF0ZT4NCjxQSFBIZWFkZXI+PCFbQ0RBVEFbSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwTkNpTWdleVJ0YjJSMWJHVmZibUZ0WlgwZ0xTQjdKRzF2WkhWc1pWOW1jbWxsYm1Sc2VWOXVZVzFsZlEwS0l5QldaWEp6YVc5dUlIc2tiVzlrZFd4bFgzWmxjbk5wYjI1OURRb2pJSHNrYlc5a2RXeGxYMlJsYzJOeWFYQjBhVzl1ZlEwS0l5QW9ZeWtnZXlSemRHRnlkR1JoZEdWOUxYc2taVzVrWkdGMFpYMGdZbmtnZXlSdGIyUjFiR1ZmWVhWMGFHOXlmUTBLSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwTkNpTU5DaU1nZXlSdGIyUjFiR1ZmYm1GdFpYMGdhWE1nWVNCRFRWTWdUV0ZrWlNCVGFXMXdiR1VnYlc5a2RXeGxJSFJvWVhRZ1pXNWhZbXhsY3lCMGFHVWdkMlZpSUdSbGRtVnNiM0JsY2lCMGJ5QmpjbVZoZEdVTkNpTWdiWFZzZEdsd2JHVWdiR2x6ZEhNZ2RHaHliM1ZuYUc5MWRDQmhJSE5wZEdVdUlFbDBJR05oYmlCaVpTQmtkWEJzYVdOaGRHVmtJR0Z1WkNCbmFYWmxiaUJtY21sbGJtUnNlUTBLSXlCdVlXMWxjeUJtYjNJZ1pXRnphV1Z5SUdOc2FXVnVkQ0J0WVdsdWRHVnVZVzVqWlM0TkNpTU5DaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0RFFvaklFTk5VeUF0SUVOTlV5Qk5ZV1JsSUZOcGJYQnNaU0JwY3lBb1l5a2dNakF3TlNCaWVTQlVaV1FnUzNWc2NDQW9kMmx6YUhsQVkyMXpiV0ZrWlhOcGJYQnNaUzV2Y21jcERRb2pJRlpwYzJsMElIUm9aU0JEVFZOTlV5Qm9iMjFsY0dGblpTQmhkRG9nYUhSMGNEb3ZMM2QzZHk1amJYTnRZV1JsYzJsdGNHeGxMbTl5WncwS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTME5DaU1nUWtWSFNVNWZURWxEUlU1VFJRMEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBOQ2lNZ1ZHaHBjeUJtYVd4bElHbHpJSEJoY25RZ2IyWWdleVJ0YjJSMWJHVmZibUZ0WlgwTkNpTWdleVJ0YjJSMWJHVmZibUZ0WlgwZ2NISnZaM0poYlNCcGN5Qm1jbVZsSUhOdlpuUjNZWEpsT3lCNWIzVWdZMkZ1SUhKbFpHbHpkSEpwWW5WMFpTQnBkQ0JoYm1RdmIzSWdiVzlrYVdaNURRb2pJR2wwSUhWdVpHVnlJSFJvWlNCMFpYSnRjeUJ2WmlCMGFHVWdSMDVWSUVkbGJtVnlZV3dnVUhWaWJHbGpJRXhwWTJWdWMyVWdZWE1nY0hWaWJHbHphR1ZrSUdKNURRb2pJSFJvWlNCR2NtVmxJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjQ3SUdWcGRHaGxjaUIyWlhKemFXOXVJRElnYjJZZ2RHaGxJRXhwWTJWdWMyVXNJRzl5RFFvaklDaGhkQ0I1YjNWeUlHOXdkR2x2YmlrZ1lXNTVJR3hoZEdWeUlIWmxjbk5wYjI0dURRb2pEUW9qSUhza2JXOWtkV3hsWDI1aGJXVjlJSEJ5YjJkeVlXMGdhWE1nWkdsemRISnBZblYwWldRZ2FXNGdkR2hsSUdodmNHVWdkR2hoZENCcGRDQjNhV3hzSUdKbElIVnpaV1oxYkN3TkNpTWdZblYwSUZkSlZFaFBWVlFnUVU1WklGZEJVbEpCVGxSWk95QjNhWFJvYjNWMElHVjJaVzRnZEdobElHbHRjR3hwWldRZ2QyRnljbUZ1ZEhrZ2IyWU5DaU1nVFVWU1EwaEJUbFJCUWtsTVNWUlpJRzl5SUVaSlZFNUZVMU1nUms5U0lFRWdVRUZTVkVsRFZVeEJVaUJRVlZKUVQxTkZMaUFnVTJWbElIUm9aUTBLSXlCSFRsVWdSMlZ1WlhKaGJDQlFkV0pzYVdNZ1RHbGpaVzV6WlNCbWIzSWdiVzl5WlNCa1pYUmhhV3h6TGcwS0l5QlpiM1VnYzJodmRXeGtJR2hoZG1VZ2NtVmpaV2wyWldRZ1lTQmpiM0I1SUc5bUlIUm9aU0JIVGxVZ1IyVnVaWEpoYkNCUWRXSnNhV01nVEdsalpXNXpaUTBLSXlCaGJHOXVaeUIzYVhSb0lIUm9hWE1nY0hKdlozSmhiVHNnYVdZZ2JtOTBMQ0IzY21sMFpTQjBieUIwYUdVZ1JuSmxaU0JUYjJaMGQyRnlaUTBLSXlCR2IzVnVaR0YwYVc5dUxDQkpibU11TENBMU9TQlVaVzF3YkdVZ1VHeGhZMlVzSUZOMWFYUmxJRE16TUN3Z1FtOXpkRzl1TENCTlFTQXdNakV4TVMweE16QTNJRlZUUVEwS0l5QlBjaUJ5WldGa0lHbDBJRzl1YkdsdVpUb2dhSFIwY0RvdkwzZDNkeTVuYm5VdWIzSm5MMnhwWTJWdWMyVnpMMnhwWTJWdWMyVnpMbWgwYld3alIxQk1EUW9qRFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRMEtJeUJGVGtSZlRFbERSVTVUUlEwS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMD1dXT48L1BIUEhlYWRlcj4NCjxMaWNlbmNlPkdQTCBWMzwvTGljZW5jZT4NCjxGaWxsSGVhZGVyPjA8L0ZpbGxIZWFkZXI+DQo8L21vZHVsZWRhdGE+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.addgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKZnVuY3Rpb24gc3dhcCgmJGEsJiRiKQp7CiAgJHRtcCA9ICRhOwogICRhID0gJGI7CiAgJGIgPSAkdG1wOwp9CgoKZnVuY3Rpb24gcmVvcmRlcl9ieV9rZXkoJiRpbnB1dCwgJGZsZCwgJGtleXMpCnsKICBpZighaXNfYXJyYXkoJGlucHV0KSl7cmV0dXJuO30KICAKICAkdG1wID0gYXJyYXkoKTsKICAKICBmb3JlYWNoKCRrZXlzIGFzICRvbmVrZXkpCiAgewogICAgZm9yZWFjaCgkaW5wdXQgYXMgJHJlYykKICAgIHsKICAgICAgaWYoJHJlY1skZmxkXSA9PSAkb25la2V5KQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJHJlYzsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICAkaW5wdXQgPSAkdG1wOwp9CgpmdW5jdGlvbiBhZGp1c3Rfb3JkZXJfYnlfa2V5cygmJGlucHV0LCAkZmxkLCAka2V5cykKewogIGlmKCFpc19hcnJheSgkaW5wdXQpKXtyZXR1cm47fQogIAogICR0bXAgPSBhcnJheSgpOwogIAogIGZvcmVhY2goJGtleXMgYXMgJG9uZWtleSkKICB7CiAgICBmb3JlYWNoKCRpbnB1dCBhcyAkcmVjKQogICAgewogICAgICBpZigkcmVjWyRmbGRdID09ICRvbmVrZXkpCiAgICAgIHsKICAgICAgICAkdG1wW10gPSAkcmVjOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgfQogIAogIGZvcmVhY2goJGlucHV0IGFzICRyZWMpCiAgewogICAgJGYxID0gMDsKICAgIGZvcmVhY2goJHRtcCBhcyAkdG1wcmVjKQogICAgewogICAgICBpZigkcmVjWyRmbGRdID09ICR0bXByZWNbJGZsZF0pCiAgICAgIHsKICAgICAgICAkZjEgPSAxOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgICBpZigkZjEgPT0gMCkKICAgIHsKICAgICAgJHRtcFtdID0gJHJlYzsKICAgIH0KICB9CiAgCiAgJGlucHV0ID0gJHRtcDsKfQoKCi8vCi8vIEluaXRpYWxpemF0aW9uCi8vCiRncm91cG5hbWUgPSAnJzsKJGdyb3VwZGVzYyA9ICcnOwokZ2lkICAgICAgID0gLTE7CgovLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgppZighaXNzZXQoJHBhcmFtc1snZ3JvdXBfaWQnXSkpCnsKICBpZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZGdyb3VwJykpCiAgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgCiAgICByZXR1cm47CiAgfQp9CmVsc2UKewogIGlmKCEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpKQogIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgIAogICAgcmV0dXJuOwogIH0KfQoKJHByb3BkZWZuID0gYXJyYXkoKTsKewogICR0bXAgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogIAogICMgd2h5IHdvdWxkIHdlIHdhbnQgdG8gZW5mb3JjZSB0aGUgdXNlIG9mIGV4dHJhIHByb3BlcnRpZXM/IChKTSkKICAKLy8gIGlmKGNvdW50KCR0bXApID09IDApCi8vICB7Ci8vICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX25vcHJvcGVydGllcycpKTsKLy8KLy8gICAgcmV0dXJuOwovLyAgfQogIAogIGZvcmVhY2goJHRtcCBhcyAka2V5ID0+ICRyZWMpCiAgewogICAgJHJlY1sncmVxdWlyZWQnXSA9IDA7CiAgICAkcHJvcGRlZm5bJGtleV0gID0gJHJlYzsKICB9Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2dyb3VwX2lkJ10pKQp7CiAgLy8gd2UncmUgZWRpdGluZyBhIGdyb3VwCiAgJGdpZCAgID0gKGludCkkcGFyYW1zWydncm91cF9pZCddOwogICRnaW5mbyA9ICR0aGlzLT5HZXRHcm91cEluZm8oJGdpZCk7CiAgaWYoaXNzZXQoJGdpbmZvWzBdKSAmJiAkZ2luZm9bMF0gPT0gRkFMU0UpCiAgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfZ3JvdXBub3Rmb3VuZCcpKTsKICAgIAogICAgcmV0dXJuOwogIH0KICAkZ3JvdXBuYW1lID0gJGdpbmZvWydncm91cG5hbWUnXTsKICAkZ3JvdXBkZXNjID0gJGdpbmZvWydncm91cGRlc2MnXTsKICAKICAvLyBsb2FkIHJlbGF0aW9ucywgYW5kIGFkanVzdCB0aGUgcHJvcGRlZm4gYXJyYXkKICAkcmVzID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgCiAgaWYoJHJlc1swXSA9PSBGQUxTRSkKICB7CiAgICAvLyBlZGl0aW5nIGEgZ3JvdXAsIGJ1dCBubyBwcm9wZXJ0eSByZWxhdGlvbnMgKG1heWJlIHRoZSBncm91cHMgYXJlIGhlbGQgaW4gYSBjb25zdW1lciBtb2R1bGUsIGJ1dCBub3QgdGhlIHByb3BlcnR5IGRlZnMpLgogICAgLy8gdHJlYXQgaXQgbGlrZSB3ZSdyZSBhZGRpbmcgYSBncm91cC4KICAgIC8qCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCSAgICAgJHRoaXMtPkxhbmcoJ2Vycm9yX25vZ3JvdXBwcm9wZXJ0aWVzJykpOwogICAgcmV0dXJuOwogICAgKi8KICB9CiAgZWxzZQogIHsKICAgIC8vIHNvcnQgdGhlbSBieSBzb3J0IGtleQogICAgdWFzb3J0KCRyZXMsIGFycmF5KCd4dF9hcnJheScsICdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknKSk7CiAgICAKICAgIC8vIHNvcnQgdGhlIHByb3BkZWZucyBieSB0aGUgc29ydCBvcmRlci4KICAgICRuYW1lcyA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRyZXMgYXMgJHRtcCl7JG5hbWVzW10gPSAkdG1wWyduYW1lJ107fQogICAgYWRqdXN0X29yZGVyX2J5X2tleXMoJHByb3BkZWZuLCAnbmFtZScsICRuYW1lcyk7CiAgICAKICAgIC8vIHVwZGF0ZSB0aGUgcHJvcGRlZm5zCiAgICBmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCRyZXMpOyAkaSsrKQogICAgewogICAgICBmb3IoJGogPSAwOyAkaiA8IGNvdW50KCRwcm9wZGVmbik7ICRqKyspCiAgICAgIHsKICAgICAgICBpZigkcmVzWyRpXVsnbmFtZSddID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgICB7CiAgICAgICAgICAkcHJvcGRlZm5bJGpdWydyZXF1aXJlZCddID0gJHJlc1skaV1bJ3JlcXVpcmVkJ107CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0gLy8gZm9yCiAgfSAvLyBlbHNlCn0KCi8vIGV4Y2x1ZGUgcHJvcGVydHkgZGVmbnMgZnJvbSBtb2R1bGVzCnsKICAkdG1wID0gYXJyYXkoKTsKICBmb3JlYWNoKCRwcm9wZGVmbiBhcyAka2V5ID0+ICRyZWMpCiAgewogICAgaWYoIWlzc2V0KCRyZWNbJ2V4dHJhJ11bJ21vZHVsZSddKSkKICAgIHsKICAgICAgJHRtcFtdID0gJHJlYzsKICAgIH0KICB9CiAgJHByb3BkZWZuID0gJHRtcDsKfQoKaWYoaXNzZXQgKCRwYXJhbXNbJ2NhbmNlbCddKSkKewogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2dyb3VwcycpOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ21vdmV1cCddKSkKewogIC8vIHVwZGF0ZSB0aGUgcHJvcGRlZm4gd2l0aCBzdGF0dXMgdmFsdWVzCiAgZm9yKCRpID0gMDsgJGkgPCBjb3VudCgkcGFyYW1zWydpbnB1dF9uYW1lJ10pOyAkaSsrKQogIHsKICAgICRuYW1lID0gJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpXTsKICAgIGZvcigkaiA9IDA7ICRqIDwgY291bnQoJHByb3BkZWZuKTsgJGorKykKICAgIHsKICAgICAgaWYoJG5hbWUgPT0gJHByb3BkZWZuWyRqXVsnbmFtZSddKQogICAgICB7CiAgICAgICAgJHByb3BkZWZuWyRqXVsncmVxdWlyZWQnXSA9ICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkJ11bJGldOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgfQogIGlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2dyb3VwbmFtZSddKSkKICB7CiAgICAkZ3JvdXBuYW1lID0gdHJpbSgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSk7CiAgfQogIGlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddKSkKICB7CiAgICAkZ3JvdXBkZXNjID0gdHJpbSgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSk7CiAgfQogIAogIC8vIHdlJ3JlIG1vdmluZyBzdHVmZiB1cAogIC8vIHNvIGFkanVzdCB0aGUgcHJvcGRlZm4gYXJyYXkKICAkaWR4ID0gKGludCkkcGFyYW1zWydtb3ZldXAnXSAtIDE7CiAgc3dhcCgkcGFyYW1zWydpbnB1dF9uYW1lJ11bJGlkeF0sICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaWR4IC0gMV0pOwogIHJlb3JkZXJfYnlfa2V5KCRwcm9wZGVmbiwgJ25hbWUnLCAkcGFyYW1zWydpbnB1dF9uYW1lJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ21vdmVkb3duJ10pKQp7CiAgLy8gdXBkYXRlIHRoZSBwcm9wZGVmbiB3aXRoIHN0YXR1cyB2YWx1ZXMKICBmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCRwYXJhbXNbJ2lucHV0X25hbWUnXSk7ICRpKyspCiAgewogICAgJG5hbWUgPSAkcGFyYW1zWydpbnB1dF9uYW1lJ11bJGldOwogICAgZm9yKCRqID0gMDsgJGogPCBjb3VudCgkcHJvcGRlZm4pOyAkaisrKQogICAgewogICAgICBpZigkbmFtZSA9PSAkcHJvcGRlZm5bJGpdWyduYW1lJ10pCiAgICAgIHsKICAgICAgICAkcHJvcGRlZm5bJGpdWydyZXF1aXJlZCddID0gJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV07CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CiAgaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pKQogIHsKICAgICRncm91cG5hbWUgPSB0cmltKCRwYXJhbXNbJ2lucHV0X2dyb3VwbmFtZSddKTsKICB9CiAgaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10pKQogIHsKICAgICRncm91cGRlc2MgPSB0cmltKCRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddKTsKICB9CiAgCiAgLy8gd2UncmUgbW92aW5nIHN0dWZmIGRvd24KICAvLyBzbyBhZGp1c3QgdGhlIHByb3BkZWZuIGFycmF5CiAgJGlkeCA9IChpbnQpJHBhcmFtc1snbW92ZWRvd24nXSAtIDE7CiAgc3dhcCgkcGFyYW1zWydpbnB1dF9uYW1lJ11bJGlkeF0sICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaWR4ICsgMV0pOwogIHJlb3JkZXJfYnlfa2V5KCRwcm9wZGVmbiwgJ25hbWUnLCAkcGFyYW1zWydpbnB1dF9uYW1lJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkKewogICR0aGlzLT5teVJlZGlyZWN0KCRpZCwgJ2RvX2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKLy8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCmlmKGlzc2V0KCRwYXJhbXNbJ2Vycm9yJ10pKQp7CiAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsICRwYXJhbXNbJ2Vycm9yJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10pOwp9CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGhpcy0+TGFuZygnYWRkZ3JvdXAnKSk7CmlmKCRnaWQgPiAwKQp7CiAgJHNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZ3JvdXBfaWQnLCAkZ2lkKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsICR0aGlzLT5MYW5nKCdlZGl0Z3JvdXAnKSk7Cn0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9ncm91cG5hbWUnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZ3JvdXBkZXNjJywgJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpOwokY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwokYWRkdGV4dCAgPSAnJzsKaWYoCiAgISRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFMpICYmCiAgISRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVNUREdST1VQUykKKQp7CiAgJGFkZHRleHQgPSAncmVhZG9ubHk9InJlYWRvbmx5IiBkaXNhYmxlZD0iZGlzYWJsZWQiJzsKfQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2dyb3VwbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW5wdXRfZ3JvdXBuYW1lJywgJGdyb3VwbmFtZSwgMjAsIDgwLCAkYWRkdGV4dCkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2dyb3VwZGVzYycsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW5wdXRfZ3JvdXBkZXNjJywgJGdyb3VwZGVzYywgODAsIDI1NSwgJGFkZHRleHQpKTsKCi8vIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0aWVzIGluIGEgZm9ybQovLyB0byBhbGxvdyB0aGUgdXNlciB0byBwaWNrIHdoaWNoIG9uZXMgYXJlIHJlcXVpcmVkIGFuZCB3aGljaCBvbmVzIGFyZW50Lgokcm93YXJyYXkgPSBhcnJheSgpOwoka2V5cyAgICAgPSBhcnJheV9rZXlzKCR0aGlzLT5HZXRGaWVsZFR5cGVzKCkpOwokb3B0aW9ucyAgPSBhcnJheSgKICAkdGhpcy0+TGFuZygnb2ZmJykgICAgICA9PiAwLAogICR0aGlzLT5MYW5nKCdvcHRpb25hbCcpID0+IDEsCiAgJHRoaXMtPkxhbmcoJ3JlcXVpcmVkJykgPT4gMiwKICAkdGhpcy0+TGFuZygnaGlkZGVuJykgICA9PiAzLAogICR0aGlzLT5MYW5nKCdyZWFkb25seScpID0+IDQKKTsKCiR0aGVtZU9iamVjdCA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOwokaW1nX3VwICAgICAgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmJywgJHRoaXMtPkxhbmcoJ21vdmVfdXAnLCAnJywgJycsICdzeXN0ZW1pY29uJykpOwokc21hcnR5LT5hc3NpZ24oJ2ltZ191cCcsICRpbWdfdXApOwokaW1nX2Rvd24gPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYnLCAkdGhpcy0+TGFuZygnbW92ZV9kb3duJywgJycsICcnLCAnc3lzdGVtaWNvbicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbWdfZG93bicsICRpbWdfZG93bik7Cgokc3VibWl0X2J0biA9IGZ1bmN0aW9uKHN0cmluZyAkaWQsIHN0cmluZyAkbmFtZSwgc3RyaW5nICR2YWx1ZSwgc3RyaW5nICRhZGR0ZXh0ID0gTlVMTCwgc3RyaW5nICRpbWcgPSBOVUxMKXsKICByZXR1cm4gIjxidXR0b24gbmFtZT0neyRpZH17JG5hbWV9JyB2YWx1ZT0neyR2YWx1ZX0nICRhZGR0ZXh0PiIgLiAkdGhpcy0+RGlzcGxheUltYWdlKCRpbWcsICRuYW1lKSAuICc8L2J1dHRvbj4nOwp9Owokc29ydG9yZGVyICA9IDE7CmZvcmVhY2goJHByb3BkZWZuIGFzICRkZWZuKQp7CiAgJG9uZXJvdyAgICAgICAgICAgID0gbmV3IFN0ZENsYXNzKCk7CiAgJG9uZXJvdy0+bmFtZSAgICAgID0gJGRlZm5bJ25hbWUnXTsKICAkb25lcm93LT5wcm9tcHQgICAgPSAkZGVmblsncHJvbXB0J107CiAgJG9uZXJvdy0+dHlwZSAgICAgID0gJHRoaXMtPkxhbmcoJGtleXNbJGRlZm5bJ3R5cGUnXV0pOwogICRvbmVyb3ctPmhpZGRlbiAgICA9ICc8ZGl2PicgLiAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaW5wdXRfbmFtZVtdJywgJGRlZm5bJ25hbWUnXSkgLiAnPC9kaXY+JzsKICAkb25lcm93LT5yZXF1aXJlZCAgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9yZXF1aXJlZFtdJywgJG9wdGlvbnMsIC0xLCAkZGVmblsncmVxdWlyZWQnXSk7CiAgJG9uZXJvdy0+ZW5jcnlwdGVkID0gJGRlZm5bJ2VuY3J5cHQnXTsKICAKICBpZigkc29ydG9yZGVyID4gMSkKICB7CiAgICAkb25lcm93LT5tb3ZldXBfaWR4ID0gJHNvcnRvcmRlcjsKICAgICRvbmVyb3ctPm1vdmV1cCAgICAgPSAkc3VibWl0X2J0bigkaWQsICdtb3ZldXAnLCAkc29ydG9yZGVyLCAnJywgJ2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZicpOwogIH0KICBpZigkc29ydG9yZGVyIDwgY291bnQoJHByb3BkZWZuKSkKICB7CiAgICAkb25lcm93LT5tb3ZlZG93bl9pZHggPSAkc29ydG9yZGVyOwogICAgJG9uZXJvdy0+bW92ZWRvd24gICAgID0gJHN1Ym1pdF9idG4oJGlkLCAnbW92ZWRvd24nLCAkc29ydG9yZGVyLCAnJywgJ2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmJyk7CiAgfQogIAogICRyb3dhcnJheVtdID0gJG9uZXJvdzsKICArKyRzb3J0b3JkZXI7Cn0KCiRzbWFydHktPmFzc2lnbigncHJvcHMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb3Bjb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ3NvcnRvcmRlcnRleHQnLCAkdGhpcy0+TGFuZygnc29ydG9yZGVyJykpOwokc21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0dGV4dCcsICR0aGlzLT5MYW5nKCdwcm9tcHQnKSk7CiRzbWFydHktPmFzc2lnbigndHlwZXRleHQnLCAkdGhpcy0+TGFuZygndHlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHN0YXR1c3RleHQnLCAkdGhpcy0+TGFuZygnZmllbGRzdGF0dXMnKSk7CiRzbWFydHktPmFzc2lnbigndXNlZGlubG9zdHVudGV4dCcsICR0aGlzLT5MYW5nKCd1c2VkaW5sb3N0dW4nKSk7CgovLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRncm91cC50cGwnKTsK]]></data>
	</file>
	<file>
	  <filename>/action.addprop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnYWRkcHJvcCcgKSApIGV4aXQ7CgojCiMgSW5pdGlhbGl6YXRpb24KIwokdHlwZXMgPSAkdGhpcy0+R2V0RmllbGRUeXBlcygpOwp1bnNldCgkdHlwZXNbJ2RhdGEnXSk7CiRmaWVsZHR5cGVzID0gJHRoaXMtPmxhbmdpZnlLZXlzKCR0eXBlcyk7CiR0aXRsZSA9ICR0aGlzLT5MYW5nKCdhZGRwcm9wJyk7CiRkZWZuID0gYXJyYXkoKTsKJGRlZm5bJ25hbWUnXSA9ICcnOwokZGVmblsncHJvbXB0J10gPSAnJzsKJGRlZm5bJ3R5cGUnXSA9IDA7CiRkZWZuWydsZW5ndGgnXSA9IDgwOwokZGVmblsnbWF4bGVuZ3RoJ10gPSAyNTU7CiRkZWZuWydhdHRyaWJzJ10gPSAnJzsKJGRlZm5bJ2ZvcmNlX3VuaXF1ZSddID0gMDsKJGRlZm5bJ2VuY3J5cHQnXSA9IDA7CiRhdHRyaWJzID0gYXJyYXkoKTsKJHNlbG9wdGlvbnMgPSAnJzsKJHN0YXR1cyA9ICcnOwokbWVzc2FnZSA9ICcnOwokcHJvcG5hbWUgPSAnJzsKCgojCiMgUmVhZCBQYXJhbWV0ZXJzCiMKaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApIHsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJvcGVydGllcycgKTsKcmV0dXJuOwp9CmlmKCBpc3NldCgkcGFyYW1zWydwcm9wbmFtZSddKSApIHsKICAgICRwcm9wbmFtZSA9IHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3Byb3BuYW1lJyk7CiAgICAkdGl0bGUgPSAkdGhpcy0+TGFuZygnZWRpdHByb3AnLCRwcm9wbmFtZSk7CiAgICAkZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oJHByb3BuYW1lKTsKICAgIGlmKCAkZGVmbiA9PSBGQUxTRSApIHsKICAgICAgICAkcGFybXMgPSBhcnJheSgpOwogICAgICAgICRwYXJtc1snZXJyb3InXSA9IDE7CiAgICAgICAgJHBhcm1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfcHJvcG5vdGZvdW5kJyk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdwcm9wZXJ0aWVzJywkcGFybXMpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgICR0bXAgPSAkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcHJvcG5hbWUpOwogICAgaWYoICR0bXAgKSB7CiAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgIGlmKCAka2V5ID09ICR2YWwgKSB7CiAgICAgICAgICAgICAgICAkc2Vsb3B0aW9ucyAuPSAiJHZhbFxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRzZWxvcHRpb25zIC49ICIka2V5PSR2YWxcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiggaXNzZXQoJGRlZm5bJ2F0dHJpYnMnXSkgJiYgIWVtcHR5KCRkZWZuWydhdHRyaWJzJ10pICkgewogICAgICAgICRhdHRyaWJzID0gdW5zZXJpYWxpemUoJGRlZm5bJ2F0dHJpYnMnXSk7CiAgICB9Cn0KCmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF90eXBlJ10pICkgewogICAgJGRlZm5bJ3R5cGUnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfdHlwZSddOwp9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9sZW5ndGgnXSkgKSB7CiAgICAkZGVmblsnbGVuZ3RoJ10gPSAoaW50KSRwYXJhbXNbJ2lucHV0X2xlbmd0aCddOwp9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9tYXhsZW5ndGgnXSkgKSB7CiAgICAkZGVmblsnbWF4bGVuZ3RoJ10gPSAoaW50KSRwYXJhbXNbJ2lucHV0X21heGxlbmd0aCddOwp9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9uYW1lJ10pICkgewogICAgJGRlZm5bJ25hbWUnXSA9IHN0cnRvbG93ZXIoeHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnaW5wdXRfbmFtZScpKTsKICAgICRkZWZuWyduYW1lJ10gPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRkZWZuWyduYW1lJ10pOwogICAgJGRlZm5bJ25hbWUnXSA9IHN0cl9yZXBsYWNlKCctJywnXycsJGRlZm5bJ25hbWUnXSk7Cn0KaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3Byb21wdCddKSApIHsKICAgICRkZWZuWydwcm9tcHQnXSA9IHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2lucHV0X3Byb21wdCcpOwp9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9mb3JjZV91bmlxdWUnXSkgKSB7CiAgICAkZGVmblsnZm9yY2VfdW5pcXVlJ10gPSAoaW50KSRwYXJhbXNbJ2lucHV0X2ZvcmNlX3VuaXF1ZSddOwp9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9lbmNyeXB0J10pICkgewogICAgJGRlZm5bJ2VuY3J5cHQnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfZW5jcnlwdCddOwp9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9zZWxvcHRpb25zJ10pICkgewogICAgJHNlbG9wdGlvbnMgPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdpbnB1dF9zZWxvcHRpb25zJyk7CiAgICAkc2Vsb3B0aW9ucyA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHNlbG9wdGlvbnMpOwp9CmlmIChpc3NldCgkcGFyYW1zWydpbnB1dF9yYWRpb29wdGlvbnMnXSkpIHsKICAgICRzZWxvcHRpb25zID0geHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnaW5wdXRfcmFkaW9vcHRpb25zJyk7CiAgICAkc2Vsb3B0aW9ucyA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHNlbG9wdGlvbnMpOwp9CmZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUgKSB7CiAgICBpZiggc3RhcnRzd2l0aCgka2V5LCdpbnB1dF9hdHRyaWJfJykgKSB7CiAgICAgICAgJGF0dHJpYiA9IHN1YnN0cigka2V5LDEzKTsKICAgICAgICAkYXR0cmlic1skYXR0cmliXSA9ICR2YWx1ZTsKICAgIH0KfQppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogICAgaWYoIGVtcHR5KCRkZWZuWyduYW1lJ10pIHx8IGVtcHR5KCRkZWZuWydwcm9tcHQnXSkgKSB7CiAgICAgICAgJHN0YXR1cyA9ICdlcnJvcic7CiAgICAgICAgJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpOwogICAgfQoKICAgIGlmKCBlbXB0eSgkc3RhdHVzKSAmJiAkc2Vsb3B0aW9ucyApIHsKICAgICAgICAkb3B0aW9ucyA9IFtdOwogICAgICAgICR0bXAgPSBleHBsb2RlKCJcbiIsICRzZWxvcHRpb25zKTsKICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgICRvbmUgPSB0cmltKCRvbmUpOwogICAgICAgICAgICBpZiggIWVtcHR5KCRvbmUpICkgewogICAgICAgICAgICAgICAgJG9wdGlvbnNbXSA9ICRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYoIGVtcHR5KCRzdGF0dXMpICkgewogICAgICAgIHN3aXRjaCgkZGVmblsndHlwZSddKSB7CiAgICAgICAgY2FzZSAnMCc6IC8qIHRleHQgKi8KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnNic6IC8qIGltYWdlICovCiAgICAgICAgICAgICRkZWZuWydsZW5ndGgnXSA9IDI1NTsKICAgICAgICAgICAgJGRlZm5bJ2VuY3J5cHQnXSA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJzInOiAvKiBlbWFpbCAqLwogICAgICAgICAgICAvLyBlbWFpbCBmaWVsZHMgY2Fubm90IGJlIGVuY3J5cHRlZC4KICAgICAgICAgICAgJGRlZm5bJ2VuY3J5cHQnXSA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMTogICAvKiBjaGVja2JveCAqLwogICAgICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSAxOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6ICAgLyogdGV4dGFyZWEgKi8KICAgICAgICAgICAgJGRlZm5bJ2xlbmd0aCddID0gMjU1OwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDQ6CiAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSBjb3VudCgkb3B0aW9ucyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgNzogLyogcmFkaW9idXR0b25zICovCiAgICAgICAgICAgICRkZWZuWydsZW5ndGgnXSA9IGNvdW50KCRvcHRpb25zKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA4OiAvKiBkYXRlICovCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgJGRlZm5bJ2xlbmd0aCddID0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiggKCgkZGVmblsndHlwZSddID09IDAgfHwgJGRlZm5bJ3R5cGUnXSA9PSAyKSAmJiAoICRkZWZuWydsZW5ndGgnXSA8IDEgfHwgJGRlZm5bJ2xlbmd0aCddID4gMjU1IHx8ICRkZWZuWydtYXhsZW5ndGgnXSA8IDEgfHwgJGRlZm5bJ21heGxlbmd0aCddID4gMTAyNCB8fCAkZGVmblsnbWF4bGVuZ3RoJ10gPCAkZGVmblsnbGVuZ3RoJ10gKSkgfHwKICAgICAgICAgICAgKCgkZGVmblsndHlwZSddID09IDQgfHwgJGRlZm5bJ3R5cGUnXSA9PSA1IHx8ICRkZWZuWyd0eXBlJ10gPT0gNykgJiYgJHNlbG9wdGlvbnMgPT0gJycgKSB8fAogICAgICAgICAgICAoKCRkZWZuWyd0eXBlJ10gPT0gNikgJiYgKCRkZWZuWydsZW5ndGgnXSA8IDEwIHx8ICRkZWZuWydsZW5ndGgnXSA+IDEwMjQpKQogICAgICAgICAgICApewogICAgICAgICAgICAkc3RhdHVzID0gJ2Vycm9yJzsKICAgICAgICAgICAgJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiggZW1wdHkoJHN0YXR1cykgKSB7CiAgICAgICAgJGRlZm5bJ2F0dHJpYnMnXSA9IHNlcmlhbGl6ZSgkYXR0cmlicyk7CiAgICB9CgogICAgaWYoIGVtcHR5KCRzdGF0dXMpICkgewogICAgICAgIGlmKCAhZW1wdHkoJHByb3BuYW1lKSApIHsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5TZXRQcm9wZXJ0eURlZm4oICRwcm9wbmFtZSwgJGRlZm5bJ25hbWUnXSwgJGRlZm5bJ3Byb21wdCddLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWyd0eXBlJ10sICRkZWZuWydtYXhsZW5ndGgnXSwgJGRlZm5bJ2F0dHJpYnMnXSwgJGRlZm5bJ2ZvcmNlX3VuaXF1ZSddLCAkZGVmblsnZW5jcnlwdCddICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBOZXcgcHJvcGVydHkKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5BZGRQcm9wZXJ0eURlZm4oICRkZWZuWyduYW1lJ10sICRkZWZuWydwcm9tcHQnXSwgJGRlZm5bJ3R5cGUnXSwgJGRlZm5bJ2xlbmd0aCddLCAkZGVmblsnbWF4bGVuZ3RoJ10sICRkZWZuWydhdHRyaWJzJ10sICRkZWZuWydmb3JjZV91bmlxdWUnXSwgJGRlZm5bJ2VuY3J5cHQnXSApOwogICAgICAgICAgICBpZiggISR0bXBbMF0gKSB7CiAgICAgICAgICAgICAgICAkc3RhdHVzID0gJ2Vycm9yJzsKICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJHRtcFsxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiggZW1wdHkoJHN0YXR1cykgJiYgaXNzZXQoJG9wdGlvbnMpICYmICRvcHRpb25zICkgewogICAgICAgIGlmKCAhZW1wdHkoJHByb3BuYW1lKSApIHsKICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVNlbGVjdE9wdGlvbnMoJHByb3BuYW1lKTsKICAgICAgICB9CgogICAgICAgICR0bXAgPSAkdGhpcy0+QWRkU2VsZWN0T3B0aW9ucygkZGVmblsnbmFtZSddLCRvcHRpb25zKTsKICAgICAgICBpZiggISR0bXBbMF0gKSB7CiAgICAgICAgICAgICRzdGF0dXMgPSAnZXJyb3InOwogICAgICAgICAgICAkbWVzc2FnZSA9ICR0bXBbMV07CiAgICAgICAgfQogICAgfQoKICAgIGlmKCBlbXB0eSgkc3RhdHVzKSApIHsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnb3BlcmF0aW9uX2NvbXBsZXRlZCcpKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYiggJGlkLCAncHJvcGVydGllcycgKTsKICAgIH0KCiAgICAvLwogICAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0J3MgYW4gZXJyb3Igb2Ygc29tZSBzb3J0CiAgICAvLwp9CgojCiMgR2l2ZSBldmV5cnRoaW5nIHRvIHNtYXJ0eQojCmlmKCAhZW1wdHkoJHN0YXR1cykgKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywxKTsKfQppZiggIWVtcHR5KCRtZXNzYWdlKSApIHsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOwp9CiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRkcHJvcCcsJHJldHVybmlkLCdwb3N0JywnJyxmYWxzZSwnJywkcGFyYW1zKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCR0aXRsZSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X25hbWUnLCR0aGlzLT5MYW5nKCduYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ2luZm9fbmFtZScsJHRoaXMtPkxhbmcoJ2luZm9fbmFtZScpKTsKCiRxdWVyeSA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzJzsKJG51c2VycyA9ICRkYi0+R2V0T25lKCRxdWVyeSk7CiRxdWVyeSA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2dyb3Vwcyc7CiRuZ3JvdXBzID0gJGRiLT5HZXRPbmUoJHF1ZXJ5KTsKaWYoICFlbXB0eSgkcHJvcG5hbWUpICYmICgkbnVzZXJzID4gMCB8fCAkbmdyb3VwcyA+IDApICkgewogICAgJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9uYW1lJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdpbnB1dF9uYW1lJywkcHJvcG5hbWUpLiRwcm9wbmFtZSk7Cn0KZWxzZSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2lucHV0X25hbWUnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9uYW1lJywkZGVmblsnbmFtZSddLCAzMCwgMzAgKSk7Cn0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcHJvbXB0JywkdGhpcy0+TGFuZygncHJvbXB0JykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3Byb21wdCcsCiAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfcHJvbXB0JywkZGVmblsncHJvbXB0J10sIDgwLCAyNTUgKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X3R5cGUnLCR0aGlzLT5MYW5nKCd0eXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3R5cGUnLAogICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oICRpZCwgJ2lucHV0X3R5cGUnLCAkZmllbGR0eXBlcywgLTEsICRkZWZuWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uY2hhbmdlPSJ0aGlzLmZvcm0uc3VibWl0KCk7IicpKTsKaWYoICRkZWZuWyd0eXBlJ10gPT0gMCB8fCAkZGVmblsndHlwZSddID09IDIgKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZvcmNlX3VuaXF1ZScsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsJ2lucHV0X2ZvcmNlX3VuaXF1ZScsJGRlZm5bJ2ZvcmNlX3VuaXF1ZSddKSk7Cn0KaWYoICFpc3NldCgkcGFyYW1zWydwcm9wbmFtZSddKSApIHsKICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfZW5jcnlwdCcsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsJ2lucHV0X2VuY3J5cHQnLCRkZWZuWydlbmNyeXB0J10pKTsKfQplbHNlIHsKICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfZW5jcnlwdCcsJGRlZm5bJ2VuY3J5cHQnXT8kdGhpcy0+TGFuZygneWVzJyk6JHRoaXMtPkxhbmcoJ25vJykpOwp9Cgokc21hcnR5LT5hc3NpZ24oJ2RlZm4nLCRkZWZuKTsKJHNtYXJ0eS0+YXNzaWduKCdvcmlnX3R5cGUnLAogICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ29yaWdfdHlwZScsICRkZWZuWyd0eXBlJ10pKTsKJHNtYXJ0eS0+YXNzaWduICgnc3VibWl0JywKICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSApKTsKJHNtYXJ0eS0+YXNzaWduICgnY2FuY2VsJywKICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRmbGRzID0gYXJyYXkoKTsKc3dpdGNoKCAkZGVmblsndHlwZSddICkgewpjYXNlIDA6CiAgICAkZmxkc1tdID0gYXJyYXkoJHRoaXMtPkxhbmcoJ2xlbmd0aCcpLiR0aGlzLT5MYW5nKCdsZW5ndGhjb21tZW50JyksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2xlbmd0aCcsJGRlZm5bJ2xlbmd0aCddLDMsMykpOwogICAgJGZsZHNbXSA9IGFycmF5KCR0aGlzLT5MYW5nKCdtYXhsZW5ndGgnKSwKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfbWF4bGVuZ3RoJywkZGVmblsnbWF4bGVuZ3RoJ10sMywzKSk7CiAgICBicmVhazsKY2FzZSAxOiAvLyBjaGVja2JveAogICAgJHZhbCA9IChpc3NldCgkYXR0cmlic1snY2hlY2tlZCddKSk/JGF0dHJpYnNbJ2NoZWNrZWQnXTowOwogICAgJGZsZHNbXSA9IGFycmF5KCR0aGlzLT5MYW5nKCdwcm9tcHRfZGZsdF9jaGVja2VkJyksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9hdHRyaWJfY2hlY2tlZCcsMSwkdmFsKSk7CiAgICBicmVhazsKY2FzZSAyOgogICAgJGZsZHNbXSA9IGFycmF5KCR0aGlzLT5MYW5nKCdsZW5ndGgnKS4kdGhpcy0+TGFuZygnbGVuZ3RoY29tbWVudCcpLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9sZW5ndGgnLCRkZWZuWydsZW5ndGgnXSwzLDMpKTsKICAgICRmbGRzW10gPSBhcnJheSgkdGhpcy0+TGFuZygnbWF4bGVuZ3RoJyksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X21heGxlbmd0aCcsJGRlZm5bJ21heGxlbmd0aCddLDMsMykpOwogICAgYnJlYWs7CmNhc2UgMzoKICAgICR2YWwgPSAoaXNzZXQoJGF0dHJpYnNbJ3d5c2l3eWcnXSkpPyRhdHRyaWJzWyd3eXNpd3lnJ106MDsKICAgICRmbGRzW10gPSBhcnJheSgkdGhpcy0+TGFuZygncHJvcF90ZXh0YXJlYV93eXNpd3lnJyksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaW5wdXRfYXR0cmliX3d5c2l3eWcnLCcwJykuCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdpbnB1dF9hdHRyaWJfd3lzaXd5ZycsJzEnLCR2YWwpKTs7CiAgICBicmVhazsKY2FzZSA0OgpjYXNlIDU6CiAgICAkZmxkc1tdID0gYXJyYXkoJHRoaXMtPkxhbmcoJ3NlbG9wdGlvbnMnKSwKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCRzZWxvcHRpb25zLCdpbnB1dF9zZWxvcHRpb25zJykpOwogICAgYnJlYWs7CmNhc2UgNjoKICAgIC8vIG5vdGhpbmcgaGVyZQogICAgYnJlYWs7CmNhc2UgNzoKICAgICRmbGRzW10gPSBhcnJheSgkdGhpcy0+TGFuZygncmFkaW9vcHRpb25zJyksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkc2Vsb3B0aW9ucywnaW5wdXRfcmFkaW9vcHRpb25zJykpOwogICAgYnJlYWs7CmNhc2UgODogLyogZGF0ZSAqLwogICAgJGZsZHNbXSA9IGFycmF5KCR0aGlzLT5MYW5nKCdzdGFydF95ZWFyJykuJzonLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9hdHRyaWJfc3RhcnR5ZWFyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc3NldCgkYXR0cmlic1snc3RhcnR5ZWFyJ10pKT8kYXR0cmlic1snc3RhcnR5ZWFyJ106Jy01JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsNCkpOwogICAgJGZsZHNbXSA9IGFycmF5KCR0aGlzLT5MYW5nKCdlbmRfeWVhcicpLic6JywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfYXR0cmliX2VuZHllYXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzc2V0KCRhdHRyaWJzWydlbmR5ZWFyJ10pKT8kYXR0cmlic1snZW5keWVhciddOicrMTAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCw0KSk7CiAgICBicmVhazsKfQokc21hcnR5LT5hc3NpZ24oJ2ZpZWxkcycsJGZsZHMpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRwcm9wLnRwbCcpOwpyZXR1cm47CgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_quickfind.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYoICEgJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzJykgKSBleGl0OwoKJHRlcm0gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoICRfUkVRVUVTVCwgJ3Rlcm0nICk7CiRsaXN0ID0gbnVsbDsKaWYoIGlzX251bWVyaWMoICR0ZXJtICkgJiYgKGludCkgJHRlcm0gPiAwICkgewogICAgLy8gYXNzdW1lIGl0J3MgYSB1aWQuCiAgICAkc3FsID0gJ1NFTEVDVCBpZCwgdXNlcm5hbWUgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX3VzZXJzIFdIRVJFIENBU1QoaWQgQVMgQ0hBUikgTElLRSA/IExJTUlUIDEwJzsKICAgICRsaXN0ID0gJGRiLT5HZXRBcnJheSggJHNxbCwgWyAnJScuJHRlcm0uJyUnIF0gKTsKICAgIGRlYnVnX3RvX2xvZyggJGRiLT5zcWwgKTsKfSBlbHNlIHsKICAgIC8vIGFzc3VtZSBpdCdzIHBhcnQgb2YgdGhlIHVzZXJuYW1lCiAgICAkc3FsID0gJ1NFTEVDVCBpZCwgdXNlcm5hbWUgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX3VzZXJzIFdIRVJFIHVzZXJuYW1lIExJS0UgPyBMSU1JVCAxMCc7CiAgICAkbGlzdCA9ICRkYi0+R2V0QXJyYXkoICRzcWwsIFsgJyUnLiR0ZXJtLiclJyBdICk7Cn0KCmlmKCAhaXNfYXJyYXkoICRsaXN0ICkgfHwgIWNvdW50KCRsaXN0KSApIGV4aXQ7Cgokb3V0ID0gbnVsbDsKZm9yZWFjaCggJGxpc3QgYXMgJG9uZSApIHsKICAgICRvdXRbXSA9IFsgJ2xhYmVsJz0+JG9uZVsndXNlcm5hbWUnXS4nICgnLiRvbmVbJ2lkJ10uJyknLCAndmFsdWUnPT4kb25lWydpZCddIF07Cn0KXHh0X3V0aWxzOjpzZW5kX2FqYXhfYW5kX2V4aXQoICRvdXQgKTs=]]></data>
	</file>
	<file>
	  <filename>/action.admin_anonimize_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7CmlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICd1c2VycycgKSApIHJldHVybjsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7Cgp0cnkgewogICAgJHVpZCA9IFx4dF9wYXJhbTo6Z2V0X2ludCggJHBhcmFtcywgJ3VpZCcgKTsKCiAgICAvLyBnZW5lcmF0ZSBhIHVuaXF1ZSBkaXNhYmxlZCB1c2VybmFtZS4uLiBzb21ldGhpbmcgcHJldHR5IG11Y2ggZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUKICAgICRuZXdfdXNlcm5hbWUgPSAndScuc2hhMSggdGltZSgpLl9fRklMRV9fLnJhbmQoKSApOwogICAgJG5ld19wYXNzd29yZCA9IHNoYTEoIHNoYTEoIHRpbWUoKS5fX0ZJTEVfXy5yYW5kKCkgKSApOwoKICAgIC8vIHRvZG86IGNoZWNrIGlmIHRoZSBuZXcgdXNlcm5hbWUgZXhpc3RzCgogICAgLy8gc2VuZCBhIGhvb2sgYmVmb3JlIGFub25pbWl6aW5nCiAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soICdNQU1TOjpCZWZvcmVBbm9uaW1pemVVc2VyJywgJHVpZCApOwoKICAgICRmaWxlcyA9ICR0aGlzLT5HZXRVc2VyRmlsZXNGdWxsKCAkdWlkLCBUUlVFICk7CiAgICBpZiggJGZpbGVzICkgewogICAgICAgICRwYXRoID0gJHRoaXMtPmdldF91cGxvYWRfZGlybmFtZSgpOwogICAgICAgIGZvcmVhY2goICRmaWxlcyBhcyAkZmlsZSApIHsKICAgICAgICAgICAgJGZuID0gIiRwYXRoLyRmaWxlIjsKICAgICAgICAgICAgJHRuID0gIiRwYXRoL3RodW1iX3skZmlsZX0iOwogICAgICAgICAgICBpZiggaXNfZmlsZSgkZm4pICYmICFpc193cml0YWJsZSgkZm4pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJJbnN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byByZW1vdmUgdXNlciBmaWxlICRmaWxlIik7CiAgICAgICAgICAgIGlmKCBpc19maWxlKCR0bikgJiYgIWlzX3dyaXRhYmxlKCR0bikgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkluc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJlbW92ZSB1c2VyIHRodW1ibmFpbCBmb3IgJGZpbGUiKTsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJHRuKSApIHVubGluaygkdG4pOwogICAgICAgICAgICBpZiggaXNfZmlsZSgkZm4pICkgdW5saW5rKCRmbik7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGNsZWFyIGFsbCB0aGUgdXNlcnMgcHJvcGVydGllcwogICAgJHRoaXMtPkRlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCggJHVpZCApOwoKICAgIC8vIHdlIGFkanVzdCB0aGUgdXNlcm5hbWUsIHRoZSBwYXNzd29yZCwgYW5kIGRpc2FibGUgdGhlIGFjY291bnQKICAgICR0aGlzLT5TZXRVc2VyRGlzYWJsZWQoICR1aWQgKTsKICAgICR0aGlzLT5TZXRVc2VyKCAkdWlkLCAkbmV3X3VzZXJuYW1lLCAkbmV3X3Bhc3N3b3JkICk7CgogICAgLy8gZGVsZXRlIGFsbCB1c2VyIGhpc3RvcnkKICAgICRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2hpc3RvcnkgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJHVpZCBdICk7CgogICAgLy8gc2VuZCBhIGhvb2sgYWZ0ZXIgYW5vbmltaXppbmcKICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vayggJ01BTVM6OkFmdGVyQW5vbmltaXplVXNlcicsICR1aWQgKTsKCiAgICBhdWRpdCgkdWlkLCdNQU1TJywnVXNlciBhbm9uaW1pemVkJyk7CgogICAgJHRoaXMtPlNldE1lc3NhZ2UoICR0aGlzLT5MYW5nKCdtc2dfYW5vbmltaXplZCcpICk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_bulkactions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQp1c2UgXE1BTVNcdXNlcl9lZGl0X2Fzc2lzdGFudDsKaWYoICFpc3NldCggJGdDbXMgKSApIGV4aXQ7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwoKJGRiID0gXHh0X3V0aWxzOjpnZXRfZGIoKTsKdHJ5IHsKICAgICRqb2IgPSB0cmltKCRwYXJhbXNbJ2pvYiddKTsKICAgICRzZWwgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRwYXJhbXNbJ3VpZHMnXSkpOwogICAgJHNlbCA9IGFycmF5X3NsaWNlKCRzZWwsMCw1MDApOyAvLyBtYXhpbXVtIG9mIDUwMCBpZHMuCiAgICBpZiggIWlzX2FycmF5KCRzZWwpIHx8ICFjb3VudCgkc2VsKSApIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CgogICAgc3dpdGNoKCAkam9iICkgewogICAgY2FzZSAnZGVsZXRlJzoKICAgICAgICBpZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdyZW1vdmV1c2VycycpICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHNlbCBhcyAkb25ldWlkICkgewogICAgICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVVzZXJGdWxsKCAkb25ldWlkICk7CiAgICAgICAgICAgICAgICAkcGFybXMgPSBbICd1aWQnID0+ICRvbmV1aWQgXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0RlbGV0ZWQgJy5jb3VudCgkc2VsKS4nIHVzZXJzJyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkdGhpcy0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZGlzYWJsZSc6CiAgICBjYXNlICdlbmFibGUnOgogICAgICAgIGlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXR1c2VycycpICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHNlbCBhcyAkb25ldWlkICkgewogICAgICAgICAgICAgICAgJHVzZXIgPSBuZXcgdXNlcl9lZGl0X2Fzc2lzdGFudCgkb25ldWlkKTsKICAgICAgICAgICAgICAgICR1c2VyLT5pc19kaXNhYmxlZCA9ICgkam9iID09ICdkaXNhYmxlJykgPyBUUlVFIDogRkFMU0U7CiAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCBbICduYW1lJz0+JHVzZXItPnVzZXJuYW1lLCAnaWQnPT4kdXNlci0+aWQgXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnVG9nZ2xlZCBhY3RpdmUgc3RhdGUgb24gJy5jb3VudCgkc2VsKS4nIHVzZXJzJyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2ZvcmNlY2hzZXR0aW5ncyc6CiAgICAgICAgaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAgICAgICBmb3JlYWNoKCAkc2VsIGFzICRvbmV1aWQgKSB7CiAgICAgICAgICAgICAgICAkdXNlciA9IG5ldyB1c2VyX2VkaXRfYXNzaXN0YW50KCRvbmV1aWQpOwogICAgICAgICAgICAgICAgJHVzZXItPmZvcmNlX2NoYW5nZV9zZXR0aW5ncyA9IFRSVUU7CiAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCBbICduYW1lJz0+JHVzZXItPnVzZXJuYW1lLCAnaWQnPT4kdXNlci0+aWQgXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdTZXQgZm9yY2UgY2hhbmdlIHNldHRpbmdzIGZvciAnLmNvdW50KCRzZWwpLicgdXNlcnMnKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZm9yY2VjaHB3JzoKICAgICAgICBpZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgICAgIGZvcmVhY2goICRzZWwgYXMgJG9uZXVpZCApIHsKICAgICAgICAgICAgICAgICR1c2VyID0gbmV3IHVzZXJfZWRpdF9hc3Npc3RhbnQoJG9uZXVpZCk7CiAgICAgICAgICAgICAgICAkdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlID0gVFJVRTsKICAgICAgICAgICAgICAgICR1c2VyLT5zYXZlKCk7CiAgICAgICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uVXBkYXRlVXNlcicsIFsgJ25hbWUnPT4kdXNlci0+dXNlcm5hbWUsICdpZCc9PiR1c2VyLT5pZCBdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1NldCBmb3JjZSBjaGFuZ2UgcGFzc3dvcmQgZm9yICcuY291bnQoJHNlbCkuJyB1c2VycycpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICdzZXRwYXNzd29yZCc6CiAgICAgICAgLy8gcmVxdWlyZXMgYSBmb3JtCiAgICAgICAgaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkcGFzc3dkMSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwYXNzd29yZCcpOwogICAgICAgICAgICAgICAgJHBhc3N3ZDIgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmVwZWF0cGFzc3dvcmQnKTsKICAgICAgICAgICAgICAgIGlmKCAhJHRoaXMtPmlzVmFsaWRQYXNzd29yZCggJHBhc3N3ZDEgKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgICAgICAgICAgICBpZiggJHBhc3N3ZDEgIT0gJHBhc3N3ZDIgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKCiAgICAgICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRzZWwgYXMgJG9uZXVpZCApIHsKICAgICAgICAgICAgICAgICAgICAkdXNlciA9IG5ldyB1c2VyX2VkaXRfYXNzaXN0YW50KCRvbmV1aWQpOwogICAgICAgICAgICAgICAgICAgICR1c2VyLT5uZXdfcGFzc3dvcmQgPSAkcGFzc3dkMTsKICAgICAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywgWyAnbmFtZSc9PiR1c2VyLT51c2VybmFtZSwgJ2lkJz0+JHVzZXItPmlkIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICAgICAgJHRoaXMtPlNldG1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7CiAgICAgICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdCdWxrIHJlc2V0IHBhc3N3b3JkIHRvICcuY291bnQoJHNlbCkuJyB1c2VycycpOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsgLy8gZG9uZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnYWRtaW5fYnVsa19zZXRwYXNzd2QudHBsJyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCd1aWRzJywkcGFyYW1zWyd1aWRzJ10pOwogICAgICAgICR0cGwtPmFzc2lnbignam9iJywkam9iKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3NlbGVjdGVkJywkc2VsKTsKICAgICAgICAkdHBsLT5kaXNwbGF5KCk7CiAgICAgICAgcmV0dXJuOwoKICAgIGNhc2UgJ3NldGV4cGlyeSc6CiAgICAgICAgLy8gcmVxdWlyZXMgYSBmb3JtCiAgICAgICAgaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkbmV3X2V4cGlyZXMgPSBceHRfcGFyYW06OmdldF9zZXBhcmF0ZWRfZGF0ZSgkcGFyYW1zLCdleHBpcmVzJyk7CgogICAgICAgICAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkc2VsIGFzICRvbmV1aWQgKSB7CiAgICAgICAgICAgICAgICAgICAgJHVzZXIgPSBuZXcgdXNlcl9lZGl0X2Fzc2lzdGFudCgkb25ldWlkKTsKICAgICAgICAgICAgICAgICAgICAkdXNlci0+ZXhwaXJlcyA9ICRuZXdfZXhwaXJlczsKICAgICAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywgWyAnbmFtZSc9PiR1c2VyLT51c2VybmFtZSwgJ2lkJz0+JHVzZXItPmlkIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICAgICAgJHRoaXMtPlNldG1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7CiAgICAgICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdBZGp1c3RlZCB0aGUgZXhwaXJ5IGRhdGUgZm9yICcuY291bnQoJHNlbCkuJyB1c2VycycpOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsgLy8gZG9uZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnYWRtaW5fYnVsa19zZXRleHBpcnkudHBsJyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCd1aWRzJywkcGFyYW1zWyd1aWRzJ10pOwogICAgICAgICR0cGwtPmFzc2lnbignam9iJywkam9iKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3NlbGVjdGVkJywkc2VsKTsKICAgICAgICAkdHBsLT5kaXNwbGF5KCk7CiAgICAgICAgcmV0dXJuOwoKICAgIGNhc2UgJyc6CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgICAgICByZXR1cm47CgogICAgZGVmYXVsdDoKICAgICAgICAvLyBpbnZhbGlkIGpvYgogICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICB9CgogICAgJHRoaXMtPlNldG1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdGYWlsZWQgYnVsayB0cmFuc2FjdGlvbicpOwogICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICR0aGlzLT5TZXRFcnJvcigkZS0+R2V0TWVzc2FnZSgpKTsKfQoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteprop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnZGVsZXRlcHJvcCcgKSApIHJldHVybjsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3Byb3BlcnRpZXMnKTsKCnRyeSB7CiAgICAkcHJvcG5hbWUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncHJvcG5hbWUnKTsKICAgIGlmKCAhJHByb3BuYW1lICkgcmV0dXJuOwoKICAgIC8vIGdldCB0aGUgZGV0YWlscyBhYm91dCB0aGlzIHByb3BlcnR5CiAgICAvLyBtYWtlIHN1cmUgaXQncyBub3QgYSByZXF1aXJlZC9oaWRkZW4gcHJvcGVydHkgaW4gYW55IGdyb3VwIChPRkYgT1IgT1BUSU9OQUwgb25seSkKICAgIC8vIElGIElUIElTLCB3ZSBjYW5ub3QgZGVsZXRlIGl0Li4uIHNvIHdlIGp1c3QgdGhyb3cgYW4gZXhjZXB0aW9uIGFuZCBnZXQgb3V0YSBoZXJlCiAgICAkY2FuX2RlbGV0ZSA9IFRSVUU7CiAgICAkcHJvcGdyb3VwcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eUdyb3VwUmVsYXRpb25zKCRwcm9wbmFtZSk7CiAgICBpZiggY291bnQoJHByb3Bncm91cHMpICkgewogICAgICAgIGZvcmVhY2goICRwcm9wZ3JvdXBzIGFzICRyZWMgKSB7CiAgICAgICAgICAgIGlmKCAkcmVjWydyZXF1aXJlZCddID4gMSApIHsKICAgICAgICAgICAgICAgICRjYW5fZGVsZXRlID0gRkFMU0U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKCAhJGNhbl9kZWxldGUgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RlbGV0ZV9wcm9wZGVmbicpKTsKCiAgICAvLyBoYW5kbGUgc3VibWl0ICYgY2FuY2VsCiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkgewogICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgICB9CiAgICBpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogICAgICAgICRtYW1zX2NvbmZpcm0gPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ21hbXNfY29uZmlybScpOwogICAgICAgIGlmKCAhJG1hbXNfY29uZmlybSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWN0aW9uX25vdGNvbmZpcm1lZCcpKTsKCiAgICAgICAgLy8gbm93IHJlYWR5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPkRlbGV0ZVByb3BlcnR5RGVmbiggJHByb3BuYW1lICk7CiAgICAgICAgaWYoICEkcmVzdWx0ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVwcm9wJykpOwoKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdSZW1vdmVkIHByb3BlcnR5eSAnLiRwcm9wbmFtZSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdwcm9wZXJ0aWVzJyk7CiAgICB9CgogICAgLy8gZ2l2ZSB2ZXJ5dGhpbmcgdG8gc21hcnR5CiAgICAkdHlwZXMgPSAkdGhpcy0+dHlwZXM7CiAgICB1bnNldCgkdHlwZXNbJ2RhdGEnXSk7CiAgICAkZmllbGR0eXBlcyA9IGFycmF5X2ZsaXAoJHRoaXMtPmxhbmdpZnlLZXlzKCR0eXBlcykpOwoKICAgICRkZWZuID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbigkcHJvcG5hbWUpOwogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnYWRtaW5fZGVsZXRlcHJvcC50cGwnKTsKICAgICR0cGwtPmFzc2lnbignZmllbGR0eXBlcycsJGZpZWxkdHlwZXMpOwogICAgJHRwbC0+YXNzaWduKCdwcm9wbmFtZScsJHByb3BuYW1lKTsKICAgICR0cGwtPmFzc2lnbignZGVmbicsJGRlZm4pOwogICAgJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TVGFydCgkaWQsJ2FkbWluX2RlbGV0ZXByb3AnLCRyZXR1cm5pZCxhcnJheSgncHJvcG5hbWUnPT4kcHJvcG5hbWUpKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKfQoKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_doimport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwokaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7CmZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7IG9iX2VuZF9jbGVhbigpOyB9CmlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzJykgKSBleGl0OwokZmlsZSA9IHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZmlsZScpOwppZiggISRmaWxlICkgZXhpdDsKJGZpbGUgPSBUTVBfQ0FDSEVfTE9DQVRJT04uIi8kZmlsZSI7CmlmKCAhaXNfcmVhZGFibGUoJGZpbGUpICkgZXhpdDsKJG5vdyA9IHRpbWUoKTsKCiRpbWFnZURpciA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1I7CiRpbWFnZURpciAuPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdtYW1zJyk7CgokdG1wID0gJHRoaXMtPlhUR2V0UHJlZmVyZW5jZSgnaW1wb3J0cHJlZnMnKTsKaWYoICEkdG1wICkgZXhpdDsKJGltcG9ydHByZWZzID0gdW5zZXJpYWxpemUoJHRtcCk7CgokcHJvZ3Jlc3NfbWF4ID0gZnVuY3Rpb24oJHZhbCkgewogICAgJHZhbCA9IChpbnQpJHZhbDsKICAgICR2YWwgPSBtYXgoMSwkdmFsKTsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X3Byb2dyZXNzX21heCgnLiR2YWwuJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRwcm9ncmVzc19zZXQgPSBmdW5jdGlvbigkdmFsKSB7CiAgICAkdmFsID0gKGludCkkdmFsOwogICAgJHZhbCA9IG1heCgxLCR2YWwpOwogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5pbXBvcnRfcHJvZ3Jlc3Nfc2V0KCcuJHZhbC4nKTs8L3NjcmlwdD4nOwogICAgZmx1c2goKTsKfTsKJGltcG9ydF9zdGF0dXMgPSBmdW5jdGlvbigkbXNnKSB7CiAgICAkbXNnID0gdHJpbSgkbXNnKTsKICAgIGlmKCAhJG1zZyApIHJldHVybjsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X3N0YXR1cyhcJycuJG1zZy4nXCcpOzwvc2NyaXB0Pic7CiAgICBmbHVzaCgpOwp9OwokaW1wb3J0X3dhcm5pbmcgPSBmdW5jdGlvbigkbXNnKSB7CiAgICAkbXNnID0gdHJpbSgkbXNnKTsKICAgIGlmKCAhJG1zZyApIHJldHVybjsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X3dhcm5pbmcoXCcnLiRtc2cuJ1wnKTs8L3NjcmlwdD4nOwogICAgZmx1c2goKTsKfTsKJGltcG9ydF9lcnJvciA9IGZ1bmN0aW9uKCRtc2cpIHsKICAgICRtc2cgPSB0cmltKCRtc2cpOwogICAgaWYoICEkbXNnICkgcmV0dXJuOwogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5pbXBvcnRfZXJyb3IoXCcnLiRtc2cuJ1wnKTs8L3NjcmlwdD4nOwogICAgZmx1c2goKTsKfTsKJGltcG9ydF9lcnJvcl9saW5lID0gZnVuY3Rpb24oJGxpbmVudW0sJG1zZykgewogICAgJGxpbmVudW0gPSAoaW50KSRsaW5lbnVtOwogICAgJG1zZyA9IHRyaW0oJG1zZyk7CiAgICBpZiggISRtc2cgKSByZXR1cm47CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF9lcnJvcihcJycuJGxpbmVudW0uJzogJy4kbXNnLidcJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfZmluaXNoID0gZnVuY3Rpb24oKSB7CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF9maW5pc2goKTs8L3NjcmlwdD4nOwogICAgZmx1c2goKTsKfTsKJGNsZWFuX2ZpZWxkcyA9IGZ1bmN0aW9uKCR0aGVfYXJyYXkpIHsKICAgIGZvcmVhY2goICR0aGVfYXJyYXkgYXMgJiRlbGVtICkgewogICAgICAgICRlbGVtID0gdHJpbSh0cmltKCRlbGVtLCciXCcnKSk7CiAgICB9CiAgICByZXR1cm4gJHRoZV9hcnJheTsKfTsKJGdldF9maWVsZCA9IGZ1bmN0aW9uKCRjb2x1bW5zLCRmaWVsZG1hcCwkZmllbGQpIHsKICAgIGlmKCAhJGZpZWxkICkgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBmaWVsZCBzcGVjaWZpZWQgJy4kZmllbGQpOwogICAgJGlkeCA9IGFycmF5X3NlYXJjaCgkZmllbGQsJGZpZWxkbWFwKTsKICAgIGlmKCAkaWR4ID09PSBGQUxTRSApIHJldHVybjsKICAgIGlmKCBpc3NldCgkY29sdW1uc1skaWR4XSkgKSByZXR1cm4gJGNvbHVtbnNbJGlkeF07Cn07CiRhbGxfY29sdW1uc19lbXB0eSA9IGZ1bmN0aW9uKCRjb2x1bW5zKSB7CiAgICBmb3JlYWNoKCAkY29sdW1ucyBhcyAkY29sICkgewogICAgICAgIGlmKCAkY29sICkgcmV0dXJuIEZBTFNFOwogICAgfQogICAgcmV0dXJuIFRSVUU7Cn07Cgp0cnkgewogICAgJGZpbGVzaXplID0gZmlsZXNpemUoJGZpbGUpOwogICAgJGZoID0gZm9wZW4oJGZpbGUsJ3InKTsKICAgICRsaW5lX251bSA9IDA7CiAgICAkcHJvY2Vzc2VkX2xpbmVzID0gMDsKICAgICRoYXZlX2hlYWRlciA9IDA7CiAgICAkZmllbGRtYXAgPSBudWxsOwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgICRwcm9wZGVmbnMgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgJHJlbG5zID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICRncm91cHMgYXMgJGduYW1lID0+ICRnaWQgKSB7CiAgICAgICAgJHJlbG5zWyRnbmFtZV0gPSAkdGhpcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAgIH0KICAgICR0bXAgPSBtYXgoMSwoaW50KSR0aGlzLT5YVEdldFByZWZlcmVuY2UoJ2V4cGlyZWFnZV9tb250aHMnLDUyMCkpOwogICAgJGRmbHRfZXhwaXJ5ID0gc3RydG90aW1lKHNwcmludGYoJysgJWQgbW9udGhzJywkdG1wKSk7CiAgICAkZGZsdF9wYXNzd29yZCA9ICdjaGFuZ2VtZSc7CiAgICAkZXJyb3JfdXNlcnMgPSBhcnJheSgpOwogICAgJGFsbF91c2VycyA9IG51bGw7CiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeSgpOwogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgIHdoaWxlKCAhJHJzLT5FT0YgKSB7CiAgICAgICAgICAgICRmbGRzID0gJHJzLT5maWVsZHM7CiAgICAgICAgICAgICRhbGxfdXNlcnNbJGZsZHNbJ3VzZXJuYW1lJ11dID0gJGZsZHNbJ2lkJ107CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICB9CiAgICAkdG91Y2hlZF9naWRzID0gYXJyYXkoKTsKICAgICR0b3VjaGVkX3VpZHMgPSBhcnJheSgpOwoKICAgICRwcm9ncmVzc19tYXgoJGZpbGVzaXplKTsKICAgIHdoaWxlKCAhZmVvZigkZmgpICkgewogICAgICAgIHNldF90aW1lX2xpbWl0KDMwKTsKICAgICAgICAkcHJvZ3Jlc3Nfc2V0KGZ0ZWxsKCRmaCkpOwogICAgICAgICRyZWMgPSBmZ2V0Y3N2KCRmaCk7CiAgICAgICAgJGxpbmVfbnVtKys7CgogICAgICAgIGlmKCAhaXNfYXJyYXkoJHJlYykgfHwgIWNvdW50KCRyZWMpICkgY29udGludWU7CgogICAgICAgICRwcm9jZXNzZWRfbGluZXMrKzsKICAgICAgICBpZiggJHByb2Nlc3NlZF9saW5lcyA9PSAxICkgewogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBoZWFkZXIKICAgICAgICAgICAgLy8KICAgICAgICAgICAgaWYoICFzdGFydHN3aXRoKCRyZWNbMF0sJyMjJykgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWxlZm9ybWF0JykpOwogICAgICAgICAgICAkZmllbGRtYXAgPSAkcmVjOwogICAgICAgICAgICAkZmllbGRtYXBbMF0gPSBzdWJzdHIoJGZpZWxkbWFwWzBdLDIpOwogICAgICAgICAgICAkZmllbGRtYXAgPSAkY2xlYW5fZmllbGRzKCRmaWVsZG1hcCk7CiAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJ3VzZXJuYW1lJywkZmllbGRtYXApICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJ3VzZXJuYW1lJykpOwogICAgICAgICAgICBpZiggIWluX2FycmF5KCdncm91cG5hbWUnLCRmaWVsZG1hcCkgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRyZXF1aXJlZGZpZWxkJywnZ3JvdXBuYW1lJykpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vCiAgICAgICAgLy8gcHJvY2Vzc2luZyBhIGRhdGEgbGluZQogICAgICAgIC8vCiAgICAgICAgJGNvbHVtbnMgPSAkcmVjOwogICAgICAgICRjb2x1bW5zID0gJGNsZWFuX2ZpZWxkcygkY29sdW1ucyk7CgogICAgICAgIGlmKCAkYWxsX2NvbHVtbnNfZW1wdHkoJGNvbHVtbnMpICkgY29udGludWU7CgogICAgICAgIGlmKCBjb3VudCgkY29sdW1ucykgPCBjb3VudCgkZmllbGRtYXApIC0gMSB8fCBjb3VudCgkY29sdW1ucykgPiBjb3VudCgkZmllbGRtYXApICkgewogICAgICAgICAgICAkaW1wb3J0X2Vycm9yX2xpbmUoJGxpbmVfbnVtLCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRfY29sdW1uY291bnQnKSk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiggY291bnQoJGNvbHVtbnMpIDwgYXJyYXlfc2VhcmNoKCd1c2VybmFtZScsJGZpZWxkbWFwKSApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0X2NvbHVtbmNvdW50JykpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vIGdldCB0aGUgdXNlciByZWMuCiAgICAgICAgJHVzZXIgPSBhcnJheSgndXNlcm5hbWUnPT4nJywncGFzc3dvcmQnPT4nJywnZ25hbWUnPT5udWxsLCdleHBpcmVzJz0+bnVsbCwncHJvcHMnPT5hcnJheSgpKTsKICAgICAgICAkdXNlclsndXNlcm5hbWUnXSA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCd1c2VybmFtZScpOwogICAgICAgICR1c2VyWydwYXNzd29yZCddID0gJGdldF9maWVsZCgkY29sdW1ucywkZmllbGRtYXAsJ3R4dHBhc3N3b3JkJyk7CiAgICAgICAgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCdjcmVhdGVkYXRlJywkbm93KTsKICAgICAgICAkdXNlclsnZXhwaXJlcyddID0gJGdldF9maWVsZCgkY29sdW1ucywkZmllbGRtYXAsJ2V4cGlyZXMnLCRub3cpOwogICAgICAgICRnbmFtZXMgPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwnZ3JvdXBuYW1lJyk7CiAgICAgICAgaWYoICEkZ25hbWVzICkgewogICAgICAgICAgICAkaW1wb3J0X2Vycm9yX2xpbmUoJGxpbmVfbnVtLCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRncm91cG5hbWUnLCRnbmFtZSkpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgJGduYW1lcyA9ICRjbGVhbl9maWVsZHMoZXhwbG9kZSgnLCcsJGduYW1lcykpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZvcmVhY2goICRnbmFtZXMgYXMgJGduYW1lICkgewogICAgICAgICAgICAgICAgaWYoICFpc3NldCgkZ3JvdXBzWyRnbmFtZV0pICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJywkZ25hbWUpKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJHJlbG5zWyRnbmFtZV0pICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJywkZ25hbWUpKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkcmVsbnNbJGduYW1lXSBhcyAkcmVsbiApIHsKICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHJlcXVpcmVkIGZpZWxkcyBmb3IgdGhpcyBncm91cCBhcmUgYXZhaWxhYmxlIGluIHRoZSBmaWVsZCBtYXAKICAgICAgICAgICAgICAgICAgICBpZiggJHJlbG5bJ3JlcXVpcmVkJ10gPT0gMiAmJiAhaW5fYXJyYXkoJHJlbG5bJ25hbWUnXSwkZmllbGRtYXApICkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRyZXF1aXJlZGZpZWxkJywkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgZmllbGQgdG8gdGhlIHVzZXIgcmVjCiAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCRyZWxuWyduYW1lJ10pOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgJHVzZXJbJ3Byb3BzJ11bJHJlbG5bJ25hbWUnXV0gPSAkdG1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGlmKCAkdXNlclsndXNlcm5hbWUnXSApICRlcnJvcl91c2Vyc1tdID0gJHVzZXJbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIHVzZXIgcmVjLgogICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwndXNlcm5hbWUnKSApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJ3VzZXJuYW1lJykpOwogICAgICAgICAgICBpZiggJHVzZXJbJ3VzZXJuYW1lJ10gKSAkZXJyb3JfdXNlcnNbXSA9ICR1c2VyWyd1c2VybmFtZSddOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwnY3JlYXRlZGF0ZScpICkgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA9ICRub3c7CiAgICAgICAgaWYoICFpc19pbnQoJHVzZXJbJ2NyZWF0ZWRhdGUnXSkgKSAkdXNlclsnY3JlYXRlZGF0ZSddID0gc3RydG90aW1lKCR1c2VyWydjcmVhdGVkYXRlJ10pOwogICAgICAgIGlmKCAhaXNfaW50KCR1c2VyWydleHBpcmVzJ10pICkgJHVzZXJbJ2V4cGlyZXMnXSA9IHN0cnRvdGltZSgkdXNlclsnZXhwaXJlcyddKTsKICAgICAgICAvLyB5ZXAsIGFnYWluLgogICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwnY3JlYXRlZGF0ZScpICkgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA9ICRub3c7CiAgICAgICAgaWYoICF4dF91dGlsczo6Z2V0X3BhcmFtKCR1c2VyLCdleHBpcmVzJykgKSAkdXNlclsnZXhwaXJlcyddID0gJGRmbHRfZXhwaXJ5OwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZvcmVhY2goICRnbmFtZXMgYXMgJGduYW1lICkgewogICAgICAgICAgICAgICAgZm9yZWFjaCggJHJlbG5zWyRnbmFtZV0gYXMgJHJlbG4gKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbCA9IHh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXJbJ3Byb3BzJ10sJHJlbG5bJ25hbWUnXSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICRyZWxuWydyZXF1aXJlZCddID09IDIgJiYgISR2YWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsaWRhdGVzIHRoYXQgYSByZXF1aXJlZCBmaWVsZCBmb3Igb3VyIGRlc3RpbmF0aW9uIGdyb3VwIGlzIGZpbGxlZCBpbgogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRyZXF1aXJlZGZpZWxkJywkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKCAkdmFsICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGEgdmFsdWUgZm9yIHRoaXMgcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHByb3BlcnR5IGlzIGEgZHJvcGRvd24gb3IgbXVsdGlzZWxlY3QsIG1ha2Ugc3VyZSB0aGUgdmFsdWUgaXMgdmFsaWQuCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCggJHByb3BkZWZuc1skcmVsblsnbmFtZSddXVsndHlwZSddICkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfREFURToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpc19pbnQoJHZhbCkgJiYgJHZhbCA8IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggc3RydG90aW1lKCR2YWwpIDwgMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWVsZHZhbHVlJywkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHRoaXM6OkZJRUxEVFlQRV9FTUFJTDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfZW1haWwoJHZhbCkgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCIkdmFsIGlkIG5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfZW1haWwoJHZhbCkgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWVsZHZhbHVlJywkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHRoaXM6OkZJRUxEVFlQRV9JTUFHRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgZW5zdXJlIHRoYXQgdGhlIGltYWdlIGV4aXN0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlc3BlYyA9ICRpbWFnZURpci4nLycuJHZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhZmlsZV9leGlzdHMoJGZpbGVzcGVjKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkdGhpczo6RklFTERUWVBFX01VTFRJU0VMRUNUOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdHMgPSBhcnJheV9mbGlwKCR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWxzID0gJGNsZWFuX2ZpZWxkcyhleHBsb2RlKCcsJywkdmFsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdmFscyBhcyAkb25ldmFsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJG9wdHNbJG9uZXZhbF0pICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfRFJPUERPV046CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHRoaXM6OkZJRUxEVFlQRV9SQURJT0JVVE5TOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdHMgPSBhcnJheV9mbGlwKCR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJG9wdHNbJHZhbF0pICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgaWYoICR1c2VyWyd1c2VybmFtZSddICkgJGVycm9yX3VzZXJzW10gPSAkdXNlclsndXNlcm5hbWUnXTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvLyBkbyB0aGUgYWRkIG9yIHVwZGF0ZS4KICAgICAgICAkdWlkID0gbnVsbDsKICAgICAgICBpZiggaXNzZXQoJGFsbF91c2Vyc1skdXNlclsndXNlcm5hbWUnXV0pICkgewogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHVzZXIuCiAgICAgICAgICAgICR1aWQgPSAkYWxsX3VzZXJzWyR1c2VyWyd1c2VybmFtZSddXTsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5TZXRVc2VyKCR1aWQsJHVzZXJbJ3VzZXJuYW1lJ10sJHVzZXJbJ3Bhc3N3b3JkJ10sJHVzZXJbJ2V4cGlyZXMnXSk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHRtcCkgfHwgJHRtcFswXSA9PT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAkaW1wb3J0X2Vycm9yX2xpbmUoJGxpbmVfbnVtLCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnR1cGRhdGV1c2VyJywkdG1wWzFdKSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggJHVzZXJbJ2NyZWF0ZWRhdGUnXSAmJiAkdXNlclsnY3JlYXRlZGF0ZSddIDwgKCRub3cgLSA5MCkgKSB7CiAgICAgICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgU0VUIGNyZWF0ZWRhdGUgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgICAgICAgICAkdG1wID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCR1c2VyWydjcmVhdGVkYXRlJ10pLCInIik7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCwgWyAkdG1wLCAkdWlkIF0gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZ2lkbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICRnbmFtZXMgYXMgJGduYW1lICkgewogICAgICAgICAgICAgICAgJGdpZGxpc3RbXSA9ICRncm91cHNbJGduYW1lXTsKICAgICAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJGdyb3Vwc1skZ25hbWVdLCR0b3VjaGVkX2dpZHMpICkgJHRvdWNoZWRfZ2lkc1tdID0gJGdyb3Vwc1skZ25hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyR3JvdXBzKCR1aWQsJGdpZGxpc3QpOwogICAgICAgICAgICAkdGhpcy0+U2V0VXNlclByb3BlcnRpZXMoJHVpZCwkdXNlclsncHJvcHMnXSk7CiAgICAgICAgICAgICRpbXBvcnRfc3RhdHVzKCd1cGRhdGVkIHVzZXIgJy4kdXNlclsndXNlcm5hbWUnXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBpbnNlcnQgdGhlIHVzZXIKICAgICAgICAgICAgaWYoICF4dF91dGlsczo6Z2V0X3BhcmFtKCR1c2VyLCdwYXNzd29yZCcpICkgJHVzZXJbJ3Bhc3N3b3JkJ10gPSAkZGZsdF9wYXNzd29yZDsKICAgICAgICAgICAgaWYoICF4dF91dGlsczo6Z2V0X3BhcmFtKCR1c2VyLCdleHBpcmVzJykgKSAkdXNlclsnZXhwaXJlcyddID0gJGRmbHRfZXhwaXJ5OwogICAgICAgICAgICAkdG1wID0gJHRoaXMtPkFkZFVzZXIoJHVzZXJbJ3VzZXJuYW1lJ10sJHVzZXJbJ3Bhc3N3b3JkJ10sJHVzZXJbJ2V4cGlyZXMnXSk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHRtcCkgfHwgJHRtcFswXSA9PT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAkaW1wb3J0X2Vycm9yX2xpbmUoJGxpbmVfbnVtLCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRpbnNlcnR1c2VyJywkdG1wWzFdKSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdWlkID0gKGludCkgJHRtcFsxXTsKICAgICAgICAgICAgaWYoICR1c2VyWydjcmVhdGVkYXRlJ10gJiYgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA8ICgkbm93IC0gOTApICkgewogICAgICAgICAgICAgICAgJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBjcmVhdGVkYXRlID0gPyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAgICAgJHRtcCA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkdXNlclsnY3JlYXRlZGF0ZSddKSwiJyIpOwogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsIFsgJHRtcCwgJHVpZCBdICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGdpZGxpc3QgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgICRnaWRsaXN0W10gPSAkZ3JvdXBzWyRnbmFtZV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPlNldFVzZXJHcm91cHMoJHVpZCwkZ2lkbGlzdCk7CiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyUHJvcGVydGllcygkdWlkLCR1c2VyWydwcm9wcyddKTsKICAgICAgICAgICAgJGltcG9ydF9zdGF0dXMoJ2NyZWF0ZWQgdXNlciAnLiR1c2VyWyd1c2VybmFtZSddKTsKICAgICAgICAgICAgLy8gdG9kbzogc3RhdHVzIG1zZwogICAgICAgIH0KCiAgICAgICAgLy8gc2V0IHByb2dyZXNzCiAgICAgICAgJHByb2dyZXNzX3NldChmdGVsbCgkZmgpKTsKCiAgICAgICAgLy8gc2V0IHRoZSB1c2VyCiAgICAgICAgaWYoICR1aWQgJiYgIWluX2FycmF5KCR1aWQsJHRvdWNoZWRfdWlkcykgKSAkdG91Y2hlZF91aWRzW10gPSAkdWlkOwoKICAgICAgICAvLyBkZWxldGUgdGhlIHVzZXIgZnJvbSB0aGUgY29tcGxldGUgdXNlciBsaXN0LgogICAgICAgIHVuc2V0KCRhbGxfdXNlcnNbJHVzZXJbJ3VzZXJuYW1lJ11dKTsKCiAgICB9IC8vIGZlb2YKCiAgICAvLyBkZWxldGUgdXNlcnMgd2hvIGFyZSBtZW1iZXIgb2YgdGhlIGltcG9ydGVkIGdyb3VwLCAoYXNzdW1pbmcgd2Ugb25seSBsaXN0ZWQgb25lIGdyb3VwKSBidXQKICAgIC8vIG5vdCBsaXN0ZWQgaW4gdGhpcyBsaXN0LgogICAgJHRvdWNoZWRfdWlkcyA9IGFycmF5X3VuaXF1ZSgkdG91Y2hlZF91aWRzKTsKICAgIGlmKCBjb3VudCgkdG91Y2hlZF9naWRzKSA9PSAxICYmIGNvdW50KCR0b3VjaGVkX3VpZHMpICYmICRpbXBvcnRwcmVmc1snZGVsZXRlX3VzZXJzJ10gKSB7CiAgICAgICAgLy8gZ290dGEgZ2V0IHRoZSB1aWRzIG9mIGFsbCBvZiB0aGUgdXNlcnMgaW4gdGhpcyBncm91cC4KICAgICAgICAkcXVlcnkgPSBuZXcgbWFtc191c2VyX3F1ZXJ5KCk7CiAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUElELCR0b3VjaGVkX2dpZHNbMF0pOwogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgICRkZWxfdWlkcyA9IGFycmF5KCk7CiAgICAgICAgd2hpbGUoICEkcnMtPkVPRigpICkgewogICAgICAgICAgICBpZiggIWluX2FycmF5KCRycy0+ZmllbGRzWydpZCddLCR0b3VjaGVkX3VpZHMpICYmICFpbl9hcnJheSgkcnMtPmZpZWxkc1snaWQnXSwkZGVsX3VpZHMpICkgewogICAgICAgICAgICAgICAgJGRlbF91aWRzW10gPSAkcnMtPmZpZWxkc1snaWQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBnb3R0YSBkZWxldGUgcmVtYWluaW5nIHVzZXJzCiAgICAgICAgaWYoIGNvdW50KCRkZWxfdWlkcykgKSB7CiAgICAgICAgICAgICRwcm9ncmVzc19tYXgoY291bnQoJGRlbF91aWRzKSk7CiAgICAgICAgICAgICRuID0gMDsKICAgICAgICAgICAgZm9yZWFjaCggJGRlbF91aWRzIGFzICR1aWQgKSB7CiAgICAgICAgICAgICAgICBzZXRfdGltZV9saW1pdCgyMCk7CiAgICAgICAgICAgICAgICBpZiggJHVpZCA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVVzZXJGdWxsKCAkdWlkICk7CiAgICAgICAgICAgICAgICAgICAgJGltcG9ydF9zdGF0dXMoJHRoaXMtPkxhbmcoJ2ltcG9ydF9kZWxldGVkdXNlcicsJHVpZCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG4rKzsKICAgICAgICAgICAgICAgICRwcm9ncmVzc19zZXQoJG4pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRpbXBvcnRfZmluaXNoKCk7Cn0KY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICRpbXBvcnRfZXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KZXhpdDsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_edituser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIG1hbXNfdXRpbHM7CnVzZSB4dF91dGlsczsKdXNlIHh0X3BhcmFtOwoKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3VzZXJzJyApICkgcmV0dXJuOwoKLy8gdGhpcyBhY3Rpb24gaGFuZGxlcyB0aGUgZmlyc3QgcG9ydGlvbiBvZiB0aGUgYWRkL2VkaXQgdXNlciB3aXphcmQuCgokZGVmYXVsdF9ncm91cCA9IChpbnQpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJyk7Cgp0cnkgewogICAgJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkgewogICAgICAgIC8vIHdlJ3JlIGNhbmNlbGxpbmcuCiAgICAgICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ19jYW5jZWxsZWQnKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgIH0KCiAgICAkdXNlcl9pZCA9IHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VzZXJfaWQnKTsKICAgICR1c2VyID0gdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAgIGlmKCAkdXNlciApIHsKICAgICAgICAvLyB3ZSBhcmUgaGVyZSBmcm9tIHRoZSAnYmFjaycgb3BlcmF0aW9uLiBvciBhbiBlcnJvciBpbiBzdGVwMi4KICAgICAgICBpZiggJHVzZXItPmlkICE9ICR1c2VyX2lkICkgJHVzZXIgPSBudWxsOwogICAgfQogICAgaWYoICEkdXNlciApICR1c2VyID0gbmV3IHVzZXJfZWRpdF9hc3Npc3RhbnQoJHVzZXJfaWQpOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gZmlsbCB0aGUgZGF0YSBmcm9tIHRoZSBmb3JtCiAgICAgICAgICAgICR1c2VyLT5uZXdfdXNlcm5hbWUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3VzZXJuYW1lJykpOwogICAgICAgICAgICAkdXNlci0+bmV3X3Bhc3N3b3JkID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwYXNzd29yZCcpKTsKICAgICAgICAgICAgJHVzZXItPnJlcGVhdF9wYXNzd29yZCA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoeHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmVwZWF0cGFzc3dvcmQnKSk7CiAgICAgICAgICAgICR1c2VyLT5leHBpcmVzID0geHRfcGFyYW06OmdldF9zZXBhcmF0ZWRfZGF0ZSgkcGFyYW1zLCdleHBpcmVzJyk7CiAgICAgICAgICAgICR1c2VyLT5pc19kaXNhYmxlZCA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdkaXNhYmxlZCcpOwogICAgICAgICAgICAkdXNlci0+Zm9yY2VfY2hhbmdlX3NldHRpbmdzID0geHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ2ZvcmNlX2Noc2V0dGluZ3MnKTsKICAgICAgICAgICAgJHVzZXItPmZvcmNlX3Bhc3N3b3JkX2NoYW5nZSA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdmb3JjZV9uZXdwdycpOwogICAgICAgICAgICAkdXNlci0+bXVzdF92YWxpZGF0ZSA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdtdXN0X3ZhbGlkYXRlJyk7CiAgICAgICAgICAgICR1c2VyLT5zZXRfZ3JvdXBzKHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnbWVtYmVyb2YnKSk7CgogICAgICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgZGF0YQogICAgICAgICAgICAkdXNlci0+dmFsaWRhdGUoKTsKCiAgICAgICAgICAgIC8vIHNhdmUgdGhlIGRhdGEgKHRlbXBvcmFyaWx5KQogICAgICAgICAgICAkdXNlci0+c3RvcmUoKTsKCiAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIHRoZSBuZXh0IHN0ZXAuCiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2VkaXR1c2VyMicsJHJldHVybmlkKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQogICAgfQoKICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXR1c2VyLnRwbCcpOwogICAgJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2VkaXR1c2VyJywkcmV0dXJuaWQsWyAndXNlcl9pZCcgPT4gJHVzZXJfaWQgXSkpOwogICAgJHRwbC0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0cGwtPmFzc2lnbigndXNlcicsJHVzZXIpOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfdXNlcm5hbWUnLCRhdXRoX2NvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCkpOwogICAgJHRwbC0+YXNzaWduKCd1bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJykpOwogICAgJHRwbC0+YXNzaWduKCdtYXhfdW5mbGRsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ21heF9wd2ZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKTsKICAgICR0cGwtPmFzc2lnbigncmVxdWlyZV9vbmVncm91cCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSk7CgogICAgJGdyb3VwcyA9IG51bGw7CiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldEdyb3VwTGlzdEZ1bGwoKTsKICAgIGlmKCAkZGVmYXVsdF9ncm91cCA8IDEgJiYgY291bnQoJGdyb3VwcykgKSB7CiAgICAgICAgJGdpZHMgPSBhcnJheV9rZXlzKCRncm91cHMpOwogICAgICAgICRkZWZhdWx0X2dyb3VwID0gJGdpZHNbMF07CiAgICB9CiAgICAkdHBsLT5hc3NpZ24oJ2RlZmF1bHRfZ3JvdXAnLCRkZWZhdWx0X2dyb3VwKTsKICAgICR0cGwtPmFzc2lnbignZ3JvdXBzJywkZ3JvdXBzKTsKCiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_edituser2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAndXNlcnMnICkgKSByZXR1cm47CgokdXNlcl9pZCA9ICR1c2VyID0gbnVsbDsKdHJ5IHsKICAgICR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApIHsKICAgICAgICAvLyBjbGVhciBhbnl0aGluZyBpbiB0aGUgc2Vzc2lvbiwgYnV0IGRvbid0IG5lZWQgdGhlIGRhdGEuCiAgICAgICAgXE1BTVNcdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX2NhbmNlbGxlZCcpKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgfQoKICAgICR1c2VyID0gXE1BTVNcdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAgIGlmKCAhJHVzZXIgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgcmVzdG9yZSB1c2VyIGVkaXQgaW5mbyBmcm9tIHNlc3Npb24nKTsKICAgICR1c2VyX2lkID0gJHVzZXItPmlkOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2JhY2snXSkgKSB7CiAgICAgICAgJHVzZXItPnN0b3JlKCk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fZWRpdHVzZXInLCRyZXR1cm5pZCwgWyAndXNlcl9pZCcgPT4gJHVzZXJfaWQgXSApOwogICAgfQoKICAgICRhbGxkZWZucyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAkZmllbGRzID0gW107CiAgICAkcHJvcGVydGllcyA9IFxtYW1zX3V0aWxzOjpnZXRfcHJvcGVydGllc19mb3JfZ3JvdXBzKCR1c2VyLT5nZXRfZ3JvdXBzKCkpOwogICAgIyByZW1vdmUgZW1wdHkgcHJvcHMuLi4gSURLIHdoeSB0aGVyZSBhcmUgYW55IGJ1dCBkbyBtYWtlIHRoaXMgcHVrZS4uLiBuZWVkIHRvIHJldmlzaXQgKEpNKQogICAgJHByb3BlcnRpZXMgPSBhcnJheV9maWx0ZXIoJHByb3BlcnRpZXMpOwogICAgCiAgICBpZiggIWNvdW50KCRwcm9wZXJ0aWVzKSApCiAgICB7CiAgICAgICAgLy8gdGhlcmUgYXJlIG5vIHByb3BlcnRpZXMgdG8gdGhpbmsgb2YuCiAgICAgICAgLy8gc2ltdWxhdGUgc3VibWlzc2lvbi4KICAgICAgICAkcGFyYW1zWydzdWJtaXQnXSA9IDE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIGZvcmVhY2goICRwcm9wZXJ0aWVzIGFzICRwcm9wICkKICAgICAgewogICAgICAgICRwcm9wX25hbWUgPSAkcHJvcFsnbmFtZSddOwogICAgICAgIGlmKCAhaXNzZXQoJGFsbGRlZm5zWyRwcm9wX25hbWVdKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0RlZmluaXRpb24gZm9yIHByb3BlcnR5ICcuJHByb3BfbmFtZS4nIG5vdCBmb3VuZCcpOwogICAgICAgIC8vaWYoICRhbGxkZWZuc1skcHJvcF9uYW1lXVsnZW5jcnlwdCddICYmICR1c2VyX2lkID4gMCApIGNvbnRpbnVlOyAgLy8gY2Fubm90IGVkaXQgZW5jcnlwdGVkIHByb3BlcnRpZXMuCiAgICAgICAgJGZpZWxkc1skcHJvcF9uYW1lXSA9IG5ldyBwcm9wZXJ0eV9lZGl0b3JfZGVmbigkYWxsZGVmbnNbJHByb3BfbmFtZV0sJHByb3AsJHVzZXIpOwogICAgICB9CiAgICB9CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsKICAgICAgICAvKiBoYW5kbGUgc3VibWlzc2lvbiAqLwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vIG5vdGUsIHdlIHVzZSB0aGUgc2V0IHZhbHVlIG1ldGhvZCBvbiB0aGUgZmllbGQuLi4gaXQgd2lsbCBhY3R1YWxseSBtb2RpZnkgdGhlIHVzZXIKICAgICAgICAgICAgLy8gYW5kIHNldCB0aGUgZGF0YS4KICAgICAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkcHJvcF9uYW1lID0+ICRmaWVsZCApIHsKICAgICAgICAgICAgICAgICRrZXkgPSAncHJvcF8nLiRwcm9wX25hbWU7CiAgICAgICAgICAgICAgICAka2V5MiA9ICdwcm9wZGVsXycuJHByb3BfbmFtZTsKICAgICAgICAgICAgICAgICR2YWwgPSBceHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCRrZXkpOwogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+dHlwZSA9PSA4ICkgJHZhbCA9IFx4dF9wYXJhbTo6Z2V0X3NlcGFyYXRlZF9kYXRlKCRwYXJhbXMsJGtleSk7CiAgICAgICAgICAgICAgICBlbHNlIGlmKCAkZmllbGQtPnR5cGUgPT0gNiApIHsKICAgICAgICAgICAgICAgICAgICAvLyBpbWFnZQogICAgICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWyRrZXkyXSkgKSAkZmllbGQtPmNsZWFyX3ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgJHZhbCA9ICRpZC4ka2V5OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZpZWxkLT5zZXRfdmFsdWUoJHZhbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHBhc3MgMiAuLiB2YWxpZGF0ZSB0aGUgaW5wdXQgKHJlcXVpcmVkIGZpZWxkcywgdXBsb2FkIHR5cGVzIGFuZCBzby1vbikKICAgICAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkcHJvcF9uYW1lID0+ICRmaWVsZCApIHsKICAgICAgICAgICAgICAgICRmaWVsZC0+dmFsaWRhdGUoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gcGFzcyAyLjEgLi4uIGVuc3VyZSB0aGF0IGlmIG11c3RfdmFsaWRhdGUgaXMgb24sIHRoYXQgd2UgaGF2ZSBhbiBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgIC8vIGZvciB0aGlzIHVzZXIuCiAgICAgICAgICAgIGlmKCAkdXNlci0+bXVzdF92YWxpZGF0ZSAmJiAhJHVzZXItPmNhbl92YWxpZGF0ZSgpICkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl92YWxpZGF0ZV9pbnN1ZmZpY2llbnRpbmZvJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaXNfYWRkID0gKCR1c2VyLT5pZCA8IDEpID8gVFJVRSA6IEZBTFNFOwogICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwoKICAgICAgICAgICAgLy8gcGFzcyAzIC4uIGRvIHBvc3QgcHJvb2Nlc3NpbmcuCiAgICAgICAgICAgIGZvcmVhY2goICRmaWVsZHMgYXMgJHByb3BfbmFtZSA9PiAkZmllbGQgKSB7CiAgICAgICAgICAgICAgICAkZmllbGQtPnBvc3Rwcm9jZXNzKCR1c2VyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWxsIGRvbmUuLi4ganVzdCBnb3R0YSBkbyBzb21lIG5vdGlmaWNhdGlvbnMgYW5kIGV2ZW50cy4KICAgICAgICAgICAgJGV2dF9wYXJtcyA9IFsgJ25hbWUnID0+ICR1c2VyLT51c2VybmFtZSwgJ2lkJyA9PiAkdXNlci0+aWQgXTsKICAgICAgICAgICAgaWYoICRpc19hZGQgKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdBZGRlZCB1c2VyICcuJHVzZXItPnVzZXJuYW1lKTsKICAgICAgICAgICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdXNlci0+aWQsJ2FkbWluIGFkZCB1c2VyJyk7CiAgICAgICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uQ3JlYXRlVXNlcicsICRldnRfcGFybXMgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcmFkZGVkJykpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1c2VyX2lkLCdhZG1pbiBjaGFuZ2Ugc2V0dGluZ3MnKTsKICAgICAgICAgICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwkdGhpcy0+R2V0TmFtZSgpLCdNb2RpZmllZCB1c2VyICcuJHVzZXItPnVzZXJuYW1lKTsKCiAgICAgICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uVXBkYXRlVXNlcicsICRldnRfcGFybXMgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcm1vZGlmaWVkJykpOwoKICAgICAgICAgICAgICAgIGlmKCAkdXNlci0+bXVzdF92YWxpZGF0ZSApIHsKICAgICAgICAgICAgICAgICAgICAvLyB1c2VyIHNhdmUgcmVzZXRzIHRoZSB0ZW1wIGNvZGUuCiAgICAgICAgICAgICAgICAgICAgJGhlbHBlciA9ICR0aGlzLT5nZXRfdmVyaWZpY2F0aW9uX2Fzc2lzdGFudCgpOwogICAgICAgICAgICAgICAgICAgICRjb2RlID0gJGhlbHBlci0+c2V0X2ZvcmNlX3ZlcmlmeSggJHVzZXItPmlkICk7CiAgICAgICAgICAgICAgICAgICAgJGhlbHBlci0+c2VuZCggJHVzZXItPmlkLCAkY29kZSApOwogICAgICAgICAgICAgICAgICAgIGF1ZGl0KCAkdXNlci0+aWQsICdNQU1TJywgJ1VzZXIgc2VudCB2ZXJpZmljYXRpb24gZW1haWwnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXR1c2VyMi50cGwnKTsKICAgICR0cGwtPmFzc2lnbigncmVxdWlyZWRfZmllbGRfY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsJ2JsdWUnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2hpZGRlbl9maWVsZF9jb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsJ2JsdWUnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVyaWVkX2ZpZWxkX21hcmtlcicsJyonKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2hpZGRlbl9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfbWFya2VyJywnISEnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2ZpZWxkcycsJGZpZWxkcyk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXInLCR1c2VyKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKICAgICR1c2VyLT5zdG9yZSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgaWYoICR1c2VyICkgJHVzZXItPnN0b3JlKCk7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9lZGl0dXNlcicsJHJldHVybmlkLCBbICd1c2VyX2lkJyA9PiAkdXNlcl9pZCBdICk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/action.admin_enable_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIGV4aXQ7CgokdWlkID0gKGludCkgeHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCd1aWQnKTsKJHN0YXRlID0gKGludCkgeHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdzdGF0ZScsMCk7CiRzdGF0ZSA9ICEkc3RhdGU7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwoKdHJ5IHsKICAgICR0aGlzLT5TZXRVc2VyRGlzYWJsZWQoJHVpZCwkc3RhdGUpOwogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ191c2VyX3N0YXRlX2NoYW5nZWQnKSk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTs=]]></data>
	</file>
	<file>
	  <filename>/action.admin_exportgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCAkZ0NtcyApICkgcmV0dXJuOwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0Z3JvdXBzJykgKSByZXR1cm47CgppZiggIWlzc2V0KCRwYXJhbXNbJ2dyb3VwX2lkJ10pICkgcmV0dXJuOwoKJGdyb3VwaWQgPSAkcGFyYW1zWydncm91cF9pZCddOwoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2dyb3VwcycpOwppZiggIW1hbXNfdXRpbHM6OnVzaW5nX3N0ZF9jb25zdW1lcigpICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfbm90c3VwcG9ydGVkJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7Cn0KCiRncnBfaW5mbyA9ICR0aGlzLT5HZXRHcm91cEluZm8oICRncm91cGlkICk7CmlmKCAhaXNfYXJyYXkoICRncnBfaW5mbyApIHx8ICFpc3NldCgkZ3JwX2luZm9bJ2lkJ10pICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGdyb3VwaWQnLCRncm91cGlkKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICByZXR1cm47Cn0KCiRncnBfcHJvcF9yZWxzID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncm91cGlkICk7CmlmKCAhaXNfYXJyYXkoICRncnBfcHJvcF9yZWxzICkgfHwgIWNvdW50KCRncnBfcHJvcF9yZWxzKSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX25vcmVsYXRpb25zJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgcmV0dXJuOwp9CgokZmlsZW5hbWUgPSAkZ3JwX2luZm9bJ2dyb3VwbmFtZSddLicueG1sJzsKJHNtYXJ0eS0+YXNzaWduKCdncm91cF9uYW1lJywkZ3JwX2luZm9bJ2dyb3VwbmFtZSddKTsKJHNtYXJ0eS0+YXNzaWduKCdncm91cF9kZXNjcmlwdGlvbicsJGdycF9pbmZvWydncm91cGRlc2MnXSk7CiRwcm9wZXJ0aWVzID0gYXJyYXkoKTsKZm9yZWFjaCggJGdycF9wcm9wX3JlbHMgYXMgJG9uZXJlbCApIHsKICAkZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oICRvbmVyZWxbJ25hbWUnXSApOwogIGlmKCAhJGRlZm4gKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb3Bub3Rmb3VuZCcsJG9uZXJlbFsnbmFtZSddKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICRvYmotPm5hbWUgPSAkb25lcmVsWyduYW1lJ107CiAgJG9iai0+c29ydG9yZGVyID0gJG9uZXJlbFsnc29ydF9rZXknXTsKICAkb2JqLT5zdGF0dXMgPSAkb25lcmVsWydyZXF1aXJlZCddOwogICRvYmotPmxvc3R1bmZsYWcgPSAkb25lcmVsWydsb3N0dW5mbGFnJ107CiAgJG9iai0+cHJvbXB0ID0gJGRlZm5bJ3Byb21wdCddOwogICRvYmotPnR5cGUgPSAkZGVmblsndHlwZSddOwogICRvYmotPmxlbmd0aCA9ICRkZWZuWydsZW5ndGgnXTsKICAkb2JqLT5tYXhsZW5ndGggPSAkZGVmblsnbWF4bGVuZ3RoJ107CiAgaWYoICRvYmotPnR5cGUgPT0gNCB8fCAkb2JqLT50eXBlID09IDUgKSB7CiAgICAkb3BzID0gYXJyYXkoKTsKICAgICRzZWxlY3Rfb3BzID0gJHRoaXMtPkdldFNlbGVjdE9wdGlvbnMoICRvYmotPm5hbWUsIDIgKTsKICAgIGZvcmVhY2goICRzZWxlY3Rfb3BzIGFzICRzZWxfb3AgKSB7CiAgICAgICRvcCA9IG5ldyBTdGRDbGFzczsKICAgICAgJG9wLT5uYW1lID0gdHJpbSgkc2VsX29wWydvcHRpb25fbmFtZSddKTsKICAgICAgJG9wLT50ZXh0ID0gdHJpbSgkc2VsX29wWydvcHRpb25fdGV4dCddKTsKICAgICAgJG9wc1tdID0gJG9wOwogICAgfQogICAgJG9iai0+b3B0aW9ucyA9ICRvcHM7CiAgfQoKICAkcHJvcGVydGllc1tdID0gJG9iajsKfQokc21hcnR5LT5hc3NpZ24oJ3Byb3BlcnRpZXMnLCRwcm9wZXJ0aWVzKTsKCmlmKGluaV9nZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJykpIGluaV9zZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJywgJ09mZicpOwpzZXRfdGltZV9saW1pdCg5OTk5KTsKCi8vIGdldCB0aGUgZGF0YQokaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7IApmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQokZGF0YSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2dyb3VwX3htbC50cGwnKTsKCmhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKaGVhZGVyKCdFeHBpcmVzOiAwJyk7CmhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7CmhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwpoZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsKaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwpoZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJGZpbGVuYW1lXCIiICk7CmhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CmhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJGRhdGEpKTsKZWNobyAkZGF0YTsKCkBmbHVzaCgpOyBAb2JfZmx1c2goKTsgQG9iX2ZsdXNoKCk7Ci8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_export_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKCiRvZmZzZXQgPSAwOwokYmF0Y2hzaXplID0gNTA7CiRjb3VudCA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgQ09VTlQoRElTVElOQ1QgdS5pZCkgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgdScpOwppZiggJGNvdW50ID09IDAgKSB7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9leHBvcnRfbm91c2VycycpKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CiR1cXVlcnkgPSAnU0VMRUNUIERJU1RpTkNUIHUuaWQsdS51c2VybmFtZSx1LmV4cGlyZXMsdS5jcmVhdGVkYXRlCiAgICAgICAgICAgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgdSBPUkRFUiBCWSB1LmlkJzsKCiRncm91cHMgPSBhcnJheV9mbGlwKCR0aGlzLT5HZXRHcm91cExpc3QoKSk7CiRwcm9wZGVmbnMgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwokcmVsbnMgPSBhcnJheSgpOwpmb3JlYWNoKCAkZ3JvdXBzIGFzICRnaWQgPT4gJGduYW1lICkgewogICRyZWxuc1skZ2lkXSA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRnaWQpOwp9CgovLyBidWlsZCB0aGUgZmllbGQgbWFwCiRmaWVsZG1hcCA9IGFycmF5KCd1c2VybmFtZSc9Pm51bGwsJ2V4cGlyZXMnPT5udWxsLCdjcmVhdGVkYXRlJz0+bnVsbCwnZ3JvdXBuYW1lJz0+bnVsbCk7CmZvcmVhY2goICRyZWxucyBhcyAkZ2lkID0+ICRyZWxuX2xpc3QgKSB7CiAgICBmb3JlYWNoKCAkcmVsbl9saXN0IGFzICRyZWxuICkgewogICAgICAgIGlmKCAhaXNzZXQoJHByb3BkZWZuc1skcmVsblsnbmFtZSddXSkgKSBjb250aW51ZTsKICAgICAgICBpZiggJHByb3BkZWZuc1skcmVsblsnbmFtZSddXVsnZW5jcnlwdCddICkgY29udGludWU7CiAgICAgICAgaWYoICRyZWxuWydyZXF1aXJlZCddID09IDIgfHwgJHJlbG5bJ3JlcXVpcmVkJ10gPT0gMSB8fCAkcmVsblsncmVxdWlyZWQnXSA9PSAzICkgJGZpZWxkbWFwWyRyZWxuWyduYW1lJ11dID0gbnVsbDsKICAgIH0KfQoKLy8gY2xlYXIgYWxsIGJ1ZmZlcnMKLy8gZXhwb3J0IHRoZSBoZWFkZXIgbGluZQokZm49Im1hbXMtIi5kYXRlKCdZLW0tZCcpLicuY3N2JzsKJGhlYWRlciA9ICcjIycuaW1wbG9kZSgnLCcsYXJyYXlfa2V5cygkZmllbGRtYXApKTsKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQpoZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsKaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2ZvcmNlLWRvd25sb2FkJyk7CmhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Jy4kZm4pOwplY2hvICRoZWFkZXIuIlxuIjsKCndoaWxlKCAkb2Zmc2V0IDwgJGNvdW50ICkgewogICAgJGRicl91ID0gJGRiLT5TZWxlY3RMaW1pdCgkdXF1ZXJ5LCRiYXRjaHNpemUsJG9mZnNldCk7CgogICAgLy8gZ2V0IHRoZSB1c2VyIGlkcy4KICAgICR1aWRzID0gYXJyYXkoKTsKICAgIHdoaWxlKCAhJGRicl91LT5FT0YoKSApIHsKICAgICAgICAkdG1wID0gKGludCkkZGJyX3UtPmZpZWxkc1snaWQnXTsKICAgICAgICBpZiggJHRtcCA+IDAgJiYgIWluX2FycmF5KCR0bXAsJHVpZHMpICkgJHVpZHNbXSA9ICR0bXA7CiAgICAgICAgJGRicl91LT5Nb3ZlTmV4dCgpOwogICAgfQogICAgJGRicl91LT5Nb3ZlRmlyc3QoKTsKCiAgICAvLyBnZXQgdGhlIGJlbG9uZ3Mgc3R1ZmYgZm9yIHRoZXNlIHVzZXJzCiAgICAkYnF1ZXJ5ID0gJ1NFTEVDVCB1c2VyaWQsZ3JvdXBpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19iZWxvbmdzCiAgICAgICAgICAgICBXSEVSRSB1c2VyaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHVpZHMpLicpIE9SREVSIEJZIHVzZXJpZCxncm91cGlkJzsKICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRicXVlcnkpOwogICAgJGJlbG9uZ3MgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHRtcCBhcyAkYnJvdyApIHsKICAgICAgICBpZiggIWlzc2V0KCRiZWxvbmdzWyRicm93Wyd1c2VyaWQnXV0pICkgJGJlbG9uZ3NbJGJyb3dbJ3VzZXJpZCddXSA9IGFycmF5KCk7CiAgICAgICAgJGJlbG9uZ3NbJGJyb3dbJ3VzZXJpZCddXVtdID0gJGJyb3dbJ2dyb3VwaWQnXTsKICAgIH0KCiAgICAvLyBnZXQgdGhlIHByb3BlcnRpZXMgZm9yIHRoZXNlIHVzZXJzCiAgICAkcHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMKICAgICAgICAgICAgIFdIRVJFIHVzZXJpZCBJTiAoJy5pbXBsb2RlKCcsJywkdWlkcykuJykgT1JERVIgQlkgdXNlcmlkLHRpdGxlJzsKICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRwcXVlcnkpOwogICAgJHByb3BlcnRpZXMgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHRtcCBhcyAkcHJvdyApIHsKICAgICAgICBpZiggIWlzc2V0KCRwcm9wZXJ0aWVzWyRwcm93Wyd1c2VyaWQnXV0pICkgJHByb3BlcnRpZXNbJHByb3dbJ3VzZXJpZCddXSA9IGFycmF5KCk7CiAgICAgICAgJHByb3BlcnRpZXNbJHByb3dbJ3VzZXJpZCddXVtdID0gYXJyYXkoJHByb3dbJ3RpdGxlJ10sJHByb3dbJ2RhdGEnXSk7CiAgICB9CgogICAgd2hpbGUoICEkZGJyX3UtPkVPRigpICkgewogICAgICAgIC8vIGFkZCBwcmltYXJ5IGZpZWxkcwogICAgICAgICR1aWQgPSAkZGJyX3UtPmZpZWxkc1snaWQnXTsKICAgICAgICAkcm93ID0gJGZpZWxkbWFwOwogICAgICAgICRyb3dbJ3VzZXJuYW1lJ10gPSAkZGJyX3UtPmZpZWxkc1sndXNlcm5hbWUnXTsKICAgICAgICAkcm93WydleHBpcmVzJ10gPSAkZGJyX3UtPmZpZWxkc1snZXhwaXJlcyddOwogICAgICAgICRyb3dbJ2NyZWF0ZWRhdGUnXSA9ICRkYnJfdS0+ZmllbGRzWydjcmVhdGVkYXRlJ107CgogICAgICAgIC8vIGFkZCBncm91cG5hbWUocykKICAgICAgICBpZiggaXNzZXQoJGJlbG9uZ3NbJHVpZF0pICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGJlbG9uZ3NbJHVpZF0gYXMgJGdpZCApIHsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkZ3JvdXBzWyRnaWRdKSApICR0bXBbXSA9ICRncm91cHNbJGdpZF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJvd1snZ3JvdXBuYW1lJ10gPSBpbXBsb2RlKCcsJywkdG1wKTsKICAgICAgICB9CgogICAgICAgIC8vIGFkZCBwcm9wZXJ0aWVzCiAgICAgICAgaWYoIGlzc2V0KCRwcm9wZXJ0aWVzWyR1aWRdKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHByb3BlcnRpZXNbJHVpZF0gYXMgJHJlYyApIHsKICAgICAgICAgICAgICAgIGlmKCBhcnJheV9rZXlfZXhpc3RzKCRyZWNbMF0sJHJvdykgKSAkcm93WyRyZWNbMF1dID0gJHJlY1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkZGJyX3UtPk1vdmVOZXh0KCk7CgogICAgICAgIC8vIG91dHB1dCB0aGUgcm93LgogICAgICAgIGVjaG8geHRfYXJyYXk6OmltcGxvZGVfcXVvdGVkKGFycmF5X3ZhbHVlcygkcm93KSkuIlxuIjsKICAgIH0KICAgICRvZmZzZXQgKz0gJGJhdGNoc2l6ZTsKfSAvLyB3aGlsZQoKZXhpdCgpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_importgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCAkZ0NtcyApICkgcmV0dXJuOwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0Z3JvdXBzJykgKSByZXR1cm47CgpmdW5jdGlvbiBjaGVja19ncm91cF9jb21wbGV0ZSggJiRncnAgKQp7CiAgaWYoICFpc19hcnJheSggJGdycCApICkgcmV0dXJuIGZhbHNlOwogIGlmKCFpc3NldCgkZ3JwWyduYW1lJ10pIHx8IGVtcHR5KCRncnBbJ25hbWUnXSkpIHJldHVybiBmYWxzZTsKCiAgLy8gcGFzc2VkCiAgaWYoICFpc3NldCgkZ3JwWydwcm9wZXJ0aWVzJ10pIHx8ICFpc19hcnJheSgkZ3JwWydwcm9wZXJ0aWVzJ10pIHx8IChjb3VudCgkZ3JwWydwcm9wZXJ0aWVzJ10pID09IDApICkgcmV0dXJuIGZhbHNlOwoKICBmb3JlYWNoKCAkZ3JwWydwcm9wZXJ0aWVzJ10gYXMgJG9uZXByb3AgKSB7CiAgICBpZiggIWNoZWNrX3Byb3BlcnR5X2NvbXBsZXRlKCAkb25lcHJvcCApICkgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KCgpmdW5jdGlvbiBjaGVja19wcm9wZXJ0eV9jb21wbGV0ZSggJiRwcm9wICkKewogIGlmKCAhaXNfYXJyYXkoICRwcm9wICkgKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWyduYW1lJ10pIHx8IGVtcHR5KCRwcm9wWyduYW1lJ10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWyd0eXBlJ10pIHx8ICRwcm9wWyd0eXBlJ10gPT0gJycpIHJldHVybiBGQUxTRTsKICBpZighaXNzZXQoJHByb3BbJ3Byb21wdCddKSB8fCBlbXB0eSgkcHJvcFsncHJvbXB0J10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWydzb3J0b3JkZXInXSkgfHwgJHByb3BbJ3NvcnRvcmRlciddID09PSAnJyApIHJldHVybiBGQUxTRTsKICBpZighaXNzZXQoJHByb3BbJ3N0YXR1cyddKSB8fCBlbXB0eSgkcHJvcFsnc3RhdHVzJ10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWydsb3N0dW5mbGFnJ10pIHx8IGVtcHR5KCRwcm9wWydsb3N0dW5mbGFnJ10pKSByZXR1cm4gRkFMU0U7CgogIGlmKGlzc2V0KCRwcm9wWydsZW5ndGgnXSkpIHsKICAgIGlmKGVtcHR5KCRwcm9wWydsZW5ndGgnXSkpIHJldHVybiBGQUxTRTsKICAgIGlmKGludHZhbCgkcHJvcFsnbGVuZ3RoJ10pID09IDApIHJldHVybiBGQUxTRTsKICB9CiAgaWYoaXNzZXQoJHByb3BbJ21heGxlbmd0aCddKSkgewogICAgaWYoZW1wdHkoJHByb3BbJ21heGxlbmd0aCddKSkgcmV0dXJuIEZBTFNFOwogICAgaWYoaW50dmFsKCRwcm9wWydtYXhsZW5ndGgnXSkgPT0gMCkgcmV0dXJuIEZBTFNFOwogIH0KCiAgJHR5cGUgPSBpbnR2YWwoJHByb3BbJ3R5cGUnXSk7CiAgaWYoICR0eXBlID4gOSB8fCAkdHlwZSA8IDAgKSByZXR1cm4gRkFMU0U7CiAgaWYoICR0eXBlID09IDQgfHwgJHR5cGUgPT0gNSApIHsKICAgIC8vIGNoZWNrIGZvciBvcHRpb25zCiAgICBpZiggIWlzc2V0KCRwcm9wWydvcHRpb25zJ10pIHx8ICFpc19hcnJheSgkcHJvcFsnb3B0aW9ucyddKSApIHJldHVybiBGQUxTRTsKCiAgICBmb3JlYWNoKCAkcHJvcFsnb3B0aW9ucyddIGFzICRvbmVvcCApIHsKICAgICAgaWYoICFpc3NldCgkb25lb3BbJ25hbWUnXSkgfHwgIWlzc2V0KCRvbmVvcFsndGV4dCddKSApIHJldHVybiBGQUxTRTsKICAgIH0KICB9CgogIHJldHVybiBUUlVFOwp9CgppZiggIW1hbXNfdXRpbHM6OnVzaW5nX3N0ZF9jb25zdW1lcigpICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfbm90c3VwcG9ydGVkJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7Cn0KCmlmKCBpc3NldCggJHBhcmFtc1snY2FuY2VsJ10gKSApIHsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwp9CgppZiggaXNzZXQoICRwYXJhbXNbJ3N1Ym1pdCddICkgKSB7CiAgLy8KICAvLyBTdWJtaXQgd2FzIHByZXNzZWQKICAvLwogIGlmKCAhaXNzZXQoICRfRklMRVNbJGlkLid4bWxmaWxlJ10gKSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ191cGxvYWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogIH0KICAkdGhlZmlsZSA9JiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddOwogIGlmKCAkdGhlZmlsZVsndHlwZSddICE9ICd0ZXh0L3htbCcgfHwgJHRoZWZpbGVbJ3NpemUnXSA9PSAwIHx8ICR0aGVmaWxlWydlcnJvciddICE9IDAgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICB9CgogIC8vCiAgLy8gV2UgZ290IGFuIFhNTCBmaWxlIChob3BlIGl0J3MgdGhlIHJpZ2h0IG9uZQogIC8vIG5vdyB3ZSBjYW4gdHJ5IHRvIHBhcnNlIGl0CiAgLy8KCiAgJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkdGhlZmlsZVsndG1wX25hbWUnXSApOwogICRwYXJzZXIgPSB4bWxfcGFyc2VyX2NyZWF0ZSgpOwogICRyZXQgPSB4bWxfcGFyc2VfaW50b19zdHJ1Y3QoICRwYXJzZXIsICR4bWwsICR2YWwsICR4dCApOwogIHhtbF9wYXJzZXJfZnJlZSggJHBhcnNlciApOwoKICBpZiggJHJldCA9PSAwICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyAxJyk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogIH0KCiAgLy8KICAvLyBXZSBoYXZlIHNvbWUga2luZCBvZiB2YWxpZCBYTUwKICAvLwogICRvbmVwcm9wZXJ0eSA9IGFycmF5KCk7CiAgJG9uZW9wdGlvbiA9IGFycmF5KCk7CiAgJGhhdmVfY29tcGxldGVfZ3JvdXAgPSBmYWxzZTsKICAkZ3JwX2luZm8gPSBhcnJheSgpOwogIGZvcmVhY2goICR2YWwgYXMgJGVsZW0gKSB7CiAgICAkdmFsdWUgPSAoaXNzZXQoJGVsZW1bJ3ZhbHVlJ10pPyRlbGVtWyd2YWx1ZSddOicnKTsKICAgICR0eXBlID0gKGlzc2V0KCRlbGVtWyd0eXBlJ10pPyRlbGVtWyd0eXBlJ106JycpOwogICAgJHRhZyA9IHN0cnRvbG93ZXIoJGVsZW1bJ3RhZyddKTsKICAgICRmbGQgPSBzdWJzdHIoJHRhZyxzdHJwb3MoJHRhZywnXycpKzEpOwoKICAgIHN3aXRjaCggJHRhZyApIHsKICAgIGNhc2UgJ21hbXNfZ3JvdXAnOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7CglpZiggIWNoZWNrX2dyb3VwX2NvbXBsZXRlKCRncnBfaW5mbykgKSB7CgkgIC8vIGFuIGVycm9yIHRoYXQgd2Ugc2hvdWxkIG5ldmVyIGdldAoJICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2JhZF94bWwnKS4nIDInKTsKCSAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKCSAgcmV0dXJuOwoJfQoJLy8gd2Ugc2hvdWxkIGhhdmUgYSBjb21wbGV0ZSBncm91cCBhdCB0aGlzIHBvaW50CgkkaGF2ZV9jb21wbGV0ZV9ncm91cCA9IHRydWU7CglicmVhazsKICAgICAgfQoKICAgIGNhc2UgJ2dycF9uYW1lJzoKICAgIGNhc2UgJ2dycF9kZXNjcmlwdGlvbic6CiAgICAgIHsKCWlmKCAkdHlwZSAhPSAnY29tcGxldGUnICYmICR0eXBlICE9ICdjbG9zZScgKSBjb250aW51ZTsKCWlmKCBpc3NldCgkZ3JwX2luZm9bJGZsZF0pICkgewoJICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKCSAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyAzJyk7CgkgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CgkgIHJldHVybjsKCX0KCSRncnBfaW5mb1skZmxkXSA9ICR2YWx1ZTsKCWJyZWFrOwogICAgICB9CgoKICAgIGNhc2UgJ3Byb3BlcnR5JzoKICAgICAgewoJaWYoICR0eXBlICE9ICdjb21wbGV0ZScgJiYgJHR5cGUgIT0gJ2Nsb3NlJyApIGNvbnRpbnVlOwoJaWYoICFjaGVja19wcm9wZXJ0eV9jb21wbGV0ZSgkb25lcHJvcGVydHkpICkgewoJICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKCSAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyA0Jyk7CgkgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CgkgIHJldHVybjsKCX0KCWlmKCAhaXNzZXQoJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10pICkgJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10gPSBhcnJheSgpOwoJJGdycF9pbmZvWydwcm9wZXJ0aWVzJ11bXSA9ICRvbmVwcm9wZXJ0eTsKCSRvbmVwcm9wZXJ0eSA9IGFycmF5KCk7CglicmVhazsKICAgICAgfQoKICAgIGNhc2UgJ3Byb3BfbmFtZSc6CiAgICBjYXNlICdwcm9wX3Byb21wdCc6CiAgICBjYXNlICdwcm9wX3ZhbHVlJzoKICAgIGNhc2UgJ3Byb3BfdHlwZSc6CiAgICBjYXNlICdwcm9wX2xlbmd0aCc6CiAgICBjYXNlICdwcm9wX21heGxlbmd0aCc6CiAgICBjYXNlICdwcm9wX3NvcnRvcmRlcic6CiAgICBjYXNlICdwcm9wX3N0YXR1cyc6CiAgICBjYXNlICdwcm9wX2xvc3R1bmZsYWcnOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7CglpZiggaXNzZXQoICRvbmVwcm9wZXJ0eVskZmxkXSApICkgewoJICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKCSAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyA1Jyk7CgkgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CgkgIHJldHVybjsKCX0KCSRvbmVwcm9wZXJ0eVskZmxkXSA9ICR2YWx1ZTsKCWJyZWFrOwogICAgICB9CgogICAgY2FzZSAncHJvcF9vcHRpb24nOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7Cgkkb25lcHJvcGVydHlbJ29wdGlvbnMnXVtdID0gJG9uZW9wdGlvbjsKCSRvbmVvcHRpb24gPSBhcnJheSgpOwoJYnJlYWs7CiAgICAgIH0KCiAgICBjYXNlICdvcF9uYW1lJzoKICAgIGNhc2UgJ29wX3RleHQnOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7Cgkkb25lb3B0aW9uWyRmbGRdID0gJHZhbHVlOwoJYnJlYWs7CiAgICAgIH0KICAgIH0gLy8gc3dpdGNoCiAgfSAvLyBmb3JlYWNoCgogIC8vCiAgLy8gSWYgd2UgZ290IGhlcmUsIHdlIHBhcnNlZCB0aGUgeG1sIGZpbGUgcHJvcGVybHkKICAvLyBhbmQgaXQgbG9va3MgZ29vZC4KICAvLwoKICAvLyBJZiB0aGUgbmV3bmFtZSBpcyBzZXQsIHdlJ2xsIHVzZSB0aGF0CiAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X25ld25hbWUnXSkgJiYgJHBhcmFtc1snaW5wdXRfbmV3bmFtZSddICE9ICcnICkgJGdycF9pbmZvWyduYW1lJ10gPSAkcGFyYW1zWydpbnB1dF9uZXduYW1lJ107CgogIGlmKCAkdGhpcy0+R3JvdXBFeGlzdHNCeU5hbWUoICRncnBfaW5mb1snbmFtZSddICkgKSB7CiAgICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZ3JvdXBleGlzdHMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgaWYoICFpc3NldCgkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSkgfHwgIWlzX2FycmF5KCRncnBfaW5mb1sncHJvcGVydGllcyddKSB8fCAoY291bnQoJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10pID09IDApICkgewogICAgLy8gbm8gcHJvcGVydGllcz8KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcHJvcGVydGllcycpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQoKICAvLyBOb3cgYWRkIHRoZSBwcm9wZXJ0aWVzCiAgLy8gKGZpcnN0IHNjYW4gZm9yIG5hbWVzKQogICRwYXNzZWQgPSB0cnVlOwogIGZvcmVhY2goICRncnBfaW5mb1sncHJvcGVydGllcyddIGFzICRvbmVwcm9wICkgewogICAgJHJlcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oICRvbmVwcm9wWyduYW1lJ10gKTsKICAgIGlmKCBpc19hcnJheSgkcmVzKSApIHsKICAgICAgJHBhc3NlZCA9IGZhbHNlOwogICAgICBicmVhazsKICAgIH0KICB9CiAgaWYoICEkcGFzc2VkICkgewogICAgLy8gbm8gcHJvcGVydGllcz8KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZHVwX3Byb3BlcnRpZXMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgLy8KICAvLyBOb3cgcmVhbGx5IGFkZCB0aGVtCiAgLy8KICBmb3JlYWNoKCAkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSBhcyAkb25lcHJvcCApIHsKICAgICRyZXMgPSAkdGhpcy0+QWRkUHJvcGVydHlEZWZuKCRvbmVwcm9wWyduYW1lJ10sICRvbmVwcm9wWydwcm9tcHQnXSwgJG9uZXByb3BbJ3R5cGUnXSwgJG9uZXByb3BbJ2xlbmd0biddLCAkb25lcHJvcFsnbWF4bGVuZ3RoJ10pOwogICAgaWYoIGlzX2FycmF5KCAkcmVzICkgJiYgJHJlc1swXSA9PT0gRkFMU0UgKSB7CiAgICAgIC8vIGZvciBzb21lIGR1bWIgcmVhc29uLCB3ZSBzdGlsbCBjb3VsZG4ndCBpbnNlcnQKICAgICAgLy8gdGhlIHByb3BlcnR5CiAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudGFkZHByb3AnKSk7CiAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiggJG9uZXByb3BbJ3R5cGUnXSA9PSA0IHx8ICRvbmVwcm9wWyd0eXBlJ10gPT0gNSApIHsKICAgICAgLy8gaXQncyBhIHNlbGVjdCB0eXBlCiAgICAgICRvcHMgPSBhcnJheSgpOwogICAgICBmb3JlYWNoKCAkb25lcHJvcFsnb3B0aW9ucyddIGFzICRvbmVvcCApIHsKCSRvcHNbXSA9ICRvbmVvcFsndGV4dCddLic9Jy4kb25lb3BbJ25hbWUnXTsKICAgICAgfQogICAgICAkcmVzID0gJHRoaXMtPkFkZFNlbGVjdE9wdGlvbnMoICRvbmVwcm9wWyduYW1lJ10sICRvcHMgKTsKICAgICAgaWYoICRyZXNbMF0gPT0gRkFMU0UgKSB7CgkvLyBmb3Igc29tZSBkdW1iIHJlYXNvbiwgd2Ugc3RpbGwgY291bGRuJ3QgaW5zZXJ0CgkvLyB0aGUgcHJvcGVydHkKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudGFkZHByb3AnKS4nIDInKTsKCSR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CglyZXR1cm47CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFdvb2hvbywgdGhlIHByb3BlcnRpZXMgd2VyZSBhZGRlZAogIC8vIE5vdyB0byBhZGQgdGhlIGdyb3VwIGl0c2VsZi4KICAkcmVzID0gJHRoaXMtPkFkZEdyb3VwKCRncnBfaW5mb1snbmFtZSddLCRncnBfaW5mb1snZGVzY3JpcHRpb24nXSk7CiAgaWYoIGlzX2FycmF5KCAkcmVzICkgJiYgJHJlc1swXSA9PT0gRkFMU0UgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRhZGRncm91cCcpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQogICRncnBpZCA9ICRyZXNbMV07CgogIC8vIGFuZCBhc3NvY2lhdGUgdGhlIHByb3BlcnRpZXMgd2l0aCB0aGUgZ3JvdXAKICAkZXJyb3IgPSBmYWxzZTsKICBmb3JlYWNoKCAkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSBhcyAkb25lcHJvcCApIHsKICAgIC8vIGlmIGl0J3MgYW4gb3B0aW9uIHR5cGUgKHR5cGUgNCBvciA1KSB0aGVuCiAgICAvLyBhZGQgdGhlIG9wdGlvbnMKICAgICRyZXMgPSAkdGhpcy0+QWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRvbmVwcm9wWyduYW1lJ10sICRvbmVwcm9wWydzb3J0b3JkZXInXSwgJG9uZXByb3BbJ2xvc3R1bmZsYWcnXSwgJG9uZXByb3BbJ3N0YXR1cyddICk7CiAgICBpZiggJHJlc1swXSA9PT0gRkFMU0UgKSAkZXJyb3IgPSB0cnVlOwogIH0KICBpZiggJGVycm9yID09IHRydWUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRhZGRncm91cHJlbHMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKfSAvLyBpZgoKLy8gUHJvdmlkZSBhIHNpbXBsZSBmb3JtIHRoYXQgYWxsb3dzIHBlb3BsZSB0byBjaG9vc2UgdGhlIGZpbGUgdG8gaW1wb3J0CiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5faW1wb3J0Z3JvdXAnLCRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZmlsZW5hbWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfaW1wb3J0eG1sZmlsZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWxlbmFtZScsJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3htbGZpbGUnLCcnLDQwKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X25ld25hbWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfbmV3Z3JvdXBuYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X25ld25hbWUnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9uZXduYW1lJykpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdpbXBvcnRncm91cC50cGwnKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_from_feu.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdzaXRlcHJlZnMnKSApIHJldHVybjsNCg0KJHBhcm1zWydlcnJvciddID0gMDsNCiRwYXJtc1snbWVzc2FnZSddID0gJ1N1Y2Nlc3MhJzsNCg0KJHBhcm1zID0gYXJyYXkoKTsNCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydkb19pbXBvcnQnXSkgKQ0Kew0KICAkciA9IFxNQU1TXGZldV9pbXBvcnRlcjo6cnVuKCk7DQogICRwYXJtc1snZXJyb3InXSA9ICRyWzFdWzBdOw0KICAkcGFybXNbJ21lc3NhZ2UnXSA9ICRyWzFdWzFdOw0KfQ0KZWxzZQ0Kew0KICAkcGFybXNbJ2Vycm9yJ10gPSAxOw0KICAkcGFybXNbJ21lc3NhZ2UnXSA9ICdObyBkaXJlY3QgYWNjZXNzISc7DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9zZXR0aW5ncycsICRyZXR1cm5pZCwgJHBhcm1zKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwoKaWYoICFtYW1zX3V0aWxzOjp1c2luZ19zdGRfY29uc3VtZXIoKSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX25vdHN1cHBvcnRlZCcpKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogIHJldHVybjsKfQoKJGltcG9ydHByZWZzID0gYXJyYXkoJ2RlbGV0ZV91c2Vycyc9PjAsJ2RlbGltaXRlcic9PicsJyk7CiR0bXAgPSAkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdpbXBvcnRwcmVmcycpOwppZiggJHRtcCApICR0bXAgPSB1bnNlcmlhbGl6ZSgkdG1wKTsKaWYoIGlzX2FycmF5KCR0bXApICkgJGltcG9ydHByZWZzID0gJHRtcDsKCmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgdHJ5IHsKICAgICRfZnAgPSAkaWQuJ2ZpbGUnOwogICAgLy8gY2hlY2sgdGhlIGZpbGUKICAgIGlmKCAhaXNzZXQoJF9GSUxFUykgfHwgIWlzc2V0KCRfRklMRVNbJF9mcF0pIHx8ICRfRklMRVNbJF9mcF1bJ25hbWUnXSA9PSAnJyApIHsKICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcHJvYmxlbV91cGxvYWQnKSk7CiAgICB9CiAgICBpZiggJF9GSUxFU1skX2ZwXVsnc2l6ZSddID09IDAgfHwgJF9GSUxFU1skX2ZwXVsnZXJyb3InXSAhPSAwICkgewogICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9wcm9ibGVtX3VwbG9hZCcpKTsKICAgIH0KICAgICRmaCA9IGZvcGVuKCRfRklMRVNbJF9mcF1bJ3RtcF9uYW1lJ10sJ3InKTsKICAgIGlmKCAhJGZoICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3VwbG9hZCcpKTsKICAgIHdoaWxlKCAhZmVvZigkZmgpICkgewogICAgICAkbGluZSA9IHh0X3V0aWxzOjpmZ2V0cygkZmgpOwogICAgICAkbGluZSA9IHRyaW0oJGxpbmUpOwogICAgICBpZiggISRsaW5lICkgY29udGludWU7CiAgICAgIGlmKCAhc3RhcnRzd2l0aCgkbGluZSwnIyMnKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpbGVmb3JtYXQnKSk7CiAgICAgICRsaW5lID0gdHJpbShzdWJzdHIoJGxpbmUsMikpOwogICAgICAkZmllbGRzID0geHRfYXJyYXk6OnNtYXJ0X2V4cGxvZGUoJGxpbmUsJGltcG9ydHByZWZzWydkZWxpbWl0ZXInXSk7CiAgICAgIGlmKCBjb3VudCgkZmllbGRzKSA8IDEgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWxlZm9ybWF0JykpOwogICAgICBicmVhazsKICAgIH0KICAgIGZjbG9zZSgkZmgpOwoKICAgICRpbXBvcnRwcmVmc1snZGVsZXRlX3VzZXJzJ10gPSAoaW50KXh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZGVsZXRlX3VzZXJzJywwKTsKICAgICRpbXBvcnRwcmVmc1snZGVsaW1pdGVyJ10gPSB0cmltKHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZGVsaW1pdGVyJykpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltcG9ydHByZWZzJyxzZXJpYWxpemUoJGltcG9ydHByZWZzKSk7CgogICAgJGZuID0gdGVtcG5hbShUTVBfQ0FDSEVfTE9DQVRJT04sJ21hbXNfaW1wb3J0Jyk7CiAgICBpZiggISRmbiApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NyZWF0ZXRtcGZpbGUnKSk7CiAgICBAY29weSgkX0ZJTEVTWyRfZnBdWyd0bXBfbmFtZSddLCRmbik7CgogICAgJHJldHVybl91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkKTsKICAgICRzbWFydHktPmFzc2lnbigncmV0dXJuX3VybCcsJHJldHVybl91cmwpOwoKICAgICR1cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2FkbWluX2RvaW1wb3J0JywgJHJldHVybmlkLGFycmF5KCdmaWxlJz0+YmFzZW5hbWUoJGZuKSkpLicmc2hvd3RlbXBsYXRlPWZhbHNlJzsKICAgICRzbWFydHktPmFzc2lnbignaWZyYW1lX3NyYycsICR1cmwpOwogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9pbXBvcnRfdXNlcnMyLnRwbCcpOwogICAgcmV0dXJuOwogIH0KICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKICB9Cn0KCi8vIGJ1aWxkIHRoZSBmb3JtLgokZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0R3JvdXBMaXN0KCkpOwppZiggIWNvdW50KCRncm91cGxpc3QpICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnbm9ncm91cHMnKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2ltcG9ydF91c2VycycpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdvcHRpb25zJywkaW1wb3J0cHJlZnMpOwokc21hcnR5LT5hc3NpZ24oJ2dyb3VwbGlzdCcsJGdyb3VwbGlzdCk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5faW1wb3J0X3VzZXJzLnRwbCcpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_logout.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIHsKCWlmKCBpc3NldCgkcGFyYW1zWyd1c2VyX2lkJ10pICkgewoJCSR0aGlzLT5Mb2dvdXRVc2VyKCAkcGFyYW1zWyd1c2VyX2lkJ10sICdMb2dnZWQgb3V0IGJ5IGFkbWluJyApOwoJfQp9CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ3VzZXJzJyk7CgovLyBFT0YK]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdzaXRlcHJlZnMnKSApIHJldHVybjsKCmlmKCBpc3NldCgkcGFyYW1zWydlcnJvciddKSAmJiAkcGFyYW1zWydlcnJvciddID09IDEgKQp7CiAgCiAgaWYoIGlzX2FycmF5KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCiAgewogICAgJGVycl9saXN0ID0gW107CiAgICBmb3JlYWNoKCRwYXJhbXNbJ21lc3NhZ2UnXSBhcyAkbXNnKQogICAgewogICAgICAkZXJyX2xpc3RbXSA9ICR0aGlzLT5MYW5nKCRtc2cpOwogICAgfQogIH0KICBlbHNlCiAgewogICAgJGVycl9saXN0ID0gWyR0aGlzLT5MYW5nKCRwYXJhbXNbJ21lc3NhZ2UnXSldOwogIH0KICAkdGhpcy0+U2hvd0Vycm9ycygkZXJyX2xpc3QpOwp9CmVsc2UKewogIGlmKCBpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pICkKICB7CiAgICAkdGhpcy0+U2hvd01lc3NhZ2UoICR0aGlzLT5MYW5nKCRwYXJhbXNbJ21lc3NhZ2UnXSkgKTsKICB9Cn0KCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoICdwcmVmcycsICR0aGlzLT5MYW5nKCdwcmVmZXJlbmNlcycpKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAnYXV0aCcsICR0aGlzLT5MYW5nKCdhdXRoZW50aWNhdGlvbicpKTsKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdwcmVmcycsJHBhcmFtcyk7CmluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX3ByZWZzdGFiLnBocCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdhdXRoJywkcGFyYW1zKTsKaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fYXV0aHRhYi5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_set_auth.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYignYXV0aCcpOwoKaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfdXNlcnNhbHQnKSApIHsKICAgIGlmKCBceHRfcGFyYW06OmV4aXN0cygkcGFyYW1zLCdwd3NhbHQnKSApIHsKICAgICAgICAkcHdzYWx0ID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3B3c2FsdCcpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzJzsKICAgICAgICAkbnVzZXJzID0gJGRiLT5HZXRPbmUoJHF1ZXJ5KTsKICAgICAgICBpZiggJG51c2VycyA+IDAgKSB7CiAgICAgICAgICAgICRvbGRzYWx0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B3c2FsdCcpOwogICAgICAgICAgICBpZiggJG9sZHNhbHQgIT0gJHB3c2FsdCApIHsKICAgICAgICAgICAgICAgIC8vIGNhbiBvbmx5IGNoYW5nZSB0aGUgc2FsdCBpZiB0aGVyZSBhcmUgbm8gdXNlcnMuCiAgICAgICAgICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2FkanVzdHNhbHQnKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdhdXRoJywgJycsICdhZG1pbl9zZXR0aW5ncycpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwd3NhbHQnLCRwd3NhbHQpOwogICAgfQp9CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcsKGludCkkcGFyYW1zWydyZXF1aXJlX29uZWdyb3VwJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcsKGludCkkcGFyYW1zWydkZWZhdWx0X2dyb3VwJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3VwcG9ydF9sb3N0dW4nLChpbnQpJHBhcmFtc1snc3VwcG9ydF9sb3N0dW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19jaGFuZ2V1c2VybmFtZScsKGludCkkcGFyYW1zWydhbGxvd19jaGFuZ2V1c2VybmFtZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N1cHBvcnRfbG9zdHB3JywoaW50KSRwYXJhbXNbJ3N1cHBvcnRfbG9zdHB3J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnLChpbnQpJHBhcmFtc1sncHdmbGRsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnLChpbnQpJHBhcmFtc1snbWlucHdsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnLChpbnQpJHBhcmFtc1snbWF4cHdsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbmhhbmNlZF9wYXNzd29yZCcsKGludCkkcGFyYW1zWydlbmhhbmNlZHB3J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRfcmVxdWlyZWRjaGFycycsdHJpbSgkcGFyYW1zWydwd3JlcXVpcmVkY2hhcnMnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLChpbnQpJHBhcmFtc1sndW5mbGRsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fdXNlcm5hbWVsZW5ndGgnLChpbnQpJHBhcmFtc1snbWludW5sZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLChpbnQpJHBhcmFtc1snbWF4dW5sZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjb29raWVuYW1lJyx0cmltKCRwYXJhbXNbJ2Nvb2tpZW5hbWUnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsKGludCkkcGFyYW1zWydjb29raWVfa2VlcGFsaXZlJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnLChpbnQpJHBhcmFtc1sndXNlcm5hbWVfaXNfZW1haWwnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJywoaW50KSRwYXJhbXNbJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywoaW50KSRwYXJhbXNbJ2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdsb2dpbl9hZnRlcl92ZXJpZnknLCAoaW50KSAkcGFyYW1zWydsb2dpbl9hZnRlcl92ZXJpZnknXSk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2lnbmluX2J1dHRvbicsdHJpbSgkcGFyYW1zWydzaWduaW5fYnV0dG9uJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsdHJpbSgkcGFyYW1zWydyZXF1aXJlZF9maWVsZF9tYXJrZXInXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLHRyaW0oJHBhcmFtc1sncmVxdWlyZWRfZmllbGRfY29sb3InXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsdHJpbSgkcGFyYW1zWydoaWRkZW5fZmllbGRfbWFya2VyJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsdHJpbSgkcGFyYW1zWydoaWRkZW5fZmllbGRfY29sb3InXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VjdXJlX2ZpZWxkX21hcmtlcicsdHJpbSgkcGFyYW1zWydzZWN1cmVfZmllbGRfbWFya2VyJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NlY3VyZV9maWVsZF9jb2xvcicsdHJpbSgkcGFyYW1zWydzZWN1cmVfZmllbGRfY29sb3InXSkpOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcsdHJpbSgkcGFyYW1zWydwYWdlaWRmb3Jnb3RwYXNzd2QnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJyx0cmltKCRwYXJhbXNbJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncyddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nLHRyaW0oJHBhcmFtc1sncGFnZWlkX2xvZ2luJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dvdXQnLHRyaW0oJHBhcmFtc1sncGFnZWlkX2xvZ291dCddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfb252ZXJpZnknLHRyaW0oJHBhcmFtc1sncGFnZWlkX29udmVyaWZ5J10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9hZnRlcnZlcmlmeScsdHJpbSgkcGFyYW1zWydwYWdlaWRfYWZ0ZXJ2ZXJpZnknXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnLHRyaW0oJHBhcmFtc1sncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnXSkpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ2Vjb21tX29yZGVyY2FuY2VsbGVkJ10pICkgIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlY29tbV9wYWlkcmVnaXN0cmF0aW9uJywoaW50KSRwYXJhbXNbJ2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nXSk7CiAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nKSApIHsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlclVwZGF0ZWQnLGZhbHNlKTsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlckRlbGV0ZWQnLGZhbHNlKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NHRWNvbW1lcmNlQmFzZScsJ09yZGVyVXBkYXRlZCcpOwogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NHRWNvbW1lcmNlQmFzZScsJ09yZGVyRGVsZXRlZCcpOwogICAgfQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Vjb21tX29yZGVyY2FuY2VsbGVkJyx0cmltKCRwYXJhbXNbJ2Vjb21tX29yZGVyY2FuY2VsbGVkJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmRlbGV0ZWQnLHRyaW0oJHBhcmFtc1snZWNvbW1fb3JkZXJkZWxldGVkJ10pKTsKfQokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdhdXRoJywgJycsICdhZG1pbl9zZXR0aW5ncycpOw==]]></data>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighaXNzZXQoJGdDbXMpKQp7CiAgZXhpdDsKfQoKJGNhbl9jaGFuZ2VwYXNzd2QgPSBUUlVFOwokY29uc3VtZXIgICAgICAgICA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiRjYW5fY2hhbmdlcGFzc3dkID0gJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfQ0hBTkdFUEFTU1dEKTsKCmlmKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVNFVFRJTkdTKSkKewogIC8vIHRoZSBjb25zdW1lciBwcm92aWRlcyB0aGUgbG9naW4gY2FwYWJpbGl0aWVzCiAgZWNobyAkY29uc3VtZXItPmdldF9jaGFuZ2VzZXR0aW5nc19kaXNwbGF5KCRpZCwgJHJldHVybmlkLCAkcGFyYW1zKTsKICAKICByZXR1cm47Cn0KZWxzZSBpZighJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfVVNFU1REQ0hBTkdFU0VUVElOR1MpKQp7CiAgcmV0dXJuOwp9CgokdWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKaWYoJHVpZCA8IDEpCnsKICByZXR1cm47Cn0KJHJlc3VsdCA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKCmlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCnsKICAvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHJlc3VsdFsxXSk7CiAgCiAgcmV0dXJuOwp9CiR1aW5mbyA9ICRyZXN1bHRbMV07CgovLyBnZXQgdGhlIHVzZXJzIG1lbWJlciBncm91cHMKJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKCmlmKCEkZ3JvdXBzKQp7CiAgLy8gdGhpcyB1c2VyIGlzIG5vdCBhIG1lbWJlciBvZiBhbnkgZ3J1b3BzLi4uCiAgLy8gaGFuZGxlIHRoaXMgbGF0ZXIgdG9kbwogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX25vZ3JvdXBzJykpOwogIAogIHJldHVybjsKfQoKLy8gbm93IHdlIGhhdmUgdGhlIGdyb3Vwcywgd2UgYnVpbGQgYSB1bmlvbiBvZiBhbGwgb2YgdGhlIGdyb3VwcyBwcm9wZXJ0aWVzCiRwcm9wZXJ0aWVzID0gYXJyYXkoKTsKCmZvcmVhY2goJGdyb3VwcyBhcyAkZ3JwcmVjb3JkKQp7CiAgJGdpZCAgICAgICAgICAgPSAkZ3JwcmVjb3JkWydncm91cGlkJ107CiAgJHByb3ByZWxhdGlvbnMgPSAkdGhpcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAKICBpZihpc19hcnJheSgkcHJvcHJlbGF0aW9ucykgJiYgY291bnQoJHByb3ByZWxhdGlvbnMpID09IDIgJiYgJHByb3ByZWxhdGlvbnNbMF0gPT09IEZBTFNFKQogIHsKICAgIGNvbnRpbnVlOwogIH0KICAKICBpZihjb3VudCgkcHJvcGVydGllcykpCiAgewogICAgJHByb3BlcnRpZXMgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCRwcm9wZXJ0aWVzLCAkcHJvcHJlbGF0aW9ucyk7CiAgfQogIGVsc2UKICB7CiAgICAkcHJvcGVydGllcyA9ICRwcm9wcmVsYXRpb25zOwogIH0KfQoKdWFzb3J0KCRwcm9wZXJ0aWVzLCBhcnJheSgneHRfYXJyYXknLCAnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JykpOwoKCgppZihjb3VudCgkcHJvcGVydGllcykgPT0gMCAmJiAwKSAjIG1hbmRhdG9yeSBwcm9wZXJ0aWVzIHBlciBncm91cCB3aWxsIGJlIGEgcHJlZmVyZW5jZSAoSk0pCnsKICBpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpID09IDEpCiAgewogICAgLy8gdGhpcyB1c2VyIGlzIG5vdCBhIG1lbWJlciBvZiBhbnkgZ3J1b3BzLi4uCiAgICAvLyBoYW5kbGUgdGhpcyBsYXRlciB0b2RvCiAgICAKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnKSk7CiAgICAKICAgIHJldHVybjsKICB9Cn0KCi8vIG5vdyB3ZSdyZSByZWFkeSB0byBwb3B1bGF0ZSB0aGUgdGVtcGxhdGUKLy8gZmlyc3Qgd2UgcHV0IGluIHN0dWZmIHRoYXQgaXMgcmVxdWlyZWQgKHVzZXJuYW1lLCBwYXNzd29yZCwgZXRjLCBldGMpCiRyb3dhcnJheSA9IGFycmF5KCk7CgovLyBtYWtlIHN1cmUgdXNlcm5hbWUgaXMgaW4gdGhlcmUKLy8gd2UgY2FuIGhpZGUgaXQgaW4gdGhlIHRlbXBsYXRlLgokdmFsICAgICAgICAgICAgICAgID0gJHVpbmZvWyd1c2VybmFtZSddOwokb25lcm93ICAgICAgICAgICAgID0gbmV3IFN0ZENsYXNzKCk7CiRvbmVyb3ctPm5hbWUgICAgICAgPSAndXNlcm5hbWUnOwokb25lcm93LT50eXBlICAgICAgID0gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpKSA/IDIgOiAwOwokb25lcm93LT5jb2xvciAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKJG9uZXJvdy0+bWFya2VyICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwokb25lcm93LT5yZXF1aXJlZCAgID0gMTsKJG9uZXJvdy0+cHJvbXB0ICAgICA9ICRjb25zdW1lci0+Z2V0X3VzZXJuYW1lX3Byb21wdCgpOwokb25lcm93LT52YWx1ZSAgICAgID0gJHZhbDsKJG9uZXJvdy0+aW5wdXRfaWQgICA9ICdtYW1zX2lucHV0X3VzZXJuYW1lJzsKJG9uZXJvdy0+aW5wdXRfbmFtZSA9ICRpZCAuICRvbmVyb3ctPmlucHV0X2lkOwokb25lcm93LT5sZW5ndGggICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJywgNDApOwokb25lcm93LT5tYXhsZW5ndGggID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcsIDgwKTsKJG9uZXJvdy0+cmVhZG9ubHkgICA9ICghJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfQ0hBTkdFVVNFUk5BTUUpKTsKCiR0bXAgPSAnZGlzYWJsZWQ9ImRpc2FibGVkIic7CmlmKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVVTRVJOQU1FKSkKewogICR0bXAgPSAnJzsKfQokb25lcm93LT5jb250cm9sICAgICAgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KAogICRpZCwgJ21hbXNfaW5wdXRfdXNlcm5hbWUnLCAkdmFsLCAkb25lcm93LT5sZW5ndGgsICRvbmVyb3ctPm1heGxlbmd0aCwgJHRtcAopOwokcm93YXJyYXlbJG9uZXJvdy0+bmFtZV0gPSAkb25lcm93OwoKaWYoJGNhbl9jaGFuZ2VwYXNzd2QpCnsKICAvLyBhbmQgcGFzc3dvcmQKICAkdmFsID0gJyc7CiAgaWYoaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddKSkKICB7CiAgICAkdmFsID0gJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddOwogIH0KICAkb25lcm93ICAgICAgICAgICA9IG5ldyBTdGRDbGFzcygpOwogICRvbmVyb3ctPm5hbWUgICAgID0gJ3Bhc3N3b3JkJzsKICAkb25lcm93LT50eXBlICAgICA9ICdwYXNzd29yZCc7CiAgJG9uZXJvdy0+Y29sb3IgICAgPSBOVUxMOwogICRvbmVyb3ctPnJlcXVpcmVkID0gKCR1aW5mb1snZm9yY2VfbmV3cHcnXSkgPyAxIDogMDsKICAkb25lcm93LT5tYXJrZXIgICA9IE5VTEw7CiAgCiAgaWYoJG9uZXJvdy0+cmVxdWlyZWQpCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwogIH0KICAKICAkb25lcm93LT5wcm9tcHQgICAgICAgICAgPSAkdGhpcy0+TGFuZygncGFzc3dvcmQnKTsKICAkb25lcm93LT5jb250cm9sICAgICAgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRQYXNzd29yZCgKICAgICRpZCwgJ21hbXNfaW5wdXRfcGFzc3dvcmQnLCAkdmFsLAogICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyksCiAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykKICApOwogIAogICRvbmVyb3ctPmFkZHRleHQgICAgICAgICA9ICR0aGlzLT5MYW5nKCdpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCcpOwogICRvbmVyb3ctPnZhbHVlICAgICAgICAgICA9IE5VTEw7CiAgJG9uZXJvdy0+aW5wdXRfaWQgICAgICAgID0gJ21hbXNfaW5wdXRfcGFzc3dvcmQnOwogICRvbmVyb3ctPmlucHV0X25hbWUgICAgICA9ICRpZCAuICRvbmVyb3ctPmlucHV0X2lkOwogICRvbmVyb3ctPmxlbmd0aCAgICAgICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcpOwogICRvbmVyb3ctPm1heGxlbmd0aCAgICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKTsKICAkb25lcm93LT5yZWFkb25seSAgICAgICAgPSBGQUxTRTsKICAkcm93YXJyYXlbJG9uZXJvdy0+bmFtZV0gPSAkb25lcm93OwogIAogIC8vIGFuZCBtYWtlIGhpbSByZXBlYXQgdGhlIHBhc3N3b3JkCiAgJHZhbCA9ICcnOwogIAogIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSkpCiAgewogICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXTsKICB9CiAgCiAgJG9uZXJvdyAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKICAkb25lcm93LT5uYW1lICAgICA9ICdyZXBlYXRfcGFzc3dvcmQnOwogICRvbmVyb3ctPnR5cGUgICAgID0gJ3Bhc3N3b3JkJzsKICAkb25lcm93LT5jb2xvciAgICA9IE5VTEw7CiAgJG9uZXJvdy0+bWFya2VyICAgPSBOVUxMOwogICRvbmVyb3ctPnJlcXVpcmVkID0gKCR1aW5mb1snZm9yY2VfbmV3cHcnXSkgPyAxIDogMDsKICAKICBpZigkb25lcm93LT5yZXF1aXJlZCkKICB7CiAgICAkb25lcm93LT5tYXJrZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfbWFya2VyJywgJyonKTsKICAgICRvbmVyb3ctPmNvbG9yICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsICdibHVlJyk7CiAgfQogIAogICRvbmVyb3ctPnByb21wdCAgICAgICAgICA9ICR0aGlzLT5MYW5nKCdyZXBlYXRwYXNzd29yZCcpOwogICRvbmVyb3ctPmNvbnRyb2wgICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFBhc3N3b3JkKAogICAgJGlkLCAnbWFtc19pbnB1dF9yZXBlYXRwYXNzd29yZCcsICR2YWwsCiAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSwKICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKQogICk7CiAgCiAgJG9uZXJvdy0+YWRkdGV4dCAgICAgICAgID0gJHRoaXMtPkxhbmcoJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJyk7CiAgJG9uZXJvdy0+dmFsdWUgICAgICAgICAgID0gTlVMTDsKICAkb25lcm93LT5pbnB1dF9pZCAgICAgICAgPSAnbWFtc19pbnB1dF9yZXBlYXRwYXNzd29yZCc7CiAgJG9uZXJvdy0+aW5wdXRfbmFtZSAgICAgID0gJGlkIC4gJG9uZXJvdy0+aW5wdXRfaWQ7CiAgJG9uZXJvdy0+bGVuZ3RoICAgICAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyk7CiAgJG9uZXJvdy0+bWF4bGVuZ3RoICAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpOwogICRvbmVyb3ctPnJlYWRvbmx5ICAgICAgICA9IEZBTFNFOwogICRyb3dhcnJheVskb25lcm93LT5uYW1lXSA9ICRvbmVyb3c7Cn0KCiRlbmNyeXB0X2NvbG9yICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfY29sb3InLCAneWVsbG93Jyk7CiRlbmNyeXB0X21hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfbWFya2VyJywgJ15eJyk7CgoKLy8gbm93IGZvciB0aGUgcHJvcGVydGllcwpmb3JlYWNoKCRwcm9wZXJ0aWVzIGFzICRwcm9wKQp7CiAgLy8gZ2V0IHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uCiAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCRwcm9wWyduYW1lJ10pOwogIAogIGlmKCRwcm9wWydyZXF1aXJlZCddID09IDMpe2NvbnRpbnVlO30gLy8gaGlkZGVuLgogIAogICRvbmVyb3cgICAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKICAkb25lcm93LT5uYW1lICAgICAgID0gJHByb3BbJ25hbWUnXTsKICAkb25lcm93LT5wcm9wbmFtZSAgID0gJHByb3BbJ25hbWUnXTsKICAkb25lcm93LT5pbnB1dF9pZCAgID0gJ21hbXNfaW5wdXRfJyAuICRvbmVyb3ctPnByb3BuYW1lOwogICRvbmVyb3ctPmlucHV0X25hbWUgPSAkaWQgLiAkb25lcm93LT5pbnB1dF9pZDsKICAkdmFsICAgICAgICAgICAgICAgID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BbJ25hbWUnXSwgJHVpZCk7CiAgCiAgaWYoaXNzZXQoJHBhcmFtc1skb25lcm93LT5pbnB1dF9uYW1lXSkpCiAgewogICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfJyAuICRvbmVyb3ctPmlucHV0X25hbWVdOwogIH0KICAKICAKICAvLyBiZWdpbiBidWlsZGluZyB0aGUgb2JqZWN0IHRoYXQgY29udGFpbnMgZGF0YSBmb3IgYnVpbGRpbmcgdGhlIGZpZWxkcy4KICAkb25lcm93LT50eXBlICAgICAgPSAkZGVmblsndHlwZSddOwogICRvbmVyb3ctPmVuY3J5cHRlZCA9ICRkZWZuWydlbmNyeXB0J107CiAgJG9uZXJvdy0+cmVxdWlyZWQgID0gKCRwcm9wWydyZXF1aXJlZCddID09IDIpOwogICRvbmVyb3ctPnJlYWRvbmx5ICA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSA0KTsKICAkb25lcm93LT5zdGF0dXMgICAgPSAkcHJvcFsncmVxdWlyZWQnXTsKICAkb25lcm93LT5jb2xvciAgICAgPSBOVUxMOwogICRvbmVyb3ctPm1hcmtlciAgICA9IE5VTEw7OwogICRvbmVyb3ctPnZhbHVlICAgICA9ICR2YWw7CiAgJG9uZXJvdy0+bGVuZ3RoICAgID0gJGRlZm5bJ2xlbmd0aCddOwogICRvbmVyb3ctPm1heGxlbmd0aCA9ICRkZWZuWydtYXhsZW5ndGgnXTsKICAkb25lcm93LT5wcm9tcHQgICAgPSAkZGVmblsncHJvbXB0J107CiAgCiAgaWYoJGRlZm5bJ2VuY3J5cHQnXSkKICB7CiAgICAkb25lcm93LT5jb2xvciAgPSAkZW5jcnlwdF9jb2xvcjsKICAgICRvbmVyb3ctPm1hcmtlciA9ICRlbmNyeXB0X21hcmtlcjsKICB9CiAgZWxzZSBpZigkb25lcm93LT5yZXF1aXJlZCkKICB7CiAgICAkb25lcm93LT5jb2xvciAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLCAnYmx1ZScpOwogICAgJG9uZXJvdy0+bWFya2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsICcqJyk7CiAgfQogIAogIHN3aXRjaCgkZGVmblsndHlwZSddKQogIHsKICAgIGNhc2UgMDogLy8gdGV4dAogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICR2YWwsICRkZWZuWydsZW5ndGgnXSwgJGRlZm5bJ21heGxlbmd0aCddKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAkb25lcm93LT5pbnB1dF9uYW1lLCAwKTsKICAgICAgJG9uZXJvdy0+Y29udHJvbCAuPSBcTUFNU1xSUlV0aWxzOjpteUNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkb25lcm93LT5pbnB1dF9uYW1lLCAxLCAkdmFsKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlIDI6IC8vIGVtYWlsCiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgJHZhbCwgJGRlZm5bJ2xlbmd0aCddLCAkZGVmblsnbWF4bGVuZ3RoJ10pOwogICAgYnJlYWs7CiAgICAKICAgIGNhc2UgMzogLy8gdGV4dGFyZWEKICAgICAgJGZsYWcgPSBGQUxTRTsKICAgICAgaWYoaXNzZXQoJGRlZm5bJ2F0dHJpYnMnXSkgJiYgIWVtcHR5KCRkZWZuWydhdHRyaWJzJ10pKQogICAgICB7CiAgICAgICAgJGF0dHJpYnMgPSB1bnNlcmlhbGl6ZSgkZGVmblsnYXR0cmlicyddKTsKICAgICAgICBpZihpc19hcnJheSgkYXR0cmlicykgJiYgaXNzZXQoJGF0dHJpYnNbJ3d5c2l3eWcnXSkpCiAgICAgICAgewogICAgICAgICAgJGZsYWcgPSAkYXR0cmlic1snd3lzaXd5ZyddOwogICAgICAgIH0KICAgICAgfQogICAgICAkb25lcm93LT53eXNpd3lnID0gJGZsYWc7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoJGZsYWcsICRpZCwgJHZhbCwgJG9uZXJvdy0+aW5wdXRfbmFtZSk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSA0OiAvLyBkcm9wZG93bgogICAgICAkb3B0cyAgICAgICAgICAgID0gJHRoaXMtPkdldFNlbGVjdE9wdGlvbnMoJGRlZm5bJ25hbWUnXSk7CiAgICAgICRvbmVyb3ctPm9wdGlvbnMgPSBhcnJheV9mbGlwKCRvcHRzKTsKICAgICAgJG9uZXJvdy0+Y29udHJvbCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgJG9wdHMsIC0xLCAkdmFsKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlIDU6IC8vIG11bHRpc2VsZWN0CiAgICAgICRvcHRzICAgICAgICAgICAgID0gJHRoaXMtPkdldFNlbGVjdE9wdGlvbnMoJGRlZm5bJ25hbWUnXSk7CiAgICAgICRvbmVyb3ctPm9wdGlvbnMgID0gYXJyYXlfZmxpcCgkb3B0cyk7CiAgICAgICRvbmVyb3ctPnNlbGVjdGVkID0gZXhwbG9kZSgnLCcsICR2YWwpOwogICAgICAkb25lcm93LT5jb250cm9sICA9ICR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoCiAgICAgICAgJGlkLCAkb25lcm93LT5pbnB1dF9uYW1lIC4gJ1tdJywgJG9wdHMsICRvbmVyb3ctPnNlbGVjdGVkLCAkZGVmblsnbGVuZ3RoJ10KICAgICAgKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlIDY6IC8vIGltYWdlCiAgICAgICRkZXN0RGlyMSA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddIC4gRElSRUNUT1JZX1NFUEFSQVRPUjsKICAgICAgJGRlc3REaXIxIC49ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywgJ21hbXMnKSAuIERJUkVDVE9SWV9TRVBBUkFUT1I7CiAgICAgICRkZXN0RGlyMiA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10gLiAnLyc7CiAgICAgICRkZXN0RGlyMiAuPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdtYW1zJykgLiAnLyc7CiAgICAgICRmaWxlMSAgICA9ICRkZXN0RGlyMSAuICR2YWw7CiAgICAgICRmaWxlMiAgICA9ICRkZXN0RGlyMiAuICR2YWw7CiAgICAgIGlmKGlzX3JlYWRhYmxlKCRmaWxlMSkgJiYgaXNfZmlsZSgkZmlsZTEpKQogICAgICB7CiAgICAgICAgJG9uZXJvdy0+aW1hZ2VfdXJsID0gJGZpbGUyOwogICAgICAgICRvbmVyb3ctPmltYWdlICAgICA9ICc8aW1nIHNyYz0iJyAuICRmaWxlMiAuICciIGFsdD0iJyAuICR2YWwgLiAnIi8+JzsKICAgICAgICBpZighJG9uZXJvdy0+cmVxdWlyZWQpCiAgICAgICAgewogICAgICAgICAgJG9uZXJvdy0+cHJvbXB0MiAgICAgPSAkdGhpcy0+TGFuZygncHJvbXB0X2NsZWFyJyk7CiAgICAgICAgICAkb25lcm93LT5pbnB1dF9uYW1lMiA9ICRvbmVyb3ctPmlucHV0X25hbWUgLiAnX2NsZWFyJzsKICAgICAgICAgICRvbmVyb3ctPmNvbnRyb2wyICAgID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkb25lcm93LT5pbnB1dF9uYW1lIC4gJ19jbGVhcicsICdjbGVhcicsICcnKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgJG9uZXJvdy0+Y29udHJvbCA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICR2YWwpIC4KICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCAnbWFtc18nIC4gJG9uZXJvdy0+aW5wdXRfbmFtZSwgJycsICRkZWZuWydsZW5ndGgnXSk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSAnNyc6IC8vIHJhZGlvIGdyb3VwCiAgICAgICRvcHRzICAgICAgICAgICAgPSAkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkZGVmblsnbmFtZSddKTsKICAgICAgJG9uZXJvdy0+b3B0aW9ucyA9IGFycmF5X2ZsaXAoJG9wdHMpOwogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0UmFkaW9Hcm91cCgkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICRvcHRzLCAkdmFsLCAnJywgJzxici8+Jyk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSAnOCc6IC8vIGRhdGUKICAgICAgJHBhcm1zICAgICAgICAgICA9IGFycmF5KCk7CiAgICAgICRwYXJtc1sncHJlZml4J10gPSAkb25lcm93LT5pbnB1dF9pZDsKICAgICAgaWYoJHZhbCkKICAgICAgewogICAgICAgICRwYXJtc1sndGltZSddID0gJHZhbDsKICAgICAgfQogICAgICAkcGFybXNbJ3N0YXJ0X3llYXInXSA9ICItNSI7CiAgICAgICRwYXJtc1snZW5kX3llYXInXSAgID0gIisxMCI7CiAgICAgIAogICAgICBpZihpc3NldCgkZGVmblsnYXR0cmlicyddKSAmJiAhZW1wdHkoJGRlZm5bJ2F0dHJpYnMnXSkpCiAgICAgIHsKICAgICAgICAkYXR0cmlicyA9IHVuc2VyaWFsaXplKCRkZWZuWydhdHRyaWJzJ10pOwogICAgICAgIGlmKGlzc2V0KCRhdHRyaWJzWydzdGFydHllYXInXSkgJiYgIWVtcHR5KCRhdHRyaWJzWydzdGFydHllYXInXSkpCiAgICAgICAgewogICAgICAgICAgJHBhcm1zWydzdGFydF95ZWFyJ10gPSAkYXR0cmlic1snc3RhcnR5ZWFyJ107CiAgICAgICAgfQogICAgICAgIGlmKGlzc2V0KCRhdHRyaWJzWydlbmR5ZWFyJ10pICYmICFlbXB0eSgkYXR0cmlic1snZW5keWVhciddKSkKICAgICAgICB7CiAgICAgICAgICAkcGFybXNbJ2VuZF95ZWFyJ10gPSAkYXR0cmlic1snZW5keWVhciddOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgJHJlbF90b19hYnNfeWVhciA9IGZ1bmN0aW9uKCRzdHIpewogICAgICAgIGlmKHN0YXJ0c3dpdGgoJHN0ciwgJy0nKSkKICAgICAgICB7CiAgICAgICAgICAkdiAgICA9IChpbnQpc3Vic3RyKCRzdHIsIDEpOwogICAgICAgICAgJHllYXIgPSBkYXRlKCdZJykgLSAkdjsKICAgICAgICAgIAogICAgICAgICAgcmV0dXJuICR5ZWFyOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKHN0YXJ0c3dpdGgoJHN0ciwgJysnKSkKICAgICAgICB7CiAgICAgICAgICAkdiAgICA9IChpbnQpc3Vic3RyKCRzdHIsIDEpOwogICAgICAgICAgJHllYXIgPSBkYXRlKCdZJykgKyAkdjsKICAgICAgICAgIAogICAgICAgICAgcmV0dXJuICR5ZWFyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gKGludCkkc3RyOwogICAgICB9OwogICAgICAKICAgICAgJHN0ciA9ICd7aHRtbF9zZWxlY3RfZGF0ZSAnOwogICAgICBmb3JlYWNoKCRwYXJtcyBhcyAka2V5ID0+ICR2YWx1ZSkKICAgICAgewogICAgICAgICRzdHIgLj0gJGtleSAuICc9IicgLiAkdmFsdWUgLiAnIiAnOwogICAgICB9CiAgICAgICRzdHIgICAgICAgICAgICAgICAgLj0gJ30nOwogICAgICAkb25lcm93LT5jb250cm9sICAgID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRzdHIpOwogICAgICAkb25lcm93LT5zdGFydF95ZWFyID0gJHJlbF90b19hYnNfeWVhcigkcGFybXNbJ3N0YXJ0X3llYXInXSk7CiAgICAgICRvbmVyb3ctPmVuZF95ZWFyICAgPSAkcmVsX3RvX2Fic195ZWFyKCRwYXJtc1snZW5kX3llYXInXSk7CiAgICAKICAgIGJyZWFrOwogIH0KICAkcm93YXJyYXlbJHByb3BbJ25hbWUnXV0gPSAkb25lcm93Owp9CgovLyBmaWxsIGluIHRoZSB2YXJpYWJsZXMgZm9yIHRoZSB0ZW1wbGF0ZQokdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsICdjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlJywgJ01BTVM6OmNoc2V0dGluZ3MgZm9ybScpOwokdHBsICAgICAgICAgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ2Vycm9yJ10pKQp7CiAgJHRwbC0+YXNzaWduKCdlcnJvcicsICRwYXJhbXNbJ2Vycm9yJ10pOwp9CgppZihpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pKQp7CiAgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywgJHBhcmFtc1snbWVzc2FnZSddKTsKfQoKJHRwbC0+YXNzaWduKCd0aXRsZScsICR0aGlzLT5MYW5nKCd1c2VyX3NldHRpbmdzJykpOyAvLyBkZXByZWNhdGVkCiR0cGwtPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RvX3VzZXJjaGFuZ2VzZXR0aW5ncycsICRyZXR1cm5pZCkpOwokdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHRwbC0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnbWFtc19zdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsgLy8gZGVwcmVjYXRlZAoKaWYoaXNzZXQoJHBhcmFtc1sncmV0dXJudG8nXSkpCnsKICAkdHBsLT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdtYW1zX3JldHVybnRvJywgJHBhcmFtc1sncmV0dXJudG8nXSkpOwp9CgokdHBsLT5hc3NpZ24oJ2Zvcm1pZCcsICRpZCk7CiR0cGwtPmFzc2lnbignY29udHJvbHMnLCAkcm93YXJyYXkpOwokdHBsLT5hc3NpZ24oJ2NvbnRyb2xjb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokdHBsLT5kaXNwbGF5KCk7CgovLyBFT0YK]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighaXNzZXQoJGdDbXMpKQp7CiAgZXhpdDsKfQoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gRE8gVEhFIEFDVElPTgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgppZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoKSkKewogIGVjaG8gIkJyZWFraW5nIGFuIGVudHJ5LCBhcmUgd2U/IjsKICAKICByZXR1cm47Cn0KCi8vIHRoZSB0YWJzCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwoKaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzJykpCnsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3VzZXJzJywgJHRoaXMtPkxhbmcoJ3VzZXJzJykpOwogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndXNlcmhpc3RvcnknLCAkdGhpcy0+TGFuZygndXNlcmhpc3RvcnknKSk7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdhZG1pbicsICR0aGlzLT5MYW5nKCdhZG1pbicpKTsKfQppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncHJvcGVydGllcycpKQp7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcm9wZXJ0aWVzJywgJHRoaXMtPkxhbmcoJ3VzZXJfcHJvcGVydGllcycpKTsKfQppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZ3JvdXBzJykpCnsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2dyb3VwcycsICR0aGlzLT5MYW5nKCdncm91cHMnKSk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKLy8gVGhlY29udGVudCBvZiB0aGUgdGFicwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCmlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpKQp7CiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3VzZXJzJywgJHBhcmFtcyk7CiAgaW5jbHVkZShfX0RJUl9fIC4gJy9mdW5jdGlvbi5hZG1pbl91c2Vyc3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICAKICBlY2hvICR0aGlzLT5TdGFydFRhYigndXNlcmhpc3RvcnknLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2FjdGlvbi51c2VyaGlzdG9yeS5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICAKICBlY2hvICR0aGlzLT5TdGFydFRhYignYWRtaW4nLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmFkbWluX2FkbWludGFiLnBocCcpOwogIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncHJvcGVydGllcycpKQp7CiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3Byb3BlcnRpZXMnLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmFkbWluX3Byb3BlcnRpZXN0YWIucGhwJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdncm91cHMnKSkKewogIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdncm91cHMnLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmFkbWluX2dyb3Vwc3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.do_addgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwokY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwoKJGdpZCA9IGZhbHNlOwppZiggaXNzZXQoJHBhcmFtc1snZ3JvdXBfaWQnXSkgKSAkZ2lkID0gKGludCkkcGFyYW1zWydncm91cF9pZCddOwoKJGdyb3VwbmFtZSA9ICcnOwokZ3JvdXBkZXNjID0gJyc7CmlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10gKSApICRncm91cG5hbWUgPSB0cmltKCRwYXJhbXNbJ2lucHV0X2dyb3VwbmFtZSddKTsKaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSApICkgJGdyb3VwZGVzYyA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10pOwoKaWYoICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFMpICkgewogIC8vIG1ha2Ugc3VyZSB0aGUgcGFyYW1ldGVycyBhcmUgZmlsbGVkIGluCiAgaWYoICRncm91cG5hbWUgPT0gJycgfHwgJGdyb3VwZGVzYyA9PSAnJyApIHsKICAgIHVuc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKTsKICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CiAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpOwogICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICByZXR1cm47CiAgfQoKICAvLyBtYWtlIHN1cmUgdGhlIGdyb3VwIG5hbWUgZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAgJHRtcCA9ICR0aGlzLT5HZXRHcm91cElEKCAkZ3JvdXBuYW1lICk7CiAgaWYoICR0bXAgIT0gJGdpZCAmJiAkdG1wICE9ICcnICkgewogICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOwogICAgJHBhcmFtc1snZXJyb3InXSA9ICcxJzsKICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9ncm91cGV4aXN0cycpOwogICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICByZXR1cm47CiAgfQp9CgovLyBtYWtlIHN1cmUgbm90IGFsbCBwcm9wZXJ0aWVzIGFyZSBvZmYuCi8vIGFuZCB0aGF0IHdlJ3JlIG5vdCBzZXR0aW5nIGEgbG9zdHVuIGZsYWcgZm9yIGEgaGlkZGVuIG9yIG9wdGlvbmFsIGZpZWxkLgppZiggJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfRURJVEdST1VQUFJPUFMpICkKewogICAgJHJlbG5hZGRlZCA9IDA7CiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkcGFyYW1zWydpbnB1dF9uYW1lJ10pOyAkaSsrICkKICAgIHsKICAgICAgICBpZiggJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV0gIT0gMCApICRyZWxuYWRkZWQrKzsKICAgICAgICBpZiggJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV0gIT0gMiApIHsKICAgICAgICAgICAgLy8gaXQncyBub3QgYSByZXF1aXJlZCBmaWVsZC4uLi4gc28gY2FuJ3QgYmUgdXNlZCBpbiBsb3N0dW4KICAgICAgICAgICAgJHN0ciA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9sb3N0dW5fJy4kc3RyXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAgICAgICAgICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgICAgICAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub25yZXF1aXJlZCcpOwogICAgICAgICAgICAgICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgICMgd2lsbCBub3QgZW5mb3JjZSByZWxhdGlvbnMgYW55bW9yZSAoSk0pCi8vICAgIGlmKCAkcmVsbmFkZGVkID09IDAgKSB7Ci8vICAgICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7Ci8vICAgICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwovLyAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX25vcmVsYXRpb25zJyk7Ci8vICAgICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKLy8gICAgICAgIHJldHVybjsKLy8gICAgfQp9CgovLyB3ZSdyZSBjbGVhciB0byBhZGQgb3IgdXBkYXRlCmlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSApIHsKICBpZiggJGdpZCAhPT0gZmFsc2UgKSB7CiAgICAkcmV0ID0gJHRoaXMtPlNldEdyb3VwKCAkZ2lkLCAkZ3JvdXBuYW1lLCAkZ3JvdXBkZXNjICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApIHsKICAgICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOwogICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkcmV0WzFdOwogICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKICAgICAgcmV0dXJuOwogICAgfQogIH0KICBlbHNlIHsKICAgICRyZXQgPSAkdGhpcy0+QWRkR3JvdXAoICRncm91cG5hbWUsICRncm91cGRlc2MgKTsKICAgIGlmKCAkcmV0WzBdID09IEZBTFNFICkgewogICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CiAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXRbMV07CiAgICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgICByZXR1cm47CiAgICB9CiAgICAkZ2lkID0gJHJldFsxXTsKICB9Cn0KCmlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBQUk9QUykgKSB7CiAgLy8gYWxzbyBhZGQgdGhlIHByb3BlcnR5IGNob2ljZXMKICAkdGhpcy0+RGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdpZCApOwogIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRwYXJhbXNbJ2lucHV0X25hbWUnXSk7ICRpKysgKSB7CiAgICAkcHJvcG5hbWUgPSAnJzsKICAgICRzb3J0b3JkZXIgPSAnJzsKICAgICRsb3N0dW4gPSAtMTsKICAgICRyZXF1aXJlZCA9IDA7CgogICAgJHByb3BuYW1lID0gJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpXTsKICAgICRyZXF1aXJlZCA9ICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkJ11bJGldOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9sb3N0dW5fJy4kcHJvcG5hbWVdICkgKSB7CiAgICAgICRsb3N0dW4gPSAxOwogICAgfQoKICAgIGlmKCAkcmVxdWlyZWQgIT0gMCAmJiAkcHJvcG5hbWUgIT0gJycpIHsKICAgICAgJHJlcyA9ICR0aGlzLT5BZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRnaWQsICRwcm9wbmFtZSwgJGksICRsb3N0dW4sICRyZXF1aXJlZCApOwogICAgfQogIH0KfQoKLy8gc2VuZCBhbiBldmVudAokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ25hbWUnXSA9ICRncm91cG5hbWU7CiRwYXJtc1snZGVzY3JpcHRpb24nXSA9ICRncm91cGRlc2M7CiRwYXJtc1snaWQnXSA9ICRnaWQ7CiRzdHIgPSAnT25DcmVhdGVHcm91cCc7CmlmKCBpc3NldCgkcGFyYW1zWydncm91cF9pZCddKSApIHsKICAkc3RyID0gJ09uVXBkYXRlR3JvdXAnOwp9ClxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6Jy4kc3RyLCRwYXJtcyk7CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdncm91cHMnICk7Ci8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_admintasks.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2Vyc25ncm91cHMnKSApIHJldHVybjsKCmlmKCBpc3NldCggJHBhcmFtc1snYnV0dG9uX2V4cG9ydHVzZXJoaXN0b3J5J10gKSApIHsKICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9leHBvcnR1c2VyaGlzdG9yeS5waHAnKTsKfQplbHNlIGlmKCBpc3NldCggJHBhcmFtc1snYnV0dG9uX2NsZWFydXNlcmhpc3RvcnknXSApICkgewogIGluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2NsZWFydXNlcmhpc3RvcnkucGhwJyk7Cn0KICAKLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/action.do_deletegroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAncmVtb3ZlZ3JvdXBzJyApICkgcmV0dXJuOwoKaWYgKCFpc3NldCAoJHBhcmFtc1snZ3JvdXBfaWQnXSkgfHwgJHBhcmFtc1snZ3JvdXBfaWQnXSA9PSAiIikgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcgKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICByZXR1cm47Cn0KCiRncm91cCA9ICR0aGlzLT5HZXRHcm91cEluZm8oICRwYXJhbXNbJ2dyb3VwX2lkJ10gKTsKaWYoICFpc3NldCgkZ3JvdXBbJ2lkJ10pICYmICRncm91cFswXSA9PSBGQUxTRSApIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRncm91cFsxXSApOwogICAgcmV0dXJuOwp9CgokcXVlcnkgPSBuZXcgbWFtc191c2VyX3F1ZXJ5KCk7CiRxdWVyeS0+YWRkX2FuZF9vcHQobWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwkZ3JvdXBbJ2lkJ10pOwokcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKaWYoICRycy0+Z2V0X2ZvdW5kX3Jvd3MoKSA+IDAgKSB7CiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZyAoJ2Vycm9yX25vdGVtcHR5Z3JvdXAnKSk7CiAgICByZXR1cm47Cn0KCiRyZXQgPSAkdGhpcy0+RGVsZXRlR3JvdXBGdWxsKCAkcGFyYW1zWydncm91cF9pZCddICk7CmlmKCAkcmV0WzBdID09IEZBTFNFICkgewogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRncm91cFsxXSApOwogIHJldHVybjsKfQoKJHBhcm1zID0gYXJyYXkoKTsKJHBhcm1zWydpZCddID0gJHBhcmFtc1snZ3JvdXBfaWQnXTsKJHBhcm1zWyduYW1lJ10gPSAkZ3JvdXBbJ2dyb3VwbmFtZSddOwpcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uRGVsZXRlR3JvdXAnLCRwYXJtcyk7CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdncm91cHMnICk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_deleteuser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAncmVtb3ZldXNlcnMnICkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwoKJHVzZXJfaWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndXNlcl9pZCcpOwppZiggJHVzZXJfaWQgPCAxICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgcmV0dXJuOwp9CgokdXNlciA9ICR0aGlzLT5HZXRVc2VySW5mbyggJHBhcmFtc1sndXNlcl9pZCddICk7CmlmKCAhaXNfYXJyYXkoJHVzZXIpIHx8ICR1c2VyWzBdID09IEZBTFNFICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgcmV0dXJuOwp9CgovLyBHZXQgYWxsIG9mIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucywgaWYgdGhleSdyZSBvZiB0eXBlIDYKLy8gYW5kIHRoZSBwcm9wZXJ0eSBpcyBub3QgZW1wdHksIHRoZW4gd2UgbWF5Ci8vIGhhdmUgdG8gZGVsZXRlIGEgZmlsZSBhcyB3ZWxsLgokcmV0ID0gJHRoaXMtPkRlbGV0ZVVzZXJGdWxsKCAkcGFyYW1zWyd1c2VyX2lkJ10gKTsKaWYoICRyZXRbMF0gPT0gRkFMU0UgKSB7CiAgICBhdWRpdCgkdXNlcl9pZCwnTUFNUycsJ0ZhaWxlZCB0byBkZWxldGUgdXNlciAoZm9yZWlnbiBrZXkgcHJvYmxlbSA/PyknKTsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcmRlbGV0ZScpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgICByZXR1cm47Cn0KCi8vIHNlbmQgYW4gZXZlbnQKJHBhcm1zWyd1aWQnXSA9ICR1c2VyX2lkOwokcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlclsxXVsndXNlcm5hbWUnXTsKCi8vIGFuZCBsb2cgaXQKYXVkaXQoICcnLCAkdGhpcy0+R2V0TmFtZSgpLCdEZWxldGVkIFVzZXIgJy4kcGFyYW1zWyd1c2VyX2lkJ10pOwoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAndXNlcnMnICk7CgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.do_setprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSByZXR1cm47CgppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3JlbW92ZWFsbCddICkgKSB7CiAgICAkdGhpcy0+RXhwaXJlVGVtcENvZGVzKCctNSB5ZWFycycpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnLCAnJywgJ2FkbWluX3NldHRpbmdzJyk7Cn0KZWxzZSBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3JlbW92ZTF3ZWVrJ10gKSApIHsKICAgICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIHdlZWsnKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ3ByZWZzJywgJycsICdhZG1pbl9zZXR0aW5ncycpOwp9CmVsc2UgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9yZW1vdmUxbW9udGgnXSApICkgewogICAgJHRoaXMtPkV4cGlyZVRlbXBDb2RlcygnLTEgbW9udGgnKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ3ByZWZzJywgJycsICdhZG1pbl9zZXR0aW5ncycpOwp9CmVsc2UgaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkgewogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnLCAnJywgJ2FkbWluX3NldHRpbmdzJyk7Cn0KCgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYXV0b19jcmVhdGVfdW5rbm93bicsKGludCkkcGFyYW1zWydhdXRvX2NyZWF0ZV91bmtub3duJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYXV0aF9tb2R1bGUnLHRyaW0oJHBhcmFtc1snYXV0aF9tb2R1bGUnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2FnZScsIFx4dF9wYXJhbTo6Z2V0X2ludCggJHBhcmFtcywgJ2NsZWFyaGlzdG9yeV9hZ2UnKSApOwoKJHJhbmRvbXVzZXJuYW1lID0gMDsKaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9yYW5kb211c2VybmFtZSddKSApICRyYW5kb211c2VybmFtZSA9IChpbnQpJHBhcmFtc1snaW5wdXRfcmFuZG9tdXNlcm5hbWUnXTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZV9yYW5kb211c2VybmFtZScsJHJhbmRvbXVzZXJuYW1lKTsKaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9leHBpcmVhZ2UnXSkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZXhwaXJlYWdlX21vbnRocycsKGludCkkcGFyYW1zWydpbnB1dF9leHBpcmVhZ2UnXSk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcl9zZXNzaW9uX2V4cGlyZXMnLCAkcGFyYW1zWydpbnB1dF9zZXNzaW9udGltZW91dCddKTsKCiRjb29raWVfa2VlcGFsaXZlID0gMDsKaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9jb29raWVrZWVwYWxpdmUnXSApICkgJGNvb2tpZV9rZWVwYWxpdmUgPSAkcGFyYW1zWydpbnB1dF9jb29raWVrZWVwYWxpdmUnXTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLCRjb29raWVfa2VlcGFsaXZlKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3NpZ25pbl9idXR0b24nXSkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2lnbmluX2J1dHRvbicsICRwYXJhbXNbJ2lucHV0X3NpZ25pbl9idXR0b24nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19yZXBlYXRlZF9sb2dpbnMnLChpc3NldCgkcGFyYW1zWydpbnB1dF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXSk/JHBhcmFtc1snaW5wdXRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJ106MCkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsJHBhcmFtc1snaW5wdXRfaW1hZ2VfZGVzdGluYXRpb25fcGF0aCddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycsJHBhcmFtc1snaW5wdXRfYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJ10pOwokbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyA9IDA7CmlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddICkgKSAkbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyA9ICRwYXJhbXNbJ2lucHV0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLCRtYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zKTsKCmlmIChpc3NldCgkcGFyYW1zWydpbnB1dF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJ10pICYmICRwYXJhbXNbJ2lucHV0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXT09MSkgIHsKICAgIC8vIHVzaW5nIEZFVXNlci1zcGVjaWZpYyBwZXJtaXNzaW9ucywgc28gY3JlYXRlIHRoZW0gaWYgbmVjZXNzYXJ5CiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgVXNlcnMnLCdNb2RpZnkgTUFNUyBVc2VycycpOwogICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01BTVMgTW9kaWZ5IEdyb3VwcycsJ01vZGlmeSBNQU1TIFVzZXIgR3JvdXBzJyk7CiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgTUFNU1VzZXJQcm9wcycsJ01vZGlmeSBNQU1TIFVzZXIgUHJvcGVydGllcycpOwp9CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfdGltZXMnLHRyaW0oJHBhcmFtc1snZm9yY2Vsb2dvdXRfdGltZXMnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZScsKGludCkkcGFyYW1zWydmb3JjZWxvZ291dF9zZXNzaW9uYWdlJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZXhwaXJldXNlcnNfaW50ZXJ2YWwnLChpbnQpJHBhcmFtc1snZXhwaXJldXNlcnNfaW50ZXJ2YWwnXSk7CmlmKCBpc3NldCgkcGFyYW1zWydwYWdldHlwZV9ncm91cHMnXSkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZXR5cGVfZ3JvdXBzJyxpbXBsb2RlKCcsJywkcGFyYW1zWydwYWdldHlwZV9ncm91cHMnXSkpOwokdGhpcy0+U2V0Q3VycmVudFRhYigncHJlZnMnKTsKJHRoaXMtPlNldEN1cnJlbnRBY3Rpb24oJ2FkbWluX3NldHRpbmdzJyk7CiR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7CgovLyBFT0YK]]></data>
	</file>
	<file>
	  <filename>/action.do_userchangesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHJldHVybnRvID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfcmV0dXJudG8nKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfY2FuY2VsJ10pICkgewogICAgaWYoICRyZXR1cm50byApIHsKICAgICAgICAkcmV0dXJuaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcmV0dXJudG8sJHJldHVybmlkKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZXR1cm5pZCk7CiAgICB9Cn0KCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwppZiggJHVpZCA9PSBmYWxzZSApIHsKICAgIC8vIHVzZXIgaXNuJ3QgbG9nZ2VkIGluCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3Jfbm90bG9nZ2VkaW4nKSk7CiAgICByZXR1cm47Cn0KJHJlc3VsdCA9ICR0aGlzLT5HZXRVc2VySW5mbyggJHVpZCApOwppZiggJHJlc3VsdFswXSA9PSBGQUxTRSApIHsKICAgIC8vIHVzZXIgaXNuJ3QgbG9nZ2VkIGluCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkcmVzdWx0WzFdKTsKICAgIHJldHVybjsKfQokdWluZm8gPSAkcmVzdWx0WzFdOwoKJHVzZXJuYW1lID0gJHVpbmZvWyd1c2VybmFtZSddOwokcGFzc3dvcmQgPSAnJzsKCmNsYXNzIEZFVUNoYW5nZVNldHRpbmdzRXJyb3IgZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQoKdHJ5IHsKICAgIGlmKCAhXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3Jfc2VjdXJpdHknKSApOwoKICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6QmVmb3JlQ2hhbmdlU2V0dGluZ3MnLCBbICd1aWQnPT4kdWlkIF0gKTsKCiAgICAvLyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGhpcyB1c2VybmFtZQogICAgJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgIGlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VVU0VSTkFNRSkgKSB7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfdXNlcm5hbWUnXSkgKSB7CiAgICAgICAgICAgIC8vIHVzZXIgaXMgY2hhbmdpbmcgaGlzIHVzZXJuYW1lCiAgICAgICAgICAgICR0bXAgPSB0cmltKCRwYXJhbXNbJ21hbXNfaW5wdXRfdXNlcm5hbWUnXSk7CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPklzVmFsaWRVc2VybmFtZSgkdG1wLEZBTFNFLCR1aWQpICkgdGhyb3cgbmV3IEZldUNoYW5nZVNldHRpbmdzRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXNlcm5hbWUnKSApOwogICAgICAgICAgICBpZiggJHRtcCApICR1c2VybmFtZSA9ICR0bXA7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGNoZWNrIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGhpcyBwYXNzd29yZAogICAgaWYoICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVBBU1NXRCkgKSB7CiAgICAgICAgLy8gY2hhbmdlIHRoaXMgcGFzc3dvcmQKICAgICAgICAkcGFzc3dvcmQgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0oJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddKSk7CiAgICAgICAgJHJlcGVhdCAgID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh0cmltKCRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSkpOwogICAgICAgIGlmKCAkdWluZm9bJ2ZvcmNlX25ld3B3J10gJiYgISRwYXNzd29yZCApIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfcmVxdWlyZWRmaWVsZCcsJ3Bhc3N3b3JkJykgKTsKICAgICAgICBpZiggJHVpbmZvWydmb3JjZV9uZXdwdyddICYmICEkcmVwZWF0ICkgdGhyb3cgbmV3IEZldUNoYW5nZVNldHRpbmdzRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1cmllZGZpZWxkJywncmVwZWF0cGFzc3dvcmQnKSApOwogICAgICAgIGlmKCAkcGFzc3dvcmQgIT0gJHJlcGVhdCAmJiAkcGFzc3dvcmQgIT0gJycpIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpICk7CiAgICAgICAgaWYoICRwYXNzd29yZCAhPSAnJyAmJiAhJHRoaXMtPklzVmFsaWRQYXNzd29yZCgkcGFzc3dvcmQpICkgdGhyb3cgbmV3IEZldUNoYW5nZVNldHRpbmdzRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSApOwogICAgfQoKICAgIC8vIGdldCBwcm9wZXJ0eSBkZWZpbml0aW9ucwogICAgJGRlZm5zYnluYW1lID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKCiAgICAvLyBHZXQgbWVtYmVyIGdyb3VwcwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKCiAgICAvLyBHZXQgZ3JvdXAgcHJvcGVydHkgcmVsYXRpb25zIGludG8gYSB1bmlvbi4KICAgICRwcm9wZXJ0aWVzID0gYXJyYXkoKTsKICAgICR0bXAgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkb25lZ3JvdXAgKSB7CiAgICAgICAgJHByb3ByZWxhdGlvbnMgPSAkdGhpcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJG9uZWdyb3VwWydncm91cGlkJ10gKTsKICAgICAgICAkdG1wID0gXE1BTVNcUlJVdGlsczo6YXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCggJHRtcCwgJHByb3ByZWxhdGlvbnMgKTsKICAgICAgICB1YXNvcnQoICR0bXAsIFsgJ3h0X2FycmF5JywnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JyBdICk7CiAgICB9CiAgICAkcHJvcGVydGllcyA9IHh0X2FycmF5Ojp0b19oYXNoKCR0bXAsJ25hbWUnKTsKCiAgICAkdXNlcnByb3BzID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpOwogICAgJGRlbGV0ZXByb3BzID0gYXJyYXkoKTsKCiAgICAvLyBkbyB2YWxpZGF0aW9uIG9mIHRoZSBmaWVsZHMuCiAgICBmb3JlYWNoKCAkcHJvcGVydGllcyBhcyAkcHJvcG5hbWUgPT4gJHByb3AgKSB7CiAgICAgICAgJGZsZHR5cGUgPSAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsndHlwZSddOwogICAgICAgICRyZXF1aXJlZCA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSAyKTsKICAgICAgICAkaGlkZGVuICAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMyk7CiAgICAgICAgJHJlYWRvbmx5ID0gKCRwcm9wWydyZXF1aXJlZCddID09IDQpOwoKICAgICAgICBzd2l0Y2goICRmbGR0eXBlICkgewogICAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX1RFWFQ6CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdKSB8fCBlbXB0eSgkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZldUNoYW5nZVNldHRpbmdzRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJGRlZm5zYnluYW1lWyRwcm9wbmFtZV1bJ3Byb21wdCddICkgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfQ0hFQ0tCT1g6CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0pICkgewogICAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgKSB7CiAgICAgICAgICAgICAgICBpZiggJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0gPT0gMCApIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfcmVxdWlyZWRmaWVsZCcsICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWydwcm9tcHQnXSkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfRU1BSUw6CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdKSApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRmV1Q2hhbmdlU2V0dGluZ3NFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnKSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5Jc1ZhbGlkRW1haWxBZGRyZXNzKCAkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSwgJHVpZCApOwogICAgICAgICAgICAgICAgICAgIGlmKCAkcmVzdWx0WzBdID09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgICAgICAkZW1sID0gJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGVtYWlsYWRkcmVzcycpLiIgJGVtbCIgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX1RFWFRBUkVBOgogICAgICAgICAgICBpZiggJHJlcXVpcmVkICYmICFpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSkgKSB0aHJvdyBuZXcgRmV1Q2hhbmdlU2V0dGluZ3NFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pICk7CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgJiYgZW1wdHkoJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0pICkgdGhyb3cgbmV3IEZldUNoYW5nZVNldHRpbmdzRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJGRlZm5zYnluYW1lWyRwcm9wbmFtZV1bJ3Byb21wdCddKSApOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfTVVMVElTRUxFQ1Q6CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgJiYgIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdKSApIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfcmVxdWlyZWRmaWVsZCcsICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWydwcm9tcHQnXSkgKTsKICAgICAgICAgICAgLy8gZW5jb2RlIGl0IGludG8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdC4KICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdKSApIHsKICAgICAgICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX0lNQUdFOgogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZS4nX2NsZWFyJ10pICYmCiAgICAgICAgICAgICAgICAkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lLidfY2xlYXInXSA9PSAnY2xlYXInICkgewogICAgICAgICAgICAgICAgLy8gd2UncmUgdG9sZCB0byBjbGVhciBhbiBpbWFnZSBwcm9wZXJ0eSwgd2UgbXVzdCBhbHNvCiAgICAgICAgICAgICAgICAvLyBkZWxldGUgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAkZGVzdERpcjEgPSAkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3BhdGgnXS4nLyc7CiAgICAgICAgICAgICAgICAkZGVzdERpcjEgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCdtYW1zJykuJy8nOwogICAgICAgICAgICAgICAgJGZpbGUxID0gJGRlc3REaXIxLiRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdOwogICAgICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZpbGUxKSApIEB1bmxpbmsoICRmaWxlMSApOwoKICAgICAgICAgICAgICAgIC8vIHVuc2V0IHRoZSBoaWRkZW4gcGFyYW0gdG8gcHJldmVudCBhbnkgZnVydGhlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgICAkZGVsZXRlcHJvcHNbXSA9ICRwcm9wbmFtZTsKICAgICAgICAgICAgICAgIHVuc2V0KCAkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgJiYKICAgICAgICAgICAgICAgICgoIWlzc2V0KCRfRklMRVNbJGlkLidtYW1zX2lucHV0XycuJHByb3BuYW1lXSkgfHwgJF9GSUxFU1skaWQuJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdWydzaXplJ10gPT0gMCkgJiYKICAgICAgICAgICAgICAgICAoIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdKSB8fCAkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSA9PSAnJykpICkgewogICAgICAgICAgICAgICAgLy8gYnV0IHdlIGNhbid0IGZpbmQgYSB2YWx1ZQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZldUNoYW5nZVNldHRpbmdzRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJHByb3BuYW1lICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfREFURToKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWUuJ01vbnRoJ10pICkgewogICAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0gPQogICAgICAgICAgICAgICAgICAgIG1rdGltZSgwLDAsMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZS4nTW9udGgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZS4nRGF5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWUuJ1llYXInXSk7CiAgICAgICAgICAgICAgICB1bnNldCgkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lLidNb250aCddKTsKICAgICAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWUuJ0RheSddKTsKICAgICAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWUuJ1llYXInXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdOwogICAgICAgICAgICBpZiggcHJlZ19tYXRjaCgiL15bMC05XXs0fS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0yXVswLTldfDNbMC0xXSkkLyIsJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSA9IHN0cnRvdGltZSggJHZhbCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWQgJiYgIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdKSApIHRocm93IG5ldyBGZXVDaGFuZ2VTZXR0aW5nc0Vycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfcmVxdWlyZWRmaWVsZCcsICRwcm9wbmFtZSApICk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9EUk9QRE9XTjoKICAgICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9SQURJT0JVVE5TOgogICAgICAgICAgICBpZiggJHJlcXVpcmVkICYmICFpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSkgKSB0aHJvdyBuZXcgRmV1Q2hhbmdlU2V0dGluZ3NFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkcHJvcG5hbWUgKSApOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgLy8gd2UgZG9uJ3QgYWNjZXB0IGZpZWxkIHR5cGVzIGxpa2UgdGhpcwogICAgICAgICAgICB0aHJvdyBuZXcgRmV1Q2hhbmdlU2V0dGluZ3NFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRzZXRwcm9wZXJ0eXR5cGUnLCRwcm9wbmFtZSkgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vayggJ01BTVM6OkNoYW5nZVNldHRpbmdzQWZ0ZXJWYWxpZGF0ZScsIFsgJ3VpZCc9PiR1aWQgXSApOwoKICAgIC8vCiAgICAvLyBub3cgd2UgYWN0dWFsbHkgY2hhbmdlIHRoZSB1c2VyIHNldHRpbmdzCiAgICAvLwoKICAgIC8vIHBhc3N3b3JkCiAgICBpZiggJHBhc3N3b3JkICE9ICcnIHx8ICR1c2VybmFtZSAhPSAnJyApIHsKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPlNldFVzZXIoICR1aWQsICR1c2VybmFtZSwgJHBhc3N3b3JkICk7CiAgICAgICAgJHRoaXMtPkZvcmNlUGFzc3dvcmRDaGFuZ2UoJHVpZCxGQUxTRSk7CiAgICAgICAgaWYoICRyZXN1bHRbMF0gPT0gRkFMU0UgKSB0aHJvdyBuZXcgRmV1Q2hhbmdlU2V0dGluZ3NFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb2JsZW1zZXR0aW5naW5mbycpLicgJy4kcmVzdWx0WzFdICk7CiAgICB9CgogICAgLy8KICAgIC8vIG5vdyBkZWxldGUgYWxsIHRoZSBwcm9wZXJ0aWVzIGZvciB0aGlzIHVzZXIKICAgIC8vIGluIHByZXBhcmF0aW9uIGZvciBzZXR0aW5nIG5ldyBvbmVzLgogICAgLy8KICAgICR0aGlzLT5Gb3JjZUNoYW5nZVNldHRpbmdzKCR1aWQsRkFMU0UpOwogICAgZm9yZWFjaCggJGRlbGV0ZXByb3BzIGFzICRvbmUgKSB7CiAgICAgICAgJHRoaXMtPkRlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoICRvbmUsICR1aWQsIGZhbHNlICk7CiAgICB9CiAgICBmb3JlYWNoKCAkcHJvcGVydGllcyBhcyAkcHJvcG5hbWUgPT4gJHByb3AgKSB7CiAgICAgICAgJHJlcXVpcmVkID0gKCRwcm9wWydyZXF1aXJlZCddID09IDIpOwogICAgICAgICRoaWRkZW4gPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMyk7CiAgICAgICAgJHJlYWRvbmx5ID0gKCRwcm9wWydyZXF1aXJlZCddID09IDQpOwogICAgICAgICRmbGR0eXBlICA9ICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWyd0eXBlJ107CiAgICAgICAgJGZvcmNlX3VuaXF1ZSA9ICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWydmb3JjZV91bmlxdWUnXTsKICAgICAgICAkdmFsID0gbnVsbDsKCiAgICAgICAgaWYoICFpc3NldCggJHBhcmFtc1snbWFtc19pbnB1dF8nLiRwcm9wbmFtZV0gKSApIGNvbnRpbnVlOwogICAgICAgIGlmKCAkcmVhZG9ubHkgfHwgJGhpZGRlbiApIGNvbnRpbnVlOyAvLyBjYW5ub3Qgc2V0IHJlYWRvbmx5IG9yIGhpZGRlbiBmaWVsZHMKCiAgICAgICAgaWYoICRmbGR0eXBlID09IE1BTVM6OkZJRUxEVFlQRV9JTUFHRSAgKSB7CiAgICAgICAgICAgIC8vIGltYWdlIHR5cGUKICAgICAgICAgICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWVdOwogICAgICAgICAgICBpZiggaXNzZXQoICRfRklMRVNbJGlkLidtYW1zX2lucHV0XycuJHByb3BuYW1lXSApICYmICRfRklMRVNbJGlkLidtYW1zX2lucHV0XycuJHByb3BuYW1lXVsnc2l6ZSddID4gMCkgewogICAgICAgICAgICAgICAgLy8gSXQgaXMgYW4gdXBsb2FkIGZpbGUgdHlwZQogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5NYW5hZ2VJbWFnZVVwbG9hZCgkaWQuJ21hbXNfaW5wdXRfJy4kcHJvcG5hbWUsICRwcm9wbmFtZSApOwogICAgICAgICAgICAgICAgaWYoICRyZXN1bHRbMF0gPT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snZXJyb3InXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yJykuJyZuYnNwOycuJHJlc3VsdFsxXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR2YWwgPSAkcmVzdWx0WzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdmFsID0gdHJpbSgkcGFyYW1zWydtYW1zX2lucHV0XycuJHByb3BuYW1lXSk7CiAgICAgICAgICAgICR2YWwgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWwpOwoKICAgICAgICAgICAgaWYoICRmbGR0eXBlID09IE1BTVM6OkZJRUxEVFlQRV9URVhUICkgewogICAgICAgICAgICAgICAgJHZhbCA9IGZpbHRlcl92YXIoJHZhbCxGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCAkZmxkdHlwZSA9PSBNQU1TOjpGSUVMRFRZUEVfVEVYVEFSRUEgKSB7CiAgICAgICAgICAgICAgICAkdmFsID0geHRfdXRpbHM6OmNsZWFuX2lucHV0X2h0bWwoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGNoZWNrIGZvciBmb3JjZWQgdW5pcXVlIHZhbHVlcy4KICAgICAgICBpZiggJHZhbCAmJiAkZm9yY2VfdW5pcXVlICYmICEkdGhpcy0+SXNVc2VyUHJvcGVydHlWYWx1ZVVuaXF1ZSggJHVpZCwgJHByb3BuYW1lLCAkdmFsICkgKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwogICAgICAgICAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfdXNlcl9ub251bmlxdWVfZmllbGRfdmFsdWUnLCRwcm9wbmFtZSk7CiAgICAgICAgICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdjaGFuZ2VzZXR0aW5ncycsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkcmV0ID0gJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoICRwcm9wbmFtZSwgJHZhbCwgJHVpZCApOwogICAgICAgIGlmKCAkcmV0ID09IGZhbHNlICkgewogICAgICAgICAgICAkcGFyYW1zWydlcnJvciddID0gMTsKICAgICAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3NldHRpbmdwcm9wZXJ0eScpLicgJy4kcHJvcG5hbWU7CiAgICAgICAgICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdjaGFuZ2VzZXR0aW5ncycsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCdjaGFuZ2Ugc2V0dGluZ3MnKTsKCiAgICAvLyBzZW5kIGEgaG9vawogICAgJGV2ZW50X3BhcmFtcyA9IGFycmF5KCk7CiAgICAkZXZlbnRfcGFyYW1zWyduYW1lJ10gPSAkdWluZm9bJ3VzZXJuYW1lJ107CiAgICAkZXZlbnRfcGFyYW1zWydpZCddID0gJHVpZDsKICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywkZXZlbnRfcGFyYW1zKTsKCn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkZXJyID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwogICAgJHBhcmFtc1snbWVzc2FnZSddID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdjaGFuZ2VzZXR0aW5ncycsICRyZXR1cm5pZCwgJHBhcmFtcyApOwp9CgppZiggJHJldHVybnRvICkgewogICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRyZXR1cm50byk7CiAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7Cn0KaWYoICgkdXJsID0gJHRoaXMtPkdldFBvc3RMb2dpblVSTCgpICkgKSB7CiAgICByZWRpcmVjdCgkdXJsKTsKfQplbHNlIGlmKCAoJHRwbHN0ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfYWZ0ZXJjaGFuZ2VzZXR0aW5ncycpKSApIHsKICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbHN0cik7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdWluZm9bJ3VzZXJuYW1lJ10pOwogICAgJHRwbC0+YXNzaWduKCd1c2VyaW5mbycsJHVpbmZvKTsKICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR0aGlzLT5Mb2dnZWRpbklkKCkgKTsKICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICR0cGwtPmFzc2lnbignZ3JvdXAnLCRncm91cG5hbWUpOwogICAgJHRtcCA9IHRyaW0oJHRwbC0+ZmV0Y2goKSk7CiAgICBpZiggJHRtcCApIHsKICAgICAgICAkcGFnZWlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCk7CiAgICAgICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwogICAgfQp9CgokcGFybXMgPSBhcnJheSgnbWVzc2FnZSc9PiR0aGlzLT5MYW5nKCdtc2dfc2V0dGluZ3NjaGFuZ2VkJykpOwokdGhpcy0+bXlSZWRpcmVjdCgnY250bnQwMScsJ2xvZ291dGZvcm0nLCRyZXR1cm5pZCwkcGFybXMpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.forgotpw.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHVzZXJuYW1lID0gJGVtYWlsID0gbnVsbDsKJGVycm9yID0gbnVsbDsKJG1lc3NhZ2UgPSBudWxsOwokdXNlcm5hbWVfaXNfZW1haWwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnLDApOwokbm9jYXB0Y2hhID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdub2NhcHRjaGEnLEZBTFNFKTsKJHJldHVybnRvID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3JldHVybnRvJywkcmV0dXJuaWQpOwoKJHRoZXRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCdmb3Jnb3Rwd3RlbXBsYXRlJywnTUFNUzo6Zm9yZ290IHBhc3N3b3JkIGZvcm0nKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfY2FuY2VsJ10pICkgewogICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJudG8pOwp9CmVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgdHJ5IHsKICAgICAgICBpZiggIVx4dF91dGlsczo6dmFsaWRfZm9ybV9jc3JmKCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3Jfc2VjdXJpdHknKSApOwoKICAgICAgICAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBhIHVzZXJuYW1lCiAgICAgICAgJHVzZXJuYW1lID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfdXNlcm5hbWUnKTsKICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgICAgIGlmKCAkdXNlcm5hbWVfaXNfZW1haWwgJiYgIWlzX2VtYWlsKCR1c2VybmFtZSkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnKSk7CgogICAgICAgIC8vIHZhbGlkYXRlIHRoZSBjYXB0Y2hhCiAgICAgICAgaWYoICEkbm9jYXB0Y2hhICkgewogICAgICAgICAgICAkY2FwdGNoYSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NhcHRjaGEnKTsKICAgICAgICAgICAgaWYoIGlzX29iamVjdCgkY2FwdGNoYSkgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfaW5wdXRfY2FwdGNoYScpKSApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY2FwdGNoYW1pc21hdGNoJykpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIGZpbmQgdGhpcyB1c2VyCiAgICAgICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoJHVzZXJuYW1lKTsKICAgICAgICBpZiggISR1aWQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgICAgICAkdG1wID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgICAgIGlmKCAhJHRtcCB8fCAhJHRtcFswXSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY291bGRub3RmaW5kZW1haWwnKSk7CiAgICAgICAgJHVzZXJfaW5mbyA9ICR0bXBbMV07CiAgICAgICAgdW5zZXQoJHRtcCk7CiAgICAgICAgaWYoICR1c2VyX2luZm9bJ2Rpc2FibGVkJ10gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjY291bnRkaXNhYmxlZCcpKTsKICAgICAgICBpZiggdGltZSgpID4gc3RydG90aW1lKCR1c2VyX2luZm9bJ2V4cGlyZXMnXSkgKSAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZXhwaXJlZCcpKTsKICAgICAgICAkZW1haWwgPSAkdXNlcm5hbWU7CiAgICAgICAgaWYoICEkdXNlcm5hbWVfaXNfZW1haWwgKSB7CiAgICAgICAgICAgICRlbWFpbCA9ICR0aGlzLT5HZXRFbWFpbCgkdWlkKTsKICAgICAgICAgICAgaWYoICEkZW1haWwgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90ZmluZGVtYWlsJykpOwogICAgICAgIH0KCiAgICAgICAgLy8gc2VlIGlmIHdlIGhhdmUgYSB0ZW1wY29kZSBmb3IgdGhpcyB1c2VyIGFscmVhZHkKICAgICAgICBpZiggISR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJykgJiYgJHRoaXMtPkdldFVzZXJUZW1wQ29kZSgkdWlkKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXNldGFscmVhZHlzZW50JykpOwogICAgICAgIH0KCiAgICAgICAgLy8KICAgICAgICAvLyB3b290Li4uIGF0IHRoaXMgcG9pbnQgaXQgYWxsIHdvcmtlZC4KICAgICAgICAvLyByZWFkeSB0byBnZXQgYSB0ZW1wIGNvZGUgYW5kIHNlbmQgYW4gZW1haWwuCiAgICAgICAgLy8KICAgICAgICAkY29kZSA9IHN1YnN0cihzdHJ0b3VwcGVyKG1kNShfX0ZJTEVfXy4kdXNlcm5hbWUubWljcm90aW1lKCkpKSwwLDI1KTsKICAgICAgICAkdGhpcy0+U2V0VXNlclRlbXBDb2RlKCAkdWlkLCAkY29kZSApOwoKICAgICAgICAvLyBzZW5kIG91ciBmdW5reSBlbWFpbAogICAgICAgICRkZXN0cGFnZSA9ICRyZXR1cm5pZDsKICAgICAgICAkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcpOwogICAgICAgIGlmKCAkdG1wICkgJGRlc3RwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCk7CgogICAgICAgICR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnZm9yZ290cHdlbWFpbHRlbXBsYXRlJywnTUFNUzo6Zm9yZ290IHBhc3N3b3JkIGVtYWlsJyk7CiAgICAgICAgJHRwbDIgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3RpdGxlX2ZvcmdvdHB3ZW1haWwnKSk7CiAgICAgICAgJHRwbDItPmFzc2lnbignbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJywkdGhpcy0+TGFuZygnbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJykpOwogICAgICAgICR0cGwyLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdtYWlsJywkdGhpcy0+TGFuZygnbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJykpOwogICAgICAgICR0cGwyLT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5MYW5nKCdtZXNzYWdlX2ZvcmdvdHB3ZW1haWwnKSk7CiAgICAgICAgJHRwbDItPmFzc2lnbigncHJvbXB0X2NvZGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfY29kZScpKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdkYXRhX2NvZGUnLCRjb2RlKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdwcm9tcHRfbGluaycsJHRoaXMtPkxhbmcoJ3Byb21wdF9saW5rJykpOwogICAgICAgICRwcmV0dHkgPSAibWFtcy92ZXJpZnljb2RlLyRkZXN0cGFnZS8kdWlkLyRjb2RlIjsKICAgICAgICAkcGFybXMgPSBhcnJheSgndWlkJz0+JHVpZCwnY29kZSc9PiRjb2RlKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdkYXRhX3VybCcsJHRoaXMtPmNyZWF0ZV91cmwoJ2NudG50MCcsJ3ZlcmlmeWNvZGUnLCRkZXN0cGFnZSwkcGFybXMsZmFsc2UsZmFsc2UsJHByZXR0eSkpOwogICAgICAgICRib2R5ID0gJHRwbDItPmZldGNoKCk7CgogICAgICAgICRjbXNtYWlsZXIgPSBuZXcgXGNtc19tYWlsZXIoKTsKICAgICAgICAkY21zbWFpbGVyLT5yZXNldCgpOwogICAgICAgICRjbXNtYWlsZXItPkFkZEFkZHJlc3MoJGVtYWlsKTsKICAgICAgICAkY21zbWFpbGVyLT5TZXRCb2R5KCRib2R5KTsKICAgICAgICAkY21zbWFpbGVyLT5TZXRTdWJqZWN0KCR0aGlzLT5MYW5nKCdsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0JykpOwogICAgICAgICRjbXNtYWlsZXItPklzSFRNTCh0cnVlKTsKICAgICAgICAkY21zbWFpbGVyLT5TZXRQcmlvcml0eSgxKTsKICAgICAgICAkY21zbWFpbGVyLT5TZW5kKCk7CgogICAgICAgIC8vIGF1ZGl0IHNvbWV0aGluZwogICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwnUmVxdWVzdGVkIGEgcGFzc3dvcmQgcmVzZXQgY29kZScpOwoKICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwnZm9yZ290cHcnKTsKCiAgICAgICAgLy8gYW5kIHdlJ3JlIGRvbmUsIGRvIGEgcmVkaXJlY3QgYWZ0ZXIgcG9zdAogICAgICAgICR0aGlzLT5TaG93Rm9ybWF0dGVkTWVzc2FnZSgkdGhpcy0+TGFuZygnaW5mb19mb3Jnb3Rwd21lc3NhZ2VzZW50JywkZW1haWwpLGZhbHNlLCR0aGlzLT5MYW5nKCd0aXRsZV9mb3Jnb3RwdycpKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAkZXJyb3IgPSAxOwogICAgICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgIH0KfQoKLy8gY3JlYXRlIGFuZCBkaXNwbGF5IHRoZSB0ZW1wbGF0ZS4KJHRwbC0+YXNzaWduKCdlcnJvcicsJGVycm9yKTsKJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbWVzc2FnZSk7CiR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiRjYXB0Y2hhID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdDYXB0Y2hhJyk7CmlmKCBpc19vYmplY3QoJGNhcHRjaGEpICYmICEkbm9jYXB0Y2hhICkgewogICAgJHRwbC0+YXNzaWduKCdjYXB0Y2hhX3RpdGxlJywkdGhpcy0+TGFuZygnY2FwdGNoYV90aXRsZScpKTsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYScsJGNhcHRjaGEtPmdldENhcHRjaGEoKSk7CiAgICAkdGVzdCA9IG1ldGhvZF9leGlzdHMoJGNhcHRjaGEsICdOZWVkc0lucHV0RmllbGQnKSA/ICRjYXB0Y2hhLT5OZWVkc0lucHV0RmllbGQoKSA6IHRydWU7CiAgICBpZiggJHRlc3QgKSAkdHBsLT5hc3NpZ24oJ2lucHV0X2NhcHRjaGEnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbWFtc19pbnB1dF9jYXB0Y2hhJywnJywxMCkpOwp9CiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1snbm9jYXB0Y2hhJ10gPSAkbm9jYXB0Y2hhOwokcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiR0cGwtPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2ZvcmdvdHB3JywgJHJldHVybmlkLCAkcGFybXMgKSk7CiR0cGwtPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiR0cGwtPmFzc2lnbigndXNlcm5hbWVfaXNfZW1haWwnLCR1c2VybmFtZV9pc19lbWFpbCk7CiR0cGwtPmFzc2lnbigndW5mbGRsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcpKTsKJHRwbC0+YXNzaWduKCdtYXhfdW5mbGRsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiR0cGwtPmRpc3BsYXkoKTsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/action.getfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsKaWYoICgkdWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKSkgPCAxICkgdGhyb3cgbmV3IFxDbXNFcnJvcjQwM0V4Y2VwdGlvbigpOwoKLy8gZG93bmxvYWQgYW4gaW1hZ2UuLi4gb3IgYSBmaWxlLCBvciBkdW1wIGFuIGltYWdlIHRvIHN0ZG91dAovLyBqdXN0IHdpdGggb2JmdXNjYXRpb24gc28gdGhhdCB0aGUgZmlsZW5hbWUgYW5kIHBhdGggYXJlIG5vdCBvYnZpb3VzLgovLyBhbmQgd2l0aCBGRVUgcHJvdGVjdGlvbgokcGFyYW1zID0gXHh0X3V0aWxzOjpkZWNyeXB0X3BhcmFtcyggJHBhcmFtcyApOwokZmlsZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZyggJHBhcmFtcywgJ2ZpbGUnICk7CiRkbCA9IFx4dF9wYXJhbTo6Z2V0X2Jvb2woICRwYXJhbXMsICdkb3dubG9hZCcgKTsKJGdyb3VwcyA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZyggJHBhcmFtcywgJ2dyb3VwcycgKTsKJG5vY2FjaGUgPSBceHRfcGFyYW06OmdldF9ib29sKCAkcGFyYW1zLCAnbm9jYWNoZScgKTsKCmlmKCAkZ3JvdXBzICkgewogICAgLy8gY29udmVydCBwZXJtaXR0ZWQgZ3JvdXBzIGludG8gZ2lkcy4KICAgICRncm91cHMgPSBleHBsb2RlKCcsJywkZ3JvdXBzKTsKICAgICRhbGxfZ3JvdXBzID0gJHRoaXMtPkdldEdyb3VwTGlzdCgpOwogICAgJGFsbG93ZWRfZ3JvdXBzID0gbnVsbDsKICAgIGZvcmVhY2goICRncm91cHMgYXMgJGdyb3VwX25hbWUgKSB7CiAgICAgICAgJGdyb3VwX25hbWUgPSB0cmltKCRncm91cF9uYW1lKTsKICAgICAgICBpZiggISRncm91cF9uYW1lICkgY29udGludWU7CiAgICAgICAgaWYoIGlzc2V0KCAkYWxsX2dyb3Vwc1skZ3JvdXBfbmFtZV0pICkgJGFsbG93ZWRfZ3JvdXBzID0gJGFsbF9ncm91cHNbJGdyb3VwX25hbWVdOwogICAgfQoKICAgIC8vIHNlZSBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGluIG9uZSBvZiB0aGVzZSBncm91cHMKICAgIGlmKCAhICR0aGlzLT5NZW1iZXJPZkdyb3VwKCAkdWlkLCAkYWxsb3dlZF9ncm91cHMgKSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDNFeGNlcHRpb24oKTsKfQoKaWYoICRmaWxlICkgewogICAgaWYoICFpc19maWxlKCAkZmlsZSApICkgdGhyb3cgbmV3IFxDbXNFcnJvcjQwNEV4Y2VwdGlvbigpOwoKICAgICRtaW1lX3R5cGUgPSBceHRfdXRpbHM6OmdldF9taW1lX3R5cGUoICRmaWxlICk7CiAgICBpZiggISBzdGFydHN3aXRoKCAkbWltZV90eXBlLCAnaW1hZ2UvJykgKSAkZGwgPSB0cnVlOwogICAgaWYoICRkbCApIFx4dF91dGlsczo6c2VuZF9maWxlX2FuZF9leGl0KCAkZmlsZSApOwoKICAgIC8vIGl0cyBhbiBpbWFnZS4KICAgIC8vIHNvIGp1c3QgcGFzc3Rocm91Z2ggdGhlIGltYWdlCiAgICBpZiggJG5vY2FjaGUgKSB7CiAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IHByaXZhdGUnLGZhbHNlKTsKICAgIH0KICAgIGhlYWRlcignQ29udGVudC10eXBlOiAnLiRtaW1lX3R5cGUpOwogICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7CgogICAgJGNodW5rc2l6ZSA9IDY1NTM1OwogICAgJGhhbmRsZT1mb3BlbigkZmlsZSwncmInKTsKICAgICRjb250ZW50cyA9ICcnOwogICAgZG8gewogICAgICAgICRkYXRhID0gZnJlYWQoJGhhbmRsZSwkY2h1bmtzaXplKTsKICAgICAgICBpZiggc3RybGVuKCRkYXRhKSA9PSAwICkgYnJlYWs7CiAgICAgICAgcHJpbnQoJGRhdGEpOwogICAgfSB3aGlsZSh0cnVlKTsKICAgIGZjbG9zZSgkaGFuZGxlKTsKfQpleGl0KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.login.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKCmlmKCAhY2xhc3NfZXhpc3RzKCdGZXVMb2dpbkZhaWxlZGV4Y2VwdGlvbicpICkgewogICAgY2xhc3MgRmV1TG9naW5GYWlsZWRFeGNlcHRpb24gZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQp9CgoKJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKCi8vIHRoaXMgaXMgdGhlIHN0YW5kYXJkIGxvZ2luLi4uIHNob3VsZCBhbGwgZ28gaW4gdGhlIG1hbXNfc3RkX2NvbnN1bWVyIGNsYXNzLgp0cnkgewogICAgJGVycm9yID0gJHVzZXJuYW1lID0gJHBhc3N3b3JkID0gJHJlbWVtYmVybWUgPSBudWxsOwogICAgJGlubGluZSA9IFx4dF9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywnaW5saW5lJyk7CiAgICAkbm9jYXB0Y2hhID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdub2NhcHRjaGEnKTsKICAgICRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdyZXR1cm50bycpOwogICAgJG9ubHlncm91cHMgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnb25seV9ncm91cHMnKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgICAgICR1c2VybmFtZSA9ICRpcCA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gY2hlY2sgdGhlIENTUkYgc3R1ZmYuCiAgICAgICAgICAgIGlmKCAhXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykgKTsKCiAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBob25leXBvdAogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19fZGF0YSddKSApIHsKICAgICAgICAgICAgICAgICRob25leXBvdCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX19kYXRhJyk7CiAgICAgICAgICAgICAgICBpZiggJGhvbmV5cG90ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9zZWN1cml0eScpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgZ3V0cyBvZiB0aGUgbG9naW4gcHJvY2Vzcy4KICAgICAgICAgICAgJHVzZXJuYW1lID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF91c2VybmFtZScpKTsKICAgICAgICAgICAgJHBhc3N3b3JkID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF9wYXNzd29yZCcpKTsKICAgICAgICAgICAgJHJlbWVtYmVybWUgPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ21hbXNfcmVtZW1iZXJtZScpOwoKICAgICAgICAgICAgLy8gY2hlY2sgdXNlcm5hbWUgJiBwYXNzd29yZAogICAgICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3VzZXJuYW1lJykpOwogICAgICAgICAgICBpZiggISRwYXNzd29yZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3Bhc3N3b3JkJykpOwoKICAgICAgICAgICAgLy8gZG8gQmVmb3JlTG9naW4uLi4gdGhlc2UgcmVmZXJlbmNlcyBhcmUgcHJldHR5IGhhY2t5CiAgICAgICAgICAgICRpcCA9IFx4dF91dGlsczo6Z2V0X3JlYWxfaXAoKTsKICAgICAgICAgICAgJG9rID0gdHJ1ZTsKICAgICAgICAgICAgJG1zZyA9IG51bGw7CiAgICAgICAgICAgICRwYXJtcyA9IFsgJ3VzZXJuYW1lJz0+JHVzZXJuYW1lLCAnZ3JvdXBzJz0+JG9ubHlncm91cHMsICdpcCc9PiRpcCwgJ2FsbG93Jz0+JiRvaywgJ21lc3NhZ2UnPT4mJG1zZyBdOwogICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6OkJlZm9yZUxvZ2luJywgJHBhcm1zICk7CiAgICAgICAgICAgIGlmKCAhXGNtc190b19ib29sKCRvaykgKSB0aHJvdyBuZXcgXEZldUxvZ2luRmFpbGVkRXhjZXB0aW9uKCRtc2cpOwoKICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGNhcHRjaGEKICAgICAgICAgICAgaWYoICEkbm9jYXB0Y2hhICkgewogICAgICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgICAgICBpZiggaXNfb2JqZWN0KCRjYXB0Y2hhKSAmJiAhJGNhcHRjaGEtPkNoZWNrQ2FwdGNoYShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF9jYXB0Y2hhJykpICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRmV1TG9naW5GYWlsZWRFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCcpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY2hlY2sgcGFzc3dvcmQsIGJ1dCBkbyBub3QgbG9naW4KICAgICAgICAgICAgJHVpZCA9ICR0aGlzLT5DaGVja1Bhc3N3b3JkKCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJG9ubHlncm91cHMgKTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxGZXVMb2dpbkZhaWxlZEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbG9naW5mYWlsZWQnKSk7CgogICAgICAgICAgICAvLyBsb2dpbiBwYXNzZWQuLi4gbm93IGRvIHRoZSBhZnRlcmxvZ2luYXV0aCBldmVudAogICAgICAgICAgICAvLyB0byBzZWUgaWYgYW55IG90aGVyIG1vZHVsZSBpcyBwcmV2ZW50aW5nIGxvZ2luLgogICAgICAgICAgICAvLyByZWZlcmVuY2VzIGFyZSBwcmV0dHkgaGFja3kuCiAgICAgICAgICAgICRvayA9IHRydWU7CiAgICAgICAgICAgICRtc2cgPSBudWxsOwogICAgICAgICAgICAkcGFybXMgPSBbICdpZCc9PiR1aWQsICd1c2VybmFtZSc9PiR1c2VybmFtZSwgJ2dyb3Vwcyc9PiRvbmx5Z3JvdXBzLCAnaXAnPT4kaXAsICdhbGxvdyc9PiYkb2ssICdtZXNzYWdlJz0+JiRtc2cgXTsKICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpBZnRlckxvZ2luQXV0aCcsICRwYXJtcyApOwogICAgICAgICAgICBpZiggIVxjbXNfdG9fYm9vbCgkb2spICkgdGhyb3cgbmV3IFxGZXVMb2dpbkZhaWxlZEV4Y2VwdGlvbigkbXNnKTsKCiAgICAgICAgICAgIC8vIGdldCB1aWQgYW5kIHVzZXJpbmZvCiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAgICAgICAgIGlmKCAhJHJlc1swXSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOyAvLyBzaG91bGQgbmV2ZXIgZXZlciBoYXBwZW4uCiAgICAgICAgICAgICR1c2VyX2luZm8gPSAkcmVzWzFdOwoKICAgICAgICAgICAgaWYoICFlbXB0eSgkdXNlcl9pbmZvWydtdXN0X3ZhbGlkYXRlJ10pICYmICR1c2VyX2luZm9bJ211c3RfdmFsaWRhdGUnXSApIHsKICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIHRoZSB2ZXJpZnlvbmx5IGFjdGlvbi4uLgogICAgICAgICAgICAgICAgLy8gc3RvcmUgdXNlcm5hbWUgLyBwYXNzd29yZCAvIGdyb3VwcwogICAgICAgICAgICAgICAgJHRlbXBjb2RlID0gJHRoaXMtPkdldFVzZXJUZW1wQ29kZSggJHVpZCApOwogICAgICAgICAgICAgICAgaWYoICR0ZW1wY29kZSApIHsKICAgICAgICAgICAgICAgICAgICBcbWFtc191dGlsczo6c2F2ZV90ZW1wX2xvZ2luZGF0YSggJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRvbmx5Z3JvdXBzICk7CiAgICAgICAgICAgICAgICAgICAgJGFzc2lzdGFudCA9ICR0aGlzLT5nZXRfdmVyaWZpY2F0aW9uX2Fzc2lzdGFudCgpOwogICAgICAgICAgICAgICAgICAgICR1cmwgPSAkYXNzaXN0YW50LT5nZXRfdmVyaWZ5X2Zvcm1fdXJsKCAkdWlkICk7CiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QoJHVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFjdHVhbGx5IGxvZyB0aGUgdXNlciBpbi4KICAgICAgICAgICAgJHJlcyA9ICR0aGlzLT5Mb2dpbiggJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRvbmx5Z3JvdXBzKTsKICAgICAgICAgICAgaWYoICEkcmVzWzBdICkgdGhyb3cgbmV3IFxGZXVMb2dpbkZhaWxlZEV4Y2VwdGlvbigkcmVzWzFdKTsKICAgICAgICAgICAgJHVpZCA9ICRyZXNbMF07CgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyB3ZSdyZSBsb2dnZWQgaW4KICAgICAgICAgICAgLy8KCiAgICAgICAgICAgIGlmKCAkdXNlcl9pbmZvWydtdXN0X3ZhbGlkYXRlJ10gKSB7CiAgICAgICAgICAgICAgICAvLyBmb3JjZSB0aGUgdXNlciB0byB2YWxpZGF0ZSB0aGVtc2VsdmVzLgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkdXNlcl9pbmZvWydmb3JjZV9jaHNldHRpbmdzJ10gKSB7CiAgICAgICAgICAgICAgICAvLyBmb3JjZSB1c2VyIHRvIGNoYW5nZSBzZXR0aW5ncy4KICAgICAgICAgICAgICAgICRjc3BhZ2UgPSAkcmV0dXJuaWQ7CiAgICAgICAgICAgICAgICBpZiggKCR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJykpICkgeyAgLy8gdGVzdCBtZQogICAgICAgICAgICAgICAgICAgICR0cGwyID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJ3N0cmluZzonLiR0bXApOwogICAgICAgICAgICAgICAgICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKICAgICAgICAgICAgICAgICAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAgICAgICAgICAgICAgICAgJHRwbDItPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJHRwbDItPmFzc2lnbignZ3JvdXAnLCRncm91cG5hbWUpOwogICAgICAgICAgICAgICAgICAgICR0bXAgPSAkdHBsMi0+ZmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHRtcCApICRjc3BhZ2UgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wLCRyZXR1cm5pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcGFybXMgPSBhcnJheSgndWlkJz0+JHVpZCk7CiAgICAgICAgICAgICAgICBpZiggJHJldHVybnRvICkgJHBhcm1zWydyZXR1cm50byddID0gJHJldHVybnRvOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0Rm9yRnJvbnRlbmQoJGlkLCRjc3BhZ2UsJ2NoYW5nZXNldHRpbmdzJywkcGFybXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkdXNlcl9pbmZvWydmb3JjZV9uZXdwdyddICkgewogICAgICAgICAgICAgICAgLy8gdXNlciBjYW5ub3QgYmUgcmVtZW1iZXJlZCBpZiBmb3JjZSBwYXNzd29yZCByZXNldCAoZm9yIHNlY3VyaXR5KQogICAgICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJ3VpZCc9PiR1aWQpOwogICAgICAgICAgICAgICAgaWYoICRyZXR1cm50byApICRwYXJtc1sncmV0dXJudG8nXSA9ICRyZXR1cm50bzsKICAgICAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdEZvckZyb250ZW5kKCRpZCwkcmV0dXJuaWQsJ3VzZXJfZm9yY2VuZXdwdycsJHBhcm1zKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICRyZW1lbWJlcm1lICkgJHRoaXMtPlNldFBlcm1hbmVudENvb2tpZSgkdWlkKTsKCiAgICAgICAgICAgIC8vIHJlZGlyZWN0IHNvbWV3aGVyZSA/CiAgICAgICAgICAgIGlmKCAkcmV0dXJudG8gKSB7CiAgICAgICAgICAgICAgICAvLyBhIHBhZ2UgaWQgb3IgYWxpYXMKICAgICAgICAgICAgICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcmV0dXJudG8pOwogICAgICAgICAgICAgICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAoJHVybCA9ICR0aGlzLT5HZXRQb3N0TG9naW5VUkwoKSApICkgewogICAgICAgICAgICAgICAgLy8gdGhpcyBvdmVycmlkZXMgdGhlIHByZWZlcmVuY2UsIGJ1dCBub3QgcmV0dXJudG8uCiAgICAgICAgICAgICAgICByZWRpcmVjdCgkdXJsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCAoJHRwbHN0ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nKSkgKSB7CiAgICAgICAgICAgICAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJ3N0cmluZzonLiR0cGxzdHIpOwogICAgICAgICAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgICAgICAgICAgICAgJGdyb3VwbmFtZSA9ICR0aGlzLT5HZXRHcm91cE5hbWUoICRncm91cHNbMF1bJ2dyb3VwaWQnXSApOwogICAgICAgICAgICAgICAgJHRwbC0+YXNzaWduKCd1c2VybmFtZScsJHVzZXJuYW1lKTsKICAgICAgICAgICAgICAgICR0cGwtPmFzc2lnbignZ3JvdXAnLCRncm91cG5hbWUpOwogICAgICAgICAgICAgICAgJHRtcCA9IHRyaW0oJHRwbC0+ZmV0Y2goKSk7CiAgICAgICAgICAgICAgICBpZiggJHRtcCApIHsKICAgICAgICAgICAgICAgICAgICAkcGFnZWlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCk7CiAgICAgICAgICAgICAgICAgICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGFsbCBlbHNlIGZhaWxzLCByZWRpcmVjdCBiYWNrIHRvIG91ciBjdXJyZW4gcGFnZS4KICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCggJHJldHVybmlkICk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRmV1TG9naW5GYWlsZWRFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0xvZ2luIGZhaWxlZCBmb3IgdXNlciAnLiR1c2VybmFtZSk7CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dpbkZhaWxlZCcsIFsgJ3VzZXJuYW1lJyA9PiAkdXNlcm5hbWUsICdpcCc9PiRpcCwgJ21zZycgPT4gJGVycm9yIF0gKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGJ1aWxkIHRoZSBmb3JtCiAgICAkY29udGVudCA9IFxjbXNfdXRpbHM6OmdldF9jdXJyZW50X2NvbnRlbnQoKTsKICAgIGlmKCBnZXRfY2xhc3MoJGNvbnRlbnQpID09ICdFcnJvclBhZ2UnICkgewogICAgICAgIC8vIHdlJ3JlIGJlaW5nIGNhbGxlZCBmcm9tIGFuIGVycm9yIHBhZ2UuLi4gc28gd2hlbiB3ZSdyZSBkb25lIHdlIHdhbnQgdG8gcmVkaXJlY3QgYmFjayB0byB0aGUKICAgICAgICAvLyByZXF1ZXN0ZWQgcGFnZSwgaWYgZW5hYmxlZC4KICAgICAgICAkdGhpcy0+U2V0UG9zdExvZ2luVVJMKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTsKICAgIH0KCiAgICAkdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2xvZ2ludGVtcGxhdGUnLCdNQU1TOjpsb2dpbiBmb3JtJyk7CiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWydpbmxpbmUnXSA9ICRpbmxpbmU7CiAgICAkcGFybXNbJ25vY2FwdGNoYSddID0gJG5vY2FwdGNoYTsKICAgICRwYXJtc1sncmV0dXJudG8nXSA9ICRyZXR1cm50bzsKICAgICRwYXJtc1snb25seV9ncm91cHMnXSA9ICRvbmx5Z3JvdXBzOwogICAgJHRwbC0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2xvZ2luJywgJHJldHVybmlkLCAkcGFybXMsICRpbmxpbmUgKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiAgICAkY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwogICAgaWYoIGlzX29iamVjdCgkY2FwdGNoYSkgJiYgISRub2NhcHRjaGEgKSB7CiAgICAgICAgJHRlc3QgPSBtZXRob2RfZXhpc3RzKCRjYXB0Y2hhLCAnTmVlZHNJbnB1dEZpZWxkJykgPyAkY2FwdGNoYS0+TmVlZHNJbnB1dEZpZWxkKCkgOiB0cnVlOwogICAgICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV90aXRsZScsICR0aGlzLT5MYW5nKCdjYXB0Y2hhX3RpdGxlJykpOwogICAgICAgICR0cGwtPmFzc2lnbignY2FwdGNoYScsICRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCkpOwogICAgICAgICR0cGwtPmFzc2lnbignbmVlZF9jYXB0Y2hhX2lucHV0JywkdGVzdCk7CiAgICB9CgogICAgJHRwbC0+YXNzaWduKCdlcnJvcicsJGVycm9yKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWVfaXNfZW1haWwnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpKTsKICAgICR0cGwtPmFzc2lnbignZmxkbmFtZV91c2VybmFtZScsJGlkLidtYW1zX2lucHV0X3VzZXJuYW1lJyk7CiAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF91c2VybmFtZScsJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCkpOwogICAgJHRwbC0+YXNzaWduKCd1c2VybmFtZV9tYXhsZW5ndGgnLCR0aGlzLT5YVEdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcsMjApKTsKICAgICR0cGwtPmFzc2lnbigncGFzc3dvcmRfbWF4bGVuZ3RoJywkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnLDIwKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX3NpemUnLG1heCgzLChpbnQpJHRoaXMtPlhUR2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLDEwKSkpOwogICAgJHRwbC0+YXNzaWduKCdwYXNzd29yZF9zaXplJyxtYXgoMywkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcsMTApKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgJHRwbC0+YXNzaWduKCdwYXNzd29yZCcsJHBhc3N3b3JkKTsKICAgICR0cGwtPmFzc2lnbigncmVtZW1iZXJtZScsJHJlbWVtYmVybWUpOwogICAgJHRwbC0+YXNzaWduKCdmbGRuYW1lX3Bhc3N3b3JkJywkaWQuJ21hbXNfaW5wdXRfcGFzc3dvcmQnKTsKICAgICR0cGwtPmFzc2lnbigncHJvbXB0X3Bhc3N3b3JkJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpKTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScpICkgewogICAgICAgICR0cGwtPmFzc2lnbigncHJvbXB0X3JlbWVtYmVybWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfcmVtZW1iZXJtZScpKTsgLy8gY2FuIGdldCByaWQgb2YgdGhpcyB0b28KICAgICAgICAkdHBsLT5hc3NpZ24oJ2ZsZG5hbWVfcmVtZW1iZXJtZScsJGlkLidtYW1zX3JlbWVtYmVybWUnKTsKICAgIH0KCiAgICAkcGlkID0gJHJldHVybmlkOwogICAgaWYoICgkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcpKSApIHsKICAgICAgICAkdG1wID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKSk7CiAgICAgICAgaWYoICR0bXAgKSAkcGlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCwkcmV0dXJuaWQpOwogICAgfQogICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3RwdycsMSkgKSAkdHBsLT5hc3NpZ24oJ3VybF9mb3Jnb3QnLCR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZm9yZ290cHcnLCRwaWQpKTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3VwcG9ydF9sb3N0dW4nLDEpICkgJHRwbC0+YXNzaWduKCd1cmxfbG9zdHVuJywkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xvc3R1c2VybmFtZScsJHBpZCkpOwoKICAgIGlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9BTFRMT0dJTikgKSAkdHBsLT5hc3NpZ24oJ2FsdF9sb2dpbmZvcm0nLCRjb25zdW1lci0+Z2V0X2xvZ2luX2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKSk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBmYXRhbCBleGNlcHRpb25zIHdlIGNhbiBkbyBub3RoaW5nIHdpdGhvdXQuCiAgICB4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICBlY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlLT5HZXRNZXNzYWdlKCkpOwp9Ci8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.logout.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CmlmKCAkdWlkIDwgMSApIHJldHVybjsKJHVzZXJuYW1lID0gJHRoaXMtPkxvZ2dlZEluTmFtZSgpOwokdGhpcy0+TG9nb3V0KCk7CgphdWRpdCggJycsICR0aGlzLT5HZXROYW1lKCksICIkdXNlcm5hbWUgbG9nZ2VkIG91dCIpOwoKJHBhcm1zID0gYXJyYXkoKTsKJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOwokcGFybXNbJ2lkJ10gPSAkdWlkOwoKLy8gd2UncmUgbG9nZ2VkIG91dAovLyByZWRpcmVjdCBzb21ld2hlcmUKaWYoICgkcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmV0dXJudG8nKSkgKSB7CiAgICAkcGFnZWlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHJldHVybnRvKTsKICAgIGlmKCAkcGFnZWlkICkgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcGFnZWlkKTsKfQppZiggKCR1cmwgPSAkdGhpcy0+R2V0UG9zdExvZ2luVVJMKCkpICkgewogICAgcmVkaXJlY3QoJHVybCk7Cn0KZWxzZSBpZiggKCR0cGxzdHIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcpKSApIHsKICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbHN0cik7CiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgJHRwbC0+YXNzaWduKCdncm91cCcsJGdyb3VwbmFtZSk7CiAgICAkdG1wID0gJHRwbC0+ZmV0Y2goKTsKICAgIGlmKCAkdG1wICkgewogICAgICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wKTsKICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICB9Cn0KLy8gYWxsIGVsc2UgZmFpbHMsIHJlZGlyZWN0IGJhY2sgdG8gb3VyIGN1cnJlbiBwYWdlLgokdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZXR1cm5pZCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.logoutform.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwokY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwppZiggJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfTE9HT1VUKSApIHsKICAvLyB0aGUgY29uc3VtZXIgcHJvdmlkZXMgdGhlIGxvZ2luIGNhcGFiaWxpdGllcwogIGVjaG8gJGNvbnN1bWVyLT5nZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsKICByZXR1cm47Cn0KCnRyeSB7Ci8vIGRvIHRoZSBkZWZhdWx0CiAgICAkdWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIGlmKCAhJHVpZCApIHJldHVybjsgLy8gbm90aGluZyB0byBkbywgdXNlciBpcyBub3QgbG9nZ2VkIGluLgoKICAgICRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdyZXR1cm50bycpOyAvLyB0ZXN0IG1lLgogICAgJHVzZXJuYW1lID0gJHRoaXMtPkxvZ2dlZEluTmFtZSgpOwogICAgJHRoZXRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCdsb2dvdXR0ZW1wbGF0ZScsJ01BTVM6OmxvZ291dCBmb3JtJyk7CiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAvLyByZXBsYWNlIHskZ3JvdXBuYW1lfSB3aXRoIHRoZSBmaXJzdCBncm91cG5hbWUgd2UgY2FuIGZpbmQgdGhhdCBtYXRjaGVzCiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF9sb2dnZWRpbicsICR0aGlzLT5MYW5nKCdtc2dfY3VycmVudGx5bG9nZ2VkaW5hcycpKTsgLy8gY2FuIGdldCByaWQgb2YgdGhpcy4KICAgICR0cGwtPmFzc2lnbigndXNlcmlkJywgJHVpZCk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywgJHVzZXJuYW1lKTsKICAgICRtc2cgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWVzc2FnZScpOwogICAgaWYoICRtc2cgKSAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCRtc2cpOwoKICAgIC8vIHN0YXJ0IHVnbHkKICAgIC8vIHRvZG86IG5lZWQgc29tZSBtZWNoYW5pc20gdG8gdGVsbCAnd2hpY2gnIGF1dGhlbnRpY2F0aW9uIHdhcyB1c2VkLCBpZiBhbHQgYXV0aGVudGljYXRpb24gaXMgc3VwcG9ydGVkLgogICAgJGxvZ2dlZGluX3VzaW5nX3N0ZCA9IEZBTFNFOwogICAgJG1hbmlwID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCk7CiAgICBpZiggJG1hbmlwLT5fc3RkX0xvZ2dlZEluSWQoKSApICRsb2dnZWRpbl91c2luZ19zdGQgPSBUUlVFOwogICAgLy8gZW5kIHVnbHkKCiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgaWYoICRyZXR1cm50byApICRwYXJtc1sncmV0dXJudG8nXSA9ICRyZXR1cm50bzsKICAgICR1cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xvZ291dCcsJHJldHVybmlkLCRwYXJtcyk7CiAgICAkdHBsLT5hc3NpZ24oJ3VybF9sb2dvdXQnLCR1cmwpOwoKICAgIC8vIHJlcGxhY2UgeyRncm91cG5hbWV9IHdpdGggdGhlIGZpcnN0IGdyb3VwbmFtZSB3ZSBjYW4gZmluZCB0aGF0IG1hdGNoZXMKICAgICRjc3BhZ2UgPSAkcmV0dXJuaWQ7CiAgICBpZiggKCR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJykpICkgeyAgLy8gdGVzdCBtZQogICAgICAgICR0cGwyID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJ3N0cmluZzonLiR0bXApOwogICAgICAgICR0bXAgPSAkdHBsMi0+ZmV0Y2goKTsKICAgICAgICBpZiggJHRtcCApICRjc3BhZ2UgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wLCRyZXR1cm5pZCk7CiAgICB9CiAgICAkcGFybXMgPSBhcnJheSgnZm9ybSc9PidjaGFuZ2VzZXR0aW5ncycpOwogICAgaWYoICRyZXR1cm50byApICRwYXJtc1sncmV0dXJudG8nXSA9ICRyZXR1cm50bzsKICAgICR1cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2RlZmF1bHQnLCRjc3BhZ2UsJHBhcm1zKTsKICAgICR0cGwtPmFzc2lnbigndXJsX2NoYW5nZXNldHRpbmdzJywkdXJsKTsKICAgICRwcm9wcyA9ICR0aGlzLT5HZXRVc2VyUHJvcGVydGllcyggJHRoaXMtPkxvZ2dlZEluSWQoKSApOwogICAgaWYoICRwcm9wcyAhPT0gZmFsc2UgKSB7CiAgICAgICAgZm9yZWFjaCggJHByb3BzIGFzICRwICkgewogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJHBbJ3RpdGxlJ10sJHBbJ2RhdGEnXSk7CiAgICAgICAgfQogICAgfQoKICAgIGlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9BTFRMT0dJTikgKSB7CiAgICAgICAgLy8gdGhlIGNvbnN1bWVyIGhhcyBhbHRlcm5hdGUgbG9naW4gY2FwYWJpbGl0aWVzLi4uLgogICAgICAgICRyZXMgPSAkY29uc3VtZXItPmdldF9sb2dvdXRfZGlzcGxheSgkaWQsJHJldHVybmlkLCRwYXJhbXMpOwogICAgICAgICR0cGwtPmFzc2lnbignYWx0X2xvZ291dGZvcm0nLCRyZXMpOwogICAgfQoKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGZhdGFsIGVycm9yIHdlIGNhbm5vdCB3b3JrIGFyb3VuZC4KICAgIGVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvck1lc3NhZ2UoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCiMKIyBFT0YKIw==]]></data>
	</file>
	<file>
	  <filename>/action.lostusername.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKdHJ5IHsKICAgIGlmKCAhJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N1cHBvcnRfbG9zdHVuJykgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdTb3JyeSwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGRpc2FibGVkJyk7CiAgICAkbWVzc2FnZSA9IG51bGw7CiAgICAkdXNlcm5hbWVfaXNfZW1haWwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKTsKICAgICRub2NhcHRjaGEgPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ25vY2FwdGNoYScpOwogICAgJHRoZXRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCdsb3N0dW50ZW1wbGF0ZScsJ01BTVM6Omxvc3QgdXNlcm5hbWUgZm9ybScpOwogICAgJHJldHVybnRvID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3JldHVybnRvJywkcmV0dXJuaWQpOwoKICAgICRnaWQgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19naWQnLC0xKTsKICAgICRnaWQgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbG9zdHVuX2dyb3VwJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcsJGdpZCkpOwogICAgaWYoICFpc19udW1lcmljKCRnaWQpICkgewogICAgICAgICRnaWQgPSAkdGhpcy0+R2V0R3JvdXBJRCggJGdpZCApOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfZ3JvdXBub3Rmb3VuZCcpKTsKICAgIH0KICAgIGlmKCAkZ2lkIDw9IDAgKSB7CiAgICAgICAgLy8gbm8gZ2lkIHNwZWNpZmllZCBvciBmb3VuZCwgIGdldCB0aGUgZ2lkIG9mIHRoZSBmaXJzdCBncm91cC4KICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPkdldEdyb3VwTGlzdCgpOwogICAgICAgIGlmKCAhY291bnQoJGdyb3VwcykgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ25vZ3JvdXBzJykpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJGdyb3Vwcyk7CiAgICAgICAgJGdpZCA9ICR2YWx1ZXNbMF07CiAgICB9CgogICAgJHJlbG5zID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICAgIGlmKCAhaXNfYXJyYXkoICRyZWxucyApIHx8ICRyZWxuc1swXSA9PT0gRkFMU0UgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Vua25vd24gRXJyb3InKTsKCiAgICAvLyBOb3c6IHdlIG5lZWQgdG8gZ2V0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgbWF5IGJlIGZpbGxlZCBpbiBpbiB0aGlzIGdyb3VwLgogICAgLy8gYW5kIGRpc3BsYXkgdGhlbSBpbiB0aGUgZm9ybQogICAgLy8gd2UgZG8gdGhpcyBiZWZvcmUgaGFuZGxpbmcgc3VibWl0IHNvIHRoYXQgd2UgZG9uJ3QgbG9zZSBhcyBtdWNoIHVzZXIgZW50ZXJlZCBpbmZvcm1hdGlvbgogICAgLy8gaWYgdGhlcmUgaXMgYSBzaWxseSBlcnJvciBpbiBmb3JtIHN1Ym1pc3Npb24uCiAgICAkcm93YXJyYXkgPSBhcnJheSgpOwogICAgJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgIGZvcmVhY2goICRyZWxucyBhcyAkb25lcmVsbiApIHsKICAgICAgICAvLyBpZiBpdCdzIG5vdCByZXF1aXJlZCBoZXJlLCBkb24ndCBkbyBhbnl0aGluZwogICAgICAgIGlmKCAkb25lcmVsblsncmVxdWlyZWQnXSA9PSAzIHx8ICRvbmVyZWxuWydyZXF1aXJlZCddID09IDQgKSB7CiAgICAgICAgICAgIC8vIGhpZGRlbiBvciByZWFkLW9ubHkgZmllbGRzIGFyZSBoaWRkZW4uCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgJGRlZm4gPSAkZGVmbnNbICRvbmVyZWxuWyduYW1lJ10gXTsKCiAgICAgICAgJG9uZXJvdyA9IG5ldyBTdGRDbGFzcygpOwogICAgICAgICRvbmVyb3ctPnJlcXVpcmVkID0gZmFsc2U7CiAgICAgICAgJG9uZXJvdy0+cHJvcG5hbWUgPSAkb25lcmVsblsnbmFtZSddOwogICAgICAgICRvbmVyb3ctPm5hbWUgPSAnbWFtc19pbnB1dF8nLiRvbmVyZWxuWyduYW1lJ107CiAgICAgICAgJG9uZXJvdy0+ZmxkbmFtZSA9ICRpZC4kb25lcm93LT5uYW1lOwogICAgICAgICRvbmVyb3ctPnR5cGUgPSAkZGVmblsndHlwZSddOwogICAgICAgIGlmKCAkb25lcm93LT50eXBlID09IDggKSB7CiAgICAgICAgICAgIC8vIGRhdGUgZmllbGQgdXNlcyBodG1sX3NlbGVjdF9kYXRlIHdoaWNoIHByb3ZpZGVzIHRocmVlIGlucHV0IGZpZWxkcy4KICAgICAgICAgICAgJF9tID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJG9uZXJvdy0+bmFtZS4nTW9udGgnKTsKICAgICAgICAgICAgJF9kID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJG9uZXJvdy0+bmFtZS4nRGF5Jyk7CiAgICAgICAgICAgICRfeSA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCRvbmVyb3ctPm5hbWUuJ1llYXInKTsKICAgICAgICAgICAgaWYoICRfbSAmJiAkX2QgJiYgJF95ICkgJHBhcmFtc1skb25lcm93LT5uYW1lXSA9IG1rdGltZSgwLDAsMCwkX20sJF9kLCRfeSk7CiAgICAgICAgfQogICAgICAgICRvbmVyb3ctPnZhbCA9IFx4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJG9uZXJvdy0+bmFtZSk7IC8vIGRvIG5vdCB1c2UgeHRfcGFyYW0gYmVjYXVzZSBpbnB1dCBtYXkgYmUgYW4gYXJyYXkKICAgICAgICAkb25lcm93LT5sZW5ndGggPSAkZGVmblsnbGVuZ3RoJ107CiAgICAgICAgJG9uZXJvdy0+bWF4bGVuZ3RoID0gJGRlZm5bJ21heGxlbmd0aCddOwogICAgICAgICRvbmVyb3ctPnByb21wdCA9ICRkZWZuWydwcm9tcHQnXTsKCiAgICAgICAgc3dpdGNoKCAkZGVmblsndHlwZSddICkgewogICAgICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgICBjYXNlIDU6IC8vIG11bHRpc2VsZWN0CiAgICAgICAgY2FzZSA3OiAvLyByYWRpb2J0bnMKICAgICAgICAgICAgJG9uZXJvdy0+b3B0aW9ucyA9IGFycmF5X2ZsaXAoJHRoaXMtPkdldFNlbGVjdE9wdGlvbnMoJGRlZm5bJ25hbWUnXSkpOwogICAgICAgICAgICAkb25lcm93LT5sZW5ndGggPSA1OwogICAgICAgICAgICBpZiggY291bnQoJG9uZXJvdy0+b3B0aW9ucykgPiAyMCApICRvbmVyb3ctPmxlbmd0aCA9IDEwOwogICAgICAgICAgICAkb25lcm93LT5sZW5ndGggPSBtaW4oY291bnQoJG9uZXJvdy0+b3B0aW9ucyksJG9uZXJvdy0+bGVuZ3RoKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODogLy8gZGF0ZQogICAgICAgICAgICAkb25lcm93LT5zdGFydF95ZWFyID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRkZWZuWydleHRyYSddLCdzdGFydHllYXInLCctMTAnKTsKICAgICAgICAgICAgJG9uZXJvdy0+ZW5kX3llYXIgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJGRlZm5bJ2V4dHJhJ10sJ2VuZHllYXInLCcrNScpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OiAvLyBpbWFnZQogICAgICAgICAgICAvLyB0aGlzIGlzbid0IGFsbG93ZWQKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHJvd2FycmF5WyRvbmVyb3ctPnByb3BuYW1lXSA9ICRvbmVyb3c7CiAgICB9CiAgICBpZiggIWNvdW50KCRyb3dhcnJheSkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub2NvbnRyb2xzJykpOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX2NhbmNlbCddKSApIHsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZXR1cm50byk7CiAgICB9CiAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICAvLwogICAgICAgIC8vIGhhbmRsZSBmb3JtIHN1Ym1pdAogICAgICAgIC8vCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gYnkgdGhpcyBwb2ludCBvdXIgdmFsdWVzIHNob3VsZCBiZSB1cHRvZGF0ZSBpbiB0aGUgJHJvd2FycmF5CgogICAgICAgICAgICAvLyBjaGVjayBvdXIgaG9uZXlwb3QKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfX2RhdGEnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfX2RhdGEnKTsKICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl95b3VhcmVhYm90JykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjaGVjayB0aGUgY2FwdGNoYQogICAgICAgICAgICBpZiggISRub2NhcHRjaGEgKSB7CiAgICAgICAgICAgICAgICAkY2FwdGNoYSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NhcHRjaGEnKTsKICAgICAgICAgICAgICAgIGlmKCBpc19vYmplY3QoJGNhcHRjaGEpICYmICEkY2FwdGNoYS0+Q2hlY2tDYXB0Y2hhKCRwYXJhbXNbJ21hbXNfaW5wdXRfY2FwdGNoYSddKSApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCcpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY2hlY2sgYW55IHJlcXVpcmVkIGZpZWxkcwogICAgICAgICAgICBmb3JlYWNoKCAkcm93YXJyYXkgYXMgJGtleSA9PiAkcmVjICkgewogICAgICAgICAgICAgICAgaWYoICRyZWMtPnJlcXVpcmVkICYmICEkcmVjLT52YWwgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCRyZWMtPnByb21wdCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyByZWFkeSB0byBkbyByZWFsIHdvcmsKICAgICAgICAgICAgLy8gd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBmaWVsZHMgKGV4Y2VwdCBwYXNzd29yZCkgYW5kIGJ1aWxkIGFuIG1hbXMgcXVlcnkKICAgICAgICAgICAgLy8gYW5kIGhvcGUgdGhhdCB3ZSBvbmx5IGZpbmQgb25lIHJlc3VsdC4KICAgICAgICAgICAgLy8gaWYgd2UgZmluZCBvbmUgcmVzdWx0Li4uIHdlIGNhbiBkaXNwbGF5IHNvbWUgaW5mb3JtYXRpb24gdG8gdGhlIGd1eS4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgRElTVElOQ1QgVS4qIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIFUgJzsKICAgICAgICAgICAgJG5fY29uZHMgPSAwOwogICAgICAgICAgICAkd2hlcmUgPSAkam9pbnMgPSAkcGFybXMgPSBhcnJheSgpOwoKICAgICAgICAgICAgZm9yZWFjaCggJHJvd2FycmF5IGFzICRrZXkgPT4gJHJlYyApIHsKICAgICAgICAgICAgICAgIGlmKCAhJHJlYy0+dmFsICkgY29udGludWU7CiAgICAgICAgICAgICAgICBpZiggJGtleSA9PSAnX3Bhc3N3b3JkJyApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYoICRrZXkgPT0gJ19lbWFpbCcgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICBzd2l0Y2goICRyZWMtPnR5cGUgKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgICAgICAgICAgIGNhc2UgMjogLy8gZW1haWwKICAgICAgICAgICAgICAgIGNhc2UgMzogLy8gdGV4dGFyZWEKICAgICAgICAgICAgICAgICAgICBpZiggc3RybGVuKCRyZWMtPnZhbCkgPiAzICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWxpYXMgPSAiUHskbl9jb25kc30iOyAkbl9jb25kcysrOwogICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgJGFsaWFzIE9OIFUuaWQgPSB7JGFsaWFzfS51c2VyaWQgQU5EIHskYWxpYXN9LnRpdGxlID0gJ3skcmVjLT5wcm9wbmFtZX0nIjsKICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSBMSUtFID8iOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICclJy4kcmVjLT52YWwuJyUnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gIlB7JG5fY29uZHN9IjsgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgJGFsaWFzIE9OIFUuaWQgPSB7JGFsaWFzfS51c2VyaWQgQU5EIHskYWxpYXN9LnRpdGxlID0gJ3skcmVjLT5wcm9wbmFtZX0nIjsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ7JGFsaWFzfS5kYXRhID0gPyI7CiAgICAgICAgICAgICAgICAgICAgJHBhcm1zW10gPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgICAgICAgICAgIGNhc2UgNzogLy8gcmFkaW9idG5zCiAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gIlB7JG5fY29uZHN9IjsgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgJGFsaWFzIE9OIFUuaWQgPSB7JGFsaWFzfS51c2VyaWQgQU5EIHskYWxpYXN9LnRpdGxlID0gJ3skcmVjLT5wcm9wbmFtZX0nIjsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ7JGFsaWFzfS5kYXRhID0gPyI7CiAgICAgICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkcmVjLT52YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSA0OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICAgICAgICAgIC8vIG11bHRpc2VsZWN0IGlzIGEgZGlmZmVyZW50IGNhc2UuLi4gd2UgbmVlZCB0byBidWlsZCBhbiBPUiByZWxhdGlvbnNoaXAgc28gdGhhdCBhbnkgb2YgdGhlIHNlbGVjdGVkIGl0ZW1zIG1hdGNoLgogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7ICRuX2NvbmRzKys7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgJHRfdmFsID0gJHJlYy0+dmFsOwogICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHRfdmFsKSApICR0X3ZhbCA9IGFycmF5KCR0X3ZhbCk7CiAgICAgICAgICAgICAgICAgICAgaWYoIGNvdW50KCR0X3ZhbCkgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSA9ID8iOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICR0X3ZhbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHIgPSAnJScuaW1wbG9kZSgnJScsJHRfdmFsKS4nJSc7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInskYWxpYXN9LmRhdGEgTElLRSA/IjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSA4OiAvLyBkYXRlCiAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gIlB7JG5fY29uZHN9IjsgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgJGFsaWFzIE9OIFUuaWQgPSB7JGFsaWFzfS51c2VyaWQgQU5EIHskYWxpYXN9LnRpdGxlID0gJ3skcmVjLT5wcm9wbmFtZX0nIjsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ7JGFsaWFzfS5kYXRhID0gPyI7CiAgICAgICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkcmVjLT52YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IHNvbWUgaW5mb3JtYXRpb24KICAgICAgICAgICAgaWYoICRuX2NvbmRzID09IDAgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub2RhdGEnKSk7CgogICAgICAgICAgICAvLyBidWlsZCB0aGUgcXVlcnkKICAgICAgICAgICAgJHNxbCAuPSBpbXBsb2RlKCcgJywkam9pbnMpOwogICAgICAgICAgICAkc3FsIC49ICcgV0hFUkUgJy5pbXBsb2RlKCcgQU5EICcsJHdoZXJlKTsKICAgICAgICAgICAgJHNxbCAuPSAnIExJTUlUIDInOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkc3FsLCRwYXJtcyk7CiAgICAgICAgICAgIGlmKCBjb3VudCgkdG1wKSA+IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX25vdW5pcXVlbWF0Y2gnKSk7CiAgICAgICAgICAgIGlmKCAhY291bnQoJHRtcCkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl91c2Vybm90Zm91bmQnKSk7CiAgICAgICAgICAgICR1aW5mbyA9ICR0bXBbMF07CiAgICAgICAgICAgICR1c2VybmFtZSA9ICR1aW5mb1sndXNlcm5hbWUnXTsKCiAgICAgICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWluZm9bJ2lkJ10sJ2dldHVzZXJuYW1lJyk7CgogICAgICAgICAgICAvLyBhbmQgZGlzcGxheSBzb21ldGhpbmcKICAgICAgICAgICAgJHRoZXRlbXBsYXRlMiA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnbG9zdHVuY29uZmlybXRlbXBsYXRlJywnTUFNUzo6bG9zdCB1c2VybmFtZSBjb25maXJtJyk7CiAgICAgICAgICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlMik7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigncHJvbXB0X3lvdXJ1c2VybmFtZWlzJywkdGhpcy0+TGFuZygneW91cl91c2VybmFtZV9pcycpKTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdwcmVtc2cnLCR0aGlzLT5MYW5nKCdsb3N0dW5jb25maXJtX3ByZW1zZycpKTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdwb3N0bXNnJywkdGhpcy0+TGFuZygnbG9zdHVuY29uZmlybV9wb3N0bXNnJykpOwogICAgICAgICAgICAkdHBsLT5kaXNwbGF5KCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gc3RhcnQgZ2l2aW5nIHN0dWZmIHRvIHNtYXJ0eS4KICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKICAgICRwYXJtcyA9IGFycmF5KCdtYW1zX2dpZCc9PiRnaWQpOwogICAgJHBhcm1zWydub2NhcHRjaGEnXSA9ICRub2NhcHRjaGE7CiAgICAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAkcGFybXNbJ21hbXNfbG9zdHVudGVtcGxhdGUnXSA9ICR0aGV0ZW1wbGF0ZTsKICAgICR0cGwtPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCRpZCwnbG9zdHVzZXJuYW1lJywkcmV0dXJuaWQsJHBhcm1zKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWVfaXNfZW1haWwnLCR1c2VybmFtZV9pc19lbWFpbCk7CiAgICAkdHBsLT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ21heF91bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcpKTsKICAgICR0cGwtPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOwoKICAgIGlmKCAhJG5vY2FwdGNoYSApIHsKICAgICAgICAkY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwogICAgICAgIGlmKCBpc19vYmplY3QoJGNhcHRjaGEpICkgewogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGEnLCAkY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpKTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdjYXB0Y2hhX3RpdGxlJywgJHRoaXMtPkxhbmcoJ2NhcHRjaGFfdGl0bGUnKSk7CiAgICAgICAgICAgICR0ZXN0ID0gbWV0aG9kX2V4aXN0cygkY2FwdGNoYSwgJ05lZWRzSW5wdXRGaWVsZCcpID8gJGNhcHRjaGEtPk5lZWRzSW5wdXRGaWVsZCgpIDogdHJ1ZTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCduZWVkX2NhcHRjaGFfaW5wdXQnLCR0ZXN0KTsKICAgICAgICB9CiAgICB9CgogICAgJHRwbC0+YXNzaWduKCdjb250cm9scycsICRyb3dhcnJheSk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBmYXRhbCBlcnJvciB0aGF0IHdlIGNhbnQgd29yayBhcm91bmQuCiAgICBlY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlLT5HZXRNZXNzYWdlKCkpOwp9CgovLyBFT0YK]]></data>
	</file>
	<file>
	  <filename>/action.reset_session.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CmlmKCAkdWlkID09PSBmYWxzZSApIHJldHVybjsKCmlmKCBpc3NldCgkcGFyYW1zWydtYW1zX2NoZWNrb25seSddKSAmJiAkcGFyYW1zWydtYW1zX2NoZWNrb25seSddID09IDEgKSB7CiAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ21hbXNfdWlkJ10pICkgcmV0dXJuOwogICAgLy8gbm90aGluZyB0byBkbyBoZXJlLgp9CmVsc2UgewogICAgJHRoZXRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCdyZXNldHNlc3Npb250ZW1wbGF0ZScsJ01BTVM6OnJlc2V0IHNlc3Npb24nKTsKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKICAgICRwcmV0dHl1cmwgPSAibWFtcy9yZXNldC97JHVpZH0iOwogICAgJHRwbC0+YXNzaWduKCdzZXNzaW9uX3RpbWVvdXQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycpKTsKICAgICR0cGwtPmFzc2lnbigncmVzZXRfdXJsJywKICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3Jlc2V0X3Nlc3Npb24nLCRyZXR1cm5pZCwnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgnbWFtc191aWQnPT4kdWlkLCdtYW1zX2NoZWNrb25seSc9PjEsJ3Nob3d0ZW1wbGF0ZSc9PidmYWxzZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLHRydWUsZmFsc2UsJycsZmFsc2UsJHByZXR0eXVybCkpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.silent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwppZiggJHVpZCA8IDEgKSByZXR1cm47CgovLyByZXBsYWNlIHskZ3JvdXBuYW1lfSB3aXRoIHRoZSBmaXJzdCBncm91cG5hbWUgd2UgY2FuIGZpbmQgdGhhdCBtYXRjaGVzCiRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKJGdyb3VwbmFtZXMgPSBhcnJheSgpOwpmb3JlYWNoKCAkZ3JvdXBzIGFzICRvbmUgKSB7CiAgICAkZ3JvdXBuYW1lc1tdID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJG9uZVsnZ3JvdXBpZCddICk7Cn0KCiRtYW1zX2RhdGEgPSBhcnJheSgpOwokbWFtc19kYXRhWyd1c2VyaWQnXSA9ICR1aWQ7CiRtYW1zX2RhdGFbJ3VzZXJuYW1lJ10gPSAkdGhpcy0+TG9nZ2VkSW5OYW1lKCk7CiRtYW1zX2RhdGFbJ21lbWJlcl9ncm91cHMnXSA9ICRncm91cG5hbWVzOwokbWFtc19kYXRhWyd1cmxfbG9nb3V0J10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xvZ291dCcsJHJldHVybmlkKTsKCiRwYWdlaWQgPSAkcmV0dXJuaWQ7CmlmKCAoJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZycpKSApIHsKICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRtcCk7CiAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwJywkZ3JvdXBuYW1lKTsKICAgICR0cGwtPmFzc2lnbignZ3JvdXBpZCcsJGdyb3Vwc1swXVsnZ3JvdXBpZCddKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VpZCcsJHVpZCk7CiAgICAkdG1wID0gJHRwbC0+ZmV0Y2goKTsKICAgIGlmKCAkdG1wICkgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJHJldHVybmlkKTsKfQokbWFtc19kYXRhWyd1cmxfY2hhbmdlc2V0dGluZ3MnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZGVmYXVsdCcsJHBhZ2VpZCxhcnJheSgnZm9ybSc9PidjaGFuZ2VzZXR0aW5ncycpKTsKCiRwcm9wcyA9ICR0aGlzLT5HZXRVc2VyUHJvcGVydGllcyggJHVpZCApOwpmb3JlYWNoKCAkcHJvcHMgYXMgJHAgKSB7CiAgICAkbWFtc19kYXRhWyRwWyd0aXRsZSddXSA9ICRwWydkYXRhJ107Cn0KCiRzbWFydHktPmFzc2lnbignbWFtc19kYXRhJywkbWFtc19kYXRhKTsKJHNtYXJ0eS0+YXNzaWduR2xvYmFsKCdtYW1zX2RhdGEnLCRtYW1zX2RhdGEpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.userhistory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnbGlzdHVzZXJzJyApICkgcmV0dXJuOwoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJoaXN0b3J5Jyk7CiR1c2VyaWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndXNlcl9pZCcpOwokcGFnZWxpbWl0cyA9IGFycmF5KCk7CiRwYWdlbGltaXRzWyc1J10gPSA1OwokcGFnZWxpbWl0c1snMTAnXSA9IDEwOwokcGFnZWxpbWl0c1snMjUnXSA9IDI1OwokcGFnZWxpbWl0c1snNTAnXSA9IDUwOwokcGFnZWxpbWl0c1snMTAwJ10gPSAxMDA7CiRwYWdlbGltaXRzWycyNTAnXSA9IDI1MDsKJHBhZ2VsaW1pdHNbJzUwMCddID0gNTAwOwoKJGRhdGVsaXN0ID0gYXJyYXkoKTsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX2FsbHJlY29yZHMnKV0gPSAtMTsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZWhvdXJvbGQnKV0gPSAnMWgnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfc2l4aG91cm9sZCcpXSA9ICc2aCc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV90d2VsdmVob3Vyb2xkJyldID0gJzEyaCc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmVkYXlvbGQnKV0gPSAnMWQnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25ld2Vla29sZCcpXSA9ICcxdyc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV90d293ZWVrc29sZCcpXSA9ICcydyc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmVtb250aG9sZCcpXSA9ICcxbSc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV90aHJlZW1vbnRoc29sZCcpXSA9ICczbSc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9zaXhtb250aHNvbGQnKV0gPSAnNm0nOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25leWVhcm9sZCcpXSA9ICcxeSc7Cgokc29ydG9yZGVycyA9IGFycmF5KCk7CiRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfZGF0ZV9kZXNjJyldID0gJ3JlZmRhdGUgREVTQyc7CiRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfZGF0ZV9hc2MnKV0gPSAncmVmZGF0ZSBBU0MnOwokc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX2FjdGlvbl9kZXNjJyldID0gJ2FjdGlvbiBERVNDJzsKJHNvcnRvcmRlcnNbJHRoaXMtPkxhbmcoJ3NvcnRvcmRlcl9hY3Rpb25fYXNjJyldID0gJ2FjdGlvbiBBU0MnOwokc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX2lwYWRkcmVzc19kZXNjJyldID0gJ2lwYWRkcmVzcyBERVNDJzsKJHNvcnRvcmRlcnNbJHRoaXMtPkxhbmcoJ3NvcnRvcmRlcl9pcGFkZHJlc3NfYXNjJyldID0gJ2lwYWRkcmVzcyBBU0MnOwppZiggJHVzZXJpZCA9PSAnJyApIHsKICAgICRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfdXNlcm5hbWVfZGVzYycpXSA9ICd1c2VybmFtZSBERVNDJzsKICAgICRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfdXNlcm5hbWVfYXNjJyldID0gJ3VzZXJuYW1lIEFTQyc7Cn0KCiRldmVudHR5cGVzID0gYXJyYXkoKTsKJGV2ZW50dHlwZXNbJ2FsbCddID0gJ2FsbCc7CiRldmVudHR5cGVzWydmYWlsJ10gPSAnZmFpbCc7CiRldmVudHR5cGVzWydsb2dpbiddID0gJ2xvZ2luJzsKJGV2ZW50dHlwZXNbJ2xvZ291dCddID0gJ2xvZ291dCc7CiRldmVudHR5cGVzWydleHBpcmUnXSA9ICdleHBpcmUnOwokZXZlbnR0eXBlc1sncmVzZXRwdyddID0gJ3Jlc2V0cHcnOwokZXZlbnR0eXBlc1snZ2V0dXNlcm5hbWUnXSA9ICdnZXR1c2VybmFtZSc7CiRldmVudHR5cGVzWydmb3Jnb3RwdyddID0gJ2ZvcmdvdHB3JzsKJGV2ZW50dHlwZXNbJ2luaXRfdmVyaWZ5J10gPSAnaW5pdF92ZXJpZnknOwokZXZlbnR0eXBlc1sndmVyaWZ5IGNvbXBsZXRlJ10gPSAndmVyaWZ5IGNvbXBsZXRlJzsKJGV2ZW50dHlwZXNbJ2FkbWluIGFkZCB1c2VyJ10gPSAnYWRtaW4gYWRkIHVzZXInOwokZXZlbnR0eXBlc1snYWRtaW4gY2hhbmdlIHNldHRpbmdzJ10gPSAnYWRtaW4gY2hhbmdlIHNldHRpbmdzJzsKaWYoIGlzc2V0KCAkcGFyYW1zWydzdWJtaXR1c2VyaGlzdG9yeSddICkgKSB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3BhZ2VsaW1pdCddICkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfcGFnZWxpbWl0JywkcGFyYW1zWydpbnB1dF9wYWdlbGltaXQnXSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3NvcnRvcmRlciddICkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3Rvcnlfc29ydG9yZGVyJywkcGFyYW1zWydpbnB1dF9zb3J0b3JkZXInXSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2V2ZW50dHlwZSddICkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZXZlbnR0eXBlJywkcGFyYW1zWydpbnB1dF9ldmVudHR5cGUnXSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2ZpbHRlcl9kYXRlJ10gKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9kYXRlJywkcGFyYW1zWydpbnB1dF9maWx0ZXJfZGF0ZSddKTsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZ3JvdXBfaXAnXSApICkgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9ncm91cF9pcCcsJHBhcmFtc1snaW5wdXRfZ3JvdXBfaXAnXSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lX3JlZ2V4J10gKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV91c2VybmFtZV9yZWdleCcsJHBhcmFtc1snaW5wdXRfdXNlcm5hbWVfcmVnZXgnXSk7CiAgICBpZiggISR1c2VyaWQgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ3VzZXJoaXN0b3J5Jyk7Cn0KZWxzZSBpZiggaXNzZXQoICRwYXJhbXNbJ3Jlc2V0J10gKSApIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9wYWdlbGltaXQnLDEwKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9ldmVudHR5cGUnLCdhbGwnKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9kYXRlJywnLTEnKTsgLy8gdG9kbwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2dyb3VwX2lwJywwKTsgLy8gdG9kbwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3NvcnRvcmRlcicsJ3JlZmRhdGUgREVTQycpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3VzZXJuYW1lX3JlZ2V4JywnJyk7CiAgICBpZiggISR1c2VyaWQgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ3VzZXJoaXN0b3J5Jyk7Cn0KCiRpbnB1dF9wYWdlbGltaXQgPSAoaW50KSR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9wYWdlbGltaXQnLDEwKTsKJGlucHV0X3NvcnRvcmRlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9zb3J0b3JkZXInLCdyZWZkYXRlIERFU0MnKTsKJGlucHV0X2V2ZW50dHlwZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9ldmVudHR5cGUnLCdhbGwnKTsKJGlucHV0X2ZpbHRlcl9kYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2RhdGUnLCctMScpOwokaW5wdXRfZ3JvdXBfaXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZ3JvdXBfaXAnLDApOwokaW5wdXRfdXNlcm5hbWVfcmVnZXggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfdXNlcm5hbWVfcmVnZXgnKTsKCi8vIEFkZCB0aGUgdXNlciBpbmZvIHRvIHNtYXJ0eQppZiggJHVzZXJpZCAhPSAnJyApIHsKICAgIC8vJHRoaXMtPlNldEVuY3J5cHRpb25LZXkoJHVzZXJpZCk7CiAgICAkcmVzdWx0cyA9ICR0aGlzLT5HZXRVc2VySW5mbygkcGFyYW1zWyd1c2VyX2lkJ10pOwogICAgJHVzZXJpbmZvID0gJyc7CiAgICBpZiggJHJlc3VsdHNbMF0gPT09IFRSVUUgKSAkdXNlcmluZm8gPSAkcmVzdWx0c1sxXTsKICAgIGZvcmVhY2goICR1c2VyaW5mbyBhcyAkayA9PiAkdiApIHsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3VzZXJfJy4kaywkdik7CiAgICB9CiAgICAkcHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoJHBhcmFtc1sndXNlcl9pZCddKTsKICAgIGZvcmVhY2goICRwcm9wcyBhcyAkb25lcHJvcCApIHsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3VzZXJwcm9wXycuJG9uZXByb3BbJ3RpdGxlJ10sJG9uZXByb3BbJ2RhdGEnXSk7CiAgICB9Cn0KCi8vIGZpZ3VyZSBvdXQgd2hhdCBwYWdlIHdlJ3JlIG9uCiRwYWdlbnVtYmVyID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3BhZ2VudW1iZXInLDEpOwokc3RhcnRlbGVtZW50ID0gKCRwYWdlbnVtYmVyLTEpICogJGlucHV0X3BhZ2VsaW1pdDsKCi8vCi8vIEFkZCB0aGUgaGlzdG9yeSB0byBzbWFydHkKLy8KJHdoZXJlID0gYXJyYXkoKTsKJHBhcm1zID0gYXJyYXkoKTsKJHF1ZXJ5MSA9ICJTRUxFQ1QgQS4qLEIudXNlcm5hbWUKICAgICAgICAgICAgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2hpc3RvcnkgQSwKICAgICAgICAgICAgICAgICAgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3VzZXJzIEIKICAgICAgICAgICAgV0hFUkUgQS51c2VyaWQgPSBCLmlkIjsKJHF1ZXJ5MiA9ICJTRUxFQ1QgQ09VTlQoQS51c2VyaWQpIEFTIGNvdW50CiAgICAgICAgICAgICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19oaXN0b3J5IEEsCiAgICAgICAgICAgICAgICAgICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc191c2VycyBCCiAgICAgICAgICAgIFdIRVJFIEEudXNlcmlkID0gQi5pZCI7CmlmKCAkdXNlcmlkID4gMSApIHsKICAgICR3aGVyZVtdID0gJ3VzZXJpZCA9ID8nOwogICAgJHBhcm1zW10gPSAkdXNlcmlkOwp9CmVsc2UgewogICAgLy8gb25seSB1c2UgdGhlIHVzZXJuYW1lIHJlZ2V4IGlmIHRoZSB1c2VyaWQgaXMgZW1wdHkKICAgIGlmKCAkaW5wdXRfdXNlcm5hbWVfcmVnZXggIT0gJycgKSB7CiAgICAgICAgJHdoZXJlW10gPSAndXNlcm5hbWUgUkVHRVhQID8nOwogICAgICAgICRwYXJtc1tdID0gJGlucHV0X3VzZXJuYW1lX3JlZ2V4OwogICAgfQp9CmlmKCAkaW5wdXRfZXZlbnR0eXBlICE9ICdhbGwnICkgewogICAgJHdoZXJlW10gPSAnYWN0aW9uID0gPyc7CiAgICAkcGFybXNbXSA9ICRpbnB1dF9ldmVudHR5cGU7Cn0KaWYoICRpbnB1dF9maWx0ZXJfZGF0ZSAhPSAtMSApIHsKICAgICRkYXRlID0gJyc7CiAgICBzd2l0Y2goICRpbnB1dF9maWx0ZXJfZGF0ZSApIHsKICAgIGNhc2UgJzFoJzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSBob3VyIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnNmgnOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCc2IGhvdXJzIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMTJoJzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMTIgaG91cnMgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcxZCc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgZGF5IGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMXcnOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCcxIHdlZWsgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcydyc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzIgd2Vla3MgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcxbSc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgbW9udGggYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICczbSc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzMgbW9udGhzIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnNm0nOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCc2IG1vbnRocyBhZ28nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJzF5JzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSB5ZWFyIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgfQogICAgaWYoICRkYXRlICE9ICcnICkgewogICAgICAgICR3aGVyZVtdID0gJ3JlZmRhdGUgPiA/JzsKICAgICAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZGF0ZSksIiciKTsKICAgIH0KfQppZiggY291bnQoJHdoZXJlKSA+IDAgKSB7CiAgICAkcXVlcnkxIC49ICcgQU5EICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAkcXVlcnkyIC49ICcgQU5EICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7Cn0KaWYoICRpbnB1dF9ncm91cF9pcCA9PSAxICkgewogICAgJHF1ZXJ5MSAuPSAnIEdST1VQIEJZIGlwYWRkcmVzcyc7CiAgICAkcXVlcnkyIC49ICcgR1JPVVAgQlkgaXBhZGRyZXNzJzsKfQokcXVlcnkxIC49ICIgT1JERVIgQlkgIi4kaW5wdXRfc29ydG9yZGVyOwokcXVlcnkxIC49ICIgTElNSVQgJHN0YXJ0ZWxlbWVudCwkaW5wdXRfcGFnZWxpbWl0IjsKCi8vIE5vdyBnZXQgdGhlIGNvdW50LCBhbmQgbnVtYmVyIG9mIHBhZ2VzCiR0bXByb3cgPSAkZGItPkdldFJvdyggJHF1ZXJ5MiwgJHBhcm1zICk7CiRyZWNvcmRjb3VudCA9ICR0bXByb3dbJ2NvdW50J107CiRwYWdlY291bnQgPSAoaW50KWNlaWwoJHJlY29yZGNvdW50IC8gJGlucHV0X3BhZ2VsaW1pdCk7CiRzbWFydHktPmFzc2lnbigncmVjb3JkY291bnQnLCRyZWNvcmRjb3VudCk7CgovLyBzb21lIHBhZ2luYXRpb24gdmFyaWFibGVzIHRvIHNtYXJ0eS4KaWYoICRwYWdlbnVtYmVyID09IDEgKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3ByZXZwYWdlJywnPCcpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHBhZ2UnLCc8PCcpOwp9CmVsc2UgewogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2cGFnZScsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJzwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdwYWdlbnVtYmVyJz0+JHBhZ2VudW1iZXItMSwgJ3VzZXJfaWQnPT4kdXNlcmlkLCdjZ19hY3RpdmV0YWInPT4ndXNlcmhpc3RvcnknKSkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHBhZ2UnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCc8PCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3BhZ2VudW1iZXInPT4xLCAndXNlcl9pZCc9PiR1c2VyaWQsJ2NnX2FjdGl2ZXRhYic9Pid1c2VyaGlzdG9yeScpKSk7Cn0KaWYoICRwYWdlbnVtYmVyID49ICRwYWdlY291bnQgKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywnPicpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdsYXN0cGFnZScsJz4+Jyk7Cn0KZWxzZSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3BhZ2VudW1iZXInPT4kcGFnZW51bWJlcisxLCAndXNlcl9pZCc9PiR1c2VyaWQsJ2NnX2FjdGl2ZXRhYic9Pid1c2VyaGlzdG9yeScpKSk7CgogICAgJHNtYXJ0eS0+YXNzaWduKCdsYXN0cGFnZScsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJz4+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgncGFnZW51bWJlcic9PiRwYWdlY291bnQsICd1c2VyX2lkJz0+JHVzZXJpZCwnY2dfYWN0aXZldGFiJz0+J3VzZXJoaXN0b3J5JykpKTsKCn0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlbnVtYmVyJywkcGFnZW51bWJlcik7CiRzbWFydHktPmFzc2lnbigncGFnZWNvdW50JywkcGFnZWNvdW50KTsKJHNtYXJ0eS0+YXNzaWduKCdvZnRleHQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfb2YnKSk7CmlmKCAkdXNlcmlkID09ICcnICkgJHNtYXJ0eS0+YXNzaWduKCdtdWx0aXVzZXInLDEpOwoKLy8gVGhlIGRhdGFiYXNlIHF1ZXJ5CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5MSwgJHBhcm1zICk7CiRyb3dhcnJheSA9IGFycmF5KCk7CiRyb3djbGFzcyA9ICdyb3cxJzsKd2hpbGUoICRkYnJlc3VsdCAmJiAhJGRicmVzdWx0LT5FT0YgKSB7CiAgICAkZmllbGRzID0gJGRicmVzdWx0LT5maWVsZHM7CiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CiAgICBmb3JlYWNoKCAkZmllbGRzIGFzICRrZXkgPT4gJHZhbHVlICkgewogICAgICAgICRvbmVyb3ctPiRrZXkgPSAkdmFsdWU7CiAgICB9CgogICAgLy8gZml4IHNvbWUgZmllbGRzIHVwCiAgICAkb25lcm93LT5yZWZkYXRlID0gJGRiLT5Vbml4VGltZVN0YW1wKCRvbmVyb3ctPnJlZmRhdGUpOwogICAgaWYoICRvbmVyb3ctPmlwYWRkcmVzcyA9PSAnJyApICRvbmVyb3ctPmlwYWRkcmVzcyA9ICR0aGlzLT5MYW5nKCd1bmtub3duJyk7CiAgICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCiAgICAkcm93YXJyYXlbXSA9ICRvbmVyb3c7CiAgICAkcm93Y2xhc3MgPSAoJHJvd2NsYXNzID09ICdyb3cxJykgPyAncm93MicgOiAncm93MSc7CiAgICAkZGJyZXN1bHQtPk1vdmVOZXh0KCk7Cn0KCmlmKCBjb3VudCgkcm93YXJyYXkpID09IDAgKSAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5MYW5nKCdpbmZvX25vaGlzdG9yeWRldGVjdGVkJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZWNvcmRzZm91bmQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfcmVjb3Jkc2ZvdW5kJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2xlZ2VuZF9maWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0ZXInKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfbGVnZW5kX2dyb3Vwc29ydCcsJHRoaXMtPkxhbmcoJ3RpdGxlX2dyb3Vwc29ydCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ3VzZXJoaXN0b3J5JykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0dXNlcmhpc3RvcnknLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3Jlc2V0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdyZXNldCcsJHRoaXMtPkxhbmcoJ3Jlc2V0JykpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3BhZ2VsaW1pdCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9wYWdlbGltaXQnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfcGFnZWxpbWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdpbnB1dF9wYWdlbGltaXQnLCRwYWdlbGltaXRzLCAtMSwgJGlucHV0X3BhZ2VsaW1pdCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc29ydG9yZGVyJywkdGhpcy0+TGFuZygnc29ydGJ5JykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NvcnRvcmRlcicsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfc29ydG9yZGVyJywkc29ydG9yZGVycywgLTEsICRpbnB1dF9zb3J0b3JkZXIpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2dyb3VwX2lwJywkdGhpcy0+TGFuZygncHJvbXB0X2dyb3VwX2lwJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2dyb3VwX2lwJywKICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfZ3JvdXBfaXAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJHRoaXMtPkxhbmcoJ3llcycpPT4xLCAkdGhpcy0+TGFuZygnbm8nKT0+MCksIC0xLCAkaW5wdXRfZ3JvdXBfaXApKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3VzZXJuYW1lX3JlZ2V4JywkdGhpcy0+TGFuZygndXNlcmZpbHRlcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF91c2VybmFtZV9yZWdleCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF91c2VybmFtZV9yZWdleCcsICRpbnB1dF91c2VybmFtZV9yZWdleCwgMjUpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2ZpbHRlcl9ldmVudHR5cGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfZmlsdGVyX2V2ZW50dHlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXJfZXZlbnR0eXBlJywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdpbnB1dF9ldmVudHR5cGUnLCAkZXZlbnR0eXBlcywgLTEsJGlucHV0X2V2ZW50dHlwZSkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9maWx0ZXJfZGF0ZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9maWx0ZXJfZGF0ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXJfZGF0ZScsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfZmlsdGVyX2RhdGUnLCAkZGF0ZWxpc3QsLTEsJGlucHV0X2ZpbHRlcl9kYXRlKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3VzZXJoaXN0b3J5JywkdGhpcy0+TGFuZygndGl0bGVfdXNlcmhpc3RvcnknKSk7CiRzbWFydHktPmFzc2lnbignZm9yJywkdGhpcy0+TGFuZygnZm9yJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF91c2VybmFtZScsJHRoaXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZm9yJywkdGhpcy0+TGFuZygncHJvbXB0X2ZvcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZWZkYXRlJywkdGhpcy0+TGFuZygncHJvbXB0X2RhdGUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FjdGlvbicsJHRoaXMtPkxhbmcoJ3Byb21wdF9ldmVudHR5cGUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2lwYWRkcmVzcycsJHRoaXMtPkxhbmcoJ3Byb21wdF9pcGFkZHJlc3MnKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VzZXJoaXN0b3J5LnRwbCcpOwovLyBFT0YK]]></data>
	</file>
	<file>
	  <filename>/action.user_forcenewpw.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCdmb3JjZW5ld3B3dGVtcGxhdGUnLCdNQU1TOjpmb3JjZSBuZXcgcGFzc3dvcmQnKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGVtcGxhdGUpOwokdHBsLT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCRpZCwndXNlcl9mb3JjZW5ld3B3JywkcmV0dXJuaWQsJHBhcmFtcykpOwokdHBsLT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKdHJ5IHsKICAgICR1aWQgPSAoaW50KSB4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ3VpZCcpOwogICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJykpOwogICAgJHVpZDIgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgaWYoICR1aWQgIT0gJHVpZDIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKSk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgICAgICRwdzEgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnbWFtc19wYXNzd29yZCcpKTsKICAgICAgICAkcHcyID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21hbXNfcmVwZWF0cGFzc3dvcmQnKSk7CiAgICAgICAgaWYoICRwdzEgIT0gJHB3MiApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKCiAgICAgICAgLy8gc2VlIGlmIGl0IGlzIGEgdmFsaWQgcGFzc3dvcmQuCiAgICAgICAgaWYoICEkdGhpcy0+SXNWYWxpZFBhc3N3b3JkKCRwdzEgKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwoKICAgICAgICAvLyBub3cgc2VlIGlmIHRoZSBwYXNzd29yZCBoYXMgYWN0dWFsbHkgY2hhbmdlZC4KICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRlbmNyeXB0ZWQgPSAkdGhpcy0+RW5jcnlwdFBhc3N3b3JkKCR1aWQsJHB3MSk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBwYXNzd29yZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSBpZCA9ID8nOwogICAgICAgICRzdG9yZWQgPSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHVpZCkpOwogICAgICAgIGlmKCAkZW5jcnlwdGVkID09ICRzdG9yZWQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Bhc3N3b3Jkbm90Y2hhbmdlZCcpKTsKCiAgICAgICAgLy8gc2V0IHRoZSBwYXNzd29yZAogICAgICAgICR0aGlzLT5TZXRVc2VyUGFzc3dvcmQoJHVpZCwkcHcxKTsKCiAgICAgICAgLy8gZGlzYWJsZSB0aGUgZm9yY2UgcmVzZXQgZmxhZwogICAgICAgICR0aGlzLT5Gb3JjZVBhc3N3b3JkQ2hhbmdlKCR1aWQsRkFMU0UpOwoKICAgICAgICAvLyBhbmQgcmVkaXJlY3Qgb3V0IG8gaGVyZS4KICAgICAgICBpZiggKCRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdyZXR1cm50bycpKSApIHsKICAgICAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRyZXR1cm50byk7CiAgICAgICAgICAgIGlmKCAkcGFnZWlkICkgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcGFnZWlkKTsKICAgICAgICB9CiAgICAgICAgaWYoICgkdXJsID0gJHRoaXMtPkdldFBvc3RMb2dpblVSTCgpKSApIHsKICAgICAgICAgICAgcmVkaXJlY3QoJHVybCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICgkdHBsc3RyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicpKSApIHsKICAgICAgICAgICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kdHBsc3RyKTsKICAgICAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgICAgICAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignZ3JvdXAnLCRncm91cG5hbWUpOwogICAgICAgICAgICAkdG1wID0gJHRwbC0+ZmV0Y2goKTsKICAgICAgICAgICAgaWYoICR0bXAgKSB7CiAgICAgICAgICAgICAgICAkcGFnZWlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCk7CiAgICAgICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gYWxsIGVsc2UgZmFpbHMsIHJlZGlyZWN0IGJhY2sgdG8gb3VyIGN1cnJlbiBwYWdlLgogICAgICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybmlkKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIG9uIGVycm9yLCB3ZSBqdXN0IGRpc3BsYXkgYSBtZXNzYWdlLgogICAgJHRwbC0+YXNzaWduKCdlcnJvcicsJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCiR0cGwtPmRpc3BsYXkoKTs=]]></data>
	</file>
	<file>
	  <filename>/action.verifycode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHVzZXJuYW1lID0gJGZhdGFsID0gJGVycm9yID0gJG1lc3NhZ2UgPSBudWxsOwokZG9fZm9ybSA9IDE7CiR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJyk7CiRjb2RlID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NvZGUnKTsKJHVzZXJuYW1lX2lzX2VtYWlsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJywwKTsKJHBhc3N3b3JkMSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX3Bhc3N3b3JkMScpOwokcGFzc3dvcmQyID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfcGFzc3dvcmQyJyk7CiR0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnZm9yZ290cHd2ZXJpZnl0ZW1wbGF0ZScsJ01BTVM6OmZvcmdvdCBwYXNzd29yZCB2ZXJpZnknKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGVtcGxhdGUpOwoKdHJ5IHsKICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgIGlmKCAhJGNvZGUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICAkcmVzID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgaWYoICEkcmVzICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgJHVpbmZvID0gJHJlc1sxXTsKICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvICkpIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgIGlmKCAkdWluZm9bJ2Rpc2FibGVkJ10gKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZGlzYWJsZWQnKSk7CiAgICBpZiggdGltZSgpID4gc3RydG90aW1lKCR1aW5mb1snZXhwaXJlcyddKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjY291bnRleHBpcmVkJykpOwogICAgJHVzZXJuYW1lID0gJHVpbmZvWyd1c2VybmFtZSddOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX2FmdGVydmVyaWZ5J10pICkgewogICAgICAgICR0cGwtPmFzc2lnbignbWFtc19hZnRlcnZlcmlmeScsMSk7CiAgICAgICAgJGRvX2Zvcm0gPSAwOwogICAgICAgICRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2luZm9fcGFzc3dvcmRfcmVzZXQnKTsKICAgIH0KICAgIGVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgICAgIGlmKCAhXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJvcl9zZWN1cml0eScpICk7CiAgICAgICAgJHRlbXBjb2RlID0gJHRoaXMtPkdldFVzZXJUZW1wQ29kZSgkdWlkKTsKICAgICAgICBpZiggISR0ZW1wY29kZSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnKSk7CgogICAgICAgICRjb2RlID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfY29kZScpOwogICAgICAgICRwYXNzd29yZDEgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX3Bhc3N3b3JkMScpKTsKICAgICAgICAkcGFzc3dvcmQyID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19wYXNzd29yZDInKSk7CiAgICAgICAgaWYoICEkdGhpcy0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZDEpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgICAgaWYoICRwYXNzd29yZDEgIT0gJHBhc3N3b3JkMiApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKICAgICAgICBpZiggJGNvZGUgIT0gJHRlbXBjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkY29kZScpKTsKICAgICAgICAkdGhpcy0+U2V0VXNlclBhc3N3b3JkKCR1aWQsJHBhc3N3b3JkMSk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVVzZXJUZW1wQ29kZSgkdWlkKTsKICAgICAgICAkdXNlcm5hbWUgPSAkdGhpcy0+R2V0VXNlcm5hbWUoJHVpZCk7CgogICAgICAgIC8vIGFuZCBzZW5kIGFuIGV2ZW50CiAgICAgICAgJGV2ZW50X3BhcmFtcyA9IGFycmF5KCk7CiAgICAgICAgJGV2ZW50X3BhcmFtc1snbmFtZSddID0gJHVzZXJuYW1lOwogICAgICAgICRldmVudF9wYXJhbXNbJ2lkJ10gPSAkdWlkOwogICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywkZXZlbnRfcGFyYW1zKTsKCiAgICAgICAgLy8gYW5kIGF1ZGl0IGl0CiAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLCdTdWNjZXNzZnVsbHkgY2hhbmdlZCBwYXNzd29yZCB2aWEgZm9yZ290cHcnKTsKICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwncmVzZXRwdycpOwoKICAgICAgICAvLyBhbmQgcmVkaXJlY3Qgc29tZXdoZXJlCiAgICAgICAgJHBhZ2V0cGwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVydmVyaWZ5Jyk7CiAgICAgICAgaWYoICRwYWdldHBsICkgewogICAgICAgICAgICAkdHBsMiA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kcGFnZXRwbCk7CiAgICAgICAgICAgICR0cGwyLT5hc3NpZ24oJ3VzZXJuYW1lJywkZXZlbnRfcGFyYW1zWyduYW1lJ10pOwogICAgICAgICAgICAkdHBsMi0+YXNzaWduKCd1aWQnLCR1aWQpOwogICAgICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAgICAgICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICAgICAgICAgJHRwbDItPmFzc2lnbignZ3JvdXBuYW1lJywkZ3JvdXBuYW1lKTsKICAgICAgICAgICAgJHBhZ2UgPSAkdHBsMi0+ZmV0Y2goKTsKICAgICAgICAgICAgJGRlc3QgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcGFnZSwkcmV0dXJuaWQpOwogICAgICAgICAgICBpZiggISRkZXN0ICkgewogICAgICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnQ291bGQgbm90IGNvbnZlcnQgdGVtcGxhdGUgJnF1b3Q7Jy4kcGFnZXRwbC4nJnF1b3Q7IHRvIGEgcGFnZSBpZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkZGVzdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIHJlZGlyZWN0IGFmdGVyIFBPU1QKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJ21hbXNfYWZ0ZXJ2ZXJpZnknPT4xLCd1aWQnPT4kdWlkLCdjb2RlJz0+J19faW52YWxpZF9fJyk7CiAgICAgICAgICAgICR0aGlzLT5yZWRpcmVjdCgnY250bnQwMDEnLCd2ZXJpZnljb2RlJywkcmV0dXJuaWQsJHBhcm1zKTsKICAgICAgICB9CiAgICB9Cn0KY2F0Y2goIFxSdW50aW1lRXhjZXB0aW9uICRlICkgewogICAgJGVycm9yID0gMTsKICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKfQpjYXRjaCggXExvZ2ljRXhjZXB0aW9uICRlICkgewogICAgJGRvX2Zvcm0gPSAwOwogICAgJGVycm9yID0gMTsKICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKfQoKCi8vIGNyZWF0ZSB0aGUgdGVtcGxhdGUKaWYoICRkb19mb3JtICkgewogICAgJHBhcm1zID0gYXJyYXkoJ3VpZCc9PiR1aWQsJ2NvZGUnPT4kY29kZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCdjbnRudDAxJywndmVyaWZ5Y29kZScsJHJldHVybmlkLCRwYXJtcykpOwogICAgJHRwbC0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKfQokdHBsLT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiR0cGwtPmFzc2lnbignbWF4X3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiR0cGwtPmFzc2lnbignbWF4X3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX2lzX2VtYWlsJywkdXNlcm5hbWVfaXNfZW1haWwpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwokdHBsLT5hc3NpZ24oJ3Bhc3N3b3JkMScsJHBhc3N3b3JkMSk7CiR0cGwtPmFzc2lnbigncGFzc3dvcmQyJywkcGFzc3dvcmQyKTsKJHRwbC0+YXNzaWduKCdjb2RlJywkY29kZSk7CiR0cGwtPmFzc2lnbigndWlkJywkdWlkKTsKJHRwbC0+YXNzaWduKCdlcnJvcicsJGVycm9yKTsKJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbWVzc2FnZSk7CiR0cGwtPmRpc3BsYXkoKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.verifyonly.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHRpdGxlID0gJGVycm9yID0gJG1zZyA9IG51bGw7Cgp0cnkgewogICAgJHVpZCA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCd1aWQnKTsKICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgJHJlcyA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgJHVpbmZvID0gJHJlc1sxXTsKICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvICkpIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgaWYoICR1aW5mb1snZGlzYWJsZWQnXSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWNjb3VudGRpc2FibGVkJykpOwogICAgaWYoIHRpbWUoKSA+IHN0cnRvdGltZSgkdWluZm9bJ2V4cGlyZXMnXSkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjY291bnRleHBpcmVkJykpOwogICAgdW5zZXQoJHJlcyk7CiAgICAkY29kZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdjb2RlJyk7CiAgICBpZiggISRjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICBpZiggJGNvZGUgPT0gJ3h4eHgnICkgJGNvZGUgPSBudWxsOwogICAgJGRiY29kZSA9ICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoJHVpZCk7CiAgICBpZiggISRkYmNvZGUgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wY29kZW5vdGZvdW5kJyApICk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmKCAhXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJvcl9zZWN1cml0eScpICk7CgogICAgICAgICAgICAkdGl0bGUgPSAkdGhpcy0+TGFuZygnYWNjb3VudF92ZXJpZmljYXRpb24nKTsKICAgICAgICAgICAgJG1zZyA9IG51bGw7CiAgICAgICAgICAgICRlcnJvciA9IGZhbHNlOwoKICAgICAgICAgICAgaWYoICEkZGJjb2RlIHx8ICRkYmNvZGUgIT0gJGNvZGUgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRjb2RlJykpOwoKICAgICAgICAgICAgLy8gc3VjY2VzcyBjb25kaXRpb24KICAgICAgICAgICAgJHRoaXMtPlJlbW92ZVVzZXJUZW1wQ29kZSgkdWlkKTsKICAgICAgICAgICAgJHRoaXMtPkZvcmNlVmVyaWZ5KCR1aWQsRkFMU0UpOwogICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksJ1N1Y2Nlc3NmdWxseSB2ZXJpZmllZCBoaXMvaGVyIGluZm9ybWF0aW9uJyk7CiAgICAgICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCd2ZXJpZnkgY29tcGxldGUnKTsKCiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vayggJ01BTVM6OkFmdGVyVmVyaWZ5JywgWyd1aWQnPT4kdWlkIF0gKTsKCiAgICAgICAgICAgICRldmVudF9wYXJtcyA9IFtdOwogICAgICAgICAgICAkZXZlbnRfcGFybXNbJ2lkJ10gPSAkdWlkOwogICAgICAgICAgICAkZXZlbnRfcGFybXNbJ25hbWUnXSA9ICR1aW5mb1sndXNlcm5hbWUnXTsKICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCRldmVudF9wYXJtcyk7CgogICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIHNhdmVkIGRhdGEgQU5EIHdlIGNhbiBsb2dpbiBhZnRlciB2ZXJpZnkKICAgICAgICAgICAgLy8gdGhlbiBsb2cgdGhlIHVzZXIgaW4uCiAgICAgICAgICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbG9naW5fYWZ0ZXJfdmVyaWZ5JykgKSB7CiAgICAgICAgICAgICAgICAkZGF0YSA9IFxtYW1zX3V0aWxzOjpyZXRyaWV2ZV90ZW1wX2xvZ2luZGF0YSgpOwogICAgICAgICAgICAgICAgaWYoICRkYXRhICkgewogICAgICAgICAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+TG9naW4oICRkYXRhLT51c2VybmFtZSwgJGRhdGEtPnBhc3N3b3JkLCAkZGF0YS0+b25seWdyb3Vwcyk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkcmVzWzBdICkgdGhyb3cgbmV3IFxGZXVMb2dpbkZhaWxlZEV4Y2VwdGlvbigkcmVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAkdWlkID0gJHJlc1swXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2VlIGlmIHdlIGNhbiByZWRpcmVjdAogICAgICAgICAgICAkcGFnZSA9IFxtYW1zX3V0aWxzOjpyZXNvbHZlX3ByZWZ0cGxfdG9fcGFnZSgncGFnZWlkX2FmdGVydmVyaWZ5JywkdWlkKTsKICAgICAgICAgICAgaWYoICRwYWdlICkgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcGFnZSk7CgogICAgICAgICAgICAvLyBubyBwYWdldGVtcGxhdGUgb3Igb3RoZXIgZXJyb3IgbWVhbnMgbm8gcmVkaXJlY3QKICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoIHRvIGRpc3BsYXlpbmcgYSBtZXNzYWdlCiAgICAgICAgICAgICRtc2cgPSAkdGhpcy0+TGFuZygnbXNnX3ZlcmlmaWNhdGlvbl9jb21wbGV0ZScpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJG1zZyA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgICAgICRlcnJvciA9IHRydWU7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5TaG93Rm9ybWF0dGVkTWVzc2FnZSgkbXNnLCRlcnJvciwkdGl0bGUpOwogICAgICAgIHJldHVybjsKICAgIH0gLy8gc3VibWl0CgogICAgLy8gZGlzcGxheSB0aGUgZm9ybQogICAgJHRoZXRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCd2ZXJpZnlmb3JtdGVtcGxhdGUnLCdNQU1TOjp2ZXJpZnlfZm9ybScpOwogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgJHRwbC0+YXNzaWduKCd1aWQnLCR1aWQpOwogICAgJHRwbC0+YXNzaWduKCdjb2RlJywkY29kZSk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkbXNnID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICRlcnJvciA9IHRydWU7CiAgICAkdGhpcy0+U2hvd0Zvcm1hdHRlZE1lc3NhZ2UoJG1zZywkZXJyb3IsJHRpdGxlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/action.viewuser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKJHVpZCA9IChpbnQpJHRoaXMtPkxvZ2dlZEluSWQoKTsKJHVpZCA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCd1aWQnLCR1aWQpOwppZiggJHVpZCA8IDEgKSByZXR1cm47CiR0bXAgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CmlmKCAkdG1wWzBdID09PSBGQUxTRSApIHJldHVybjsKJHVzZXJfaW5mbyA9ICR0bXBbMV07CiR0bXAgPSBudWxsOwokZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CmlmKCAhJGdyb3VwcyApIHJldHVybjsKCiR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywndmlld3VzZXJ0ZW1wbGF0ZScsJ01BTVM6OnZpZXcgdXNlcicpOwokdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiR0cGwtPmFzc2lnbigndXNlcmluZm8nLCR1c2VyX2luZm8pOwokdHBsLT5hc3NpZ24oJ2VtYWlsX2FkZHJlc3MnLCR0aGlzLT5HZXRFbWFpbCgkdWlkKSk7CgovLyBub3cgd2UgaGF2ZSB0aGUgZ3JvdXBzLCB3ZSBidWlsZCBhIHVuaW9uIG9mIGFsbCBvZiB0aGUgZ3JvdXBzIHByb3BlcnRpZXMKJHByb3AyID0gYXJyYXkoKTsKZm9yZWFjaCggJGdyb3VwcyBhcyAkZ3JwcmVjb3JkICkKewogICAgJGdpZCA9ICRncnByZWNvcmRbJ2dyb3VwaWQnXTsKICAgICRwcm9wcmVsYXRpb25zID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICAgICRwcm9wMiA9IFxNQU1TXFJSVXRpbHM6OmFycmF5X21lcmdlX2J5X25hbWVfcmVxdWlyZWQoICRwcm9wMiwgJHByb3ByZWxhdGlvbnMgKTsKICAgIHVhc29ydCggJHByb3AyLCBhcnJheSgneHRfYXJyYXknLCdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknKSApOwp9CgovLyBub3cgd2UgbWVyZ2UgaW4gYWxsIG9mIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucwokZGVmbnMgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwokcHJvcDMgPSBhcnJheSgpOwpmb3JlYWNoKCAkcHJvcDIgYXMgJG9uZXByb3AgKSB7CiAgICBmb3JlYWNoKCAkZGVmbnMgYXMgJG9uZWRlZm4gKSB7CiAgICAgICAgaWYoICRvbmVkZWZuWyduYW1lJ10gPT0gJG9uZXByb3BbJ25hbWUnXSApIHsKICAgICAgICAgICAgJG9uZXByb3BbJ3Byb21wdCddID0gJG9uZWRlZm5bJ3Byb21wdCddOwogICAgICAgICAgICAkb25lcHJvcFsndHlwZSddID0gJG9uZWRlZm5bJ3R5cGUnXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgJHByb3AzW10gPSAkb25lcHJvcDsKfQoKLy8gQW5kIG5vdyBtZXJnZSBpbiB0aGUgdmFsdWVzCiR1c2VycHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7CiRwcm9wc2J5bmFtZSA9IGFycmF5KCk7CmZvcmVhY2goICRwcm9wMyBhcyAkb25lcHJvcCApIHsKICAgIGlmKCBpc19hcnJheSgkdXNlcnByb3BzKSApIHsKICAgICAgICBmb3JlYWNoKCAkdXNlcnByb3BzIGFzICRvbmV2YWwgKSB7CiAgICAgICAgICAgIGlmKCAkb25lcHJvcFsnbmFtZSddID09ICRvbmV2YWxbJ3RpdGxlJ10gJiYgaXNzZXQoJG9uZXZhbFsnZGF0YSddKSAmJiAhZW1wdHkoJG9uZXZhbFsnZGF0YSddKSApIHsKICAgICAgICAgICAgICAgICRvbmVwcm9wWydkYXRhJ10gPSAkb25ldmFsWydkYXRhJ107CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiggaXNzZXQoJG9uZXByb3BbJ2RhdGEnXSkgKSAkcHJvcHNieW5hbWVbJG9uZXByb3BbJ25hbWUnXV0gPSAkb25lcHJvcDsKfQoKJHRwbC0+YXNzaWduKCd1c2VyX3Byb3BlcnRpZXMnLCRwcm9wc2J5bmFtZSk7CiR0cGwtPmRpc3BsYXkoKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bs/bs.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9saWIvY29yZS5jc3MiOw0KQGltcG9ydCAiLi9saWIvaGVscGVycy5jc3MiOw0KQGltcG9ydCAiLi9saWIvbWFyZ2luX3BhZGRpbmcuY3NzIjsNCkBpbXBvcnQgIi4vbGliL21pc2MuY3NzIjsNCkBpbXBvcnQgIi4vbGliL2dyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL2xnLWdyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL21kLWdyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL3NtLWdyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL2dyaWQtdXRpbHMuY3NzIjsNCg==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bs/lib/core.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKCi5cXC1sYXlvdXQKewogIGRpc3BsYXk6IGJsb2NrOwogIG92ZXJmbG93LXg6IGhpZGRlbjsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiAjNTQ2Nzc4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCi5cXC1sYXlvdXQtLWxlZnQKewogIGZsb2F0OiBsZWZ0Owp9CgouXFwtbGF5b3V0LS1yaWdodAp7CiAgZmxvYXQ6IHJpZ2h0Owp9CgouXFwtYnJhbmQKewogIGZvbnQtZmFtaWx5OiAiTW9udHNlcnJhdCIsICJSb2JvdG8iLCBzYW5zLXNlcmlmOwp9CgouXFwtYmxvY2txdW90ZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgY29sb3I6ICM4NzlBQUI7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzg3OUFBQjsKICBwYWRkaW5nLXRvcDogNXB4OwogIHBhZGRpbmctYm90dG9tOiA1cHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBtYXJnaW4tbGVmdDogMHB4OwogIG1hcmdpbi1yaWdodDogMHB4Owp9CgouXFwtY29kZQp7CiAgY29sb3I6ICNFRTY3NUQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGZvbnQtc2l6ZTogMTNweDsKICBmb250LXdlaWdodDogNjAwOwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHBhZGRpbmctdG9wOiAycHg7CiAgcGFkZGluZy1ib3R0b206IDJweDsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7Cn0KCi5cXC1jb2RlLS1kYXJrCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1oMQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiA0MHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDUxcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDE6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oMgp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAzMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDI6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oMwp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAyOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDI5cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDM6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oNAp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDI1cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDQ6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oNQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDU6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oNgp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDY6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1saW5rCnsKICBjb2xvcjogIzRFOTFFNDsKICBmb250LXdlaWdodDogNjAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLWxpbms6aG92ZXIKewogIGNvbG9yOiAjMUI1RUIxOwp9CgouXFwtcGFyYWdyYXBoLAouXFwtcAp7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgZm9udC1zaXplOiAxNnB4OwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgouXFwtcGFyYWdyYXBoLS1sZWFkLAouXFwtcC0tbGVhZAp7CiAgZm9udC1zaXplOiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CgouXFwtcHJlCnsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdy14OiBhdXRvOwogIHdpZHRoOiBjYWxjKDEwMCUgLSAyICogMTVweCk7CiAgY29sb3I6ICM1NDY3Nzg7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIHBhZGRpbmc6IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBtYXJnaW4tdG9wOiAwcHg7Cn0KCi5cXC1wcmUtLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3NzggIWltcG9ydGFudDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXNtYWxsCnsKICBmb250LXNpemU6IDEzcHg7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1idG4KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7CiAgY3Vyc29yOiBwb2ludGVyOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgZm9udC1zaXplOiAxNnB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctdG9wOiA1cHg7CiAgcGFkZGluZy1ib3R0b206IDVweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgYm9yZGVyOiAwcHg7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi5cXC1idG46aG92ZXIKewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3Owp9CgouXFwtYnRuLlxcLWJ0bi0tcHJpbWFyeQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXByaW1hcnk6aG92ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICMxQjVFQjE7Cn0KCi5cXC1idG4uXFwtYnRuLS1zdWNjZXNzCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEFDRjdGOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYnRuLlxcLWJ0bi0tc3VjY2Vzczpob3Zlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI2OEQ0RjsKfQoKLlxcLWJ0bi5cXC1idG4tLXdhcm5pbmcKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS13YXJuaW5nOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTA5RjA1Owp9CgouXFwtYnRuLlxcLWJ0bi0tZXJyb3IKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1lcnJvcjpob3Zlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0NGMjMxNjsKfQoKLlxcLWJ0bi5cXC1idG4tLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1kYXJrOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkEzNDNDOwp9CgouXFwtYnRuLlxcLWJ0bi0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1idG4uXFwtYnRuLS1saWdodDpob3Zlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0NCRDhFNjsKfQoKLlxcLWJ0bi5cXC1idG4tLW5hdnkKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1ncmVlbgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzkzRDI2MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXRlYWwKewogIGJhY2tncm91bmQtY29sb3I6ICM2MEQyQjY7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYnRuLlxcLWJ0bi0tcHVycGxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUM5NEU4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYnRuLlxcLWJ0bi0tcGluawp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U3N0VCODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXJlZAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLW9yYW5nZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y3ODA1NTsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXllbGxvdwp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLWdyZXkKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1idG4tLWRpc2FibGVkCnsKICBvcGFjaXR5OiAwLjYgIWltcG9ydGFudDsKICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7Cn0KCi5cXC1idG4tLXNtYWxsCnsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwYWRkaW5nLXRvcDogNHB4OwogIHBhZGRpbmctYm90dG9tOiA0cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxNnB4Owp9CgouXFwtYnRuLS1iaWcKewogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIHBhZGRpbmctdG9wOiA5cHg7CiAgcGFkZGluZy1ib3R0b206IDlweDsKICBmb250LXNpemU6IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KCi5cXC1idG4tLWZsdWlkCnsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50Owp9CgouXFwtYnRuLS1yb3VuZGVkCnsKICBib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC1idG4tZ3JvdXAKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLlxcLWJ0bi1ncm91cCA+IC5cXC1idG46bm90KDpmaXJzdC1jaGlsZCkKewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwcHg7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5cXC1idG4tZ3JvdXAgPiAuXFwtYnRuOm5vdCg6bGFzdC1jaGlsZCkKewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHg7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDBweDsKICBtYXJnaW4tcmlnaHQ6IC0ycHg7Cn0KCi5cXC1jbG9zZQp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBib3JkZXItcmFkaXVzOiAxMDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDg0LCAxMDMsIDEyMCwgMC4zKTsKfQoKLlxcLWNsb3NlOmFmdGVyLCAuXFwtY2xvc2U6YmVmb3JlCnsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDJweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA5cHg7CiAgbGVmdDogNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1jbG9zZTphZnRlcgp7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwp9CgouXFwtY2xvc2U6YmVmb3JlCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKfQoKLlxcLWNsb3NlOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDg0LCAxMDMsIDEyMCwgMC41KTsKfQoKLlxcLXJ1bGUKewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi10b3A6IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKICBib3JkZXI6IDBweDsKfQoKLlxcLXJ1bGU6Zmlyc3QtY2hpbGQKewogIG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50Owp9CgouXFwtcnVsZTpsYXN0LWNoaWxkCnsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNpaW1wbGUtc3Bpbm5lci1hbmltYXRpb24KewogIDUwJQogIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KfQoKQGtleWZyYW1lcyBzaWltcGxlLXNwaW5uZXItYW5pbWF0aW9uCnsKICA1MCUKICB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KCi5cXC1zcGlubmVyCnsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDEwcHg7CiAgY29udGVudDogIiI7CiAgLXdlYmtpdC1hbmltYXRpb246IHNpaW1wbGUtc3Bpbm5lci1hbmltYXRpb24gMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgYW5pbWF0aW9uOiBzaWltcGxlLXNwaW5uZXItYW5pbWF0aW9uIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OwogIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtaW5kZW50OiAtOTk5OWVtOwogIGZvbnQtc2l6ZTogMTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjMzczsKICBhbmltYXRpb24tZGVsYXk6IDAuMzNzOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tdG9wOiAwcHg7Cn0KCi5cXC1zcGlubmVyOmJlZm9yZQp7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbnRlbnQ6ICIiOwogIC13ZWJraXQtYW5pbWF0aW9uOiBzaWltcGxlLXNwaW5uZXItYW5pbWF0aW9uIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OwogIGFuaW1hdGlvbjogc2lpbXBsZS1zcGlubmVyLWFuaW1hdGlvbiAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBib3JkZXItcmFkaXVzOiAxMDBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogY2FsYygxNXB4ICogLTEpOwogIHRvcDogMDsKfQoKLlxcLXNwaW5uZXI6YWZ0ZXIKewogIHdpZHRoOiAxMHB4OwogIGhlaWdodDogMTBweDsKICBjb250ZW50OiAiIjsKICAtd2Via2l0LWFuaW1hdGlvbjogc2lpbXBsZS1zcGlubmVyLWFuaW1hdGlvbiAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICBhbmltYXRpb246IHNpaW1wbGUtc3Bpbm5lci1hbmltYXRpb24gMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYm9yZGVyLXJhZGl1czogMTAwcHg7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNjZzOwogIGFuaW1hdGlvbi1kZWxheTogMC42NnM7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDE1cHg7CiAgdG9wOiAwOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wcmltYXJ5LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wcmltYXJ5OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wcmltYXJ5OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tc3VjY2VzcywgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tc3VjY2VzczphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tc3VjY2VzczpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXdhcm5pbmcsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXdhcm5pbmc6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXdhcm5pbmc6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1lcnJvciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZXJyb3I6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLWVycm9yOmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZGFyaywgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZGFyazphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZGFyazpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLWxpZ2h0LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1saWdodDphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tbGlnaHQ6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1uYXZ5LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1uYXZ5OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1uYXZ5OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZ3JlZW4sIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLWdyZWVuOmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmVlbjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXRlYWwsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXRlYWw6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXRlYWw6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2Owp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ibHVlLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ibHVlOmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ibHVlOmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tcHVycGxlLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wdXJwbGU6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXB1cnBsZTpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNBQzk0RTg7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXBpbmssIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXBpbms6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXBpbms6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTc3RUI4Owp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1yZWQsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXJlZDphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tcmVkOmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tb3JhbmdlLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1vcmFuZ2U6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLW9yYW5nZTpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXllbGxvdywgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0teWVsbG93OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS15ZWxsb3c6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmV5LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmV5OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmV5OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLXNwaW5uZXItLXNtYWxsLCAuXFwtc3Bpbm5lci0tc21hbGw6YmVmb3JlLCAuXFwtc3Bpbm5lci0tc21hbGw6YWZ0ZXIKewogIHdpZHRoOiA4cHggIWltcG9ydGFudDsKICBoZWlnaHQ6IDhweCAhaW1wb3J0YW50Owp9CgouXFwtc3Bpbm5lci0tc21hbGw6YmVmb3JlCnsKICBsZWZ0OiBjYWxjKDEzcHggKiAtMSkgIWltcG9ydGFudDsKfQoKLlxcLXNwaW5uZXItLXNtYWxsOmFmdGVyCnsKICBsZWZ0OiAxM3B4ICFpbXBvcnRhbnQ7Cn0KCi5cXC1zcGlubmVyLS1sYXJnZSwgLlxcLXNwaW5uZXItLWxhcmdlOmJlZm9yZSwgLlxcLXNwaW5uZXItLWxhcmdlOmFmdGVyCnsKICB3aWR0aDogMTVweCAhaW1wb3J0YW50OwogIGhlaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtc3Bpbm5lci0tbGFyZ2U6YmVmb3JlCnsKICBsZWZ0OiBjYWxjKDIwcHggKiAtMSkgIWltcG9ydGFudDsKfQoKLlxcLXNwaW5uZXItLWxhcmdlOmFmdGVyCnsKICBsZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC10YWcKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGxpbmUtaGVpZ2h0OiAxOXB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBwYWRkaW5nLWxlZnQ6IDhweDsKICBwYWRkaW5nLXJpZ2h0OiA4cHg7CiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wOwp9CgouXFwtdGFnLS1yb3VuZGVkCnsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9CgouXFwtdGFnLlxcLXRhZy0tcHJpbWFyeQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXRhZy5cXC10YWctLXN1Y2Nlc3MKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS13YXJuaW5nCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tZXJyb3IKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1kYXJrCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC10YWcuXFwtdGFnLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS10ZWFsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tYmx1ZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXRhZy5cXC10YWctLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0FDOTRFODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXRhZy5cXC10YWctLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS15ZWxsb3cKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwCnsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDI1cHggLSAyMHB4IC0gNXB4KTsKICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7CiAgYm9yZGVyLWxlZnQtd2lkdGg6IDVweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgcGFkZGluZy10b3A6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMjBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICBmb250LXNpemU6IDE2cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7Cn0KCi5cXC10aXA6OmJlZm9yZQp7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTBweDsKICBsZWZ0OiAtMTJweDsKICB3aWR0aDogMjBweDsKICBoZWlnaHQ6IDIwcHg7CiAgYm9yZGVyLXJhZGl1czogMTAwcHg7CiAgY29sb3I6ICNGRkY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGxpbmUtaGVpZ2h0OiAyMHB4Owp9CgouXFwtdGlwLlxcLXRpcC0tcHJpbWFyeQp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1wcmltYXJ5OjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1zdWNjZXNzCnsKICBib3JkZXItbGVmdC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXRpcC5cXC10aXAtLXN1Y2Nlc3M6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXRpcC5cXC10aXAtLXdhcm5pbmcKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRkJDODUwOwp9CgouXFwtdGlwLlxcLXRpcC0td2FybmluZzo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtdGlwLlxcLXRpcC0tZXJyb3IKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtdGlwLlxcLXRpcC0tZXJyb3I6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXRpcC5cXC10aXAtLWRhcmsKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tZGFyazo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tbGlnaHQKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRERFNUVFOwp9CgouXFwtdGlwLlxcLXRpcC0tbGlnaHQ6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLXRpcC5cXC10aXAtLW5hdnkKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tbmF2eTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tZ3JlZW4KewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTNEMjYwOwp9CgouXFwtdGlwLlxcLXRpcC0tZ3JlZW46OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzkzRDI2MDsKfQoKLlxcLXRpcC5cXC10aXAtLXRlYWwKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjNjBEMkI2Owp9CgouXFwtdGlwLlxcLXRpcC0tdGVhbDo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2Owp9CgouXFwtdGlwLlxcLXRpcC0tYmx1ZQp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1ibHVlOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1wdXJwbGUKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjQUM5NEU4Owp9CgouXFwtdGlwLlxcLXRpcC0tcHVycGxlOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNBQzk0RTg7Cn0KCi5cXC10aXAuXFwtdGlwLS1waW5rCnsKICBib3JkZXItbGVmdC1jb2xvcjogI0U3N0VCODsKfQoKLlxcLXRpcC5cXC10aXAtLXBpbms6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U3N0VCODsKfQoKLlxcLXRpcC5cXC10aXAtLXJlZAp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICNFRTY3NUQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1yZWQ6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXRpcC5cXC10aXAtLW9yYW5nZQp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICNGNzgwNTU7Cn0KCi5cXC10aXAuXFwtdGlwLS1vcmFuZ2U6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y3ODA1NTsKfQoKLlxcLXRpcC5cXC10aXAtLXllbGxvdwp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC10aXAuXFwtdGlwLS15ZWxsb3c6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKfQoKLlxcLXRpcC5cXC10aXAtLWdyZXkKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRERFNUVFOwp9CgouXFwtdGlwLlxcLXRpcC0tZ3JleTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwp9CgouXFwtdGlwLS1leGNsYW1hdGlvbjo6YmVmb3JlCnsKICBjb250ZW50OiAiISI7Cn0KCi5cXC10aXAtLXF1ZXN0aW9uOjpiZWZvcmUKewogIGNvbnRlbnQ6ICI/IjsKfQoKLlxcLXRpcC0taGVhcnQ6OmJlZm9yZQp7CiAgY29udGVudDogIuKdpCI7Cn0KCi5cXC1hbGVydAp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDE1cHggLSAzMHB4KTsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXNpemU6IDE2cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3OwogIGNvbG9yOiAjNTQ2Nzc4OwogIHBhZGRpbmctdG9wOiAxMHB4OwogIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5cXC1hbGVydC10aXRsZQp7CiAgZm9udC1zaXplOiAxOXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAyNnB4Owp9CgouXFwtYWxlcnQtY2xvc2UKewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwcHg7CiAgcmlnaHQ6IDEwcHg7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAxNnB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBvcGFjaXR5OiAwLjY7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOwp9CgouXFwtYWxlcnQtY2xvc2U6aG92ZXIKewogIG9wYWNpdHk6IDE7Cn0KCi5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtY2xvc2U6OmFmdGVyCnsKICBjb250ZW50OiAiIjsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDNweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3JkZXItcmFkaXVzOiAxcHg7CiAgdG9wOiA2cHg7Cn0KCi5cXC1hbGVydC1jbG9zZTo6YmVmb3JlCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Cn0KCi5cXC1hbGVydC1jbG9zZTo6YWZ0ZXIKewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLXByaW1hcnkKewogIGJhY2tncm91bmQtY29sb3I6ICNBN0M4RjI7CiAgY29sb3I6ICMxQjVFQjE7Cn0KCi5cXC1hbGVydC0tcHJpbWFyeSAuXFwtYWxlcnQtY2xvc2U6OmJlZm9yZSwgLlxcLWFsZXJ0LS1wcmltYXJ5IC5cXC1hbGVydC1jbG9zZTo6YWZ0ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICMxQjVFQjE7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tc3VjY2Vzcwp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlCRTRCODsKICBjb2xvcjogIzI2OEQ0RjsKfQoKLlxcLWFsZXJ0LS1zdWNjZXNzIC5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtLXN1Y2Nlc3MgLlxcLWFsZXJ0LWNsb3NlOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI2OEQ0RjsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS13YXJuaW5nCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkRFN0I0OwogIGNvbG9yOiAjRTA5RjA1Owp9CgouXFwtYWxlcnQtLXdhcm5pbmcgLlxcLWFsZXJ0LWNsb3NlOjpiZWZvcmUsIC5cXC1hbGVydC0td2FybmluZyAuXFwtYWxlcnQtY2xvc2U6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTA5RjA1Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLWVycm9yCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCRUI5OwogIGNvbG9yOiAjQ0YyMzE2Owp9CgouXFwtYWxlcnQtLWVycm9yIC5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtLWVycm9yIC5cXC1hbGVydC1jbG9zZTo6YWZ0ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICNDRjIzMTY7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzg3OUFBQjsKICBjb2xvcjogIzJBMzQzQzsKfQoKLlxcLWFsZXJ0LS1kYXJrIC5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtLWRhcmsgLlxcLWFsZXJ0LWNsb3NlOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJBMzQzQzsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1saWdodAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICBjb2xvcjogI0NCRDhFNjsKfQoKLlxcLWFsZXJ0LS1saWdodCAuXFwtYWxlcnQtY2xvc2U6OmJlZm9yZSwgLlxcLWFsZXJ0LS1saWdodCAuXFwtYWxlcnQtY2xvc2U6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0JEOEU2Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLW5hdnkKewogIGJhY2tncm91bmQtY29sb3I6ICM3ODhFQTE7CiAgY29sb3I6ICMzNDQxNEI7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICNCQ0UzOUM7CiAgY29sb3I6ICM2Q0IzMzI7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tdGVhbAp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlDRTNEMTsKICBjb2xvcjogIzMyQjM5MzsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBCQkVFOwogIGNvbG9yOiAjMUU2QUM4Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RFRDVGNjsKICBjb2xvcjogIzdDNTdEQjsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1waW5rCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNCRURCOwogIGNvbG9yOiAjREIzRDk0Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLXJlZAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y1QThBMzsKICBjb2xvcjogI0U3MjYxODsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGQUI2OUU7CiAgY29sb3I6ICNGNDQ5MEI7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0teWVsbG93CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkRFMDlCOwogIGNvbG9yOiAjRkFCMDA1Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLWdyZXkKewogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgY29sb3I6ICNDQkQ4RTY7Cn0KCi5cXC1hbGVydCAuXFwtY2xvc2UKewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHJpZ2h0OiA1cHggIWltcG9ydGFudDsKICB0b3A6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtYnJlYWRjcnVtYgp7CiAgZGlzcGxheTogYmxvY2s7CiAgaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmctdG9wOiAxMHB4OwogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgYm9yZGVyOiAwcHg7Cn0KCi5cXC1icmVhZGNydW1iLWl0ZW0sIC5cXC1icmVhZGNydW1iLWNydW1iCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZmxvYXQ6IGxlZnQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGhlaWdodDogMjRweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM0RTkxRTQ7CiAgdHJhbnNpdGlvbjogY29sb3IgMC4zczsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5cXC1icmVhZGNydW1iLWl0ZW06bm90KDpmaXJzdC1vZi10eXBlKSwgLlxcLWJyZWFkY3J1bWItY3J1bWI6bm90KDpmaXJzdC1vZi10eXBlKQp7CiAgcGFkZGluZy1sZWZ0OiA4cHg7Cn0KCi5cXC1icmVhZGNydW1iLWl0ZW06aG92ZXIsIC5cXC1icmVhZGNydW1iLWNydW1iOmhvdmVyCnsKICBjb2xvcjogIzFCNUVCMTsKfQoKLlxcLWJyZWFkY3J1bWItaXRlbTpub3QoOmZpcnN0LW9mLXR5cGUpOjpiZWZvcmUsIC5cXC1icmVhZGNydW1iLWNydW1iOm5vdCg6Zmlyc3Qtb2YtdHlwZSk6OmJlZm9yZQp7CiAgY29udGVudDogIi8iOwogIGNvbG9yOiAjODc5QUFCOwogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9CgouXFwtYnJlYWRjcnVtYi1pdGVtLS1zZWxlY3RlZCwgLlxcLWJyZWFkY3J1bWItY3J1bWItLXNlbGVjdGVkCnsKICBjb2xvcjogIzU0Njc3OCAhaW1wb3J0YW50OwogIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsKfQoKLlxcLWNhcmQKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgZm9udC1zaXplOiAxNnB4Owp9CgouXFwtY2FyZC1oZWFkZXIsIC5cXC1jYXJkLWJvZHksIC5cXC1jYXJkLWZvb3RlciwgLlxcLWNhcmQtbGluawp7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRUVGMkY3OwogIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNFRUYyRjc7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNFRUYyRjc7Cn0KCi5cXC1jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCwgLlxcLWNhcmQtYm9keTpmaXJzdC1jaGlsZCwgLlxcLWNhcmQtZm9vdGVyOmZpcnN0LWNoaWxkLCAuXFwtY2FyZC1saW5rOmZpcnN0LWNoaWxkCnsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKfQoKLlxcLWNhcmQtaGVhZGVyOmxhc3QtY2hpbGQsIC5cXC1jYXJkLWJvZHk6bGFzdC1jaGlsZCwgLlxcLWNhcmQtZm9vdGVyOmxhc3QtY2hpbGQsIC5cXC1jYXJkLWxpbms6bGFzdC1jaGlsZAp7CiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNFRUYyRjc7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Cn0KCi5cXC1jYXJkLWhlYWRlciwgLlxcLWNhcmQtZm9vdGVyCnsKICBwYWRkaW5nOiAxMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7Cn0KCi5cXC1jYXJkLWhlYWRlcgp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5cXC1jYXJkLWJvZHkKewogIHBhZGRpbmc6IDEycHg7Cn0KCi5cXC1jYXJkLWxpbmsKewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBjb2xvcjogIzRFOTFFNDsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDE1cHg7CiAgcGFkZGluZzogMTJweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwp9CgouXFwtY2FyZC1saW5rOjpiZWZvcmUKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIHdpZHRoOiAxMXB4OwogIGhlaWdodDogMTFweDsKICBib3JkZXItdG9wOiAzcHggc29saWQgIzRFOTFFNDsKICBib3JkZXItcmlnaHQ6IDNweCBzb2xpZCAjNEU5MUU0OwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTdweDsKICByaWdodDogMTVweDsKICB0cmFuc2l0aW9uOiByaWdodCAwLjNzOwp9CgouXFwtY2FyZC1saW5rOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3Owp9CgouXFwtY2FyZC1saW5rOmhvdmVyOjpiZWZvcmUKewogIHJpZ2h0OiAxMnB4Owp9CgouXFwtY2FyZC10aXRsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLlxcLWNhcmQtc3VidGl0bGUKewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTVweDsKICBjb2xvcjogIzg3OUFBQjsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgbGluZS1oZWlnaHQ6IDIzcHg7Cn0KCi5cXC1jYXJkLXRpdGxlICsgLlxcLWNhcmQtc3VidGl0bGUKewogIG1hcmdpbi10b3A6IC01cHggIWltcG9ydGFudDsKfQoKLlxcLWxpc3QKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4Owp9CgouXFwtbGlzdC1pdGVtCnsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAxMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1saXN0LWl0ZW06Zmlyc3QtY2hpbGQKewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4Owp9CgouXFwtbGlzdC1pdGVtOmxhc3QtY2hpbGQKewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4Owp9CgouXFwtbGlzdC1pdGVtOm5vdCg6bGFzdC1jaGlsZCkKewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtbGlzdC0taG92ZXIgLlxcLWxpc3QtaXRlbTpub3QoLlxcLWxpc3QtaXRlbS0tc2VsZWN0ZWQpOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLWxpc3QtaXRlbS0tc2VsZWN0ZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNBN0M4RjI7Cn0KCi5cXC1saXN0LWl0ZW0tLXNlbGVjdGVkLCAuXFwtbGlzdC1pdGVtLS1zZWxlY3RlZCAuXFwtbGlzdC10aXRsZSwgLlxcLWxpc3QtaXRlbS0tc2VsZWN0ZWQgLlxcLWxpc3QtZGVzY3JpcHRpb24KewogIGNvbG9yOiAjMUI1RUIxOwp9CgouXFwtbGlzdC10aXRsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLWxpc3QtZGVzY3JpcHRpb24KewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjBweDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1saXN0LWl0ZW0gLlxcLXRhZwp7CiAgZmxvYXQ6IHJpZ2h0Owp9CgouXFwtbWVudQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLW1lbnUtZ3JvdXAKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjVweDsKICBsaW5lLWhlaWdodDogMjVweDsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogYm9sZDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1tZW51LWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpCnsKICBtYXJnaW4tdG9wOiAxMHB4Owp9CgouXFwtbWVudS1ncm91cDpob3Zlcgp7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5cXC1tZW51LWl0ZW0KewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiAjODc5QUFCOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICB0cmFuc2l0aW9uOiBhbGwgZWFzZSAwLjNzOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLW1lbnUtaXRlbTpub3QoLlxcLW1lbnUtaXRlbS0tc2VsZWN0ZWQpOmhvdmVyCnsKICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICBjb2xvcjogIzRFOTFFNDsKfQoKLlxcLW1lbnUtaXRlbS0tc2VsZWN0ZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1tZW51LXN1YiwgLlxcLW1lbnUtc3VibWVudQp7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAxMHB4OwogIG1hcmdpbi1sZWZ0OiAxMHB4OwogIG1hcmdpbi10b3A6IDVweDsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjQ0JEOEU2Owp9CgouXFwtdGFibGUKewogIGRpc3BsYXk6IHRhYmxlOwogIHdpZHRoOiAxMDAlOwogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogIzU0Njc3ODsKICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwogIGJvcmRlci1zcGFjaW5nOiAwOwogIGJvcmRlci13aWR0aDogMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLlxcLXRhYmxlLXJvdwp7CiAgZGlzcGxheTogdGFibGUtcm93OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC10YWJsZS1jZWxsCnsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmc6IDEwcHg7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQ0JEOEU2OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlCnsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlOjpiZWZvcmUsIC5cXC10YWJsZS1jZWxsLS1zb3J0YWJsZTo6YWZ0ZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogNXB4OwogIHdpZHRoOiAwcHg7CiAgaGVpZ2h0OiAwcHg7CiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlOjpiZWZvcmUKewogIHRvcDogMTJweDsKICBib3JkZXItYm90dG9tOiA4cHggc29saWQgI0RERTVFRTsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlOjphZnRlcgp7CiAgYm90dG9tOiAxMnB4OwogIGJvcmRlci10b3A6IDhweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtdGFibGUtY2VsbC0tYXNjOjpiZWZvcmUKewogIGJvcmRlci1ib3R0b20tY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10YWJsZS1jZWxsLS1kZXNjOjphZnRlcgp7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXRhYmxlLWNlbGwtLTEKewogIHdpZHRoOiA4LjMzJTsKfQoKLlxcLXRhYmxlLWNlbGwtLTIKewogIHdpZHRoOiAxNi42NiU7Cn0KCi5cXC10YWJsZS1jZWxsLS0zCnsKICB3aWR0aDogMjQuOTklOwp9CgouXFwtdGFibGUtY2VsbC0tNAp7CiAgd2lkdGg6IDMzLjMzJTsKfQoKLlxcLXRhYmxlLWNlbGwtLTUKewogIHdpZHRoOiA0MS42NiU7Cn0KCi5cXC10YWJsZS1jZWxsLS02CnsKICB3aWR0aDogNDkuOTklOwp9CgouXFwtdGFibGUtY2VsbC0tNwp7CiAgd2lkdGg6IDU4LjMzJTsKfQoKLlxcLXRhYmxlLWNlbGwtLTgKewogIHdpZHRoOiA2Ni42NiU7Cn0KCi5cXC10YWJsZS1jZWxsLS05CnsKICB3aWR0aDogNzQuOTklOwp9CgouXFwtdGFibGUtY2VsbC0tMTAKewogIHdpZHRoOiA4My4zMyU7Cn0KCi5cXC10YWJsZS1jZWxsLS0xMQp7CiAgd2lkdGg6IDkxLjY2JTsKfQoKLlxcLXRhYmxlLWNlbGwtLTEyCnsKICB3aWR0aDogOTkuOTklOwp9CgouXFwtdGFibGUtLWJvcmRlciAuXFwtdGFibGUtY2VsbAp7CiAgYm9yZGVyOiAxcHggc29saWQgI0NCRDhFNjsKfQoKLlxcLXRhYmxlLWhlYWRlcgp7CiAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1oZWFkZXIgLlxcLXRhYmxlLXJvdzpmaXJzdC1jaGlsZCAuXFwtdGFibGUtY2VsbDpmaXJzdC1jaGlsZAp7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OwogIGJvcmRlci1sZWZ0LXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1oZWFkZXIgLlxcLXRhYmxlLXJvdzpmaXJzdC1jaGlsZCAuXFwtdGFibGUtY2VsbDpsYXN0LWNoaWxkCnsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogIGJvcmRlci1yaWdodC13aWR0aDogMnB4Owp9CgouXFwtdGFibGUtLWJvcmRlciAuXFwtdGFibGUtaGVhZGVyIC5cXC10YWJsZS1yb3c6Zmlyc3QtY2hpbGQgLlxcLXRhYmxlLWNlbGwKewogIGJvcmRlci10b3Atd2lkdGg6IDJweDsKfQoKLlxcLXRhYmxlLWhlYWRlciAuXFwtdGFibGUtY2VsbAp7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI0NCRDhFNjsKICBmb250LXdlaWdodDogNjAwOwp9CgouXFwtdGFibGUtYm9keQp7CiAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3c6bm90KDpsYXN0LWNoaWxkKSAuXFwtdGFibGUtY2VsbAp7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQkQ4RTY7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3c6bGFzdC1jaGlsZCAuXFwtdGFibGUtY2VsbDpmaXJzdC1jaGlsZAp7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4Owp9CgouXFwtdGFibGUtLWJvcmRlciAuXFwtdGFibGUtYm9keSAuXFwtdGFibGUtcm93Omxhc3QtY2hpbGQgLlxcLXRhYmxlLWNlbGw6bGFzdC1jaGlsZAp7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDsKfQoKLlxcLXRhYmxlLS1ib3JkZXIgLlxcLXRhYmxlLWJvZHkgLlxcLXRhYmxlLXJvdzpsYXN0LWNoaWxkIC5cXC10YWJsZS1jZWxsCnsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3cgLlxcLXRhYmxlLWNlbGw6Zmlyc3QtY2hpbGQKewogIGJvcmRlci1sZWZ0LXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3cgLlxcLXRhYmxlLWNlbGw6bGFzdC1jaGlsZAp7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tc3RyaXBlZCAuXFwtdGFibGUtYm9keSAuXFwtdGFibGUtcm93Om50aC1jaGlsZChvZGQpIC5cXC10YWJsZS1jZWxsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzOCwgMjQyLCAyNDcsIDAuOCk7Cn0KCi5cXC10YWJsZS0taG92ZXIgLlxcLXRhYmxlLWJvZHkgLlxcLXRhYmxlLXJvdzpob3ZlciAuXFwtdGFibGUtY2VsbAp7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjEsIDIyOSwgMjM4LCAwLjgpOwp9CgouXFwtdGFibGUtLWZpeGVkCnsKICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwp9CgouXFwtdGFibGUtcmVzcG9uc2l2ZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3cteDogYXV0bzsKfQoKLlxcLXRhYmxlLXJvdy0tcHJpbWFyeSwgLlxcLXRhYmxlLXJvdy0tcHJpbWFyeSAuXFwtdGFibGUtY2VsbAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0E3QzhGMiAhaW1wb3J0YW50Owp9CgouXFwtdGFibGUtcm93LS1zdWNjZXNzLCAuXFwtdGFibGUtcm93LS1zdWNjZXNzIC5cXC10YWJsZS1jZWxsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOUJFNEI4ICFpbXBvcnRhbnQ7Cn0KCi5cXC10YWJsZS1yb3ctLXdhcm5pbmcsIC5cXC10YWJsZS1yb3ctLXdhcm5pbmcgLlxcLXRhYmxlLWNlbGwKewogIGJhY2tncm91bmQtY29sb3I6ICNGREU3QjQgIWltcG9ydGFudDsKfQoKLlxcLXRhYmxlLXJvdy0tZXJyb3IsIC5cXC10YWJsZS1yb3ctLWVycm9yIC5cXC10YWJsZS1jZWxsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCRUI5ICFpbXBvcnRhbnQ7Cn0KCi5cXC10YWJzCnsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA0MHB4OwogIGZvbnQtc2l6ZTogMTZweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjRERFNUVFOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwp9CgouXFwtdGFicy10YWIsIC5cXC10YWJzLWl0ZW0KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbGVmdDsKICBoZWlnaHQ6IGNhbGMoNDBweCAtIDJweCk7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBjb2xvcjogIzg3OUFBQjsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgcGFkZGluZy1yaWdodDogMTVweDsKICBtYXJnaW4tYm90dG9tOiAtMXB4OwogIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKfQoKLlxcLXRhYnMtdGFiOmhvdmVyLCAuXFwtdGFicy1pdGVtOmhvdmVyCnsKICBib3JkZXItdG9wLWNvbG9yOiAjRUVGMkY3OwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRUVGMkY3OwogIGJvcmRlci1yaWdodC1jb2xvcjogI0VFRjJGNzsKfQoKLlxcLXRhYnMtdGFiLS1zZWxlY3RlZCwgLlxcLXRhYnMtaXRlbS0tc2VsZWN0ZWQKewogIGJvcmRlci10b3AtY29sb3I6ICNEREU1RUUgIWltcG9ydGFudDsKICBib3JkZXItbGVmdC1jb2xvcjogI0RERTVFRSAhaW1wb3J0YW50OwogIGJvcmRlci1yaWdodC1jb2xvcjogI0RERTVFRSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNGRkYgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGICFpbXBvcnRhbnQ7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1ib3gKewogIGRpc3BsYXk6IGJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDYwcHgpOwogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIHBhZGRpbmc6IDMwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLWJveC10aXRsZSwgLlxcLWJveC1zdWJ0aXRsZSwgLlxcLWJveC1kZXRhaWwKewogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLlxcLWJveC10aXRsZQp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1zaXplOiAzNXB4Owp9CgouXFwtYm94LXN1YnRpdGxlCnsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMjJweDsKICBvcGFjaXR5OiAwLjc1Owp9CgouXFwtYm94LWRldGFpbAp7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG9wYWNpdHk6IDAuNTsKfQoKLlxcLWJveC10aXRsZSArIC5cXC1ib3gtc3VidGl0bGUsIC5cXC1ib3gtc3VidGl0bGUgKyAuXFwtYm94LWRldGFpbCwgLlxcLWJveC10aXRsZSArIC5cXC1ib3gtZGV0YWlsCnsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KCi5cXC1ib3guXFwtYm94LS1wcmltYXJ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYm94LlxcLWJveC0tc3VjY2Vzcwp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXdhcm5pbmcKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1lcnJvcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1saWdodAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLWJveC5cXC1ib3gtLW5hdnkKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1ncmVlbgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzkzRDI2MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXRlYWwKewogIGJhY2tncm91bmQtY29sb3I6ICM2MEQyQjY7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYm94LlxcLWJveC0tcHVycGxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUM5NEU4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYm94LlxcLWJveC0tcGluawp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U3N0VCODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXJlZAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLW9yYW5nZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y3ODA1NTsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXllbGxvdwp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLWdyZXkKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1jb250ZW50CnsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLXRvcDogMzBweDsKICBwYWRkaW5nLWJvdHRvbTogMzBweDsKfQoKLlxcLWNvbnRlbnQtLWV4dHJhLXNtYWxsCnsKICBtYXgtd2lkdGg6IDQ4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNDgwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpCnsKICAuXFwtY29udGVudC0tZXh0cmEtc21hbGwKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWNvbnRlbnQtLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtY29udGVudC0tc21hbGwKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWNvbnRlbnQtLW1lZGl1bQp7CiAgbWF4LXdpZHRoOiA3NjhweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gNzY4cHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KQp7CiAgLlxcLWNvbnRlbnQtLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtY29udGVudC0tbGFyZ2UKewogIG1heC13aWR0aDogOTYwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA5NjBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NjBweCkKewogIC5cXC1jb250ZW50LS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtY29udGVudC0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtY29udGVudC0tZXh0cmEtbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWNvbnRlbnQtLWZsdWlkCnsKICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIHBhZGRpbmctcmlnaHQ6IDIwcHg7Cn0KCi5cXC1mb290ZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmctdG9wOiA1MHB4OwogIHBhZGRpbmctYm90dG9tOiA1MHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjFweDsKfQoKLlxcLWZvb3Rlci0tZXh0cmEtc21hbGwKewogIG1heC13aWR0aDogNDgwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDQ4MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkKewogIC5cXC1mb290ZXItLWV4dHJhLXNtYWxsCiAgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICB9Cn0KCi5cXC1mb290ZXItLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtZm9vdGVyLS1zbWFsbAogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtZm9vdGVyLS1tZWRpdW0KewogIG1heC13aWR0aDogNzY4cHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA3NjhweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1mb290ZXItLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtZm9vdGVyLS1sYXJnZQp7CiAgbWF4LXdpZHRoOiA5NjBweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gOTYwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLWZvb3Rlci0tbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWZvb3Rlci0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtZm9vdGVyLS1leHRyYS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtZm9vdGVyLS1mbHVpZAp7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgouXFwtZm9vdGVyLS1saWdodAp7CiAgY29sb3I6ICM4NzlBQUI7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKfQoKLlxcLWZvb3Rlci0tZGFyawp7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtZm9vdGVyLXRpdGxlCnsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDIwcHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CgouXFwtZm9vdGVyLXN1YnRpdGxlCnsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDE1cHg7CiAgb3BhY2l0eTogMC44OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLlxcLWZvb3Rlci1ncm91cAp7CiAgZGlzcGxheTogYmxvY2s7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLlxcLWZvb3Rlci0tbGlnaHQgLlxcLWZvb3Rlci1ncm91cAp7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1mb290ZXItLWRhcmsgLlxcLWZvb3Rlci1ncm91cAp7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKfQoKLlxcLWZvb3Rlci1saW5rCnsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogIGN1cnNvcjogcG9pbnRlcjsKICBvcGFjaXR5OiAwLjg1Owp9CgouXFwtZm9vdGVyLWxpbmstLWlubGluZQp7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cn0KCi5cXC1mb290ZXItbGluay0taW5saW5lOm5vdCg6bGFzdC1jaGlsZCkKewogIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLlxcLWZvb3Rlci1saW5rOmhvdmVyCnsKICBjb2xvcjogIzRFOTFFNCAhaW1wb3J0YW50Owp9CgouXFwtZm9vdGVyLWxpbmstZGVzY3JpcHRpb24KewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTJweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIG1hcmdpbi1ib3R0b206IDNweDsKICBtYXJnaW4tdG9wOiAtNHB4Owp9CgouXFwtZm9vdGVyLS1saWdodCAuXFwtZm9vdGVyLWxpbmsKewogIGNvbG9yOiAjODc5QUFCOwp9CgouXFwtZm9vdGVyLS1saWdodCAuXFwtZm9vdGVyLWxpbmstZGVzY3JpcHRpb24KewogIGNvbG9yOiAjODc5QUFCICFpbXBvcnRhbnQ7Cn0KCi5cXC1mb290ZXItLWRhcmsgLlxcLWZvb3Rlci1saW5rCnsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwp9CgouXFwtZm9vdGVyLS1kYXJrIC5cXC1mb290ZXItbGluay1kZXNjcmlwdGlvbgp7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSAhaW1wb3J0YW50Owp9CgouXFwtZm9vdGVyLXBhcmFncmFwaAp7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLlxcLWZvb3Rlci1ydWxlCnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDJweDsKICBtYXJnaW4tdG9wOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgb3BhY2l0eTogMC42Owp9CgouXFwtZm9vdGVyLS1saWdodCAuXFwtZm9vdGVyLXJ1bGUKewogIGJhY2tncm91bmQtY29sb3I6ICNDQkQ4RTY7Cn0KCi5cXC1mb290ZXItLWRhcmsgLlxcLWZvb3Rlci1ydWxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtZm9vdGVyLlxcLWZvb3Rlci0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS10ZWFsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtZm9vdGVyLlxcLWZvb3Rlci0tYmx1ZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWZvb3Rlci5cXC1mb290ZXItLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0FDOTRFODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWZvb3Rlci5cXC1mb290ZXItLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS15ZWxsb3cKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtanVtYm90cm9uCnsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLXRvcDogODVweDsKICBwYWRkaW5nLWJvdHRvbTogODVweDsKfQoKLlxcLWp1bWJvdHJvbi0tZXh0cmEtc21hbGwKewogIG1heC13aWR0aDogNDgwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDQ4MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkKewogIC5cXC1qdW1ib3Ryb24tLWV4dHJhLXNtYWxsCiAgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICB9Cn0KCi5cXC1qdW1ib3Ryb24tLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtanVtYm90cm9uLS1zbWFsbAogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtanVtYm90cm9uLS1tZWRpdW0KewogIG1heC13aWR0aDogNzY4cHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA3NjhweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1qdW1ib3Ryb24tLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtanVtYm90cm9uLS1sYXJnZQp7CiAgbWF4LXdpZHRoOiA5NjBweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gOTYwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLWp1bWJvdHJvbi0tbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWp1bWJvdHJvbi0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtanVtYm90cm9uLS1leHRyYS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtanVtYm90cm9uLS1mbHVpZAp7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgouXFwtanVtYm90cm9uLXRpdGxlLCAuXFwtanVtYm90cm9uLXN1YnRpdGxlLCAuXFwtanVtYm90cm9uLWRldGFpbAp7CiAgZGlzcGxheTogYmxvY2s7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouXFwtanVtYm90cm9uLXRpdGxlCnsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDQwcHg7Cn0KCi5cXC1qdW1ib3Ryb24tc3VidGl0bGUKewogIGZvbnQtc2l6ZTogMjRweDsKICBmb250LXdlaWdodDogNjAwOwogIG9wYWNpdHk6IDAuODsKfQoKLlxcLWp1bWJvdHJvbi1kZXRhaWwKewogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGZvbnQtc2l6ZTogMTZweDsKICBvcGFjaXR5OiAwLjY7Cn0KCi5cXC1qdW1ib3Ryb24tdGl0bGUgKyAuXFwtanVtYm90cm9uLXN1YnRpdGxlLCAuXFwtanVtYm90cm9uLXRpdGxlICsgLlxcLWp1bWJvdHJvbi1kZXRhaWwsIC5cXC1qdW1ib3Ryb24tc3VidGl0bGUgKyAuXFwtanVtYm90cm9uLWRldGFpbAp7CiAgbWFyZ2luLXRvcDogNXB4Owp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tcHJpbWFyeQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWp1bWJvdHJvbi5cXC1qdW1ib3Ryb24tLXN1Y2Nlc3MKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS13YXJuaW5nCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tZXJyb3IKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1kYXJrCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS10ZWFsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tYmx1ZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWp1bWJvdHJvbi5cXC1qdW1ib3Ryb24tLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0FDOTRFODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWp1bWJvdHJvbi5cXC1qdW1ib3Ryb24tLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS15ZWxsb3cKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtbmF2YmFyCnsKICBkaXNwbGF5OiBibG9jazsKICB6LWluZGV4OiAzOwogIG1heC13aWR0aDogY2FsYygxMDAlIC0gMiAqIDIwcHgpOwogIGhlaWdodDogMzRweDsKICBwYWRkaW5nLXRvcDogMTVweDsKICBwYWRkaW5nLWJvdHRvbTogMTVweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgcGFkZGluZy1yaWdodDogMjBweDsKfQoKLlxcLW5hdmJhci0tZXh0cmEtc21hbGwKewogIG1heC13aWR0aDogNDgwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDQ4MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkKewogIC5cXC1uYXZiYXItLWV4dHJhLXNtYWxsCiAgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICB9Cn0KCi5cXC1uYXZiYXItLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtbmF2YmFyLS1zbWFsbAogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtbmF2YmFyLS1tZWRpdW0KewogIG1heC13aWR0aDogNzY4cHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA3NjhweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1uYXZiYXItLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtbmF2YmFyLS1sYXJnZQp7CiAgbWF4LXdpZHRoOiA5NjBweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gOTYwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLW5hdmJhci0tbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLW5hdmJhci0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtbmF2YmFyLS1leHRyYS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtbmF2YmFyLS1mbHVpZAp7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgouXFwtbmF2YmFyLXRpdGxlCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAzNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDIxcHg7CiAgcGFkZGluZy1sZWZ0OiAwcHg7CiAgcGFkZGluZy1yaWdodDogMHB4OwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDE2cHg7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBvcGFjaXR5OiAwLjg7Cn0KCi5cXC1uYXZiYXItaXRlbSwgLlxcLW5hdmJhci1saW5rCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAzNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIHBhZGRpbmctbGVmdDogMTBweDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxNnB4OwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICBjdXJzb3I6IHBvaW50ZXI7CiAgb3BhY2l0eTogMC45Owp9CgouXFwtbmF2YmFyLWl0ZW06aG92ZXIsIC5cXC1uYXZiYXItbGluazpob3Zlcgp7CiAgb3BhY2l0eTogMTsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXByaW1hcnkKewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wcmltYXJ5IC5cXC1uYXZiYXItdGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wcmltYXJ5IC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wcmltYXJ5IC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXByaW1hcnkgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXN1Y2Nlc3MKewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1zdWNjZXNzIC5cXC1uYXZiYXItdGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1zdWNjZXNzIC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1zdWNjZXNzIC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXN1Y2Nlc3MgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXdhcm5pbmcKewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS13YXJuaW5nIC5cXC1uYXZiYXItdGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS13YXJuaW5nIC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS13YXJuaW5nIC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXdhcm5pbmcgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWVycm9yCnsKICBjb2xvcjogI0ZGRjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZXJyb3IgLlxcLW5hdmJhci10aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWVycm9yIC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1lcnJvciAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1lcnJvciAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZGFyawp7CiAgY29sb3I6ICNGRkY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWRhcmsgLlxcLW5hdmJhci10aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWRhcmsgLlxcLW5hdmJhci1zdWJ0aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWRhcmsgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tZGFyayAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tbGlnaHQKewogIGNvbG9yOiAjNTQ2Nzc4OwogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1saWdodCAuXFwtbmF2YmFyLXRpdGxlLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tbGlnaHQgLlxcLW5hdmJhci1zdWJ0aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWxpZ2h0IC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLWxpZ2h0IC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tbmF2eSAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLW5hdnkgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1uYXZ5IC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLW5hdnkgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tbmF2eSAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ncmVlbiAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWdyZWVuIC5cXC1uYXZiYXItc3VidGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4gLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4gLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4gLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXRlYWwKewogIGJhY2tncm91bmQtY29sb3I6ICM2MEQyQjY7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS10ZWFsIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tdGVhbCAuXFwtbmF2YmFyLXN1YnRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXRlYWwgLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tdGVhbCAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS10ZWFsIC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tYmx1ZSAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWJsdWUgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ibHVlIC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWJsdWUgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tYmx1ZSAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUM5NEU4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlIC5cXC1uYXZiYXItc3VidGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlIC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXB1cnBsZSAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wdXJwbGUgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1waW5rIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcGluayAuXFwtbmF2YmFyLXN1YnRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXBpbmsgLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcGluayAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1waW5rIC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQgLlxcLW5hdmJhci10aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQgLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcmVkIC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXJlZCAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjc4MDU1OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlIC5cXC1uYXZiYXItc3VidGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlIC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLW9yYW5nZSAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1vcmFuZ2UgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdwp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdyAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdyAuXFwtbmF2YmFyLXN1YnRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdyAuXFwtbmF2YmFyLXN1YnRpdGxlOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS15ZWxsb3cgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0teWVsbG93IC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JleSAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWdyZXkgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ncmV5IC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWdyZXkgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JleSAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtY2hlY2tib3gKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIG1hcmdpbi1sZWZ0OiAxMHB4OwogIG1hcmdpbi1yaWdodDogMTBweDsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5cXC1jaGVja2JveCBsYWJlbAp7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGJhY2tncm91bmQ6ICNEREU1RUU7Cn0KCi5cXC1jaGVja2JveCBsYWJlbDphZnRlcgp7CiAgY29udGVudDogIiI7CiAgb3BhY2l0eTogMC4yOwogIHdpZHRoOiA4cHg7CiAgaGVpZ2h0OiA0cHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNXB4OwogIGxlZnQ6IDRweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDJweCBzb2xpZCAjNTQ2Nzc4OwogIGJvcmRlci10b3A6IDBweDsKICBib3JkZXItcmlnaHQ6IDBweDsKfQoKLlxcLWNoZWNrYm94IGxhYmVsOmhvdmVyOjphZnRlcgp7CiAgb3BhY2l0eTogMC41Owp9CgouXFwtY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0KewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLlxcLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyBsYWJlbDphZnRlcgp7CiAgb3BhY2l0eTogMTsKICBib3JkZXItY29sb3I6ICNGRkY7Cn0KCi5cXC1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgbGFiZWwKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC1jaGVja2JveC0tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgbGFiZWwKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1jaGVja2JveC0tZXJyb3IgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIGxhYmVsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtY2hlY2tib3gtLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIGxhYmVsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtZmllbGQsCi5cXC1mb3JtLWZpZWxkCnsKICBkaXNwbGF5OiBibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgbWFyZ2luLXRvcDogMHB4Owp9CgouXFwtZmllbGQtbGFiZWwsCi5cXC1mb3JtLWZpZWxkLWxhYmVsCnsKICBkaXNwbGF5OiBibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAxNXB4OwogIGNvbG9yOiAjNTQ2Nzc4OwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCi5cXC1maWVsZC1oZWxwZXIsCi5cXC1mb3JtLWZpZWxkLWhlbHBlcgp7CiAgZGlzcGxheTogYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGZvbnQtc2l6ZTogMTNweDsKICBjb2xvcjogIzg3OUFBQjsKICBtYXJnaW4tdG9wOiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLWZvcm0KewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtc2l6ZTogMTZweDsKfQoKLlxcLWZvcm0tdGl0bGUKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1zaXplOiAyNHB4OwogIGNvbG9yOiAjNTQ2Nzc4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5cXC1mb3JtLWRldGFpbAp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLWZvcm0tcnVsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQkQ4RTY7CiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgaGVpZ2h0OiAwcHg7Cn0KCi5cXC1pbnB1dAp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBjb2xvcjogIzU0Njc3ODsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwYWRkaW5nLXRvcDogMHB4OwogIHBhZGRpbmctYm90dG9tOiAwcHg7CiAgYm9yZGVyOiAwcHg7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIG91dGxpbmU6IDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLlxcLWlucHV0LS1mbHVpZAp7CiAgd2lkdGg6IDEwMCU7Cn0KCi5cXC1pbnB1dC0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1pbnB1dC0tZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWxhYmVsCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWluLWhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogIHBhZGRpbmctbGVmdDogMHB4OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5cXC1sYWJlbC0tbGlnaHQKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbGFiZWwtLWRhcmsKewogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtcmFkaW8KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMThweDsKICBoZWlnaHQ6IDE4cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgbWFyZ2luOiA4cHg7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouXFwtcmFkaW8gPiBsYWJlbAp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IGNhbGMoMThweCAtIDIgKiAzcHgpOwogIGhlaWdodDogY2FsYygxOHB4IC0gMiAqIDNweCk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICBib3JkZXItcmFkaXVzOiAxMDBweDsKICBib3JkZXItd2lkdGg6IDNweDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogI0RERTVFRTsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcyBlYXNlOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLXJhZGlvID4gbGFiZWw6YWZ0ZXIKewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKICB3aWR0aDogNnB4OwogIGhlaWdodDogNnB4OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogIHRvcDogY2FsYyg1MCUgLSA2cHggLyAyKTsKICBsZWZ0OiBjYWxjKDUwJSAtIDZweCAvIDIpOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5cXC1yYWRpbzpob3ZlciA+IGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwp9CgouXFwtcmFkaW8gaW5wdXRbdHlwZT1yYWRpb10KewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLlxcLXJhZGlvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbDphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXJhZGlvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbAp7CiAgYm9yZGVyLWNvbG9yOiAjNEU5MUU0Owp9CgouXFwtcmFkaW8tLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEFDRjdGOwp9CgouXFwtcmFkaW8tLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsCnsKICBib3JkZXItY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1yYWRpby0tZXJyb3IgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtcmFkaW8tLWVycm9yIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbAp7CiAgYm9yZGVyLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtcmFkaW8tLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtcmFkaW8tLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsCnsKICBib3JkZXItY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC1zZWxlY3QKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDM0cHg7CiAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZy1sZWZ0OiAxMHB4OwogIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgcGFkZGluZy10b3A6IDBweDsKICBwYWRkaW5nLWJvdHRvbTogMHB4OwogIGJvcmRlcjogMHB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBvdXRsaW5lOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC1zZWxlY3QtLWZsdWlkCnsKICB3aWR0aDogMTAwJTsKfQoKLlxcLXNlbGVjdC0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1zZWxlY3QtLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1zd2l0Y2gKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDE4cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogIG1hcmdpbi10b3A6IDhweDsKICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLlxcLXN3aXRjaCBsYWJlbAp7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouXFwtc3dpdGNoIGxhYmVsOjphZnRlcgp7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgd2lkdGg6IDE0cHg7CiAgaGVpZ2h0OiAxNHB4OwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICBiYWNrZ3JvdW5kOiAjODc5QUFCOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDJweDsKICBsZWZ0OiAycHg7CiAgei1pbmRleDogMjsKICBvcGFjaXR5OiAwLjY7Cn0KCi5cXC1zd2l0Y2ggbGFiZWw6OmFmdGVyOmhvdmVyCnsKICBvcGFjaXR5OiAxOwp9CgouXFwtc3dpdGNoIGxhYmVsOjpiZWZvcmUKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIHotaW5kZXg6IDE7Cn0KCi5cXC1zd2l0Y2ggaW5wdXRbdHlwZT1jaGVja2JveF0KewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLlxcLXN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gbGFiZWw6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gbGFiZWw6OmFmdGVyCnsKICBsZWZ0OiAxNnB4OwogIG9wYWNpdHk6IDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLXN3aXRjaC0tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gbGFiZWw6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXN3aXRjaC0tZXJyb3IgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCB+IGxhYmVsOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7Cn0KCi5cXC1zd2l0Y2gtLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCB+IGxhYmVsOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC10ZXh0YXJlYQp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBjb2xvcjogIzU0Njc3ODsKICBwYWRkaW5nOiAxMHB4OwogIGJvcmRlcjogMHB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBvdXRsaW5lOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcmVzaXplOiB2ZXJ0aWNhbDsKfQoKLlxcLXRleHRhcmVhLS1mbHVpZAp7CiAgd2lkdGg6IDEwMCU7Cn0KCi5cXC10ZXh0YXJlYS0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC10ZXh0YXJlYS0tZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWdyaWQKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLlxcLWdyaWQtcm93CnsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tbGVmdDogLTEycHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTJweDsKfQoKLlxcLWdyaWQtcm93OmFmdGVyCnsKICBjb250ZW50OiAiICI7CiAgY2xlYXI6IGJvdGg7CiAgZGlzcGxheTogdGFibGU7CiAgbGluZS1oZWlnaHQ6IDA7Cn0KCi5cXC1ncmlkLWNvbAp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogMTJweDsKfQoKLlxcLWdyaWQtY29sLS0xCnsKICB3aWR0aDogY2FsYyg4LjMzJSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS0yCnsKICB3aWR0aDogY2FsYygxNi42NiUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tMwp7CiAgd2lkdGg6IGNhbGMoMjQuOTklIC0gMiAqIDEycHgpOwp9CgouXFwtZ3JpZC1jb2wtLTQKewogIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS01CnsKICB3aWR0aDogY2FsYyg0MS42NiUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tNgp7CiAgd2lkdGg6IGNhbGMoNDkuOTklIC0gMiAqIDEycHgpOwp9CgouXFwtZ3JpZC1jb2wtLTcKewogIHdpZHRoOiBjYWxjKDU4LjMzJSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS04CnsKICB3aWR0aDogY2FsYyg2Ni42NiUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tOQp7CiAgd2lkdGg6IGNhbGMoNzQuOTklIC0gMiAqIDEycHgpOwp9CgouXFwtZ3JpZC1jb2wtLTEwCnsKICB3aWR0aDogY2FsYyg4My4zMyUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tMTEKewogIHdpZHRoOiBjYWxjKDkxLjY2JSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS0xMgp7CiAgd2lkdGg6IGNhbGMoOTkuOTklIC0gMiAqIDEycHgpOwp9CgpAbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KQp7CiAgLlxcLWdyaWQtY29sLS14bC0xLCAuXFwtZ3JpZC1jb2wteGwtLTEKICB7CiAgICB3aWR0aDogY2FsYyg4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14bC0yLCAuXFwtZ3JpZC1jb2wteGwtLTIKICB7CiAgICB3aWR0aDogY2FsYygxNi42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teGwtMywgLlxcLWdyaWQtY29sLXhsLS0zCiAgewogICAgd2lkdGg6IGNhbGMoMjQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTQsIC5cXC1ncmlkLWNvbC14bC0tNAogIHsKICAgIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14bC01LCAuXFwtZ3JpZC1jb2wteGwtLTUKICB7CiAgICB3aWR0aDogY2FsYyg0MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teGwtNiwgLlxcLWdyaWQtY29sLXhsLS02CiAgewogICAgd2lkdGg6IGNhbGMoNDkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTcsIC5cXC1ncmlkLWNvbC14bC0tNwogIHsKICAgIHdpZHRoOiBjYWxjKDU4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14bC04LCAuXFwtZ3JpZC1jb2wteGwtLTgKICB7CiAgICB3aWR0aDogY2FsYyg2Ni42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teGwtOSwgLlxcLWdyaWQtY29sLXhsLS05CiAgewogICAgd2lkdGg6IGNhbGMoNzQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTEwLCAuXFwtZ3JpZC1jb2wteGwtLTEwCiAgewogICAgd2lkdGg6IGNhbGMoODMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTExLCAuXFwtZ3JpZC1jb2wteGwtLTExCiAgewogICAgd2lkdGg6IGNhbGMoOTEuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTEyLCAuXFwtZ3JpZC1jb2wteGwtLTEyCiAgewogICAgd2lkdGg6IGNhbGMoOTkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLWhpZGUKICB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTYwcHgpCnsKICAuXFwtZ3JpZC1jb2wtLWxnLTEsIC5cXC1ncmlkLWNvbC1sZy0tMQogIHsKICAgIHdpZHRoOiBjYWxjKDguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLWxnLTIsIC5cXC1ncmlkLWNvbC1sZy0tMgogIHsKICAgIHdpZHRoOiBjYWxjKDE2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1sZy0zLCAuXFwtZ3JpZC1jb2wtbGctLTMKICB7CiAgICB3aWR0aDogY2FsYygyNC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctNCwgLlxcLWdyaWQtY29sLWxnLS00CiAgewogICAgd2lkdGg6IGNhbGMoMzMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLWxnLTUsIC5cXC1ncmlkLWNvbC1sZy0tNQogIHsKICAgIHdpZHRoOiBjYWxjKDQxLjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1sZy02LCAuXFwtZ3JpZC1jb2wtbGctLTYKICB7CiAgICB3aWR0aDogY2FsYyg0OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctNywgLlxcLWdyaWQtY29sLWxnLS03CiAgewogICAgd2lkdGg6IGNhbGMoNTguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLWxnLTgsIC5cXC1ncmlkLWNvbC1sZy0tOAogIHsKICAgIHdpZHRoOiBjYWxjKDY2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1sZy05LCAuXFwtZ3JpZC1jb2wtbGctLTkKICB7CiAgICB3aWR0aDogY2FsYyg3NC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctMTAsIC5cXC1ncmlkLWNvbC1sZy0tMTAKICB7CiAgICB3aWR0aDogY2FsYyg4My4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctMTEsIC5cXC1ncmlkLWNvbC1sZy0tMTEKICB7CiAgICB3aWR0aDogY2FsYyg5MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctMTIsIC5cXC1ncmlkLWNvbC1sZy0tMTIKICB7CiAgICB3aWR0aDogY2FsYyg5OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctaGlkZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1ncmlkLWNvbC0tbWQtMSwgLlxcLWdyaWQtY29sLW1kLS0xCiAgewogICAgd2lkdGg6IGNhbGMoOC4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbWQtMiwgLlxcLWdyaWQtY29sLW1kLS0yCiAgewogICAgd2lkdGg6IGNhbGMoMTYuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLW1kLTMsIC5cXC1ncmlkLWNvbC1tZC0tMwogIHsKICAgIHdpZHRoOiBjYWxjKDI0Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC00LCAuXFwtZ3JpZC1jb2wtbWQtLTQKICB7CiAgICB3aWR0aDogY2FsYygzMy4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbWQtNSwgLlxcLWdyaWQtY29sLW1kLS01CiAgewogICAgd2lkdGg6IGNhbGMoNDEuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLW1kLTYsIC5cXC1ncmlkLWNvbC1tZC0tNgogIHsKICAgIHdpZHRoOiBjYWxjKDQ5Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC03LCAuXFwtZ3JpZC1jb2wtbWQtLTcKICB7CiAgICB3aWR0aDogY2FsYyg1OC4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbWQtOCwgLlxcLWdyaWQtY29sLW1kLS04CiAgewogICAgd2lkdGg6IGNhbGMoNjYuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLW1kLTksIC5cXC1ncmlkLWNvbC1tZC0tOQogIHsKICAgIHdpZHRoOiBjYWxjKDc0Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC0xMCwgLlxcLWdyaWQtY29sLW1kLS0xMAogIHsKICAgIHdpZHRoOiBjYWxjKDgzLjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC0xMSwgLlxcLWdyaWQtY29sLW1kLS0xMQogIHsKICAgIHdpZHRoOiBjYWxjKDkxLjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC0xMiwgLlxcLWdyaWQtY29sLW1kLS0xMgogIHsKICAgIHdpZHRoOiBjYWxjKDk5Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC1oaWRlCiAgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KQp7CiAgLlxcLWdyaWQtY29sLS1zbS0xLCAuXFwtZ3JpZC1jb2wtc20tLTEKICB7CiAgICB3aWR0aDogY2FsYyg4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1zbS0yLCAuXFwtZ3JpZC1jb2wtc20tLTIKICB7CiAgICB3aWR0aDogY2FsYygxNi42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tc20tMywgLlxcLWdyaWQtY29sLXNtLS0zCiAgewogICAgd2lkdGg6IGNhbGMoMjQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTQsIC5cXC1ncmlkLWNvbC1zbS0tNAogIHsKICAgIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1zbS01LCAuXFwtZ3JpZC1jb2wtc20tLTUKICB7CiAgICB3aWR0aDogY2FsYyg0MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tc20tNiwgLlxcLWdyaWQtY29sLXNtLS02CiAgewogICAgd2lkdGg6IGNhbGMoNDkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTcsIC5cXC1ncmlkLWNvbC1zbS0tNwogIHsKICAgIHdpZHRoOiBjYWxjKDU4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1zbS04LCAuXFwtZ3JpZC1jb2wtc20tLTgKICB7CiAgICB3aWR0aDogY2FsYyg2Ni42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tc20tOSwgLlxcLWdyaWQtY29sLXNtLS05CiAgewogICAgd2lkdGg6IGNhbGMoNzQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTEwLCAuXFwtZ3JpZC1jb2wtc20tLTEwCiAgewogICAgd2lkdGg6IGNhbGMoODMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTExLCAuXFwtZ3JpZC1jb2wtc20tLTExCiAgewogICAgd2lkdGg6IGNhbGMoOTEuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTEyLCAuXFwtZ3JpZC1jb2wtc20tLTEyCiAgewogICAgd2lkdGg6IGNhbGMoOTkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLWhpZGUKICB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpCnsKICAuXFwtZ3JpZC1jb2wtLXhzLTEsIC5cXC1ncmlkLWNvbC14cy0tMQogIHsKICAgIHdpZHRoOiBjYWxjKDguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhzLTIsIC5cXC1ncmlkLWNvbC14cy0tMgogIHsKICAgIHdpZHRoOiBjYWxjKDE2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14cy0zLCAuXFwtZ3JpZC1jb2wteHMtLTMKICB7CiAgICB3aWR0aDogY2FsYygyNC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtNCwgLlxcLWdyaWQtY29sLXhzLS00CiAgewogICAgd2lkdGg6IGNhbGMoMzMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhzLTUsIC5cXC1ncmlkLWNvbC14cy0tNQogIHsKICAgIHdpZHRoOiBjYWxjKDQxLjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14cy02LCAuXFwtZ3JpZC1jb2wteHMtLTYKICB7CiAgICB3aWR0aDogY2FsYyg0OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtNywgLlxcLWdyaWQtY29sLXhzLS03CiAgewogICAgd2lkdGg6IGNhbGMoNTguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhzLTgsIC5cXC1ncmlkLWNvbC14cy0tOAogIHsKICAgIHdpZHRoOiBjYWxjKDY2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14cy05LCAuXFwtZ3JpZC1jb2wteHMtLTkKICB7CiAgICB3aWR0aDogY2FsYyg3NC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtMTAsIC5cXC1ncmlkLWNvbC14cy0tMTAKICB7CiAgICB3aWR0aDogY2FsYyg4My4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtMTEsIC5cXC1ncmlkLWNvbC14cy0tMTEKICB7CiAgICB3aWR0aDogY2FsYyg5MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtMTIsIC5cXC1ncmlkLWNvbC14cy0tMTIKICB7CiAgICB3aWR0aDogY2FsYyg5OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtaGlkZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KCi5cXC1kcm9wZG93bgp7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouXFwtZHJvcGRvd24tdG9nZ2xlOjphZnRlcgp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIGhlaWdodDogMHB4OwogIHdpZHRoOiAwcHg7CiAgbWFyZ2luLWxlZnQ6IDRweDsKICBib3JkZXItdG9wOiA2cHggc29saWQgI0ZGRjsKICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5cXC1kcm9wZG93bi10b2dnbGUtLWxpZ2h0OjphZnRlcgp7CiAgYm9yZGVyLXRvcC1jb2xvcjogI0ZGRjsKfQoKLlxcLWRyb3Bkb3duLXRvZ2dsZS0tZGFyazo6YWZ0ZXIKewogIGJvcmRlci10b3AtY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1kcm9wZG93bi1jb250ZW50CnsKICBkaXNwbGF5OiBub25lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IGNhbGMoMTAwJSArIDJweCk7CiAgbGVmdDogMHB4OwogIG1pbi13aWR0aDogMTUwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBib3JkZXI6IDFweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtZHJvcGRvd24tLXZpc2libGUgLlxcLWRyb3Bkb3duLWNvbnRlbnQKewogIGRpc3BsYXk6IGJsb2NrOwp9CgouXFwtZHJvcGRvd24taXRlbQp7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgZm9udC1zaXplOiAxNnB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctdG9wOiA0cHg7CiAgcGFkZGluZy1ib3R0b206IDRweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7Cn0KCi5cXC1kcm9wZG93bi1pdGVtOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3Owp9CgouXFwtZHJvcGRvd24tc2VwYXJhdG9yCnsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDBweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERTVFRTsKICBtYXJnaW4tdG9wOiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgouXFwtbW9kYWwKewogIGRpc3BsYXk6IGZsZXg7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDIgKiAxNXB4KTsKICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIgKiAxNXB4KTsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwcHg7CiAgbGVmdDogMHB4OwogIHotaW5kZXg6IDQwMDsKICBwYWRkaW5nOiAxNXB4OwogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBvdmVyZmxvdy15OiBoaWRkZW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQyLCA1MiwgNjAsIDAuNCk7Cn0KCi5cXC1tb2RhbC1jb250ZW50CnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBwYWRkaW5nOiAwcHg7Cn0KCi5cXC1tb2RhbC1oZWFkZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMjRweDsKICBwYWRkaW5nOiAyMHB4OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtbW9kYWwtaGVhZGVyLXRpdGxlCnsKICBmbG9hdDogbGVmdDsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDIwcHg7CiAgaGVpZ2h0OiAyNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4Owp9CgouXFwtbW9kYWwtaGVhZGVyLWNsb3NlCnsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogcmlnaHQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxNnB4OwogIGhlaWdodDogMjRweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgb3BhY2l0eTogMC42OwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKfQoKLlxcLW1vZGFsLWhlYWRlci1jbG9zZTpob3Zlcgp7CiAgb3BhY2l0eTogMTsKfQoKLlxcLW1vZGFsLWhlYWRlci1jbG9zZTo6YmVmb3JlLCAuXFwtbW9kYWwtaGVhZGVyLWNsb3NlOjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAzcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm9yZGVyLXJhZGl1czogMXB4OwogIHRvcDogMTBweDsKfQoKLlxcLW1vZGFsLWhlYWRlci1jbG9zZTo6YmVmb3JlCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Cn0KCi5cXC1tb2RhbC1oZWFkZXItY2xvc2U6OmFmdGVyCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKfQoKLlxcLW1vZGFsLWhlYWRlcjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgY2xlYXI6IGJvdGg7Cn0KCi5cXC1tb2RhbC1ib2R5CnsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdy15OiBhdXRvOwogIG1heC1oZWlnaHQ6IDUwdmg7CiAgcGFkZGluZzogMjBweDsKfQoKLlxcLW1vZGFsLWZvb3Rlcgp7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMjBweDsKICBjb2xvcjogIzg3OUFBQjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4Owp9CgouXFwtbW9kYWwtLXNtYWxsIC5cXC1tb2RhbC1jb250ZW50CnsKICBtYXgtd2lkdGg6IDYwMHB4Owp9CgouXFwtbW9kYWwtLW1lZGl1bSAuXFwtbW9kYWwtY29udGVudAp7CiAgbWF4LXdpZHRoOiA3NjhweDsKfQoKLlxcLW1vZGFsLS1sYXJnZSAuXFwtbW9kYWwtY29udGVudAp7CiAgbWF4LXdpZHRoOiA5NjBweDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNpaW1wbGUtcHJvZ3Jlc3MtYW5pbWF0aW9uCnsKICAwJQogIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9CiAgMTAwJQogIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwcHggNTBweDsKICB9Cn0KCkBrZXlmcmFtZXMgc2lpbXBsZS1wcm9ncmVzcy1hbmltYXRpb24KewogIDAlCiAgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KICAxMDAlCiAgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTBweCA1MHB4OwogIH0KfQoKLlxcLXByb2dyZXNzCnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDIwcHg7CiAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXRvcDogMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW16LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5cXC1wcm9ncmVzcyA+IHNwYW4KewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgZm9udC1zaXplOiAxMnB4Owp9CgouXFwtcHJvZ3Jlc3MtLXN0cmlwZWQgPiBzcGFuOjphZnRlciwgLlxcLXByb2dyZXNzLS1zdHJpcGVkLXNsb3cgPiBzcGFuOjphZnRlciwgLlxcLXByb2dyZXNzLS1zdHJpcGVkLWZhc3QgPiBzcGFuOjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICByaWdodDogMHB4OwogIGJvdHRvbTogMHB4OwogIHotaW5kZXg6IDE7CiAgYmFja2dyb3VuZC1zaXplOiA1MHB4IDUwcHg7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9CgouXFwtcHJvZ3Jlc3MtLXN0cmlwZWQgPiBzcGFuOjphZnRlcgp7CiAgLXdlYmtpdC1hbmltYXRpb246IHNpaW1wbGUtcHJvZ3Jlc3MtYW5pbWF0aW9uIDIuNXMgbGluZWFyIGluZmluaXRlOwogIGFuaW1hdGlvbjogc2lpbXBsZS1wcm9ncmVzcy1hbmltYXRpb24gMi41cyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5cXC1wcm9ncmVzcy0tc3RyaXBlZC1mYXN0ID4gc3Bhbjo6YWZ0ZXIKewogIC13ZWJraXQtYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5cXC1wcm9ncmVzcy0tc3RyaXBlZC1zbG93ID4gc3Bhbjo6YWZ0ZXIKewogIC13ZWJraXQtYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiA0cyBsaW5lYXIgaW5maW5pdGU7CiAgYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiA0cyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0tcHJpbWFyeSA+IHNwYW4KewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0tc3VjY2VzcyA+IHNwYW4KewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0td2FybmluZyA+IHNwYW4KewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0tZXJyb3IgPiBzcGFuCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtcHJvZ3Jlc3MuXFwtcHJvZ3Jlc3MtLWRhcmsgPiBzcGFuCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtcHJvZ3Jlc3MuXFwtcHJvZ3Jlc3MtLWxpZ2h0ID4gc3Bhbgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLXN0ZXBzCnsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlxcLXN0ZXBzLWl0ZW0KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogNDBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDM0cHg7CiAgaGVpZ2h0OiAzNHB4OwogIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiBjYWxjKDUwJSAtIDM0cHggLyAyKTsKICB0b3A6IDBweDsKICB6LWluZGV4OiAxMDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1zdGVwcy1pdGVtLXRpdGxlCnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogY2FsYygxMDAlIC0gMiAqIDVweCk7CiAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgcGFkZGluZy1yaWdodDogNXB4OwogIGZvbnQtc2l6ZTogMTVweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogI0NCRDhFNjsKfQoKLlxcLXN0ZXBzLWl0ZW0tZGVzY3JpcHRpb24KewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiBjYWxjKDEwMCUgLSAyICogNXB4KTsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiAjRERFNUVFOwp9CgouXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA4cHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogY2FsYygyNnB4IC8gMik7CiAgbGVmdDogNTAlOwp9CgouXFwtc3RlcHMtaXRlbS0tY3VycmVudCB+IC5cXC1zdGVwcy1pdGVtIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRSAhaW1wb3J0YW50Owp9CgouXFwtc3RlcHMtaXRlbS0tY3VycmVudDo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1jdXJyZW50IH4gLlxcLXN0ZXBzLWl0ZW06OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFICFpbXBvcnRhbnQ7Cn0KCi5cXC1zdGVwcy1pdGVtLS1jdXJyZW50IC5cXC1zdGVwcy1pdGVtLXRpdGxlCnsKICBjb2xvcjogIzU0Njc3OCAhaW1wb3J0YW50Owp9CgouXFwtc3RlcHMtaXRlbS0tY3VycmVudCAuXFwtc3RlcHMtaXRlbS1kZXNjcmlwdGlvbgp7CiAgY29sb3I6ICM4NzlBQUIgIWltcG9ydGFudDsKfQoKLlxcLXN0ZXBzLWl0ZW0tLWNoZWNrIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1jaGVjayAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZSwgLlxcLXN0ZXBzLWl0ZW0tLWNyb3NzIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1jcm9zcyAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZSwgLlxcLXN0ZXBzLWl0ZW0tLWV4Y2xhbWF0aW9uIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1leGNsYW1hdGlvbiAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAzcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7CiAgYm9yZGVyLXJhZGl1czogNXB4Owp9CgouXFwtc3RlcHMtaXRlbS0tY2hlY2sgLlxcLXN0ZXBzLWl0ZW0tYnViYmxlOjphZnRlcgp7CiAgd2lkdGg6IDEwcHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogMTlweDsKICBsZWZ0OiA2LjVweDsKfQoKLlxcLXN0ZXBzLWl0ZW0tLWNoZWNrIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YmVmb3JlCnsKICB3aWR0aDogMThweDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0b3A6IDE2cHg7CiAgbGVmdDogMTAuNXB4Owp9CgouXFwtc3RlcHMtaXRlbS0tY3Jvc3MgLlxcLXN0ZXBzLWl0ZW0tYnViYmxlOjphZnRlcgp7CiAgd2lkdGg6IDIwcHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogMTUuNXB4OwogIGxlZnQ6IDdweDsKfQoKLlxcLXN0ZXBzLWl0ZW0tLWNyb3NzIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YmVmb3JlCnsKICB3aWR0aDogMjBweDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0b3A6IDE1LjVweDsKICBsZWZ0OiA3cHg7Cn0KCi5cXC1zdGVwcy1pdGVtLS1leGNsYW1hdGlvbiAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmFmdGVyCnsKICB3aWR0aDogM3B4OwogIHRvcDogMjJweDsKICBsZWZ0OiAxNS41cHg7Cn0KCi5cXC1zdGVwcy1pdGVtLS1leGNsYW1hdGlvbiAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZQp7CiAgd2lkdGg6IDNweDsKICBoZWlnaHQ6IDExcHg7CiAgdG9wOiA4cHg7CiAgbGVmdDogMTUuNXB4Owp9CgouXFwtc3RlcHMtLXByaW1hcnkgLlxcLXN0ZXBzLWl0ZW0tYnViYmxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0Owp9CgouXFwtc3RlcHMtLXByaW1hcnkgLlxcLXN0ZXBzLWl0ZW06bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC1zdGVwcy0tc3VjY2VzcyAuXFwtc3RlcHMtaXRlbS1idWJibGUKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1zdGVwcy0tc3VjY2VzcyAuXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXN0ZXBzLS13YXJuaW5nIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKfQoKLlxcLXN0ZXBzLS13YXJuaW5nIC5cXC1zdGVwcy1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtc3RlcHMtLWVycm9yIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXN0ZXBzLS1lcnJvciAuXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXN0ZXBzLS1kYXJrIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLXN0ZXBzLS1kYXJrIC5cXC1zdGVwcy1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtc3RlcHMtLWxpZ2h0IC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLXN0ZXBzLS1saWdodCAuXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLS1jb2xvci1wcmltYXJ5CnsKICBjb2xvcjogIzRFOTFFNCAhaW1wb3J0YW50Owp9CgouXFwtLWJnLXByaW1hcnkKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQgIWltcG9ydGFudDsKfQoKLlxcLS1jb2xvci1zdWNjZXNzCnsKICBjb2xvcjogIzRBQ0Y3RiAhaW1wb3J0YW50Owp9CgouXFwtLWJnLXN1Y2Nlc3MKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0YgIWltcG9ydGFudDsKfQoKLlxcLS1jb2xvci13YXJuaW5nCnsKICBjb2xvcjogI0ZCQzg1MCAhaW1wb3J0YW50Owp9CgouXFwtLWJnLXdhcm5pbmcKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTAgIWltcG9ydGFudDsKfQoKLlxcLS1jb2xvci1lcnJvcgp7CiAgY29sb3I6ICNFRTY3NUQgIWltcG9ydGFudDsKfQoKLlxcLS1iZy1lcnJvcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RCAhaW1wb3J0YW50Owp9CgouXFwtLWNvbG9yLWRhcmsKewogIGNvbG9yOiAjNTQ2Nzc4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tYmctZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3OCAhaW1wb3J0YW50Owp9CgouXFwtLWNvbG9yLWxpZ2h0CnsKICBjb2xvcjogI0RERTVFRSAhaW1wb3J0YW50Owp9CgouXFwtLWJnLWxpZ2h0CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFICFpbXBvcnRhbnQ7Cn0KCi5cXC0tY29sb3Itd2hpdGUKewogIGNvbG9yOiAjRkZGICFpbXBvcnRhbnQ7Cn0KCi5cXC0tYmctd2hpdGUKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkYgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LW5vbmUKewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LWJsb2NrCnsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouXFwtLWRpc3BsYXktaW5saW5lCnsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LWlubGluZS1ibG9jawp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5cXC0tZGlzcGxheS10YWJsZQp7CiAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LXRhYmxlLWNlbGwKewogIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LXRhYmxlLXJvdwp7CiAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tZGlzcGxheS1mbGV4CnsKICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tZGlzcGxheS1pbmxpbmUtZmxleAp7CiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkKewogIC5cXC0tZGlzcGxheS14bC1ub25lCiAgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteGwtYmxvY2sKICB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteGwtaW5saW5lCiAgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14bC1pbmxpbmUtYmxvY2sKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhsLXRhYmxlCiAgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhsLXRhYmxlLWNlbGwKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14bC10YWJsZS1yb3cKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhsLWZsZXgKICB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14bC1pbmxpbmUtZmxleAogIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTYwcHgpCnsKICAuXFwtLWRpc3BsYXktbGctbm9uZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LWxnLWJsb2NrCiAgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LWxnLWlubGluZQogIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbGctaW5saW5lLWJsb2NrCiAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1sZy10YWJsZQogIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1sZy10YWJsZS1jZWxsCiAgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbGctdGFibGUtcm93CiAgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1sZy1mbGV4CiAgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbGctaW5saW5lLWZsZXgKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KQp7CiAgLlxcLS1kaXNwbGF5LW1kLW5vbmUKICB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1tZC1ibG9jawogIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1tZC1pbmxpbmUKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LW1kLWlubGluZS1ibG9jawogIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbWQtdGFibGUKICB7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbWQtdGFibGUtY2VsbAogIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LW1kLXRhYmxlLXJvdwogIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbWQtZmxleAogIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LW1kLWlubGluZS1mbGV4CiAgewogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkKewogIC5cXC0tZGlzcGxheS1zbS1ub25lCiAgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktc20tYmxvY2sKICB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktc20taW5saW5lCiAgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1zbS1pbmxpbmUtYmxvY2sKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXNtLXRhYmxlCiAgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXNtLXRhYmxlLWNlbGwKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1zbS10YWJsZS1yb3cKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXNtLWZsZXgKICB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1zbS1pbmxpbmUtZmxleAogIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpCnsKICAuXFwtLWRpc3BsYXkteHMtbm9uZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhzLWJsb2NrCiAgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhzLWlubGluZQogIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteHMtaW5saW5lLWJsb2NrCiAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14cy10YWJsZQogIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14cy10YWJsZS1jZWxsCiAgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteHMtdGFibGUtcm93CiAgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14cy1mbGV4CiAgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteHMtaW5saW5lLWZsZXgKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQoKLlxcLS1mbG9hdC1sZWZ0CnsKICBmbG9hdDogbGVmdCAhaW1wb3J0YW50Owp9CgouXFwtLWZsb2F0LXJpZ2h0CnsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQoKLlxcLS1mbG9hdC1ub25lCnsKICBmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KQp7CiAgLlxcLS1mbG9hdC14bC1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC14bC1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LXhsLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLS1mbG9hdC1sZy1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC1sZy1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LWxnLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KQp7CiAgLlxcLS1mbG9hdC1tZC1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC1tZC1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LW1kLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KQp7CiAgLlxcLS1mbG9hdC1zbS1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC1zbS1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LXNtLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KQp7CiAgLlxcLS1mbG9hdC14cy1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC14cy1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LXhzLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKLlxcLS1jbGVhcmZpeDo6YWZ0ZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIGNsZWFyOiBib3RoOwp9CgouXFwtLWxoLW5vcm1hbAp7CiAgbGluZS1oZWlnaHQ6IDI0cHggIWltcG9ydGFudDsKfQoKLlxcLS1saC1jb25kZW5zZWQKewogIGxpbmUtaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0td2lkdGgtMAp7CiAgd2lkdGg6IDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXdpZHRoLTAKewogIG1heC13aWR0aDogMCUgIWltcG9ydGFudDsKfQoKLlxcLS1oZWlnaHQtMAp7CiAgaGVpZ2h0OiAwJSAhaW1wb3J0YW50Owp9CgouXFwtLW1oZWlnaHQtMAp7CiAgbWF4LWhlaWdodDogMCUgIWltcG9ydGFudDsKfQoKLlxcLS13aWR0aC0yNQp7CiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50Owp9CgouXFwtLW13aWR0aC0yNQp7CiAgbWF4LXdpZHRoOiAyNSUgIWltcG9ydGFudDsKfQoKLlxcLS1oZWlnaHQtMjUKewogIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbWhlaWdodC0yNQp7CiAgbWF4LWhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5cXC0td2lkdGgtNTAKewogIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKfQoKLlxcLS1td2lkdGgtNTAKewogIG1heC13aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0taGVpZ2h0LTUwCnsKICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50Owp9CgouXFwtLW1oZWlnaHQtNTAKewogIG1heC1oZWlnaHQ6IDUwJSAhaW1wb3J0YW50Owp9CgouXFwtLXdpZHRoLTc1CnsKICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXdpZHRoLTc1CnsKICBtYXgtd2lkdGg6IDc1JSAhaW1wb3J0YW50Owp9CgouXFwtLWhlaWdodC03NQp7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQoKLlxcLS1taGVpZ2h0LTc1CnsKICBtYXgtaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQoKLlxcLS13aWR0aC0xMDAKewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXdpZHRoLTEwMAp7CiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0taGVpZ2h0LTEwMAp7CiAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbWhlaWdodC0xMDAKewogIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLlxcLS1tdC0wCnsKICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1tYi0wCnsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC0wCnsKICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXItMAp7CiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1teC0wCnsKICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1teS0wCnsKICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC0wCnsKICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGItMAp7CiAgcGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50Owp9CgouXFwtLXBsLTAKewogIHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItMAp7CiAgcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHgtMAp7CiAgcGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDsKICBwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1weS0wCnsKICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50Owp9CgouXFwtLW10LTEKewogIG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTEKewogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1sLTEKewogIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tci0xCnsKICBtYXJnaW4tcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTEKewogIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsKICBtYXJnaW4tcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW15LTEKewogIG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB0LTEKewogIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wYi0xCnsKICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtMQp7CiAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wci0xCnsKICBwYWRkaW5nLXJpZ2h0OiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weC0xCnsKICBwYWRkaW5nLWxlZnQ6IDVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB5LTEKewogIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtMgp7CiAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTIKewogIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC0yCnsKICBtYXJnaW4tbGVmdDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTIKewogIG1hcmdpbi1yaWdodDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTIKewogIG1hcmdpbi1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktMgp7CiAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC0yCnsKICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTIKewogIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtMgp7CiAgcGFkZGluZy1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItMgp7CiAgcGFkZGluZy1yaWdodDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTIKewogIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDEwcHggIWltcG9ydGFudDsKfQoKLlxcLS1weS0yCnsKICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtMwp7CiAgbWFyZ2luLXRvcDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTMKewogIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC0zCnsKICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTMKewogIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTMKewogIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktMwp7CiAgbWFyZ2luLXRvcDogMTVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC0zCnsKICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTMKewogIHBhZGRpbmctYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtMwp7CiAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItMwp7CiAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTMKewogIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weS0zCnsKICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtNAp7CiAgbWFyZ2luLXRvcDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTQKewogIG1hcmdpbi1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC00CnsKICBtYXJnaW4tbGVmdDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTQKewogIG1hcmdpbi1yaWdodDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTQKewogIG1hcmdpbi1sZWZ0OiAyNXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktNAp7CiAgbWFyZ2luLXRvcDogMjVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC00CnsKICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTQKewogIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtNAp7CiAgcGFkZGluZy1sZWZ0OiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItNAp7CiAgcGFkZGluZy1yaWdodDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTQKewogIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDI1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weS00CnsKICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtNQp7CiAgbWFyZ2luLXRvcDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTUKewogIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC01CnsKICBtYXJnaW4tbGVmdDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTUKewogIG1hcmdpbi1yaWdodDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTUKewogIG1hcmdpbi1sZWZ0OiA0NXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktNQp7CiAgbWFyZ2luLXRvcDogNDVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC01CnsKICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTUKewogIHBhZGRpbmctYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtNQp7CiAgcGFkZGluZy1sZWZ0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItNQp7CiAgcGFkZGluZy1yaWdodDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTUKewogIHBhZGRpbmctbGVmdDogNDVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDQ1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weS01CnsKICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtYXV0bwp7CiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50Owp9CgouXFwtLW1iLWF1dG8KewogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoKLlxcLS1tbC1hdXRvCnsKICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50Owp9CgouXFwtLW1yLWF1dG8KewogIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgouXFwtLW14LWF1dG8KewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktYXV0bwp7CiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LWp1c3RpZnkKewogIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LWxlZnQKewogIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LWNlbnRlcgp7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5cXC0tdGV4dC1yaWdodAp7CiAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LXVwcGVyY2FzZQp7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtbG93ZXJjYXNlCnsKICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tdGV4dC1jYXBpdGFsaXplCnsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtYm9sZAp7CiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtaXRhbGljCnsKICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LW5vcm1hbAp7CiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtc21hbGwKewogIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50Owp9CgouXFwtLXJvdW5kZWQKewogIGJvcmRlci1yYWRpdXM6IDVweDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/grid-utils.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWdyaWQgICAgICAgICAgICB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgfQouXFwtZ3JpZC5cLXRvcCAgICAgIHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0KLlxcLWdyaWQuXC1taWRkbGUgICB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KLlxcLWdyaWQuXC1ib3R0b20gICB7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfQouXFwtZ3JpZC5cLXN0cmV0Y2ggIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH0KLlxcLWdyaWQuXC1iYXNlbGluZSB7IGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgfQouXFwtZ3JpZC5cLWxlZnQgICAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9Ci5cXC1ncmlkLlwtY2VudGVyICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQouXFwtZ3JpZC5cLXJpZ2h0ICAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfQouXFwtZ3JpZC5cLWJldHdlZW4gIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9Ci5cXC1ncmlkLlwtYXJvdW5kICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfQoKLlxcLWNlbGwgICAgICAgICAgICB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZsZXgtc2hyaW5rOiAwOyB9Ci5cXC1jZWxsLlwtZmlsbCAgICAgeyB3aWR0aDogMDsgbWluLXdpZHRoOiAwOyBmbGV4LWdyb3c6IDE7IH0KLlxcLWNlbGwuXC0xICAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiAxIC8gMTIpOyB9Ci5cXC1jZWxsLlwtMiAgICAgICAgeyB3aWR0aDogY2FsYygxMDAlICogMiAvIDEyKTsgfQouXFwtY2VsbC5cLTMgICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDMgLyAxMik7IH0KLlxcLWNlbGwuXC00ICAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiA0IC8gMTIpOyB9Ci5cXC1jZWxsLlwtNSAgICAgICAgeyB3aWR0aDogY2FsYygxMDAlICogNSAvIDEyKTsgfQouXFwtY2VsbC5cLTYgICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDYgLyAxMik7IH0KLlxcLWNlbGwuXC03ICAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiA3IC8gMTIpOyB9Ci5cXC1jZWxsLlwtOCAgICAgICAgeyB3aWR0aDogY2FsYygxMDAlICogOCAvIDEyKTsgfQouXFwtY2VsbC5cLTkgICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDkgLyAxMik7IH0KLlxcLWNlbGwuXC0xMCAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiAxMCAvIDEyKTsgfQouXFwtY2VsbC5cLTExICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDExIC8gMTIpOyB9Ci5cXC1jZWxsLlwtMTIgICAgICAgeyB3aWR0aDogMTAwJTsgfQo=]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWNvbCB7CiAgZmxvYXQ6IGxlZnQ7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLlxcLWNvbC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC1jb2wtMSB7CiAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwp9CgouXFwtY29sLTIgewogIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKfQoKLlxcLWNvbC0zIHsKICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtNCB7CiAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwp9CgouXFwtY29sLTUgewogIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKfQoKLlxcLWNvbC02IHsKICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtNyB7CiAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwp9CgouXFwtY29sLTggewogIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKfQoKLlxcLWNvbC05IHsKICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtMTAgewogIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtMTEgewogIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtMTIgewogIHdpZHRoOiAxMDAlOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/helpers.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWNvbnRhaW5lciwgLlxcLXBhbmVsDQp7DQogIHBhZGRpbmc6IDAuMDFlbSAxNnB4DQp9DQoNCi5cXC1wYW5lbA0Kew0KICBtYXJnaW4tdG9wOiAxNnB4Ow0KICBtYXJnaW4tYm90dG9tOiAxNnB4DQp9DQoNCi5cXC1jb250YWluZXI6YWZ0ZXIsIC5cXC1jb250YWluZXI6YmVmb3JlLCAuXFwtcGFuZWw6YWZ0ZXIsIC5cXC1wYW5lbDpiZWZvcmUNCnsNCiAgY29udGVudDogIiI7DQogIGRpc3BsYXk6IHRhYmxlOw0KICBjbGVhcjogYm90aA0KfQ0KDQouXFwtbGVmdA0Kew0KICBmbG9hdDogbGVmdDsNCn0NCg0KLlxcLXJpZ2h0DQp7DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLlxcLWNsZWFyZml4OmJlZm9yZSwgLlxcLWNsZWFyZml4OmFmdGVyDQp7DQogIGNvbnRlbnQ6ICIgIjsNCiAgZGlzcGxheTogdGFibGU7DQp9DQoNCi5cXC1jbGVhcmZpeDphZnRlcg0Kew0KICBjbGVhcjogYm90aDsNCn0NCg0KLlxcLXppbmRleC0xDQp7DQogIHotaW5kZXg6IDE7DQp9DQoNCi5cXC16aW5kZXgtMg0Kew0KICB6LWluZGV4OiAyOw0KfQ0KDQouXFwtemluZGV4LTMNCnsNCiAgei1pbmRleDogMzsNCn0NCg0KLlxcLXppbmRleC00DQp7DQogIHotaW5kZXg6IDQ7DQp9DQoNCi5cXC1maXhlZA0Kew0KICBwb3NpdGlvbjogZml4ZWQ7DQp9DQoNCi5cXC1yZWxhdGl2ZQ0Kew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQoNCi5cXC1hYnNvbHV0ZQ0Kew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQp9DQoNCi5cXC10ZXh0LWxlZnQNCnsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLlxcLXRleHQtcmlnaHQNCnsNCiAgdGV4dC1hbGlnbjogcmlnaHQ7DQp9DQoNCi5cXC10ZXh0LWNlbnRlcg0Kew0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi5cXC10ZXh0LWp1c3QNCnsNCiAgdGV4dC1hbGlnbjoganVzdGlmeTsNCn0NCg0KLlxcLWFsaWduLXRvcA0Kew0KICB2ZXJ0aWNhbC1hbGlnbjogdG9wOw0KfQ0KDQouXFwtYWxpZ24tYm90dG9tDQp7DQogIHZlcnRpY2FsLWFsaWduOiBib3R0b207DQp9DQoNCi5cXC1hbGlnbi1taWRkbGUNCnsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLlxcLWFsaWduLWJhc2VsaW5lDQp7DQogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsNCn0NCg0KLlxcLWZpdA0Kew0KICBtYXgtd2lkdGg6IDEwMCU7DQp9DQoNCi5cXC1oYWxmLXdpZHRoDQp7DQogIHdpZHRoOiA1MCU7DQp9DQoNCi5cXC1mdWxsLXdpZHRoDQp7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQouXFwtZnVsbC1oZWlnaHQNCnsNCiAgaGVpZ2h0OiAxMDAlOw0KfQ0KDQouXFwtaW5saW5lDQp7DQogIGRpc3BsYXk6IGlubGluZTsNCn0NCg0KLlxcLWJsb2NrDQp7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQouXFwtaW5saW5lLWJsb2NrDQp7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCn0NCg0KLlxcLWhpZGRlbg0Kew0KICBkaXNwbGF5OiBub25lOw0KfQ0KDQovKi53aGl0ZSovDQovKnsqLw0KLyogIGNvbG9yOiAjRkZGOyovDQovKn0qLw0KDQovKi5ncmF5Ki8NCi8qeyovDQovKiAgY29sb3I6ICMyQzNFNTA7Ki8NCi8qfSovDQoNCi8qLmRhcmstZ3JheSovDQovKnsqLw0KLyogIGNvbG9yOiAjOTVBNUE2OyovDQovKn0qLw0KDQovKi5ub3RpY2UqLw0KLyp7Ki8NCi8qICBjb2xvcjogIzM0OThEQjsqLw0KLyp9Ki8NCg0KLyouc3VjY2VzcyovDQovKnsqLw0KLyogIGNvbG9yOiAjMUFCQzlDOyovDQovKn0qLw0KDQovKi5hbGVydCovDQovKnsqLw0KLyogIGNvbG9yOiAjRTc0QzNDOyovDQovKn0qLw0KDQovKi53aGl0ZS1iZyovDQovKnsqLw0KLyogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Ki8NCi8qfSovDQoNCi8qLmdyYXktYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwOyovDQovKn0qLw0KDQovKi5kYXJrLWdyYXktYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVBNUE2OyovDQovKn0qLw0KDQovKi5ub3RpY2UtYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCOyovDQovKn0qLw0KDQovKi5zdWNjZXNzLWJnKi8NCi8qeyovDQovKiAgYmFja2dyb3VuZC1jb2xvcjogIzFBQkM5QzsqLw0KLyp9Ki8NCg0KLyouYWxlcnQtYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTc0QzNDOyovDQovKn0qLw0KDQouXFwtYm9sZA0Kew0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KLlxcLXJlZ3VsYXINCnsNCiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsNCn0NCg0KLlxcLWl0YWxpYw0Kew0KICBmb250LXN0eWxlOiBpdGFsaWM7DQp9DQoNCi5cXC10cnVuY2F0ZQ0Kew0KICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsNCn0NCg0KLlxcLWJyZWFrLXdvcmQNCnsNCiAgd29yZC13cmFwOiBicmVhay13b3JkOw0KfQ0KDQouXFwtbm8td3JhcA0Kew0KICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1uby1idWxsZXRzLCAuXFwtbGlzdC1iYXJlDQp7DQogIGxpc3Qtc3R5bGU6IG5vbmU7DQp9DQoNCi5cXC1idWxsZXRzLWluc2lkZQ0Kew0KICBsaXN0LXN0eWxlOiBpbnNpZGU7DQp9DQoNCi5cXC1saXN0LWJhcmUNCnsNCiAgbWFyZ2luOiAwOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQouXFwtYm9yZGVyLWFsbA0Kew0KICBib3JkZXI6IDFweCBzb2xpZCAjRUNGMEYxOw0KfQ0KDQouXFwtYm9yZGVyLXRvcA0Kew0KICBib3JkZXItdG9wOiAxcHggc29saWQgI0VDRjBGMTsNCn0NCg0KLlxcLWJvcmRlci1ib3R0b20NCnsNCiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFQ0YwRjE7DQp9DQoNCi5cXC1ib3JkZXItcmlnaHQNCnsNCiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0VDRjBGMTsNCn0NCg0KLlxcLWJvcmRlci1sZWZ0DQp7DQogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0VDRjBGMTsNCn0NCg0KLlxcLWJvcmRlci1hbGwtLWRhcmsNCnsNCiAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNzsNCn0NCg0KLlxcLWJvcmRlci10b3AtLWRhcmsNCnsNCiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNCREMzQzc7DQp9DQoNCi5cXC1ib3JkZXItYm90dG9tLS1kYXJrDQp7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkRDM0M3Ow0KfQ0KDQouXFwtYm9yZGVyLXJpZ2h0LS1kYXJrDQp7DQogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCREMzQzc7DQp9DQoNCi5cXC1ib3JkZXItbGVmdC0tZGFyaw0Kew0KICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCREMzQzc7DQp9DQoNCi8qDQogKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbiByZWFkZXJzOg0KICogaHR0cDovL2p1aWN5c3R1ZGlvLmNvbS9hcnRpY2xlL3NjcmVlbi1yZWFkZXJzLWRpc3BsYXktbm9uZS5waHANCiAqLw0KLlxcLWhpZGRlbg0Kew0KICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KLyoNCiAqIEhpZGUgb25seSB2aXN1YWxseSwgYnV0IGhhdmUgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVyczoNCiAqIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkNCiAqLw0KLlxcLXZpc3VhbGx5aGlkZGVuDQp7DQogIGJvcmRlcjogMDsNCiAgY2xpcDogcmVjdCgwIDAgMCAwKTsNCiAgaGVpZ2h0OiAxcHg7DQogIG1hcmdpbjogLTFweDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgcGFkZGluZzogMDsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICB3aWR0aDogMXB4Ow0KfQ0KDQovKg0KICogRXh0ZW5kcyB0aGUgLnZpc3VhbGx5aGlkZGVuIGNsYXNzIHRvIGFsbG93IHRoZSBlbGVtZW50DQogKiB0byBiZSBmb2N1c2FibGUgd2hlbiBuYXZpZ2F0ZWQgdG8gdmlhIHRoZSBrZXlib2FyZDoNCiAqIGh0dHBzOi8vd3d3LmRydXBhbC5vcmcvbm9kZS84OTc2MzgNCiAqLw0KLlxcLXZpc3VhbGx5aGlkZGVuLmZvY3VzYWJsZTphY3RpdmUsDQouXFwtdmlzdWFsbHloaWRkZW4uZm9jdXNhYmxlOmZvY3VzDQp7DQogIGNsaXA6IGF1dG87DQogIGhlaWdodDogYXV0bzsNCiAgbWFyZ2luOiAwOw0KICBvdmVyZmxvdzogdmlzaWJsZTsNCiAgcG9zaXRpb246IHN0YXRpYzsNCiAgd2lkdGg6IGF1dG87DQp9DQoNCi8qDQogKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbiByZWFkZXJzLCBidXQgbWFpbnRhaW4gbGF5b3V0DQogKi8NCi5cXC1pbnZpc2libGUNCnsNCiAgdmlzaWJpbGl0eTogaGlkZGVuOw0KfQ0KDQouXFwtcmFkaXVzDQp7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCn0NCg0KLlxcLXJhZGl1cy10b3ANCnsNCiAgYm9yZGVyLXJhZGl1czogM3B4IDNweCAwIDA7DQp9DQoNCi5cXC1yYWRpdXMtcmlnaHQNCnsNCiAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7DQp9DQoNCi5cXC1yYWRpdXMtYm90dG9tDQp7DQogIGJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4Ow0KfQ0KDQouXFwtcmFkaXVzLWxlZnQNCnsNCiAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7DQp9DQoNCi5cXC1tYXJnaW4tdG9wLW5vbmUNCnsNCiAgbWFyZ2luLXRvcDogMDsNCn0NCg0KLlxcLW1hcmdpbi10b3AtcXVhcnRlcg0Kew0KICBtYXJnaW4tdG9wOiAwLjI1ZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLWhhbGYNCnsNCiAgbWFyZ2luLXRvcDogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLW9uZQ0Kew0KICBtYXJnaW4tdG9wOiAxZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLXR3bw0Kew0KICBtYXJnaW4tdG9wOiAyZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLXRocmVlDQp7DQogIG1hcmdpbi10b3A6IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi10b3AtZm91cg0Kew0KICBtYXJnaW4tdG9wOiA0ZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLW5vbmUNCnsNCiAgbWFyZ2luLWJvdHRvbTogMDsNCn0NCg0KLlxcLW1hcmdpbi1ib3R0b20tcXVhcnRlcg0Kew0KICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLWhhbGYNCnsNCiAgbWFyZ2luLWJvdHRvbTogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLW9uZQ0Kew0KICBtYXJnaW4tYm90dG9tOiAxZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLXR3bw0Kew0KICBtYXJnaW4tYm90dG9tOiAyZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLXRocmVlDQp7DQogIG1hcmdpbi1ib3R0b206IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi1ib3R0b20tZm91cg0Kew0KICBtYXJnaW4tYm90dG9tOiA0ZW07DQp9DQoNCi5cXC1tYXJnaW4tcmlnaHQtbm9uZQ0Kew0KICBtYXJnaW4tcmlnaHQ6IDA7DQp9DQoNCi5cXC1tYXJnaW4tcmlnaHQtcXVhcnRlcg0Kew0KICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTsNCn0NCg0KLlxcLW1hcmdpbi1yaWdodC1oYWxmDQp7DQogIG1hcmdpbi1yaWdodDogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tcmlnaHQtb25lDQp7DQogIG1hcmdpbi1yaWdodDogMWVtOw0KfQ0KDQouXFwtbWFyZ2luLXJpZ2h0LXR3bw0Kew0KICBtYXJnaW4tcmlnaHQ6IDJlbTsNCn0NCg0KLlxcLW1hcmdpbi1yaWdodC10aHJlZQ0Kew0KICBtYXJnaW4tcmlnaHQ6IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi1yaWdodC1mb3VyDQp7DQogIG1hcmdpbi1yaWdodDogNGVtOw0KfQ0KDQouXFwtbWFyZ2luLWxlZnQtbm9uZQ0Kew0KICBtYXJnaW4tbGVmdDogMDsNCn0NCg0KLlxcLW1hcmdpbi1sZWZ0LXF1YXJ0ZXINCnsNCiAgbWFyZ2luLWxlZnQ6IDAuMjVlbTsNCn0NCg0KLlxcLW1hcmdpbi1sZWZ0LWhhbGYNCnsNCiAgbWFyZ2luLWxlZnQ6IDAuNWVtOw0KfQ0KDQouXFwtbWFyZ2luLWxlZnQtb25lDQp7DQogIG1hcmdpbi1sZWZ0OiAxZW07DQp9DQoNCi5cXC1tYXJnaW4tbGVmdC10d28NCnsNCiAgbWFyZ2luLWxlZnQ6IDJlbTsNCn0NCg0KLlxcLW1hcmdpbi1sZWZ0LXRocmVlDQp7DQogIG1hcmdpbi1sZWZ0OiAzZW07DQp9DQoNCi5cXC1tYXJnaW4tbGVmdC1mb3VyDQp7DQogIG1hcmdpbi1sZWZ0OiA0ZW07DQp9DQoNCi5cXC1tYXJnaW4tbm9uZQ0Kew0KICBtYXJnaW46IDA7DQp9DQoNCi5cXC1tYXJnaW4tcXVhcnRlcg0Kew0KICBtYXJnaW46IDAuMjVlbTsNCn0NCg0KLlxcLW1hcmdpbi1oYWxmDQp7DQogIG1hcmdpbjogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tb25lDQp7DQogIG1hcmdpbjogMWVtOw0KfQ0KDQouXFwtbWFyZ2luLXR3bw0Kew0KICBtYXJnaW46IDJlbTsNCn0NCg0KLlxcLW1hcmdpbi10aHJlZQ0Kew0KICBtYXJnaW46IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi1mb3VyDQp7DQogIG1hcmdpbjogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy10b3Atbm9uZQ0Kew0KICBwYWRkaW5nLXRvcDogMDsNCn0NCg0KLlxcLXBhZGRpbmctdG9wLXF1YXJ0ZXINCnsNCiAgcGFkZGluZy10b3A6IDAuMjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctdG9wLWhhbHZlDQp7DQogIHBhZGRpbmctdG9wOiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctdG9wLW9uZQ0Kew0KICBwYWRkaW5nLXRvcDogMWVtOw0KfQ0KDQouXFwtcGFkZGluZy10b3AtdHdvDQp7DQogIHBhZGRpbmctdG9wOiAyZW07DQp9DQoNCi5cXC1wYWRkaW5nLXRvcC10aHJlZQ0Kew0KICBwYWRkaW5nLXRvcDogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy10b3AtZm91cg0Kew0KICBwYWRkaW5nLXRvcDogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy1ib3R0b20tbm9uZQ0Kew0KICBwYWRkaW5nLWJvdHRvbTogMDsNCn0NCg0KLlxcLXBhZGRpbmctYm90dG9tLXF1YXJ0ZXINCnsNCiAgcGFkZGluZy1ib3R0b206IDAuMjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctYm90dG9tLWhhbHZlDQp7DQogIHBhZGRpbmctYm90dG9tOiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctYm90dG9tLW9uZQ0Kew0KICBwYWRkaW5nLWJvdHRvbTogMWVtOw0KfQ0KDQouXFwtcGFkZGluZy1ib3R0b20tdHdvDQp7DQogIHBhZGRpbmctYm90dG9tOiAyZW07DQp9DQoNCi5cXC1wYWRkaW5nLWJvdHRvbS10aHJlZQ0Kew0KICBwYWRkaW5nLWJvdHRvbTogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy1ib3R0b20tZm91cg0Kew0KICBwYWRkaW5nLWJvdHRvbTogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy1yaWdodC1ub25lDQp7DQogIHBhZGRpbmctcmlnaHQ6IDA7DQp9DQoNCi5cXC1wYWRkaW5nLXJpZ2h0LXF1YXJ0ZXINCnsNCiAgcGFkZGluZy1yaWdodDogMC4yNWVtOw0KfQ0KDQouXFwtcGFkZGluZy1yaWdodC1oYWx2ZQ0Kew0KICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctcmlnaHQtb25lDQp7DQogIHBhZGRpbmctcmlnaHQ6IDFlbTsNCn0NCg0KLlxcLXBhZGRpbmctcmlnaHQtdHdvDQp7DQogIHBhZGRpbmctcmlnaHQ6IDJlbTsNCn0NCg0KLlxcLXBhZGRpbmctcmlnaHQtdGhyZWUNCnsNCiAgcGFkZGluZy1yaWdodDogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy1yaWdodC1mb3VyDQp7DQogIHBhZGRpbmctcmlnaHQ6IDRlbTsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC1ub25lDQp7DQogIHBhZGRpbmctbGVmdDogMDsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC1xdWFydGVyDQp7DQogIHBhZGRpbmctbGVmdDogMC4yNWVtOw0KfQ0KDQouXFwtcGFkZGluZy1sZWZ0LWhhbHZlDQp7DQogIHBhZGRpbmctbGVmdDogMC41ZW07DQp9DQoNCi5cXC1wYWRkaW5nLWxlZnQtb25lDQp7DQogIHBhZGRpbmctbGVmdDogMWVtOw0KfQ0KDQouXFwtcGFkZGluZy1sZWZ0LXR3bw0Kew0KICBwYWRkaW5nLWxlZnQ6IDJlbTsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC10aHJlZQ0Kew0KICBwYWRkaW5nLWxlZnQ6IDNlbTsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC1mb3VyDQp7DQogIHBhZGRpbmctbGVmdDogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy1ub25lDQp7DQogIHBhZGRpbmc6IDA7DQp9DQoNCi5cXC1wYWRkaW5nLXF1YXJ0ZXINCnsNCiAgcGFkZGluZzogMC4yNWVtOw0KfQ0KDQouXFwtcGFkZGluZy1oYWx2ZQ0Kew0KICBwYWRkaW5nOiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctb25lDQp7DQogIHBhZGRpbmc6IDFlbTsNCn0NCg0KLlxcLXBhZGRpbmctdHdvDQp7DQogIHBhZGRpbmc6IDJlbTsNCn0NCg0KLlxcLXBhZGRpbmctdGhyZWUNCnsNCiAgcGFkZGluZzogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy1mb3VyDQp7DQogIHBhZGRpbmc6IDRlbTsNCn0=]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/lg-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtLWJyZWFrcG9pbnQtbGcpIHsKCiAgLlxcLWxnLWNvbCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtbGctY29sLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtbGctY29sLTEgewogICAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLWxnLWNvbC0yIHsKICAgIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1sZy1jb2wtMyB7CiAgICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTQgewogICAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLWxnLWNvbC01IHsKICAgIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1sZy1jb2wtNiB7CiAgICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTcgewogICAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLWxnLWNvbC04IHsKICAgIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1sZy1jb2wtOSB7CiAgICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTEwIHsKICAgIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTExIHsKICAgIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/margin_padding.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLXAtNSB7DQogIHBhZGRpbmc6IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC0xMCB7DQogIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtMTUgew0KICBwYWRkaW5nOiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTIwIHsNCiAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC0yNSB7DQogIHBhZGRpbmc6IDI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtMzAgew0KICBwYWRkaW5nOiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTM1IHsNCiAgcGFkZGluZzogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC00MCB7DQogIHBhZGRpbmc6IDQwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtNDUgew0KICBwYWRkaW5nOiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTUwIHsNCiAgcGFkZGluZzogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC02MCB7DQogIHBhZGRpbmc6IDYwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtNjUgew0KICBwYWRkaW5nOiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTcwIHsNCiAgcGFkZGluZzogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC03NSB7DQogIHBhZGRpbmc6IDc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtODAgew0KICBwYWRkaW5nOiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTg1IHsNCiAgcGFkZGluZzogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC05MCB7DQogIHBhZGRpbmc6IDkwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtOTUgew0KICBwYWRkaW5nOiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTEwMCB7DQogIHBhZGRpbmc6IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTEyNSB7DQogIHBhZGRpbmc6IDEyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTE1MCB7DQogIHBhZGRpbmc6IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTE3NSB7DQogIHBhZGRpbmc6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTIwMCB7DQogIHBhZGRpbmc6IDIwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wdC01IHsNCiAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTAgew0KICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTUgew0KICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMjAgew0KICBwYWRkaW5nLXRvcDogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMjUgew0KICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMzAgew0KICBwYWRkaW5nLXRvcDogMzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMzUgew0KICBwYWRkaW5nLXRvcDogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNDAgew0KICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNDUgew0KICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNTAgew0KICBwYWRkaW5nLXRvcDogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNjAgew0KICBwYWRkaW5nLXRvcDogNjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNjUgew0KICBwYWRkaW5nLXRvcDogNjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNzAgew0KICBwYWRkaW5nLXRvcDogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNzUgew0KICBwYWRkaW5nLXRvcDogNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtODAgew0KICBwYWRkaW5nLXRvcDogODBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtODUgew0KICBwYWRkaW5nLXRvcDogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtOTAgew0KICBwYWRkaW5nLXRvcDogOTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtOTUgew0KICBwYWRkaW5nLXRvcDogOTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTAwIHsNCiAgcGFkZGluZy10b3A6IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wdC0xMjUgew0KICBwYWRkaW5nLXRvcDogMTI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXB0LTE1MCB7DQogIHBhZGRpbmctdG9wOiAxNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTc1IHsNCiAgcGFkZGluZy10b3A6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wdC0yMDAgew0KICBwYWRkaW5nLXRvcDogMjAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBiLTUgew0KICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xMCB7DQogIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xNSB7DQogIHBhZGRpbmctYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0yMCB7DQogIHBhZGRpbmctYm90dG9tOiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0yNSB7DQogIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0zMCB7DQogIHBhZGRpbmctYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0zNSB7DQogIHBhZGRpbmctYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi00MCB7DQogIHBhZGRpbmctYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi00NSB7DQogIHBhZGRpbmctYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi01MCB7DQogIHBhZGRpbmctYm90dG9tOiA1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi02MCB7DQogIHBhZGRpbmctYm90dG9tOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi02NSB7DQogIHBhZGRpbmctYm90dG9tOiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi03MCB7DQogIHBhZGRpbmctYm90dG9tOiA3MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi03NSB7DQogIHBhZGRpbmctYm90dG9tOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi04MCB7DQogIHBhZGRpbmctYm90dG9tOiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi04NSB7DQogIHBhZGRpbmctYm90dG9tOiA4NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi05MCB7DQogIHBhZGRpbmctYm90dG9tOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi05NSB7DQogIHBhZGRpbmctYm90dG9tOiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xMDAgew0KICBwYWRkaW5nLWJvdHRvbTogMTAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBiLTEyNSB7DQogIHBhZGRpbmctYm90dG9tOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGItMTUwIHsNCiAgcGFkZGluZy1ib3R0b206IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xNzUgew0KICBwYWRkaW5nLWJvdHRvbTogMTc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBiLTIwMCB7DQogIHBhZGRpbmctYm90dG9tOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtNSB7DQogIHBhZGRpbmctbGVmdDogNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC0xMCB7DQogIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtMTUgew0KICBwYWRkaW5nLWxlZnQ6IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTIwIHsNCiAgcGFkZGluZy1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC0yNSB7DQogIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtMzAgew0KICBwYWRkaW5nLWxlZnQ6IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTM1IHsNCiAgcGFkZGluZy1sZWZ0OiAzNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC00MCB7DQogIHBhZGRpbmctbGVmdDogNDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtNDUgew0KICBwYWRkaW5nLWxlZnQ6IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTUwIHsNCiAgcGFkZGluZy1sZWZ0OiA1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC02MCB7DQogIHBhZGRpbmctbGVmdDogNjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtNjUgew0KICBwYWRkaW5nLWxlZnQ6IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTcwIHsNCiAgcGFkZGluZy1sZWZ0OiA3MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC03NSB7DQogIHBhZGRpbmctbGVmdDogNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtODAgew0KICBwYWRkaW5nLWxlZnQ6IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTg1IHsNCiAgcGFkZGluZy1sZWZ0OiA4NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC05MCB7DQogIHBhZGRpbmctbGVmdDogOTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtOTUgew0KICBwYWRkaW5nLWxlZnQ6IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTEwMCB7DQogIHBhZGRpbmctbGVmdDogMTAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTEyNSB7DQogIHBhZGRpbmctbGVmdDogMTI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTE1MCB7DQogIHBhZGRpbmctbGVmdDogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTE3NSB7DQogIHBhZGRpbmctbGVmdDogMTc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTIwMCB7DQogIHBhZGRpbmctbGVmdDogMjAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTUgew0KICBwYWRkaW5nLXJpZ2h0OiA1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTEwIHsNCiAgcGFkZGluZy1yaWdodDogMTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMTUgew0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0yMCB7DQogIHBhZGRpbmctcmlnaHQ6IDIwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTI1IHsNCiAgcGFkZGluZy1yaWdodDogMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMzAgew0KICBwYWRkaW5nLXJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0zNSB7DQogIHBhZGRpbmctcmlnaHQ6IDM1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTQwIHsNCiAgcGFkZGluZy1yaWdodDogNDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItNDUgew0KICBwYWRkaW5nLXJpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci01MCB7DQogIHBhZGRpbmctcmlnaHQ6IDUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTYwIHsNCiAgcGFkZGluZy1yaWdodDogNjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItNjUgew0KICBwYWRkaW5nLXJpZ2h0OiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci03MCB7DQogIHBhZGRpbmctcmlnaHQ6IDcwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTc1IHsNCiAgcGFkZGluZy1yaWdodDogNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItODAgew0KICBwYWRkaW5nLXJpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci04NSB7DQogIHBhZGRpbmctcmlnaHQ6IDg1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTkwIHsNCiAgcGFkZGluZy1yaWdodDogOTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItOTUgew0KICBwYWRkaW5nLXJpZ2h0OiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0xMDAgew0KICBwYWRkaW5nLXJpZ2h0OiAxMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMTI1IHsNCiAgcGFkZGluZy1yaWdodDogMTI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTE1MCB7DQogIHBhZGRpbmctcmlnaHQ6IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0xNzUgew0KICBwYWRkaW5nLXJpZ2h0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMjAwIHsNCiAgcGFkZGluZy1yaWdodDogMjAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW0tNSB7DQogIG1hcmdpbjogNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTEwIHsNCiAgbWFyZ2luOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTE1IHsNCiAgbWFyZ2luOiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTIwIHsNCiAgbWFyZ2luOiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTI1IHsNCiAgbWFyZ2luOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTMwIHsNCiAgbWFyZ2luOiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTM1IHsNCiAgbWFyZ2luOiAzNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTQwIHsNCiAgbWFyZ2luOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTQ1IHsNCiAgbWFyZ2luOiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTUwIHsNCiAgbWFyZ2luOiA1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTYwIHsNCiAgbWFyZ2luOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTY1IHsNCiAgbWFyZ2luOiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTcwIHsNCiAgbWFyZ2luOiA3MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTc1IHsNCiAgbWFyZ2luOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTgwIHsNCiAgbWFyZ2luOiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTg1IHsNCiAgbWFyZ2luOiA4NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTkwIHsNCiAgbWFyZ2luOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTk1IHsNCiAgbWFyZ2luOiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTEwMCB7DQogIG1hcmdpbjogMTAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW0tMTI1IHsNCiAgbWFyZ2luOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbS0xNTAgew0KICBtYXJnaW46IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTE3NSB7DQogIG1hcmdpbjogMTc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW0tMjAwIHsNCiAgbWFyZ2luOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNSB7DQogIG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtMTAgew0KICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0xNSB7DQogIG1hcmdpbi10b3A6IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTIwIHsNCiAgbWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtMjUgew0KICBtYXJnaW4tdG9wOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0zMCB7DQogIG1hcmdpbi10b3A6IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTM1IHsNCiAgbWFyZ2luLXRvcDogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNDAgew0KICBtYXJnaW4tdG9wOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC00NSB7DQogIG1hcmdpbi10b3A6IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTUwIHsNCiAgbWFyZ2luLXRvcDogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNjAgew0KICBtYXJnaW4tdG9wOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC02NSB7DQogIG1hcmdpbi10b3A6IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTcwIHsNCiAgbWFyZ2luLXRvcDogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNzUgew0KICBtYXJnaW4tdG9wOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC04MCB7DQogIG1hcmdpbi10b3A6IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTg1IHsNCiAgbWFyZ2luLXRvcDogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtOTAgew0KICBtYXJnaW4tdG9wOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC05NSB7DQogIG1hcmdpbi10b3A6IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTEwMCB7DQogIG1hcmdpbi10b3A6IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0xMjUgew0KICBtYXJnaW4tdG9wOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtMTUwIHsNCiAgbWFyZ2luLXRvcDogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTE3NSB7DQogIG1hcmdpbi10b3A6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0yMDAgew0KICBtYXJnaW4tdG9wOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNSB7DQogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItMTAgew0KICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0xNSB7DQogIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTIwIHsNCiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItMjUgew0KICBtYXJnaW4tYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0zMCB7DQogIG1hcmdpbi1ib3R0b206IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTM1IHsNCiAgbWFyZ2luLWJvdHRvbTogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNDAgew0KICBtYXJnaW4tYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi00NSB7DQogIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTUwIHsNCiAgbWFyZ2luLWJvdHRvbTogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNjAgew0KICBtYXJnaW4tYm90dG9tOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi02NSB7DQogIG1hcmdpbi1ib3R0b206IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTcwIHsNCiAgbWFyZ2luLWJvdHRvbTogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNzUgew0KICBtYXJnaW4tYm90dG9tOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi04MCB7DQogIG1hcmdpbi1ib3R0b206IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTg1IHsNCiAgbWFyZ2luLWJvdHRvbTogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItOTAgew0KICBtYXJnaW4tYm90dG9tOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi05NSB7DQogIG1hcmdpbi1ib3R0b206IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTEwMCB7DQogIG1hcmdpbi1ib3R0b206IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0xMjUgew0KICBtYXJnaW4tYm90dG9tOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItMTUwIHsNCiAgbWFyZ2luLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTE3NSB7DQogIG1hcmdpbi1ib3R0b206IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0yMDAgew0KICBtYXJnaW4tYm90dG9tOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWwtNSB7DQogIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTEwIHsNCiAgbWFyZ2luLWxlZnQ6IDEwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTE1IHsNCiAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTIwIHsNCiAgbWFyZ2luLWxlZnQ6IDIwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTI1IHsNCiAgbWFyZ2luLWxlZnQ6IDI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTMwIHsNCiAgbWFyZ2luLWxlZnQ6IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTM1IHsNCiAgbWFyZ2luLWxlZnQ6IDM1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTQwIHsNCiAgbWFyZ2luLWxlZnQ6IDQwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTQ1IHsNCiAgbWFyZ2luLWxlZnQ6IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTUwIHsNCiAgbWFyZ2luLWxlZnQ6IDUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTYwIHsNCiAgbWFyZ2luLWxlZnQ6IDYwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTY1IHsNCiAgbWFyZ2luLWxlZnQ6IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTcwIHsNCiAgbWFyZ2luLWxlZnQ6IDcwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTc1IHsNCiAgbWFyZ2luLWxlZnQ6IDc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTgwIHsNCiAgbWFyZ2luLWxlZnQ6IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTg1IHsNCiAgbWFyZ2luLWxlZnQ6IDg1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTkwIHsNCiAgbWFyZ2luLWxlZnQ6IDkwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTk1IHsNCiAgbWFyZ2luLWxlZnQ6IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTEwMCB7DQogIG1hcmdpbi1sZWZ0OiAxMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWwtMTI1IHsNCiAgbWFyZ2luLWxlZnQ6IDEyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tbC0xNTAgew0KICBtYXJnaW4tbGVmdDogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTE3NSB7DQogIG1hcmdpbi1sZWZ0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWwtMjAwIHsNCiAgbWFyZ2luLWxlZnQ6IDIwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci01IHsNCiAgbWFyZ2luLXJpZ2h0OiA1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTEwIHsNCiAgbWFyZ2luLXJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci0xNSB7DQogIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMjAgew0KICBtYXJnaW4tcmlnaHQ6IDIwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTI1IHsNCiAgbWFyZ2luLXJpZ2h0OiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci0zMCB7DQogIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMzUgew0KICBtYXJnaW4tcmlnaHQ6IDM1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTQwIHsNCiAgbWFyZ2luLXJpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci00NSB7DQogIG1hcmdpbi1yaWdodDogNDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItNTAgew0KICBtYXJnaW4tcmlnaHQ6IDUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTYwIHsNCiAgbWFyZ2luLXJpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci02NSB7DQogIG1hcmdpbi1yaWdodDogNjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItNzAgew0KICBtYXJnaW4tcmlnaHQ6IDcwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTc1IHsNCiAgbWFyZ2luLXJpZ2h0OiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci04MCB7DQogIG1hcmdpbi1yaWdodDogODBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItODUgew0KICBtYXJnaW4tcmlnaHQ6IDg1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTkwIHsNCiAgbWFyZ2luLXJpZ2h0OiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci05NSB7DQogIG1hcmdpbi1yaWdodDogOTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTAwIHsNCiAgbWFyZ2luLXJpZ2h0OiAxMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTI1IHsNCiAgbWFyZ2luLXJpZ2h0OiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTUwIHsNCiAgbWFyZ2luLXJpZ2h0OiAxNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTc1IHsNCiAgbWFyZ2luLXJpZ2h0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMjAwIHsNCiAgbWFyZ2luLXJpZ2h0OiAyMDBweCAhaW1wb3J0YW50Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/md-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtLWJyZWFrcG9pbnQtbWQpIHsKCiAgLlxcLXNtLWxnLWNvbCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tbGctY29sLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tbGctY29sLTEgewogICAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWxnLWNvbC0yIHsKICAgIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1sZy1jb2wtMyB7CiAgICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTQgewogICAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWxnLWNvbC01IHsKICAgIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1sZy1jb2wtNiB7CiAgICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTcgewogICAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWxnLWNvbC04IHsKICAgIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1sZy1jb2wtOSB7CiAgICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTEwIHsKICAgIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTExIHsKICAgIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/misc.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWZpdA0Kew0KICBtYXgtd2lkdGg6IDEwMCU7DQp9DQoNCi5cXC1oYWxmLXdpZHRoDQp7DQogIHdpZHRoOiA1MCUNCn0NCg0KLlxcLWZ1bGwtd2lkdGgNCnsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCi5cXC1mdWxsLWhlaWdodA0Kew0KICBoZWlnaHQ6IDEwMCU7DQp9DQoNCi5cXC1maXhlZA0Kew0KICBwb3NpdGlvbjogZml4ZWQ7DQp9DQoNCi5cXC1yZWxhdGl2ZQ0Kew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQoNCi5cXC1hYnNvbHV0ZQ0Kew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQp9DQoNCi5cXC1zdGF0aWMNCnsNCiAgcG9zaXRpb246IHN0YXRpYzsNCn0NCg0KLlxcLXppbmRleC0xDQp7DQogIHotaW5kZXg6IDE7DQp9DQoNCi5cXC16aW5kZXgtMg0Kew0KICB6LWluZGV4OiAyOw0KfQ0KDQouXFwtemluZGV4LTMNCnsNCiAgei1pbmRleDogMzsNCn0NCg0KLyogTWFyZ2lucw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQouXFwtc3BhY2UtbGVmdDAgIHsgbWFyZ2luLWxlZnQ6ICAgIDVweDt9DQouXFwtc3BhY2UtbGVmdDEgIHsgbWFyZ2luLWxlZnQ6ICAgMTBweDt9DQouXFwtc3BhY2UtbGVmdDIgIHsgbWFyZ2luLWxlZnQ6ICAgMjBweDt9DQouXFwtc3BhY2UtbGVmdDMgIHsgbWFyZ2luLWxlZnQ6ICAgMzBweDt9DQouXFwtc3BhY2UtbGVmdDQgIHsgbWFyZ2luLWxlZnQ6ICAgNDBweDt9DQouXFwtc3BhY2UtbGVmdDggIHsgbWFyZ2luLWxlZnQ6ICAgODBweDt9DQouXFwtc3BhY2UtbGVmdDEyIHsgbWFyZ2luLWxlZnQ6ICAxMjBweDt9DQouXFwtc3BhY2UtbGVmdDE2IHsgbWFyZ2luLWxlZnQ6ICAxNjBweDt9DQouXFwtc3BhY2UtbGVmdDIwIHsgbWFyZ2luLWxlZnQ6ICAyMDBweDt9DQouXFwtc3BhY2UtbGVmdDI0IHsgbWFyZ2luLWxlZnQ6ICAyNDBweDt9DQoNCi5cXC1zcGFjZS1yaWdodDAgIHsgbWFyZ2luLXJpZ2h0OiAgIDVweDt9DQouXFwtc3BhY2UtcmlnaHQxICB7IG1hcmdpbi1yaWdodDogIDEwcHg7fQ0KLlxcLXNwYWNlLXJpZ2h0MiAgeyBtYXJnaW4tcmlnaHQ6ICAyMHB4O30NCi5cXC1zcGFjZS1yaWdodDMgIHsgbWFyZ2luLXJpZ2h0OiAgMzBweDt9DQouXFwtc3BhY2UtcmlnaHQ0ICB7IG1hcmdpbi1yaWdodDogIDQwcHg7fQ0KLlxcLXNwYWNlLXJpZ2h0OCAgeyBtYXJnaW4tcmlnaHQ6ICA4MHB4O30NCi5cXC1zcGFjZS1yaWdodDEyIHsgbWFyZ2luLXJpZ2h0OiAxMjBweDt9DQouXFwtc3BhY2UtcmlnaHQxNiB7IG1hcmdpbi1yaWdodDogMTYwcHg7fQ0KLlxcLXNwYWNlLXJpZ2h0MjAgeyBtYXJnaW4tcmlnaHQ6IDIwMHB4O30NCi5cXC1zcGFjZS1yaWdodDI0IHsgbWFyZ2luLXJpZ2h0OiAyNDBweDt9DQoNCi5cXC1zcGFjZS1ib3R0b20wICAgICAgICAgICAgICAgIHsgbWFyZ2luLWJvdHRvbTogIDVweDt9DQouXFwtc3BhY2UtYm90dG9tMSAgICAgICAgICAgICAgICB7IG1hcmdpbi1ib3R0b206IDEwcHg7fQ0KLlxcLXNwYWNlLWJvdHRvbTIgICAgICAgICAgICAgICAgeyBtYXJnaW4tYm90dG9tOiAyMHB4O30NCi5cXC1zcGFjZS1ib3R0b200ICAgICAgICAgICAgICAgIHsgbWFyZ2luLWJvdHRvbTogNDBweDt9DQouXFwtc3BhY2UtYm90dG9tOCAgICAgICAgICAgICAgICB7IG1hcmdpbi1ib3R0b206IDgwcHg7fQ0KDQouXFwtc3BhY2UtdG9wMCAgICAgICAgICAgICAgICAgICB7IG1hcmdpbi10b3A6ICA1cHg7fQ0KLlxcLXNwYWNlLXRvcDEgICAgICAgICAgICAgICAgICAgeyBtYXJnaW4tdG9wOiAxMHB4O30NCi5cXC1zcGFjZS10b3AyICAgICAgICAgICAgICAgICAgIHsgbWFyZ2luLXRvcDogMjBweDt9DQouXFwtc3BhY2UtdG9wNCAgICAgICAgICAgICAgICAgICB7IG1hcmdpbi10b3A6IDQwcHg7fQ0KLlxcLXNwYWNlLXRvcDggICAgICAgICAgICAgICAgICAgeyBtYXJnaW4tdG9wOiA4MHB4O30NCg0KLyogUGFkZGluZw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLlxcLXBhZDAgIHsgcGFkZGluZzo1cHg7IH0NCi5cXC1wYWQweSB7IHBhZGRpbmctdG9wOjVweDsgcGFkZGluZy1ib3R0b206NXB4OyB9DQouXFwtcGFkMHggeyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy1sZWZ0OjVweDsgfQ0KDQouXFwtcGFkMSAgICB7IHBhZGRpbmc6MTBweDsgfQ0KLlxcLXBhZDIgICAgeyBwYWRkaW5nOjIwcHg7IH0NCi5cXC1wYWQ0ICAgIHsgcGFkZGluZzo0MHB4OyB9DQoNCi5cXC1wYWQxeCB7IHBhZGRpbmctbGVmdDogMTBweDsgcGFkZGluZy1yaWdodDogMTBweDt9DQouXFwtcGFkMnggeyBwYWRkaW5nLWxlZnQ6IDIwcHg7IHBhZGRpbmctcmlnaHQ6IDIwcHg7fQ0KLlxcLXBhZDR4IHsgcGFkZGluZy1sZWZ0OiA0MHB4OyBwYWRkaW5nLXJpZ2h0OiA0MHB4O30NCg0KLlxcLXBhZDF5IHsgcGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4O30NCi5cXC1wYWQyeSB7IHBhZGRpbmctdG9wOiAyMHB4OyBwYWRkaW5nLWJvdHRvbTogMjBweDt9DQouXFwtcGFkNHkgeyBwYWRkaW5nLXRvcDogNDBweDsgcGFkZGluZy1ib3R0b206IDQwcHg7fQ0KDQouXFwtcGFkOCB7ICBwYWRkaW5nOiA4MHB4OyB9DQouXFwtcGFkOHkgeyBwYWRkaW5nLXRvcDogODBweDsgcGFkZGluZy1ib3R0b206IDgwcHg7fQ0KLlxcLXBhZDh4IHsgcGFkZGluZy1sZWZ0OiA4MHB4OyBwYWRkaW5nLXJpZ2h0OiA4MHB4O30NCg0KLyogQWJzb2x1dGUgY29udGFpbmVycw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLlxcLXBpbi10b3AsDQouXFwtcGluLXJpZ2h0LA0KLlxcLXBpbi1ib3R0b20sDQouXFwtcGluLWxlZnQsDQouXFwtcGluLXRvcGxlZnQsDQouXFwtcGluLXRvcHJpZ2h0LA0KLlxcLXBpbi1ib3R0b21sZWZ0LA0KLlxcLXBpbi1ib3R0b21yaWdodCB7DQogIHBvc2l0aW9uOmFic29sdXRlOw0KfQ0KLlxcLXBpbi1ib3R0b20geyByaWdodDowOyBib3R0b206MDsgbGVmdDowOyB9DQouXFwtcGluLXRvcCAgICB7IHRvcDowOyByaWdodDowOyBsZWZ0OjA7IH0NCi5cXC1waW4tbGVmdCAgIHsgdG9wOjA7IGJvdHRvbTowOyBsZWZ0OjA7IH0NCi5cXC1waW4tcmlnaHQgIHsgdG9wOjA7IHJpZ2h0OjA7IGJvdHRvbTowOyB9DQouXFwtcGluLWJvdHRvbXJpZ2h0IHsgYm90dG9tOjA7IHJpZ2h0OjA7IH0NCi5cXC1waW4tYm90dG9tbGVmdCAgeyBib3R0b206MDsgbGVmdDowOyB9DQouXFwtcGluLXRvcHJpZ2h0ICAgIHsgdG9wOjA7IHJpZ2h0OjA7IH0NCi5cXC1waW4tdG9wbGVmdCAgICAgeyB0b3A6MDsgbGVmdDowOyB9DQoNCi8qIEZpeGVkIGNvbnRhaW5lcnMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi5cXC1maXhlZC10b3AsDQouXFwtZml4ZWQtcmlnaHQsDQouXFwtZml4ZWQtYm90dG9tLA0KLlxcLWZpeGVkLWxlZnQsDQouXFwtZml4ZWQtdG9wbGVmdCwNCi5cXC1maXhlZC10b3ByaWdodCwNCi5cXC1maXhlZC1ib3R0b21sZWZ0LA0KLlxcLWZpeGVkLWJvdHRvbXJpZ2h0IHsNCiAgcG9zaXRpb246Zml4ZWQ7DQp9DQouXFwtZml4ZWQtYm90dG9tIHsgcmlnaHQ6MDsgYm90dG9tOjA7IGxlZnQ6MDsgfQ0KLlxcLWZpeGVkLXRvcCAgICB7IHRvcDowOyByaWdodDowOyBsZWZ0OjA7IH0NCi5cXC1maXhlZC1sZWZ0ICAgeyB0b3A6MDsgYm90dG9tOjA7IGxlZnQ6MDsgfQ0KLlxcLWZpeGVkLXJpZ2h0ICB7IHRvcDowOyByaWdodDowOyBib3R0b206MDsgfQ0KLlxcLWZpeGVkLWJvdHRvbXJpZ2h0IHsgYm90dG9tOjA7IHJpZ2h0OjA7IH0NCi5cXC1maXhlZC1ib3R0b21sZWZ0ICB7IGJvdHRvbTowOyBsZWZ0OjA7IH0NCi5cXC1maXhlZC10b3ByaWdodCAgICB7IHRvcDowOyByaWdodDowOyB9DQouXFwtZml4ZWQtdG9wbGVmdCAgICAgeyB0b3A6MDsgbGVmdDowOyB9DQoNCi8qIEFkZGl0aW9uYWwgVXRpbGl0eSBDbGFzc2VzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQouXFwtZnINCnsNCiAgZmxvYXQ6IHJpZ2h0Ow0KfQ0KDQouXFwtZmwNCnsNCiAgZmxvYXQ6IGxlZnQ7DQp9DQoNCi5cXC11bmZsb2F0DQp7DQogIGZsb2F0OiBub25lOw0KfQ0KDQouXFwtZG90DQp7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCn0NCg0KLlxcLXF1aWV0DQp7DQogIGNvbG9yOiAjN0Y3RjdGOw0KICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7DQp9DQoNCi5cXC1kYXJrIC5xdWlldA0Kew0KICBjb2xvcjogIzdGN0Y3RjsNCiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjUpOw0KfQ0KDQouXFwtY2VudGVyDQp7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLlxcLWNvbnRhaW4NCnsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KDQouXFwtY2xpcA0Kew0KICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0KDQouXFwtaGlkZGVuLmhpZGRlbg0Kew0KICBkaXNwbGF5OiBub25lOw0KfQ0KDQouXFwtdGV4dC1sZWZ0DQp7DQogIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi5cXC10ZXh0LXJpZ2h0DQp7DQogIHRleHQtYWxpZ246IHJpZ2h0Ow0KfQ0KDQouXFwtc3BhY2UgPiAqDQp7DQogIG1hcmdpbi1yaWdodDogNXB4Ow0KfQ0KDQouXFwtaGlkZS10YWJsZXQsIC5oaWRlLW1vYmlsZQ0Kew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLlxcLXNob3ctdGFibGV0LCAuc2hvdy1tb2JpbGUNCnsNCiAgZGlzcGxheTogbm9uZTsNCn0NCg0KLlxcLXNob3ctbW9iaWxlDQp7DQogIGRpc3BsYXk6IG5vbmU7DQp9DQoNCi5cXC1zaG93LW1vYmlsZS5pbmxpbmUNCnsNCiAgZGlzcGxheTogbm9uZTsNCn0NCg0KaW1nLmlubGluZSwgLmlubGluZQ0Kew0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQp9DQoNCi5cXC1icmVhay13b3JkDQp7DQogIHdvcmQtd3JhcDogYnJlYWstd29yZDsNCn0NCg0KLlxcLWFsaWduLW1pZGRsZQ0Kew0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouXFwtYWxpZ24tdG9wDQp7DQogIHZlcnRpY2FsLWFsaWduOiB0b3A7DQp9DQoNCi5cXC1ibG9jaw0Kew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLlxcLXNjcm9sbC1oDQp7DQogIG92ZXJmbG93LXg6IGF1dG87DQp9DQoNCi5cXC1zY3JvbGwtdg0Kew0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQouXFwtY2FwaXRhbGl6ZQ0Kew0KICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsNCn0NCg0KLlxcLXoxDQp7DQogIHotaW5kZXg6IDE7DQp9DQoNCi5cXC16Mg0Kew0KICB6LWluZGV4OiAyOw0KfQ0KDQouXFwtejgNCnsNCiAgei1pbmRleDogODsNCn0NCg0KLlxcLXoxMA0Kew0KICB6LWluZGV4OiAxMDsNCn0NCg0KLlxcLXoxMDANCnsNCiAgei1pbmRleDogMTAwOw0KfQ0KDQouXFwtcm91bmQNCnsNCiAgYm9yZGVyLXJhZGl1czogM3B4Ow0KfQ0KDQouXFwtcm91bmQtdG9wDQp7DQogIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOw0KfQ0KDQouXFwtcm91bmQtcmlnaHQNCnsNCiAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7DQp9DQoNCi5cXC1yb3VuZC1ib3R0b20NCnsNCiAgYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7DQp9DQoNCi5cXC1yb3VuZC1sZWZ0DQp7DQogIGJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4Ow0KfQ0KDQouXFwtcm91bmQtdG9wbGVmdA0Kew0KICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7DQp9DQoNCi5cXC1yb3VuZC1ib3R0b21sZWZ0DQp7DQogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsNCn0NCg0KLlxcLXJvdW5kLXRvcHJpZ2h0DQp7DQogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7DQp9DQoNCi5cXC1yb3VuZC1ib3R0b21yaWdodA0Kew0KICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4Ow0KfQ0KDQouXFwtc2hhZG93DQp7DQogIGJveC1zaGFkb3c6IDAgMCAyNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsNCn0NCg0KLlxcLXVwcGVyY2FzZQ0Kew0KICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOw0KfQ0KDQouXFwtbm9ldmVudHMNCnsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQoNCi5cXC11bnJvdW5kLA0KLlxcLXBpbGwudW5yb3VuZCAudW5yb3VuZA0Kew0KICBib3JkZXItcmFkaXVzOiAwOw0KfQ0KDQouXFwtY2FwdGlvbg0Kew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLlxcLXByb3NlIC5jYXB0aW9uDQp7DQogIGZvbnQtc2l6ZTogMTJweDsNCiAgbWFyZ2luOiAtMjBweCAwIDIwcHgNCn0NCg0KLlxcLXRydW5jYXRlDQp7DQogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOw0KICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0KDQovKiBDU1MgQW5pbWF0aW9ucy9UcmFuc2l0aW9ucw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi5cXC1hbmltYXRlIHsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMTI1czsNCiAgLW1vei10cmFuc2l0aW9uOmFsbCAuMTI1czsNCiAgLW1zLXRyYW5zaXRpb246YWxsIC4xMjVzOw0KICB0cmFuc2l0aW9uOmFsbCAuMTI1czsNCn0NCg0KLlxcLW9mZmNhbnZhcy10b3AgICAgew0KICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCiAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSk7DQogIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSk7DQogIHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCn0NCi5cXC1vZmZjYW52YXMtcmlnaHQgIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTsNCiAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTsNCn0NCi5cXC1vZmZjYW52YXMtYm90dG9tIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTsNCiAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTsNCn0NCi5cXC1vZmZjYW52YXMtbGVmdCAgIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQp9DQoNCi5cXC1vZmZjYW52YXMtdG9wLmFjdGl2ZSwNCi5cXC1vZmZjYW52YXMtYm90dG9tLmFjdGl2ZSwNCi5cXC1vZmZjYW52YXMtdG9wOnRhcmdldCwNCi5cXC1vZmZjYW52YXMtYm90dG9tOnRhcmdldCB7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7DQogIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7DQp9DQoNCi5cXC1vZmZjYW52YXMtbGVmdC5hY3RpdmUsDQouXFwtb2ZmY2FudmFzLXJpZ2h0LmFjdGl2ZSwNCi5cXC1vZmZjYW52YXMtbGVmdDp0YXJnZXQsDQouXFwtb2ZmY2FudmFzLXJpZ2h0OnRhcmdldCB7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7DQogIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7DQp9DQoNCi8qIFNsaWRpbmcgcGFuZXMgKi8NCi5cXC1zbGlkaW5nICAgICAgIHsgcG9zaXRpb246cmVsYXRpdmU7IH0NCi5cXC1zbGlkaW5nID4gKiAgIHsgcG9zaXRpb246YWJzb2x1dGU7IH0NCi5cXC1zbGlkaW5nLmggPiAqIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQp9DQouXFwtc2xpZGluZy52ID4gKiB7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpOw0KfQ0KLlxcLXNsaWRpbmcuaC5hY3RpdmUxID4gKjpudGgtY2hpbGQoICAgMSksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTIgPiAqOm50aC1jaGlsZCggICAyKSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlMyA+ICo6bnRoLWNoaWxkKCAgIDMpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU0ID4gKjpudGgtY2hpbGQoICAgNCksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTUgPiAqOm50aC1jaGlsZCggICA1KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlNiA+ICo6bnRoLWNoaWxkKCAgIDYpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU3ID4gKjpudGgtY2hpbGQoICAgNyksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTggPiAqOm50aC1jaGlsZCggICA4KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlOSA+ICo6bnRoLWNoaWxkKCAgIDkpIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwJSk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgwJSk7DQp9DQouXFwtc2xpZGluZy5oLmFjdGl2ZTEgPiAqOm50aC1jaGlsZCggbisyKSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlMiA+ICo6bnRoLWNoaWxkKCBuKzMpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmUzID4gKjpudGgtY2hpbGQoIG4rNCksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTQgPiAqOm50aC1jaGlsZCggbis1KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlNSA+ICo6bnRoLWNoaWxkKCBuKzYpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU2ID4gKjpudGgtY2hpbGQoIG4rNyksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTcgPiAqOm50aC1jaGlsZCggbis4KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlOCA+ICo6bnRoLWNoaWxkKCBuKzkpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU5ID4gKjpudGgtY2hpbGQobisxMCkgew0KICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7DQogIHRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KfQ0KDQouXFwtc2xpZGluZy52LmFjdGl2ZTEgPiAqOm50aC1jaGlsZCggICAxKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMiA+ICo6bnRoLWNoaWxkKCAgIDIpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUzID4gKjpudGgtY2hpbGQoICAgMyksDQouXFwtc2xpZGluZy52LmFjdGl2ZTQgPiAqOm50aC1jaGlsZCggICA0KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlNSA+ICo6bnRoLWNoaWxkKCAgIDUpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU2ID4gKjpudGgtY2hpbGQoICAgNiksDQouXFwtc2xpZGluZy52LmFjdGl2ZTcgPiAqOm50aC1jaGlsZCggICA3KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlOCA+ICo6bnRoLWNoaWxkKCAgIDgpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU5ID4gKjpudGgtY2hpbGQoICAgOSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTEwPiAqOm50aC1jaGlsZCggIDEwKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTE+ICo6bnRoLWNoaWxkKCAgMTEpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxMj4gKjpudGgtY2hpbGQoICAxMiksDQouXFwtc2xpZGluZy52LmFjdGl2ZTEzPiAqOm50aC1jaGlsZCggIDEzKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTQ+ICo6bnRoLWNoaWxkKCAgMTQpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxNT4gKjpudGgtY2hpbGQoICAxNSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE2PiAqOm50aC1jaGlsZCggIDE2KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTc+ICo6bnRoLWNoaWxkKCAgMTcpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxOD4gKjpudGgtY2hpbGQoICAxOCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE5PiAqOm50aC1jaGlsZCggIDE5KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMjA+ICo6bnRoLWNoaWxkKCAgMjApDQp7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKDAlKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCUpOw0KfQ0KLlxcLXNsaWRpbmcudi5hY3RpdmUxID4gKjpudGgtY2hpbGQoIG4rMiksDQouXFwtc2xpZGluZy52LmFjdGl2ZTIgPiAqOm50aC1jaGlsZCggbiszKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMyA+ICo6bnRoLWNoaWxkKCBuKzQpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU0ID4gKjpudGgtY2hpbGQoIG4rNSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTUgPiAqOm50aC1jaGlsZCggbis2KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlNiA+ICo6bnRoLWNoaWxkKCBuKzcpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU3ID4gKjpudGgtY2hpbGQoIG4rOCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTggPiAqOm50aC1jaGlsZCggbis5KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlOSA+ICo6bnRoLWNoaWxkKG4rMTApLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxMD4gKjpudGgtY2hpbGQobisxMSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTExPiAqOm50aC1jaGlsZChuKzEyKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTI+ICo6bnRoLWNoaWxkKG4rMTMpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxMz4gKjpudGgtY2hpbGQobisxNCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE0PiAqOm50aC1jaGlsZChuKzE1KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTU+ICo6bnRoLWNoaWxkKG4rMTYpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxNj4gKjpudGgtY2hpbGQobisxNyksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE3PiAqOm50aC1jaGlsZChuKzE4KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTg+ICo6bnRoLWNoaWxkKG4rMTkpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxOT4gKjpudGgtY2hpbGQobisyMCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTIwPiAqOm50aC1jaGlsZChuKzIxKQ0Kew0KICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7DQogIHRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KfQ0KDQovKiBGaWxscw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi5cXC1maWxsLWRhcmsgICAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjojNDA0MDQwOyB9DQouXFwtZmlsbC1ncmF5LA0KLlxcLWZpbGwtZ3JleSAgICAgICAgeyBiYWNrZ3JvdW5kOiNlZWU7IH0NCi5cXC1maWxsLWdyZXktZGFyaywNCi5cXC1maWxsLWdyYXktZGFyayAgIHsgYmFja2dyb3VuZDojNDA0MDQwOyB9DQouXFwtZmlsbC13aGl0ZSAgICAgICB7IGJhY2tncm91bmQ6I2ZmZjsgfQ0KLlxcLWZpbGwtbGlnaHQgICAgICAgeyBiYWNrZ3JvdW5kOiNmOGY4Zjg7IH0NCi8qIGRlcHJlY2F0ZWQsIHVzZSBmaWxsLWN5YW4gKi8NCi5cXC1maWxsLWJsdWUtbGlnaHQgIHsgYmFja2dyb3VuZDojNTJhMWQ4OyB9DQouXFwtZmlsbC1jeWFuICAgICAgICB7IGJhY2tncm91bmQ6IzNiYjJkMDsgfQ0KLlxcLWZpbGwtbWlkbmlnaHQgICAgeyBiYWNrZ3JvdW5kOiMxNDI3MzY7IH0NCg0KLlxcLWZpbGwtYmx1ZSAgICAgICAgeyBiYWNrZ3JvdW5kOiMzODg3YmU7IH0NCi5cXC1maWxsLWRlbmltICAgICAgIHsgYmFja2dyb3VuZDojNTA2NjdmOyB9DQouXFwtZmlsbC1uYXZ5ICAgICAgICB7IGJhY2tncm91bmQ6IzI4MzUzZDsgfQ0KLlxcLWZpbGwtbmF2eS1kYXJrICAgeyBiYWNrZ3JvdW5kOiMyMjJCMzA7IH0NCi5cXC1maWxsLXB1cnBsZSAgICAgIHsgYmFja2dyb3VuZDojOGE4YWNiOyB9DQouXFwtZmlsbC1ncmVlbiAgICAgICB7IGJhY2tncm91bmQ6IzU2Yjg4MTsgfQ0KLlxcLWZpbGwteWVsbG93ICAgICAgeyBiYWNrZ3JvdW5kOiNmMWYwNzU7IH0NCi5cXC1maWxsLW9yYW5nZSAgICAgIHsgYmFja2dyb3VuZDojZjk4ODZjOyB9DQoNCi5cXC1maWxsLWRhcmtibHVlICAgIHsgYmFja2dyb3VuZC1jb2xvcjojMjIzYjUzOyB9DQouXFwtZmlsbC1yZWQgICAgICAgICB7IGJhY2tncm91bmQtY29sb3I6I2U1NWU1ZTsgfQ0KLlxcLWZpbGwtdGVhbCAgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiM0MWFmYTU7IH0NCi5cXC1maWxsLXBpbmsgICAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjojZWQ2NDk4OyB9DQouXFwtZmlsbC1tdXN0YXJkICAgICB7IGJhY2tncm91bmQtY29sb3I6I2ZiYjAzYjsgfQ0KDQouXFwtZmlsbC1kYXJrZW4wIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMDUpOyB9DQouXFwtZmlsbC1kYXJrZW4xIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMjUpOyB9DQouXFwtZmlsbC1kYXJrZW4yIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNTApOyB9DQouXFwtZmlsbC1kYXJrZW4zIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNzUpOyB9DQoNCi5cXC1maWxsLWxpZ2h0ZW4wIHsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTApOyB9DQouXFwtZmlsbC1saWdodGVuMSB7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjI1KTsgfQ0KLlxcLWZpbGwtbGlnaHRlbjIgeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC41MCk7IH0NCi5cXC1maWxsLWxpZ2h0ZW4zIHsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpOyB9]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/mt-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiZ3JpZC11dGlscy5jc3MiOw0KQGltcG9ydCAiZ3JpZC5jc3MiOw0KQGltcG9ydCAic20tZ3JpZC5jc3MiOw0KQGltcG9ydCAibWQtZ3JpZC5jc3MiOw0KQGltcG9ydCAibGctZ3JpZC5jc3MiOw0KDQpAY3VzdG9tLW1lZGlhIC0tYnJlYWtwb2ludC1zbSAobWluLXdpZHRoOiA0MGVtKTsNCkBjdXN0b20tbWVkaWEgLS1icmVha3BvaW50LW1kIChtaW4td2lkdGg6IDUyZW0pOw0KQGN1c3RvbS1tZWRpYSAtLWJyZWFrcG9pbnQtbGcgKG1pbi13aWR0aDogNjRlbSk7]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/sm-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtLWJyZWFrcG9pbnQtc20pIHsKCiAgLlxcLXNtLWNvbCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tY29sLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tY29sLTEgewogICAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWNvbC0yIHsKICAgIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1jb2wtMyB7CiAgICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTQgewogICAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWNvbC01IHsKICAgIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1jb2wtNiB7CiAgICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTcgewogICAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWNvbC04IHsKICAgIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1jb2wtOSB7CiAgICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTEwIHsKICAgIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTExIHsKICAgIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/css/fk.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogZmluZGVycyBrZWVwZXJzICovDQoNCi5cXC1may13YXJuaW5nLA0KLlxcLWZrLWVycm9yLA0KLlxcLWZrLWluZm9ybWF0aW9uLA0KLlxcLWZrLW1lc3NhZ2UsDQouXFwtZmstc3VjY2VzcywNCi5cXC1may1wYWdld2FybmluZywNCi5cXC1may1ncmVlbiwNCi5cXC1may1yZWQsDQouXFwtZmsteWVsbG93DQp7DQogIGJvcmRlci1yYWRpdXM6IDRweA0KfQ0KDQoNCi5cXC1may1vcmFuZ2UNCnsNCiAgY29sb3I6ICNFNkMyNkUNCn0NCg0KLlxcLWZrLXJlZCwNCi5cXC1may10ZXh0LXJlZCwNCmEuXFwtZmstdGV4dC1yZWQsDQp0YWJsZS5cXC1may1wYWdldGFibGUgYS5cXC1may10ZXh0LXJlZA0Kew0KICBjb2xvcjogI0FFNDMyRQ0KfQ0KDQouXFwtZmstYmx1ZQ0Kew0KICBjb2xvcjogIzA1OERDNw0KfQ0KDQouXFwtZmstbWVzc2FnZSwNCi5cXC1may1wYWdld2FybmluZywNCi5cXC1may1wYWdlbWNvbnRhaW5lciwNCi5cXC1may1wYWdlZXJyb3Jjb250YWluZXIsDQouXFwtZmstcGFnZWVycm9yaW5zdGFsbGRpciwNCi5cXC1may1ncmVlbiwNCi5cXC1may1yZWQsDQouXFwtZmsteWVsbG93LA0KLlxcLWZrLXdhcm5pbmcsDQouXFwtZmstaW5mb3JtYXRpb24NCnsNCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICB3aWR0aDogYXV0bzsNCiAgZm9udC1zaXplOiAxNHB4Ow0KICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCA0MHB4Ow0KICBtYXJnaW46IDEwcHggMA0KfQ0KDQouXFwtZmstcGFnZXdhcm5pbmcuXFwtZmstaGlkZGVuDQp7DQogIGRpc3BsYXk6IG5vbmUNCn0NCg0KLlxcLWZrLWRpYWxvZyAuXFwtZmstZ3JlZW4sDQouXFwtZmstZGlhbG9nIC5cXC1may1yZWQsDQouXFwtZmstZGlhbG9nIC5cXC1may15ZWxsb3csDQouXFwtZmstZGlhbG9nIC5cXC1may1vcmFuZ2UNCnsNCiAgZGlzcGxheTogYmxvY2sNCn0NCg0KLlxcLWZrLWdyZWVuLA0KLlxcLWZrLXJlZCwNCi5cXC1may15ZWxsb3csDQouXFwtZmstb3JhbmdlDQp7DQogIHBhZGRpbmc6IDEwcHg7DQp9DQoNCi5cXC1may15ZWxsb3cNCnsNCiAgYmFja2dyb3VuZDogI0ZBRjZENDsNCiAgY29sb3I6ICNFNkMyNkU7DQogIGJvcmRlcjogMXB4IHNvbGlkICNFNkMyNkUNCn0NCg0KLlxcLWZrLWVycm9yLA0KLlxcLWZrLXBhZ2VlcnJvcmNvbnRhaW5lciwNCi5cXC1may1yZWQNCnsNCiAgYmFja2dyb3VuZDogI0YyRDRDRTsNCiAgY29sb3I6ICNBRTQzMkU7DQogIGJvcmRlcjogMXB4IHNvbGlkICNBRTQzMkUNCn0NCg0KLlxcLWZrLWdyZWVuDQp7DQogIGJhY2tncm91bmQ6ICNEOUU2QzM7DQogIGNvbG9yOiAjNzdBQjEzOw0KICBib3JkZXI6IDFweCBzb2xpZCAjNzdBQjEzDQp9DQoNCi5cXC1may1tZXNzYWdlOmhvdmVyDQp7DQogIGN1cnNvcjogaGVscA0KfQ0KDQouXFwtZmstd2FybmluZyBwLA0KLlxcLWZrLXBhZ2V3YXJuaW5nIHAsDQouXFwtZmstbWVzc2FnZSBwDQp7DQogIGNvbG9yOiAjMjMyMzIzOw0KICBtYXJnaW46IDA7DQogIGZvbnQtc2l6ZTogMTRweA0KfQ0KDQouXFwtZmstd2FybmluZyBoMywNCi5cXC1may1wYWdld2FybmluZyBoMw0Kew0KICBtYXJnaW46IDJweCAwOw0KICBmb250LXNpemU6IDE0cHg7DQogIGNvbG9yOiAjRTZDMjZFDQp9]]></data>
	</file>
	<file>
	  <filename>/css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/css/mams.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9icy9icy5jc3MiOw0KQGltcG9ydCAiZiZrLmNzcyI7]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentPostRender.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwpyZXR1cm47CgovLyAwLiAgQ2hlY2sgY21zIHZlcnNpb24KZ2xvYmFsICRDTVNfVkVSU0lPTjsKaWYoIHZlcnNpb25fY29tcGFyZSgkQ01TX1ZFUlNJT04sJzIuMC1iZXRhMScpIDwgMCApIHsKICAvLyBub3QgQ01TIDIuMCwgZG9uJ3QgZ28gYW55IGZ1cnRoZXIuCiAgcmV0dXJuOwp9CgovLyAxLiAgR2V0IHRoZSBjb250ZW50X2lkCiRjb250ZW50X2lkID0gY21zX3V0aWxzOjpnZXRfY3VycmVudF9wYWdlaWQoKTsKaWYoICRjb250ZW50X2lkIDw9IDAgKSByZXR1cm47CgovLyAyLiAgR2V0IHRoZSBjb250ZW50IG9iamVjdAppZiggY2xhc3NfZXhpc3RzKCdDTVNDb250ZW50JykpCiRjb250ZW50X29iaiA9IENtc0NvbnRlbnRPcGVyYXRpb25zOjpsb2FkX2NvbnRlbnRfZnJvbV9pZCgkY29udGVudF9pZCk7CmlmKCAhaXNfb2JqZWN0KCRjb250ZW50X29iaikgKQogIHsKICAgIHJldHVybjsKICB9CgovLyAzLiAgR2V0IHRoZSBwcm9wZXJ0aWVzLgokY29udGVudF9vYmotPmxvYWRfcHJvcGVydGllcygpOwokbWFtc19ncm91cHMgPSAkY29udGVudF9vYmotPmdldF9wcm9wZXJ0eV92YWx1ZSgnbWFtc19ncm91cHMnKTsKJG1hbXNfcmVkaXJlY3QgPSAkY29udGVudF9vYmotPmdldF9wcm9wZXJ0eV92YWx1ZSgnbWFtc19yZWRpcmVjdCcpOwoKLy8gaWYgdGhlIGdyb3VwcyBsaXN0IGlzIGVtcHR5LCByZXR1cm4uCmlmKCAkbWFtc19ncm91cHMgPT0gJycgKSByZXR1cm47CgovLyBjaGVjayB0aGlzIHVzZXJzIG1lbWJlciBncm91cHMKJHBhc3NlZCA9IGZhbHNlOwokdWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKaWYoICR1aWQgKQogIHsKICAgIC8vIGdldCB0aGUgbWVtYmVyIGdyb3Vwcy4KICAgICR0MSA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHMoJHVpZCk7CiAgICBpZiggaXNfYXJyYXkoICR0MSApICkKICAgICAgewoJLy8gdXNlciBpcyBhIG1lbWJlciBvZiBhdCBsZWFzdCBvbmUgZ3JvdXAKCSRtZW1iZXJncm91cHMgPSBhcnJheSgpOwoJZm9yZWFjaCggJHQxIGFzICRyb3cgKQoJICB7CgkgICAgJG1lbWJlcmdyb3Vwc1tdID0gJHJvd1snZ3JvdXBpZCddOwoJICB9CgoJLy8gdGVzdCBtZW1iZXJzaGlwLgoJJHQxID0gZXhwbG9kZSgnLCcsJG1hbXNfZ3JvdXBzKTsKCWlmKCBpbl9hcnJheSgkdDEsJy0xJykgKQoJICB7CgkgICAgLy8gYW55IGdyb3VwIHdpbGwgZG8uCgkgICAgJHBhc3NlZCA9IHRydWU7CgkgIH0KCWVsc2UKCSAgewoJICAgICR0bXAgPSBhcnJheV9pbnRlcnNlY3QoJG1lbWJlcmdyb3VwcywkdDIpOwoJICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSA+IDAgKQoJICAgICAgewoJCSRwYXNzZWQgPSB0cnVlOwoJICAgICAgfQoJICB9CiAgICAgIH0KICB9CgppZiggISRwYXNzZWQgKQogIHsKICAgIGlmKCAkbWFtc19yZWRpcmVjdCAhPSAtMSApCiAgICAgIHsKCXJlZGlyZWN0X3RvX2FsaWFzKCRtYW1zX3JlZGlyZWN0KTsKICAgICAgfQogIH0KIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_admintab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3VzZXJzJykgKSByZXR1cm47Ci8vIGEgZm9ybSBmb3IgcGVyZm9ybWluZyB2YXJpb3VzIGFkbWluIHRhc2tzCi8vIGxpa2UgcmVzZXR0aW5nIGV4cGlyeSBkYXRlcywgZXRjLCBldGMuCgokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2FkbWludGFza3MnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWN0aXZlX3RhYicsJ2FkbWluJykpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdsZWdlbmRfdXNlcmhpc3RvcnltYWludGVuYW5jZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3VzZXJoaXN0b3J5bWFpbnRlbmFuY2UnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2V4cG9ydHVzZXJoaXN0b3J5JywkdGhpcy0+TGFuZygncHJvbXB0X2V4cG9ydHVzZXJoaXN0b3J5JykpOwokZXhwb3J0bGlzdCA9IGFycmF5KCk7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX2FsbHJlY29yZHMnKV0gPSAtMTsKJGV4cG9ydGxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25laG91cm9sZCcpXSA9ICcxaCc7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX3NpeGhvdXJvbGQnKV0gPSAnNmgnOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV90d2VsdmVob3Vyb2xkJyldID0gJzEyaCc7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZWRheW9sZCcpXSA9ICcxaCc7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZXdlZWtvbGQnKV0gPSAnMXcnOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV90d293ZWVrc29sZCcpXSA9ICcydyc7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZW1vbnRob2xkJyldID0gJzFtJzsKJGV4cG9ydGxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdGhyZWVtb250aHNvbGQnKV0gPSAnM20nOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9zaXhtb250aHNvbGQnKV0gPSAnNm0nOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmV5ZWFyb2xkJyldID0gJzF5JzsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9leHBvcnR1c2VyaGlzdG9yeScsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdpbnB1dF9leHBvcnR1c2VyaGlzdG9yeScsJGV4cG9ydGxpc3QpKTsKJHNtYXJ0eS0+YXNzaWduKCdidXR0b25fZXhwb3J0dXNlcmhpc3RvcnknLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2J1dHRvbl9leHBvcnR1c2VyaGlzdG9yeScsJHRoaXMtPkxhbmcoJ2V4cG9ydCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jbGVhcnVzZXJoaXN0b3J5JywkdGhpcy0+TGFuZygncHJvbXB0X2NsZWFydXNlcmhpc3RvcnknKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfY2xlYXJ1c2VyaGlzdG9yeScsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdpbnB1dF9jbGVhcnVzZXJoaXN0b3J5JywkZXhwb3J0bGlzdCkpOwokc21hcnR5LT5hc3NpZ24oJ2J1dHRvbl9jbGVhcnVzZXJoaXN0b3J5JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdidXR0b25fY2xlYXJ1c2VyaGlzdG9yeScsJHRoaXMtPkxhbmcoJ2NsZWFyJykpKTsKCi8vIFByb2Nlc3MgdGhlIHRlbXBsYXRlCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW50YXNrcy50cGwnKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_authtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgcmV0dXJuOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3NldF9hdXRoJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdXBwb3J0X2xvc3R1bicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N1cHBvcnRfbG9zdHVuJywxKSk7CiRzbWFydHktPmFzc2lnbignc3VwcG9ydF9sb3N0cHcnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3RwdycsMSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdyZXF1aXJlX29uZWdyb3VwJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpKTsKJGdyb3VwczEgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiRncm91cHMgPSBhcnJheV9tZXJnZSggYXJyYXkoIk5vbmUiID0+IC0xKSwgJGdyb3VwczEgKTsKJHNtYXJ0eS0+YXNzaWduKCdncm91cGxpc3QnLGFycmF5X2ZsaXAoJGdyb3VwcykpOwokc21hcnR5LT5hc3NpZ24oJ2RlZmF1bHRfZ3JvdXAnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJykpOwokc21hcnR5LT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWlucHdsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWF4cHdsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignZW5oYW5jZWRwdycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VuaGFuY2VkX3Bhc3N3b3JkJykpOwokc21hcnR5LT5hc3NpZ24oJ3B3cmVxdWlyZWRjaGFycycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkX3JlcXVpcmVkY2hhcnMnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWludW5sZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5fdXNlcm5hbWVsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWF4dW5sZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignY29va2llX2tlZXBhbGl2ZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLDApKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZV9pc19lbWFpbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpOwokc3RyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnKTsKaWYoICEkc3RyICkgJHN0ciA9ICcnOwokc21hcnR5LT5hc3NpZ24oJ3hjb29raWVuYW1lJywkc3RyKTsKJHNtYXJ0eS0+YXNzaWduKCdhbGxvd19jaGFuZ2V1c2VybmFtZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X2NoYW5nZXVzZXJuYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJykpOwokc21hcnR5LT5hc3NpZ24oJ2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdzaWduaW5fYnV0dG9uJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2lnbmluX2J1dHRvbicsJHRoaXMtPkxhbmcoJ2xvZ2luJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCcqJykpOwokc21hcnR5LT5hc3NpZ24oJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLCdibHVlJykpOwokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbl9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfbWFya2VyJywnISEnKSk7CiRzbWFydHktPmFzc2lnbignaGlkZGVuX2ZpZWxkX2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywnZ3JlZW4nKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3NlY3VyZV9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfbWFya2VyJywnXl4nKSk7CiRzbWFydHktPmFzc2lnbignc2VjdXJlX2ZpZWxkX2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VjdXJlX2ZpZWxkX2NvbG9yJywneWVsbG93JykpOwoKJHNtYXJ0eS0+YXNzaWduKCdwYWdlaWRmb3Jnb3RwYXNzd2QnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKSk7CiRzbWFydHktPmFzc2lnbigncGFnZWlkX2NoYW5nZXNldHRpbmdzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJykpOwokc21hcnR5LT5hc3NpZ24oJ3BhZ2VpZF9sb2dpbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicpKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlaWRfbG9nb3V0JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlaWRfb252ZXJpZnknLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfb252ZXJpZnknKSk7CiRzbWFydHktPmFzc2lnbigncGFnZWlkX2FmdGVydmVyaWZ5JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVydmVyaWZ5JykpOwokc21hcnR5LT5hc3NpZ24oJ3BhZ2VpZF9hZnRlcmNoYW5nZXNldHRpbmdzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnKSk7CiRzbWFydHktPmFzc2lnbignbG9naW5fYWZ0ZXJfdmVyaWZ5JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbG9naW5fYWZ0ZXJfdmVyaWZ5JykgKTsKCi8vIEdldCB0aGUgbnVtYmVyIG9mIHVzZXJzIGluc3RhbGxlZCBpbiBGRVUuCiRxdWVyeSA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzJzsKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJG51c2VycyA9ICRkYi0+R2V0T25lKCRxdWVyeSk7CiRzbWFydHktPmFzc2lnbigndG90YWxfdXNlcl9jb3VudCcsJG51c2Vycyk7CmlmKCAhJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV91c2Vyc2FsdCcpICkgJHNtYXJ0eS0+YXNzaWduKCdwd3NhbHQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwd3NhbHQnKSk7CgokY2dlY29tID0geHRfdXRpbHM6OmdldF9tb2R1bGUoJ0NHRWNvbW1lcmNlQmFzZScpOwokbWFtcyA9IHh0X3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TUmVnaXN0cmF0aW9uJyk7CmlmKCAkY2dlY29tICYmICRtYW1zICYmICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdhbGxvd3BhaWRyZWdpc3RyYXRpb24nKSApCiAgewogICAgJG9wdHMgPSBhcnJheSgpOwogICAgJG9wdHNbJ25vbmUnXSA9ICR0aGlzLT5MYW5nKCdub25lJyk7CiAgICAkb3B0c1snZGVsZXRlJ10gPSAkdGhpcy0+TGFuZygnZGVsZXRlX3VzZXInKTsKICAgICRvcHRzWydkaXNhYmxlJ10gPSAkdGhpcy0+TGFuZygnZGlzYWJsZV91c2VyMicpOwogICAgJG9wdHNbJ2V4cGlyZSddID0gJHRoaXMtPkxhbmcoJ2V4cGlyZV91c2VyJyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vjb21tZXJjZV9hY3Rpb25zJywkb3B0cyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vjb21tX29yZGVyY2FuY2VsbGVkJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZWNvbW1fb3JkZXJjYW5jZWxsZWQnLCdub25lJykpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdlY29tbV9vcmRlcmRlbGV0ZWQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmRlbGV0ZWQnLCdub25lJykpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdlY29tbV9wYWlkcmVnaXN0cmF0aW9uJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbicsMCkpOwogIH0KCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fYXV0aHRhYi50cGwnKTsKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_clearuserhistory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gR2V0IHRoZSBzdGFydCBkYXRlCiRkYXRlID0gJy0xJzsKc3dpdGNoKCAkcGFyYW1zWydpbnB1dF9jbGVhcnVzZXJoaXN0b3J5J10gKSB7CmNhc2UgJzFoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIGhvdXIgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnNmgnOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzYgaG91cnMgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnMTJoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxMiBob3VycyBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICcxZCc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSBkYXkgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnMXcnOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgd2VlayBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICcydyc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMiB3ZWVrcyBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICcxbSc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSBtb250aCBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICczbSc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMyBtb250aHMgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnNm0nOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzYgbW9udGhzIGFnbycpOwogICAgYnJlYWs7CmNhc2UgJzF5JzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIHllYXIgYWdvJyk7CiAgICBicmVhazsKfQoKJGRiID0gXHh0X3V0aWxzOjpnZXRfZGIoKTsKdHJ5IHsKICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19oaXN0b3J5IjsKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICBpZiggJGRhdGUgIT0gLTEgKSAgewogICAgICAgICRxdWVyeSAuPSAiIFdIRVJFIHJlZmRhdGUgPCA/IjsKICAgICAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksIiciKTsKICAgIH0KCiAgICAkZGItPkV4ZWN1dGUoICRxdWVyeSwgJHBhcm1zICk7CiAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2FkbWluJyk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1Byb2JsZW0gY2xlYXJpbmcgdXNlciBoaXN0b3J5Jyk7CiAgICBkZWJ1Z190b19sb2coX19NRVRIT0RfXyk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldE1lc3NhZ2UoKSk7Cn0KLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_exportuserhistory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gR2V0IHRoZSBzdGFydCBkYXRlCiRkYXRlID0gJy0xJzsKc3dpdGNoKCAkcGFyYW1zWydpbnB1dF9leHBvcnR1c2VyaGlzdG9yeSddICkKICB7CiAgY2FzZSAnMWgnOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgaG91ciBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzZoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCc2IGhvdXJzIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnMTJoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxMiBob3VycyBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzFkJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIGRheSBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzF3JzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIHdlZWsgYWdvJyk7CiAgICBicmVhazsKICBjYXNlICcydyc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMiB3ZWVrcyBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzFtJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIG1vbnRoIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnM20nOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzMgbW9udGhzIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnNm0nOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzYgbW9udGhzIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnMXknOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgeWVhciBhZ28nKTsKICAgIGJyZWFrOwogIH0KCiR1c2VyaW5mbyA9IGFycmF5KCk7CgovLyB3ZSB3YW50IHRvIGV4cG9ydCBhIGNzdiBmaWxlIGRvIHdlCmhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQnKTsKaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT11c2VyaGlzdG9yeS5jc3YnKTsKd2hpbGUoQG9iX2VuZF9jbGVhbigpKTsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJGRvbmUgPSAwOwokc3RhcnQgPSAwOwokbnVtID0gMjsgLy8gdG9kbywgc2hvdWxkIGJlIGEgcHJlZmVyZW5jZQokcWJhc2UgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfaGlzdG9yeSAiOwokcGFybXMgPSBhcnJheSgpOwppZiggJGRhdGUgIT0gLTEgKQogIHsKICAgICRxYmFzZSAuPSAnIFdIRVJFIHJlZmRhdGUgPCA/JzsKICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlKSwiJyIpOwogIH0KCndoaWxlKCAkZG9uZSA9PSAwICkKICB7CiAgICAkcXVlcnkgPSAkcWJhc2UgLiAiIExJTUlUICRzdGFydCwkbnVtIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCAkcGFybXMgKTsKICAgIGlmKCAhJGRicmVzdWx0IHx8ICgkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgKQogICAgICB7CgkkZG9uZSA9IDE7CglicmVhazsKICAgICAgfQoKICAgICRvdXRwdXQgPSAnJzsKICAgIHdoaWxlKCAkZGJyZXN1bHQgJiYgISRkYnJlc3VsdC0+RU9GICkKICAgICAgewoJJGZpZWxkcyA9ICRkYnJlc3VsdC0+ZmllbGRzOwoJCgkkdWlkID0gJGZpZWxkc1sndXNlcmlkJ107CglpZiggJHVpZCA+IDAgKQoJICB7CgkgICAgaWYoICFpc3NldCggJHVzZXJpbmZvWyR1aWRdICkgKQoJICAgICAgewoJCSRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CgkJJHVzZXJpbmZvWyR1aWRdID0gJHJlc1sxXTsKCSAgICAgIH0KCSAgICAkdXNlcm5hbWUgPSAkdXNlcmluZm9bJHVpZF1bJ3VzZXJuYW1lJ107CgkgICAgJGZpZWxkc1tdID0gJHVzZXJpbmZvWyR1aWRdWyd1c2VybmFtZSddOwoJICB9CgllbHNlCgkgIHsKCSAgICAkZmllbGRzW10gPSAndW5rbm93bic7CgkgIH0KCgkkb3V0cHV0IC49IGltcGxvZGUoJywnLCRmaWVsZHMpLiJcbiI7CgoJLy8gY2hlYXQsIGNvbnZlcnQgdXNlcmlkIHRvIHVzZXJuYW1lCgkkZGJyZXN1bHQtPk1vdmVOZXh0KCk7CiAgICAgIH0KICAgIGVjaG8gJG91dHB1dDsKICAgICRzdGFydCArPSAkbnVtOwogIH0KZXhpdCgpOwoKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_groupstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighaXNzZXQoJGdDbXMpKXtleGl0O30KaWYoISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdncm91cHMnKSl7cmV0dXJuO30KCiRncm91cHMgICA9ICR0aGlzLT5HZXRHcm91cExpc3RGdWxsKFRSVUUpOwokcm93Y2xhc3MgPSAncm93MSc7CgokdHBsICAgICAgICAgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2dyb3VwbGlzdC50cGwnKTsKJHRoZW1lT2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfdGhlbWVfb2JqZWN0KCk7CiRwcm9wZGVmbnMgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiRuZGVmcyAgICAgICA9IChpc19hcnJheSgkcHJvcGRlZm5zKSAmJiBjb3VudCgkcHJvcGRlZm5zKSkgPyBjb3VudCgkcHJvcGRlZm5zKSA6IDA7CiRyb3dhcnJheSAgICA9IGFycmF5KCk7CgokdHBsLT5hc3NpZ24oJ2dyb3Vwc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ2dyb3Vwc2ZvdW5kJykpOwokdHBsLT5hc3NpZ24oJ25wcm9wcycsICRuZGVmcyk7CiR0cGwtPmFzc2lnbignaWR0ZXh0JywgJHRoaXMtPkxhbmcoJ2lkJykpOwokdHBsLT5hc3NpZ24oJ25hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiR0cGwtPmFzc2lnbignZGVzY3RleHQnLCAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKSk7Cgpmb3JlYWNoKCRncm91cHMgYXMgJG9uZWdyb3VwKQp7CiAgaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2xpc3Rncm91cHMnKSkKICB7CiAgICAkb25lcm93ICAgICAgICAgPSBuZXcgc3RkQ2xhc3MoKTsKICAgICRvbmVyb3ctPmlkICAgICA9ICRvbmVncm91cFsnaWQnXTsKICAgICRvbmVyb3ctPm5hbWUgICA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJG9uZWdyb3VwWydncm91cG5hbWUnXSwgYXJyYXkoJ2dyb3VwX2lkJyA9PiAkb25lZ3JvdXBbJ2lkJ10pCiAgICApOwogICAgJG9uZXJvdy0+ZGVzYyAgID0gJG9uZWdyb3VwWydncm91cGRlc2MnXTsKICAgICRvbmVyb3ctPm51c2VycyA9ICcnOwogICAgaWYoaXNzZXQoJG9uZWdyb3VwWydjb3VudCddKSkKICAgIHsKICAgICAgJG9uZXJvdy0+bnVzZXJzID0gJG9uZWdyb3VwWydjb3VudCddOwogICAgfQogICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CiAgICAKICAgIC8vaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXRncm91cHMnKSAmJiAkbmRlZnMpCiAgICBpZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpKQogICAgewogICAgICAkb25lcm93LT5lZGl0bGluayAgID0KICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLAogICAgICAgICAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKICAgICAgICAgIGFycmF5KCdncm91cF9pZCcgPT4gJG9uZWdyb3VwWydpZCddKQogICAgICAgICk7CiAgICAgICRvbmVyb3ctPmV4cG9ydGxpbmsgPQogICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgJGlkLCAnYWRtaW5fZXhwb3J0Z3JvdXAnLCAkcmV0dXJuaWQsCiAgICAgICAgICAnPGltZyBzcmM9IicgLiAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9pY29ucy94bWxfcnNzLmdpZiIgYWx0PSJ4bWwiLz4nLAogICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICdncm91cF9pZCcgICAgICAgPT4gJG9uZWdyb3VwWydpZCddLAogICAgICAgICAgICAnZGlzYWJsZV9idWZmZXInID0+IDEsCiAgICAgICAgICAgICdkaXNhYmxlX3RoZW1lJyAgPT4gMQogICAgICAgICAgKSwKICAgICAgICAgICcnLCBGQUxTRSwgRkFMU0UsICdjbGFzcz0ic3lzdGVtaWNvbiIgdGl0bGU9IicgLiAkdGhpcy0+TGFuZygndGl0bGVfcnNzZXhwb3J0JykgLiAnIicKICAgICAgICApOwogICAgfQogICAgaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3JlbW92ZWdyb3VwcycpICYmICRvbmVyb3ctPm51c2VycyA9PSAwKQogICAgewogICAgICAkb25lcm93LT5kZWxldGVsaW5rID0KICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICRpZCwgJ2RvX2RlbGV0ZWdyb3VwJywgJHJldHVybmlkLAogICAgICAgICAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICBhcnJheSgnZ3JvdXBfaWQnID0+ICRvbmVncm91cFsnaWQnXSksCiAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZV9kZWxldGVncm91cCcpCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwogIH0KICAKICAkdHBsLT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwogICR0cGwtPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwogICR0cGwtPmFzc2lnbignZ3JvdXBzZm91bmQnLCAkdGhpcy0+TGFuZygnZ3JvdXBzZm91bmQnKSk7Cn0KCmlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdhZGRncm91cCcpKQp7CiAgJHRwbC0+YXNzaWduKCdwcm9wY291bnQnLCBjb3VudCgkcHJvcGRlZm5zKSk7CiAgLy9pZihpc19hcnJheSgkcHJvcGRlZm5zKSAmJiBjb3VudCgkcHJvcGRlZm5zKSA+IDApCiAgaWYoaXNfYXJyYXkoJHByb3BkZWZucykpCiAgewogICAgJHRwbC0+YXNzaWduKAogICAgICAnYWRkZ3JvdXBsaW5rJywKICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsCiAgICAgICAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZGdyb3VwJyksICcnLCAnJywgJ3N5c3RlbWljb24nKQogICAgICApIC4gJyAnIC4KICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhZGRncm91cCcpKQogICAgKTsKICB9CiAgCiAgJHRwbC0+YXNzaWduKAogICAgJ2ltcG9ydGxpbmsnLAogICAgJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICRpZCwgJ2FkbWluX2ltcG9ydGdyb3VwJywgJHJldHVybmlkLAogICAgICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygnaW1wb3J0Z3JvdXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpCiAgICApIC4gJyAnIC4KICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2ltcG9ydGdyb3VwJywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnaW1wb3J0Z3JvdXAnKSkKICApOwp9CgokdHBsLT5kaXNwbGF5KCk7CgovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKJG1vZHMgICAgID0gXE1vZHVsZU9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXRJbnN0YWxsZWRNb2R1bGVzKCk7CiRoYXZlX2ZldSA9IGluX2FycmF5KCdGcm9udEVuZFVzZXJzJywgJG1vZHMpOwokc21hcnR5LT5hc3NpZ24oJ2hhdmVfZmV1JywgJGhhdmVfZmV1KTsKCi8vIGZpbGwgb3V0IHRoZSB0ZW1wbGF0ZQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fc2V0cHJlZnMnKSk7CgokbW9udGhzID0gYXJyYXkoKTsKZm9yKCAkaSA9IDUyMDsgJGkgPiAwOyAkaS0tICkgewogICAgJG1vbnRoc1skaV0gPSAkaTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdhdXRvX2NyZWF0ZV91bmtub3duJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b19jcmVhdGVfdW5rbm93bicsMCkpOwoKJGF1dGhfbW9kdWxlcyA9IG1vZHVsZV9oZWxwZXI6OmdldF9tb2R1bGVzX3dpdGhfbWV0aG9kKCdHZXRNQU1TQXV0aENvbnN1bWVyJyk7CmlmKCAhaXNfYXJyYXkoJGF1dGhfbW9kdWxlcykgKSAkYXV0aF9tb2R1bGVzID0gW107CiRhdXRoX21vZHVsZXMgPSB4dF9hcnJheTo6aGFzaF9wcmVwZW5kKCRhdXRoX21vZHVsZXMsJ19fQlVJTFRJTl9fJywkdGhpcy0+TGFuZygnYXV0aF9idWlsdGluJykpOwokc21hcnR5LT5hc3NpZ24oJ2F1dGhfbW9kdWxlcycsJGF1dGhfbW9kdWxlcyk7CiRzbWFydHktPmFzc2lnbignYXV0aF9tb2R1bGUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsJ19fQlVJTFRJTl9fJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yYW5kb211c2VybmFtZScsCgkJXE1BTVNcUlJVdGlsczo6bXlDcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2lucHV0X3JhbmRvbXVzZXJuYW1lJywgMSwKCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9yYW5kb211c2VybmFtZScsMCkpKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfZXhwaXJlYWdlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2lucHV0X2V4cGlyZWFnZScsJG1vbnRocywtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2V4cGlyZWFnZV9tb250aHMnLDUyMCkpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3Nlc3Npb250aW1lb3V0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9zZXNzaW9udGltZW91dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zZXNzaW9udGltZW91dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9zZXNzaW9udGltZW91dCcsCgkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJfc2Vzc2lvbl9leHBpcmVzJyksIDYsIDYgKSk7CgoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsCgkJJHRoaXMtPkxhbmcoJ3Byb21wdF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLAoJCVxNQU1TXFJSVXRpbHM6Om15Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpbnB1dF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJywgMSwKCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2luZm9fbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsICR0aGlzLT5MYW5nKCdpbmZvX21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnKSk7CgoKCiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsCgkJCQkJICAkdGhpcy0+TGFuZygnc3VibWl0JyksJycsJycsCgkJCQkJICAkdGhpcy0+TGFuZygnY29uZmlybV9zdWJtaXRwcmVmcycpKSk7CiRzbWFydHktPmFzc2lnbiAoJ2NhbmNlbCcsCgkJICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywKCQkJCQkgICAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2lucycsCgkJJHRoaXMtPkxhbmcoJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJywKCQlcTUFNU1xSUlV0aWxzOjpteUNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2lucHV0X2FsbG93X3JlcGVhdGVkX2xvZ2lucycsIDEsCgkJCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19yZXBlYXRlZF9sb2dpbnMnKSkpOwoKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCR0aGlzLT5MYW5nKCdwcm9tcHRfaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywKCQkJCQkJCQkJICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnKSw4MCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnLAkkdGhpcy0+TGFuZygncHJvbXB0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycsCgkJCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJyksODAsODApKTsKCiRzbWFydHktPmFzc2lnbignaW5mb19zdGFyJywkdGhpcy0+TGFuZygnaW5mb19zdGFyJykpOwokbnVtID0gJHRoaXMtPkNvdW50VGVtcENvZGVSZWNvcmRzKCk7CmlmKCAkbnVtICkKICAgIHsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbnVtcmVzZXRyZWNvcmRzJywKCQkgICAgICAkdGhpcy0+TGFuZygncHJvbXB0X251bXJlc2V0cmVjb3JkJykpOwogICAgICAkc21hcnR5LT5hc3NpZ24oJ2RhdGFfbnVtcmVzZXRyZWNvcmRzJywgJG51bSk7IC8vdG9kbwogICAgICAkc21hcnR5LT5hc3NpZ24oJ2lucHV0X3JlbW92ZWFsbCcsCgkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnaW5wdXRfcmVtb3ZlYWxsJywKCQkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3JlbW92ZWFsbCcpLAoJCQkJCSAgICAgICAnb25jbGljaz0icmV0dXJuIGNvbmZpcm0oXCcnLiR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykuJ1wnKSInKSk7CiAgICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfcmVtb3ZlMXdlZWsnLAoJCSAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2lucHV0X3JlbW92ZTF3ZWVrJywKCQkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3JlbW92ZTF3ZWVrJyksCgkJCQkJICAgICAgICdvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpIicpKTsKCiAgICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfcmVtb3ZlMW1vbnRoJywKCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdpbnB1dF9yZW1vdmUxbW9udGgnLAoJCQkJCSAgICAgICAkdGhpcy0+TGFuZygncmVtb3ZlMW1vbnRoJyksCgkJCQkJICAgICAgICdvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpIicpKTsKICAgIH0KCiRzbWFydHktPmFzc2lnbignZm9yY2Vsb2dvdXRfdGltZXMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF90aW1lcycpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdleHBpcmV1c2Vyc19pbnRlcnZhbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2V4cGlyZXVzZXJzX2ludGVydmFsJykpOwoKJHRtcCA9IGV4cGxvZGUoJywnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnLCcnKSk7CiRzbWFydHktPmFzc2lnbigncGFnZXR5cGVfZ3JvdXBzJywkdG1wKTsKJGdyb3VwczEgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiRzbWFydHktPmFzc2lnbignYWxsX2dyb3VwcycsYXJyYXlfZmxpcCgkZ3JvdXBzMSkpOwokc21hcnR5LT5hc3NpZ24oJ2NsZWFyaGlzdG9yeV9hZ2UnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2FnZScpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wcmVmcy50cGwnKTsKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_propertiestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7CmlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3Byb3BlcnRpZXMnKSApIHJldHVybjsKCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ3Byb3BlcnRpZXNmb3JtLnRwbCcpOwokbWVzc2FnZSA9ICcnOwppZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkgJG1lc3NhZ2UgPSBwYXJhbXNbJ21lc3NhZ2UnXTsKCgokdGhlbWVPYmplY3QgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsKCiRyb3dhcnJheSA9IGFycmF5KCk7CiRyb3djbGFzcyA9ICdyb3cxJzsKJGtleXMgPSBhcnJheV9rZXlzKCR0aGlzLT5HZXRGaWVsZFR5cGVzKCkpOwoKJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKaWYoIGlzX2FycmF5KCRkZWZucykgKSB7CiAgICBmb3JlYWNoKCAkZGVmbnMgYXMgJGRlZm4gKSB7CiAgICAgICAgJGNhbl9kZWxldGUgPSBUUlVFOwogICAgICAgICRwcm9wZ3JvdXBzID0gJHRoaXMtPkdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoJGRlZm5bJ25hbWUnXSk7CiAgICAgICAgaWYoIGNvdW50KCRwcm9wZ3JvdXBzKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHByb3Bncm91cHMgYXMgJHJlYyApIHsKICAgICAgICAgICAgICAgIGlmKCAkcmVjWydyZXF1aXJlZCddID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAkY2FuX2RlbGV0ZSA9IEZBTFNFOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0cHJvcCcpICYmICFpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pICkgewogICAgICAgICAgICAkb25lcm93LT5uYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkZHByb3AnLCAkcmV0dXJuaWQsICRkZWZuWyduYW1lJ10sYXJyYXkoJ3Byb3BuYW1lJyA9PiAkZGVmblsnbmFtZSddKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb25lcm93LT5uYW1lID0gJGRlZm5bJ25hbWUnXTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRkZWZuWydleHRyYSddWydtb2R1bGUnXSkgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5uYW1lIC49ICcmbmJzcDs8ZW0gdGl0bGU9IicuJHRoaXMtPkxhbmcoJ3RpdGxlX3Byb3Btb2R1bGUnKS4nIj4oJy4kZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10uJyk8L2VtPic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJG9uZXJvdy0+ZW5jcnlwdCA9ICRkZWZuWydlbmNyeXB0J107CiAgICAgICAgJG9uZXJvdy0+cHJvbXB0ID0gJGRlZm5bJ3Byb21wdCddOwogICAgICAgICRvbmVyb3ctPnR5cGUgPSAkdGhpcy0+TGFuZygka2V5c1skZGVmblsndHlwZSddXSk7CiAgICAgICAgJG9uZXJvdy0+bGVuZ3RoID0gJGRlZm5bJ2xlbmd0aCddOwogICAgICAgICRvbmVyb3ctPmZvcmNlX3VuaXF1ZSA9ICRkZWZuWydmb3JjZV91bmlxdWUnXTsKICAgICAgICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKICAgICAgICAkaXNfbW9kdWxlcHJvcCA9IDA7CiAgICAgICAgaWYoIGlzc2V0KCRkZWZuWydleHRyYSddKSAmJiBpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pICYmCiAgICAgICAgICAgICRkZWZuWydleHRyYSddWydtb2R1bGUnXSAhPSAnJyApIHsKICAgICAgICAgICAgJHRtcCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pOwogICAgICAgICAgICBpZiggaXNfb2JqZWN0KCR0bXApICkgJGlzX21vZHVsZXByb3AgPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0cHJvcCcpICYmICFpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pICkgewogICAgICAgICAgICAkb25lcm93LT5lZGl0bGluayA9CiAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnYWRkcHJvcCcsICRyZXR1cm5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdwcm9wbmFtZScgPT4gJGRlZm5bJ25hbWUnXSkpOwoKICAgICAgICAgICAgaWYoICRjYW5fZGVsZXRlICYmICEkaXNfbW9kdWxlcHJvcCApIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmRlbGV0ZV91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2FkbWluX2RlbGV0ZXByb3AnLCRyZXR1cm5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgncHJvcG5hbWUnID0+ICRkZWZuWyduYW1lJ10sICdwcm9wdHlwZScgPT4gJGRlZm5bJ3R5cGUnXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcm93YXJyYXlbXSA9ICRvbmVyb3c7CiAgICAgICAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwogICAgfQp9CgokdHBsLT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3Byb3BlcnRpZXMnKSk7CiR0cGwtPmFzc2lnbignbWVzc2FnZScsICRtZXNzYWdlKTsKJHRwbC0+YXNzaWduKCduYW1ldGV4dCcsICR0aGlzLT5MYW5nKCduYW1lJykpOwokdHBsLT5hc3NpZ24oJ2xlbmd0aHRleHQnLCAkdGhpcy0+TGFuZygnbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3Byb21wdHRleHQnLCAkdGhpcy0+TGFuZygncHJvbXB0JykpOwokdHBsLT5hc3NpZ24oJ3R5cGV0ZXh0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF90eXBlJykpOwokdHBsLT5hc3NpZ24oJ3Byb3BzJywgJHJvd2FycmF5KTsKJHRwbC0+YXNzaWduKCdwcm9wY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHRwbC0+YXNzaWduKCdwcm9wc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Byb3BzZm91bmQnKSk7CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnYWRkcHJvcCcpKQp7CiAgLy8gdG9kbywgYWRkIGEgcGVybWlzc2lvbiBjaGVjayBhcm91bmQgdGhpcwogIC8vIG1heWJlIGNyZWF0ZSBhbiAiZWRpdCBmcm9udGVuZHVzZXIgcHJvcGVydGllcyIgcGVybWlzc2lvbgogICR0cGwtPmFzc2lnbignYWRkX3VybCcsICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkZHByb3AnLCAkcmV0dXJuaWQpKTsKfQoKJHRwbC0+ZGlzcGxheSgpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_userstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgcmV0dXJuOwoKLy8gdGhpcyB0YWIgaGFzIG1lcmVseSBvbmUgbW9mbyBsaXN0IG9mIHVzZXMgYW5kIHRoZSBhYmlsaXR5IHRvIGVkaXQgdGhlbSwKLy8gc2VlIGRldGFpbHMgYWJvdXQgdGhlbSwgYW5kIHRoZW4gZGVsZXRlIHRoZW0KCi8vCi8vIGluaXRpYWxpemF0aW9uCi8vCiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwokYWRtaW50aGVtZSA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOwokdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCd1c2VybGlzdC50cGwnKTsKaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdsaXN0dXNlcnMnKSApIHsKCiAgICAkZmlsdGVyID0gJGJhcmVfZmlsdGVyID0gYXJyYXkoJ2dyb3VwJz0+JycsJ3JlZ2V4Jz0+JycsJ2xvZ2dlZGlub25seSc9PjAsJ2xpbWl0Jz0+NTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpZXdwcm9wcyc9PltdLCdwcm9wc2VsJz0+JycsJ3Byb3B2YWwnPT4nJywnc29ydGJ5Jz0+J3VzZXJuYW1lIGFzYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGVkc3RhdHVzJz0+JycpOwogICAgJHRtcCA9IGNtc191c2VycHJlZnM6OmdldCgnbWFtc19maWx0ZXInKTsKICAgIGlmKCAkdG1wICkgJGZpbHRlciA9IHVuc2VyaWFsaXplKCR0bXApOwoKICAgIC8vIGJ1bGsgYWN0aW9uIHN0dWZmCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2RvYnVsayddKSApIHsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snc2VsZWN0ZWQnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsZWN0ZWQnXSkgKSB7CiAgICAgICAgICAgICRzZWwgPSBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkcGFyYW1zWydzZWxlY3RlZCddKSk7CiAgICAgICAgICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZG1pbl9idWxrYWN0aW9ucycsICRyZXR1cm5pZCwgWyAnam9iJz0+XHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2J1bGtfYWN0aW9uJywnZGVsZXRlJyksJ3VpZHMnPT4kc2VsIF0gKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gZmlsdGVyaW5nIHN0dWZmCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2ZpbHRlcl9yZXNldCddICkgKSB7CiAgICAgICAgY21zX3VzZXJwcmVmczo6cmVtb3ZlKCdtYW1zX2ZpbHRlcicpOwogICAgICAgICR0aGlzLT5zZXNzaW9uX2NsZWFyKCdjdXJfcGFnZScpOwogICAgICAgICRmaWx0ZXIgPSAkYmFyZV9maWx0ZXI7CiAgICB9CiAgICBlbHNlIGlmKCBpc3NldCggJHBhcmFtc1snZmlsdGVyJ10pICkgewogICAgICAgICRmaWx0ZXJbJ2dyb3VwJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2ZpbHRlcl9ncm91cCcpOwogICAgICAgICRmaWx0ZXJbJ3JlZ2V4J10gPSB0cmltKGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZmlsdGVyX3JlZ2V4JykpOwogICAgICAgICRmaWx0ZXJbJ2xvZ2dlZGlub25seSddID0gKGludClnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2ZpbHRlcl9sb2dnZWRpbm9ubHknKTsKICAgICAgICAkZmlsdGVyWydsaW1pdCddID0gKGludClnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2ZpbHRlcl9saW1pdCcpOwogICAgICAgICRmaWx0ZXJbJ3NvcnRieSddID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2ZpbHRlcl9zb3J0YnknKSk7CiAgICAgICAgJGZpbHRlclsndmlld3Byb3BzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2ZpbHRlcl92aWV3cHJvcHMnKTsKICAgICAgICAkZmlsdGVyWydwcm9wc2VsJ10gPSB0cmltKGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZmlsdGVyX3Byb3BlcnR5c2VsJykpOwogICAgICAgIGlmKCAkZmlsdGVyWydwcm9wc2VsJ10gPT0gJ25vbmUnICkgJGZpbHRlclsncHJvcHNlbCddID0gJyc7CiAgICAgICAgJGZpbHRlclsncHJvcHZhbCddID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2ZpbHRlcl9wcm9wZXJ0eScpKTsKICAgICAgICAkZmlsdGVyWydkaXNhYmxlZHN0YXR1cyddID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCAkcGFyYW1zLCAnZmlsdGVyX2Rpc2FibGVkJyk7CiAgICAgICAgJHRoaXMtPnNlc3Npb25fY2xlYXIoJ2N1cl9wYWdlJyk7CiAgICAgICAgY21zX3VzZXJwcmVmczo6c2V0KCdtYW1zX2ZpbHRlcicsc2VyaWFsaXplKCRmaWx0ZXIpKTsKICAgIH0KCiAgICAkdHBsLT5hc3NpZ24oJ2ZpbHRlcicsJGZpbHRlcik7CiAgICAkZmlsdGVyYXBwbGllZCA9ICgkZmlsdGVyICE9ICRiYXJlX2ZpbHRlcik7CiAgICAkdHBsLT5hc3NpZ24oJ2ZpbHRlcl9hcHBsaWVkJywkZmlsdGVyYXBwbGllZCk7CgogICAgLy8gZ2V0IGEgZ3JvdXAgbGlzdCBmb3IgdGhlIGZpbHRlcgogICAgLy8gaXQgc2hvdWxkIGJlIHJlYWR5IHRvIGdvIHJpZ2h0IGludG8gdGhlIGRyb3Bkb3duIChjb29sIGVoKQogICAgJGdyb3VwcyA9IG51bGw7CiAgICAkZ3JvdXBzMSA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgIGlmKCBpc19hcnJheSgkZ3JvdXBzMSkgJiYgY291bnQoJGdyb3VwczEpICkgewogICAgICAgICRncm91cHMgPSBhcnJheV9tZXJnZSggYXJyYXkoJHRoaXMtPkxhbmcoJ2FueScpID0+IC0xKSwgJGdyb3VwczEgKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwcycsYXJyYXlfZmxpcCgkZ3JvdXBzKSk7CiAgICB9CgogICAgLy8gYSBwdWxsZG93biBsaXN0IGZvciBsaW1pdHMKICAgICRsaW1pdHMgPSBhcnJheSggJzEwJyA9PiAxMCwKICAgICAgICAgICAgICAgICAgICAgJzI1JyA9PiAyNSwKICAgICAgICAgICAgICAgICAgICAgJzUwJyA9PiA1MCwKICAgICAgICAgICAgICAgICAgICAgJzEwMCcgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAnMjUwJyA9PiAyNTAsCiAgICAgICAgICAgICAgICAgICAgICc1MDAnID0+IDUwMCApOwogICAgJHRwbC0+YXNzaWduKCdsaW1pdHMnLCRsaW1pdHMpOwoKICAgIC8vIGEgcHVsbGRvd24gbGlzdCBmb3IgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAgICRkZWZuczEgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgJGRlZm5zID0gYXJyYXkoKTsKICAgICRkZWZuc1snTm9uZSddID0gJ25vbmUnOwogICAgJGFsbGRlZm5zID0gYXJyYXkoKTsKICAgIGlmKCBpc19hcnJheSgkZGVmbnMxKSApIHsKICAgICAgICBmb3JlYWNoKCAkZGVmbnMxIGFzICRkZWYgKSB7CiAgICAgICAgICAgIGlmKCAkZGVmWydwcm9tcHQnXSA9PSAnJyB8fCAkZGVmWyduYW1lJ10gPT0gJycgKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoICRkZWZbJ2VuY3J5cHQnXSApIGNvbnRpbnVlOyAvLyB5b3UgY2FuJ3QgdmlldyBlbmNyeXB0ZWQgcHJvcGVydGllcyBpbiB0aGlzIGxpc3QuCiAgICAgICAgICAgICRkZWZuc1skZGVmWydwcm9tcHQnXV0gPSAkZGVmWyduYW1lJ107CiAgICAgICAgICAgICRhbGxkZWZuc1skZGVmWyduYW1lJ11dID0gJGRlZlsncHJvbXB0J107CiAgICAgICAgfQogICAgfQogICAgJHRwbC0+YXNzaWduKCdkZWZubGlzdCcsYXJyYXlfZmxpcCgkZGVmbnMpKTsKCiAgICAvLyBhIHB1bGxkb3duIGxpc3QgZm9yIHNvcnRpbmcKICAgICRzb3J0cyA9IGFycmF5KCAkdGhpcy0+TGFuZygnc29ydGJ5X3VzZXJuYW1lX2FzYycpID0+ICd1c2VybmFtZSBhc2MnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdzb3J0YnlfdXNlcm5hbWVfZGVzYycpID0+ICd1c2VybmFtZSBkZXNjJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnc29ydGJ5X2NyZWF0ZV9hc2MnKSA9PiAnY3JlYXRlZGF0ZSBhc2MnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdzb3J0YnlfY3JlYXRlX2Rlc2MnKSA9PiAnY3JlYXRlZGF0ZSBkZXNjJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnc29ydGJ5X2V4cGlyZXNfYXNjJykgPT4gJ2V4cGlyZXMgYXNjJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnc29ydGJ5X2V4cGlyZXNfZGVzYycpID0+ICdleHBpcmVzIGRlc2MnICk7CiAgICAkdHBsLT5hc3NpZ24oJ3NvcnRsaXN0JyxhcnJheV9mbGlwKCRzb3J0cykpOwoKICAgIC8vIG5vdyBzZXR1cCB0aGUgdGVtcGxhdGUgZmllbGRzCiAgICAkdHBsLT5hc3NpZ24oICdwcm9tcHRfc29ydCcsICR0aGlzLT5MYW5nKCdzb3J0JykpOwogICAgJHRwbC0+YXNzaWduKCAnc3RhcnRmb3JtJywgJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdjZ19hY3RpdmV0YWInPT4ndXNlcnMnKSkpOwogICAgJHRwbC0+YXNzaWduKCAncGVybV9yZW1vdmV1c2VycycsICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdyZW1vdmV1c2VycycpPzE6MCk7CiAgICAkdHBsLT5hc3NpZ24oICd1c2Vyc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3VzZXJzZm91bmQnKSk7CiAgICAkdHBsLT5hc3NpZ24oICdhbGxkZWZucycsJGFsbGRlZm5zKTsKICAgICR0cGwtPmFzc2lnbiggJ3ZpZXdwcm9wcycsJGZpbHRlclsndmlld3Byb3BzJ10pOwogICAgJHRwbC0+YXNzaWduKCAnZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kICgpKTsKCiAgICAvLyBub3cgZ2V0IG91ciB1c2VycwogICAgJHVzZXJzID0gbnVsbDsKICAgICRjdXJwYWdlID0gJHRoaXMtPnNlc3Npb25fZ2V0KCdjdXJfcGFnZScsMSk7CiAgICAkbm1hdGNoZXMgPSAwOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3BhZ2UnXSkgKSB7CiAgICAgICAgJGN1cnBhZ2UgPSAoaW50KSRwYXJhbXNbJ3BhZ2UnXTsKICAgICAgICAkdGhpcy0+c2Vzc2lvbl9wdXQoJ2N1cl9wYWdlJywkY3VycGFnZSk7CiAgICB9CiAgICAkb2Zmc2V0ID0gKCRjdXJwYWdlIC0gMSkgKiAkZmlsdGVyWydsaW1pdCddOwogICAgdHJ5IHsKICAgICAgICAkdXNlcnMgPSBtYW1zX3V0aWxzOjpnZXRfdXNlcnNfZnJvbV9maWx0ZXIoICRmaWx0ZXIsICRvZmZzZXQsICRubWF0Y2hlcyApOwogICAgfQogICAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZS0+R2V0TWVzc2FnZSgpICk7CiAgICB9CiAgICBpZiggIWlzX2FycmF5KCR1c2VycykgKSB7CiAgICAgICAgLy8gYW4gZXJyb3Igb2NjdXJyZWQKICAgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZGItPkVycm9yTXNnKCkgKTsKICAgIH0KCiAgICAvLyBjYWxjdWxhdGUgcGFnZXMgYW5kIHBhZ2UgbGlua3MuCiAgICAkbnVtdXNlcnMgPSAkbm1hdGNoZXM7CiAgICAkbnBhZ2VzID0gKGludCkoJG5tYXRjaGVzIC8gJGZpbHRlclsnbGltaXQnXSk7CiAgICBpZiggJG5tYXRjaGVzICUgJGZpbHRlclsnbGltaXQnXSAhPSAwICkgJG5wYWdlcysrOwogICAgJGN1cnBhZ2UgPSBtYXgoMCxtaW4oJGN1cnBhZ2UsJG5wYWdlcykpOwoKICAgICRuYXYgPSBhcnJheSgpOwogICAgJG5hdlsnbnBhZ2VzJ10gPSAkbnBhZ2VzOwogICAgJG5hdlsnY3VycGFnZSddID0gJGN1cnBhZ2U7CiAgICBpZiggJGN1cnBhZ2UgPiAxICkgewogICAgICAgICRuYXZbJ2ZpcnN0cGFnZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZGVmYXVsdGFkbWluJywnJywgYXJyYXkoJ2NnX2FjdGl2ZXRhYic9Pid1c2VycycsJ3BhZ2UnPT4xKSk7CiAgICAgICAgJG5hdlsncHJldnBhZ2VfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsIGFycmF5KCdjZ19hY3RpdmV0YWInPT4ndXNlcnMnLCdwYWdlJz0+JGN1cnBhZ2UtMSkpOwogICAgfQogICAgaWYoICRjdXJwYWdlIDwgJG5wYWdlcyApIHsKICAgICAgICAkbmF2WyduZXh0cGFnZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZGVmYXVsdGFkbWluJywnJywgYXJyYXkoJ2NnX2FjdGl2ZXRhYic9Pid1c2VycycsJ3BhZ2UnPT4kY3VycGFnZSsxKSk7CiAgICAgICAgJG5hdlsnbGFzdHBhZ2VfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsIGFycmF5KCdjZ19hY3RpdmV0YWInPT4ndXNlcnMnLCdwYWdlJz0+JG5wYWdlcykpOwogICAgfQogICAgJHRwbC0+YXNzaWduKCduYXZpZ2F0aW9uJywkbmF2KTsKCiAgICAvLyBnZXQgdGhlIHRvdGFsIG51bWJlciBvZiB1c2VycwoKICAgIC8vIGdldCB0aGUgc2VsZWN0ZWQgcHJvcGVydGllcy4KICAgIGlmKCBpc19hcnJheSgkZmlsdGVyWyd2aWV3cHJvcHMnXSkgJiYgY291bnQoJGZpbHRlclsndmlld3Byb3BzJ10pICkgewogICAgICAgIGlmKCBpc19hcnJheSgkdXNlcnMpICYmIGNvdW50KCR1c2VycykgKSB7CiAgICAgICAgICAgICR1aWRzID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHVzZXJzIGFzICRyb3cgKSB7CiAgICAgICAgICAgICAgICAkdWlkc1tdID0gJHJvd1snaWQnXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBBLmlkLCI7CiAgICAgICAgICAgICRmbGRzID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbmRzID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvdW50X3ZpZXdfcHJvcHMgPSBjb3VudCgkZmlsdGVyWyd2aWV3cHJvcHMnXSk7CiAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8ICRjb3VudF92aWV3X3Byb3BzOyAkaSsrICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHByb3AgPSAkZmlsdGVyWyd2aWV3cHJvcHMnXVskaV07CiAgICAgICAgICAgICAgICAkbm0gPSAnaicuJGk7CiAgICAgICAgICAgICAgICAkZmxkc1tdICA9ICIkbm0uZGF0YSBhcyAkcHJvcCI7CiAgICAgICAgICAgICAgICAkY29uZHNbXSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBBUyAkbm0gT04gQS5pZCA9ICRubS51c2VyaWQgQU5EICgkbm0udGl0bGUgPSAnJHByb3AnKSI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCRmbGRzKS4nIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIEEnOwogICAgICAgICAgICAkcXVlcnkgLj0gJyBMRUZUIEpPSU4gJy5pbXBsb2RlKCcgTEVGVCBKT0lOICcsJGNvbmRzKTsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgV0hFUkUgQS5pZCBJTiAoJy5pbXBsb2RlKCcsJywkdWlkcykuJyknOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCdTRVQgc3FsX2JpZ19zZWxlY3RzID0gMScpOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgICAgICAkZXh0cmFwcm9wcyA9IHh0X2FycmF5Ojp0b19oYXNoKCR0bXAsJ2lkJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGJ1aWxkIHRoZSB1c2VyIGxpc3QuCiAgICAkcm93YXJyYXkgPSBhcnJheSgpOwogICAgJHRwbC0+YXNzaWduKCdudW11c2VycycsICRudW11c2VycyApOwogICAgJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSAmJiBnZXRfY2xhc3MoJGNvbnN1bWVyKSA9PSAnbWFtc19zdGRfY29uc3VtZXInICkgewogICAgICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9lbWFpbCcpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ3VzZXJuYW1lJykpOwogICAgfQogICAgJHRwbC0+YXNzaWduKCdlbWFpbHRleHQnLCAkdGhpcy0+TGFuZygnZW1haWwnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXR1c3RleHQnLCAkdGhpcy0+TGFuZygnc3RhdHVzJykpOwogICAgJHRwbC0+YXNzaWduKCdjcmVhdGVkdGV4dCcsICR0aGlzLT5MYW5nKCdjcmVhdGVkJykpOwogICAgJHRwbC0+YXNzaWduKCdleHBpcmVzdGV4dCcsICR0aGlzLT5MYW5nKCdleHBpcmVzJykpOwogICAgaWYoIGlzX2FycmF5KCR1c2VycykgKSB7CiAgICAgICAgZm9yZWFjaCggJHVzZXJzIGFzICRyb3cgKSB7CiAgICAgICAgICAgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAgICAgJG9uZXJvdy0+aWQgPSAkcm93WydpZCddOwogICAgICAgICAgICAkb25lcm93LT5kaXNhYmxlZCA9IChib29sKSAkcm93WydkaXNhYmxlZCddOwogICAgICAgICAgICAkb25lcm93LT5tdXN0X3ZhbGlkYXRlID0gKGJvb2wpIChpc3NldCgkcm93WydtdXN0X3ZhbGlkYXRlJ10pKSA/ICRyb3dbJ211c3RfdmFsaWRhdGUnXSA6IGZhbHNlOwogICAgICAgICAgICAkb25lcm93LT5jcmVhdGVkICA9ICRyb3dbJ2NyZWF0ZWRhdGUnXTsKICAgICAgICAgICAgJG9uZXJvdy0+dXNlcm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCwgJHJvd1sndXNlcm5hbWUnXSwgYXJyYXkoJ3VzZXJfaWQnID0+ICRyb3dbJ2lkJ10pKTsKICAgICAgICAgICAgJG9uZXJvdy0+ZXhwaXJlcyAgPSAkcm93WydleHBpcmVzJ107CiAgICAgICAgICAgICRvbmVyb3ctPnVuc2FmZXBhc3N3b3JkID0gc3RybGVuKCRyb3dbJ3Bhc3N3b3JkJ10pID09IDMyOwoKICAgICAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdsaXN0dXNlcnMnKSApIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmhpc3RvcnlsaW5rID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAndXNlcmhpc3RvcnknLCAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbmZvLmdpZicsJHRoaXMtPkxhbmcoJ2hpc3RvcnknKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndXNlcl9pZCc9PiRyb3dbJ2lkJ10pKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmVkaXRsaW5rID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnYWRtaW5fZWRpdHVzZXInLCAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nICgnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ICgndXNlcl9pZCcgPT4gJHJvd1snaWQnXSApKTsKICAgICAgICAgICAgICAgIGlmKCAkcm93Wydsb2dnZWRpbiddICkgewogICAgICAgICAgICAgICAgICAgICRvbmVyb3ctPmxvZ291dGxpbmsgPQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCdhZG1pbl9sb2dvdXQnLCRyZXR1cm5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9iYWNrLmdpZicsICR0aGlzLT5MYW5nKCdwcm9tcHRfbG9nb3V0JyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd1c2VyX2lkJz0+JHJvd1snaWQnXSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3JlbW92ZXVzZXJzJykgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5kZWxldGVsaW5rID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCdkb19kZWxldGV1c2VyJywkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywkdGhpcy0+TGFuZyAoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ICgndXNlcl9pZCcgPT4gJHJvd1snaWQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nICgnYXJleW91c3VyZV9kZWxldGUnLCRyb3dbJ3VzZXJuYW1lJ10pKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRmaWx0ZXJbJ3ZpZXdwcm9wcyddKSAmJiBjb3VudCgkZmlsdGVyWyd2aWV3cHJvcHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5leHRyYSA9IFtdOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJGZpbHRlclsndmlld3Byb3BzJ10gYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICBpZiggaXNzZXQoJGV4dHJhcHJvcHNbJG9uZXJvdy0+aWRdWyRvbmVdKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iID0gbmV3IFxTdGRDbGFzczsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iLT52YWwgPSAkZXh0cmFwcm9wc1skb25lcm93LT5pZF1bJG9uZV07CiAgICAgICAgICAgICAgICAgICAgICAgICRvYi0+ZGVmbiA9ICRkZWZuczFbJG9uZV07CiAgICAgICAgICAgICAgICAgICAgICAgICRvbmVyb3ctPmV4dHJhWyRvbmVdID0gJG9iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgICAgIH0KICAgIH0KCiAgICAkdHBsLT5hc3NpZ24oJ2l0ZW1jb3VudCcsY291bnQoJHJvd2FycmF5KSk7CiAgICAkdHBsLT5hc3NpZ24oJ2l0ZW1zJywkcm93YXJyYXkpOwogICAgJGJ1bGtfYWN0aW9ucyA9IFtdOwogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIHsKICAgICAgICAkYnVsa19hY3Rpb25zWydkaXNhYmxlJ10gPSAkdGhpcy0+TGFuZygnYnVsa19kaXNhYmxlJyk7CiAgICAgICAgJGJ1bGtfYWN0aW9uc1snZW5hYmxlJ10gPSAkdGhpcy0+TGFuZygnYnVsa19lbmFibGUnKTsKICAgICAgICAkYnVsa19hY3Rpb25zWydmb3JjZWNocHcnXSA9ICR0aGlzLT5MYW5nKCdidWxrX2ZvcmNlY2hwdycpOwogICAgICAgICRidWxrX2FjdGlvbnNbJ2ZvcmNlY2hzZXR0aW5ncyddID0gJHRoaXMtPkxhbmcoJ2J1bGtfZm9yY2VjaHNldHRpbmdzJyk7CiAgICAgICAgJGJ1bGtfYWN0aW9uc1snc2V0cGFzc3dvcmQnXSA9ICR0aGlzLT5MYW5nKCdidWxrX3NldHBhc3N3b3JkJyk7CiAgICAgICAgJGJ1bGtfYWN0aW9uc1snc2V0ZXhwaXJ5J10gPSAkdGhpcy0+TGFuZygnYnVsa19zZXRleHBpcnknKTsKICAgIH0KICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncmVtb3ZldXNlcnMnKSApIHsKICAgICAgICAkYnVsa19hY3Rpb25zWydkZWxldGUnXSA9ICR0aGlzLT5MYW5nKCdidWxrX2RlbGV0ZScpOwogICAgfQogICAgaWYoIGNvdW50KCRidWxrX2FjdGlvbnMpICkgJHRwbC0+YXNzaWduKCdidWxrX2FjdGlvbnMnLCRidWxrX2FjdGlvbnMpOwp9IC8vIGxpc3R1c2VycyBwZXJtaXNzaW9uCgppZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZHVzZXInKSApIHsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpID09IDAgfHwgY291bnQoJGdyb3VwczEpID4gMCApIHsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2FkZF91cmwnLCAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2FkbWluX2VkaXR1c2VyJywkcmV0dXJuaWQpKTsKICAgIH0KfQppZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzJykgKSB7CiAgICBpZiggIWVtcHR5KCRncm91cHMpICkgJHRwbC0+YXNzaWduKCdpbXBvcnRfdXJsJywkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2FkbWluX2ltcG9ydF91c2VycycsJHJldHVybmlkKSk7CiAgICBpZiggIWVtcHR5KCRyb3dhcnJheSkgKSAkdHBsLT5hc3NpZ24oJ2V4cG9ydF91cmwnLCR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnYWRtaW5fZXhwb3J0X3VzZXJzJywkcmV0dXJuaWQpKTsKfQoKJHRwbC0+ZGlzcGxheSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/icons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/icons/edit.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAOZ/ANfq//r+/ur0/+Xy/9/1/9rs/9bu/nehxf/+/fX///H4/+32/+j0/+P3/+bz/+Hw/3+ny3mgxV2XzViTyXqhxVuXzePx//z9/3eew3CYv/j7//r9//3+///+/9zu//f7//j8/3GZv/T6//b6/9/u/93u/+3+//b7/+Dv/1qTyVeY0HGYv/r8/8jf84etz26Xv1eTyfP4/+v1/uX1+FuY0NHq+q/L5IWhwVCKwG6fyun5/+n6/8DL2dzj6VaRyVqAp+T4//z+//T5//L5+9zt/6Kyxc/b5ODy/+Dn63ifxD9nkUdoj+P//1KKv9/v/52ww/D6/3KawfP6/1ORylGSzGOc0N/w/9fi64ykvJWmvPT9//f+/+Xx/////uH0/42ryf7+//7//1qQw0N1pkx5pYuetleNwFiVzePt8luWz+v7/9PZ41qX0J650MPM29ni6vH3++Lv/97u//b4+VJwllZzlVWTytjr/+Lx/16Bp+31/4Sdt+b4/3adw////////yH5BAEAAH8ALAAAAAAQABAAAAfjgH95BxQUGIeHfRERBz9/fyt+fgiSlX5dkhCPIX5rWZVgF35FPH6af0lIdWWSHEEgfk9LRi6PUQg9c5IXGx8fcG9DOY8ZlWEXLBonIgpQCRPEfh0dQRvKIgsDFiYp0R28GiNSC1x4cWrQf8UcGyAfMTLaKHI66ZwX4QoCDhZOJQVAYDx64YeDED0M5Hko4KGBj0dmAqCRsc+ClYUAWhiw80jMFTpYEjx4UOKOly9KbKR51MSPmz1aSJAgAuDIjTYmpjzC4WfLDBM7+DQgQKCGASZUHpGpwlSC0woVztBgo2LMn0AAOw==]]></data>
	</file>
	<file>
	  <filename>/icons/users.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAPYAAAxdeA1deA1eeA5hfA9ifRBifhBjfhBlgRJohBJsiBJsiRNuixJykRNzkhRykBV0kxR1lBZ1lBR5mRV8nRh7nBh8nBh8nRh9nRh/oBWAoheBoxmDpRqDpRiFpxqEphmFqBmGqRqGqBmHqhuHqhqIqxuIqxuKrRyLrxyMrx2QtR6QtB6Stx2bsx6dtR+TuB+TuR6ZuyGbwiGcwyGcxCKhyiOiyyOjyySjzCSkziWq1CWr1Saq1Caq1Se12iiw3Cix3Sm53im14iq45Su/5Su/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAeCgEWCg0UtLISIgzBAREQ9iYg7QkFBQjaQgzs+mz6XmEU4O6I7M59FMjc2NzgppikyMbEfphsvtikQnxocKCgnJxuQFx8lIR4bGxzEHxKDDRgVFBQV1NHTGA2CDhAP3d7eEBAOggoL5ufo54IHCO3u7+0HgwQEBfb3+IkC+/wCAISBAAA7]]></data>
	</file>
	<file>
	  <filename>/icons/xml_rss.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhJAAOAOYAAP/////9+f/9+v/68f/58P/45P/24//z3v7x2/7v2v7pvP7os/7muf7nqP7ktf7lr/7jo/7iq/7jmf7frv7gnv7cq/7fiv7cmf7YlP3be/3eZP3bYP3Vm/3aX/7Uj/3VfP3WWv3Qiv3Rgv3VWf3UWP3SXPzQY/3Mhf3PUPzLU/zKW/3FafzHRvzDU/zESv3DXfzAYvzAPPy8S/68N/64Mvy2Qvy4M/6xKfywOvywKfypMfuoJvypH/yjKfukHPuhFfucE/uaE/uZC/+WBf+VBPuVCf2TAvuRAPuSAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAAkAA4AAAf/gDdEREOFhoeIiYqHgjMbGpCRkpOUlZAdNIMkIJydnp+goZ+DKKWlDQWlGQUlpQUSphasKLKmtqWDLLq6KQALLAIGuwAAuwICJiwQxbvNLIMx0dIPAAoALtLEHzEqxCoxFADS49GDNufoNsQR6QABAzYMxC02FwDp+IM5+/w5BwAi+gHAAOAFAAcAZOQg2K/hIB4QI64AQABARB4AalQMUCMjDw8WL14c9KOkSQAIfACYcBIHDAAhcADA8SPETBw4dpgsOUiIT58VAAARwgGADp9GhQAQoiPpCWLEEvz0OQiJVas9glztUQSr1a5IenztQTbrVauDiBxZy7at27dwDd0SMZK2rt27ePPODQQAOw==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/js.cookie.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEphdmFTY3JpcHQgQ29va2llIHYyLjIuMQogKiBodHRwczovL2dpdGh1Yi5jb20vanMtY29va2llL2pzLWNvb2tpZQogKgogKiBDb3B5cmlnaHQgMjAwNiwgMjAxNSBLbGF1cyBIYXJ0bCAmIEZhZ25lciBCcmFjawogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICovCjsoZnVuY3Rpb24gKGZhY3RvcnkpIHsKCXZhciByZWdpc3RlcmVkSW5Nb2R1bGVMb2FkZXI7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJZGVmaW5lKGZhY3RvcnkpOwoJCXJlZ2lzdGVyZWRJbk1vZHVsZUxvYWRlciA9IHRydWU7Cgl9CglpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CgkJbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CgkJcmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyID0gdHJ1ZTsKCX0KCWlmICghcmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyKSB7CgkJdmFyIE9sZENvb2tpZXMgPSB3aW5kb3cuQ29va2llczsKCQl2YXIgYXBpID0gd2luZG93LkNvb2tpZXMgPSBmYWN0b3J5KCk7CgkJYXBpLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7CgkJCXdpbmRvdy5Db29raWVzID0gT2xkQ29va2llczsKCQkJcmV0dXJuIGFwaTsKCQl9OwoJfQp9KGZ1bmN0aW9uICgpIHsKCWZ1bmN0aW9uIGV4dGVuZCAoKSB7CgkJdmFyIGkgPSAwOwoJCXZhciByZXN1bHQgPSB7fTsKCQlmb3IgKDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewoJCQl2YXIgYXR0cmlidXRlcyA9IGFyZ3VtZW50c1sgaSBdOwoJCQlmb3IgKHZhciBrZXkgaW4gYXR0cmlidXRlcykgewoJCQkJcmVzdWx0W2tleV0gPSBhdHRyaWJ1dGVzW2tleV07CgkJCX0KCQl9CgkJcmV0dXJuIHJlc3VsdDsKCX0KCglmdW5jdGlvbiBkZWNvZGUgKHMpIHsKCQlyZXR1cm4gcy5yZXBsYWNlKC8oJVswLTlBLVpdezJ9KSsvZywgZGVjb2RlVVJJQ29tcG9uZW50KTsKCX0KCglmdW5jdGlvbiBpbml0IChjb252ZXJ0ZXIpIHsKCQlmdW5jdGlvbiBhcGkoKSB7fQoKCQlmdW5jdGlvbiBzZXQgKGtleSwgdmFsdWUsIGF0dHJpYnV0ZXMpIHsKCQkJaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJYXR0cmlidXRlcyA9IGV4dGVuZCh7CgkJCQlwYXRoOiAnLycKCQkJfSwgYXBpLmRlZmF1bHRzLCBhdHRyaWJ1dGVzKTsKCgkJCWlmICh0eXBlb2YgYXR0cmlidXRlcy5leHBpcmVzID09PSAnbnVtYmVyJykgewoJCQkJYXR0cmlidXRlcy5leHBpcmVzID0gbmV3IERhdGUobmV3IERhdGUoKSAqIDEgKyBhdHRyaWJ1dGVzLmV4cGlyZXMgKiA4NjRlKzUpOwoJCQl9CgoJCQkvLyBXZSdyZSB1c2luZyAiZXhwaXJlcyIgYmVjYXVzZSAibWF4LWFnZSIgaXMgbm90IHN1cHBvcnRlZCBieSBJRQoJCQlhdHRyaWJ1dGVzLmV4cGlyZXMgPSBhdHRyaWJ1dGVzLmV4cGlyZXMgPyBhdHRyaWJ1dGVzLmV4cGlyZXMudG9VVENTdHJpbmcoKSA6ICcnOwoKCQkJdHJ5IHsKCQkJCXZhciByZXN1bHQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7CgkJCQlpZiAoL15bXHtcW10vLnRlc3QocmVzdWx0KSkgewoJCQkJCXZhbHVlID0gcmVzdWx0OwoJCQkJfQoJCQl9IGNhdGNoIChlKSB7fQoKCQkJdmFsdWUgPSBjb252ZXJ0ZXIud3JpdGUgPwoJCQkJY29udmVydGVyLndyaXRlKHZhbHVlLCBrZXkpIDoKCQkJCWVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKQoJCQkJCS5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDNBfDNDfDNFfDNEfDJGfDNGfDQwfDVCfDVEfDVFfDYwfDdCfDdEfDdDKS9nLCBkZWNvZGVVUklDb21wb25lbnQpOwoKCQkJa2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhrZXkpKQoJCQkJLnJlcGxhY2UoLyUoMjN8MjR8MjZ8MkJ8NUV8NjB8N0MpL2csIGRlY29kZVVSSUNvbXBvbmVudCkKCQkJCS5yZXBsYWNlKC9bXChcKV0vZywgZXNjYXBlKTsKCgkJCXZhciBzdHJpbmdpZmllZEF0dHJpYnV0ZXMgPSAnJzsKCQkJZm9yICh2YXIgYXR0cmlidXRlTmFtZSBpbiBhdHRyaWJ1dGVzKSB7CgkJCQlpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0pIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCXN0cmluZ2lmaWVkQXR0cmlidXRlcyArPSAnOyAnICsgYXR0cmlidXRlTmFtZTsKCQkJCWlmIChhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdID09PSB0cnVlKSB7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJLy8gQ29uc2lkZXJzIFJGQyA2MjY1IHNlY3Rpb24gNS4yOgoJCQkJLy8gLi4uCgkJCQkvLyAzLiAgSWYgdGhlIHJlbWFpbmluZyB1bnBhcnNlZC1hdHRyaWJ1dGVzIGNvbnRhaW5zIGEgJXgzQiAoIjsiKQoJCQkJLy8gICAgIGNoYXJhY3RlcjoKCQkJCS8vIENvbnN1bWUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgdXAgdG8sCgkJCQkvLyBub3QgaW5jbHVkaW5nLCB0aGUgZmlyc3QgJXgzQiAoIjsiKSBjaGFyYWN0ZXIuCgkJCQkvLyAuLi4KCQkJCXN0cmluZ2lmaWVkQXR0cmlidXRlcyArPSAnPScgKyBhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLnNwbGl0KCc7JylbMF07CgkJCX0KCgkJCXJldHVybiAoZG9jdW1lbnQuY29va2llID0ga2V5ICsgJz0nICsgdmFsdWUgKyBzdHJpbmdpZmllZEF0dHJpYnV0ZXMpOwoJCX0KCgkJZnVuY3Rpb24gZ2V0IChrZXksIGpzb24pIHsKCQkJaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJdmFyIGphciA9IHt9OwoJCQkvLyBUbyBwcmV2ZW50IHRoZSBmb3IgbG9vcCBpbiB0aGUgZmlyc3QgcGxhY2UgYXNzaWduIGFuIGVtcHR5IGFycmF5CgkJCS8vIGluIGNhc2UgdGhlcmUgYXJlIG5vIGNvb2tpZXMgYXQgYWxsLgoJCQl2YXIgY29va2llcyA9IGRvY3VtZW50LmNvb2tpZSA/IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKSA6IFtdOwoJCQl2YXIgaSA9IDA7CgoJCQlmb3IgKDsgaSA8IGNvb2tpZXMubGVuZ3RoOyBpKyspIHsKCQkJCXZhciBwYXJ0cyA9IGNvb2tpZXNbaV0uc3BsaXQoJz0nKTsKCQkJCXZhciBjb29raWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKCc9Jyk7CgoJCQkJaWYgKCFqc29uICYmIGNvb2tpZS5jaGFyQXQoMCkgPT09ICciJykgewoJCQkJCWNvb2tpZSA9IGNvb2tpZS5zbGljZSgxLCAtMSk7CgkJCQl9CgoJCQkJdHJ5IHsKCQkJCQl2YXIgbmFtZSA9IGRlY29kZShwYXJ0c1swXSk7CgkJCQkJY29va2llID0gKGNvbnZlcnRlci5yZWFkIHx8IGNvbnZlcnRlcikoY29va2llLCBuYW1lKSB8fAoJCQkJCQlkZWNvZGUoY29va2llKTsKCgkJCQkJaWYgKGpzb24pIHsKCQkJCQkJdHJ5IHsKCQkJCQkJCWNvb2tpZSA9IEpTT04ucGFyc2UoY29va2llKTsKCQkJCQkJfSBjYXRjaCAoZSkge30KCQkJCQl9CgoJCQkJCWphcltuYW1lXSA9IGNvb2tpZTsKCgkJCQkJaWYgKGtleSA9PT0gbmFtZSkgewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9IGNhdGNoIChlKSB7fQoJCQl9CgoJCQlyZXR1cm4ga2V5ID8gamFyW2tleV0gOiBqYXI7CgkJfQoKCQlhcGkuc2V0ID0gc2V0OwoJCWFwaS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7CgkJCXJldHVybiBnZXQoa2V5LCBmYWxzZSAvKiByZWFkIGFzIHJhdyAqLyk7CgkJfTsKCQlhcGkuZ2V0SlNPTiA9IGZ1bmN0aW9uIChrZXkpIHsKCQkJcmV0dXJuIGdldChrZXksIHRydWUgLyogcmVhZCBhcyBqc29uICovKTsKCQl9OwoJCWFwaS5yZW1vdmUgPSBmdW5jdGlvbiAoa2V5LCBhdHRyaWJ1dGVzKSB7CgkJCXNldChrZXksICcnLCBleHRlbmQoYXR0cmlidXRlcywgewoJCQkJZXhwaXJlczogLTEKCQkJfSkpOwoJCX07CgoJCWFwaS5kZWZhdWx0cyA9IHt9OwoKCQlhcGkud2l0aENvbnZlcnRlciA9IGluaXQ7CgoJCXJldHVybiBhcGk7Cgl9CgoJcmV0dXJuIGluaXQoZnVuY3Rpb24gKCkge30pOwp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fdW5zYWZlcGFzc3dvcmQnXSA9ICdUaGlzIHVzZXJzIHBhc3N3b3JkIGlzIHVzaW5nIGFuIG9sZCBoYXNoaW5nIG1lY2hhbmlzbS4gIFRoZSB1c2VyIHNob3VsZCBjaGFuZ2UgdGhlIHBhc3N3b3JkJzsKJGxhbmdbJ3Vuc2FmZSddID0gJ1Vuc2FmZSc7CiRsYW5nWydtc2dfYW5vbmltaXplZCddID0gJ1VzZXIgYW5vbnltaXplZCc7CiRsYW5nWydhbm9uaW1pemUnXSA9ICdBbm9ueW1pemUgdGhpcyBVc2VyJzsKJGxhbmdbJ2NvbmZpcm1fYW5vbmltaXplJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGFub255bWl6ZSB0aGlzIHVzZXI/ICBUaGUgYWNjb3VudCB3aWxsIGJlIGRpc2FibGVkLCBwYXNzd29yZCBjaGFuZ2VkLCB1c2VybmFtZSBhbmQgYWxsIHBlcnNvbmFsIGluZm9ybWF0aW9uIGVyYXNlZCc7CiRsYW5nWydwcm9tcHRfY2xlYXJoaXN0b3J5X2FnZSddID0gJ0NsZWFyIGhpc3RvcnkgZW50cmllcyBvbGRlciB0aGFuIE4gZGF5cyc7CiRsYW5nWydpbmZvX2NsZWFyaGlzdG9yeV9hZ2UnXSA9ICdFbnRlciBhIG5vbiB6ZXJvIHZhbHVlIHRvIHJlZ3VsYXJseSByZW1vdmUgYWxsIHVzZXIgaGlzdG9yeSBlbnRyaWVzIHRoYXQgYXJlIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyc7CiRsYW5nWydwcm9tcHRfbG9naW5fYWZ0ZXJfdmVyaWZ5J10gPSAnQXV0b21hdGljYWxseSBsb2ctaW4gYWZ0ZXIgdXNlciB2ZXJpZmljYXRpb24nOwokbGFuZ1snaW5mb19sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdJZiBlbmFibGVkLCBhbiBhdXRoZW50aWNhdGVkIHVzZXIgd2hvIHZlcmlmaWVzIHRoZWlyIGlkZW50aXR5IHN1Y2Nlc3NmdWxseSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbG9nZ2VkIGluLic7CiRsYW5nWydxdWlja2ZpbmRfaWRuYW1lJ10gPSAnVXNlciBJRC9OYW1lJzsKJGxhbmdbJ3F1aWNrZmluZF9waCddID0gJ1VzZXIgSUQgb3IgTmFtZSc7CiRsYW5nWydmaW5kJ10gPSAnRWRpdCBVc2VyJzsKJGxhbmdbJ3F1aWNrZmluZF91c2VyJ10gPSAnUXVpY2sgRmluZC4uLic7CiRsYW5nWyd1c2Vyc21hdGNoaW5nJ10gPSAnVXNlcnMgbWF0Y2hpbmcgeW91ciBjcml0ZXJpYSc7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWRzdGF0dXMnXSA9ICdEaXNhYmxlZCBTdGF0dXMnOwokbGFuZ1snZGlzYWJsZWQnXSA9ICdEaXNhYmxlZCc7CiRsYW5nWydlbmFibGVkJ10gPSAnRW5hYmxlZCc7CiRsYW5nWydwcm9wcmVnZXgnXSA9ICdQcm9wZXJ0eSBWYWx1ZSc7CiRsYW5nWydpbmZvX3Byb3ByZWdleCddID0gJ0VudGVyIGEgdmFsdWUgc3RyaW5nLCBzdWJzdHJpbmcsIG9yIGEgcmVndWxhciBleHByZXNzaW9uLiAgRm9yIGNoZWNrYm94IGZpZWxkcyBlbnRlciBhIHZhbHVlIG9mIDAgb3IgMS4gIFRvIGZpbHRlciBvbiBBTlkgdmFsdWUgZm9yIGEgcHJvcGVydHkgdXNlIHRoZSBzdHJpbmcgLiogKGRvdCBhc3RlcmlzaykuJzsKJGxhbmdbJ2luZm9fZXhwaXJlZCddID0gJ1RoaXMgYWNjb3VudCBpcyBleHBpcmVkLCBwcmV2ZW50aW5nIGxvZ2luLic7CiRsYW5nWydkaXNhYmxlX3VzZXIyJ10gPSAnRGlzYWJsZSB1c2VyJzsKJGxhbmdbJ2Vycm9yX3VzZXJkZWxldGUnXSA9ICdXZSBjb3VsZCBub3QgZGVsZXRlIHRoaXMgdXNlciBhY2NvdW50LiAgUGVyaGFwcyBvdGhlciBtb2R1bGVzIGhhdmUgZGF0YSB0aGF0IGlzIGNvbm5lY3RlZCB0byB0aGlzIHVzZXI/JzsKJGxhbmdbJ3dhcm5fc3Ryb25ncGFzc3dvcmQnXSA9ICdOb3RlLCBieSBkZWZhdWx0LCBzdHJvbmcgcGFzc3dvcmRzIGFyZSBhIHJlcXVpcmVtZW50LCB0aG91Z2ggdGhlIHNldHRpbmdzIGZvciBwYXNzd29yZHMgY2FuIGJlIGNvbnRyb2xsZWQgZnJvbSB3aXRoaW4gdGhlIGFkbWluIHBhbmVsIGZvciB0aGlzIG1vZHVsZSc7CiRsYW5nWydjb2RlJ10gPSAnQ29kZSc7CiRsYW5nWyd2ZXJpZnknXSA9ICdWZXJpZnknOwokbGFuZ1snaW5mb192ZXJpZnlfaWRlbnRpdHknXSA9ICdZb3Ugc2hvdWxkIGhhdmUgYWxyZWFkeSByZWNlaXZlZCBhbiBlbWFpbCB3aXRoIGEgY29kZSB0byB2ZXJpZnkgdGhhdCB5b3Ugb3duIHRoZSBlbWFpbCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuICBQbGVhc2UgZW50ZXIgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIGhlcmUuIDxlbT4oaXQgbWF5IGV2ZW4gYXV0b21hdGljYWxseSBiZSBwcm92aWRlZCkuPC9lbT4nOwokbGFuZ1snaW5mb192ZXJpZnlfaWRlbnRpdHkyJ10gPSAnWW91IHNob3VsZCBoYXZlIGFscmVhZHkgcmVjZWl2ZWQgYW4gZW1haWwgd2l0aCBhIGNvZGUgdG8gdmVyaWZ5IHRoYXQgeW91IG93biB0aGUgZW1haWwgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiAgUGxlYXNlIGVudGVyIHRoZSB2ZXJpZmljYXRpb24gY29kZSBoZXJlLiA8ZW0+KGl0IG1heSBldmVuIGF1dG9tYXRpY2FsbHkgYmUgcHJvdmlkZWQpLjwvZW0+JzsKJGxhbmdbJ3RpdGxlX2ZvcmdvdHB3ZW1haWwnXSA9ICdZb3UgaGF2ZSBtaXNwbGFjZWQgeW91ciBjcmVkcyc7CiRsYW5nWydtc2dfdmVyaWZpY2F0aW9uX2NvbXBsZXRlJ10gPSAnWW91IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgdmVyaWZpZWQuICBUaGFuayB5b3UuPGJyLz5Zb3UgbWF5IG5lZWQgdG8gcmUtZW50ZXIgeW91ciBsb2dpbiBjcmVkZW50aWFscyB0byBhY2Nlc3Mgb3VyIHByb3RlY3RlZCBhcmVhcy4nOwokbGFuZ1snYWNjb3VudF92ZXJpZmljYXRpb24nXSA9ICdBY2NvdW50IFZlcmlmaWNhdGlvbic7CiRsYW5nWydwcm9tcHRfdmVyaWZ5X3BhZ2UnXSA9ICdQYWdlIElEL0FsaWFzIHRvIEhhbmRsZSB0aGUgVmVyaWZpY2F0aW9uIFByb2Nlc3MgKic7CiRsYW5nWydpbmZvX3ZlcmlmeWVtYWlsX3NlbnQnXSA9ICdWZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiBzZW50JzsKJGxhbmdbJ2Vycm9yX3ZhbGlkYXRlX2luc3VmZmljaWVudGluZm8nXSA9ICdUaGlzIHVzZXIgbXVzdCByZXZhbGlkYXRlIGhpbXNlbGYsIGJ1dCB0aGVyZSBpcyBub3QgZW5vdWdoIHVzZXIgaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIG1ha2UgdGhhdCBwb3NzaWJsZS4nOwokbGFuZ1snaW5mb19tdXN0X3ZhbGlkYXRlJ10gPSAnVGhpcyB1c2VyIG11c3QgdmFsaWRhdGUgdGhlbXNlbHZlcyBiZWZvcmUgbG9nZ2luZyBpbic7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9sb2dvdXRsaW5rJ10gPSAnTUFNUyBMb2dvdXQgTGluayc7CiRsYW5nWydoZHJfYnVsa19zZXRwYXNzd29yZCddID0gJ0J1bGsgQWRqdXN0IFVzZXIgUGFzc3dvcmRzJzsKJGxhbmdbJ2luZm9fYnVsa19zZXRwYXNzd29yZCddID0gJ1RoaXMgZm9ybSBhbGxvd3MgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwYXNzd29yZCBmb3Igc2VsZWN0ZWQgdXNlcnMuICBUaGUgdXNlcnMgYXJlIG5vdCBzZW50IGFuIGVtYWlsIGluZGljYXRpbmcgdGhhdCB0aGVpciBwYXNzd29yZCBoYXMgY2hhbmdlZC4gIFRoZSBwYXNzd29yZCBzcGVjaWZpZWQgbXVzdCBjb25maXJtIHRvIHRoZSBwYXNzd29yZCBydWxlcyBpbiB0aGUgbW9kdWxlIHNldHRpbmdzLic7CiRsYW5nWydoZHJfYnVsa19zZXRleHBpcnknXSA9ICdCdWxrIEFkanVzdCBVc2VyIEV4cGlyeSc7CiRsYW5nWydpbmZvX2J1bGtfc2V0ZXhwaXJ5J10gPSAnVGhpcyBmb3JtIGFsbG93cyBhZGp1c3RpbmcgdGhlIGV4cGlyeSBkYXRlIGZvciB0aGUgc2VsZWN0ZWQgdXNlcnMuICBFeHBpcmVkIHVzZXJzIGNhbm5vdCBsb2dpbiB0byB0aGUgdGhlIHdlYnNpdGUuICBJdCBpcyBwb3NzaWJsZSB0byBzZXQgYW4gZXhwaXJ5IGRhdGUgdG8gdGhlIHBhc3QnOwokbGFuZ1snYnVsa19kZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snYnVsa19kaXNhYmxlJ10gPSAnRGlzYWJsZSc7CiRsYW5nWydidWxrX2VuYWJsZSddID0gJ0VuYWJsZSc7CiRsYW5nWydidWxrX2ZvcmNlY2hwdyddID0gJ0ZvcmNlIHBhc3N3b3JkIGNoYW5nZSc7CiRsYW5nWydidWxrX2ZvcmNlY2hzZXR0aW5ncyddID0gJ0ZvcmNlIGNoYW5nZSBzZXR0aW5ncyc7CiRsYW5nWydidWxrX3NldHBhc3N3b3JkJ10gPSAnU2V0IGEgbmV3IHBhc3N3b3JkJzsKJGxhbmdbJ2J1bGtfc2V0ZXhwaXJ5J10gPSAnU2V0IGV4cGlyeSBkYXRlJzsKJGxhbmdbJ3dpdGhfc2VsZWN0ZWQnXSA9ICdXaXRoIHNlbGVjdGVkJzsKJGxhbmdbJ2J1bGtfc2VsZWN0b25lJ10gPSAnUGxlYXNlIHNlbGVjdCBvbmUgb3IgbW9yZSB1c2Vycyc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcnBhc3N3b3JkJ10gPSAnUGxlYXNlIGVudGVyIGEgcGFzc3dvcmQnOwokbGFuZ1sndHBsdHlwZV9jaHNldHRpbmdzX2Zvcm0nXSA9ICdDaGFuZ2UgU2V0dGluZ3MgRm9ybSc7CiRsYW5nWyd0cGx0eXBlX2ZvcmdvdF9wYXNzd29yZF9mb3JtJ10gPSAnRm9yZ290IFBhc3N3b3JkIEZvcm0nOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfZW1haWwnXSA9ICdGb3Jnb3QgUGFzc3dvcmQgRW1haWwnOwokbGFuZ1sndHBsdHlwZV92ZXJpZnlfZW1haWwnXSA9ICdWZXJpZmljYXRpb24gRW1haWwnOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfdmVyaWZ5J10gPSAnRm9yZ290dGVuIFBhc3N3b3JkIFZlcmlmeSBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfZm9yY2VfbmV3X3Bhc3N3b3JkJ10gPSAnRm9yY2UgTmV3IFBhc3N3b3JkJzsKJGxhbmdbJ3RwbHR5cGVfbG9zdF91c2VybmFtZV9mb3JtJ10gPSAnTG9zdCBVc2VybmFtZSBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfbG9zdF91c2VybmFtZV9jb25maXJtJ10gPSAnTG9zdCBVc2VybmFtZSBDb25maXJtIEZvcm0nOwokbGFuZ1sndHBsdHlwZV92ZXJpZnlfZm9ybSddID0gJ0FjY291bnQgVmVyaWZpY2F0aW9uIEZvcm0nOwokbGFuZ1sndHBsdHlwZV92aWV3X3VzZXInXSA9ICdWaWV3IFVzZXInOwokbGFuZ1sndHBsdHlwZV9yZXNldF9zZXNzaW9uJ10gPSAnUmVzZXQgU2Vzc2lvbic7CiRsYW5nWydtc2dfdXNlcmFkZGVkJ10gPSAnTmV3IHVzZXIgYWRkZWQgc3VjY2Vzc2Z1bGx5JzsKJGxhbmdbJ21zZ191c2VybW9kaWZpZWQnXSA9ICdVc2VyIGRldGFpbHMgaGF2ZSBiZWVuIHVwZGF0ZWQnOwokbGFuZ1snZXJyb3JfZmxkdmFsbGVuZ3RoJ10gPSAnVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgJXMgdG9vIGxvbmcnOwokbGFuZ1sndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyAtIE1BTVMnOwokbGFuZ1snZGVzY19hZG1pbm5hdl9zZXR0aW5ncyddID0gJ1NldHRpbmdzIGZvciB0aGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSc7CiRsYW5nWyd0cGx0eXBlX01BTVMnXSA9ICdNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUnOwokbGFuZ1sndHBsdHlwZV9sb2dpbl9mb3JtJ10gPSAnTG9naW4gRm9ybSc7CiRsYW5nWyd0cGx0eXBlX2xvZ291dF9mb3JtJ10gPSAnTG9nb3V0IEZvcm0nOwokbGFuZ1sncHJvbXB0X2ZvciddID0gJ0Zvcic7CiRsYW5nWydwcm9tcHRfZm9yY2VfY2hzZXR0aW5ncyddID0gJ0ZvcmNlIHRoZSB1c2VyIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUgbmV4dCBsb2dpbic7CiRsYW5nWydwcm9tcHRfZm9yY2VfcmV2YWxpZGF0ZSddID0gJ1RoaXMgdXNlciBtdXN0IHZhbGlkYXRlIHRoZW1lc2VsdmVzIGFmdGVyIHRoZSBuZXh0IGxvZ2luJzsKJGxhbmdbJ01BTVNcXFByb3RlY3RlZFNlY3Rpb25IZWFkJ10gPSAnTUFNUyBQcm90ZWN0ZWQgU2VjdGlvbkhlYWRlcic7CiRsYW5nWydNQU1TX1Byb3RlY3RlZFNlY3Rpb25IZWFkJ10gPSAnTUFNUyBQcm90ZWN0ZWQgU2VjdGlvbkhlYWRlcic7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhZCddID0gJ01BTVMgUHJvdGVjdGVkIFNlY3Rpb25IZWFkZXInOwokbGFuZ1snZXJyb3JfbG9zdHVuX2JhZHBhc3N3b3JkJ10gPSAnU29ycnkuLi4gYnV0IHRoZSBwYXNzd29yZCB5b3UgcHJvdmlkZWQgaXMgaW5jb3JyZWN0Lic7CiRsYW5nWydlcnJvcl9sb3N0dW5fdXNlcm5vdGZvdW5kJ10gPSAnU29ycnkuLi4gZ2l2ZW4gdGhlIGluZm9ybWF0aW9uIHlvdSBwcm92aWRlZC4uLiB3ZSBjb3VsZCBub3QgZmluZCB5b3VyIHVzZXIgYWNjb3VudCc7CiRsYW5nWydlcnJvcl9sb3N0dW5fbm9kYXRhJ10gPSAnWW91IGRpZCBub3QgZW50ZXIgc3VmZmljaWVudCBkYXRhIGludG8gdGhlIGxvc3QgdXNlcm5hbWUgZm9ybSBmb3IgdXMgdG8gYmUgYWJsZSB0byBmaW5kIHlvdXIgYWNjb3VudCBpbiBvdXIgZGF0YWJhc2UuJzsKJGxhbmdbJ2luZm9fbG9zdHVuX3RleHRmaWVsZCddID0gJ0lmIHlvdSBjYW4gcmVjYWxsIGEgcG9ydGlvbiBvZiB0aGUgdGV4dCBmb3IgdGhpcyBmaWVsZCBwbGVhc2UgZW50ZXIgaXQgaGVyZSAobWluaW11bSBvZiA0IGNoYXJhY3RlcnMgbm90IGluY2x1ZGluZyB3aGl0ZXNwYWNlKSc7CiRsYW5nWydpbmZvX2xvc3R1bl90ZXh0YXJlYSddID0gJ0lmIHlvdSBjYW4gcmVjYWxsIHNvbWUgb2YgdGhlIHRleHQgeW91IG1heSBoYXZlIGVudGVyZWQgaW4gdGhpcyBmaWVsZCwgcGxlYXNlIGVudGVyIGEgcG9ydGlvbiBvZiBpdCBoZXJlLiAgVGhpcyB3aWxsIGNyZWF0ZSBhIHN1YnN0cmluZyBzZWFyY2guICBZb3UgbXVzdCBlbnRlciBhdCBsZWFzdCA0IGNoYXJhY3RlcnMuJzsKJGxhbmdbJ2luZm9fbG9zdHVuX2VtYWlsJ10gPSAnSWYgdGhlcmUgYXJlIG11bHRpcGxlIGVtYWlsIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggeW91ciBhY2NvdW50LCB0cnkgdG8gZW50ZXIgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaGVyZS4gIFRoaXMgY2FuIGFpZGUgaW4gdW5pcXVlbHkgaWRlbnRpZnlpbmcgeW91JzsKJGxhbmdbJ2luZm9fbG9zdHVzZXJuYW1lJ10gPSAnPHA+U28uLi4geW91IHNlZW0gdG8gaGF2ZSBmb3Jnb3R0ZW4gb3IgbG9zdCB0aGUgdXNlcm5hbWUgb3IgZW1haWwgYWRkcmVzcyB5b3UgdXNlZCB0byBsb2dpbiB0byB0aGlzIGFjY291bnQgd2l0aC4gIERvblwndCBGcmV0LCB3ZSBjYW4gaGVscC48L3A+PHA+RW50ZXIgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSBpbnRvIHRoaXMgZm9ybSwgYW5kIHdlIHdpbGwgc2VlIGlmIHdlIGNhbiB1bmlxdWVseSBpZGVudGlmeSB5b3UgYW5kIGZpbmQgeW91IHlvdXIgbG9naW4gbmFtZS48L3A+JzsKJGxhbmdbJ2Vycm9yX3NlY3VyaXR5J10gPSAnSW52YWxpZCBmb3JtIHN1Ym1pc3Npb24gKHNvbWUgc2VjdXJpdHkgZGF0YSBpcyBtaXNzaW5nIG9yIGludmFsaWQpLic7CiRsYW5nWydlcnJvcl9kZWxldGVwcm9wJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgZGVsZXRpbmcgdGhlIHByb3BlcnR5JzsKJGxhbmdbJ2Vycm9yX2FjdGlvbl9ub3Rjb25maXJtZWQnXSA9ICdPb3BzLiAgSXQgbG9va3MgbGlrZSB5b3UgZmFpbGVkIHRvIGNvbmZpcm0gYW4gaW1wb3J0YW50IGFjdGlvbi4nOwokbGFuZ1snbXNnX2NvbmZpcm1fZGVsZXRlcHJvcCddID0gJ1lvdSBtdXN0IHNlbGVjdCAmcXVvdDtZZXMmcXVvdDsgaW4gdGhlIGNvbmZpcm1hdGlvbiBib3ggdG8gY29uZmlybSB0aGF0IHlvdSB3aXNoIHRvIGRlbGV0ZSB0aGlzIHByb3BlcnR5Lic7CiRsYW5nWydwcm9tcHRfY29uZmlybV9kZWxldGVwcm9wJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByb3BlcnR5Pyc7CiRsYW5nWyd3YXJuX2RlbGV0ZXByb3AnXSA9ICc8c3Ryb25nPlVzZSBDYXV0aW9uPC9zdHJvbmc+IERlbGV0aW5nIGEgcHJvcGVydHkgd2lsbCBkZWxldGUgYW55IGRhdGEgYXNzb2NpYXRlZCB3aXRoIGFueSB1c2VycyBmb3IgdGhpcyBwcm9wZXJ0eS4gIEl0IHdpbGwgYWxzbyByZW1vdmUgdGhpcyBwcm9wZXJ0eSBmcm9tIGFsbCBncm91cCByZWxhdGlvbnMuJzsKJGxhbmdbJ2hkcl9kZWxldGVwcm9wJ10gPSAnRGVsZXRlIFByb3BlcnR5JzsKJGxhbmdbJ21zZ19jYW5jZWxsZWQnXSA9ICdPcGVyYXRpb24gY2FuY2VsbGVkJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZV9wcm9wZGVmbiddID0gJ1NvcnJ5LCBidXQgdGhpcyBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVsZXRlZC4gIEFzIGl0IGlzIGFzc29jaWF0ZWQgYXMgcmVxdWlyZWQsIG9yIGhpZGRlbiB3aXRoIG9uZSBvciBtb3JlIHVzZXIgZ3JvdXBzLiAgT25seSBvcHRpb25hbC9vZmYgcHJvcGVydGllcyBjYW4gYmUgZGVsZXRlZC4nOwokbGFuZ1sndGl0bGVfYWRkX3VzZXInXSA9ICdDcmVhdGUgYSBuZXcgdXNlciBhY2NvdW50JzsKJGxhbmdbJ2luZm9fcGFzc3dvcmRfcmVzZXQnXSA9ICdZb3VyIHBhc3N3b3JkIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiByZXNldC4gIFBsZWFzZSBsb2dpbiB0byBjb250aW51ZS4nOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRub3RjaGFuZ2VkJ10gPSAnUGxlYXNlIGVuc3VyZSB5b3UgY2hhbmdlIHlvdXIgcGFzc3dvcmQgdG8gYSBuZXcgdmFsdWUsIGFuZCB2ZXJpZnkgdGhhdCBpdCBpcyBjb3JyZWN0Lic7CiRsYW5nWydtc2dfZm9yY2VfbmV3cHcnXSA9ICdXZWxjb21lIHRvIHRoZSBzeXN0ZW0uICBGb3Igc2VjdXJpdHkgcHVycG9zZXMsIHBsZWFzZSBzcGVjaWZ5IGEgbmV3IHBhc3N3b3JkLic7CiRsYW5nWydsYmxfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2ZvcmNlX25ld3B3X3RlbXBsYXRlJ10gPSAnVGhpcyB0ZW1wbGF0ZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGZvcm0gdG8gZm9yY2UgdGhlIHVzZXIgdG8gY2hhbmdlIGhpcyBwYXNzd29yZC4nOwokbGFuZ1snZm9yY2VfbmV3cHdfdGVtcGxhdGUnXSA9ICdGb3JjZSBOZXcgUGFzc3dvcmQgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2ZvcmNlX25ld3B3J10gPSAnRm9yY2UgdGhpcyB1c2VyIHRvIHJlc2V0IGhpcyBwYXNzd29yZCBhdCB0aGUgbmV4dCBsb2dpbic7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWQnXSA9ICdJcyB0aGlzIGFjY291bnQgZGlzYWJsZWQ/JzsKJGxhbmdbJ21zZ191c2VyX3N0YXRlX2NoYW5nZWQnXSA9ICdVc2VyIHN0YXRlIGNoYW5nZWQnOwokbGFuZ1snaW5mb19kaXNhYmxlZCddID0gJ1RoaXMgdXNlciBhY2NvdW50IGlzIGRpc2FibGVkLCBwcmV2ZW50aW5nIGxvZ2luJzsKJGxhbmdbJ2VuYWJsZV91c2VyJ10gPSAnRW5hYmxlIHRoaXMgdXNlciBhY2NvdW50JzsKJGxhbmdbJ2Rpc2FibGVfdXNlciddID0gJ0Rpc2FibGUgdGhpcyB1c2VyIGFjY291bnQgYW5kIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQnOwokbGFuZ1snZXJyb3JfYWNjb3VudGRpc2FibGVkJ10gPSAnV2UgYXJlIHNvcnJ5LCBidXQgdGhpcyBhY2NvdW50IGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGRpc2FibGVkLiAgUGxlYXNlIGNvbnRhY3Qgc2l0ZSBhZG1pbmlzdHJhdG9ycyB0byByZXNvbHZlIHRoaXMgaXNzdWUnOwokbGFuZ1sndGl0bGVfZm9yZ290cHcnXSA9ICdGb3Jnb3R0ZW4gUGFzc3dvcmQnOwokbGFuZ1sndmVyaWZ5X2lkZW50aXR5J10gPSAnVmVyaWZ5IHlvdXIgaWRlbnRpdHknOwokbGFuZ1snNDAzZXJyb3InXSA9ICdHZW5lcmF0ZSBhIDQwMyBFcnJvcic7CiRsYW5nWydwcm9tcHRfZW5oYW5jZWRwdyddID0gJ1JlcXVpcmUgYSBzdHJvbmcgcGFzc3dvcmQnOwokbGFuZ1snaW5mb19lbmhhbmNlZHB3J10gPSAnSWYgZW5hYmxlZCwgcGFzc3dvcmRzIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGFscGhhYmV0aWMgY2hhcmFjdGVyIGFuZCBvbmUgZGlnaXQuJzsKJGxhbmdbJ3Byb21wdF9wd3JlcXVpcmVkY2hhcnMnXSA9ICdSZXF1aXJlIG9uZSBvZiB0aGVzZSBjaGFyYWN0ZXJzIGluIHRoZSBwYXNzd29yZCc7CiRsYW5nWydpbmZvX3B3cmVxdWlyZWRjaGFycyddID0gJ0lmIG5vbiBlbXB0eSwgYW5kIHN0cm9uZyBwYXNzd29yZHMgYXJlIGVuYWJsZWQsIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlcnMgd2lsbCBiZSByZXF1aXJlZCBpbiB0aGUgcGFzc3dvcmQgaW4gYWRkaXRpb24gdG8gdGhlIHN0cm9uZyBwYXNzd29yZCByZXF1aXJlbWVudHMuJzsKJGxhbmdbJ2Vycm9yX2NhbnRzZXRwcm9wZXJ0eXR5cGUnXSA9ICdDYW5ub3Qgc2V0IHByb3BlcnR5IG9mIHRoaXMgdHlwZSc7CiRsYW5nWydpbmZvX2ltcG9ydF9mb3JtYXQnXSA9ICc8cD5Gb3IgaW5mb3JtYXRpb24gb24gdGhlIGltcG9ydCBmb3JtYXQgeW91IHNob3VsZCBjcmVhdGUgYSBzYW1wbGUgdXNlciAob3IgdHdvKSBpbiB0aGUgZGVzaXJlZCBncm91cHMgYW5kIGV4cG9ydCB0aGF0IGluZm9ybWF0aW9uLiAgVGhlIHJlc3VsdGluZyBmaWxlIGNhbiB0aGVuIGJlIHVzZWQgYXMgYSB0ZW1wbGF0ZSBmb3IgZnVydGhlciBpbXBvcnRzPC9wPjxici8+CiA8cD5BZGRpdGlvbmFsbHksIGEgdHh0cGFzc3dvcmQgY29sdW1uIGNhbiBiZSBhZGRlZCB0byB0aGUgaW1wb3J0IGZpbGUgdG8gZGVmaW5lIChpbiBwbGFpbiB0ZXh0KSB0aGUgcGFzc3dvcmQgZm9yIHVzZXJzLiAgSWYgdGhlIHR4dHBhc3N3b3JkIGNvbHVtbiBpcyBlbXB0eSBmb3IgYW4gZXhpc3RpbmcgdXNlciBoaXMgcGFzc3dvcmQgaXMgbm90IHRvdWNoZWQuICBJZiB0aGlzIGNvbHVtbiBpcyBlbXB0eSBmb3IgYSBuZXcgdXNlciwgb3Igbm90IHByb3ZpZGVkIGF0IGFsbCB0aGUgaGFyZGNvZGVkIHBhc3N3b3JkICZxdW90O2NoYW5nZW1lJnF1b3Q7IGlzIHVzZWQuJzsKJGxhbmdbJ2ltcG9ydF9kZWxldGVkdXNlciddID0gJ0RlbGV0ZWQgdXNlciAlcyc7CiRsYW5nWydlcnJvcl9leHBvcnRfbm91c2VycyddID0gJ05vIHVzZXJzIGZvdW5kIHRvIGV4cG9ydCc7CiRsYW5nWydwcm9tcHRfZXhwb3J0X3VzZXJzJ10gPSAnRXhwb3J0IFVzZXJzJzsKJGxhbmdbJ3RpdGxlX2V4cG9ydF91c2VycyddID0gJ0V4cG9ydCBVc2VycyB0byBhbiBBU0NJSSBmaWxlJzsKJGxhbmdbJ2luZm9fZW5jcnlwdCddID0gJ0VuY3J5cHRlZCBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBleHBvcnRlZCB0byBBU0NJSSBvciB2aWV3ZWQgYnkgYW4gYWRtaW5pc3RyYXRvci4gIFRoZXkgY2FuIG9ubHkgYmUgZWRpdGVkIGJ5IHRoZSBhdXRob3JpemVkIHVzZXInOwokbGFuZ1snZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJ10gPSAnSW52YWxpZCwgb3IgZW1wdHkgZ3JvdXAgbmFtZSBzcGVjaWZpZWQnOwokbGFuZ1snZXJyb3JfaW1wb3J0X2NvbHVtbmNvdW50J10gPSAnSW5jb3JyZWN0IGNvbHVtbiBjb3VudCc7CiRsYW5nWydwcm9tcHRfZGVsaW1pdGVyJ10gPSAnRGVsaW1pdGVyJzsKJGxhbmdbJ2Vycm9yX2NyZWF0ZXRtcGZpbGUnXSA9ICdQcm9ibGVtIGNyZWF0aW5nIHRlbXBvcmFyeSBmaWxlJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVfdXNlcnMnXSA9ICdEZWxldGUgZXh0cmEgdXNlcnMnOwokbGFuZ1snaW5mb19pbXBvcnRfZGVsZXRlX3VzZXJzJ10gPSAnSWYgZW5hYmxlZCwgYW5kIG9ubHkgPHN0cm9uZz5vbmUgdXNlciBncm91cDwvc3Ryb25nPiBpcyBtZW50aW9uZWQgaW4gdGhlIGltcG9ydCBmaWxlLCB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoYXQgdXNlciBncm91cCBidXQgbm90IG1lbnRpb25lZCBpbiB0aGUgaW1wb3J0IGZpbGUsIHdpbGwgYmUgZGVsZXRlZC4gIENhdXRpb24gc2hvdWxkIGJlIHVzZWQgaGVyZSwgYXMgbm8gY2hlY2tzIGFyZSBkb25lIHRvIHNlZSBpZiB0aGUgZGVsZXRlZCB1c2VycyBhcmUgbWVtYmVycyBvZiBhbnkgb3RoZXIgZ3JvdXBzLic7CiRsYW5nWyd0aXRsZV9pbXBvcnRfdXNlcnMnXSA9ICdJbXBvcnQgdXNlcnMgZnJvbSBhIENTViB0eXBlIGZpbGUnOwokbGFuZ1snZnJvbnRlbmRfYWNjZXNzJ10gPSAnVmlld2Vycyc7CiRsYW5nWydlcnJvcl9sb3N0dW5fbm9jb250cm9scyddID0gJ0Nhbm5vdCBkaXNwbGF5IGxvc3R1c2VybmFtZSBmb3JtLi4uIG5vIHN1aXRhYmxlIGZpZWxkcyBmb3VuZCB0byBkaXNwbGF5JzsKJGxhbmdbJ2luZm9fZmlsdGVyX3NvcnRieSddID0gJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQ29sdW1uIHNvcnRpbmcgd2lsbCBwcm92aWRlIGFkZGl0aW9uYWwgc29ydGluZyBvbiBtYXRjaGVkIGVsZW1lbnRzJzsKJGxhbmdbJ2FueSddID0gJ0FueSc7CiRsYW5nWydzb3J0YnlfdXNlcm5hbWVfYXNjJ10gPSAnVXNlcm5hbWUgKGFzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X3VzZXJuYW1lX2Rlc2MnXSA9ICdVc2VybmFtZSAoZGVzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2NyZWF0ZV9hc2MnXSA9ICdDcmVhdGUgRGF0ZSAoYXNjZW5kaW5nKSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2Rlc2MnXSA9ICdDcmVhdGUgRGF0ZSAoZGVzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfYXNjJ10gPSAnRXhwaXJ5IERhdGUgKGFzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfZGVzYyddID0gJ0V4cGlyeSBEYXRlIChkZXNjZW5kaW5nKSc7CiRsYW5nWydpbXBvcnRfZnJvbV9mZXUnXSA9ICdJbXBvcnQgRnJvbSBGcm9udCBFbmQgVXNlcnMnOwokbGFuZ1snaW5mb19pbXBvcnRfZnJvbV9mZXUnXSA9ICdGcm9udCBFbmQgVXNlcnMgbW9kdWxlIGhhcyBiZWVuIGRldGVjdGVkLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiB0cnkgdG8gaW1wb3J0IGRhdGEgZnJvbSBpdC4gQWxsIGRhdGEgZXhjZXB0IGZvciB0ZW1wbGF0ZXMgYW5kIGJhY2tlbmQgcGVybWlzc2lvbnMgd2lsbCBiZSBjb3BpZWQuIEluIGNhc2Ugb2YgZXJyb3IgTUFNUyB3aWxsIHRyeSB0byByZXN0b3JlIGl0cyBwcmV2aW91cyBkYiB0YWJsZXMuJzsKJGxhbmdbJ2NvbmZpcm1faW1wb3J0X2Zyb21fZmV1J10gPSAnQXJlIHlvdSBzdXJlPyBUaGlzIGFjdGlvbiBtYXkgZGVsZXRlIGN1cnJlbnQgTUFNUyB0YWJsZSByZWNvcmRzISc7CiRsYW5nWydpbXBvcnQnXSA9ICdJbXBvcnQnOwoKJGxhbmdbJ2luZm9fZW5jcnlwdGVkJ10gPSAnRW5jcnlwdGVkIHByb3BlcnRpZXMgY2FuIG9ubHkgYmUgc2VlbiBhbmQgZWRpdGVkIGJ5IHRoZSB1c2VyLiAgTm90IGV2ZW4gdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBjYW4gc2VlIG9yIG1hbmFnZSB0aGlzIGRhdGEuJzsKJGxhbmdbJ2VuY3J5cHRlZCddID0gJ0VuY3J5cHRlZCc7CiRsYW5nWydpbmZvX2Nvb2tpZW5hbWUnXSA9ICdJZiBzZXQsIHRoZSAmcXVvdDtyZW1lbWJlciBtZSZxdW90OyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgZW5hYmxlZC4gIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgY29va2llIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LCBidXQgbGFzdHMgdXAgdG8gc2l4dHkgZGF5cy4gIFRvIGludmFsaWRhdGUgYWxsIGV4aXN0aW5nIHJlbWVtYmVybWUgY29va2llcywgY2hhbmdlIHRoaXMgY29va2llIG5hbWUuICBUbyBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSwgeW91IHNob3VsZCBjbGVhciB0aGUgY29va2llbmFtZSwgYW5kIHBvc3NpYmx5IGNoYW5nZSB5b3VyIGxvZ2luIHRlbXBsYXRlLic7CiRsYW5nWydtc2dfdXNlcm5hbWVfcmVhZG9ubHknXSA9ICdUaGUgYXV0aGVudGljYXRpb24gY29uc3VtZXIgZG9lcyBub3QgcGVybWl0IGNoYW5naW5nIHRoZSB1c2VybmFtZSBmb3IgdGhpcyBhY2NvdW50JzsKJGxhbmdbJ21zZ19wYXNzd29yZF9yZWFkb25seSddID0gJ1RoZSBhdXRoZW50aWNhdGlvbiBjb25zdW1lciBkb2VzIG5vdCBwZXJtaXQgY2hhbmdpbmcgdGhlIHBhc3N3b3JkIGZvciB0aGlzIGFjY291bnQnOwokbGFuZ1sncHJvbXB0X25vcm1hbGxvZ2luJ10gPSAnU2lnbiBJbic7CiRsYW5nWydtb3ZlX3VwJ10gPSAnTW92ZSBVcCc7CiRsYW5nWydtb3ZlX2Rvd24nXSA9ICdNb3ZlIERvd24nOwokbGFuZ1sndGl0bGVfcHJvcG1vZHVsZSddID0gJ1RoaXMgcHJvcGVydHkgaXMgY3JlYXRlZCBieSBhIG1vZHVsZSwgYW5kIGNhbm5vdCBiZSBlZGl0ZWQnOwokbGFuZ1snbm90X2F2YWlsYWJsZSddID0gJ05vdCBBdmFpbGFibGUnOwokbGFuZ1sncHJvbXB0X2RmbHRfY2hlY2tlZCddID0gJ0J5IGRlZmF1bHQsIHRoaXMgZmllbGQgc2hvdWxkIGJlIGNoZWNrZWQnOwokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlZCddID0gJ09wZXJhdGlvbiBDb21wbGV0ZWQnOwokbGFuZ1snbWVtYmVycyddID0gJ01lbWJlcnMnOwokbGFuZ1sndmlld19maWx0ZXInXSA9ICdWaWV3IEZpbHRlcic7CiRsYW5nWydkYXRhJ10gPSAnRGF0YSc7CiRsYW5nWydhcHBsaWVkJ10gPSAnQXBwbGllZCc7CiRsYW5nWydmaXJzdHBhZ2UnXSA9ICcmbHQ7Jmx0Oyc7CiRsYW5nWydwcmV2cGFnZSddID0gJyZsdDsnOwokbGFuZ1snbmV4dHBhZ2UnXSA9ICcmZ3Q7JzsKJGxhbmdbJ2xhc3RwYWdlJ10gPSAnJmd0OyZndDsnOwokbGFuZ1sncGFnZSddID0gJ1BhZ2UnOwokbGFuZ1sncHJvbXB0X2FsbG93X2NoYW5nZXVzZXJuYW1lJ10gPSAnQWxsb3cgQ2hhbmdpbmcgVXNlcm5hbWUnOwokbGFuZ1snaW5mb19hbGxvd19jaGFuZ2V1c2VybmFtZSddID0gJ0lmIGVuYWJsZWQgdXNlcnMgd2lsbCBiZSBwZXJtaXR0ZWQgdG8gY2hhbmdlIHRoZWlyIHVzZXJuYW1lIGFsb25nIHdpdGggb3RoZXIgc2V0dGluZ3MnOwokbGFuZ1sndGVtcGxhdGVfc2F2ZWQnXSA9ICdUZW1wbGF0ZSBzYXZlZCc7CiRsYW5nWyd0ZW1wbGF0ZV9yZXNldGRlZmF1bHRzJ10gPSAnVGVtcGxhdGUgcmVzZXQgdG8gZGVmYXVsdHMnOwokbGFuZ1snbGJsX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWydlbmFibGVfY2FwdGNoYSddID0gJ0VuYWJsZSBjYXB0Y2hhIG9uIHRoZSBsb2dpbiBmb3JtJzsKJGxhbmdbJ2luZm9fZW5hYmxlX2NhcHRjaGEnXSA9ICdJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluLCBhbmQgdGhlIG1vZHVsZSBwcmVmZXJlbmNlIHN0YXRlcyB0byBkaXNwbGF5IHRoZSBsb2dpbiBmb3JtLCB0aGlzIG9wdGlvbiBjb250cm9scyB3ZXRoZXIgYSBjYXB0Y2hhIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBsb2dpbiBzY3JlZW4uICBJZiBjYXB0Y2hhIGlzIGF2YWlsYWJsZSc7CiRsYW5nWydwYWdldHlwZV91bmF1dGhvcml6ZWQnXSA9ICdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHZpZXcgdGhpcyBjb250ZW50JzsKJGxhbmdbJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0J10gPSAnU3BlY2lmeSBhIGxpc3Qgb2YgTUFNUyBncm91cHMgdGhhdCBtYXkgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwYWdlLiAgU2VsZWN0aW5nIG5vIGdyb3VwcyB3aWxsIGFsbG93IGFueSB1c2VyIGxvZ2dlZCBpbiB0byBNQU1TIHRvIHZpZXcgdGhlIHBhZ2UnOwokbGFuZ1sncGFnZXR5cGVfc2V0dGluZ3MnXSA9ICdQcm90ZWN0ZWQgUGFnZSBTZXR0aW5ncyc7CiRsYW5nWydwYWdldHlwZV9ncm91cHMnXSA9ICdBbGxvd2VkIEdyb3Vwcyc7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX2dyb3VwcyddID0gJ1NlbGVjdCB0aGUgZ3JvdXBzIHRoYXQgYXJlIChieSBkZWZhdWx0KSBhbGxvd2VkIHRvIHZpZXcgcHJvdGVjdGVkIHBhZ2VzLiAgQW4gZWRpdG9yIHdpdGggdGhlICZxdW90O01hbmFnZSBBbGwgQ29udGVudCZxdW90OyBwZXJtaXNzaW9uIGNhbiBvdmVycmlkZSB0aGlzIGZvciBlYWNoIHBhZ2UnOwokbGFuZ1sncGFnZXR5cGVfYWN0aW9uJ10gPSAnQWN0aW9uIGZvciBpbnN1ZmZpY2llbnQgYWNjZXNzJzsKJGxhbmdbJ2luZm9fcGFnZXR5cGVfYWN0aW9uJ10gPSAnU3BlY2lmeSB0aGUgYmVoYXZpb3IgZm9yIHBlb3BsZSBhY2Nlc3NpbmcgdGhpcyBwYWdlIHdpdGhvdXQgc3VmZmljaWVudCBwZXJtaXNzaW9uLiAgWW91IGNhbiBlaXRoZXIgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSwgb3IgZGlzcGxheSB0aGUgbG9naW4gZm9ybSc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnU2hvdyB0aGUgTG9naW4gRm9ybSc7CiRsYW5nWydyZWRpcmVjdCddID0gJ1JlZGlyZWN0IHRvIGEgUGFnZSc7CiRsYW5nWydwYWdldHlwZV9yZWRpcmVjdHRvJ10gPSAnUmVkaXJlY3QgVG8nOwokbGFuZ1snaW5mb19wYWdldHlwZV9yZWRpcmVjdHRvJ10gPSAnU3BlY2lmeSB0aGUgcGFnZSB0byByZWRpcmVjdCB0by4gIElmIHlvdSBzZWxlY3Qgbm9uZSwgYW5kIHRoZSBhY3Rpb24gaXMgc2V0IHRvICZxdW90O3JlZGlyZWN0JnF1b3Q7IHRoZSB1c2VyIHdpbGwgYmUgcHJlc2VudGVkIHdpdGggYSBtZXNzYWdlIGluZGljYXRpbmcgdGhhdCB0aGV5IGRvIG5vdCBoYWNlIGFjY2VzcyB0byB0aGUgcGFnZSc7CiRsYW5nWydwZXJtaXNzaW9ucyddID0gJ1Blcm1pc3Npb25zJzsKJGxhbmdbJ01BTVNcXFByb3RlY3RlZFBhZ2UnXSA9ICdNQU1TIFByb3RlY3RlZCBDb250ZW50JzsKJGxhbmdbJ21hbXNfcHJvdGVjdGVkX3BhZ2UnXSA9ICdNQU1TIFByb3RlY3RlZCBDb250ZW50JzsKJGxhbmdbJ3Byb21wdF92aWV3cHJvcHMnXSA9ICdTZWxlY3QgQWRkaXRpb25hbCBQcm9wZXJ0aWVzIHRvIFZpZXcnOwokbGFuZ1sndmlldyddID0gJ1ZpZXcnOwokbGFuZ1snaW5mb19pZ25vcmVfdXNlcmlkJ10gPSAnSWYgY2hlY2tlZCB0aGUgaW1wb3J0IHJvdXRpbmUgd2lsbCBhdHRlbXB0IHRvIGFkZCB1c2VycyBpbmRlcGVuZGFudCBvZiB0aGUgdXNlcmlkIGNvbHVtbi4gIElmIGEgdXNlciB3aXRoIHRoZSBuYW1lIHNwZWNpZmllZCBpbiB0aGUgaW1wb3J0IGZpbGUgYWxyZWFkeSBleGlzdHMsIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkJzsKJGxhbmdbJ2lnbm9yZV91c2VyaWQnXSA9ICdJZ25vcmUgVXNlcklEIENvbHVtbiBvbiBJbXBvcnQnOwokbGFuZ1snZXhwb3J0X3Bhc3NoYXNoJ10gPSAnRXhwb3J0IHRoZSBwYXNzd29yZCBoYXNoIHRvIHRoZSBmaWxlJzsKJGxhbmdbJ2luZm9fZXhwb3J0X3Bhc3NoYXNoJ10gPSAnVGhlIHBhc3N3b3JkIGhhc2ggaXMgb25seSB1c2VmdWwgaWYgdGhlIHBhc3N3b3JkIHNhbHQgb24gdGhlIGltcG9ydCBob3N0IGlzIGlkZW50aWNhbCB0byB0aGF0IG9mIHRoZSBleHBvcnQgaG9zdCc7CiRsYW5nWydlcnJvcl9hZGp1c3RzYWx0J10gPSAnVGhlIHBhc3N3b3JkIHNhbHQgY2Fubm90IGJlIGFkanVzdGVkJzsKJGxhbmdbJ3Byb21wdF9wd3NhbHQnXSA9ICdQYXNzd29yZCBTYWx0JzsKJGxhbmdbJ2luZm9fcHdzYWx0J10gPSAnTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIHNhbHRzIGFsbCBwYXNzd29yZHMgd2l0aCB0aGlzIGtleSB3aGljaCBpcyBjcmVhdGVkIHVwb24gaW5zdGFsbC4gIE9uY2UgdXNlcnMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSB0aGUgc2FsdCBjYW5ub3QgYmUgY2hhbmdlZC4gVGhlIHNhbHQgbWF5IGJlIGVtcHR5IGZvciBvbGRlciBpbnN0YWxscy4nOwokbGFuZ1snYWR2YW5jZWRfc2V0dGluZ3MnXSA9ICdBZHZhbmNlZCBTZXR0aW5ncyc7CiRsYW5nWydpbmZvX3Nlc3Npb250aW1lb3V0J10gPSAnU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIGFuIGluYWN0aXZlIHVzZXIgaXMgYXV0b21hdGljYWxseSBsb2dnZWQgb3V0IG9mIHRoZSB3ZWJzaXRlJzsKJGxhbmdbJ3Byb21wdF9leHBpcmV1c2Vyc19pbnRlcnZhbCddID0gJ1VzZXIgRXhwaXJ5IEludGVydmFsJzsKJGxhbmdbJ2luZm9fZXhwaXJldXNlcnNfaW50ZXJ2YWwnXSA9ICdTcGVjaWZ5IGEgdmFsdWUgKGluIHNlY29uZHMpIHRoYXQgaW5kaWNhdGVzIGhvdyBvZnRlbiB0aGUgc3lzdGVtIHNob3VsZCBmb3JjZSB1c2VycyB3aG9zIHNlc3Npb24gaGFzIGV4cGlyZWQgdG8gYmUgbG9nZ2VkIG91dC4gIFQiaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBzYXZlIGRhdGFiYXNlIHF1ZXJpZXMuICBJZiBsZWZ0IGVtcHR5IG9yIHNldCB0byAwIGV4cGlyeSB3aWxsIGJlIHBlcmZvcm1lZCBvbiBldmVyeSByZXF1ZXN0Lic7CiRsYW5nWydtc2dfc2V0dGluZ3NjaGFuZ2VkJ10gPSAnWW91ciBzZXR0aW5ncyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkJzsKJGxhbmdbJ2ZvcmNlZGxvZ291dHRhc2tfZGVzYyddID0gJ0ZvcmNlIHVzZXJzIHRvIGxvZ291dCBhdCByZWd1bGFyIGludGVydmFscyc7CiRsYW5nWydwcm9tcHRfZm9yY2Vsb2dvdXRfdGltZXMnXSA9ICdUaW1lcyBmb3IgZm9yY2VkIGxvZ291dCc7CiRsYW5nWydpbmZvX2ZvcmNlbG9nb3V0X3RpbWVzJ10gPSAnU3BlY2lmeSBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHRpbWVzIGxpa2UgSEg6TU0sSEg6TU0gd2hlcmUgdXNlcnMgd2lsbCBiZSBmb3JjaWJseSBsb2dnZWQgb3V0LiBOb3RlLCB0aGlzIHVzZXMgdGhlIHBzdWVkb2Nyb24gbWVjaGFuaXNtIHNvIHlvdSBtdXN0IGJlIHN1cmUgdGhhdCB0aGUgdGltZXMgZW50ZXJlZCBoZXJlIHdpbGwgY29pbmNpZGUgcmVhc29uYWJseSB3aXRoIHlvdXIgJnF1b3Q7cHNldWRvY3JvbiBncmFudWxhcml0eSZxdW90OyBhbmQgdGhhdCBzdWZmaWNpZW50IHJlcXVlc3RzIHdpbGwgb2NjdXIgdG8geW91ciB3ZWJzaXRlIHRvIGVuc3VyZSB0aGF0IHBzZXVkb2Nyb24gaXMgZXhlY3V0ZWQuJzsKJGxhbmdbJ3Byb21wdF9mb3JjZWxvZ291dF9zZXNzaW9uYWdlJ10gPSAnRXhjbHVkZSB1c2VycyB0aGF0IGhhdmUgYmVlbiBhY3RpdmUgaW4gPGVtPihtaW51dGVzKTwvZW0+JzsKJGxhbmdbJ2luZm9fZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZSddID0gJ0lmIHNwZWNpZmllZCwgYW55IHVzZXJzIHRoYXQgaGF2ZSBiZWVuIGFjdGl2ZSBpbiB0aGlzIG51bWJlciBvZiBzZWNvbmRzIHdpbGwgbm90IGJlIGZvcmNpYmx5IGxvZ2dlZCBvdXQnOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGUnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSB1c2VyICVzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlZXh0ZW5zaW9uJ10gPSAnVGhlIHVwbG9hZGVkIGZpbGUgZG9lcyBub3QgbWF0Y2ggdGhlIGxpc3Qgb2YgYWxsb3dlZCBmaWxlIHR5cGVzJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBbGwgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIE1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBtb2R1bGUgaGFzIGJlZW4gZGVsZXRlZCc7CiRsYW5nWydpbmZvX2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nXSA9ICdJZiBlbmFibGVkLCB0aGlzIG1vZHVsZSB3aWxsIGxpc3RlbiB0byBldmVudHMgZnJvbSB0aGUgRWNvbW1lcmNlIHN1aXRlLiAgVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBvbmx5IGhhdmUgZWZmZWN0IGlmIHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLic7CiRsYW5nWydwcm9tcHRfZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbiddID0gJ0xpc3RlbiB0byBPcmRlciBFdmVudHMnOwokbGFuZ1snaW5mb19wYWlkcmVnX3NldHRpbmdzJ10gPSAnVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBvbmx5IGFwcGx5IGlmIHVzaW5nIHNlbGYgcmVnaXN0cmF0aW9uIGFuZCBhbGxvd2luZyBmb3IgcGFpZCByZWdpc3RyYXRpb24nOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwokbGFuZ1snZGVsZXRlX3VzZXInXSA9ICdEZWxldGUgVXNlcic7CiRsYW5nWydleHBpcmVfdXNlciddID0gJ0V4cGlyZSBVc2VyJzsKJGxhbmdbJ3Byb21wdF9hY3Rpb25fb3JkZXJjYW5jZWxsZWQnXSA9ICdBY3Rpb24gdG8gcGVyZm9ybSB3aGVuIGEgc3Vic2NyaXB0aW9uIG9yZGVyIGlzIGNhbmNlbGxlZCc7CiRsYW5nWydwcm9tcHRfYWN0aW9uX29yZGVyZGVsZXRlZCddID0gJ0FjdGlvbiB0byBwZXJmb3JtIHdoZW4gYSBzdWJzY3JpcHRpb24gb3JkZXIgaXMgZGVsZXRlZCc7CiRsYW5nWydlY29tbWVyY2Vfc2V0dGluZ3MnXSA9ICdFY29tbWVyY2UgU2V0dGluZ3MnOwokbGFuZ1snc2VjdXJlZmllbGRtYXJrZXInXSA9ICdTZWN1cmUgRmllbGQgTWFya2VyJzsKJGxhbmdbJ3NlY3VyZWZpZWxkY29sb3InXSA9ICdTZWN1cmUgRmllbGQgQ29sb3InOwokbGFuZ1sncHJvbXB0X2VuY3J5cHQnXSA9ICdTdG9yZSB0aGlzIGRhdGEgZW5jcnlwdGVkIGluIHRoZSBkYXRhYmFzZSc7CiRsYW5nWydlcnJvcl9ub3RzdXBwb3J0ZWQnXSA9ICdUaGUgY2hvc2VuIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGdpdmVuIHlvdXIgY3VycmVudCBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2F1ZGl0X3VzZXJfY3JlYXRlZCddID0gJ1VzZXIgYXV0b21hdGljYWxseSBjcmVhdGVkJzsKJGxhbmdbJ2luZm9fYXV0b19jcmVhdGVfdW5rbm93biddID0gJ0lmIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkIGJ5IGFuIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSBidXQgaXMgbm90IGtub3duIGluIHRoZSBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUgbW9kdWxlIHNob3VsZCBhbiBNQU1TIGFjY291bnQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5Pyc7CiRsYW5nWydwcm9tcHRfYXV0b19jcmVhdGVfdW5rbm93biddID0gJ0F1dG9tYXRpY2FsbHkgQ3JlYXRlIFVua25vd24gVXNlcnMnOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJ0Rpc3BsYXkgU2V0dGluZ3MnOwokbGFuZ1snaW5mb19zdGRfYXV0aF9zZXR0aW5ncyddID0gJ1RoZSBmb2xsb3dpbmcgc2V0dGluZ3MgYXJlIG9ubHkgYXBwbGljYWJsZSBpZiB1c2luZyB0aGUgJnF1b3Q7QnVpbHRpbiBBdXRoZW50aWNhdGlvbiZxdW90Oy4nOwokbGFuZ1snaW5mb19zdXBwb3J0X2xvc3R1biddID0gJ1NlbGVjdGluZyBObyB3aWxsIGRpc2FibGUgdGhlIGFiaWxpdHkgZm9yIGEgdXNlciB0byByZXF1ZXN0IGxvc3QgbG9naW4gaW5mb3JtYXRpb24sIGlycmVzcGVjdGl2ZSBvZiBvdGhlciBzZXR0aW5ncyc7CiRsYW5nWydpbmZvX3N1cHBvcnRfbG9zdHB3J10gPSAnU2VsZWN0aW5nIE5vIHdpbGwgZGlzYWJsZSB0aGUgYWJpbGl0eSBmb3IgYSB1c2VyIHRvIGEgcGFzc3dvcmQgcmVzZXQsIGlycmVzcGVjdGl2ZSBvZiBvdGhlciBzZXR0aW5ncyc7CiRsYW5nWydwcm9tcHRfc3VwcG9ydF9sb3N0dW4nXSA9ICdBbGxvdyB1c2VycyB0byByZXF1ZXN0IHRoZWlyIHVzZXJuYW1lJzsKJGxhbmdbJ3Byb21wdF9zdXBwb3J0X2xvc3RwdyddID0gJ0FsbG93IHVzZXJzIHRvIHJlcXVlc3QgYSBwYXNzd29yZCBjaGFuZ2UnOwokbGFuZ1snYXV0aF9zZXR0aW5ncyddID0gJ0F1dGhlbnRpY2F0aW9uIFNldHRpbmdzJzsKJGxhbmdbJ2F1dGhlbnRpY2F0aW9uJ10gPSAnQnVpbHRpbiBBdXRoZW50aWNhdGlvbic7CiRsYW5nWydhdXRoX2J1aWx0aW4nXSA9ICdNQU1TIFN0YW5kYXJkIEF1dGhlbnRpY2F0aW9uJzsKJGxhbmdbJ2F1dGhfbW9kdWxlJ10gPSAnQXV0aGVudGljYXRpb24gTW9kdWxlL01ldGhvZCc7CiRsYW5nWydpbmZvX2F1dGhfbW9kdWxlJ10gPSAnVGhlIE1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBtb2R1bGUgc3VwcG9ydHMgdXNpbmcgYWx0ZXJuYXRlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMsIHdpdGggdmFyeWluZyBjYXBhYmlsaXRpZXMuICBTb21lIGZ1bmN0aW9uYWxpdHkgd2lsbCBub3QgZnVuY3Rpb24gb3IgYmUgZGlzYWJsZWQgd2hlbiBub3QgdXNpbmcgdGhlIGJ1aWx0IGluIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCc7CiRsYW5nWydlcnJvcl91c2VyX25vbnVuaXF1ZV9maWVsZF92YWx1ZSddID0gJ1RoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICVzIGlzIGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIgdXNlcic7CiRsYW5nWyd1bmlxdWUnXSA9ICdVbmlxdWUnOwokbGFuZ1snZXJyb3Jfbm9udW5pcXVlX2ZpZWxkX3ZhbHVlJ10gPSAnVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgJXMgKCVzKSBpcyBub3QgdW5pcXVlJzsKJGxhbmdbJ3Byb21wdF9mb3JjZV91bmlxdWUnXSA9ICdGb3JjZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eSB0byBiZSB1bmlxdWUgYWNyb3NzIGFsbCB1c2VyIGFjY291bnRzJzsKJGxhbmdbJ2hlbHBfcmV0dXJudG8nXSA9ICdVc2VkIHdpdGh0IGhlIGxvZ2luIGFuZCBsb2dvdXQgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyBhIHBhZ2UgaWQgb3IgYWxpYXMgdGhhdCB0aGUgdXNlciBzaG91bGQgYmUgcmV0dXJuZWQgdG8gYWZ0ZXIgdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS4gIFRoaXMgd2lsbCBvdmVycmlkZSB0aGUgcmV0dXJubGFzdCBhbmQgdGhlIHJlZGlyZWN0aW9uIHByZWZlcmVuY2VzLic7CiRsYW5nWydoZWxwX2lubGluZSddID0gJ1VzZWQgd2l0aCB0aGUgbG9naW4gZm9ybXMvYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBmb3JtIHNob3VsZCByZXBsYWNlIGl0cyBvd24gdGFnIG9uIHRoZSBzYW1lIHBhZ2UuLi4gIHRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiByZXR1cm50bywgcmV0dXJubGFzdCwgb3Igc29tZSByZWRpcmVjdGlvbiBwcmVmZXJlbmNlcyBhcmUgc2V0IHJlc3VsdGluZyBpbiBhIHJlZGlyZWN0aW9uIHRvIGEgZGlmZmVyZW50IHBhZ2UuJzsKJGxhbmdbJ3RpdGxlX3Jlc2V0X3Nlc3Npb24nXSA9ICdMb2dpbiBTZXNzaW9uIFRpbWVvdXQgV2FybmluZyc7CiRsYW5nWydtc2dfcmVzZXRfc2Vzc2lvbiddID0gJ1lvdXIgbG9naW4gc2Vzc2lvbiBpcyBhYm91dCB0byBleHBpcmUsIHBsZWFzZSBjbGljayAiJnF1b3Q7T2smcXVvdDsgdG8gY29uZmlybSB5b3VyIGFjdGl2aXR5IG9uIHRoaXMgd2Vic2l0ZS4nOwokbGFuZ1snb2snXSA9ICdPayc7CiRsYW5nWydyZXNldHNlc3Npb25fdGVtcGxhdGUnXSA9ICdSZXNldCBTZXNzaW9uIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fbmFtZSddID0gJ1RoaXMgaXMgdGhlIGZpZWxkIG5hbWUsIHRvIGJlIHVzZWQgZm9yIGFkZHJlc3NpbmcgaW4gc21hcnR5LiAgSXQgbXVzdCBjb25zaXN0IG9mIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLic7CiRsYW5nWyd2aXNpdG9yc190YWInXSA9ICdWaXNpdG9ycyc7CiRsYW5nWydtYW1zX2dyb3Vwc19wcm9tcHQnXSA9ICdTZWxlY3Qgb25lIG9yIG1vcmUgTUFNUyBncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byB2aWV3IHRoaXMgcGFnZSc7CiRsYW5nWydlcnJvcl9tdXN0c2VsZWN0X2dyb3VwJ10gPSAnQSBncm91cCBtdXN0IGJlIHNlbGVjdGVkJzsKJGxhbmdbJ3NlbGVjdG9uZSddID0gJ1NlbGVjdCBPbmUnOwokbGFuZ1snc3RhcnRfeWVhciddID0gJ1N0YXJ0IFllYXInOwokbGFuZ1snZW5kX3llYXInXSA9ICdFbmQgWWVhcic7CiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7CiRsYW5nWydwcm9tcHRfdGh1bWJuYWlsX3NpemUnXSA9ICdUaHVtYm5haWwgU2l6ZSc7CiRsYW5nWydPblVwZGF0ZUdyb3VwJ10gPSAnT24gVXNlciBHcm91cCBNb2RpZmllZCc7CiRsYW5nWydlcnJvcl90b29tYW55c2VsZWN0ZWQnXSA9ICdUb28gbWFueSB1c2VycyBhcmUgc2VsZWN0ZWQgZm9yIGJ1bGsgb3BlcmF0aW9ucy4uLi4gUGxlYXNlIHRyaW0gaXQgdG8gMjUwIG9yIGxlc3MnOwokbGFuZ1snY29uZmlybV9kZWxldGVfc2VsZWN0ZWQnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCB1c2Vycz8nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRGVsZXRlIFNlbGVjdGVkJzsKJGxhbmdbJ3Byb21wdF9yYW5kb211c2VybmFtZSddID0gJ0dlbmVyYXRlIHJhbmRvbSB1c2VybmFtZSB3aGVuIGFkZGluZyBuZXcgdXNlcnMnOwokbGFuZ1snbW9udGhzJ10gPSAnbW9udGhzJzsKJGxhbmdbJ3Byb21wdF9leHBpcmVhZ2UnXSA9ICdEZWZhdWx0IHVzZXIgZXhwaXJ5IHBlcmlvZCc7CiRsYW5nWydub3RpZmljYXRpb25fc2V0dGluZ3MnXSA9ICdOb3RpZmljYXRpb24gU2V0dGluZ3MnOwokbGFuZ1sncHJvcGVydHlfc2V0dGluZ3MnXSA9ICdQcm9wZXJ0eSBTZXR0aW5ncyc7CiRsYW5nWydyZWRpcmVjdGlvbl9zZXR0aW5ncyddID0gJ1JlZGlyZWN0aW9uIFNldHRpbmdzJzsKJGxhbmdbJ2dlbmVyYWxfc2V0dGluZ3MnXSA9ICdHZW5lcmFsIFNldHRpbmdzJzsKJGxhbmdbJ3Nlc3Npb25fc2V0dGluZ3MnXSA9ICdTZXNzaW9uIGFuZCBDb29raWUgU2V0dGluZ3MnOwokbGFuZ1snZmllbGRfc2V0dGluZ3MnXSA9ICdGaWVsZCBTZXR0aW5ncyc7CiRsYW5nWydwcm9wX3RleHRhcmVhX3d5c2l3eWcnXSA9ICdBbGxvdyB1c2Ugb2Ygd3lzaXd5ZyBvbiB0aGlzIHRleHQgYXJlYSc7CiRsYW5nWydlZGl0aW5nX3VzZXInXSA9ICdFZGl0aW5nIFVzZXInOwokbGFuZ1snbm9pbmxpbmUnXSA9ICdEbyBub3QgaW5saW5lIGZvcm1zJzsKJGxhbmdbJ2luZm9fbG9zdHVuJ10gPSAnQ2xpY2sgaGVyZSBpZiB5b3UgY2Fubm90IHJlbWVtYmVyIHlvdXIgbG9naW4gZGV0YWlscyc7CiRsYW5nWydpbmZvX2ZvcmdvdHB3J10gPSAnQ2xpY2sgaGVyZSBpZiB5b3UgY2Fubm90IHJlbWVtYmVyIHlvdXIgcGFzc3dvcmQnOwokbGFuZ1snaW5mb19sb2dvdXQnXSA9ICdDbGljayBoZXJlIHRvIHNpZ24gb3V0JzsKJGxhbmdbJ2luZm9fY2hhbmdlc2V0dGluZ3MnXSA9ICdDbGljayBoZXJlIHRvIGFkanVzdCB5b3VyIHBhc3N3b3JkIG9yIG90aGVyIGluZm9ybWF0aW9uJzsKJGxhbmdbJ3ZpZXd1c2VyX3RlbXBsYXRlJ10gPSAnVmlldyBVc2VyIFRlbXBsYXRlJzsKJGxhbmdbJ2V2ZW50J10gPSAnRXZlbnQnOwokbGFuZ1snbWFtc19ldmVudF9ub3RpZmljYXRpb24nXSA9ICdNQU1TIEV2ZW50IE5vdGlmaWNhdGlvbic7CiRsYW5nWydwcm9tcHRfbm90aWZpY2F0aW9uX2FkZHJlc3MnXSA9ICdOb3RpZmljYXRpb24gRW1haWwgQWRkcmVzcyc7CiRsYW5nWydwcm9tcHRfbm90aWZpY2F0aW9uX3RlbXBsYXRlJ10gPSAnTm90aWZpY2F0aW9uIEVtYWlsIFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF9ub3RpZmljYXRpb25fc3ViamVjdCddID0gJ05vdGlmaWNhdGlvbiBFbWFpbCBTdWJqZWN0JzsKJGxhbmdbJ3Byb21wdF9ub3RpZmljYXRpb25zJ10gPSAnRW1haWwgTm90aWZpY2F0aW9ucyc7CiRsYW5nWydPbkxvZ2luJ10gPSAnT24gTG9naW4nOwokbGFuZ1snT25Mb2dvdXQnXSA9ICdPbiBMb2dvdXQnOwokbGFuZ1snT25FeHBpcmVVc2VyJ10gPSAnT24gU2Vzc2lvbiBFeHBpcnknOwokbGFuZ1snT25DcmVhdGVVc2VyJ10gPSAnT24gTmV3IFVzZXIgQ3JlYXRlZCc7CiRsYW5nWydPbkRlbGV0ZVVzZXInXSA9ICdPbiBVc2VyIERlbGV0ZWQnOwokbGFuZ1snT25VcGRhdGVVc2VyJ10gPSAnT24gVXNlciBTZXR0aW5ncyBDaGFuZ2VkJzsKJGxhbmdbJ09uQ3JlYXRlR3JvdXAnXSA9ICdPbiBVc2VyIEdyb3VwIENyZWF0ZWQnOwokbGFuZ1snT25EZWxldGVHcm91cCddID0gJ09uIFVzZXIgR3JvdXAgRGVsZXRlZCc7CgokbGFuZ1snbG9zdHVuY29uZmlybV9wcmVtc2cnXSA9ICdXb290ISBXZSBmb3VuZCB5b3UhLiBHaXZlbiB0aGUgZGV0YWlscyB5b3UgZW50ZXJlZCwgd2Ugd2VyZSBhYmxlIHRvIGZpbmQgeW91ciAoYW5kIG9ubHkgeW91cnMpIGxvZ2luIG5hbWUuJzsKJGxhbmdbJ3lvdXJfdXNlcm5hbWVfaXMnXSA9ICdZb3VyIHVzZXJuYW1lIGlzJzsKJGxhbmdbJ2xvc3R1bmNvbmZpcm1fcG9zdG1zZyddID0gJ1dlIHJlY29tbWVuZCB5b3UgcmVjb3JkIHRoaXMgaW5mb3JtYXRpb24gaW4gYSBzZWN1cmUsIGJ1dCByZXRyaWV2YWJsZSBsb2NhdGlvbi4nOwokbGFuZ1sncHJvbXB0X2FmdGVyX2NoYW5nZV9zZXR0aW5ncyddID0gJ1BhZ2VJRC9BbGlhcyB0byBqdW1wIHRvIGFmdGVyIGNoYW5nZSBzZXR0aW5ncyc7CiRsYW5nWydwcm9tcHRfYWZ0ZXJfdmVyaWZ5X2NvZGUnXSA9ICdQYWdlSUQvQWxpYXMgdG8ganVtcCB0byBhZnRlciBjb2RlIHZlcmlmaWNhdGlvbiAqJzsKJGxhbmdbJ2xvc3R1bl9kZXRhaWxzX3RlbXBsYXRlJ10gPSAnTG9zdCBVc2VybmFtZSBEZXRhaWxzIFRlbXBsYXRlJzsKJGxhbmdbJ2xvc3R1bl9jb25maXJtX3RlbXBsYXRlJ10gPSAnTG9zdCBVc2VybmFtZSBDb25maXJtIFRlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX25vbnVuaXF1ZW1hdGNoJ10gPSAnRXJyb3I6IE1vcmUgdGhhbiBvbmUgdXNlciBhY2NvdW50IG1hdGNoZWQgdGhlIHByb3BlcnRpZXMgc3BlY2lmaWVkJzsKJGxhbmdbJ2Vycm9yX2NhbnRmaW5kdXNlciddID0gJ0Vycm9yOiBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHVzZXInOwokbGFuZ1snZXJyb3JfZ3JvdXBub3Rmb3VuZCddID0gJ0Vycm9yOiBDb3VsZCBub3QgZmluZCBhIGdyb3VwIGJ5IHRoYXQgbmFtZSc7CiRsYW5nWydyZWFkb25seSddID0gJ1JlYWQgT25seSc7CiRsYW5nWydwcm9tcHRfdXNlcm1hbmlwdWxhdG9yJ10gPSAnVXNlciBNYW5pcHVsYXRvciBDbGFzcyc7CiRsYW5nWydhZG1pbl9sb2dvdXQnXSA9ICdMb2dnZWQgb3V0IGJ5IGFkbWluaXN0cmF0b3InOwokbGFuZ1sncHJvbXB0X2xvZ2dlZGlub25seSddID0gJ1Nob3cgT25seSBMb2dnZWQgSW4gVXNlcnMnOwokbGFuZ1sncHJvbXB0X2xvZ291dCddID0gJ0xvZ291dCB0aGlzIHVzZXInOwokbGFuZ1sndXNlcl9wcm9wZXJ0aWVzJ10gPSAnVXNlciBQcm9wZXJ0aWVzJzsKJGxhbmdbJ3VzZXJoaXN0b3J5J10gPSAnVXNlciBIaXN0b3J5JzsKJGxhbmdbJ2V4cG9ydCddID0gJ0V4cG9ydCc7CiRsYW5nWydjbGVhciddID0gJ0NsZWFyJzsKJGxhbmdbJ3Byb21wdF9leHBvcnR1c2VyaGlzdG9yeSddID0gJ0V4cG9ydCBVc2VyIEhpc3RvcnkgVG8gQVNDSUkgdGhhdCBpcyBhdCBsZWFzdCc7CiRsYW5nWydwcm9tcHRfY2xlYXJ1c2VyaGlzdG9yeSddID0gJ0NsZWFyIFVzZXIgSGlzdG9yeSByZWNvcmRzIHRoYXQgaXMgYXQgbGVhc3QnOwokbGFuZ1sndGl0bGVfbG9zdHVzZXJuYW1lJ10gPSAnRm9yZ290IFlvdXIgTG9naW4gRGV0YWlscz8nOwokbGFuZ1sndGl0bGVfcnNzZXhwb3J0J10gPSAnRXhwb3J0IGdyb3VwIGRlZmluaXRpb24gKGFuZCBwcm9wZXJ0aWVzKSB0byBYTUwnOwokbGFuZ1sndGl0bGVfdXNlcmhpc3RvcnltYWludGVuYW5jZSddID0gJ1VzZXIgSGlzdG9yeSBNYWludGVuYW5jZSc7CiRsYW5nWyd5ZXMnXSA9ICdZZXMnOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWydwcm9tcHRfb2YnXSA9ICdPZic7CiRsYW5nWydkYXRlX2FsbHJlY29yZHMnXSA9ICcqKiBObyBMaW1pdCAqKic7CiRsYW5nWydkYXRlX29uZWhvdXJvbGQnXSA9ICdPbmUgSG91ciBPbGQnOwokbGFuZ1snZGF0ZV9zaXhob3Vyb2xkJ10gPSAnU2l4IEhvdXJzIE9sZCc7CiRsYW5nWydkYXRlX3R3ZWx2ZWhvdXJvbGQnXSA9ICdUd2VsdmUgSG91cnMgT2xkJzsKJGxhbmdbJ2RhdGVfb25lZGF5b2xkJ10gPSAnT25lIERheSBPbGQnOwokbGFuZ1snZGF0ZV9vbmV3ZWVrb2xkJ10gPSAnT25lIFdlZWsgT2xkJzsKJGxhbmdbJ2RhdGVfdHdvd2Vla3NvbGQnXSA9ICdUd28gd2Vla3MgT2xkJzsKJGxhbmdbJ2RhdGVfb25lbW9udGhvbGQnXSA9ICdPbmUgTW9udGggT2xkJzsKJGxhbmdbJ2RhdGVfdGhyZWVtb250aHNvbGQnXSA9ICdUaHJlZSBNb250aHMgT2xkJzsKJGxhbmdbJ2RhdGVfc2l4bW9udGhzb2xkJ10gPSAnU2l4IE1vbnRocyBPbGQnOwokbGFuZ1snZGF0ZV9vbmV5ZWFyb2xkJ10gPSAnT25lIFllYXIgT2xkJzsKJGxhbmdbJ3RpdGxlX2dyb3Vwc29ydCddID0gJ0dyb3VwaW5nIGFuZCBTb3J0aW5nJzsKJGxhbmdbJ3Byb21wdF9yZWNvcmRzZm91bmQnXSA9ICdSZWNvcmRzIG1hdGNoaW5nIHRoZSBjcml0ZXJpYSc7CiRsYW5nWydzb3J0b3JkZXJfdXNlcm5hbWVfZGVzYyddID0gJ0Rlc2NlbmRpbmcgVXNlcm5hbWUnOwokbGFuZ1snc29ydG9yZGVyX3VzZXJuYW1lX2FzYyddID0gJ0FzY2VuZGluZyBVc2VybmFtZSc7CiRsYW5nWydzb3J0b3JkZXJfZGF0ZV9kZXNjJ10gPSAnRGVzY2VuZGluZyBEYXRlJzsKJGxhbmdbJ3NvcnRvcmRlcl9kYXRlX2FzYyddID0gJ0FzY2VuZGluZyBEYXRlJzsKJGxhbmdbJ3NvcnRvcmRlcl9hY3Rpb25fZGVzYyddID0gJ0Rlc2NlbmRpbmcgRXZlbnQgVHlwZSc7CiRsYW5nWydzb3J0b3JkZXJfYWN0aW9uX2FzYyddID0gJ0FzY2VuZGluZyBFdmVudCBUeXBlJzsKJGxhbmdbJ3NvcnRvcmRlcl9pcGFkZHJlc3NfZGVzYyddID0gJ0Rlc2NlbmRpbmcgSXAgQWRkcmVzcyc7CiRsYW5nWydzb3J0b3JkZXJfaXBhZGRyZXNzX2FzYyddID0gJ0FzY2VuZGluZyBJcCBBZGRyZXNzJzsKJGxhbmdbJ2luZm9fbm9oaXN0b3J5ZGV0ZWN0ZWQnXSA9ICdObyBIaXN0b3J5IERldGVjdGVkJzsKJGxhbmdbJ3Jlc2V0J10gPSAnUmVzZXQnOwokbGFuZ1sncHJvbXB0X2dyb3VwX2lwJ10gPSAnR3JvdXAgQnkgSVAgQWRkcmVzcyc7CiRsYW5nWydwcm9tcHRfZmlsdGVyX2V2ZW50dHlwZSddID0gJ0V2ZW50IFR5cGUgRmlsdGVyJzsKJGxhbmdbJ3Byb21wdF9maWx0ZXJfZGF0ZSddID0gJ0Rpc3BsYXkgb25seSBldmVudHMgdGhhdCBhcmUgbGVzcyB0aGFuOic7CiRsYW5nWydwcm9tcHRfcGFnZWxpbWl0J10gPSAnUGFnZSBMaW1pdCc7CiRsYW5nWydmb3InXSA9ICdmb3InOwokbGFuZ1sndGl0bGVfdXNlcmhpc3RvcnknXSA9ICdVc2VyIEhpc3RvcnkgUmVwb3J0JzsKJGxhbmdbJ3Vua25vd24nXSA9ICdVbmtub3duJzsKJGxhbmdbJ3Byb21wdF9pcGFkZHJlc3MnXSA9ICdJUCBBZGRyZXNzJzsKJGxhbmdbJ3Byb21wdF9ldmVudHR5cGUnXSA9ICdFdmVudCBUeXBlJzsKJGxhbmdbJ3Byb21wdF9kYXRlJ10gPSAnRGF0ZSc7CiRsYW5nWydwcm9tcHRfcmV0dXJuJ10gPSAnUmV0dXJuJzsKJGxhbmdbJ2ltcG9ydF9jb21wbGV0ZV9tc2cnXSA9ICdJbXBvcnQgT3BlcmF0aW9uIENvbXBsZXRlJzsKJGxhbmdbJ3Byb21wdF9saW5lc3Byb2Nlc3NlZCddID0gJ0xpbmVzIFByb2Nlc3NlZCc7CiRsYW5nWydwcm9tcHRfZXJyb3JzJ10gPSAnRXJyb3JzIEVuY291bnRlcmVkJzsKJGxhbmdbJ3Byb21wdF9yZWNvcmRzYWRkZWQnXSA9ICdSZWNvcmRzIEFkZGVkJzsKJGxhbmdbJ2Vycm9yX25vZ3JvdXBwcm9wcmVsbnMnXSA9ICdDb3VsZCBub3QgZmluZCBwcm9wZXJ0aWVzIGZvciBncm91cCAlcyc7CiRsYW5nWydlcnJvcl9ub3Jlc3BvbnNlZnJvbXNlcnZlciddID0gJ0NvdWxkIG5vdCBnZXQgYSByZXNwb25zZSBmcm9tIHRoZSBTTVRQIHNlcnZlcic7CiRsYW5nWydlcnJvcl9pbXBvcnRmaWxlbm90Zm91bmQnXSA9ICdGaWxlIHNwZWNpZmllZCAoJXMpIGNvdWxkIG5vdCBiZSBmb3VuZCc7CiRsYW5nWydlcnJvcl9pbXBvcnRmaWVsZHZhbHVlJ10gPSAnSW52YWxpZCB2YWx1ZSBmb3IgY29sdW1uICVzJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGZpZWxkbGVuZ3RoJ10gPSAnRmllbGQgJXMgZXhjZWVkcyBtYXhpbXVtIGxlbmd0aCc7CiRsYW5nWydlcnJvcl9pbXBvcnRpbnNlcnR1c2VyJ10gPSAnUHJvYmxlbSBjcmVhdGluZyB1c2VyOiAlcyc7CiRsYW5nWydlcnJvcl9pbXBvcnR1cGRhdGV1c2VyJ10gPSAnUHJvYmxlbSB1cGRhdGluZyB1c2VyOiAlcyc7CiRsYW5nWydlcnJvcl9pbXBvcnR1c2VycyddID0gJ0ltcG9ydCBFcnJvciAobGluZSAlcyk6ICVzJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnR5ZGVmbnMnXSA9ICdDb3VsZCBub3QgZ2V0IHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucyAoaW50ZXJuYWwgZXJyb3IpJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW1zZXR0aW5naW5mbyddID0gJ1Byb2JsZW0gc2V0dGluZyB1c2VyIGluZm8nOwokbGFuZ1snZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCddID0gJ0NvdWxkIG5vdCBmaW5kIGEgY29sdW1uIHRvIG1hdGNoIHRoZSByZXF1aXJlZCBmaWVsZCAlcyc7CiRsYW5nWydlcnJvcl9ub2dyb3VwcHJvcGVydGllcyddID0gJ0NvdWxkIG5vdCBmaW5kIHByb3BlcnRpZXMgZm9yIHRoZSBzcGVjaWZpZWQgZ3JvdXAnOwokbGFuZ1snZXJyb3JfaW1wb3J0ZmlsZWZvcm1hdCddID0gJ1RoZSBmaWxlIHNwZWNpZmllZCBmb3IgaW1wb3J0IGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQnOwokbGFuZ1snZXJyb3JfY291bGRub3RvcGVuZmlsZSddID0gJ0NvdWxkIG5vdCBvcGVuIGZpbGUnOwokbGFuZ1snaW5mb19pbXBvcnR1c2Vyc2ZpbGVmb3JtYXQyJ10gPSAnCjxoNT5GaWxlIEZvcm1hdCBJbmZvcm1hdGlvbjwvaDU+CjxwPlRoZSBpbnB1dCBmaWxlIG11c3QgYmUgaW4gQVNDSUkgZm9ybWF0IHVzaW5nIGNvbW1hIDxlbT4obm9ybWFsbHkpPC9lbT4gc2VwYXJhdGVkIHZhbHVlcy4gIEVhY2ggbGluZSBpbiB0aGlzIGlucHV0IGZpbGUgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgaGVhZGVyIGxpbmUsIGRpc2N1c3NlZCBiZWxvdykgcmVwcmVzZW50cyBvbmUgdXNlciByZWNvcmQuICBUaGUgb3JkZXIgb2YgdGhlIGZpZWxkcyBpbiBlYWNoIGxpbmUgbXVzdCBiZSBpZGVudGljYWwuICBUaGlzIGltcG9ydCByb3V0aW5lIGFjY2VwdHMgTUFDIGFuZCB1bml4IGxpbmUgZW5kaW5ncy4gIENvbHVtbiB2YWx1ZXMgY2FuIGJlIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMgaWYgdGhlIGRlbGltaXRlciBtYXkgYmUgY29udGFpbmVkIHdpdGhpbiB0aGUgY29sdW1uIHZhbHVlLjwvcD4KPGg1PkhlYWRlciBsaW5lPC9oNT4KPHVsPgo8bGk+VGhlIGZpcnN0IGxpbmUgb2YgdGhlIGZpbGUgbXVzdCBiZWdpbiB3aXRoIHR3byBwb3VuZCAoXCMpIGNoYXJhY3RlcnMsIGFuZCBuYW1lcyBlYWNoIG9mIHRoZSBmaWVsZHMgaW4gdGhlIGZpbGUuICBUaGUgbmFtZXMgb2YgdGhlc2UgZmllbGRzIGlzIHNpZ25pZmljYW50LiAgVGhlcmUgYXJlIHNvbWUgcmVxdWlyZWQgZmllbGQgbmFtZXMgKHNlZSBiZWxvdyksIGFuZCBvdGhlciBmaWVsZCBuYW1lcyBtdXN0IG1hdGNoIHRoZSBwcm9wZXJ0eSBuYW1lcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwIHVzZXJzIGFyZSBnb2luZyB0byBiZSBhZGRlZCBpbnRvLjwvbGk+CjxsaT5UaGUgaW1wb3J0IHByb2Nlc3Mgd2lsbCBmYWlsIGlmIHRoZSBmaWVsZHMgaW4gdGhlIGlucHV0IGZpbGUgZG9lcyBub3QgbWF0Y2ggYWxsIG9mIHRoZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdGhhdCB1c2VycyBhcmUgYmVpbmcgYWRkZWQgaW50bzwvbGk+CjxsaT5UaGUgaW5wdXQgZmlsZSBtYXkgY29udGFpbiBmaWVsZHMgcmVwcmVzZW50aW5nIHNvbWUgb2YgdGhlIG9wdGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmllZCBncm91cC48L2xpPgo8bGk+VGhlIGltcG9ydCBwcm9jZXNzIHdpbGwgaWdub3JlIGFueSBmaWVsZHMgaW4gdGhlIGlucHV0IGZpbGUgdGhhdCBhcmUgZWl0aGVyIG5vdCBrbm93biwgb3IgbWFwIHRvIHByb3BlcnRpZXMgdGhhdCBhcmUgPGVtPm9mZjwvZW0+IGluIHRoZSBzcGVjaWZpZWQgdXNlciBncm91cHMuPC9saT4KPC91bD48YnIvPgo8aDY+PHN0cm9uZz5Db2x1bW5hciBEYXRhPC9zdHJvbmc+PC9oNj4KPHVsPgo8bGk+VGhlIDxzdHJvbmc+dXNlcm5hbWU8L3N0cm9uZz4gRmllbGQgLSBUaGUgZGVzaXJlZCB1c2VybmFtZS4KICAgIDxwPlRoaXMgZmllbGQgbXVzdCBleGlzdCBpbiB0aGUgaGVhZGVybGluZSwgYW5kIGluIGVhY2ggYW5kIGV2ZXJ5IGxpbmUgb2YgdGhlIGlucHV0IGZpbGUuIElmIGEgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGRhdGFiYXNlIGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIG92ZXJ3cml0dGVuLjwvcD48L2xpPgo8bGk+VGhlIDxzdHJvbmc+dHh0cGFzc3dvcmQ8L3N0cm9uZz4gRmllbGQgLSA8ZW0+KG9wdGlvbmFsKTwvZW0+LiAgVGhlIHBhc3N3b3JkIHRvIHNldCBmb3IgdGhlIHVzZXIgaW4gcGxhaW4gdGV4dC4gIElmIHRoZSBwYXNzd29yZCBmaWVsZCBpcyBlbXB0eSB3aGVuIGNyZWF0aW5nIG5ldyB1c2VycyB0aGUgcGFzc3dvcmQgJnF1b3Q7Y2hhbmdlbWUmcXVvdDsgaXMgaGFyZGNvZGVkLiAgSWYgdGhlIHBhc3N3b3JkIGZpZWxkIGlzIGVtcHR5IHdoZW4gdXBkYXRpbmcgYSB1c2VyIGhpcyBwYXNzd29yZCB3aWxsIG5vdCBiZSBhZGp1c3RlZC48L2xpPgo8bGk+VGhlIDxzdHJvbmc+ZXhwaXJlczwvc3Ryb25nPiBGaWVsZCAtIDxlbT4ob3B0aW9uYWwpPC9lbT4uICBUaGUgZGVzaXJlZCBleHBpcnkgZGF0ZSBmb3IgdGhlIHVzZXIuICBJZiB0aGlzIGZpZWxkIGlzIHNwZWNpZmllZCBhbmQgY2FuIGJlIHZhbGlkYXRlZCBhcyBhIHZhbGlkIGRhdGUgdGhlbiB0aGUgZXhwaXJ5IGRhdGUgd2lsbCBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgYSBuZXcgdXNlciwgb3RoZXJ3aXNlIGEgZGVmYXVsdCB2YWx1ZSBvZiAxMCBmcm9tIHRoZSBjcmVhdGUgZGF0ZSB3aWxsIGJlIHVzZWQuICBJZiB0aGlzIGZpZWxkIGlzIGVtcHR5IHdoZW4gdXBkYXRpbmcgYSB1c2VyIHRoZW4gaGlzIGV4cGlyeSB3aWxsIG5vdCBiZSBhZGp1c3RlZC48L2xpPgo8bGk+VGhlIDxzdHJvbmc+Z3JvdXBuYW1lPC9zdHJvbmc+IEZpZWxkIC0gQSA6IHNlcGFyYXRlZCBsaXN0IG9mIHRoZSBncm91cCBuYW1lcyB0aGF0IHlvdSB3YW50IHRvIGhhdmUgdGhlIHVzZXIgYmUgYSBtZW1iZXIgb2YuIElmIGFsbCByZXF1aXJlZCBmaWVsZHMgYXJlIG5vdCBmaWxsZWQgaW4gdGhlIGluc2VydC91cGRhdGUgb2YgdGhlIHJlY29yZCB3aWxsIGZhaWwuPC9saT4KPGxpPkRyb3Bkb3duL1JhZGlvIEZpZWxkcwogIDxwPlRoZSB2YWx1ZSBvZiBkcm9wZG93biBwcm9wZXJ0aWVzIGluIGFuIGltcG9ydCBmaWxlIGlzIHJlcHJlc2VudGVkIGFzIHRoZSBzdHJpbmcgdGhhdCBpcyBzaG93biBpbiB0aGUgZHJvcGRvd24gY29udHJvbCBpbiB0aGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZS48L3A+CjwvbGk+CjxsaT5NdWx0aXNlbGVjdCBGaWVsZHMKICA8cD5NdWx0aXNlbGVjdCBmaWVsZHMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIEFTQ0lJIGZpbGUgYXMgYSA6IHNlcGFyYXRlZCBsaXN0IG9mIHN0cmluZ3MsIHdoZXJlIGVhY2ggc3RyaW5nIHJlcHJlc2VudHMgdGhlIHRleHQgc2hvd24gaW4gdGhlIG11bHRpc2VsZWN0IGxpc3Q8L3A+CjwvbGk+CjxsaT5FbWFpbCBGaWVsZHMKICA8cD5NdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcyB0aGF0IGNhbiBiZSB2YWxpZGF0ZWQgYnkgUEhQcyBidWlsdGluIGZ1bmN0aW9uYWxpdHkuPC9wPgo8L2xpPgo8bGk+RGF0ZSBGaWVsZHMKICA8cD5NdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHVuaXggdGltZXN0YW1wIGJ5IHRoZSBzdHJ0b3RpbWUoKSBtZXRob2QuPC9wPgo8L2xpPgo8bGk+SW1hZ2UgRmllbGRzCiAgICA8cD5JbWFnZSBhcmUgZmllbGRzIHdob1wncyBjb2x1bW4gbmFtZSBtYXRjaGVzIGEgcHJvcGVydHkgb2YgdHlwZSBJbWFnZS4gIElmIHRoaXMgZmllbGQgaXMgbm90IGVtcHR5IHRoZW4gdGhlIGZpbGVuYW1lIHNwZWNpZmllZCBpbiB0aGVzZSBjb2x1bW5zIG11c3QgZXhpc3QgaW4gaW1hZ2UgZGVzdGluYXRpb24gcGF0aCBhcyBzcGVjaWZpZWQgaW4gdGhlIE1BTVMgcHJlZmVyZW5jZXMuLiAgSWYgdGhlIGltYWdlIGRvZXMgbm90IGV4aXN0LCBhbmQgdGhlIGZpZWxkIGlzIHJlcXVpcmVkLCB0aGVuIHRoZSByZWNvcmQgd2lsbCBmYWlsLjwvcD48L2xpPgo8L3VsPgo8aDU+Tm90ZXM8L2g1Pgo8cD5UaGUgaW1wb3J0IHByb2Nlc3MgaXMgYSBtZW1vcnkgYW5kIGRhdGFiYXNlIGludGVuc2l2ZSByb3V0aW5lLiAgSXQgaXMgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgaW1wb3NlZCBieSB0aGUgaG9zdCBwcm92aWRlciwgc3VjaCBhcyBtZW1vcnkgbGltaXRhdGlvbnMsIHByb2Nlc3NpbmcgdGltZSwgZmlsZSBzaXplIHVwbG9hZCwgYW5kIHNhZmUgbW9kZSByZXN0cmljdGlvbnMuICBBbnkgb25lIG9mIHRoZXNlIGxpbWl0YXRpb25zIG1heSBjYXVzZSB0aGUgaW1wb3J0IHRvIGZhaWwuIFRoZXJlZm9yZSBpdCBpcyBhZHZpc2FibGUgdG8gZW5zdXJlIHRoYXQgaW1wb3J0IGZpbGVzIGFyZSBzbWFsbGVyIGluIHNpemUsIGFuZCBzaW1wbGVyIGluIG5hdHVyZS48L3A+CjxwPlRob3VnaCBldmVyeSBlZmZvcnQgaGFzIGJlZW4gbWFkZSB0byBlbnN1cmUgdGhhdCBkYXRhYmFzZSBjb3JydXB0aW9uIHdpbGwgbm90IG9jY3VyLCBpdCBpcyBhZHZpc2FibGUgdG8gcGVyZm9ybSBhIGRhdGFiYXNlIGJhY2t1cCBiZWZvcmUgZG9pbmcgYSB1c2VyIGltcG9ydC48L3A+CjxwPlRoZSBFeHBvcnQgZGF0YSBpcyB0aGUgc2FtZSBmb3JtYXQgYXMgbmVlZGVkIGZvciBpbXBvcnQuICBIb3dldmVyIGl0IG1heSBwcm92aWRlIGV4dHJhIGZpZWxkcyB0aGF0IGFyZSBub3QgcmVxdWlyZWQgZm9yIGltcG9ydC48L3A+CjxoNT5FeGFtcGxlPC9oNT4KPHByZT4KIyN1c2VybmFtZSxmaXJzdF9uYW1lLGxhc3RfbmFtZSxlbWFpbCxjaXR5LHN0YXRlLGNvdW50cnksemlwCnVzZXIxLHRlc3QsdXNlcix1c2VyMUBzb21lZG9tYWluLmNvbSxzb21ld2hlcmUsVFgsVVMsMTIzNDUKPC9wcmU+Cic7CiRsYW5nWydwcm9tcHRfaW1wb3J0ZGVzdGdyb3VwJ10gPSAnSW1wb3J0IFVzZXJzIEludG8gVGhpcyBHcm91cCc7CiRsYW5nWydwcm9tcHRfaW1wb3J0ZmlsZW5hbWUnXSA9ICdJbnB1dCBDU1YgRmlsZSc7CiRsYW5nWydwcm9tcHRfaW1wb3J0eG1sZmlsZSddID0gJ0lucHV0IFhNTCBGaWxlJzsKJGxhbmdbJ3Byb21wdF9leHBvcnR1c2VycyddID0gJ0V4cG9ydCBVc2Vycyc7CiRsYW5nWydwcm9tcHRfaW1wb3J0dXNlcnMnXSA9ICdJbXBvcnQgVXNlcnMnOwokbGFuZ1sncHJvbXB0X2NsZWFyJ10gPSAnQ2xlYXInOwokbGFuZ1sncHJvbXB0X2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnXSA9ICdJbWFnZSBEZXN0aW5hdGlvbiBQYXRoJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdfdXBsb2FkJ10gPSAnQSBwcm9ibGVtIG9jY3VycmVkIHdpdGggYSBtaXNzaW5nIChidXQgcmVxdWlyZWQpIHVwbG9hZCc7CiRsYW5nWydlcnJvcl9iYWRfeG1sJ10gPSAnQ291bGQgbm90IHBhcnNlIHRoZSBwcm92aWRlZCBYTUwgZmlsZSc7CiRsYW5nWydlcnJvcl9ub3RlbXB0eWdyb3VwJ10gPSAnQ2Fubm90IGRlbGV0ZSBhIGdyb3VwIHRoYXQgc3RpbGwgaGFzIHVzZXJzJzsKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdUaGlzIHVzZXIgaXMgYWxyZWFkeSBsb2dnZWQgaW4nOwokbGFuZ1snZXJyb3JfY2FwdGNoYW1pc21hdGNoJ10gPSAnU29ycnksIGJ1dCBjYXB0Y2hhIHZlcmlmaWNhdGlvbiBmYWlsZWQuICBQbGVhc2UgdHJ5IGFnYWluLic7CiRsYW5nWydwcm9tcHRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJ10gPSAnQWxsb3cgdXNlcnMgdG8gbG9naW4gbW9yZSB0aGFuIG9uY2UnOwokbGFuZ1sncHJvbXB0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucyddID0gJ0ltYWdlIEZpbGUgRXh0ZW5zaW9ucyB0aGF0IFVzZXJzIGFsbG93ZWQgdG8gdXBsb2FkJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25SZWZyZXNoVXNlciddID0gJwo8aDM+T25SZWZyZXNoVXNlcjwvaDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIHRoZSB1c2VyIHNlc3Npb24gaXMgcmVmcmVzaGVkLjwvcD4KPGg0PlBhcmFtZXRlcnM6PC9oND4KPHVsPgogIDxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBVc2VyIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVVc2VyJ10gPSAnCjxoMz5PbkRlbGV0ZVVzZXI8aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBpcyBkZWxldGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIHVzZXIgbmFtZTwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSB1c2VyIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVVc2VyJ10gPSAnCjxoMz5PbkNyZWF0ZVVzZXI8aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBpcyBjcmVhdGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PblVwZGF0ZVVzZXInXSA9ICcKPGgzPk9uVXBkYXRlVXNlcjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGlzIHVwZGF0ZWQgKGVpdGhlciBieSB1c2VyIHRoZW1zZWxmIG9yIGFkbWluKTwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIHVzZXIgbmFtZTwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSB1c2VyIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVHcm91cCddID0gJwo8aDM+T25DcmVhdGVHcm91cDxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBncm91cCBpcyBjcmVhdGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgZ3JvdXAgbmFtZTwvbGk+CjxsaT48ZW0+ZGVzY3JpcHRpb248L2VtPiAtIFRoZSBncm91cCBkZXNjcmlwdGlvbjwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBncm91cCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlR3JvdXAnXSA9ICcKPGgzPk9uRGVsZXRlR3JvdXA8aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgZ3JvdXAgaXMgZGVsZXRlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIGdyb3VwIG5hbWU8L2xpPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgZ3JvdXAgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9BZnRlckxvZ2luQXV0aCddID0gJwo8aDM+T25Mb2dpbjxoMz4KPHA+QW4gZXZlbnQgc2VudCB3aGVuIGEgdXNlciBsb2dzIGluPCwgYWZ0ZXIgYXV0aGVudGljYXRpb24sIGJ1dCBiZWZvcmUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBjcmVhdGVkLCBhbmQgdGhlIHN5c3RlbSByZWNvZ25pemVzIGhpbSBhcyBsb2dnZWQgaW4uClRoaXMgZXZlbnQgY2FuIGJlIHVzZWQgYnkgdGhpcmQgcGFydHkgbW9kdWxlcyB0byBhaWRlIGluIHNlY3VyaXR5IGZvciBNQU1TLjwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBpZCBvZiB0aGUgbG9nZ2VkIGluIHVzZXI8L2xpPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXI8L2xpPgo8bGk+PGVtPmlwPC9lbT4gLSBUaGUgaXAgYWRkcmVzcyBvZiB0aGUgY2xpZW50PC9saT4KPGxpPjxlbT5hbGxvdzwvZW0+IC0gYm9vbGVhbiByZWZlcmVuY2UgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1c2VyIHNob3VsZCBiZSBhbGxvd2VkIHRvIGxvZ2luLiAgTW9kdWxlcyBjYW4gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWxsb3cgbG9naW4uPC9saT4KPGxpPjxlbT5tc2c8L2VtPiAtIHN0cmluZyBtZXNzYWdlIHRvIGluZGljYXRlIHRoZSBuYXR1cmUgb2YgdGhlIHByb2JsZW0gaWYgYSBtb2R1bGUgaGFzIHNldCBhbGxvdyB0byBmYWxzZS48L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9CZWZvcmVMb2dpbiddID0gJwo8aDM+T25Mb2dpbjxoMz4KPHA+QW4gZXZlbnQgc2VudCB3aGVuIGEgdXNlciBsb2dzIGluPCwgYWZ0ZXIgbG9naW4gZm9ybSBzdWJtaXNzaW9uLCBidXQgYmVmb3JlIHRoZXkgYXJlIGF1dGhlbnRpY2F0ZWQuLi4KVGhpcyBldmVudCBjYW4gYmUgdXNlZCBieSB0aGlyZCBwYXJ0eSBtb2R1bGVzIHRvIGFpZGUgaW4gc2VjdXJpdHkgZm9yIE1BTVMuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGlkIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+aXA8L2VtPiAtIFRoZSBpcCBhZGRyZXNzIG9mIHRoZSBjbGllbnQ8L2xpPgo8bGk+PGVtPmFsbG93PC9lbT4gLSBib29sZWFuIHJlZmVyZW5jZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gbG9naW4uICBNb2R1bGVzIGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhbGxvdyBsb2dpbi48L2xpPgo8bGk+PGVtPm1zZzwvZW0+IC0gc3RyaW5nIG1lc3NhZ2UgdG8gaW5kaWNhdGUgdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBpZiBhIG1vZHVsZSBoYXMgc2V0IGFsbG93IHRvIGZhbHNlLjwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW4nXSA9ICcKPGgzPk9uTG9naW48aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dzIGluPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGlkIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+aXA8L2VtPiAtIFRoZSBpcCBhZGRyZXNzIG9mIHRoZSBjbGllbnQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ2luRmFpbGVkJ10gPSAnCjxoMz5PbkxvZ2luRmFpbGVkPGgzPgo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9naW4gZmFpbHM8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXI8L2xpPgo8bGk+PGVtPm1zZzwvZW0+IC0gQSBtZXNzYWdlIGluZGljYXRpbmcgd2h5IHRoZSBsb2dpbiBmYWlsZWQuL2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ291dCddID0gJwo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBvdXQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uRXhwaXJlVXNlciddID0gJwo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgc2Vzc2lvbiBleHBpcmVzPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGV4cGlyZWQgdXNlcjwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSB1c2VyIGlkIG9mIHRoZSBleHBpcmVkIHVzZXI8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaW5mb19BZnRlckxvZ2luQXV0aCddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCBhZnRlciBhdXRoZW50aWNhdGlvbiwgYnV0IGJlZm9yZSBhY3R1YWxseSBsb2dnaW5nIHRoZSB1c2VyIGluLic7CiRsYW5nWydldmVudF9pbmZvX0JlZm9yZUxvZ2luJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW4gdG8gdGhlIHN5c3RlbSwgYWZ0ZXIgaGUgaXMgaGFzIHN1Ym1pdHRlZCB0aGUgbG9naW4gZm9ybSwgYnV0IGJlZm9yZSBhbnkgYXV0aGVudGljYXRpb24gaXMgdGVzdGVkLic7CiRsYW5nWydldmVudF9pbmZvX09uTG9naW4nXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBpbiB0byB0aGUgc3lzdGVtJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dpbkZhaWxlZCddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBmYWlscyB0byBsb2cgaW4gdG8gdGhlIHN5c3RlbSc7CiRsYW5nWydldmVudF9pbmZvX09uTG9nb3V0J10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3Mgb3V0IG9mIHRoZSBzeXN0ZW0nOwokbGFuZ1snZXZlbnRfaW5mb19PbkV4cGlyZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgc2Vzc2lvbiBpcyBleHBpcmVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBuZXcgdXNlciBpcyBjcmVhdGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25SZWZyZXNoVXNlciddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIHRoZSB1c2VyIHNlc3Npb24gaXMgcmVmcmVzaGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25VcGRhdGVVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGluZm8gaXMgdXBkYXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlVXNlciddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBhY2NvdW50IGlzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZUdyb3VwJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGdyb3VwIGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PblVwZGF0ZUdyb3VwJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGdyb3VwIGlzIHVwZGF0ZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkRlbGV0ZUdyb3VwJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGdyb3VwIGlzIGRlbGV0ZWQnOwokbGFuZ1snYmFja2VuZF9ncm91cCddID0gJ0JhY2tlbmQgR3JvdXAnOwokbGFuZ1snaW5mb19zdGFyJ10gPSAnKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgZnVsbCBzbWFydHkgdGVtcGxhdGVzLjxici8+QWxvbmcgd2l0aCBvdGhlciBwcmUtZXhpc3Rpbmcgc21hcnR5IHZhcmlhYmxlcyBhbmQgcGx1Z2lucywgdGhlIHskdXNlcm5hbWV9IGFuZCB7JGdyb3VwfSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJpZS4gIDxlbT4oVGhlIHskZ3JvdXB9IHZhcmlhYmxlIG1hdGNoZXMgdGhlIGZpcnN0IGdyb3VwIHRvIHdoaWNoIHRoZSB1c2VyIGJlbG9uZ3MuKTwvZW0+Lic7CiRsYW5nWydpbmZvX2FkbWluX3Bhc3N3b3JkJ10gPSAnRWRpdCB0aGlzIGZpZWxkIHRvIHJlc2V0IHRoZSB1c2VycyBwYXNzd29yZCc7CiRsYW5nWydpbmZvX2FkbWluX3JlcGVhdHBhc3N3b3JkJ10gPSAnRWRpdCB0aGlzIGZpZWxkIHRvIHJlc2V0IHRoZSB1c2VycyBwYXNzd29yZCc7CiRsYW5nWydlcnJvcl91c2VybmFtZV9leGlzdHMnXSA9ICdBIHVzZXIgd2l0aCB0aGF0IHVzZXJuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ25vY3N2cmVzdWx0cyddID0gJ05vIHJlc3VsdHMgcmV0dXJuZWQgZnJvbSBjc3YgZXhwb3J0JzsKJGxhbmdbJ3Byb21wdF91bmZsZGxlbiddID0gJ0xlbmd0aCBvZiB1c2VybmFtZSBmaWVsZCc7CiRsYW5nWydwcm9tcHRfcHdmbGRsZW4nXSA9ICdMZW5ndGggb2YgcGFzc3dvcmQgZmllbGQnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkbGVuZ3RocyddID0gJ01pbi9NYXggcGFzc3dvcmQgbGVuZ3RocyBhcmUgaW52YWxpZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWVsZW5ndGhzJ10gPSAnTWluL01heCB1c2VybmFtZSBsZW5ndGhzIGFyZSBpbnZhbGlkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnXSA9ICdJbnZhbGlkIEVtYWlsIGFkZHJlc3MnOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGFkZHJlc3MnXSA9ICdXZSBjb3VsZCBub3QgZmluZCBhbiBlbWFpbCBhZGRyZXNzIGZvciB0aGlzIGFjY291bnQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNlZXR0aW5naW5mbyddID0gJ1Byb2JsZW0gc2V0dGluZyB1c2VyIGluZm8nOwokbGFuZ1snZXJyb3Jfc2V0dGluZ3Byb3BlcnR5J10gPSAnUHJvYmxlbSBzZXR0aW5nIHByb3BlcnR5JzsKJGxhbmdbJ3VzZXJfYWRkZWQnXSA9ICdVc2VyIEFkZGVkICVzID0gJXMnOwokbGFuZ1sndXNlcl9kZWxldGVkJ10gPSAnVXNlciBEZWxldGVkIHVpZD0lcyc7CiRsYW5nWydwcm9wZXJ0eWZpbHRlciddID0gJ1Byb3BlcnR5JzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICdWYWx1ZSAocmVndWxhciBleHByZXNzaW9uKSc7CiRsYW5nWyd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCddID0gJ1dhcm5pbmc6IFRoZXNlIGZpZWxkcyBhZmZlY3QgdGhlIHNpemUgb2YgaW5wdXQgZmllbGRzIGZvciBmb3Jtcy4gIERlY3JlYXNpbmcgdGhpcyBudW1iZXIgb24gYW4gZXhpc3Rpbmcgc2l0ZSBtYXkgbm90IGJlIGFkdmlzYWJsZSc7CiRsYW5nWydjb25maXJtX3N1Ym1pdHByZWZzJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGFkanVzdCB0aGUgbW9kdWxlIHByZWZlcmVuY2VzPyc7CiRsYW5nWydlcnJvcl9lbWFpbGFscmVhZHl1c2VkJ10gPSAnRW1haWwgYWRkcmVzcyBhbHJlYWR5IHVzZWQnOwokbGFuZ1sncHJvbXB0X3VzZWNvb2tpZXN0b3JlbWVtYmVyJ10gPSAnVXNlIGNvb2tpZXMgdG8gcmVtZW1iZXIgbG9naW4gZGV0YWlscyc7CiRsYW5nWydwcm9tcHRfY29va2llbmFtZSddID0gJ1RoZSBuYW1lIG9mIHRoZSAmcXVvdDtSZW1lbWJlciBNZSZxdW90OyBjb29raWUnOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICdBbGxvdyBkdXBsaWNhdGUgZW1haWxzJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZV9pc19lbWFpbCddID0gJ0VtYWlsIGFkZHJlc3MgaXMgdXNlcm5hbWUnOwokbGFuZ1snaW5mb19jb29raWVfa2VlcGFsaXZlJ10gPSAnSWYgZW5hYmxlZCwgYSBjb29raWUgd2lsbCBiZSBzZXQgd2l0aCBhbiBleHBpcnkgdGltZSBvZiAyNCBob3VycyB0byBrZWVwIHNlc3Npb25zIGFsaXZlLiAgVGhpcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgcmVtZW1iZXJtZSBmdW5jdGlvbmFsaXR5LCBhbmQgY2FuIGJlIHVzZWQgdG8gZXh0ZW5kIGEgdXNlcnMgbG9naW4gdG8gdGhlIHN5c3RlbSBpZiBzZXNzaW9uIGRhdGEgaXMgY2xlYXJlZCB0b28gZnJlcXVlbnRseS4nOwokbGFuZ1snaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnKEFsbG93IG11bHRpcGxlIHVzZXJzIHdpdGggdGhlIHNhbWUgZW1haWwgYWRkcmVzcyknOwokbGFuZ1snaW5mb191c2VybmFtZV9pc19lbWFpbCddID0gJyh1c2VyXCdzIGVtYWlsIGFkZHJlc3MgaXMgdGhlaXIgdXNlcm5hbWUgLS0gZG9uXCd0IHNldCB0aGlzIHdpdGggImFsbG93IGR1cGxpY2F0ZSBlbWFpbCBhZGRyZXNzZXMiISknOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSA9ICdBbGxvdyBkdXBsaWNhdGUgImZvcmdvdCBwYXNzd29yZCIgcmVtaW5kZXJzPyc7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSA9ICcoQWxsb3cgYSB1c2VycyB0byByZXF1ZXN0IGEgcGFzc3dvcmQgcmVzZXQsIGV2ZW4gaWYgdGhleSBoYXZlblwndCBhY3RlZCBvbiBhIHByZXZpb3VzIG9uZSknOwokbGFuZ1sncHJvbXB0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSA9ICdVc2UgRnJvbnQtZW5kIFVzZXIgc3BlY2lmaWMgcGVybWlzc2lvbnM/JzsKJGxhbmdbJ2luZm9fbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddID0gJyhOb3JtYWxseSwgTUFNU1NlcnMgcGVybWlzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIHRoZSBlcXVpdmFsZW50IEFkbWluIEFyZWEgcGVybWlzc2lvbnMgbGlrZSBBZGQgVXNlciwgQWRkIEdyb3VwLCBldGMuIElmIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24sIHRoZXJlIHdpbGwgYmUgc2VwYXJhdGUgcGVybWlzc2lvbnMgZm9yIE1BTVNzZXJzLiknOwokbGFuZ1snZXJyb3JfbWlzc2luZ3VwbG9hZCddID0gJ0NvdWxkIG5vdCBmaW5kIHRoZSB1cGxvYWRlZCBmaWxlIChpbnRlcm5hbCBlcnJvciknOwokbGFuZ1snZXJyb3JfcHJvYmxlbV91cGxvYWQnXSA9ICdUaGVyZSB3YXMgYSBwcm9ibGVtIHdpdGggeW91ciB1cGxvYWRlZCBmaWxlLiAgUGxlYXNlIHRyeSBhZ2Fpbic7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcm5hbWUnXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhIHVzZXJuYW1lJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdlbWFpbCddID0gJ1lvdSBkaWQgbm90IGVudGVyIHlvdXIgZW1haWwnOwokbGFuZ1snZXJyb3JfbWlzc2luZ3Bhc3N3b3JkJ10gPSAnWW91IGRpZCBub3QgZW50ZXIgYSBwYXNzd29yZCc7CiRsYW5nWydtYW1zdXNlcl9sb2dvdXQnXSA9ICdNQU1TIFVzZXIgTG9nb3V0JzsKJGxhbmdbJ21hbXN1c2VyX2xvZ2dlZGluJ10gPSAnTUFNUyBVc2VyIExvZ2luJzsKJGxhbmdbJ2VkaXRwcm9wX2luZm9tc2cnXSA9ICc8Zm9udCBjb2xvcj0icmVkIj48Yj5VU0UgQ0FVVElPTjwvYj4gd2hlbiBjaGFuZ2luZyBleGlzdGluZyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFzc2lnbmVkIHRvIGdyb3VwcywgeW91IG1heSBwb3RlbnRpYWxseSBjYXVzZSBkYW1hZ2UgYW5kIGJyZWFrIGFuIGV4aXN0aW5nIHNpdGUgPGk+KGVzcGVjaWFsbHkgaWYgeW91IHJlZHVjZSBmaWVsZCBsZW5ndGhzLCBldGMpPC9pPjwvZm9udD4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgb24gd2luZG93cyc7CiRsYW5nWydtc2dfZG9udGNyZWF0ZXVzZXJuYW1lJ10gPSAnRG8gbm90IGNyZWF0ZSBhIHByb3BlcnR5IGZvciB1c2VybmFtZSwgb3IgcGFzc3dvcmQgYXMgdGhlc2UgcHJvcGVydGllcyBhcmUgYnVpbHRpbiB0byB0aGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSc7CiRsYW5nWydwcm9tcHRfZXhwb3J0Y3N2J10gPSAnRXhwb3J0IFVzZXJzIHRvIENTVic7CiRsYW5nWydleHBvcnRjc3YnXSA9ICdFeHBvcnQnOwokbGFuZ1snaW1wb3J0Y3N2J10gPSAnSW1wb3J0JzsKJGxhbmdbJ2FkbWluJ10gPSAnQWRtaW4nOwokbGFuZ1snZWRpdHByb3AnXSA9ICdFZGl0IFByb3BlcnR5OiA8ZW0+JXM8L2VtPic7CiRsYW5nWydtYXhsZW5ndGgnXSA9ICdNYXhpbXVtIExlbmd0aCc7CiRsYW5nWydjcmVhdGVkJ10gPSAnQ3JlYXRlZCc7CiRsYW5nWydzb3J0YnknXSA9ICdTb3J0IEJ5JzsKJGxhbmdbJ3NvcnQnXSA9ICdTb3J0aW5nJzsKJGxhbmdbJ3VzZXJzaW5ncm91cCddID0gJ1VzZXJzIGluIHRoZSBzZWxlY3RlZCBncm91cChzKSc7CiRsYW5nWyd1c2VybGltaXQnXSA9ICdMaW1pdCByZXN1bHRzIHRvJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxmaWVsZCddID0gJ0NvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGZpZWxkIGZvciB0aGlzIHVzZXIuICBZb3UgbWF5IG5lZWQgdG8gY29udGFjdCB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3InOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZm9yIEZvcmdvdCBQYXNzd29yZCBmb3JtJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5nc19wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIGZvciBDaGFuZ2UgU2V0dGluZ3MgZm9ybSc7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyB0byBqdW1wIHRvIGFmdGVyIGxvZ2luIConOwokbGFuZ1sncHJvbXB0X2xvZ291dF9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgbG9nb3V0IConOwokbGFuZ1snc29ydG9yZGVyJ10gPSAnU29ydCBvcmRlcic7CiRsYW5nWydwcm9tcHRfbnVtcmVzZXRyZWNvcmQnXSA9ICdBIG51bWJlciBvZiB1c2VycyBhcmUgaW4gdGhlIG1pZGRsZSBvZiByZXNldHRpbmcgbG9zdCBwYXNzd29yZHMuICBDdXJyZW50bHkgdGhpcyBjb3VudCBpcyBhdDonOwokbGFuZ1sncmVtb3ZlMXdlZWsnXSA9ICdSZW1vdmUgYWxsIGVudHJpZXMgbW9yZSB0aGFuIGEgd2VlayBvbGQnOwokbGFuZ1sncmVtb3ZlMW1vbnRoJ10gPSAnUmVtb3ZlIGFsbCBlbnRyaWVzIG1vcmUgdGhhbiBhIG1vbnRoIG9sZCc7CiRsYW5nWydyZW1vdmVhbGwnXSA9ICdSZW1vdmUgYWxsIGVudHJpZXMnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZT8nOwokbGFuZ1snZXJyb3JfaW52YWxpZGNvZGUnXSA9ICdBbiBpbnZhbGlkIGNvZGUgaGFzIGJlZW4gZW50ZXJlZCwgcGxlYXNlIHRyeSBhZ2Fpbic7CiRsYW5nWydlcnJvcl90ZW1wY29kZW5vdGZvdW5kJ10gPSAnU29ycnksIEl0IGFwcGVhcnMgdGhhdCB0aGUgdGVtcG9yYXJ5IGNvZGUgeW91IHJlY2VpdmVkIGZvciByZXNldHRpbmcgeW91ciBwYXNzd29yZCBpcyBub3cgaW52YWxpZCAodGVtcG9yYXJ5IGNvZGVzIGNhbiBvbmx5IGJlIHVzZWQgb25jZSkuICBQbGVhc2UgdHJ5IGFnYWluLic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF92ZXJpZnl0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIHVzZWQgdG8gZGlzcGxheSB2ZXJpZmljYXRpb24gZm9ybSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF9lbWFpbHRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgdXNlZCBmb3IgZm9yZ290dGVuIHBhc3N3b3JkIGVtYWlsJzsKJGxhbmdbJ2Vycm9yX3Jlc2V0YWxyZWFkeXNlbnQnXSA9ICdFaXRoZXIgeW91cnNlbGYgb3Igc29tZW9uZSBlbHNlIGhhcyBhbHJlYWR5IHRyaWdnZXJlZCBhIHBhc3N3b3JkIHJlc2V0IG9wZXJhdGlvbiBmb3IgdGhpcyBhY2NvdW50LiAgQ2hlY2sgeW91ciBlbWFpbCwgeW91IG1heSBoYXZlIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byByZXNldCB5b3VyIHBhc3N3b3JkIGluIHlvdXIgaW5ib3gnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFiYXNlIGVycm9yJzsKJGxhbmdbJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCddID0gJ1lvdSBhcmUgcmVjZWl2aW5nIHRoaXMgbWVzc2FnZSBiZWNhdXNlIHNvbWVib2R5IHRvbGQgb3VyIHNpdGUgdGhhdCB5b3UgaGFkIGxvc3QgeW91ciBwYXNzd29yZC4gIElmIHRoaXMgaXMgdGhlIGNhc2UsIHJlYWQgdGhlIGluc3RydWN0aW9ucyBiZWxvdy4gIElmIHlvdSBkb25cJ3QgaGF2ZSBhIGNsdWUgd2hhdCB0aGlzIGlzLCB0aGVuIHlvdSBhcmUgc2FmZSB0byBkZWxldGUgdGhpcyBtZXNzYWdlLCBhbmQgd2UgdGhhbmsgeW91IGZvciB5b3VyIHRpbWUuJzsKJGxhbmdbJ3Byb21wdF9jb2RlJ10gPSAnQ29kZSc7CiRsYW5nWydtZXNzYWdlX2NvZGUnXSA9ICdUaGUgZm9sbG93aW5nIGNvZGUgaGFzIGJlZW4gcmFuZG9tbHkgZ2VuZXJhdGVkIGluIG9yZGVyIHRvIHZlcmlmeSB0aGUgdXNlciBhY2NvdW50LiAgd2hlbiB5b3UgY2xpY2sgb24gdGhlIGxpbmsgYmVsb3cgeW91IHdpbGwgYmUgcHJlc2VudGVkIHdpdGggYSBmaWVsZCB0byBlbnRlciB0aGlzIGNvZGUuICBOb3JtYWxseSB0aGUgZmllbGQgaXMgcHJlLWNvbXBsZXRlZCBmb3IgeW91LCBidXQgaW5jYXNlIGl0IGlzblwndCB0aGUgY29kZSBpczonOwokbGFuZ1sncHJvbXB0X2xpbmsnXSA9ICdDbGlja2luZyBvbiB0aGUgZm9sbG93aW5nIGxpbmsgd2lsbCB0YWtlIHlvdSB0byB0aGUgd2Vic2l0ZSB3aGVyZSB5b3UgY2FuIGVudGVyIHRoZSBhYm92ZSBjb2RlLCBhbmQgcmVzZXQgeW91ciBwYXNzd29yZDonOwokbGFuZ1snbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCddID0gJ0xvc3QgUGFzc3dvcmQnOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdDb3VsZCBub3QgZmluZCB0aGUgQ01TTWFpbGVyIG1vZHVsZSc7CiRsYW5nWydpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnXSA9ICdBbiBlbWFpbCBoYXMgYmVlbiBzZW50IHRvICVzIHdpdGggaW5zdHJ1Y3Rpb25zIGFzIHRvIGhvdyB0byByZXNldCB5b3VyIHBhc3N3b3JkLiAgVGhhbmsgeW91JzsKJGxhbmdbJ2xvc3Rwd19tZXNzYWdlJ10gPSAnU28geW91IGZvcmdvdCBvciBsb3N0IHlvdXIgcGFzc3dvcmQuIFdlbGwsIGVudGVyIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiBpbnRvIHRoaXMgZm9ybSwgYW5kIGlmIHdlIGNhbiBmaW5kIHlvdSB3ZSB3aWxsIHNlbmQgeW91IGFuIGVtYWlsIHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byByZXNldCBpdC4nOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdGVtcGxhdGUnXSA9ICdGb3Jnb3QgUGFzc3dvcmQgVGVtcGxhdGVzJzsKJGxhbmdbJ2xvc3R1c2VybmFtZV90ZW1wbGF0ZSddID0gJ0xvc3QgVXNlcm5hbWUgVGVtcGxhdGUnOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnUHJvcGVydHkgJXMgbm90IGZvdW5kJzsKJGxhbmdbJ3Byb3BzZm91bmQnXSA9ICdQcm9wZXJ0aWVzIGZvdW5kJzsKJGxhbmdbJ2FkZHByb3AnXSA9ICdBZGQgUHJvcGVydHknOwokbGFuZ1snZXJyb3JfcmVxdWlyZWRmaWVsZCddID0gJ0EgcmVxdWlyZWQgZmllbGQgKCVzKSB3YXMgZW1wdHknOwokbGFuZ1snaW5mb19lbXB0eXBhc3N3b3JkZmllbGQnXSA9ICdFbnRlciBhIG5ldyBwYXNzd29yZCBoZXJlIHRvIGNoYW5nZSB5b3VyIHBhc3N3b3JkJzsKJGxhbmdbJ2Vycm9yX25vdGxvZ2dlZGluJ10gPSAnWW91IGRvIG5vdCBhcHBlYXIgdG8gYmUgbG9nZ2VkIGluJzsKJGxhbmdbJ3VzZXJfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWyd1c2VyX3JlZ2lzdHJhdGlvbiddID0gJ1JlZ2lzdHJhdGlvbic7CiRsYW5nWydlcnJvcl9hY2NvdW50ZXhwaXJlZCddID0gJ1RoaXMgYWNjb3VudCBoYXMgZXhwaXJlZCc7CiRsYW5nWydlcnJvcl9pbXByb3BlcmVtYWlsZm9ybWF0J10gPSAnSW1wcm9wZXIgZW1haWwgYWRkcmVzcyBmb3JtYXR0aW5nJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRleHBpcnlkYXRlJ10gPSAnSW52YWxpZCBleHBpcnkgZGF0ZS4gIFRoaXMgbWF5IGJlIHN5c3RlbSByZWxhdGVkLiAgVHJ5IHNldHRpbmcgYW4gZWFybGllciB5ZWFyLic7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2V0dGluZ3Byb3BlcnR5J10gPSAnRXJyb3Igc2V0dGluZyBwcm9wZXJ0eSAlcyBmb3IgdXNlciAkcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZ3JvdXBpZCddID0gJ0ludmFsaWQgZ3JvdXAgaWQgJXMnOwokbGFuZ1snc29ydG9yZGVyJ10gPSAnU29ydCBvcmRlcic7CiRsYW5nWydoaWRkZW5maWVsZG1hcmtlciddID0gJ0hpZGRlbiBmaWVsZCBtYXJrZXInOwokbGFuZ1snaGlkZGVuZmllbGRjb2xvciddID0gJ0hpZGRlbiBmaWVsZCBjb2xvcic7CiRsYW5nWydoaWRkZW4nXSA9ICdIaWRkZW4nOwokbGFuZ1snZXJyb3JfZHVwbGljYXRlbmFtZSddID0gJ0EgcHJvcGVydHkgd2l0aCB0aGF0IG5hbWUgaXMgYWxyZWFkeSBkZWZpbmVkJzsKJGxhbmdbJ2Vycm9yX25vcHJvcGVydGllcyddID0gJ05vIHByb3BlcnRpZXMgZGVmaW5lZCc7CiRsYW5nWydlcnJvcl9ub3JlbGF0aW9ucyddID0gJ05vIHByb3BlcnRpZXMgd2VyZSBzZWxlY3RlZCBmb3IgdGhpcyBncm91cC4gIEEgZ3JvdXAgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBzZWxlY3RlZCAoUmVxdWlyZWQsT3B0aW9uYWwsIG9yIEhpZGRlbiknOwokbGFuZ1snbm9ncm91cHMnXSA9ICdObyBHcm91cHMgYXJlIGRlZmluZWQnOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcm91cHMgZm91bmQnOwokbGFuZ1snZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCddID0gJ01lbWJlcnNoaXAgaW4gYXQgbGVhc3Qgb25lIGdyb3VwIGlzIHJlcXVpcmVkJzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICdSZXF1aXJlIG1lbWJlcnNoaXAgaW4gYXRsZWFzdCBvbmUgZ3JvdXAnOwokbGFuZ1snYmFjayddID0gJ0JhY2snOwokbGFuZ1snZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbSddID0gJyVzIGlzIGEgcmVxdWlyZWQgZmllbGQnOwokbGFuZ1sncmVxdWlyZWRmaWVsZG1hcmtlciddID0gJ01hcmsgcmVxdWlyZWQgZmllbGRzIHdpdGgnOwokbGFuZ1sncmVxdWlyZWRmaWVsZGNvbG9yJ10gPSAnSGlsaXRlIHJlcXVpcmVkIGZpZWxkcyBpbic7CiRsYW5nWyduZXh0J10gPSAnTmV4dCc7CiRsYW5nWydlcnJvcl9ncm91cGV4aXN0cyddID0gJ0EgR3JvdXAgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7CiRsYW5nWydvcHRpb25hbCddID0gJ09wdGlvbmFsJzsKJGxhbmdbJ29mZiddID0gJ09mZic7CiRsYW5nWydzaXplJ10gPSAnU2l6ZSc7CiRsYW5nWydzaXplY29tbWVudCddID0gJzxici8+KE1heGltdW0gc2l6ZSBvZiBhbnkgb25lIGRpbWVuc2lvbiBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzKSc7CiRsYW5nWydsZW5ndGgnXSA9ICdMZW5ndGgnOwokbGFuZ1snbGVuZ3RoY29tbWVudCddID0gJzxicj4oY2hhcnMgaW4gdGhlIHRleHQgaW5wdXQpJzsKJGxhbmdbJ3NlbG9wdGlvbnMnXSA9ICdEcm9wZG93biBvcHRpb25zLCBzZXBhcmF0ZWQgYnkgbGluZSBicmVha3MuICBWYWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCBmcm9tIHRleHQgd2l0aCBhID0gY2hhcmFjdGVyLiBpLmU6IEZlbWFsZT1mJzsKJGxhbmdbJ3JhZGlvb3B0aW9ucyddID0gJ1JhZGlvYnV0dG9uIGxhYmVscywgc2VwYXJhdGVkIGJ5IGxpbmUgYnJlYWtzLiBWYWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCBmcm9tIHRleHQgd2l0aCBhID0gY2hhcmFjdGVyLiBpLmU6IEZlbWFsZT1mJzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydwcm9tcHQnXSA9ICdQcm9tcHQnOwokbGFuZ1sncHJvbXB0X3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ3JlcXVpcmVkJ10gPSAnUmVxdWlyZWQnOwokbGFuZ1snZmllbGRzdGF0dXMnXSA9ICdGaWVsZCBTdGF0dXMnOwokbGFuZ1sndXNlZGlubG9zdHVuJ10gPSAnQXNrIGluIExvc3Q8YnIvPlVzZXJuYW1lJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOwokbGFuZ1snbXVsdGlzZWxlY3QnXSA9ICdNdWx0aSBTZWxlY3QgTGlzdCc7CiRsYW5nWydyYWRpb2J1dHRvbnMnXSA9ICdSYWRpbyBCdXR0b25zJzsKJGxhbmdbJ2ltYWdlJ10gPSAnSW1hZ2UnOwokbGFuZ1snZW1haWwnXSA9ICdFbWFpbCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHRhcmVhJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1snbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnXSA9ICdXZWxjb21lJzsKJGxhbmdbJ2xvZ291dCddID0gJ1NpZ24gb3V0JzsKJGxhbmdbJ3Byb21wdF9uZXdncm91cG5hbWUnXSA9ICdVc2UgdGhpcyBncm91cCBuYW1lJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncyddID0gJ0NoYW5nZSBNeSBTZXR0aW5ncyc7CiRsYW5nWydlcnJvcl9sb2dpbmZhaWxlZCddID0gJ0xvZ2luIGZhaWxlZC4gIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB5b3UgZW50ZXJlZCBhbiBpbnZhbGlkIHVzZXJuYW1lIG9yIHBhc3N3b3JkLiAgQnV0IHlvdXIgYWNjb3VudCBtYXkgaGF2ZSBhbHNvIGV4cGlyZWQgb3IgYmVlbiBkaXNhYmxlZCBieSBhbiBhZG1pbmlzdHJhdG9yLiAgUGxlYXNlIGRvdWJsZSBjaGVjayB5b3VyIGxvZ2luIGNyZWRlbnRpYWxzLCBhbmQgaWYgdGhleSBhcmUgY29ycmVjdCB5b3UgbWF5IG5lZWQgdG8gY29udGFjdCB0aGUgc2l0ZSBhZG1pbmlzdHJhdG9yLic7CiRsYW5nWydsb2dpbiddID0gJ1NpZ24gaW4nOwokbGFuZ1sncHJvbXB0X3NpZ25pbl9idXR0b24nXSA9ICdTaWduIGluIGJ1dHRvbiBsYWJlbCc7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdVc2VybmFtZSc7CiRsYW5nWydwcm9tcHRfZW1haWwnXSA9ICdFbWFpbCBBZGRyZXNzJzsKJGxhbmdbJ3Byb21wdF9wYXNzd29yZCddID0gJ1Bhc3N3b3JkJzsKJGxhbmdbJ3Byb21wdF9yZW1lbWJlcm1lJ10gPSAnUmVtZW1iZXIgbWUgb24gdGhpcyBjb21wdXRlcic7CiRsYW5nWydyZWdpc3RlciddID0gJ1JlZ2lzdGVyJzsKJGxhbmdbJ2ZvcmdvdHB3J10gPSAnRm9yZ290IFlvdXIgUGFzc3dvcmQ/JzsKJGxhbmdbJ2xvc3R1c2VybmFtZSddID0gJ0ZvcmdvdCBZb3VyIExvZ2luIERldGFpbHM/JzsKJGxhbmdbJ2RlZmF1bHRzJ10gPSAnRGVmYXVsdHMnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl91c2VybmFtZXRha2VuJ10gPSAnVGhhdCB1c2VybmFtZSAoJXMpIGlzIGFscmVhZHkgaW4gdXNlJzsKJGxhbmdbJ3Byb21wdF9zbXRwdmFsaWRhdGUnXSA9ICdVc2UgU01UUCB0byB2YWxpZGF0ZSBlbWFpbCBhZGRyZXNzZXM/JzsKJGxhbmdbJ3Byb21wdF9taW5wd2xlbiddID0gJ01pbmltdW0gUGFzc3dvcmQgTGVuZ3RoJzsKJGxhbmdbJ3Byb21wdF9tYXhwd2xlbiddID0gJ01heGltdW0gUGFzc3dvcmQgTGVuZ3RoJzsKJGxhbmdbJ3Byb21wdF9taW51bmxlbiddID0gJ01pbmltdW0gVXNlcm5hbWUgTGVuZ3RoJzsKJGxhbmdbJ3Byb21wdF9tYXh1bmxlbiddID0gJ01heGltdW0gVXNlcm5hbWUgTGVuZ3RoJzsKJGxhbmdbJ3Byb21wdF9zZXNzaW9udGltZW91dCddID0gJ1Nlc3Npb24gVGltZW91dCAoc2Vjb25kcyknOwokbGFuZ1sncHJvbXB0X2Nvb2tpZWtlZXBhbGl2ZSddID0gJ1VzZSBjb29raWVzIHRvIGtlZXAgbG9naW5zIGFsaXZlJzsKJGxhbmdbJ3Byb21wdF9hbGxvd2VtYWlscmVnJ10gPSAnQWxsb3cgRW1haWwgUmVnaXN0cmF0aW9uJzsKJGxhbmdbJ3Byb21wdF9kZmx0Z3JvdXAnXSA9ICdEZWZhdWx0IEdyb3VwIGZvciBuZXcgdXNlcnMnOwokbGFuZ1snY2hhbmdlc2V0dGluZ3NfdGVtcGxhdGUnXSA9ICdDaGFuZ2UgU2V0dGluZ3MgVGVtcGxhdGUnOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCddID0gJ1Bhc3N3b3JkcyBEbyBub3QgbWF0Y2gnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lJ10gPSAnSW52YWxpZCBVc2VybmFtZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmQnXSA9ICdJbnZhbGlkIFBhc3N3b3JkLiAgWW91ciBwYXNzd29yZCBtYXkgYmUgdG9vIHNob3J0LCB0b28gbG9uZywgb3Igbm90IHN0cm9uZyBlbm91Z2ggZm9yIHRoaXMgc3lzdGVtLiAgU2VlIHRoZSB3ZWJzaXRlcyBwYXNzd29yZCBwb2xpY3kgZm9yIG1vcmUgaW5mb3JtYXRpb24uJzsKJGxhbmdbJ2Vycm9yX3VzZXJub3Rmb3VuZCddID0gJ1NvcnJ5LCBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmcuICBXZSBjb3VsZCBub3QgZmluZCBhbnkgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdXNlcic7CiRsYW5nWydlZGl0dXNlciddID0gJ0VkaXQgVXNlcic7CiRsYW5nWyd2YWxpZCddID0gJ1ZhbGlkJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1snc3RhdHVzJ10gPSAnU3RhdHVzJzsKJGxhbmdbJ2Vycm9yX21lbWJlcmdyb3VwcyddID0gJ1RoaXMgdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IGdyb3Vwcyc7CiRsYW5nWydlcnJvcl9wcm9wZXJ0aWVzJ10gPSAnTm8gUHJvcGVydGllcyc7CiRsYW5nWydlcnJvcl9kdXBfcHJvcGVydGllcyddID0gJ0F0dGVtcHQgdG8gaW1wb3J0IGR1cGxpY2F0ZSBwcm9wZXJ0aWVzJzsKJGxhbmdbJ3ZhbHVlJ10gPSAnVmFsdWUnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3JvdXBzJzsKJGxhbmdbJ3Byb3BlcnRpZXMnXSA9ICdQcm9wZXJ0aWVzJzsKJGxhbmdbJ3Byb3BuYW1lJ10gPSAnUHJvcGVydHkgTmFtZSc7CiRsYW5nWydwcm9wdmFsdWUnXSA9ICdQcm9wZXJ0eSBWYWx1ZSc7CiRsYW5nWydhZGQnXSA9ICdBZGQnOwokbGFuZ1snaGlzdG9yeSddID0gJ0hpc3RvcnknOwokbGFuZ1snZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snZXhwaXJlcyddID0gJ0V4cGlyZXMnOwokbGFuZ1snc3BlY2lmeV9kYXRlJ10gPSAnU3BlY2lmeSBEYXRlJzsKJGxhbmdbJzEyaHJzJ10gPSAnMTIgSG91cnMnOwokbGFuZ1snMjRocnMnXSA9ICcyNCBIb3Vycyc7CiRsYW5nWyc0OGhycyddID0gJzQ4IEhvdXJzJzsKJGxhbmdbJzF3ZWVrJ10gPSAnMSBXZWVrJzsKJGxhbmdbJzJ3ZWVrcyddID0gJzIgV2Vla3MnOwokbGFuZ1snMW1vbnRoJ10gPSAnMSBNb250aCc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBNb250aHMnOwokbGFuZ1snNm1vbnRocyddID0gJzYgTW9udGhzJzsKJGxhbmdbJzF5ZWFyJ10gPSAnMSBZZWFyJzsKJGxhbmdbJ25ldmVyJ10gPSAnTmV2ZXInOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnTW9kdWxlIGluc3RhbGxlZCBzdWNlc3NmdWxseS48YnIvPkJlIHN1cmUgdG8gc2V0IHRoZSAiTW9kaWZ5IE1BTVMgUHJvcGVydGllcyBwZXJtaXNzaW9uLiAgQWRkaXRpb25hbGx5LCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgaW5zdGFsbCB0aGUgQ2FwdGNoYSBtb2R1bGUuICBJZiBpbnN0YWxsZWQsIHZhbGlkYXRpb24gb2YgYSBjYXB0Y2hhIGltYWdlIHdpbGwgYmUgcmVxdWlyZWQgaW4gYWRkaXRpb24gdG8gdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB0byBsb2dpbi4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gcHJldmVudCBicnV0ZSBmb3JjZSBhdHRhY2tzLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGUgbm9jYXB0Y2hhIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBldmVuIGlmIHRoZSBDYXB0Y2hhIG1vZHVsZSBpcyBpbnN0YWxsZWQuIic7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsIEFkZHJlc3MnOwokbGFuZ1sncGFzc3dvcmQnXSA9ICdQYXNzd29yZCc7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ0FnYWluJzsKJGxhbmdbJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnXSA9ICdHcm91cCBieSB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnRWRpdCBHcm91cCc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjb25maXJtX2VkaXRncm91cCddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGlzIHRoZSBwcm9wZXIgc2V0dGluZ3MgZm9yIHRoaXMgZ3JvdXA/XG5UdXJuaW5nIGEgcHJvcGVydHkgb2ZmIHdpbGwgbm90IGRlbGV0ZSBhbnkgZW50cmllcyBpbiB0aGUgcHJvcGVydGllcyB0YWJsZSBmb3IgdGhpcyBncm91cC91c2VyLiAgVGhleSB3aWxsIG1lcmVseSBiZSB1bmF2YWlsYWJsZS4nOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGVncm91cCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBncm91cD8nOwokbGFuZ1snY29uZmlybV9kZWxldGVfcHJvcCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb21wbGV0ZWx5IGRlbGV0ZSB0aGlzIHByb3BlcnR5P1xuRG9pbmcgc28gd2lsbCBhbHNvIGVyYXNlIGFueSB1c2VyIGVudHJpZXMgZm9yIHRoaXMgcHJvcGVydHkuJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ0luc3VmZmljaWVudCBQYXJhbWV0ZXJzJzsKJGxhbmdbJ2lkJ10gPSAnSWQnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdVc2VybmFtZSc7CiRsYW5nWyduYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydlcnJvcl9jYW50YWRkcHJvcCddID0gJ1Byb2JsZW0gYWRkaW5nIHByb3BlcnR5JzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRncm91cHJlbG4nXSA9ICdQcm9ibGVtIGFkZGluZyBncm91cCByZWxhdGlvbic7CiRsYW5nWydlcnJvcl9jYW50YWRkZ3JvdXAnXSA9ICdQcm9ibGVtIGFkZGluZyBncm91cCc7CiRsYW5nWydlcnJvcl9jYW50YXNzaWdudXNlciddID0gJ1Byb2JsZW0gYWRkaW5nIGEgdXNlciB0byBhIGdyb3VwJzsKJGxhbmdbJ2Vycm9yX2NvdWxkbm90ZGVsZXRlcHJvcGVydHknXSA9ICdQcm9ibGVtIGRlbGV0aW5nIGEgcHJvcGVydHknOwokbGFuZ1snZXJyb3JfY291bGRub3RmaW5kZW1haWwnXSA9ICdDb3VsZCBub3QgZmluZCBhbiBlbWFpbCBhZGRyZXNzJzsKJGxhbmdbJ2Vycm9yX2Rlc3RpbmF0aW9ubm90d3JpdGFibGUnXSA9ICdObyB3cml0ZSBwZXJtaXNzaW9uIHRvIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnSW52YWxpZCBQYXJhbWV0ZXJzJzsKJGxhbmdbJ2Vycm9yX25vZ3JvdXBzJ10gPSAnQ291bGQgbm90IGZpbmQgYW55IGdyb3Vwcyc7CiRsYW5nWydhcHBseWZpbHRlciddID0gJ0FwcGx5JzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWyd1c2VyZmlsdGVyJ10gPSAnVXNlcm5hbWUgUmVndWxhciBFeHByZXNzaW9uJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnR3JvdXAgTmFtZSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3InOwokbGFuZ1snYWRkZ3JvdXAnXSA9ICdBZGQgR3JvdXAnOwokbGFuZ1snaW1wb3J0Z3JvdXAnXSA9ICdJbXBvcnQgR3JvdXAnOwokbGFuZ1snYWRkdXNlciddID0gJ0FkZCBVc2VyJzsKJGxhbmdbJ2dyb3Vwc2ZvdW5kJ10gPSAnR3JvdXBzIEZvdW5kJzsKJGxhbmdbJ3VzZXJzZm91bmQnXSA9ICdVc2VycyBmb3VuZCB0aGF0IG1hdGNoIHRoZSBjcml0ZXJpYSc7CiRsYW5nWydncm91cCddID0gJ0dyb3VwJzsKJGxhbmdbJ3NlbGVjdGdyb3VwJ10gPSAnU2VsZWN0IEdyb3VwJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ1JlZ2lzdHJhdGlvbiBUZW1wbGF0ZSc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdMb2dvdXQgVGVtcGxhdGUnOwokbGFuZ1snbG9naW5fdGVtcGxhdGUnXSA9ICdMb2dpbiBUZW1wbGF0ZSc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ2dyb3VwcyddID0gJ0dyb3Vwcyc7CiRsYW5nWyd1c2VycyddID0gIlVzZXJzIjsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01lbWJlcnMgQXJlYSAoTUFNUyknOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGU6IGFsbG93IHVzZXJzIHRvIGxvZyBpbiB0byB0aGUgZnJvbnRlbmQgb2YgeW91ciBzaXRlJzsKJGxhbmdbJ2RlZmF1bHRmcm9udHBhZ2UnXSA9ICJEZWZhdWx0IGZyb250IHBhZ2UiOwokbGFuZ1snbGFzdGFjY2Vzc2VkcGFnZSddID0gJ0xhc3QgYWNjZXNzZWQgcGFnZSc7CiRsYW5nWydvdGhlcnBhZ2UnXSA9ICdPdGhlciBwYWdlOiAnOwokbGFuZ1snY2FwdGNoYV90aXRsZSddID0gJ1BsZWFzZSB2ZXJpZnkgeW91IGFyZSBub3QgYSBib3QuJzsKCiMgTElTRSBjdXN0b20gZmllbGRzCiRsYW5nWydmaWVsZGRlZl9NQU1TU2luZ2xlU2VsZWN0J10gPSAnTUFNUyBVc2VycyBTaW5nbGUgU2VsZWN0JzsKJGxhbmdbJ2ZpZWxkZGVmX01BTVNNdWx0aVNlbGVjdCddID0gJ01BTVMgVXNlcnMgTXVsdGkgU2VsZWN0JzsKJGxhbmdbJ2ZpZWxkZGVmX01BTVNHcm91cHNTaW5nbGVTZWxlY3QnXSA9ICdNQU1TIEdyb3VwcyBTaW5nbGUgU2VsZWN0JzsKJGxhbmdbJ2ZpZWxkZGVmX01BTVNHcm91cHNNdWx0aVNlbGVjdCddID0gJ01BTVMgR3JvdXBzIE11bHRpIFNlbGVjdCc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX29wdGlvbnMnXSA9ICdNQU1TIEdyb3Vwcyc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX211bHRpc2VsZWN0X2hlbHAnXSA9ICdQbGVhc2Ugc2VsZWN0IG9uZSBvciBtb3JlIG9mIHRoZSBhdmFpbGFibGUgTUFNUyBHcm91cHMnOwokbGFuZ1snZmllbGRkZWZfbWFtc19maWVsZHNfaGVscCddID0gJ1BsZWFzZSBzZWxlY3QgdGhlIGN1c3RvbSBmaWVsZCBmcm9tIE1BTVMgZnJvbSB3aGljaCB0byBkcmF3IHRoZSB2YWx1ZXMgdGhhdCB3aWxsIGJlIHNob3duIG9uIHRoZSBzZWxlY3QgZmllbGQuPGJyPk5vdGUgdGhhdCB0aGUgc2VsZWN0ZWQgZmllbGQgc2hvdWxkIGhhdmUgdW5pcXVlIHZhbHVlcyBhY3Jvc3MgYWxsIEZFVSB1c2VycyBlbnRyaWVzLic7CiRsYW5nWydmaWVsZGRlZl9tYW1zX2ZpZWxkcyddID0gJ1NlbGVjdCAxc3QgTUFNUyBGaWVsZCc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX2ZpZWxkczInXSA9ICdTZWxlY3QgMm5kIE1BTVMgRmllbGQnOwokbGFuZ1snZmllbGRkZWZfdXNlcnMnXSA9ICdVc2Vycyc7CiRsYW5nWydmaWVsZGRlZl91c2VfdXNlcm5hbWUnXSA9ICdVc2UgVXNlcm5hbWUgRmllbGQnOwokbGFuZ1snZmllbGRkZWZfdXNlX3VpZCddID0gJ1ByZXBlbmQgVXNlciBJRCc7CiRsYW5nWydmaWVsZGRlZl91c2VfdWlkX2hlbHAnXSA9ICdQcmVwZW5kIHVzZXIgaWQgdG8gdGhlIG9wdGlvbnMgaW4gW25dIGZvcm1hdC4nOwokbGFuZ1snZmllbGRkZWZfdXNlX3VzZXJuYW1lX2hlbHAnXSA9ICdJZiB5b3UgY2hlY2sgdGhpcyBvcHRpb24sIHRoZSBjdXN0b20gZmllbGRzIGJlbG93IHdpbGwgbm90IGJlIHVzZWQuJzsKJGxhbmdbJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHInXSA9ICdTZXBhcmF0b3IgQ2hhcmFjdGVyJzsKJGxhbmdbJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHJfaGVscCddID0gJ0NoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIGZpZWxkIDEgYW5kIGZpZWxkIDIgb24gdGhlIG9wdGlvbnMgdGV4dC4gRGVmYXVsdCBpcyBhIHNwYWNlIGNoYXJhY3Rlci4nOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.ClearUserHistoryTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBDbGVhclVzZXJIaXN0b3J5VGFzayBpbXBsZW1lbnRzIFxDbXNSZWd1bGFyVGFzawp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICAgewogICAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Rlc2NyaXB0aW9uKCkge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCggJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoIE1PRF9NQU1TICk7CiAgICAgICAgJHRtcCA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ2NsZWFyaGlzdG9yeV9hZ2UnKTsKICAgICAgICBpZiggJHRtcCA8IDEgKSByZXR1cm47CiAgICAgICAgJGxhc3RydW4gPSAoaW50KSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfbGFzdHJ1bicsMCk7CiAgICAgICAgaWYoICRsYXN0cnVuID4gdGltZSgpIC0gMjQgKiAzNjAwICkgcmV0dXJuOwoKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSggJHRpbWUgPSAnJyApCiAgICB7CiAgICAgICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCBNT0RfTUFNUyApOwogICAgICAgICRtYXhfYWdlX2RheXMgPSAoaW50KSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfYWdlJyk7CiAgICAgICAgLy8gZGVsZXRlIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgaGlzdG9yeSB0aGF0IGlzIG9sZGVyIHRoYW4gJG1heF9hZ2VfZGF5cwoKICAgICAgICAkb2xkZXJfdGhhbiA9IHRpbWUoKSAtICRtYXhfYWdlX2RheXMgKiAyNCAqIDM2MDA7CiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCAnTUFNUzo6Q2xlYXJVc2VySGlzdG9yeScsICRvbGRlcl90aGFuICk7CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfaGlzdG9yeSBXSEVSRSByZWZkYXRlIDwgPyc7CiAgICAgICAgJGRiID0gJG1vZC0+R2V0RGIoKTsKICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsICRkYi0+RGJUaW1lU3RhbXAoICRvbGRlcl90aGFuICkgKTsKCiAgICAgICAgYXVkaXQoJycsJ01BTVMnLCdSZW1vdmVkIGhpc3RvcnkgZW50cmllcyBvbGRlciB0aGFuICcuc3RyZnRpbWUoICcleCAlWCcsICRvbGRlcl90aGFuICkpOwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgICB7CiAgICAgICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSggTU9EX01BTVMgKTsKICAgICAgICAkbWFtcy0+U2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2xhc3RydW4nLCR0aW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgIH0KCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.email_verify_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBlbWFpbF92ZXJpZnlfYXNzaXN0YW50IGV4dGVuZHMgdmVyaWZpY2F0aW9uX2Fzc2lzdGFudAp7CiAgICBwcml2YXRlICRfdGVtcGxhdGU7CiAgICBwcml2YXRlICRfc3ViamVjdDsKICAgIHByaXZhdGUgJF90aXRsZTsKICAgIHByaXZhdGUgJF9tc2c7CiAgICBwcml2YXRlICRfY29kZV9wcm9tcHQ7CiAgICBwcml2YXRlICRfbGlua19wcm9tcHQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfZGVmYXVsdF90ZW1wbGF0ZSgpCiAgICB7CiAgICAgICAgJHR5cGVuYW1lID0gJ01BTVM6OmZvcmdvdCBwYXNzd29yZCBlbWFpbCc7CiAgICAgICAgJHRwbCA9IFxDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJHR5cGVuYW1lKTsKICAgICAgICBpZiggISR0cGwgKSB7CiAgICAgICAgICAgIGF1ZGl0KCcnLCdNQU1TJywnTm8gZGVmYXVsdCB0ZW1wbGF0ZSBvZiB0eXBlICcuJHR5cGVuYW1lLicgZm91bmQnKTsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdObyBkZWZhdWx0IHRlbXBsYXRlIG9mIHR5cGUgJy4kdHlwZW5hbWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRwbC0+Z2V0X25hbWUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIFxNQU1TICRtYW1zICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYW1zKTsKCiAgICAgICAgJHRoaXMtPl90ZW1wbGF0ZSA9ICR0aGlzLT5nZXRfZGVmYXVsdF90ZW1wbGF0ZSgpOwogICAgICAgICR0aGlzLT5fc3ViamVjdCA9ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudCBmb3Ige3NpdGVuYW1lfSc7CiAgICAgICAgJHRoaXMtPl90aXRsZSA9ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudCc7CiAgICAgICAgJHRoaXMtPl9tc2cgPSAnPHA+Rm9yIHNlY3VyaXR5IHB1cnBvc2VzIHdlIG5lZWQgdG8gdmFsaWRhdGUgeW91ciBpZGVudGl0eS4gIFRoaXMgaXMgZG9uZSBieSB2ZXJpZnlpbmcgdGhhdCB5b3UgcmVjZWl2ZWQgdGhpcyBlbWFpbCBjb3JyZWN0bHksIGFuZCBjYW4gZm9sbG93IHRoZXNlIGluc3RydWN0aW9ucy48L3A+CjxwPkJlbG93LCBXZSBoYXZlIHByb3ZpZGVkIGEgdW5pcXVlIHNlY3VyaXR5IGNvZGUgdG8gdXNlIHRvIHZhbGlkYXRlIHlvdXIgY3JlZGVudGlhbHMuIFBsZWFzZSBjbGljayBvbiB0aGUgbGluayBwcm92aWRlZCBhbmQgZW50ZXIgdGhlIHNlY3VyaXR5IGNvZGUuIDxlbT5JdCBtYXkgYWxyZWFkeSBiZSBmaWxsZWQgaW4gb24gdGhlIGZvcm08L2VtPi4gIFRoaXMgd2lsbCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGFuZCBhbGxvdyB5b3UgdG8gbG9naW4gdG8gdGhlIHNlcnZpY2UuPC9wPic7CiAgICAgICAgJHRoaXMtPl9jb2RlX3Byb21wdCA9ICdZb3VyIHNlY3VyaXR5IGNvZGUgaXM6JzsKICAgICAgICAkdGhpcy0+X2xpbmtfcHJvbXB0ID0gJ1BsZWFzZSBjbGljayBvbiB0aGlzIGxpbmsnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRUZW1wbGF0ZSgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl90ZW1wbGF0ZSA9ICRzdHI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFRpdGxlKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICRzdHIgKSAkdGhpcy0+X3RpdGxlID0gJHN0cjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0U3ViamVjdCgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl9zdWJqZWN0ID0gJHN0cjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0TWVzc2FnZSgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl9tc2cgPSAkc3RyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRDb2RlUHJvbXB0KCRzdHIpCiAgICB7CiAgICAgICAgaWYoICRzdHIgKSAkdGhpcy0+X2NvZGVfcHJvbXB0ID0gJHN0cjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0TGlua1Byb21wdCgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl9saW5rX3Byb21wdCA9ICRzdHI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlbmQoICR1aWQsICRjb2RlICkKICAgIHsKICAgICAgICAkdWlkID0gKGludCkgJHVpZDsKICAgICAgICAkY29kZSA9IHRyaW0oJGNvZGUpOwogICAgICAgICRkZXN0cGFnZSA9ICR0aGlzLT5nZXRfZGVzdHBhZ2UoKTsKICAgICAgICBpZiggJHVpZCA8IDEgfHwgZW1wdHkoJGNvZGUpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0JhZCBkYXRhIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICRlbWFpbCA9ICR0aGlzLT5tYW1zLT5HZXRFbWFpbCgkdWlkKTsKICAgICAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0F0dGVtcHQgdG8gY3JlYXRlIGEgJy5fX0NMQVNTX18uJyBmb3IgYSB1c2VyIHdpdGhvdXQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyk7CgogICAgICAgIC8vIGNvZGUgd2lsbCBiZSBzZW50IGluIHRoZSBVUkwKICAgICAgICAkdXJsID0gJHRoaXMtPmdldF92ZXJpZnlfZm9ybV91cmwoICR1aWQsICRjb2RlICk7CgogICAgICAgICR0cGwgPSAkdGhpcy0+bWFtcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoaXMtPl90ZW1wbGF0ZSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCd0aXRsZScsJHRoaXMtPl90aXRsZSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlX2ZvcmdvdHB3bWFpbCcsJHRoaXMtPl9tc2cpOwogICAgICAgICR0cGwtPmFzc2lnbignbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJywkdGhpcy0+X21zZyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+X21zZyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfY29kZScsJHRoaXMtPl9jb2RlX3Byb21wdCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfbGluaycsJHRoaXMtPl9saW5rX3Byb21wdCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdkZXN0cGFnZScsJGRlc3RwYWdlKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RhdGFfY29kZScsJGNvZGUpOwogICAgICAgICR0cGwtPmFzc2lnbignc3ViamVjdCcsJHRoaXMtPl9zdWJqZWN0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RhdGFfdXJsJywkdXJsKTsKICAgICAgICAkYm9keSA9ICR0cGwtPmZldGNoKCk7CgogICAgICAgIC8vIGR1cGxpY2F0ZWQgY29kZS4uLiBJIGtub3csIEkga25vdy4uLiBzaGFkZGFwCiAgICAgICAgJHNtYXJ0eSA9ICR0aGlzLT5tYW1zLT5jbXMtPkdldFNtYXJ0eSgpOwogICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRoaXMtPl9zdWJqZWN0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+X3RpdGxlKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdtYWlsJywkdGhpcy0+X21zZyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlX2ZvcmdvdHB3ZW1haWwnLCR0aGlzLT5fbXNnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5fbXNnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF9jb2RlJywkdGhpcy0+X2NvZGVfcHJvbXB0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF9saW5rJywkdGhpcy0+X2xpbmtfcHJvbXB0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2Rlc3RwYWdlJywkZGVzdHBhZ2UpOwogICAgICAgICR0cGwtPmFzc2lnbignZGF0YV9jb2RlJywkY29kZSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdzdWJqZWN0JywkdGhpcy0+X3N1YmplY3QpOwogICAgICAgICR0cGwtPmFzc2lnbignZGF0YV91cmwnLCR1cmwpOwogICAgICAgICRzdWJqZWN0ID0gJHRwbC0+ZmV0Y2goKTsKCiAgICAgICAgJG1haWxlciA9IG5ldyBcY21zX21haWxlcigpOwogICAgICAgICRtYWlsZXItPkFkZEFkZHJlc3MoJGVtYWlsKTsKICAgICAgICAkbWFpbGVyLT5TZXRCb2R5KCRib2R5KTsKICAgICAgICAkbWFpbGVyLT5TZXRTdWJqZWN0KCRzdWJqZWN0KTsKICAgICAgICAkbWFpbGVyLT5Jc0hUTUwoVFJVRSk7CiAgICAgICAgJG1haWxlci0+U2V0UHJpb3JpdHkoMSk7CiAgICAgICAgJG1haWxlci0+U2VuZCgpOwoKICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5tYW1zLT5HZXROYW1lKCksJ1ZlcmlmaWNhdGlvbiBlbWFpbCBzZW50Jyk7CiAgICAgICAgJHRoaXMtPm1hbXMtPmFkZF9oaXN0b3J5KCR1aWQsJ2luaXRfdmVyaWZ5Jyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.feu_importer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmNsYXNzIERiRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7fQ0KY2xhc3MgRGJEcm9wRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7fQ0KY2xhc3MgRGJSb2xsQmFja0V4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24ge30NCg0KY2xhc3MgZmV1X2ltcG9ydGVyDQp7DQogIHByaXZhdGUgc3RhdGljICRfaW5pdGlhbGl6ZWQgICA9IEZBTFNFOw0KICBwcml2YXRlIHN0YXRpYyAkX2ZldSAgICAgICAgICAgPSBGQUxTRTsNCiAgcHJpdmF0ZSBzdGF0aWMgJF9mZXVfaW5zdGFsbGVkID0gRkFMU0U7DQogIHByaXZhdGUgc3RhdGljICRfbW9kICAgICAgICAgICA9IEZBTFNFOw0KICBwcml2YXRlIHN0YXRpYyAkX2RiICAgICAgICAgICAgPSBGQUxTRTsNCiAgDQogIHByaXZhdGUgc3RhdGljICRfdGFibGVzICAgICAgICA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnZWRpbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZWxvbmdzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BkZWZuJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3ducycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cHByb3BtYXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wY29kZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaXN0b3J5Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgDQogIHByaXZhdGUgc3RhdGljICRfaW5kZXhlc190YWJsZXMgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYmVsb25ncycsICdpZHhfYmVsb25ncyddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3VzZXJzJywgJ2lkeF91c2VybmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3VzZXJzJywgJ2lkeF9leHBpcmVzJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaGlzdG9yeScsICdpZHhfcmVmZGF0ZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Byb3BlcnRpZXMnLCAnaWR4X3Byb3B1c2VydGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwcm9wZXJ0aWVzJywgJ2lkeF9wcm9wdGl0bGUnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBwcml2YXRlIHN0YXRpYyAkX2luZGV4ZXMgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfYmVsb25ncycgICAgICAgPT4gWydncm91cGlkJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfdXNlcm5hbWUnICAgICAgPT4gWyd1c2VybmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWR4X2V4cGlyZXMnICAgICAgID0+IFsnZXhwaXJlcyddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWR4X3JlZmRhdGUnICAgICAgID0+IFsndXNlcmlkJywgJ3JlZmRhdGUnLCAnYWN0aW9uJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfcHJvcHVzZXJ0aXRsZScgPT4gWyd1c2VyaWQnLCAndGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkeF9wcm9wdGl0bGUnICAgICA9PiBbJ3RpdGxlJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07DQogIA0KICBwcml2YXRlIHN0YXRpYyAkX3ByZWZzICAgICAgICAgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN1cmVfZmllbGRfY29sb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdXJlX2ZpZWxkX21hcmtlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dpbl9hZnRlcl92ZXJpZnknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2lnbmluX2J1dHRvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRfbG9zdHB3JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkX3JlcXVpcmVkY2hhcnMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dfY2hhbmdldXNlcm5hbWUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydF9sb3N0dW4nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX3VzZXJzYWx0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZWFnZV9tb250aHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90aWZpY2F0aW9uX3N1YmplY3QnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dfcmVwZWF0ZWRfbG9naW5zJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkZmxkbGVuZ3RoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lZmxkbGVuZ3RoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lX2lzX2VtYWlsJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2FmdGVydmVyaWZ5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9sb2dvdXQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2xvZ2luJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW5fZmllbGRfY29sb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW5fZmllbGRfbWFya2VyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVfb25lZ3JvdXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9ncm91cCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlZF9maWVsZF9tYXJrZXInLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llbmFtZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWVfa2VlcGFsaXZlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJfc2Vzc2lvbl9leHBpcmVzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF91c2VybmFtZWxlbmd0aCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5fdXNlcm5hbWVsZW5ndGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHdyZXF1aXJlZGNoYXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuaGFuY2VkX3Bhc3N3b3JkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbl9wYXNzd29yZGxlbmd0aCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfcGFzc3dvcmRsZW5ndGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkZm9yZ290cGFzc3dkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9vbnZlcmlmeScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWdlaWRfYWZ0ZXJjaGFuZ2VzZXR0aW5ncycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvX2NyZWF0ZV91bmtub3duJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhfbW9kdWxlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsZWFyaGlzdG9yeV9hZ2UnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX3JhbmRvbXVzZXJuYW1lJywNCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjZWxvZ291dF90aW1lcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZXVzZXJzX2ludGVydmFsJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgDQogIA0KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfaW5pdGlhbGl6ZSgpDQogIHsNCiAgICBpZighc2VsZjo6JF9pbml0aWFsaXplZCkNCiAgICB7DQogICAgICBzZWxmOjokX2ZldSAgICAgICAgICAgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7DQogICAgICBzZWxmOjokX21vZCAgICAgICAgICAgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7DQogICAgICBzZWxmOjokX2RiICAgICAgICAgICAgPSBcY21zX3V0aWxzOjpnZXRfZGIoKTsNCiAgICAgICRtb2RzICAgICAgICAgICAgICAgICA9IFxNb2R1bGVPcGVyYXRpb25zOjpnZXRfaW5zdGFuY2UoKS0+R2V0SW5zdGFsbGVkTW9kdWxlcygpOw0KICAgICAgc2VsZjo6JF9mZXVfaW5zdGFsbGVkID0gaW5fYXJyYXkoJ0Zyb250RW5kVXNlcnMnLCAkbW9kcyk7DQogICAgICBzZWxmOjokX2luaXRpYWxpemVkICAgPSBUUlVFOw0KICAgIH0NCiAgfQ0KICANCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX2lzX2ZldV9hY3RpdmUoKQ0KICB7DQogICAgcmV0dXJuIFxNb2R1bGVPcGVyYXRpb25zOjpnZXRfaW5zdGFuY2UoKS0+SXNNb2R1bGVBY3RpdmUoJ0Zyb250RW5kVXNlcnMnKTsNCiAgfQ0KICANCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX2lzX2ZldV9pbnN0YWxsZWQoKQ0KICB7DQogICAgc2VsZjo6X2luaXRpYWxpemUoKTsNCiAgICByZXR1cm4gc2VsZjo6JF9mZXVfaW5zdGFsbGVkOw0KICB9DQogIA0KICBzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiBfaGF2ZV9mZXUoKQ0KICB7DQogICAgcmV0dXJuIChzZWxmOjpfaXNfZmV1X2luc3RhbGxlZCgpICYmIHNlbGY6Ol9pc19mZXVfYWN0aXZlKCkgJiYgaXNfb2JqZWN0KHNlbGY6OiRfZmV1KSApOw0KICB9DQogIA0KICAvKioNCiAgICogYmFja3MgdXAgTUFNUyB0YWJsZXMNCiAgICogQHRocm93cyBcTUFNU1xEYkV4Y2VwdGlvbg0KICAgKi8NCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX0NvcHlNYW1zVGFibGVzMmJrdXAoKQ0KICB7DQogICAgJHByZWZpeF9mID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc18nOw0KICAgICRwcmVmaXhfdCA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfX3RtcF9fJzsNCiAgDQogICAgZm9yZWFjaChzZWxmOjokX3RhYmxlcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgICRmID0gJHByZWZpeF9mIC4gJG9uZTsNCiAgICAgICR0ID0gJHByZWZpeF90IC4gJG9uZTsNCiAgICANCiAgICAgIFxhdWRpdCg4MDA4NSwgJ2ZldTJtYW1zJywgJ3Byb2Nlc3NpbmcgdGFibGUgJyAuICR0KTsNCiAgICAgIA0KICAgICAgJHEgPSAnRFJPUCBUQUJMRSBJRiBFWElTVFMgJyAuICR0Ow0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgDQogICAgICBcYXVkaXQoODAwODUsICdmZXUybWFtcycsICdjcmVhdGluZyB0YWJsZSAnIC4gJHQpOw0KICANCiAgICAgICRxID0gJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICcgLiAkdCAuICcgTElLRSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICAgIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnY3JlYXRlZCAsIGNvcHlpbmcuLi4nKTsNCiAgICAgIA0KICAgICAgJHEgPSAnSU5TRVJUICcgLiAkdCAuICcgU0VMRUNUICogRlJPTSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgDQogICAgICBcYXVkaXQoODAwODUsICdmZXUybWFtcycsICdjb3B5ZWQhJyk7DQogICAgfQ0KICB9DQogIA0KICAvKioNCiAgICogY29waWVzIHRhYmxlcyBmcm9tIEZFVSAyIE1BTVMNCiAgICogQHRocm93cyBcTUFNU1xEYkV4Y2VwdGlvbg0KICAgKi8NCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX0NvcHlGZXVUYWJsZXMyTWFtcygpDQogIHsNCiAgICAkcHJlZml4X2YgPSBcY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9mZXVzZXJzXyc7DQogICAgJHByZWZpeF90ID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc18nOw0KICANCiAgICAkcSA9ICdTRVQgZm9yZWlnbl9rZXlfY2hlY2tzID0gMCc7DQogICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgaWYoISRyKSB0aHJvdyBuZXcgRGJFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogICAgDQogICAgZm9yZWFjaChzZWxmOjokX3RhYmxlcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgICRmID0gJHByZWZpeF9mIC4gJG9uZTsNCiAgICAgICR0ID0gJHByZWZpeF90IC4gJG9uZTsNCiAgICAgIA0KICAgICAgJHEgPSAnRFJPUCBUQUJMRSBJRiBFWElTVFMgJyAuICR0Ow0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgICAgIA0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRGJFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICANCiAgICAgICRxID0gJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICcgLiAkdCAuICcgTElLRSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgDQogICAgICAkcSA9ICdJTlNFUlQgJyAuICR0IC4gJyBTRUxFQ1QgKiBGUk9NICcgLiAkZjsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRGJFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIH0NCiAgICAkcSA9ICdTRVQgZm9yZWlnbl9rZXlfY2hlY2tzID0gMSc7DQogICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgaWYoISRyKSB0aHJvdyBuZXcgRGJFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogICAgDQogIH0NCiAgDQogIC8qKg0KICAgKiBSb2xscyBiYWNrIGkuZS4gZ2V0cyBvcmlnaW5hbCB0YWJsZXMgZnJvbSBiYWNrdXANCiAgICogQHRocm93cyBcTUFNU1xEYlJvbGxCYWNrRXhjZXB0aW9uDQogICAqLw0KICBzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiBfUm9sbEJhY2soKQ0KICB7DQogICAgJHByZWZpeF9mID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19fdG1wX18nOw0KICAgICRwcmVmaXhfdCA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfJzsNCiAgDQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDAnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogICAgDQogICAgZm9yZWFjaChzZWxmOjokX3RhYmxlcyBhcyAkb25lKQ0KICAgIHsgICAgICAkZiA9ICRwcmVmaXhfZiAuICRvbmU7DQogICAgICANCiAgICAgICR0ID0gJHByZWZpeF90IC4gJG9uZTsNCiAgICAgIA0KICAgICAgJHEgPSAnRFJPUCBUQUJMRSBJRiBFWElTVFMgJyAuICR0Ow0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgICAgIA0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRGJSb2xsQmFja0V4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgJHEgPSAnQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJyAuICR0IC4gJyBMSUtFICcgLiAkZjsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRGJSb2xsQmFja0V4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgJHEgPSAnSU5TRVJUICcgLiAkdCAuICcgU0VMRUNUICogRlJPTSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIH0NCiAgDQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDEnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBkcm9wcyB0ZW1wb3JhcnkgYmFja3VwIHRhYmxlcw0KICAgKiBAdGhyb3dzIFxNQU1TXERiRHJvcEV4Y2VwdGlvbg0KICAgKi8NCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX0Ryb3BUZW1wcygpDQogIHsNCiAgICAkcHJlZml4ID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19fdG1wX18nOw0KICAgIA0KICAgICMgdHJ5IHJldmVyc2luZyB0aGUgb3JkZXIgdG8gcHJldmVudCBmb3JlaWduIGtleSBjb25zdHJhaW50cyBmYWlscw0KICAgICMgJHRhYmxlcyA9IGFycmF5X3JldmVyc2Uoc2VsZjo6JF90YWJsZXMpOw0KICAgIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAwJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYkRyb3BFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogICAgDQogICAgZm9yZWFjaChzZWxmOjokX3RhYmxlcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgICR0ID0gJHByZWZpeCAuICRvbmU7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnZHJvcHBpbmcgdGFibGUgJyAuICR0KTsNCiAgICAgIA0KICAgICAgJHEgPSAnRFJPUCBUQUJMRSBJRiBFWElTVFMgJyAuICR0Ow0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgICAgIA0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRGJEcm9wRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgDQogICAgICBcYXVkaXQoODAwODUsICdmZXUybWFtcycsICdkcm9wcGVkIScpOw0KICAgIH0NCiAgDQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDEnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRHJvcEV4Y2VwdGlvbigNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEB0aHJvd3MgXE1BTVNcRGJFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9SZW5hbWVJbmRleGVzKCkNCiAgew0KICAgICRwcmVmaXggPSBcY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zXyc7DQogICAgDQogICAgZm9yZWFjaChzZWxmOjokX2luZGV4ZXNfdGFibGVzIGFzICRvbmUpDQogICAgew0KICAgICAgbGlzdCgkdGFibGUsICRpbmRleF9uYW1lKSA9ICRvbmU7DQogICAgICAkdGFibGVuYW1lID0gJHByZWZpeCAuICR0YWJsZTsNCiAgICAgICRkcm9wICAgICAgPSAnY21zX2ZldV8nIC4gJGluZGV4X25hbWU7DQogICAgICAkYWRkICAgICAgID0gJ2Ntc19tYW1zXycgLiAkaW5kZXhfbmFtZTsNCiAgICAgICRmaWVsZHMgICAgPSBpbXBsb2RlKCcsJywgc2VsZjo6JF9pbmRleGVzWyRpbmRleF9uYW1lXSk7DQogICAgICANCiAgICAgICRxID0gJ0FMVEVSIFRBQkxFICcgLiAkdGFibGVuYW1lDQogICAgICAgICAgIC4gJyBEUk9QIElOREVYICcgLiAkZHJvcA0KICAgICAgICAgICAuICcsIEFERCBJTkRFWCAnIC4gJGFkZCAuICcgKCcgLiAkZmllbGRzIC4gJykgVVNJTkcgQlRSRUUnOw0KICANCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRGJFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIH0NCiAgICANCiAgfQ0KICANCg0KICBzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiBfQ29weVByZWZlcmVuY2VzKCkNCiAgew0KICAgIGZvcmVhY2goc2VsZjo6JF9wcmVmcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgIHNlbGY6OiRfbW9kLT5TZXRQcmVmZXJlbmNlKCAkb25lLCBzZWxmOjokX2ZldS0+R2V0UHJlZmVyZW5jZSgkb25lKSApOw0KICAgIH0NCiAgICANCiAgICAjIG9ubHkgZXhjZXB0aW9uIGZvdW5kIGlzIHRoaXMgb25lDQogIA0KICAgIHNlbGY6OiRfbW9kLT5TZXRQcmVmZXJlbmNlKCAnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsIHNlbGY6OiRfZmV1LT5HZXRQcmVmZXJlbmNlKCdmZXVfc3BlY2lmaWNfcGVybWlzc2lvbnMnKSApOw0KICB9DQogIA0KICAvKioNCiAgICogcHVibGljIG1ldGhvZHMNCiAgICovDQogIA0KICBzdGF0aWMgZnVuY3Rpb24gcnVuKCkNCiAgew0KICAgIHNlbGY6Ol9pbml0aWFsaXplKCk7DQogICAgJGNvZGUgPSAwOw0KICAgICRtc2cgPSAnT0snOw0KICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICRmYWlsID0gRkFMU0U7DQogICAgDQogICAgaWYoICFzZWxmOjpfaXNfZmV1X2luc3RhbGxlZCgpICkNCiAgICB7DQogICAgICAkY29kZSA9IDE7DQogICAgICAkbXNnID0gJ25vX2ZldV9pbnN0YWxsJzsNCiAgICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICAgcmV0dXJuIFtGQUxTRSwgJGVycl07DQogICAgfQ0KICAgIA0KICAgICMgYmFja3VwIE1BTVMgdGFibGVzDQogICAgdHJ5DQogICAgew0KICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ1N0YXJ0IG1ha2luZyBiYWNrdXBzJyk7DQogICAgICBzZWxmOjpfQ29weU1hbXNUYWJsZXMyYmt1cCgpOw0KICAgIH0NCiAgICBjYXRjaCggRGJFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICANCiAgICAgIHRyeQ0KICAgICAgew0KICAgICAgICAjIHNvbWV0aGluZyB3ZW50IHdyb25nIHJlbW92ZSB0aGUgYmFja3VwcyBhbnl3YXkNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ1NvbWV0aGluZyB3ZW50IHdyb25nIGNyZWF0aW5nIGJhY2t1cHMgb2YgTUFNUyB0YWJsZXMuLi4gZ29pbmcgdG8gZHJvcCB0ZW1wIHRhYmxlcyEnKTsNCiAgICAgICAgc2VsZjo6X0Ryb3BUZW1wcygpOw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQmFja3VwIHRhYmxlcyBkcm9wcGVkIHN1Y2Nlc3NmdWxseSEnKTsNCiAgICAgIH0NCiAgICAgIGNhdGNoKCBEYkRyb3BFeGNlcHRpb24gJGUpDQogICAgICB7DQogICAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciBkcm9wcGluZyBNQU1TIHRlbXAgdGFibGVzLi4uJyk7DQogICAgICB9DQogICAgICBmaW5hbGx5DQogICAgICB7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdDb3B5aW5nIHRhYmxlcyBmcm9tIEZFVSBmYWlsZWQhIEltcG9ydCBhYm9ydGVkIGFuZCBzb21lIGNsZWFuaW5nIHVwIHdhcyBhdHRlbXB0ZWQuJyk7DQogICAgICAgICMgd2hldGhlciBiYWNrdXAgZmFpbGVkIG9yIGJvdGggYmFja3VwIGFuZCBkcm9wIHRlbXBzDQogICAgICAgICMgd2UgcmV0dXJuIHRoZSBlcnJvciBjb2RlIC0tIHRoZXJlIGlzIG9ubHkgc28gbXVjaCB3ZSBjYW4gZG8NCiAgICAgICAgJGVyciA9IFskY29kZSwgJG1zZ107DQogICAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAjIGNvcHkgRkVVIDIgTUFNUw0KICAgIHRyeQ0KICAgIHsNCiAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdTdGFydCBjb3B5aW5nIHRhYmxlcyBmcm9tIEZFVScpOw0KICAgICAgc2VsZjo6X0NvcHlGZXVUYWJsZXMyTWFtcygpOw0KICAgIH0NCiAgICBjYXRjaCggRGJFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICANCiAgICAgIHRyeQ0KICAgICAgew0KICAgICAgICAjIHNvbWV0aGluZyB3ZW50IHdyb25nDQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdTb21ldGhpbmcgd2VudCB3cm9uZyBjb3B5aW5nIHRhYmxlcyBmcm9tIEZFVS4uLiBnb2luZyB0byByb2xsYmFjayEnKTsNCiAgICAgICAgIyByb2xsIGJhY2sNCiAgICAgICAgc2VsZjo6X1JvbGxCYWNrKCk7DQogICAgICAgICMgcmVtb3ZlIHRoZSBiYWNrdXBzIGFueXdheQ0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnUm9sbGVkIGJhY2suLi4gcmVtb3ZpbmcgdGVtcCBiYWNrdXAgdGFibGVzJyk7DQogICAgICAgIHNlbGY6Ol9Ecm9wVGVtcHMoKTsNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0JhY2t1cCB0YWJsZXMgZHJvcHBlZCBzdWNjZXNzZnVsbHkhJyk7DQogICAgICB9DQogICAgICBjYXRjaCggRGJSb2xsQmFja0V4Y2VwdGlvbiAkZSkNCiAgICAgIHsNCiAgICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgICAkbXNnID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0Vycm9yIHJvbGxpbmcgYmFjay4uLicpOw0KICAgICAgfQ0KICAgICAgY2F0Y2goIERiRHJvcEV4Y2VwdGlvbiAkZSkNCiAgICAgIHsNCiAgICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgICAkbXNnID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0Vycm9yIGRyb3BwaW5nIE1BTVMgdGVtcCB0YWJsZXMuLi4nKTsNCiAgICAgIH0NCiAgICAgIGZpbmFsbHkNCiAgICAgIHsNCiAgICAgICAgIyB3aGV0aGVyIGJhY2t1cCBmYWlsZWQgb3IgYm90aCBiYWNrdXAgYW5kIGRyb3AgdGVtcHMNCiAgICAgICAgIyB3ZSByZXR1cm4gdGhlIGVycm9yIGNvZGUgLS0gdGhlcmUgaXMgb25seSBzbyBtdWNoIHdlIGNhbiBkbw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQ29weWluZyB0YWJsZXMgZnJvbSBGRVUgZmFpbGVkISBJbXBvcnQgYWJvcnRlZCBhbmQgc29tZSBjbGVhbmluZyB1cCB3YXMgYXR0ZW1wdGVkLicpOw0KICAgICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJGVycl07DQogICAgICB9DQogICAgfQ0KICAgIA0KICAgIHRyeQ0KICAgIHsNCiAgICAgIHNlbGY6Ol9Ecm9wVGVtcHMoKTsNCiAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdCYWNrdXAgdGFibGVzIGRyb3BwZWQgc3VjY2Vzc2Z1bGx5IScpOw0KICAgIH0NCiAgICBjYXRjaCggRGJEcm9wRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgJGZhaWwgPSBUUlVFOw0KICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0Vycm9yIGRyb3BwaW5nIE1BTVMgdGVtcCB0YWJsZXMuLi4nKTsNCiAgICB9DQogICAgZmluYWxseQ0KICAgIHsNCiAgICAgIGlmKCRmYWlsKQ0KICAgICAgew0KICAgICAgICAjIHdoZXRoZXIgYmFja3VwIGZhaWxlZCBvciBib3RoIGJhY2t1cCBhbmQgZHJvcCB0ZW1wcw0KICAgICAgICAjIHdlIHJldHVybiB0aGUgZXJyb3IgY29kZSAtLSB0aGVyZSBpcyBvbmx5IHNvIG11Y2ggd2UgY2FuIGRvDQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdDb3B5aW5nIHRhYmxlcyBmcm9tIEZFVSBzZWVtcyB0byBoYXZlIHdvcmtlZCFCdXQgYXBwYXJlbnRseSB0aGVyZSBhcmUgc29tZSBsZWZ0b3ZlciB0ZW1wIHRhYmxlcy4nKTsNCiAgICAgICAgJGVyciA9IFskY29kZSwgJG1zZ107DQogICAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB0cnkNCiAgICB7DQogICAgICBzZWxmOjpfUmVuYW1lSW5kZXhlcygpOw0KICAgIH0NCiAgICBjYXRjaChEYkV4Y2VwdGlvbiAkZSkNCiAgICB7DQogICAgICAkY29kZSA9ICRlLT5nZXRDb2RlKCk7DQogICAgICAkbXNnID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICAgcmV0dXJuIFtGQUxTRSwgJGVycl07DQogICAgfQ0KICAgIA0KICAgIC8vICAgIHRyeQ0KICAgIC8vICAgIHsNCiAgICAvLyAgICAgIHNlbGY6Ol9Db3B5VGVtcGxhdGVzKCk7DQogICAgLy8gICAgfQ0KICAgIC8vICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgLy8gICAgew0KICAgIC8vICAgICAgJGVyciA9IFskZS0+Z2V0Q29kZSgpLCAkZS0+Z2V0TWVzc2FnZSgpXTsNCiAgICAvLyAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIC8vICAgIH0NCiAgICANCiAgICB0cnkNCiAgICB7DQogICAgICBzZWxmOjpfQ29weVByZWZlcmVuY2VzKCk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gW1RSVUUsICRlcnJdOw0KICB9DQogIA0KICANCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSForcedLogoutTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgTUFNU0ZvcmNlZExvZ291dFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CiAgcHVibGljIGZ1bmN0aW9uIGdldF9uYW1lKCkKICB7CiAgICByZXR1cm4gZ2V0X2NsYXNzKCk7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgewogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgcmV0dXJuICRtb2QtPkxhbmcoJ2ZvcmNlZGxvZ291dHRhc2tfZGVzYycpOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCR0aW1lID0gJycpCiAgewogICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgJGxhc3RydW4gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9sYXN0cnVuJyk7CgogICAgJHRpbWVzID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfdGltZXMnKTsgLy8gbGlrZTogMTg6MzAsMjA6MzAsMDg6MDAsIGV0Yy4KICAgIGlmKCAkdGltZXMgPT0gJycgKSByZXR1cm4gRkFMU0U7CgogICAgJHRtcCA9IGFycmF5KCk7CiAgICAkdGltZXMgPSBleHBsb2RlKCcsJywkdGltZXMpOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRpbWVzKTsgJGkrKyApCiAgICAgIHsKCSR0X2ggPSAnJzsKCSR0X20gPSAnJzsKCWlmKCBzdGFydHN3aXRoKCR0aW1lc1skaV0sJyonKSApCgkgIHsKCSAgICBsaXN0KCRqdW5rLCRtaW51dGVzKSA9IGV4cGxvZGUoJy8nLCR0aW1lc1skaV0sMik7CgkgICAgJG1pbnV0ZXMgPSAoaW50KSRtaW51dGVzOwoJICAgICRtaW51dGVzID0gbWF4KCRtaW51dGVzLDEpOyAvLyBtaW51bXVtIDIgbWludXRlcwoJICAgICRtaW51dGVzID0gbWluKCRtaW51dGVzLDE4MCk7IC8vIG1heGltdW0gMTgwIG1pbnV0ZXMuCgkgICAgZm9yKCAkaSA9IDA7ICRpIDwgNjAqMjQ7ICRpICs9ICRtaW51dGVzICkKCSAgICAgIHsKCQkkdF9oID0gKGludCkoJGkvNjApOwoJCSR0X20gPSAoaW50KSgkaSU2MCk7CgkJJHRtcFtdID0gbWt0aW1lKChpbnQpJHRfaCwoaW50KSR0X20sMCwoaW50KWRhdGUoJ20nLCR0aW1lKSwoaW50KWRhdGUoJ2QnLCR0aW1lKSwoaW50KWRhdGUoJ1knLCR0aW1lKSk7CgkgICAgICB9CgkgIH0KCWVsc2UKCSAgewoJICAgIGxpc3QoJHRfaCwkdF9tKSA9IGV4cGxvZGUoJzonLHRyaW0oJHRpbWVzWyRpXSksMik7CgkgIH0KICAgICAgfQogICAgcnNvcnQoJHRtcCk7CgogICAgJGZpID0gJyc7CiAgICAkZnQgPSAnJzsKICAgIC8vIGZpbmQgdGhlIGNsb3Nlc3QgZW50cnkuCgogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0bXApOyAkaSsrICkKICAgICAgewoJaWYoICR0aW1lID4gJHRtcFskaV0gKSBicmVhazsgLy8gbm90aGluZyB0byBkby4uCgoKCSRkdCA9ICR0bXBbJGldIC0gJHRpbWU7CglpZiggJGZ0ID09ICcnIHx8ICRkdCA8ICgkZnQgLSAkdGltZSkgKQoJICB7CgkgICAgJGZpID0gJGk7CgkgICAgJGZ0ID0gJHRtcFskaV07CgkgIH0KCiAgICAgIH0KICAgIGlmKCAkZnQgIT0gJycgJiYgJGZpICE9ICcnICYmICgkdGltZSAtICRmdCkgPCA2MCApCiAgICAgIHsKCS8vIHdlIGZvdW5kIHNvbWV0aGluZyB0aGF0IGNhbiBleGVjdXRlLgoJJF9TRVNTSU9OW2dldF9jbGFzcygpLidfcnVudGltZSddID0gJHRtcFskaV07CglyZXR1cm4gVFJVRTsKICAgICAgfQogICAgcmV0dXJuIEZBTFNFOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCR0aW1lID0gJycpCiAgewogICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgaWYoICFpc3NldCgkX1NFU1NJT05bZ2V0X2NsYXNzKCkuJ19ydW50aW1lJ10pICkgcmV0dXJuIEZBTFNFOwogICAgJHRoZV90aW1lID0gJF9TRVNTSU9OW2dldF9jbGFzcygpLidfcnVudGltZSddOwogICAgdW5zZXQoJF9TRVNTSU9OW2dldF9jbGFzcygpLidfcnVudGltZSddKTsKCiAgICAvLyBub3cgZmluZCBhbGwgdGhlIHVpZCdzIHRoYXQgYXJlIGxvZ2dlZCBpbiBidXQgbm90IGFjdGl2ZSBzaW5jZSAkdGhlX3RpbWUKICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkZm9yZ2l2ZW5lc3MgPSAoaW50KSRtYW1zLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJyk7CiAgICAkZm9yZ2l2ZW5lc3MgPSBtYXgoMCwkZm9yZ2l2ZW5lc3MpKjYwOwogICAgJHRoZV90aW1lIC09ICRmb3JnaXZlbmVzczsKICAgICR1aWRzID0gJG1hbXMtPkdldExvZ2dlZEluVXNlcnMoJHRoZV90aW1lKTsKICAgIGlmKCAhaXNfYXJyYXkoJHVpZHMpIHx8IGNvdW50KCR1aWRzKSA9PSAwICkKICAgICAgewoJcmV0dXJuIFRSVUU7IC8vIG5vdGhpbmcgdG8gZG8uCiAgICAgIH0KCiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkdWlkcyk7ICRpKysgKQogICAgICB7CgkkbWFtcy0+TG9nb3V0KCR1aWRzWyRpXSwnZm9yY2VkIGxvZ291dCcpOwogICAgICB9CiAgICAkbWFtcy0+QXVkaXQoJycsJG1hbXMtPkdldE5hbWUoKSwnRm9yY2VkIGxvZ291dCBvZiAnLmNvdW50KCR1aWRzKS4nIHVzZXJzIGF0ICcuc3RyZnRpbWUoJyVIOiVNJywkdGhlX3RpbWUpKTsKICAgIHJldHVybiBUUlVFOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgewogICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICRtYW1zLT5TZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9sYXN0cnVuJywkdGltZSk7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogIHsKICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSManipulator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgbWFuYWdlbWVudCBvZiBmcm9udGVuZAojICB1c2VycywgYW5kIHRoZWlyIGxvZ2luIHByb2Nlc3Mgd2l0aGluIGEgQ01TIE1hZGUgU2ltcGxlIHBvd2VyZWQKIyAgd2Vic2l0ZS4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0cyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIE1BTVNNYW5pcHVsYXRvciBleHRlbmRzIE1BTVNVc2VyTWFuaXB1bGF0b3IKewogICAgcHJpdmF0ZSAkX2NhY2hlZF9wcm9wZGVmbnM7CiAgICBwcml2YXRlICRfZ3JvdXBpbmZvX2NhY2hlOwogICAgcHJpdmF0ZSAkX211bHRpc2VsZWN0X29wdGlvbnM7CiAgICBwcml2YXRlICRfdXNlcmlkYnluYW1lOwogICAgcHJpdmF0ZSAkX2dyb3VwcHJvcG1hcDsKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24ga2VlcGFsaXZlX2Nvb2tpZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdrYScuc2hhMShfX0ZJTEVfXyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVuY29kZV91c2VyZGF0YShhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICAkc3RyID0ganNvbl9lbmNvZGUoJGRhdGEpOwogICAgICAgICRzdHIgLj0gJzo6Jy5zaGExKCRzdHIuX19GSUxFX18pOwogICAgICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKCRzdHIpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZGVjb2RlX3VzZXJkYXRhKHN0cmluZyAkc3RyKQogICAgewogICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2RlY29kZSgkc3RyKTsKICAgICAgICBpZiggISRlbmNvZGVkICkgcmV0dXJuOwogICAgICAgIGxpc3QoJGpzb24sJHNpZykgPSBleHBsb2RlKCc6OicsJGVuY29kZWQsMik7CiAgICAgICAgaWYoICEkanNvbiB8fCAhJHNpZyApIHJldHVybjsKICAgICAgICBpZiggc2hhMSgkanNvbi5fX0ZJTEVfXykgIT0gJHNpZyApIHJldHVybjsKICAgICAgICByZXR1cm4ganNvbl9kZWNvZGUoJGpzb24sVFJVRSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfYmFkX3NhbHQoKQogICAgewogICAgICAgIC8vIHRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHNpdGVzIHRoYXQgaGF2ZSBiZWVuIHVwZ3JhZGVkIGZvcmV2ZXIKICAgICAgICAvLyBhbmQgaXRzIHVzZSBpcyB2ZXJ5IGJhZCBmb3Igc2VjdXJpdHksIGFzIGl0IGltcGxpZXMgYSBzaGFyZWQgc2FsdCBvbiB1c2VyIHBhc3N3b3Jkcy4KICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICRzYWx0ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgncHdzYWx0JywnJyk7CiAgICAgICAgaWYoICEkc2FsdCApIGF1ZGl0KCcnLCdNQU1TJywnSU1QT1JUQU5UIFdlIGFyZSB1c2luZyBiYWQgcGFzc3dvcmQgaGFzaGluZy4uLiBhbmQgZXZlbiB3b3JzZSB0aGUgc2FsdCBpcyBlbXB0eScpOwogICAgICAgIHJldHVybiAkc2FsdDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldF9leHBpcmV1c2Vyc19sYXN0cnVuKCkKICAgIHsKICAgICAgICByZXR1cm4gY21zX2NhY2hlX2hhbmRsZXI6OmdldF9pbnN0YW5jZSgpLT5nZXQoJ2V4cGlyZV9sYXN0cnVuJyxfX0NMQVNTX18pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdG91Y2hfZXhwaXJldXNlcnNfbGFzdHJ1bigpCiAgICB7CiAgICAgICAgY21zX2NhY2hlX2hhbmRsZXI6OmdldF9pbnN0YW5jZSgpLT5zZXQoJ2V4cGlyZV9sYXN0cnVuJyx0aW1lKCksX19DTEFTU19fKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2hpc3RvcnkoJHVpZCwkbWVzc2FnZSkKICAgIHsKICAgICAgICBpZiggJHVpZCA8PSAwIHx8ICFpc19zdHJpbmcoJG1lc3NhZ2UpIHx8ICRtZXNzYWdlID09ICcnICkJcmV0dXJuIEZBTFNFOwoKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkbm93ID0gJGRiLT5EYlRpbWVTdGFtcCh0aW1lKCkpOwogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2hpc3RvcnkgKHVzZXJpZCxzZXNzaW9uaWQsYWN0aW9uLHJlZmRhdGUsaXBhZGRyZXNzKSBWQUxVRVMgKD8sPyw/LCRub3csPykiOwogICAgICAgICRpcCA9IHh0X3V0aWxzOjpnZXRfcmVhbF9pcCgpOwogICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCR1aWQsc2Vzc2lvbl9pZCgpLHN1YnN0cigkbWVzc2FnZSwwLDI1NSksJGlwKSk7CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEVuY3J5cHRpb25LZXkoJHVpZCA9IC0xKQogICAgewogICAgICAgIGdsb2JhbCAkQ01TX0FETUlOX1BBR0U7CiAgICAgICAgJGdDbXMgPSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpOwoKICAgICAgICBpZiggJENNU19BRE1JTl9QQUdFICkgewogICAgICAgICAgICAvLyBhbiBhZG1pbmlzdHJhdG9yIGNhbiBzZWUgZW5jcnlwdGVkIGRhdGEuCiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHJlcykgfHwgJHJlc1swXSA9PSBGQUxTRSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgICAgICRrZXkgPSBtZDUoJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4kdWlkLiRyZXNbMV1bJ2NyZWF0ZWRhdGUnXS4kdGhpcy0+Z2V0X2JhZF9zYWx0KCkpOwogICAgICAgICAgICByZXR1cm4gJGtleTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGZyb250ZW5kIHJlcXVlc3QuLi4gdXNlIGxvZ2dlZCBpbiBpZC4KICAgICAgICAgICAgJHR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHR1aWQgPCAxICkgcmV0dXJuIEZBTFNFOwoKICAgICAgICAgICAgJHJlcyA9ICR0aGlzLT5HZXRVc2VySW5mbygkdHVpZCk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHJlcykgfHwgJHJlc1swXSA9PSBGQUxTRSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgICAgICRrZXkgPSBtZDUoJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4kdHVpZC4kcmVzWzFdWydjcmVhdGVkYXRlJ10uJHRoaXMtPmdldF9iYWRfc2FsdCgpKTsKICAgICAgICAgICAgcmV0dXJuICRrZXk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIERlY3J5cHRVc2VyRGF0YSgkdWlkLCRkYXRhKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSR1aWQ7CiAgICAgICAgaWYoICR1aWQgPCAxICkgcmV0dXJuOwogICAgICAgICRrZXkgPSAkdGhpcy0+R2V0RW5jcnlwdGlvbktleSgkdWlkLFRSVUUpOwogICAgICAgICR4ID0gdHJpbSh4dF9lbmNyeXB0OjpkZWNyeXB0KCRrZXksYmFzZTY0X2RlY29kZSgkZGF0YSkpKTsKICAgICAgICByZXR1cm4gJHg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIENvdW50VGVtcENvZGVSZWNvcmRzKCkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0REIoKTsKICAgICAgICAkcSA9ICJTRUxFQ1QgQ09VTlQoKikgQVMgY291bnQgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3RlbXBjb2RlIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxICk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gMDsKICAgICAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgICAgIHJldHVybiAkcm93Wydjb3VudCddOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBFeHBpcmVUZW1wQ29kZXMoJGV4cGlyeWNvZGUpCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPmdldERiKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgICAgICRleHBpcmVzID0gc3RydG90aW1lKCAkZXhwaXJ5Y29kZSApOwogICAgICAgICAgICAkcSA9ICJERUxFVEUgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIGNyZWF0ZWQgPiA/IjsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRleHBpcmVzICkgKTsKICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICBhdWRpdCgnJywkbW9kLT5HZXROYW1lKCksJ0NvdWxkIGV4cGlyZSB0ZW1wIGNvZGVzICcpOwogICAgICAgICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyVGVtcENvZGUoICR1aWQgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5nZXREYigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAgICAgICAkcSA9ICJERUxFVEUgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIHVzZXJpZCA9ID8iOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCApICk7CiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgICAgICAgYXVkaXQoJHVpZCwkbW9kLT5HZXROYW1lKCksJ0NvdWxkIHJlbW92ZSB0ZW1wIGNvZGUnKTsKICAgICAgICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclRlbXBDb2RlKCAkdWlkICkKICAgIHsKICAgICAgICBpZiggISR1aWQgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIHVzZXJpZCA9ID8gT1JERVIgQlkgY3JlYXRlZCBERVNDIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkdldFJvdyggJHEsIGFycmF5KCAkdWlkICkpOwogICAgICAgIGlmKCBpc19hcnJheSgkZGJyZXN1bHQpICYmIGNvdW50KCRkYnJlc3VsdCkgKSByZXR1cm4gJGRicmVzdWx0Wydjb2RlJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJUZW1wQ29kZSggJHVpZCwgJGNvZGUgKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgICRjb2RlID0gdHJpbSgkY29kZSk7CiAgICAgICAgaWYoICR1aWQgPCAxIHx8ICEkY29kZSApIHJldHVybiBGQUxTRTsKICAgICAgICAkZGIgPSAkdGhpcy0+Z2V0RGIoKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgICAgICRxID0gJ0RFTEVURSBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfdGVtcGNvZGUgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcSxhcnJheSgkdWlkKSk7CgogICAgICAgICAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3RlbXBjb2RlIFZBTFVFUyg/LD8sTk9XKCkpIjsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICR1aWQsICRjb2RlICkgKTsKICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICBhdWRpdCgkdWlkLCRtb2QtPkdldE5hbWUoKSwnQ291bGQgc2V0IHRlbXAgY29kZScpOwogICAgICAgICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm4oICRuYW1lLCAkbmV3bmFtZSwgJHByb21wdCwgJGxlbmd0aCwgJHR5cGUsICRtYXhsZW5ndGggPSAwLCAkYXR0cmlicyA9ICcnLCAkZm9yY2VfdW5pcXVlID0gMCwgJGVuY3J5cHQgPSAwICkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+Z2V0RGIoKTsKCiAgICAgICAgaWYoICRtYXhsZW5ndGggPT0gMCApICRtYXhsZW5ndGggPSAkbGVuZ3RoOwogICAgICAgICRxID0gIlVQREFURSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3Byb3BkZWZuCiAgICAgICAgICAgICAgU0VUIG5hbWUgPSA/LCBwcm9tcHQgPSA/LCB0eXBlID0gPywgbGVuZ3RoID0gPywgbWF4bGVuZ3RoID0gPywgYXR0cmlicyA9ID8sIGZvcmNlX3VuaXF1ZSA9ID8sIGVuY3J5cHQgPSA/CiAgICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8iOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkbmV3bmFtZSwgJHByb21wdCwgJHR5cGUsICRsZW5ndGgsICRtYXhsZW5ndGgsICRhdHRyaWJzLCAkZm9yY2VfdW5pcXVlLCAkZW5jcnlwdCwgJG5hbWUgKSk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbiggJG5hbWUgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5nZXREYigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAgICAgICAkdGhpcy0+RGVsZXRlU2VsZWN0T3B0aW9ucygkbmFtZSk7CgogICAgICAgICAgICAkcSA9ICdERUxFVEUgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdGl0bGUgPSA/JzsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxLGFycmF5KCRuYW1lKSk7CgogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGdyb3VwX2lkLHNvcnRfa2V5IEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgV0hFUkUgbmFtZSA9ID8nOwogICAgICAgICAgICAkZGJyID0gJGRiLT5HZXRBcnJheSgkcXVlcnksYXJyYXkoJG5hbWUpKTsKCiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkZGJyKSAmJiBjb3VudCgkZGJyKSApIHsKICAgICAgICAgICAgICAgICRxID0gJ1VQREFURSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcAogICAgICAgICAgICAgICAgICAgICAgICAgIFNFVCBzb3J0X2tleSA9IHNvcnRfa2V5IC0gMQogICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGdyb3VwX2lkID0gPyBBTkQgc29ydF9rZXkgPiA/JzsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRkYnIgYXMgJHJvdyApIHsKICAgICAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRyb3dbJ2dyb3VwX2lkJ10sJHJvd1snc29ydF9rZXknXSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkcSA9ICdERUxFVEUgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBXSEVSRSBuYW1lID0gPyc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcSxhcnJheSgkbmFtZSkpOwoKICAgICAgICAgICAgJHEgPSAiREVMRVRFIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19wcm9wZGVmbiBXSEVSRSBuYW1lPT8iOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUgKSApOwoKICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICBhdWRpdCgnJywkbW9kLT5HZXROYW1lKCksJ0NvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkgJy4kbmFtZSk7CiAgICAgICAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICB9CgogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eUdyb3VwUmVsYXRpb25zKCAkdGl0bGUgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwoKICAgICAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFdIRVJFIG5hbWUgPSA/IE9SREVSIEJZIHNvcnRfa2V5IERFU0MiOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkdGl0bGUgKSApOwogICAgICAgIGlmKCAhJGRicmVzdWx0ICkgcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICAgICAgd2hpbGUoICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CiAgICAgICAgICAgICRyZXN1bHRbXSA9ICRyb3c7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgdW5peCB0aW1lc3RhbXAgb2YgdGhlIHVzZXJzIGV4cGlyeSBkYXRlCiAgICAgKiBvciBmYWxzZTsKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEV4cGlyeURhdGUoJHVpZCkKICAgIHsKICAgICAgICBpZiggISR1aWQgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgJHJlcyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCk7CiAgICAgICAgaWYoIGlzX2FycmF5KCRyZXMpICYmICRyZXNbJ2V4cGlyZXMnXSAhPSAnJyApIHsKICAgICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgIHJldHVybiAkZGItPlVuaXhUaW1lU3RhbXAoJHJlc1snZXhwaXJlcyddKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBDYW5Vc2VyTG9naW4oICR1aWQgKQogICAgewoJJHVpZCA9IChpbnQpICR1aWQ7CiAgICAgICAgaWYoICR1aWQgPCAxICkgcmV0dXJuOwogICAgICAgICRyZXMgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1aWQpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJHJlcykgKSByZXR1cm47CgogICAgICAgIGlmKCAkcmVzWydkaXNhYmxlZCddICkgcmV0dXJuOwogICAgICAgIGlmKCAhJHJlc1sncGFzc3dvcmQnXSApIHJldHVybjsKICAgICAgICAkZXhwaXJlcyA9IHN0cnRvdGltZSgkcmVzWydleHBpcmVzJ10pOwogICAgICAgIHJldHVybiB0aW1lKCkgPCAkZXhwaXJlczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNBY2NvdW50RXhwaXJlZCggJHVpZCApCiAgICB7CiAgICAgICAgaWYoICEkdWlkICkgcmV0dXJuIHRydWU7IC8vIGR1bm5vIGFib3V0IHRoaXMKICAgICAgICAkZXhwaXJ5ID0gJHRoaXMtPkdldEV4cGlyeURhdGUoICR1aWQgKTsKCiAgICAgICAgaWYoICEkZXhwaXJ5ICkgcmV0dXJuIHRydWU7CiAgICAgICAgaWYoICRleHBpcnkgPCB0aW1lKCkgKSByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eVJlbGF0aW9ucyggJHVpZCApCiAgICB7CiAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAgICAgICBpZiggIWlzX2FycmF5KCRncm91cHMpIHx8IGNvdW50KCRncm91cHMpID09IDAgKSByZXR1cm47CgogICAgICAgICR1cHJvcHMgPSBhcnJheSgpOwogICAgICAgIGZvciggJGEgPSAwOyAkYSA8IGNvdW50KCRncm91cHMpOyAkYSsrICkgewogICAgICAgICAgICAkZ2lkID0gJGdyb3Vwc1skYV1bJ2dyb3VwaWQnXTsKICAgICAgICAgICAgJHJlbG5zID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICAgICAgICAgICR1cHJvcHMgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCR1cHJvcHMsJHJlbG5zKTsKICAgICAgICAgICAgdXNvcnQoJHVwcm9wcywgYXJyYXkoJ3h0X2FycmF5JywnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHVwcm9wczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdycGlkICkKICAgIHsKICAgICAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fZ3JvdXBwcm9wbWFwKSApIHsKICAgICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgICRxID0gIlNFTEVDVCAqIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgT1JERVIgQlkgZ3JvdXBfaWQsc29ydF9rZXkgREVTQyI7CiAgICAgICAgICAgICR0aGlzLT5fZ3JvdXBwcm9wbWFwID0gJGRiLT5HZXRBcnJheSgkcSk7CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9ncm91cHByb3BtYXAgKSByZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgICB9CgogICAgICAgICRyZXMgPSBhcnJheSgpOwogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fZ3JvdXBwcm9wbWFwKTsgJGkrKyApIHsKICAgICAgICAgICAgJHJvdyA9ICR0aGlzLT5fZ3JvdXBwcm9wbWFwWyRpXTsKICAgICAgICAgICAgaWYoICRyb3dbJ2dyb3VwX2lkJ10gPCAkZ3JwaWQgKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoICRyb3dbJ2dyb3VwX2lkJ10gPiAkZ3JwaWQgKSBicmVhazsKCiAgICAgICAgICAgICRyZXNbXSA9ICRyb3c7CiAgICAgICAgfQogICAgICAgIGlmKCAhY291bnQoJHJlcykgKSByZXR1cm4gYXJyYXkoRkFMU0UsJ25vdGZvdW5kJyk7CgogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRncnBpZCwgJHByb3BuYW1lLCAkc29ydGtleSwgJGxvc3R1biwgJHZhbCApCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CgogICAgICAgICRxID0gIklOU0VSVCBJTlRPICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFZBTFVFUyg/LD8sPyw/LD8pIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHByb3BuYW1lLCAkZ3JwaWQsICRzb3J0a2V5LCAkdmFsLCAkbG9zdHVuICkpOwogICAgICAgIGlmKCAhJGRicmVzdWx0ICkgcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgcmV0dXJuIGFycmF5KFRSVUUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAgICAgICAkcSA9ICJERUxFVEUgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBXSEVSRSBncm91cF9pZCA9ID8iOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJGdycGlkICkpOwogICAgICAgICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShUUlVFKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICBhdWRpdCgnJywkbW9kLT5HZXROYW1lKCksJ0NvdWxkIG5vdCBkZWxldGUgYWxsIGdyb3VwIHByb3BlcnR5IHJlbGF0aW9ucycpOwogICAgICAgICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAgICAgICByZXR1cm4gYXJyYXkoRkFMU0UsJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cFByb3BlcnR5UmVsYXRpb24oICRncnBpZCwgJHByb3BuYW1lICkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+Z2V0RGIoKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgJHEgPSAiREVMRVRFIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgV0hFUkUgbmFtZSA9ID8gQU5EIGdyb3VwX2lkID0gPyI7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkcHJvcG5hbWUsICRncnBpZCApKTsKICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICByZXR1cm4gYXJyYXkoVFJVRSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgICAgICAgYXVkaXQoJycsJG1vZC0+R2V0TmFtZSgpLCdDb3VsZCBub3QgZGVsZXRlIGdyb3VwIHByb3BlcnR5IHJlbGF0aW9uJyk7CiAgICAgICAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShGQUxTRSwkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEFkZFByb3BlcnR5RGVmbiggJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoID0gMCwgJGF0dHJpYnMgPSAnJywgJGZvcmNlX3VuaXF1ZSA9IDAsICRlbmNyeXB0ID0gMCApCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgaWYoICRtYXhsZW5ndGggPT0gMCApICRtYXhsZW5ndGggPT0gJGxlbmd0aDsKCiAgICAgICAgJHAgPSBhcnJheSggJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoLCAkYXR0cmlicywgJGZvcmNlX3VuaXF1ZSwgJGVuY3J5cHQgKTsKICAgICAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3Byb3BkZWZuCiAgICAgICAgICAobmFtZSxwcm9tcHQsdHlwZSxsZW5ndGgsbWF4bGVuZ3RoLGF0dHJpYnMsZm9yY2VfdW5pcXVlLGVuY3J5cHQpCiAgICAgICAgICBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPykiOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsICRwICk7CiAgICAgICAgaWYoICRkYnJlc3VsdCA9PSBmYWxzZSApIHJldHVybiBhcnJheShGQUxTRSwgJGRiLT5zcWwuJzxici8+Jy4kZGItPkVycm9yTXNnKCkpOwogICAgICAgICRuZXdfaWQgPSAkZGItPkluc2VydF9JRCgpOwoKICAgICAgICAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbiA9IG51bGw7CiAgICAgICAgcmV0dXJuIGFycmF5KFRSVUUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm5FeHRyYSgkbmFtZSwkZXh0cmEpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCRleHRyYSkgKSAkZXh0cmEgPSBzZXJpYWxpemUoJGV4dHJhKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfcHJvcGRlZm4gU0VUIGV4dHJhID0gPyBXSEVSRSBuYW1lID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGV4dHJhLCRuYW1lKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEFkZFNlbGVjdE9wdGlvbnMoICRuYW1lLCAkb3B0aW9ucyApCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGluc2VydF92YWxzID0gJyc7CiAgICAgICAgICAgICRvcmRlcl9pZCA9IDA7CiAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc19kcm9wZG93bnMgKG9yZGVyX2lkLCBvcHRpb25fbmFtZSwgb3B0aW9uX3RleHQsIGNvbnRyb2xfbmFtZSkgVkFMVUVTICg/LD8sPyw/KSc7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAgICAgICBmb3JlYWNoICgkb3B0aW9ucyBhcyAkb3B0dGV4dCl7CiAgICAgICAgICAgICAgICAvLyBpZiBubyBhY3R1YWwgdGV4dCBpbiB0aGUgbGluZSwgbWFrZSBzdXJlIGl0IGVxdWFscyAnJywKICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIG5vdCB0byBhZGQgaXQgdG8gdGhlIGRiCiAgICAgICAgICAgICAgICAkb3B0dGV4dCA9IHRyaW0oJG9wdHRleHQpOwogICAgICAgICAgICAgICAgaWYoICRvcHR0ZXh0ID09ICcnIHx8ICRvcHR0ZXh0ID09ICdfXycgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkb3B0bmFtZSA9IHRyaW0oJG9wdHRleHQpOwogICAgICAgICAgICAgICAgaWYoIHN0cmNociggJG9wdHRleHQsICc9JyApICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnPScsJG9wdHRleHQsMik7CiAgICAgICAgICAgICAgICAgICAgJG9wdG5hbWUgPSB0cmltKCR0bXBbMV0pOwogICAgICAgICAgICAgICAgICAgICRvcHR0ZXh0ID0gdHJpbSgkdG1wWzBdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkb3JkZXJfaWQrKzsKICAgICAgICAgICAgICAgICRyZXMgPSAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJG9yZGVyX2lkLCAkb3B0bmFtZSwgJG9wdHRleHQsICRuYW1lIF0pOwogICAgICAgICAgICAgICAgaWYoICEkcmVzICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFUlJPUjogJy4kZGItPkVycm9yTXNnKCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zID0gbnVsbDsKICAgICAgICAgICAgcmV0dXJuIFtUUlVFXTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICBhdWRpdCgnJywkbW9kLT5HZXROYW1lKCksJ0NvdWxkIGV4cGlyZSB0ZW1wIGNvZGVzICcpOwogICAgICAgICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAgICAgICByZXR1cm4gW0ZBTFNFXTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbnMoKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5nZXREYigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkZWZucyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgICAgIGZvcmVhY2goICRkZWZucyBhcyAkbmFtZSA9PiAkcmVjICkgewogICAgICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVByb3BlcnR5RGVmbigkbmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm4gPSBudWxsOwogICAgICAgICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShUUlVFKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICBhdWRpdCgnJywkbW9kLT5HZXROYW1lKCksJ0NvdWxkIG5vdCBkZWxldGUgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zJyk7CiAgICAgICAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShGQUxTRSwkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVNlbGVjdE9wdGlvbnMoICRuYW1lICkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcSA9ICJERUxFVEUgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2Ryb3Bkb3ducyBXSEVSRSBjb250cm9sX25hbWUgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUgKSApOwogICAgICAgIGlmKCAkZGJyZXN1bHQgPT0gZmFsc2UgKSByZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMgPSBudWxsOwogICAgICAgIHJldHVybiBhcnJheShUUlVFKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2VuZXJhdGVSYW5kb21Vc2VybmFtZSggJHByZWZpeCA9ICd1c2VyJyApCiAgICB7CiAgICAgICAgc3JhbmQodGltZSgpKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwoKICAgICAgICAkbnVtID0gcmFuZCgxMDAsOTk5OTkpOwogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgJHN1ZmZpeCA9ICcnOwogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCJ1c2VybmFtZV9pc19lbWFpbCIpKSAkc3VmZml4ID0gJ0BzYW1wbGUuY29tJzsKICAgICAgICB3aGlsZSggJGNvdW50IDwgMTAwICkgeyAvLyB0b2RvLCAxMDAgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZT8KICAgICAgICAgICAgJHEgPSAiU0VMRUNUIGlkIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc191c2VycyBXSEVSRSB1c2VybmFtZSA9ID8iOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoICRxLCBhcnJheSggJHByZWZpeC4kbnVtLiRzdWZmaXggKSApOwogICAgICAgICAgICBpZiggISR0bXAgKSByZXR1cm4gJHByZWZpeC4kbnVtLiRzdWZmaXg7CiAgICAgICAgICAgICRudW0gPSByYW5kKDEwMCw5OTk5OSk7CiAgICAgICAgICAgICsrJGNvdW50OwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIENsZWFyUHJvcGVydHlDYWNoZSgpCiAgICB7CiAgICAgICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zID0gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX2NhY2hlX3Byb3BlcnR5ZGVmbnMoKQogICAgewogICAgICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zKSApIHsKICAgICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgICR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucyA9IGFycmF5KCk7CgogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX3Byb3BkZWZuJzsKICAgICAgICAgICAgJGRhdGEgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgICAgIGlmKCAhJGRhdGEgKSByZXR1cm47CgogICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZGF0YSk7ICRpKysgKSB7CiAgICAgICAgICAgICAgICBpZiggIWVtcHR5KCRkYXRhWyRpXVsnZXh0cmEnXSkgJiYgIWlzX251bGwoJGRhdGFbJGldWydleHRyYSddKSApICRkYXRhWyRpXVsnZXh0cmEnXSA9IEB1bnNlcmlhbGl6ZSgkZGF0YVskaV1bJ2V4dHJhJ10pOwogICAgICAgICAgICAgICAgaWYoICFlbXB0eSgkZGF0YVskaV1bJ2F0dHJpYnMnXSkgKSAkZGF0YVskaV1bJ2V4dHJhJ10gPSB1bnNlcmlhbGl6ZSgkZGF0YVskaV1bJ2F0dHJpYnMnXSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnNbJGRhdGFbJGldWyduYW1lJ11dID0gJGRhdGFbJGldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm4oICRuYW1lICkKICAgIHsKICAgICAgICAkdGhpcy0+X2NhY2hlX3Byb3BlcnR5ZGVmbnMoKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucykgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgaWYoICFpc3NldCgkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnNbJG5hbWVdKSkgcmV0dXJuIEZBTFNFOwogICAgICAgIHJldHVybiAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnNbJG5hbWVdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm5zKCkKICAgIHsKICAgICAgICAkdGhpcy0+X2NhY2hlX3Byb3BlcnR5ZGVmbnMoKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucykgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fY2FjaGVkX3Byb3BkZWZuczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgc2VsZWN0IG9wdGlvbnMgYXMgYSBzaW1wbGUgb3IgYSAyIGRpbWVuc2lvbmFsIGFycmF5CiAgICAgKgogICAgICogQHBhcmFtIFN0cmluZyAkY29udHJvbG5hbWUgLSBuYW1lIG9mIHRoZSBkcm9wZG93biBhcyBpbiB0aGUgcHJvcGRlZm4gdGFibGUKICAgICAqIEBwYXJhbSBpbnQgJGRpbSAtIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkKICAgICAqIAlpZiAkZGltID09IDEsIHJldHVybnMgYSAxIGRpbWVuc2lvbmFsIGFycmF5IHRleHQ9Pm5hbWUKICAgICAqICAgIGlmICRkaW0gPT0gMiwgcmV0dXJucyBhIDIgZGltZW5zaW9uYWwgYXJyYXksIGVhY2ggaXRlbSBiZWluZyBhbgogICAgICogCQlhcnJheSB3aXRoIHByb3BlcnRpZXMgJ29wdGlvbl9uYW1lJywgJ29wdGlvbl90ZXh0JywgJ2NvbnRyb2xfbmFtZScuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRTZWxlY3RPcHRpb25zKCAkY29udHJvbG5hbWUsICRkaW09MSApCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMgKSB7CiAgICAgICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwoKICAgICAgICAgICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2Ryb3Bkb3ducyBPUkRFUiBCWSBvcmRlcl9pZCI7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRkYnIpICkgJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zID0gJGRicjsKICAgICAgICB9CgogICAgICAgIGlmKCAhY291bnQoJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zKSApIHJldHVybiBmYWxzZTsKCiAgICAgICAgJHJldCA9IGFycmF5KCk7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zKTsgJGkrKyApIHsKICAgICAgICAgICAgJHJvdyA9ICR0aGlzLT5fbXVsdGlzZWxlY3Rfb3B0aW9uc1skaV07CgogICAgICAgICAgICBpZiggJHJvd1snY29udHJvbF9uYW1lJ10gPT0gJGNvbnRyb2xuYW1lICkgewogICAgICAgICAgICAgICAgaWYoICRkaW0gPT0gMiApIHsKICAgICAgICAgICAgICAgICAgICAkcmV0W10gPSAkcm93OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJldFt0cmltKCRyb3dbJ29wdGlvbl90ZXh0J10pXSA9IHRyaW0oJHJvd1snb3B0aW9uX25hbWUnXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoICFjb3VudCgkcmV0KSApIHJldHVybiBmYWxzZTsKCiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2cgdGhlIHVzZXIgaW50byB0aGUgc2l0ZS4KICAgICAqIFRoaXMgY2hlY2tzIHRoZSB1c2VyIHBhc3N3b3JkLCBhbmQgcHJlZmVyZW5jZXMgYWJvdXQgZHVwbGljYXRlIGxvZ2lucyBhbmQgb3RlaHIgdGhpbmdzIHRoZW4gbWFya3MgdGhlIHVzZXIKICAgICAqIGFzIGxvZ2dlZCBpbiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBkYXRhYmFzZSBjaGFuZ2UuICBJdCBkb2VzIG5vdCBzZW5kIGV2ZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkcGFzc3dvcmQgVGhlIHBsYWludGV4dCBwYXNzd29yZAogICAgICogQHBhcmFtIHN0cmluZyAkZ3JvdXBzIEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCB0aGUgdXNlciBtdXN0IGJlIGEgbWVtYmVyIG9mLgogICAgICogQHBhcmFtIHN0cmluZyAkaWdub3JlZAogICAgICogQHBhcmFtIGJvb2wgJGZvcmNlX2xvZ291dCBPcHRpb25hbGx5IGZvcmNlIHRoZSB1c2VyIHRvIGxvZ291dCBiZWZvcmUgbG9nZ2luZyBoaW0gaW4gYWdhaW4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dpbiggJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgPSAnJywgJGlnbm9yZWQgPSBmYWxzZSwgJGZvcmNlX2xvZ291dCA9IGZhbHNlKQogICAgewogICAgICAgICR1aWQgPSAtMTsKICAgICAgICAkZ0NtcyA9IENtc0FwcDo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKCiAgICAgICAgaWYoICEkdGhpcy0+Q2hlY2tQYXNzd29yZCggJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgKSApIHsKICAgICAgICAgICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoICR1c2VybmFtZSApOwogICAgICAgICAgICBpZiggISR1aWQgKSAkdWlkID0gLTE7CiAgICAgICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCdmYWlsJyk7CiAgICAgICAgICAgIHJldHVybiBbIEZBTFNFLCAkbW9kLT5MYW5nKCdlcnJvcl9sb2dpbmZhaWxlZCcpIF07CiAgICAgICAgfQoKICAgICAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCggJHVzZXJuYW1lICk7CiAgICAgICAgaWYoICEkdWlkICkgcmV0dXJuIFsgRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpIF07CiAgICAgICAgaWYoICRmb3JjZV9sb2dvdXQgKSAkdGhpcy0+TG9nb3V0VXNlcigkdWlkKTsKCiAgICAgICAgaWYoICEkdGhpcy0+Q2FuVXNlckxvZ2luKCR1aWQpICkgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfYWNjb3VudGV4cGlyZWQnKV07CiAgICAgICAgaWYoICRtb2QtPkdldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycpID09IDAgKSB7CiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGlzIHVzZXIgaXNuJ3QgYWxyZWFkeSBsb2dnZWQgaW4KICAgICAgICAgICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIFVTRVJJRCA9ID8iOwogICAgICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCApICk7CiAgICAgICAgICAgIGlmKCAkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpICkgcmV0dXJuIFsgRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnKSBdOwogICAgICAgIH0KCiAgICAgICAgLy8gYWN0dWFsbHkgZG9lcyB0aGUgbG9nZ2luZyBpbi4KICAgICAgICAkdGhpcy0+X3NldF9zYXZlZF9sb2dpbmRldGFpbHMoWyd1aWQnPT4kdWlkLCAndGltZSc9PnRpbWUoKV0sIHRydWUpOwoKICAgICAgICAvLyBhbmQgYWRkIGhpc3RvcnkgaW5mbwogICAgICAgIGF1ZGl0KCR1aWQsJG1vZC0+R2V0TmFtZSgpLCIkdXNlcm5hbWUgbG9nZ2VkIGluIik7CiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsJ2xvZ2luJyk7CgogICAgICAgIC8vIHNlbmQgdGhlIGV2ZW50LgogICAgICAgICRpcCA9IFx4dF91dGlsczo6Z2V0X3JlYWxfaXAoKTsKICAgICAgICBcQ01TTVNcSG9va21hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uTG9naW4nLGFycmF5KCdpZCc9PiR1aWQsJ3VzZXJuYW1lJz0+JHVzZXJuYW1lLCdpcCc9PiRpcCkpOwoKICAgICAgICByZXR1cm4gWyAkdWlkIF07CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIC8vIHJldHVybnMgdHJ1ZS9mYWxzZQogICAgcHVibGljIGZ1bmN0aW9uIEFzc2lnblVzZXJUb0dyb3VwKCAkdWlkLCAkZ2lkICkKICAgIHsKICAgICAgICAkdWlkID0gKGludCkgJHVpZDsKICAgICAgICAkZ2lkID0gKGludCkgJGdpZDsKICAgICAgICBpZiggJHVpZCA8IDEgfHwgJGdpZCA8IDEgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIHVzZXIgaWQKICAgICAgICBpZiggISR0aGlzLT5Vc2VyRXhpc3RzQnlJRCggJHVpZCApICkgcmV0dXJuIGZhbHNlOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgZ3JvdXAgaWQKICAgICAgICBpZiggISR0aGlzLT5Hcm91cEV4aXN0c0J5SUQoICRnaWQgKSApIHJldHVybiBmYWxzZTsKCiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgLy8gbWFrZSBzdXJlIGl0IGFscmVhZHkgZG9lc24ndCBleGlzdAogICAgICAgICRxID0gJ1NFTEVDVCAqIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIHVzZXJpZCA9ID8gQU5EIGdyb3VwaWQgPSA/JzsKICAgICAgICAkdG1wID0gJGRiLT5HZXRSb3coJHEsYXJyYXkoJHVpZCwkZ2lkKSk7CiAgICAgICAgaWYoICR0bXAgKSByZXR1cm4gdHJ1ZTsKCiAgICAgICAgLy8gYWRkIHRoZSByZWNvcmQgdG8gdGhlIHRhYmxlIHRvIG1ha2UgdGhpcwogICAgICAgIC8vIHVzZXIgYSBtZW1iZXIgb2YgdGhpcyBncm91cAogICAgICAgICRxID0gIklOU0VSVCBJTlRPICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfYmVsb25ncyAodXNlcmlkLCBncm91cGlkKSBWQUxVRVMgKD8sPykiOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkdWlkLCAkZ2lkICkgKTsKICAgICAgICByZXR1cm4oICRkYnJlc3VsdCAhPSBmYWxzZSApOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIHRydWUvZmFsc2UKICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkUGFzc3dvcmQoICRwYXNzd29yZCApCiAgICB7CiAgICAgICAgLy8gYSBwYXNzd29yZCBpcyB2YWxpZCwgaWYgaXQncyBsZW5ndGggaXMKICAgICAgICAvLyB3aXRoaW4gY2VydGFpbiByYW5nZXMKICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICRtaW5sZW4gPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnLCA2ICk7CiAgICAgICAgJG1heGxlbiA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcsIDIwICk7CiAgICAgICAgJGVuaGFuY2VkcHcgPSAoaW50KSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdlbmhhbmNlZF9wYXNzd29yZCcsMCk7CiAgICAgICAgJHJlcXVpcmVkY2hhcnMgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdwYXNzd29yZF9yZXF1aXJlZGNoYXJzJyk7CiAgICAgICAgJGxlbiA9IHN0cmxlbigkcGFzc3dvcmQpOwogICAgICAgIGlmKCAkbGVuIDwgJG1pbmxlbiB8fCAkbGVuID4gJG1heGxlbiApIHsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KICAgICAgICBpZiggJGVuaGFuY2VkcHcgKSB7CiAgICAgICAgICAgIGlmKCAhcHJlZ19tYXRjaCgnI1tBLVpdIycsJHBhc3N3b3JkKSApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgaWYoICFwcmVnX21hdGNoKCcjWzAtOV0jJywkcGFzc3dvcmQpICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAkdG1wID0gc3RycGJyaygkcGFzc3dvcmQsJyFmJyk7CiAgICAgICAgICAgIGlmKCAkcmVxdWlyZWRjaGFycyAmJiBzdHJwYnJrKCRwYXNzd29yZCwkcmVxdWlyZWRjaGFycykgPT09IEZBTFNFICkgcmV0dXJuIEZBTFNFOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRobwogICAgLy8gcmV0dXJucyBhbiBhcnJheQogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJGdWxsKCAkaWQgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5nZXREYigpOwogICAgICAgICRpbl90cmFucyA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGlkID0gKGludCkgJGlkOwogICAgICAgICAgICBpZiggJGlkIDwgMSApIHJldHVybiBhcnJheShGQUxTRSwnSW52YWxpZCBVSUQnKTsKICAgICAgICAgICAgJHJlcyA9ICR0aGlzLT5HZXRVc2VySW5mbygkaWQpOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRyZXMpIHx8ICRyZXNbMF09PSBGQUxTRSApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgJHVzZXJuYW1lID0gJHJlc1sxXVsndXNlcm5hbWUnXTsKCiAgICAgICAgICAgIC8vIHNlbmQgdGhlIGV2ZW50Li4uIGJlZm9yZSB3ZSBhY3R1YWxseSBkZWxldGUgc3R1ZmYuCiAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRwYXJtc1snaWQnXSA9ICRpZDsKICAgICAgICAgICAgJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOwogICAgICAgICAgICBDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25EZWxldGVVc2VyJywkcGFybXMpOwoKICAgICAgICAgICAgLy8gbG9nIHRoZSB1c2VyIG91dAogICAgICAgICAgICAkdGhpcy0+TG9nb3V0VXNlciggJGlkICk7CgogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgJGluX3RyYW5zID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vIGRlbGV0ZSB1c2VyIHByb3BlcnRpZXMKICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCggJGlkICk7CgogICAgICAgICAgICAvLyBkZWxldGUgdXNlciBmcm9tIGdyb3VwcwogICAgICAgICAgICAkcmV0ID0gJHRoaXMtPlJlbW92ZVVzZXJGcm9tR3JvdXAoICRpZCwgJycgKTsKICAgICAgICAgICAgaWYoICRyZXRbMF0gPT0gZmFsc2UgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Byb2JsZW0gcmVtb3ZpbmcgdXNlciBmcm9tIGdyb3VwJyk7CgogICAgICAgICAgICAvLyBkZWxldGUgdGhlIHVzZXIgaGlzdG9yeQogICAgICAgICAgICAkcSA9ICdERUxFVEUgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2hpc3RvcnkgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOwoKICAgICAgICAgICAgLy8gZGVsZXRlIHVzZXIgcmVjb3JkCiAgICAgICAgICAgICRxID0gIkRFTEVURSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgaWQgPSA/IjsKICAgICAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRpZCApICk7CgogICAgICAgICAgICAvLyBhbmQgZGVsZXRlIGFueXRoaW5nIGZyb20gdGhlIHRlbXBjb2RlcyB0YWJsZSB0b28KICAgICAgICAgICAgJHEgPSAiREVMRVRFIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc190ZW1wY29kZSBXSEVSRSB1c2VyaWQgPSA/IjsKICAgICAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRpZCApICk7CgogICAgICAgICAgICAkdGhpcy0+X3VzZXJpZGJ5bmFtZSA9IGFycmF5KCk7CiAgICAgICAgICAgIG1hbXNfdXNlcl9jYWNoZTo6ZGVsX3VzZXIoJGlkKTsKICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwoKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAgICAgJHBhcm1zWydpZCddID0gJGlkOwogICAgICAgICAgICAkcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiAgICAgICAgICAgIENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpBZnRlckRlbGV0ZVVzZXInLCRwYXJtcyk7CgogICAgICAgICAgICByZXR1cm4gYXJyYXkoIFRSVUUsICIiICk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBpZiggJGluX3RyYW5zICkgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgICAgIGF1ZGl0KCRpZCwkbW9kLT5HZXROYW1lKCksJ1Byb2JsZW0gZGVsZXRpbmcgdXNlcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRfZ3JvdXBpbmZvKCR3aXRoX2NvdW50ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSkgKSB7CiAgICAgICAgICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICAgICAgICAgaWYoICRhdXRoX2NvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9MSVNUR1JPVVBTKSApIHsKICAgICAgICAgICAgICAgICR0bXAgPSAkYXV0aF9jb25zdW1lci0+Z2V0X2dyb3VwX2xpc3QoVFJVRSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBpZiggIWNvdW50KCR0bXApICkgcmV0dXJuOwogICAgICAgICAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRnaWQgPT4gJHJlYyApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5KCdpZCc9PiRnaWQsJ2dyb3VwZGVzYyc9PicnKTsKICAgICAgICAgICAgICAgICAgICBpZiggaXNfc3RyaW5nKCRyZWMpICYmICFpc19hcnJheSgkcmVjKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcDJbJ2dyb3VwbmFtZSddID0gJHJlYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIGlzc2V0KCRyZWNbJ25hbWUnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXAyWydncm91cG5hbWUnXSA9ICRyZWNbJ25hbWUnXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIGlzc2V0KCRyZWNbJ2dyb3VwbmFtZSddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcDJbJ2dyb3VwbmFtZSddID0gJHJlY1snZ3JvdXBuYW1lJ107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkcmVjKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGlzc2V0KCRyZWNbJ2Rlc2MnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wMlsnZ3JvdXBkZXNjJ10gPSAkcmVjWydkZXNjJ107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHJlY1snZGVzY3JpcHRpb24nXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wMlsnZ3JvdXBkZXNjJ10gPSAkcmVjWydkZXNjcmlwdGlvbiddOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRyZWNbJ2dyb3VwZGVzYyddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0bXAyWydncm91cGRlc2MnXSA9ICRyZWNbJ2dyb3VwZGVzYyddOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHJlY1snY291bnQnXSkgKSAkdG1wMlsnY291bnQnXSA9ICRyZWNbJ2NvdW50J107CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb3V0WyRnaWRdID0gJHRtcDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9ICRvdXQ7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHRoZSBjb25zdW1lciBkb2VzIG5vdCBwcm92aWRlIGdyb3VwIGluZm8uLi4uIHNvIHdlIGdvdHRhIGxpc3QgZW0uCiAgICAgICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2dyb3Vwcyc7CiAgICAgICAgICAgIGlmKCAkd2l0aF9jb3VudCApIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZy4qLGNvdW50KGIudXNlcmlkKSBBUyBjb3VudCBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfZ3JvdXBzIGcKICAgICAgICAgICAgICAgICAgTEVGVCBKT0lOICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfYmVsb25ncyBiCiAgICAgICAgICAgICAgICAgIE9OIGcuaWQgPSBiLmdyb3VwaWQgR1JPVVAgQlkgZy5pZCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRiciA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRkYnIpICkgJHRoaXMtPl9ncm91cGluZm9fY2FjaGUgPSB4dF9hcnJheTo6dG9faGFzaCgkZGJyLCdpZCcpOwogICAgICAgIH0KICAgIH0KCgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIC8vIHJldHVybnMgYW4gYXJyYXkKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cEluZm8oICRnaWQgKQogICAgewogICAgICAgICR0aGlzLT5fZ2V0X2dyb3VwaW5mbygpOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSkgJiYgaXNzZXQoJHRoaXMtPl9ncm91cGluZm9fY2FjaGVbJGdpZF0pICkgcmV0dXJuICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIHVzZXIgaW5mb3JtYXRpb24KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgQW4gYXJyYXkgb2YgaW50ZWdlciB1c2VyIGlkcwogICAgICogQHBhcmFtIGJvb29sZWFuIGZsYWcgaW5kaWNhdGluZyB3ZXRoZXIgdG8gcmV0dXJuIHByb3BlcnR5IGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIGFycmF5IG9mIHVzZXIgaW5mby4gIE9yIG51bGwuCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QnVsa1VzZXJJbmZvKCAkdWlkcywgJGRlZXAgPSBUUlVFICkKICAgIHsKICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHVpZHMsJGRlZXApOwoKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkdWlkcyBhcyAkb25lICkgewogICAgICAgICAgICAkb25lID0gKGludCkkb25lOwogICAgICAgICAgICBpZiggJG9uZSA8IDEgKSBjb250aW51ZTsKICAgICAgICAgICAgJHQgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyX25vbG9hZCgkb25lKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0KSApICRvdXRbXSA9ICR0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgLy8gcmV0dXJucyBhbiBhcnJheQogICAgLy8gc2Vjb25kIGVsZW1lbnQgb2YgYXJyYXkgbWF5IGJlIGFuIGFycmF5CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm8oICR1aWQsICRkZWVwID0gRkFMU0UgKQogICAgewogICAgICAgIGlmKCAhJHVpZCApIHJldHVybiBhcnJheShGQUxTRSk7IC8vIHRvZG8sIGFkZCBhIG1lc3NhZ2UKICAgICAgICAkcm93ID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkdWlkLCRkZWVwKTsKICAgICAgICBpZiggIWlzX2FycmF5KCRyb3cpICkgcmV0dXJuIGFycmF5KEZBTFNFKTsKICAgICAgICByZXR1cm4gYXJyYXkoIFRSVUUsICRyb3cgKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgLy8gcmV0dXJucyBhbiBhcnJheQogICAgLy8gc2Vjb25kIGVsZW1lbnQgb2YgYXJyYXkgbWF5IGJlIGFuIGFycmF5CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm9CeU5hbWUoICR1c2VybmFtZSApCiAgICB7CiAgICAgICAgaWYoICEkdXNlcm5hbWUgKSByZXR1cm4gYXJyYXkoRkFMU0UpOyAvLyB0b2RvLCBhZGQgYSBtZXNzYWdlCgogICAgICAgICR1aWQgPSAkdGhpcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICEkdWlkICkgewogICAgICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICAgICByZXR1cm4gYXJyYXkoRkFMU0UsJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBHZXRVc2VySW5mb0J5UHJvcGVydHkoJHByb3BuYW1lLCRwcm9wdmFsdWUgPSBudWxsKQogICAgewogICAgICAgIC8vIG5vdGUuLi4gY2Fubm90IHdvcmsgb24gZW5jcnlwdGVkIHByb3BlcnRpZXMuCiAgICAgICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgICAkZGVmbnMgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGRlZm5zKSApIHJldHVybiBhcnJheShGQUxTRSwkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJykpOwogICAgICAgIGlmKCAhaXNzZXQoJGRlZm5zWyRwcm9wbmFtZV0pICkgcmV0dXJuIGFycmF5KEZBTFNFLCRtb2R1bGUtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICAgICAgaWYoICRkZWZuc1skcHJvcG5hbWVdWydlbmNyeXB0J10gKSByZXR1cm4gYXJyYXkoRkFMU0UsJG1vZHVsZS0+TGFuZygnZXJyb3JfZGJlcnJvcicpKTsKCiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoJHByb3BuYW1lKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIHVzZXJpZCBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfcHJvcGVydGllcyB1cCBXSEVSRSB1cC50aXRsZSA9ID8nOwoKICAgICAgICBpZiggIWlzX251bGwoJHByb3B2YWx1ZSkgKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIEFORCBkYXRhID0gPyc7CiAgICAgICAgICAgICRwYXJtc1tdID0gJHByb3B2YWx1ZTsKICAgICAgICB9CiAgICAgICAgJHVpZCA9ICRkYi0+R2V0T25lKCRxdWVyeSwkcGFybXMpOwogICAgICAgIGlmKCAhJHVpZCApIHJldHVybiBhcnJheShGQUxTRSwkbW9kdWxlLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckhpc3RvcnkoJHVpZCwkYWN0aW9uPScnLCRjb3VudD0tMSkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcGFybXMgPSBhcnJheSgkdWlkKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2hpc3RvcnkgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICAgaWYoICFlbXB0eSgkYWN0aW9uKSApIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgQU5EIGFjdGlvbiA9ID8nOwogICAgICAgICAgICAkcGFybXNbXSA9ICRhY3Rpb247CiAgICAgICAgfQogICAgICAgICRxdWVyeSAuPSAnIE9SREVSIEJZIHJlZmRhdGUgREVTQyc7CgogICAgICAgICRyZXN1bHRzID0gJyc7CiAgICAgICAgaWYoICRjb3VudCA8PSAwICkgewogICAgICAgICAgICAkcmVzdWx0cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCRwYXJtcyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZGJyID0gJGRiLT5TZWxlY3RMaW1pdCgkcXVlcnksKGludCkkY291bnQpOwogICAgICAgICAgICB3aGlsZSggJGRiciAmJiAoJHJvdyA9ICRkYnItPkZldGNoUm93KCkpICkgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbXSA9ICRyb3c7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCBjb3VudCgkcmVzdWx0cykgPT0gMSApIHsKICAgICAgICAgICAgICAgICR0bXAgPSAkcmVzdWx0c1swXTsKICAgICAgICAgICAgICAgICRyZXN1bHRzID0gJHRtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldExvZ2dlZEluVXNlcnMoJG5vdF9hY3RpdmVfc2luY2UgPSAnJykKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiAgICAgICAgJHEgPSAnU0VMRUNUIHVzZXJpZCBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfbG9nZ2VkaW4nOwogICAgICAgICRxcGFybXMgPSBhcnJheSgpOwogICAgICAgIGlmKCAkbm90X2FjdGl2ZV9zaW5jZSApIHsKICAgICAgICAgICAgJHEgLj0gIiBXSEVSRSBsYXN0dXNlZCA8ID8iOwogICAgICAgICAgICAkcXBhcm1zW10gPSAkbm90X2FjdGl2ZV9zaW5jZTsKICAgICAgICB9CgogICAgICAgICRyZXMgPSAkZGItPkdldENvbCgkcSwkcXBhcm1zKTsKICAgICAgICByZXR1cm4gJHJlczsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgLy8gcmV0dXJucyBhbiBhcnJheSBvciBmYWxzZQogICAgcHVibGljIGZ1bmN0aW9uIENvdW50VXNlcnNJbkdyb3VwKCAkZ3JvdXBpZCApCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CgogICAgICAgICRxID0gJyc7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICBpZiggJGdyb3VwaWQgPT0gJycgfHwgJGdyb3VwaWQgPCAwICkgewogICAgICAgICAgICAkcSA9ICJTRUxFQ1QgY291bnQoaWQpIGFzIG51bSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgY29hbGVzY2UoZGlzYWJsZWQsMCkgPSAwIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRxID0gIlNFTEVDVCBjb3VudChpZCkgYXMgbnVtIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc191c2VycywiLgogICAgICAgICAgICAgICAgQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSBpZD11c2VyaWQgQU5EIGdyb3VwaWQgPSA/IEFORCBjb2FsZXNjZShkaXNhYmxlZCwwKSA9IDAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICRncm91cGlkOwogICAgICAgIH0KCiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgJHBhcm1zICk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gZmFsc2U7CgogICAgICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAgICAgcmV0dXJuICRyb3dbJ251bSddOwogICAgfQoKICAgIC8qKgogICAgICogUmVwbGFjZSB0aGlzIGNvZGUgd2l0aCBhIHVzZXIgcXVlcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldEZ1bGxVc2Vyc0luR3JvdXAoJGdpZCkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIHVzZXJpZCBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSBncm91cGlkID0gPyc7CiAgICAgICAgJHRtcCA9ICRkYi0+R2V0Q29sKCRxdWVyeSxhcnJheSgkZ2lkKSk7CiAgICAgICAgaWYoICEkdG1wICkgcmV0dXJuIEZBTFNFOwoKICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHRtcCxUUlVFKTsKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgICAgICAgIGlmKCAkb25lIDwgMSApIGNvbnRpbnVlOwoKICAgICAgICAgICAgJHJlYyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXJfbm9sb2FkKCRvbmUsVFJVRSk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkcmVjKSAmJiBpc3NldCgkcmVjWydmcHJvcHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkcmVjWydmcHJvcHMnXSBhcyAkb25lX3Byb3AgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcDJbJG9uZV9wcm9wWyd0aXRsZSddXSA9ICRvbmVfcHJvcFsnZGF0YSddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHJlY1sncHJvcHMnXSA9ICR0bXAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXRbXSA9ICRyZWM7CiAgICAgICAgfQoKICAgICAgICBpZiggY291bnQoJG91dCkgKSByZXR1cm4gJG91dDsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIC8vIHJldHVybnMgdHJ1ZS9mYWxzZQogICAgcHVibGljIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlJRCggJGdpZCApCiAgICB7CiAgICAgICAgJGRhdGEgPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCAkZ2lkICk7CiAgICAgICAgcmV0dXJuKCAkZGF0YSAhPSBmYWxzZSApOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIHRydWUvZmFsc2UKICAgIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5TmFtZSggJG5hbWUgKQogICAgewogICAgICAgICRnaWQgPSAkdGhpcy0+R2V0R3JvdXBJRCggJG5hbWUgKTsKICAgICAgICByZXR1cm4oICRnaWQgIT0gZmFsc2UgKTsKICAgIH0KCiAgICBmdW5jdGlvbiBMb2dnZWRJbkVtYWlsKCkKICAgIHsKICAgICAgICAkdXNlcmlkPSR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5HZXRFbWFpbCgkdXNlcmlkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RW1haWwoJHVpZCkKICAgIHsKICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAgICRyZXN1bHQgPSBmYWxzZTsKCiAgICAgICAgaWYgKCRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpIHsKICAgICAgICAgICAgJHRtcCA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHRtcCkgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdG1wWyd1c2VybmFtZSddOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gZ2V0IHRoZSB1c2VycyBmaXJzdCBlbWFpbCBhZGRyZXNzLgogICAgICAgICAgICAkcSA9ICdTRUxFQ1QgZGF0YSBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfcHJvcGRlZm4sJy4KICAgICAgICAgICAgICAgIENNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgbmFtZT10aXRsZSBBTkQgdHlwZT0yIEFORCB1c2VyaWQgPSA/JzsKICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+R2V0T25lKCAkcSwgYXJyYXkoICR1aWQgKSApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvLyB0b2RvOiBtb3ZlIHRoaXMgdG8gbWFpbiBtb2R1bGUuCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNWYWxpZEVtYWlsQWRkcmVzcyggJGVtYWlsLCAkdWlkID0gLTEsICRjaGVja19leGlzdGluZyA9IEZBTFNFICkKICAgIHsKICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgIGlmKCAhaXNfZW1haWwoJGVtYWlsKSApIHsKICAgICAgICAgICAgJHJlc3VsdFswXSA9IGZhbHNlOwogICAgICAgICAgICAkcmVzdWx0WzFdID0gJG1vZHVsZS0+TGFuZygnZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCcpOwogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwoKICAgICAgICBpZiggJGNoZWNrX2V4aXN0aW5nICkgewogICAgICAgICAgICBpZiAoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkgewogICAgICAgICAgICAgICAgJHEgPSAnU0VMRUNUIHVzZXJuYW1lIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSB1c2VybmFtZSA9ID8nOwogICAgICAgICAgICAgICAgJHBhcm0gPSBhcnJheSgkZW1haWwpOwogICAgICAgICAgICAgICAgaWYgKCR1aWQgPiAtMSkgewogICAgICAgICAgICAgICAgICAgICRxIC49ICcgQU5EIGlkICE9ID8nOwogICAgICAgICAgICAgICAgICAgICRwYXJtW10gPSAkdWlkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgJHBhcm0gKTsKICAgICAgICAgICAgICAgIGlmKCAkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpICkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHRbMF0gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0WzFdID0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZW1haWxhbHJlYWR5dXNlZCcpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoICEkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJykgKSB7CiAgICAgICAgICAgICAgICAkcSA9ICJTRUxFQ1QgZGF0YSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfcHJvcGRlZm4sIi4KICAgICAgICAgICAgICAgICAgICBDTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIFdIRVJFIG5hbWU9dGl0bGUgQU5EIHR5cGU9MiBBTkQgZGF0YSBMSUtFID8iOwogICAgICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoICRlbWFpbCApOwogICAgICAgICAgICAgICAgaWYoICR1aWQgPiAtMSApIHsKICAgICAgICAgICAgICAgICAgICAkcSAuPSAnIEFORCB1c2VyaWQgIT0gPyc7CiAgICAgICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkdWlkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRlbWFpbCApICk7CiAgICAgICAgICAgICAgICBpZiggJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSApIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0WzBdID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFsxXSA9ICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdFswXSA9IHRydWU7CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VybmFtZVByb21wdCgpCiAgICB7CiAgICAgICAgJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICAgICByZXR1cm4gJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCk7CiAgICB9CgogICAgLy8gdG9kbzogbW92ZSB0aGlzIHRvIHRoZSBtYWluIG1vZHVsZS4KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkVXNlcm5hbWUoICR1c2VybmFtZSwgJGNoZWNrX2VtYWlsID0gdHJ1ZSwgJHVpZCA9IC0xICkKICAgIHsKICAgICAgICAkY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgICAgIHJldHVybiAkY29uc3VtZXItPnZhbGlkYXRlX3VzZXJuYW1lKCR1c2VybmFtZSwkY2hlY2tfZW1haWwsJHVpZCk7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIC8vIHJldHVybnMgYW4gYXJyYXkKICAgIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyRnJvbUdyb3VwKCAkdWlkLCAkZ2lkICkKICAgIHsKICAgICAgICAkdWlkID0gKGludCkgJHVpZDsKICAgICAgICAkZ2lkID0gKGludCkgJGdpZDsKICAgICAgICAkZGIgPSBcY21zX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm4gYXJyYXkoRkFMU0UpOwogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoICR1aWQgKTsKICAgICAgICAgICAgJHEgPSAiREVMRVRFIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIHVzZXJpZCA9ID8iOwogICAgICAgICAgICBpZiggJGdpZCA+IDAgKSB7CiAgICAgICAgICAgICAgICAkcSAuPSAiIEFORCBncm91cGlkID0gPyI7CiAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICRnaWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCAkcSwgJHBhcm1zICk7CiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCBUUlVFICk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgICAgICAgYXVkaXQoJHVpZCwkbW9kLT5HZXROYW1lKCksJ0NvdWxkIG5vdCByZW1vdmUgdXNlciBmcm9tIGdyb3VwICcuJGdpZCk7CiAgICAgICAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShGQUxTRSwkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9CgoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIGFycmF5CiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0R3JvdXAoICRpZCwgJG5hbWUsICRkZXNjID0gbnVsbCApCiAgICB7CiAgICAgICAgJGlkID0gKGludCkgJGlkOwogICAgICAgICRuYW1lID0gdHJpbSgkbmFtZSk7CiAgICAgICAgJGRlc2MgPSB0cmltKCRkZXNjKTsKCiAgICAgICAgJHRoaXMtPl9ncm91cGluZm9fY2FjaGUgPSBudWxsOwogICAgICAgIGlmKCAkaWQgPCAxIHx8ICEkbmFtZSApIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCRtb2QtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICAgICB9CgogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwoKICAgICAgICAkZWlkID0gJHRoaXMtPkdldEdyb3VwSUQoICRuYW1lICk7CiAgICAgICAgaWYoICRlaWQgIT0gZmFsc2UgJiYgJGVpZCAhPSAkaWQgKSB7CiAgICAgICAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShGQUxTRSwkbW9kLT5MYW5nKCdlcnJvcl9ncm91cG5hbWVfZXhpc3RzJykpOwogICAgICAgIH0KCiAgICAgICAgJHEgPSAiVVBEQVRFICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfZ3JvdXBzIFNFVCBncm91cG5hbWUgPSA/LCBncm91cGRlc2MgPSA/IFdIRVJFIGlkID0gPyI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRuYW1lLCAkZGVzYywgJGlkICkgKTsKICAgICAgICBpZiggISRkYnJlc3VsdCApIHJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwoKICAgICAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGFycmF5KCBUUlVFICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEVuY3J5cHRQYXNzd29yZCggJHVpZCwgJHBsYWluX3Bhc3N3b3JkICkKICAgIHsKICAgICAgICAvKiBzaG91bGQgYmUgcHJvdGVjdGVkICovCiAgICAgICAgJHVzZV91c2Vyc2FsdCA9ICR0aGlzLT51c2VfdXNlcnNhbHQoKTsKICAgICAgICBpZiggISR1c2VfdXNlcnNhbHQgKSB7CiAgICAgICAgICAgIC8vIHRoaXMgaXMgcmVhbHkgcmVhbGx5IGJhZC4uIGJ1dCBrZXB0IGZvciBvbGQgaW5zdGFsbHMuCiAgICAgICAgICAgIGF1ZGl0KCcnLCdNQU1TJywnRkVVIGlzIHVzaW5nIHVuc2FmZSBwYXNzd29yZCBlbmNyeXB0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBtZDUoJHBsYWluX3Bhc3N3b3JkLiR0aGlzLT5nZXRfYmFkX3NhbHQoKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR1c2VfdXNlcnNhbHQgPT0gMSApIHsKICAgICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgICRzYWx0ID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBzYWx0IEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSBpZCA9ID8nLGFycmF5KCR1aWQpKTsKICAgICAgICAgICAgaWYoICEkc2FsdCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ1VzaW5nIHVzZXIgc2FsdGVkIHBhc3N3b3JkcywgYnV0IG5vIHNhbHQgc2V0IGZvciB0aGlzIHVzZXIgKG9yIHRoZSB1c2VyIGNvdWxkIG5vdCBiZSBmb3VuZCknKTsKICAgICAgICAgICAgcmV0dXJuIHNoYTEoJHBsYWluX3Bhc3N3b3JkLiRzYWx0KTsKICAgICAgICB9CiAgICAgICAgLy8gdXNlX3VzZXJzYWx0ID09IDIKICAgICAgICByZXR1cm4gcGFzc3dvcmRfaGFzaCgkcGxhaW5fcGFzc3dvcmQsUEFTU1dPUkRfQkNSWVBUKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCAkdWlkLCAkcGFzc3dvcmQgKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgICRwYXNzd29yZCA9IHRyaW0oKHN0cmluZykgJHBhc3N3b3JkKTsKICAgICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgIGlmKCAkdWlkIDwgMSB8fCAhJHBhc3N3b3JkICkgcmV0dXJuIFtGQUxTRSwkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJyldOwoKICAgICAgICBpZiggISR1aWQgKSByZXR1cm4gW0ZBTFNFLCRtb2QtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKV07CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CgogICAgICAgIC8vIGdvaW5nIGZvcndhcmQsIHdlIHVzZSBubyBzYWx0IGNvbHVtbi4KICAgICAgICAkcHcgPSAkdGhpcy0+RW5jcnlwdFBhc3N3b3JkKCR1aWQsJHBhc3N3b3JkKTsKICAgICAgICAkcSA9ICJVUERBVEUgIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc191c2VycyBTRVQgc2FsdCA9IE5VTEwsIHBhc3N3b3JkID0gPyBXSEVSRSBpZCA9ID8iOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkcHcsICR1aWQgKSk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gW0ZBTFNFLCRkYi0+RXJyb3JNc2coKV07CgogICAgICAgIG1hbXNfdXNlcl9jYWNoZTo6ZGVsX3VzZXIoJHVpZCk7CiAgICAgICAgcmV0dXJuIGFycmF5KFRSVUUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyRGlzYWJsZWQoICR1aWQsICRmbGFnID0gVFJVRSApCiAgICB7CiAgICAgICAgJHVpZCA9IChpbnQpICR1aWQ7CiAgICAgICAgJGZsYWcgPSAoYm9vbCkgJGZsYWc7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CgogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBTRVQgZGlzYWJsZWQgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZsYWcsJHVpZCkpOwogICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ3Byb2JsZW0gc2V0dGluZyB1aWQgJy4kdWlkLicgdG8gZGlzYWJsZWQnKTsKCiAgICAgICAgaWYoICRmbGFnICkgewogICAgICAgICAgICAkdGhpcy0+TG9nb3V0VXNlcigkdWlkLCd1c2VyIGRpc2FibGVkJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwndXNlciBlbmFibGVkJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBGb3JjZVBhc3N3b3JkQ2hhbmdlKCAkdWlkLCAkZmxhZyA9IFRSVUUgKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgICRmbGFnID0gKGJvb2wpICRmbGFnOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdWlkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfdXNlcnMgU0VUIGZvcmNlX25ld3B3ID0gPyBXSEVSRSBpZCA9ID8nOwogICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmbGFnLCR1aWQpKTsKICAgICAgICBpZiggISRkYnIgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdwcm9ibGVtIHNldHRpbmcgZm9yY2VfbmV3cHcgZmxhZyBmb3IgdXNlciAnLiR1aWQpOwoKICAgICAgICBpZiggJGZsYWcgKSAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwnZm9yY2Vwd3Jlc2V0Jyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEZvcmNlQ2hhbmdlU2V0dGluZ3MoICR1aWQsICRmbGFnID0gVFJVRSApCiAgICB7CiAgICAgICAgJHVpZCA9IChpbnQpICR1aWQ7CiAgICAgICAgJGZsYWcgPSAoYm9vbCkgJGZsYWc7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CgogICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBTRVQgZm9yY2VfY2hzZXR0aW5ncyA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZmxhZywkdWlkKSk7CiAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigncHJvYmxlbSBzZXR0aW5nIGZvcmNlX2Noc2V0dGluZ3MgZmxhZyBmb3IgdXNlciAnLiR1aWQpOwoKICAgICAgICBpZiggJGZsYWcgKSAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwnZm9yY2VjaHNldHRpbmdzJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEZvcmNlVmVyaWZ5KCAkdWlkLCAkZmxhZyA9IFRSVUUgKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgICRmbGFnID0gKGJvb2wpICRmbGFnOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdWlkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwoKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfdXNlcnMgU0VUIG11c3RfdmFsaWRhdGUgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZsYWcsJHVpZCkpOwogICAgICAgIC8vaWYoICEkZGJyICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigncHJvYmxlbSBzZXR0aW5nIGZvcmNlIHZlcmlmeSBmbGFnIGZvciB1c2VyICcuJHVpZCk7CgogICAgICAgIGlmKCAkZmxhZyApICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCdpbml0X3ZlcmlmeScpOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIGFycmF5CiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlciggJHVpZCwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzID0gZmFsc2UgKQogICAgewogICAgICAgIGlmKCAhJHVpZCApIHJldHVybiBhcnJheShGQUxTRSwiIik7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKCiAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhpcyB1c2VyIGV4aXN0cwogICAgICAgICRyZXQgPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgICAgICBpZiggJHJldFswXSA9PSBGQUxTRSApIHJldHVybiBhcnJheShGQUxTRSwgJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwoKICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGlzIHVzZXJuYW1lIGlzIG5vdCB0YWtlbiBieSBzb21lIG90aGVyIGlkCiAgICAgICAgJG51aWQgPSAkdGhpcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICRudWlkICE9IGZhbHNlICYmICRudWlkICE9ICR1aWQgKSByZXR1cm4gYXJyYXkoRkFMU0UsICRtb2R1bGUtPkxhbmcoJ2Vycm9yX3VzZXJuYW1ldGFrZW4nLCR1aWQpKTsKCiAgICAgICAgJGRicmVzdWx0ID0gJyc7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkcSA9ICJVUERBVEUgIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc191c2VycyBTRVQgdXNlcm5hbWUgPSA/IjsKICAgICAgICAkcGFybXNbXSA9ICR1c2VybmFtZTsKCiAgICAgICAgaWYoICRleHBpcmVzICE9IGZhbHNlICkgewogICAgICAgICAgICAkcSAuPSAiLCBleHBpcmVzID0gPyI7CiAgICAgICAgICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRleHBpcmVzKSwiJyIpOwogICAgICAgIH0KICAgICAgICAkcSAuPSAiIFdIRVJFIGlkID0gPyI7CiAgICAgICAgJHBhcm1zW10gPSAkdWlkOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsICRwYXJtcyApOwogICAgICAgIGlmKCAkZGJyZXN1bHQgPT0gZmFsc2UgKSByZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgKTsKCiAgICAgICAgaWYoICRwYXNzd29yZCApIHsKICAgICAgICAgICAgJHJlcyA9ICR0aGlzLT5TZXRVc2VyUGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKTsKICAgICAgICAgICAgaWYoICEkcmVzWzBdICkgcmV0dXJuICRyZXM7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+X3VzZXJpZGJ5bmFtZSA9IGFycmF5KCk7CiAgICAgICAgbWFtc191c2VyX2NhY2hlOjpkZWxfdXNlcigkdWlkKTsKCiAgICAgICAgLy8gQ2hhbmdlZCB0byBwYXNzICR1aWQgYmFjayBzbyBpdCBtYXRjaGVzIEFkZFVzZXIoKQogICAgICAgIHJldHVybiBhcnJheSggVFJVRSwgJHVpZCApOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSB1c2VyIGdyb3VwIG1lbWJlcnNoaXBzCiAgICAgKiBkb2VzIG5vdCBhbHRlciBhbnkgdXNlciBwcm9wZXJ0aWVzLgogICAgICogZG9lcyBub3QgdmFsaWRhdGUgZ3JvdXAgaWRzLCBidXQgZG9lcyB2YWxpZGF0ZSB1aWQKICAgICAqCiAgICAgKiBAcGFyYW0gaW50IHVzZXJpZAogICAgICogQHBhcmFtIGFycmF5IGFycmF5IG9mIGludGVnZXIgZ3JvdXAgaWRzCiAgICAgKiBAcmV0dXJuIGFycmF5IChzdGF0dXMsbXNnKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlckdyb3VwcyggJHVpZCwgJGdycGlkcyApCiAgICB7CiAgICAgICAgaWYoICEkdWlkICkgcmV0dXJuIGFycmF5KEZBTFNFLCIiKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiAgICAgICAgLy8gZmlyc3QgbWFrZSBzdXJlIHRoaXMgdXNlciBleGlzdHMKICAgICAgICAkcmV0ID0gJHRoaXMtPkdldFVzZXJJbmZvKCAkdWlkICk7CiAgICAgICAgaWYoICRyZXRbMF0gPT0gRkFMU0UgKSByZXR1cm4gYXJyYXkoRkFMU0UsICJVc2VyIGRvZXMgbm90IGV4aXN0Iik7CgogICAgICAgIC8vIHRoZW4gcmVtb3ZlIGFsbCBoaXMgY3VycmVudCBhc3NpZ25tZW50cwogICAgICAgICRxID0gIkRFTEVURSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCApKTsKICAgICAgICBpZiggISRkYnJlc3VsdCApIHJldHVybiBhcnJheSggRkFMU0UsICRkYi0+RXJyb3JNc2coKSAgKTsKCiAgICAgICAgaWYoIGlzX2FycmF5KCRncnBpZHMpICYmIGNvdW50KCRncnBpZHMpICkgewogICAgICAgICAgICAvLyBhbmQgYWRkIGFsbCBvZiB0aGVtIGluCiAgICAgICAgICAgICRxID0gIklOU0VSVCBJTlRPICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfYmVsb25ncyBWQUxVRVMgKD8sPykiOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JwaWRzIGFzICRncnBpZCApIHsKICAgICAgICAgICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkdWlkLCAkZ3JwaWQgKSApOwogICAgICAgICAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFycmF5KCBUUlVFLCAiIiApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRVc2VyVG9Hcm91cCgkdWlkLCAkZ2lkKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+QXNzaWduVXNlclRvR3JvdXAoJHVpZCwkZ2lkKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgLy8gcmV0dXJucyB0cnVlL2ZhbHNlCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnRpZXMoICR1aWQsICRwcm9wcyApCiAgICB7CiAgICAgICAgaWYoICEkdWlkICkgcmV0dXJuIEZBTFNFOwogICAgICAgIC8vIERlbGV0ZSBhbGwgdGhlIHVzZXIgcHJvcGVydGllcwogICAgICAgIC8vIGFuZCBzZXQgbmV3IG9uZXMKICAgICAgICAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCggJycsICR1aWQsIHRydWUgKTsKICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1aWQpOwoKICAgICAgICBpZiggaXNfYXJyYXkoJHByb3BzKSAmJiBjb3VudCgkcHJvcHMpICkgewogICAgICAgICAgICBpZiggeHRfYXJyYXk6OmlzX2hhc2goJHByb3BzKSApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRwcm9wcyBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAoJHIgPSAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCggJGtleSwgJHZhbCwgJHVpZCApKSA9PSBmYWxzZSkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZm9yZWFjaCggJHByb3BzIGFzICRwcm9wICkgewogICAgICAgICAgICAgICAgICAgIGxpc3QoICRrZXksICR2YWwgKSA9IGV4cGxvZGUoJz0nLCRwcm9wLDIpOwogICAgICAgICAgICAgICAgICAgIGlmICggKCRyID0gJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoICRrZXksICR2YWwsICR1aWQgKSkgPT0gZmFsc2UpIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFRSdUU7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIC8vIHJldHVybnMgdHJ1ZS9mYWxzZQogICAgcHVibGljIGZ1bmN0aW9uIFVzZXJFeGlzdHNCeUlEKCAkdWlkICkKICAgIHsKICAgICAgICBpZiggISR1aWQgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgJGRhdGEgPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgICAgICByZXR1cm4oICRkYXRhWzBdICE9PSBGQUxTRSApOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIGFuIGFycmF5IG9yIGZhbHNlCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnRpZXMoJHVpZCkKICAgIHsKICAgICAgICBpZiggISR1aWQgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgJHVpbmZvID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkdWlkLFRSVUUpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvICkgfHwgIWlzc2V0KCR1aW5mb1snZnByb3BzJ10pICkgcmV0dXJuIEZBTFNFOwoKICAgICAgICByZXR1cm4gJHVpbmZvWydmcHJvcHMnXTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgLy8gcmV0dXJucyBhbiBhcnJheSBvZiByZWNvcmRzIG9yIGZhbHNlCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCkKICAgIHsKICAgICAgICAkYXV0aF9jb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICAgICAgaWYoICRhdXRoX2NvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9HUk9VUE1FTUJFUlNISVApICkgewogICAgICAgICAgICAkb3V0ID0gJGF1dGhfY29uc3VtZXItPmdldF9ncm91cF9tZW1iZXJzaGlwKCR1c2VyaWQpOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRvdXQpIHx8IGNvdW50KCRvdXQpID09IDAgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICRyZXMgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkb3V0IGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAkcmVzW10gPSBhcnJheSgndXNlcmlkJz0+JHVzZXJpZCwnZ3JvdXBpZCc9PiRvbmUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkcmVzOwogICAgICAgIH0KCiAgICAgICAgLy8gc2hvdWxkbid0IGJlIHVzZWQgYW55IG1vcmUuLi4gYnV0IGp1c3QgaW4gY2FzZS4KICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQ9PyI7CiAgICAgICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSxhcnJheSgkdXNlcmlkKSk7CiAgICAgICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgICAgICAgJHJlc3VsdD1hcnJheSgpOzsKICAgICAgICAgICAgd2hpbGUgKCRyb3c9JGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkcm93OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgovLwovLyBlbmQgb2YgcmMgZnVuY3Rpb25zCi8vCgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHkoJHRpdGxlLCRkZWZhdWx0dmFsdWU9ZmFsc2UpCiAgICB7CiAgICAgICAgJHVzZXJpZD0kdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmICgkdXNlcmlkPT09ZmFsc2UpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsJGRlZmF1bHR2YWx1ZSk7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCAkZGVmYXVsdHZhbHVlPWZhbHNlKQogICAgewogICAgICAgIGlmICgkdXNlcmlkPT09ZmFsc2UpIHJldHVybiBmYWxzZTsKICAgICAgICAkdWluZm8gPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1c2VyaWQsVFJVRSk7CgogICAgICAgICRkZWZuID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbigkdGl0bGUpOwogICAgICAgIGlmKCAhJGRlZm4gKSByZXR1cm4gZmFsc2U7CgogICAgICAgIGlmKCBpc3NldCgkdWluZm9bJ2Zwcm9wcyddKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHVpbmZvWydmcHJvcHMnXSBhcyAkb25lcHJvcCApIHsKICAgICAgICAgICAgICAgIGlmKCAkb25lcHJvcFsndGl0bGUnXSA9PSAkdGl0bGUgKSByZXR1cm4gJG9uZXByb3BbJ2RhdGEnXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRlZmF1bHR2YWx1ZTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIElzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVpZCwkdGl0bGUsJGRhdGEpCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJGRiciA9ICcnOwogICAgICAgIGlmKCAkdWlkID4gMCApIHsKICAgICAgICAgICAgJHEgPSAnU0VMRUNUIGlkIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc19wcm9wZXJ0aWVzCiAgICAgICAgICAgIFdIRVJFIHRpdGxlID0gPyBBTkQgdXNlcmlkICE9ID8gQU5EIGRhdGEgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCR0aXRsZSwkdWlkLCRkYXRhKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcSA9ICdTRUxFQ1QgaWQgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMKICAgICAgICAgICAgV0hFUkUgdGl0bGUgPSA/IEFORCBkYXRhID0gPyc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcSxhcnJheSgkdGl0bGUsJGRhdGEpKTsKICAgICAgICB9CiAgICAgICAgaWYoICRkYnIgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydHkoJHRpdGxlLCRkYXRhKQogICAgewogICAgICAgICR1c2VyaWQ9JHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgICAgICBpZiAoJHVzZXJpZD09PWZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuICR0aGlzLT5TZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkZGF0YSwkdXNlcmlkKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCRkYXRhLCR1c2VyaWQpCiAgICB7CiAgICAgICAgaWYgKCR1c2VyaWQ9PT1mYWxzZSkgcmV0dXJuIEZBTFNFOwogICAgICAgICRkZWZuID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbigkdGl0bGUpOwogICAgICAgIGlmKCAhJGRlZm4gKSByZXR1cm4gRkFMU0U7CgogICAgICAgIGlmKCAkZGVmblsnZW5jcnlwdCddICkgewogICAgICAgICAgICAvLyBnb3R0YSBlbmNyeXB0LgogICAgICAgICAgICAka2V5ID0gJHRoaXMtPkdldEVuY3J5cHRpb25LZXkoJHVzZXJpZCxUUlVFKTsKICAgICAgICAgICAgJGRhdGEgPSBiYXNlNjRfZW5jb2RlKHh0X2VuY3J5cHQ6OmVuY3J5cHQoJGtleSwkZGF0YSkpOwogICAgICAgIH0KCiAgICAgICAgaWYoICRkZWZuWydmb3JjZV91bmlxdWUnXSAmJiAhJHRoaXMtPklzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVzZXJpZCwkdGl0bGUsJGRhdGEpICkgcmV0dXJuIEZBTFNFOwogICAgICAgICRkYiA9ICR0aGlzLT5HZXREQigpOwogICAgICAgICRxPSJTRUxFQ1QgKiBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB0aXRsZT0/IEFORCB1c2VyaWQ9PyI7CiAgICAgICAgJHA9YXJyYXkoJHRpdGxlLCR1c2VyaWQpOwogICAgICAgICRyPSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgICAgICAgaWYgKCEkciB8fCAoJHItPk51bVJvd3MoKT09MCkpIHsKICAgICAgICAgICAgJHE9IklOU0VSVCBJTlRPICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfcHJvcGVydGllcyAodXNlcmlkLHRpdGxlLGRhdGEpIFZBTFVFUyAoPyw/LD8pIjsKICAgICAgICAgICAgJHA9YXJyYXkoJHVzZXJpZCwkdGl0bGUsJGRhdGEpOwogICAgICAgICAgICAkcj0kZGItPkV4ZWN1dGUoJHEsJHApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyb3c9JHItPkZldGNoUm93KCk7CiAgICAgICAgICAgICRxPSJVUERBVEUgIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIFNFVCBkYXRhPT8gV0hFUkUgaWQ9PyI7CiAgICAgICAgICAgICRwPWFycmF5KCRkYXRhLChpbnQpJHJvd1siaWQiXSk7CiAgICAgICAgICAgICRyPSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgICAgICAgfQoKICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1c2VyaWQpOwogICAgICAgIHJldHVybiAoJHIhPWZhbHNlKTsKICAgIH0KCiAgICAvLyBkZWxldGUgYWxsIG9jY3VyYW5jZXMgb2YgdGhlIHVzZXJwcm9wZXJ0eSBieSBuYW1lCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5QnlOYW1lKCAkdGl0bGUgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5HZXREQigpOwogICAgICAgICRxID0gIkRFTEVURSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB0aXRsZT0/IjsKICAgICAgICAkcCA9IGFycmF5KCAkdGl0bGUgKTsKICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgJHAgKTsKCiAgICAgICAgbWFtc191c2VyX2NhY2hlOjpjbGVhcl9hbGwoKTsKICAgICAgICByZXR1cm4gKCRyZXN1bHQhPWZhbHNlKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eSgkdGl0bGUsJGFsbD1mYWxzZSkKICAgIHsKICAgICAgICAkdXNlcmlkPSR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAgICAgaWYgKCR1c2VyaWQ9PT1mYWxzZSkgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJHVzZXJpZCwkYWxsKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsJGFsbD1mYWxzZSkKICAgIHsKICAgICAgICAkZGI9JHRoaXMtPkdldERCKCk7CiAgICAgICAgJHE9IkRFTEVURSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB1c2VyaWQ9PyI7CiAgICAgICAgaWYgKCEkYWxsKSAkcS49IiBBTkQgdGl0bGU9PyI7CiAgICAgICAgJHA9YXJyYXkoKTsKICAgICAgICBpZiAoJGFsbCkgJHA9YXJyYXkoJHVzZXJpZCk7IGVsc2UgJHA9YXJyYXkoJHVzZXJpZCwkdGl0bGUpOwogICAgICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCRxLCRwKTsKCiAgICAgICAgbWFtc191c2VyX2NhY2hlOjpkZWxfdXNlcigkdXNlcmlkKTsKICAgICAgICByZXR1cm4gKCRyZXN1bHQhPWZhbHNlKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkRlbGV0ZVVzZXJQcm9wZXJ0eSgiIix0cnVlKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCgkdXNlcmlkKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgiIiwkdXNlcmlkLHRydWUpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB1c2VfdXNlcnNhbHQoKQogICAgewogICAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgcmV0dXJuIChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZV91c2Vyc2FsdCcsMik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIENoZWNrUGFzc3dvcmQoJHVzZXJuYW1lLCRwYXNzd29yZCwkZ3JvdXBzID0gJycpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IG51bGw7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CgogICAgICAgICR0bXAgPSAkdGhpcy0+R2V0VXNlckluZm9CeU5hbWUoJHVzZXJuYW1lKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR0bXApIHx8ICFpc3NldCgkdG1wWzBdKSB8fCAhJHRtcFswXSB8fCAhaXNfYXJyYXkoJHRtcFsxXSkgKSByZXR1cm4gMDsKICAgICAgICAkdWluZm8gPSAkdG1wWzFdOwogICAgICAgIGlmKCAhaXNzZXQoJHVpbmZvWydpZCddKSAmJiAhaXNzZXQoJHVpbmZvWydwYXNzd29yZCddKSApIHJldHVybiAwOwoKICAgICAgICBpZiggJGdyb3VwcyApIHsKICAgICAgICAgICAgJGdpbmZvID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KChpbnQpICR1aW5mb1snaWQnXSk7CiAgICAgICAgICAgIGlmKCAhJGdpbmZvICkgcmV0dXJuIDA7IC8vIHVzZXIgbm90IGEgbWVtYmVyIG9mIGFueSBncm91cHMKICAgICAgICAgICAgJG1lbWJlcl9naWRzID0gYXJyYXlfbWFwKGZ1bmN0aW9uKCRyb3cpewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoaW50KSAkcm93Wydncm91cGlkJ107CiAgICAgICAgICAgICAgICB9LCAkZ2luZm8pOwogICAgICAgICAgICB1bnNldCgkZ2luZm8pOwoKICAgICAgICAgICAgJGdyb3VwcyA9IGV4cGxvZGUoJywnLCRncm91cHMpOwogICAgICAgICAgICAvLyBjb252ZXJ0IHRoZXNlIGdyb3VwIG5hbWVzIHRvIGdpZHMuCiAgICAgICAgICAgICRnaWRzID0gW107CiAgICAgICAgICAgICRhbGxncm91cHMgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiAgICAgICAgICAgIGlmKCAhJGFsbGdyb3VwcyApIHJldHVybiAwOyAvLyBubyBncm91cHMgZGVmaW5lZAogICAgICAgICAgICAkYWxsZ3JvdXBzID0gYXJyYXlfZmxpcCgkYWxsZ3JvdXBzKTsKICAgICAgICAgICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJG9uZSA9IHRyaW0oJG9uZSk7CiAgICAgICAgICAgICAgICBpZiggISRvbmUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICRnaWQgPSBhcnJheV9zZWFyY2goJG9uZSwgJGFsbGdyb3Vwcyk7CiAgICAgICAgICAgICAgICBpZiggJGdpZCA9PT0gRkFMU0UgKSBjb250aW51ZTsgLy8gZ3JvdXAgZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgICAgICRnaWRzW10gPSAkZ2lkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuc2V0KCRhbGxncm91cHMsJGdyb3Vwcyk7CiAgICAgICAgICAgICRnaWRzID0gYXJyYXlfdW5pcXVlKCRnaWRzKTsKICAgICAgICAgICAgaWYoIGVtcHR5KCRnaWRzKSApIHJldHVybiAwOyAvLyBubyBncm91cHMgc3BlY2lmaWVkIGFjdHVhbGx5IGV4aXN0LgoKICAgICAgICAgICAgJHRtcCA9IGFycmF5X2ludGVyc2VjdCgkZ2lkcywgJG1lbWJlcl9naWRzKTsKICAgICAgICAgICAgaWYoIGVtcHR5KCR0bXApICkgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICAvLyBub3cgdmVyaWZ5IHRoZSBoYXNoCiAgICAgICAgaWYoIHN0cmxlbigkdWluZm9bJ3Bhc3N3b3JkJ10pID09IDMyICkgewogICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBvbGQsIG5vdCByZWFsbHkgZ29vZCBoYXNoaW5nLgogICAgICAgICAgICAvLyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAgICAgICAgaWYoICFlbXB0eSgkdWluZm9bJ3NhbHQnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wYiA9IG1kNSh0cmltKCRwYXNzd29yZCkuJHVpbmZvWydzYWx0J10pOwogICAgICAgICAgICAgICAgYXVkaXQoJHVpbmZvWydpZCddLCdNQU1TJywnVXNlciBoYXMgYSBzYWx0LCBidXQgYW4gbWQ1IGVuY29kZWQgcGFzc3dvcmQnKTsKICAgICAgICAgICAgICAgIGlmKCAkdWluZm9bJ3Bhc3N3b3JkJ10gPT0gJHRtcGIgKSByZXR1cm4gJHVpbmZvWydpZCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0bXBhID0gbWQ1KHRyaW0oJHBhc3N3b3JkKS4kdGhpcy0+Z2V0X2JhZF9zYWx0KCkpOwogICAgICAgICAgICBpZiggJHVpbmZvWydwYXNzd29yZCddID09PSAkdG1wYSApIHJldHVybiAkdWluZm9bJ2lkJ107CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR1aW5mb1snc2FsdCddICkgewogICAgICAgICAgICAvLyB1c2VyIGhhcyBhIHNhbHQuLi4gc28gaXQgaXMgdXNpbmcgb2xkIHNoYTEgaGFzaGluZwogICAgICAgICAgICAkdG1wID0gc2hhMSgkcGFzc3dvcmQuJHVpbmZvWydzYWx0J10pOwogICAgICAgICAgICBpZiggJHVpbmZvWydwYXNzd29yZCddID09PSAkdG1wICkgcmV0dXJuICR1aW5mb1snaWQnXTsKICAgICAgICB9CgogICAgICAgIC8vIHVzZXJzYWx0ID09IDIsIG5ldyBwYXNzd29yZCBoYXNoZXMuCiAgICAgICAgcmV0dXJuIHBhc3N3b3JkX3ZlcmlmeSgkcGFzc3dvcmQsICR1aW5mb1sncGFzc3dvcmQnXSkgPyAkdWluZm9bJ2lkJ10gOiAwOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICBwdWJsaWMgZnVuY3Rpb24gTG9nZ2VkSW5OYW1lKCkKICAgIHsKICAgICAgICAkdXNlcmlkPSR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAgICAgaWYgKCR1c2VyaWQpIHJldHVybiAkdGhpcy0+R2V0VXNlck5hbWUoJHVzZXJpZCk7IGVsc2UgcmV0dXJuICIiOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyB0aGlzIGlzIGZvciBmcm9udGVuZCBjb2RlCiAgICBwdWJsaWMgZnVuY3Rpb24gTG9nb3V0KCR1aWQgPSAnJywkbWVzc2FnZSA9ICdsb2dvdXQnKQogICAgewogICAgICAgIGlmKCAkdWlkICE9ICcnICkgcmV0dXJuICR0aGlzLT5Mb2dvdXRVc2VyKCR1aWQsJG1lc3NhZ2UpOwoKICAgICAgICAkdWlkID0gKGludCkgJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm47CgogICAgICAgIC8vIGxvZ291dCB0aGUgY3VycmVudCB1c2VyIChjbGVhcnMgc2Vzc2lvbiBhbmQgY29va2llcykuCiAgICAgICAgJHRoaXMtPl9jbGVhcl9sb2dpbmRldGFpbHMoJHVpZCk7CgogICAgICAgIC8vIGFuZCBhZGQgaGlzdG9yeSBpbmZvCiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsJG1lc3NhZ2UpOwoKICAgICAgICAvLyBzZW5kIHRoZSBldmVudC4KICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dvdXQnLGFycmF5KCdpZCc9PiR1aWQpKTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIExvZ291dFVzZXIoJHVpZCwkZXZlbnRtc2cgPSAnbG9nb3V0JykKICAgIHsKICAgICAgICAvLyB0aGlzIGRlbGV0ZXMgdGhlIGVudHJ5IGZyb20gdGhlIGxvZ2dlZGluIHRhYmxlLCBhbmQgYWRkcyBhIGhpc3RvcnkgZW50cnkuCiAgICAgICAgLy8gaXQgYWxzbyBzZXRzIHNvbWUgY2FjaGUgZGF0YSB1c2VkIHRvIGZvcmNlIGxvZ291dCB0aGUgdXNlcgogICAgICAgIC8vIGRlc2lnbmVkIHRvIHByb2dyYW1hdGljYWxseSBsb2dvdXQgYSB1c2VyIGZyb20gdGhlIGFkbWluIHBhbmVsLgoKICAgICAgICAvLyBzbyB0aGF0IHRoZSBuZXh0IHRpbWUgYSB1c2VyIGRvZXMgYW55dGhpbmcgb24gdGhpcyBzaXRlLCBhbmQgYXMgbG9uZyBhcyBjYWNoZSBpcyBub3QgY2xlYXJlZAogICAgICAgIC8vIHRoZSBuZXh0IHRpbWUgaGUgZG9lcyBhIHJlcXVlc3Qgb24gdGhlIHdlYnNpdGUsIGhpcyBjb29raWVzIGFuZCBzZXNzaW9uIGRhdGEgd2lsbCBiZSBjbGVhcmVkCiAgICAgICAgLy8gYW5vdGhlciBvcHRpb24gaGVyZSB3b3VsZCBiZSB0byB1c2UgYSBmbGFnIGluIHRoZSBkYXRhYmFzZSB0aGF0IGluZGljYXRlcyB0aGUgdXNlciBzaG91bGQgYmUgbG9nZ2VkIG91dC4KICAgICAgICBjbXNfY2FjaGVfaGFuZGxlcjo6Z2V0X2luc3RhbmNlKCktPnNldCggJ21hbXNfbG9nb3V0XycuJHVpZCwgMSwgX19DTEFTU19fICk7CgogICAgICAgIGlmKCAhJHVpZCApIHJldHVybjsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkcT0iREVMRVRFIEZST00gIi5DTVNfREJfUFJFRklYLiJtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSB1c2VyaWQ9PyI7CiAgICAgICAgJHA9YXJyYXkoJHVpZCk7CiAgICAgICAgJHJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsJHApOwoKICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwkZXZlbnRtc2cpOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVXNlcnMoKQogICAgewogICAgICAgIHN0YXRpYyAkX2hhc3J1bjsKICAgICAgICBpZiggJF9oYXNydW4gKSByZXR1cm47CiAgICAgICAgJF9oYXNydW4gPSB0cnVlOwoKICAgICAgICAvLyBleHBpcmVzIHVzZXJzIHdobyBoYXZlIG5vdCBiZWVuICd0b3VjaGVkJyB3aXRoaW4gdGhlIGxhc3QgTiBzZWNvbmRzLgogICAgICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgJGV4cGlyZV9pbnRlcnZhbCA9IChpbnQpICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2V4cGlyZXVzZXJzX2ludGVydmFsJywxODApOwogICAgICAgICRleHBpcmVfbGFzdHJ1biA9ICR0aGlzLT5nZXRfZXhwaXJldXNlcnNfbGFzdHJ1bigpOwogICAgICAgIGlmKCB0aW1lKCkgLSAkZXhwaXJlX2xhc3RydW4gPj0gJGV4cGlyZV9pbnRlcnZhbCApIHsKICAgICAgICAgICAgJGV4cGlyeXRpbWUgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycpOwogICAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiAgICAgICAgICAgIC8vIHRvZG86IGJlZ2luIHRyYW5zYWN0aW9uCgogICAgICAgICAgICAkcT0iU0VMRUNUICogRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIGxhc3R1c2VkIDwgPyI7CiAgICAgICAgICAgICRwPVt0aW1lKCktJGV4cGlyeXRpbWVdOwogICAgICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCAkcCApOwogICAgICAgICAgICB3aGlsZSggJGRicmVzdWx0ICYmICgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkcm93Wyd1c2VyaWQnXSwnZXhwaXJlJyk7CiAgICAgICAgICAgICAgICAka2V5ID0gJHRoaXMtPmtlZXBhbGl2ZV9jb29raWUoKTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkX1NFU1NJT05bJGtleV0pICYmICRfU0VTU0lPTlska2V5XSAhPSAnJyApIHsKICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGxvZ3MgdGhlIGN1cnJlbnQgdXNlciBvdXQuCiAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSAkdGhpcy0+ZGVjb2RlX3VzZXJkYXRhKCRfU0VTU0lPTlska2V5XSk7CiAgICAgICAgICAgICAgICAgICAgaWYoIGlzc2V0KCRkYXRhWyd1aWQnXSkgJiYgJGRhdGFbJ3VpZCddID09ICRyb3dbJ3VzZXJpZCddICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2NsZWFyX2xvZ2luZGV0YWlscygkcm93Wyd1c2VyaWQnXSxUUlVFKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+Tm90aWZ5RXhwaXJlZFVzZXIoICRyb3dbJ3VzZXJpZCddICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxPSJERUxFVEUgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIGxhc3R1c2VkPD8iOwogICAgICAgICAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CgogICAgICAgICAgICAvLyB0b2RvOiBjb21taXQgdHJhbnNhY3Rpb24KCiAgICAgICAgICAgICR0aGlzLT50b3VjaF9leHBpcmV1c2Vyc19sYXN0cnVuKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICBwdWJsaWMgZnVuY3Rpb24gTG9nZ2VkSW5JZCgpCiAgICB7CiAgICAgICAgLy8gaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCB1c2luZyB0aGUgYXV0aCBtb2R1bGUKICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICAgICBpZiggISRhdXRoX2NvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9MT0dJTikgKSB7CiAgICAgICAgICAgIC8vIGl0cyB0aGUgYnVpbHQgaW4gc3R1ZmYuCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3N0ZF9Mb2dnZWRJbklkKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBlaXRoZXIgdGhlIGNvbnN1bWVyIGRvZXNuJ3QgcHJvdmlkZSBhYnNvbHV0ZSBsb2dpbiAoQ0FQQUJJTElUWV9MT0dJTikgT1IgdGhlIHVzZXIgaXMgbm90CiAgICAgICAgLy8gYXV0aGVudGljYXRlZCB2aWEgdGhlIG9sZCBzdHVmZi4KICAgICAgICBpZiggJGF1dGhfY29uc3VtZXItPmlzX2F1dGhlbnRpY2F0ZWQoKSApIHsKICAgICAgICAgICAgLy8gYXV0aGVudGljYXRlZCB2aWEgc29tZSBleHRlcm5hbCBtZWNoYW5pc20uLi4gc3RpbGwgbmVlZCB0byB0aWUgdGhpcyB0byBhbgogICAgICAgICAgICAvLyBpbnRlcm5hbCB1c2VyIHJlY29yZCBmb3IgcHJvcGVydGllcyBhbmQgZ3JvdXBzIGFuZCBjcnVmdC4KCiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgYSB1c2VyaWQgYmFzZWQgb24gYSBwcm9wZXJ0eQogICAgICAgICAgICAkcHJvcCA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfY29ubmVjdGluZ19wcm9wZXJ0eV9uYW1lKCk7CiAgICAgICAgICAgICR2YWwgID0gJGF1dGhfY29uc3VtZXItPmdldF91bmlxdWVfaWRlbnRpZmllcigpOwogICAgICAgICAgICBpZiggISR2YWwgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICAgICAkdWluZm8gPSAnJzsKICAgICAgICAgICAgJHVzZXByb3AgPSBmYWxzZTsKICAgICAgICAgICAgaWYoICRwcm9wID09ICcnIHx8ICRwcm9wID09IG1hbXNfYXV0aF9jb25zdW1lcjo6UFJPUEVSVFlfVVNFUk5BTUUgKSB7CiAgICAgICAgICAgICAgICAvLyBnZXQgdXNlciBieSBuYW1lCiAgICAgICAgICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm9CeU5hbWUoICRhdXRoX2NvbnN1bWVyLT5nZXRfdXNlcm5hbWUoJHZhbCkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCAkcHJvcCA9PSBtYW1zX2F1dGhfY29uc3VtZXI6OlBST1BFUlRZX1VJRCApIHsKICAgICAgICAgICAgICAgIC8vIHNlZSBpZiB0aGUgdWlkIGV4aXN0cy4KICAgICAgICAgICAgICAgICR1aW5mbyA9ICR0aGlzLT5HZXRVc2VySW5mbyggJHZhbCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gaXQncyBhIHByb3BlcnR5IG9mIHNvbWUgdHlwZS4KICAgICAgICAgICAgICAgICR1aW5mbyA9ICR0aGlzLT5HZXRVc2VySW5mb0J5UHJvcGVydHkoJHByb3AsJHZhbCk7CiAgICAgICAgICAgICAgICAkdXNlcHJvcCA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSB8fCAoaXNfYXJyYXkoJHVpbmZvKSAmJiAkdWluZm9bMF0gPT0gRkFMU0UpICkgewogICAgICAgICAgICAgICAgLy8gdXNlciBhdXRoZW50aWNhdGVkIGJ1dCBub3QgZm91bmQsIGRvIHdlIG5lZWQgdG8gY3JlYXRlIG9uZT8KICAgICAgICAgICAgICAgIGlmKCAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdhdXRvX2NyZWF0ZV91bmtub3duJykgKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGdvbm5hIGNyZWF0ZSBhIG5ldyB1c2VyLgogICAgICAgICAgICAgICAgICAgICR1c2VybmFtZSA9ICcnOwoKICAgICAgICAgICAgICAgICAgICBpZiggJGF1dGhfY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRhdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVJOQU1FKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXJuYW1lID0gJGF1dGhfY29uc3VtZXItPmdldF91c2VybmFtZSgpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYoICEkdXNlcm5hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR1c2VybmFtZSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1c2VfcmFuZG9tdXNlcm5hbWUnKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAkcHJvcCAhPSBtYW1zX2F1dGhfY29uc3VtZXI6OlBST1BFUlRZX1VTRVJOQU1FICYmCiAgICAgICAgICAgICAgICAgICAgICAgICRwcm9wICE9IG1hbXNfYXV0aF9jb25zdW1lcjo6UFJPUEVSVFlfVUlEICYmCiAgICAgICAgICAgICAgICAgICAgICAgICRwcm9wICE9ICcnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXJuYW1lID0gJG1vZHVsZS0+R2VuZXJhdGVSYW5kb21Vc2VybmFtZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdG1wID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlYWdlX21vbnRocycsNTIwKTsKICAgICAgICAgICAgICAgICAgICAkZXhwaXJlcyA9IHN0cnRvdGltZShzcHJpbnRmKCIrJWQgbW9udGhzIiwkdG1wKSk7CgogICAgICAgICAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+QWRkVXNlciggJHVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgIG1hbXNfdXRpbHM6OmdlbmVyYXRlX3JhbmRvbV9wcmludGFibGVfc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgJGV4cGlyZXMsIFRSVUUsIFRSVUUgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYoICRyZXRbMF0gPT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtb2R1bGUtPkF1ZGl0KCcnLCRtb2R1bGUtPkdldE5hbWUoKSwkcmV0WzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkdWlkID0gJHJldFsxXTsKCiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGhpcyBncm91cHMuCiAgICAgICAgICAgICAgICAgICAgJGRmbHRfZ3JvdXBzID0gJHRoaXMtPkdldERmbHRHcm91cHMoKTsKICAgICAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJGRmbHRfZ3JvdXBzKSAmJiBjb3VudCgkZGZsdF9ncm91cHMpICkgJHJlcyA9ICR0aGlzLT5TZXRVc2VyR3JvdXBzKCR1aWQsJGRmbHRfZ3JvdXBzKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gbm93IHNldCBhIHByb3BlcnR5LgogICAgICAgICAgICAgICAgICAgIGlmKCAkdXNlcHJvcCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wLCR2YWwsJHVpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkcmV0ID09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIHJlbW92ZSB0aGUgdXNlci4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vZHVsZS0+QXVkaXQoJycsJG1vZHVsZS0+R2V0TmFtZSgpLCRtb2R1bGUtPkxhbmcoJ2Vycm9yX3Byb2JsZW1zZXR0aW5naW5mbycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJG1vZHVsZS0+QXVkaXQoJHVpZCwkbW9kdWxlLT5HZXROYW1lKCksJG1vZHVsZS0+TGFuZygnYXVkaXRfdXNlcl9jcmVhdGVkJykpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdWlkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICR1aW5mb1sxXVsnaWQnXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBOT1QgRk9SIEVYVEVSTkFMIFVTRQogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX3N0ZF9Mb2dnZWRJbklkKCkKICAgIHsKICAgICAgICAkc2Vzc2lvbmlkID0gc2Vzc2lvbl9pZCgpOwogICAgICAgIGlmKCAhJHNlc3Npb25pZCApIHJldHVybiBGQUxTRTsKCiAgICAgICAgLy8gaWYgd2UgYXJlIGV4cGlyZWQgdGhpcyB3aWxsIGxvZyB1cyBvdXQuIGNhbGxzIF9jbGVhcl9sb2dpbmRldGFpbHMKICAgICAgICAkdGhpcy0+RXhwaXJlVXNlcnMoKTsKCiAgICAgICAgLy8gZ2V0IHRoZSBsb2dpbiBkZXRhaWxzIGZyb20gc2Vzc2lvbiwgY29va2llcyBvciBmcm9tIHRoZSBkYXRhYmFzZQogICAgICAgICRkYXRhID0gJHRoaXMtPl9nZXRfc2F2ZWRfbG9naW5kZXRhaWxzKCk7CiAgICAgICAgaWYoICEkZGF0YSB8fCAhaXNzZXQoJGRhdGFbJ3VpZCddKSApIHJldHVybiBGQUxTRTsKICAgICAgICAkdWlkID0gKGludCkgJGRhdGFbJ3VpZCddOwoKICAgICAgICAvLyBpZiB3ZSBhcmUgZm9yY2UgbG9nZ2VkIG91dAogICAgICAgIGlmKCBjbXNfY2FjaGVfaGFuZGxlcjo6Z2V0X2luc3RhbmNlKCktPmV4aXN0cyggJ21hbXNfbG9nb3V0XycuJHVpZCwgX19DTEFTU19fICkgKSB7CiAgICAgICAgICAgIGNtc19jYWNoZV9oYW5kbGVyOjpnZXRfaW5zdGFuY2UoKS0+ZXJhc2UoICdtYW1zX2xvZ291dF8nLiR1aWQsIF9fQ0xBU1NfXyApOwogICAgICAgICAgICAvLyBjbGVhcnMgY29va2llcyBhbmQgc2Vzc2lvbiBkYXRhCiAgICAgICAgICAgICR0aGlzLT5fY2xlYXJfbG9naW5kZXRhaWxzKCAkdWlkICk7CiAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICB9CgogICAgICAgIC8vIGFjdHVhbGx5IGRvZXMgdGhlIGxvZ2dpbmcgaW4gdG8gdGhlIGRhdGFiYXNlLCBhbmQgc2V0cyBjb29raWVzIGFuZCBzZXNzaW9uIGRhdGEuCiAgICAgICAgJHRoaXMtPl9zZXRfc2F2ZWRfbG9naW5kZXRhaWxzKCRkYXRhKTsKICAgICAgICByZXR1cm4gJHVpZDsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluKCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5Mb2dnZWRJbklkKCkgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIHVzZXIgaWQgaXMgYSBtZW1iZXIgb2YgdGhlIGdyb3VwKHMpIHNwZWNpZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciB1c2VyaWQKICAgICAqIEBwYXJhbSBtaXhlZCBpbnRlZ2VyIChwb3NpdGl2ZSkgZ3JvdXAgaWQsIG9yIGFuIGFycmF5IG9mIHBvc2l0aXZlIGludGVnZXIgZ3JvdXAgaWRzLgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpCiAgICB7CiAgICAgICAgaWYoICR1c2VyaWQgPCAxICkgcmV0dXJuIEZBTFNFOwoKICAgICAgICAvLyBjbGVhbnVwIHRoZSBpbnB1dCBncm91cGlkIGxpc3QuCiAgICAgICAgaWYoICFpc19hcnJheSgkZ3JvdXBpZCkgKSAkZ3JvdXBpZCA9IGFycmF5KChpbnQpJGdyb3VwaWQpOwogICAgICAgICRncm91cGlkID0gYXJyYXlfdmFsdWVzKCRncm91cGlkKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZ3JvdXBpZCk7ICRpKysgKSB7CiAgICAgICAgICAgIGlmKCAkZ3JvdXBpZFskaV0gPCAxICkgdW5zZXQoJGdyb3VwaWRbJGldKTsKICAgICAgICB9CiAgICAgICAgaWYoICFpc19hcnJheSgkZ3JvdXBpZCkgfHwgY291bnQoJGdyb3VwaWQpID09IDAgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICR0bXAgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCk7CiAgICAgICAgaWYoICFpc19hcnJheSgkdG1wKSB8fCBjb3VudCgkdG1wKSA9PSAwICkgcmV0dXJuIEZBTFNFOwogICAgICAgICRtZW1iZXJzaGlwID0geHRfYXJyYXk6OmV4dHJhY3RfZmllbGQoJHRtcCwnZ3JvdXBpZCcpOwoKICAgICAgICAkdG1wID0gYXJyYXlfaW50ZXJzZWN0KCRtZW1iZXJzaGlwLCRncm91cGlkKTsKICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyTmFtZSgkdXNlcmlkKQogICAgewogICAgICAgICRyb3cgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1c2VyaWQpOwogICAgICAgIGlmKCAhJHJvdyApIHJldHVybiBGQUxTRTsKICAgICAgICByZXR1cm4gJHJvd1sndXNlcm5hbWUnXTsKICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJJRCgkdXNlcm5hbWUpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkdGhpcy0+X3VzZXJpZGJ5bmFtZSkgKSAkdGhpcy0+X3VzZXJpZGJ5bmFtZSA9IGFycmF5KCk7CiAgICAgICAgaWYoICFpc3NldCgkdGhpcy0+X3VzZXJpZGJ5bmFtZVskdXNlcm5hbWVdKSApIHsKICAgICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgICRxID0gIlNFTEVDVCBpZCBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgdXNlcm5hbWUgPSA/IjsKICAgICAgICAgICAgJHVpZCA9IChpbnQpICRkYi0+R2V0T25lKCRxLGFycmF5KCR1c2VybmFtZSkpOwogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm47CiAgICAgICAgICAgICR0aGlzLT5fdXNlcmlkYnluYW1lWyR1c2VybmFtZV0gPSAkdWlkOwogICAgICAgICAgICByZXR1cm4gJHVpZDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5fdXNlcmlkYnluYW1lWyR1c2VybmFtZV07CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIC8vIHJldHVybnMgYXJyYXkKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cCggJG5hbWUsICRkZXNjcmlwdGlvbiApCiAgICB7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CgogICAgICAgIC8vIHNlZSBpZiBpdCBleGlzdHMgYWxyZWFkeSBvciBub3QgKGJ5IG5hbWUpCiAgICAgICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2dyb3VwcyBXSEVSRSBncm91cG5hbWUgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUgKSApOwogICAgICAgIGlmKCAhJGRicmVzdWx0ICkgcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgICAgICBpZiggJHJvdyApIHsKICAgICAgICAgICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCRtb2R1bGUtPkxhbmcoJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnKSk7CiAgICAgICAgfQoKICAgICAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2dyb3VwcyAoZ3JvdXBuYW1lLGdyb3VwZGVzYykgVkFMVUVTICg/LD8pIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUsICRkZXNjcmlwdGlvbiApICk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAkZ3JwaWQgPSAkZGItPkluc2VydF9JRCgpOwogICAgICAgIHVuc2V0KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlKTsKICAgICAgICByZXR1cm4gYXJyYXkoVFJVRSwkZ3JwaWQpOwogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIGFycmF5CiAgICBwdWJsaWMgZnVuY3Rpb24gQWRkVXNlciggJG5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMsICRub25zdGQgPSBGQUxTRSwgJGNyZWF0ZWRhdGUgPSBudWxsICkKICAgIHsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiAgICAgICAgLy8gc2VlIGlmIGl0IGV4aXN0cyBhbHJlYWR5IG9yIG5vdCAoYnkgbmFtZSkKICAgICAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCgkbmFtZSk7CiAgICAgICAgaWYoICR1aWQgKSB7CiAgICAgICAgICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgICAgIHJldHVybiBhcnJheShGQUxTRSwkbW9kdWxlLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBnZW5lcmF0ZSB0aGUgc2FsdC4KICAgICAgICAkc2FsdCA9IG51bGw7CiAgICAgICAgaWYoICR0aGlzLT51c2VfdXNlcnNhbHQoKSA9PSAxICkgICRzYWx0ID0gc2hhMSh0aW1lKCkuJG5hbWUucmFuZCgpLiRleHBpcmVzLl9fRklMRV9fKTsKCiAgICAgICAgLy8gaW5zZXJ0IHRoZSByZWNvcmQKICAgICAgICAkY3JlYXRlZGF0ZSA9IChpbnQpICRjcmVhdGVkYXRlOwogICAgICAgIGlmKCAkY3JlYXRlZGF0ZSA8IDEgKSAkY3JlYXRlZGF0ZSA9IHRpbWUoKTsKICAgICAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX3VzZXJzICh1c2VybmFtZSxwYXNzd29yZCxjcmVhdGVkYXRlLGV4cGlyZXMsbm9uc3RkLHNhbHQpIFZBTFVFUyAoPyw/LD8sPyw/LD8pIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUsICcgJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZGItPkRiVGltZVN0YW1wKCRjcmVhdGVkYXRlKSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJGV4cGlyZXMpLCInIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChib29sKSAkbm9uc3RkLCAkc2FsdCApICk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAkdWlkID0gJGRiLT5JbnNlcnRfSUQoKTsKCiAgICAgICAgLy8gc2V0IHRoZSBwYXNzd29yZAogICAgICAgICRyZXMgPSAkdGhpcy0+U2V0VXNlclBhc3N3b3JkKCR1aWQsJHBhc3N3b3JkKTsKICAgICAgICBpZiggISRyZXNbMF0gKSByZXR1cm4gJHJlczsKCiAgICAgICAgJHRoaXMtPl91c2VyaWRieW5hbWUgPSBhcnJheSgpOwogICAgICAgIHJldHVybiBhcnJheShUUlVFLCR1aWQpOwogICAgfQoKLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cE5hbWUoJGdpZCkKICAgIHsKICAgICAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpICYmIGlzc2V0KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdKSApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdWydncm91cG5hbWUnXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cERlc2MoJGdyb3VwaWQpCiAgICB7CiAgICAgICAgJHRoaXMtPl9nZXRfZ3JvdXBpbmZvKCk7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlKSAmJiBpc3NldCgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZVskZ2lkXSkgKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZVskZ2lkXVsnZ3JvdXBkZXNjJ107CiAgICAgICAgfQogICAgfQoKICAgIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICAvLyByZXR1cm5zIGFuIGFycmF5CiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlR3JvdXBGdWxsKCAkaWQgKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5nZXREYigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICAgICAgICAgLy8gZGVsZXRlIGFsbCBwcm9wZXJ0eSByZWxhdGlvbnMgZnJvbSB0aGlzIGdyb3VwCiAgICAgICAgICAgICRxID0gIkRFTEVURSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFdIRVJFIGdyb3VwX2lkID0gPyI7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOwoKICAgICAgICAgICAgLy8gZGVsZXRlIGFsbCBpbmRpY2F0aW9uIHRoYXQgYW55Ym9keSBpcyBhIG1lbWJlcgogICAgICAgICAgICAvLyBvZiB0aGlzIGdyb3VwCiAgICAgICAgICAgICRxID0gIkRFTEVURSBGUk9NICIuQ01TX0RCX1BSRUZJWC4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSBncm91cGlkID0gPyI7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOwoKICAgICAgICAgICAgLy8gYW5kIHRoZW4gZGVsZXRlIHRoZSBncm91cAogICAgICAgICAgICAkcSA9ICJERUxFVEUgRlJPTSAiLkNNU19EQl9QUkVGSVguIm1vZHVsZV9tYW1zX2dyb3VwcyBXSEVSRSBpZCA9ID8iOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJGlkICkgKTsKCiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgJHRoaXMtPl9ncm91cGluZm9fY2FjaGUgPSBudWxsOwogICAgICAgICAgICByZXR1cm4gYXJyYXkoIFRSVUUsICcnICk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgICAgICAgYXVkaXQoJGlkLCRtb2QtPkdldE5hbWUoKSwnUHJvYmxlbSBEZWxldGluZyBHcm91cDogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPl9nZXRfZ3JvdXBpbmZvKCk7CiAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9ncm91cGluZm9fY2FjaGUgYXMgJGdpZCA9PiAkaW5mbyApIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbJGluZm9bJ2dyb3VwbmFtZSddXSA9IChpbnQpICRnaWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cExpc3RGdWxsKCR3aXRoX2NvdW50ID0gRkFMU0UpCiAgICB7CiAgICAgICAgJHRoaXMtPl9nZXRfZ3JvdXBpbmZvKCR3aXRoX2NvdW50KTsKICAgICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpICkgJHJlc3VsdCA9ICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8vIG9sZCB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwSUQoJGdyb3VwbmFtZSkKICAgIHsKICAgICAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgICAgICBpZiggaXNfYXJyYXkoICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlICkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlIGFzICRnaWQgPT4gJGluZm8gKSB7CiAgICAgICAgICAgICAgICBpZiggJGluZm9bJ2dyb3VwbmFtZSddID09ICRncm91cG5hbWUgKSByZXR1cm4gJGdpZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBsaXN0IG9mIGdyb3VwcyB0aGF0IHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqIEBwYXJhbSBpbnRlZ2VyIFRoZSB1c2VyIGlkZW50aWZpZXIKICAgICAqIEByZXR1cm4gc3RyaW5nIEEgY29tbWEgZGVsaW1pdGVkIHN0cmluZyBjb250YWluaW5nIG1lbWJlciBncm91cCBuYW1lcy4gIG9yICdub25lJwogICAgICovCiAgICBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHMoJHVzZXJpZCkKICAgIHsKICAgICAgICAkYXV0aF9jb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICAgICAgaWYoICEkYXV0aF9jb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGF1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfR1JPVVBNRU1CRVJTSElQKSApIHsKICAgICAgICAgICAgcmV0dXJuICdub25lJzsKICAgICAgICB9CgogICAgICAgICRvdXQgPSAkYXV0aF9jb25zdW1lci0+Z2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCk7CiAgICAgICAgaWYoICFpc19hcnJheSgkb3V0KSB8fCBjb3VudCgkb3V0KSA9PSAwICkgcmV0dXJuICdub25lJzsKCiAgICAgICAgJGluZm8gPSAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkb3V0IGFzICRvbmUgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkaW5mb1skb25lXSkgKSAkdG1wW10gPSAkaW5mb1skb25lXVsnZ3JvdXBuYW1lJ107CiAgICAgICAgfQogICAgICAgIGlmKCBjb3VudCgkb3V0KSA9PSAwICkgcmV0dXJuICdub25lJzsKCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJywnLCR0bXApOwogICAgfQoKICAgIC8vIG9sZCB1c2VyaWQgYXBpIG1ldGhvZAogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXIoJGlkKQogICAgewogICAgICAgICRyZXMgPSAkdGhpcy0+RGVsZXRlVXNlckZ1bGwoJGlkKTsKICAgICAgICBpZiggJHJlc1swXSApIHJldHVybiBUUlVFOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIEdldERmbHRHcm91cHMoKQogICAgewogICAgICAgICRjb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICAgICAgaWYoICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0RFRkFVTFRHUk9VUFMpICkgcmV0dXJuICRjb25zdW1lci0+Z2V0X2RlZmF1bHRfZ3JvdXBzKCk7CgogICAgICAgICRtYW1zID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAgICRkZmx0X2dyb3VwID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnKTsKICAgICAgICByZXR1cm4gYXJyYXkoKGludCkkZGZsdF9ncm91cCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQZXJtYW5lbnRDb29raWUoaW50ICR1aWQpCiAgICB7CiAgICAgICAgJG1hbXMgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgJG5hbWUgPSAkbWFtcy0+R2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScpOwogICAgICAgIGlmKCAhJG5hbWUgKSByZXR1cm47CgogICAgICAgICRkYXRhID0gWyd1aWQnPT4kdWlkLCAndGltZSc9PnRpbWUoKV07CiAgICAgICAgJGRhdGEgPSAkdGhpcy0+ZW5jb2RlX3VzZXJkYXRhKCRkYXRhKTsKICAgICAgICBcY21zX2Nvb2tpZXM6OnNldCgkbmFtZSwkZGF0YSwgdGltZSgpKzYwKjI0KjM2MDApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldF9zYXZlZF9sb2dpbmRldGFpbHMoKQogICAgewogICAgICAgICRrZXkgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgICAgICRzZXNzaW9uaWQgPSBzZXNzaW9uX2lkKCk7CiAgICAgICAgaWYoICEkc2Vzc2lvbmlkICkgcmV0dXJuOwogICAgICAgICRkYXRhID0gbnVsbDsKICAgICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwoKICAgICAgICBpZiggIWVtcHR5KCRfU0VTU0lPTlska2V5XSkgKSAkZGF0YSA9ICR0aGlzLT5kZWNvZGVfdXNlcmRhdGEoJF9TRVNTSU9OWyRrZXldKTsKICAgICAgICBpZiggISRkYXRhICkgewogICAgICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIGdldCB0aGUgZGF0YSBmcm9tIGEgc2Vzc2lvbiBjb29raWUKICAgICAgICAgICAgaWYoICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLDApICYmICFlbXB0eShcY21zX2Nvb2tpZXM6OmV4aXN0cygka2V5KSkgKSB7CiAgICAgICAgICAgICAgICAkZGF0YSA9ICR0aGlzLT5kZWNvZGVfdXNlcmRhdGEoXGNtc19jb29raWVzOjpnZXQoJGtleSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAhJGRhdGEgKSB7CiAgICAgICAgICAgIC8vIHNlZSBpZiB3ZSBjYW4gZ2V0IHRoZSBkYXRhIGZyb20gYSBwZXJtYW5lbnQgY29va2llLgogICAgICAgICAgICBpZiggKCRjbiA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnKSkgIT0gJycpIHsKICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgcmVtZW1iZXIgbWUgZnVuY3Rpb25hbGl0eS4gYXMgb3Bwb3NlZCB0byBhIHNlc3Npb24gY29va2llLgogICAgICAgICAgICAgICAgJHRtcCA9IFxjbXNfY29va2llczo6Z2V0KCRjbik7CiAgICAgICAgICAgICAgICBpZiggJHRtcCApICRkYXRhID0gJHRoaXMtPmRlY29kZV91c2VyZGF0YSgkdG1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYoICRkYXRhICkgcmV0dXJuICRkYXRhOwoKICAgICAgICAvLyByZWFkIGxvZ2dlZCBpbiBkYXRhIGZyb20gZGF0YWJhc2UgZm9yIHRoaXMgc2Vzc2lvbi4KICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkc3FsID0gJ1NFTEVDVCB1c2VyaWQgQVMgdWlkLGxhc3R1c2VkIEFTIHRpbWUgRlJPTSAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIHNlc3Npb25pZCA9ID8nOwogICAgICAgICRkYXRhID0gJGRiLT5HZXRSb3coJHNxbCwgWyRzZXNzaW9uaWRdKTsKICAgICAgICBpZiggaXNfYXJyYXkoJGRhdGEpICYmIGNvdW50KCRkYXRhKSApIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9zZXRfc2F2ZWRfbG9naW5kZXRhaWxzKGFycmF5ICRkYXRhLCBib29sICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgIGlmKCAhaXNzZXQoJGRhdGFbJ3VpZCddKSB8fCAhaXNzZXQoJGRhdGFbJ3RpbWUnXSkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIGRhdGEgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgaWYoICFpc3NldCgkZGF0YVsnc2Vzc2lvbmlkJ10pICkgJGRhdGFbJ3Nlc3Npb25pZCddID0gc2Vzc2lvbl9pZCgpOwogICAgICAgICR1aWQgPSAoaW50KSAkZGF0YVsndWlkJ107CiAgICAgICAgJHRpbWUgPSAoaW50KSAkZGF0YVsndGltZSddOwoKICAgICAgICBzdGF0aWMgJF9kb25lID0gbnVsbDsKICAgICAgICBpZiggJF9kb25lICkgcmV0dXJuOwogICAgICAgICRfZG9uZSA9IHRydWU7CgogICAgICAgICRrZXkgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgICAgICRlbmNvZGVkID0gJHRoaXMtPmVuY29kZV91c2VyZGF0YSgkZGF0YSk7CiAgICAgICAgJF9TRVNTSU9OWyRrZXldID0gJGVuY29kZWQ7CgogICAgICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgaWYoICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLDApICkgewogICAgICAgICAgICAvLyB0aGlzLCBpZiBlbmFibGVkIHdpbGwgZXNzZW50aWFsbHkga2VlcCB0aGUgdXNlciBsb2dnZWQgaW4sIElGIGhlIGNvbWVzIGluIG9uY2UgZXZlcnkgc2F5IDI0aHJzCiAgICAgICAgICAgIFxjbXNfY29va2llczo6c2V0KCRrZXksJGVuY29kZWQsdGltZSgpKzI0KjM2MDApOyAvLyBleHBpcnkgdG8gMjQgaG91cnMuCiAgICAgICAgfQoKICAgICAgICAvLyBub3RlOiB3ZSBuZXZlciB0b3VjaCB0aGUgcGVybWFjb29raWUuCgogICAgICAgIC8vIGhlcmUsIHdlIHRvdWNoIHRoZSB1c2VyIGxvZ2luIGRhdGEuLi4gYnV0IGluZnJlcXVlbnRseS4gICBtdXN0IGJlIG1vcmUgZnJlcXVlbnQgdGhhbiB0aGUgZXhwaXJldXNlcnMgaW50ZXJ2YWwgdGhvdWdoLgogICAgICAgIGlmKCBpc3NldCgkX1NFU1NJT05bX19NRVRIT0RfX10pICkgJHRpbWUgPSBtYXgoJF9TRVNTSU9OW19fTUVUSE9EX19dLCAkdGltZSk7CiAgICAgICAgJGV4cGlyZV9pbnRlcnZhbCA9IChpbnQpICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2V4cGlyZXVzZXJzX2ludGVydmFsJywxODApLTE7CiAgICAgICAgaWYoICRmb3JjZSB8fCAkdGltZSA8IHRpbWUoKSAtIG1heCgwLCRleHBpcmVfaW50ZXJ2YWwpICkgewogICAgICAgICAgICAvLyB0b3VjaCB0aGUgbG9nZ2VkaW4gdGFibGUuCiAgICAgICAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfbG9nZ2VkaW4gU0VUIGxhc3R1c2VkID0gPyBXSEVSRSB1c2VyaWQgPSA/IEFORCBzZXNzaW9uaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZGF0YVsndGltZSddLCAkZGF0YVsndWlkJ10sICRkYXRhWydzZXNzaW9uaWQnXV0pOwogICAgICAgICAgICBpZiggISRkYnIgfHwgJGRiLT5BZmZlY3RlZF9Sb3dzKCkgPT0gMCApIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNNU19EQl9QUkVGSVguJ21vZHVsZV9tYW1zX2xvZ2dlZGluIChzZXNzaW9uaWQsbGFzdHVzZWQsdXNlcmlkKSBWQUxVRVMgKD8sPyw/KSc7CiAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyRkYXRhWydzZXNzaW9uaWQnXSwgJGRhdGFbJ3RpbWUnXSwgJGRhdGFbJ3VpZCddXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfU0VTU0lPTltfX01FVEhPRF9fXSA9IHRpbWUoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX2NsZWFyX2xvZ2luZGV0YWlscygkdWlkLCRzZXNzaW9uX29ubHkgPSBGQUxTRSkKICAgIHsKICAgICAgICAvLyB3ZSBudWtlIHNvbWUgY29va2llcywgYW5kIG51a2Ugc29tZSBzZXNzaW9uIHZhcmlhYmxlcy4KICAgICAgICAvLyBhbmQgZGVsZXRlIHRoZSBsb2dnZWRpbiBlbnRyeSBmcm9tIHRoZSBkYXRhYmFzZQogICAgICAgICRrZXkgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgICAgICRzZXNzaW9uaWQgPSBzZXNzaW9uX2lkKCk7CiAgICAgICAgaWYoICEkc2Vzc2lvbmlkICkgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoKCAkX1NFU1NJT04gYXMgJGsgPT4gJHYgKSB7CiAgICAgICAgICAgIGlmKCBzdGFydHN3aXRoKCRrLCRrZXkpICkgdW5zZXQoJF9TRVNTSU9OWyRrXSk7CiAgICAgICAgfQoKICAgICAgICBpZiggJHNlc3Npb25fb25seSA9PSBUUlVFICkgcmV0dXJuOwogICAgICAgIFxjbXNfY29va2llczo6ZXJhc2UoJGtleSk7CiAgICAgICAgJG1hbXMgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgICAgaWYoICgkY24gPSAkbWFtcy0+R2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScpKSAhPSAnJyApIFxjbXNfY29va2llczo6ZXJhc2UoJGNuKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuQ01TX0RCX1BSRUZJWC4nbW9kdWxlX21hbXNfbG9nZ2VkaW4gV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdWlkKSk7CiAgICB9Cgp9IC8vIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSUserManipulator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKYWJzdHJhY3QgY2xhc3MgTUFNU1VzZXJNYW5pcHVsYXRvcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRfZXhwaXJlX25vdGlmaWVyX2NhbGxiYWNrOwoKICAgIC8vCiAgICAvLyBJbnRlcm5hbHMKICAgIC8vCgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBcTUFNUyAkdGhlX21vZHVsZSApCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICR0aGVfbW9kdWxlOwogICAgfQoKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gJkdldERiKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZC0+R2V0RGIoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gJkdldE1vZHVsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldEV4cGlyZU5vdGlmaWVyKCRjYWxsYmFjaykKICAgIHsKICAgICAgICBpZiggaXNfY2FsbGFibGUoJGNhbGxiYWNrKSApICR0aGlzLT5fZXhwaXJlX25vdGlmaWVyX2NhbGxiYWNrID0gJGNhbGxiYWNrOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBOb3RpZnlFeHBpcmVkVXNlcigkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICBpZiggIWlzX2FycmF5KCRwYXJhbXMpICYmIChpc19zdHJpbmcoJHBhcmFtcykgfHwgaXNfaW50KCRwYXJhbXMpKSAmJiAkcGFyYW1zICE9ICcnICkgJHBhcmFtcyA9IGFycmF5KCRwYXJhbXMpOwogICAgICAgIGlmKCAkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjayApIGNhbGxfdXNlcl9mdW5jX2FycmF5KCR0aGlzLT5fZXhwaXJlX25vdGlmaWVyX2NhbGxiYWNrLCRwYXJhbXMpOwogICAgfQoKICAgIC8vCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLwoKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRncnBpZCwgJHByb3BuYW1lLCAkc29ydGtleSwgJGxvc3R1biwgJHZhbCApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICAgIH0KCiAgICAvLyEgQWRkIGEgc2luZ2xlIHByb3BlcnR5IGRlZmluaXRpb24KICAgIC8vISBccGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkKICAgIC8vISBccGFyYW0gcHJvbXB0IFRoZSBwcm9tcHQgdG8gZGlzcGxheSB0byB0aGUgdXNlcgogICAgLy8hICAgICAgIG5vdGUsIHRoaXMgd2lsbCBiZSBMYW5naWZpZWQKICAgIC8vISBccGFyYW0gdHlwZSAgVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5CiAgICAvLyEgICAgICAgMCA9IHRleHQsIDEgPSBjaGVja2JveCwgMiA9IGVtYWlsCiAgICAvLyEgXHBhcmFtIHJlcXVpcmVkIHdldGhlciBvciBub3QgdGhlIHByb3BlcnR5IGlzIHJlcXVpcmVkCiAgICAvLyEgXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogICAgLy8hICAgIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgY29udGFpbnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRQcm9wZXJ0eURlZm4oICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJOb3QgSW1wbGVtZW50ZWQiKTsKICAgIH0KCiAgICAvLyEgQWRkIGEgbmV3IGdyb3VwCiAgICAvLyEKICAgIC8vISBBZGRzIGEgbmV3IGdyb3VwIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUgYW5kIGRlc2NyaXB0aW9uCiAgICAvLyEKICAgIC8vISBccGFyYW0gbmFtZSBUaGUgbmV3IGdyb3VwIG5hbWUKICAgIC8vISBccGFyYW0gZGVzY3JpcHRpb24gdGhlIGdyb3VwIGRlc2NyaXB0aW9uCiAgICAvLyEgXHJldHVybiBhbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBkZXNjcmlwdGlvbiBkZXNjcmliaW5nIHRoZSByZXR1cm4gc3RhdHVzCiAgICAvLyEgICAgKHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IpLiAgVGhlIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgaXMgYW4gZXJyb3Igc3RyaW5nIGluIHRoZQogICAgLy8hICAgIGV2ZW50IG9mIGFuIGVycm9yLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gQWRkR3JvdXAoICRuYW1lLCAkZGVzY3JpcHRpb24gKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICAgIH0KCiAgICAvLyEgQWRkIGEgbmV3IHVzZXIKICAgIC8vIQogICAgLy8hIEFkZCB0aGUgc3BlY2lmaWVkIHVzZXIgdG8gdGhlIGRhdGFiYXNlCiAgICAvLyEKICAgIC8vISBccGFyYW0gbmFtZSBUaGUgZGVzaXJlZCB1c2VybmFtZQogICAgLy8hIFxwYXJhbSBwYXNzd29yZCBUaGUgZGVzaXJlZCBwYXNzd29yZCAodW5lbmNyeXB0ZWQpCiAgICAvLyEgXHBhcmFtIGV4cGlyZXMgVGhlIGV4cGlyeSBkYXRlCiAgICAvLyEgXHJldHVybiBhbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBkZXNjcmlwdGlvbiBkZXNjcmliaW5nIHRoZSByZXR1cm4gc3RhdHVzCiAgICAvLyEgICAgKHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IpLiAgVGhlIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgaXMgYW4gZXJyb3Igc3RyaW5nIGluIHRoZQogICAgLy8hICAgIGV2ZW50IG9mIGFuIGVycm9yLCBvciB0aGUgdXNlcmlkIG90aGVyd2lzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gQWRkVXNlciggJG5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICAgIH0KCiAgICAvLyEgQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIHBlcm1pc3Npb24KICAgIC8vISBBc3NpZ24gdGhlIHVzZXIgc3BlY2lmaWVkIChieSBpZCkgdG8gdGhlIGdyb3VwIHNwZWNpZmllZCAoYnkgaWQpCiAgICAvLyEKICAgIC8vIVxwYXJhbSAgdWlkICBUaGUgdXNlcmlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgICAvLyFccGFyYW0gIGdpZCAgVGhlIGdyb3VwIGlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgICAvLyFccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDaGVjayBpZiB0aGUgZ3JvdXAgc3BlY2lmaWVkIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbgogICAgcHVibGljIGZ1bmN0aW9uIENoZWNrR3JvdXBQZXJtaXNzaW9uKCAkZ2lkLCAkcGVybSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDaGVjayBpZiB0aGUgdXNlciBoYXMgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbiggJHBlcm0gKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbkJ5VWlkKCAkdWlkLCAkcGVybSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBDb3VudFRlbXBDb2RlUmVjb3JkcygpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIik7CiAgICB9CgogICAgLy8hIERlbGV0ZSBhbGwgb2YgdGhlIGN1cnJlbnQgdXNlcnMgcHJvcGVydGllcwogICAgLy8hCiAgICAvLyEgXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlQWxsVXNlclByb3BlcnRpZXMoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIEFsbCBwcm9wZXJ0aWVzIGZvciBhIHNwZWNpZmllZCB1c2VyIGlkCiAgICAvLyEKICAgIC8vISBccGFyYW0gdXNlcmlkCiAgICAvLyEgXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlQWxsVXNlclByb3BlcnRpZXNGdWxsKCR1c2VyaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgdGhlIHNwZWNpZmllZCBncm91cAogICAgLy8hCiAgICAvLyEgRGVsZXRlIHRoZSBncm91cCByZWNvcmQgZm9yIHRoZSBtYXRjaGluZCBpZAogICAgLy8hCiAgICAvLyEgXHJldHVybiBhbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBkZXNjcmlwdGlvbiBkZXNjcmliaW5nIHRoZSByZXR1cm4gc3RhdHVzCiAgICAvLyEgICAgKHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IpLiAgVGhlIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgaXMgYW4gZXJyb3Igc3RyaW5nIGluIHRoZQogICAgLy8hICAgIGV2ZW50IG9mIGFuIGVycm9yLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlR3JvdXBGdWxsKCAkaWQgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHlEZWZuKCAkbmFtZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zICh1c2Ugd2l0aCBjYXV0aW9uKQogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbnMoKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiTm90IEltcGxlbWVudGVkIik7CiAgICB9CgogICAgLy8hIERlbGV0ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgaWQKICAgIC8vISBcbm90ZSBUaGlzIGlzIGEgZGVwcmVjYXRlZCBmdW5jdGlvbiBhcyBpdCByZWxpZXMgb24gdGhlIHVzZXJpZCBiZWluZyBzZXQgaW4gdGhlIF9HRVQKICAgIC8vISB2YXJpYWJsZS4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXIoJGlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgQ29tcGxldGVseSBkZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIHN1cHBsaWVkIHVzZXIgaWQKICAgIC8vIQogICAgLy8hVGhpcyBtZXRob2QgY29tcGxldGVseSBkZWxldGVzIGFueXRoaW5nIGZyb20gdGhlIGRhdGFiYXNlIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmllZCB1c2VyIGlkLgogICAgLy8hc3BlY2lmaWNhbGx5LCBncm91cCBhc3NvY2lhdGlvbnMsIHByb3BlcnRpZXMsIGFuZCB0aGUgdXNlciByZWNvcmQgaXRzZWxmLgogICAgLy8hCiAgICAvLyFccGFyYW0gdWlkIHRoZSB1c2VyaWQgdG8gZGVsZXRlIGFsbCByZWZlcmVuY2VzIHRvCiAgICAvLyFccmV0dXJuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgYSBib29sZWFuIGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlLgogICAgLy8hICAgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgZmFsc2UsIHRoZW4gdGhlIHNlY29uZCBlbGVtZW50IHdpbGwgY29udGFpbiBhbiBlcnJvciBtZXNzYWdlLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlckZ1bGwoICR1aWQgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiTm8gZnVuY3Rpb24gZGVmaW5lZCIpOwogICAgfQoKCiAgICAvLyEgRGVsZXRlIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHVzZXIKICAgIC8vIQogICAgLy8hIFJlbW92ZSBhIHByb3BlcnR5IGZyb20gdGhlIGRhdGFiYXNlIGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgICAvLyEKICAgIC8vISBccGFyYW0gdGl0bGUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGRlbGV0ZQogICAgLy8hIFxwYXJhbSBhbGwgICBPcHRpb25hbGx5IGRlbGV0ZSBhbGwgcHJvcGVydGllcyBmb3IgdGhpcyB1c2VyCiAgICAvLyEgXHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGh3ZXJpc2VuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHkoJHRpdGxlLCRhbGw9ZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgYSBwcm9wZXJ0eSBmb3IgYSBzcGVjaWZpZWQgdXNlcgogICAgLy8hCiAgICAvLyFccGFyYW0gdGl0bGUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGRlbGV0ZQogICAgLy8hXHBhcmFtIHVzZXJpZCBUaGUgaWQgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eSBmb3IKICAgIC8vIVxwYXJhbSBhbGwgKG9wdGlvbmFsKSBEZWxldGUgYWxsIHByb3BlcnRpZXMgZm9yIHRoZSBzcGVjaWZpZWQgdXNlcmlkLgogICAgLy8hXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsJGFsbD1mYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyogZXhwaXJ5Y29kZSBpcyBhIHN0cnRvdGltZSBzdHJpbmcgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBFeHBpcmVUZW1wQ29kZXMoJGV4cGlyeWNvZGUpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBFeHBpcmUgYW55IGFuZCBhbGwgdXNlcnMgdGhhdCBoYXZlIGJlZW4gYXdheSBmb3IgdG9vIGxvbmcKICAgIHB1YmxpYyBmdW5jdGlvbiBFeHBpcmVVc2VycygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGlkCiAgICAvLyEKICAgIC8vIVxyZXR1cm4gRW1haWwgYWRkcmVzcywgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEVtYWlsKCR1c2VyaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZW5lcmF0ZSBhIHJhbmRvbSAoYnV0IG5vdCB1c2VkKSB1c2VybmFtZQogICAgLy8hCiAgICAvLyFcIHJldHVybiB1c2VybmFtZSwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdlbmVyYXRlUmFuZG9tVXNlcm5hbWUoICRwcmVmaXggPSAndXNlcicgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IHRoZSBncm91cGlkIGdpdmVuIGEgZ3JvdXAgbmFtZQogICAgLy8hCiAgICAvLyEgXHJldHVybiBncm91cGlkIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cElEKCRncm91cG5hbWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyb3VwCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGFzc29jaWF0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkCiAgICAvLyEgZ3JvdXAgaWQKICAgIC8vISAgICBpZCA9PiBUaGUgcmVxdWVzdGVkIGdyb3VwIGlkCiAgICAvLyEgICAgZ3JvdXBuYW1lID0+IFRoZSBuYW1lIG9mIHRoZSBncm91cAogICAgLy8hICAgIGdyb3VwZGVzYyA9PiBUaGUgZ3JvdXAgZGVzY3JpcHRpb24KICAgIC8vIQogICAgLy8hIFxwYXJhbSBnaWQgVGhlIGdyb3VwIGlkCiAgICAvLyEgXHBhcmFtIGFzc29jaWF0aXZlIGFycmF5LCBvciBhcnJheSB3aXRoIGZpcnN0IGVsZW1lbnQgb2YgZmFsc2UsIHNlY29uZCBlbGVtZW50IGNvbnRhaW5zIGVycm9yIG1lc3NhZ2UKICAgIC8vISBccmV0dXJuIGFuIGFzc29jaWF0aXZlIGFycmF5IHdpdGggZ3JvdXAgaW5mbywgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwSW5mbyggJGdpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgYSBsaXN0IG9mIGFsbCBvZiB0aGUgZ3JvdXBzLCBhbmQgdGhlaXIgaWQncwogICAgLy8hCiAgICAvLyEgXHJldHVybiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWluaW5nIGdyb3VwIG5hbWVzIGFzIGtleXMsIGFuZCBpZCdzIGFzIHZhbHVlcwogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBMaXN0KCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KCiAgICAvLyEgR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21wbGV0ZSBsaXN0IG9mIGdyb3VwcwogICAgLy8hCiAgICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhcnJheSBvZiBncm91cGluZm8gYXNzb2NpYXRpb25zLCByZXByZXNlbnRpbmcgYWxsIG9mIHRoZQogICAgLy8hIGdyb3VwcyBpbiB0aGUgdGFibGUuCiAgICAvLyEKICAgIC8vISBccmV0dXJucyBhbiBhcnJheSBvZiBncm91cGluZm8gYXNzb2NpYXRpb25zCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cExpc3RGdWxsKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KCiAgICAvLyEgR2V0IHRoZSBncm91cCBuYW1lIGdpdmVuIGEgZ3JvdXAgaWQKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gZ3JvdXAgbmFtZSwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTmFtZSgkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCB0aGUgZ3JvdXAgZGVzY3JpcHRpb24gZ2l2ZW4gYSBncm91cCBpZAogICAgLy8hCiAgICAvLyEgXHJldHVybiBncm91cCBkZXNjcmlwdGlvbiwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwRGVzYygkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncnBpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICAgIH0KCiAgICAvLyEgR2V0IGEgbGlzdCBvZiB0aGUgZ3JvdXBzIHRoYXQgdGhlIHNwZWNpZmllZCB1c2VyIGJlbG9uZ3MgdG8KICAgIC8vIQogICAgLy8hIFJldHVybiBhIHN0cmluZyBvZiBjb21tYSBkZWxpbWl0ZWQgZ3JvdXAgbmFtZXMsIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICAvLyEgZ3JvdXBzIHRoYXQgdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2YKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gYSBjb21tYSBkZWxpbWl0ZWQgbGlzdCBvZiBncm91cCBuYW1lcywgb3IgIm5vbmUiCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHMoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFJldHVybiBhIGNvbXBsZXRlIGxpc3Qgb2YgdGhlIGdyb3VwcyB0aGF0IHRoaXMgdXNlciBiZWxvbmdzIHRvCiAgICAvLyEKICAgIC8vISBSZXR1cm5zIGFuIGFycmF5IG9mIGdyb3VwaW5mbyByZWNvcmRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdyb3VwcyB0aGF0CiAgICAvLyEgdGhpcyB1c2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4KICAgIC8vIQogICAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIHVzZXJpZCB0byB0ZXN0CiAgICAvLyEgXHJldHVybiBmYWxzZSBvbiBlcnJvciwgb3RoZXJ3aXNlLCBhbiBhcnJheSBvZiBncm91cGluZm8gcmVjb3Jkcy4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgYSBzaW5nbGUgcHJvcGVydHkgZGVmaW5pdGlvbiBieSBuYW1lCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZuKCAkbmFtZSApCiAgICB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIC8vISBHZXQgYW4gYXJyYXkgb2YgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm5zKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoRkFMU0UsIk5vdCBJbXBsZW1lbnRlZCIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eUdyb3VwUmVsYXRpb25zKCAkdGl0bGUgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIik7CiAgICB9CgogICAgLy8hIEdldCB0aGUgdXNlcmlkIG9mIHRoZSB1c2VyIHdpdGggdGhlIG1hdGNoaW5nIG5hbWUKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gVXNlcklELCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlcklEKCR1c2VybmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIKICAgIC8vIQogICAgLy8hIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQKICAgIC8vISB1c2VyIGlkCiAgICAvLyEgICBpZCA9IHRoZSByZXF1ZXN0ZWQgdXNlciBpZAogICAgLy8hICAgdXNlcm5hbWUgPSB0aGUgdXNlcnMgbmFtZQogICAgLy8hICAgcGFzc3dvcmQgPSB0aGUgKGVuY3J5cHRlZCkgdXNlciBwYXNzd29yZAogICAgLy8hICAgZW1haWwgICAgPSB0aGUgdXNlcnMgZW1haWwgYWRkcmVzcwogICAgLy8hICAgZXhwaXJlcyAgPSB0aGUgdXNlcnMgZXhwaXJ5IGRhdGUKICAgIC8vISAgIHN0YXR1cyAgID0gdGhlIHVzZXJzIHN0YXR1cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlcmlkIHRvIGlucXVpcmUgYWJvdXQKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBjb250YWlucyByZXR1cm4gc3RhdHVzICh0cnVlL2ZhbHNlKSwgdGhlIHNlY29uZCBlbGVtZW50CiAgICAvLyEgICAgaXMgZWl0aGVyIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgYWJvdmUsIG9yIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySW5mbyggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgZGVmaW5lZCIpOwogICAgfQoKICAgIC8vISBSZXR1cm4gdGhlIHVzZXJuYW1lIHRoYXQgbWFjaGVzIHRoZSBzcGVjaWZpZWQgdXNlciBpZAogICAgLy8hCiAgICAvLyFccmV0dXJuIFRoZSBtYXRjaGluZyB1c2VybmFtZSwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJOYW1lKCR1c2VyaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgYSBzaW5nbGUgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHVzZXIKICAgIC8vIQogICAgLy8hIEdldCBhIHNpbmdsZSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci4KICAgIC8vIQogICAgLy8hIFxwYXJhbSB0aXRsZSBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHRvIHJldHVybgogICAgLy8hIFxwYXJhbSBkZWZhdWx0dmFsdWUgQSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0IGZvciB0aGF0IHVzZXIKICAgIC8vISBccmV0dXJuIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgb3IgZmFsc2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHkoJHRpdGxlLCRkZWZhdWx0dmFsdWU9ZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgcHJvcGVydHkgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdXNlciBpZAogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgc2VhcmNoaW5nIGZvcgogICAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIHVzZXJpZCBmb3Igd2hvJ3MgcHJvcGVydHkgd2UgYXJlIHNlYXJjaGluZwogICAgLy8hIFxwYXJhbSBkZWZhdWx0dmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGlzIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0IGZvciB0aGlzIHVzZXIKICAgIC8vISBccmV0dXJuIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgb3IgZmFsc2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCAkZGVmYXVsdHZhbHVlPWZhbHNlKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IGEgbGlzdCBvZiBhbGwgb2YgdGhlIHVzZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzcGVjaWZpZWQgZ3JvdXAKICAgIC8vISBpbmNsdWRpbmcgYWxsIG9mIHRoZWlyIHByb3BlcnRpZXMKICAgIC8vIQogICAgLy8hIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgKHdpdGggdXNlcmlkIGFzIHRoZSBrZXkpCiAgICAvLyEKICAgIC8vISBccGFyYW0gZ3JvdXBpZCB0aGUgZGVzaXJlZCBncm91cCBpZAogICAgLy8hIFxyZXR1cm4gYW4gYXJyYXkgb2YgdXNlciBpbmZvcm1hdGlvbiAoc2VlIEdldFVzZXJJbmZvKSwgb3IgZmFsc2UKICAgIC8vISBcc2EgR2V0VXNlckluZm8KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEZ1bGxVc2Vyc0luR3JvdXAoJGdyb3VwaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBSZXR1cm4gYW4gYXJyYXkgb2YgdGhlIHVzZXIncyBwcm9wZXJ0aWVzCiAgICAvLyEKICAgIC8vISBSZXR1cm5zIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgdXNlcnMgcHJvcGVydGllcwogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgdWlkIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGZhbHNlIG9uIGVycm9yLCBvdGhlcndpc2UgYW4gYXJyYXkgb2YgYXNzb2NpYXRpb25zLCBlYWNoIGFzc29jaWF0aW9uCiAgICAvLyEgICBoYXMgdGhlIGZvbGxvd2luZyBrZXlzOgogICAgLy8hICAgICAgaWQgICAgID0gVGhlIHByb3BlcnR5IGlkCiAgICAvLyEgICAgICB1c2VyaWQgPSBUaGUgbWF0Y2hpbmcgdXNlciBpZAogICAgLy8hICAgICAgdGl0bGUgID0gVGhlIHByb3BlcnR5IHRpdGxlCiAgICAvLyEgICAgICBkYXRhICAgPSBUaGUgcHJvcGVydHkgZGF0YQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnRpZXMoJHVpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJUZW1wQ29kZSggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICAgIH0KCiAgICAvLyEgQSBmdW5jdGlvbiB0aGF0IHRlc3RzIHdldGhlciBhIGdyb3VwIHdpdGggdGhlIHNwZWZpZmllZCBpZCBleGlzdHMKICAgIC8vIQogICAgLy8hIFxwYXJhbSBnaWQgVGhlIGRlc2lyZWQgZ3JvdXAgaWQKICAgIC8vISBccmV0dXJuIGJvb2xlYW4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlJRCggJGdpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBBIHB1YmxpYyBmdW5jdGlvbiB0aGF0IHRlc3RzIHdldGhlciBhIGdyb3VwIHdpdGggdGhlIG5hbWUgZXhpc3RzCiAgICAvLyEKICAgIC8vISBccGFyYW0gZ2lkIFRoZSBkZXNpcmVkIGdyb3VwIG5hbWUKICAgIC8vISBccmV0dXJuIGJvb2xlYW4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlOYW1lKCAkbmFtZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRFeHBpcnlEYXRlKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzQWNjb3VudEV4cGlyZWQoICR1aWQgKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vISBUZXN0IHdldGhlciB0aGUgc3BlY2lmaWVkIGVtYWlsIGFkZHJlc3MgcGFzc2VzIHRoZSBydWxlcy4KICAgIC8vIQogICAgLy8hIFRoaXMgbWV0aG9kIHdpbGwgdGVzdCBpZiB0aGUgZW1haWwgYWRkcmVzcyBzdXBwbGllZCBtYXRjaGVzIHRoZQogICAgLy8hIHNldCBydWxlcy4gIE9wdGlvbmFsbHksIHRoZSBlbWFpbCBhZGRyZXNzIGNhbiBiZSB2YWxpZGF0ZWQgdmlhCiAgICAvLyEgc210cC4KICAgIC8vIQogICAgLy8hIFxwYXJhbSAgZW1haWwgVGhlIGFkZHJlc3MgdG8gdGVzdAogICAgLy8hIFxyZXR1cm4gYW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBhcnJheSBpbmRpY3VhdGVzIHN1Y2Nlc3Mgb3IgZmFpbHVyZQogICAgLy8hICAgIHRoZSBzZWNvbmQgZWxlbWVudCBpcyB0aGUgZXJyb3IgbWVzc2FnZSwgaWYgYW4gZXJyb3Igb2NjdXJyZWQKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRFbWFpbEFkZHJlc3MoICRlbWFpbCApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgZGVmaW5lZCIpOwogICAgfQoKICAgIC8vISBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIHN1cHBsaWVkIHBhc3N3b3JkCiAgICAvLyEKICAgIC8vIVxwYXJhbSAgcGFzc3dvcmQgVGhlIHBhc3N3b3JkIHRvIHRlc3QuCiAgICAvLyFccmV0dXJuIHRydWUgaWYgdGhlIHBhc3N3b3JkIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCggJHBhc3N3b3JkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIENoZWNrIHdldGhlciB0aGUgdXNlcm5hbWUgc3VwcGxpZWQgcGFzc2VzIHRoZSBydWxlcwogICAgLy8hCiAgICAvLyFccGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lIHRvIGJlIHRlc3RlZAogICAgLy8hXHJldHVybiBib29sZWFuIHRydWUvZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSggJHVzZXJuYW1lICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFRlc3RzIHdldGhlciB0aGUgY3VycmVudCB1c2VyIGlzIGxvZ2dlZCBpbiBvciBub3QuCiAgICBwdWJsaWMgZnVuY3Rpb24gTG9nZ2VkSW4oKQogICAgewogICAgICAgIGlmICgkdGhpcy0+TG9nZ2VkSW5JZCgpPT1mYWxzZSkgcmV0dXJuIGZhbHNlOyBlbHNlIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vISBSZXR1cm4gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgdXNlcgogICAgLy8hCiAgICAvLyEgXHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgIC8vISAgIGlmIG5vb25lIGlzIGxvZ2dlZCBpbiwgdGhlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluRW1haWwoKQogICAgewogICAgICAgIHJldHVybiAiIjsKICAgIH0KCiAgICAvLyEgUmV0dXJuIHRoZSB1c2VyaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcgogICAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluSWQoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgUmV0dXJuIHRoZSB1c2VybmFtZSBvZiB0aGUgY3VycmVudCB1c2VyCiAgICAvLyEKICAgIC8vISBccmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHVzZXJuYW1lIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgIC8vISAgIGlmIG5vb25lIGlzIGxvZ2dlZCBpbiwgdGhlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dpbiggJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgPSAnJywgJG1kNXB3ID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZV9sb2dvdXQgPSBmYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoRkFMU0UsIkZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCIpOwogICAgfQoKCiAgICAvLyEgTG9nb3V0IHRoZSBjdXJyZW50IHVzZXIKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXQoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgVGVzdCB3ZXRoZXIgYW4gYXNzb2NpYXRpb24gZXhpc3RzIGJldHdlZW4gdGhlIHNwZWNpZmllZCB1c2VyIGFuZCBncm91cAogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccGFyYW0gZ3JvdXBpZCBUaGUgZ3JvdXBpZCB0byB0ZXN0CiAgICAvLyEgXHJldHVybiB0cnVlIGlmIGFuIGFzc29jaWF0aW9uIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBSZW1vdmUgdGhlIHNwZWNpZmllZCB1c2VyIGZyb20gdGhlIHNwZWNpZmllZCBncm91cAogICAgLy8hCiAgICAvLyFUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBtZW1iZXJzaGlwIG9mIHVzZXIgJHVpZCBmcm9tIGdyb3VwICRnaWQKICAgIC8vIQogICAgLy8hXHBhcmFtIHVpZAogICAgLy8hXHBhcmFtIGdpZAogICAgLy8hXHJldHVybiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgY29udGFpbnMgZXhpdCBzdGF0dXMgKGJvb2xlYW4pLCB0aGUgc2Vjb25kIGVsZW1lbnQKICAgIC8vISAgIChvcHRpb25hbCkgcmV0dXJucyBhbiBlcnJvciBtZXNzYWdlLCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoICR1aWQsICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gUmVtb3ZlVXNlclRlbXBDb2RlKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEEgbWV0aG9kIHRvIG1vZGlmeSBhbiBleGlzdGluZyBncm91cAogICAgLy8hCiAgICAvLyFccGFyYW0gZ2lkIEFuIGV4aXN0aW5nIGdyb3VwIGlkCiAgICAvLyFccGFyYW0gbmFtZSBUaGUgbmV3IGdyb3VwIG5hbWUKICAgIC8vIVxwYXJhbSBkZXNjIFRoZSBuZXcgZ3JvdXAgZGVzY3JpcHRpb24KICAgIC8vIVxyZXR1cm4gQW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgYm9vbGVhbiB3aGljaCBpbmRpY2F0ZXMgc3VjY2VzcyBvciBmYWlsdXJlLCB0aGUKICAgIC8vISAgc2Vjb25kIGVsZW1lbnQgKG9wdGlvbmFsKSBjb250YWlucyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBldmVudCBvZiBhbiBlcnJvci4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFNldEdyb3VwKCAkZ2lkLCAkbmFtZSwgJGRlc2MgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydHlEZWZuKCAkbmFtZSwgJG5ld25hbWUsICRwcm9tcHQsICRsZW5ndGgsICR0eXBlICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIE1vZGlmeSBhbiBleGlzdGluZyBncm91cAogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgaWQgb2YgdGhlIGV4aXN0aW5nIHVzZXIKICAgIC8vISBccGFyYW0gdXNlcm5hbWUgVGhlIG5ldyB1c2VyIG5hbWUKICAgIC8vISBccGFyYW0gZW1haWwgVGhlIG5ldyBlbWFpbCBhZGRyZXNzCiAgICAvLyEgXHBhcmFtIHBhc3N3b3JkIFRoZSBuZXcgKHVuZW5jcnlwdGVkKSBwYXNzd29yZAogICAgLy8hIFxwYXJhbSBleHBpcmVzIFRoZSBuZXcgZXhwaXJ5IGRhdGUKICAgIC8vISBccGFyYW0gc3RhdHVzIHRoZSBuZXcgc3RhdHVzCiAgICAvLyEgXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogICAgLy8hICAgIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgY29udGFpbnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyKCAkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgPSBmYWxzZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgZGVmaW5lZCIpOwogICAgfQoKICAgIC8vISBTZXQgdGhlIHVzZXIncyBncm91cCBtZW1iZXJzaGlwcyBhYnNvbHV0ZWx5CiAgICAvLyEKICAgIC8vIVRoaXMgbWV0aG9kIHJlbW92ZXMgYWxsIHByZXZpb3VzIGdyb3VwIGFzc29jaWF0aW9ucywgYW5kIHNldHMgbmV3IG9uZXMKICAgIC8vIXRvIG1hdGNoIHRob3NlIGluIHRoZSBncnBpZHMgYXJyYXkuCiAgICAvLyEKICAgIC8vIVxwYXJhbSB1aWQgVGhlIHVzZXIgaWQgdG8gZWRpdAogICAgLy8hXHBhcmFtIGdycGlkcyBBbiBhcnJheSBvZiB1c2VyIGlkcyB0byBhc3NvY2lhdGUgd2l0aAogICAgLy8hXHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJHcm91cHMoICR1aWQsICRncnBpZHMgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCAkdWlkLCAkcGFzc3dvcmQgKQogICAgewogICAgICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICAgIH0KCiAgICAvLyEgU2V0IHRoZSB1c2VyJ3MgcHJvcGVydGllcyBhYnNvbHV0ZWx5LgogICAgLy8hCiAgICAvLyEgVGhpcyBtZXRob2QgZGVsZXRlcyBhbnkgZXhpc3RpbmcgdXNlciBwcm9wZXJ0aWVzIGFuZCBzZXRzIHRoZW0gYWNjb3JkaW5nIHRvIHRoZSBwcm9wZXJ0aWVzCiAgICAvLyEgc3VwcGxpZWQuCiAgICAvLyEKICAgIC8vISBccGFyYW0gdWlkIFRoZSB1c2VyIGlkIHRvIGJlIGVkaXRlZAogICAgLy8hIFxwYXJhbSBwcm9wcyBBbiBhcnJheSBvZiBLZXk9VmFsdWUgc3RyaW5ncyBjb25zaXN0aW5nIG9mIHRoZSB1c2VyIHByb3BlcnRpZXMuCiAgICAvLyEgXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnRpZXMoICR1aWQsICRwcm9wcyApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBTZXQgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdXNlcgogICAgLy8hCiAgICAvLyEgU2V0cyBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgICAvLyEKICAgIC8vISBccGFyYW0gdGl0bGUgVGhlIHByb3BlcnR5IG5hbWUKICAgIC8vISBccGFyYW0gZGF0YSAgVGhlIHByb3BlcnR5IHZhbHVlCiAgICAvLyEgXHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eSgkdGl0bGUsJGRhdGEpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKCiAgICAvLyEgU2V0IGEgcHJvcGVydHkgZm9yIHRoZSBwcm92aWRlZCB1c2VyaWQKICAgIC8vIQogICAgLy8hIFNldHMgYSBwcm9wZXJ0eSBleGNsdXNpdmVseSBmb3IgYSBjZXJ0YWluIHVzZXIKICAgIC8vIQogICAgLy8hIFxwYXJhbSB0aXRsZSBUaGUgcHJvcGVydHkgbmFtZQogICAgLy8hIFxwYXJhbSBkYXRhICBUaGUgcHJvcGVydHkgdmFsdWUKICAgIC8vISBccGFyYW0gdXNlcmlkIFRoZSBkZXNpcmVkIHVzZXIgaWQKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCRkYXRhLCR1c2VyaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyVGVtcENvZGUoICR1aWQsICRjb2RlICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFRlc3QgaWYgdGhlIHVzZXIgaWQgaXMgYWxyZWFkeSB0YWtlbgogICAgLy8hCiAgICAvLyEgVGVzdHMgaWYgYSB1c2VyIGJ5IHRoYXQgaWQgYWxyZWFkeSBleGlzdHMKICAgIC8vIQogICAgLy8hIFxwYXJhbSB1aWQgVGhlIHVzZXJpZCB0byB0ZXN0CiAgICAvLyEgXHJldHVybiBib29sZWFuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBVc2VyRXhpc3RzQnlJRCggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLwoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_content_attribute_helper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19jb250ZW50X2F0dHJpYnV0ZV9oZWxwZXIgZXh0ZW5kcyBDbXNDb250ZW50QXR0cmlidXRlSGVscGVyQmFzZQp7CiAgcHJpdmF0ZSBzdGF0aWMgJF9pbnN0YW5jZTsKCgogIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogIHsKICAgIC8vIG5vdGhpbmcgaGVyZS4KICB9CgoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9pbnN0YW5jZSgpCiAgewogICAgaWYgKCFzZWxmOjokX2luc3RhbmNlKQogICAgICB7CiAgICAgICAgc2VsZjo6JF9pbnN0YW5jZSA9IG5ldyBtYW1zX2NvbnRlbnRfYXR0cmlidXRlX2hlbHBlcigpOwogICAgICB9CiAgICAKICAgIHJldHVybiBzZWxmOjokX2luc3RhbmNlOwogIH0KCgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uICZnZXRfbWFtcygpCiAgewogICAgJGdDbXMgPSBjbXNtcygpOwogICAgcmV0dXJuICRnQ21zLT5tb2R1bGVzWydNQU1TJ11bJ29iamVjdCddOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBnZXRfYXR0cmlidXRlX3RhYnMoKQogIHsKICAgICRtYW1zID0gc2VsZjo6Z2V0X21hbXMoKTsKICAgICRkYXRhID0gYXJyYXkoKTsKICAgICRkYXRhWyd2aXNpdG9ycyddID0gYXJyYXkoJ3Byb21wdCc9PiRtYW1zLT5MYW5nKCd2aXNpdG9yc190YWInKSwncGVybWlzc2lvbic9PicnKTsKICAgIHJldHVybiAkZGF0YTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2F0dHJpYnV0ZV9pbnB1dCgkYXR0ciwkY29udGVudF9vYmosJGFkZGluZykKICB7CiAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAkbWFtcyA9IHNlbGY6OmdldF9tYW1zKCk7CgogICAgc3dpdGNoKCAkYXR0ci0+Z2V0X25hbWUoKSApCiAgICB7CiAgICBjYXNlICdtYW1zX2dyb3Vwcyc6CiAgICAgICR0bXAgPSBhcnJheSgkbWFtcy0+TGFuZygnYW55X2xvZ2dlZF9pbl91c2VyJyk9PictMScpOwogICAgICAkdDIgPSAkbWFtcy0+R2V0R3JvdXBMaXN0KCk7CiAgICAgIGZvcmVhY2goICR0MiBhcyAkayA9PiAkdiApCgl7CgkgICR0bXBbJGtdID0gJHY7Cgl9CiAgICAgIGlmKCBpc19hcnJheSgkdG1wKSApCgl7CgkgICRzZWwgPSBhcnJheSgpOwoJICAkc2VsX3N0ciA9ICRjb250ZW50X29iai0+Z2V0X3Byb3BlcnR5X3ZhbHVlKCdtYW1zX2dyb3VwcycpOwoJICBpZiggJHNlbF9zdHIgKQoJICAgIHsKCSAgICAgICRzZWwgPSBleHBsb2RlKCcsJywkc2VsX3N0cik7CgkgICAgfQoJICAkcHJvbXB0ID0gJG1hbXMtPkxhbmcoJ21hbXNfZ3JvdXBzX3Byb21wdCcpOwoJICAkZmllbGQgPSAkbWFtcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCcnLCdtYW1zX2dyb3Vwc1tdJywkdG1wLCRzZWwsCgkJCQkJICAgICAgIG1pbihjb3VudCgkdG1wKSw1KSk7CgkgIHJldHVybiBhcnJheSgkcHJvbXB0Lic6JywkZmllbGQpOwoJfQogICAgICBicmVhazsKCiAgICBjYXNlICdtYW1zX3JlZGlyZWN0JzoKICAgICAgLy8gZ2V0IGEgbGlzdCBvZiBwYWdlcwogICAgICAkdmFsID0gJGNvbnRlbnRfb2JqLT5nZXRfcHJvcGVydHlfdmFsdWUoJ21hbXNfcmVkaXJlY3QnLC0xKTsKICAgICAgJHByb21wdCA9ICRtYW1zLT5MYW5nKCdtYW1zX3JlZGlyZWN0X3Byb21wdCcpOwogICAgICAkZmllbGQgPSBDbXNDb250ZW50T3BlcmF0aW9uczo6Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJHZhbCwnJywnbWFtc19yZWRpcmVjdCcpOwogICAgICByZXR1cm4gYXJyYXkoJHByb21wdC4nOicsJGZpZWxkKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICAKICB9CgoKICBmdW5jdGlvbiBnZXRfYXR0cmlidXRlc19mcm9tX2Zvcm1kYXRhKCRjb250ZW50X29iaiwkcGFyYW1zKQogIHsKICAgICRwcm9wcyA9IGFycmF5KCdtYW1zX2dyb3VwcycsJ21hbXNfcmVkaXJlY3QnKTsKICAgIGZvcmVhY2goICRwcm9wcyBhcyAkb25lICkKICAgICAgewoJc3dpdGNoKCAkb25lICkKCSAgewoJICBjYXNlICdtYW1zX2dyb3Vwcyc6CgkgICAgaWYoIGlzc2V0KCRwYXJhbXNbJG9uZV0pICkKCSAgICAgIHsKCQkkc3RyID0gaW1wbG9kZSgnLCcsJHBhcmFtc1skb25lXSk7CgkJJGNvbnRlbnRfb2JqLT5zZXRfcHJvcGVydHlfdmFsdWUoJG9uZSwkc3RyKTsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7CgkJJGNvbnRlbnRfb2JqLT5zZXRfcHJvcGVydHlfdmFsdWUoJG9uZSwnJyk7CgkgICAgICB9CgkgICAgYnJlYWs7CgkgICAgCgkgIGRlZmF1bHQ6CgkgICAgaWYoIGlzc2V0KCRwYXJhbXNbJG9uZV0pICkKCSAgICAgIHsKCQkkY29udGVudF9vYmotPnNldF9wcm9wZXJ0eV92YWx1ZSgkb25lLCRwYXJhbXNbJG9uZV0pOwoJICAgICAgfQoJICB9CiAgICAgIH0KICB9CiAgCgp9IC8vIGVuZCBvZiBjbGFzcwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_protected_logoutlink.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gOTklIG9mIHRoaXMgY2xhc3MgKGFsbCBvZiBpdD8pIGNvdWxkIGJlIGluIGEgdHJhaXQsIGFzIGl0IGlzIGluaXRpYWxseSBqdXN0IGNvcGllZCBmcm9tIHRoZSBGRVUgcHJvdGVjdGVkIHBhZ2UgY2xhc3MuCmNsYXNzIG1hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsgZXh0ZW5kcyBDb250ZW50QmFzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNDb3B5YWJsZSgpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZpZXdhYmxlKCkgeyByZXR1cm4gRkFMU0U7IH0KCXB1YmxpYyBmdW5jdGlvbiBIYXNTZWFyY2hhYmxlQ29udGVudCgpIHsgcmV0dXJuIEZBTFNFOyB9CgogICAgZnVuY3Rpb24gU2V0UHJvcGVydGllcygpCiAgICB7CgkJcGFyZW50OjpTZXRQcm9wZXJ0aWVzKCk7CgkJJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdzZWN1cmUnLDApOwoJCSR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnY2FjaGFibGUnLGZhbHNlKTsKCQkkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3Nob3dpbm1lbnUnLHRydWUpOwoJCSR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgncGFnZV91cmwnLCcnKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9pc0F1dGhvcml6ZWQoKQogICAgewogICAgICAgIC8vIGRvIHdlIGhhdmUgYWNjZXNzIHRvIGl0PwogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggJG1hbXMgKSB7CiAgICAgICAgICAgICR1aWQgPSAkbWFtcy0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHVpZCApIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyktPkxhbmcoZ2V0X2NsYXNzKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2RpZmllZERhdGUoKQogICAgewogICAgICAgIC8vIG9uIGZyb250ZW5kIHJlcXVlc3RzIHRoaXMgd2lsbCBmb3JjZSB0aGUgdGVtcGxhdGUgdG8gYmUgcmVjb21waWxlZAogICAgICAgIC8vIGFuZCB0aGVyZWZvcmUgZXZhbHVhdGlvbiB0byBiZSBkb25lIGZvciBlYWNoIHJlcXVlc3QuCiAgICAgICAgaWYoIGNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApIHJldHVybiB0aW1lKCk7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6R2V0TW9kaWZpZWREYXRlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGVybWl0dGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9pc0F1dGhvcml6ZWQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2hvd0luTWVudSgpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6U2hvd0luTWVudSgpOwogICAgICAgIGlmKCAhJHJlcyApIHJldHVybiAkcmVzOwogICAgICAgICRyZXMgPSAkdGhpcy0+X2lzQXV0aG9yaXplZCgpOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIGZ1bmN0aW9uIEdldFVSTCgkcmV3cml0ZSA9IHRydWUpCiAgICB7CiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRwYWdlX2lkID0gQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICAgIHJldHVybiAkbWFtcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ2xvZ291dCcsJHBhZ2VfaWQpOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_protected_page.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIENvbnRlbnQ7CnVzZSBjbXNfdXRpbHM7CgphYnN0cmFjdCBjbGFzcyBiYXNlX3Byb3RlY3RlZF9wYWdlIGV4dGVuZHMgQ29udGVudAp7CiAgICBwcm90ZWN0ZWQgJF9kYXRhOwogICAgY29uc3QgTUFNU19QUk9QTkFNRSA9ICdfX21hbXNfZGF0YV9fJzsgLy8gb29wczogdHlwbywgY2FuJ3QgY2hhbmdlIGl0IG5vdyB0aG91Z2guCiAgICBjb25zdCBUQUJfTUFNUyA9ICdjY19tYW1zJzsKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2dldERhdGEoKQogICAgewogICAgICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9kYXRhKSApIHsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKHNlbGY6Ok1BTVNfUFJPUE5BTUUpOwogICAgICAgICAgICAkdGhpcy0+X2RhdGEgPSBhcnJheSgpOwogICAgICAgICAgICBpZiggJHRtcCApICR0aGlzLT5fZGF0YSA9IHVuc2VyaWFsaXplKCR0bXApOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3NldERhdGEoKQogICAgewogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X2RhdGEpICYmIGNvdW50KCR0aGlzLT5fZGF0YSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKHNlbGY6Ok1BTVNfUFJPUE5BTUUsc2VyaWFsaXplKCR0aGlzLT5fZGF0YSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoc2VsZjo6TUFNU19QUk9QTkFNRSwnJyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfaXNBdXRob3JpemVkKCkKICAgIHsKICAgICAgICAvLyBkbyB3ZSBoYXZlIGFjY2VzcyB0byBpdD8KICAgICAgICAkdGhpcy0+X2dldERhdGEoKTsKCiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgIGlmKCAkbWFtcyApIHsKICAgICAgICAgICAgJHVpZCA9ICRtYW1zLT5Mb2dnZWRJbklkKCk7CiAgICAgICAgICAgIGlmKCAkdWlkICkgewogICAgICAgICAgICAgICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSB8fCBjb3VudCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSA9PSAwICkgewogICAgICAgICAgICAgICAgICAgIC8vIG5vIG1lbWJlciBncm91cHMgc2VsZWN0ZWQsIGJ1dCBzdGlsbCBsb2dnZWQgaW4sIHdlIGNhbiBkaXNwbGF5IHRoaXMuCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBnZXQgbWVtYmVyIGdyb3VwcyBhbmQgZG8gYSBjcm9zcyByZWZlcmVuY2UuCiAgICAgICAgICAgICAgICAgICAgJGdyb3VwcyA9ICRtYW1zLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCRncm91cHMpIHx8IGNvdW50KCRncm91cHMpID09IDAgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAgICAgICAgJG1lbWJlcmdyb3VwcyA9IFx4dF9hcnJheTo6ZXh0cmFjdF9maWVsZCgkZ3JvdXBzLCdncm91cGlkJyk7CiAgICAgICAgICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9kYXRhWydncm91cHMnXSk7ICRpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpbl9hcnJheSgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddWyRpXSwkbWVtYmVyZ3JvdXBzKSApIHJldHVybiBUUlVFOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFR5cGUoKQogICAgewogICAgICAgIHJldHVybiAnbWFtc19wcm90ZWN0ZWRfcGFnZSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyktPkxhbmcoZ2V0X2NsYXNzKCR0aGlzKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldE1vZGlmaWVkRGF0ZSgpCiAgICB7CiAgICAgICAgLy8gb24gZnJvbnRlbmQgcmVxdWVzdHMgdGhpcyB3aWxsIGZvcmNlIHRoZSB0ZW1wbGF0ZSB0byBiZSByZWNvbXBpbGVkCiAgICAgICAgLy8gYW5kIHRoZXJlZm9yZSBldmFsdWF0aW9uIHRvIGJlIGRvbmUgZm9yIGVhY2ggcmVxdWVzdC4KICAgICAgICBpZiggY21zbXMoKS0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpICkgcmV0dXJuIHRpbWUoKTsKICAgICAgICByZXR1cm4gcGFyZW50OjpHZXRNb2RpZmllZERhdGUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydGllcygpCiAgICB7CiAgICAgICAgcGFyZW50OjpTZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdjYWNoYWJsZScsZmFsc2UpOwogICAgICAgIGlmKCB2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sJzEuOTgnKSA8IDAgKSB7CiAgICAgICAgICAgICR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ19fbWFtc19ncm91cHNfXycsMSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+QWRkUHJvcGVydHkoJ19fbWFtc19ncm91cHNfXycsMSxzZWxmOjpUQUJfTUFNUyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJc1Blcm1pdHRlZCgpCiAgICB7CiAgICAgICAgJHIgPSAkdGhpcy0+X2lzQXV0aG9yaXplZCgpOwogICAgICAgIGlmKCAhJHIgKSB7CiAgICAgICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAgICAgaWYoIFxDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgJiYgJG1hbXMgKSAkbWFtcy0+U2V0UG9zdExvZ2luVXJsKFx4dF91cmw6OmN1cnJlbnRfdXJsKCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHI7CiAgICB9CgogICAgLy8gQ01TTVMgMS4xMS54IGFuZCBwcmV2aW91cyBvbmx5CiAgICBwdWJsaWMgZnVuY3Rpb24gVGFiTmFtZXMoKQogICAgewogICAgICAgICRyZXMgPSBwYXJlbnQ6OlRhYk5hbWVzKCk7CiAgICAgICAgaWYoIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCdNYW5hZ2UgQWxsIENvbnRlbnQnKSApIHsKICAgICAgICAgICAgJHJlc1tdID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIC8vIENNU01TIDEuMTEueCBhbmQgcHJldmlvdXMgb25seQogICAgcHVibGljIGZ1bmN0aW9uIEVkaXRBc0FycmF5KCRhZGRpbmcgPSBmYWxzZSwgJHRhYiA9IDAsICRzaG93YWRtaW4gPSBmYWxzZSkKICAgIHsKICAgICAgICAkbmFtZXMgPSAkdGhpcy0+VGFiTmFtZXMoKTsKICAgICAgICAkc3RyID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgaWYoICFpc3NldCgkbmFtZXNbJHRhYl0pIHx8ICRuYW1lc1skdGFiXSAhPSAkc3RyICkgcmV0dXJuIHBhcmVudDo6RWRpdEFzQXJyYXkoJGFkZGluZywkdGFiLCRzaG93YWRtaW4pOwoKICAgICAgICAkcmV0ID0gYXJyYXkoKTsKICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICAgJGdyb3VwbGlzdCA9IGFycmF5X2ZsaXAoJG1hbXMtPkdldEdyb3VwTGlzdCgpKTsKCiAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApIHsKICAgICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCRtYW1zLT5HZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnKSk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgIH0KICAgICAgICAkc2l6ZSA9IG1pbihjb3VudCgkZ3JvdXBsaXN0KSwxMCk7CiAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICRvcHQgPSAnPHNlbGVjdCBuYW1lPSJfX21hbXNfZ3JvdXBzX19bXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSInLiRzaXplLiciPic7CiAgICAgICAgZm9yZWFjaCggJGdyb3VwbGlzdCBhcyAkZ2lkID0+ICRnbmFtZSApIHsKICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSAmJiBpbl9hcnJheSgkZ2lkLCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgJHNlbGVjdGVkPSdzZWxlY3RlZD0ic2VsZWN0ZWQiICc7CiAgICAgICAgICAgICRvcHQgLj0gJzxvcHRpb24gJy4kc2VsZWN0ZWQuJ3ZhbHVlPSInLiRnaWQuJyI+Jy4kZ25hbWUuJzwvb3B0aW9uPic7CiAgICAgICAgfQogICAgICAgICRvcHQgLj0gJzwvc2VsZWN0Pjxici8+Jy4kbWFtcy0+TGFuZygnaW5mb19jb250ZW50cGFnZV9ncm91cGxpc3QnKTsKICAgICAgICAkdG1wW10gPSAkb3B0OwogICAgICAgICRyZXRbXSA9ICR0bXA7CgogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIC8vIENNU01TIDIuMAogICAgcHVibGljIGZ1bmN0aW9uIEdldFRhYk5hbWVzKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50OjpHZXRUYWJOYW1lcygpOwogICAgICAgIGlmKCAhY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICBpZiggaXNzZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pICkgdW5zZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYoIGlzc2V0KCRvdXRbc2VsZjo6VEFCX01BTVNdKSApIHsKICAgICAgICAgICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgICAgICAgICAgICAgJG91dFtzZWxmOjpUQUJfTUFNU10gPSAnLS12aWV3ZXJzLS0nOwogICAgICAgICAgICAgICAgaWYoICRtYW1zICkgJG91dFtzZWxmOjpUQUJfTUFNU10gPSAkbWFtcy0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNob3dJbk1lbnUoKQogICAgewogICAgICAgICRyZXMgPSBwYXJlbnQ6OlNob3dJbk1lbnUoKTsKICAgICAgICBpZiggISRyZXMgKSByZXR1cm4gJHJlczsKICAgICAgICByZXR1cm4gJHRoaXMtPl9pc0F1dGhvcml6ZWQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2F2ZSgpCiAgICB7CiAgICAgICAgJHRoaXMtPl9zZXREYXRhKCk7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6U2F2ZSgpOwogICAgfQoKICAgIC8vIHBvc3NpYmxlIGZvciAxLjExLngsIHJlcXVpcmVkIGZvciBDTVNNUyAyLjAKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCRhZGRpbmcpCiAgICB7CiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgIGlmKCAhJG1hbXMgKSByZXR1cm47CgogICAgICAgIHN3aXRjaCggJG9uZSApIHsKICAgICAgICBjYXNlICdfX21hbXNfZ3JvdXBzX18nOgogICAgICAgICAgICAkcmV0ID0gYXJyYXkoKTsKICAgICAgICAgICAgLy8gdGhlIHBlcm1pc3Npb25zIHRhYi4KICAgICAgICAgICAgJGdyb3VwbGlzdCA9IGFycmF5X2ZsaXAoJG1hbXMtPkdldEdyb3VwTGlzdCgpKTsKCiAgICAgICAgICAgICR0aGlzLT5fZ2V0RGF0YSgpOwogICAgICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgewogICAgICAgICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCRtYW1zLT5HZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnKSk7CiAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSAkdGhpcy0+X2RhdGFbJ2dyb3VwcyddID0gJHRtcDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2l6ZSA9IG1pbihjb3VudCgkZ3JvdXBsaXN0KSwxMCk7CiAgICAgICAgICAgICR0bXAgPSBhcnJheSgkbWFtcy0+TGFuZygnZ3JvdXBzJykuJzonKTsKICAgICAgICAgICAgJG9wdCA9ICc8c2VsZWN0IG5hbWU9Il9fbWFtc19ncm91cHNfX1tdIiBtdWx0aXBsZT0ibXVsdGlwbGUiIHNpemU9IicuJHNpemUuJyI+JzsKICAgICAgICAgICAgZm9yZWFjaCggJGdyb3VwbGlzdCBhcyAkZ2lkID0+ICRnbmFtZSApIHsKICAgICAgICAgICAgICAgICRzZWxlY3RlZCA9ICcnOwogICAgICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICYmIGluX2FycmF5KCRnaWQsJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSAkc2VsZWN0ZWQ9J3NlbGVjdGVkPSJzZWxlY3RlZCIgJzsKICAgICAgICAgICAgICAgICRvcHQgLj0gJzxvcHRpb24gJy4kc2VsZWN0ZWQuJ3ZhbHVlPSInLiRnaWQuJyI+Jy4kZ25hbWUuJzwvb3B0aW9uPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9wdCAuPSAnPC9zZWxlY3Q+PGJyLz4nLiRtYW1zLT5MYW5nKCdpbmZvX2NvbnRlbnRwYWdlX2dyb3VwbGlzdCcpOwogICAgICAgICAgICAkdG1wW10gPSAkb3B0OwogICAgICAgICAgICByZXR1cm4gJHRtcDsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6ZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCRhZGRpbmcpOwogICAgICAgIH0KICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgppZiggdmVyc2lvbl9jb21wYXJlKENNU19WRVJTSU9OLCcyLjIuOTAwJykgPCAxKSB7CiAgICBjbGFzcyBQcm90ZWN0ZWRQYWdlIGV4dGVuZHMgYmFzZV9wcm90ZWN0ZWRfcGFnZSB7CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyA9IGZhbHNlKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydfX21hbXNfZ3JvdXBzX18nXSkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2dyb3VwcyddID0gJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRDYWNoYWJsZShmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X2Rpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKTsKICAgICAgICB9CiAgICB9IC8vIGNsYXNzCn0gZWxzZSB7CiAgICBjbGFzcyBQcm90ZWN0ZWRQYWdlIGV4dGVuZHMgYmFzZV9wcm90ZWN0ZWRfcGFnZSB7CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEZpbGxQYXJhbXMoYXJyYXkgJHBhcmFtcyxib29sICRlZGl0aW5nID0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5fZ2V0RGF0YSgpOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ10pICkgewogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGFyZW50OjpGaWxsUGFyYW1zKCRwYXJhbXMsJGVkaXRpbmcpOwogICAgICAgICAgICAkdGhpcy0+U2V0Q2FjaGFibGUoZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoc3RyaW5nICRvbmUsIGJvb2wgJGFkZGluZykKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6Ol9kaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQoKICAgIH0gLy8gY2xhc3MKfQojCiMgRU9GCiMK]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_protected_sectionhead.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIFNlY3Rpb25IZWFkZXI7CnVzZSBjbXNfdXRpbHM7CgovLyA5OSUgb2YgdGhpcyBjbGFzcyAoYWxsIG9mIGl0PykgY291bGQgYmUgaW4gYSB0cmFpdCwgYXMgaXQgaXMgaW5pdGlhbGx5IGp1c3QgY29waWVkIGZyb20gdGhlIEZFVSAoTUFNUykgcHJvdGVjdGVkIHBhZ2UgY2xhc3MuCmFic3RyYWN0IGNsYXNzIEJhc2VQcm90ZWN0ZWRTZWN0aW9uSGVhZCBleHRlbmRzIFNlY3Rpb25IZWFkZXIKewogICAgcHJvdGVjdGVkICRfZGF0YTsKICAgIGNvbnN0IE1BTVNfUFJPUE5BTUUgPSAnX19tYW1zX2RhdGFfXyc7IC8vIG9vcHM6IHR5cG8sIGNhbid0IGNoYW5nZSBpdCBub3cgdGhvdWdoLgogICAgY29uc3QgVEFCX01BTVMgPSAnY2NfbWFtcyc7CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9nZXREYXRhKCkKICAgIHsKICAgICAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fZGF0YSkgKSB7CiAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZShzZWxmOjpNQU1TX1BST1BOQU1FKTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhID0gYXJyYXkoKTsKICAgICAgICAgICAgaWYoICR0bXAgKSAkdGhpcy0+X2RhdGEgPSB1bnNlcmlhbGl6ZSgkdG1wKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9zZXREYXRhKCkKICAgIHsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9kYXRhKSAmJiBjb3VudCgkdGhpcy0+X2RhdGEpICkgewogICAgICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZShzZWxmOjpNQU1TX1BST1BOQU1FLHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKHNlbGY6Ok1BTVNfUFJPUE5BTUUsJycpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2lzQXV0aG9yaXplZCgpCiAgICB7CiAgICAgICAgLy8gZG8gd2UgaGF2ZSBhY2Nlc3MgdG8gaXQ/CiAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CgogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggJG1hbXMgKSB7CiAgICAgICAgICAgICR1aWQgPSAkbWFtcy0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHVpZCApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgfHwgY291bnQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAvLyBubyBtZW1iZXIgZ3JvdXBzIHNlbGVjdGVkLCBidXQgc3RpbGwgbG9nZ2VkIGluLCB3ZSBjYW4gZGlzcGxheSB0aGlzLgogICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IG1lbWJlciBncm91cHMgYW5kIGRvIGEgY3Jvc3MgcmVmZXJlbmNlLgogICAgICAgICAgICAgICAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVpZCk7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkZ3JvdXBzKSB8fCBjb3VudCgkZ3JvdXBzKSA9PSAwICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgICAgICRtZW1iZXJncm91cHMgPSBceHRfYXJyYXk6OmV4dHJhY3RfZmllbGQoJGdyb3VwcywnZ3JvdXBpZCcpOwogICAgICAgICAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggaW5fYXJyYXkoJHRoaXMtPl9kYXRhWydncm91cHMnXVskaV0sJG1lbWJlcmdyb3VwcykgKSByZXR1cm4gVFJVRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gJ21hbXNfcHJvdGVjdGVkX3NlY19oZWFkJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZyhnZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kaWZpZWREYXRlKCkKICAgIHsKICAgICAgICAvLyBvbiBmcm9udGVuZCByZXF1ZXN0cyB0aGlzIHdpbGwgZm9yY2UgdGhlIHRlbXBsYXRlIHRvIGJlIHJlY29tcGlsZWQKICAgICAgICAvLyBhbmQgdGhlcmVmb3JlIGV2YWx1YXRpb24gdG8gYmUgZG9uZSBmb3IgZWFjaCByZXF1ZXN0LgogICAgICAgIGlmKCBjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSByZXR1cm4gdGltZSgpOwogICAgICAgIHJldHVybiBwYXJlbnQ6OkdldE1vZGlmaWVkRGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2NhY2hhYmxlJyxmYWxzZSk7CiAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS45OCcpIDwgMCApIHsKICAgICAgICAgICAgJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5BZGRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxLHNlbGY6OlRBQl9NQU1TKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGVybWl0dGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9pc0F1dGhvcml6ZWQoKTsKICAgIH0KCiAgICAvLyBDTVNNUyAxLjExLnggYW5kIHByZXZpb3VzIG9ubHkKICAgIHB1YmxpYyBmdW5jdGlvbiBUYWJOYW1lcygpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6VGFiTmFtZXMoKTsKICAgICAgICBpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICAkcmVzW10gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEVkaXRBc0FycmF5KCRhZGRpbmcgPSBmYWxzZSwgJHRhYiA9IDAsICRzaG93YWRtaW4gPSBmYWxzZSkKICAgIHsKICAgICAgICAkbmFtZXMgPSAkdGhpcy0+VGFiTmFtZXMoKTsKICAgICAgICAkc3RyID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgaWYoICFpc3NldCgkbmFtZXNbJHRhYl0pIHx8ICRuYW1lc1skdGFiXSAhPSAkc3RyICkgcmV0dXJuIHBhcmVudDo6RWRpdEFzQXJyYXkoJGFkZGluZywkdGFiLCRzaG93YWRtaW4pOwoKICAgICAgICAkcmV0ID0gYXJyYXkoKTsKICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICAgJGdyb3VwbGlzdCA9IGFycmF5X2ZsaXAoJG1hbXMtPkdldEdyb3VwTGlzdCgpKTsKCiAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApIHsKICAgICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCRtYW1zLT5HZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnKSk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgIH0KICAgICAgICAkc2l6ZSA9IG1pbihjb3VudCgkZ3JvdXBsaXN0KSwxMCk7CiAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICRvcHQgPSAnPHNlbGVjdCBuYW1lPSJfX21hbXNfZ3JvdXBzX19bXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSInLiRzaXplLiciPic7CiAgICAgICAgZm9yZWFjaCggJGdyb3VwbGlzdCBhcyAkZ2lkID0+ICRnbmFtZSApIHsKICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSAmJiBpbl9hcnJheSgkZ2lkLCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgJHNlbGVjdGVkPSdzZWxlY3RlZD0ic2VsZWN0ZWQiICc7CiAgICAgICAgICAgICRvcHQgLj0gJzxvcHRpb24gJy4kc2VsZWN0ZWQuJ3ZhbHVlPSInLiRnaWQuJyI+Jy4kZ25hbWUuJzwvb3B0aW9uPic7CiAgICAgICAgfQogICAgICAgICRvcHQgLj0gJzwvc2VsZWN0Pjxici8+Jy4kbWFtcy0+TGFuZygnaW5mb19jb250ZW50cGFnZV9ncm91cGxpc3QnKTsKICAgICAgICAkdG1wW10gPSAkb3B0OwogICAgICAgICRyZXRbXSA9ICR0bXA7CgogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIC8vIENNU01TIDIuMAogICAgcHVibGljIGZ1bmN0aW9uIEdldFRhYk5hbWVzKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50OjpHZXRUYWJOYW1lcygpOwogICAgICAgIGlmKCAhY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICBpZiggaXNzZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pICkgdW5zZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYoIGlzc2V0KCRvdXRbc2VsZjo6VEFCX01BTVNdKSApICRvdXRbc2VsZjo6VEFCX01BTVNdID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTaG93SW5NZW51KCkKICAgIHsKICAgICAgICAkcmVzID0gcGFyZW50OjpTaG93SW5NZW51KCk7CiAgICAgICAgaWYoICEkcmVzICkgcmV0dXJuICRyZXM7CiAgICAgICAgcmV0dXJuICR0aGlzLT5faXNBdXRob3JpemVkKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNhdmUoKQogICAgewogICAgICAgICR0aGlzLT5fc2V0RGF0YSgpOwogICAgICAgIHJldHVybiBwYXJlbnQ6OlNhdmUoKTsKICAgIH0KCiAgICAvLyBwb3NzaWJsZSBmb3IgMS4xMS54LCByZXF1aXJlZCBmb3IgQ01TTVMgMi4wCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Rpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKQogICAgewogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggISRtYW1zICkgcmV0dXJuOwoKICAgICAgICBzd2l0Y2goICRvbmUgKSB7CiAgICAgICAgY2FzZSAnX19tYW1zX2dyb3Vwc19fJzoKICAgICAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS45OCcpIDwgMCApIHJldHVybjsKCiAgICAgICAgICAgICRyZXQgPSBhcnJheSgpOwogICAgICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICAgICAkZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkbWFtcy0+R2V0R3JvdXBMaXN0KCkpOwoKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsJG1hbXMtPkdldFByZWZlcmVuY2UoJ3BhZ2V0eXBlX2dyb3VwcycpKTsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaXplID0gbWluKGNvdW50KCRncm91cGxpc3QpLDEwKTsKICAgICAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICAgICAkb3B0ID0gJzxzZWxlY3QgbmFtZT0iX19tYW1zX2dyb3Vwc19fW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iJy4kc2l6ZS4nIj4nOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBsaXN0IGFzICRnaWQgPT4gJGduYW1lICkgewogICAgICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgJiYgaW5fYXJyYXkoJGdpZCwkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApICRzZWxlY3RlZD0nc2VsZWN0ZWQ9InNlbGVjdGVkIiAnOwogICAgICAgICAgICAgICAgJG9wdCAuPSAnPG9wdGlvbiAnLiRzZWxlY3RlZC4ndmFsdWU9IicuJGdpZC4nIj4nLiRnbmFtZS4nPC9vcHRpb24+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3B0IC49ICc8L3NlbGVjdD48YnIvPicuJG1hbXMtPkxhbmcoJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0Jyk7CiAgICAgICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgICAgIHJldHVybiAkdG1wOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sJzIuMi45MDAnKSA8IDEpIHsKICAgIGNsYXNzIFByb3RlY3RlZFNlY3Rpb25IZWFkIGV4dGVuZHMgQmFzZVByb3RlY3RlZFNlY3Rpb25IZWFkIHsKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gRmlsbFBhcmFtcygkcGFyYW1zLCRlZGl0aW5nID0gZmFsc2UpCiAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+X2dldERhdGEoKTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddKSApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkcGFyYW1zWydfX21hbXNfZ3JvdXBzX18nXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApIHsKICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBhcmVudDo6RmlsbFBhcmFtcygkcGFyYW1zLCRlZGl0aW5nKTsKICAgICAgICAgICAgJHRoaXMtPlNldENhY2hhYmxlKGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpfZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCRhZGRpbmcpOwogICAgICAgIH0KICAgIH0gLy8gY2xhc3MKfSBlbHNlIHsKICAgIGNsYXNzIFByb3RlY3RlZFNlY3Rpb25IZWFkIGV4dGVuZHMgQmFzZVByb3RlY3RlZFNlY3Rpb25IZWFkIHsKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gRmlsbFBhcmFtcyhhcnJheSAkcGFyYW1zLGJvb2wgJGVkaXRpbmcgPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydfX21hbXNfZ3JvdXBzX18nXSkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2dyb3VwcyddID0gJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRDYWNoYWJsZShmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudChzdHJpbmcgJG9uZSwgYm9vbCAkYWRkaW5nKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X2Rpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKTsKICAgICAgICB9CiAgICB9IC8vIGNsYXNzCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_pure_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19wdXJlX2NvbnN1bWVyIGltcGxlbWVudHMgbWFtc19hdXRoX2NvbnN1bWVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBpc19hdXRoZW50aWNhdGVkKCkgewogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gaGFzX2NhcGFiaWxpdHkoJGZsYWcpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkZmxhZykgKSAkZmxhZyA9IGFycmF5KCRmbGFnKTsKICAgICAgICBmb3JlYWNoKCAkZmxhZyBhcyAkb25lICkgewogICAgICAgICAgICBpZiggaW5fYXJyYXkoJG9uZSwkdGhpcy0+Z2V0X2NhcGFiaWxpdGllcygpKSApIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXBhYmlsaXRpZXMoKQogICAgewogICAgICAgIHJldHVybiBhcnJheSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9naW5fZGlzcGxheSgkaWQsJHJldHVybmlkLCRwYXJhbXMpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NoYW5nZXNldHRpbmdzX2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJfaW5mbygpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29ubmVjdGluZ19wcm9wZXJ0eV9uYW1lKCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF91bmlxdWVfaWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3JvdXBfbGlzdCgkd2l0aF9jb3VudCA9IEZBTFNFKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZWZhdWx0X2dyb3VwcygpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJHVpZCA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWVfcHJvbXB0KCkKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgICAgIHJldHVybiAkbWFtcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3VzZXJuYW1lKCR1c2VybmFtZSwkY2hlY2tfZW1haWxfYWRkciA9IEZBTFNFLCR1aWQgPSAtMSkKICAgIHsKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_smarty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc19zbWFydHkKewogICAgcHJpdmF0ZSBzdGF0aWMgJF9tb2R1bGU7CiAgICBwcml2YXRlIHN0YXRpYyAkX3Byb3BlcnRpZXM7CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0X21vZHVsZSgpCiAgICB7CiAgICAgICAgaWYoICFzZWxmOjokX21vZHVsZSApIHNlbGY6OiRfbW9kdWxlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRfbW9kdWxlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2N1cnJlbnRfdXNlcmlkKCkKICAgIHsKICAgICAgICAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIHJldHVybiAkdWlkOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2N1cnJlbnRfdXNlcm5hbWUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpfZ2V0X21vZHVsZSgpLT5Mb2dnZWRJbk5hbWUoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyaWQoJHVzZXJuYW1lKQogICAgewogICAgICAgICR1c2VybmFtZSA9IHRyaW0oJHVzZXJuYW1lKTsKICAgICAgICBpZiggJHVzZXJuYW1lICkgcmV0dXJuIChpbnQpc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJHVpZCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYoICR1aWQgPCAxICkgJHVpZCA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkxvZ2dlZEluSWQoKTsKICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm47CiAgICAgICAgJHVpbmZvID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAgICAgaWYoICFpc19hcnJheSgkdWluZm8pIHx8IGNvdW50KCR1aW5mbykgPT0gMCB8fCAkdWluZm9bMF0gPT0gRkFMU0UgKSByZXR1cm47CiAgICAgICAgcmV0dXJuICR1aW5mb1sxXVsndXNlcm5hbWUnXTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9lbWFpbCgkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggJG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSApIHJldHVybiBzZWxmOjpnZXRfdXNlcm5hbWUoJHVpZCk7CiAgICAgICAgJHRtcCA9ICRtb2QtPkdldEVtYWlsKCR1aWQpOwogICAgICAgIHJldHVybiAkdG1wOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJpbmZvKCR1aWQgPSBudWxsKQogICAgewogICAgICAgIGlmKCAkdWlkIDwgMSApICR1aWQgPSBzZWxmOjpfZ2V0X21vZHVsZSgpLT5Mb2dnZWRJbklkKCk7CiAgICAgICAgaWYoICR1aWQgPCAxICkgcmV0dXJuOwogICAgICAgICR1aWQgPSAoaW50KSR1aWQ7CiAgICAgICAgaWYoICR1aWQgPiAwICkgewogICAgICAgICAgICBpZiggaXNfb2JqZWN0KHNlbGY6Ol9nZXRfbW9kdWxlKCkpICkgewogICAgICAgICAgICAgICAgJHVpbmZvID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlckluZm8oJHVpZCxUUlVFKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSB8fCBjb3VudCgkdWluZm8pID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoICR1aW5mb1swXSA9PSBGQUxTRSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkdWluZm9bMV1bJ2Zwcm9wcyddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0bXAgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHVpbmZvWzFdWydmcHJvcHMnXSBhcyAkb25lcHJvcCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wWyRvbmVwcm9wWyd0aXRsZSddXSA9ICRvbmVwcm9wWydkYXRhJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHVpbmZvWzFdWydmcHJvcHMnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdWluZm9bMV1bJ3Byb3BzJ10gPSAkdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdWluZm9bMV07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCRncm91cG5hbWUsJGZvcl9saXN0ID0gRkFMU0UpCiAgICB7CiAgICAgICAgaWYoICFlbXB0eSgkZ3JvdXBuYW1lKSApIHsKICAgICAgICAgICAgaWYoIGlzX29iamVjdChzZWxmOjpfZ2V0X21vZHVsZSgpKSApIHsKCiAgICAgICAgICAgICAgICAkZ2lkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0R3JvdXBJRCgkZ3JvdXBuYW1lKTsKICAgICAgICAgICAgICAgIGlmKCAkZ2lkICkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeSA9IG5ldyBcbWFtc191c2VyX3F1ZXJ5KCk7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQSUQsICRnaWQgKTsKICAgICAgICAgICAgICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKCiAgICAgICAgICAgICAgICAgICAgJHVzZXJzID0gW107CiAgICAgICAgICAgICAgICAgICAgd2hpbGUoICEkcnMtPkVPRiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9uZXVzZXIgPSAkcnMtPmZpZWxkczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoICRmb3JfbGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vyc1skb25ldXNlclsnaWQnXV0gPSAkb25ldXNlclsndXNlcm5hbWUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vyc1tdID0gYXJyYXkoJ2lkJz0+JG9uZXVzZXJbJ2lkJ10sJ3VzZXJuYW1lJz0+JG9uZXVzZXJbJ3VzZXJuYW1lJ10pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR1c2VyczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9ncm91cF9tZW1iZXJsaXN0KCRnaWQpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gbmV3IFxtYW1zX3VzZXJfcXVlcnkoKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwgJGdpZCApOwogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwoKICAgICAgICAkdXNlcnMgPSBbXTsKICAgICAgICB3aGlsZSggISRycy0+RU9GICkgewogICAgICAgICAgICAkb25ldXNlciA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkdXNlcnNbJG9uZXVzZXJbJ2lkJ11dID0gJG9uZXVzZXJbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR1c2VyczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyX2V4cGlyeSgkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKCiAgICAgICAgJHJlcyA9IG51bGw7CiAgICAgICAgJHJlcyA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldEV4cGlyeURhdGUoJHVpZCk7CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1c2VyX2V4cGlyZWQoJHVpZCkKICAgIHsKICAgICAgICBpZiggZW1wdHkoJHVpZCkgKSByZXR1cm47CiAgICAgICAgaWYoICFpc19vYmplY3Qoc2VsZjo6X2dldF9tb2R1bGUoKSkgKSByZXR1cm47CgogICAgICAgICRyZXMgPSBzZWxmOjpfZ2V0X21vZHVsZSgpLT5Jc0FjY291bnRFeHBpcmVkKCR1aWQpOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJfcHJvcGVydGllcygkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdhJyk7CgogICAgICAgICAgICAkcmVzID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBFeGNlcHRpb24oJ2QnKTsKCiAgICAgICAgICAgICRyZXMyID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHJlcyBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJHJlczJbJG9uZVsndGl0bGUnXV0gPSAkb25lWydkYXRhJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRyZXMyOwogICAgICAgIH0KICAgICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyX3Byb3BlcnR5KCRwcm9wZXJ0eSwkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkcHJvcGVydHkgPSB0cmltKCRwcm9wZXJ0eSk7CiAgICAgICAgICAgIGlmKCAhJHByb3BlcnR5ICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJzAnKTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICkgJHVpZCA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkxvZ2dlZEluSWQoKTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ2EnKTsKCiAgICAgICAgICAgICR0bXAgPSBzZWxmOjpnZXRfdXNlcl9wcm9wZXJ0aWVzKCR1aWQpOwogICAgICAgICAgICBpZiggaXNzZXQoJHRtcFskcHJvcGVydHldKSApIHJldHVybiAkdG1wWyRwcm9wZXJ0eV07CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9kcm9wZG93bl90ZXh0KCRwcm9wbmFtZSwkcHJvcHZhbHVlKQogICAgewogICAgICAgICRyZXMgPSBudWxsOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggIWlzX29iamVjdChzZWxmOjpfZ2V0X21vZHVsZSgpKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2EnKTsKICAgICAgICAgICAgaWYoIHNlbGY6OiRfcHJvcGVydGllcyA9PSBudWxsICkgewogICAgICAgICAgICAgICAgc2VsZjo6JF9wcm9wZXJ0aWVzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR0bXAgPSBzZWxmOjpfZ2V0X21vZHVsZSgpLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoICRvbmVbJ3R5cGUnXSA9PSA0IHx8ICRvbmVbJ3R5cGUnXSA9PSA1ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wMiA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldFNlbGVjdE9wdGlvbnMoJG9uZVsnbmFtZSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9uZVsnb3B0aW9ucyddID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHRtcDIgYXMgJGsgPT4gJHYgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb25lWydvcHRpb25zJ11bJHZdID0gJGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc2VsZjo6JF9wcm9wZXJ0aWVzWyRvbmVbJ25hbWUnXV0gPSAkb25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfcHJvcGVydGllc1skcHJvcG5hbWVdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2InKTsKCiAgICAgICAgICAgIGlmKCAoc2VsZjo6JF9wcm9wZXJ0aWVzWyRwcm9wbmFtZV1bJ3R5cGUnXSAhPSA0ICYmIHNlbGY6OiRfcHJvcGVydGllc1skcHJvcG5hbWVdWyd0eXBlJ10gIT0gNSkgfHwKICAgICAgICAgICAgICAgICFpc3NldChzZWxmOjokX3Byb3BlcnRpZXNbJHByb3BuYW1lXVsnb3B0aW9ucyddKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2MnKTsKCiAgICAgICAgICAgIGlmKCAhaXNzZXQoc2VsZjo6JF9wcm9wZXJ0aWVzWyRwcm9wbmFtZV1bJ29wdGlvbnMnXVskcHJvcHZhbHVlXSkgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdkJyk7CgogICAgICAgICAgICAkcmVzID0gc2VsZjo6JF9wcm9wZXJ0aWVzWyRwcm9wbmFtZV1bJ29wdGlvbnMnXVskcHJvcHZhbHVlXTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbXVsdGlzZWxlY3RfdGV4dCgkcHJvcG5hbWUsJHByb3B2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gZXhwbG9kZSgnLCcsJHByb3B2YWx1ZSk7CiAgICAgICAgJHJlcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHZhbHVlcyBhcyAkb25lICkgewogICAgICAgICAgICAkcmVzW10gPSBzZWxmOjpnZXRfZHJvcGRvd25fdGV4dCgkcHJvcG5hbWUsJG9uZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2dyb3VwX2xpc3QoKQogICAgewogICAgICAgICRsaXN0ID0gYXJyYXlfZmxpcChzZWxmOjpfZ2V0X21vZHVsZSgpLT5HZXRHcm91cExpc3QoKSk7CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJfZ3JvdXBzKCR1aWQ9bnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKCiAgICAgICAgJGdyb3VwcyA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAgICAgJGducyA9IGFycmF5KCk7CiAgICAgICAgJGdpZHMgPSBhcnJheSgpOwogICAgICAgIGlmKCAkZ3JvdXBzICE9PSBmYWxzZSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkZ2lkICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9ICRnaWRbJ2dyb3VwaWQnXTsKICAgICAgICAgICAgICAgICRnbnNbJGdpZFsnZ3JvdXBpZCddXSA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldEdyb3VwTmFtZSgkZ2lkWydncm91cGlkJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZ25zOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfdXNlcl9tZW1iZXJvZigkZ3JvdXBzLCR1aWQ9bnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKCiAgICAgICAgaWYoICFpc19hcnJheSgkZ3JvdXBzKSApICRncm91cHMgPSBleHBsb2RlKCcsJywkZ3JvdXBzKTsKICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRncnAgKSB7CiAgICAgICAgICAgICRncnAgPSB0cmltKCRncnApOwogICAgICAgICAgICBpZiggISRncnAgKSBjb250aW51ZTsKICAgICAgICAgICAgJHRtcFtdID0gJGdycDsKICAgICAgICB9CiAgICAgICAgaWYoICFjb3VudCgkdG1wKSApIHJldHVybjsKCiAgICAgICAgJGdyb3VwcyA9IHNlbGY6OmdldF91c2VyX2dyb3VwcygkdWlkKTsKICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgIGlmKCBpbl9hcnJheSgkb25lLCRncm91cHMpICkgcmV0dXJuIFRSVUU7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJlbG9hZF91c2VycygkdWlkX2xpc3QsJGRlZXAgPSBGQUxTRSkKICAgIHsKICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHVpZF9saXN0LCRkZWVwKTsKICAgIH0KfQoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_smarty_plugins.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc19zbWFydHlfcGx1Z2lucwp7CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hbXNfdXNlcl9vcHRpb25zKCRwYXJhbXMsICR0ZW1wbGF0ZSkKICAgIHsKICAgICAgICAkc2VsZWN0ZWQgPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdzZWxlY3RlZCcpOwogICAgICAgICRub3RkaXNhYmxlZCA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdub3RkaXNhYmxlZCcpOwogICAgICAgICRub3RleHBpcmVkID0geHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ25vdGV4cGlyZWQnKTsKICAgICAgICAkZ3JvdXAgPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdncm91cCcpOwogICAgICAgICR1c2VfdXNlcmlkcyA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCd1c2VfdXNlcmlkcycpOwoKICAgICAgICAvLyBnZXQgYSBsaXN0IG9mIGFsbCBvZiB0aGUgdXNlcnMgbWF0Y2hpbmcgdGhlIGNyaXRlcmlhCiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeTsKICAgICAgICBpZiggJGdyb3VwICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVAsICRncm91cCApOwogICAgICAgIGlmKCAkbm90ZXhwaXJlZCApICRxdWVyeS0+YWRkX2FuZF9vcHQoIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEVYUElSRUQgKTsKICAgICAgICBpZiggJG5vdGRpc2FibGVkICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTk9URElTQUJMRUQgKTsKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICBpZiggISRycyB8fCAhJHJzLT5nZXRfZm91bmRfcm93cygpICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkc2VsZm10ID0gJzxvcHRpb24gdmFsdWU9IiVzIiBzZWxlY3RlZD4lczwvb3B0aW9uPicuIlxuIjsKICAgICAgICAkZmZtdCA9ICc8b3B0aW9uIHZhbHVlPSIlcyI+JXM8L29wdGlvbj4nLiJcbiI7CiAgICAgICAgd2hpbGUoICRycyAmJiAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgJHJlYyA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkdmFsID0gJHJlY1sndXNlcm5hbWUnXTsKICAgICAgICAgICAgaWYoICR1c2VfdXNlcmlkcyApICR2YWwgPSAkcmVjWydpZCddOwogICAgICAgICAgICAkdXNlcm5hbWUgPSAkcmVjWyd1c2VybmFtZSddOwogICAgICAgICAgICBpZiggJHNlbGVjdGVkICE9ICR2YWwgKSB7CiAgICAgICAgICAgICAgICAkb3V0IC49IHNwcmludGYoJGZmbXQsJHZhbCwkdXNlcm5hbWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG91dCAuPSBzcHJpbnRmKCRzZWxmbXQsJHZhbCwkdXNlcm5hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYW1zX3Byb3RlY3QoJHBhcmFtcywkY29udGVudCwmJHNtYXJ0eSwkcmVwZWF0KQogICAgewogICAgICAgIGlmKCAhJGNvbnRlbnQgKSByZXR1cm47CgogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICEkbWFtcyApIHJldHVybjsKICAgICAgICBpZiggISgkdWlkID0gJG1hbXMtPkxvZ2dlZEluSWQoKSkgKSByZXR1cm47CgogICAgICAgICRncm91cHMgPSBudWxsOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydncm91cCddKSApIHsKICAgICAgICAgICAgJGdyb3VwcyA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2dyb3VwJ10pOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICYkZ3JwICkgewogICAgICAgICAgICAgICAgJGdycCA9IHRyaW0oJGdycCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snZ3JvdXBzJ10pICkgewogICAgICAgICAgICAkZ3JvdXBzID0gZXhwbG9kZSgnLCcsJHBhcmFtc1snZ3JvdXBzJ10pOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICYkZ3JwICkgewogICAgICAgICAgICAgICAgJGdycCA9IHRyaW0oJGdycCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAhaXNfYXJyYXkoJGdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHsKICAgICAgICAgICAgLy8gZW1wdHkgZ3JvdXBzIGFycmF5IHNwZWNpZmllZC4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gY29udmVydCBncm91cCBuYW1lcyB0byBpZHMKICAgICAgICAkZ3JvdXBsaXN0ID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwogICAgICAgICRnaWRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG5hbWUpIHsKICAgICAgICAgICAgaWYoIChpbnQpJG5hbWUgPiAwICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9IChpbnQpJG5hbWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGdyb3VwbGlzdFskbmFtZV0pICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9ICRncm91cGxpc3RbJG5hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAhY291bnQoJGdpZHMpICkgcmV0dXJuOwoKICAgICAgICAkbWVtYmVyZ3JvdXBzID0gJG1hbXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJG1lbWJlcmdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHsKICAgICAgICAgICAgLy8gZ3JvdXBzIHNwZWNpZmllZCwgYnV0IHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncm91cHMuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEZJTkFMIHRlc3QsIGlmIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mIGFueSBvZiB0aGVzZSBncm91cHMsIG91dHB1dCB0aGUgY29udGVudC4KICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkbWVtYmVyZ3JvdXBzKTsgJGkrKyApIHsKICAgICAgICAgICAgJGdpZCA9ICRtZW1iZXJncm91cHNbJGldWydncm91cGlkJ107CiAgICAgICAgICAgIGlmKCBpbl9hcnJheSgkZ2lkLCRnaWRzKSApIHJldHVybiAkY29udGVudDsKICAgICAgICB9CgogICAgICAgIC8vIHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBvZiB0aGUgc3BlY2lmaWVkIGdyb3Vwcy4KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_std_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19zdGRfY29uc3VtZXIgZXh0ZW5kcyBtYW1zX3B1cmVfY29uc3VtZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGlzX2F1dGhlbnRpY2F0ZWQoKQogICAgewogICAgICAgICRyZXMgPSAkdGhpcy0+Z2V0X3VuaXF1ZV9pZGVudGlmaWVyKCk7CiAgICAgICAgaWYoICRyZXMgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXBhYmlsaXRpZXMoKQogICAgewogICAgICAgICRyZXMgPSBhcnJheSgpOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfVVNFU1REQ0hBTkdFU0VUVElOR1M7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9DSEFOR0VQQVNTV0Q7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9MSVNUR1JPVVBTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfRURJVEdST1VQUzsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfTElTVFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfRURJVFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfTElTVEdST1VQUzsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUDsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0RFRkFVTFRHUk9VUFM7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9VU0VSTkFNRTsKICAgICAgICAkbW9kID0geHRfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgIGlmKCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19jaGFuZ2V1c2VybmFtZScpICkgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9DSEFOR0VVU0VSTkFNRTsKCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb2dpbl9kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcykKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIC8vIHRvZG8KICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jaGFuZ2VzZXR0aW5nc19kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcykKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcl9pbmZvKCkKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgc3RhY2tfdHJhY2UoKTsKICAgICAgICBkaWUoJ25vdCBpbXBsZW1lbnRlZCcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdW5pcXVlX2lkZW50aWZpZXIoKQogICAgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRtYW5pcCA9ICRtb2R1bGUtPkdldE1hbmlwdWxhdG9yKCk7CiAgICAgICAgcmV0dXJuICRtYW5pcC0+X3N0ZF9Mb2dnZWRpbklkKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cF9saXN0KCR3aXRoX2NvdW50ID0gRkFMU0UpCiAgICB7CiAgICAgICAgLy8gdGhpcyBtZXRob2QgZG9lc24ndCBleGFjdGx5IGxpc3RlbiB0byB0aGUgZG9jcy4KICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19ncm91cHMnOwogICAgICAgIGlmKCAkd2l0aF9jb3VudCApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBnLiosY291bnQoYi51c2VyaWQpIEFTIGNvdW50IEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2dyb3VwcyBnCiAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2JlbG9uZ3MgYgogICAgICAgICAgICAgICAgT04gZy5pZCA9IGIuZ3JvdXBpZAogICAgICAgICAgICAgICAgR1JPVVAgQlkgZy5pZCc7CiAgICAgICAgfQogICAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgaWYoIGlzX2FycmF5KCRkYnIpICYmIGNvdW50KCRkYnIpICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGRiciBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJHRtcFskb25lWydpZCddXSA9ICRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICR0bXA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZGJyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3JvdXBfbWVtYmVyc2hpcCgkdXNlcmlkKQogICAgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJHEgPSAiU0VMRUNUIGdyb3VwaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQ9PyI7CiAgICAgICAgJGRiciA9ICRkYi0+R2V0Q29sKCRxLGFycmF5KCR1c2VyaWQpKTsKICAgICAgICByZXR1cm4gJGRicjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RlZmF1bHRfZ3JvdXBzKCkKICAgIHsKICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdG1wID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwogICAgICAgIGlmKCAoaW50KSR0bXAgPiAwICkgcmV0dXJuIGFycmF5KCR0bXApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJGlkZW50aWZpZXIgPSBudWxsKQogICAgewogICAgICAgIGlmKCAhJGlkZW50aWZpZXIgKSAkaWRlbnRpZmllciA9ICR0aGlzLT5nZXRfdW5pcXVlX2lkZW50aWZpZXIoKTsKICAgICAgICAkcm93ID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkaWRlbnRpZmllcik7CiAgICAgICAgaWYoICEkcm93ICkgcmV0dXJuIEZBTFNFOwogICAgICAgIHJldHVybiAkcm93Wyd1c2VybmFtZSddOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWVfcHJvbXB0KCkKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICkgcmV0dXJuICRtYW1zLT5MYW5nKCdwcm9tcHRfZW1haWwnKTsKICAgICAgICByZXR1cm4gJG1hbXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpOwogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfdXNlcm5hbWUoJHVzZXJuYW1lLCRjaGVja19lbWFpbF9hZGRyID0gRkFMU0UsJHVpZCA9IC0xKQogICAgewogICAgICAgIC8vIGEgdXNlcm5hbWUgaXMgdmFsaWQsIGlmIGl0J3MgbGVuZ3RoIGlzCiAgICAgICAgLy8gd2l0aGluIGNlcnRhaW4gcmFuZ2VzLCBhbmQgaXQgY29udGFpbnMKICAgICAgICAvLyBvbmx5IGFscGhhbnVtZXJpY3MKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkbWlubGVuID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywgNCApOwogICAgICAgICRtYXhsZW4gPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLCAyMCApOwogICAgICAgIGlmKCBzdHJsZW4oICR1c2VybmFtZSApIDwgJG1pbmxlbiB8fCBzdHJsZW4oICR1c2VybmFtZSApID4gJG1heGxlbiApIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkgewogICAgICAgICAgICAkdGVzdCA9ICRtb2R1bGUtPklzVmFsaWRFbWFpbEFkZHJlc3MoJHVzZXJuYW1lLCR1aWQsJGNoZWNrX2VtYWlsX2FkZHIpOwogICAgICAgICAgICBpZiAoJHRlc3RbMF0gPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICFwcmVnX21hdGNoKCAnL15bYS16QS1aMC05XF9cLVxzXC5cQFwrXSokLycsICR1c2VybmFtZSApICkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLyoqCiAqIHRoaXMgaXMgYW4gaW50ZXJuYWwgY2xhc3MgLi4uZG8gbm8gdXNlCiAqLwoKZmluYWwgY2xhc3MgbWFtc191c2VyX2NhY2hlCnsKICBwcml2YXRlIHN0YXRpYyAkX3VzZXJzID0gYXJyYXkoKTsKICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgLyoqCiAgICogR2V0IHVzZXIgaW5mb3JtYXRpb24gZm9yIGEgdWlkCiAgICogd2lsbCByZXR1cm4gZGVlcCBpbmZvcm1hdGlvbiBpZiBhbHJlZHkgbG9hZGVkCiAgICogd2lsbCBub3QgbG9hZCBhbnkgaW5mbwogICAqKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyX25vbG9hZCgkdWlkKQogIHsKICAgICR1aWQgPSAoaW50KSR1aWQ7CiAgICBpZiggJHVpZCA8PSAwICkgcmV0dXJuOwogICAgaWYoICFpc3NldChzZWxmOjokX3VzZXJzWyR1aWRdKSApIHJldHVybjsKCiAgICByZXR1cm4gc2VsZjo6JF91c2Vyc1skdWlkXTsKICB9CgogIC8qKgogICAqIEdldCB1c2VyIGluZm9ybWF0aW9uIGZvciBhIHVpZAogICAqIHdpbGwgcmV0dXJuIGRlZXAgaW5mbyBpZiBpdCBpcyBhbHJlYWR5IGxvYWRlZCwgZXZlbiBpZiAkZGVlcCA9IEZBTFNFCiAgICogd2lsbCBsb2FkIHRoZSB1c2VyIGlmIG5vdCBpbiBtZW1vcnkKICAgKiovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcigkdWlkLCRkZWVwID0gRkFMU0UpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm47CiAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF0pIHx8ICgkZGVlcCAmJiAhaXNzZXQoc2VsZjo6JF91c2Vyc1skdWlkXVsnZnByb3BzJ10pKSApIHsKICAgICAgICBzZWxmOjpsb2FkX3VzZXJzKCBbICR1aWQgXSwkZGVlcCk7CiAgICB9CiAgICByZXR1cm4gc2VsZjo6Z2V0X3VzZXJfbm9sb2FkKCR1aWQpOwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXRfdXNlcigkdWluZm8pCiAgewogICAgaWYoICFpc19hcnJheSgkdWluZm8pICkgcmV0dXJuIEZBTFNFOwogICAgaWYoICFpc3NldCgkdWluZm9bJ2lkJ10pICkgcmV0dXJuIEZBTFNFOwogICAgJHVpZCA9IChpbnQpJHVpbmZvWydpZCddOwogICAgaWYoICR1aWQgPD0gMCApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoJHVpbmZvWyd1c2VybmFtZSddKSApIHJldHVybiBGQUxTRTsKCiAgICBzZWxmOjokX3VzZXJzWyR1aWRdID0gJHVpbmZvOwogICAgcmV0dXJuIFRSVUU7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldF9uZXdfdXNlcigkdWluZm8pCiAgewogICAgaWYoICFpc19hcnJheSgkdWluZm8pICkgcmV0dXJuIEZBTFNFOwogICAgaWYoICFpc3NldCgkdWluZm9bJ2lkJ10pICkgcmV0dXJuIEZBTFNFOwogICAgJHVpZCA9IChpbnQpJHVpbmZvWydpZCddOwogICAgaWYoICR1aWQgPD0gMCApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoJHVpbmZvWyd1c2VybmFtZSddKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCBpc3NldChzZWxmOjokX3VzZXJzWyR1aWRdKSApIHJldHVybiBGQUxTRTsKCiAgICBzZWxmOjokX3VzZXJzWyR1aW5mb1snaWQnXV0gPSAkdWluZm87CiAgICByZXR1cm4gVFJVRTsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsX3VzZXIoJHVpZCkKICB7CiAgICAkdWlkID0gKGludCkkdWlkOwogICAgaWYoICR1aWQgPD0gMCApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skdWlkXSkgKSByZXR1cm4gRkFMU0U7CgogICAgdW5zZXQoc2VsZjo6JF91c2Vyc1skdWlkXSk7CiAgICByZXR1cm4gVFJVRTsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2xlYXJfYWxsKCkKICB7CiAgICBzZWxmOjokX3VzZXJzID0gYXJyYXkoKTsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZF91c2VycygkdWlkX2xpc3QsJGRlZXAgPSBGQUxTRSkKICB7CiAgICAgIGlmKCAhaXNfYXJyYXkoJHVpZF9saXN0KSB8fCBjb3VudCgkdWlkX2xpc3QpID09IDAgKSByZXR1cm47CgogICAgICAkbmVlZCA9IGFycmF5KCk7CiAgICAgICRuZWVkX3Byb3BzID0gYXJyYXkoKTsKICAgICAgZm9yZWFjaCggJHVpZF9saXN0IGFzICRvbmUgKSB7CiAgICAgICAgICAkb25lID0gKGludCkkb25lOwogICAgICAgICAgaWYoICRvbmUgPD0gMCApIGNvbnRpbnVlOwoKICAgICAgICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skb25lXSkgKSAkbmVlZFtdID0gJG9uZTsKICAgICAgICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skb25lXVsnZnByb3BzJ10pICkgJG5lZWRfcHJvcHNbXSA9ICRvbmU7CiAgICAgIH0KCiAgICAgICRuZWVkID0gYXJyYXlfdW5pcXVlKCRuZWVkKTsKICAgICAgJG5lZWRfcHJvcHMgPSBhcnJheV91bmlxdWUoJG5lZWRfcHJvcHMpOwogICAgICBhc29ydCgkbmVlZCk7CiAgICAgIGFzb3J0KCRuZWVkX3Byb3BzKTsKCiAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgIGlmKCBjb3VudCgkbmVlZCkgKSB7CiAgICAgICAgICAvLyBnZXQgdGhlIHVzZXIgaW5mbwogICAgICAgICAgJHVxdWVyeSA9ICdTRUxFQ1QgdS4qLGNvdW50KGxpLnVzZXJpZCkgQVMgbG9nZ2VkaW4gRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgdQogICAgICAgICAgICAgICAgIExFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfbG9nZ2VkaW4gbGkgT04gdS5pZCA9IGxpLnVzZXJpZAogICAgICAgICAgICAgICAgIFdIRVJFIHUuaWQgSU4gKCc7CiAgICAgICAgICAkdXF1ZXJ5IC49IGltcGxvZGUoJywnLCRuZWVkKS4nKSBHUk9VUCBCWSB1LmlkIE9SREVSIEJZIHUuaWQnOwogICAgICAgICAgJHVpbmZvID0gJGRiLT5HZXRBcnJheSgkdXF1ZXJ5KTsKICAgICAgICAgIGZvcmVhY2goJHVpbmZvIGFzICRyZWMpIHsKICAgICAgICAgICAgICBzZWxmOjokX3VzZXJzWyRyZWNbJ2lkJ11dID0gJHJlYzsKICAgICAgICAgIH0KICAgICAgfQoKICAgIGlmKCAkZGVlcCAmJiBjb3VudCgkbmVlZF9wcm9wcykgKSB7CiAgICAgICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgICAgICRkZWZucyA9ICRtb2QtPkdldFByb3BlcnR5RGVmbnMoKTsKCiAgICAgICAgJHBxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIFdIRVJFIHVzZXJpZCBJTiAoJzsKICAgICAgICAkcHF1ZXJ5IC49IGltcGxvZGUoJywnLCRuZWVkX3Byb3BzKS4nKSBPUkRFUiBCWSB1c2VyaWQsdGl0bGUnOwogICAgICAgICRwaW5mbyA9ICRkYi0+R2V0QXJyYXkoJHBxdWVyeSk7CgogICAgICAgICRwcmV2X3VpZCA9IG51bGw7CiAgICAgICAgJGZwcm9wcyA9IG51bGw7CiAgICAgICAgZm9yZWFjaCgkcGluZm8gYXMgJHJlYykgewogICAgICAgICAgICBpZiggIWVtcHR5KCRmcHJvcHMpICYmICRyZWNbJ3VzZXJpZCddICE9ICRwcmV2X3VpZCAmJiAkcHJldl91aWQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHR1aWQgPSAkZnByb3BzWzBdWyd1c2VyaWQnXTsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skdHVpZF0pICkgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbignTG9hZGVkIHByb3BlcnRpZXMgZm9yIHVzZXIsIGJ1dCBubyB1c2VyIGxvYWRlZCcpOwogICAgICAgICAgICAgICAgc2VsZjo6JF91c2Vyc1skdHVpZF1bJ2Zwcm9wcyddID0gJGZwcm9wczsKICAgICAgICAgICAgICAgICRmcHJvcHMgPSBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkZGVmbnNbJHJlY1sndGl0bGUnXV1bJ2VuY3J5cHQnXSApIHsKICAgICAgICAgICAgICAgICRyZWNbJ2RhdGEnXSA9ICRtb2QtPkRlY3J5cHRVc2VyRGF0YSgkcmVjWyd1c2VyaWQnXSwkcmVjWydkYXRhJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmcHJvcHNbXSA9ICRyZWM7CiAgICAgICAgICAgICRwcmV2X3VpZCA9ICRyZWNbJ3VzZXJpZCddOwogICAgICAgIH0KICAgICAgICBpZiggIWVtcHR5KCRmcHJvcHMpICkgewogICAgICAgICAgICAkdHVpZCA9ICRmcHJvcHNbMF1bJ3VzZXJpZCddOwogICAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHR1aWRdKSApIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJ0xvYWRlZCBwcm9wZXJ0aWVzIGZvciB1c2VyLCBidXQgbm8gdXNlciBsb2FkZWQnKTsKICAgICAgICAgICAgc2VsZjo6JF91c2Vyc1skdHVpZF1bJ2Zwcm9wcyddID0gJGZwcm9wczsKICAgICAgICB9CiAgICB9CiAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc191c2VyX3F1ZXJ5X29wdAp7CiAgICBjb25zdCBNQVRDSF9VU0VSSUQgICAgICA9ICcqdXNlcmlkKic7CiAgICBjb25zdCBNQVRDSF9VU0VSTkFNRSAgICA9ICcqdXNlcm5hbWUqJzsKICAgIGNvbnN0IE1BVENIX1VTRVJOQU1FX1JFID0gJyp1c2VybmFtZS1yZSonOwogICAgY29uc3QgTUFUQ0hfUEFTU1dPUkQgICAgPSAnKnBhc3N3b3JkKic7CiAgICBjb25zdCBNQVRDSF9FWFBJUkVTX0xUICA9ICcqZXhwaXJlcy1sdConOwogICAgY29uc3QgTUFUQ0hfTk9URVhQSVJFRCAgPSAnKm5vdGV4cGlyZWQqJzsKICAgIGNvbnN0IE1BVENIX05PVERJU0FCTEVEID0gJypub3RkaXNhYmxlZConOwogICAgY29uc3QgTUFUQ0hfRElTQUJMRUQgICAgPSAnKmRpc2FibGVkKic7CiAgICBjb25zdCBNQVRDSF9NVVNUVkFMSURBVEUgPSAnKm11c3RfdmFsaWRhdGUqJzsKICAgIGNvbnN0IE1BVENIX0dST1VQICAgICAgID0gJypncm91cConOwogICAgY29uc3QgTUFUQ0hfR1JPVVBJRCAgICAgPSAnKmdpZConOwogICAgY29uc3QgTUFUQ0hfUFJPUEVSVFkgICAgPSAnKnByb3BlcnR5Kic7CiAgICBjb25zdCBNQVRDSF9QUk9QRVJUWV9SRSA9ICcqcHJvcGVydHktcmUqJzsKICAgIGNvbnN0IE1BVENIX1VTRVJMSVNUICAgID0gJyp1c2VybGlzdConOwogICAgY29uc3QgTUFUQ0hfVVNFUk5BTUVMSVNUID0gJyp1c2VybmFtZWxpc3QqJzsKICAgIGNvbnN0IE1BVENIX0xPR0dFRElOICAgID0gJypsb2dnZWRpbionOwogICAgY29uc3QgTUFUQ0hfQ1JFQVRFRF9HRSAgPSAnKmNyZWF0ZWRfZ2UqJzsKICAgIGNvbnN0IE1BVENIX0NSRUFURURfTFQgID0gJypjcmVhdGVkX2x0Kic7CiAgICBjb25zdCBNQVRDSF9OT1RIQVNQUk9QRVJUWSA9ICcqbm90aGFzcHJvcGVydHkqJzsKCiAgICBwcml2YXRlICRfdHlwZTsKICAgIHByaXZhdGUgJF9leHByOwogICAgcHJpdmF0ZSAkX29wdDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHR5cGUsJGV4cHIgPSBudWxsLCRvcHQgPSBudWxsKQogICAgewogICAgICAgIHN3aXRjaCgkdHlwZSkgewogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfVVNFUklEOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfVVNFUk5BTUU6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSTkFNRV9SRToKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX1BBU1NXT1JEOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfRVhQSVJFU19MVDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0NSRUFURURfR0U6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9DUkVBVEVEX0xUOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfR1JPVVA6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9HUk9VUElEOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfVVNFUkxJU1Q6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSTkFNRUxJU1Q6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9OT1RIQVNQUk9QRVJUWToKICAgICAgICAgICAgaWYoIGVtcHR5KCRleHByKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUgZm9yIGV4cHInKTsKICAgICAgICAgICAgJHRoaXMtPl90eXBlID0gJHR5cGU7CiAgICAgICAgICAgICR0aGlzLT5fZXhwciA9ICRleHByOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9NVVNUVkFMSURBVEU7CiAgICAgICAgICAgIC8vIGFsbG93cyBhbiBvcHRpb25hbCBleHByZXNzaW9uIChlaXRoZXIgMCBvciAxKQogICAgICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgaWYoICFlbXB0eSgkZXhwcikgKSAkdGhpcy0+X2V4cHIgPSAoaW50KSAkZXhwcjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfTE9HR0VESU46CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9OT1RFWFBJUkVEOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfTk9URElTQUJMRUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9ESVNBQkxFRDoKICAgICAgICAgICAgJHRoaXMtPl90eXBlID0gJHR5cGU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX1BST1BFUlRZX1JFOgogICAgICAgICAgICBpZiggZW1wdHkoJGV4cHIpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbignaW52YWxpZCB2YWx1ZSBmb3IgZXhwcicpOwogICAgICAgICAgICBpZiggZW1wdHkoJG9wdCkgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdpbnZhbGlkIG9wdCB2YWx1ZScpOwogICAgICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgJHRoaXMtPl9leHByID0gJGV4cHI7CiAgICAgICAgICAgICR0aGlzLT5fb3B0ID0gJG9wdDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfUFJPUEVSVFk6CiAgICAgICAgICAgIGlmKCBlbXB0eSgkZXhwcikgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdpbnZhbGlkIHZhbHVlIGZvciBleHByJyk7CiAgICAgICAgICAgICR0aGlzLT5fdHlwZSA9ICR0eXBlOwogICAgICAgICAgICAkdGhpcy0+X2V4cHIgPSAkZXhwcjsKICAgICAgICAgICAgJHRoaXMtPl9vcHQgPSAkb3B0OwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignaW52YWxpZCBtYXRjaCBvcHRpb24nKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF90eXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl90eXBlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZXhwcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZXhwcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X29wdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fb3B0OwogICAgfQp9IC8vIGNsYXNzCgoKY2xhc3MgbWFtc191c2VyX3F1ZXJ5CnsKICAgIGNvbnN0IFJFU1VMVF9UWVBFX0lEID0gJyppZConOwogICAgY29uc3QgUkVTVUxUX1RZUEVfQ09VTlQgPSAnKmNvdW50Kic7CiAgICBjb25zdCBSRVNVTFRfVFlQRV9MSVNUID0gJypsaXN0Kic7CiAgICBjb25zdCBSRVNVTFRfVFlQRV9GVUxMID0gJypmdWxsKic7CiAgICBjb25zdCBSRVNVTFRfU09SVE9SREVSX0FTQyA9ICcqYXNjKic7CiAgICBjb25zdCBSRVNVTFRfU09SVE9SREVSX0RFU0MgPSAnKmRlc2MqJzsKICAgIGNvbnN0IFJFU1VMVF9TT1JUQllfVVNFUk5BTUUgPSAnKnVzZXJuYW1lKic7CiAgICBjb25zdCBSRVNVTFRfU09SVEJZX0NSRUFURUQgPSAnKmNyZWF0ZWRhdGUqJzsKICAgIGNvbnN0IFJFU1VMVF9TT1JUQllfRVhQSVJFUyA9ICcqZXhwaXJlcyonOwoKICAgIHByaXZhdGUgJF9hbmRfb3B0cyAgID0gYXJyYXkoKTsKICAgIHByaXZhdGUgJF9ncm91cHMgPSAnJzsKICAgIHByaXZhdGUgJF9wYWdlbGltaXQgPSAxMDAwMDA7CiAgICBwcml2YXRlICRfb2Zmc2V0ID0gMDsKICAgIHByaXZhdGUgJF9yZXN1bHRfdHlwZSA9IHNlbGY6OlJFU1VMVF9UWVBFX0lEOwogICAgcHJpdmF0ZSAkX3NvcnRieSA9IHNlbGY6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUU7CiAgICBwcml2YXRlICRfc29ydG9yZGVyID0gc2VsZjo6UkVTVUxUX1NPUlRPUkRFUl9BU0M7CiAgICBwcml2YXRlICRfZGVlcCA9IEZBTFNFOwogICAgcHJpdmF0ZSAkX3dlYnJlYWR5ID0gRkFMU0U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAvLyBub3RoaW5nIGhlcmUuCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9wYWdlbGltaXQoJHBhZ2VsaW1pdCkKICAgIHsKICAgICAgICAkcGFnZWxpbWl0ID0gKGludCkkcGFnZWxpbWl0OwogICAgICAgICRwYWdlbGltaXQgPSBtYXgoMSwkcGFnZWxpbWl0KTsKICAgICAgICAkdGhpcy0+X3BhZ2VsaW1pdCA9ICRwYWdlbGltaXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wYWdlbGltaXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X3BhZ2VsaW1pdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X29mZnNldCgkbikKICAgIHsKICAgICAgICAkdGhpcy0+X29mZnNldCA9IG1heCgwLChpbnQpJG4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfb2Zmc2V0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9vZmZzZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kZWVwKCRmbGFnID0gVFJVRSkKICAgIHsKICAgICAgICAkdGhpcy0+X2RlZXAgPSAoYm9vbCkkZmxhZzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RlZXAoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2RlZXA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF93ZWJyZWFkeSgkZmxhZyA9IFRSVUUpCiAgICB7CiAgICAgICAgJHRoaXMtPl93ZWJyZWFkeSA9IChib29sKSRmbGFnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfd2VicmVhZHkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X3dlYnJlYWR5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcmVzdWx0X3R5cGUoJHR5cGUpCiAgICB7CiAgICAgICAgLy8gY3VycmVudGx5IG5vdCB1c2VkIGluIHRoZSByZXN1bHRzZXQsIG1heSByZW1vdmUKICAgICAgICBzd2l0Y2goICR0eXBlICkgewogICAgICAgIGNhc2Ugc2VsZjo6UkVTVUxUX1RZUEVfSUQ6CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfVFlQRV9DT1VOVDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9UWVBFX0xJU1Q6CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfVFlQRV9GVUxMOgogICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdF90eXBlID0gJHR5cGU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgQ21zRXhjZXB0aW9uKCdJbnZhbGlkIHJlc3VsdCB0eXBlICcuJHR5cGUpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Jlc3VsdF90eXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9yZXN1bHRfdHlwZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3NvcnRieSgkdmFsKQogICAgewogICAgICAgIHN3aXRjaCggJHZhbCApIHsKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUU6CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfU09SVEJZX0NSRUFURUQ6CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfU09SVEJZX0VYUElSRVM6CiAgICAgICAgICAgICR0aGlzLT5fc29ydGJ5ID0gJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJ0ludmFsaWQgc29ydGJ5IHZhbHVlOiAnLiR2YWwpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3NvcnRieSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fc29ydGJ5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfc29ydG9yZGVyKCR2YWwpCiAgICB7CiAgICAgICAgc3dpdGNoKCAkdmFsICkgewogICAgICAgIGNhc2Ugc2VsZjo6UkVTVUxUX1NPUlRPUkRFUl9BU0M6CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfU09SVE9SREVSX0RFU0M6CiAgICAgICAgICAgICR0aGlzLT5fc29ydG9yZGVyID0gJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJ0ludmFsaWQgc29ydG9yZGVyIHZhbHVlOiAnLiR2YWwpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3NvcnRvcmRlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fc29ydG9yZGVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfYW5kX29wdCgkdHlwZSwkdmFsdWUgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5fYW5kX29wdHNbXSA9IG5ldyBtYW1zX3VzZXJfcXVlcnlfb3B0KCR0eXBlLCR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9hbmRfb3B0X29iaihtYW1zX3VzZXJfcXVlcnlfb3B0JiAkb3B0KQogICAgewogICAgICAgICR0aGlzLT5fYW5kX29wdHNbXSA9ICRvcHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50X29wdHMoKQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+X2FuZF9vcHRzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X29wdHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2FuZF9vcHRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiAmZXhlY3V0ZSgpCiAgICB7CiAgICAgICAgJHJzID0gbmV3IG1hbXNfdXNlcl9xdWVyeV9yZXN1bHRzZXQoJHRoaXMpOwogICAgICAgIHJldHVybiAkcnM7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_query_resultset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc191c2VyX3F1ZXJ5X3Jlc3VsdHNldAp7CiAgICBwcml2YXRlICRfcXVlcnk7CiAgICBwcml2YXRlICRfZXhlY3V0ZWQ7CiAgICBwcml2YXRlICRfcnM7CiAgICBwcml2YXRlICRfZm91bmRfcm93czsKICAgIHByaXZhdGUgJF9ncm91cHM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KG1hbXNfdXNlcl9xdWVyeSAmJHF1ZXJ5KQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkgPSAkcXVlcnk7CiAgICAgICAgJHRoaXMtPl9leGVjdXRlKCRxdWVyeSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZ2V0X2dyb3VwcygpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2dyb3VwcykgKSB7CiAgICAgICAgICAgICRtYW1zID0geHRfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICAgICAgICAgJHRtcCA9ICRtYW1zLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZ3JvdXBzID0geHRfYXJyYXk6OnRvX2hhc2goJHRtcCwnZ3JvdXBuYW1lJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+X2dyb3VwczsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9leGVjdXRlKCkKICAgIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICR3aGVyZSAgPSBhcnJheSgpOwogICAgICAgICRxcGFybXMgPSBhcnJheSgpOwogICAgICAgICRqb2lucyAgPSBhcnJheSgpOwogICAgICAgICRqY291bnQgPSAwOwogICAgICAgICRoYXZpbmcgPSBudWxsOwoKICAgICAgICAkcXJlYyA9ICdTRUxFQ1QgU1FMX0NBTENfRk9VTkRfUk9XUyB1LiosY291bnQobGkudXNlcmlkKSBBUyBsb2dnZWRpbiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyB1JzsKICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2xvZ2dlZGluIGxpIE9OIHUuaWQgPSBsaS51c2VyaWQnOwoKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X3F1ZXJ5LT5nZXRfb3B0cygpIGFzICRvcHQgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJG9wdC0+Z2V0X3R5cGUoKSApIHsKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSSUQ6CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICd1LmlkID0gPyc7CiAgICAgICAgICAgICAgICAkcXBhcm1zW10gPSAoaW50KSAkb3B0LT5nZXRfZXhwcigpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1VTRVJOQU1FOgogICAgICAgICAgICAgICAgJHdoZXJlW10gID0gJ3UudXNlcm5hbWUgTElLRSA/JzsKICAgICAgICAgICAgICAgICRleHByID0gc3RyX3JlcGxhY2UoJyonLCclJywkb3B0LT5nZXRfZXhwcigpKTsKICAgICAgICAgICAgICAgICRleHByID0gc3RyX3JlcGxhY2UoJyUlJywnJScsJGV4cHIpOwogICAgICAgICAgICAgICAgJHFwYXJtc1tdID0gJGV4cHI7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfVVNFUk5BTUVfUkU6CiAgICAgICAgICAgICAgICAkd2hlcmVbXSAgPSAndS51c2VybmFtZSBSRUdFWFAgJy4kZGItPnFzdHIoJG9wdC0+Z2V0X2V4cHIoKSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfUEFTU1dPUkQ6CiAgICAgICAgICAgICAgICAkd2hlcmVbXSAgPSAndS5wYXNzd29yZCA9ID8nOwogICAgICAgICAgICAgICAgJHFwYXJtc1tdID0gJG9wdC0+Z2V0X2V4cHIoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RFWFBJUkVEOgogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+RGJUaW1lU3RhbXAodGltZSgpIC0gMzApOwogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAidS5leHBpcmVzID4geyR0bXB9IjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RESVNBQkxFRDoKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuZGlzYWJsZWQgPSAwIjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9ESVNBQkxFRDoKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuZGlzYWJsZWQgPSAxIjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9NVVNUVkFMSURBVEU6CiAgICAgICAgICAgICAgICAkZXhwciA9IChpbnQpICRvcHQtPmdldF9leHByKCk7CiAgICAgICAgICAgICAgICBpZiggZW1wdHkoJGV4cHIpICkgewogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUubXVzdF92YWxpZGF0ZSA9IDEiOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ1Lm11c3RfdmFsaWRhdGUgPSB7JGV4cHJ9IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9FWFBJUkVTX0xUOgogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+RGJUaW1lU3RhbXAoJG9wdC0+Z2V0X2V4cHIoKSk7CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ1LmV4cGlyZXMgPCB7JHRtcH0iOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0NSRUFURURfR0U6CiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5EYlRpbWVTdGFtcCgkb3B0LT5nZXRfZXhwcigpKTsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuY3JlYXRlZGF0ZSA+PSB7JHRtcH0iOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0NSRUFURURfTFQ6CiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5EYlRpbWVTdGFtcCgkb3B0LT5nZXRfZXhwcigpKTsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuY3JlYXRlZGF0ZSA8IHskdG1wfSI7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVA6CiAgICAgICAgICAgICAgICAkdG1wID0gJHRoaXMtPl9nZXRfZ3JvdXBzKCk7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCR0bXBbJG9wdC0+Z2V0X2V4cHIoKV0pICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfYmVsb25ncyBibCBPTiB1LmlkID0gYmwudXNlcmlkJzsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2JsLmdyb3VwaWQgPSA/JzsKICAgICAgICAgICAgICAgICRxcGFybXNbXSA9ICR0bXBbJG9wdC0+Z2V0X2V4cHIoKV1bJ2lkJ107CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTE9HR0VESU46CiAgICAgICAgICAgICAgICAkaGF2aW5nID0gJ2NvdW50KGxpLnVzZXJpZCkgPiAwJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUElEOgogICAgICAgICAgICAgICAgJGV4cHIgPSAkb3B0LT5nZXRfZXhwcigpOwogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRleHByKSApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCAkZXhwciBhcyAkb25lICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb25lID0gKGludCkkb25lOwogICAgICAgICAgICAgICAgICAgICAgICBpZiggJG9uZSA8IDEgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFpbl9hcnJheSgkb25lLCR0bXApICkgJHRtcFtdID0gJG9uZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoIGNvdW50KCR0bXApID09IDAgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyB2YWxpZCBncm91cCBpZHMgc3BlY2lmaWVkJyk7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19iZWxvbmdzIGJsIE9OIHUuaWQgPSBibC51c2VyaWQnOwogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2JsLmdyb3VwaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHRtcCkuJyknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19iZWxvbmdzIGJsIE9OIHUuaWQgPSBibC51c2VyaWQnOwogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2JsLmdyb3VwaWQgPSA/JzsKICAgICAgICAgICAgICAgICAgICAkcXBhcm1zW10gPSAkZXhwcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRUxJU1Q6CiAgICAgICAgICAgICAgICAkdG1wID0gJG9wdC0+Z2V0X2V4cHIoKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHRtcCkgKSAkdG1wID0gZXhwbG9kZSgnLCcsJHRtcCk7CiAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcDJbXSA9ICInIi50cmltKCRvbmUpLiInIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0bXAyID0gYXJyYXlfdW5pcXVlKCR0bXAyKTsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ3UudXNlcm5hbWUgSU4gKCcuaW1wbG9kZSgnLCcsJHRtcDIpLicpJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTElTVDoKICAgICAgICAgICAgICAgICR0bXAgPSAkb3B0LT5nZXRfZXhwcigpOwogICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkdG1wKSApICR0bXAgPSBleHBsb2RlKCcsJywkdG1wKTsKICAgICAgICAgICAgICAgICR0bXAyID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICBpZiggKGludCkkb25lIDwgMSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICR0bXAyW10gPSAoaW50KSRvbmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5X3VuaXF1ZSgkdG1wMik7CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICd1LmlkIElOICgnLmltcGxvZGUoJywnLCR0bXAyKS4nKSc7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfUFJPUEVSVFk6CiAgICAgICAgICAgICAgICAkbWFtcyA9IHh0X3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAgICAgICAgICRkZWZucyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgICAgICAgICBpZiggIWluX2FycmF5KCRvcHQtPmdldF9leHByKCksYXJyYXlfa2V5cygkZGVmbnMpKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUnKTsKICAgICAgICAgICAgICAgICRqY291bnQrKzsKICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBwcnskamNvdW50fQogICAgICAgICAgICAgICAgICAgIE9OIHByeyRqY291bnR9LnVzZXJpZCA9IHUuaWQiOwogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAicHJ7JGpjb3VudH0udGl0bGUgPSAnIi4kb3B0LT5nZXRfZXhwcigpLiInIjsKICAgICAgICAgICAgICAgIGlmKCAkb3B0LT5nZXRfb3B0KCkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIHN0cnN0cigkb3B0LT5nZXRfb3B0KCksJyonKSA9PT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInByeyRqY291bnR9LmRhdGEgPSAnIi4kb3B0LT5nZXRfb3B0KCkuIiciOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAicHJ7JGpjb3VudH0uZGF0YSBMSUtFICciLnN0cl9yZXBsYWNlKCcqJywnJScsJG9wdC0+Z2V0X29wdCgpKS4iJyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEhBU1BST1BFUlRZOgogICAgICAgICAgICAgICAgLy8gdGVzdCBpZiB0aGUgdXNlciBET0VTIE5PVCBoYXZlIGEgc3BlY2lmaWMgcHJvcGVydHkKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuaWQgTk9UIElOIChTRUxFQ1QgdXNlcmlkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdGl0bGUgPSAneyRvcHQtPmdldF9leHByKCl9JykiOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1BST1BFUlRZX1JFOgogICAgICAgICAgICAgICAgJG1hbXMgPSB4dF91dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgICAgICAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJG9wdC0+Z2V0X2V4cHIoKSxhcnJheV9rZXlzKCRkZWZucykpICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRqY291bnQrKzsKICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBwcnskamNvdW50fQogICAgICAgICAgICAgICAgICAgICAgT04gcHJ7JGpjb3VudH0udXNlcmlkID0gdS5pZAogICAgICAgICAgICAgICAgICAgICBBTkQgcHJ7JGpjb3VudH0udGl0bGUgPSAnIi4kb3B0LT5nZXRfZXhwcigpLiInIjsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInByeyRqY291bnR9LmRhdGEgUkVHRVhQICIuJGRiLT5xc3RyKCRvcHQtPmdldF9vcHQoKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gYXNzZW1ibHkKICAgICAgICBpZiggY291bnQoJGpvaW5zKSApICRxcmVjIC49ICcgJy5pbXBsb2RlKCcgJywkam9pbnMpOwogICAgICAgIGlmKCBjb3VudCgkd2hlcmUpICkgJHFyZWMgLj0gIlxuV0hFUkUgIi5pbXBsb2RlKCcgQU5EICcsJHdoZXJlKTsKCiAgICAgICAgJG9yZGVyYnkgPSAndXNlcm5hbWUnOwogICAgICAgIHN3aXRjaCggJHRoaXMtPl9xdWVyeS0+Z2V0X3NvcnRieSgpICkgewogICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FOgogICAgICAgICAgICAkb3JkZXJieSA9ICd1c2VybmFtZSc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQ6CiAgICAgICAgICAgICRvcmRlcmJ5ID0gJ2NyZWF0ZWRhdGUnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTOgogICAgICAgICAgICAkb3JkZXJieSA9ICdleHBpcmVzJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2goICR0aGlzLT5fcXVlcnktPmdldF9zb3J0b3JkZXIoKSApIHsKICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0M6CiAgICAgICAgICAgICRvcmRlcmJ5IC49ICcgQVNDJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQzoKICAgICAgICAgICAgJG9yZGVyYnkgLj0gJyBERVNDJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkcXJlYyAuPSAnIEdST1VQIEJZIHUuaWQnOwogICAgICAgIGlmKCAkaGF2aW5nICkgJHFyZWMgLj0gJyBIQVZJTkcgJy4kaGF2aW5nOwogICAgICAgICRxcmVjIC49ICcgT1JERVIgQlkgJy4kb3JkZXJieTsKCiAgICAgICAgJHRoaXMtPl9ycyA9ICRkYi0+U2VsZWN0TGltaXQoJHFyZWMsJHRoaXMtPl9xdWVyeS0+Z2V0X3BhZ2VsaW1pdCgpLCR0aGlzLT5fcXVlcnktPmdldF9vZmZzZXQoKSwkcXBhcm1zKTsKICAgICAgICBpZiggISR0aGlzLT5fcnMgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJTlRFUk5BTCBFUlJPUjogUXVlcnkgZmFpbGVkIC0gJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAkdGhpcy0+X2ZvdW5kX3Jvd3MgPSAkZGItPkdldE9uZSgnU0VMRUNUIEZPVU5EX1JPV1MoKScpOwoKICAgICAgICAvLyB0aGlzIHByZWxvYWRzIHRoZSB1c2VyIGluZm8uCiAgICAgICAgaWYoICR0aGlzLT5fcXVlcnktPmdldF9yZXN1bHRfdHlwZSgpICE9IG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1RZUEVfQ09VTlQgKSB7CiAgICAgICAgICAgICR1aWRzID0gYXJyYXkoKTsKICAgICAgICAgICAgd2hpbGUoICEkdGhpcy0+X3JzLT5FT0YgKSB7CiAgICAgICAgICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OnNldF9uZXdfdXNlcigkdGhpcy0+X3JzLT5maWVsZHMpOwogICAgICAgICAgICAgICAgJHVpZHNbXSA9ICR0aGlzLT5fcnMtPmZpZWxkc1snaWQnXTsKICAgICAgICAgICAgICAgICR0aGlzLT5fcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9ycy0+TW92ZUZpcnN0KCk7CgogICAgICAgICAgICBpZiggY291bnQoJHVpZHMpICYmICR0aGlzLT5fcXVlcnktPmdldF9kZWVwKCkgKSB7CiAgICAgICAgICAgICAgICAvLyB1c2VycyBhcmUgYWxyZWFkeSBsb2FkZWQgKHNoYWxsb3cpLi4uIHRoaXMgd2lsbCBnZXQgcHJvcGVydHkgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHVpZHMsVFJVRSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5fZXhlY3V0ZWQgPSBUUlVFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBSZWNvcmRDb3VudCgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+UmVjb3JkQ291bnQoKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTW92ZU5leHQoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X3F1ZXJ5LT5nZXRfcmVzdWx0X3R5cGUoKSA9PSBtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9UWVBFX0NPVU5UICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgaXRlcmF0ZSB0aHJvdWdoIHJlc3VsdHMgb2YgYSBDT1VOVCBxdWVyeScpOwogICAgICAgIH0KICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5Nb3ZlTmV4dCgpOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTW92ZUZpcnN0KCkKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9xdWVyeS0+Z2V0X3Jlc3VsdF90eXBlKCkgPT0gbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfVFlQRV9DT1VOVCApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGl0ZXJhdGUgdGhyb3VnaCByZXN1bHRzIG9mIGEgQ09VTlQgcXVlcnknKTsKICAgICAgICB9CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+TW92ZUZpcnN0KCk7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBFT0YoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X3F1ZXJ5LT5nZXRfcmVzdWx0X3R5cGUoKSA9PSBtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9UWVBFX0NPVU5UICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgaXRlcmF0ZSB0aHJvdWdoIHJlc3VsdHMgb2YgYSBDT1VOVCBxdWVyeScpOwogICAgICAgIH0KICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5FT0YoKTsKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2xvc2UoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X3JzICkgcmV0dXJuICR0aGlzLT5fcnMtPkNsb3NlKCk7CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgaWYoICRrZXkgPT0gJ0VPRicgJiYgJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5FT0Y7CgogICAgICAgIGlmKCAka2V5ID09ICdmaWVsZHMnICYmICR0aGlzLT5fcnMgKSB7CiAgICAgICAgICAgICRyZWMgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR0aGlzLT5fcnMtPmZpZWxkc1snaWQnXSk7CiAgICAgICAgICAgIGlmKCAhJHJlYyApIHJldHVybjsKICAgICAgICAgICAgaWYoICR0aGlzLT5fcXVlcnktPmdldF93ZWJyZWFkeSgpICkgewogICAgICAgICAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICAgICAgICAgaWYoICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICkgewogICAgICAgICAgICAgICAgICAgICRyZWNbJ2VtYWlsJ10gPSAkcmVjWyd1c2VybmFtZSddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5zZXQoJHJlY1sncGFzc3dvcmQnXSwkcmVjWydzYWx0J10pOwogICAgICAgICAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcmVjWydmcHJvcHMnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHJlY1snZnByb3BzJ10gYXMgJiRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhJG1hbXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggJGRlZm5zWyRvbmVbJ3RpdGxlJ11dWyd0eXBlJ10gPT0gTUFNUzo6RklFTERUWVBFX0VNQUlMICYmICFpc3NldCgkcmVjWydlbWFpbCddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydlbWFpbCddID0gJG9uZVsnZGF0YSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkZGVmbnNbJG9uZVsndGl0bGUnXV1bJ3R5cGUnXSA9PSBNQU1TOjpGSUVMRFRZUEVfSU1BR0UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIGZ1bGwgdXJsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbmVbJ3VybCddID0gJGNvbmZpZ1sndXBsb2Fkc191cmwnXS4nL21hbXMvJy4kb25lWydkYXRhJ107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICFpc3NldCgkcmVjWydlbWFpbCddKSAmJiBpc3NldCgkcmVjWyd1c2VybmFtZSddKSAmJiAhZW1wdHkoJHJlY1sndXNlcm5hbWUnXSkgJiYgaXNfZW1haWwoJHJlY1sndXNlcm5hbWUnXSkgKSAkcmVjWydlbWFpbCddID0gJHJlY1sndXNlcm5hbWUnXTsKICAgICAgICAgICAgcmV0dXJuICRyZWM7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZm91bmRfcm93cygpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X3JzICkgcmV0dXJuOwogICAgICAgIHJldHVybiAkdGhpcy0+X2ZvdW5kX3Jvd3M7CiAgICB9Cgp9IC8vIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc191dGlscwp7CiAgICBwcml2YXRlIHN0YXRpYyAkX21vZDsKICAgIHByaXZhdGUgc3RhdGljICRfdXNlcmZpbGVzOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJmdldF9tb2QoKQogICAgewogICAgICAgIGlmKCAhc2VsZjo6JF9tb2QgKSBzZWxmOjokX21vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgIHJldHVybiBzZWxmOjokX21vZDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlX3JhbmRvbV9wcmludGFibGVfc3RyaW5nKCkKICAgIHsKICAgICAgICAkY29kZSA9IHN1YnN0cihzdHJ0b3VwcGVyKG1kNShfX0ZJTEVfXy5zZXNzaW9uX2lkKCkucmFuZCgpLm1pY3JvdGltZShUUlVFKSkpLDAsMjUpOwogICAgICAgIHJldHVybiAkY29kZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVzaW5nX3N0ZF9jb25zdW1lcigpCiAgICB7CiAgICAgICAgJG1hbXMgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAgICAgJG5hbWUgPSAkbWFtcy0+R2V0UHJlZmVyZW5jZSgnYXV0aF9tb2R1bGUnLCcnKTsKICAgICAgICBpZiggJG5hbWUgPT0gJycgfHwgJG5hbWUgPT0gJ19fQlVJTFRJTl9fJyApIHJldHVybiBUUlVFOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZnZXRfc3RkX2NvbnN1bWVyKCkKICAgIHsKICAgICAgICAkb2JqID0gbmV3IG1hbXNfc3RkX2NvbnN1bWVyKCk7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAmZ2V0X2F1dGhfY29uc3VtZXIoKQogICAgewogICAgICAgICRtYW1zID0gc2VsZjo6Z2V0X21vZCgpOwogICAgICAgICRuYW1lID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJ2F1dGhfbW9kdWxlJywnJyk7CiAgICAgICAgaWYoICRuYW1lID09ICcnIHx8ICRuYW1lID09ICdfX0JVSUxUSU5fXycgKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpnZXRfc3RkX2NvbnN1bWVyKCk7CiAgICAgICAgfQoKICAgICAgICAkbW9kdWxlID0geHRfdXRpbHM6OmdldF9tb2R1bGUoJG5hbWUpOwogICAgICAgICRyZXMgPSBudWxsOwogICAgICAgIGlmKCBpc19vYmplY3QoJG1vZHVsZSkgKSB7CiAgICAgICAgICAgICRvYmogPSAkbW9kdWxlLT5HZXRNQU1TQXV0aENvbnN1bWVyKCk7CiAgICAgICAgICAgIHJldHVybiAkb2JqOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmdldF9zdGRfY29uc3VtZXIoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VybGlzdCgkbm9uZSA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljICRsaXN0OwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGxpc3QpICkgewogICAgICAgICAgICAkbGlzdCA9IGFycmF5KCk7CgogICAgICAgICAgICAvLyBub3cgYWRkIGluIG1hbXMgdXNlcnMKICAgICAgICAgICAgJG1hbXMgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAgICAgICAgIGlmKCBpc19vYmplY3QoJG1hbXMpICkgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gbmV3IFxtYW1zX3VzZXJfcXVlcnk7CiAgICAgICAgICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfT1BUOjpNQVRDSF9OT1RFWFBJUkVEKTsKICAgICAgICAgICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9PUFQ6Ok1BVENIX05PVERJU0FCTEVEKTsKICAgICAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FKTsKICAgICAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgICAgICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgIGlmKCAkcnMtPmdldF9mb3VuZF9yb3dzKCkgPiAwICYmICRub25lICkgewogICAgICAgICAgICAgICAgICAgICRsaXN0WycnXSA9ICRtYW1zLT5MYW5nKCdub25lJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSggISRycy0+RU9GKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGxpc3RbJHJzLT5maWVsZHNbJ2lkJ11dID0gJHJzLT5maWVsZHNbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF90ZW1wbGF0ZSgkcGFyYW1zLCRrZXksJHR5cGVuYW1lKQogICAgewogICAgICAgIGlmKCAka2V5ICkgewogICAgICAgICAgICAkdHBsID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJGtleSk7CiAgICAgICAgICAgIGlmKCAkdHBsICkgcmV0dXJuICR0cGw7CiAgICAgICAgfQoKICAgICAgICAkdHBsID0gXENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgkdHlwZW5hbWUpOwogICAgICAgIGlmKCAkdHBsICkgcmV0dXJuICR0cGwtPmdldF9uYW1lKCk7CgogICAgICAgIGF1ZGl0KCcnLCdNQU1TJywnTm8gZGVmYXVsdCB0ZW1wbGF0ZSBvZiB0eXBlICcuJHR5cGVuYW1lLicgZm91bmQnKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja1VwbG9hZCgka2V5KQogICAgewogICAgICAgICRtb2QgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAgICAgaWYoICFpc3NldCgkX0ZJTEVTWyRrZXldKSB8fCAhaXNzZXQoJF9GSUxFUykgKSByZXR1cm4gWyBmYWxzZSwgJG1vZC0+TGFuZygnZXJyb3JfbWlzc2luZ191cGxvYWQnKSBdOwogICAgICAgICRmaWxlID0gJF9GSUxFU1ska2V5XTsKICAgICAgICBpZiggIWlzc2V0KCRmaWxlWyduYW1lJ10pIHx8ICFpc3NldCgkZmlsZVsnc2l6ZSddKSB8fCAkZmlsZVsnc2l6ZSddID09IDAgKSByZXR1cm4gWyBmYWxzZSwkbW9kLT5MYW5nKCdlcnJvcl9wcm9ibGVtX3VwbG9hZCcpIF07CgogICAgICAgIGlmICghaXNzZXQgKCRmaWxlWyd0eXBlJ10pKSAkZmlsZVsndHlwZSddID0gJyc7CiAgICAgICAgaWYgKCFpc3NldCAoJGZpbGVbJ3NpemUnXSkpICRmaWxlWydzaXplJ10gPSAnJzsKICAgICAgICBpZiAoIWlzc2V0ICgkZmlsZVsndG1wX25hbWUnXSkpIHJldHVybiBbIGZhbHNlLCAkbW9kLT5MYW5nKCdlcnJvcl9wcm9ibGVtX3VwbG9hZCcpIF07CiAgICAgICAgJGZpbGVbJ25hbWUnXSA9CiAgICAgICAgICAgIHByZWdfcmVwbGFjZSgnL1teYS16QS1aMC05XC5cJFwlXCdcYFwtXEBce1x9XH5cIVwjXChcKVwmXF9cXl0vJywgJycsCiAgICAgICAgICAgIHN0cl9yZXBsYWNlIChhcnJheSAoJyAnLCAnJTIwJyksIGFycmF5ICgnXycsICdfJyksICRmaWxlWyduYW1lJ10pKTsKCiAgICAgICAgLy8gY2hlY2sgdGhlIGZpbGVuYW1lCiAgICAgICAgaWYoICEkbW9kLT5pc19hbGxvd2VkX3VwbG9hZCgkZmlsZVsnbmFtZSddKSApIHJldHVybiBbIGZhbHNlLCAkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkZmlsZWV4dGVuc2lvbicpIF07CiAgICAgICAgcmV0dXJuIFsgVFJVRSBdOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3Byb3BlcnRpZXNfZm9yX2dyb3VwcyggJGdyb3VwbGlzdCApIHsKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgZm9yZWFjaCggJGdyb3VwbGlzdCBhcyAkZ2lkICkgewogICAgICAgICAgICAkZ2lkID0gKGludCkgJGdpZDsKICAgICAgICAgICAgaWYoICRnaWQgPCAxICkgY29udGludWU7CgogICAgICAgICAgICAkcmVsYXRpb25zID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKS0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdpZCApOwogICAgICAgICAgICAkb3V0ID0gXE1BTVNcUlJVdGlsczo6YXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCggJG91dCwgJHJlbGF0aW9ucyApOwogICAgICAgIH0KICAgICAgICB1YXNvcnQoICRvdXQsIGFycmF5KCd4dF9hcnJheScsJ2NvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleScpICk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcnNfZnJvbV9maWx0ZXIoICRmaWx0ZXIsICRvZmZzZXQsICYkdG90YWxfbWF0Y2hlcyApCiAgICB7CiAgICAgICAgJGxpbWl0ID0gJGZpbHRlclsnbGltaXQnXTsKICAgICAgICAkZ3JvdXBpZCA9ICRmaWx0ZXJbJ2dyb3VwJ107CiAgICAgICAgJHVzZXJyZWdleCA9ICRmaWx0ZXJbJ3JlZ2V4J107CiAgICAgICAgJHByb3BlcnR5ID0gJGZpbHRlclsncHJvcHNlbCddOwogICAgICAgICRwcm9wcmVnZXggPSAkZmlsdGVyWydwcm9wdmFsJ107CiAgICAgICAgJGxvZ2dlZGlub25seSA9ICRmaWx0ZXJbJ2xvZ2dlZGlub25seSddOwogICAgICAgICRzb3J0ID0gJGZpbHRlclsnc29ydGJ5J107CiAgICAgICAgJGRpc2FibGVkc3RhdHVzID0gaXNzZXQoICRmaWx0ZXJbJ2Rpc2FibGVkc3RhdHVzJ10gKSA/ICRmaWx0ZXJbJ2Rpc2FibGVkc3RhdHVzJ10gOiBudWxsOwoKICAgICAgICAvLyB0b2RvOiB0aGlzIHNob3VsZCBnbyBpbnRvIHRoZSBjb25zdW1lci4KICAgICAgICAkcXVlcnkgPSBuZXcgbWFtc191c2VyX3F1ZXJ5KCk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfcmVzdWx0X3R5cGUobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfVFlQRV9GVUxMKTsKICAgICAgICBpZiggKGludCkkbGltaXQgPiAwICkgJHF1ZXJ5LT5zZXRfcGFnZWxpbWl0KCRsaW1pdCk7CiAgICAgICAgaWYoIChpbnQpJG9mZnNldCA+IDAgKSAkcXVlcnktPnNldF9vZmZzZXQoJG9mZnNldCk7CiAgICAgICAgaWYoICRncm91cGlkID4gMCApICRxdWVyeS0+YWRkX2FuZF9vcHQobWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwkZ3JvdXBpZCk7CiAgICAgICAgaWYoICR1c2VycmVnZXggKSAkcXVlcnktPmFkZF9hbmRfb3B0KG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1VTRVJOQU1FX1JFLCR1c2VycmVnZXgpOwogICAgICAgIGlmKCAkcHJvcGVydHkgKSB7CiAgICAgICAgICAgICRkZWZuID0gc2VsZjo6Z2V0X21vZCgpLT5HZXRQcm9wZXJ0eURlZm4oICRwcm9wZXJ0eSApOwogICAgICAgICAgICAkb2JqID0gbnVsbDsKICAgICAgICAgICAgaWYoICRkZWZuWyd0eXBlJ10gPT0gXE1BTVM6OkZJRUxEVFlQRV9DSEVDS0JPWCApIHsKICAgICAgICAgICAgICAgIGlmKCB0cmltKCRwcm9wcmVnZXgpID09PSAnMCcgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byB0ZXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBOT1Qgc2V0CiAgICAgICAgICAgICAgICAgICAgJG9iaiA9IG5ldyBtYW1zX3VzZXJfcXVlcnlfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RIQVNQUk9QRVJUWSwgJHByb3BlcnR5ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICEkb2JqICYmICRwcm9wcmVnZXggKSAkb2JqID0gbmV3IG1hbXNfdXNlcl9xdWVyeV9vcHQobWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfUFJPUEVSVFlfUkUsJHByb3BlcnR5LCRwcm9wcmVnZXgpOwogICAgICAgICAgICBpZiggJG9iaiApICRxdWVyeS0+YWRkX2FuZF9vcHRfb2JqKCRvYmopOwogICAgICAgIH0KICAgICAgICBpZiggJGxvZ2dlZGlub25seSApICRxdWVyeS0+YWRkX2FuZF9vcHQobWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTE9HR0VESU4sMSk7CiAgICAgICAgc3dpdGNoKCAkZGlzYWJsZWRzdGF0dXMgKSB7CiAgICAgICAgY2FzZSAnZW4nOgogICAgICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RESVNBQkxFRCApOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdkaXMnOgogICAgICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9ESVNBQkxFRCApOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCggJHNvcnQgKSB7CiAgICAgICAgY2FzZSAndXNlcm5hbWUnOgogICAgICAgIGNhc2UgJ3VzZXJuYW1lIGFzYyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUUpOwogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3VzZXJuYW1lIGRlc2MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FKTsKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9ERVNDKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnY3JlYXRlZGF0ZSc6CiAgICAgICAgY2FzZSAnY3JlYXRlZGF0ZSBhc2MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQpOwogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUgZGVzYyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfQ1JFQVRFRCk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2V4cGlyZXMnOgogICAgICAgIGNhc2UgJ2V4cGlyZXMgYXNjJzoKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTKTsKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdleHBpcmVzIGRlc2MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0VYUElSRVMpOwogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIobWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgICR0b3RhbF9tYXRjaGVzID0gJHJzLT5nZXRfZm91bmRfcm93cygpOwogICAgICAgICRkYXRhID0gYXJyYXkoKTsKICAgICAgICB3aGlsZSggISRycy0+RU9GICkgewogICAgICAgICAgICAkZGF0YVtdID0gJHJzLT5maWVsZHM7CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZV9wcmVmdHBsX3RvX3BhZ2UoJHByZWZuYW1lLCR1aWQsJGRmbHQgPSBudWxsKQogICAgewogICAgICAgICRwcmVmbmFtZSA9IHRyaW0oJHByZWZuYW1lKTsKICAgICAgICAkdWlkID0gKGludCkgJHVpZDsKICAgICAgICBpZiggISRwcmVmbmFtZSB8fCAkdWlkIDwgMSApIHJldHVybiAkZGZsdDsKCiAgICAgICAgLy8gc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBtYXliZS4KICAgICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgICAkcmVzID0gJG1hbXMtPkdldFVzZXJJbmZvKCAkdWlkICk7CiAgICAgICAgaWYoICFpc19hcnJheSgkcmVzKSB8fCAkcmVzWzBdID09IEZBTFNFICkgcmV0dXJuICRkZmx0OwogICAgICAgICR1aW5mbyA9ICRyZXNbMV07CgogICAgICAgICR0cGxkYXRhID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJHByZWZuYW1lKTsKICAgICAgICBpZiggISR0cGxkYXRhICkgcmV0dXJuICRkZmx0OwoKICAgICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgJHRtcF90cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbGRhdGEpOwogICAgICAgICR0bXBfdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdWluZm9bJ3VzZXJuYW1lJ10pOwogICAgICAgICR0bXBfdHBsLT5hc3NpZ24oJ3VpZCcsJHVpZCk7CiAgICAgICAgJGdyb3VwcyA9ICRtYW1zLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAgICAgICAkZ3JvdXBuYW1lID0gbnVsbDsKICAgICAgICBpZiggY291bnQoJGdyb3VwcykgKSAkZ3JvdXBuYW1lID0gJG1hbXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAgICAgJHRtcF90cGwtPmFzc2lnbignZ3JvdXBuYW1lJywkZ3JvdXBuYW1lKTsKICAgICAgICAkcGFnZSA9ICR0bXBfdHBsLT5mZXRjaCgpOwogICAgICAgICRkZXN0ID0gJG1hbXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHBhZ2UpOwogICAgICAgIGlmKCAkZGVzdCApIHJldHVybiAkZGVzdDsKICAgICAgICByZXR1cm4gJGRmbHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYXZlX3RlbXBfbG9naW5kYXRhKCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJG9ubHlncm91cHMgKQogICAgewogICAgICAgICRvYmogPSBuZXcgXFN0ZENsYXNzOwogICAgICAgICRvYmotPnVzZXJuYW1lID0gJHVzZXJuYW1lOwogICAgICAgICRvYmotPnBhc3N3b3JkID0gJHBhc3N3b3JkOyAvLyBwbGFpbiB0ZXh0CiAgICAgICAgJG9iai0+b25seWdyb3VwcyA9ICRvbmx5Z3JvdXBzOwogICAgICAgICRrZXkgPSBtZDUoX19DTEFTU19fLl9fRklMRV9fKTsKICAgICAgICAkZGF0YSA9IFx4dF9lbmNyeXB0OjplbmNyeXB0KCAka2V5LCBzZXJpYWxpemUoICRvYmogKSApOwogICAgICAgICRtYW1zID0gc2VsZjo6Z2V0X21vZCgpOwogICAgICAgICRtYW1zLT5zZXNzaW9uX3B1dCggJGtleSwgJGRhdGEgKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlX3RlbXBfbG9naW5kYXRhKCkKICAgIHsKICAgICAgICAka2V5ID0gbWQ1KF9fQ0xBU1NfXy5fX0ZJTEVfXyk7CiAgICAgICAgJG1hbXMgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAgICAgJGRhdGEgPSAkbWFtcy0+c2Vzc2lvbl9nZXQoICRrZXkgKTsKICAgICAgICBpZiggISRkYXRhICkgcmV0dXJuOwogICAgICAgICRtYW1zLT5zZXNzaW9uX2NsZWFyKCAka2V5ICk7CiAgICAgICAgJGRhdGEgPSB1bnNlcmlhbGl6ZSggXHh0X2VuY3J5cHQ6OmRlY3J5cHQoICRrZXksICRkYXRhICkgKTsKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBob29rX29uZGVsZXRldXNlciggJHBhcmFtcyApCiAgICB7CiAgICAgICAgLy8gdGhpcyBob29rIGNoZWNrcyBpZiB0aGVyZSBhcmUgZmlsZXMgdG8gZGVsZXRlIGZvciB0aGlzIHVzZXIKICAgICAgICAvLyBhbmQgdGhhdCB0aGV5IGNhbiBiZSBkZWxldGVkLiAgb24gZXJyb3IsIHRocm93IGFuIGV4Y2VwdGlvbgogICAgICAgIHNlbGY6OiRfdXNlcmZpbGVzID0gbnVsbDsKICAgICAgICAkdWlkID0gKGludCkgJHBhcmFtc1snaWQnXTsKICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm47CgogICAgICAgICRmaWxlcyA9IHNlbGY6OmdldF9tb2QoKS0+R2V0VXNlckZpbGVzRnVsbCggJHVpZCwgVFJVRSApOwogICAgICAgIGlmKCAhJGZpbGVzICkgcmV0dXJuOwoKICAgICAgICAkcGF0aCA9IHNlbGY6OmdldF9tb2QoKS0+Z2V0X3VwbG9hZF9kaXJuYW1lKCk7CiAgICAgICAgZm9yZWFjaCggJGZpbGVzIGFzICRmaWxlICkgewogICAgICAgICAgICAkZm4gPSAiJHBhdGgvJGZpbGUiOwogICAgICAgICAgICAkdG4gPSAiJHBhdGgvdGh1bWJfeyRmaWxlfSI7CiAgICAgICAgICAgIGlmKCBpc19maWxlKCRmbikgJiYgIWlzX3dyaXRhYmxlKCRmbikgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkluc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJlbW92ZSB1c2VyIGZpbGUgJGZpbGUiKTsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJHRuKSAmJiAhaXNfd3JpdGFibGUoJHRuKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW5zdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gcmVtb3ZlIHVzZXIgdGh1bWJuYWlsIGZvciAkZmlsZSIpOwogICAgICAgIH0KICAgICAgICBzZWxmOjokX3VzZXJmaWxlcyA9ICRmaWxlczsKICAgICAgICByZXR1cm4gJHBhcmFtczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhvb2tfYWZ0ZXJkZWxldGV1c2VyKCAkcGFyYW1zICkKICAgIHsKICAgICAgICAvLyB0aGlzIGhvb2sgZGVsZXRlcyBhbGwgdXNlciBmaWxlcy4uLiBkb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCiAgICAgICAgLy8gYWxzbyBkZWxldGVzIHRodW1ibmFpbHMuCiAgICAgICAgJHVpZCA9IChpbnQpICRwYXJhbXNbJ2lkJ107CiAgICAgICAgaWYoICR1aWQgPCAxICkgcmV0dXJuOwogICAgICAgIGlmKCAhc2VsZjo6JF91c2VyZmlsZXMgKSByZXR1cm47CiAgICAgICAgJGZpbGVzID0gc2VsZjo6JF91c2VyZmlsZXM7CiAgICAgICAgJHBhdGggPSBzZWxmOjpnZXRfbW9kKCktPmdldF91cGxvYWRfZGlybmFtZSgpOwoKICAgICAgICBmb3JlYWNoKCAkZmlsZXMgYXMgJGZpbGUgKSB7CiAgICAgICAgICAgICRmbiA9ICIkcGF0aC8kZmlsZSI7CiAgICAgICAgICAgICR0biA9ICIkcGF0aC90aHVtYl97JGZpbGV9IjsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZuKSApIEB1bmxpbmsoICRmbiApOwogICAgICAgICAgICBpZiggaXNfZmlsZSgkdG4pICkgQHVubGluayggJHRuICk7CiAgICAgICAgfQogICAgICAgIHNlbGY6OiRfdXNlcmZpbGVzID0gbnVsbDsKICAgICAgICByZXR1cm4gJHBhcmFtczsKICAgIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvZygkbWVzc2FnZSA9ICcnKQogIHsKICAgICRtZXNzYWdlID0gZW1wdHkoJG1lc3NhZ2UpID8gJ1tlbXB0eSBtZXNzYWdlXScgOiAkbWVzc2FnZTsKICAgIAogICAgJHJvb3QgPSBkaXJuYW1lKCBkaXJuYW1lKCBkaXJuYW1lKCBkaXJuYW1lKF9fRklMRV9fKSApICkgKTsKICAgIAogICAgLy8kcGF0aCA9IGlzc2V0KCRjb25maWdbJ2xvZ19wYXRoJ10pID8gY21zX2pvaW5fcGF0aCgkY29uZmlnWydtb2R1bGVfcGF0aCddLCAkY29uZmlnWydsb2dfcGF0aCddKTogJHJvb3Q7CiAgCiAgICAkcGF0aCA9ICRyb290OwogICAgCiAgICAvLyRmaWxlX25hbWUgPSBpc3NldCgkY29uZmlnWydsb2dfZmlsZW5hbWUnXSkgPyAkY29uZmlnWydsb2dfZmlsZW5hbWUnXSA6ICdMSVNFLmxvZyc7CiAgCiAgICAkZmlsZV9uYW1lID0gJ01BTVMubG9nJzsKICAgIAogICAgJGZuID0gY21zX2pvaW5fcGF0aCgkcGF0aCwgJGZpbGVfbmFtZSk7CiAgICAKICAgICRkYXRldGltZSA9IGRhdGUoJ1ktbS1kIEg6aTpzJyk7CiAgICAkdGV4dCAgPSAkZGF0ZXRpbWUgLiAnIDo6ICc7CiAgICAkdGV4dCAuPSAkbWVzc2FnZSAuIFBIUF9FT0w7CiAgICAkdG1wX21heCA9IGluaV9zZXQoJ2xvZ19lcnJvcnNfbWF4X2xlbicsIDIwNDgpOwogICAgZXJyb3JfbG9nKCR0ZXh0LCAzLCAkZm4pOwogICAgLy8gcmVzZXQgdG8gdGhlIG9sZCB2YWx1ZTsKICAgIGluaV9zZXQoJ2xvZ19lcnJvcnNfbWF4X2xlbicsICR0bXBfbWF4KTsKICB9Cn0gLy8gY2xhc3MKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.property_editor_defn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBwcm9wZXJ0eV9lZGl0b3JfZGVmbgp7CiAgICBwcml2YXRlICRfcHJvcGRlZm47CiAgICBwcml2YXRlICRfcmVsYXRpb247CiAgICBwcml2YXRlICRfdXNlcjsKICAgIHByaXZhdGUgJF9hdHRyaWJzOwogICAgcHJpdmF0ZSAkX3JlcV9jb2xvcjsKICAgIHByaXZhdGUgJF9yZXFfbWFya2VyOwogICAgcHJpdmF0ZSAkX2hpZGRlbl9jb2xvcjsKICAgIHByaXZhdGUgJF9oaWRkZW5fbWFya2VyOwogICAgcHJpdmF0ZSAkX2Vycm9yOyAvLyBhbiBlcnJvciBrZXkKICAgIHByaXZhdGUgJF90bXAxOyAvLyBzb21lIHRlbXBvcmFyeSBzdG9yYWdlIGRhdGEuCiAgICBwcml2YXRlICRfdG1wMjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHByb3BkZWZuLCRyZWxhdGlvbix1c2VyX2VkaXRfYXNzaXN0YW50ICYkdXNlcikKICAgIHsKICAgICAgICBpZiggIWlzc2V0KCRwcm9wZGVmblsnbmFtZSddKSB8fCAhJHByb3BkZWZuWyduYW1lJ10gfHwgIWlzc2V0KCRwcm9wZGVmblsndHlwZSddKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBwcm9wZXJ0eSBkZWYgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgfQogICAgICAgIGlmKCAhaXNzZXQoJHJlbGF0aW9uWyduYW1lJ10pIHx8ICEkcmVsYXRpb25bJ25hbWUnXSB8fCAhaXNzZXQoJHJlbGF0aW9uWydncm91cF9pZCddKSB8fCAhJHJlbGF0aW9uWydncm91cF9pZCddICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIHByb3BlcnR5IHJlbGF0aW9uIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIH0KICAgICAgICBpZiggJHByb3BkZWZuWyduYW1lJ10gIT0gJHJlbGF0aW9uWyduYW1lJ10gKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdNaXNtYXRjaGVkIHByb3BlcnR5IGFuZCByZWxhdGlvbiBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJHRoaXMtPl9wcm9wZGVmbiA9ICRwcm9wZGVmbjsKICAgICAgICAkdGhpcy0+X3JlbGF0aW9uID0gJHJlbGF0aW9uOwogICAgICAgICR0aGlzLT5fdXNlciA9JiAkdXNlcjsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9wcm9wZGVmblsnYXR0cmlicyddKSAmJiAkdGhpcy0+X3Byb3BkZWZuWydhdHRyaWJzJ10gKSAkdGhpcy0+X2F0dHJpYnMgPSB1bnNlcmlhbGl6ZSgkdGhpcy0+X3Byb3BkZWZuWydhdHRyaWJzJ10pOwoKICAgICAgICAkdGhpcy0+X3JlcV9jb2xvciA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywnYmx1ZScpOwogICAgICAgICR0aGlzLT5faGlkZGVuX2NvbG9yID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKS0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywnZ3JlZW4nKTsKICAgICAgICAkdGhpcy0+X3JlcV9tYXJrZXIgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCcqJyk7CiAgICAgICAgJHRoaXMtPl9oaWRkZW5fbWFya2VyID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKS0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsJyEhJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgJG1vZCA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCk7CgogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICduYW1lJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvcGRlZm5bJ25hbWUnXTsKCiAgICAgICAgY2FzZSAncmVxdWlyZWQnOgogICAgICAgICAgICAkdiA9ICgkdGhpcy0+X3JlbGF0aW9uWydyZXF1aXJlZCddID09IDIpP3RydWU6ZmFsc2U7CiAgICAgICAgICAgIHJldHVybiAkdjsKCiAgICAgICAgY2FzZSAncHJvbXB0JzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvcGRlZm5bJ3Byb21wdCddOwoKICAgICAgICBjYXNlICd0eXBlJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvcGRlZm5bJ3R5cGUnXTsKCiAgICAgICAgY2FzZSAnY29sb3InOgogICAgICAgICAgICBpZiggJHRoaXMtPnJlcXVpcmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVxX2NvbG9yOwogICAgICAgICAgICB9IGVsc2UgaWYoICR0aGlzLT5fcmVsYXRpb25bJ3JlcXVpcmVkJ10gPT0gMyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2hpZGRlbl9jb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ2xlbmd0aCc6CiAgICAgICAgY2FzZSAnc2l6ZSc6CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dHlwZSA9PSAwIHx8ICR0aGlzLT50eXBlID09IDIgKSByZXR1cm4gKGludCkgJHRoaXMtPl9wcm9wZGVmblsnbGVuZ3RoJ107CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgY2FzZSAnaW1hZ2VfcGF0aCc6CiAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dHlwZSAhPSA2IHx8ICEkdmFsICkgcmV0dXJuOwogICAgICAgICAgICByZXR1cm4gJG1vZC0+Z2V0X3VwbG9hZF9kaXJuYW1lKCkuJy8nLiR2YWw7CgogICAgICAgIGNhc2UgJ2ltYWdlX3VybCc6CiAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dHlwZSAhPSA2IHx8ICEkdmFsICkgcmV0dXJuOwogICAgICAgICAgICByZXR1cm4gJG1vZC0+Z2V0X3VwbG9hZF9kaXJ1cmwoKS4nLycuJHZhbDsKCiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzoKICAgICAgICBjYXNlICdtYXhsZW5uJzoKICAgICAgICAgICAgaWYoICR0aGlzLT50eXBlID09IDAgfHwgJHRoaXMtPnR5cGUgPT0gMiApIHJldHVybiAoaW50KSAkdGhpcy0+X3Byb3BkZWZuWydtYXhsZW5ndGgnXTsKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBjYXNlICd3eXNpd3lnJzoKICAgICAgICAgICAgaWYoICR0aGlzLT50eXBlID09IDMgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9hdHRyaWJzWyd3eXNpd3lnJ10pICkgcmV0dXJuICR0aGlzLT5fYXR0cmlic1snd3lzaXd5ZyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgY2FzZSAnbWFya2VyJzoKICAgICAgICAgICAgaWYoICR0aGlzLT5yZXF1aXJlZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3JlcV9tYXJrZXI7CiAgICAgICAgICAgIH0gZWxzZSBpZiggJHRoaXMtPl9yZWxhdGlvblsncmVxdWlyZWQnXSA9PSAzICkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5faGlkZGVuX21hcmtlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ29wdGlvbnMnOgogICAgICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgJG9wdHMgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpLT5HZXRTZWxlY3RPcHRpb25zKCR0aGlzLT5fcHJvcGRlZm5bJ25hbWUnXSk7CiAgICAgICAgICAgICAgICBpZiggIWNvdW50KCRvcHRzKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignTm8gc2VsZWN0IG9wdGlvbnMgZm9yIGEgZHJvcGRvd24vYXJyYXkgcHJvcGVydHknKTsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV9mbGlwKCRvcHRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIG5vIGFycmF5IHRvIHJldHVybi4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ2RmbHQnOgogICAgICAgIGNhc2UgJ2RlZmF1bHQnOgogICAgICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgICAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgICAgICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAgICAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICAgICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICBjYXNlIDY6IC8vIGltYWdlCiAgICAgICAgICAgIGNhc2UgNzogLy8gcmFkaW8gYnV0dG9uIGdyb3VwCiAgICAgICAgICAgIGNhc2UgODogLy8gZGF0ZQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9hdHRyaWJzWydjaGVja2VkJ10pICkgcmV0dXJuICR0aGlzLT5fYXR0cmlic1snY2hlY2tlZCddOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBjYXNlICdzdGFydHllYXInOgogICAgICAgIGNhc2UgJ2VuZHllYXInOgogICAgICAgICAgICBpZiggJHRoaXMtPnR5cGUgPT0gOCApIHsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X3Byb3BkZWZuWydleHRyYSddWyRrZXldKSApIHJldHVybiAkdGhpcy0+X3Byb3BkZWZuWydleHRyYSddWyRrZXldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgY2FzZSAndmFsJzoKICAgICAgICBjYXNlICd2YWx1ZSc6CiAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+X3VzZXItPmdldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSk7CiAgICAgICAgICAgIHN3aXRjaCggJHRoaXMtPnR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIHN0cnBvcygkdmFsLCcsJykgIT09IEZBTFNFICkgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IGV4cGxvZGUoJywnLCR2YWwpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmKCBzdHJwb3MoJHZhbCwnOicpICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IGV4cGxvZGUoJzonLCR2YWwpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWwgPSBbICR2YWwgXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICR2YWw7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfdmFsdWUoJHZhbCkKICAgIHsKICAgICAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKCiAgICAgICAgLy8gJHZhbCBjYW4gYmUgbWl4ZWQKICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgIGNhc2UgMDogLy8gdGV4dCBmaWVsZAogICAgICAgICAgICAkdmFsID0gKHN0cmluZykgJHZhbDsKICAgICAgICAgICAgJGwgPSBzdHJsZW4oJHZhbCk7CiAgICAgICAgICAgIGlmKCAkbCA+ICR0aGlzLT5tYXhsZW5ndGggKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2ZsZHZhbGxlbmd0aCcsJHRoaXMtPm5hbWUpKTsKICAgICAgICAgICAgJHRoaXMtPl91c2VyLT5zZXRfcHJvcGVydHkoJHRoaXMtPm5hbWUsJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLChpbnQpICR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAgICAgICAkdmFsID0gKHN0cmluZykgJHZhbDsKICAgICAgICAgICAgJHRoaXMtPl91c2VyLT5zZXRfcHJvcGVydHkoJHRoaXMtPm5hbWUsJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICAgICAgICR2YWwgPSAoc3RyaW5nKSAkdmFsOwogICAgICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSwkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpICR2YWw7CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgKSAkdmFsID0gaW1wbG9kZSgnLCcsJHZhbCk7CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OiAvLyBpbWFnZQogICAgICAgICAgICAvLyB3ZSBjaGVjayBpZiBhbnl0aGluZyBpcyB1cGxvYWRlZC4KICAgICAgICAgICAgaWYoIGlzc2V0KCRfRklMRVMpICYmIGlzc2V0KCRfRklMRVNbJHZhbF0pICYmICRfRklMRVNbJHZhbF1bJ25hbWUnXSApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fdG1wMSA9ICR2YWw7IC8vIHRoZSBrZXkKICAgICAgICAgICAgICAgICR0aGlzLT5fdG1wMiA9ICR0aGlzLT5fdXNlci0+Z2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lKTsgLy8gY3VycmVudCB2YWx1ZS4KICAgICAgICAgICAgICAgICRuZXd2YWwgPSAkbW9kLT5nZXRfdXBsb2FkX2ZpbGVuYW1lKCR0aGlzLT5uYW1lLCRfRklMRVNbJHZhbF1bJ25hbWUnXSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSwkbmV3dmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA3OiAvLyByYWRpbyBidXR0b24gZ3JvdXAKICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpICR2YWw7CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4OiAvLyBkYXRlCiAgICAgICAgICAgICR2YWwgPSAoaW50KSAkdmFsOwogICAgICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSwkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+bmFtZTsKICAgICAgICAkdmFsID0gJHRoaXMtPl91c2VyLT5nZXRfcHJvcGVydHkoJG5hbWUpOwogICAgICAgICRtb2QgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpOwoKICAgICAgICBpZiggJHRoaXMtPl9lcnJvciApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJG1vZC0+TGFuZygkdGhpcy0+X2Vycm9yKSk7CiAgICAgICAgc3dpdGNoKCAkdGhpcy0+dHlwZSApIHsKICAgICAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgICAgICAgaWYoICEkdmFsICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBpZiggJHZhbCApIHsKICAgICAgICAgICAgICAgICRsID0gc3RybGVuKCR2YWwpOwogICAgICAgICAgICAgICAgaWYoICRsID4gJHRoaXMtPm1heGxlbmd0aCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfZmxkdmFsbGVuZ3RoJywkbmFtZSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6IC8vIGVtYWlsCiAgICAgICAgICAgIGlmKCAhJHZhbCAmJiAkdGhpcy0+cmVxdWlyZWQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbScsJG5hbWUpKTsKICAgICAgICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAgICAgICAkbCA9IHN0cmxlbigkdmFsKTsKICAgICAgICAgICAgICAgIGlmKCAkbCA+ICR0aGlzLT5tYXhsZW5ndGggKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkxhbmcoJ2Vycm9yX2ZsZHZhbGxlbmd0aCcsJG5hbWUpKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNfZW1haWwoJHZhbCkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkxhbmcoJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTogLy8gY2hlY2tib3gKICAgICAgICAgICAgaWYoICR2YWwgPT09ICcnICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOiAvLyB0ZXh0YXJlYQogICAgICAgICAgICBpZiggJHZhbCA9PT0gJycgJiYgJHRoaXMtPnJlcXVpcmVkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nLCRuYW1lKSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgICAgICAgIGlmKCAkdmFsID09PSAnJyAmJiAkdGhpcy0+cmVxdWlyZWQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbScsJG5hbWUpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNTogLy8gbXVsdGlzZWxlY3QKICAgICAgICAgICAgaWYoICR2YWwgPT09ICcnICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OiAvLyBpbWFnZQogICAgICAgICAgICBpZiggJHRoaXMtPl90bXAxICkgewogICAgICAgICAgICAgICAgJHJldCA9IFxtYW1zX3V0aWxzOjpjaGVja1VwbG9hZCgkdGhpcy0+X3RtcDEpOwogICAgICAgICAgICAgICAgaWYoICEkcmV0WzBdICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXRbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDc6IC8vIHJhZGlvIGJ1dHRvbiBncm91cAogICAgICAgICAgICBpZiggJHZhbCA9PT0gJycgJiYgJHRoaXMtPnJlcXVpcmVkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nLCRuYW1lKSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg6IC8vIGRhdGUKICAgICAgICAgICAgaWYoICR2YWwgPCAxICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyX3ZhbHVlKCkKICAgIHsKICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgIGNhc2UgNjogLy8gaW1hZ2UKICAgICAgICAgICAgJG1vZCA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCk7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dmFsdWUgKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlhbWdlCiAgICAgICAgICAgICAgICAkcGF0aCA9ICRtb2QtPmdldF91cGxvYWRfZGlybmFtZSgpLicvJy4kdGhpcy0+dmFsdWU7CiAgICAgICAgICAgICAgICBpZiggaXNfZmlsZSggJHBhdGggKSApIEB1bmxpbmsoJHBhdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSxudWxsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9zdHByb2Nlc3MoJHVzZXIpCiAgICB7CiAgICAgICAgc3dpdGNoKCAkdGhpcy0+dHlwZSApIHsKICAgICAgICBjYXNlIDY6IC8vIGltYWdlCiAgICAgICAgICAgICRtb2QgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpOwogICAgICAgICAgICBpZiggISR0aGlzLT5fdG1wMSApIHJldHVybjsKICAgICAgICAgICAgaWYoICR0aGlzLT5fdG1wMiApIHsKICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgYW4gZXhpc3RpbmcgZmlsZSB0byBnZXQgcmlkIG9mLgogICAgICAgICAgICAgICAgJHBhdGggPSAkbW9kLT5nZXRfdXBsb2FkX2Rpcm5hbWUoKS4nLycuJHRoaXMtPl90bXAyOwogICAgICAgICAgICAgICAgaWYoIGlzX2ZpbGUoICRwYXRoICkgKSBAdW5saW5rKCRwYXRoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBub3cgd2UgZ290dGEgbW92ZSB0aGUgdXBsb2FkIGZyb20gdGVtcG9yYXJ5IGxvY2F0aW9uIHRvIHBlcm1hbmVudCBsb2NhdGlvbgogICAgICAgICAgICAkcmVzID0gJG1vZC0+TWFuYWdlSW1hZ2VVcGxvYWQoJHRoaXMtPl90bXAxLCAkdGhpcy0+bmFtZSk7CiAgICAgICAgfQogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.Random.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCi8qKg0KICogR2VuZXJhdGUgcmFuZG9tIGNoYXJhY3RlcnMuDQogKg0KICogQGF1dGhvciAgICBMYXVyZW50aXUgVGFuYXNlIDxleHBlcnRwaHBAeWFob28uY29tPg0KICogQHZlcnNpb24gICAxLjENCiAqLw0KDQpjbGFzcyBSYW5kb20NCnsNCgkvKioNCgkgKiBTZXQgZGVmYXVsdCBjaGFyYWN0ZXJzLg0KICAgICAqDQogICAgICogQHZhciAgICAgIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgICBwcml2YXRlDQogICAgICovDQoNCgl2YXIgJF92Y3JzOw0KDQoJLyoqDQoJICogSWYgaGF2ZSBudW1iZXINCiAgICAgKg0KICAgICAqIEB2YXIgICAgICBib29sDQogICAgICogQGFjY2VzcyAgIHByaXZhdGUNCiAgICAgKi8NCg0KCXZhciAkX3ZudW07DQoNCgkvKioNCgkgKiBJZiBkb2Vzbid0IGhhdmUgbnVtYmVyDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgYm9vbA0KICAgICAqIEBhY2Nlc3MgICBwcml2YXRlDQogICAgICovDQoNCgl2YXIgJF92bm90Ow0KDQoJLyoqDQoJICogQ29uc3RydWN0b3INCgkgKg0KCSAqIFNldCBkZWZhdWx0IHZhbHVlcw0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICRjcnMgICBDaGFyYWN0ZXJzIG91dHB1dA0KCSAqIEBwYXJhbSAgYm9vbCAgICAkbnVtICAgV2l0aCBudW1iZXINCgkgKiBAcGFyYW0gIGJvb2wgICAgJG5vdCAgIFdpdGggbm90IG51bWJlcg0KCSAqLw0KDQoJZnVuY3Rpb24gUmFuZG9tKCRjcnMgPSBmYWxzZSwgJG51bSA9IGZhbHNlLCAkbm90ID0gZmFsc2Upew0KCQkkdGhpcy0+X3ZudW0gPSAkbnVtOw0KCQkkdGhpcy0+X3Zub3QgPSAkbm90Ow0KCQlpZighJGNycyl7DQoJCQkkdGhpcy0+X3ZjcnMgPSAiMDEyMzQ1Njc4OSIuDQoJCQkJImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ii4NCgkJCQkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOw0KCQl9ZWxzZXsNCgkJCSR0aGlzLT5fdmNycyA9ICRjcnM7DQoJCQlpZigoJG51bSB8fCAkbm90KSAmJiAhJHRoaXMtPl9yZWMoJGNycywgJG51bSwgJG5vdCkpew0KCQkJCWlmKCRudW0gJiYgJG5vdCkgJGVyciA9ICJudW1iZXIgb3Igbm90IG51bWJlciI7DQoJCQkJZWxzZWlmKCRudW0pICRlcnIgPSAibnVtYmVyIjsNCgkJCQllbHNlaWYoJG5vdCkgJGVyciA9ICJub3QgbnVtYmVyIjsNCgkJCQllbHNlICRlcnIgPSAiY29tcGFyYXRpb24iOw0KCQkJCXRyaWdnZXJfZXJyb3IoIkNsYXNzIFJhbmRvbSAtIFN0cmluZyBpbnB1dCBbICIuJGNycy4iIF0gZG9lc24ndCBoYXZlICIuJGVyciwgRV9VU0VSX0VSUk9SKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIENvbXBhcmUgaW5wdXQgc3RyaW5nDQoJICoNCgkgKiBAYWNjZXNzICBwcml2YXRlDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHN0ciAgICAgIENoYXJhY3RlcnMgaW5wdXQNCgkgKiBAcGFyYW0gICBib29sICAgICAkbnVtYmVyICAgSGF2ZSBudW1iZXINCgkgKiBAcGFyYW0gICBib29sICAgICAkbm90bnVtICAgSGF2ZSBub3QgbnVtYmVyDQoJICogQHJldHVybiAgYm9vbCAgICAgSWYgaGF2ZSBudW1iZXIgb3IvYW5kIG5vdCBudW1iZXINCgkgKi8NCg0KCWZ1bmN0aW9uIF9yZWMoJHN0ciwgJG51bWJlciA9IHRydWUsICRub3RudW0gPSB0cnVlKXsNCgkJJGNudCA9IHN0cmxlbigkc3RyKTsNCgkJJHNldDEgPSAkc2V0MiA9IGZhbHNlOw0KCQlpZigkbnVtYmVyIHx8ICRub3RudW0pew0KCQkJZm9yKCRpPTA7JGk8JGNudDskaSsrKXsNCgkJCQlpZigkc3RyeyRpfSA9PT0gc3RydmFsKGludHZhbCgkc3RyeyRpfSkpKSAkc2V0MSA9IHRydWU7DQoJCQkJZWxzZSAkc2V0MiA9IHRydWU7DQoJCQkJaWYoJHNldDEgJiYgJHNldDIpIGJyZWFrOw0KCQkJfQ0KCQkJaWYoJG51bWJlciAmJiAkbm90bnVtKSByZXR1cm4gKCRzZXQxICYmICRzZXQyKTsNCgkJCWVsc2VpZigkbnVtYmVyKSByZXR1cm4gJHNldDE7DQoJCQllbHNlaWYoJG5vdG51bSkgcmV0dXJuICRzZXQyOw0KCQkJZWxzZSByZXR1cm4gdHJ1ZTsNCgkJfWVsc2UgcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogR2VuZXJhdGUgcmFuZG9tIGNoYXJhY3RlcnMNCgkgKg0KCSAqIEBhY2Nlc3MgIHB1YmxpYw0KCSAqIEBwYXJhbSAgIGludCAgICAgICRsZW4gICBMZW5ndGggb2YgdGhlIHN0cmluZyB5b3Ugd2FudCBnZW5lcmF0ZWQNCgkgKiBAcmV0dXJuICBzdHJpbmcgICBSYW5kb20gY2hhcmFjdGVycw0KCSAqLw0KDQoJZnVuY3Rpb24gZ2V0KCRsZW4pew0KCQlpZighKGlzX2ludCgkbGVuKSAmJiAkbGVuID4gMCkpIHJldHVybiAkdGhpcy0+X3ZjcnM7DQoJCSRyZXQgPSAiIjsNCgkJJGNudCA9IHN0cmxlbigkdGhpcy0+X3ZjcnMpLTE7DQoJCWZvcigkaT0wOyRpPCRsZW47JGkrKykgJHJldCAuPSAkdGhpcy0+X3ZjcnN7cmFuZCgwLCAkY250KX07DQoJCWlmKCR0aGlzLT5fdm51bSB8fCAkdGhpcy0+X3Zub3QpIHJldHVybiAkdGhpcy0+X3JlYygkcmV0LCAkdGhpcy0+X3ZudW0sICR0aGlzLT5fdm5vdCkgPyAkcmV0IDogUmFuZG9tOjpnZXQoJGxlbik7DQoJCWVsc2UgcmV0dXJuICRyZXQ7DQoJfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.RRUtils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBSUlV0aWxzCnsKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIGFycmF5X21lcmdlX2J5X25hbWVfcmVxdWlyZWQoJGFycjEsICRhcnIyKQogIHsKICAgICR4eHJlc3VsdCA9IGFycmF5KCk7CiAgICAvLyBhZGQgaXRlbXMgY29tbW9uIHRvIGFycjEgYW5kIGFycjIKICAgIC8vIGJ1dCBmYXZvciByZXF1aXJlZCBpdGVtcwogICAgaWYoIWlzX2FycmF5KCRhcnIxKSB8fCAhaXNfYXJyYXkoJGFycjIpKXtyZXR1cm47fQogICAgCiAgICBmb3JlYWNoKCRhcnIxIGFzICRhMSkKICAgIHsKICAgICAgZm9yZWFjaCgkYXJyMiBhcyAkYTIpCiAgICAgIHsKICAgICAgICBpZiggIWlzc2V0KCRhMVsnbmFtZSddKSB8fCAhaXNzZXQoJGEyWyduYW1lJ10pICl7Y29udGludWU7fQogICAgICAgIAogICAgICAgIGlmKCRhMVsnbmFtZSddID09ICRhMlsnbmFtZSddKQogICAgICAgIHsKICAgICAgICAgIGlmKCRhMVsncmVxdWlyZWQnXSA9PSAyKQogICAgICAgICAgewogICAgICAgICAgICAkeHhyZXN1bHRbXSA9ICRhMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICR4eHJlc3VsdFtdID0gJGEyOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gYWRkIGl0ZW1zIGluIGFycjEgbm90IGluIHJlc3VsdAogICAgZm9yZWFjaCgkYXJyMSBhcyAkYTEpCiAgICB7CiAgICAgIGlmKCAhaXNzZXQoJGExWyduYW1lJ10pICl7Y29udGludWU7fQogICAgICAKICAgICAgJGZvdW5kID0gRkFMU0U7CiAgICAgIGZvcmVhY2goJHh4cmVzdWx0IGFzICRyZXMpCiAgICAgIHsKICAgICAgICBpZigkYTFbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10pCiAgICAgICAgewogICAgICAgICAgJGZvdW5kID0gVFJVRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgaWYoISRmb3VuZCkKICAgICAgewogICAgICAgICR4eHJlc3VsdFtdID0gJGExOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIGFkZCBpdGVtcyBpbiBhcnIyIG5vdCBpbiByZXN1bHQKICAgIGZvcmVhY2goJGFycjIgYXMgJGEyKQogICAgewogICAgICBpZiggIWlzc2V0KCRhMlsnbmFtZSddKSApe2NvbnRpbnVlO30KICAgICAgJGZvdW5kID0gRkFMU0U7CiAgICAgIGZvcmVhY2goJHh4cmVzdWx0IGFzICRyZXMpCiAgICAgIHsKICAgICAgICBpZigkYTJbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10pCiAgICAgICAgewogICAgICAgICAgJGZvdW5kID0gVFJVRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICBpZighJGZvdW5kKQogICAgICB7CiAgICAgICAgJHh4cmVzdWx0W10gPSAkYTI7CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICR4eHJlc3VsdDsKICB9CiAgCiAgZnVuY3Rpb24gY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5KCRlMSwgJGUyKQogIHsKICAgIGlmKCRlMVsnc29ydF9rZXknXSA8ICRlMlsnc29ydF9rZXknXSkKICAgIHsKICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgZWxzZSBpZigkZTFbJ3NvcnRfa2V5J10gPiAkZTJbJ3NvcnRfa2V5J10pCiAgICB7CiAgICAgIHJldHVybiAxOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBpbXBsb2RlX3dpdGhfa2V5KCRhc3NvYywgJGluZ2x1ZSA9ICc9JywgJG91dGdsdWUgPSAnJicpCiAgewogICAgJHJldHVybiA9IE5VTEw7CiAgICBmb3JlYWNoKCRhc3NvYyBhcyAkdGsgPT4gJHR2KQogICAgewogICAgICAkcmV0dXJuIC49ICRvdXRnbHVlIC4gJHRrIC4gJGluZ2x1ZSAuICR0djsKICAgIH0KICAgIAogICAgcmV0dXJuIHN1YnN0cigkcmV0dXJuLCBzdHJsZW4oJG91dGdsdWUpKTsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBteUNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkbmFtZSwgJHZhbHVlID0gJycsICRzZWxlY3RlZHZhbHVlID0gJycsICRhZGR0dGV4dCA9ICcnKQogIHsKICAgICR0ZXh0ID0gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyIgdmFsdWU9IicgLiAkdmFsdWUgLiAnIic7CiAgICAkYXJyICA9IGV4cGxvZGUoIiwiLCAkc2VsZWN0ZWR2YWx1ZSk7CiAgICBmb3JlYWNoKCRhcnIgYXMgJGEpCiAgICB7CiAgICAgIGlmKCRhID09ICR2YWx1ZSkKICAgICAgewogICAgICAgICR0ZXh0IC49ICcgJyAuICdjaGVja2VkPSJjaGVja2VkIic7CiAgICAgIH0KICAgIH0KICAgIGlmKCRhZGR0dGV4dCAhPSAnJykKICAgIHsKICAgICAgJHRleHQgLj0gJyAnIC4gJGFkZHR0ZXh0OwogICAgfQogICAgJHRleHQgLj0gIiAvPlxuIjsKICAgIAogICAgcmV0dXJuICR0ZXh0OwogIH0KICAKfSAvLyBFbmQgb2YgY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.upgrade_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmNsYXNzIHVwZ3JhZGVfdXRpbHMNCnsNCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb250ZW50X3R5cGVfcmVwYWlyKCkNCiAgew0KICAgICRxdWVyeSAgICAgID0gJ1NFTEVDVCAqIEZST00gJw0KICAgICAgICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgICAgICAgIC4gJ2NvbnRlbnQnOw0KICAgICRhbGxfY29udGVudCA9IFxjbXNfdXRpbHM6OmdldF9kYigpLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgDQogICAgd2hpbGUoJGNvbnRlbnRfcGllY2UgPSAkYWxsX2NvbnRlbnQtPkZldGNoUm93KCkpDQogICAgew0KICAgICAgaWYoICRjb250ZW50X3BpZWNlWyd0eXBlJ10gPT09ICdtYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhJykNCiAgICAgIHsNCiAgICAgICAgJHF1ZXJ5ICAgPSAnVVBEQVRFICcNCiAgICAgICAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgICAgICAgIC4gJ2NvbnRlbnQgU0VUIHR5cGU9Im1hbXNfcHJvdGVjdGVkX3NlY19oZWFkIiBXSEVSRSBjb250ZW50X2lkPT8nOw0KICAgICAgICAkcGFyYW1zICA9IFskY29udGVudF9waWVjZVsnY29udGVudF9pZCddXTsNCiAgICAgICAgJGRiciA9IFxjbXNfdXRpbHM6OmdldF9kYigpLT5FeGVjdXRlKCRxdWVyeSwgJHBhcmFtcyk7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyB1c2VyIGltcGxlbWVudHMgXEFycmF5QWNjZXNzCnsKICBwcml2YXRlICRfZGF0YSA9IFsKICAgICdpZCcgICAgICAgICAgICAgICA9PiBOVUxMLAogICAgJ3VzZXJuYW1lJyAgICAgICAgID0+IE5VTEwsCiAgICAnY3JlYXRlZGF0ZScgICAgICAgPT4gTlVMTCwKICAgICdleHBpcmVzJyAgICAgICAgICA9PiBOVUxMLAogICAgJ25vbnN0ZCcgICAgICAgICAgID0+IEZBTFNFLAogICAgJ2Rpc2FibGVkJyAgICAgICAgID0+IEZBTFNFLAogICAgJ2ZvcmNlX25ld3B3JyAgICAgID0+IEZBTFNFLAogICAgJ2ZvcmNlX2Noc2V0dGluZ3MnID0+IEZBTFNFLAogICAgJ211c3RfdmFsaWRhdGUnICAgID0+IEZBTFNFLAogICAgJ2xvZ2dlZGluJyAgICAgICAgID0+IE5VTEwKICBdOwogICAgcHJpdmF0ZSAkX25ld19wYXNzd29yZDsKICAgIHByaXZhdGUgJF9wcm9wczsKICAgIHByaXZhdGUgJF9ncm91cHM7IC8vIGxhenkgbG9hZGVkLgogICAgcHJpdmF0ZSAkX2RpcnR5OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRHZXQoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9fZ2V0KCRrZXkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRTZXQoJGtleSwkdmFsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X19zZXQoJGtleSwkdmFsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0VW5zZXQoJGtleSkgeyAvKiBkbyBub3RoaW5nICovIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCRrZXkpIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPl9kYXRhWyRrZXldKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnaWQnOgogICAgICAgICAgICByZXR1cm4gKGludCkgJHRoaXMtPl9kYXRhWyRrZXldOwoKICAgICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgICAgICAgIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CgogICAgICAgIGNhc2UgJ2NyZWF0ZWRhdGVfdHMnOgogICAgICAgICAgICBpZiggISR0aGlzLT5fZGF0YVsnY3JlYXRlZGF0ZSddICkgcmV0dXJuIDA7CiAgICAgICAgICAgICRkYiA9IFxDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXREYigpOwogICAgICAgICAgICByZXR1cm4gJGRiLT5Vbml4VGltZVN0YW1wKCR0aGlzLT5fZGF0YVsnY3JlYXRlZGF0ZSddKTsKCiAgICAgICAgY2FzZSAnY3JlYXRlZGF0ZV9zdHInOiAvLyBkYiBkYXRlCiAgICAgICAgICAgIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVsnY3JlYXRlZGF0ZSddKTsKCiAgICAgICAgY2FzZSAnZXhwaXJlc190cyc6CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9kYXRhWydleHBpcmVzJ10gKSByZXR1cm4gMDsKICAgICAgICAgICAgJGRiID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldERiKCk7CiAgICAgICAgICAgIHJldHVybiAkZGItPlVuaXhUaW1lU3RhbXAoJHRoaXMtPl9kYXRhWydleHBpcmVzJ10pOwoKICAgICAgICBjYXNlICdleHBpcmVzX3N0cic6IC8vIGRiIGRhdGUKICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHRoaXMtPl9kYXRhWydleHBpcmVzJ10pOwoKICAgICAgICBjYXNlICdub25zdGQnOgogICAgICAgIGNhc2UgJ2Rpc2FibGVkJzoKICAgICAgICBjYXNlICdmb3JjZV9uZXdwdyc6CiAgICAgICAgY2FzZSAnZm9yY2VfY2hzZXR0aW5ncyc6CiAgICAgICAgY2FzZSAnbXVzdF92YWxpZGF0ZSc6CiAgICAgICAgY2FzZSAnbG9nZ2VkaW4nOgogICAgICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBtZW1iZXIgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfZXhwaXJlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+ZXhwaXJlc190cyA8IHRpbWUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wcm9wZXJ0eSgka2V5KQogICAgewogICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgIGlmKCAhJGtleSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQga2V5IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X3Byb3BzWyRrZXldKSApIHJldHVybiAkdGhpcy0+X3Byb3BzWyRrZXldOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJvcGVydGllcygpCiAgICB7CiAgICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9wcm9wcykgKSAkdGhpcy0+X3Byb3BzID0gW107CiAgICAgIAogICAgICByZXR1cm4gJHRoaXMtPl9wcm9wczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwcygpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X2dyb3VwcyApIHsKICAgICAgICAgICAgaWYoICEkdGhpcy0+aWQgKSByZXR1cm47CiAgICAgICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAgICAgJHRtcCA9ICRtb2QtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR0aGlzLT5pZCk7CiAgICAgICAgICAgIGlmKCAkdG1wICYmIGNvdW50KCR0bXApICkgewogICAgICAgICAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSAkb3V0W10gPSAoaW50KSAkb25lWydncm91cGlkJ107CiAgICAgICAgICAgICAgICAkdGhpcy0+X2dyb3VwcyA9ICRvdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZ3JvdXBzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtZW1iZXJvZigkZ2lkKQogICAgewogICAgICAgICRnaWQgPSAoaW50KSAkZ2lkOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZ2lkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICRncm91cHMgPSAkdGhpcy0+Z2V0X2dyb3VwcygpOwogICAgICAgIHJldHVybiBpbl9hcnJhKCRnaWQsJGdyb3Vwcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkKCR1c2VyX2lkKQogICAgewogICAgICAgICR1c2VyX2lkID0gKGludCkgJHVzZXJfaWQ7CiAgICAgICAgaWYoICR1c2VyX2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdXNlcl9pZCBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJHJvdyA9IFxtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1c2VyX2lkLFRSVUUpOwogICAgICAgICRvYmogPSBuZXcgc2VsZigpOwoKICAgICAgICAka2V5cyA9IGFycmF5X2tleXMoJG9iai0+X2RhdGEpOwogICAgICAgIGZvcmVhY2goICRrZXlzIGFzICRrZXkgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAnaWQnOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSAoaW50KSAkcm93WyRrZXldOwogICAgICAgICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICAgICAgICBjYXNlICdleHBpcmVzJzoKICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gdHJpbSgkcm93WyRrZXldKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnbm9uc3RkJzoKICAgICAgICAgICAgY2FzZSAnZGlzYWJsZWQnOgogICAgICAgICAgICBjYXNlICdmb3JjZV9uZXdwdyc6CiAgICAgICAgICAgIGNhc2UgJ2ZvcmNlX2Noc2V0dGluZ3MnOgogICAgICAgICAgICBjYXNlICdtdXN0X3ZhbGlkYXRlJzoKICAgICAgICAgICAgY2FzZSAnbG9nZ2VkaW4nOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcm93WyRrZXldKSApICRvYmotPl9kYXRhWyRrZXldID0gKGJvb2wpICRyb3dbJGtleV07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbm90ZTogZW5jcnlwdGVkIHByb3BlcnRpZXMgYXJlIGFscmVhZHkgZGVjcnlwdGVkIGhlcmUuCiAgICAgIGlmKGlzc2V0KCRyb3dbJ2Zwcm9wcyddKSAmJiBjb3VudCgkcm93WydmcHJvcHMnXSkpCiAgICAgIHsKICAgICAgICAkb2JqLT5fcHJvcHMgPSBbXTsKICAgICAgICBmb3JlYWNoKCRyb3dbJ2Zwcm9wcyddIGFzICRwcm9wKQogICAgICAgIHsKICAgICAgICAgICRvYmotPl9wcm9wc1skcHJvcFsndGl0bGUnXV0gPSAkcHJvcFsnZGF0YSddOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICBpZiggZW1wdHkoJG9iai0+X3Byb3BzKSApICRvYmotPl9wcm9wcyA9IFtdOwogICAgICB9CgogICAgICAgIHJldHVybiAkb2JqOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.user_edit_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgovLyB0aGlzIGNsYXNzIGFpZHMgaW4gYWRkaW5nIG9yIGVkaXRpbmcgYSB1c2VyCi8vIGl0IGVuY2Fwc3VsYXRlcyB0aGUgcmVhZCBvbmx5IHVzZXIgb2JqZWN0LgovLyBhbmQgcHJvdmlkZXMgZWRpdGluZyBhbmQgc2F2aW5nIGZ1bmN0aW9uYWxpdHkuCmNsYXNzIHVzZXJfZWRpdF9hc3Npc3RhbnQKewogICAgcHJpdmF0ZSAkX3VzZXI7CiAgICBwcml2YXRlICRfbmV3X3VpZDsKICAgIHByaXZhdGUgJF9uZXdfdXNlcm5hbWU7CiAgICBwcml2YXRlICRfbmV3X3Bhc3N3b3JkOwogICAgcHJpdmF0ZSAkX3JlcGVhdF9wYXNzd29yZDsKICAgIHByaXZhdGUgJF9kcmFmdF9ncm91cHM7CiAgICBwcml2YXRlICRfZHJhZnRfcHJvcHM7CiAgICBwcml2YXRlICRfZXhwaXJlczsKICAgIHByaXZhdGUgJF9jcmVhdGVkYXRlOwogICAgcHJpdmF0ZSAkX2lzX2Rpc2FibGVkOwogICAgcHJpdmF0ZSAkX2ZvcmNlX3Bhc3N3b3JkX2NoYW5nZTsKICAgIHByaXZhdGUgJF9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3M7CiAgICBwcml2YXRlICRfbXVzdF92YWxpZGF0ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHVzZXJfaWQpCiAgICB7CiAgICAgICRtb2QgICAgID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgICAgJHVzZXJfaWQgPSAoaW50KSR1c2VyX2lkOwogICAgICAKICAgICAgaWYoJHVzZXJfaWQgPCAxKQogICAgICB7CiAgICAgICAgLy8gYSBicmFuZCBuZXcgdXNlci4uLiBzZXQgc29tZSBkZWZhbHQgdmFsdWVzLgogICAgICAgICR1c2VyID0gbmV3IHVzZXI7CiAgICAgICAgCiAgICAgICAgaWYoJG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlX3JhbmRvbXVzZXJuYW1lJykpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPm5ld191c2VybmFtZSA9ICRtb2QtPkdlbmVyYXRlUmFuZG9tVXNlcm5hbWUoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGRmbHRfZ3JvdXAgPSAoaW50KSRtb2QtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnKTsKICAgICAgICAkb25lX2dyb3VwICA9IChib29sKSRtb2QtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKTsKICAgICAgICAkZ3JvdXBzICAgICA9ICRtb2QtPkdldEdyb3VwTGlzdCgpOwogICAgICAgIAogICAgICAgICMgcmV2aXNpdCAoSk0pCiAgICAgICAgaWYoIWNvdW50KCRncm91cHMpKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgYW55IGdyb3Vwcy4uLiBjYW5ub3QgY3JlYXRlIHVzZXJzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRncm91cHMgPSBhcnJheV9mbGlwKCRncm91cHMpOyAvLyBpdCdzIGJhY2t3YXJkcyBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgogICAgICAgIAogICAgICAgIGlmKCRkZmx0X2dyb3VwKQogICAgICAgIHsKICAgICAgICAgIGlmKGlzc2V0KCRncm91cHNbJGRmbHRfZ3JvdXBdKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHNbXSA9ICRkZmx0X2dyb3VwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCRvbmVfZ3JvdXApCiAgICAgICAgewogICAgICAgICAgJGtleXMgICAgICAgICAgICAgICAgICA9IGFycmF5X2tleXMoJGdyb3Vwcyk7CiAgICAgICAgICAkdGhpcy0+X2RyYWZ0X2dyb3Vwc1tdID0gJGtleXNbMF07CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0bXAgICAgICAgICAgICA9IChpbnQpJG1vZC0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlYWdlX21vbnRocycsIDUyMCk7CiAgICAgICAgJHRoaXMtPl9leHBpcmVzID0gc3RydG90aW1lKCIreyR0bXB9IG1vbnRocyAwMDowMCIpOwogICAgICAgIAogICAgICAgIGlmKCEkdGhpcy0+X2V4cGlyZXMgfHwgJHRtcCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICR0aGlzLT5fZXhwaXJlcyA9IFBIUF9JTlRfTUFYOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAkdXNlciAgICAgICAgICAgICAgICA9IHVzZXI6OmxvYWQoJHVzZXJfaWQpOwogICAgICAgICR0aGlzLT5fZHJhZnRfZ3JvdXBzID0gJHVzZXItPmdldF9ncm91cHMoKTsKICAgICAgICAkdGhpcy0+X2NyZWF0ZWRhdGUgICA9ICR1c2VyLT5jcmVhdGVkYXRlX3RzOwogICAgICAgICR0aGlzLT5fZXhwaXJlcyAgICAgID0gJHVzZXItPmV4cGlyZXNfdHM7CiAgICAgIH0KICAgICAgJHRoaXMtPl9kcmFmdF9wcm9wcyA9ICR1c2VyLT5nZXRfcHJvcGVydGllcygpOwogICAgICAkdGhpcy0+X3VzZXIgICAgICAgID0gJHVzZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICAgICAgaWYoIGlzX251bGwoJHRoaXMtPl9uZXdfdWlkKSApIHJldHVybiAkdGhpcy0+X3VzZXItPmlkOwogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9uZXdfdWlkOwoKICAgICAgICBjYXNlICduZXdfdXNlcm5hbWUnOgogICAgICAgICAgICBpZiggISR0aGlzLT5fbmV3X3VzZXJuYW1lICkgcmV0dXJuICR0aGlzLT5fdXNlci0+dXNlcm5hbWU7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X25ld191c2VybmFtZTsKCiAgICAgICAgY2FzZSAnbmV3X3Bhc3N3b3JkJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fbmV3X3Bhc3N3b3JkOwoKICAgICAgICBjYXNlICdyZXBlYXRfcGFzc3dvcmQnOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9yZXBlYXRfcGFzc3dvcmQ7CgogICAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9jcmVhdGVkYXRlOwoKICAgICAgICBjYXNlICdleHBpcmVzJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZXhwaXJlczsKCiAgICAgICAgY2FzZSAnZm9yY2VfcGFzc3dvcmRfY2hhbmdlJzoKICAgICAgICAgICAgaWYoIGlzX251bGwoJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2UpICkgcmV0dXJuICR0aGlzLT5fdXNlci0+Zm9yY2VfbmV3cHc7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2ZvcmNlX3Bhc3N3b3JkX2NoYW5nZTsKCiAgICAgICAgY2FzZSAnZm9yY2VfY2hhbmdlX3NldHRpbmdzJzoKICAgICAgICAgICAgaWYoIGlzX251bGwoJHRoaXMtPl9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3MpICkgcmV0dXJuICR0aGlzLT5fdXNlci0+Zm9yY2VfY2hzZXR0aW5nczsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZm9yY2VfY2hhbmdlX3NldHRpbmdzOwoKICAgICAgICBjYXNlICdtdXN0X3ZhbGlkYXRlJzoKICAgICAgICAgICAgaWYoIGlzX251bGwoJHRoaXMtPl9tdXN0X3ZhbGlkYXRlKSApIHJldHVybiAkdGhpcy0+X3VzZXItPm11c3RfdmFsaWRhdGU7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X211c3RfdmFsaWRhdGU7CgogICAgICAgIGNhc2UgJ2lzX2Rpc2FibGVkJzoKICAgICAgICAgICAgaWYoIGlzX251bGwoJHRoaXMtPl9pc19kaXNhYmxlZCkgKSByZXR1cm4gJHRoaXMtPl91c2VyLT5kaXNhYmxlZDsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5faXNfZGlzYWJsZWQ7CgogICAgICAgIGNhc2UgJ3ZlcmlmeWNvZGUnOgogICAgICAgICAgICAvLyBnZXR0YWJsZSBvbmx5CiAgICAgICAgICAgIGlmKCAkdGhpcy0+aWQgPiAxICkgcmV0dXJuICRtYW1zLT5HZXRVc2VyVGVtcENvZGUoICR0aGlzLT5pZCApOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fdXNlci0+X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCgka2V5LCR2YWwpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ25ld191c2VybmFtZSc6CiAgICAgICAgICAgICR0aGlzLT5fbmV3X3VzZXJuYW1lID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ25ld19wYXNzd29yZCc6CiAgICAgICAgICAgICR0aGlzLT5fbmV3X3Bhc3N3b3JkID0gJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3JlcGVhdF9wYXNzd29yZCc6CiAgICAgICAgICAgICR0aGlzLT5fcmVwZWF0X3Bhc3N3b3JkID0gJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICAgICAgICAkdGhpcy0+X2NyZWF0ZWRhdGUgPSAoaW50KSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZXhwaXJlcyc6CiAgICAgICAgICAgICR0aGlzLT5fZXhwaXJlcyA9IChpbnQpICR2YWw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdpc19kaXNhYmxlZCc6CiAgICAgICAgICAgICR0aGlzLT5faXNfZGlzYWJsZWQgPSAoYm9vbCkgJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2ZvcmNlX3Bhc3N3b3JkX2NoYW5nZSc6CiAgICAgICAgICAgICR0aGlzLT5fZm9yY2VfcGFzc3dvcmRfY2hhbmdlID0gKGJvb2wpICR2YWw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdmb3JjZV9jaGFuZ2Vfc2V0dGluZ3MnOgogICAgICAgICAgICAkdGhpcy0+X2ZvcmNlX2NoYW5nZV9zZXR0aW5ncyA9IChib29sKSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnbXVzdF92YWxpZGF0ZSc6CiAgICAgICAgICAgICR0aGlzLT5fbXVzdF92YWxpZGF0ZSA9IChib29sKSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgJHRoaXMtPl91c2VyLT5fX3NldCgka2V5LCR2YWwpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgICAgICBpZiggJHRoaXMtPl91c2VyLT5pZCA8IDEgKSB7CiAgICAgICAgICAgIC8vIG5ldyB1c2VyCiAgICAgICAgICAgIC8vIG11c3QgaGF2ZSBhIHVzZXJuYW1lLCBhbmQgaXQgbXVzdCBiZSB2YWxpZAogICAgICAgICAgICBpZiggISRtb2QtPklzVmFsaWRVc2VybmFtZSggJHRoaXMtPm5ld191c2VybmFtZSApICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2ludmFsaWR1c2VybmFtZScpKTsKICAgICAgICAgICAgJHRfdWlkID0gJG1vZC0+R2V0VXNlcklEKCR0aGlzLT5uZXdfdXNlcm5hbWUpOwogICAgICAgICAgICBpZiggJHRfdWlkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cycpKTsKCiAgICAgICAgICAgIC8vIG11c3QgaGF2ZSBhIHBhc3N3b3JkLCBhbmQgaXQgbXVzdCBiZSB2YWxpZAogICAgICAgICAgICBpZiggISR0aGlzLT5uZXdfcGFzc3dvcmQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgICAgICAgICBpZiggISRtb2QtPmlzVmFsaWRQYXNzd29yZCgkdGhpcy0+bmV3X3Bhc3N3b3JkKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CgogICAgICAgICAgICAvLyByZXBlYXQgcGFzc3dvcmQgbXVzdCBiZSB2YWxpZC4KICAgICAgICAgICAgaWYoICR0aGlzLT5uZXdfcGFzc3dvcmQgIT0gJHRoaXMtPnJlcGVhdF9wYXNzd29yZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9wYXNzd29yZG1pc21hdGNoJykpOwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBlZGl0aW5nIGEgdXNlci4KICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIHVzZXJuYW1lLCBpdCBtdXN0IGJlIHZhbGlkIChjaGFuZ2luZyB1c2VybmFtZSkKICAgICAgICAgICAgaWYoICR0aGlzLT5fbmV3X3VzZXJuYW1lICYmICEkbW9kLT5Jc1ZhbGlkVXNlcm5hbWUoJHRoaXMtPl9uZXdfdXNlcm5hbWUsIEZBTFNFKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXNlcm5hbWUnKSk7CiAgICAgICAgICAgICR0X3VpZCA9ICRtb2QtPkdldFVzZXJJRCgkdGhpcy0+bmV3X3VzZXJuYW1lKTsKICAgICAgICAgICAgaWYoICR0X3VpZCAmJiAkdF91aWQgIT0gJHRoaXMtPl91c2VyLT5pZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CgogICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgcGFzc3dvcmQsIGl0IG11c3QgYmUgdmFsaWQsIGFuZCByZXBlYXQgbXVzdCBtYXRjaAogICAgICAgICAgICBpZiggJHRoaXMtPm5ld19wYXNzd29yZCApIHsKICAgICAgICAgICAgICAgIGlmKCAhJG1vZC0+aXNWYWxpZFBhc3N3b3JkKCR0aGlzLT5uZXdfcGFzc3dvcmQpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXNzd29yZCcpKTsKCiAgICAgICAgICAgICAgICAvLyByZXBlYXQgcGFzc3dvcmQgbXVzdCBiZSB2YWxpZC4KICAgICAgICAgICAgICAgIGlmKCAkdGhpcy0+bmV3X3Bhc3N3b3JkICE9ICR0aGlzLT5yZXBlYXRfcGFzc3dvcmQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbmVlZCBhIHZhbGlkIGV4cGlyeSBkYXRlIHdoZW4gYWRkaW5nL2VkaXRpbmcgYSB1c2VyLgogICAgICAgIGlmKCAhJHRoaXMtPmV4cGlyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnKSk7CgogICAgICAgIC8vIGlmIHJlcXVpcmUgbWVtYmVyc2hpcCBpbiBvbmUgZ3J1b3AsIG1ha2Ugc3VyZSB3ZSBoYXZlIG9uZS4KICAgICAgICBpZiggJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpICYmIGNvdW50KCR0aGlzLT5fZHJhZnRfZ3JvdXBzKSA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVleGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2dyb3VwcygkZ3JvdXBzID0gbnVsbCkKICAgIHsKICAgICAgICBpZiggaXNfbnVsbCgkZ3JvdXBzKSApIHsKICAgICAgICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHMgPSBbXTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiggIWlzX2FycmF5KCRncm91cHMpIHx8ICFjb3VudCgkZ3JvdXBzKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZ3JvdXAgYXJyYXkgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkb25lICkgewogICAgICAgICAgICAkb25lID0gKGludCkgJG9uZTsKICAgICAgICAgICAgaWYoICRvbmUgPCAxICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJG9uZSwkdG1wKSApICR0bXBbXSA9ICRvbmU7CiAgICAgICAgfQogICAgICAgICR0bXAgPSBhcnJheV91bmlxdWUoJHRtcCk7CiAgICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHMgPSAkdG1wOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtZW1iZXJvZigkZ2lkKQogICAgewogICAgICAgICRnaWQgPSAoaW50KSAkZ2lkOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZ2lkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIHJldHVybiAoaXNfYXJyYXkoJHRoaXMtPl9kcmFmdF9ncm91cHMpICYmIGluX2FycmF5KCRnaWQsJHRoaXMtPl9kcmFmdF9ncm91cHMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZHJhZnRfZ3JvdXBzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcHJvcGVydHkoJG5hbWUsJHZhbCkKICAgIHsKICAgICAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgICAgIGlmKCAhJG5hbWUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0gPSAoc3RyaW5nKSAkdmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJvcGVydHkoJG5hbWUpCiAgICB7CiAgICAgICAgJG5hbWUgPSB0cmltKCRuYW1lKTsKICAgICAgICBpZiggISRuYW1lICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBuYW1lIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RyYWZ0X3Byb3BzWyRuYW1lXSkgKSByZXR1cm4gJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVyYXNlX3Byb3BlcnR5KCRuYW1lKQogICAgewogICAgICAgICRuYW1lID0gdHJpbSgkbmFtZSk7CiAgICAgICAgaWYoICEkbmFtZSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgbmFtZSBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0pICkgdW5zZXQoJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5fdmFsaWRhdGUoKQogICAgewogICAgICAgIC8vIHRlc3QgaWYgdGhlcmUgaXMgZW5vdWdoIGluZm9ybWF0aW9uIGZvciB0aGlzIHVzZXIgdG8gYmUgYWJsZSB0byByZS12YWxpZGF0ZSBoaW1zZWxmCiAgICAgICAgaWYoICR0aGlzLT5pZCA8IDEgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICRtYW1zID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgICAgICBpZiggJG1hbXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykgKSByZXR1cm4gVFJVRTsKCiAgICAgICAgJHByb3BzID0gXG1hbXNfdXRpbHM6OmdldF9wcm9wZXJ0aWVzX2Zvcl9ncm91cHMoICR0aGlzLT5nZXRfZ3JvdXBzKCkgKTsKICAgICAgICBpZiggIWNvdW50KCRwcm9wcykgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgJGFsbGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAkZm5kID0gbnVsbDsKICAgICAgICBmb3JlYWNoKCAkcHJvcHMgYXMgJHByb3AgKSB7CiAgICAgICAgICAgICRwcm9wX25hbWUgPSAkcHJvcFsnbmFtZSddOwogICAgICAgICAgICBpZiggaXNzZXQoJGFsbGRlZm5zWyRwcm9wX25hbWVdKSAmJiAkYWxsZGVmbnNbJHByb3BfbmFtZV1bJ3R5cGUnXSA9PSAyICkgewogICAgICAgICAgICAgICAgJHZhbCA9ICR0aGlzLT5nZXRfcHJvcGVydHkoJHByb3BfbmFtZSk7CiAgICAgICAgICAgICAgICBpZiggJHZhbCApIHJldHVybiBUUlVFOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RvcmUoKQogICAgewogICAgICAgICRrZXkgPSBtZDUoX19GSUxFX18pOwogICAgICAgICRfU0VTU0lPTlska2V5XSA9IHNlcmlhbGl6ZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZSgpCiAgICB7CiAgICAgICAgJGtleSA9IG1kNShfX0ZJTEVfXyk7CiAgICAgICAgaWYoICFpc3NldCgkX1NFU1NJT05bJGtleV0pICkgcmV0dXJuOwogICAgICAgICRvYmogPSB1bnNlcmlhbGl6ZSgkX1NFU1NJT05bJGtleV0pOwogICAgICAgIHVuc2V0KCRfU0VTU0lPTlska2V5XSk7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogICAgewogICAgICAkdWlkID0gJHRoaXMtPmlkOwogICAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAKICAgICAgaWYoJHVpZCA8IDEpCiAgICAgIHsKICAgICAgICAvLyBhZGRpbmcgYSBuZXcgdXNlcgogICAgICAgICRyZXQgPSAkbW9kLT5BZGRVc2VyKCR0aGlzLT5uZXdfdXNlcm5hbWUsICR0aGlzLT5uZXdfcGFzc3dvcmQsICR0aGlzLT5leHBpcmVzLCBGQUxTRSwgJHRoaXMtPmNyZWF0ZWRhdGUpOwogICAgICAgIAogICAgICAgIGlmKCFpc19hcnJheSgkcmV0KSB8fCAkcmV0WzBdID09IEZBTFNFKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmV0WzFdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHVpZCA9ICR0aGlzLT5fbmV3X3VpZCA9IChpbnQpJHJldFsxXTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAvLyB1cGRhdGluZyBhbiBleGlzdGluZyB1c2VyCiAgICAgICAgJHJlcyA9ICRtb2QtPlNldFVzZXIoJHVpZCwgJHRoaXMtPm5ld191c2VybmFtZSwgJHRoaXMtPm5ld19wYXNzd29yZCwgJHRoaXMtPmV4cGlyZXMpOwogICAgICAgIAogICAgICAgIGlmKCFpc19hcnJheSgkcmVzKSB8fCAkcmVzWzBdID09IEZBTFNFKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignRXJyb3Igc2V0dGluZyB1c2VyICcgLiAkcmVzWzFdKTsKICAgICAgICB9CiAgICAgIH0KICAKICAgICAgJG1vZC0+U2V0VXNlckRpc2FibGVkKCR1aWQsICR0aGlzLT5pc19kaXNhYmxlZCk7CiAgICAgICRtb2QtPkZvcmNlUGFzc3dvcmRDaGFuZ2UoJHVpZCwgJHRoaXMtPmZvcmNlX3Bhc3N3b3JkX2NoYW5nZSk7CiAgICAgICRtb2QtPkZvcmNlQ2hhbmdlU2V0dGluZ3MoJHVpZCwgJHRoaXMtPmZvcmNlX2NoYW5nZV9zZXR0aW5ncyk7CiAgICAgICRtb2QtPkZvcmNlVmVyaWZ5KCR1aWQsICR0aGlzLT5tdXN0X3ZhbGlkYXRlKTsKICAKICAgICAgLy8gZG8gdGhpcywganVzdCBpIG4gY2FzZS4KICAgICAgJG1vZC0+UmVtb3ZlVXNlclRlbXBDb2RlKCR1aWQpOwogIAogICAgICAvLyBhZGQgdGhlIHVzZXIgdG8gaGlzIGdyb3VwcwogICAgICAkcmV0ID0gJG1vZC0+U2V0VXNlckdyb3VwcygkdWlkLCAkdGhpcy0+X2RyYWZ0X2dyb3Vwcyk7CiAgICAgIGlmKCFpc19hcnJheSgkcmV0KSB8fCAkcmV0WzBdID09IEZBTFNFKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2NhbnRhc3NpZ251c2VyJykpOwogICAgICB9CiAgCiAgICAgIC8vIGFuZCB0aGVuIGFkZCBoaXMgcHJvcGVydGllcy4KICAgICAgLy8kbW9kLT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCAnJywgJHVpZCwgVFJVRSApOyAvLyBERUxFVEUgQUxMIFBST1BFUlRJRVMKICAgICAgaWYoY291bnQoJHRoaXMtPl9kcmFmdF9wcm9wcykpCiAgICAgIHsKICAgICAgICBmb3JlYWNoKCR0aGlzLT5fZHJhZnRfcHJvcHMgYXMgJHByb3BfbmFtZSA9PiAkdmFsKQogICAgICAgIHsKICAgICAgICAgICRyZXQgPSAkbW9kLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wX25hbWUsICR2YWwsICR1aWQpOwogICAgICAgICAgaWYoISRyZXQpCiAgICAgICAgICB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignRXJyb3IgU2V0dGluZyBwcm9wZXJ0eSAnIC4gJHByb3BfbmFtZSAuICcgdG8gJyAuICR2YWwgLiAnIGZvciB1c2VyICcgLiAkdWlkKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.verification_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CnVzZSBcbWFtc191dGlsczsKCmFic3RyYWN0IGNsYXNzIHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQKewogICAgcHJvdGVjdGVkICRtYW1zOwogICAgcHJpdmF0ZSAkX2Rlc3RwYWdlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggXE1BTVMgJG1vZCApCiAgICB7CiAgICAgICAgJHRoaXMtPm1hbXMgPSAkbW9kOwogICAgfQogICAgCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdlbmVyYXRlX2Rlc3RwYWdlKCR1aWQpCiAgICB7CiAgICAgICAgJGRmbHQgPSBcQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICAgICRwYWdlID0gbWFtc191dGlsczo6cmVzb2x2ZV9wcmVmdHBsX3RvX3BhZ2UoJ3BhZ2VpZF9vbnZlcmlmeScsJHVpZCk7CiAgICAgICAgaWYoICEkcGFnZSApICRwYWdlID0gJGRmbHQ7CiAgICAgICAgcmV0dXJuICRwYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGVzdHBhZ2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2Rlc3RwYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZGVzdHBhZ2UoJHN0cikKICAgIHsKICAgICAgICBpZiggJHN0ciApIHsKICAgICAgICAgICAgJHRoaXMtPl9kZXN0cGFnZSA9ICR0aGlzLT5tYW1zLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRzdHIsJHRoaXMtPl9kZXN0cGFnZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZm9yY2VfdmVyaWZ5KCAkdWlkLCAkZmxhZyA9IHRydWUgKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCAnSW52YWxpZCB1aWQgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgCiAgICAgICAgaWYoICRmbGFnICkgewogICAgICAgICAgICAkY29kZSA9IG1hbXNfdXRpbHM6OmdlbmVyYXRlX3JhbmRvbV9wcmludGFibGVfc3RyaW5nKCk7CiAgICAgICAgICAgICR0aGlzLT5tYW1zLT5TZXRVc2VyVGVtcENvZGUoICR1aWQsICRjb2RlICk7CiAgICAgICAgICAgICR0aGlzLT5tYW1zLT5Gb3JjZVZlcmlmeSggJHVpZCwgVFJVRSApOwogICAgICAgICAgICByZXR1cm4gJGNvZGU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+bWFtcy0+UmVtb3ZlVXNlclRlbXBDb2RlKCAkdWlkICk7CiAgICAgICAgICAgICR0aGlzLT5tYW1zLT5Gb3JjZVZlcmlmeSggJHVpZCwgRkFMU0UgKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdmVyaWZ5X2Zvcm1fdXJsKCR1aWQsICRjb2RlID0gbnVsbCApCiAgICB7CiAgICAgICAgJHVpZCA9IChpbnQpICR1aWQ7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oICdJbnZhbGlkIHVpZCBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICAkY29kZSA9IHRyaW0oJGNvZGUpOwogICAgICAgIGlmKCAhJGNvZGUgKSAkY29kZSA9ICd4eHh4JzsKICAgICAgICAKICAgICAgICAkZGVzdHBhZ2UgPSAkdGhpcy0+X2Rlc3RwYWdlOwogICAgICAgIGlmKCAhJGRlc3RwYWdlICkgJGRlc3RwYWdlID0gJHRoaXMtPmdlbmVyYXRlX2Rlc3RwYWdlKCR1aWQpOwogICAgICAgICR1cmwgPSAkdGhpcy0+bWFtcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ3ZlcmlmeW9ubHknLCRkZXN0cGFnZSxbICd1aWQnPT4kdWlkLCAnY29kZSc9PiRjb2RlIF0gKTsKICAgICAgICAkdXJsID0gc3RyX3JlcGxhY2UoICdhbXA7JywgJycsICR1cmwgKTsKICAgICAgICByZXR1cm4gJHVybDsKICAgIH0KCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gc2VuZCggJHVpZCwgJGNvZGUgKTsKICAgIAp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIEdyb3VwRWRpdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLWdyb3VwLWVkaXQnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZ3JvdXAnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwncmVuYW1lJywgR2V0T3B0OjpSRVFVSVJFRF9BUkdVTUVOVCktPnNldERlc2NyaXB0aW9uKCdBZGp1c3QgdGhlIGdyb3VwIG5hbWUnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZGVzY3JpcHRpb24nLCBHZXRPcHQ6OlJFUVVJUkVEX0FSR1VNRU5UKS0+c2V0RGVzY3JpcHRpb24oJ0FkanVzdCB0aGUgZ3JvdXAgZGVzY3JpcHRpb24nKSk7CiAgICAgICAgLy8gbWFtcy1ncm91cC1lZGl0IHVzZXJzIG5ld2Rlc2MgLS1yZW5hbWUgZm9vYmFyIC0tZGVzY3JpcHRpb24gc3R1ZmYKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdFZGl0IGFuIEZFVSBHcm91cCBkZWZpbml0aW9uJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VkaXQgYW4gRkVVIEdyb3VwIGRlZmluaXRpb24nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRncm91cCA9IHRyaW0oJHRoaXMtPmdldE9wZXJhbmQoJ2dyb3VwJyktPnZhbHVlKCkpOwogICAgICAgICRuZXduYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3B0aW9uKCdyZW5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgJG5ld2Rlc2MgPSB0cmltKCR0aGlzLT5nZXRPcHRpb24oJ2Rlc2NyaXB0aW9uJyktPnZhbHVlKCkpOwoKICAgICAgICAkZ2lkID0gJG1hbXMtPkdldEdyb3VwSUQoICRncm91cCApOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiR3JvdXAgJGdyb3VwIG5vdCBmb3VuZCIpOwogICAgICAgICRkZXNjID0gJG1hbXMtPkdldEdyb3VwRGVzYyggJGdpZCApOwoKICAgICAgICBpZiggISRuZXduYW1lIHx8ICEkbmV3ZGVzYyApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIHNwZWNpZnkgYXQgbGVhc3Qgb25lIG9mIHRoZSByZW5hbWUgb3IgZGVzY3JpcHRpb24gb3B0aW9ucycpOwogICAgICAgIGlmKCAkbmV3bmFtZSApIHsKICAgICAgICAgICAgLy8gdmFsaWRhdGUgdGhlIGdyb3VwIG5hbWUKICAgICAgICAgICAgaWYoICFwcmVnX21hdGNoKCcjW2EtejAtOV1bX1wtYS16MC05XSojaScsICRuZXduYW1lKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBncm91cCBuYW1lICRuZXduYW1lIik7CiAgICAgICAgICAgIC8vIHZhbGlkYXRlIHRoYXQgdGhpcyBuZXcgbmFtZSBpcyBub3QgdXNlZAogICAgICAgICAgICAkbmV3X2dpZCA9ICRtYW1zLT5HZXRHcm91cElEKCAkbmV3bmFtZSApOwogICAgICAgICAgICBpZiggJG5ld19naWQgPiAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJHcm91cCBuYW1lICRuZXduYW1lIGFscmVhZHkgZXhpc3RzIik7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgdGhlIGdyb3VwIGluZm8KICAgICAgICBpZiggJG5ld25hbWUgKSAkZ3JvdXAgPSAkbmV3bmFtZTsKICAgICAgICBpZiggJG5ld2Rlc2MgKSAkZGVzYyAgPSAkbmV3ZGVzYzsKCiAgICAgICAgJG1hbXMtPlNldEdyb3VwKCAkZ2lkLCAkZ3JvdXAsICRkZXNjICk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupListCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIEdyb3VwTGlzdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLWdyb3VwLWxpc3QnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdvdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IEZFVSBncm91cHMnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb25nRGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnVGhpcyBjb21tYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBGRVUgZ3JvdXBzLic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0T3B0aW9uKCdqc29uJyktPnZhbHVlKCk7CgogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGxpc3QgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAgIGlmKCBlbXB0eSgkbGlzdCkpIHJldHVybjsKCiAgICAgICAgJHRtcCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCggJGxpc3QgYXMgJHJvdyApIHsKICAgICAgICAgICAgJHJvd1snaWQnXSA9IChpbnQpICRyb3dbJ2lkJ107CiAgICAgICAgICAgICRyb3dbJ2NvdW50J10gPSAoaW50KSAkcm93Wydjb3VudCddOwogICAgICAgICAgICAkdG1wW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAkbGlzdCA9ICR0bXA7CgogICAgICAgIGlmKCAkanNvbiApIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZSggJGxpc3QsIEpTT05fUFJFVFRZX1BSSU5UICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmbXQgPSAiJS00cyAlLTQwcyAlLTRzICUtc1xuIjsKICAgICAgICBwcmludGYoJGZtdCwnaWQnLCduYW1lJywnY291bnQnLCdkZXNjcmlwdGlvbicpOwogICAgICAgIHByaW50ZigkZm10LCctLScsJy0tLS0nLCctLS0tJywnLS0tLScpOwogICAgICAgIGZvcmVhY2goICRsaXN0IGFzICRyZWMgKSB7CiAgICAgICAgICAgIHByaW50ZigkZm10LCRyZWNbJ2lkJ10sJHJlY1snZ3JvdXBuYW1lJ10sJHJlY1snY291bnQnXSwkcmVjWydncm91cGRlc2MnXSk7CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupListPropsCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIEdyb3VwTGlzdFByb3BzQ29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtZ3JvdXAtbGlzdC1wcm9wcycgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdncm91cCcsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgncicsJ3JhdycpLT5zZXREZXNjcmlwdGlvbignb3V0cHV0IHJhdyBkYXRhIHdpdGhvdXQgY2xlYW5pbmcnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdvdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IEZFVSBncm91cCBwcm9wZXJ0aWVzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1RoaXMgY29tbWFuZCB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0eSBhc3NvY2lhdGlvbnMgZm9yIGEgZ3JvdXAnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGdyb3VwID0gJHRoaXMtPmdldE9wZXJhbmQoJ2dyb3VwJyktPnZhbHVlKCk7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0T3B0aW9uKCdqc29uJyktPnZhbHVlKCk7CiAgICAgICAgJHJhdyA9ICR0aGlzLT5nZXRPcHRpb24oJ3JhdycpLT52YWx1ZSgpOwoKICAgICAgICAkZ2lkID0gJG1hbXMtPkdldEdyb3VwSUQoJGdyb3VwKTsKICAgICAgICBpZiggJGdpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkdyb3VwICRncm91cCBub3QgZm91bmQiKTsKCiAgICAgICAgJHJlbG5zID0gJG1hbXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICAgICAgaWYoIGVtcHR5KCRyZWxucykgKSByZXR1cm47CgogICAgICAgICRnZXRfcmVxdWlyZWQgPSBmdW5jdGlvbihhcnJheSAkcmVjKSB7CiAgICAgICAgICAgICRhcnIgPSBbIDA9PidvZmYnLCAxPT4nb3B0aW9uYWwnLCAyPT4ncmVxdWlyZWQnLCAzPT4naGlkZGVuJywgND0+J3JlYWRvbmx5JyBdOwogICAgICAgICAgICAkdiA9IChpbnQpICRyZWNbJ3JlcXVpcmVkJ107CiAgICAgICAgICAgIGlmKCBpc3NldCgkYXJyWyR2XSkgKSByZXR1cm4gJGFyclskdl07CiAgICAgICAgICAgIHJldHVybiAnKnVua25vd24qJzsKICAgICAgICB9OwoKICAgICAgICAkZ2V0X2xvc3R1biA9IGZ1bmN0aW9uKGFycmF5ICRyZWMpIHsKICAgICAgICAgICAgJHYgPSAoaW50KSAkcmVjWydsb3N0dW5mbGFnJ107CiAgICAgICAgICAgIGlmKCAkdiA9PSAxICkgcmV0dXJuICd5ZXMnOwogICAgICAgICAgICByZXR1cm4gJ25vJzsKICAgICAgICB9OwoKICAgICAgICB1c29ydCgkcmVsbnMsZnVuY3Rpb24oJGEsJGIpewogICAgICAgICAgICAgICAgaWYoICRhWydzb3J0X2tleSddICE9ICRiWydzb3J0X2tleSddICkgcmV0dXJuICRhWydzb3J0X2tleSddIC0gJGJbJ3NvcnRfa2V5J107CiAgICAgICAgICAgICAgICByZXR1cm4gc3RyY21wKCRhWyduYW1lJ10sJGJbJ25hbWUnXSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICBpZiggJGpzb24gKSB7CiAgICAgICAgICAgIGFycmF5X3dhbGsoJHJlbG5zLGZ1bmN0aW9uKCYkaXRlbSkgdXNlICgkcmF3LCRnZXRfcmVxdWlyZWQsJGdldF9sb3N0dW4pewogICAgICAgICAgICAgICAgICAgICRpdGVtWydncm91cF9pZCddID0gKGludCkgJGl0ZW1bJ2dyb3VwX2lkJ107CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ3NvcnRfa2V5J10gPSAoaW50KSAkaXRlbVsnc29ydF9rZXknXTsKICAgICAgICAgICAgICAgICAgICBpZiggISRyYXcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWydyZXF1aXJlZCddID0gJGdldF9yZXF1aXJlZCgkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWydsb3N0dW5mbGFnJ10gPSAkZ2V0X2xvc3R1bigkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJHJlbG5zLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmbXQgPSAiJS0yMHMgJS04cyAlLTNzXG4iOwogICAgICAgIHByaW50ZigkZm10LCduYW1lJywncmVxdWlyZWQnLCdsdW4nKTsKICAgICAgICBwcmludGYoJGZtdCwnLS0tLScsJy0tLScsJy0tLScpOwogICAgICAgIGZvcmVhY2goICRyZWxucyBhcyAkcmVjICkgewogICAgICAgICAgICAvLyBvdXRwdXQgdGhlIHByb3BlcnR5IG5hbWUsIHJlcXVpcmVkLCBhbmQgbG9zdHVuZmxhZwogICAgICAgICAgICBwcmludGYoJGZtdCwgJHJlY1snbmFtZSddLCAkZ2V0X3JlcXVpcmVkKCRyZWMpLCAkZ2V0X2xvc3R1bigkcmVjKSk7CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupViewCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKdXNlIGNtc191dGlsczsKCmNsYXNzIEdyb3VwVmlld0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLWdyb3VwLXZpZXcnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZ3JvdXAnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdBZGp1c3QgdGhlIGdyb3VwIG5hbWUnKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0RGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnRWRpdCBhbiBGRVUgR3JvdXAgZGVmaW5pdGlvbic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdFZGl0IGFuIEZFVSBHcm91cCBkZWZpbml0aW9uJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkZ3JvdXAgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCdncm91cCcpLT52YWx1ZSgpKTsKICAgICAgICAkanNvbiA9ICR0aGlzLT5HZXRPcHRpb24oJ2pzb24nKS0+dmFsdWUoKTsKICAgICAgICAkcmVxdWlyZWRfdmFscyA9IFsgMD0+J29mZicsIDE9PidvcHRpb25hbCcsIDI9PidyZXF1aXJlZCcsIDM9PidoaWRkZW4nLCA0PT4ncmVhZG9ubHknIF07CiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRnaWQgPSAkbWFtcy0+R2V0R3JvdXBJRCggJGdyb3VwICk7CiAgICAgICAgaWYoICRnaWQgPCAxICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJHcm91cCAkZ3JvdXAgbm90IGZvdW5kIik7CiAgICAgICAgJGdpbmZvID0gJG1hbXMtPkdldEdyb3VwSW5mbyggJGdpZCApOwogICAgICAgICRnaW5mb1snZGVzY3JpcHRpb24nXSA9ICRnaW5mb1snZ3JvdXBkZXNjJ107CiAgICAgICAgJGdpbmZvWyduYW1lJ10gPSAkZ2luZm9bJ2dyb3VwbmFtZSddOwogICAgICAgICRnaW5mb1snY291bnQnXSA9IChpbnQpICRnaW5mb1snY291bnQnXTsKICAgICAgICB1bnNldCgkZ2luZm9bJ2dyb3VwZGVzYyddLCAkZ2luZm9bJ2dyb3VwbmFtZSddKTsKCiAgICAgICAgJHJlbG5zID0gJG1hbXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICAgICAgICBpZiggIWVtcHR5KCRyZWxucykgKSB7CiAgICAgICAgICAgIGFycmF5X3dhbGsoJHJlbG5zLGZ1bmN0aW9uKCYkaXRlbSkgdXNlICgkcmVxdWlyZWRfdmFscykgewogICAgICAgICAgICAgICAgICAgICRpdGVtWydsb3N0dW5mbGFnJ10gPSAoaW50KSAkaXRlbVsnbG9zdHVuZmxhZyddOwogICAgICAgICAgICAgICAgICAgICRpdGVtWydncm91cF9pZCddID0gKGludCkgJGl0ZW1bJ2dyb3VwX2lkJ107CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ3NvcnRfa2V5J10gPSAoaW50KSAkaXRlbVsnc29ydF9rZXknXTsKICAgICAgICAgICAgICAgICAgICAkaXRlbVsncmVxdWlyZWQnXSA9ICRyZXF1aXJlZF92YWxzWyRpdGVtWydyZXF1aXJlZCddXTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB1c29ydCgkcmVsbnMsZnVuY3Rpb24oJGEsJGIpewogICAgICAgICAgICAgICAgICAgIGlmKCAkYVsnc29ydF9rZXknXSAhPSAkYlsnc29ydF9rZXknXSApIHJldHVybiAkYVsnc29ydF9rZXknXSAtICRiWydzb3J0X2tleSddOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJjbXAoJGFbJ25hbWUnXSwkYlsnbmFtZSddKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICRnaW5mb1sncHJvcGVydGllcyddID0gJHJlbG5zOwogICAgICAgIH0KCiAgICAgICAgaWYoICRqc29uICkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKCRnaW5mbyxKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGVjaG8gIklEOiB7JGdpbmZvWydpZCddfVxuIjsKICAgICAgICBlY2hvICJOQU1FOiB7JGdpbmZvWyduYW1lJ119XG4iOwogICAgICAgIGVjaG8gIkRFU0NSSVBUSU9OOiB7JGdpbmZvWydkZXNjcmlwdGlvbiddfVxuIjsKICAgICAgICBlY2hvICJNRU1CRVJTOiB7JGdpbmZvWydjb3VudCddfVxuIjsKICAgICAgICBpZiggJGdpbmZvWydwcm9wZXJ0aWVzJyBdICkgewogICAgICAgICAgICAkZm10ID0gIlBST1BFUlRZOiBuYW1lPSVzIHN0YXR1cz0lcyBsb3N0dW49JWRcbiI7CiAgICAgICAgICAgIGZvcmVhY2goICRnaW5mb1sncHJvcGVydGllcyddIGFzICRyb3cgKSB7CiAgICAgICAgICAgICAgICBwcmludGYoJGZtdCwgJHJvd1snbmFtZSddLCAkcm93WydyZXF1aXJlZCddLCAkcm93Wydsb3N0dW5mbGFnJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.PropEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKdXNlIGNtc191dGlsczsKCmNsYXNzIFByb3BFZGl0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtcHJvcC1lZGl0JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3Byb3AnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZmlsZW5hbWUnLCBPcGVyYW5kOjpPUFRJT05BTCApICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0RGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnRWRpdCBhbiBGRVUgUHJvcGVydHkgZGVmaW5pdGlvbic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgJG91dCA9IDw8PEVPVApFZGl0IGFuIEZFVSBQcm9wZXJ0eSBkZWZpbml0aW9uIGdpdmVuIEpTT04gaW5wdXQuICBJZiBhIGZpbGVuYW1lIGlzIG5vdCBwcm92aWRlZCwgdGhlbiBzdGRpbiBpcyBhc3VtZWQuCgpOb3RlLiBpdCBpcyBwb3NzaWJsZSB0byBicmVhayBhbiBleGlzdGluZyBzaXRlIHdpdGggdGhpcyBjb21tYW5kLiAgVXNlIGNhdXRpb24uCkVPVDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkcHJvcCA9IHRyaW0oJHRoaXMtPmdldE9wZXJhbmQoJ3Byb3AnKS0+dmFsdWUoKSk7CiAgICAgICAgJGZpbGVuYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgnZmlsZW5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgaWYoICEkZmlsZW5hbWUgfHwgJGZpbGVuYW1lID09ICctLScgKSAkZmlsZW5hbWUgPSAncGhwOi8vc3RkaW4nOwogICAgICAgICR0ZXh0ID0gdHJpbShmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpKTsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CgogICAgICAgICRkZWZuID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbigkcHJvcCk7CiAgICAgICAgaWYoICEkZGVmbiApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiUHJvcGVydHkgJHByb3Agbm90IGZvdW5kIik7CgogICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHRleHQsVFJVRSk7CiAgICAgICAgaWYoICFpc19hcnJheSgkanNvbikgfHwgZW1wdHkoJGpzb24pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3QgZGVjb2RlIGpzb24gaW5wdXQnKTsKCiAgICAgICAgJHByb3BfcmVjID0gbnVsbDsKICAgICAgICBpZiggIWlzc2V0KCRqc29uWyRwcm9wXSkgfHwgIWlzX2FycmF5KCRqc29uWyRwcm9wXSkgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkanNvblsnbmFtZSddKSB8fCBpc3NldCgkanNvblsndHlwZSddKSB8fCBpc3NldCgkanNvblsncHJvbXB0J10pICkgewogICAgICAgICAgICAgICAgJHByb3BfcmVjID0gJGpzb247CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgSlNPTiBkYXRhJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJvcF9yZWMgPSAkanNvblskcHJvcF07CiAgICAgICAgfQoKICAgICAgICAvLyBub3cgbWVyZ2UgdGhlIGRlZm4gaW5mbyB3aXRoIHRoZSBwcm9wX3JlYwogICAgICAgICRwcm9wX3JlYyA9IGFycmF5X21lcmdlKCRkZWZuLCRwcm9wX3JlYyk7CiAgICAgICAgJHJlcyA9ICRtYW1zLT5TZXRQcm9wZXJ0eURlZm4oICRwcm9wLCAkcHJvcF9yZWNbJ25hbWUnXSwgJHByb3BfcmVjWydwcm9tcHQnXSwgJHByb3BfcmVjWydsZW5ndGgnXSwgJHByb3BfcmVjWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByb3BfcmVjWydtYXhsZW5ndGgnXSwgJHByb3BfcmVjWydhdHRyaWJzJ10sICRwcm9wX3JlY1snZm9yY2VfdW5pcXVlJ10sICRwcm9wX3JlY1snZW5jcnlwdCddICk7CiAgICAgICAgaWYoICEkcmVzICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdQcm9wZXJ0eSB1cGRhdGUgZmFpbGVkJyk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.PropListCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFByb3BMaXN0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtcHJvcHMtbGlzdCcgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgncicsJ3JhdycpLT5zZXREZXNjcmlwdGlvbignb3V0cHV0IHJhdyBkYXRhIHdpdGhvdXQgY2xlYW5pbmcnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdvdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IGtub3duIEZFVSBwcm9wZXJ0aWVzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1RoaXMgY29tbWFuZCB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIGFsbCBvZiB0aGUgcHJvcGVydGllcyBrbm93biBieSBGRVUnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAkcmF3ID0gJHRoaXMtPmdldE9wdGlvbigncmF3JyktPnZhbHVlKCk7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0T3B0aW9uKCdqc29uJyktPnZhbHVlKCk7CiAgICAgICAgJHR5cGVzID0gJG1hbXMtPkdldEZpZWxkVHlwZXMoKTsKCiAgICAgICAgaWYoICEkcmF3ICkgewogICAgICAgICAgICBhcnJheV93YWxrKCRkZWZucyxmdW5jdGlvbigmJGl0ZW0pIHVzZSAoJG1hbXMsJHR5cGVzKSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGl0ZW1bJ2F0dHJpYnMnXSk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKCAoaW50KSAkaXRlbVsndHlwZSddICkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJG1hbXM6OkZJRUxEVFlQRV9URVhUOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJG1hbXM6OkZJRUxEVFlQRV9URVhUQVJFQToKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ2xlbmd0aCddID0gKGludCkgJGl0ZW1bJ2xlbmd0aCddOwogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVsnbWF4bGVuZ3RoJ10gPSAoaW50KSAkaXRlbVsnbWF4bGVuZ3RoJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpdGVtWydsZW5ndGgnXSwkaXRlbVsnbWF4bGVuZ3RoJ10pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkaXRlbVsnZXh0cmEnXSkgfHwgZW1wdHkoJGl0ZW1bJ2V4dHJhJ10pICkgdW5zZXQoJGl0ZW1bJ2V4dHJhJ10pOwogICAgICAgICAgICAgICAgICAgICRpdGVtWydmb3JjZV91bmlxdWUnXSA9IChpbnQpICRpdGVtWydmb3JjZV91bmlxdWUnXTsKICAgICAgICAgICAgICAgICAgICAkaXRlbVsnZW5jcnlwdCddID0gKGludCkgJGl0ZW1bJ2VuY3J5cHQnXTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYoICRqc29uICkgewogICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJGRlZm5zLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgZXhpdDsKICAgICAgICB9CgogICAgICAgICRmbXQgPSAiJS0yMHMgJS0zMHMgJS0xMHMgJS00cyAlLTRzICUtM3MgJS0zc1xuIjsKICAgICAgICBwcmludGYoJGZtdCwibmFtZSIsInByb21wdCIsInR5cGUiLCJsZW4iLCJtbGVuIiwiZW5jIiwidW5pIik7CiAgICAgICAgcHJpbnRmKCRmbXQsIi0tLS0iLCItLS0tLSIsIi0tLS0iLCItLS0iLCItLS0tIiwiLS0tIiwiLS0tIik7CiAgICAgICAgZm9yZWFjaCggJGRlZm5zIGFzICRvbmUgKSB7CiAgICAgICAgICAgIHByaW50ZigkZm10LCAkb25lWyduYW1lJ10sICRvbmVbJ3Byb21wdCddLCAkb25lWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAgICAoaXNzZXQoJG9uZVsnbGVuZ3RoJ10pKSA/ICRvbmVbJ2xlbmd0aCddIDogJycsCiAgICAgICAgICAgICAgICAgICAoaXNzZXQoJG9uZVsnbWF4bGVuZ3RoJ10pKSA/ICRvbmVbJ21heGxlbmd0aCddIDogJycsCiAgICAgICAgICAgICAgICAgICAkb25lWydlbmNyeXB0J10sCiAgICAgICAgICAgICAgICAgICAkb25lWydmb3JjZV91bmlxdWUnXSk7CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserAddCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJBZGRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIEFwcCAkYXBwICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCAkYXBwLCAnbWFtcy11c2VyLWFkZCcgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICd1c2VybmFtZScsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdwYXNzd29yZCcsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdncm91cCcsIE9wZXJhbmQ6Ok1VTFRJUExFICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgncCcsJ3Byb3AnLCBHZXRPcHQ6Ok1VTFRJUExFX0FSR1VNRU5UKS0+c2V0RGVzY3JpcHRpb24oJ0EgdXNlciBwcm9wZXJ0eSBpbiB0aGUgZm9ybSBvZiBuYW1lPXZhbHVlJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgnZicsJ2ZvcmNlJyktPnNldERlc2NyaXB0aW9uKCdJZ25vcmUgZW1haWwgYWRkcmVzcyBjaGVja3MsIGFuZCBhbGxvdyBzcGVjaWZ5aW5nIHVua25vd24gcHJvcGVydGllcycpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdBZGQgYSBuZXcgRkVVIFVzZXIgYWNjb3VudCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdBZGQgYSBuZXcgRkVVIHVzZXIgdG8gb25lIG9yIG1vcmUgZ3JvdXBzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCd1c2VybmFtZScpLT52YWx1ZSgpKTsKICAgICAgICAkcGFzc3dvcmQgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCdwYXNzd29yZCcpLT52YWx1ZSgpKTsKICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPmdldE9wZXJhbmQoJ2dyb3VwJyktPnZhbHVlKCk7CiAgICAgICAgJHByb3BzID0gJHRoaXMtPmdldE9wdGlvbigncHJvcCcpLT52YWx1ZSgpOwogICAgICAgICRmb3JjZSA9ICR0aGlzLT5nZXRPcHRpb24oJ2ZvcmNlJyktPnZhbHVlKCk7CiAgICAgICAgaWYoIGVtcHR5KCRncm91cHMpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2Ugc3BlY2lmeSBvbmUgb3IgbW9yZSBncm91cCBuYW1lcycpOwoKICAgICAgICAvLyBub3cgdmFsaWRhdGUgdGhlIGdyb3VwcwogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAkYWxsZ3JvdXBzID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHRoZSB1c2VybmFtZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgJHRlc3RfdWlkID0gJG1hbXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAkdGVzdF91aWQgPiAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdUaGUgdXNlcm5hbWUgJy4kdXNlcm5hbWUuJyBhbHJlYWR5IGV4aXN0cycpOwogICAgICAgIGlmKCAhJGZvcmNlICYmICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICYmICFpc19lbWFpbCgkdXNlcm5hbWUpICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHVzZXJuYW1lLicgaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcycpOwogICAgICAgIH0KCiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIHNwZWNpZmllZCBncm91cCBuYW1lcy4KICAgICAgICAkZ3JvdXBuYW1lcyA9IGFycmF5X2tleXMoJGFsbGdyb3Vwcyk7CiAgICAgICAgJGVycl9ncm91cHMgPSBhcnJheV9kaWZmKCRncm91cHMsICRncm91cG5hbWVzKTsKICAgICAgICBpZiggIWVtcHR5KCRlcnJfZ3JvdXBzKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignT25lIG9yIG1vcmUgZ3JvdXBzIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdCcpOwoKICAgICAgICAvLyBnZXQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIGZvciBlYWNoIG9mIHRoZXNlIGdyb3VwcwogICAgICAgICRhbGxwcm9wcyA9IFtdOwogICAgICAgIGZvcmVhY2goICRncm91cHMgYXMgJGdyb3VwICkgewogICAgICAgICAgICAkZ2lkID0gJGFsbGdyb3Vwc1skZ3JvdXBdOwogICAgICAgICAgICAkcmVsbnMgPSAkbWFtcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAgICAgICAgICAgJGFsbHByb3BzID0gXE1BTVNcUlJVdGlsczo6YXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCgkYWxscHJvcHMsJHJlbG5zKTsKICAgICAgICAgICAgdXNvcnQoJGFsbHByb3BzLCBhcnJheSgneHRfYXJyYXknLCdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFsbG93ZWQKICAgICAgICAvLyAgIChub3Qgb2YgdHlwZSBkYXRhKQogICAgICAgICRhbGxvd2VkX3Byb3BzID0gYXJyYXlfZmlsdGVyKCRhbGxwcm9wcywgZnVuY3Rpb24oJGl0ZW0pIHVzZSAoJGRlZm5zLCAkbWFtcyl7CiAgICAgICAgICAgICAgICAkbmFtZSA9ICRpdGVtWyduYW1lJ107CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRkZWZuc1skbmFtZV0pICkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYoICRkZWZuc1skbmFtZV1bJ3R5cGUnXSA9PSAkbWFtczo6RklFTERUWVBFX0RBVEEgKSByZXR1cm47CiAgICAgICAgICAgICAgICBpZiggJGRlZm5zWyRuYW1lXVsndHlwZSddID09ICRtYW1zOjpGSUVMRFRZUEVfSU1BR0UgKSByZXR1cm47CiAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICAgICAgfSk7CiAgICAgICAgJGFsbG93ZWRfcHJvcHMgPSBhcnJheV9tYXAoZnVuY3Rpb24oJGl0ZW0pewogICAgICAgICAgICAgICAgcmV0dXJuICRpdGVtWyduYW1lJ107CiAgICAgICAgICAgIH0sICRhbGxvd2VkX3Byb3BzKTsKCiAgICAgICAgLy8gbm93IGdldCBhbGwgb2Ygb3VyIHJlcXVpcmVkIHByb3BlcnRpZXMKICAgICAgICAkcmVxdWlyZWQgPSBhcnJheV9maWx0ZXIoJGFsbHByb3BzLGZ1bmN0aW9uKCRpdGVtKXsKICAgICAgICAgICAgICAgIHJldHVybiAkaXRlbVsncmVxdWlyZWQnXSA9PSAyOwogICAgICAgICAgICB9KTsKICAgICAgICAkcmVxdWlyZWQgPSBhcnJheV9tYXAoZnVuY3Rpb24oJGl0ZW0pewogICAgICAgICAgICAgICAgcmV0dXJuICRpdGVtWyduYW1lJ107CiAgICAgICAgICAgIH0sICRyZXF1aXJlZCk7CgogICAgICAgIC8vIG5vdyBwYXJzZSBvdXIgcHJvcGVydHkgb3B0aW9ucwogICAgICAgICRnYXRoZXJfcHJvcHMgPSBmdW5jdGlvbigkcHJvcHMpIHsKICAgICAgICAgICAgJG91dCA9IFtdOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHByb3BzKSApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRwcm9wcyBhcyAkcHJvcF9vcHQgKSB7CiAgICAgICAgICAgICAgICAgICAgbGlzdCgkcHJvcF9uYW1lLCR2YWx1ZSkgPSBleHBsb2RlKCc9JywkcHJvcF9vcHQsMik7CiAgICAgICAgICAgICAgICAgICAgJHByb3BfbmFtZSA9IHRyaW0oJHByb3BfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkcHJvcF9uYW1lICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3V0WyRwcm9wX25hbWVdID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG91dDsKICAgICAgICB9OwoKICAgICAgICAvLyBub3csIHNlZSBpZiB3ZSBoYXZlIGFueSBvZiB0aGVzZSBwcm9wcwogICAgICAgICR2YWxpZF9wcm9wcyA9ICRnYXRoZXJfcHJvcHMoJHByb3BzKTsKICAgICAgICAkcHJvcF9rZXlzID0gYXJyYXlfa2V5cygkdmFsaWRfcHJvcHMpOwoKICAgICAgICAvLyBpZiB3ZSBoYXZlIHJlcXVpcmVkIHByb3BlcnRpZXMsIG1ha2Ugc3VyZSB0aGV5IHdlcmUgYWxsIHNwZWNpZmllZC4KICAgICAgICBpZiggIWVtcHR5KCRyZXF1aXJlZCkpIHsKICAgICAgICAgICAgaWYoICFlbXB0eShhcnJheV9kaWZmKCRyZXF1aXJlZCwkcHJvcF9rZXlzKSkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcmVxdWlyZWQgYWNjb3JkaW5nIHRvIHRoZSBncm91cHMgc3BlY2lmaWVkOiAiLmltcGxvZGUoJywnLCRyZXF1aXJlZCkpOwogICAgICAgIH0KCiAgICAgICAgLy8gbWFrZSBzdXJlIGFsbCBvZiBvdXIgcHJvcGVydGllcyBhcmUga25vd24uCiAgICAgICAgJG5vdF9hbGxvd2VkID0gYXJyYXlfZGlmZigkcHJvcF9rZXlzLCRhbGxvd2VkX3Byb3BzKTsKICAgICAgICBpZiggIWVtcHR5KCRub3RfYWxsb3dlZCkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBkbyBub3QgZXhpc3Q6ICcuaW1wbG9kZSgkbm90X2FsbG93ZWQpKTsKCiAgICAgICAgLy8gYWRkIHRoZSB1c2VyCiAgICAgICAgJHRtcCA9IChpbnQpICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJyw1MjApOwogICAgICAgICRleHBpcmVzID0gc3RydG90aW1lKCIreyR0bXB9IG1vbnRocyAwMDowMCIpOwogICAgICAgIGlmKCAhJGV4cGlyZXMgKSAkZXhwaXJlcyA9IFBIUF9JTlRfTUFYOwoKICAgICAgICAkcmVzID0gJG1hbXMtPkFkZFVzZXIoICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyApOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJHJlcykgfHwgIWlzc2V0KCRyZXNbMF0pIHx8ICEkcmVzWzBdICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgY3JlYXRlIHVzZXI6ICcuJHJlc1sxXSk7OwogICAgICAgICR1aWQgPSAkcmVzWzFdOwoKICAgICAgICAvLyBhZGQgaGltIHRvIGhpcyBncm91cHMKICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRncm91cCApIHsKICAgICAgICAgICAgJGdpZCA9ICRhbGxncm91cHNbJGdyb3VwXTsKICAgICAgICAgICAgJHJlcyA9ICRtYW1zLT5BZGRVc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApOwogICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Byb2JsZW0gYWRkaW5nIHVzZXIgdG8gZ3JvdXAuLi4gY3JlYXRpb24gaW5jb21wbGV0ZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gc2V0IHByb3BlcnRpZXMKICAgICAgICBpZiggJHZhbGlkX3Byb3BzICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdmFsaWRfcHJvcHMgYXMgJHByb3BfbmFtZSA9PiAkdmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkcmVzID0gJG1hbXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BfbmFtZSwkdmFsdWUsJHVpZCk7CiAgICAgICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Byb2JsZW0gc2V0dGluZyB1c2VyIHByb3BlcnRpZXMuLi4gY3JlYXRpb24gaW5jb21wbGV0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBhbmQgZG9uZS4KICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserDeleteCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJEZWxldGVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIEFwcCAkYXBwICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCAkYXBwLCAnbWFtcy11c2VyLWRlbCcgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICd1c2VybmFtZScsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IEZFVSB1c2Vycyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdUaGlzIGNvbW1hbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIEZFVSB1c2VycyBmaWx0ZXJlZCBieSB2YXJpb3VzIGNyaXRlcmlhJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCd1c2VybmFtZScpLT52YWx1ZSgpKTsKICAgICAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICR1aWQgPSAkbWFtcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJVc2VyICR1c2VybmFtZSBub3QgZm91bmQiKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHJlcyA9ICRtYW1zLT5EZWxldGVVc2VyRnVsbCgkdWlkKTsKICAgICAgICAgICAgaWYoICFpc19hcnJheSgkcmVzKSB8fCAhaXNzZXQoJHJlc1swXSkgfHwgISRyZXNbMF0gKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVXNlciBkZWxldGUgZmFpbGVkOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJFZGl0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtdXNlci1lZGl0JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3VzZXJuYW1lJywgT3BlcmFuZDo6UkVRVUlSRUQgKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ3VzZXJuYW1lJywgR2V0T3B0OjpSRVFVSVJFRF9BUkdVTUVOVCktPnNldERlc2NyaXB0aW9uKCdBZGp1c3QgdGhlIHVzZXJzIHVzZXJuYW1lJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdwYXNzd29yZCcsIEdldE9wdDo6UkVRVUlSRURfQVJHVU1FTlQpLT5zZXREZXNjcmlwdGlvbignQWRqdXN0IHRoZSB1c2VycyBwYXNzd29yZCcpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZXhwaXJlcycsIEdldE9wdDo6UkVRVUlSRURfQVJHVU1FTlQpLT5zZXREZXNjcmlwdGlvbignQWRqdXN0IHRoZSB1c2VycyBleHBpcnkgZGF0ZScpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZm9yY2UtY2hhbmdlcHcnLCBHZXRPcHQ6Ok9QVElPTkFMX0FSR1VNRU5UKS0+c2V0RGVzY3JpcHRpb24oJ0ZvcmNlIHRoZSB1c2VyIHRvIGNoYW5nZSBoaXMgcGFzc3dvcmQgb24gdGhlIG5leHQgbG9naW4nKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ2Rpc2FibGVkJywgR2V0T3B0OjpPUFRJT05BTF9BUkdVTUVOVCktPnNldERlc2NyaXB0aW9uKCdUb2dnbGUgdXNlcnMgZGlzYWJsZWQgc3RhdGUnKSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaG9ydERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VkaXQgRkVVIHVzZXIgaW5mbyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdUaGlzIGNvbW1hbmQgYWxsb3dzIHNpbXBsZSBtb2RpZmljYXRpb24gb2YgdXNlciBzZXR0aW5ncy4gIFRoZSB1c2VyIGlzIE5PVCBub3RpZmllZCBvZiBhbnkgY2hhbmdlcyB0byBoaXMgYWNjb3VudCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJHVzZXJuYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgndXNlcm5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgJG5ld191c2VybmFtZSA9IHRyaW0oJHRoaXMtPmdldE9wdGlvbigndXNlcm5hbWUnKSk7CiAgICAgICAgJG5ld19wYXNzd29yZCA9IHRyaW0oJHRoaXMtPmdldE9wdGlvbigncGFzc3dvcmQnKSk7CiAgICAgICAgJG5ld19leHBpcmVzID0gdHJpbSgkdGhpcy0+Z2V0T3B0aW9uKCdleHBpcmVzJykpOwogICAgICAgICRkaXNhYmxlZCA9IHRyaW0oJHRoaXMtPmdldE9wdGlvbignZGlzYWJsZWQnKS0+dmFsdWUoKSk7CiAgICAgICAgJGZvcmNlX2NoYW5nZXB3ID0gdHJpbSgkdGhpcy0+Z2V0T3B0aW9uKCdmb3JjZS1jaGFuZ2VwdycpLT52YWx1ZSgpKTsKCiAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdWlkID0gJG1hbXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVXNlciBub3QgZm91bmQnKTsKCiAgICAgICAgaWYoICEkbmV3X3VzZXJuYW1lICYmICEkbmV3X3Bhc3N3b3JkICYmICEkbmV3X2V4cGlyZXMgJiYgIXN0cmxlbigkZGlzYWJsZWQpICYmICFzdHJsZW4oJGZvcmNlX2NoYW5nZXB3KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvcHRpb24nKTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJG5ld191c2VybmFtZSkgKSB7CiAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgdGhpcyB1c2VybmFtZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5ld191c2VybmFtZSA9ICR1c2VybmFtZTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJG5ld19leHBpcmVzKSApIHsKICAgICAgICAgICAgJG5ld19leHBpcmVzID0gc3RydG90aW1lKCRuZXdfZXhwaXJlcyk7CiAgICAgICAgICAgIGlmKCAhJG5ld19leHBpcmVzICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGEgdGltZSBmcm9tIHRoZSBleHBpcmVzIHN0cmluZyBzcGVjaWZpZWQnKTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJG5ld191c2VybmFtZSkgfHwgIWVtcHR5KCRuZXdfcGFzc3dvcmQpIHx8ICRuZXdfZXhwaXJlcyA+IDAgKSB7CiAgICAgICAgICAgICRtYW1zLT5TZXRVc2VyKCAkdWlkLCAkbmV3X3VzZXJuYW1lLCAkbmV3X3Bhc3N3b3JkLCAkbmV3X2V4cGlyZXMgKTsKICAgICAgICB9CiAgICAgICAgaWYoIHN0cmxlbigkZGlzYWJsZWQpICkgJG1hbXMtPlNldFVzZXJEaXNhYmxlZCggJHVpZCwgJGRpc2FibGVkICk7CiAgICAgICAgaWYoIHN0cmxlbigkZm9yY2VfY2hhbmdlcHcpICkgewogICAgICAgICAgICAkbWFtcy0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCAkZm9yY2VfY2hhbmdlcHcpOwogICAgICAgIH0KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserListCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJMaXN0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtdXNlci1saXN0JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3BhdHRlcm4nLCBPcGVyYW5kOjpPUFRJT05BTCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2cnLCdncm91cCcpLT5zZXREZXNjcmlwdGlvbignRmlsdGVyIGJ5IG1lbWJlcnMgb2YgdGhlIG5hbWVkIGdyb3VwJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgnbCcsJ2xpbWl0JyktPnNldERlc2NyaXB0aW9uKCdQYWdlIGxpbWl0IChkZWZhdWx0IDUwMCknKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKCdvJywnb2Zmc2V0JyktPnNldERlc2NyaXB0aW9uKCdTdGFydCBpbmRleCAoZGVmYXVsdCAwKScpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdPdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpICk7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnbG9nZ2VkaW4nKS0+c2V0RGVzY3JpcHRpb24oJ0Rpc3BsYXkgb25seSBsb2dnZWRpbiB1c2VycycpICk7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZXhwaXJlZCcpLT5zZXREZXNjcmlwdGlvbignRGlzcGxheSBvbmx5IGxvZ2dlZGluIHVzZXJzJykgKTsKICAgICAgICAkdGhpcy0+QWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdkaXNhYmxlZCcpLT5zZXREZXNjcmlwdGlvbignRGlzcGxheSBvbmx5IGRpc2FibGVkIHVzZXJzJykgKTsKICAgICAgICAkdGhpcy0+QWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdjcmVhdGVkLWJlZm9yZScpLT5zZXREZXNjcmlwdGlvbignRmlsdGVyIG9uIHVzZXJzIGNyZWF0ZWQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgZGF0ZScpICk7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnY3JlYXRlZC1hZnRlcicpLT5zZXREZXNjcmlwdGlvbignRmlsdGVyIG9uIHVzZXJzIGNyZWF0ZWQgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkYXRlJykgKTsKICAgICAgICAkaGVscCA9IDw8PEVPVApTb3J0aW5nIG9mIHRoZSBvdXRwdXQuICAgUG9zc2libGUgdmFsdWVzIGFyZTogQ1JFQVRFRF9ERVNDKiwgQ1JFQVRFRF9BU0MsIFVTRVJOQU1FX0FTQywgVVNFUk5BTUVfREVTQywgRVhQSVJFU19BU0MsIEVYUElSRVNfREVTQwpFT1Q7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnc29ydGJ5JyktPnNldERlc2NyaXB0aW9uKCRoZWxwKS0+c2V0RGVmYXVsdFZhbHVlKCdDUkVBVEVEX0RFU0MnKSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaG9ydERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0xpc3QgRkVVIHVzZXJzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1RoaXMgY29tbWFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgRkVVIHVzZXJzIGZpbHRlcmVkIGJ5IHZhcmlvdXMgY3JpdGVyaWEnOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBub3JtYWxfb3V0cHV0KCBhcnJheSAkcm93ICkKICAgIHsKICAgICAgICAkZm10ID0gIiUtOGQgJS00MHNcbiI7CiAgICAgICAgcHJpbnRmKCRmbXQsJHJvd1snaWQnXSwkcm93Wyd1c2VybmFtZSddKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkcGF0dGVybiA9IHRyaW0oJHRoaXMtPmdldE9wZXJhbmQoJ3BhdHRlcm4nKS0+dmFsdWUoKSk7CiAgICAgICAgJGdyb3VwID0gJHRoaXMtPmdldE9wdGlvbignZ3JvdXAnKS0+dmFsdWUoKTsKICAgICAgICAkbGltaXQgPSAoaW50KSAkdGhpcy0+R2V0T3B0aW9uKCdsaW1pdCcpLT52YWx1ZSgpOwogICAgICAgIGlmKCAkbGltaXQgPCAxICkgJGxpbWl0ID0gNTAwOwogICAgICAgICRsaW1pdCA9IG1pbigxMDAwMDAsNTAwKTsKICAgICAgICAkb2Zmc2V0ID0gKGludCkgJHRoaXMtPkdldE9wdGlvbignb2Zmc2V0JyktPnZhbHVlKCk7CiAgICAgICAgJG9mZnNldCA9IG1heCgkb2Zmc2V0LDApOwogICAgICAgICRsb2dnZWRpbiA9IChpbnQpICR0aGlzLT5HZXRPcHRpb24oJ2xvZ2dlZGluJyktPnZhbHVlKCk7CiAgICAgICAgJGRpc2FibGVkID0gKGludCkgJHRoaXMtPkdldE9wdGlvbignZGlzYWJsZWQnKS0+dmFsdWUoKTsKICAgICAgICAkZXhwaXJlZCA9IChpbnQpICR0aGlzLT5HZXRPcHRpb24oJ2V4cGlyZWQnKS0+dmFsdWUoKTsKICAgICAgICAkY3JlYXRlZF9iZWZvcmUgPSB0cmltKCR0aGlzLT5HZXRPcHRpb24oJ2NyZWF0ZWQtYmVmb3JlJykpOwogICAgICAgICRjcmVhdGVkX2FmdGVyID0gdHJpbSgkdGhpcy0+R2V0T3B0aW9uKCdjcmVhdGVkLWFmdGVyJykpOwogICAgICAgICRqc29uID0gJHRoaXMtPkdldE9wdGlvbignanNvbicpLT52YWx1ZSgpOwoKICAgICAgICAkcXVlcnkgPSBuZXcgbWFtc191c2VyX3F1ZXJ5OwogICAgICAgICRxdWVyeS0+c2V0X3BhZ2VsaW1pdCgkbGltaXQpOwogICAgICAgICRxdWVyeS0+c2V0X29mZnNldCgkb2Zmc2V0KTsKICAgICAgICBpZiggJHBhdHRlcm4gKSAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRSwgJHBhdHRlcm4gKTsKICAgICAgICBpZiggIWlzX251bGwoJGdyb3VwKSApICRxdWVyeS0+YWRkX2FuZF9vcHQoIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQLCAkZ3JvdXAgKTsKICAgICAgICBpZiggJGxvZ2dlZGluICE9PSAwICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTE9HR0VESU4gKTsKICAgICAgICBpZiggJGV4cGlyZWQgIT09IDAgKSAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9FWFBJUkVTX0xULCB0aW1lKCkgKTsKICAgICAgICBpZiggJGRpc2FibGVkICE9PSAwICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfRElTQUJMRUQgKTsKICAgICAgICBpZiggJGNyZWF0ZWRfYmVmb3JlICkgewogICAgICAgICAgICAkdHMgPSBzdHJ0b3RpbWUoJGNyZWF0ZWRfYmVmb3JlKTsKICAgICAgICAgICAgaWYoICEkdHMgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDb3VsZCBub3QgY29udmVydCAkdHMgdG8gYSB2YWxpZCB0aW1lIHZhbHVlLi4uIHNlZSBzdHJ0b3RpbWUiKTsKICAgICAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfQ1JFQVRFRF9MVCwgJHRzICk7CiAgICAgICAgfQogICAgICAgIGlmKCAkY3JlYXRlZF9hZnRlciApIHsKICAgICAgICAgICAgJHRzID0gc3RydG90aW1lKCRjcmVhdGVkX2FmdGVyKTsKICAgICAgICAgICAgaWYoICEkdHMgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDb3VsZCBub3QgY29udmVydCAkdHMgdG8gYSB2YWxpZCB0aW1lIHZhbHVlLi4uIHNlZSBzdHJ0b3RpbWUiKTsKICAgICAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfQ1JFQVRFRF9HRSwgJHRzICk7CiAgICAgICAgfQoKICAgICAgICAkc29ydGJ5ID0gJHRoaXMtPkdldE9wdGlvbignc29ydGJ5JyktPnZhbHVlKCk7CiAgICAgICAgaWYoICEkc29ydGJ5ICkgJHNvcnRieSA9ICdDUkVBVEVEX0RFU0MnOwogICAgICAgIHN3aXRjaCggc3RydG91cHBlcigkc29ydGJ5KSApIHsKICAgICAgICBjYXNlICdDUkVBVEVEX0FTQyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieSggJHF1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQgKTsKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKCAkcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfQVNDICk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0NSRUFURURfREVTQyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieSggJHF1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQgKTsKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKCAkcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyApOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdVU0VSTkFNRV9BU0MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoICRxdWVyeTo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRSApOwogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoICRxdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnVVNFUk5BTUVfREVTQyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieSggJHF1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FICk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlciggJHF1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnRVhQSVJFU19BU0MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoICRxdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTICk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlciggJHF1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyApOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdFWFBJUkVTX0RFU0MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoICRxdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTICk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlciggJHF1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIiRzb3J0YnkgaXMgbm90IGEgdmFsaWQgc29ydCBvcHRpb24iKTsKICAgICAgICB9CgogICAgICAgICRmaXhfcm93ID0gZnVuY3Rpb24oJHJvdykgewogICAgICAgICAgICAkcm93WydpZCddID0gKGludCkgJHJvd1snaWQnXTsKICAgICAgICAgICAgJHJvd1snbm9uc3RkJ10gPSAoaW50KSAkcm93Wydub25zdGQnXTsKICAgICAgICAgICAgJHJvd1snZGlzYWJsZWQnXSA9IChpbnQpICRyb3dbJ2Rpc2FibGVkJ107CiAgICAgICAgICAgICRyb3dbJ2ZvcmNlX25ld3B3J10gPSAoaW50KSAkcm93Wydmb3JjZV9uZXdwdyddOwogICAgICAgICAgICAkcm93Wydmb3JjZV9jaHNldHRpbmdzJ10gPSAoaW50KSAkcm93Wydmb3JjZV9jaHNldHRpbmdzJ107CiAgICAgICAgICAgICRyb3dbJ211c3RfdmFsaWRhdGUnXSA9IChpbnQpICRyb3dbJ211c3RfdmFsaWRhdGUnXTsKICAgICAgICAgICAgJHJvd1snbG9nZ2VkaW4nXSA9IChpbnQpICRyb3dbJ2xvZ2dlZGluJ107CiAgICAgICAgICAgIHVuc2V0KCRyb3dbJ3NhbHQnXSk7CiAgICAgICAgICAgIHJldHVybiAkcm93OwogICAgICAgIH07CgogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgIGlmKCAkanNvbiApIHsKICAgICAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgICAgICRyb3cgPSAkcnMtPmZpZWxkczsKICAgICAgICAgICAgICAgICRvdXRbXSA9ICRmaXhfcm93KCRyb3cpOwogICAgICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJG91dCxKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKCiAgICAgICAgICAgICR0aGlzLT5ub3JtYWxfb3V0cHV0KCAkcnMtPmZpZWxkcyApOwogICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgfQogICAgICAgIGV4aXQoKTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserPropEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJQcm9wRWRpdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLXVzZXItcHJvcGVkaXQnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAndXNlcm5hbWUnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAncHJvcGVydHknLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAncHJvcGVydHl2YWx1ZScsIE9wZXJhbmQ6Ok9QVElPTkFMICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgnZicsJ2ZvcmNlJyktPnNldERlc2NyaXB0aW9uKCdJZ25vcmUgcHJvcGRlZm4gdHlwZSwgYW5kIHNldCB0aGUgdmFsdWUgYW55d2F5cycpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZGVsZXRlJyktPnNldERlc2NyaXB0aW9uKCdEZWxldGUgdGhlIHByb3BlcnR5IHZhbHVlIGFuZCwgaWYgYW4gaW1hZ2UgcHJvcGVydHkgYW55IGFzc29jaWF0ZWQgaW1hZ2UnKSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaG9ydERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VkaXQgRkVVIHVzZXIgcHJvcGVydGllcyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdUaGlzIGNvbW1hbmQgYWxsb3dzIHNpbXBsZSBtb2RpZmljYXRpb24gb2YgdXNlciBwcm9wZXJ0aWVzLiAgVGhlIHVzZXIgaXMgTk9UIG5vdGlmaWVkIG9mIGFueSBjaGFuZ2VzIHRvIGhpcyBhY2NvdW50JzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCd1c2VybmFtZScpLT52YWx1ZSgpKTsKICAgICAgICAkcHJvcGVydHkgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCdwcm9wZXJ0eScpLT52YWx1ZSgpKTsKICAgICAgICAkcHJvcHZhbHVlID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgncHJvcGVydHl2YWx1ZScpLT52YWx1ZSgpKTsKICAgICAgICAkZm9yY2UgPSB0cmltKCR0aGlzLT5nZXRPcHRpb24oJ2ZvcmNlJykpOwogICAgICAgICRkZWxldGUgPSB0cmltKCR0aGlzLT5nZXRPcHRpb24oJ2RlbGV0ZScpKTsKCiAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdWlkID0gJG1hbXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiVXNlciAkdXNlcm5hbWUgbm90IGZvdW5kIik7CgogICAgICAgICRkZWZucyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgaWYoIGVtcHR5KCRkZWZucykgfHwgIWlzc2V0KCRkZWZuc1skcHJvcGVydHldKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUHJvcGVydHkgJy4kcHJvcGVydHkuJyBub3QgZm91bmQnKTsKCiAgICAgICAgJGRlZm4gPSAkZGVmbnNbJHByb3BlcnR5XTsKICAgICAgICBpZiggISRmb3JjZSAmJiAoJGRlZm5bJ3R5cGUnXSA9PSAkbWFtczo6RklFTERUWVBFX0RBVEEgfHwgJGRlZm5bJ3R5cGUnXSA9PSAkbWFtczo6RklFTERUWVBFX0lNQUdFKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJTb3JyeSwgcHJvcGVydGllcyBvZiB0aGlzIHR5cGUgY2Fubm90IGJlIG1hbmlwdWxhdGVkLiIpOwogICAgICAgIH0KCiAgICAgICAgaWYoICRkZWxldGUgKSB7CiAgICAgICAgICAgIGlmKCAkZGVmblsndHlwZSddID09ICRtYW1zOjpGSUVMRFRZUEVfSU1BR0UgKSB7CiAgICAgICAgICAgICAgICAvLyBnb3R0YSBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIHRoaXMgcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lCiAgICAgICAgICAgICAgICAkdmFsID0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BlcnR5LCR1aWQpOwogICAgICAgICAgICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGRlbGV0ZSBpbWFnZSBmaWxlcyBoZXJlLgogICAgICAgICAgICAgICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAgICAgICAgICAgICAkZm4gPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXS4iL19tYW1zLyR2YWwiOwogICAgICAgICAgICAgICAgICAgIGlmKCBpc19maWxlKCRmbikgKSB1bmxpbmsoJGZuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkbWFtcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkcHJvcGVydHksJHVpZCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBub3cgd2UgY2FuIHNldCB0aGUgcHJvcGVydHkgdmFsdWUuCiAgICAgICAgICAgICRtYW1zLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wZXJ0eSwkcHJvcHZhbHVlLCR1aWQpOwogICAgICAgIH0KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserViewCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJWaWV3Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtdXNlci12aWV3JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3VzZXJuYW1lJywgT3BlcmFuZDo6UkVRVUlSRUQgKSApOwogICAgICAgIC8vJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2YnLCdmb3JtYXQnLCBHZXRPcHQ6OlJFUVVJUkVEX0FSR1VNRU5UICktPnNldERlc2NyaXB0aW9uKCdTcGVjaWZ5IG91dHB1dCBmb3JtYXQuICBWYWx1ZXMgYXJlIGpzb24sdGV4dCcpICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0RGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnTGlzdCBGRVUgdXNlcnMnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb25nRGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnVGhpcyBjb21tYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBGRVUgdXNlcnMgZmlsdGVyZWQgYnkgdmFyaW91cyBjcml0ZXJpYSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJHVzZXJuYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgndXNlcm5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeTsKICAgICAgICAkcXVlcnktPnNldF93ZWJyZWFkeSgpOwogICAgICAgICRxdWVyeS0+c2V0X2RlZXAoKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRSwgJHVzZXJuYW1lICk7CiAgICAgICAgJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAgICAgJGRhdGEgPSAkcnMtPmZpZWxkczsKICAgICAgICBpZiggISRkYXRhICkgcmV0dXJuOwoKICAgICAgICAkdWlkID0gKGludCkgJGRhdGFbJ2lkJ107CiAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkYWxsZ3JvdXBzID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwogICAgICAgIGlmKCAkYWxsZ3JvdXBzICkgewogICAgICAgICAgICAkYWxsZ3JvdXBzID0gYXJyYXlfZmxpcCgkYWxsZ3JvdXBzKTsKICAgICAgICAgICAgJHVncm91cHMgPSAkbWFtcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVpZCk7CiAgICAgICAgICAgIGZvcmVhY2goICR1Z3JvdXBzIGFzICRncnAgKSB7CiAgICAgICAgICAgICAgICAkZ2lkID0gKGludCkgJGdycFsnZ3JvdXBpZCddOwogICAgICAgICAgICAgICAgJGRhdGFbJ2dyb3VwcyddW10gPSAkYWxsZ3JvdXBzWyRnaWRdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB1bnNldCgkZGF0YVsnc2FsdCddKTsKICAgICAgICBpZiggaXNzZXQoJGRhdGFbJ2Zwcm9wcyddKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGRhdGFbJ2Zwcm9wcyddIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAkZGF0YVsncHJvcHMnXVskb25lWyd0aXRsZSddXSA9ICRvbmVbJ2RhdGEnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bnNldCgkZGF0YVsnZnByb3BzJ10pOwogICAgICAgIH0KICAgICAgICAkc3RyID0ganNvbl9lbmNvZGUoJGRhdGEsSlNPTl9QUkVUVFlfUFJJTlQpOwogICAgICAgIGVjaG8gJHN0ci4iXG4iOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/interface.mams_auth_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaW50ZXJmYWNlIG1hbXNfYXV0aF9jb25zdW1lcgp7CiAgY29uc3QgQ0FQQUJJTElUWV9BTFRMT0dJTiAgICAgICAgICAgICA9ICdDQVBBQklMSVRZX0FMVExPR0lOJzsKICBjb25zdCBDQVBBQklMSVRZX0xPR0lOICAgICAgICAgICAgICAgID0gJ0NBUEFCSUxJVFlfTE9HSU4nOwogIGNvbnN0IENBUEFCSUxJVFlfTE9HT1VUICAgICAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9MT0dPVVQnOwogIGNvbnN0IENBUEFCSUxJVFlfQ0hBTkdFU0VUVElOR1MgICAgICAgPSAnQ0FQQUJJTElUWV9DSEFOR0VTRVRUSU5HUyc7CiAgY29uc3QgQ0FQQUJJTElUWV9MT1NUVVNFUk5BTUUgICAgICAgICA9ICdDQVBBQklMSVRZX0xPU1RVU0VSTkFNRSc7CiAgY29uc3QgQ0FQQUJJTElUWV9GT1JHT1RQQVNTV0QgICAgICAgICA9ICdDQVBBQklMSVRZX0ZPUkdPVFBBU1NXRCc7CiAgY29uc3QgQ0FQQUJJTElUWV9VU0VTVERDSEFOR0VTRVRUSU5HUyA9ICdDQVBBQklMSVRZX1VTRVNURENIQU5HRVNFVFRJTkdTJzsKICBjb25zdCBDQVBBQklMSVRZX1VTRVNUREdST1VQUyAgICAgICAgID0gJ0NBUEFCSUxJVFlfVVNFU1RER1JPVVBTJzsKICBjb25zdCBDQVBBQklMSVRZX0NIQU5HRVBBU1NXRCAgICAgICAgID0gJ0NBUEFCSUxJVFlfQ0hBTkdFUEFTU1dEJzsKICBjb25zdCBDQVBBQklMSVRZX0NIQU5HRVVTRVJOQU1FICAgICAgID0gJ0NBUEFCSUxJVFlfQ0hBTkdFVVNFUk5BTUUnOwogIGNvbnN0IENBUEFCSUxJVFlfTElTVFBST1BTICAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9MSVNUUFJPUFMnOwogIGNvbnN0IENBUEFCSUxJVFlfRURJVFBST1BTICAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9FRElUUFJPUFMnOwogIGNvbnN0IENBUEFCSUxJVFlfTElTVEdST1VQUyAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9MSVNUR1JPVVBTJzsKICBjb25zdCBDQVBBQklMSVRZX0VESVRHUk9VUFMgICAgICAgICAgID0gJ0NBUEFCSUxJVFlfRURJVEdST1VQUyc7CiAgY29uc3QgQ0FQQUJJTElUWV9FRElUR1JPVVBQUk9QUyAgICAgICA9ICdDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTJzsKICBjb25zdCBDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUCAgICAgID0gJ0NBUEFCSUxJVFlfR1JPVVBNRU1CRVJTSElQJzsKICBjb25zdCBDQVBBQklMSVRZX0RFRkFVTFRHUk9VUFMgICAgICAgID0gJ0NBUEFCSUxJVFlfREVGQVVMVEdST1VQUyc7CiAgY29uc3QgQ0FQQUJJTElUWV9VU0VSTkFNRSAgICAgICAgICAgICA9ICdDQVBBQklMSVRZX1VTRVJOQU1FJzsgLy8gcmV0cmlldmUgcmVhZGFibGUgdXNlcm5hbWUgZ2l2ZW4gYSB1bmlxdWUgaWRlbnRpZmllci4KICAKICBjb25zdCBQUk9QRVJUWV9VU0VSTkFNRSA9ICdfX1VTRVJOQU1FX18nOwogIGNvbnN0IFBST1BFUlRZX1VJRCAgICAgID0gJ19fVUlEX18nOwogIAogIC8qKgogICAqIFJldHVybiBhIGZsYWcgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZC4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gaXNfYXV0aGVudGljYXRlZCgpOwogIAogIC8qKgogICAqIFJldHVybiBhbiBhcnJheSB3aXRoIHRoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjYXBhYmlsaXRpZXMKICAgKgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2FwYWJpbGl0aWVzKCk7CiAgCiAgLyoqCiAgICogVGVzdCBpZiB0aGUgY29uc3VtZXIgaGFzIHRoZSBjYXBhYmlsaXR5CiAgICoKICAgKiBBY2NlcHRzIGEgc2luZ2xlIGNhcGFiaWxpdHkgaWRlbnRpZmllciwgb3IgbGlzdCBvZiBhcmd1bWVudCBjYXBhYmlsaXRpZXMuCiAgICogcmV0dXJucyBUUlVFIGlmIGFueSBvZiB0aGUgcGFzc2VkIGluIHByb3BlcnRpZXMgbWF0Y2guCiAgICogcmV0dXJucyBGQUxTRSBvdGhlcndpc2UuCiAgICoKICAgKiBAcGFyYW0gbWl4ZWQgJGZsYWcgRWl0aGVyIGEgc2luZ2xlIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmcgY2FwYWJpbGl0aWVzLgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBoYXNfY2FwYWJpbGl0eSgkZmxhZyk7CiAgCiAgLyoqCiAgICogQSBmdW5jdGlvbiB0byBkaXNwbGF5IGxvZ2luIGluZm9ybWF0aW8KICAgKiAob3IgYSBsaW5rIHRvIGEgbG9naW4gcGFnZSkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2xvZ2luX2Rpc3BsYXkoJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogIAogIC8qKgogICAqIEEgZnVuY3Rpb24gdG8gZGlzcGxheSBsb2dpbiBpbmZvcm1hdGlvbgogICAqIChvciBhIGxpbmsgdG8gYSBsb2dpbiBwYWdlKQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogIAogIC8qKgogICAqIEEgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIHBhZ2UKICAgKgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2hhbmdlc2V0dGluZ3NfZGlzcGxheSgkaWQsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgCiAgCiAgLyoqCiAgICogR2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIGZyb20gdGhlIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIHN5c3RlbQogICAqIGZvciB1c2UgYnkgRkVVCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91c2VyX2luZm8oKTsKICAKICAKICAvKioKICAgKiBHZXQgdGhlIG5hbWUgb2YgYW4gRkVVIHByb3BlcnR5IHRoYXQgaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeQogICAqIGEgdXNlcgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29ubmVjdGluZ19wcm9wZXJ0eV9uYW1lKCk7CiAgCiAgCiAgLyoqCiAgICogR2V0IGFuIGlkZW50aWZpZXIgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgdXNlciBpbiB0aGlzIGVudmlyb25tZW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91bmlxdWVfaWRlbnRpZmllcigpOwogIAogIC8qKgogICAqIEdldCBhIGxpc3Qgb2YgYWxsIGdyb3VwcwogICAqCiAgICogQHJldHVybiBBc3NvY2lhdGl2ZSBhcnJheSBvZiBncm91cG5hbWVzIGFuZCBncm91cGlkJ3MuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cF9saXN0KCR3aXRoX2NvdW50ID0gRkFMU0UpOwogIAogIC8qKgogICAqIEdldCB0aGUgbGlzdCBvZiBncm91cCAoaWRzKSB0aGF0IGEgdXNlciBpcyBhIG1lbWJlciBvZi4KICAgKgogICAqIEBwYXJhbSBpbnRlZ2VyIFRoZSB1c2VyIGlkLiAgTWF5IGJlIG5lZ2F0aXZlIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgYWNjb3VudCBpcyByZXByZXNlbnRpbmcgYSBuZXcgdXNlci4KICAgKgogICAqIEByZXR1cm4gbWl4ZWQgYXJyYXkgb2YgaW50ZWdlcnMsIG9yIG51bGwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCk7CiAgCiAgLyoqCiAgICogR2V0IHRoZSBsaXN0IG9mIGdyb3VwIChpZHMpIHRoYXQgYnkgZGVmYXVsdCwgYSBuZXcgdXNlciBzaG91bGQgYmVsb25nIHRvLgogICAqCiAgICogQHJldHVybiBtaXhlZCBhcnJheSBvZiBpbnRlZ2Vycywgb3IgbnVsbC4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RlZmF1bHRfZ3JvdXBzKCk7CiAgCiAgLyoqCiAgICogR2V0IHRoZSB1c2VybmFtZSBwcm9tcHQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJuYW1lX3Byb21wdCgpOwogIAogIC8qKgogICAqIFZhbGlkYXRlIHVzZXJuYW1lLgogICAqCiAgICogQHBhcmFtIHN0cmluZyB0aGUgcHJvcG9zZWQgdXNlZXJuYW1lCiAgICogQHBhcmFtIGJvb2xlYW4gaW5kaWNhdGVzIHdldGhlciB0aGUgdXNlcm5hbWUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZW1haWwgYWRkcmVzcywgYW5kIHZhbGlkYXRlZAogICAqIEBwYXJhbSBpbnRlZ2VyIFRoZSB1c2VyIGlkIChpZiBpdHMgYW4gZXhpc3RpbmcgdXNlcikuLi4gdG8gdXNlIGZvciBjaGVja2luZyBmb3IgZHVwbGljYXRlIGFkZHJlc3NlcwogICAqCiAgICogQHJldHVybiBib29sZWFuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3VzZXJuYW1lKCR1c2VybmFtZSwgJGNoZWNrX2VtYWlsX2FkZHIgPSBGQUxTRSwgJHVpZCA9IC0xKTsKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/admin.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9IAp7JHNlbF9ncm91cHMgPSBleHBsb2RlKCcsJywgJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJykpfQp7JGdyb3Vwc19vcHRzID0gJGZpZWxkZGVmLT5HZXRNQU1TR3JvdXBzKCl9CiAKPGZpZWxkc2V0PgogIDxsZWdlbmQ+e2xhbmcoJ29wdGlvbnMnKX08L2xlZ2VuZD4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3R5cGVdIiBzdHlsZT0ibWF4LXdpZHRoOiA5OCU7Ij4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cy50eXBlcyBzZWxlY3RlZD0kZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0Jyl9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+IAogIAo8L2ZpZWxkc2V0Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/input.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KeyRzZWwgPSAkZmllbGRkZWYtPkdldFZhbHVlKCdhcnJheScpfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+R2V0TmFtZSgpfXtpZiAkZmllbGRkZWYtPklzUmVxdWlyZWQoKX0qey9pZn06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJe2lmICRmaWVsZGRlZi0+R2V0RGVzYygpfSh7JGZpZWxkZGVmLT5HZXREZXNjKCl9KTxiciAvPnsvaWZ9CiAgICB7aWYgJHR5cGUgPT0gJ011bHRpU2VsZWN0J30KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dW119IiBzaXplPSJ7JG9wdHN8Y291bnR9IiBtdWx0aXBsZT4gICAgICAgIAogICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWx9CiAgICAgICAgPC9zZWxlY3Q+ICAKICAgIHsvaWZ9ICAgIAogICAge2lmICR0eXBlID09ICdSYWRpb0dyb3VwJ30KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIHZhbHVlPSIiIC8+CiAgICAgIHtodG1sX3JhZGlvcyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsIHNlcGFyYXRvcj0nPGJyIC8+J30KICAgIHsvaWZ9ICAgICAgCiAgICB7aWYgJHR5cGUgPT0gJ0NoZWNrYm94R3JvdXAnfQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAge2h0bWxfY2hlY2tib3hlcyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsIHNlcGFyYXRvcj0nPGJyIC8+J30KICAgIHsvaWZ9ICAgIAogICAge2lmICR0eXBlID09ICdKUXVlcnlNdWx0aVNlbGVjdCd9CiAgICAgIDxkaXYgY2xhc3M9Im1zLWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIHZhbHVlPSIiIC8+CiAgICAgICAgPHNlbGVjdCBpZD0ieyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9IiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XVtdfSIgc2l6ZT0ieyRvcHRzfGNvdW50fSIgbXVsdGlwbGU+ICAgICAgICAKICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsfQogICAgICAgIDwvc2VsZWN0PgogICAgICA8L2Rpdj4gCiAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgJCgnI3skYWN0aW9uaWR9Y3VzdG9tZmllbGR7JGZpZWxkZGVmLT5HZXRJZCgpfScpLm11bHRpU2VsZWN0KCk7CiAgICAgIDwvc2NyaXB0PgogICAgey9pZn0KCTwvcD4KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9NQU1TTXVsdGlTZWxlY3QvaW1hZ2VzL3N3aXRjaC5wbmcnKSBuby1yZXBlYXQgNTAlIDUwJTsNCiAgd2lkdGg6IDQ3MHB4Ow0KfQ0KDQoubXMtY29udGFpbmVyOmFmdGVyew0KICBjb250ZW50OiAiLiI7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBoZWlnaHQ6IDA7DQogIGxpbmUtaGVpZ2h0OiAwOw0KICBmb250LXNpemU6IDA7DQogIGNsZWFyOiBib3RoOw0KICBtaW4taGVpZ2h0OiAwOw0KICB2aXNpYmlsaXR5OiBoaWRkZW47DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUsIC5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbnsNCiAgYmFja2dyb3VuZDogI2ZmZjsNCiAgY29sb3I6ICM1NTU1NTU7DQogIGZsb2F0OiBsZWZ0Ow0KICB3aWR0aDogNDUlOw0KfQ0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBmbG9hdDogcmlnaHQ7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3R7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1vei10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1tcy10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1vLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBoZWlnaHQ6IDIwMHB4Ow0KICBwYWRkaW5nOiAwOw0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1saXN0Lm1zLWZvY3Vzew0KICBib3JkZXItY29sb3I6IHJnYmEoODIsIDE2OCwgMjM2LCAwLjgpOw0KICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA4cHggcmdiYSg4MiwgMTY4LCAyMzYsIDAuNik7DQogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgb3V0bGluZTogMDsNCiAgb3V0bGluZTogdGhpbiBkb3R0ZWQgXDk7DQp9DQoNCi5tcy1jb250YWluZXIgdWx7DQogIG1hcmdpbjogMDsNCiAgbGlzdC1zdHlsZS10eXBlOiBub25lOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1jb250YWluZXJ7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1sYWJlbHsNCiAgbWFyZ2luOiAwOw0KICBwYWRkaW5nOiA1cHggMHB4IDBweCA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICM5OTk7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtZWxlbS1zZWxlY3RhYmxlLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLm1zLWVsZW0tc2VsZWN0aW9uew0KICBib3JkZXItYm90dG9tOiAxcHggI2VlZSBzb2xpZDsNCiAgcGFkZGluZzogMnB4IDEwcHg7DQogIGNvbG9yOiAjNTU1Ow0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtaG92ZXIsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtaG92ZXJ7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICNmZmY7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzA4YzsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5kaXNhYmxlZCwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5kaXNhYmxlZHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsNCiAgY29sb3I6ICNhYWE7DQogIGN1cnNvcjogdGV4dDsNCn0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/lisefd.MAMSGroupsMultiSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU0dyb3Vwc011bHRpU2VsZWN0IGV4dGVuZHMgTElTRUZpZWxkZGVmQmFzZQp7CiAgcHJpdmF0ZSAkX29wdHMgPSBhcnJheSgpOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGRiX2luZm8pIAogIHsgICAKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRiX2luZm8pOwogICAgCiAgICAkdGhpcy0+U2V0RnJpZW5kbHlUeXBlKCAkdGhpcy0+TW9kTGFuZygnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAgIAogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kdWxlRGVwcygpCiAgewogICAgCiAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICdNQU1TJyA9PiAnMS4wLmInCiAgICAgICAgICAgICAgICApOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCiAgewogICAgJHRtcGwgPSAnJzsKICAgIGlmKCAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3R5cGUnLCAnTXVsdGlTZWxlY3QnKSA9PSAnTXVsdGlTZWxlY3QnICkKICAgIHsKICAgICAgICAkdG1wbCA9IDw8PEVPVAo8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHRoaXMtPkdldFVSTFBhdGgoKX0vanF1ZXJ5Lm11bHRpLXNlbGVjdC5jc3MiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmpzIj48L3NjcmlwdD4KRU9UOwogICAgfQogICAgcmV0dXJuICR0bXBsOwogIH0KICAgIAogIC8vIGdldCBhdmFpbGFibGUgZ3JvdXBzIGZyb20gTUFNUyBtb2R1bGUKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU0dyb3VwcygpCiAgeyAgIAogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAKICAgIGlmKGlzX29iamVjdCgkbWFtcykpCiAgICB7CiAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAgCiAgICAgIGlmKCRncm91cHMpCiAgICAgIHsKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvcHRpb24pIAogICAgICAgIHsKICAgICAgICAgICRvcHRpb25zWyRvcHRpb25bJ2lkJ11dID0gJG9wdGlvblsnZ3JvdXBuYW1lJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CiAgfQogIAogICAgIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRPcHRpb25zKCkgCiAgewogICAgJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CiAgICAKICAgICR0aGlzLT5fb3B0c1sndHlwZSddID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0Jyk7CiAgICAkdGhpcy0+X29wdHNbJ3R5cGVzJ10gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpU2VsZWN0JyAgICAgICAgID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9NdWx0aVNlbGVjdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hlY2tib3hHcm91cCcgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0NoZWNrYm94R3JvdXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0pRdWVyeU11bHRpU2VsZWN0JyAgID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9KUXVlcnlNdWx0aVNlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgcmV0dXJuICR0aGlzLT5fb3B0czsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIFJlbmRlckZvckFkbWluTGlzdGluZygkaWQsICRyZXR1cm5pZCkKICB7CiAgICAkZ3JvdXBzID0gKGFycmF5KSR0aGlzLT5HZXRWYWx1ZSgpOwogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdncm91cHMnLCAkZ3JvdXBzKTsKICAgIHJldHVybiBwYXJlbnQ6OlJlbmRlckZvckFkbWluTGlzdGluZygkaWQsICRyZXR1cm5pZCk7CiAgfQp9Ly8gZW5kIG9mIGNsYXNzCj8+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/list.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfZ3JvdXBzJyl9OiB7JGdyb3Vwc3xjb3VudH0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/output.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/admin.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9Cnskc2VsX2dyb3VwcyA9IGV4cGxvZGUoJywnLCAkbWFtc19vcHRpb25zKX0KeyRzZWxfZ3JvdXBzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJyl9CnskZ3JvdXBzX29wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KCjxmaWVsZHNldD4KICA8bGVnZW5kPntsYW5nKCdvcHRpb25zJyl9PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3R5cGVdIiBzdHlsZT0ibWF4LXdpZHRoOiA5OCU7Ij4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cy50eXBlcyBzZWxlY3RlZD0kZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ0Ryb3Bkb3duJyl9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+IAogIAo8L2ZpZWxkc2V0Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/input.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KCnskc2VsID0gJGZpZWxkZGVmLT5HZXRWYWx1ZSgpfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5HZXROYW1lKCl9e2lmICRmaWVsZGRlZi0+SXNSZXF1aXJlZCgpfSp7L2lmfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQl7aWYgJGZpZWxkZGVmLT5HZXREZXNjKCl9KHskZmllbGRkZWYtPkdldERlc2MoKX0pPGJyIC8+ey9pZn0KICAgIHtpZiAkdHlwZSA9PSAnRHJvcGRvd24nfSAgICAgICAgCiAgICAgIHtodG1sX29wdGlvbnMgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbH0KICAgIHsvaWZ9ICAgIAogICAge2lmICR0eXBlID09ICdSYWRpb0dyb3VwJ30KICAgICAge2h0bWxfcmFkaW9zIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWwgc2VwYXJhdG9yPSc8YnIgLz4nfQogICAgey9pZn0gICAgICAgICAgCiAgICB7aWYgJHR5cGUgPT0gJ0pRdWVyeU11bHRpU2VsZWN0J30KICAgICAgPGRpdiBjbGFzcz0ibXMtY29udGFpbmVyIj4KICAgICAgICA8c2VsZWN0IGlkPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dW119IiBzaXplPSJ7JG9wdHN8Y291bnR9IiBtdWx0aXBsZT4gCiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbH0KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgICAgIC8vIGRpcnR5IGhhY2sgdG8gYXZvaWQgcmVjdXJzaW9uLi4uCiAgICAgICAgICAgIHdpbmRvdy5tc19kZXMgPSB0cnVlOwogICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoewogICAgICAgICAgICAgICAgIGFmdGVyU2VsZWN0OiBmdW5jdGlvbih2YWx1ZXMpewogICAgICAgICAgICAgICAgICAgaWYod2luZG93Lm1zX2Rlcyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoJ2Rlc2VsZWN0X2FsbCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm1zX2RlcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3skYWN0aW9uaWR9Y3VzdG9tZmllbGR7JGZpZWxkZGVmLT5HZXRJZCgpfScpLm11bHRpU2VsZWN0KCdzZWxlY3QnLCB2YWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubXNfZGVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAgIH0pOwogICAgICA8L3NjcmlwdD4KICAgIHsvaWZ9Cgk8L3A+CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9GRVVNdWx0aVNlbGVjdC9pbWFnZXMvc3dpdGNoLnBuZycpIG5vLXJlcGVhdCA1MCUgNTAlOw0KICB3aWR0aDogNDcwcHg7DQp9DQoNCi5tcy1jb250YWluZXI6YWZ0ZXJ7DQogIGNvbnRlbnQ6ICIuIjsNCiAgZGlzcGxheTogYmxvY2s7DQogIGhlaWdodDogMDsNCiAgbGluZS1oZWlnaHQ6IDA7DQogIGZvbnQtc2l6ZTogMDsNCiAgY2xlYXI6IGJvdGg7DQogIG1pbi1oZWlnaHQ6IDA7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSwgLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBjb2xvcjogIzU1NTU1NTsNCiAgZmxvYXQ6IGxlZnQ7DQogIHdpZHRoOiA0NSU7DQp9DQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb257DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtbGlzdHsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICAtbW96LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1zLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW8tdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICB0cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7DQogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4Ow0KICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGhlaWdodDogMjAwcHg7DQogIHBhZGRpbmc6IDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3QubXMtZm9jdXN7DQogIGJvcmRlci1jb2xvcjogcmdiYSg4MiwgMTY4LCAyMzYsIDAuOCk7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICBvdXRsaW5lOiAwOw0KICBvdXRsaW5lOiB0aGluIGRvdHRlZCBcOTsNCn0NCg0KLm1zLWNvbnRhaW5lciB1bHsNCiAgbWFyZ2luOiAwOw0KICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQogIHBhZGRpbmc6IDA7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWNvbnRhaW5lcnsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWxhYmVsew0KICBtYXJnaW46IDA7DQogIHBhZGRpbmc6IDVweCAwcHggMHB4IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogIzk5OTsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1lbGVtLXNlbGVjdGFibGUsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtZWxlbS1zZWxlY3Rpb257DQogIGJvcmRlci1ib3R0b206IDFweCAjZWVlIHNvbGlkOw0KICBwYWRkaW5nOiAycHggMTBweDsNCiAgY29sb3I6ICM1NTU7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1ob3ZlciwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5tcy1ob3ZlcnsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogI2ZmZjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDhjOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3RhYmxlIGxpLmRpc2FibGVkLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLmRpc2FibGVkew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOw0KICBjb2xvcjogI2FhYTsNCiAgY3Vyc29yOiB0ZXh0Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/lisefd.MAMSGroupsSingleSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU0dyb3Vwc1NpbmdsZVNlbGVjdCBleHRlbmRzIExJU0VGaWVsZGRlZkJhc2UKewogIHByaXZhdGUgJF9vcHRzID0gYXJyYXkoKTsKICAKICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJiRkYl9pbmZvKSAKICB7ICAgCiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRkYl9pbmZvKTsgCiAgICAkdGhpcy0+U2V0RnJpZW5kbHlUeXBlKCAkdGhpcy0+TW9kTGFuZyggJ2ZpZWxkZGVmXycgLiAkdGhpcy0+R2V0VHlwZSgpICkgKTsKICAgIFxjbXNfdXRpbHM6OmdldF9zbWFydHkoKS0+YXNzaWduKCdsaXNlJywgXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTElTRScpKTsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2R1bGVEZXBzKCkgCiAgeyAKICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgICAgICAgJ01BTVMnID0+ICcxLjAuYicKICAgICAgICAgICAgICAgICk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICB7CiAgICAkdG1wbCA9ICcnOwogICAgaWYoICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdEcm9wZG93bicpID09ICdNdWx0aVNlbGVjdCcgKQogICAgewogICAgICAgICR0bXBsID0gPDw8RU9UCjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuanMiPjwvc2NyaXB0PgpFT1Q7CiAgICB9CiAgICByZXR1cm4gJHRtcGw7CiAgfQogIAogIC8vIGdldCBhdmFpbGFibGUgZ3JvdXBzIGZyb20gTUFNUyBtb2R1bGUKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU0dyb3VwcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAKICAgIGlmKGlzX29iamVjdCgkbWFtcykpCiAgICB7CiAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAKICAgICAgaWYoJGdyb3VwcykgCiAgICAgIHsKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvcHRpb24pIAogICAgICAgIHsKICAgICAgICAgICRvcHRpb25zWyRvcHRpb25bJ2lkJ11dID0gJG9wdGlvblsnZ3JvdXBuYW1lJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TUHJvcGVydGllcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkbWFtc19wcm9wcyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAKICAgIC8vIHJlbW92ZSBzZWxmcmVnIHByb3AKICAgIGlmKCBpc3NldCgkbWFtc19wcm9wc1snX19NQU1TUkVHJ10pICkgdW5zZXQoJG1hbXNfcHJvcHNbJ19fTUFNU1JFRyddKTsKICAgIAogICAgJG1hbXNfb3B0aW9ucyA9IGFycmF5KCk7CiAgICAkbWFtc19vcHRpb25zYiA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRtYW1zX3Byb3BzIGFzICRvbmUpJG1hbXNfb3B0aW9uc1sgJG9uZVsnbmFtZSddIF0gPSAkb25lWydwcm9tcHQnXTsKICAgIGFzb3J0KCRtYW1zX29wdGlvbnMpOwogICAgJG1hbXNfb3B0aW9uc2JbLTFdID0gbGFuZygnbm9uZScpOwogICAgJG1hbXNfb3B0aW9uc2JbMF0gPSAkbWFtcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyk7CiAgICAkbWFtc19vcHRpb25zID0gYXJyYXlfbWVyZ2UoJG1hbXNfb3B0aW9uc2IsICRtYW1zX29wdGlvbnMpOwogICAgCiAgICByZXR1cm4gJG1hbXNfb3B0aW9uczsKICB9IAogICAgIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRPcHRpb25zKCkgCiAgewogICAgJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CiAgCiAgICAkdGhpcy0+X29wdHNbJ3R5cGUnXSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpOwogICAgJHRoaXMtPl9vcHRzWyd0eXBlcyddID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEcm9wZG93bicgICAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0Ryb3Bkb3duJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSYWRpb0dyb3VwJyAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX1JhZGlvR3JvdXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0pRdWVyeU11bHRpU2VsZWN0JyA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfSlF1ZXJ5TXVsdGlTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIAogICAgcmV0dXJuICR0aGlzLT5fb3B0czsKICB9CiAgCiAgLy8gZ2V0IGxpc3Qgb2YgdXNlcnMgZnJvbSBNQU1TIG1vZHVsZSBiYXNlZCBvbiBzZWxlY3RlZCBncm91cAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TVXNlckxpc3QoKQogIHsgICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgLy8gR2V0VXNlcnNJbkdyb3VwKCkgaXMgZGVwcmVjYXRlZCBidXQgR2V0RnVsbFVzZXJzSW5Hcm91cCgpIHNlZW1zIHRvIGhhdmUgYSBidWcsIAogICAgICAvLyBjaGFuZ2UgdGhpcyBhZnRlciBNQU1TIEJSICM4NzUzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL3ZpZXcvODc1MyBpcyBjb25maXJtZWQgYW5kIGZpeGVkCiAgICAgICRncm91cHMgICAgICAgPSBleHBsb2RlKCcsJywgJHRoaXMtPkdldE9wdGlvblZhbHVlKCdtYW1zX29wdGlvbnMnKSk7CiAgICAgICRtYW1zX3Byb3AgICAgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQnKTsKICAgICAgJG1hbXNfcHJvcDIgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZDInKTsKICAgICAgJHVzZV91c2VybmFtZSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VzZXJuYW1lJyk7CiAgICAgICR1c2VfdWlkICAgICAgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91aWQnKTsKICAgICAgJHNlcGFyYXRvciAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnc2VwYXJhdG9yJyk7CiAgICAgICR1c2VycyAgICAgICAgPSBhcnJheSgpOwogICAgICAKICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCkKICAgICAgewogICAgICAgICR0bXB1c2VycyA9ICRtYW1zLT5HZXRGdWxsVXNlcnNJbkdyb3VwKCRncm91cCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkdG1wdXNlcnMgYXMgJG9uZSkKICAgICAgICB7CiAgICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygkb25lWydpZCddLCAkdXNlcnMpICkgY29udGludWU7CiAgICAgICAgICAKICAgICAgICAgICR1aWQgPSAoYm9vbCkkdXNlX3VpZCA/ICdbJyAuICRvbmVbJ2lkJ10gLiAnXSAnIDogJyc7IAogICAgICAgICAgCiAgICAgICAgICAjbm93IGxldHMgYnVpbGQgdGhlIHNlbGVjdCAgICAgICAgICAKICAgICAgICAgIGlmKCR1c2VfdXNlcm5hbWUpCiAgICAgICAgICB7CiAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICBpZiggJG1hbXNfcHJvcCA9PSBOVUxMIHx8IChpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gLTEpICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQ7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgaWYoaXNfbnVtZXJpYygkbWFtc19wcm9wKSAmJiAkbWFtc19wcm9wID09IDApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcCwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgIGlmKCBpc19udW1lcmljKCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAwICYmICEoaXNfaW50KCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPCAxKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlaWYoICEoaXNfaW50KCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAtMSkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkc2VwYXJhdG9yIC4gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcDIsICRvbmVbJ2lkJ10pOwogICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAgCiAgICAgIGFzb3J0KCR1c2Vycyk7CiAgICAgIAogICAgICByZXR1cm4gJHVzZXJzOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICR1c2VyID0gJyc7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJHZhbHVlID0gJHRoaXMtPkdldFZhbHVlKCk7CiAgICAgICR1c2VyID0gJG1hbXMtPkdldFVzZXJOYW1lKCR2YWx1ZVswXSk7CiAgICB9CiAgICAKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbigndXNlcicsICR1c2VyKTsKICAgIHJldHVybiBwYXJlbnQ6OlJlbmRlckZvckFkbWluTGlzdGluZygkaWQsICRyZXR1cm5pZCk7CiAgfQogIAp9Ly8gZW5kIG9mIGNsYXNzCj8+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/list.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR1c2VyfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/output.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/admin.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9IAp7JHNlbF9ncm91cHMgPSBleHBsb2RlKCcsJywgJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJykpfQp7JGdyb3Vwc19vcHRzID0gJGZpZWxkZGVmLT5HZXRNQU1TR3JvdXBzKCl9CnskZGVmcyA9ICRmaWVsZGRlZi0+R2V0TUFNU1Byb3BlcnRpZXMoKX0KeyRzZWxfZGVmID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZCcpfQp7JHNlbF9kZWYyID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZDInKX0KIAo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57bGFuZygnb3B0aW9ucycpfTwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfb3B0aW9ucycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W21hbXNfb3B0aW9uc11bXX0iIHNpemU9InskZ3JvdXBzX29wdHN8Y291bnR9IiBtdWx0aXBsZT4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZ3JvdXBzX29wdHMgc2VsZWN0ZWQ9JHNlbF9ncm91cHN9CiAgICAgICAgPC9zZWxlY3Q+ICAKICAgIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfbXVsdGlzZWxlY3RfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+IAogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3VzZV91aWQnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt1c2VfdWlkXSIgdmFsdWU9IjAiIC8+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3VzZV91aWRdIiB2YWx1ZT0iMSJ7aWYgJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VpZCcpfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gLz4KICA8L3A+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlX3VpZF9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl91c2VfdXNlcm5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt1c2VfdXNlcm5hbWVdIiB2YWx1ZT0iMCIgLz4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdXNlX3VzZXJuYW1lXSIgdmFsdWU9IjEie2lmICRmaWVsZGRlZi0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91c2VybmFtZScpfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gLz4KICA8L3A+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlX3VzZXJuYW1lX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CiAgPGhyPiAKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX2ZpZWxkcycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge2h0bWxfb3B0aW9ucyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFttYW1zX2ZpZWxkXX0iIG9wdGlvbnM9JGRlZnMgc2VsZWN0ZWQ9JHNlbF9kZWZ9CiAgICA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX2ZpZWxkc19oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4gCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHMyJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7aHRtbF9vcHRpb25zIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W21hbXNfZmllbGQyXX0iIG9wdGlvbnM9JGRlZnMgc2VsZWN0ZWQ9JHNlbF9kZWYyfQogICAgPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHNfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+IAogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfc2VwYXJhdG9yX2NocicpfTo8L3A+CgkgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbc2VwYXJhdG9yXSIgdmFsdWU9InskZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCdzZXBhcmF0b3InLCAnICcpfSIgLz4KCSAgPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfc2VwYXJhdG9yX2Nocl9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfdHlwZScpfTo8L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdHlwZV0iIHN0eWxlPSJtYXgtd2lkdGg6IDk4JTsiPgogICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzLnR5cGVzIHNlbGVjdGVkPSRmaWVsZGRlZi0+R2V0T3B0aW9uVmFsdWUoJ3R5cGUnLCAnTXVsdGlTZWxlY3QnKX0KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGVfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4gCiAgCjwvZmllbGRzZXQ+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/input.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNVc2VyTGlzdCgpfQp7JHNlbCA9ICRmaWVsZGRlZi0+R2V0VmFsdWUoJ2FycmF5Jyl9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5HZXROYW1lKCl9e2lmICRmaWVsZGRlZi0+SXNSZXF1aXJlZCgpfSp7L2lmfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQl7aWYgJGZpZWxkZGVmLT5HZXREZXNjKCl9KHskZmllbGRkZWYtPkdldERlc2MoKX0pPGJyIC8+ey9pZn0KICAgIHtpZiAkdHlwZSA9PSAnTXVsdGlTZWxlY3QnfQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiB2YWx1ZT0iIiAvPgogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV1bXX0iIHNpemU9Inskb3B0c3xjb3VudH0iIG11bHRpcGxlPiAgICAgICAgCiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbH0KICAgICAgICA8L3NlbGVjdD4gIAogICAgey9pZn0gICAgCiAgICB7aWYgJHR5cGUgPT0gJ1JhZGlvR3JvdXAnfQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAge2h0bWxfcmFkaW9zIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWwgc2VwYXJhdG9yPSc8YnIgLz4nfQogICAgey9pZn0gICAgICAKICAgIHtpZiAkdHlwZSA9PSAnQ2hlY2tib3hHcm91cCd9CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiB2YWx1ZT0iIiAvPgogICAgICB7aHRtbF9jaGVja2JveGVzIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWwgc2VwYXJhdG9yPSc8YnIgLz4nfQogICAgey9pZn0gICAgCiAgICB7aWYgJHR5cGUgPT0gJ0pRdWVyeU11bHRpU2VsZWN0J30KICAgICAgPGRpdiBjbGFzcz0ibXMtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAgICA8c2VsZWN0IGlkPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dW119IiBzaXplPSJ7JG9wdHN8Y291bnR9IiBtdWx0aXBsZT4gICAgICAgIAogICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWx9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvZGl2PiAKICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoKTsKICAgICAgPC9zY3JpcHQ+CiAgICB7L2lmfQoJPC9wPgo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9NQU1TTXVsdGlTZWxlY3QvaW1hZ2VzL3N3aXRjaC5wbmcnKSBuby1yZXBlYXQgNTAlIDUwJTsNCiAgd2lkdGg6IDQ3MHB4Ow0KfQ0KDQoubXMtY29udGFpbmVyOmFmdGVyew0KICBjb250ZW50OiAiLiI7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBoZWlnaHQ6IDA7DQogIGxpbmUtaGVpZ2h0OiAwOw0KICBmb250LXNpemU6IDA7DQogIGNsZWFyOiBib3RoOw0KICBtaW4taGVpZ2h0OiAwOw0KICB2aXNpYmlsaXR5OiBoaWRkZW47DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUsIC5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbnsNCiAgYmFja2dyb3VuZDogI2ZmZjsNCiAgY29sb3I6ICM1NTU1NTU7DQogIGZsb2F0OiBsZWZ0Ow0KICB3aWR0aDogNDUlOw0KfQ0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBmbG9hdDogcmlnaHQ7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3R7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1vei10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1tcy10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1vLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBoZWlnaHQ6IDIwMHB4Ow0KICBwYWRkaW5nOiAwOw0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1saXN0Lm1zLWZvY3Vzew0KICBib3JkZXItY29sb3I6IHJnYmEoODIsIDE2OCwgMjM2LCAwLjgpOw0KICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA4cHggcmdiYSg4MiwgMTY4LCAyMzYsIDAuNik7DQogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgb3V0bGluZTogMDsNCiAgb3V0bGluZTogdGhpbiBkb3R0ZWQgXDk7DQp9DQoNCi5tcy1jb250YWluZXIgdWx7DQogIG1hcmdpbjogMDsNCiAgbGlzdC1zdHlsZS10eXBlOiBub25lOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1jb250YWluZXJ7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1sYWJlbHsNCiAgbWFyZ2luOiAwOw0KICBwYWRkaW5nOiA1cHggMHB4IDBweCA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICM5OTk7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtZWxlbS1zZWxlY3RhYmxlLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLm1zLWVsZW0tc2VsZWN0aW9uew0KICBib3JkZXItYm90dG9tOiAxcHggI2VlZSBzb2xpZDsNCiAgcGFkZGluZzogMnB4IDEwcHg7DQogIGNvbG9yOiAjNTU1Ow0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtaG92ZXIsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtaG92ZXJ7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICNmZmY7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzA4YzsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5kaXNhYmxlZCwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5kaXNhYmxlZHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsNCiAgY29sb3I6ICNhYWE7DQogIGN1cnNvcjogdGV4dDsNCn0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/lisefd.MAMSMultiSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU011bHRpU2VsZWN0IGV4dGVuZHMgTElTRUZpZWxkZGVmQmFzZQp7CiAgcHJpdmF0ZSAkX29wdHMgPSBhcnJheSgpOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGRiX2luZm8pIAogIHsgICAKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRiX2luZm8pOwogICAgCiAgICAkdGhpcy0+U2V0RnJpZW5kbHlUeXBlKCAkdGhpcy0+TW9kTGFuZygnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAgIAogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kdWxlRGVwcygpCiAgewogICAgCiAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICdNQU1TJyA9PiAnMS4wLmInCiAgICAgICAgICAgICAgICApOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCiAgewogICAgJHRtcGwgPSAnJzsKICAgIGlmKCAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3R5cGUnLCAnTXVsdGlTZWxlY3QnKSA9PSAnTXVsdGlTZWxlY3QnICkKICAgIHsKICAgICAgICAkdG1wbCA9IDw8PEVPVAo8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHRoaXMtPkdldFVSTFBhdGgoKX0vanF1ZXJ5Lm11bHRpLXNlbGVjdC5jc3MiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmpzIj48L3NjcmlwdD4KRU9UOwogICAgfQogICAgcmV0dXJuICR0bXBsOwogIH0KICAgIAogIC8vIGdldCBhdmFpbGFibGUgZ3JvdXBzIGZyb20gTUFNUyBtb2R1bGUKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU0dyb3VwcygpCiAgeyAgIAogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAKICAgIGlmKGlzX29iamVjdCgkbWFtcykpCiAgICB7CiAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAgCiAgICAgIGlmKCRncm91cHMpCiAgICAgIHsKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvcHRpb24pIAogICAgICAgIHsKICAgICAgICAgICRvcHRpb25zWyRvcHRpb25bJ2lkJ11dID0gJG9wdGlvblsnZ3JvdXBuYW1lJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TUHJvcGVydGllcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkbWFtc19wcm9wcyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAKICAgIC8vIHJlbW92ZSBzZWxmcmVnIHByb3AKICAgIGlmKCBpc3NldCgkbWFtc19wcm9wc1snX19NQU1TUkVHJ10pICkgdW5zZXQoJG1hbXNfcHJvcHNbJ19fTUFNU1JFRyddKTsKICAgIAogICAgJG1hbXNfb3B0aW9ucyA9IGFycmF5KCk7CiAgICAkbWFtc19vcHRpb25zYiA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRtYW1zX3Byb3BzIGFzICRvbmUpJG1hbXNfb3B0aW9uc1sgJG9uZVsnbmFtZSddIF0gPSAkb25lWydwcm9tcHQnXTsKICAgIGFzb3J0KCRtYW1zX29wdGlvbnMpOwogICAgJG1hbXNfb3B0aW9uc2JbLTFdID0gbGFuZygnbm9uZScpOwogICAgJG1hbXNfb3B0aW9uc2JbMF0gPSAkbWFtcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyk7CiAgICAkbWFtc19vcHRpb25zID0gYXJyYXlfbWVyZ2UoJG1hbXNfb3B0aW9uc2IsICRtYW1zX29wdGlvbnMpOwogICAgCiAgICByZXR1cm4gJG1hbXNfb3B0aW9uczsKICB9IAogICAgIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRPcHRpb25zKCkgCiAgewogICAgJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CiAgICAKICAgICR0aGlzLT5fb3B0c1sndHlwZSddID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0Jyk7CiAgICAkdGhpcy0+X29wdHNbJ3R5cGVzJ10gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpU2VsZWN0JyAgICAgICAgID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9NdWx0aVNlbGVjdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hlY2tib3hHcm91cCcgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0NoZWNrYm94R3JvdXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0pRdWVyeU11bHRpU2VsZWN0JyAgID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9KUXVlcnlNdWx0aVNlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgcmV0dXJuICR0aGlzLT5fb3B0czsKICB9CiAgICAKICAvLyBnZXQgbGlzdCBvZiB1c2VycyBmcm9tIE1BTVMgbW9kdWxlIGJhc2VkIG9uIHNlbGVjdGVkIGdyb3VwCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNVc2VyTGlzdCgpCiAgeyAgICAKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgeyAgICAKICAgICAgLy8gR2V0VXNlcnNJbkdyb3VwKCkgaXMgZGVwcmVjYXRlZCBidXQgR2V0RnVsbFVzZXJzSW5Hcm91cCgpIHNlZW1zIHRvIGhhdmUgYSBidWcsIAogICAgICAvLyBjaGFuZ2UgdGhpcyBhZnRlciBNQU1TIEJSICM4NzUzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL3ZpZXcvODc1MyBpcyBjb25maXJtZWQgYW5kIGZpeGVkCiAgICAgICRncm91cHMgPSAgZXhwbG9kZSgnLCcsICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJykgKTsKICAgICAgJG1hbXNfcHJvcCA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZCcpOwogICAgICAkbWFtc19wcm9wMiA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZDInKTsKICAgICAgJHVzZV91c2VybmFtZSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VzZXJuYW1lJyk7CiAgICAgICR1c2VfdWlkID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd1c2VfdWlkJyk7CiAgICAgICRzZXBhcmF0b3IgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3NlcGFyYXRvcicpOwogICAgICAkdXNlcnMgPSBhcnJheSgpOwogICAgICAKICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCkKICAgICAgewogICAgICAgICR0bXB1c2VycyA9ICRtYW1zLT5HZXRGdWxsVXNlcnNJbkdyb3VwKCRncm91cCk7CiAgICAgICAgZm9yZWFjaCgkdG1wdXNlcnMgYXMgJG9uZSkKICAgICAgICB7CiAgICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygkb25lWydpZCddLCAkdXNlcnMpICkgY29udGludWU7CiAgICAgICAgICAKICAgICAgICAgICR1aWQgPSAoYm9vbCkkdXNlX3VpZCA/ICdbJyAuICRvbmVbJ2lkJ10gLiAnXSAnIDogJyc7IAogICAgICAgICAgI25vdyBsZXRzIGJ1aWxkIHRoZSBtdWx0aXNlbGVjdAogICAgICAgICAgaWYoJHVzZV91c2VybmFtZSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZCAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmKCAkbWFtc19wcm9wID09IE5VTEwgfHwgKGlzX251bWVyaWMoJG1hbXNfcHJvcCkgJiYgJG1hbXNfcHJvcCA9PSAtMSkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZCAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZDsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICBpZihpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gMCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG9uZVsndXNlcm5hbWUnXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkbWFtcy0+R2V0VXNlclByb3BlcnR5RnVsbCgkbWFtc19wcm9wLCAkb25lWydpZCddKTsKICAgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICAgaWYoIGlzX251bWVyaWMoJG1hbXNfcHJvcDIpICYmICRtYW1zX3Byb3AyID09IDAgJiYgIShpc19pbnQoJG1hbXNfcHJvcCkgJiYgJG1hbXNfcHJvcCA8IDEpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJHNlcGFyYXRvciAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2VpZiggIShpc19pbnQoJG1hbXNfcHJvcDIpICYmICRtYW1zX3Byb3AyID09IC0xKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkbWFtcy0+R2V0VXNlclByb3BlcnR5RnVsbCgkbWFtc19wcm9wMiwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgfQogICAgICAKICAgICAgYXNvcnQoJHVzZXJzKTsKICAgICAgCiAgICAgIHJldHVybiAkdXNlcnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBSZW5kZXJGb3JBZG1pbkxpc3RpbmcoJGlkLCAkcmV0dXJuaWQpCiAgewogICAgJHVzZXJzID0gKGFycmF5KSR0aGlzLT5HZXRWYWx1ZSgpOwogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgJHNtYXJ0eS0+YXNzaWduKCd1c2VycycsICR1c2Vycyk7CiAgICByZXR1cm4gcGFyZW50OjpSZW5kZXJGb3JBZG1pbkxpc3RpbmcoJGlkLCAkcmV0dXJuaWQpOwogIH0KfS8vIGVuZCBvZiBjbGFzcwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/list.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlcnMnKX06IHskdXNlcnN8Y291bnR9]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/output.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/admin.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9Cnskc2VsX2dyb3VwcyA9IGV4cGxvZGUoJywnLCAkbWFtc19vcHRpb25zKX0KeyRzZWxfZ3JvdXBzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJyl9CnskZ3JvdXBzX29wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KeyRkZWZzID0gJGZpZWxkZGVmLT5HZXRNQU1TUHJvcGVydGllcygpfQp7JHNlbF9kZWYgPSAkZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCdtYW1zX2ZpZWxkJyl9Cnskc2VsX2RlZjIgPSAkZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCdtYW1zX2ZpZWxkMicpfQoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+e2xhbmcoJ29wdGlvbnMnKX08L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX29wdGlvbnMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFttYW1zX29wdGlvbnNdW119IiBzaXplPSJ7JGdyb3Vwc19vcHRzfGNvdW50fSIgbXVsdGlwbGU+CiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGdyb3Vwc19vcHRzIHNlbGVjdGVkPSRzZWxfZ3JvdXBzfQogICAgICAgIDwvc2VsZWN0PiAgCiAgICA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX211bHRpc2VsZWN0X2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CiAgPGhyPiAKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl91c2VfdWlkJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdXNlX3VpZF0iIHZhbHVlPSIwIiAvPgogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt1c2VfdWlkXSIgdmFsdWU9IjEie2lmICRmaWVsZGRlZi0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91aWQnKX1jaGVja2VkPSJjaGVja2VkInsvaWZ9IC8+CiAgPC9wPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3VzZV91aWRfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlX3VzZXJuYW1lJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdXNlX3VzZXJuYW1lXSIgdmFsdWU9IjAiIC8+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3VzZV91c2VybmFtZV0iIHZhbHVlPSIxIntpZiAkZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd1c2VfdXNlcm5hbWUnKX1jaGVja2VkPSJjaGVja2VkInsvaWZ9IC8+CiAgPC9wPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3VzZV91c2VybmFtZV9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4gCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHtodG1sX29wdGlvbnMgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbbWFtc19maWVsZF19IiBvcHRpb25zPSRkZWZzIHNlbGVjdGVkPSRzZWxfZGVmfQogICAgPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHNfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+IAogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfZmllbGRzMicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge2h0bWxfb3B0aW9ucyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFttYW1zX2ZpZWxkMl19IiBvcHRpb25zPSRkZWZzIHNlbGVjdGVkPSRzZWxfZGVmMn0KICAgIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfZmllbGRzX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CiAgPGhyPiAKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHInKX06PC9wPgoJICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3NlcGFyYXRvcl0iIHZhbHVlPSJ7JGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnc2VwYXJhdG9yJywgJyAnKX0iIC8+CgkgIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHJfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3R5cGVdIiBzdHlsZT0ibWF4LXdpZHRoOiA5OCU7Ij4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cy50eXBlcyBzZWxlY3RlZD0kZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ0Ryb3Bkb3duJyl9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+IAogIAo8L2ZpZWxkc2V0Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/input.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNVc2VyTGlzdCgpfQoKeyRzZWwgPSAkZmllbGRkZWYtPkdldFZhbHVlKCl9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPkdldE5hbWUoKX17aWYgJGZpZWxkZGVmLT5Jc1JlcXVpcmVkKCl9KnsvaWZ9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCXtpZiAkZmllbGRkZWYtPkdldERlc2MoKX0oeyRmaWVsZGRlZi0+R2V0RGVzYygpfSk8YnIgLz57L2lmfQogICAge2lmICR0eXBlID09ICdEcm9wZG93bid9ICAgICAgICAKICAgICAge2h0bWxfb3B0aW9ucyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsfQogICAgey9pZn0gICAgCiAgICB7aWYgJHR5cGUgPT0gJ1JhZGlvR3JvdXAnfQogICAgICB7aHRtbF9yYWRpb3MgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbCBzZXBhcmF0b3I9JzxiciAvPid9CiAgICB7L2lmfSAgICAgICAgICAKICAgIHtpZiAkdHlwZSA9PSAnSlF1ZXJ5TXVsdGlTZWxlY3QnfQogICAgICA8ZGl2IGNsYXNzPSJtcy1jb250YWluZXIiPgogICAgICAgIDxzZWxlY3QgaWQ9InskYWN0aW9uaWR9Y3VzdG9tZmllbGR7JGZpZWxkZGVmLT5HZXRJZCgpfSIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV1bXX0iIHNpemU9Inskb3B0c3xjb3VudH0iIG11bHRpcGxlPiAKICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsfQogICAgICAgIDwvc2VsZWN0PgogICAgICA8L2Rpdj4gCiAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgLy8gZGlydHkgaGFjayB0byBhdm9pZCByZWN1cnNpb24uLi4KICAgICAgICAgICAgd2luZG93Lm1zX2RlcyA9IHRydWU7CiAgICAgICAgICAgICQoJyN7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0nKS5tdWx0aVNlbGVjdCh7CiAgICAgICAgICAgICAgICAgYWZ0ZXJTZWxlY3Q6IGZ1bmN0aW9uKHZhbHVlcyl7CiAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubXNfZGVzKXsKICAgICAgICAgICAgICAgICAgICAgICAgICQoJyN7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0nKS5tdWx0aVNlbGVjdCgnZGVzZWxlY3RfYWxsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubXNfZGVzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoJ3NlbGVjdCcsIHZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tc19kZXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgfSk7CiAgICAgIDwvc2NyaXB0PgogICAgey9pZn0KCTwvcD4KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9GRVVNdWx0aVNlbGVjdC9pbWFnZXMvc3dpdGNoLnBuZycpIG5vLXJlcGVhdCA1MCUgNTAlOw0KICB3aWR0aDogNDcwcHg7DQp9DQoNCi5tcy1jb250YWluZXI6YWZ0ZXJ7DQogIGNvbnRlbnQ6ICIuIjsNCiAgZGlzcGxheTogYmxvY2s7DQogIGhlaWdodDogMDsNCiAgbGluZS1oZWlnaHQ6IDA7DQogIGZvbnQtc2l6ZTogMDsNCiAgY2xlYXI6IGJvdGg7DQogIG1pbi1oZWlnaHQ6IDA7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSwgLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBjb2xvcjogIzU1NTU1NTsNCiAgZmxvYXQ6IGxlZnQ7DQogIHdpZHRoOiA0NSU7DQp9DQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb257DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtbGlzdHsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICAtbW96LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1zLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW8tdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICB0cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7DQogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4Ow0KICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGhlaWdodDogMjAwcHg7DQogIHBhZGRpbmc6IDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3QubXMtZm9jdXN7DQogIGJvcmRlci1jb2xvcjogcmdiYSg4MiwgMTY4LCAyMzYsIDAuOCk7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICBvdXRsaW5lOiAwOw0KICBvdXRsaW5lOiB0aGluIGRvdHRlZCBcOTsNCn0NCg0KLm1zLWNvbnRhaW5lciB1bHsNCiAgbWFyZ2luOiAwOw0KICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQogIHBhZGRpbmc6IDA7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWNvbnRhaW5lcnsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWxhYmVsew0KICBtYXJnaW46IDA7DQogIHBhZGRpbmc6IDVweCAwcHggMHB4IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogIzk5OTsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1lbGVtLXNlbGVjdGFibGUsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtZWxlbS1zZWxlY3Rpb257DQogIGJvcmRlci1ib3R0b206IDFweCAjZWVlIHNvbGlkOw0KICBwYWRkaW5nOiAycHggMTBweDsNCiAgY29sb3I6ICM1NTU7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1ob3ZlciwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5tcy1ob3ZlcnsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogI2ZmZjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDhjOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3RhYmxlIGxpLmRpc2FibGVkLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLmRpc2FibGVkew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOw0KICBjb2xvcjogI2FhYTsNCiAgY3Vyc29yOiB0ZXh0Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/lisefd.MAMSSingleSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU1NpbmdsZVNlbGVjdCBleHRlbmRzIExJU0VGaWVsZGRlZkJhc2UKewogIHByaXZhdGUgJF9vcHRzID0gYXJyYXkoKTsKICAKICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJiRkYl9pbmZvKSAKICB7ICAgCiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRkYl9pbmZvKTsgCiAgICAkdGhpcy0+U2V0RnJpZW5kbHlUeXBlKCAkdGhpcy0+TW9kTGFuZyggJ2ZpZWxkZGVmXycgLiAkdGhpcy0+R2V0VHlwZSgpICkgKTsKICAgIFxjbXNfdXRpbHM6OmdldF9zbWFydHkoKS0+YXNzaWduKCdsaXNlJywgXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTElTRScpKTsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2R1bGVEZXBzKCkgCiAgeyAKICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgICAgICAgJ01BTVMnID0+ICcxLjAuYicKICAgICAgICAgICAgICAgICk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICB7CiAgICAkdG1wbCA9ICcnOwogICAgaWYoICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdEcm9wZG93bicpID09ICdNdWx0aVNlbGVjdCcgKQogICAgewogICAgICAgICR0bXBsID0gPDw8RU9UCjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuanMiPjwvc2NyaXB0PgpFT1Q7CiAgICB9CiAgICByZXR1cm4gJHRtcGw7CiAgfQogIAogIC8vIGdldCBhdmFpbGFibGUgZ3JvdXBzIGZyb20gTUFNUyBtb2R1bGUKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU0dyb3VwcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAKICAgIGlmKGlzX29iamVjdCgkbWFtcykpCiAgICB7CiAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAKICAgICAgaWYoJGdyb3VwcykgCiAgICAgIHsKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvcHRpb24pIAogICAgICAgIHsKICAgICAgICAgICRvcHRpb25zWyRvcHRpb25bJ2lkJ11dID0gJG9wdGlvblsnZ3JvdXBuYW1lJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TUHJvcGVydGllcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkbWFtc19wcm9wcyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAKICAgIC8vIHJlbW92ZSBzZWxmcmVnIHByb3AKICAgIGlmKCBpc3NldCgkbWFtc19wcm9wc1snX19NQU1TUkVHJ10pICkgdW5zZXQoJG1hbXNfcHJvcHNbJ19fTUFNU1JFRyddKTsKICAgIAogICAgJG1hbXNfb3B0aW9ucyA9IGFycmF5KCk7CiAgICAkbWFtc19vcHRpb25zYiA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRtYW1zX3Byb3BzIGFzICRvbmUpJG1hbXNfb3B0aW9uc1sgJG9uZVsnbmFtZSddIF0gPSAkb25lWydwcm9tcHQnXTsKICAgIGFzb3J0KCRtYW1zX29wdGlvbnMpOwogICAgJG1hbXNfb3B0aW9uc2JbLTFdID0gbGFuZygnbm9uZScpOwogICAgJG1hbXNfb3B0aW9uc2JbMF0gPSAkbWFtcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyk7CiAgICAkbWFtc19vcHRpb25zID0gYXJyYXlfbWVyZ2UoJG1hbXNfb3B0aW9uc2IsICRtYW1zX29wdGlvbnMpOwogICAgCiAgICByZXR1cm4gJG1hbXNfb3B0aW9uczsKICB9IAogICAgIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRPcHRpb25zKCkgCiAgewogICAgJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CiAgCiAgICAkdGhpcy0+X29wdHNbJ3R5cGUnXSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpOwogICAgJHRoaXMtPl9vcHRzWyd0eXBlcyddID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEcm9wZG93bicgICAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0Ryb3Bkb3duJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSYWRpb0dyb3VwJyAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX1JhZGlvR3JvdXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0pRdWVyeU11bHRpU2VsZWN0JyA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfSlF1ZXJ5TXVsdGlTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIAogICAgcmV0dXJuICR0aGlzLT5fb3B0czsKICB9CiAgCiAgLy8gZ2V0IGxpc3Qgb2YgdXNlcnMgZnJvbSBNQU1TIG1vZHVsZSBiYXNlZCBvbiBzZWxlY3RlZCBncm91cAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TVXNlckxpc3QoKQogIHsgICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgLy8gR2V0VXNlcnNJbkdyb3VwKCkgaXMgZGVwcmVjYXRlZCBidXQgR2V0RnVsbFVzZXJzSW5Hcm91cCgpIHNlZW1zIHRvIGhhdmUgYSBidWcsIAogICAgICAvLyBjaGFuZ2UgdGhpcyBhZnRlciBNQU1TIEJSICM4NzUzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL3ZpZXcvODc1MyBpcyBjb25maXJtZWQgYW5kIGZpeGVkCiAgICAgICRncm91cHMgICAgICAgPSBleHBsb2RlKCcsJywgJHRoaXMtPkdldE9wdGlvblZhbHVlKCdtYW1zX29wdGlvbnMnKSk7CiAgICAgICRtYW1zX3Byb3AgICAgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQnKTsKICAgICAgJG1hbXNfcHJvcDIgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZDInKTsKICAgICAgJHVzZV91c2VybmFtZSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VzZXJuYW1lJyk7CiAgICAgICR1c2VfdWlkICAgICAgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91aWQnKTsKICAgICAgJHNlcGFyYXRvciAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnc2VwYXJhdG9yJyk7CiAgICAgICR1c2VycyAgICAgICAgPSBhcnJheSgpOwogICAgICAKICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCkKICAgICAgewogICAgICAgICR0bXB1c2VycyA9ICRtYW1zLT5HZXRGdWxsVXNlcnNJbkdyb3VwKCRncm91cCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkdG1wdXNlcnMgYXMgJG9uZSkKICAgICAgICB7CiAgICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygkb25lWydpZCddLCAkdXNlcnMpICkgY29udGludWU7CiAgICAgICAgICAKICAgICAgICAgICR1aWQgPSAoYm9vbCkkdXNlX3VpZCA/ICdbJyAuICRvbmVbJ2lkJ10gLiAnXSAnIDogJyc7IAogICAgICAgICAgCiAgICAgICAgICAjbm93IGxldHMgYnVpbGQgdGhlIHNlbGVjdCAgICAgICAgICAKICAgICAgICAgIGlmKCR1c2VfdXNlcm5hbWUpCiAgICAgICAgICB7CiAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICBpZiggJG1hbXNfcHJvcCA9PSBOVUxMIHx8IChpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gLTEpICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQ7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgaWYoaXNfbnVtZXJpYygkbWFtc19wcm9wKSAmJiAkbWFtc19wcm9wID09IDApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcCwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgIGlmKCBpc19udW1lcmljKCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAwICYmICEoaXNfaW50KCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPCAxKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlaWYoICEoaXNfaW50KCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAtMSkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkc2VwYXJhdG9yIC4gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcDIsICRvbmVbJ2lkJ10pOwogICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAgCiAgICAgIGFzb3J0KCR1c2Vycyk7CiAgICAgIAogICAgICByZXR1cm4gJHVzZXJzOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICR1c2VyID0gJyc7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJHZhbHVlID0gJHRoaXMtPkdldFZhbHVlKCk7CiAgICAgICR1c2VyID0gJG1hbXMtPkdldFVzZXJOYW1lKCR2YWx1ZVswXSk7CiAgICB9CiAgICAKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbigndXNlcicsICR1c2VyKTsKICAgIHJldHVybiBwYXJlbnQ6OlJlbmRlckZvckFkbWluTGlzdGluZygkaWQsICRyZXR1cm5pZCk7CiAgfQogIAp9Ly8gZW5kIG9mIGNsYXNzCj8+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/list.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR1c2VyfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/output.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/MAMS.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQp1c2UgXE1BTVNcdmVyaWZpY2F0aW9uX2Fzc2lzdGFudDsKdXNlIFxNQU1TXGVtYWlsX3ZlcmlmeV9hc3Npc3RhbnQ7CnVzZSBcQ01TTVNcSG9va01hbmFnZXI7CgovKioKICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIE1BTVMgbW9kdWxlIGNsYXNzLgogKgogKiBAcGFja2FnZSBNQU1TCiAqLwoKLyoqCiAqIFRoZSBNQU1TIG1vZHVsZSwgYmVzaWRlcyBiZWluZyBhIG1vZHVsZSB0byBwcm92aWRlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2VzIHRvIHRoZSBmcm9udGVuZCBvZiBhIENNU01TCiAqIHdlYnNpdGUgYWxzbyBoYXMgYSBjb21wbGV0ZSBhbmQgZmxleGlibGUgQVBJLgogKgogKiBAcGFja2FnZSBNQU1TCiAqLwpmaW5hbCBjbGFzcyBNQU1TIGV4dGVuZHMgXENNU01TRXh0XFhUTW9kdWxlCnsKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhIHRleHQgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1RFWFQgPSAwOwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgY2hlY2tib3ggcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX0NIRUNLQk9YID0gMTsKICAKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhbiBlbWFpbCBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfRU1BSUwgPSAyOwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgdGV4dGFyZWEgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1RFWFRBUkVBID0gMzsKICAKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhIGRyb3Bkb3duIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9EUk9QRE9XTiA9IDQ7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSBtdWx0aXNlbGVjdCBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfTVVMVElTRUxFQ1QgPSA1OwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGFuIGltYWdlIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9JTUFHRSA9IDY7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSByYWRpbyBidXR0b24gZ3JvdXAgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1JBRElPQlVUTlMgPSA3OwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgZGF0ZSBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfREFURSA9IDg7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSBkYXRhIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9EQVRBID0gOTsKICAKICAvKioKICAgKiBIb3cgbWFueSBzZWNvbmRzIG9mIGluYWN0aXZpdHkgYmVmb3JlIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvdXQuCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRleHBpcnl0aW1lOwogIAogIC8qKgogICAqIFNldCB0aGlzIHRvIHRydWUgaWYgdXNlciBzaG91bGQgYmUgcmVkaXJlY3RlZCB0byBkZWZhdWx0IHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpbi9vdXQuCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRsb2dpbnRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRvdGhlcmludGFyZ2V0OwogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgJGxvZ291dHRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRvdGhlcm91dHRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRhbGxvd3VzZXJhZG1pbjsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRlbmFibGVlbWFpbHB3OwogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgJGxhbmcgPSAiIjsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJpdmF0ZSAkdXNlcm1hbmlwID0gRkFMU0U7CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHByaXZhdGUgJHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSBOVUxMOwogIAogIC8qKgogICAqIEBpZ25vcmUgLSB3b3JrIGFyb3VuZCBjb25zdHJ1Y3RvciBjYWxsZWQgdHdpY2UgaXNzdWUKICAgKi8KICBwcml2YXRlIHN0YXRpYyAkX2luaXRpYWxpemVkOwogIAogIC8qKgogICAqIENvbnN0cnVjdG9yCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgaWYoc2VsZjo6JF9pbml0aWFsaXplZCkKICAgIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgc2VsZjo6JF9pbml0aWFsaXplZCA9IFRSVUU7CiAgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcml2YXRlIGZ1bmN0aW9uIF9sb2FkKCkKICB7CiAgICBpZigkdGhpcy0+dXNlcm1hbmlwID09IE5VTEwpCiAgICB7CiAgICAgIC8vIGNoZWNrIGEgcHJlZmVyZW5jZSB0byBzZWUgd2hpY2ggdXNlciBtYW5pcHVsYXRvciBjbGFzcwogICAgICAvLyB3ZSBzaG91bGQgdXNlLgogICAgICAkdGhpcy0+dXNlcm1hbmlwID0gbmV3IE1BTVNNYW5pcHVsYXRvcigkdGhpcyk7CiAgICAgIGlmKCFpc19vYmplY3QoJHRoaXMtPnVzZXJtYW5pcCkpCiAgICAgIHsKICAgICAgICBkaWUoIkVycm9yIGluc3RhbnRpYXRpb25nIG1hbmlwdWxhdG9yIG9iamVjdCIpOwogICAgICB9CiAgICAgICR0aGlzLT51c2VybWFuaXAtPlNldEV4cGlyZU5vdGlmaWVyKGFycmF5KCR0aGlzLCAnTm90aWZ5RXhwaXJlZFVzZXInKSk7CiAgICB9CiAgfQogIAogIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBHZXRGaWVsZFR5cGVzKCkgOiBhcnJheQogIHsKICAgIHJldHVybiBbCiAgICAgICd0ZXh0JyAgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9URVhULAogICAgICAnY2hlY2tib3gnICAgICA9PiBzZWxmOjpGSUVMRFRZUEVfQ0hFQ0tCT1gsCiAgICAgICdlbWFpbCcgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9FTUFJTCwKICAgICAgJ3RleHRhcmVhJyAgICAgPT4gc2VsZjo6RklFTERUWVBFX1RFWFRBUkVBLAogICAgICAnZHJvcGRvd24nICAgICA9PiBzZWxmOjpGSUVMRFRZUEVfRFJPUERPV04sCiAgICAgICdtdWx0aXNlbGVjdCcgID0+IHNlbGY6OkZJRUxEVFlQRV9NVUxUSVNFTEVDVCwKICAgICAgJ2ltYWdlJyAgICAgICAgPT4gc2VsZjo6RklFTERUWVBFX0lNQUdFLAogICAgICAncmFkaW9idXR0b25zJyA9PiBzZWxmOjpGSUVMRFRZUEVfUkFESU9CVVROUywKICAgICAgJ2RhdGUnICAgICAgICAgPT4gc2VsZjo6RklFTERUWVBFX0RBVEUsCiAgICAgICdkYXRhJyAgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9EQVRBCiAgICBdOwogIH0KICAKICAvKioKICAgKiBHZXQgdGhlIFVzZXIgTWFuaXB1bGF0b3IgT2JqZWN0CiAgICogTk9UIEZPUiBFWFRFUk5BTCBVU0UKICAgKgogICAqIEByZXR1cm4gb2JqZWN0CiAgICogQGludGVybmFsCiAgICovCiAgZmluYWwgcHVibGljIGZ1bmN0aW9uIEdldE1hbmlwdWxhdG9yKCkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIAogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXA7CiAgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCl7IHJldHVybiAnMS4wJzsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBIYXNDb250ZW50VHlwZSgpeyByZXR1cm4gVFJVRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpeyByZXR1cm4gVFJVRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBBbGxvd0F1dG9JbnN0YWxsKCl7IHJldHVybiBGQUxTRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBBbGxvd0F1dG9VcGdyYWRlKCl7IHJldHVybiBGQUxTRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCl7IHJldHVybiBGQUxTRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpeyByZXR1cm4gJzIuMi45JzsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCl7IHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKXsgcmV0dXJuICd1c2Vyc2dyb3Vwcyc7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCl7IHJldHVybiBbJ0NNU01TRXh0JyA9PiAnMS4wJywgJ1NtYXJ0eUV4dCcgPT4gJzEuMCddOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSl7IHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaW5mb18nIC4gJGV2ZW50bmFtZSk7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gR2V0RXZlbnRIZWxwKCRldmVudG5hbWUpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJyAuICRldmVudG5hbWUpOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEhhc0FkbWluKCl7IHJldHVybiBUUlVFOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsbWVzc2FnZScpOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEF1dGhvcigpeyByZXR1cm4gJ0pvIE1vcmcnOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCl7IHJldHVybiAnam9tb3JnQGNtc21hZGVzaW1wbGUub3JnJzsgfQogIAogIGZ1bmN0aW9uIEdldEhlbHAoKQogIHsKICAgICRtb2RzICAgICA9IFxNb2R1bGVPcGVyYXRpb25zOjpnZXRfaW5zdGFuY2UoKS0+R2V0SW5zdGFsbGVkTW9kdWxlcygpOwogICAgJGhhdmVfZmV1ID0gaW5fYXJyYXkoJ0Zyb250RW5kVXNlcnMnLCAkbW9kcyk7CiAgICBcY21zX3V0aWxzOjpnZXRfc21hcnR5KCktPmFzc2lnbignaGF2ZV9mZXUnLCAkaGF2ZV9mZXUpOwogICAgcmV0dXJuIHBhcmVudDo6R2V0SGVscCgpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICogQGRlcHJlY2F0ZWQKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGFuZ2lmeUtleXMoJGFycikgOiBhcnJheQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJGFycikgKSAkYXJyID0gWyRhcnJdOwogICAgJG91dCA9IFtdOwogICAgZm9yZWFjaCgkYXJyIGFzICRrID0+ICR2KQogICAgewogICAgICAkayAgICAgICA9ICR0aGlzLT5MYW5nKCRrKTsKICAgICAgJG91dFska10gPSAkdjsKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgIGlmKCEkc21hcnR5KXtyZXR1cm47fQogICAgCiAgICAkc21hcnR5LT5yZWdpc3RlckNsYXNzKCdtYW1zX3NtYXJ0eScsICdtYW1zX3NtYXJ0eScpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJQbHVnaW4oJ2Jsb2NrJywgJ21hbXNfcHJvdGVjdCcsICdcXG1hbXNfc21hcnR5X3BsdWdpbnM6Om1hbXNfcHJvdGVjdCcpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJQbHVnaW4oJ2Z1bmN0aW9uJywgJ21hbXNfdXNlcl9vcHRpb25zJywgJ1xcbWFtc19zbWFydHlfcGx1Z2luczo6bWFtc191c2VyX29wdGlvbnMnKTsKICAgICR0aGlzLT5BZGRJbWFnZURpcignaWNvbnMnKTsKICAgIAogICAgJGNvbnRlbnRvcHMgPSBDb250ZW50T3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCk7CiAgICAKICAgICRvYmogICAgICAgICAgICAgICA9IG5ldyBDbXNDb250ZW50VHlwZVBsYWNlaG9sZGVyKCk7CiAgICAkb2JqLT5jbGFzcyAgICAgICAgPSAnTUFNU1xQcm90ZWN0ZWRQYWdlJzsKICAgICRvYmotPnR5cGUgICAgICAgICA9ICdtYW1zX3Byb3RlY3RlZF9wYWdlJzsgIC8vIG11c3QgYmUgbG93ZXJjYXNlLCBhbmQgc2hvcnQsIHRoaXMgaXMgd2hhdCBpcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLgogICAgJG9iai0+ZmlsZW5hbWUgICAgID0gX19ESVJfXyAuICcvbGliL2NsYXNzLm1hbXNfcHJvdGVjdGVkX3BhZ2UucGhwJzsKICAgICRvYmotPmxvYWRlZCAgICAgICA9IEZBTFNFOwogICAgJG9iai0+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkxhbmcoJ21hbXNfcHJvdGVjdGVkX3BhZ2UnKTsKICAgICRjb250ZW50b3BzLT5yZWdpc3Rlcl9jb250ZW50X3R5cGUoJG9iaik7CiAgICAKICAgICRvYmogICAgICAgICAgICAgICA9IG5ldyBDbXNDb250ZW50VHlwZVBsYWNlaG9sZGVyKCk7CiAgICAkb2JqLT5jbGFzcyAgICAgICAgPSAnTUFNU1xQcm90ZWN0ZWRTZWN0aW9uSGVhZCc7CiAgICAkb2JqLT50eXBlICAgICAgICAgPSAnbWFtc19wcm90ZWN0ZWRfc2VjX2hlYWQnOwogICAgJG9iai0+ZmlsZW5hbWUgICAgID0gX19ESVJfXyAuICcvbGliL2NsYXNzLm1hbXNfcHJvdGVjdGVkX3NlY3Rpb25oZWFkLnBocCc7CiAgICAkb2JqLT5sb2FkZWQgICAgICAgPSBGQUxTRTsKICAgICRvYmotPmZyaWVuZGx5bmFtZSA9ICR0aGlzLT5MYW5nKCdtYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhZCcpOwogICAgJGNvbnRlbnRvcHMtPnJlZ2lzdGVyX2NvbnRlbnRfdHlwZSgkb2JqKTsKICAgIAogICAgJG9iaiAgICAgICAgICAgICAgID0gbmV3IENtc0NvbnRlbnRUeXBlUGxhY2Vob2xkZXIoKTsKICAgICRvYmotPmNsYXNzICAgICAgICA9ICdtYW1zX3Byb3RlY3RlZF9sb2dvdXRsaW5rJzsKICAgICRvYmotPnR5cGUgICAgICAgICA9IHN0cnRvbG93ZXIoJG9iai0+Y2xhc3MpOwogICAgJG9iai0+ZmlsZW5hbWUgICAgID0gX19ESVJfXyAuICcvbGliL2NsYXNzLm1hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsucGhwJzsKICAgICRvYmotPmxvYWRlZCAgICAgICA9IEZBTFNFOwogICAgJG9iai0+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkxhbmcoJ21hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsnKTsKICAgICRjb250ZW50b3BzLT5yZWdpc3Rlcl9jb250ZW50X3R5cGUoJG9iaik7CiAgICAKICAgIEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnTUFNUzo6T25EZWxldGVVc2VyJywgJ21hbXNfdXRpbHM6Omhvb2tfb25kZWxldGV1c2VyJyk7CiAgICBIb29rTWFuYWdlcjo6YWRkX2hvb2soJ01BTVM6OkFmdGVyRGVsZXRlVXNlcicsICdtYW1zX3V0aWxzOjpob29rX2FmdGVyZGVsZXRldXNlcicpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICB7CiAgICBwYXJlbnQ6OkluaXRpYWxpemVGcm9udGVuZCgpOwogICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29kZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZm9ybScsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZXR1cm50bycsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb25seV9ncm91cHMnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ25vY2FwdGNoYScsIENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfdXNlcm5hbWUnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfcGFzc3dvcmQnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfcmVwZWF0cGFzc3dvcmQnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXJyb3InLCBDTEVBTl9JTlQpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbWVzc2FnZScsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb3N0dW5fZ3JvdXAnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X2NhcHRjaGEnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3VibWl0JywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhbmNlbCcsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbnB1dF9jb2RlJywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3VpZCcsIENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2hlY2tvbmx5JywgQ0xFQU5fSU5UKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbmxpbmUnLCBDTEVBTl9JTlQpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xvZ291dHRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb2dpbnRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmb3Jnb3Rwd3RlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmb3Jnb3Rwd2VtYWlsdGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xvc3R1bnRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb3N0dW5jb25maXJtdGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2ZvcmNlbmV3cHd0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndmlld3VzZXJ0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmVzZXRzZXNzaW9udGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3ZlcmlmeWZvcm10ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnL21hbXNfLiovJywgQ0xFQU5fU1RSSU5HKTsKICAgIAogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoCiAgICAgICcvbWFtc1wvdmVyaWZ5Y29kZVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDx1aWQ+WzAtOV0rKVwvKD9QPGNvZGU+Lio/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ3ZlcmlmeWNvZGUnKQogICAgKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKAogICAgICAnL21hbXNcL3ZlcmlmeVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDx1aWQ+WzAtOV0rKVwvKD9QPGNvZGU+Lio/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ3ZlcmlmeW9ubHknKQogICAgKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKAogICAgICAnL21hbXNcL3Jlc2V0XC8oP1A8dWlkPlswLTldKykkLycsCiAgICAgIGFycmF5KCdhY3Rpb24nID0+ICdyZXNldF9zZXNzaW9uJywgJ3Nob3d0ZW1wbGF0ZScgPT4gJ2ZhbHNlJywgJ2NoZWNrb25seScgPT4gJzEnKQogICAgKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvZWRpdFwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdjaGFuZ2VzZXR0aW5ncycpKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvbG9nb3V0XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2xvZ291dCcpKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvZm9yZ290XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2ZvcmdvdHB3JykpOwogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9tYW1zXC9sb3N0dXNlcm5hbWVcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnbG9zdHVzZXJuYW1lJykpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gZ2V0X3Rhc2tzKCkKICB7CiAgICAkb3V0ID0gTlVMTDsKICAgIAogICAgLy8gY2xlYXIgaGlzdG9yeSB0YXNrCiAgICAkdG1wID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2FnZScpOwogICAgCiAgICBpZigkdG1wID4gMCkKICAgIHsKICAgICAgJG9iaiAgID0gbmV3IFxNQU1TXENsZWFyVXNlckhpc3RvcnlUYXNrKCk7CiAgICAgICRvdXRbXSA9ICRvYmo7CiAgICB9CiAgICAKICAgIC8vIGZvcmNlIGxvZ291dCBhdCBzcGVjaWZpYyBzZXJ2ZXIgdGltZXMKICAgICR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfdGltZXMnKTsKICAgIGlmKCR0bXAgIT0gJycpCiAgICB7CiAgICAgICRvYmogICA9IG5ldyBNQU1TRm9yY2VkTG9nb3V0VGFzaygkdGhpcyk7CiAgICAgICRvdXRbXSA9ICRvYmo7CiAgICB9CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9wcmV0dHlfdXJsKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkID0gJycsICRwYXJhbXMgPSBhcnJheSgpLCAkaW5saW5lID0gRkFMU0UpCiAgewogICAgaWYoJGFjdGlvbiA9PSAnZGVmYXVsdCcpCiAgICB7CiAgICAgICRmb3JtID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdmb3JtJyk7CiAgICAgIHN3aXRjaCgkZm9ybSkKICAgICAgewogICAgICAgIGNhc2UgJ2ZvcmdvdHB3JzoKICAgICAgICAgICRhY3Rpb24gPSAnZm9yZ290cHcnOwogICAgICAgIGJyZWFrOwogICAgICAgIAogICAgICAgIGNhc2UgJ2xvZ2luJzoKICAgICAgICAgICRhY3Rpb24gPSAnbG9naW4nOwogICAgICAgIGJyZWFrOwogICAgICAgIAogICAgICAgIGNhc2UgJ2xvc3R1c2VybmFtZSc6CiAgICAgICAgICAkYWN0aW9uID0gJ2xvc3R1c2VybmFtZSc7CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgICAgY2FzZSAnY2hhbmdlc2V0dGluZ3MnOgogICAgICAgICAgcmV0dXJuICJtYW1zL2VkaXQvJHJldHVybmlkIjsKICAgICAgfQogICAgfQogICAgCiAgICBpZigkYWN0aW9uID09ICd2ZXJpZnlvbmx5JykKICAgIHsKICAgICAgJHVpZCAgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywgJ3VpZCcpOwogICAgICAkY29kZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnY29kZScpOwogICAgICAKICAgICAgaWYoJHVpZCA8IDEgfHwgISRjb2RlKXtyZXR1cm47fQogICAgICAKICAgICAgcmV0dXJuICJtYW1zL3ZlcmlmeS8kcmV0dXJuaWQvJHVpZC8kY29kZSI7CiAgICB9CiAgICAKICAgIGlmKCRhY3Rpb24gPT0gJ2ZvcmdvdHB3JykKICAgIHsKICAgICAgcmV0dXJuICJtYW1zL2ZvcmdvdC8kcmV0dXJuaWQiOwogICAgfQogICAgZWxzZSBpZigkYWN0aW9uID09ICdsb3N0dXNlcm5hbWUnKQogICAgewogICAgICByZXR1cm4gIm1hbXMvbG9zdHVzZXJuYW1lLyRyZXR1cm5pZCI7CiAgICB9CiAgICBlbHNlIGlmKCRhY3Rpb24gPT0gJ2xvZ291dCcpCiAgICB7CiAgICAgICRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAncmV0dXJudG8nKTsKICAgICAgCiAgICAgIGlmKCRyZXR1cm50byl7cmV0dXJuO30KICAgICAgCiAgICAgIHJldHVybiAibWFtcy9sb2dvdXQvJHJldHVybmlkIjsKICAgIH0KICAgIGVsc2UgaWYoJGFjdGlvbiA9PSAnY2hhbmdlc2V0dGluZ3MnKQogICAgewogICAgICByZXR1cm4gIm1hbXMvZWRpdC8kcmV0dXJuaWQiOwogICAgfQogICAgCiAgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gX0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygkcGVybSA9ICcnKQogIHsKICAgIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJywgJzAnKSA9PSAnMScpCiAgICB7CiAgICAgICRwdXNlcnMgID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTUFNUyBNb2RpZnkgVXNlcnMnKTsKICAgICAgJHBncm91cHMgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBHcm91cHMnKTsKICAgICAgJHBwcm9wICAgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBGcm9udGVuZFVzZXJNYW5hZ2VyUHJvcHMnKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHB1c2VycyAgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVXNlcnMnKTsKICAgICAgJHBncm91cHMgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgR3JvdXBzJyk7CiAgICAgICRwcHJvcCAgID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IEZyb250ZW5kVXNlck1hbmFnZXJQcm9wcycpOwogICAgfQogICAgCiAgICAkY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgJHJldCAgICAgID0gMDsKICAgIHN3aXRjaCgkcGVybSkKICAgIHsKICAgICAgY2FzZSAnJzogIC8vIGFueSBwZXJtaXNzaW9uIGZvciB3b3JraW5nIHdpdGggZ3JvdXBzIGFuZCB1c2VycwogICAgICAgICRyZXQgPSAoJHB1c2VycyB8fCAkcGdyb3VwcyB8fCAkcHByb3ApOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2xpc3R1c2Vycyc6CiAgICAgIGNhc2UgJ3VzZXJzJzoKICAgICAgY2FzZSAnYWRkdXNlcic6CiAgICAgIGNhc2UgJ2VkaXR1c2Vycyc6CiAgICAgIGNhc2UgJ3JlbW92ZXVzZXJzJzoKICAgICAgICAkcmV0ID0gJHB1c2VyczsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdwcm9wZXJ0aWVzJzoKICAgICAgICAkcmV0ID0gJHBwcm9wICYmICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0xJU1RQUk9QUyk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnYWRkcHJvcCc6CiAgICAgIGNhc2UgJ2VkaXRwcm9wJzoKICAgICAgY2FzZSAnZGVsZXRlcHJvcCc6CiAgICAgICAgJHJldCA9ICRwcHJvcCAmJiAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUUFJPUFMpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2xpc3Rncm91cHMnOgogICAgICAgICRyZXQgPSAkcGdyb3VwcyAmJgogICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpIHx8CiAgICAgICAgICAgICAgICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0xJU1RHUk9VUFMpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2dyb3Vwcyc6CiAgICAgICAgJHJldCA9ICRwZ3JvdXBzICYmCiAgICAgICAgICAgICAgICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVNUREdST1VQUykgfHwKICAgICAgICAgICAgICAgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfTElTVEdST1VQUyk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnYWRkZ3JvdXAnOgogICAgICAgICRyZXQgPSAkcGdyb3VwcyAmJiAoJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfVVNFU1RER1JPVVBTKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfRURJVEdST1VQUykpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3N0cmljdF9lZGl0Z3JvdXBzJzoKICAgICAgICAkcmV0ID0gJHBncm91cHMgJiYgKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVNUREdST1VQUykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFMpKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdlZGl0Z3JvdXBzJzoKICAgICAgICAkcmV0ID0gJHBncm91cHMgJiYgKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVNUREdST1VQUykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFMpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBQUk9QUykpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3JlbW92ZWdyb3Vwcyc6CiAgICAgICAgJHJldCA9ICRwZ3JvdXBzICYmICgkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAndXNlcnNuZ3JvdXBzJzoKICAgICAgICAkcmV0ID0gKCRwdXNlcnMgfHwgJHBncm91cHMpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3NpdGVwcmVmcyc6CiAgICAgICAgJHJldCA9ICRwcHJvcDsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBkZWZhdWx0OgogICAgICAgICRyZXQgPSAwOwogICAgICBicmVhazsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXQ7CiAgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnJyk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbk1lbnVJdGVtcygpCiAgewogICAgJG91dCA9IFtdOwogICAgaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJycpKQogICAgewogICAgICAkb3V0W10gPSBcQ21zQWRtaW5NZW51SXRlbTo6ZnJvbV9tb2R1bGUoJHRoaXMpOwogICAgfQogICAgCiAgICBpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKQogICAgewogICAgICAkb2JqICAgICAgICAgICAgICA9IG5ldyBDbXNBZG1pbk1lbnVJdGVtKCk7CiAgICAgICRvYmotPm1vZHVsZSAgICAgID0gJHRoaXMtPkdldE5hbWUoKTsKICAgICAgJG9iai0+c2VjdGlvbiAgICAgPSAnc2l0ZWFkbWluJzsKICAgICAgJG9iai0+dGl0bGUgICAgICAgPSAkdGhpcy0+TGFuZygndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnKTsKICAgICAgJG9iai0+ZGVzY3JpcHRpb24gPSAkdGhpcy0+TGFuZygnZGVzY19hZG1pbm5hdl9zZXR0aW5ncycpOwogICAgICAkb2JqLT5hY3Rpb24gICAgICA9ICdhZG1pbl9zZXR0aW5ncyc7CiAgICAgICRvYmotPnVybCAgICAgICAgID0gJHRoaXMtPmNyZWF0ZV91cmwoJ20xXycsICRvYmotPmFjdGlvbik7CiAgICAgICRvdXRbXSAgICAgICAgICAgID0gJG9iajsKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gX0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkLCAkbWVzc2FnZSA9ICcnKQogIHsKICAgIGVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvck1lc3NhZ2UoJG1lc3NhZ2UpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgPSAtMSkKICB7CiAgICBpZihpc3NldCgkcGFyYW1zWydtYW1zX2VuYyddKSkKICAgIHsKICAgICAgLy8gcmVzdG9yZSBwYXJhbWV0ZXJzIHNhdmVkIGluIHRoZSBzZXNzaW9uIG9uIHJlZGlyZWN0LgogICAgICAkc2lnID0gJHBhcmFtc1snbWFtc19lbmMnXTsKICAgICAgdW5zZXQoJHBhcmFtc1snbWFtc19lbmMnXSk7CiAgICAgIGlmKGlzc2V0KCRfU0VTU0lPTlskc2lnXSkpCiAgICAgIHsKICAgICAgICAkdG1wID0gJF9TRVNTSU9OWyRzaWddOwogICAgICAgIHVuc2V0KCRfU0VTU0lPTlskc2lnXSk7CiAgICAgICAgJHBhcmFtcyA9IGFycmF5X21lcmdlKCR0bXAsICRwYXJhbXMpOwogICAgICB9CiAgICB9CiAgICAKICAgIGlmKCRhY3Rpb24gPT0gJ2RlZmF1bHQnKQogICAgewogICAgICAkZm9ybSA9ICdsb2dpbic7CiAgICAgIGlmKCR0aGlzLT5Mb2dnZWRJbklkKCkpCiAgICAgIHsKICAgICAgICAkZm9ybSA9ICdsb2dvdXQnOwogICAgICB9CiAgICAgICRmb3JtID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdmb3JtJywgJGZvcm0pOwogICAgICBzd2l0Y2goJGZvcm0pCiAgICAgIHsKICAgICAgICBjYXNlICdsb2dpbic6CiAgICAgICAgY2FzZSAnZm9yZ290cHcnOgogICAgICAgIGNhc2UgJ3NpbGVudCc6CiAgICAgICAgY2FzZSAnY2hhbmdlc2V0dGluZ3MnOgogICAgICAgIGNhc2UgJ2xvc3R1c2VybmFtZSc6CiAgICAgICAgICAkYWN0aW9uID0gJGZvcm07CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgICAgY2FzZSAnbG9nb3V0JzoKICAgICAgICAgICRhY3Rpb24gPSAnbG9nb3V0Zm9ybSc7CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNjZXB0aW9uKCIkZm9ybSBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgZm9ybSBwYXJhbWV0ZXIiKTsKICAgICAgfQogICAgfQogICAgCiAgICBzd2l0Y2goJGFjdGlvbikKICAgIHsKICAgICAgY2FzZSAnY2hhbmdlc2V0dGluZ3NfdXJsJzoKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBkZWZhdWx0OgogICAgICAgIHBhcmVudDo6RG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwogICAgICBicmVhazsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGRlcHJlY2F0ZWQKICAgKi8KICBmdW5jdGlvbiBteVJlZGlyZWN0KCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAkcGFyYW1zID0gYXJyYXkoKSwgJGlnbm9yZV9yZXR1cm50byA9IEZBTFNFKQogIHsKICAgIC8vIGZpbmQgYW55IHBhcmFtZXRlciB2YWx1ZXMgdGhhdCBhcmUgYXJyYXlzCiAgICAvLyBhdXRvbWF0aWNhbGx5IHN0b3JlIHRoaXMgZGF0YSBpbiB0aGUgc2Vzc2lvbgogICAgdW5zZXQoJHBhcmFtc1snYWN0aW9uJ10sICRwYXJhbXNbJ3JldHVybmlkJ10pOwogICAgCiAgICAkc2lnICAgICAgICAgICAgPSBtZDUoX19NRVRIT0RfXyAuIHRpbWUoKSAuIHNlcmlhbGl6ZSgkcGFyYW1zKSk7CiAgICAkX1NFU1NJT05bJHNpZ10gPSAkcGFyYW1zOwogICAgJHBhcmFtcyAgICAgICAgID0gWydtYW1zX2VuYycgPT4gJHNpZ107CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KLy8gIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKLy8gIHsKLy8gICAgJHR4dCAgPSBwYXJlbnQ6OkdldEhlYWRlckhUTUwoKTsKLy8gICAgJHRtcGwgPSA8PDxFT1QKLy97SlF1ZXJ5VG9vbHMgYWN0aW9uPSdyZXF1aXJlJyBsaWI9J3RhYmxlc29ydGVyLEpRdWVyeVRvb2xzJ30KLy97SlF1ZXJ5VG9vbHMgYWN0aW9uPSdwbGFjZW1hcmtlcid9Ci8vRU9UOwovLwovLyAgICAkb2JqID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdKUXVlcnlUb29scycsICcxLjInKTsKLy8gICAgaWYoaXNfb2JqZWN0KCRvYmopKQovLyAgICB7Ci8vICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwovLyAgICAgICR0eHQgICAgLj0gJHNtYXJ0eS0+ZmV0Y2goJ3N0cmluZzonIC4gJHRtcGwpOwovLyAgICB9Ci8vCi8vICAgIHJldHVybiAkdHh0OwovLyAgfQogIAogIC8qKgogICAqIHNlbmQgYW4gZXZlbnQgdGhhdCB0aGlzIHVzZXIgYWNjb3VudCBoYXMgYmVlbiBleHBpcmVkCiAgICoKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gTm90aWZ5RXhwaXJlZFVzZXIoJHVzZXJpZCkKICB7CiAgICAkdXNlciA9ICR0aGlzLT5HZXRVc2VySW5mbygkdXNlcmlkKTsKICAgIGlmKCR1c2VyWzBdID09IEZBTFNFKQogICAgewogICAgICByZXR1cm47CiAgICB9IC8vIHRoaXMgc2hvdWxkIGJlIGFuIGVycm9yCiAgICAkcGFybXMgICAgICAgICAgICAgPSBhcnJheSgpOwogICAgJHBhcm1zWydpZCddICAgICAgID0gJHVzZXJpZDsKICAgICRwYXJtc1sndXNlcm5hbWUnXSA9ICR1c2VyWzFdWyd1c2VybmFtZSddOwogICAgSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uRXhwaXJlVXNlcicsICRwYXJtcyk7CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBpc19hbGxvd2VkX3VwbG9hZCgkc3JjZmlsZSkKICB7CiAgICAkYWxsb3dlZF9leHRlbnNpb25zID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycsICcuZ2lmLC5wbmcsLmpwZycpOwogICAgJHRtcCAgICAgICAgICAgICAgICA9IGV4cGxvZGUoJywnLCBzdHJ0b2xvd2VyKCRhbGxvd2VkX2V4dGVuc2lvbnMpKTsKICAgICRzcmNmaWxlICAgICAgICAgICAgPSBzdHJ0b2xvd2VyKCRzcmNmaWxlKTsKICAgIAogICAgZm9yZWFjaCgkdG1wIGFzICRleHQpCiAgICB7CiAgICAgIGlmKGVuZHN3aXRoKCRzcmNmaWxlLCAkZXh0KSkKICAgICAgewogICAgICAgIHJldHVybiBUUlVFOwogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBGQUxTRTsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQHRvZG86IG1vdmUgbWUgb3V0IG9mIGhlcmUKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VwbG9hZF9kaXJ1cmwoKQogIHsKICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAkZG4gICAgID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3VybCddLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdtYW1zJykpOwogICAgJGRuICAgICA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGRuKTsKICAgIAogICAgcmV0dXJuICRkbjsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91cGxvYWRfZGlybmFtZSgpCiAgewogICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICRkbiAgICAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdtYW1zJykpOwogICAgCiAgICByZXR1cm4gJGRuOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VwbG9hZF9maWxlbmFtZSgkZmxkbmFtZSwgJHNyY2ZpbGUpCiAgewogICAgLy8gZ2V0IHRoZSBmaWxlbmFtZSBvbmx5LCBub3QgdGhlIGRpcmVjdG9yeQogICAgLy8gbm90ZTogdGhpcyBtdXN0IGJlIHJlcHJvZHVjYWJsZSBnaXZlbiB0aGUgc2FtZSBzcmNmaWxlIGFuZCBmaWxlbmFtZSBmb3IgdGhlIHNhbWUgcmVxdWVzdC4KICAgICRleHQgID0gc3RycmNocigkc3JjZmlsZSwgJy4nKTsKICAgICR0aW1lID0gXHh0X3BhcmFtOjpnZXRfaW50KCRfU0VSVkVSLCAnUkVRVUVTVF9USU1FJyk7CiAgICAKICAgIHJldHVybiBzaGExKF9fRklMRV9fIC4gc2Vzc2lvbl9pZCgpIC4gJGZsZG5hbWUgLiAkc3JjZmlsZSAuICR0aW1lKSAuICRleHQ7CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBNYW5hZ2VJbWFnZVVwbG9hZCgka2V5LCAkZmxkbmFtZSkKICB7CiAgICAkcmVzID0gXG1hbXNfdXRpbHM6OmNoZWNrVXBsb2FkKCRrZXkpOwogICAgaWYoISRyZXNbMF0pCiAgICB7CiAgICAgIHJldHVybiAkcmVzOwogICAgfQogICAgCiAgICAkZmlsZSA9ICRfRklMRVNbJGtleV07CiAgICAvLyBzZXQgdGhlIGRlc3RpbmF0aW9uIG5hbWUKICAgICRkZXN0RGlyICA9ICR0aGlzLT5nZXRfdXBsb2FkX2Rpcm5hbWUoKTsKICAgICRkZXN0bmFtZSA9ICR0aGlzLT5nZXRfdXBsb2FkX2ZpbGVuYW1lKCRmbGRuYW1lLCAkZmlsZVsnbmFtZSddKTsKICAgIAogICAgLy8gQ3JlYXRlIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgaWYgbmVjZXNzYXJ5CiAgICBAbWtkaXIoJGRlc3REaXIsIDA3NzcsIFRSVUUpOwogICAgQHRvdWNoKCRkZXN0ZGlyIC4gJy9pbmRleC5odG1sJyk7CiAgICBpZighaXNfd3JpdGFibGUoJGRlc3REaXIpKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kLT5MYW5nKCdlcnJvcl9kZXN0aW5hdGlvbm5vdHdyaXRhYmxlJyldOwogICAgfQogICAgQGNtc19tb3ZlX3VwbG9hZGVkX2ZpbGUoJGZpbGVbJ3RtcF9uYW1lJ10sIGNtc19qb2luX3BhdGgoJGRlc3REaXIsICRkZXN0bmFtZSkpOwogICAgCiAgICByZXR1cm4gW1RSVUUsICRkZXN0bmFtZV07CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRQb3N0TG9naW5VUkwoJHVybCkKICB7CiAgICBpZigkdXJsKQogICAgewogICAgICAkdGhpcy0+c2Vzc2lvbl9wdXQoJ3Bvc3Rsb2dpbl91cmwnLCAkdXJsKTsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFBvc3RMb2dpblVSTCgpCiAgewogICAgJG91dCA9ICR0aGlzLT5zZXNzaW9uX2dldCgncG9zdGxvZ2luX3VybCcpOwogICAgJHRoaXMtPnNlc3Npb25fY2xlYXIoJ3Bvc3Rsb2dpbl91cmwnKTsKICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vICBBUEkgRlVOQ1RJT05TIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJG5hbWUsICRhcmdzKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgCiAgICAvL2lmKCAhbWV0aG9kX2V4aXN0cyggJHRoaXMtPnVzZXJtYW5pcCwgJG5hbWUgKSApIGRpZSggIm1ldGhvZCAkbmFtZSBub3QgZm91bmQgaW4gIi5nZXRfY2xhc3MoJHRoaXMtPnVzZXJtYW5pcCkuIiBvYmplY3QiICk7CiAgICAKICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheShbJHRoaXMtPnVzZXJtYW5pcCwgJG5hbWVdLCAkYXJncyk7CiAgfQogIAogIC8qKgogICAqIEdldCB0aGUgZmlsZW5hbWVzIG9mIGFsbCBmaWxlcyBhc3NvY2lhdGVkIHdpdGggaW1hZ2UgcHJvcGVydGllcyBmb3IgdGhlIHNwZWNpZmllZCB1c2VyLgogICAqIERvZXMgbm90IGNoZWNrIGlmIHRoZSBmaWxlcyBleGlzdCwgaGF2ZSB0aHVtYm5haWxzLCBvciBmb3IgcGVybWlzc2lvbnMuCiAgICoKICAgKiBAcGFyYW0gaW50ICR1aWQgVGhlIHVzZXJpZAogICAqCiAgICogQHJldHVybiBhcnJheXxudWxsCiAgICovCiAgZnVuY3Rpb24gR2V0VXNlckZpbGVzRnVsbCgkdXNlcmlkKQogIHsKICAgICR1c2VyaWQgPSAoaW50KSR1c2VyaWQ7CiAgICBpZigkdXNlcmlkIDwgMSkKICAgIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICAkZGVmbnMgICAgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgJHByb3B2YWxzID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0aWVzKCR1c2VyaWQpOwogICAgaWYoISRwcm9wdmFscykKICAgIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgJHByb3B2YWxzID0gXHh0X2FycmF5Ojp0b19oYXNoKCRwcm9wdmFscywgJ3RpdGxlJyk7CiAgICAkb3V0ICAgICAgPSBOVUxMOwogICAgZm9yZWFjaCgkZGVmbnMgYXMgJG5hbWUgPT4gJGRlZm4pCiAgICB7CiAgICAgIGlmKCRkZWZuWyd0eXBlJ10gIT0gc2VsZjo6RklFTERUWVBFX0lNQUdFKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYoIWlzc2V0KCRwcm9wdmFsc1skbmFtZV0pKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYoISRwcm9wdmFsc1skbmFtZV1bJ2RhdGEnXSkKICAgICAgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIAogICAgICAkb3V0WyRuYW1lXSA9ICRwcm9wdmFsc1skbmFtZV1bJ2RhdGEnXTsKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBIYXNDYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCAkcGFyYW1zID0gYXJyYXkoKSkKICB7CiAgICBzd2l0Y2goJGNhcGFiaWxpdHkpCiAgICB7CiAgICAgIGNhc2UgJ2NvbnRlbnRfdHlwZXMnOgogICAgICBjYXNlICdjb250ZW50X2F0dHJpYnV0ZXMnOgogICAgICBjYXNlICd0YXNrcyc6CiAgICAgIGNhc2UgJ2NsaWNvbW1hbmRzJzoKICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEBpZ25vcmUKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NsaV9jb21tYW5kcygkYXBwKQogIHsKICAgICRvdXQgICA9IE5VTEw7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xHcm91cEVkaXRDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcR3JvdXBMaXN0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXEdyb3VwTGlzdFByb3BzQ29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXEdyb3VwVmlld0NvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xQcm9wRWRpdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xQcm9wTGlzdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xVc2VyQWRkQ29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFVzZXJEZWxldGVDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcVXNlckVkaXRDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcVXNlclByb3BFZGl0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFVzZXJMaXN0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFVzZXJWaWV3Q29tbWFuZCgkYXBwKTsKICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBnZXRfY29udGVudF9hdHRyaWJ1dGVzKCRjb250ZW50X3R5cGUpCiAgewogICAgJHRtcCAgPSBhcnJheSgpOwogICAgJGF0dHIgPSBuZXcgQ21zQ29udGVudFR5cGVQcm9maWxlQXR0cmlidXRlKCdtYW1zX2dyb3VwcycsICd2aXNpdG9ycycpOwogICAgJGF0dHItPnNldF9oZWxwZXIobWFtc19jb250ZW50X2F0dHJpYnV0ZV9oZWxwZXI6OmdldF9pbnN0YW5jZSgpKTsKICAgICR0bXBbXSA9ICRhdHRyOwogICAgCiAgICByZXR1cm4gJHRtcDsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGlnbm9yZQogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gcGFnZV90eXBlX2xhbmdfY2FsbGJhY2soJHN0cikKICB7CiAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkc3RyID0gc3RyX3JlcGxhY2UoJyAnLCAnXycsICRzdHIpOwogICAgaWYoJHN0ciA9PSAnZm9yZ290X3Bhc3N3b3JkX2VtYWlsJykKICAgIHsKICAgICAgJHN0ciA9ICd2ZXJpZnlfZW1haWwnOwogICAgfQogICAgJHN0ciA9ICd0cGx0eXBlXycgLiAkc3RyOwogICAgaWYoaXNfb2JqZWN0KCRtb2QpKQogICAgewogICAgICByZXR1cm4gJG1vZC0+TGFuZygkc3RyKTsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGlnbm9yZQogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gcmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzKENtc0xheW91dFRlbXBsYXRlVHlwZSAkdHlwZSkKICB7CiAgICBpZigkdHlwZS0+Z2V0X29yaWdpbmF0b3IoKSAhPSAnTUFNUycpCiAgICB7CiAgICAgIHRocm93IG5ldyBDbXNMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHJlc2V0IGNvbnRlbnRzIGZvciB0aGlzIHRlbXBsYXRlIHR5cGUnKTsKICAgIH0KICAgIAogICAgJGZuID0gTlVMTDsKICAgIHN3aXRjaCgkdHlwZS0+Z2V0X25hbWUoKSkKICAgIHsKICAgICAgY2FzZSAnbG9naW4gZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9naW5mb3JtLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdsb2dvdXQgZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9nb3V0Zm9ybS50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnY2hzZXR0aW5ncyBmb3JtJzoKICAgICAgICAkZm4gPSAnb3JpZ19jaGFuZ2VzZXR0aW5ncy50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yZ290IHBhc3N3b3JkIGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX2ZvcmdvdHBhc3N3b3JkMS50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yZ290IHBhc3N3b3JkIGVtYWlsJzoKICAgICAgICAkZm4gPSAnb3JpZ19mb3Jnb3RwYXNzd29yZDIudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2ZvcmdvdCBwYXNzd29yZCB2ZXJpZnknOgogICAgICAgICRmbiA9ICdvcmlnX2ZvcmdvdHBhc3N3b3JkMy50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yY2UgbmV3IHBhc3N3b3JkJzoKICAgICAgICAkZm4gPSAnb3JpZ19mb3JjZV9uZXdwd19mb3JtLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdsb3N0IHVzZXJuYW1lIGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX2xvc3R1bmZvcm1fdGVtcGxhdGUudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2xvc3QgdXNlcm5hbWUgY29uZmlybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9zdHVuZm9ybV9jb25maXJtX3RlbXBsYXRlLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICd2aWV3IHVzZXInOgogICAgICAgICRmbiA9ICdvcmlnX3ZpZXd1c2VyX3RlbXBsYXRlLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdyZXNldCBzZXNzaW9uJzoKICAgICAgICAkZm4gPSAnb3JpZ19yZXNldHNlc3Npb25fdGVtcGxhdGUudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3ZlcmlmeV9mb3JtJzoKICAgICAgY2FzZSAndmVyaWZ5IGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX3ZlcmlmeWZvcm0udHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigKICAgICAgICAgICR0eXBlLT5nZXRfbmFtZSgpIC4gJyBpcyBub3QgYSBrbm93biB0eXBlIGZvciB0aGUgJyAuICR0eXBlLT5nZXRfb3JpZ2luYXRvcigpIC4gJyBvcmlnaW5hdG9yJwogICAgICAgICk7CiAgICB9CiAgICAKICAgICRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywgJ3RlbXBsYXRlcycsICRmbik7CiAgICBpZihpc19maWxlKCRmbikpCiAgICB7CiAgICAgIHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldF92ZXJpZmljYXRpb25fYXNzaXN0YW50KHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgJG9iaikKICB7CiAgICBpZigkdGhpcy0+dmVyaWZpY2F0aW9uX2Fzc2lzdGFudCkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQSB2ZXJpZmljYXRpb24gYXNzaXN0YW50IG9iamVjdCBhbHJlYWR5IGV4aXN0cycpOwogICAgfQogICAgJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSAkb2JqOwogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3ZlcmlmaWNhdGlvbl9hc3Npc3RhbnQoKQogIHsKICAgIGlmKCEkdGhpcy0+dmVyaWZpY2F0aW9uX2Fzc2lzdGFudCkKICAgIHsKICAgICAgJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSBuZXcgZW1haWxfdmVyaWZ5X2Fzc2lzdGFudCgkdGhpcyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpcy0+dmVyaWZpY2F0aW9uX2Fzc2lzdGFudDsKICB9CiAgCn0gLy8gY2xhc3MKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBhbGxvdyBtYW5hZ2VtZW50IG9mIGZyb250ZW5kCiMgIHVzZXJzLCBhbmQgdGhlaXIgbG9naW4gcHJvY2VzcyB3aXRoaW4gYSBDTVMgTWFkZSBTaW1wbGUgcG93ZXJlZAojICB3ZWJzaXRlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBWaXNpdCB0aGUgQ01TTVMgSG9tZXBhZ2UgYXQ6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCFpc3NldCgkZ0NtcykpCnsKICBleGl0Owp9CgppZih2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCAnNy4yLjEnKSA8IDApCnsKICByZXR1cm4gIk1pbmltdW0gUEhQIHZlcnNpb24gb2YgNy4yLjEgcmVxdWlyZWQiOwp9CgokbG9nX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uKFxFeGNlcHRpb24gJGUpewogICRvdXQgPSAnLS0gRVhDRVBUSU9OIERVTVAgLS0nIC4gIlxuIjsKICAkb3V0IC49ICJUWVBFOiAiIC4gZ2V0X2NsYXNzKCRlKSAuICJcbiI7CiAgJG91dCAuPSAiTUVTU0FHRTogIiAuICRlLT5nZXRNZXNzYWdlKCkgLiAiXG4iOwogICRvdXQgLj0gIkZJTEU6ICIgLiAkZS0+Z2V0RmlsZSgpIC4gJzonIC4gJGUtPkdldExpbmUoKSAuICJcbiI7CiAgJG91dCAuPSAiVFJFQUNFOlxuIjsKICAkb3V0IC49ICRlLT5nZXRUcmFjZUFzU3RyaW5nKCk7CiAgZGVidWdfdG9fbG9nKCRvdXQsICctLSAnIC4gX19NRVRIT0RfXyAuICcgLS0nKTsKfTsKCiRkYiAgID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ0VOR0lORT1Jbm5vREInKTsKCi8vVXNlciBsaXN0CiRmbGRzICAgICA9ICIKICAgICAgICAgaWQgSSBLRVkgQVVUTyBOT1ROVUxMLAogICAgICAgICB1c2VybmFtZSBDKDEyOCkgTk9UTlVMTCwKICAgICAgICAgcGFzc3dvcmQgQygxMjgpIE5PVE5VTEwsCiAgICAgICAgIGNyZWF0ZWRhdGUgIiAuIENNU19BRE9EQl9EVCAuICIsCiAgICAgICAgIGV4cGlyZXMgICAgIiAuIENNU19BRE9EQl9EVCAuICIsCiAgICAgICAgIG5vbnN0ZCAgIEkxLAogICAgICAgICBkaXNhYmxlZCBJMSwKICAgICAgICAgc2FsdCAgICAgQyg2NCksCiAgICAgICAgIGZvcmNlX25ld3B3IEkxLAogICAgICAgICBmb3JjZV9jaHNldHRpbmdzIEkxLAogICAgICAgICBtdXN0X3ZhbGlkYXRlIEkxCiAgICAgICAgIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc191c2VycyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL0dyb3VwIGxpc3QKJGZsZHMgICAgID0gIgoJICAgICBpZCBJIEtFWSBBVVRPIE5PVE5VTEwsCgkgICAgIGdyb3VwbmFtZSBDKDMyKSBOT1ROVUxMLAoJICAgICBncm91cGRlc2MgQygxMjgpCgkgICAgIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19ncm91cHMiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gbG9nZ2VkaW4KJGZsZHMgICAgID0gIgoJICAgICBzZXNzaW9uaWQgQygyNTUpIE5PVE5VTEwsCgkgICAgIGxhc3R1c2VkIEksCgkgICAgIHVzZXJpZCBJIE5PVE5VTEwKCSAgICAiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9tYW1zX2xvZ2dlZGluIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vQ29ubmVjdGlvbnMgYmV0d2VlbiB1c2VycyBhbmQgZ3JvdXBzCiRmbGRzICAgICA9ICIKCSAgICAgdXNlcmlkIEkgS0VZIE5PVE5VTEwsCgkgICAgIGdyb3VwaWQgSSBLRVkgTk9UTlVMTAoJICAgICI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX21hbXNfYmVsb25ncyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL3Byb3BlcnR5IGRlZmluaXRpb24KJGZsZHMgICAgID0gIgogICAgICAgICBuYW1lICAgICAgQyg0MCkgS0VZIE5PVE5VTEwsCiAgICAgICAgIHByb21wdCAgICBDKDI1NSkgTk9UTlVMTCwKICAgICAgICAgdHlwZSAgICAgIEMoMjApIE5PVE5VTEwsCiAgICAgICAgIGxlbmd0aCAgICBJLAogICAgICAgICBtYXhsZW5ndGggSSwKICAgICAgICAgYXR0cmlicyAgIEMoMjU1KSwKICAgICAgICAgZm9yY2VfdW5pcXVlIEkxLAogICAgICAgICBlbmNyeXB0ICAgSTEsCiAgICAgICAgIGV4dHJhICAgICBYCiAgICAgICAgIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19wcm9wZGVmbiIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL2Ryb3Bkb3duIHNlbGVjdCBvcHRpb25zCiRmbGRzICAgICA9ICIKICAgICAgICAgb3JkZXJfaWQJCUkgTk9UTlVMTCwKICAgICAgICAgb3B0aW9uX25hbWUJQyg0MCkgTk9UTlVMTCwKICAgICAgICAgb3B0aW9uX3RleHQJQygyNTUpIE5PVE5VTEwsCiAgICAgICAgIGNvbnRyb2xfbmFtZQlDKDQwKSBOT1ROVUxMOwogICAgICAgICI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNxbChjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX21hbXNfZHJvcGRvd25zIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIGdyb3VwIHByb3BlcnR5IG1hcAovLyB1c2VkIHRvIGFzc29jaWF0ZSBhIHByb3BlcnR5IHRvIGEgZ3JvdXAKJGZsZHMgICAgID0gIgogICAgICAgICBuYW1lICAgIEMoNDApIEtFWSBOT1ROVUxMLAogICAgICAgICBncm91cF9pZCBJIEtFWSBOT1ROVUxMLAogICAgICAgICBzb3J0X2tleSBJIE5PVE5VTEwsCiAgICAgICAgIHJlcXVpcmVkIEkgTk9UTlVMTCwKICAgICAgICAgbG9zdHVuZmxhZyBJCiAgICAgICAgIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19ncm91cHByb3BtYXAiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy91c2VyIHByb3BlcnRpZXMKJGZsZHMgICAgID0gIgoJICAgICBpZCBJIEtFWSBBVVRPIE5PVE5VTEwsCgkgICAgIHVzZXJpZCBJIE5PVE5VTEwsCgkgICAgIHRpdGxlIEMoMTAwKSBOT1ROVUxMLAoJICAgICBkYXRhIFgyCgkgICAgIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKLy8kZGItPkNyZWF0ZVNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXNfc2VxIiApOwoKLy8gZm9yZ290dGVuIHBhc3N3b3JkIHN0dWZmCiRmbGRzICAgICA9ICIKCSAgICAgdXNlcmlkIEkgS0VZLAogICAgICAgICBjb2RlIEMoMjUpIE5PVE5VTEwsCiAgICAgICAgIGNyZWF0ZWQgIiAuIENNU19BRE9EQl9EVDsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc190ZW1wY29kZSIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBsb2dpbiBoaXN0b3J5IHN0dWZmCiRmbGRzICAgICA9ICIKICAgICAgICAgdXNlcmlkIEkgTk9UTlVMTCwKCSAgICAgc2Vzc2lvbmlkIEMoMzIpIE5PVE5VTEwsCiAgICAgICAgIGFjdGlvbiBDKDI1NSkgTk9UTlVMTCwKICAgICAgICAgcmVmZGF0ZSAiIC4gQ01TX0FET0RCX0RUIC4gIiwKICAgICAgICAgaXBhZGRyZXNzIEMoNjQpIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19oaXN0b3J5IiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIGluZGV4ZXMKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKAogIGNtc19kYl9wcmVmaXgoKSAuICdtYW1zX2lkeF9iZWxvbmdzJywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MnLCAnZ3JvdXBpZCcKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoCiAgY21zX2RiX3ByZWZpeCgpIC4gJ21hbXNfaWR4X3VzZXJuYW1lJywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJywgJ3VzZXJuYW1lJwopOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgKICBjbXNfZGJfcHJlZml4KCkgLiAnbWFtc19pZHhfZXhwaXJlcycsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc191c2VycycsICdleHBpcmVzJwopOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgKICBjbXNfZGJfcHJlZml4KCkgLiAnbWFtc19pZHhfcmVmZGF0ZScsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19oaXN0b3J5JywgJ3VzZXJpZCxyZWZkYXRlLGFjdGlvbicKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoCiAgY21zX2RiX3ByZWZpeCgpIC4gJ21hbXNfaWR4X3Byb3B1c2VydGl0bGUnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcycsICd1c2VyaWQsdGl0bGUnCik7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKAogIGNtc19kYl9wcmVmaXgoKSAuICdtYW1zX2lkeF9wcm9wdGl0bGUnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcycsICd0aXRsZScKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gc2V0dXAgZm9yZWlnbiBrZXkgcmVsYXRpb25zaGlwcwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfYmVsb25ncyBBREQgRk9SRUlHTiBLRVkgKHVzZXJpZCkgUkVGRVJFTkNFUyAnIC4KICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc191c2VycyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4gQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgQUREIEZPUkVJR04gS0VZIChncm91cGlkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfZHJvcGRvd25zIEFERCBGT1JFSUdOIEtFWSAoY29udHJvbF9uYW1lKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuIChuYW1lKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBBREQgRk9SRUlHTiBLRVkgKGdyb3VwX2lkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIEFERCBGT1JFSUdOIEtFWSAobmFtZSkgUkVGRVJFTkNFUyAnIC4KICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZGVmbiAobmFtZSknOwokZGItPkV4ZWN1dGUoJHNxbCk7CiRzcWwgPSAnQUxURVIgVEFCTEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFERCBGT1JFSUdOIEtFWSAodXNlcmlkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzIChpZCknOwokZGItPkV4ZWN1dGUoJHNxbCk7CiRzcWwgPSAnQUxURVIgVEFCTEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFERCBGT1JFSUdOIEtFWSAodGl0bGUpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGRlZm4gKG5hbWUpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2hpc3RvcnkgQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKCiR1aWQgICAgICAgICAgICA9IG1heCgxLCBnZXRfdXNlcmlkKEZBTFNFKSk7CiRsb2dpbl90cGxfdHlwZSA9ICRsb2dvdXRfdHBsX3R5cGUgPSAkY2hzZXR0aW5nc190cGxfdHlwZSA9ICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUgPSAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUgPQokZm9yY2VuZXdwd190cGxfdHlwZSA9ICRsb3N0dW5mb3JtX3RwbF90eXBlID0gJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUgPSAkdmlld3VzZXJfdHBsX3R5cGUgPSAkcmVzZXRzZXNzaW9uX3RwbF90eXBlID0gTlVMTDsKCiRtb2QgICAgICAgICAgICAgICAgICA9ICR0aGlzOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUgPSBmdW5jdGlvbigkbmV3X3R5cGUpIHVzZSAoJiRtb2QsICYkX2ZpeF9uYW1lLCAkdWlkKQp7CiAgdHJ5CiAgewogICAgJHByb3RvdHlwZSA9ICdNQU1TICcgLiAkbmV3X3R5cGUtPmdldF9uYW1lKCk7CiAgICAkdHBsICAgICAgID0gbmV3IENtc0xheW91dFRlbXBsYXRlOwogICAgJHRwbC0+c2V0X25hbWUoJHRwbDo6Z2VuZXJhdGVfdW5pcXVlX25hbWUoJHByb3RvdHlwZSkpOwogICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgJHRwbC0+c2V0X3R5cGUoJG5ld190eXBlKTsKICAgICR0cGwtPnNldF9jb250ZW50KCRuZXdfdHlwZS0+Z2V0X2RmbHRfY29udGVudHMoKSk7CiAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOyAvLyBNQU1TIG9ubHkgaGFkIG9uZSB0ZW1wbGF0ZSBvZiBlYWNoIHR5cGUuCiAgICAkdHBsLT5zYXZlKCk7CiAgfQogIGNhdGNoKFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbiAkZSkKICB7CiAgICAkbG9nX2V4Y2VwdGlvbigkZSk7CiAgICBhdWRpdCgnJywgJG1vZC0+R2V0TmFtZSgpLCAnVXBncmFkZSBQcm9ibGVtICcgLiAkZS0+R2V0TWVzc2FnZSgpKTsKICB9Cn07Cgp0cnkKewogICRsb2dpbl90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGxvZ2luX3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9uYW1lKCdsb2dpbiBmb3JtJyk7CiAgJGxvZ2luX3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRsb2dpbl90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGxvZ2luX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGxvZ2luX3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkbG9naW5fdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkbG9nb3V0X3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkbG9nb3V0X3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkbG9nb3V0X3RwbF90eXBlLT5zZXRfbmFtZSgnbG9nb3V0IGZvcm0nKTsKICAkbG9nb3V0X3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkbG9nb3V0X3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkbG9nb3V0X3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkY2hzZXR0aW5nc190cGxfdHlwZS0+c2V0X25hbWUoJ2Noc2V0dGluZ3MgZm9ybScpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkY2hzZXR0aW5nc190cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkY2hzZXR0aW5nc190cGxfdHlwZS0+c2F2ZSgpOwogIAogICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUtPnNldF9uYW1lKCdmb3Jnb3QgcGFzc3dvcmQgZm9ybScpOwogICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRmb3Jnb3Rwd2VtYWlsX3RwbF90eXBlLT5zZXRfbmFtZSgnZm9yZ290IHBhc3N3b3JkIGVtYWlsJyk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRmb3Jnb3Rwd2VtYWlsX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRmb3Jnb3Rwd2VtYWlsX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X25hbWUoJ2ZvcmdvdCBwYXNzd29yZCB2ZXJpZnknKTsKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2F2ZSgpOwogIAogICRmb3JjZW5ld3B3X3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmNlbmV3cHdfdHBsX3R5cGUtPnNldF9uYW1lKCdmb3JjZSBuZXcgcGFzc3dvcmQnKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGZvcmNlbmV3cHdfdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmNlbmV3cHdfdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkbG9zdHVuZm9ybV90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb3N0dW5mb3JtX3RwbF90eXBlLT5zZXRfbmFtZSgnbG9zdCB1c2VybmFtZSBmb3JtJyk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRsb3N0dW5mb3JtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb3N0dW5mb3JtX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkbG9zdHVuY29uZmlybV90cGxfdHlwZS0+c2V0X25hbWUoJ2xvc3QgdXNlcm5hbWUgY29uZmlybScpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkbG9zdHVuY29uZmlybV90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkbG9zdHVuY29uZmlybV90cGxfdHlwZS0+c2F2ZSgpOwogIAogICR2aWV3dXNlcl90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJHZpZXd1c2VyX3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9uYW1lKCd2aWV3IHVzZXInKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJHZpZXd1c2VyX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2F2ZSgpOwogIAogICRyZXNldHNlc3Npb25fdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRyZXNldHNlc3Npb25fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRyZXNldHNlc3Npb25fdHBsX3R5cGUtPnNldF9uYW1lKCdyZXNldCBzZXNzaW9uJyk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+c2F2ZSgpOwogIAogICR2ZXJpZnlmb3JtX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkdmVyaWZ5Zm9ybV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnNldF9uYW1lKCd2ZXJpZnlfZm9ybScpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkdmVyaWZ5Zm9ybV90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkdmVyaWZ5Zm9ybV90cGxfdHlwZS0+c2F2ZSgpOwp9CmNhdGNoKFxDbXNTUUxFcnJvckV4Y2VwdGlvbiAkZSkKewogICRsb2dfZXhjZXB0aW9uKCRlKTsKICBhdWRpdCgnJywgJHRoaXMtPkdldE5hbWUoKSwgJ1VwZ3JhZGUgRXJyb3I6ICcgLiAkZS0+R2V0TWVzc2FnZSgpKTsKfQpjYXRjaChcRXhjZXB0aW9uICRlKQp7CiAgJGxvZ19leGNlcHRpb24oJGUpOwogIGF1ZGl0KCcnLCAkdGhpcy0+R2V0TmFtZSgpLCAnVXBncmFkZSBFcnJvcjogJyAuICRlLT5HZXRNZXNzYWdlKCkpOwogIAogIHJldHVybiAnRVJST1I6ICcgLiAkZS0+R2V0TWVzc2FnZSgpOwp9CgovLyBub3cgY3JlYXRlIHRoZSB0ZW1wbGF0ZXMgdGhlbXNlbHZlcy4KJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRsb2dpbl90cGxfdHlwZSk7CiRjcmVhdGVfZGZsdF90ZW1wbGF0ZSgkbG9nb3V0X3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRjaHNldHRpbmdzX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRmb3JjZW5ld3B3X3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRsb3N0dW5mb3JtX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRsb3N0dW5jb25maXJtX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCR2aWV3dXNlcl90cGxfdHlwZSk7CiRjcmVhdGVfZGZsdF90ZW1wbGF0ZSgkcmVzZXRzZXNzaW9uX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCR2ZXJpZnlmb3JtX3RwbF90eXBlKTsKCi8vIHByZWZlcmVuY2VzCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnLCA2KTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcsIDIwKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VuaGFuY2VkX3Bhc3N3b3JkJywgMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwd3JlcXVpcmVkY2hhcnMnLCAnfkAjJCVeJio9K18tKCkuLCEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21pbl91c2VybmFtZWxlbmd0aCcsIDQpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJywgNDApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcl9zZXNzaW9uX2V4cGlyZXMnLCAxODAwKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLCAwKTsKCiRzdHIgPSAneCcgLiBzdWJzdHIoc3RyX3NodWZmbGUobWQ1KHRpbWUoKSAuICRjb25maWdbJ3Jvb3RfdXJsJ10gLiBfX0ZJTEVfXykpLCAwLCA4KTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnLCAkc3RyKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnLCAtMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLCAnYmx1ZScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcsIDEpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsICchJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfY29sb3InLCAnZ3JlZW4nKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9mb3Jnb3RwYXNzd2QnLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZ3MnLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9nb3V0JywgJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVydmVyaWZ5JywgJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX2VtYWlscycsIDApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnLCAxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJywgMjApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLCA0MCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19yZXBlYXRlZF9sb2dpbnMnLCAxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnX21hbXMnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycsICcuZ2lmLC5wbmcsLmpwZycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbm90aWZpY2F0aW9uX3N1YmplY3QnLCAkdGhpcy0+TGFuZygnbWFtc19ldmVudF9ub3RpZmljYXRpb24nKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJywgNTIwKTsKCiMgSWYgdGhlcmUgaXMgYSBMSVNFIGluc3RhbGxhdGlvbiBzY2FuIGZpZWxkcyB0byBhZGQgb3VycwokbGlzZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKTsKCmlmKCBpc19vYmplY3QoJGxpc2UpICkKewogIExJU0VGaWVsZGRlZk9wZXJhdGlvbnM6OlNjYW5Nb2R1bGVzKCk7Cn0KCi8vIHVzZXJzYWx0ID0gMC91bnNldCA6IG1kNSAgaGFzaCB3aXRoIGZpeGVkIHNhbHQgZm9yIGFsbCB1c2VycwovLyB1c2Vyc2FsdCA9IDEgOiBzaGExIGhhc2ggd2l0aCB1c2VyIHNwZWNpZmljIHNhbHQKLy8gdXNlcnNhbHQgPSAzIDogdXNlIHBocCdzIHBhc3N3b3JkX2VuY3J5cHQsIGFuZCBwYXNzd29yZF92ZXJpZnkgd2l0aCBiY3J5cHQKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZV91c2Vyc2FsdCcsIDIpOwoKLy8gRXZlbnRzCiR0aGlzLT5DcmVhdGVFdmVudCgnQWZ0ZXJMb2dpbkF1dGgnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdCZWZvcmVMb2dpbicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uTG9naW4nKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkxvZ2luRmFpbGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25Mb2dvdXQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkV4cGlyZVVzZXInKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkNyZWF0ZVVzZXInKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkRlbGV0ZVVzZXInKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPblVwZGF0ZVVzZXInKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkNyZWF0ZUdyb3VwJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25VcGRhdGVHcm91cCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uRGVsZXRlR3JvdXAnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPblJlZnJlc2hVc2VyJyk7CgovLyBwZXJtaXNzaW9ucwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTW9kaWZ5IE1BTVMnLCAnTW9kaWZ5IE1BTVMgUHJvcGVydGllcycpOw==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2xvZ2dlZGluIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfYmVsb25ncyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19kcm9wZG93bnMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19ncm91cHByb3BtYXAiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc190ZW1wY29kZSIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2hpc3RvcnkiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGRlZm4iICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19ncm91cHMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc191c2VycyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gdGVtcGxhdGVzCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKLy8gcHJlZmVyZW5jZXMKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCi8vIHBlcm1pc3Npb25zCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgTUFNU1VzZXJQcm9wcycpOwoKLy8gTUFNUy1zcGVjaWZpYyBwZXJtaXNzaW9ucyAuLi4gbWF5IG9yIG1heSBub3QgZXhpc3QKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01BTVMgTW9kaWZ5IFVzZXJzJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBHcm91cHMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01BTVMgTW9kaWZ5IE1BTVNQcm9wcycpOwoKLy8gRXZlbnRzCiR0aGlzLT5SZW1vdmVFdmVudCggJ0FmdGVyTG9naW5BdXRoJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdCZWZvcmVMb2dpbicgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Mb2dpbicgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Mb2dpbicgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Mb2dpbkZhaWxlZCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Mb2dvdXQnICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uRXhwaXJlVXNlcicgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25DcmVhdGVVc2VyJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkRlbGV0ZVVzZXInICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uQ3JlYXRlR3JvdXAnICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uRGVsZXRlR3JvdXAnICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uVXBkYXRlVXNlcicgKTsKCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50UG9zdFJlbmRlcicpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlclVwZGF0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ0dFY29tbWVyY2VCYXNlJywnT3JkZXJEZWxldGVkJyk7]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKaWYoIHZlcnNpb25fY29tcGFyZShwaHB2ZXJzaW9uKCksJzcuMi4xJykgPCAwICkKewogIHJldHVybiAiTWluaW11bSBQSFAgdmVyc2lvbiBvZiA3LjIuMSByZXF1aXJlZCI7Cn0KCiRkYiA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiR1aWQgPSBnZXRfdXNlcmlkKCk7CiRtb2QgPSAkdGhpczsKCmlmKCRvbGR2ZXJzaW9uIDwgJzEuMC5iLjUnKQp7CiAgXE1BTVNcdXBncmFkZV91dGlsczo6Y29udGVudF90eXBlX3JlcGFpcigpOwogICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNb2RpZnkgTUFNU1VzZXJQcm9wcycsICdNb2RpZnkgTUFNUyBQcm9wZXJ0aWVzJyk7CiAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01vZGlmeSBGcm9udEVuZFVzZXJQcm9wcycpOwp9CgppZigkb2xkdmVyc2lvbiA8ICcxLjAuYi42JykKewogIFxNQU1TXHVwZ3JhZGVfdXRpbHM6OmNvbnRlbnRfdHlwZV9yZXBhaXIoKTsKfQoKIyBhbHdheXMKCiMgSWYgdGhlcmUgaXMgYSBMSVNFIGluc3RhbGxhdGlvbiBzY2FuIGZpZWxkcyB0byBhZGQgb3VycwokbGlzZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKTsKCmlmKCBpc19vYmplY3QoJGxpc2UpICkKewogIExJU0VGaWVsZGRlZk9wZXJhdGlvbnM6OlNjYW5Nb2R1bGVzKCk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJNQU1TIg0KdmVyc2lvbiA9IDEuMA0KYXV0aG9yID0gIkpvIE1vcmciDQphdXRob3JlbWFpbCA9ICJqb21vcmdAY21zbWFkZXNpbXBsZS5vcmciDQptaW5jbXN2ZXJzaW9uID0gIjIuMi45Ig0KbGF6eWxvYWRhZG1pbiA9IDANCmxhenlsb2FkZnJvbnRlbmQgPSAwDQpbZGVwZW5kc10KQ01TTVNFeHQgPSAxLjANClNtYXJ0eUV4dCA9IDEuMA0K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addgroup.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9OjwvaDM+Cgp7aWYgaXNzZXQoJG1lc3NhZ2UpIH0KICB7aWYgaXNzZXQoJGVycm9yKSB9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KCnskc3RhcnRmb3JtfQp7aWYgaXNzZXQoJGhpZGRlbil9CjxkaXY+eyRoaWRkZW59PC9kaXY+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZ3JvdXBuYW1lfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2dyb3VwbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZ3JvdXBkZXNjfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2dyb3VwZGVzY308L3A+CjwvZGl2PgoKe2lmICRwcm9wY291bnQgPiAwfQo8YnIvPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPnskbmFtZXRleHR9PC90aD4KICAgICAgPHRoPnskcHJvbXB0dGV4dH08L3RoPgogICAgICA8dGg+eyR0eXBldGV4dH08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2VuY3J5cHRlZCcpfTwvdGg+CiAgICAgIDx0aD57JGZpZWxkc3RhdHVzdGV4dH08L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICB7Zm9yZWFjaCAkcHJvcHMgYXMgJHByb3BlfQogICAge2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KICAgIDx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+CiAgICAgIDx0ZD57JHByb3BlLT5oaWRkZW59eyRwcm9wZS0+bmFtZX08L3RkPgogICAgICA8dGQ+eyRwcm9wZS0+cHJvbXB0fTwvdGQ+CiAgICAgIDx0ZD57JHByb3BlLT50eXBlfTwvdGQ+CiAgICAgIDx0ZD57aWYgJHByb3BlLT5lbmNyeXB0ZWR9PHNwYW4gaW5mbz0ieyRtb2QtPkxhbmcoJ2luZm9fZW5jcnlwdGVkJyl9IiBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij57JG1vZC0+TGFuZygneWVzJyl9PC9zcGFuPnsvaWZ9PC90ZD4KICAgICAgPHRkPnskcHJvcGUtPnJlcXVpcmVkfTwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICB7aWYgaXNzZXQoJHByb3BlLT5tb3ZldXBfaWR4KX0KICAgICAgICAgIDxidXR0b24gbmFtZT0ieyRhY3Rpb25pZH1tb3ZldXAiIHRpdGxlPSJ7JG1vZC0+TGFuZygnbW92ZV91cCcpfSIgdmFsdWU9InskcHJvcGUtPm1vdmV1cF9pZHh9Ij57JGltZ191cH08L2J1dHRvbj4KICAgICAgICB7L2lmfQogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAge2lmIGlzc2V0KCRwcm9wZS0+bW92ZWRvd25faWR4KX0KICAgICAgICAgIDxidXR0b24gbmFtZT0ieyRhY3Rpb25pZH1tb3ZlZG93biIgdGl0bGU9InskbW9kLT5MYW5nKCdtb3ZlX2Rvd24nKX0iIHZhbHVlPSJ7JHByb3BlLT5tb3ZlZG93bl9pZHh9Ij57JGltZ19kb3dufTwvYnV0dG9uPgogICAgICAgIHsvaWZ9CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/addprop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4Ke2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9Cnskc3RhcnRmb3JtfQo8ZGl2Pnskb3JpZ190eXBlfTwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JHByb21wdF9uYW1lfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X25hbWV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRwcm9tcHRfcHJvbXB0fTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X3Byb21wdH08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JHByb21wdF90eXBlfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X3R5cGV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICB7aWYgaXNzZXQoJGZpZWxkcyl9CiAge2ZvcmVhY2ggZnJvbT0kZmllbGRzIGl0ZW09J29uZWZsZCd9CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxwIGNsYXNzPSJncmlkXzQiPnskb25lZmxkWzBdfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JG9uZWZsZFsxXX08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIHsvZm9yZWFjaH0KICB7L2lmfQp7aWYgaXNzZXQoJGlucHV0X2ZvcmNlX3VuaXF1ZSkgJiYgJGRlZm4udHlwZSAhPSA2fQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlX3VuaXF1ZScpfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X2ZvcmNlX3VuaXF1ZX08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2Pgp7L2lmfQp7aWYgJGRlZm4udHlwZSAhPSAyICYmICRkZWZuLnR5cGUgIT0gNn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9lbmNyeXB0Jyl9OjwvcD4KICAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+eyRpbnB1dF9lbmNyeXB0fTxwPnskbW9kLT5MYW5nKCdpbmZvX2VuY3J5cHQnKX08L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2Pgp7L2lmfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGhpZGRlbnxkZWZhdWx0OicnfXskc3VibWl0fXskY2FuY2VsfTwvcD4KICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KQogIC5yZWFkeShmdW5jdGlvbigpCiAgewoKICAkKCcjZmV1X2ltcG9ydF9mb3JtJykuc3VibWl0KCBmdW5jdGlvbihldil7CiAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgY21zX2NvbmZpcm0oJ3skbW9kLT5MYW5nKCdjb25maXJtX2ltcG9ydF9mcm9tX2ZldScpfGVzY2FwZTonamF2YXNjcmlwdCd9JykuZG9uZShmdW5jdGlvbigpewogICAgICBldi5jdXJyZW50VGFyZ2V0LnN1Ym1pdCgpOwogICAgfSkKICB9KTsKCn0pOwo8L3NjcmlwdD4KCntpZiBpc3NldCgkbWVzc2FnZSkgfTxwPnskbWVzc2FnZX08L3A+ey9pZn0KeyRzdGFydGZvcm19Cgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygnZ2VuZXJhbF9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnYXV0aF9tb2R1bGUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1hdXRoX21vZHVsZSI+CiAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRhdXRoX21vZHVsZXMgc2VsZWN0ZWQ9JGF1dGhfbW9kdWxlfQogICAgICA8L3NlbGVjdD4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19hdXRoX21vZHVsZScpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYXV0b19jcmVhdGVfdW5rbm93bicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPSdhdXRvX2NyZWF0ZV91bmtub3duJyBzZWxlY3RlZD0kYXV0b19jcmVhdGVfdW5rbm93bn0KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fYXV0b19jcmVhdGVfdW5rbm93bicpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2luc306PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hbGxvd19yZXBlYXRlZF9sb2dpbnN9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZXhwaXJlYWdlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZXhwaXJlYWdlfSZuYnNwOyh7JG1vZC0+TGFuZygnbW9udGhzJyl9KTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3JhbmRvbXVzZXJuYW1lJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmFuZG9tdXNlcm5hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NsZWFyaGlzdG9yeV9hZ2UnKX06PC9wPgogICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1jbGVhcmhpc3RvcnlfYWdlIiB2YWx1ZT0ieyRjbGVhcmhpc3RvcnlfYWdlfSIgc2l6ZT0iMyIgbWF4bGVuZ3RoPSIzIi8+CgkgPGJyLz57JG1vZC0+TGFuZygnaW5mb19jbGVhcmhpc3RvcnlfYWdlJyl9CiAgICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnN9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9uc308YnIvPnskaW5mb19tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zfTwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdzZXNzaW9uX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Nlc3Npb250aW1lb3V0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3Nlc3Npb250aW1lb3V0fQogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX3Nlc3Npb250aW1lb3V0Jyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9leHBpcmV1c2Vyc19pbnRlcnZhbCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZXhwaXJldXNlcnNfaW50ZXJ2YWwiIHZhbHVlPSJ7JGV4cGlyZXVzZXJzX2ludGVydmFsfSIgc2l6ZT0iNCIgbWF4bGVuZ3RoPSI0Ii8+CiAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fZXhwaXJldXNlcnNfaW50ZXJ2YWwnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlbG9nb3V0X3RpbWVzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1mb3JjZWxvZ291dF90aW1lcyIgc2l6ZT0iNDAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRmb3JjZWxvZ291dF90aW1lc30iLz4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19mb3JjZWxvZ291dF90aW1lcycpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZScpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Zm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZSIgc2l6ZT0iNSIgbWF4bGVuZ3RoPSI1IiB2YWx1ZT0ieyRmb3JjZWxvZ291dF9zZXNzaW9uYWdlfSIvPgogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnKX0KICAgIDwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9wZXJ0eV9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRofTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGh9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9uc306PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnN9PC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3BhZ2V0eXBlX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwYWdldHlwZV9ncm91cHMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1wYWdldHlwZV9ncm91cHNbXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSI1Ij4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGFsbF9ncm91cHMgc2VsZWN0ZWQ9JHBhZ2V0eXBlX2dyb3Vwc30KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX3BhZ2V0eXBlX2dyb3VwcycpfQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKe2lmIGlzc2V0KCRkYXRhX251bXJlc2V0cmVjb3Jkcyl9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxociB3aWR0aD0iNTAlIiBhbGlnbj0ibGVmdCIvPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X251bXJlc2V0cmVjb3Jkc308L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRhdGFfbnVtcmVzZXRyZWNvcmRzfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9yZW1vdmUxd2Vla317JGlucHV0X3JlbW92ZTFtb250aH17JGlucHV0X3JlbW92ZWFsbH08L3A+CiAgPC9kaXY+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufGRlZmF1bHQ6Jyd9eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQoKe2lmICRoYXZlX2ZldX0KICB7Zm9ybV9zdGFydCBhY3Rpb249YWRtaW5faW1wb3J0X2Zyb21fZmV1IGlkPSdmZXVfaW1wb3J0X2Zvcm0nfQogIDxmaWVsZHNldD4KICAgIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2ltcG9ydF9mcm9tX2ZldScpfTo8L2xlZ2VuZD4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA5NSU7Ij4KICAgICAgPGRpdiBjbGFzcz0id2FybmluZyIgc3R5bGU9IndpZHRoOiA5OSU7Ij48cD48c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+V2FybmluZzo8L3N0cm9uZz48L3A+CiAgICAgICAgPHA+eyRtb2QtPkxhbmcoJ2luZm9faW1wb3J0X2Zyb21fZmV1Jyl9PC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1kb19pbXBvcnQiIHZhbHVlPSJkb19pbXBvcnQiLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2ltcG9ydCcpfSIvPgogIDwvZmllbGRzZXQ+CiAge2Zvcm1fZW5kfQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admintasks.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKSB9PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbWVzc2FnZX08L2Rpdj57L2lmfQoKeyogQSBmb3JtIChzaW1wbGUgYnV0dG9uKSBmb3IgZXhwb3J0aW5nIHVzZXJzIHRvIGNzdiAqfQp7JHN0YXJ0Zm9ybX17JGlucHV0X2hpZGRlbn0KCjxmaWVsZHNldD4KPGxlZ2VuZD57JGxlZ2VuZF91c2VyaGlzdG9yeW1haW50ZW5hbmNlfTwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXhwb3J0dXNlcmhpc3Rvcnl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2V4cG9ydHVzZXJoaXN0b3J5fSZuYnNwO3skYnV0dG9uX2V4cG9ydHVzZXJoaXN0b3J5fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jbGVhcnVzZXJoaXN0b3J5fTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jbGVhcnVzZXJoaXN0b3J5fSZuYnNwO3skYnV0dG9uX2NsZWFydXNlcmhpc3Rvcnl9PC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KeyRlbmRmb3JtfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_authtab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19zdGRfYXV0aF9zZXR0aW5ncycpfTwvZGl2Pgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygnYXV0aF9zZXR0aW5ncycpfTwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9cmVxdWlyZV9vbmVncm91cCBzZWxlY3RlZD0kcmVxdWlyZV9vbmVncm91cH0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RmbHRncm91cCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWRlZmF1bHRfZ3JvdXAiPgogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZ3JvdXBsaXN0IHNlbGVjdGVkPSRkZWZhdWx0X2dyb3VwfQogICAgICA8L3NlbGVjdD4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3N1cHBvcnRfbG9zdHVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9c3VwcG9ydF9sb3N0dW4gc2VsZWN0ZWQ9JHN1cHBvcnRfbG9zdHVufQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19zdXBwb3J0X2xvc3R1bicpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYWxsb3dfY2hhbmdldXNlcm5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1hbGxvd19jaGFuZ2V1c2VybmFtZSBzZWxlY3RlZD0kYWxsb3dfY2hhbmdldXNlcm5hbWV9CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX2FsbG93X2NoYW5nZXVzZXJuYW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9zdXBwb3J0X2xvc3RwdycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPXN1cHBvcnRfbG9zdHB3IHNlbGVjdGVkPSRzdXBwb3J0X2xvc3Rwd30KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fc3VwcG9ydF9sb3N0cHcnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3B3ZmxkbGVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1wd2ZsZGxlbiIgdmFsdWU9InskcHdmbGRsZW59IiBzaXplPSIyIiBtYXhsZW5ndGg9IjIiLz4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X21pbnB3bGVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1taW5wd2xlbiIgdmFsdWU9InskbWlucHdsZW59IiBzaXplPSIyIiBtYXhsZW5ndGg9IjIiLz4KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9tYXhwd2xlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWF4cHdsZW4iIHZhbHVlPSJ7JG1heHB3bGVufSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCcpfQogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2VuaGFuY2VkcHcnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1lbmhhbmNlZHB3IHNlbGVjdGVkPSRlbmhhbmNlZHB3fQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19lbmhhbmNlZHB3Jyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wd3JlcXVpcmVkY2hhcnMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXB3cmVxdWlyZWRjaGFycyIgdmFsdWU9InskcHdyZXF1aXJlZGNoYXJzfSIgbWF4bGVuZ3RoPSI0MCIvPgogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19wd3JlcXVpcmVkY2hhcnMnKX0KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF91bmZsZGxlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dW5mbGRsZW4iIHZhbHVlPSJ7JHVuZmxkbGVufSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9taW51bmxlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWludW5sZW4iIHZhbHVlPSJ7JG1pbnVubGVufSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCcpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbWF4dW5sZW4nKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1heHVubGVuIiB2YWx1ZT0ieyRtYXh1bmxlbn0iIHNpemU9IjIiIG1heGxlbmd0aD0iMiIvPgogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2Nvb2tpZW5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNvb2tpZW5hbWUiIHZhbHVlPSJ7JHhjb29raWVuYW1lfGRlZmF1bHQ6Jyd9IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSI1MCIvPgogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19jb29raWVuYW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9jb29raWVrZWVwYWxpdmUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1jb29raWVfa2VlcGFsaXZlIHNlbGVjdGVkPSRjb29raWVfa2VlcGFsaXZlfQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19jb29raWVfa2VlcGFsaXZlJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF91c2VybmFtZV9pc19lbWFpbCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPXVzZXJuYW1lX2lzX2VtYWlsIHNlbGVjdGVkPSR1c2VybmFtZV9pc19lbWFpbH0KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fdXNlcm5hbWVfaXNfZW1haWwnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1hbGxvd19kdXBsaWNhdGVfZW1haWxzIHNlbGVjdGVkPSRhbGxvd19kdXBsaWNhdGVfZW1haWxzfQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9YWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyBzZWxlY3RlZD0kYWxsb3dfZHVwbGljYXRlX3JlbWluZGVyc30KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycycpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbG9naW5fYWZ0ZXJfdmVyaWZ5Jyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9bG9naW5fYWZ0ZXJfdmVyaWZ5IHNlbGVjdGVkPSRsb2dpbl9hZnRlcl92ZXJpZnl9CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX2xvZ2luX2FmdGVyX3ZlcmlmeScpfQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdkaXNwbGF5X3NldHRpbmdzJyl9PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9zaWduaW5fYnV0dG9uJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1zaWduaW5fYnV0dG9uIiB2YWx1ZT0ieyRzaWduaW5fYnV0dG9ufSIgc2l6ZT0iMTUiIG1heGxlbmd0aD0iMTUiLz4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncmVxdWlyZWRmaWVsZG1hcmtlcicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cmVxdWlyZWRfZmllbGRfbWFya2VyIiB2YWx1ZT0ieyRyZXF1aXJlZF9maWVsZF9tYXJrZXJ9IiBzaXplPSIyIiBtYXhsZW5ndGg9IjIiLz4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncmVxdWlyZWRmaWVsZGNvbG9yJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1yZXF1aXJlZF9maWVsZF9jb2xvciIgdmFsdWU9InskcmVxdWlyZWRfZmllbGRfY29sb3J9IiBzaXplPSIxMCIgbWF4bGVuZ3RoPSIxMCIvPgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN1cmVmaWVsZG1hcmtlcicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9c2VjdXJlX2ZpZWxkX21hcmtlciIgdmFsdWU9Inskc2VjdXJlX2ZpZWxkX21hcmtlcn0iIHNpemU9IjIiIG1heGxlbmd0aD0iMiIvPgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN1cmVmaWVsZGNvbG9yJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1zZWN1cmVfZmllbGRfY29sb3IiIHZhbHVlPSJ7JHNlY3VyZV9maWVsZF9jb2xvcn0iIHNpemU9IjEwIiBtYXhsZW5ndGg9IjEwIi8+CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hpZGRlbmZpZWxkbWFya2VyJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1oaWRkZW5fZmllbGRfbWFya2VyIiB2YWx1ZT0ieyRoaWRkZW5fZmllbGRfbWFya2VyfSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hpZGRlbmZpZWxkY29sb3InKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWhpZGRlbl9maWVsZF9jb2xvciIgdmFsdWU9InskaGlkZGVuX2ZpZWxkX2NvbG9yfSIgc2l6ZT0iMTAiIG1heGxlbmd0aD0iMTAiLz4KICAgIDwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCntpZiBpc3NldCgkZWNvbW1fb3JkZXJjYW5jZWxsZWQpfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygnZWNvbW1lcmNlX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxwIGNsYXNzPSJwYWdlb3ZlcmZsb3ciPnskbW9kLT5MYW5nKCdpbmZvX3BhaWRyZWdfc2V0dGluZ3MnKX08L3A+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9lY29tbV9wYWlkcmVnaXN0cmF0aW9uJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbiI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHNlbGVjdGVkPSRlY29tbV9wYWlkcmVnaXN0cmF0aW9ufQogICAgICA8L3NlbGVjdD4KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbicpfQogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FjdGlvbl9vcmRlcmNhbmNlbGxlZCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWVjb21tX29yZGVyY2FuY2VsbGVkIj4KICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRlY29tbWVyY2VfYWN0aW9ucyBzZWxlY3RlZD0kZWNvbW1fb3JkZXJjYW5jZWxsZWR9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FjdGlvbl9vcmRlcmRlbGV0ZWQnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1lY29tbV9vcmRlcmRlbGV0ZWQiPgogICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGVjb21tZXJjZV9hY3Rpb25zIHNlbGVjdGVkPSRlY29tbV9vcmRlcmRlbGV0ZWR9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgp7L2lmfQoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdyZWRpcmVjdGlvbl9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX3N0YXInKX08L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZm9yZ290cHdfcGFnZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1wYWdlaWRmb3Jnb3RwYXNzd2QiIHZhbHVlPSJ7JHBhZ2VpZGZvcmdvdHBhc3N3ZH0iIHNpemU9IjgwIiBtYXhsZW5ndGg9IjI1NSIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2NoYW5nZXNldHRpbmdzIiB2YWx1ZT0ieyRwYWdlaWRfY2hhbmdlc2V0dGluZ3N9IiBzaXplPSI4MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9sb2dpbl9wYWdlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXBhZ2VpZF9sb2dpbiIgdmFsdWU9InskcGFnZWlkX2xvZ2lufSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbG9nb3V0X3BhZ2UnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2xvZ291dCIgdmFsdWU9InskcGFnZWlkX2xvZ291dH0iIHNpemU9IjgwIiBtYXhsZW5ndGg9IjI1NSIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3ZlcmlmeV9wYWdlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXBhZ2VpZF9vbnZlcmlmeSIgdmFsdWU9InskcGFnZWlkX29udmVyaWZ5fSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYWZ0ZXJfdmVyaWZ5X2NvZGUnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2FmdGVydmVyaWZ5IiB2YWx1ZT0ieyRwYWdlaWRfYWZ0ZXJ2ZXJpZnl9IiBzaXplPSI4MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9hZnRlcl9jaGFuZ2Vfc2V0dGluZ3MnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MiIHZhbHVlPSJ7JHBhZ2VpZF9hZnRlcmNoYW5nZXNldHRpbmdzfSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KCntpZiBpc3NldCgkcHdzYWx0KX0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2FkdmFuY2VkX3NldHRpbmdzJyl9PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wd3NhbHQnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXB3c2FsdCIgdmFsdWU9InskcHdzYWx0fSIgc2l6ZT0iNSIgbWF4bGVuZ3RoPSI1IiB7aWYgJHRvdGFsX3VzZXJfY291bnQgZ3QgMH1yZWFkb25seT0icmVhZG9ubHkiey9pZn0vPgogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX3B3c2FsdCcpfQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgPC9wPgo8L2Rpdj4KCnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_bulk_setexpiry.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfYnVsa19zZXRleHBpcnknKX08L2gzPgo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fYnVsa19zZXRleHBpcnknKX08L2Rpdj4KCntmb3JtX3N0YXJ0IGpvYj0kam9iIHVpZHM9JHVpZHN9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZXhwaXJlcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9InskYWN0aW9uaWR8Y2F0OidleHBpcmVzJ30iIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IjIwMzgiIHRpbWU9IntzdHJ0b3RpbWUoJys1IHllYXJzJyl9In0KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_bulk_setpasswd.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfYnVsa19zZXRwYXNzd29yZCcpfTwvaDM+CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19idWxrX3NldHBhc3N3b3JkJyl9PC9kaXY+Cgp7Zm9ybV9zdGFydCBqb2I9JGpvYiB1aWRzPSR1aWRzfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Bhc3N3b3JkJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InskYWN0aW9uaWR9cGFzc3dvcmQiLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InskYWN0aW9uaWR9cmVwZWF0cGFzc3dvcmQiLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_deleteprop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfZGVsZXRlcHJvcCcpfTo8L2gzPgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj57JG1vZC0+TGFuZygnd2Fybl9kZWxldGVwcm9wJyl9PC9kaXY+Cgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JGRlZm4ucHJvbXB0fSA8ZW0+KHskZGVmbi5uYW1lfSk8L2VtPjwvbGVnZW5kPgogIDxwPlR5cGU6IHskZmllbGR0eXBlc1skZGVmbi50eXBlXX08L3A+CjwvZmllbGRzZXQ+Cgp7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfY29uZmlybV9kZWxldGVwcm9wJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgPHNlbGVjdCBpZD0ibWFtc19jb25maXJtIiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfY29uZmlybSI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj57JG1vZC0+TGFuZygnbm8nKX08L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPnskbW9kLT5MYW5nKCd5ZXMnKX08L29wdGlvbj4KICAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0ibWFtc19zdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICAgIDwvcD4KICA8L2Rpdj4KCnskZm9ybWVuZH0K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edituser.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD4KJChmdW5jdGlvbigpewogICAkKCcjYW5vbmltaXplJykuYnV0dG9uKCkuY2xpY2soIGZ1bmN0aW9uKCBldiApIHsKICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICB2YXIgdXJsID0gJCh0aGlzKS5kYXRhKCdocmVmJyk7CiAgICAgICBjbXNfY29uZmlybSggJ3skbW9kLT5MYW5nKCdjb25maXJtX2Fub25pbWl6ZScpfScgKS5kb25lKCBmdW5jdGlvbigpIHsKICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKICAgICAgIH0pCiAgIH0pOwp9KQo8L3NjcmlwdD4KCntpZiAkdXNlci0+aWR9CjxoMz57JG1vZC0+TGFuZygnZWRpdHVzZXInKX08L2gzPgp7ZWxzZX0KPGgzPnskbW9kLT5MYW5nKCdhZGR1c2VyJyl9PC9oMz4Key9pZn0KCnsqIHBhc3N3b3JkIGlzIHJlYWRvbmx5IGZvciBub24gc3RhbmRhcmQgYWNjb3VudHMsIGJ1dCByZXF1aXJlZCBmb3IgbmV3LCBzdGFuZGFyZCBhY2NvdW50cyAqfQp7JHB3cmVhZG9ubHk9Jyd9CntpZiAkdXNlci0+bm9uc3RkfXskcHdyZWFkb25seT0ncmVhZG9ubHknfXsvaWZ9CnskcHdyZXF1aXJlZD0nJ30Ke2lmICEkcHdyZWFkb25seSAmJiAkdXNlci0+aWQgPCAxfXskcHdyZXF1aXJlZD0ncmVxdWlyZWQnfXsvaWZ9Cgp7Zm9ybV9zdGFydCB1c2VyX2lkPSR1c2VyLT5pZH0KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ25leHQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogICAge2lmICR1c2VyLT5pZCA+IDB9CiAgICA8YnV0dG9uIGlkPSJhbm9uaW1pemUiIGRhdGEtaHJlZj0ie2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9hbm9uaW1pemVfdXNlciB1aWQ9JHVzZXItPmlkfSI+eyRtb2QtPkxhbmcoJ2Fub25pbWl6ZScpfTwvYnV0dG9uPgogICAgey9pZn0KPC9kaXY+Cjxici8+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij4qeyRwcm9tcHRfdXNlcm5hbWV9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXVzZXJuYW1lIiB2YWx1ZT0ieyR1c2VyLT5uZXdfdXNlcm5hbWV9IiBzaXplPSJ7JHVuZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF91bmZsZGxlbn0iIGF1dG9jb21wbGV0ZT0ib2ZmIiByZXF1aXJlZC8+CiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPntpZiAkcHdyZXF1aXJlZH0qey9pZn17JG1vZC0+TGFuZygncGFzc3dvcmQnKX06PC9sYWJlbD4KICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ7JGFjdGlvbmlkfXBhc3N3b3JkIiB2YWx1ZT0ieyR1c2VyLT5uZXdfcGFzc3dvcmR9IiBzaXplPSJ7JHB3ZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF9wd2ZsZGxlbn0iIHskcHdyZWFkb25seX17JHB3cmVxdWlyZWR9IGF1dG9jb21wbGV0ZT0ibmV3LXBhc3N3b3JkIi8+CiAgICAge2lmICR1c2VyLT5pZCA+IDB9eyRtb2QtPkxhbmcoJ2luZm9fYWRtaW5fcGFzc3dvcmQnKX17L2lmfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57aWYgJHB3cmVxdWlyZWR9KnsvaWZ9eyRtb2QtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ieyRhY3Rpb25pZH1yZXBlYXRwYXNzd29yZCIgdmFsdWU9InskdXNlci0+cmVwZWF0X3Bhc3N3b3JkfSIgc2l6ZT0ieyRwd2ZsZGxlbn0iIG1heGxlbmd0aD0ieyRtYXhfcHdmbGRsZW59IiB7JHB3cmVhZG9ubHl9eyRwd3JlcXVpcmVkfS8+CiAgICAge2lmICR1c2VyLT5pZCA+IDB9eyRtb2QtPkxhbmcoJ2luZm9fYWRtaW5fcmVwZWF0cGFzc3dvcmQnKX17L2lmfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPiEhPC9zcGFuPiZuYnNwOyB7JG1vZC0+TGFuZygncHJvbXB0X2Rpc2FibGVkJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1kaXNhYmxlZCBzZWxlY3RlZD0kdXNlci0+aXNfZGlzYWJsZWR9CiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZm9yY2VfY2hzZXR0aW5ncycpfTo8L2xhYmVsPgogICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9Zm9yY2VfY2hzZXR0aW5ncyBzZWxlY3RlZD0kdXNlci0+Zm9yY2VfY2hhbmdlX3NldHRpbmdzfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlX25ld3B3Jyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1mb3JjZV9uZXdwdyBzZWxlY3RlZD0kdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij48c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPioqPC9zcGFuPiZuYnNwOyB7JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlX3JldmFsaWRhdGUnKX06PC9sYWJlbD4KICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPW11c3RfdmFsaWRhdGUgc2VsZWN0ZWQ9JHVzZXItPm11c3RfdmFsaWRhdGV9CiAgICAgeyRjb2RlPSRtb2QtPkdldFVzZXJUZW1wQ29kZSgkdXNlci0+aWQpfQogICAgIHtpZiAkY29kZX08c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPnskbW9kLT5MYW5nKCdpbmZvX3ZlcmlmeWVtYWlsX3NlbnQnKX17L2lmfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygnZXhwaXJlcycpfTo8L2xhYmVsPgogICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICB7JHk9ZGF0ZSgnWScsJHVzZXItPmV4cGlyZXMpfQogICAgIHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0ieyRhY3Rpb25pZH1leHBpcmVzIiB0aW1lPSJ7JHVzZXItPmV4cGlyZXN9IiBzdGFydF95ZWFyPTIwMDAgZW5kX3llYXI9MjEwMH0KICAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0id2FybmluZyI+eyRtb2QtPkxhbmcoJ3dhcm5fc3Ryb25ncGFzc3dvcmQnKX08L2Rpdj4KCntpZiAkZ3JvdXBzfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2lkJyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCduYW1lJyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdkZXNjcmlwdGlvbicpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPjwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogIHtmb3JlYWNoICRncm91cHMgYXMgJGdyb3VwfQogICAgeyRjaGVja2VkPTB9CiAgICB7aWYgJHVzZXItPmlkID4gMCAmJiAkdXNlci0+bWVtYmVyb2YoJGdyb3VwLmlkKX0KICAgICAgeyRjaGVja2VkPTF9CiAgICB7ZWxzZWlmICR1c2VyLT5pZCA8IDEgJiYgJGRlZmF1bHRfZ3JvdXAgPT0gJGdyb3VwLmlkfQogICAgICB7JGNoZWNrZWQ9MX0KICAgIHsvaWZ9CiAgICA8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9J3JvdzEscm93Mid9Ij4KICAgICAgIDx0ZD57JGdyb3VwLmlkfTwvdGQ+CiAgICAgICA8dGQ+eyRncm91cC5ncm91cG5hbWV9PC90ZD4KICAgICAgIDx0ZD57JGdyb3VwLmdyb3VwZGVzY308L3RkPgogICAgICAgPHRkPgogICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1lbWJlcm9mW10iIHZhbHVlPSJ7JGdyb3VwLmlkfSIge2lmICRjaGVja2VkfWNoZWNrZWR7L2lmfS8+CiAgICAgICA8L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0Ke2Zvcm1fZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edituser2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICR1c2VyLT5pZCA+IDAgfQo8aDM+eyRtb2QtPkxhbmcoJ2VkaXR1c2VyJyl9IHskdXNlci0+dXNlcm5hbWV9IC8geyR1c2VyLT5pZH08L2gzPgp7ZWxzZX0KPGgzPnskbW9kLT5MYW5nKCdhZGR1c2VyJyl9PC9oMz4Key9pZn0KCntmb3JtX3N0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1iYWNrIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2JhY2snKX0iIGZvcm1ub3ZhbGlkYXRlLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9IiBmb3Jtbm92YWxpZGF0ZS8+CiAgPC9wPgo8L2Rpdj4KCntmb3JlYWNoICRmaWVsZHMgYXMgJGZpZWxkfQogIHskZmxkaWQ9ImZsZF97JGZpZWxkLT5uYW1lfSJ9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBpZD0iY29udF97JGZpZWxkLT5uYW1lfSI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48bGFiZWwge2lmICRmaWVsZC0+Y29sb3J9c3R5bGU9ImNvbG9yOiB7JGZpZWxkLT5jb2xvcn0iey9pZn0+eyRmaWVsZC0+bWFya2VyfXskZmllbGQtPnByb21wdH06PC9sYWJlbD48L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAge2lmICRmaWVsZC0+dHlwZSA9PSAwfQogICAgICAgIHsqIHRleHQgZmllbGQgKn0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSIgc2l6ZT0ieyRmaWVsZC0+c2l6ZX0iIG1heGxlbj0ieyRmaWVsZC0+bWF4bGVufSIge2lmICRmaWVsZC0+cmVxdWlyZWR9cmVxdWlyZWR7L2lmfS8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gMX0KICAgICAgICB7KiBjaGVja2JveCAqfQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1wcm9wX3skZmllbGQtPm5hbWV9IiB2YWx1ZT0iMCIvPgoJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9IjEiIHtpZiAkZmllbGQtPnZhbHVlfWNoZWNrZWR7L2lmfS8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gMn0KICAgICAgICB7KiBlbWFpbCAqfQoJPGlucHV0IHR5cGU9ImVtYWlsIiBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSIgc2l6ZT0ieyRmaWVsZC0+c2l6ZX0iIG1heGxlbj0ieyRmaWVsZC0+bWF4bGVufSIge2lmICRmaWVsZC0+cmVxdWlyZWR9cmVxdWlyZWR7L2lmfS8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gM30KICAgICAgICB7KiB0ZXh0YXJlYSAqfQogICAgICAgIHt4dF90ZXh0YXJlYSBpZD0kZmxkaWQgbmFtZT0ieyRhY3Rpb25pZH1wcm9wX3skZmllbGQtPm5hbWV9IiB2YWx1ZT0kZmllbGQtPnZhbHVlIHd5c2l3eWc9JGZpZWxkLT53eXNpd3lnfQogICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDR9CiAgICAgICAgeyogZHJvcGRvd24gKn0KCTxzZWxlY3QgaWQ9InskZmxkaWR9IiBuYW1lPSJ7JGFjdGlvbmlkfXByb3BfeyRmaWVsZC0+bmFtZX0iIHtpZiAkZmllbGQtPnJlcXVpcmVkfXJlcXVpcmVkey9pZn0+CgkgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZmllbGQtPm9wdGlvbnMgc2VsZWN0ZWQ9JGZpZWxkLT52YWx1ZX0KCTwvc2VsZWN0PgogICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDV9CiAgICAgICAgeyogbXVsdGlzZWxlY3QgKn0KCXskdG1wPWNvdW50KCRmaWVsZC0+b3B0aW9ucyl9e2lmICR0bXAgPiA4fXskdG1wPTh9ey9pZn0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9IiIvPgoJPHNlbGVjdCBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfVtdIiBzaXplPSJ7JHRtcH0iIG11bHRpcGxlPgoJICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGZpZWxkLT5vcHRpb25zIHNlbGVjdGVkPSRmaWVsZC0+dmFsdWV9PGJyLz4KCTwvc2VsZWN0PgogICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDZ9CiAgICAgICAgeyogaW1hZ2UgKn0KCXskdG1wPSRmaWVsZC0+aW1hZ2VfdXJsfQoJe2lmICR0bXB9CgkgICA8aW1nIHNyYz0ieyR0bXB9IiB3aWR0aD0iMTAwIiBhbHQ9InskZmllbGQtPnZhbHVlfSIvPgogICAgICAgICAgIDxsYWJlbD4KCSAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXByb3BkZWxfeyRmaWVsZC0+bmFtZX0iIHZhbHVlPSIxIi8+CgkgICAgIHskbW9kLT5MYW5nKCdwcm9tcHRfY2xlYXInKX0KCSAgIDwvbGFiZWw+CgkgICA8YnIvPgoJey9pZn0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9IioqRklMRSoqIi8+Cgk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0ieyRhY3Rpb25pZH1wcm9wX3skZmllbGQtPm5hbWV9Ii8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gN30KICAgICAgICB7KiByYWRpb2J1dHRvbnMgKn0KCXtmb3JlYWNoICRmaWVsZC0+b3B0aW9ucyBhcyAka2V5ID0+ICR2YWx9Cgk8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ7JGFjdGlvbmlkfXByb3BfeyRmaWVsZC0+bmFtZX0iIHZhbHVlPSJ7JGtleX0iIHtpZiAka2V5ID09ICRmaWVsZC0+dmFsdWV9Y2hlY2tlZHsvaWZ9Lz4geyR2YWx9PC9sYWJlbD4KCXsvZm9yZWFjaH0KICAgICB7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA4fQogICAgICAgIHsqIGRhdGUgKn0KCXskdG1wPSJ7JGFjdGlvbmlkfXByb3BfeyRmaWVsZC0+bmFtZX0ifQoJeyRzeT0kZmllbGQtPnN0YXJ0eWVhcnxkZWZhdWx0OjE5MDB9Cgl7JGV5PSRmaWVsZC0+ZW5keWVhcnxkZWZhdWx0OjIwNTB9Cgl7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRmaWVsZC0+dmFsdWUgc3RhcnRfeWVhcj0kc3kgZW5kX3llYXI9JGV5fQogICAgIHsvaWZ9CiAgICAgPC9wPnsqIC5wYWdlaW5wdXQgKn0KICA8L2Rpdj4Key9mb3JlYWNofQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9YmFjayIgdmFsdWU9InskbW9kLT5MYW5nKCdiYWNrJyl9IiBmb3Jtbm92YWxpZGF0ZS8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import_users.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfaW1wb3J0dXNlcnMnKX08L2gzPgoKPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX2ltcG9ydF9mb3JtYXQnKX08L2Rpdj4KCnt4dF9oZWxwaGFuZGxlcn0KeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RlbGV0ZV91c2VycycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZGVsZXRlX3VzZXJzIj4KICAgICAge3h0X3llc25vX29wdGlvbnMgc2VsZWN0ZWQ9JG9wdGlvbnMuZGVsZXRlX3VzZXJzfQogICAgPC9zZWxlY3Q+CiAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2ltcG9ydF9kZWxldGVfdXNlcnMnKX0KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kZWxpbWl0ZXInKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZGVsaW1pdGVyIiB2YWx1ZT0ieyRvcHRpb25zLmRlbGltaXRlcn0iIHNpemU9IjMiIG1heGxlbmd0aD0iMSIvPgogIDwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnRmaWxlbmFtZScpfTombmJzcDt7eHRfaGVscHRhZyBrZXk9J2ltcG9ydF9mb3JtYXQnfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpbGUiLz4KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgPC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQoKPGRpdiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgp7eHRfaGVscGNvbnRlbnQga2V5PSdpbXBvcnRfZm9ybWF0JyB0ZXh0PSRtb2QtPkxhbmcoJ2luZm9faW1wb3J0dXNlcnNmaWxlZm9ybWF0MicpfQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import_users2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfaW1wb3J0dXNlcnMnKX08L2gzPgoKe2Ntc19qcXVlcnl9Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciBwcm9ncmVzc19tYXggPSAxMDA7CmZ1bmN0aW9uIGltcG9ydF9wcm9ncmVzc19tYXgodmFsKSB7CiAgcHJvZ3Jlc3NfbWF4ID0gcGFyc2VJbnQodmFsKTsKICBpZiggcHJvZ3Jlc3NfbWF4IDwgMSApIHByb2dyZXNzX21heCA9IDE7CiAgcHJvZ3Jlc3NfdmFsID0gMDsKICAkKCcjcHJvZ3Jlc3MnKS53aWR0aCgwKTsKfQpmdW5jdGlvbiBpbXBvcnRfcHJvZ3Jlc3Nfc2V0KG4pIHsKICBuID0gcGFyc2VJbnQobik7CiAgaWYoIG4gPCAxICkgbiA9IDE7CiAgdmFyIHYgPSBNYXRoLnJvdW5kKG4gLyBwcm9ncmVzc19tYXggKiAxMDAuMCk7CiAgJCgnI3Byb2dyZXNzJykud2lkdGgodisnJScpLmh0bWwodisnJScpOwp9CmZ1bmN0aW9uIGltcG9ydF9zdGF0dXMobXNnKSB7CiAgJCgnI3N0YXR1c19hcmVhJykuYXBwZW5kKCc8cD4nK21zZysnPC9wPicpOwp9CmZ1bmN0aW9uIGltcG9ydF93YXJuaW5nKG1zZykgewogICQoJyNzdGF0dXNfYXJlYScpLmFwcGVuZCgnPHAgY2xhc3M9ImltcG9ydF93YXJuaW5nIj4nK21zZysnPC9wPicpOwp9CmZ1bmN0aW9uIGltcG9ydF9lcnJvcihtc2cpIHsKICAkKCcjc3RhdHVzX2FyZWEnKS5hcHBlbmQoJzxwIGNsYXNzPSJpbXBvcnRfZXJyb3IiPicrbXNnKyc8L3A+Jyk7Cn0KZnVuY3Rpb24gaW1wb3J0X2ZpbmlzaCgpIHsKICBhbGVydCgnYWxsIGRvbmUnKTsKICAkKCcjZmluaXNoX2FyZWEnKS5zaG93KCdzbG93Jyk7Cn0KPC9zY3JpcHQ+Cgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojbWV0ZXIgewogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGNvbG9yOiBncmF5OwogIGhlaWdodDogMmVtOwogIG1hcmdpbi1ib3R0b206IDJlbTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KI3Byb2dyZXNzIHsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdzogaGlkZGVuOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAgY3lhbjsKICB2ZXJ0aWNhbC1hbGlnbjogY2VudGVyOwogIGxpbmUtaGVpZ2h0OiAyZW07Cn0KI3N0YXR1c19hcmVhID4gcCB7CiAgZm9udC1zaXplOiAxMXB4OwogIGxpbmUtaGVpZ2h0OiAxLjFlbTsKfQojc3RhdHVzX2FyZWEgPiBwLmltcG9ydF93YXJuaW5nIHsKICBiYWNrZ3JvdW5kOiAjZmFmNmQ0OwogIGJvcmRlcjogMXB4IHNvbGlkICNlNmMyNmU7Cn0KI3N0YXR1c19hcmVhID4gcC5pbXBvcnRfZXJyb3IgewogIGJhY2tncm91bmQ6ICNmMmQ0Y2U7CiAgYm9yZGVyOiAxcHggc29saWQgI2FlNDMyZTsKfQojZmluaXNoX2FyZWEgewogIG1hcmdpbi10b3A6IDFlbTsKICBtYXJnaW4tYm90dG9tOiAxZW07Cn0KPC9zdHlsZT4KCjxkaXYgaWQ9Im1ldGVyIj4KICA8c3BhbiBpZD0icHJvZ3Jlc3MiPjwvc3Bhbj4KPC9kaXY+Cgo8ZGl2IGlkPSJzdGF0dXNfYXJlYSI+PC9kaXY+Cgo8ZGl2IGlkPSJmaW5pc2hfYXJlYSIgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGEgaHJlZj0ieyRyZXR1cm5fdXJsfSI+eyRtb2QtPkxhbmcoJ3Byb21wdF9yZXR1cm4nKX08L2E+CiAgPC9kaXY+CjwvZGl2Pgo8aWZyYW1lIGlkPSJpbXBvcnRfaWZyYW1lIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIHNyYz0ieyRpZnJhbWVfc3JjfSI+PC9pZnJhbWU+]]></data>
	</file>
	<file>
	  <filename>/templates/edituserprops.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9Cnskc3RhcnRmb3JtfQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Byb3BuYW1lfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcHJvcG5hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Byb3B2YWx1ZX08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3Byb3B2YWx1ZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVucGFyYW1zfXskc3VibWl0fTwvcD4KICA8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4Ke2lmIGlzc2V0KCRtZXNzYWdlKX08cD57JG1lc3NhZ2V9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/forgotpw_templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxwPnskcHJvbXB0X3RlbXBsYXRlMX08L3A+CnskaW5wdXRfdGVtcGxhdGUxfQo8YnIvPgo8cD57JHByb21wdF90ZW1wbGF0ZTJ9PC9wPgp7JGlucHV0X3RlbXBsYXRlMn0KPGJyLz4Ke2lmIGlzc2V0KCRwcm9tcHRfdGVtcGxhdGUzKX0KPHA+eyRwcm9tcHRfdGVtcGxhdGUzfTwvcD4KeyRpbnB1dF90ZW1wbGF0ZTN9Cjxici8+CnsvaWZ9Cnskc3VibWl0fXskZGVmYXVsdHN9CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/grouplist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CntpZiAkbnByb3BzID09IDAgJiYgMH0geyogV0lMTCBIQVZFIFRPIFVTRSBBIFBSRUZFUkVOQ0UgRk9SIFRISVMgKn0KICA8ZGl2IGNsYXNzPSJyZWQgY2VudGVyIj57JG1vZC0+TGFuZygnZXJyb3Jfbm9wcm9wZXJ0aWVzJyl9PC9kaXY+CntlbHNlfQogIHtpZiAhaXNzZXQoJGl0ZW1jb3VudCkgfHwgJGl0ZW1jb3VudCA9PSAwfQogICAgPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPjAmbmJzcDt7JGdyb3Vwc2ZvdW5kfTwvZGl2PgogIHsvaWZ9CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxkaXYgY2xhc3M9ImdyaWRfOCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwOyI+CiAgICAgIHsqaWYgJHByb3Bjb3VudCA+IDB9eyRhZGRncm91cGxpbmt8ZGVmYXVsdDonJ30mbmJzcDt7L2lmKn0KCQkJeyRhZGRncm91cGxpbmt8ZGVmYXVsdDonJ30KICAgICAge2lmIGlzc2V0KCRpdGVtY291bnQpICYmICRpdGVtY291bnQgPiAwICYmIGlzc2V0KCRleHBvcnRsaW5rKX17JGV4cG9ydGxpbmt9Jm5ic3A7ey9pZn0KICAgICAgeyRpbXBvcnRsaW5rfGRlZmF1bHQ6Jyd9CiAgICA8L2Rpdj4KICAgIHtpZiBpc3NldCgkaXRlbWNvdW50KSAmJiAkaXRlbWNvdW50ID4gMH0KICAgICAgPGRpdiBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPnskaXRlbWNvdW50fSZuYnNwO3skZ3JvdXBzZm91bmR9PC9kaXY+CiAgICB7L2lmfQogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRpdGVtcyl9CiAgICA8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGggd2lkdGg9IjUlIj57JGlkdGV4dH08L3RoPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRkZXNjdGV4dH08L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ21lbWJlcnMnKX08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkJPHRkPnskZW50cnktPmlkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZXNjfTwvdGQ+CgkgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPm51c2Vyc3xkZWZhdWx0OiRtb2QtPkxhbmcoJ25vdF9hdmFpbGFibGUnKX08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZXhwb3J0bGlua3xkZWZhdWx0OicnfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua3xkZWZhdWx0OicnfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfGRlZmF1bHQ6Jyd9PC90ZD4KCQk8L3RyPgogICAgey9mb3JlYWNofQoJPC90Ym9keT4KICA8L3RhYmxlPgogIHsvaWZ9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/group_xml.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgbWFtc19ncm91cCBbCiAgPCFFTEVNRU5UIG1hbXNfZ3JvdXAgKGdycF9uYW1lLGdycF9kZXNjcmlwdGlvbixwcm9wZXJ0eSopPgogIDwhRUxFTUVOVCBncnBfbmFtZSAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIGdycF9kZXNjcmlwdGlvbiAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIHByb3BlcnR5IChwcm9wX25hbWUscHJvcF9wcm9tcHQscHJvcF90eXBlLHByb3Bfb3B0aW9uPyxwcm9wX2xlbmd0aD8scHJvcF9tYXhsZW5ndGg/LHByb3Bfc29ydG9yZGVyLHByb3Bfc3RhdHVzLHByb3BfbG9zdHVuZmxhZyk+CiAgPCFFTEVNRU5UIHByb3BfbmFtZSAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIHByb3BfcHJvbXB0ICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF90eXBlICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF9vcHRpb24gKG9wX25hbWUsb3BfdGV4dCk+CiAgPCFFTEVNRU5UIHByb3BfbGVuZ3RoICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF9tYXhsZW5ndGggKCNQQ0RBVEEpPgogIDwhRUxFTUVOVCBwcm9wX3NvcnRvcmRlciAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIHByb3Bfc3RhdHVzICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF9sb3N0dW5mbGFnICgjUENEQVRBKT4KICA8IUVMRU1FTlQgb3BfbmFtZSAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIG9wX3RleHQgKCNQQ0RBVEEpPgpdPgo8bWFtc19ncm91cD4KICA8Z3JwX25hbWU+eyRncm91cF9uYW1lfTwvZ3JwX25hbWU+CiAgPGdycF9kZXNjcmlwdGlvbj57JGdyb3VwX2Rlc2NyaXB0aW9ufTwvZ3JwX2Rlc2NyaXB0aW9uPgp7Zm9yZWFjaCBmcm9tPSRwcm9wZXJ0aWVzIGl0ZW09J3Byb3AnfQogIDxwcm9wZXJ0eT4KICAgIDxwcm9wX25hbWU+eyRwcm9wLT5uYW1lfTwvcHJvcF9uYW1lPgogICAgPHByb3BfcHJvbXB0PjwhW0NEQVRBW3skcHJvcC0+cHJvbXB0fV1dPjwvcHJvcF9wcm9tcHQ+CiAgICA8cHJvcF90eXBlPnskcHJvcC0+dHlwZX08L3Byb3BfdHlwZT4KICAgIHtpZiBpc3NldCgkcHJvcC0+b3B0aW9ucyl9e2ZvcmVhY2ggZnJvbT0kcHJvcC0+b3B0aW9ucyBpdGVtPSdvcHRpb24nfQogICAgPHByb3Bfb3B0aW9uPgogICAgICA8b3BfbmFtZT48IVtDREFUQVt7JG9wdGlvbi0+bmFtZX1dXT48L29wX25hbWU+CiAgICAgIDxvcF90ZXh0PjwhW0NEQVRBW3skb3B0aW9uLT50ZXh0fV1dPjwvb3BfdGV4dD4KICAgIDwvcHJvcF9vcHRpb24+CiAgICB7L2ZvcmVhY2h9ey9pZn0KICAgIHtpZiBpc3NldCgkcHJvcC0+bGVuZ3RoKX0KICAgIDxwcm9wX2xlbmd0aD57JHByb3AtPmxlbmd0aH08L3Byb3BfbGVuZ3RoPgogICAgey9pZn0KICAgIHtpZiBpc3NldCgkcHJvcC0+bWF4bGVuZ3RoKX0KICAgIDxwcm9wX21heGxlbmd0aD57JHByb3AtPm1heGxlbmd0aH08L3Byb3BfbWF4bGVuZ3RoPgogICAgey9pZn0KICAgIDxwcm9wX3NvcnRvcmRlcj57JHByb3AtPnNvcnRvcmRlcn08L3Byb3Bfc29ydG9yZGVyPgogICAgPHByb3Bfc3RhdHVzPnskcHJvcC0+c3RhdHVzfTwvcHJvcF9zdGF0dXM+CiAgICA8cHJvcF9sb3N0dW5mbGFnPnskcHJvcC0+bG9zdHVuZmxhZ308L3Byb3BfbG9zdHVuZmxhZz4KICA8L3Byb3BlcnR5Pgp7L2ZvcmVhY2h9CjwvbWFtc19ncm91cD4=]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpfS9jc3MvbWFtcy5jc3MiIC8+DQo8c2NyaXB0IHNyYz0ieyRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKX0vanMvanMuY29va2llLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQ+DQpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogIHZhciBhY3RpdmVfdGFiID0gQ29va2llcy5nZXQoJ21hbXNfYWN0aXZlJyk7DQoNCiAgaWYodHlwZW9mIGFjdGl2ZV90YWIgPT09ICJ1bmRlZmluZWQiKQ0KICB7DQogICAgX3NldF9hY3RpdmVfdGFiKCdnZW5lcmFsJyk7DQogIH0NCiAgZWxzZQ0KICB7DQogICAgX3NldF9hY3RpdmVfdGFiKGFjdGl2ZV90YWIpOw0KICB9DQoNCiAgJCgnI3BhZ2VfdGFicyA+IGRpdicpDQogICAgLmVhY2goZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICQodGhpcykuY2xpY2soZnVuY3Rpb24oKQ0KICAgICAgew0KICAgICAgICBDb29raWVzLnNldCgnbWFtc19hY3RpdmUnLCB0aGlzLmlkKTsNCiAgICAgIH0pOw0KICAgIH0pOw0KfSk7DQoNCg0KZnVuY3Rpb24gX3NldF9hY3RpdmVfdGFiKHRhYl9uYW1lKQ0Kew0KICAkKCcjcGFnZV90YWJzID4gZGl2JykNCiAgICAuZWFjaChmdW5jdGlvbigpDQogICAgew0KICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7DQogICAgfSk7DQoNCiAgJCgnI3BhZ2VfY29udGVudCA+IGRpdicpDQogICAgLmVhY2goZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICQodGhpcykuaGlkZSgpOw0KICAgIH0pOw0KDQogICQoJyMnICsgdGFiX25hbWUpLmFkZENsYXNzKCdhY3RpdmUnKTsNCiAgJCgnIycgKyB0YWJfbmFtZSArICdfYycpLnNob3coKTsNCiAgQ29va2llcy5zZXQoJ21hbXNfYWN0aXZlJywgdGFiX25hbWUpOw0KDQp9DQo8L3NjcmlwdD4NCg0KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KDQo8ZGl2IGlkPSJwYWdlX3RhYnMiPg0KDQogIDxkaXYgIGlkPSJnZW5lcmFsIj4NCiAgICBHZW5lcmFsDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJ1c2luZyI+DQogICAgSG93IERvIEkgVXNlIEl0DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJwYXJhbWV0ZXJzIj4NCiAgICBQYXJhbWV0ZXJzDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzbWFydHkiPg0KICAgIFNtYXJ0eSBQbHVnaW5zDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJob29rcyI+DQogICAgSG9va3MNCiAgPC9kaXY+DQogIHtpZiAkaGF2ZV9mZXV9DQogICAgPGRpdiBpZD0ibWlncmF0ZV9mcm9tX2ZldSI+DQogICAgIE1pZ3JhdGluZyBGcm9tIEZFVQ0KICAgIDwvZGl2Pg0KICB7L2lmfQ0KICA8ZGl2IGlkPSJhYm91dCI+DQogICAgQWJvdXQNCiAgPC9kaXY+DQoNCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pg0KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4NCg0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfZ2VuZXJhbF90YWIudHBsJ30NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InVzaW5nX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfdXNpbmdfdGFiLnRwbCd9DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJwYXJhbWV0ZXJzX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfcGFyYW1ldGVyc190YWIudHBsJ30NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InNtYXJ0eV9jIj4NCiAgICB7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6TUFNUztoZWxwX3NtYXJ0eV90YWIudHBsJ30NCiAgPC9kaXY+DQogIDxkaXYgaWQ9Imhvb2tzX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfaG9va3NfdGFiLnRwbCd9DQogIDwvZGl2Pg0KICB7aWYgJGhhdmVfZmV1fQ0KICAgIDxkaXYgaWQ9Im1pZ3JhdGVfZnJvbV9mZXVfYyI+DQogICAgICB7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6TUFNUztoZWxwX2ZldV90YWIudHBsJ30NCiAgICA8L2Rpdj4NCiAgey9pZn0NCiAgPGRpdiBpZD0iYWJvdXRfYyI+DQogICAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOk1BTVM7aGVscF9hYm91dF90YWIudHBsJ30NCiAgPC9kaXY+DQoNCiAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4NCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/help_about_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkFib3V0IHRoaXMgbW9kdWxlPC9oMz4NCg0KICA8cD5UaGlzIG1vZHVsZSBpcyBhIGZvcmsgb2YgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGRldmVsb3BlZCBieSA8c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAmbHQ7Y2FsZ3V5MTAwMCZndDs8L3N0cm9uZz4uPGJyIC8+DQogICAgICBUaGlzIGlzIGEgMXN0IGdlbmVyYXRpb24gZm9yayBvZiB0aGUgbW9kdWxlLiBDb25zaWRlciB0aGlzIGFzIGFub3RoZXIgZmxhdm91ciBvZiB0aGUgb3JpZ2luYWwgbW9kdWxlLjxiciAvPg0KDQogIElmIHlvdSBmaW5kIGFueSBidWdzIHBsZWFzZSBmZWVsIGZyZWUgdG8gc3VibWl0IGEgYnVnIHJlcG9ydCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0NjUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiBvciBmb3IgYW55IGdvb2QgaWRlYXMgY29uc2lkZXIgc3VibWl0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQ2NSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvcD4NCiAgPHA+UGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IGRldmVsb3BlcnMgZG8gaGF2ZSB0aGVpciBkYWlseSBqb2JzIHdoaWNoIG1lYW5zIHRoYXQgZmVhdHVyZSByZXF1ZXN0cyBhcmUgY29uc2lkZXJlZCBhbmQgZG9uZSBhcyB0aW1lIGFsbG93cy4gSWYgeW91IG5lZWQgYSBmZWF0dXJlIHJlYWxseSBiYWRseSBjb25zaWRlciBjb250YWN0aW5nIG9uZSBvZiB0aGUgZGV2ZWxvcGVycyBmb3IgYSBzcG9uc29yZWQgZGV2ZWxvcG1lbnQuDQogIDwvcD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhlIG1vZHVsZSBhdXRob3IgLyBtYWludGFpbmVycyBvciBwcm9qZWN0IG1hbmFnZXJzIGFyZSBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tYW1zIj5oZXJlPC9hPi4gUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGV2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+DQo8L3VsPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCntpZiAkc21hcnR5Lm5vd3xkYXRlX2Zvcm1hdDoiJVkiID09ICcyMDIwJ317JGNyID0gJzIwMjAnfXtlbHNlfXskY3IgPSAiMjAyMCAtIHskc21hcnR5Lm5vd3xkYXRlX2Zvcm1hdDonJVknfSJ9ey9pZn0NCjxwPkNvcHlyaWdodCAmY29weTsgeyRjcn0sIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDxhIGhyZWY9Im1haWx0bzppbmZvQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7aW5mb0BjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgtMjAxOSwgUm9iZXJ0IENhbXBiZWxsICZsdDtjYWxndXkxMDAwJmd0Oy4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPGhyPg0KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGZyZWUgc29mdHdhcmU7PGJyIC8+IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFzIHB1Ymxpc2hlZCBieSB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cm9uZz47PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPg0KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCA8c3Ryb25nPldJVEhPVVQgQU5ZIFdBUlJBTlRZPC9zdHJvbmc+OzxiciAvPiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgPHN0cm9uZz5NRVJDSEFOVEFCSUxJVFk8L3N0cm9uZz4gb3IgPHN0cm9uZz5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRTwvc3Ryb25nPi48L3A+DQo8cD5TZWUgdGhlR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48L3A+DQogPHA+WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgPHN0cm9uZz5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTwvc3Ryb25nPiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPC9zdHJvbmc+IG9yIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPnJlYWQgaXQgb25saW5lPC9hPi48L3A+DQo8cD48c3Ryb25nPllvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+Ljwvc3Ryb25nPjwvcD4NCjxocj4NCjxoND5DdXJyZW50IE1haW50YWluZXJzPC9oND4NCjx1bD4NCiAgPGxpIGNsYXNzPSJwX2JvdHRvbV8xNSI+PHN0cm9uZz5GZXJuYW5kbyBNb3JnYWRvIChKbyBNb3JnKTwvc3Ryb25nPjwvbGk+DQo8L3VsPg0KDQo8aDQ+UGFzdCBNYWludGFpbmVyczwvaDQ+DQo8dWw+DQogIDxsaT48c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCk8L3N0cm9uZz4gPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4NCjwvdWw+DQoNCjxoND5Lbm93biBDb250cmlidXRvcnM8L2g0Pg0KPHVsPg0KICA8bGk+PHN0cm9uZz5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApPC9zdHJvbmc+PGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4NCjwvdWw+DQoNCnsqDQpUT0RPOiBuZWVkIGFuIHVwZGF0ZWQgbGlzdCBvZiBzcG9uc29ycyA6fCAoSk0pDQo8aDQ+S25vd24gU3BvbnNvcnM8L2g0Pg0KPHVsPg0KICA8bGk+PHN0cm9uZz5NYXR0IEhvcm5zYnkgKERJR0kzKTwvc3Ryb25nPjxiciAvPnd3dy5tYXR0aG9ybnNieS5jYTwvbGk+DQogIDxsaT48c3Ryb25nPkdyZWdvcnkgUHJvc3NlciAoZ2VlcGVycyk8L3N0cm9uZz48YnIgLz53d3cuc3RpY2t5d2lja2V0ZGVzaWducy5jb208L2xpPg0KPC91bD4NCip9]]></data>
	</file>
	<file>
	  <filename>/templates/help_feu_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPk1pZ3JhdGluZyBGcm9tIEZyb250IEVuZCBVc2VzIE1vZHVsZTwvaDM+DQoNCg0KPHA+SWYgeW91IGFyZSBzZWVpbmcgdGhpcyB0YWIgaXMgYmVjYXVzZSB5b3UgaGF2ZSB0aGUgPGI+TW9kdWxlIEZyb250IEVuZCBVc2VycyAoRkVVKTwvYj4gaW5zdGFsbGVkIGluIHdoaWNoIGNhc2UgeW91J2xsIGJlIGFibGUgdG8gaW1wb3J0IHNldHRpbmdzLCBhbmQgdXNlcnMnIGRhdGEgZnJvbSA8Yj5GRVU8L2I+LjwvcD4NCjxkaXYgY2xhc3M9Indhcm5pbmciPg0KICA8cD48Yj5Ob3RlOjwvYj4gdGhlIG1pZ3JhdGlvbiBmcm9tIDxiPkZFVTwvYj4gaGFzIG9ubHkgYmVlbiB0ZXN0ZWQgd2l0aCA8Yj5GRVU8L2I+IGJyYW5jaCA8Yj4yLng8L2I+LCBzcGVjaWZpY2FsbHkgPGI+Mi4xNC4zLjQ8L2I+LiBUaGVyZSBpcyBubyB3YXJyYW50eSB0aGF0IGl0IHdpbGwgd29yayB3aXRoIGFueSBvdGhlciB2ZXJzaW9uIG9mIDxiPkZFVTwvYj4uPC9wPg0KPC9kaXY+DQo8cD5UaGlzIHNob3VsZCBiZSBhIG9uZSB0aW1lIG9wZXJhdGlvbiByaWdodCBhZnRlciA8Yj5NQU1TPC9iPiBpbnN0YWxsYXRpb24hIERvaW5nIHRoaXMgd2lsbCBkZWxldGUgYWxsIGRhdGEgZnJvbSBNQU1TLiBUaGVyZSBpcyBhIHJvbGxiYWNrIGZlYXR1cmUgdGhhdCB0cmllcyB0byBnbyBiYWNrIHRvIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IGluIDxiPk1BTVM8L2I+IGluIGNhc2Ugc29tZXRoaW5nIGZhaWxzLCBidXQgdGhlcmUgaXMgbm8gd2F5IHRvIGVuc3VyZSB0aGUgc3VjY2VzcyBvZiB0aGUgb3BlcmF0aW9uLjwvcD4NCjxwPg0KICA8Yj5NQU1TPC9iPiB3aWxsIGltcG9ydCBhbGwgdXNlcnMgdGFibGVzLCBpbmNsdWRpbmcgZ3JvdXBzIGFuZCBwcm9wZXJ0aWVzLiBBZGRpdGlvbmFsbHkgYWxsIG1vZHVsZSBzZXR0aW5ncyBmcm9tIDxiPkZFVTwvYj4gIHdpbGwgYmUgaW1wb3J0ZWQgdG8gPGI+TUFNUzwvYj4uDQo8L3A+DQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gPGI+TUFNUzwvYj4gbWlncmF0aW9uIDxiPndvbid0IGRlbGV0ZSBub3IgbW9kaWZ5PC9iPiBhbnkgZGF0YSBmcm9tIDxiPkZFVTwvYj4uPC9wPg0KPC9kaXY+DQoNCjxwPg0KICBBZnRlciBhIHN1Y2Nlc3NmdWwgZGF0YSBpbXBvcnQgZnJvbSA8Yj5GRVU8L2I+LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgZmV3IHN0ZXBzIG5lZWRlZCB0byB0YWtlIHRvIGNvbXBsZXRlIHRoZSBtaWdyYXRpb246DQo8L3A+DQo8dWw+DQogIDxsaT4NCiAgICA8Yj50ZW1wbGF0ZXM8L2I+IHdvbid0IGJlIGNvcGllZCBmb3IgeW91LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZW0geW91cnNlbGY7DQogIDwvbGk+DQogIDxsaT4NCiAgICBhZnRlciBjb3B5aW5nIHRoZSA8Yj50ZW1wbGF0ZXM8L2I+IHlvdSdsbCBoYXZlIHRvIGFkanVzdCB0aGVtIHRvIGJlIHVzZWQgd2l0aCA8Yj5NQU1TPC9iPjoNCiAgICA8dWw+DQogICAgICA8bGk+eW91J2xsIGhhdmUgdG8gc2VhcmNoIGFuZCByZXBsYWNlIG9jY3VycmVuY2VzIG9mIDxiPkZFVTwvYj4sIDxiPmZldTwvYj4sIDxiPmNnZTwvYj4sIDxiPkZyb250RW5kVXNlcnM8L2I+IGFuZCA8Yj5mcm9udGVuZHVzZXJzPC9iPiB3aXRoIHRoZXJlIGNvdW50ZXJwYXJ0cyAobG9vayBhdCA8Yj5NQU1TPC9iPiBkZWZhdWx0IHRlbXBsYXRlcyBmb3IgcmVmZXJlbmNlKTs8L2xpPg0KICAgICAgPGxpPjxiPmNnZTwvYj4gYW5kIG90aGVyIDxiPkNHRXh0ZW5zaW9uczwvYj4gdGFncyBvciA8Yj5TbWFydHk8L2I+IHBsdWdpbnMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IHRoZWlyIDxiPkNNU01TRXh0PC9iPiBjb3VudGVycGFydHM6IGFzIGFuIGV4YW1wbGUgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgPGI+JiMxMjM7Y2dlX2NzcmZ9PC9iPiB3aXRoIDxiPiYjMTIzO3h0X2NzcmZ9PC9iPjs8L2xpPg0KICAgIDwvdWw+DQogIDwvbGk+DQogICAgPGxpPg0KICAgIDxiPmltYWdlIGFuZCBvdGhlciBmaWxlczwvYj4gd2lsbCBiZSBrZXB0IGluIHRoZSBmb2xkZXJzIHNldCBpbiA8Yj5GRVU8L2I+LCBzZXR0aW5ncyB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCB0byA8Yj5NQU1TPC9iPiBieSB0aGUgaW1wb3J0IHRvb2w7DQogIDwvbGk+DQo8L3VsPg0KDQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gb3RoZXIgdGhhbiB0aGUgY2FzZSBvZiBhIG1pZ3JhdGlvbiwgYm90aCBtb2R1bGVzIHNob3VsZCBiZSBhYmxlIHRvIGNvZXhpc3Qgc2lkZSBieSBzaWRlIHdpdGhvdXQgaXNzdWVzIGFzIGxvbmcgYXMgdGhleSBkb24ndCBzaGFyZSBmaWxlcycgZm9sZGVycy48L3A+DQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/help_general_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFXUUFBQURJQ0FZQUFBRGZzcHNCQUFBZ0FFbEVRVlI0bk8yZGVaUmtWWlh1VDFVeFZZa0NRbElhRlNTUkVUZk8vcjY5THdXdEtNNkNyWWcweUFLN3RWVlFGSlh1dGxWUVcrWHBVMFJYdDRvS3ZNYmgyYlF6WWo5dDdWYlJwL2pzcHozWU9HQTdJU2hEd1dPcWVaNm45MGRFU2xGVVptVkUzQnYzM3NqOVcrdGJyRW95NDU2Nzk3bGYzanpEUGlFNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVQMHk1d2tTUTZ1MSt2emkyN0lOTXdwdWdIT1FNeXIxK3Z6RzQzR0lVVTNaQ2JVNi9YNXJ2NlVKTW5CUmVldmFzd0JjTEtSMXhqbEhsTnVVK1Y2STlZb3NVdFY3ekx5R2pLK0tCUmdoTUNpSTBtNVNGWC8yUlQzR3JIRGxOdU4yS0dxZDVIOHJJaWNGa0k0YU5odGMyYk1nU3J5UXBMWG1HS3BFWnRNdVZhSmRVcnNNdVhOcEh4a1ltSmlZZEVORFNFRUVUbVJJbjlueWdlVTJHWEVHbE91ZGZVdVZhNVhZcGVTdnlYdzRSampFNHZPYjJreGtWTk11ZDJNOTVoeTkzUktqY3RNdVkza3E0YlV2QU5VOVZvamxwbHk0L1R0MDlWS3JEUHltaUcxemRrUFkyTmpoNUk4T3pYN3Y2bHhreWxYN2ErUG1YS3RtYTVTYlo5VVJKdUI5aG1xV0s2cUsyZlFWbGNmVXVYOVNpNFJrY1ZGNUxpMHFITHJEQitTdmJVaE5iMTk4ZUxGajhpcmJRRE82YmF2dDJRVFcwMjUyY2lMODJxYk16VXh4cU1NT0YrVlArdStWZTduRittVVdxM0FwMElJQnd5ajNVbVNqSm5welVxc0s5cXdab3M2TDFENDlERHlXM2JtbW5KM2FqcG9VRGVReWVQR3g4ZVB5S3BoSXJMWWlGdU4zRFJZMi9SMm9QM21yTnJsVEUycjFUckd5SXROOVhaVnJsUmlTMVlQYldyY0ZFS1ltMmY3VmVTRnFlblNvZzFxOWdyM0prbWllZWE0dEN3bTA5UjBRNVlCemRLUWpieXlPMGFjUmR0V2tmTFJyTnJtUElpSUNDbnY3UXhqWVhscXpDcG4rOUpxQUkvUDZWWU84cmZpNHBXYWJnaXpjYUplZ1h1ekRxWVNLMktNaXdadG0wRytuSnB1ejdSdHlwV2tYSkJGN0dZN1pQSTRJejlxeW8xR0xDTmsxN0FlV0ZXdUhCc2JPelRyZThyeWJkNDF1TExPYjZraCtkbmNna25jbVNUSldQOXRrNDhxc0R5UHRxWEdaVW1TMUxPTTVTeGhuc2I0ZEpKZlRGVjNFMWhSMUlQYUhWNjdPY3ViVStYNm9nM0k5YkFjYjhzeXg2V2wzVzZma09lZlpxcmNDc1IzOWRNMmN1SllKWmZrbW5ES0hWbkhkQlNwMSt2enlYaTZHYjdkZlh0Y1hmU0QrcUN3SE1CTHNyaFBWVG1ydS9LakJQZmwya09yUlZxblpKSGpVbU9xZCtjZFRDV1h0RnF0WTNwdG15cmVuZUc0OFJSdHczMXBpalB5aUczVmFUUWFod040c1NwdlZHSmRtZDhjVTlQYnM3am5mbGJ3dUlhbTdXR1V4NU8xM1Q0cE5YMGc5MEFTbTRCNFNTOXRHeHNiTzlRMG42R0t2WldTLzVCWGpLc0dlZXhqR2VOZm1PcHZUTGxLaWMwbGVCRDNLeVdYQUhqQllQY2V6N2IrbG51NmhpTGNDK0RrakxwNitTRGx5cUVGczhjM0dCRTV6WFFJdnl3NldsMnIxUmJrRmVleWt5UkppNVIzbU9KZUpWWW9zYTM0aDY4UFVkNDZTQnlNK0hUaDkrRGFUNDVIZUlPWEtuODNyRUFxc2E2WHZldUFYRDdFdHEySU1TTFBXSmNOQU1jWjVZck9KZzBzTitYT3doKzJBVVh5VjRQRXhKVFYvRVUwcTRSN3Mzb0dTc2N3QTVtYVBrQk9IRHZUdGluNWcyRzFUWWt0Zy82NVd3SG1rTW1UelBDWjFIUzdRb1l5SERSczlSdWNScU54aUpWNGpOejFlMjBMb3ppTzNHZzBEaG5td3ZmVXVLemRibk9tN1ZQeVY4Tk1OSWtQNXhudmdqZ29KWjlqaHErYmNydU4rUGlvS3RmM1cwR3MwV2c4cGx1VHBmRDdjT1dUNDFKVHE5VVdXS2ZxMG5BQ0NWa080TGladHMrSVc0ZVphQTQ0L2xnV1JPU1JRUHNGU3Y0Z05kMm9sS0hsdUdncHNhN2ZzcDB4eGtXbThHM1NaUmV4WmlUbmUwcHZ5S3IvTnNRazcxRFZDL09NZDU0a1NUSkdrUXRTd3k5TXVUbzE3YmR3VCtYVmJ3ekh4c1lPN1JZOUt2d2VYRk5MaVYxWlBqdWxvZXlHcktxZkhHS1NWd0E0TmM5NFowMnoyUnhYNE0xS0xsRmloYStmNVc1VERMUVd1VnQvdVFUMzRacEtxbnBYVnM5UXFTaTdJUjlIUG1OWWIzcEszRmVGTGRReFJpamlYeXV4UWlITDg5NDBVeldSdUhxUStBNXpJdG5WcDBaMTJWdlpEWGxpWW1LaEtZZXlEbG1KZFhuR2VoQkU1RVFGL3FjcE42dGkrVEFMOTFSSnFsd3BJaWNPRXVzVU9LZDdZa25oOStONnVGTGpzdTdwUktOSDJRMDVoQkJJM3BCNzI0aE5aRHc3cnpqM3dUd2dlYWFxZnNtMFl6UkZQd2dWMGFvc3p1SHpZWXRTYXpTWHZJVlFEVVB1dmlYbjNFWmRWZlNocmJWYWJRR0FNNVg4cm5WT05mSEpwVjc2Rm1XdHFyNCtpMXdBN1RkWGRxZmlDQ3MxM1dqQXE3UEljU21wZ2lHSEVBSXA3OC90cllWWVJzcGI4b2p2L2hnZkh6OUNWYzQxdzArMGs0ZE1Ed2VZVGNxcXNOQWtYcGkrZkVxTm8xMlZzU3FHSEVJSXByd3Rod1R2TU5WVldjZDFPa1NrcHNEcmxQeHQ5MGlqU2hUdUtibTJoUkRtWlprbnNwVjJEOUF0K3Q1Y0hXM0k4NXpPVWxBbFEyYXoyYmFNNnd5a3hudXlqdW0rYUxWYWlRTHZVdVg5M1pvUi91ZHdSaUp4cDRxY20wZmVGTGlrazdQaTczTzJLOGRqdXNwRGxReTV5N3lNbHNGdFUrVS9aUmJJZmRCc05nOGpjWFVudmxpdVJPVUw5NVJOcXJ6THpFN0lNNDlrL0FzLzVMVEFIQk1yek96UjlYcjkwWG5tdVJSVTBKQkRDT0dnN3FxRHZveFpsU3RUNDQ4ekNlQVVBSGliRWl1eVBnUFExUkVoVzB5NU9jYjRoRHp6T0luRitNVHVDU21lenlGSmxWdU5ja2NXNTNGV2hvb2Fja2lTNUdBQUY1cmlYcHVoTVhkTi9HWUFUODRpZGxOd29LbmU3dXRZYzlOR0piWW84S21ROFpqeERKaEg0QXRtZXJmNWtGTitJallwdVlTVXl5WW1KaFlPT2NmRlVsVkRuaVRHZUpTUkY1dnBiV1pjbzhyN3RUTkd1Nm83VExEQ2xKdFQ4bk5wbXUrMmFKTEgyaXl1SDVIbkEycW1xMHg1c3lyK05nemZpQjhDZ0FZWlg2YktHMDI1dHR2Zkh1ak1EYmg2VmFlNm5qNWd5clZtdkVNVi82M1piSTRYbWVQQ3FMb2g3MG05WHA4ZlkwU004V2tBVGhhUkU0ZjVHOVpLZGVCbnRhWEVPaVhXa2ZnaEdmKzAwV2djUHF3ODlrS2owVGhFUkdveHh1TkZaTEdyTjhVWWo5Y2tNUUNOTERiMFZKNVJNdVFpNlN5Zks5N0lxcXpVZExVcXQ2ckt0elRHNS9rRDZzdzYzSkFIUjRFMytaaHhuLzJoYzNiZkxqTmNGMk44V2doaGJ0SDVkSnpDY0VNZUhQTUpubDRNZUdkM0hmWUdJNi9XSlBtRG92UG5PS1hCRFhrd1NQNlZHL0wwNml6OXczSXpYYXFLZHdQTldIVGVIS2VVdUNFUGhvM0FLYzI1NUpuWTNGMkhmVHNwRjFXaHpyVGpGSTRiY3Y4a1NUTG1aVEgzeUsxeXZSblhLSGtUZ0pjRGk0NHNPa2VPVXluY2tQc0h3TW5EakYwcDFTa1J1dEZVdjZjcVp5MWN1SEMwaTc4NFRwNjRJZmNQRUY4OUcwL3VZR2V6emM2VStJcUluQkpDT0xEb1hEak9TT0NHM0Q5R3ZxTm9jeHlLQVVOMm1XSjVwN1lBcnhsVy9RakhtWFc0SWZkUGQ0VkY0WWFaaTRnZDNWckFxMGg1ZjVJa1duUzhIV2ZrR1JWREZwRVRHZU41S2ZuM0tmbDlBMzVpaG44aGNIV2E0cHhXcTNWMDF0Y2s0OW5XWjhXNU1rcVZXeFZZcnNxN0RIZ2JnRWJXTVJzbEFEeEZnWGVuNUZlTi9MR1NON2w2RTRtZm11SGZWZlZhQlM2TU1TS0VjRkRSdVMyTXFoc3lZM3lSS2RlcThpNGx0azVoTk90TnNUUTEzSkttT0NlcmE4Y1kwU21NVXJ5WjlxdlV1TWxVVnhQNEpZRFh6THJxV2oxU3I5Zm5LL0FoVSs3MDAwU3lsUks3T2lmb2NLMlJIdzRGRjVFcWhLb2FjcXpWamxKeWlmVjRCaDJCKzVUOExwazhMb3Y0cGFaVlBBTnZyU3JYRytUZlZlU0ZTWkk4S290WWpEcUsrQ1pWcnZlREJvYWk3YXJjQ2lSbkZwMzNvVkkxUTA2UzVPRHVLUndER2FFcWZ4MWpQTDdaYkI0MlNQek04TzBTZE40WlNGZVpjbHRLWG05bXowMlM1T0JCN25zMjBXZzBEamZ5am94T3FuSDFvTTdhZG53bXpKWmhqS29ac2dIblc0WmxMazg2NmFTQjNnNDd3eGI2UU5FZGQ5L0NjbFB1VENtZkEvQ1U0SVY3K2tMSlgrVjI0cmxySnRwTzh2dEY5NE9oVUNWREpubE5EanZqVnJWYXJXTUdpYUZCdmx5RzljaEs3RFJ5bWFxdVR5Rlh4UmlQSCtTK25CQlV1VDQxTGRxUVpyMVMwKzJwNmRLaSswUHVWTVdRRzQzRzRhYmNuRXU3eURzR3JiVlE0TGppdHU0YTRmc05lR2VyMVVvR3VRL25RVWg1aS9rWmVxV1JFcHRWNVlWRjk0dGNxWW9oMjRCanh2dEo5RTRqUHp0SUhKTWswZTRRd1pBNkpsY3ErVnNBcnhPUjJpQnRkeDVPcTlVNnVyTTZwM2dqY3UwcExCL3AvbDRGUXlibEEzay9IS3E4ZjlDM1N4VjVZWTd0VzIrZE04ZCtyQ0xuem9vajBRdEV5WnVLTngvWEZNL0NYVVgzajl5b2dpRVBZMElsTmQxdGhxOFBHczk2dlQ3ZmpHdXlhUlBYbUhJenlSc0FuRkdyMVJZTTJqNW4vd0E0emhSTGl6WWUxNVM2dTd1QlpQUW91eUVEZUx3Uzl3MmpiYW5weGl4aU9qWTJkaWpKTDNZcm9mVVdIMkpGcXJwYlZiOEU0T1F3R3hmSEZ3eUJMNVRBZEZ4VFA2ZmJSZHB2TDdxZjVFTFpEWG5JRXl1cnlHTWZtMVZzMiszMkNhbDExcThxc1dYZm5ZczdyTE9NYjdPcWZGeEVUc3pxK2s1L2REY2NGVzQ4cm1rRS9LTG9mcElMWlRma2xMeCtXRzFMVFRlS3lMT3lqbkc5WHArdk1mNmhxbHliRWo4MDVjMUcrYmtaL2hIQVgyYjVTOEFabUxtcTNPY1dmRmVwdExQb2pwSUw1VGRrL0hLWWlRYnd1anpqN1pRYllOR1JCRmFVd0hCYzAwaFYxNC9rYnRPeUd6S0pXNGVhYk9CdGVjYmJLVGN4eGtWVkx4ZzFTN1IySkNlNXkyN0ladnFqb1NZYWVFMmU4WGJLVFl6eHFHR3RKM2NOcE0xaEZDZTh5MjdJQkQ0OXhDU3ZCWEJxbnZGMnBtVU9nQWFBZDZycXY2YUdXOHowdHRUd0gwYjVDSURuRHVHdGFKNFMrZXdJZFdVbVZhN011UjhVUTlrTkdjQkxwbHFoa0xWUzR6SS9ybjY0TkJxTlF3QThsOFEzVExsZGlYWFQ1R2lqRXV1TXVITXhtVW41MUgyUm10NWV0T0c0cGhlQnIrU1YvMElwdXlHM1dxMWpoamltdHlIUFdEc2Q2dlg2bzFYa3BhcThVWWwxZmUzQ0pKWVorZG14c2JGRHMyNmZrZS9wTGtjczNIaGNENWNTVzJLTXo4NDY3NldnN0lZY1FnaXF2RC92ZHFYR0hhUjhJSzg0ejNaYXJkWXhwRnlreXQ5MTZuQU1QaXhBeUs3dW42NlpqaVcyV3Exa1dKdVJYUDBweTN5WGlpb1ljb3p4MmYzc2V1dEp4bnQ4dUNKYmtpUlJJOStueEFwVExNL3pyVFByRFRXbThwdWlUY2YxY0NteFUxWC9WNWE1TGhWVk1PUVFRbERsalRtMmE2TUJYOHNqdnJPTXVVRHlaQktmN215dXdQSWgxb2xlZmNJSkp4eWUxWTJJeUNrMjdDV1hydjFLaVYxWjViaVVWTVdRUldTeFVlN0lLY25yOG9qdGJLQzdDL0Y1U243VGxOdTZSMFVWOU1BaTB3TG1wRnhtUkw1L21ibG1MbUlaeVZkbG1lUFNVUlZERGlFRU16c2hqelpsSGROUkIxaDBwSXFjYTZvL1VtTGRmbFpHREUycTNFcktaVm5lcTZwKzNyZFNsME9xY2xhV3VTMGxWVEprWU5HUnJWWXJ5V3JWUldxNlZJNDY2cEVoaEFNeUR1dkkwV3cyeHcxNFkycDZPNEVWWlYycnE4U0tScU9SMmRCRkNDRVkrVVUzNWVKRXlEb0RYaU1pa21WZVMwbVZESGtTMWZaSnFXbmZreTZxM0pxYXJnWVdIWmxWSEVjUnNwV1M4bjVWcmpSaVdSV1dnblhma2pOZkxTTWlyekJsU1ErekhXWHA3NEQybTdQT1oybXBvaUdIRUlJbXlSOTBLc0hwM1RPK05yR3I4OER5NHBFc1RESTRjd0U4eFF5ZlNVMjNHMUhKbWc2cS9IVWV3U0g1SEZQZVJwUmppR2EwaGFXbXZEdFZQVGVQWEphV3FocnlKR1Q3T1NuNWZWT3VUVTJYN3VOUHl3M2Q1SzVWeFNWaEZQZS9EMEM5WHA5UHh0TlY1VnVkMkJVNUtaZVpWaVZKOHFpOFlpWWlweGx4cDZuK1AxT3VIc2FKTmlNdllvZENscWVtRDVqcTNTVC9QSy84bFpxcUcvSWtqVWJqRUJFNTBRem5LL0J1bzN5QUltOFhrVDhXa1ltc3IxZGxZb3hIQVhpNUdYN1M5MDY1TW90WUppS0w4NDRqT1hHc3h2aDBBSzlSNEc4QXVkelZ1OHo0WGpLK2xqRStPMG1Tc2J6elZtcEd4WkNkNlFIUVVPRE5SdHpaM1NrM2xQb2dCUm55R3NaNGV0RXhkNXllY1VNZVhRQWNCOGpscWVscVV5dzNvdlNUY3BuME1lVjZBR2NXSFgvSDZSazM1SkZpbm9nOE5hVjhMalh1VU1pc3JPdWJHdGNBZUVyUnlYQ2NubkZEcmphMVdtMEJnRE1JZktjN0RERUtrM0tEOVRIbFNoR3BGWjBieCtrWk4rVHFrU1RKbUFIbkszbVRLZGVPM0tUY2dFcU5tNEp2OW5HcWlCdHlOUURRSVBsV0paY29zV0trSitVRzdXT3EvMXgwdmh5bkw5eVF5MHVub0JLdk1PWHFUa0gyMlRFcE40aFMwMVVHdktUbzNEbE9YN2dobDRwNUd1UFRWZlZhVSs3MHd6YjdFTEdqNkNRNlR0KzRJUmZMd29VTEh3SGdUSkkzS0xHbHMwU3RCTVpXUVNteElnWE9LRHFuanRNM2JzakRwOVZxSGEwcXIxRGx6OHk0eHBRYmlqYXp5b3ZZWWNDM2k4NnQ0d3pFS0JteWlOUlU1RThZNDJzVnVJVGtud040YnF2Vk9pYVA2L1ZDakxHcHdDV3F2RXNoeTMxU0x1TitwZHhhUUZybmRUYmY0RlF5bnVmcVR3cThXMFJPaVRHaWdCeVdpNm9iY3F2VlNraGViOHFOMWxtRCs1QzN6ZFM0SmpWZGFzb05xcmg4bU9aY3I5Y2ZuYWI4bUJMclVxTlB5dVhSbjRpZEtmSExack41MkxEeUN1QTRnM3hOaVMxSzNFZGdYYmVvMVU1WFg5cXVsTFZLM0tmSzlVcCtjOWFhYzFVTnVkVnFIVVBnQzlaYmpkcHRwcnc3cGJ3aDcvS2Jabmlua2N1NjF5emN1RVpVRzFUMWszbm1jVStTSktrcmVaTXFWNWJnM2tkYnhMS1UrRVlJWWM2dzhsc0txbWpJQUJwS0x1bjdBRTFpMHg3SHgyZWE4RWFqY1lncTd6SmlVK0dkZWtTVkdqZVpjalBKWjJTWnUra3d4SGQyVHM4dS92NW5sWWdkWkx4NFdIa3VuQ29aY296eHFQSHg4U05NbWRsS2hFc3Z2WFJ1VnJGTTA3UlZsdlBsUmsxS2JPblU1dEJWRkxrZ3E1ek5CS1A4UE1zKzUrcFpEd0I0d1RCelhoalZNdVRtMHpKdmsrbmQ1TEdQelNLV3ZtNDQ0NzZpWEo4YTE1anBmNm5LSzF1dDF0Rlo1S2tYU0xuQWxLVThQM0NXNlFGVitmeXc4ejkwcW1MSU1jYW5xZkxYdWJUTDlOOEdqYU9mR3BHWlZwbHlzNUxmVlpXenhzYkdEaDAwTi8xQ2tjdk16OUVya3piRUdCY1YxUitHUWxVTVdaVTM1dFltWW91cXZLTGZHRkxrRFQ1bVBJaXdYSWxkWnJpT2JEOGpsT0NZcmJHeHNVUFR6aHJ4RXNUSHRZZTJoMUdlNkt1Q0laTjhXV3JNKzhETnphR1BDbUgxZXYzUlEyamJhSW5ZWWNabHFYR05rVmNNNDdpbFhpRnhkZUZ4Y3UxTDJ3ejRXdEg5SXplcVlNaW11RGZ2ZG5WT1dlWjdlbzBmR2M4ejVmWVNkTlJTcTd0bWQ0V3EzbVhBMjhwOHpxR0kxRXpWaHlwS3F0UjA2Zmo0K0JGRjk1TmNLTHNoa3hQSHF2TCtZYld2MS9qNWpydHB0Y0dNYTFUNU0xVjVSVlVPc0ZTUmw1ci9raTJ0bEZoSDhyeWkrMGt1bE42UVkzeVpFa09aNVZibHlsNU1JMG1TTWZyYTFJY29OVjJ0eEJhU053QTRjK0hDaFkvb3IyY1doNUwvV1hRY1hkTkxsZDh0dXAva1F0a051VnVLY2xpSlh0dWRWSm9SQUU3MWlaOU9UbzNZb1NxZmp6RStMWlJnVW00UWlvNm5hd1o5VHJtKzZINlNDMlUzNUpUNDZiRGFSc2d1QTg2ZmFkdkkrTnErZHd0V1djUU9JNWFaY2pXSkQ0OVM5Yjd4OGZFamZHdDArVFd5eDNTVjNaQkozRHJVWkFOdm0ybmJqSHhIMFIxemFIbWJuSlFqbDVCOEs0QkdYeDJ1NU1RWUY1bGlhZEh4ZHUxWGEydTEyb0tpKzB2bWxOMlFoL21HYk1yZEt2TDZtYmFONUYrVm9HUG1Gd3ZsZWxXdUpmRlRBQyt2eXFUY0lFeE1UQ3owWll5VjBNWVF3b0ZGOTVmTUtic2hHM0RkRUpPOG9aYzk4MEQ3SE91VS9TeTZjMmFwVmFyY2FvWnZrKzAvR3NtM2tHbW8xK3Z6ZFlqUGc2dFBFWnVLN2l1NVVIWkRCdUtyaDFWSFdKWDNhNUxZVE51V0pJbDJheTBYMzBFSHpFbHEzSkZTUGljaVR3MGhaRlp3cVlxWUZ4SXF2VlQxeHFMN1NTNlUzWkNUSkdrTnEreWhFbHRDajJaa1ZTdzhRK3d3eGZMVWRCVWdsNC9TcEZ3V0RIbGxqNnQzN1J6WmtweGxOK1FRd3J5aDFZbXczcmRrbXVuM1N0QkI5eDkzWW9zcVY2YkdPd0M4aVp3NHR0ZDduUzBBeVROOVlxKzhVbkpKalBHSlJmZVRYS2lBSVFkUzNtNDVqOVVxdVFUQVUzcU5IOWxLbGJpdjZFNjY3M3ZDT2lYWG11RW5KRjhHTERxeTEvdWJyZmh4VytWVmFucDcwZjBqTjZwZ3lDR0VrQnB6ZTBBSTJVWGdDLzNHMEF4Zks4OTZaRjJseXEycStpMHlubDZ2MStmM2UxK3pHWXBjcE1pL2hvcXJONlhHWmFvNjQzbWV5bEVWUXdidytMd1c3S2VHV3dZOFZIR3VGWHAySHBhYmNodUpUd1BKazhNc241VExDaVYvb01UT29rM0kxWkVxdHhweGRkSDlJbGVxWXNnaGhLQXgvbUhtYlNLVzliS3lZaXBpak1jUGE4VkZhdHhoeERJbFZsRGtmVm0wMzlrM3FmR2VvbzNJMVpFcWYxZDBmOGlkS2hreW04MjJBaGNTMloxYkp5SzFyR0twS3VmbUZqZGlNNEVWcWVudEJyeXgyV3lPWjlWdVozcDBDT1ZmWFZNck5kMU44dnRKa21qUmZTRjNxbVRJa3dEeG5ZVGNPVkJiVEc5anE1Vm1YVmUxWHEvUHorNmdVMTJ2eERwVjNxZ2k1L3FrWERFQWFCRDRZV3BhNExEVXJOVUdKWDlWZEI4WUdsVTA1QkJDSU9VTnFla0dVMjdvc1EycmxQelBQTmZlMW1xMUJXWjZXNTkxbkZlbHB0dFQ4bm9UT2EzUmFCeVNWenVkM2tpSnIvaXA0c05SYXJwYmxTc04rSmVpOHo1VXFtcklrNUR5QVNWMmRjMXZxZ21ZemFwY3I4UjlKdktzcks2OVAxVGtGZDJ6QU5kT1ZjZytOZTVJVFZkM1YwWjhra3llRkViNXpMQ0tNejQrZm9TUzM3VE9mRUgxTmdXVlhKMWZlTGpYVFA5ck50Uk9lUmhWTitSSnlPUnhwTHlGeERkU3d5OE11TVZNZjJUa05SUzVvTWhDNlVtU1BBckFHU25sWTZuaFB3eTR4U2cvVG9sdkFQR2RyVmJybUtMYTV2VEh4TVRFUWhFNXhReGZUb2xmZGlyaHVmcFJhcnJVZ0ZzTXVFNVZYOXBvTkI1VGRINExZMVFNMlhFY3AvSzRJVHVPNDVRRU4yVEhjWnlTNElic09JNVRFdHlRSGNkeFNvSWJzdU00VGtsd1EzWWN4eWtKYnNpTzR6Z2x3UTNaY1J5bkpMZ2hPNDdqbElSaEc3SXBWeHZ3QWhGWjdISzVYSm9rTmpFeHNUQ0VjR0RSZmxnNFEzOURKbmFaNmVyT0tSY3VsMnUyS3pVdTY1NHN2OEZVdnFjaXJ3OGhIRkMwTnhaQ0FXL0lMcGZMTmJVNnA4eHZCdHF2QzdQdE9ESTNaSmZMVlVZcHNWV0pMU0dFZVVYNzVOQndRM2E1WENYWGRoRjVaTkZlT1JUY2tGMHVWOW1seEM2Zy9lS2kvVEozM0pCZExsY1ZwTXFWaXhjdlBycG96OHdWTjJTWHkxVVZLZm5ib2owelY5eVFYUzVYWlVSc0lubDIwYjZaRzdWYWJVR3E5Sk4wWFM1WEphVEtsVVg3Wm03VWFyVUZxWEZUMFVGMnVWeXVtU2cxcmhHUkU0djJ6bHpvRGxsc0t6cklMcGZMTlZPcDZpZUw5czVjcU5WcUM1VFlWWFNBWFM2WGE2WktqY3VLOXM1YzZMNGhGeDVnbDh2bDZrRTdpL2JPWEZpMGFOR1JKUWl1eStWeXpWekVtbHF0dHFCby84d2NrdTNDZyt0eXVWdzlTSlhya3lRNXVHai96SU41UlFmWDVYSzVlcEVTdTRvMnp0d3c1YzZpQSt4eXVWd3oxVWp2MkZQeXQwVUgyT1Z5dVdZcVVxNG8yamR6ZzR3WG03OGx1MXl1YXVpQkdPTVRpL2JOM0xqMDBrdm5saURJTHBmTHRWK3A4cTZpUFROM0ZQRk5SUWZhNVhLNXBwTXExOGNZankvYUw0ZEMwY0YydVZ5dWFXWDJtYUo5Y3FnVUhuQ1h5K1hhcDNCdjBmNDRkSHc4MmVWeWxWQWJWTldLOXNkQ1VKR3p6RmRkdUZ5dWdwV2E3amJsN2hEQzNLSjlzWEJNZVZ2UkNYRzVYTE5XcTB5NXJXZ2ZMQlVxOGllcGNZY1Mvc2JzY3JueWwvRWVVMjR6a1djVjdYK2xSVVZlcWVSTnFlbjJ2UVBZcmFlOHpaUWJySE0rbjh2bGNzMUlTcXhUNVZaVDNKdVNmeThpcDRRUTVoVHRlWldpMld3ZXRtalJvaVByOWZwOGw4dmw2a2UxV20xQm85RTRKUGdZc2VNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp1TTRqdU00anVNNGp0T2wxV29kMDJnMER1LzM1NU1rcVlkOWJCQm90VnJIN0ZVVGQxNmowVGg4VW1Hdk5hMWsrNC8yK0x6ZlU2L1g1d09ManV5M2ZZN2pPRlZnTHNrYlRMbFJsVnRGNVBuOWZJZ0NGNDZOalIyNjk5ZUI1SmtLWERqNTczYTdmWUx0c1hPVW5EaDJ6KzhuOElVUXdvRUt2Szd6OHpnMWhCQ1NKRkVST2EyZnRqbU80MVFDQUkxSll3UVdIVm1yMVJhSXlQUEplRFlwSCsxdWpRMGlVbFBnZzZUODl5UkpEZzRoekZIZ1FnS2ZFSkduaXNnZmh4QU9ZclBaQnVSeUJmNjYwV2djUHBVaGR6OGpoTkF4VzBDdVVwRS9VNVhQaHhEbUFIZ0oyWDZPVVg2dXdMdGlqRTBnZVhLM3pTOG01U05BKzV6dXY1OHJJczhuY0RVWnp4NXFBQjNIS1RmTlpuTWNRS1BaYkI0MnhiY2NSTVpYMWV2MStWbGV0Mk9xMDE1M1h4eEE0cGRLL29wc1B5ZUVFQUM1Q29ndlQ1TGtZQ1cvbVNUSm8xVGwyaVJKeGdDY3FzQWxaSHlSQW04S0lSdzROaloyS0lGUGpJMk5IUnBqUEdwc2JPeFFFWGtXRU44NDVSc3k4RFZWK1ZJSUlaaksvMjQybTRkcHUzMFNpZStFRU9hb3lyVWhoR0RBZFoxN2F6OURSZjRNU0o1SnludEQ1eGZDaDJLTVQ2RElaYVJjRkVLWVo4RFhzNDZyNHpnVlJwWHJUYm1iSW0vZjEvK1BNVDdCbExzbjN6NW53RHlnR1dkdzNhMmR0MTE1eStUWEZpNWMrSWhXcTNYTWREL1hiRFlQVStCdlZMbFZZM3dlSUZmRkdCZUZFQUpGM3Q1cHIvd0drTXRKdVpLVUQzVCsrK0J3dzZRaEE4bVRTWGt2S1ZlUThwNnBESm1NcnlMamViVmFiY0drK1lZUWdnSC9HS1l4WkFVdW1UekZ1R3ZPRjFIa3NuYTd6YzczeVpXdFZ1dm9HY2JWY1p4UlozK0dIRUtZQytETUVNSUJNL2s4TW5rU3lSdG1jTjJIR1RKRkxpRGx5cWsvKzlqSGtzbmpRZ2dIcXZKZlNYa0hJRmUxMiswVFFnaUJ3TlZKa3JSVTVWc1B1UmJ3TG0yM1Qvcjk1M1FOdWZ0OTgyS01UNXpPa0NjbUpoWjJKL1VPVU1vL2hSQkNvOUU0aE9UMVlUcERGbm1saXB6VitWcjhVeFU1bHlLWHRWcXRwUE0xTjJUSGNmWmdCb1k4cjlGb1BDYnNaY2d4UnBEdFoyaVNXQWhoWHZmTGN6cHZtL3grbzlGNFRQZm5EcHJpdW5zYjhvRWtyeWZ3aVQxKzlpRXJJVFJKeklnMVN1d2ljYXVJVEFCeWxhcDh2RHRtL0hjaGhFREc4d3k0anBRckdlUHBTWkxVU1g1VmdRK0t5R20vTjJUZ1V4UjVud0lmb3NobE01blVJK1VkQks1VzRHOUorVnpZdzVCSi9vTUNsMDRhOHNLRkN4K2hLcCtueVBzTXVLNVdxeTF3UTNZY1owcjJaOGhKa3JSTXVidHJ2Q0hHdU1pQW42aHlxd0xMdXpXckh4Z2ZIeitDNUZlVjJObjkyblpUYmdmd2xDbXUreEJESm5HckVydTZCeFpzTitYMktjYVg1eVJKOHFqSmZ3QnlWWklrWXlMeXlMM2FmZkJlS3lubTd2MDlJWVN3cjYvdGorN243cXVzNDV4OXJONTRTSHNkeDNHbXBGZERWcFdQbThyM0pvMnMyV3dleGhoUGYvRHo0di9vZDhoQ1ZmN1BkRU1XKzJMU2tIdjVHY2R4bkZMU3F5R1QvR0ozTW11S3p4dXVJWWNRRGd4K0NvVGpPS05BcjRZTTRHUWxOaXY1WFkzeGVXR3ZQOTBMTUdUSGNaelJvRmRERGlFRW9Ca1YrSlFTVzdxVGE2YzkrSGx1eUk3ak9IM1JqeUZQTWpFeHNWQ0JUNWx5ZTVJazJ2azhOMlRIY1MzSGhsQUFBQURaU1VSQlZKeSttRFJrQlQ0SW9MR25RZ2dIVG1mSVhlYVk4Z0VBNTRjUUFpbFhLUG1ER1Z6MzRldVFpZStROHJFczdzdHhIS2R5VEJyeXZpUWk4dkJKdlhoZWQvZlpnU0dFQThoNGRuZDUyK05EQ0FIQVg1cHlZM2MzMnR3OTYwRHNkZDE5R0xKOHpCUzNkMWROSEJRZVhOL3NPSTR6K3ZSdXlQSmVWVzd0cmpmZWFjclZrOVhPUWdnaFNaSkhtY3FQVExuYmlCMVRWVDNibHlFblNkSlNjc25rWnplYnpmSDhJK0E0amxOaEdvM0dJYTFXSzBtU3BCWDJ2YVY2am9oTTdLOHV4UlRNWTdQWjloMXNqdU00anVNNGp1TTRzNDMvRDdCRWZZVG8rYWk5QUFBQUFFbEZUa1N1UW1DQyIgYWx0PSJMSVNFIExvZ28iIC8+ICp9DQo8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCiAgPHA+VGhpcyBtb2R1bGUgYWxsb3dzIG1hbmFnZW1lbnQgYW5kIGFkbWluaXN0cmF0aW9uIG9mIGZyb250IGVuZCB1c2VycyA8aT4odXNlcnMgd2hvIGhhdmUgbm8gYWRtaW4gYWNjZXNzcyk8L2k+LiAgSXQgYWxsb3dzIGNyZWF0aW9uIG9mIHVzZXIgZ3JvdXBzLCBhbmQgdXNlciBhY2NvdW50cyBhbmQgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGFuZCBsb2dvdXQuPC9wPg0KICA8aDQ+RmVhdHVyZXM6PC9oND4NCiAgPHVsPg0KICAgIDxsaT5Vc2VycyBjYW4gYmUgbWVtYmVycyBvZiBtdWx0aXBsZSBncm91cHMuPC9saT4NCiAgICA8bGk+VXNlciBhY2NvdW50IGV4cGlyYXRpb24uICBZb3UgY2FuIGNyZWF0ZSB0ZW1wb3JhcnkgdXNlcnM8L2xpPg0KICAgIDxsaT5Hcm91cCBQcm9wZXJ0aWVzLiAgWW91IGNhbiBhc2sgZm9yIGRpZmZlcmVudCBpbmZvcm1hdGlvbiBmcm9tIG1lbWJlcnMgb2YgZGlmZmVyZW50IGdyb3Vwcy48L2xpPg0KICAgIDxsaT5Mb3RzIG9mIGZpZWxkIHR5cGVzLjwvbGk+DQogICAgPGxpPlByb3ZpZGVzIGEgY29udGVudCB0eXBlIHRvIG1ha2UgcHJvdGVjdGluZyBjb250ZW50IHNpbXBsZSwgaWYgbm90IHRyaXZpYWwuPC9saT4NCiAgICA8bGk+Q2FwYWJsZSBvZiBoYW5kbGluZyB0aG91c2FuZHMgb2YgdXNlcnM8L2xpPg0KICAgIDxsaT5FeHRlbnNpdmUgZmxleGliaWxpdHkgZm9yIGhhbmRsaW5nIHJlZGlyZWN0aW9uIGFmdGVyIGxvZ2luLCBhbmQgc2VuZHMgZXZlbnRzIHRvIGV4dGVuZCB0aGUgd29ya2Zsb3cgcHJvY2Vzcy48L2xpPg0KICAgIDxsaT5Gb3Jnb3R0ZW4gcGFzc3dvcmQsIGFuZCBmb3Jnb3QgdXNlcm5hbWUgZnVuY3Rpb25hbGl0eS4uLiBhbGxvd3MgdXNlcnMgdG8gc2V0IGEgbmV3IHBhc3N3b3JkLCBhbmQvb3IgdG8gcmVjb3ZlciB0aGVpciB1c2VybmFtZSBpZiB0aGV5IGNvbXBsZXRlbHkgZm9yZ290IGxvZ2luIGRldGFpbHMuPC9saT4NCiAgICA8bGk+RXh0ZW5kYWJsZSB0byBkaWZmZXJlbnQgYXV0aGVudGljYXRpb24gdHlwZXMgKExEQVAsIEZhY2Vib29rLCBldGMpLjwvbGk+DQogICAgPGxpPlByb3ZpZGVzIGV4dGVuc2l2ZSBpbXBvcnQgYW5kIGV4cG9ydCBjYXBhYmlsaXRpZXMuPC9saT4NCiAgICA8bGk+SGFzIGFuIGV4dGVuc2l2ZSBBUEkgZm9yIGFkZGluZyBmdW5jdGlvbmFsaXR5IGludG8gdmFyaW91cyBvdGhlciBDTVNNUyBhZGRvbiBtb2R1bGVzLjwvbGk+DQogICAgPGxpPlRoZSBhYmlsaXR5IHRvIGVuY3J5cHQgc2Vuc2l0aXZlIHVzZXIgZGF0YS48L2xpPg0KICAgIDxsaT5TdHJvbmcgZW5jcnlwdGlvbiBhbmQgc2VjdXJpdHkuPC9saT4NCiAgICA8bGk+RXh0ZW5zaXZlIGFkbWluaXN0cmF0aXZlIGNhcGFiaWxpdGllcy48L2xpPg0KICAgIDxsaT5BZGRpdGlvbmFsIDxiPkxJU0U8L2I+IGN1c3RvbSBmaWVsZHMgaWYgeW91IGhhdmUgaXQgaW5zdGFsbGVkLjwvbGk+DQogIDwvdWw+DQoNCg0KPGRpdiBjbGFzcz0id2FybmluZyI+DQo8aDM+UHJpdmFjeSBXYXJuaW5nOjwvaDM+DQo8cD5BZG1pbmlzdHJhdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQuPC9wPg0KDQo8cD5UaGlzIG1vZHVsZSBkb2VzIGxvZyB0aGUgSVAgYWRkcmVzcyBvZiB1c2Vycy4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIERvLU5vdC1UcmFjayBwb2xpY2llcywgYW5kIG1heSBicmVhayBzb21lIGxhd3MuICA8c3Ryb25nPlVzZSBBdCBZb3VyIE93biBSaXNrLjwvc3Ryb25nPjwvcD4NCjxwPkFkZGl0aW9uYWxseSwgdGhlIGFkbWluaXN0cmF0b3IgaGFzIHRoZSBhYmlsaXR5IHRvIGNvbmZpZ3VyZSB0aGUgbW9kdWxlIHNvIHRoYXQgY29va2llcyBhcmUgdXNlZC4gIEhvd2V2ZXIgbm8gcGVyc29uYWwgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBjb29raWVzIChpZiBlbmFibGVkKS4gIE9ubHkgYSBzeXN0ZW0gYXNzaWduZWQgdW5pcXVlIHVzZXIgaWRlbnRpZmVyLCBhbmQgYSBzZXNzaW9uIGlkZW50aWZpZXIuPC9wPg0KDQo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBzb21lIGFzc2lzdGFuY2UgaW4gbWFuYWdpbmcgdXNlciBwcml2YWN5LiAgVGhlcmUgaXMgZnVuY3Rpb25hbGl0eSB0byBhbm9uaW1pemUgYSB1c2VycyBhY2NvdW50LCBhbmQgZnVuY3Rpb25hbGl0eSB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBjbGVhciBvbGQgZGF0YSBmcm9tIHVzZXIgaGlzdG9yeSBsb2dzLjwvcD4NCg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBOT1QgcHJvdmlkZSB0aGUgYWJpbGl0eSBmb3IgdXNlcnMgdG8gcmVtb3ZlIHRoZWlyIGFjY291bnRzLiAgVGhpcyBpcyBiZWNhdXNlIG90aGVyIGZ1bmN0aW9uYWxpdHkgKHN1Y2ggYXMgRS1jb21tZXJjZSkgbWF5IHJlcXVpcmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gZm9yIHJlZmVyZW50aWFsIGludGVncml0eS4gIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGFkbWluIG9wdGlvbiB0byBhbGxvdyBhbm9uaW1pemluZyBhIHVzZXIuPC9wPg0KPC9kaXY+DQoNCjxoMz5FbmNyeXB0ZWQgRGF0YTo8L2gzPg0KPHA+VGhlIEVuY3J5cHRlZCBmaWVsZCBmdW5jdGlvbmFsaXR5IGlzIGludGVuZGVkIHRvIHN0b3JlIChpbiBhIHNlY3VyZSB3YXkpIHBlcnNvbmFsIGFuZCBwcml2YXRlIGRhdGEgdGhhdCBldmVuIHRoZSBzaXRlIGFkbWluaXN0cmF0b3Igc2hvdWxkIG5vdCBoYXZlIGFjY2VzcyB0by4gIGkuZTogaXRlbXMgc3VjaCBhcyBDcmVkaXQgQ2FyZCBpbmZvcm1hdGlvbi4gIFRoZSBvbmx5IHBlcnNvbiB0aGF0IHNob3VsZCBiZSBhYmxlIHRvIHZpZXcgYW5kIGVkaXQgdGhpcyBkYXRhIGlzIHRoZSB1c2VyIGhpbXNlbGYuICAgVGhpcyBkYXRhIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQgdG8gcGxhaW4gdGV4dCBlaXRoZXIuICBUaGUgZGF0YSBjb3VsZCBob3dldmVyIGJlIHJlYWQgYW5kIHVzZWQgYnkgb3RoZXIgbW9kdWxlcy48L3A+DQo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBUaGVyZSBtYXkgYmUgc21hYSBuZWVkIGZvciBhbiBhZGRpdGlvbmFsIG1vZHVsZSB0byBkaXNwbGF5IHRoZSB1bmVuY3J5cHRlZCBmb3JtIG9mIGVuY3J5dHBlZCB1c2VyIGluZm9ybWF0aW9uLCBob3dldmVyIHRoZSBNQU1TIG1vZHVsZSBkb2VzIG5vdCBuZWVkIGl0LjwvcD4NCg0KPGgzPlRpcHM8L2gzPg0KPHVsPg0KICA8bGk+RHluYW1pYyBOYXZpZ2F0aW9uczoNCiAgICA8cD5JbiBtb3N0IGNpcmN1bXN0YW5jZXMgeW91IGNhbm5vdCBhbGxvdyBicm93c2VyIGNhY2hpbmcgb24gYW55IHBhZ2UgdGhhdCBoYXMgYSBkeW5hbWljIG5hdmlnYXRpb24uLi4gdGhlIHR3byBzaG91bGQgbm90IGJlIG1peGVkLjwvcD4NCiAgPC9saT4NCiAgPGxpPlJlZGlyZWN0IFByZWZlcmVuY2VzIGFuZCB7JHVzZXJuYW1lfToNCiAgICA8cD5JZiB1c2luZyB0aGUgPGNvZGU+eyR1c2VybmFtZX08L2NvZGU+IHNtYXJ0eSB2YXJpYWJsZSBpbiBhbnkgb2YgdGhlIHJlZGlyZWN0IHByZWZlcmVuY2VzIGluIHRoZSBNQU1TIG1vZHVsZSdzICZxdW90O2J1aWx0aW4gYXV0aGVudGljYXRpb24mcXVvdDsgdGFiIGJlIHN1cmUgdG8gdHVybiBPRkYgdGhlICZxdW90O0VtYWlsIGlzIFVzZXJuYW1lJnF1b3Q7IHByZWZlcmVuY2UuPC9wPg0KICA8L2xpPg0KPC91bD4NCg0KPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPg0KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IGlmIHlvdSBoYXZlIDxiPkZyb250IEVuZCBVc2VycyAoRkVVKTwvYj4gaW5zdGFsbGVkIHlvdSdsbCBzZWUgYSBuZXcgdGFiIGhlcmUgcmVnYXJkaW5nIHRoZSBtaWdyYXRpb24gc3RlcHMgZnJvbSA8Yj5GRVU8L2I+IHRvIDxiPk1BTVM8L2I+IHNob3VsZCB5b3UgcmVxdWlyZSBpdC48L3A+DQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/help_hooks_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkhvb2tzPC9oMz4NCjxwPlRoaXMgbW9kdWxlIHVzZXMgSG9va3MgdG8gdGllIGluIGV4dGVybmFsIGZ1bmN0aW9uYWxpdHkuICBUaGUgZm9sbG93aW5nIGhvb2tzIGFyZSBhdmFpbGFibGU6PC9wPg0KPHVsPg0KICAgIDxsaT48Y29kZT5NQU1TOjpCZWZvcmVDaGFuZ2VTZXR0aW5nczwvY29kZT4NCiAgICAgICAgPHA+U2VudCBhZnRlciB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gaGFzIGJlZW4gc3VibWl0dGVkLCBidXQgYmVmb3JlIGFueSB2YWxpZGF0aW9uIG9jY3Vycy48L3A+DQoJPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+dWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyIGlkPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQogICAgPGxpPjxjb2RlPk1BTVM6OkNoYW5nZVNldHRpbmdzQWZ0ZXJWYWxpZGF0ZTwvY29kZT4NCiAgICAgICAgPHA+U2VudCBhZnRlciBhbGwgdmFsaWRhdGlvbiBpcyBkb25lIGluIHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSwgYnV0IGJlZm9yZSBhbnl0aGluZyBpcyBzYXZlZCB0byB0aGUgZGF0YWJhc2UuPC9wPg0KCTxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4NCgk8dWw+DQoJICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaT48Y29kZT5NQU1TOjpPbkNyZWF0ZVVzZXI8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPg0KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSB1c2VybmFtZTwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaT48Y29kZT5NQU1TOjpPblVwZGF0ZVVzZXI8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGluZm9ybWF0aW9uIGlzIGVkaXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+DQoJICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRGVsZXRlVXNlcjwvY29kZT4NCiAgICAgICAgPHA+U2VudCBiZWZvcmUgYSB1c2VyIGlzIHJlbW92ZWQgZnJvbSAgdGhlIGRhdGFiYXNlLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPg0KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCiAgICA8bGk+PGNvZGU+TUFNUzo6T25DcmVhdGVHcm91cDwvY29kZT4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4NCgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgbmFtZTwvbGk+DQoJICAgPGxpPjxjb2RlPmRlc2NyaXB0aW9uPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBkZXNjcmlwdGlvbjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaT48Y29kZT5NQU1TOjpPblVwZGF0ZUdyb3VwPC9jb2RlPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgZ3JvdXAgaWQ8L2xpPg0KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4NCgkgICA8bGk+PGNvZGU+ZGVzY3JpcHRpb248L2NvZGU+IDogc3RyaW5nIC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRGVsZXRlR3JvdXA8L2NvZGU+DQogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4NCgk8dWw+DQoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBncm91cCBpZDwvbGk+DQoJICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIGdyb3VwIG5hbWU8L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCiAgICA8bGk+PGNvZGU+TUFNUzo6QmVmb3JlTG9naW48L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIGxvZ2dlZCBpbi4gSGFuZGxlcnMgY2FuIHRocm93IHRoZSA8Y29kZT5GZXVMb2dpbkZhaWxlZEV4Y2VwdGlvbjwvY29kZT4gdG8gZ2VuZXJhdGUgYW4gZXJyb3IuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgcHJvdmlkZWQgdXNlcm5hbWUuPC9saT4NCgkgICA8bGk+PGNvZGU+Z3JvdXBzPC9jb2RlPiA6IHN0cmluZyAtIEEgbGlzdCBvZiBvbmx5Z3JvdXBzIChzZWUgdGhlIG9ubHlncm91cHMgcGFyYW0pPC9saT4NCgkgICA8bGk+PGNvZGU+aXA8L2NvZGU+IDogc3RyaW5nIC0gVGhlIElQIGFkZHJlc3MgZGV0ZWN0ZWQuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6QWZ0ZXJMb2dpbkF1dGg8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGJ1dCBiZWZvcmUgYWN0dWFsbHkgYmVpbmcgbG9nZ2VkIGluLiAgVGhpcyBob29rIGlzIHVzZWZ1bCB0byBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIGRvIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLiAgSGFuZGxlcnMgY2FuIHRocm93IGEgPGNvZGU+RmV1TG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGlkIGRldGVjdGVkIGZvciB0aGlzIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBwcm92aWRlZCB1c2VybmFtZS48L2xpPg0KCSAgIDxsaT48Y29kZT5ncm91cHM8L2NvZGU+IDogc3RyaW5nIC0gQSBsaXN0IG9mIG9ubHlncm91cHMgKHNlZSB0aGUgb25seWdyb3VwcyBwYXJhbSk8L2xpPg0KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCg0KICAgIDxsaT48Y29kZT5NQU1TOjpPbkxvZ2luRmFpbGVkPC9jb2RlPg0KICAgICAgICA8cD5TZW50IHdoZW4gYSBsb2dpbiBhdHRlbXB0IGhhcyBmYWlsZWQgZm9yIHNvbWUgcmVhc29uLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPm1zZzwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGh0IGhlIGZhaWxlZCBsb2dpbiBhdHRlbXB0LjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRXhwaXJlVXNlcjwvY29kZT4NCiAgICAgICAgPHA+U2VudCB3aGVuIGEgdXNlciBzZXNzaW9uIGlzIGV4cGlyZWQsIGFuZCB0aGUgdXNlciBpcyBsb2dnZWQgb3V0LjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGV4cGlyZWQgdXNlcmlkLjwvbGk+DQoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBleHBpcmVkIHVzZXJuYW1lLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUFub25pbWl6ZVVzZXI8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYmVmb3JlIGEgdXNlciBpcyBhbm9uaW1pemVkLjwvcD4NCgk8cD5QYXJhbWV0ZXJzOjwvcD4NCgk8dWw+DQoJICAgIDxsaT48Y29kZT4kdWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQgdG8gZXhwaXJlLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyQW5vbmltaXplVXNlcjwvY29kZT4NCiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBhZnRlciBhIHVzZXIgaXMgYW5vbmltaXplZC48L3A+DQoJPHA+UGFyYW1ldGVyczo8L3A+DQoJPHVsPg0KCSAgICA8bGk+PGNvZGU+JHVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkIHRvIGV4cGlyZS48L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCg0KICAgIDxsaT48Y29kZT5NQU1TOjpBZmVyVmVyaWZ5PC9jb2RlPg0KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdXNlciBhY2NvdW50IGlzIHZlcmlmaWVkLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkIHRvIGV4cGlyZS48L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCg0KICAgIDxsaT48Y29kZT5NQU1TOjpDbGVhclVzZXJIaXN0b3J5PC9jb2RlPg0KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGJlZm9yZSB1c2VyIGhpc3RvcnkgaXMgY2xlYXJlZCBmcm9tIHRoZSBkYXRhYmFzZS48L2xpPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzOjwvcD4NCgk8dWw+DQoJICAgIDxsaT48Y29kZT4kb2xkZXJfdGhhbjwvY29kZT4gOiBpbnQgLSBBIHVuaXggdGltZXN0YW1wIGNvbnRhaW5pbmcgdGhlIG1heGltdW0gdGltZSBvZiByZWNvcmRzIHRvIGtlZXAuPC9saT4NCgk8L3VsPg0KICA8L2xpPg0KDQogIDxsaT48Y29kZT5NQU1TOjpPbkxvZ2luPC9jb2RlPg0KICAgICAgICA8cD5TZW50IGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dpbiBvcGVyYXRpb24uPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+DQoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSB1c2VybmFtZS48L2xpPg0KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCg0KICAgIDxsaT48Y29kZT5NQU1TOjpPbkxvZ291dDwvY29kZT4NCiAgICAgICAgPHA+U2VudCBhZnRlciBhIHVzZXIgaGFzIGJlZW4gbG9nZ2VkIG91dCBvZiB0aGUgc3lzdGVtLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZC48L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCjwvdWw+]]></data>
	</file>
	<file>
	  <filename>/templates/help_parameters_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb24gPSA8L2I+ImRlZmF1bHQiDQogICAgPHA+QWN0aW9uczo8L3A+DQogICAgPHVsPg0KICAgICAgPGxpPjxiPjxlbT5kZWZhdWx0PC9lbT48L2I+IC0gVGhlIGRlZmF1bHQgYWN0aW9uLiAgSWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGUgbG9nb3V0Zm9ybSBhY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuICBJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluIHRoZSBsb2dpbiBhY3Rpb24gd2lsbCBiZSBjYWxsZWQuDQogICAgICA8bGk+PGI+PGVtPmxvZ2luPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgbG9naW4gZm9ybS48L2xpPg0KICAgICAgPGxpPjxiPjxlbT5sb2dvdXRmb3JtPC9lbT48L2I+IC0gRGlzcGxheSBvdXRwdXQgYWJvdXQgeW91ciBjdXJyZW50IHVzZXJuYW1lLCBhbmQgYWN0aW9ucyB0byBjaGFuZ2UgeW91ciBzZXR0aW5ncywgb3IgbG9nb3V0LiAgSWYgdGhlIHVzZXIgaXMgbm90IGxvZ2dlZCBpbiwgdGhpcyBhY3Rpb24gZG9lcyBub3RoaW5nLjwvbGk+DQogICAgICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gZm9yIGxvZ2dlZCBpbiB1c2Vycy4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPg0KICAgICAgPGxpPjxiPjxlbT5mb3Jnb3RwdzwvZW0+PC9iPiAtIERpc3BsYXkgdGhlIGZvcmdvdCBwYXNzd29yZCBmb3JtLjwvbGk+DQogICAgICB7KiA8bGk+PGI+PGVtPnNpbGVudCAoZGVwcmVjYXRlZCk8L2VtPiAtIENyZWF0ZXMgYW5kIGFzc2lnbnMgc29tZSBzbWFydHkgdmFyaWFibGVzIGNvbnRhaW5pbmcgaW5mbyBhYm91dCB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLjwvbGk+ICp9DQogICAgICA8bGk+PGI+PGVtPmxvc3R1c2VybmFtZTwvZW0+PC9iPiAtIERpc3BsYXkgdGhlIGxvc3R1c2VybmFtZSBmb3JtIChpZiB0aGUgc3lzdGVtIGlzIHByb3Blcmx5IHNldHVwIHRvIGhhbmRsZSBsb3N0IHVzZXJuYW1lIHJlcXVlc3RzLCBhbmQgdGhlIHVzZXIgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQgaW4uPC9saT4NCiAgICAgIDxsaT48Yj48ZW0+cmVzZXRfc2Vzc2lvbjwvZW0+PC9iPiAtIFByb3ZpZGUgYSBqYXZhc2NyaXB0IGNvbnRyb2xsZWQgdGVtcGxhdGUgdG8gYWxsb3cgdGhlIG1hbnVhbCwgb3IgYXV0b21hdGljIHBpbmdpbmcgb2YgdGhlIHVzZXIgc2Vzc2lvbi4gIFRoaXMgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gcmVtaW5kIHRoZSB1c2VyIHRoYXQgaGlzIGxvZ2luIHNlc3Npb24gaXMgYWJvdXQgdG8gZXhwaXJlLCBhbmQgdG8gdHJpZ2dlciBpdHMgcmVzZXQuICBOb3JtYWxseSB0aGlzIG1ldGhvZCBpcyBub3QgcmVxdWlyZWQgYXMgYW55IHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgRnJvbnRFbmRVc2VyIGNvbnRyb2xzIHdvdWxkIGhhbmRsZSB0aGlzLCBqdXN0IHJlcXVpcmluZyB0aGUgdXNlciB0byB2aWV3IGEgcGFnZSBvbiBhIHJlZ3VsYXIgYmFzaXMuICBIb3dldmVyLCBpZiB0aGVyZSBhcmUgcGFnZXMgd2l0aCBhbG90IG9mIGNvbnRlbnQgcmVxdWlyaW5nIGV4dGVuc2l2ZSByZWFkaW5nLCB0aGlzIG1heSBiZSBhIHVzZWZ1bCBzb2x1dGlvbi48L2xpPg0KICAgICAgPGxpPjxiPjxlbT52aWV3dXNlcjwvZW0+PC9iPiAtIERpc3BsYXkgYSByZXBvcnQgZm9yIGEgc2luZ2xlIHVzZXIsIHJlcXVpcmVzIHVzZSBvZiB0aGUgdWlkIHBhcmFtZXRlci48L2xpPg0KICAgIDwvdWw+DQogIDwvbGk+DQp7Kg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBmb3JtID0gPC9iPiJuYW1lIg0KICA8cD5Gb3Jtczo8L3A+DQogIDxkaXYgY2xhc3MgPSA8L2I+Indhcm5pbmciPk5vdGU6IFRoZSBmb3JtIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLiAgUGxlYXNlIHVzIHRoZSBzdGFuZGFyZCBhY3Rpb24gcGFyYW1ldGVyIGZvciBhY2Nlc3NpbmcgZGlmZmVyZW50IE1BTVMgZm9ybXMgZGlyZWN0bHkuPC9kaXY+DQogIDx1bD4NCiAgIDxsaT48Yj48ZW0+bG9naW48L2VtPiAtIERpc3BsYXkgdGhlIGxvZ2luIGZvcm0gPGVtPihzZWUgYWN0aW9uID0gPC9iPmxvZ2luKTwvZW0+PC9saT4NCiAgIDxsaT48Yj48ZW0+bG9nb3V0PC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dvdXQgZm9ybSA8ZW0+KHNlZSBhY3Rpb24gPSA8L2I+bG9nb3V0Zm9ybSk8L2VtPjwvbGk+DQogICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT4gLSBEaXNwbGF5IHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSA8ZW0+KHNlZSBhY3Rpb24gPSA8L2I+Y2hhbmdlc2V0dGluZ3MpPC9lbT48L2xpPg0KICAgPGxpPjxiPjxlbT5mb3Jnb3RwdzwvZW0+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm0gPGVtPihzZWUgYWN0aW9uID0gPC9iPmZvcmdvdHB3KTwvZW0+PC9saT4NCiAgIDxsaT48Yj48ZW0+bG9zdHVzZXJuYW1lPC9lbT4gLSBEaXNwbGF5IHRoZSBsb3N0IHVzZXJuYW1lIGZvcm0uIDxlbT4oc2VlIGFjdGlvbiA9IDwvYj5sb3N0dXNlcm5hbWUpPC9lbT48L2xpPg0KICA8bGk+PGI+PGVtPnNpbGVudDwvZW0+ICA9IDwvYj4gIDxlbT4oc2VlIGFjdGlvbiA9IDwvYj5zaWxlbnQpPC9lbT4gRGlzcGxheSBub3RoaW5nLCBidXQgZXhwb3J0IHByb3BlcnRpZXMgYW5kIG90aGVyIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuICBJZiBubyB1c2VyIGlzIGxvZ2dlZCBpbiwgdGhlbiBubyB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkLjwvbGk+DQogIDwvdWw+DQogIDwvbGk+DQogICp9DQoNCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG8gPSA8L2I+InBhZ2UiDQogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPg0KICAgIDxwPk5vdGU6IFRoYXQgb24gbG9naW4gdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuPC9wPg0KICA8L0xJPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3VwcyA9IDwvYj4iZ3JvdXAxLCBncm91cDIsIGdyb3VwMyINCiAgICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBmb3Jtcy4gIEJhc2ljYWxseSBvbmx5IGFsbG93cyB1c2VycyB0byBsb2dpbiBpZiB0aGV5IGJlbG9uZyB0byB0aGF0IHBhcnRpY3VsYXIgZ3JvdXAocykuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBsb3N0dW5fZ3JvdXAgPSA8L2I+Imdyb3VwIg0KICAgICA8cD5Vc2VkIHdpdGggdGhlIGxvc3R1c2VybmFtZSBmb3JtLCB0aGlzIGZlYXR1cmUgc3BlY2lmaWVzIHRoZSBmcm9udGVuZCB1c2VyIGdyb3VwIHRvIGFzc3VtZSB0aHQgdXNlcnMgYXJlIG1lbWJlcnMgb2YuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBub2NhcHRjaGEgPSA8L2I+IjEiDQogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBhbmQgdmVyaWZ5IGZvcm1zLCBUaGlzIHdpbGwgZGlzYWJsZSBjYXB0Y2hhIG9uIHRoZSBmb3JtLiBCeSBkZWZhdWx0LCBpZiB0aGUgQ2FwdGNoYSBtb2R1bGUgaXMgaW5zdGFsbGVkLCB2YWxpZGF0aW9uIG9mIGEgY2FwdGNoYSBpbWFnZSB3aWxsIGJlIHJlcXVpcmVkIGZvciBsb2dpbi4gIFRoaXMgaXMgYSBzZWN1cml0eSBtZWFzdXJlIGludGVudGVkIHRvIHByZXZlbnQgYnJ1dGUgZm9yY2UgYXR0YWNrcy48L3A+DQogIDwvbGk+DQogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHVpZCA9IDwvYj5udWxsDQogICAgPHA+VXNlZCB3aXRoIHRoZSB2aWV3dXNlciBhY3Rpb24uICBUaGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCB0byBzcGVjaWZ5IHdoaWNoIHVzZXIgdG8gdmlldyB0aGUgZGV0YWlscyBvZi48L3A+DQogIDwvbGk+DQogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGlubGluZSA9IDwvYj50cnVlDQogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGZvcm0gc3VibWlzc2lvbiBzaG91bGQgcmVwbGFjZSB0aGUgb3JpZ2luYWwgaW5wdXQgdGFnLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9naW50ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBsb2dpbiBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9nb3V0dGVtcGxhdGUgPSA8L2I+c3RyaW5nDQogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgbG9nb3V0IHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBjaGFuZ2VzZXR0aW5ncyBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9yZ290cHd0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBmb3Jnb3QgcGFzc3dvcmQgZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+DQogIDwvbGk+DQogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGxvc3R1bnRlbXBsYXRlID0gPC9iPnN0cmluZw0KICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBsb3N0IHVzZXJuYW1lIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2aWV3dXNlcnRlbXBsYXRlID0gPC9iPnN0cmluZw0KICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IHZpZXd1c2VyIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBhZnRlciB2ZXJpZmljYXRpb24gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiByZXNldHNlc3Npb250ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCByZXNldCBzZXNzaW9uIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2ZXJpZnlmb3JtdGVtcGxhdGUgPSA8L2I+c3RyaW5nDQogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgdmVyaWZpY2F0aW9uIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+VGlwOjwvc3Ryb25nPiBZb3UgY2FuIHVzZSB0aGUgJiMxMjM7eHRfbW9kdWxlX2hpbnR9IHBsdWdpbiBmcm9tIENNU0V4dCwgb3IgdGhlICYjMTIzO2Ntc19tb2R1bGVfaGludH0gcGx1Z2luIGluIENNU01TIDIuMCB0byBzZXQgdGhlc2UgcGFyYW1ldGVycyBvbiBhIGdsb2JhbCwgcGVyLXBhZ2UtdGVtcGxhdGUsIG9yIHBlci1wYWdlIGJhc2lzIHdpdGhvdXQgaGF2aW5nIHRvIGFkanVzdCBldmVyeSBjYWxsLCBhbmQgd2hpbGUgc3RpbGwgbWFpbnRhaW5pbmcgcHJldHR5IFVSTCdzLjwvcD4NCg0KPGgzPlVzaW5nIERpZmZlcmVudCBUZW1wbGF0ZXMuPC9oMz4NCjxwPkl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgbWFueSBvZiB0aGUgTUFNUyBtb2R1bGUgdGVtcGxhdGVzLiAgSXQgaXMgYWxzbyBmbGV4aWJsZS4gIFlvdSBjYW4gdXNlIGdsb2JhbCBjb250ZW50IGJsb2Nrcywgb3IgZmlsZSBiYXNlZCB0ZW1wbGF0ZXMgb3INCiBhbnkgb3RoZXIgc21hcnR5IHJlc291cmNlIGFzIGEgdGVtcGxhdGUuPC9wPg0KPHVsPg0KICA8bGk+VGVtcGxhdGUgbmFtZXMgZW5kaW5nIHdpdGggLnRwbA0KICAgIDxwPklmIHRoZSBzcGVjaWZpZWQgdGVtcGxhdGUgbmFtZSBpcyBub3QgYSBzbWFydHkgcmVzb3VyY2UsIGJ1dCBlbmRzIHdpdGggdGhlIGV4dGVuc2lvbiA8Y29kZT4udHBsPC9jb2RlPiwgdGhlbiBNQU1TIChhY3R1YWxseSBDTVNFeHQpIHdpbGwgYXNzdW1lIHRoYXQgeW91IHdhbnQgYSBmaWxlIHRlbXBsYXRlIGZyb20gdGhlIG1vZHVsZSBkaXJlY3RvcnksIG9yIGZyb20gdGhlIG1vZHVsZV9jdXN0b20gZGlyZWN0b3J5IDxlbT4oc2VlIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLmNtc21hZGVzaW1wbGUub3JnIj5odHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZzwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZV9jdXN0b20gc3R1ZmYpPC9lbT4uDQogIDwvbGk+DQogIDxsaT5nbG9iYWxjb250ZW50OmdjYl9uYW1lDQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2sgYXMgYXMgcmVwbGFjZW1lbnQgdGVtcGxhdGUuPC9wPg0KICA8L2xpPg0KICA8bGk+dGVtcGxhdGU6Z2NiX25hbWUNCiAgICA8cD5TcGVjaWZ5aW5nIGEgdGVtcGxhdGUgaW4gdGhpcyBzeW50YXggYWxsb3dzIHlvdSB0byB1c2UgYSBwYWdlIHRlbXBsYXRlIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4NCiAgPC9saT4NCiAgPGxpPmNtc190ZW1wbGF0ZTpuYW1lDQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgdGVtcGxhdGUgZnJvbSB3aXRoaW4gRGVzaWduIE1hbmFnZXIgYXMgYXMgcmVwbGFjZW1lbnQgdGVtcGxhdGUuPC9wPg0KICA8L2xpPg0KICA8bGk+ZmlsZTpmaWxlbmFtZS50cGwNCiAgICA8cD5Vc2luZyB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIGZpbGUgYmFzZWQgdGVtcGxhdGUgZnJvbSB3aXRoaW4gdGhlIHNtYXJ0eSB0ZW1wbGF0ZXMgZGlyIDxlbT4odXN1YWxseSB0bXAvdGVtcGxhdGVzKTwvZW0+Lg0KICA8L2xpPg0KPC91bD4NCjxwPlRoZXNlIG1ldGhvZHMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgbG9naW50ZW1wbGF0ZSwgbG9nb3V0dGVtcGxhdGUsIGNoYW5nZXNldHRpbmdzdGVtcGxhdGUsIGFuZCBmb3Jnb3Rwd3RlbXBsYXRlIHBhcmFtZXRlcnMuPC9wPg0KPHA+Tm90ZTogVGhlc2UgcGFyYW1ldGVycyBtYXkgbm90IGJlIHBhc3NlZCB0byB0aGUgdmFyaW91cyBmb3JtcyBmcm9tIHRoZSBwcmltYXJ5ICYjMTIzO01BTVN9IGNhbGwuICBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSB0aGUgJiMxMjM7eHRfbW9kdWxlX2hpbnR9IHRhZyBvbiB0aGUgcGFnZSB3aGVyZSB0aGUgdmFyaW91cyBmb3JtcyBvciB2aWV3cyB3aWxsIGJlIGRpc3BsYXllZC4gaS5lOg0KPHByZT48Y29kZT4mIzEyMzt4dF9tb2R1bGVfaGludCBtb2R1bGUgPSBNQU1TIGNoYW5nZXNldHRpbmdzdGVtcGxhdGUgPSAnZ2xvYmFsX2NvbnRlbnQ6bXljaGFuZ2VzZXR0aW5ncyd9PC9jb2RlPjwvcHJlPg0KICAuPC9wPg==]]></data>
	</file>
	<file>
	  <filename>/templates/help_smarty_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPlNtYXJ0eSBQbHVnaW5zOjwvaDM+DQo8aDQ+JiMxMjM7bWFtc191c2VyX29wdGlvbnN9PC9oND4NCjxwPlRoaXMgZnVuY3Rpb24gcGx1Z2luIHByb3ZpZGVzIGEgY29udmVuaWVudCBtZXRob2QgdG8gZ2VuZXJhdGUgb3B0aW9ucyBmb3IgYSBzZWxlY3QgZWxlbWVudCB3aXRoIHVzZXJzIGZyb20gdGhlIE1BTVMgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgaW4gYWRtaW4gaW50ZXJmYWNlcy48L3A+DQo8aDU+VXNhZ2U6PC9oNT4NCjxwcmU+PGNvZGU+JiMxMjM7bWFtc191c2VyX29wdGlvbnMgW2dyb3VwPXN0cmluZ10gW25vdGRpc2FibGVkPWJvb2xdIFtub3RleHBpcmVkPWJvb2xdIFt1c2VfdXNlcmlkcz1ib29sXSBbc2VsZWN0ZWQgPSBtaXhlZF19PC9jb2RlPjwvcHJlPg0KPGg1PlBhcmFtZXRlcnM6PC9oNT4NCjx1bD4NCiAgICA8bGk+PGNvZGU+Z3JvdXA9c3RyaW5nPC9jb2RlPiAtIERpc3BsYXkgb25seSB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBuYW1lZCBncm91cC48L2xpPg0KICAgIDxsaT48Y29kZT5ub3RleHBpcmVkPWJvb2w8L2NvZGU+IC0gRGlzcGxheSBvbmx5IHVzZXJzIHRoYXQgYXJlIG5vdCBleHBpcmVkLjwvbGk+DQogICAgPGxpPjxjb2RlPm5vdGRpc2FibGVkPWJvb2w8L2NvZGU+IC0gRGlzcGxheSBvbmx5IHVzZXJzIHRoYXQgYXJlciBub3QgZGlzYWJsZWQuPC9saT4NCiAgICA8bGk+PGNvZGU+dXNlX3VzZXJpZHM9Ym9vbDwvY29kZT4gLSAoZGVmYXVsdCBmYWxzZSkgVGhlIHZhbHVlcyBmb3IgZWFjaCBvcHRpb24gd2lsbCBiZSB0aGUgdXNlcmlkLCBub3QgdGhlIHVzZXJuYW1lLjwvbGk+DQogICAgPGxpPjxjb2RlPnNlbGVjdGVkID0gbWl4ZWQ8L2NvZGU+IC0gVGhlIHZhbHVlIG9mIHRoZSBvcHRpb24gdG8gc2VsZWN0LiAgSWYgdXNlX3VzZXJpZHMgaXMgZW5hYmxlZCwgdGhpcyBzaG91bGQgYmUgYW4gaW50ZWdlciB1aWQuICBPdGhlcndpc2UgdGhpcyBzaG91bGQgYmUgYSB1c2VybmFtZSBzdHJpbmcuPC9saT4NCjwvdWw+DQoNCjxocj4NCg0KPGg0PiYjMTIzO21hbXNfcHJvdGVjdH08L2g0Pg0KPHA+VGhlIDxzdHJvbmc+bWFtc19wcm90ZWN0PC9zdHJvbmc+IGJsb2NrIHBsdWdpbiBwcm92aWRlcyBhIGNvbnZlbmllbnQgbWV0aG9kIHRvIGhpZGUgc29tZSBjb250ZW50IGZyb20gdXNlcnMgb24gd2hhdCBpcyBub3JtYWxseSBhIHB1YmxpYyBwYWdlLjwvcD4NCg0KPGRpdiBjbGFzcz0id2FybmluZyI+PHA+PHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPldhcm5pbmc6PC9zdHJvbmc+PC9wPg0KICA8cD4gVGhpcyBwbHVnaW4gY2Fubm90IGJlIGNvbnNpZGVyZWQgMTAwJSBzZWN1cmUsIGFuZCBzaG91bGQgbm90IGF0IGFueSB0aW1lIGJlIHVzZWQgaW4gdGhlIHBhZ2UgdGVtcGxhdGUgdG8gcHJvdGVjdCB0aGUgZGVmYXVsdCAmIzEyMztjb250ZW50fSB0YWcuICBUaGVyZSBhcmUgd2F5cyB0byBhY2Nlc3MgdGhlIGRlZmF1bHQgY29udGVudCBwcm9wZXJ0eSBvZiBhIHBhZ2UsIG9yIHRvIGNhbGwgYSBtb2R1bGUgYWN0aW9uIHdpdGhvdXQgcHJvY2Vzc2luZyB0aGUgcGFnZSB0ZW1wbGF0ZS4gIElmIHlvdSBuZWVkIHRvIHByb3RlY3QgdGhlIGNvbnRlbnQgYW5kIGVuc3VyZSB0aGF0IG5vIHVuYXV0aG9yaXplZCB1c2VycyBhY2Nlc3MgdGhlIHBhZ2UsIHVzZSB0aGUgcHJvdGVjdGVkIHBhZ2UgY29udGVudCB0eXBlIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlLjwvcD4NCjwvZGl2Pg0KPGg1PlVzYWdlOjwvaDU+DQo8cHJlPjxjb2RlPiYjMTIzO21hbXNfcHJvdGVjdCBncm91cHM9Imdyb3VwMSxncm91cDIsZ3JvcDMifQ0KICAmbHQ7cCZndDtTbWFydHkgY29udGVudCB0aGF0IHNob3VsZCBvbmx5IGJlIHZpc2libGUgdG8gbWVtYmVycyBvZiB0aG9zZSBncm91cHMuJmx0Oy9wJmd0Ow0KJiMxMjM7L21hbXNfcHJvdGVjdH08L2NvZGU+PC9wcmU+DQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIHVzZXIgbXVzdCBiZSBhIG1lbWJlciBvZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMuICBUaGUgZ3JvdXAgbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvcD4NCjwvZGl2Pg0KPGhyPg0KDQo8aDQ+VGhlIG1hbXNfc21hcnR5IGNsYXNzPC9oND4NCjxwPlRoZSA8c3Ryb25nPm1hbXNfc21hcnR5PC9zdHJvbmc+IGNsYXNzIHByb3ZpZGVzIHNvbWUgZnVuY3Rpb25zIHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGFuZCBwdWxsIGFuZCB0ZXN0IGZvciB1c2VyIGluZm9ybWF0aW9uLjwvcD4NCjxwPlNvbWUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTUFNUyBtb2R1bGUgZGF0YWJhc2UgaXMgcG9zc2libGUgd2l0aCBzbWFydHkgYW5kIHRoZSBtYW1zX3NtYXJ0eSBjbGFzcy48L3A+DQoNCjxoNT5GdW5jdGlvbnM6PC9oNT4NCjx1bD4NCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VyaWQoKX08L2NvZGU+PC9zdHJvbmc+DQo8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGludGVnZXIgdXNlciBpZCBpZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyIChpZiBhbnkpLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF9jdXJyZW50X3VzZXJpZCgpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdXNlciBuYW1lIGlmIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgKGlmIGFueSkuPC9wPg0KPHA+RXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPiYjMTIzOyR1c2VybmFtZSA9IG1hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmlkKCR1c2VybmFtZSl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXR1cm4gdGhlIGludGVnZXIgdXNlciBpZCBnaXZlbiBhIHVzZXJuYW1lLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF91c2VyaWQoJHVzZXJuYW1lKX08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJuYW1lKFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXR1cm4gdGhlIHN0cmluZyB1c2VybmFtZSBnaXZlbiBhbiBpbnRlZ2VyIHVpZC4gIElmIG5vIHVpZCBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgYXNzdW1lZC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VybmFtZSgkdGhlX3VpZCl9PC9jb2RlPjwvcHJlPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9lbWFpbChbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcmV0dXJuIGFuIGVtYWlsIGFkZGVyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gaW50ZWdlciB1aWQuICBJZiBubyB1aWQgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBsb2dnZWQgaW4gdWlkIGlzIGFzc3VtZWQuPC9wPg0KPHA+RXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZW1haWwoJHRoZV91aWQpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmluZm8oWyR1aWRdKX08L2NvZGU+PC9zdHJvbmc+DQo8cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHVybiB0aGUgdXNlciBpbmZvcm1hdGlvbiBmb3IgYSBzaW5nbGUgdXNlci4gIElmIG5vIHVpZCBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgYXNzdW1lZC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JHVpbmZvID0gbWFtc19zbWFydHk6OmdldF91c2VyaW5mbygkc29tZXRoaW5nLnVzZXJpZCl9PGJyIC8+JiMxMjM7JHVpbmZvfEBwcmludF9yfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCRncm91cG5hbWVbLCRmb3JfbGlzdF0pfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCBhbiBhcnJheSBvZiB1c2VybmFtZXMgYW5kIHVzZXJpZHMgZm9yIGFsbCB1c2VycyB0aGF0IGJlbG9uZyB0byB0aGUgc3BlY2lmaWVkIGdyb3VwLjwvcD4NCjxwPlRoZSBncm91cG5hbWUgcGFyYW1ldGVyIG11c3QgYmUgYSBzaW5nbGUgc3RyaW5nIGdyb3VwbmFtZS48L3A+DQo8cD5UaGUgZm9yX2xpc3QgcGFyYW1ldGVyIGlzIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvdXRwdXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBzZWxlY3QgbGlzdC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JG15bWVtYmVycyA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCdtZW1iZXJzJyl9PGJyIC8+JiMxMjM7JG15bWVtYmVyc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2dyb3VwX21lbWJlcmxpc3QoJGdpZCl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgdWlkIGFuZCB1c2VybmFtZXMgZm9yIGFsbCB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXAgKGJ5IGdyb3VwIGlkKS48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzO2h0bWxfb3B0aW9ucyBvcHRpb25zID0gbWFtc19zbWFydHk6OmdldF9ncm91cF9tZW1iZXJsaXN0KCRnaWQpIHNlbGVjdGVkPSR1aWR9PC9jb2RlPjwvcHJlPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX2V4cGlyeShbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGUgc3BlY2lmaWVkIHVpZCBhY2NvdW50IGV4cGlyZXMuICBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIHVpZCBjYW5ub3QgYmUgZm91bmQgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JGV4cGlyeSA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcl9leHBpcnkoMjUpfTxiciAvPiYjMTIzOyRleHBpcnl8Y21zX2RhdGVfZm9ybWF0fTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5Ojp1c2VyX2V4cGlyZWQoJHVpZCl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdldGhlciB0aGUgc3BlY2lmaWVkIHVzZXIgYWNjb3VudCBoYXMgZXhwaXJlZC4gIFRoZSBtZXRob2Qgd2lsbCBhbHNvIHJldHVybiBmYWxzZSBpZiB0aGUgdWlkIGNhbm5vdCBiZSBmb3VuZCBvciBzb21lIG90aGVyIGVycm9yIG9jY3VycmVkLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskZXhwaXJlZCA9IG1hbXNfc21hcnR5Ojp1c2VyX2V4cGlyZWQoMjUpfTxiciAvPiYjMTIzO2lmICRleHBpcmVkfVVJRCAyNSBjYW4gbm8gbG9uZ2VyIGxvZ2luIHRvIHRoZSBzeXN0ZW0mIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX3Byb3BlcnRpZXMoJHVpZCl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuICBJZiB0aGUgdWlkIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyB1c2VkLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskdXNlcnByb3BzID0gbWFtc19zbWFydHk6OmdldF91c2VyX3Byb3BlcnRpZXMoNSl9PGJyIC8+JiMxMjM7JHVzZXJwcm9wc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfcHJvcGVydHkoJHByb3BlcnR5LFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgc3BlY2lmaWVkIHVpZC4gIElmIHRoZSB1aWQgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgdXNlZC48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcl9wcm9wZXJ0eSgnZnVsbG5hbWUnLDUpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZHJvcGRvd25fdGV4dCgkcHJvcG5hbWUsJHByb3B2YWx1ZSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRleHQgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgb3B0aW9uIHZhbHVlIGZvciBhIHNwZWNpZmllZCBkcm9wZG93biBwcm9wZXJ0eS48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZHJvcGRvd25fdGV4dCgnYWdlX3JhbmdlJywkb25lcHJvcHZhbHVlKX08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X211bHRpc2VsZWN0X3RleHQoJHByb3BuYW1lLCRwcm9wdmFsdWUpfTwvY29kZT48L3N0cm9uZz4NCiAgPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbiB0ZXh0cyBjb3JyZXNwb25kaW5nIHRvIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Ygb3B0aW9uIHZhbHVlcy48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzOyRmYXZvcml0ZV9mb29kcyA9IG1hbXNfc21hcnR5OjpnZXRfbXVsdGlzZWxlY3RfdGV4dCgnZmF2b3JpdGVfZm9vZHMnLCRvbmVwcm9wdmFsdWUpfTxiciAvPiYjMTIzOyRmYXZvcml0ZV9mb29kc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2dyb3VwX2xpc3QoKX08L2NvZGU+PC9zdHJvbmc+DQogIDxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSBvZiBNQU1TIGdyb3VwcyB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBkcm9wZG93bi48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mbHQ7c2VsZWN0IGlkPSJncm91cCImZ3Q7JiMxMjM7aHRtbF9vcHRpb25zIG9wdGlvbnMgPSBtYW1zX3NtYXJ0eTo6Z2V0X2dyb3VwX2xpc3QoKX0mbHQ7L3NlbGVjdCZndDs8L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfZ3JvdXBzKFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgTUFNUyBncm91cHMgdGhhdCB0aGlzIHVzZXIgYmVsb25ncyB0byAoaWYgYW55KS4gIFRoZSBvdXRwdXQgaXMgYW4gYXJyYXkgc3VpdGFibGUgZm9yIHVzZSBpbiBhIHNlbGVjdCBsaXN0ICh0aGUga2V5IGlzIHRoZSBncm91cGlkLCB2YWx1ZSBpcyB0aGUgZ3JvdXAgbmFtZSkuPC9wPg0KICA8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JG15Z3JvdXBzID0gbWFtc19zbWFydHk6OmdldF91c2VyX2dyb3VwcygpfQ0KJiMxMjM7JG15Z3JvdXBzfEBwcmludF9yfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpwcmVsb2FkX3VzZXJzKCR1aWRfbGlzdFssJGRlZXAgPSBmYWxzZV0pfTwvY29kZT48L3N0cm9uZz4NCiAgPHA+VGhpcyBmdW5jdGlvbiB3aWxsIHByZWxvYWQgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdXNlcnMuICBJdCBkb2VzIG5vdCByZXR1cm4gYW55IG91dHB1dC48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskbGlzdCA9IFsgNSwgMTAsIDExLCAxMywgMTggXX0NCiYjMTIzO21hbXNfc21hcnR5OjpwcmVsb2FkX3VzZXJzKCRsaXN0KX08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6aXNfdXNlcl9tZW1iZXJvZigkZ3JvdXBzWywkdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBib29sZWFuIGlmIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mIG9uZSB0aGUgc3BlY2lmaWVkIGdyb3Vwcy48L3A+DQogIDxwPlRoZSBncm91cHMgcGFyYW1ldGVyIGNhbiBiZSBhIGNvbW1hIGRlbGltaXRlZCBzdHJpbmcgb2YgZ3JvdXAgbmFtZXMsIG9yIGFuIGFycmF5IG9mIGdyb3VwIG5hbWVzLjwvcD4NCiAgPHA+SWYgdGhlIHVpZCBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcmlkIGlzIHVzZWQuPC9wPg0KICA8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7aWYgbWFtc19zbWFydHk6OmlzX3VzZXJfbWVtYmVyb2YoJ1N0YWZmLE1hbmFnZXJzJyl9SGVsbG8gQ3VzdG9tZXImIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPg0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/help_using_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkhvdyBkbyBJIHVzZSBpdDo8L2gzPg0KPHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gdGhlIGFjY2VzcyBhZG1pbiBwYW5lbCB0byB0aGUgTUFNUyBtb2R1bGUgdW5kZXIgdGhlICZxdW90O1VzZXJzICZhbXA7IEdyb3VwcyZxdW90OyBtZW51LjwvcD4NCjxwPllvdSBuZWVkIHRvIGRlZmluZSBhdCBsZWFzdCBvbmUgcHJvcGVydHkuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIGV0Yy48L3A+DQo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSAob3IgZW1haWwgYWRkcmVzcykgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3UuICBUaG91Z2ggeW91IGNhbiBwcm92aWRlIHByb3BlcnRpZXMgZm9yIGFkZGl0aW9uYWwgZW1haWwgYWRkcmVzc2VzLjwvcD4NCjxwPjxiPk5vdGU6PC9iPiBOZXcgaW5zdGFsbGF0aW9ucyBvZiB0aGUgTUFNUyBtb2R1bGUgc3BlY2lmeSB0aGF0IHRoZSB1c2VycyBlbWFpbCBhZGRyZXNzIGlzIHRoZWlyIHVzZXJuYW1lICh0aGlzIG9wdGlvbiBjYW4gYmUgY2hhbmdlZCBpbiB0aGUgbW9kdWxlcyBhZG1pbiBwYW5lbCkuICBTbyBpZiB1c2luZyB0aGlzIG9wdGlvbiB5b3Ugd2lsbCBub3QgbmVlZCB0byBjcmVhdGUgYW4gZW1haWwgYWRkcmVzcyBwcm9wZXJ0eS48L3A+DQo8cD5OZXh0IHlvdSBtdXN0IGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2hldGhlciBpdCBpcyBhbiBvcHRpb25hbCwgcmVxdWlyZWQsIG9yIGhpZGRlbiBmaWVsZC4gIEF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIGdyb3VwLjwvcD4NCjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuICBUYWtlIHNvbWUgdGltZSBoZXJlLCB0aGVyZSBhcmUgbnVtZXJvdXMgb3B0aW9ucy48L3A+DQo8cD5UaGlyZGx5IHlvdSBzaG91bGQgY3JlYXRlIHNvbWUgdXNlcnMuICBBZGRpbmcgdXNlcnMgaXMgYSB0d28gc3RlcCBwcm9jZXNzLiAgV2hlbiBjcmVhdGluZyBhIHVzZXIgeW91IGFyZSBhc2tlZCBmb3IgdGhlIHVzZXJuYW1lL2VtYWlsIGFuZCBwYXNzd29yZCwgYW5kIGFuIGV4cGlyeSBkYXRlIGZvciB0aGF0IHVzZXIuICBZb3UgdGhlbiBtdXN0IHNlbGVjdCB0aGUgZ3JvdXBzIHRoYXQgdGhhdCB1c2VyIGlzIGEgbWVtYmVyIG9mLCBhbmQgY2xpY2sgJnF1b3Q7TmV4dCZxdW90OzwvcD4NCjxwPjxlbT5Ob3RlOiA8L2VtPlRoaXMgaXMgYSBsYWJvdXIgaW50ZW5zaXZlIGFuZCBib3JpbmcgcHJvY2VzcywgaXQgaXMgZWFzaWVyIHRvIGxldCB1c2VycyByZWdpc3RlciB0aGVtc2VsdmVzIDxlbT4oU2VlIHRoZSBTZWxmUmVnaXN0cmF0aW9uIE1vZHVsZSk8L2VtPiwgYW5kIHRoZW4geW91IGNhbiBlZGl0IHRoZWlyIGdyb3VwIGluZm9ybWF0aW9uLiAgYnV0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBwbGVhc2UgY3JlYXRlIGF0IGxlYXN0IG9uZSB1c2VyPC9wPg0KPHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD4NCjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSAmIzEyMztNQU1TfSB0YWcgdG8geW91ciBwYWdlIG9yIHRlbXBsYXRlLiAgWW91IG11c3QgZW5zdXJlIHRoYXQgdGhpcyBwYWdlIGlzIHNldCB0byAmcXVvdDtub3QgY2FjaGUmcXVvdDsgd2hlbiBlZGl0aW5nIHRoZSBjb250ZW50IHBhZ2Uocykgd2hlcmUgdGhlIGxvZ2luIGZvcm0gaXMgZGlzcGxheWVkLiAgSWYgeW91IGNhbGwgdGhlICYjMTIzO01BTVN9IHRhZyBmcm9tIHdpdGhpbiBhIHBhZ2UgdGVtcGxhdGUsIHlvdSBtdXN0IGRpc2FibGUgY2FjaGluZyBvbiBhbGwgcGFnZXMgdGhhdCB1c2UgdGhhdCB0ZW1wbGF0ZS48L3A+DQo8cD5BZGRpbmcgcHJvdGVjdGVkIGNvbnRlbnQgdG8geW91ciBDTVNNUyBzaXRlIGlzIGFzIHNpbXBsZSBhcyBjcmVhdGluZyBuZXcgcGFnZXMgb2YgdHlwZSAmcXVvdDtQcm90ZWN0ZWQgQ29udGVudCZxdW90OyBhbmQgc2VsZWN0aW5nIHdoaWNoIHVzZXIgZ3JvdXBzIChvciBhbGwpIHRoYXQgYXJlIGFsbG93ZWQgdG8gdmlldyB0aGUgcGFnZS48L3A+DQo8cD48ZW0+T3B0aW9uYWxseTwvZW0+IENyZWF0ZSBhbm90aGVyIG5ldyBjb250ZW50IHBhZ2Ugb2YgdHlwZSAnRXJyb3IgSGFuZGxlcicgYW5kIHNldCB0aGUgZXJyb3IgaGFuZGxlciB0byA0MDMgZXJyb3IuICBJbiB0aGUgY29udGVudCBhcmVhIG9mIHRoYXQgcGFnZSwgeW91IHNob3VsZCBjYWxsICYjMTIzO01BTVN9IHRvIGRpc3BsYXkgYSBsb2dpbiBmb3JtIG9uIHRoZSA0MDMgZXJyb3IgcGFnZS48L3A+DQoNCjxoMz5TdHJvbmcgUGFzc3dvcmRzOjwvaDM+DQo8cD5UaGlzIG1vZHVsZSwgd2hlbiBmcmVzaGx5IGluc3RhbGxlZCAobm90IGFuIHVwZ3JhZGUpIGVuYWJsZXMgc3Ryb25nIHBhc3N3b3Jkcy4gIEF0IGEgbWluaW11bSBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIgYW5kIG9uZSBkaWdpdCBhcmUgcmVxdWlyZWQgdG8gYmUgaW4gZXZlcnkgcGFzc3dvcmQuICBUaGUgc2l0ZSBhZG1pbmlzdHJhdG9yIGNhbiBhbHNvIHNwZWNpZnkgb3RoZXIgb3B0aW9uYWwgY2hhcmFjdGVycywgb25lIG9mIHdoaWNoIG11c3QgYmUgcHJlc2VudCBpbiBhbGwgcGFzc3dvcmRzLjwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/importgroup.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZmlsZW5hbWV9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9maWxlbmFtZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbmV3bmFtZX08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X25ld25hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH0mbmJzcDt7JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/orig_changesettings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBjaGFuZ2Ugc2V0dGluZ3MgdGVtcGxhdGUgLS0+CjxkaXYgaWQ9Im1hbXNfY2hhbmdlc2V0dGluZ3Nmb3JtIj4KPGg0PnskbW9kLT5MYW5nKCd1c2VyX3NldHRpbmdzJyl9PC9oND4KCntpZiBpc3NldCgkbWVzc2FnZSkgJiYgJG1lc3NhZ2UgIT0gJyd9CiAge2lmIGlzc2V0KCRlcnJvcikgJiYgJGVycm9yICE9ICcnfQogICAgPHAgY2xhc3M9ImFsZXJ0IGFsZXJ0LWVycm9yIj57JG1lc3NhZ2V9PC9wPgogIHtlbHNlfQogICAgPHAgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KCnskc3RhcnRmb3JtfXt4dF9mb3JtX2NzcmZ9CiAge2lmICRjb250cm9sY291bnQgPiAwfQogIHtmb3JlYWNoICRjb250cm9scyBhcyAka2V5PT4kZmllbGR9CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8bGFiZWwgZm9yPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJjb2wtc20tMyB0ZXh0LXJpZ2h0IiBzdHlsZT0iY29sb3I6IHskZmllbGQtPmNvbG9yfGRlZmF1bHQ6J2luaGVyaXQnfSI+eyRmaWVsZC0+bWFya2VyfGRlZmF1bHQ6Jyd9IHskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICAgIHskZmllbGQtPmhpZGRlbnxkZWZhdWx0OicnfQogICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmhpZGRlbil9eyRmaWVsZC0+aGlkZGVufXsvaWZ9CgoJeyogYnVpbGQgdGhlIGZpZWxkIGl0c2VsZiAqfQoJe2lmICRmaWVsZC0+dHlwZSA9PSAnMCd9IHsqIHRleHQgKn0KCSAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiBzaXplPSJ7JGZpZWxkLT5sZW5ndGh9IiBtYXhsZW5ndGg9InskZmllbGQtPm1heGxlbmd0aH0iIHZhbHVlPSJ7JGZpZWxkLT52YWx1ZX0iIHtpZiAkZmllbGQtPnJlYWRvbmx5fXJlYWRvbmx5ey9pZn0vPgoJe2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gJ3Bhc3N3b3JkJ30geyogdGV4dCAqfQoJICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiBzaXplPSJ7JGZpZWxkLT5sZW5ndGh9IiBtYXhsZW5ndGg9InskZmllbGQtPm1heGxlbmd0aH0iIHZhbHVlPSJ7JGZpZWxkLT52YWx1ZX0iIHtpZiAkZmllbGQtPnJlYWRvbmx5fXJlYWRvbmx5ey9pZn0vPgoJe2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gMn0geyogZW1haWwgKn0KCSAgPGlucHV0IHR5cGU9ImVtYWlsIiBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIgc2l6ZT0ieyRmaWVsZC0+bGVuZ3RofSIgbWF4bGVuZ3RoPSJ7JGZpZWxkLT5tYXhsZW5ndGh9IiB2YWx1ZT0ieyRmaWVsZC0+dmFsdWV9IiB7aWYgJGZpZWxkLT5yZWFkb25seX1yZWFkb25seXsvaWZ9Lz4KCXtlbHNlaWYgJGZpZWxkLT50eXBlID09IDN9IHsqIHRleHRhcmVhICp9CiAgICAgICAgICB7eHRfdGV4dGFyZWEgaWQ9JGZpZWxkLT5pbnB1dF9pZCB3eXNpd3lnPSRmaWVsZC0+d3lzaXd5ZyBuYW1lPSRmaWVsZC0+aW5wdXRfbmFtZSBjb250ZW50PSRmaWVsZC0+dmFsdWUgY2xhc3M9ImZvcm0tY29udHJvbCJ9Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSAxfSB7KiBjaGVja2JveCAqfQoJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIgdmFsdWU9IjAiLz4KCSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iY2hlY2tib3giIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiB2YWx1ZT0iMSIge2lmICRmaWVsZC0+dmFsdWV9Y2hlY2tlZHsvaWZ9Lz4KCXtlbHNlaWYgJGZpZWxkLT50eXBlID09IDR9IHsqIGRyb3Bkb3duICp9CgkgICA8c2VsZWN0IGlkPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiB7aWYgJGZpZWxkLT5yZWFkb25seX1yZWFkb25seXsvaWZ9PgoJICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kZmllbGQtPnZhbHVlfQoJICAgPC9zZWxlY3Q+Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA1fSB7KiBtdWx0aXNlbGVjdCAqfQoJICAgPHNlbGVjdCBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfVtdIiB7aWYgJGZpZWxkLT5yZWFkb25seX1yZWFkb25seXsvaWZ9IG11bHRpcGxlPgoJICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kZmllbGQtPnNlbGVjdGVkfQoJICAgPC9zZWxlY3Q+Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA3fSB7KiByYWRpbyBncm91cCAqfQoJICAge2ZvcmVhY2ggJGZpZWxkLT5vcHRpb25zIGFzICRrZXkgPT4gJHZhbH0KCSAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiB2YWx1ZT0ieyRrZXl9IiB7aWYgJGtleT09JGZpZWxkLT52YWx1ZX1jaGVja2VkPSJjaGVja2VkInsvaWZ9PiB7JHZhbH08L2xhYmVsPgoJICAgey9mb3JlYWNofQoJe2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gNn0geyogaW1hZ2UgKn0KCSAgIHtpZiBpc3NldCgkZmllbGQtPmltYWdlX3VybCkgJiYgJGZpZWxkLT5pbWFnZV91cmx9PGltZyBzcmM9InskZmllbGQtPmltYWdlX3VybH0iIGFsdD0ieyRmaWVsZC0+aW1hZ2VfdXJsfSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiLz57L2lmfQoJICAge2lmIGlzc2V0KCRmaWVsZC0+cHJvbXB0MikgJiYgJGZpZWxkLT5wcm9tcHQyfTxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJjaGVja2JveCIgbmFtZT0ieyRmaWVsZC0+aW5wdXRfbmFtZTJ9IiB2YWx1ZT0iY2xlYXIiLz4geyRmaWVsZC0+cHJvbXB0Mn08L2xhYmVsPnsvaWZ9CgkgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSIvPgogCSAgIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIge2lmICRmaWVsZC0+cmVhZG9ubHl9cmVhZG9ubHl7L2lmfS8+Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA4fSB7KiBkYXRlICp9CgkgICB7JHN5PSRmaWVsZC0+c3RhcnR5ZWFyfGRlZmF1bHQ6Jy01J30KCSAgIHskZXk9JGZpZWxkLT5zdGFydHllYXJ8ZGVmYXVsdDonKzEwJ30KCSAgIHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZmllbGQtPmlucHV0X25hbWUgc3RhcnRfeWVhcj0kc3kgZW5kX3llYXI9JGV5IHRpbWU9JGZpZWxkLT52YWx1ZX0KCXsvaWZ9CiAgICAgICAgeyRmaWVsZC0+YWRkdGV4dHxkZWZhdWx0OicnfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIHsvZm9yZWFjaH0KICB7L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTMiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG5fYWN0aXZlIiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCI+eyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfTwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CnskaGlkZGVufGRlZmF1bHQ6Jyd9eyRlbmRmb3JtfQo8L2Rpdj4KPCEtLSBjaGFuZ2Ugc2V0dGluZ3MgdGVtcGxhdGUgLS0+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_force_newpw_form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogc3lzdGVtIGRlZmF1bHQgZm9yY2UgbmV3IHBhc3N3b3JkIGZvcm0gdGVtcGxhdGUgKn0KPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtb2QtPkxhbmcoJ21zZ19mb3JjZV9uZXdwdycpfTwvZGl2PgoKe2lmIGlzc2V0KCRlcnJvcil9CjxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciI+eyRlcnJvcn08L2Rpdj4Key9pZn0KCnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJyb3ciPgogIDxkaXYgY2xhc3M9ImNvbC14cy0zIHRleHQtcmlnaHQiPiogeyRtb2QtPkxhbmcoJ3Bhc3N3b3JkJyl9OjwvZGl2PgogIDxkaXYgY2xhc3M9ImNvbC14cy05Ij4KICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX3Bhc3N3b3JkIiB2YWx1ZT0iIiByZXF1aXJlZC8+CiAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJyb3ciPgogIDxkaXYgY2xhc3M9ImNvbC14cy0zIHRleHQtcmlnaHQiPiogeyRtb2QtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyl9OjwvZGl2PgogIDxkaXYgY2xhc3M9ImNvbC14cy05Ij4KICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX3JlcGVhdHBhc3N3b3JkIiB2YWx1ZT0iIiByZXF1aXJlZC8+CiAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJyb3ciPgogIDxkaXYgY2xhc3M9ImNvbC14cy0zIj4mbmJzcDs8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjb2wteHMtOSI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogIDwvZGl2Pgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_forgotpassword1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9yZ290IHBhc3N3b3JkIHRlbXBsYXRlICp9CjxoND57JG1vZC0+TGFuZygndGl0bGVfZm9yZ290cHcnKX08L2g0Pgp7aWYgIWVtcHR5KCRtZXNzYWdlKSB9CiAge2lmICFlbXB0eSgkZXJyb3IpIH0KICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciI+eyRtZXNzYWdlfTwvZGl2PgogIHtlbHNlfQogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CntlbHNlfQogIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbW9kLT5MYW5nKCdsb3N0cHdfbWVzc2FnZScpfTwvZGl2Pgp7L2lmfQoKe2lmICFpc3NldCgkZm9yZ290cHdkb25lKX0KICB7aWYgaXNzZXQoJHN0YXJ0Zm9ybSl9CiAgICB7JHN0YXJ0Zm9ybX17eHRfZm9ybV9jc3JmfQogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgdGV4dC1yaWdodCI+CiAgICAgICAge2lmICR1c2VybmFtZV9pc19lbWFpbH0KICAgICAgICAgIHskbW9kLT5MYW5nKCdwcm9tcHRfZW1haWwnKX06CiAgICAgICAge2Vsc2V9CiAgICAgICAgICB7JG1vZC0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyl9OgogICAgICAgIHsvaWZ9CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTAiPgogICAgICAgIDxpbnB1dCBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfdXNlcm5hbWUiIHR5cGU9IntpZiAkdXNlcm5hbWVfaXNfZW1haWx9ZW1haWx7ZWxzZX10ZXh0ey9pZn0iIHNpemU9InskdW5mbGRsZW59IiBtYXhsZW5ndGg9InskbWF4X3VuZmxkbGVufSIgdmFsdWU9InskdXNlcm5hbWV9IiByZXF1aXJlZC8+ICoKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIHtpZiBpc3NldCgkY2FwdGNoYSl9CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMiB0ZXh0LXJpZ2h0Ij57JGNhcHRjaGFfdGl0bGV9OjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTAiPnskY2FwdGNoYX0KICAgICAgICB7aWYgaXNzZXQoJGlucHV0X2NhcHRjaGEpfTxkaXYgY2xhc3M9InJvdyI+eyRpbnB1dF9jYXB0Y2hhfTwvcD57L2lmfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgey9pZn0KICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0xMCBjb2wtc20tb2Zmc2V0LTIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICAgICAgPGlucHV0IGlkPSJtYW1zX2NhbmNlbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfY2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgeyRlbmRmb3JtfQogIHsvaWZ9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_forgotpassword2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdmVyaWZ5IGVtYWlsIHRlbXBsYXRlIC0tIGZvcm1lcmx5IGZvZ290IHBhc3N3b3JkIGVtYWlsIHRlbXBsYXRlICp9CjxoMz57JHRpdGxlfTwvaDM+CjxkaXY+eyRtZXNzYWdlfTwvZGl2Pgo8aDQ+eyRwcm9tcHRfY29kZX06IHskZGF0YV9jb2RlfTwvaDQ+CjxwPnskcHJvbXB0X2xpbmt9OiA8YSBocmVmPSJ7JGRhdGFfdXJsfSI+eyRkYXRhX3VybH08L2E+PC9wPgp7L3N0cmlwfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_forgotpassword3.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9yZ290IHBhc3N3b3JkIHZlcmlmaWNhdGlvbiB0ZW1wbGF0ZSAqfQo8aDQ+eyRtb2QtPkxhbmcoJ3ZlcmlmeV9pZGVudGl0eScpfTwvaDQ+CntpZiAhZW1wdHkoJG1lc3NhZ2UpfQogIHtpZiAhZW1wdHkoJGVycm9yKSB9CiAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskbWVzc2FnZX08L2Rpdj4KICB7ZWxzZX0KICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbWVzc2FnZX08L2Rpdj4KICB7L2lmfQp7L2lmfQoKe2lmIGlzc2V0KCRzdGFydGZvcm0pfQogIHskc3RhcnRmb3JtfXt4dF9mb3JtX2NzcmZ9CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKX06PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgIDxpbnB1dCB0eXBlPSJ7aWYgJHVzZXJuYW1lX2lzX2VtYWlsfWVtYWlse2Vsc2V9dGV4dHsvaWZ9IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfdXNlcm5hbWUiIHNpemU9InskdW5mbGRsZW59IiBtYXhsZW5ndGg9InskbWF4X3VuZmxkbGVufSIgdmFsdWU9InskdXNlcm5hbWV9IiBkaXNhYmxlZD0iZGlzYWJsZWQiLz4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMyB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NvZGUnKX06PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfY29kZSIgdmFsdWU9InskY29kZX0iIHNpemU9IjQwIiBtYXhsZW5ndGg9IjQwIiByZXF1aXJlZCAvPiAqCiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTMgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpfTo8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfcGFzc3dvcmQxIiB2YWx1ZT0ieyRwYXNzd29yZDF9IiBzaXplPSJ7JHB3ZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF9wd2ZsZGxlbn0iIHJlcXVpcmVkLz4gKgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdyZXBlYXRwYXNzd29yZCcpfTo8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfcGFzc3dvcmQyIiB2YWx1ZT0ieyRwYXNzd29yZDJ9IiBzaXplPSJ7JHB3ZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF9wd2ZsZGxlbn0iIHJlcXVpcmVkLz4gKgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIHRleHQtcmlnaHQiPiZuYnNwOzwvZGl2PgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPC9kaXY+CiAgPC9kaXY+CnskZW5kZm9ybX0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_loginform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9naW4gZm9ybSB0ZW1wbGF0ZSAqfQp7KiB0aGlzIGlzIGEgc2FtcGxlIHRlbXBsYXRlLCBmZWVsIGZyZWUgdG8gY3VzdG9taXplIGl0ICp9CntpZiBpc3NldCgkYWx0X2xvZ2luZm9ybSl9CiAgPGRpdiBjbGFzcz0icm93IiBpZD0iYWx0bG9naW4iPnskYWx0X2xvZ2luZm9ybX08L2Rpdj48YnIvPgp7L2lmfQoKPGZpZWxkc2V0IGlkPSJsb2dpbmZvcm0iPgogIDxsZWdlbmQ+eyRNQU1TLT5MYW5nKCdwcm9tcHRfbm9ybWFsbG9naW4nKX06PC9sZWdlbmQ+CiAgeyRzdGFydGZvcm19e3h0X2Zvcm1fY3NyZn0KCiAgeyoKICAgKiBhIHNpbXBsZSBob25leXBvdCBjYXB0Y2hhLi4uLmlmIHRoaXMgZmllbGQgaGFzIGEgdmFsdWUgYWZ0ZXIgc3VibWl0IGFuIGVycm9yIHdpbGwgYmUgdGhyb3duCiAgICogZGVsZXRpbmcgdGhpcyBmaWVsZCB3aWxsIHNpbXBseSBkaXNhYmxlIHRoZSBob25leXBvdC4KICAgKiBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgZmllbGQgYmUgaGlkZGVuIHdpdGggQ1NTIHJhdGhlciB0aGFuIHVzaW5nIGEgaGlkZGVuIGlucHV0IGZpZWxkLgogICAqfQogIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfX2RhdGEiIHZhbHVlPSIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIvPgoKICB7aWYgJGVycm9yfTxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciI+eyRlcnJvcn08L2Rpdj57L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00IHRleHQtcmlnaHQiPjxsYWJlbCBmb3I9Im1hbXNfdXNlcm5hbWUiPip7JHByb21wdF91c2VybmFtZX06PC9sYWJlbD48L3A+CiAgICA8cCBjbGFzcz0iY29sLW1kLTgiPgogICAgICA8aW5wdXQgdHlwZT0ie2lmICR1c2VybmFtZV9pc19lbWFpbH1lbWFpbHtlbHNlfXRleHR7L2lmfSIgaWQ9Im1hbXNfdXNlcm5hbWUiIG5hbWU9InskZmxkbmFtZV91c2VybmFtZX0iIHZhbHVlPSJ7JHVzZXJuYW1lfSIgc2l6ZT0ieyR1c2VybmFtZV9zaXplfSIgbWF4bGVuZ3RoPSJ7JHVzZXJuYW1lX21heGxlbmd0aH0iIHtpZiAhJHVzZXJuYW1lX2lzX2VtYWlsfWF1dG9jb3JyZWN0PSJvZmYiIGF1dG9jYXBpdGFsaXplPSJvZmYiey9pZn0gcmVxdWlyZWQvPgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00IHRleHQtcmlnaHQiPjxsYWJlbCBmb3I9Im1hbXNfcGFzc3dvcmQiPip7JHByb21wdF9wYXNzd29yZH06PC9sYWJlbD48L3A+CiAgICA8cCBjbGFzcz0iY29sLW1kLTgiPgogICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJtYW1zX3Bhc3N3b3JkIiBuYW1lPSJ7JGZsZG5hbWVfcGFzc3dvcmR9IiB2YWx1ZT0ieyRwYXNzd29yZH0iIHNpemU9InskcGFzc3dvcmRfc2l6ZX0iIG1heGxlbmd0aD0ieyRwYXNzd29yZF9tYXhsZW5ndGh9IiByZXF1aXJlZC8+CiAgICA8L3A+CiAgPC9kaXY+CgogIHtpZiBpc3NldCgkY2FwdGNoYSl9CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJjb2wtbWQtNCB0ZXh0LXJpZ2h0Ij57JGNhcHRjaGFfdGl0bGV9PC9wPgogICAgPGRpdiBjbGFzcz0iY29sLW1kLTgiPnskY2FwdGNoYX0KICAgICAge2lmICRuZWVkX2NhcHRjaGFfaW5wdXR9CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19pbnB1dF9jYXB0Y2hhIiBzaXplPSIxMCIvPgogICAgICA8L2Rpdj4KICAgICAgey9pZn0KICAgIDwvZGl2PgogIDwvZGl2PgogIHsvaWZ9CgogIHtpZiBpc3NldCgkcHJvbXB0X3JlbWVtYmVybWUpfQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0iY29sLW1kLTQiPjwvcD4KICAgIDxwIGNsYXNzPSJjb2wtbWQtOCI+CiAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFtc19yZW1lbWJlcm1lIiB2YWx1ZT0iMSIge2lmICRyZW1lbWJlcm1lPT0xfWNoZWNrZWR7L2lmfS8+IHskcHJvbXB0X3JlbWVtYmVybWV9PC9sYWJlbD4KICAgIDwvcD4KICA8L2Rpdj4KICB7L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00Ij48L3A+CiAgICA8cCBjbGFzcz0iY29sLW1kLTgiPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWFjdGl2ZSIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX3N1Ym1pdCI+eyRNQU1TLT5MYW5nKCdsb2dpbicpfTwvYnV0dG9uPgogICAgPC9wPgogIDwvZGl2PgoKICB7aWYgaXNzZXQoJHVybF9sb3N0dW4pIHx8IGlzc2V0KCR1cmxfZm9yZ290KX0KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00Ij48L3A+CiAgICA8cCBjbGFzcz0iY29sLXNtLTgiPgogICAgICB7aWYgaXNzZXQoJHVybF9mb3Jnb3QpfQogICAgICAgIDxhIGhyZWY9InskdXJsX2ZvcmdvdH0iIHRpdGxlPSJ7JE1BTVMtPkxhbmcoJ2luZm9fZm9yZ290cHcnKX0iPnskTUFNUy0+TGFuZygnZm9yZ290cHcnKX08L2E+CiAgICAgIHsvaWZ9CiAgICAgIHtpZiBpc3NldCgkdXJsX2xvc3R1bil9CiAgICAgICAgfCA8YSBocmVmPSJ7JHVybF9sb3N0dW59IiB0aXRsZT0ieyRNQU1TLT5MYW5nKCdpbmZvX2xvc3R1bicpfSI+eyRNQU1TLT5MYW5nKCdsb3N0dXNlcm5hbWUnKX08L2E+CiAgICAgIHsvaWZ9CiAgICA8L3A+CiAgPC9kaXY+CiAgey9pZn0KICB7JGVuZGZvcm19CjwvZmllbGRzZXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_logoutform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9nb3V0IGZvcm0gdGVtcGxhdGUgKn0Ke2lmIGlzc2V0KCRhbHRfbG9nb3V0Zm9ybSl9eyRhbHRfbG9nb3V0Zm9ybX17L2lmfQp7aWYgaXNzZXQoJG1lc3NhZ2UpfTxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbWVzc2FnZX08L2Rpdj57L2lmfQo8cD57JHByb21wdF9sb2dnZWRpbn0mbmJzcDt7JHVzZXJuYW1lfTwvcD4KPHA+PGEgaHJlZj0ieyR1cmxfY2hhbmdlc2V0dGluZ3N9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fY2hhbmdlc2V0dGluZ3MnKX0iPnskbW9kLT5MYW5nKCdwcm9tcHRfY2hhbmdlc2V0dGluZ3MnKX08L2E+PC9wPgp7aWYgaXNzZXQoJHVybF9sb2dvdXQpfQo8cD48YSBocmVmPSJ7JHVybF9sb2dvdXR9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fbG9nb3V0Jyl9Ij57JG1vZC0+TGFuZygnbG9nb3V0Jyl9PC9hPjwvcD4Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_lostunform_confirm_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9zdCB1c2VybmFtZSBjb25maXJtIHRlbXBsYXRlIGZvcm0gKn0KPGgzPnskcHJlbXNnfTwvaDM+CjxwPnskcHJvbXB0X3lvdXJ1c2VybmFtZWlzfTogPHN0cm9uZz57JHVzZXJuYW1lfTwvc3Ryb25nPi48L3A+CjxwPnskcG9zdG1zZ308L3A+]]></data>
	</file>
	<file>
	  <filename>/templates/orig_lostunform_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9zdCB1c2VybmFtZSBjb25maXJtIHRlbXBsYXRlIGZvcm0gKn0KPGg0PnskbW9kLT5MYW5nKCd0aXRsZV9sb3N0dXNlcm5hbWUnKX08L2g0Pgo8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj57JG1vZC0+TGFuZygnaW5mb19sb3N0dXNlcm5hbWUnKX08L2Rpdj4Ke2lmIGlzc2V0KCRtZXNzYWdlKX08ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskbWVzc2FnZX08L2Rpdj57L2lmfQp7aWYgY291bnQoJGNvbnRyb2xzKX0KICB7JHN0YXJ0Zm9ybX0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9bWFtc19fZGF0YSIgdmFsdWU9IiIvPnsqIHNpbXBsZSBob25leXBvdCBjYXB0Y2hhICp9CiAgICB7Zm9yZWFjaCBmcm9tPSRjb250cm9scyBpdGVtPSdlbnRyeSd9CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgdGV4dC1yaWdodCI+eyRlbnRyeS0+cHJvbXB0fTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTgiPgoJICAgIHtpZiAkZW50cnktPnR5cGUgPT0gJ19wYXNzd29yZCd9CgkgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InskZW50cnktPmZsZG5hbWV9IiB2YWx1ZT0ieyRlbnRyeS0+dmFsfSIgc2l6ZT0ieyRlbnRyeS0+bGVuZ3RofSIgbWF4bGVuZ3RoPSJ7JGVudHJ5LT5tYXhsZW5ndGh9Ii8+CgkgICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2xvc3R1bl9wd2ZpZWxkJyl9CgkgICAge2Vsc2UgaWYgJGVudHJ5LT50eXBlID09IDB9CgkgICAgICB7KiB0ZXh0ICp9CgkgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRlbnRyeS0+ZmxkbmFtZX0iIHZhbHVlPSJ7JGVudHJ5LT52YWx9IiBzaXplPSJ7JGVudHJ5LT5sZW5ndGh9IiBtYXhsZW5ndGg9InskZW50cnktPm1heGxlbmd0aH0iLz4KCSAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fbG9zdHVuX3RleHRmaWVsZCcpfQoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDF9CgkgICAgICB7KiBjaGVja2JveCAqfQoJICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGVudHJ5LT5mbGRuYW1lfSIgdmFsdWU9IjEiIHtpZiAkZW50cnktPnZhbH1jaGVja2Vkey9pZn0vPgoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDJ9CgkgICAgICB7KiBlbWFpbCAqfQoJICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJ7JGVudHJ5LT5mbGRuYW1lfSIgdmFsdWU9InskZW50cnktPnZhbH0iIHNpemU9InskZW50cnktPmxlbmd0aH0iIG1heGxlbmd0aD0ieyRlbnRyeS0+bWF4bGVuZ3RofSIvPgoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDN9CgkgICAgICB7KiB0ZXh0YXJlYSAqfQoJICAgICAgPHRleHRhcmVhIG5hbWU9InskZW50cnktPmZsZG5hbWV9IiByb3dzPSIzIiBjb2xzPSI1MCI+eyRlbnRyeS0+dmFsfTwvdGV4dGFyZWE+CgkgICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2xvc3R1bl90ZXh0YXJlYScpfQoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDR9CgkgICAgICB7KiBkcm9wZG93biAqfQoJICAgICAgPHNlbGVjdCBuYW1lPSJ7JGVudHJ5LT5mbGRuYW1lfSI+CgkgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+eyRtb2QtPkxhbmcoJ2Rvbm90a25vdycpfTwvb3B0aW9uPgoJCXtodG1sX29wdGlvbnMgb3B0aW9ucz0kZW50cnktPm9wdGlvbnMgc2VsZWN0ZWQ9JGVudHJ5LT52YWx9CgkgICAgICA8L3NlbGVjdD4KCSAgICB7ZWxzZWlmICRlbnRyeS0+dHlwZSA9PSA1fQoJICAgICAgeyogbXVsdGlzZWxlY3QgKn0KCSAgICAgIDxzZWxlY3QgbmFtZT0ieyRlbnRyeS0+ZmxkbmFtZX1bXSIgbXVsdGlwbGUgc2l6ZT0ieyRlbnRyeS0+bGVuZ3RofSI+CgkJe2h0bWxfb3B0aW9ucyBvcHRpb25zPSRlbnRyeS0+b3B0aW9ucyBzZWxlY3RlZD0kZW50cnktPnZhbH0KCSAgICAgIDwvc2VsZWN0PgoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDd9CgkgICAgICB7KiByYWRpb2J0bnMgKn0KCSAgICAgIHtmb3JlYWNoICRlbnRyeS0+b3B0aW9ucyBhcyAka2V5ID0+ICR2YWx9CgkgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InskZW50cnktPmZsZG5hbWV9IiB2YWx1ZT0ieyRrZXl9IiB7aWYgJGtleSA9PSAkZW50cnktPnZhbH1jaGVja2Vkey9pZn0vPiB7JHZhbH08L2xhYmVsPgoJICAgICAgICB7aWYgISR2YWxAbGFzdH08YnIvPnsvaWZ9CgkgICAgICB7L2ZvcmVhY2h9CgkgICAge2Vsc2VpZiAkZW50cnktPnR5cGUgPT0gOH0KCSAgICAgIHsqIGRhdGUgKn0KCSAgICAgIHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZW50cnktPmZsZG5hbWUgc3RhcnRfeWVhcj0kZW50cnktPnN0YXJ0X3llYXIgZW5kX3llYXI9JGVudHJ5LT5lbmRfeWVhciB0aW1lPSRlbnRyeS0+dmFsIGFsbF9lbXB0eT0nLS0nfQoJICAgIHsvaWZ9CgkgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICB7L2ZvcmVhY2h9CiAgICB7aWYgaXNzZXQoJGNhcHRjaGEpfQogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxwIGNsYXNzPSJjb2wtc20tNCB0ZXh0LXJpZ2h0Ij57JGNhcHRjaGFfdGl0bGV9PC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS04Ij57JGNhcHRjaGF9CiAgICAgICAgICB7aWYgJG5lZWRfY2FwdGNoYV9pbnB1dH0KICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBjb2wtc20tMTIiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX2lucHV0X2NhcHRjaGEiIHNpemU9IjEwIi8+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIHsvaWZ9Cgk8L2Rpdj4KICAgICAgPC9kaXY+CiAgICB7L2lmfQogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgdGV4dC1yaWdodCI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS04Ij4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgeyRlbmRmb3JtfQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_notification_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdGhpcyB0ZW1wbGF0ZSBkZWZpbmVzIGhvdyBub3RpZmljYXRpb24gZW1haWxzIHdpbGwgYmUgc2VudCAqfQp7KiB0aGUgc2FtZSB0ZW1wbGF0ZSBpcyB1c2VkIGZvciBhbGwgbm90aWZpY2F0aW9uIGV2ZW50cyBzbyB5b3UgbWF5IG5lZWQgCiAgIHRvIHRocm93IGluIHNvbWUgbG9naWMgaGVyZSB0byBkaXNwbGF5IGFsbCBvZiB0aGUgaW5mb3JtYXRpb24geW91IHdhbnQKICAgaW4gZWFjaCBlbWFpbC4gKn0KeyogYWxsIHNtYXJ0eSB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgaW4gdGhpcyB0ZW1wbGF0ZSwgaW5jbHVkaW5nIGZ1bmN0aW9ucwogICBmcm9tIGN1c3RvbWNvbnRlbnQgZm9yIGZyb250ZW5kIGdlbmVyYXRlZCBldmVudHMgKn0KeyogSSBlbmNvdXJhZ2UgeW91IHRvIHVzZSB0aGUge2dldF90ZW1wbGF0ZV92YXJzfSBzbWFydHkgcGx1Z2luIGFuZCB0aGUKICAgcHJpbnRfciBzbWFydHkgbW9kaWZpZXIgdG8gc2VlIHdoYXQgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgKn0KCntnZXRfdGVtcGxhdGVfdmFyc30=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_resetsession_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogcmVzZXQgc2Vzc2lvbiB0ZW1wbGF0ZSAqfQp7KiBOT1RFOiB0aGlzIHRlbXBsYXRlIHJlcXVpcmVzIGpxdWVyeSBiZSBhdmFpbGFibGUgaW4gYW55IHBhZ2UgdGhhdCBpdCBpcyB1c2VkIG9uICp9Cgo8cD48YSBocmVmPSJqYXZhc2NyaXB0OjsiIG5hbWU9Im1hbXNfbWFudWFsX3Jlc2V0Ij5DbGljayBIZXJlIFRvIENvbmZpcm0gTG9naW4gU3RhdHVzPC9hPjwvcD57KiBzYWZlIHRvIHJlbW92ZSB0aGlzICp9Cgp7KiBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG1vZGFsIHdpbmRvdyBhbmQgdGhlIG1hc2suLi4gdGhlc2UgY2FuIGJlIHJlbW92ZWQgYW5kIHBsYWNlZCBpbiBhIENNU01TIHN0eWxlc2hlZXQgKn0Ke2xpdGVyYWx9CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cm1hbXNfbW9kYWwgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwZjsKICBwYWRkaW5nOiAycHg7CiAgbWFyZ2luOiAgMnB4Owp9CiNtYW1zX21hc2sgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7Cn0KI21hbXNfbW9kYWwgLnRpdGxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmOwogIGNvbG9yOiAgI2ZmZjsKICBwYWRkaW5nOiAwcHg7Cn0KPC9zdHlsZT4Key9saXRlcmFsfQoKe2NhcHR1cmUgYXNzaWduPSdtYW1zX3RoZWZvcm0nfXtzdHJpcH0KeyogdGhlIHJlc2V0LXNlc3Npb24gZm9ybSwgYSBzaW1wbGUgZm9ybSB0byBkaXNwbGF5IGEgbWVzc2FnZSB3aXRoIGEgdGl0bGUgdG8gdGhlIHVzZXIgd2l0aCB0d28gb3B0aW9ucy4uLiBva2F5LCBhbmQgY2FuY2VsLi4uIHRoZSBuYW1lIG9mIHRoZXNlIGJ1dHRvbnMgaXMgaW1wb3J0YW50LCBhcyB3ZWxsIHRoZSBzdHJpcCB0YWcgaXMgaW1wb3J0YW50ICp9Cjxmb3JtIGFjdGlvbj0iamF2YXNjcmlwdDo7Ij4KPHAgY2xhc3M9InRpdGxlIj57JG1vZC0+TGFuZygndGl0bGVfcmVzZXRfc2Vzc2lvbicpfTwvcD4KPHAgY2xhc3M9InJvdyI+eyRtb2QtPkxhbmcoJ21zZ19yZXNldF9zZXNzaW9uJyl9PC9wPgo8cCBjbGFzcz0icm93Ij4KICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJtYW1zX29rIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ29rJyl9Ii8+CiAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibWFtc19jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CjwvcD4KPC9mb3JtPgp7L3N0cmlwfXsvY2FwdHVyZX0KCntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCi8vIHRoZSB0aW1lciBpbnRlcnZhbCAoaG93IG9mdGVuIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGRpYWxvZyB0byB5b3VyIHVzZXJzCnZhciB0aW1lcl9pbnRlcnZhbCA9IHsvbGl0ZXJhbH17JHNlc3Npb25fdGltZW91dH17bGl0ZXJhbH0gLSAzMDsKCi8vIGEgZnVuY3Rpb24gdG8gaGlkZSB0aGUgbW9kYWwgZGlhbG9nIC0tIHlvdSBjYW4gbW9kaWZ5IHRoaXMgZnVuY3Rpb24KZnVuY3Rpb24gbWFtc19jbG9zZV9tb2RhbCgpCnsKICAgalF1ZXJ5KCcjbWFtc19tb2RhbCcpLmZhZGVPdXQoMjAwMCk7CiAgIGpRdWVyeSgnI21hbXNfbWFzaycpLmZhZGVPdXQoMTAwMCk7Cn0KCi8vIGEgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgbW9kYWwgZGlhbG9nLi4uIHlvdSBjYW4gbW9kaWZ5IHRoaXMgZnVuY3Rpb24KZnVuY3Rpb24gbWFtc19vcGVuX21vZGFsKCkKewogIHZhciBtYXNrSGVpZ2h0ID0galF1ZXJ5KGRvY3VtZW50KS5oZWlnaHQoKTsKICB2YXIgbWFza1dpZHRoID0galF1ZXJ5KGRvY3VtZW50KS53aWR0aCgpOwoKICAvLyBzZXQgdGhlIG1hc2sgc2l6ZSB0byBmaWxsIHVwIHRoZSB3aG9sZSBzY3JlZW4KICBqUXVlcnkoJyNtYW1zX21hc2snKS5jc3Moeyd3aWR0aCc6bWFza1dpZHRoLCdoZWlnaHQnOm1hc2tIZWlnaHR9KTsKCiAgLy8gdHJhbnNpdGlvbiBlZmZlY3QKICBqUXVlcnkoJyNtYW1zX21hc2snKS5mYWRlSW4oMTAwMCk7CiAgalF1ZXJ5KCcjbWFtc19tYXNrJykuZmFkZVRvKCJzbG93IiwwLjgpOwoKICAvLyBnZXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgcG9wdXAKICB2YXIgd2luSGVpZ2h0ID0galF1ZXJ5KHdpbmRvdykuaGVpZ2h0KCk7CiAgdmFyIHdpbldpZHRoID0galF1ZXJ5KHdpbmRvdykud2lkdGgoKTsKCiAgdmFyIHBvcHVwSGVpZ2h0ID0galF1ZXJ5KCcjbWFtc19tb2RhbCcpLmhlaWdodCgpOwogIHZhciBwb3B1cFdpZHRoICA9IGpRdWVyeSgnI21hbXNfbW9kYWwnKS53aWR0aCgpOwoKICB2YXIgdG9wID0gd2luSGVpZ2h0LzIgLSBwb3B1cEhlaWdodC8yOwogIHZhciBsZWZ0ID0gd2luV2lkdGgvMiAtIHBvcHVwV2lkdGgvMjsKICAvLyBzZXQgdGhlIHBvcHVwIHdpbmRvdyB0byBjZW50ZXIKICBqUXVlcnkoJyNtYW1zX21vZGFsJykuY3NzKHsndG9wJzp0b3AsJ2xlZnQnOmxlZnR9KTsKCiAgLy8gdHJhbnNpdGlvbiBlZmZlY3QKICBqUXVlcnkoJyNtYW1zX21vZGFsJykuZmFkZUluKDIwMDApOwp9CgpmdW5jdGlvbiBtYW1zX3VzZXJfY2FuY2VsbGVkKCkKewogIC8vIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBtYXkgYmUgY3VzdG9taXplZCB0byBhbGxvdyBkaXNwbGF5aW5nIGEgbWVzc2FnZSB0byB0aGUgdXNlcgogIC8vIHRvIGluZGljYXRlIHRoYXQgdGhleSBtYXkgYmUgbG9nZ2VkIG91dCBhdCBhbnkgdGltZS4KICBhbGVydCgnWW91IGhhdmUgY2hvc2VuIHRvIGRpc3JlZ2FyZCB0aGUgc2Vzc2lvbiB3YXJuaW5nLCB5b3UgbWF5IGNvbnRpbnVlIHRvIGJyb3dzZSB0aGlzIHNpdGUgaG93ZXZlciBzb21lIGZ1bmN0aW9uYWxpdHkgbWF5IGJlIHVuYXZhaWxhYmxlIHRvIHlvdSB1bnRpbCB5b3UgbG9naW4gYWdhaW4nKTsKfQoKLy8gKgovLyAqIGRvIG5vdCBtb2RpZnkgYmVsb3cgaGVyZSB1bmxlc3MgeW91IGFyZSBhbiBleHBlcmllbmNlZCBqcXVlcnkgcHJvZ3JhbW1lciAqCi8vICoKCmlmKCB0aW1lcl9pbnRlcnZhbCA8PSAwICkKICB7CiAgICAgdGltZXJfaW50ZXJ2YWwgPSAwOwogIH0KdmFyIGRpYWxvZ2NvbnRlbnRzID0gJ3svbGl0ZXJhbH17JG1hbXNfdGhlZm9ybX17bGl0ZXJhbH0nOwoKCi8vIHdlIGhhdmUgalF1ZXJ5CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAvLyBjcmVhdGUgYSBuZXcgaWQgZm9yIG91ciBzdHVmZgogIGpRdWVyeSgnYm9keScpLmFwcGVuZCgnPGRpdiBpZD0ibWFtc19ib2R5Ij48L2Rpdj4nKTsKICAKICAvLyBjcmVhdGUgdGhlIG1hc2sgYW5kIGFwcGVuZCBpdCB0byB0aGUgZG9tCiAgalF1ZXJ5KCcjbWFtc19ib2R5JykuYXBwZW5kKCc8ZGl2IGlkPSJtYW1zX21hc2siPjwvZGl2PicpOwoKICAvLyBjcmVhdGUgdGhlIG1vZGFsIGRpYWxvZyBhbmQgYXBwZW5kIGl0IHRvIHRoZSBET00KICBqUXVlcnkoJyNtYW1zX2JvZHknKS5hcHBlbmQoJzxkaXYgaWQ9Im1hbXNfbW9kYWwiPicrZGlhbG9nY29udGVudHMrJzwvZGl2PicpOwogIAogIC8vIGFuZCBhIGp1bmsgZGl2CiAgalF1ZXJ5KCcjbWFtc19ib2R5JykuYXBwZW5kKCc8ZGl2IGlkPSJtYW1zX2p1bmsiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9kaXY+Jyk7CgogIC8vIGhhbmRsZSBjbGljayBldmVudHMKICBqUXVlcnkoJyNtYW1zX21vZGFsIGlucHV0W25hbWU9bWFtc19va10nKS5jbGljayhmdW5jdGlvbihlKXsKICAgIGUucHJldmVudERlZmF1bHQoKTsKCiAgICAvLyBkbyB0aGUgYWpheCByZXF1ZXN0CiAgICB2YXIgdXJsID0gJ3svbGl0ZXJhbH17JHJlc2V0X3VybH17bGl0ZXJhbH0nOwogICAgdmFyIHVybCA9IHVybC5yZXBsYWNlKC9hbXA7L2csJycpOwogICAgalF1ZXJ5KCcjbWFtc19qdW5rJykubG9hZCh1cmwpOwoKICAgIC8vIGFuZCBkb25lLgogICAgI21hbXNfY2xvc2VfbW9kYWwoKTsKICAgfSk7CiAgalF1ZXJ5KCcjbWFtc19tb2RhbCBpbnB1dFtuYW1lPW1hbXNfY2FuY2VsXScpLmNsaWNrKGZ1bmN0aW9uKGUpewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgI21hbXNfY2xvc2VfbW9kYWwoKTsKICAgICNtYW1zX3VzZXJfY2FuY2VsbGVkKCk7CiAgfSk7CiAgalF1ZXJ5KCdhW25hbWU9bWFtc19tYW51YWxfcmVzZXRdJykuY2xpY2soZnVuY3Rpb24oZSl7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBtYW1zX29wZW5fbW9kYWwoKTsKICB9KTsKCiAgLy8gY3JlYXRlIG91ciB0aW1lcgogIGlmKCB0aW1lcl9pbnRlcnZhbCA+IDAgKQogICAgIHsKICAgICAgICBzZXRUaW1lb3V0KG1hbXNfb3Blbl9tb2RhbCx0aW1lcl9pbnRlcnZhbCAqIDEwMDApOwogICAgIH0KCn0pOwovL11dPgo8L3NjcmlwdD4Key9saXRlcmFsfQoKeyogcmVxdWlyZWQgY3NzICp9CntsaXRlcmFsfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojbWFtc19tb2RhbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDk5OTk7CiAgZGlzcGxheTogbm9uZTsKfQojbWFtc19tYXNrIHsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogOTAwMDsKICBkaXNwbGF5OiBub25lOwp9Cjwvc3R5bGU+CnsvbGl0ZXJhbH0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_verifyform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZ2luYWwgdmVyaWZpY2F0aW9uIGZvcm0gKn0KPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtb2QtPkxhbmcoJ2luZm9fdmVyaWZ5X2lkZW50aXR5MicpfTwvZGl2Pgp7Zm9ybV9zdGFydCB1aWQ9JHVpZH17eHRfZm9ybV9jc3JmfQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8bGFiZWw+eyRtb2QtPkxhbmcoJ2NvZGUnKX06IDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybV9jb250cm9sIiBuYW1lPSJ7JGFjdGlvbmlkfWNvZGUiIHZhbHVlPSJ7JGNvZGV9IiByZXF1aXJlZC8+PC9sYWJlbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19zdWJtaXQiIGNsYXNzPSJidG4gYnRuX2FjdGl2ZSI+eyRtb2QtPkxhbmcoJ3ZlcmlmeScpfTwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4Ke2Zvcm1fZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_viewuser_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdmlldyB1c2VyIHRlbXBsYXRlICp9CjxwPnskbW9kLT5MYW5nKCdpZCcpfTombmJzcDt7JHVzZXJpbmZvLmlkfTwvcD4KPHA+eyRtb2QtPkxhbmcoJ3VzZXJuYW1lJyl9OiZuYnNwO3skdXNlcmluZm8udXNlcm5hbWV9PC9wPgo8cD57JG1vZC0+TGFuZygnZW1haWwnKX06Jm5ic3A7PGEgaHJlZj0ibWFpbHRvOnskZW1haWxfYWRkcmVzc30iPnskZW1haWxfYWRkcmVzc308L3A+CjxwPnskbW9kLT5MYW5nKCdleHBpcmVzJyl9OiZuYnNwO3skdXNlcmluZm8uZXhwaXJlc308L3A+Cntmb3JlYWNoIGZyb209JHVzZXJfcHJvcGVydGllcyBpdGVtPSdlbnRyeSd9CntpZiAkZW50cnkudHlwZSAhPSAwfQo8cD57JGVudHJ5LnByb21wdH06Jm5ic3A7eyRlbnRyeS5kYXRhfTwvcD4Key9pZn0Key9mb3JlYWNofQo=]]></data>
	</file>
	<file>
	  <filename>/templates/propertiesform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHAgY2xhc3M9InJlZCI+eyRlcnJvcn08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQoKPGRpdiBjbGFzcz0iY19mdWxsIj4KICA8cCBjbGFzcz0iZ3JpZF84IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDA7Ij4KICAgIHtpZiBpc3NldCgkYWRkX3VybCl9CiAgICAgIDxhIGhyZWY9InskYWRkX3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygnYWRkcHJvcCcpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJ30geyRtb2QtPkxhbmcoJ2FkZHByb3AnKX08L2E+CiAgICB7L2lmfQogIDwvcD4KICA8cCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPnskcHJvcGNvdW50fSZuYnNwO3skcHJvcHNmb3VuZH08L3A+CiAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7aWYgJHByb3Bjb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRwcm9tcHR0ZXh0fTwvdGg+CgkJCTx0aD57JHR5cGV0ZXh0fTwvdGg+CgkJCTx0aD57JGxlbmd0aHRleHR9PC90aD4KCQkJPHRoPnskbW9kLT5MYW5nKCd1bmlxdWUnKX08L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ2VuY3J5cHRlZCcpfTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JHByb3BzIGl0ZW09cHJvcGV9CgkJCQk8dHIgY2xhc3M9InskcHJvcGUtPnJvd2NsYXNzfSI+CgkJCQkJPHRkPnskcHJvcGUtPm5hbWV9PC90ZD4KCQkJCQk8dGQ+eyRwcm9wZS0+cHJvbXB0fTwvdGQ+CgkJCQkJPHRkPnskcHJvcGUtPnR5cGV9PC90ZD4KCQkJCQk8dGQ+eyRwcm9wZS0+bGVuZ3RofTwvdGQ+CgkJCQkJPHRkPntpZiAkcHJvcGUtPmZvcmNlX3VuaXF1ZX17JG1vZC0+TGFuZygneWVzJyl9e2Vsc2V9eyRtb2QtPkxhbmcoJ25vJyl9ey9pZn08L3RkPgoJCQkJCTx0ZD57aWYgJHByb3BlLT5lbmNyeXB0fXskbW9kLT5MYW5nKCd5ZXMnKX17L2lmfTwvdGQ+CgkJCQkJPHRkPnskcHJvcGUtPmVkaXRsaW5rfGRlZmF1bHQ6Jyd9PC90ZD4KCQkJCQk8dGQ+CgkJCQkJCXtpZiBpc3NldCgkcHJvcGUtPmRlbGV0ZV91cmwpfQoJCQkJCQkJPGEgaHJlZj0ieyRwcm9wZS0+ZGVsZXRlX3VybH0iPnt4dGltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicgYWx0PSRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT4KCQkJCQkJey9pZn0KCQkJCQk8L3RkPgoJCQkJPC90cj4KCQl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/protectedcontent.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQp7aWYgJG1hbXNfYXV0aG9yaXplZCA9PSAwfQogICAge2lmICRhY3Rpb24gPT0gJ3JlZGlyZWN0J30gCiAgICAgIHtpZiAkbWFtc19wYWdlID09IC0xfQogICAgICAgIHskbW9kLT5MYW5nKCdwYWdldHlwZV91bmF1dGhvcml6ZWQnKX0KICAgICAge2Vsc2V9CiAgICAgICAge3JlZGlyZWN0X3BhZ2UgcGFnZT0kbWFtc19wYWdlfQogICAgICB7L2lmfQogICAge2Vsc2VpZiAkc2hvd193aGF0ID09ICdjb250ZW50X2VuJ30KICAgICAge2lmICRkb2NhcHRjaGEgPT0gMX0KICAgICAgICB7TUFNUyBmb3JtPWxvZ2lufQogICAgICB7ZWxzZX0KICAgICAgICB7TUFNUyBmb3JtPWxvZ2luIG5vY2FwdGNoYT0xfQogICAgICB7L2lmfQogICAgey9pZn0Ke2Vsc2V9CiAgIHskb3V0cHV0fGRlZmF1bHQ6Jyd9CnsvaWZ9Cnsvc3RyaXB9]]></data>
	</file>
	<file>
	  <filename>/templates/resetsession_templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZTF9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RlbXBsYXRlMX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fSZuYnNwO3skZGVmYXVsdHN9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxwPnskcHJvbXB0X3RlbXBsYXRlfTwvcD4KeyRpbnB1dF90ZW1wbGF0ZX0KPGJyLz4KeyRzdWJtaXR9eyRkZWZhdWx0c30KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/userhistory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKX0KICB7aWYgaXNzZXQoJGVycm9yKX0KICAgIDxmb250IGNvbG9yPSJyZWQiPjxoND57JG1lc3NhZ2V9PC9oND48L2ZvbnQ+CiAge2Vsc2V9CiAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgp7aWYgIWlzc2V0KCRtdWx0aXVzZXIpfQogIDxoND57JHRpdGxlX3VzZXJoaXN0b3J5fSZuYnNwO3skZm9yfSZuYnNwO3skdXNlcl91c2VybmFtZX08L2g0Pgp7L2lmfQp7JGZvcm1zdGFydH0KPGRpdiBjbGFzcz0iY19mdWxsIj4KPGZpZWxkc2V0IGNsYXNzPSJncmlkXzYiPgo8bGVnZW5kPnskdGl0bGVfbGVnZW5kX2ZpbHRlcn06PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JHByb21wdF9maWx0ZXJfZXZlbnR0eXBlfTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9maWx0ZXJfZXZlbnR0eXBlfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIHtpZiBpc3NldCgkbXVsdGl1c2VyKX0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X3VzZXJuYW1lX3JlZ2V4fTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF91c2VybmFtZV9yZWdleH08L3A+CiAgICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICB7L2lmfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfZmlsdGVyX2RhdGV9OjwvcD4KICAgICA8cCBjbGFzcz0iZ3JpZF85Ij57JGlucHV0X2ZpbHRlcl9kYXRlfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfcGFnZWxpbWl0fTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9wYWdlbGltaXR9PC9wPgogICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CjwvZmllbGRzZXQ+Cgo8ZmllbGRzZXQgY2xhc3M9ImdyaWRfNiI+CjxsZWdlbmQ+eyR0aXRsZV9sZWdlbmRfZ3JvdXBzb3J0fTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X2dyb3VwX2lwfTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9ncm91cF9pcH08L3A+CiAgICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X3NvcnRvcmRlcn06PC9wPgogICAgIDxwIGNsYXNzPSJncmlkXzkiPnskaW5wdXRfc29ydG9yZGVyfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRzdWJtaXR9Jm5ic3A7eyRyZXNldH08L3A+CiAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2Pgp7JGZvcm1lbmR9Cjxici8+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxkaXYgY2xhc3M9ImdyaWRfNiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwOyI+CiAgICB7JHJlY29yZGNvdW50fSZuYnNwO3skcHJvbXB0X3JlY29yZHNmb3VuZH0KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkXzYgdGV4dC1yaWdodCI+CiAgICB7aWYgJGl0ZW1jb3VudCA+IDB9CiAgICAgIHtpZiAkcGFnZWNvdW50ID4gMX0KICAgICAgICB7aWYgJHBhZ2VudW1iZXIgPiAxfXskZmlyc3RwYWdlfSZuYnNwO3skcHJldnBhZ2V9Jm5ic3A7ey9pZn0KICAgICAgICB7JHBhZ2VudW1iZXJ9Jm5ic3A7eyRvZnRleHR9Jm5ic3A7eyRwYWdlY291bnR9CiAgICAgICAge2lmICRwYWdlbnVtYmVyIDwgJHBhZ2Vjb3VudH0KICAgICAgICAgICAmbmJzcDt7JG5leHRwYWdlfSZuYnNwO3skbGFzdHBhZ2V9CiAgICAgICAgey9pZn0KICAgICAgey9pZn0KICAgIHsvaWZ9CiA8L2Rpdj4KPC9kaXY+Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgICB7aWYgaXNzZXQoJG11bHRpdXNlcil9Cgk8dGg+eyRwcm9tcHRfdXNlcm5hbWV9PC90aD4KICAgICAgICB7L2lmfQoJPHRoPnskcHJvbXB0X2lwYWRkcmVzc308L3RoPgoJPHRoPnskcHJvbXB0X2FjdGlvbn08L3RoPgoJPHRoPnskcHJvbXB0X3JlZmRhdGV9PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgICAgICB7aWYgaXNzZXQoJG11bHRpdXNlcil9CiAgICAgICAgPHRkPnskZW50cnktPnVzZXJuYW1lfTwvdGQ+CiAgICAgICAgey9pZn0KCTx0ZD57JGVudHJ5LT5pcGFkZHJlc3N9PC90ZD4KCTx0ZD57JGVudHJ5LT5hY3Rpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5yZWZkYXRlfGRhdGVfZm9ybWF0OiIlYiAlZSwgJVkgLSAlWCJ9PC90ZD4KICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgo=]]></data>
	</file>
	<file>
	  <filename>/templates/userlist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlPgojcXVpY2tmaW5kX2RsZyB7CiAgIHdpZHRoOiA1MDBweDsKICAgaGVpZ2h0OiAxMGVtOwp9Ci51bnNhZmVwYXNzd29yZCB7CiAgIGNvbG9yOiByZWQ7Cn0KLnVzZXJfZGlzYWJsZWQ6YmVmb3JlIHsKICAgY29udGVudDogIiEhICI7CiAgIGNvbG9yOiByZWQ7Cn0KLnVzZXJfbXVzdHZhbGlkYXRlOmJlZm9yZSB7CiAgIGNvbnRlbnQ6ICIqKiAiOwogICBjb2xvcjogbWFnZW50YTsKfQoudXNlcl9leHBpcmVkOmJlZm9yZSB7CiAgIGNvbnRlbnQ6ICItLSAiOwogICBjb2xvcjogb3JhbmdlOwp9Cgo8L3N0eWxlPgo8c2NyaXB0PgovKjwhW0NEQVRBWyovCiQoZnVuY3Rpb24oKXsKICAkKCcjbWFtc19maWx0ZXJib3gnKS5jbGljayhmdW5jdGlvbigpewogICAgaWYoIHRoaXMuY2hlY2tlZCApIHsKICAgICAgJCgnI21hbXNfZmlsdGVyZm9ybScpLnNob3coKTsKICAgIH0KICAgIGVsc2UgewogICAgICAkKCcjbWFtc19maWx0ZXJmb3JtJykuaGlkZSgpOwogICAgfQogIH0pOwoKICAkKCcjZG9idWxrJykuY2xpY2soZnVuY3Rpb24oZXYpewogICAgIHZhciBsZW4gPSAkKCdpbnB1dC5idWxrc2VsZWN0OmNoZWNrZWQnKS5sZW5ndGg7CiAgICAgaWYoIGxlbiA9PSAwICkgewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CgljbXNfYWxlcnQoJ3skbW9kLT5MYW5nKCdidWxrX3NlbGVjdG9uZSd8Y21zX2VzY2FwZSl9Jyk7CiAgICAgfQogIH0pCgogICQoJyNxdWlja2ZpbmRfZm9ybScpLnN1Ym1pdChmdW5jdGlvbihldil7CiAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICB2YXIgaWQgPSAkKCcjcXVpY2tmaW5kX2RsZycpLmRhdGEoJ3NlbF9pZCcpOwogICAgIHZhciB1cmwgPSAne2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9lZGl0dXNlciB1c2VyX2lkPXh4eHggZm9yanM9MX0nOwogICAgIHVybCA9IHVybC5yZXBsYWNlKCd4eHh4JyxpZCk7CiAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7CiAgfSkKICAkKCcjcXVpY2tmaW5kX2ZsZCcpLmF1dG9jb21wbGV0ZSh7CiAgICAgIG1pbkxlbmd0aDogMiwKICAgICAgYXBwZW5kVG86ICcjcXVpY2tmaW5kX2RsZycsCiAgICAgIHNvdXJjZTogZnVuY3Rpb24oIHJlcXVlc3QsIHJlc3BvbnNlICkgewogICAgICAgICAgJC5hamF4KHsKCSAgICAgIHVybDogJ3tjbXNfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fYWpheF9xdWlja2ZpbmQgZm9yanM9MX0nLAoJICAgICAgZGF0YTogewoJICAgICAgICAgIHRlcm06IHJlcXVlc3QudGVybSwKICAgICAgICAgICAgICB9LAoJICAgICAgc3VjY2VzczogZnVuY3Rpb24oIGRhdGEgKSB7CgkgICAgICAgICAgcmVzcG9uc2UoIGRhdGEgKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9KQogICAgICB9LAogICAgICBzZWxlY3Q6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7CiAgICAgICAgICAkKCcjcXVpY2tmaW5kX2ZsZCcpLnZhbCggdWkuaXRlbS5sYWJlbCApOwogICAgICAgICAgJCgnI3F1aWNrZmluZF9kbGcnKS5kYXRhKCdzZWxfaWQnLCB1aS5pdGVtLnZhbHVlKTsKCSAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgfSk7CiAgJCgnI3F1aWNrZmluZCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgJCgnI3F1aWNrZmluZF9kbGcnKS5kaWFsb2coewogICAgICAgIHdpZHRoOiAnNTAwJywKCWhlaWdodDogJzE1MCcsCiAgICAgICAgbW9kYWw6IHRydWUsCiAgICAgfSk7CiAgfSkKfSk7CgpmdW5jdGlvbiBzZWxlY3RfYWxsKCkKewogIGNiID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3skYWN0aW9uaWR9c2VsZWN0ZWRbXScpOwogIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbGVjdGFsbCcpOwogIHN0ID0gZWwuY2hlY2tlZDsKICBmb3IoIGkgPSAwOyBpIDwgY2IubGVuZ3RoOyBpKysgKSB7CiAgICBpZiggY2JbaV0udHlwZSA9PSAiY2hlY2tib3giICkgIGNiW2ldLmNoZWNrZWQ9c3Q7CiAgfQp9CgpmdW5jdGlvbiBjb25maXJtX2RlbGV0ZSgpCnsKICB2YXIgY2IgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgneyRhY3Rpb25pZH1zZWxlY3RlZFtdJyk7CiAgdmFyIGNvdW50ID0gMDsKICBmb3IoIGkgPSAwOyBpIDwgY2IubGVuZ3RoOyBpKysgKSB7CiAgICAgaWYoIGNiW2ldLmNoZWNrZWQgKSBjb3VudCsrOwogIH0KCiAgaWYoIGNvdW50ID4gMjUwICkgewogICAgIGFsZXJ0KCd7JG1vZC0+TGFuZygnZXJyb3JfdG9vbWFueXNlbGVjdGVkJyl9J3xjbXNfZXNjYXBlKTsKICAgICByZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBjb25maXJtKCd7JG1vZC0+TGFuZygnY29uZmlybV9kZWxldGVfc2VsZWN0ZWQnKX0nKTsKfQovKl1dPiAqLwo8L3NjcmlwdD4KCjxkaXYgaWQ9InF1aWNrZmluZF9kbGciIHRpdGxlPSJ7JG1vZC0+TGFuZygncXVpY2tmaW5kX3VzZXInKX0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgIHtmb3JtX3N0YXJ0IGlkPXF1aWNrZmluZF9mb3JtfQogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgPGxhYmVsIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3F1aWNrZmluZF9pZG5hbWUnKX08L2xhYmVsPgogICAgICAgPGlucHV0IGNsYXNzPSJwYWdlaW5wdXQiIGlkPSJxdWlja2ZpbmRfZmxkIiBwbGFjZWhvbGRlcj0ieyRtb2QtPkxhbmcoJ3F1aWNrZmluZF9waCcpfSIgc2l6ZT0iNjAiLz4KICAgPC9kaXY+CiAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICA8aW5wdXQgY2xhc3M9InBhZ2VpbnB1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2ZpbmQnKX0iLz4KICAgPC9kaXY+CiAgIHtmb3JtX2VuZH0KPC9kaXY+Cgp7JHN0YXJ0Zm9ybX0KPGZpZWxkc2V0IGlkPSJtYW1zX2ZpbHRlcmZvcm0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICA8bGVnZW5kPnskbW9kLT5MYW5nKCdmaWx0ZXInKX06PC9sZWdlbmQ+CiAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgIDxkaXYgY2xhc3M9ImdyaWRfNiI+CiAgICAgICAgICAge2lmIGlzc2V0KCRncm91cHMpfQogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ2dyb3VwJyl9OjwvcD4KICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX2dyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRncm91cHMgc2VsZWN0ZWQ9JGZpbHRlci5ncm91cH0KICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgey9pZn0KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG1vZC0+TGFuZygndXNlcmZpbHRlcicpfTo8L3A+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJncmlkXzEyIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9yZWdleCIgdmFsdWU9InskZmlsdGVyLnJlZ2V4fSIvPgogICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ3Byb3BlcnR5ZmlsdGVyJyl9OjwvcD4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJncmlkXzEyIiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9wcm9wZXJ0eXNlbCI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSRkZWZubGlzdCBzZWxlY3RlZD0kZmlsdGVyLnByb3BzZWx9PC9zZWxlY3Q+CiAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG1vZC0+TGFuZygncHJvcHJlZ2V4Jyl9OjwvcD4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZF84Ij4KICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZ3JpZF8xMiIgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfcHJvcGVydHkiIHZhbHVlPSJ7JGZpbHRlci5wcm9wdmFsfSIgc2l6ZT0iMzAiLz4KCQkgICA8cCBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fcHJvcHJlZ2V4Jyl9PC9wPgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG1vZC0+TGFuZygncHJvbXB0X2xvZ2dlZGlub25seScpfTo8L3A+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPSdmaWx0ZXJfbG9nZ2VkaW5vbmx5JyBzZWxlY3RlZD0kZmlsdGVyLmxvZ2dlZGlub25seX0KICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZGlzYWJsZWRzdGF0dXMnKX06PC9wPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF84Ij4KCSAgICAgICAgICAgeyRvcHRzPVsnJz0+JG1vZC0+TGFuZygnYW55JyksICdkaXMnPT4kbW9kLT5MYW5nKCdkaXNhYmxlZCcpLCAnZW4nPT4kbW9kLT5MYW5nKCdlbmFibGVkJyldIH0KCQkgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX2Rpc2FibGVkIj4KCQkgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRmaWx0ZXIuZGlzYWJsZWRzdGF0dXN9CgkJICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgoKICAgPGRpdiBjbGFzcz0iZ3JpZF82Ij4KICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ3Byb21wdF92aWV3cHJvcHMnKX06PC9wPgogICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfOSIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfdmlld3Byb3BzW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iNSI+CiAgICAgICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kYWxsZGVmbnMgc2VsZWN0ZWQ9JHZpZXdwcm9wc30KICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygnc29ydGJ5Jyl9OjwvcD4KICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF85IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9zb3J0YnkiPntodG1sX29wdGlvbnMgb3B0aW9ucz0kc29ydGxpc3Qgc2VsZWN0ZWQ9JGZpbHRlci5zb3J0Ynl9PC9zZWxlY3Q+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ3VzZXJsaW1pdCcpfTo8L3A+CiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfOSIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfbGltaXQiPntodG1sX29wdGlvbnMgb3B0aW9ucz0kbGltaXRzIHNlbGVjdGVkPSRmaWx0ZXIubGltaXR9PC9zZWxlY3Q+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiBncmlkXzEyIj4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2FwcGx5ZmlsdGVyJyl9Ii8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9yZXNldCIgdmFsdWU9InskbW9kLT5MYW5nKCdyZXNldCcpfSIvPgo8L2Rpdj4KPC9maWVsZHNldD57KiAjbWFtc19maWx0ZXJmb3JtICp9Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogIDxkaXYgY2xhc3M9ImdyaWRfMTAiIHN0eWxlPSJtYXJnaW4tbGVmdDogMDsiPgogICAgPGlucHV0IGlkPSJtYW1zX2ZpbHRlcmJveCIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIi8+PGxhYmVsIGZvcj0ibWFtc19maWx0ZXJib3giPnskbW9kLT5MYW5nKCd2aWV3X2ZpbHRlcicpfSB7aWYgJGZpbHRlcl9hcHBsaWVkfTxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij4oeyRtb2QtPkxhbmcoJ2FwcGxpZWQnKX0pey9pZn08L3NwYW4+PC9sYWJlbD4mbmJzcDsKICAgIDxzcGFuIHRpdGxlPSJ7JG1vZC0+TGFuZygndXNlcnNtYXRjaGluZycpfSI+e3h0aW1hZ2UgaW1hZ2U9J3VzZXJzLmdpZicgYWx0PSIifSA9IHskbnVtdXNlcnN9PC9zcGFuPiZuYnNwOwogICAge2lmIGlzc2V0KCRhZGRfdXJsKX08YSBocmVmPSJ7JGFkZF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2FkZF91c2VyJyl9Ij57eHRpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnfSB7JG1vZC0+TGFuZygnYWRkdXNlcicpfTwvYT57L2lmfQogICAge2lmIGlzc2V0KCRpbXBvcnRfdXJsKX08YSBocmVmPSJ7JGltcG9ydF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2ltcG9ydF91c2VycycpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJ30geyRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnR1c2VycycpfTwvYT57L2lmfQogICAge2lmIGlzc2V0KCRleHBvcnRfdXJsKX08YSBocmVmPSJ7JGV4cG9ydF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2V4cG9ydF91c2VycycpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9leHBvcnQuZ2lmJ30geyRtb2QtPkxhbmcoJ3Byb21wdF9leHBvcnR1c2VycycpfTwvYT57L2lmfQogICAgPGEgaWQ9InF1aWNrZmluZCI+e2FkbWluX2ljb24gaWNvbj0ndmlldy5naWYnfSB7JG1vZC0+TGFuZygncXVpY2tmaW5kX3VzZXInKX08L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZF8yIHRleHQtcmlnaHQiPgogIHtpZiAkaXRlbWNvdW50ID4gMH0KICAgIHtpZiBpc3NldCgkbmF2aWdhdGlvbi5maXJzdHBhZ2VfdXJsKX0KICAgICAgPGEgaHJlZj0ieyRuYXZpZ2F0aW9uLmZpcnN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnZmlyc3RwYWdlJyl9PC9hPiZuYnNwOwogICAgICA8YSBocmVmPSJ7JG5hdmlnYXRpb24ucHJldnBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ3ByZXZwYWdlJyl9PC9hPiZuYnNwOwogICAgey9pZn0KICAgIHskbW9kLT5MYW5nKCdwYWdlJyl9IHskbmF2aWdhdGlvbi5jdXJwYWdlfSB7JG1vZC0+TGFuZygncHJvbXB0X29mJyl9IHskbmF2aWdhdGlvbi5ucGFnZXN9CiAgICB7aWYgaXNzZXQoJG5hdmlnYXRpb24ubGFzdHBhZ2VfdXJsKX0KICAgICAgJm5ic3A7PGEgaHJlZj0ieyRuYXZpZ2F0aW9uLm5leHRwYWdlX3VybH0iPnskbW9kLT5MYW5nKCduZXh0cGFnZScpfTwvYT4KICAgICAgJm5ic3A7PGEgaHJlZj0ieyRuYXZpZ2F0aW9uLmxhc3RwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdsYXN0cGFnZScpfTwvYT4KICAgIHsvaWZ9CiAgey9pZn0KICA8L2Rpdj4KPC9kaXY+CntpZiAhaXNzZXQoJGdyb3Vwcyl9CiAgPGRpdiBjbGFzcz0icmVkIGNlbnRlciI+eyRtb2QtPkxhbmcoJ25vZ3JvdXBzJyl9PC9kaXY+CntlbHNlaWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD57JHVzZXJuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRjcmVhdGVkdGV4dH08L3RoPgoJCQk8dGg+eyRleHBpcmVzdGV4dH08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICB7aWYgaXNzZXQoJHZpZXdwcm9wcykgJiYgaXNfYXJyYXkoJHZpZXdwcm9wcyl9CiAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JHZpZXdwcm9wcyBpdGVtPSdvbmUnfQogICAgICAgICAgICAgICAgICAgICAgICA8dGg+eyRhbGxkZWZucy4kb25lfTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIHsvZm9yZWFjaH0KICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+PGlucHV0IGlkPSJzZWxlY3RhbGwiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJqdW5rIiBvbmNsaWNrPSJzZWxlY3RfYWxsKCk7Ii8+PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQk8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9J3JvdzEscm93Mid9Ij4KCQkJPHRkPgoJCQkgIHtpZiAkZW50cnktPnVuc2FmZXBhc3N3b3JkfTxzcGFuIGNsYXNzPSJ1bnNhZmVwYXNzd29yZCIgdGl0bGU9InskbW9kLT5MYW5nKCdpbmZvX3Vuc2FmZXBhc3N3b3JkJyl9Ij57JG1vZC0+TGFuZygndW5zYWZlJyl9PC9zcGFuPnsvaWZ9CgkJCSAge2lmICRlbnRyeS0+ZGlzYWJsZWR9CgkJCSAgICAgPHNwYW4gY2xhc3M9InVzZXJfZGlzYWJsZWQiIHRpdGxlPSJ7JG1vZC0+TGFuZygnaW5mb19kaXNhYmxlZCcpfSI+eyRlbnRyeS0+dXNlcm5hbWV9PC9zcGFuPgoJCQkgIHtlbHNlIGlmICRlbnRyeS0+bXVzdF92YWxpZGF0ZX0KCQkJICAgICA8c3BhbiBjbGFzcz0idXNlcl9tdXN0dmFsaWRhdGUiIHRpdGxlPSJ7JG1vZC0+TGFuZygnaW5mb19tdXN0X3ZhbGlkYXRlJyl9Ij57JGVudHJ5LT51c2VybmFtZX08L3NwYW4+CgkJCSAge2Vsc2VpZiBzdHJ0b3RpbWUoJGVudHJ5LT5leHBpcmVzKSA8ICRzbWFydHkubm93fQoJCQkgICAgIDxzcGFuIGNsYXNzPSJ1c2VyX2V4cGlyZWQiIHRpdGxlPSJ7JG1vZC0+TGFuZygnaW5mb19leHBpcmVkJyl9Ij57JGVudHJ5LT51c2VybmFtZX08L3NwYW4+CgkJCSAge2Vsc2V9CgkJCSAgICAgeyRlbnRyeS0+dXNlcm5hbWV9CgkJCSAgey9pZn0KCQkJPC90ZD4KCQkJPHRkPnskZW50cnktPmNyZWF0ZWR8ZGF0ZV9mb3JtYXQ6JyV4J308L3RkPgoJCQk8dGQ+CgkJCSAge2lmIHN0cnRvdGltZSgkZW50cnktPmV4cGlyZXMpIDwgJHNtYXJ0eS5ub3d9CgkJCSAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2U7IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fZXhwaXJlZCcpfSI+eyRlbnRyeS0+ZXhwaXJlc3xkYXRlX2Zvcm1hdDonJXgnfTwvc3Bhbj4KCQkJICB7ZWxzZX0KICAJCQkgICAgIHskZW50cnktPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4J30KCQkJICB7L2lmfQoJCQk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICB7aWYgaXNzZXQoJHZpZXdwcm9wcykgJiYgaXNzZXQoJGVudHJ5LT5leHRyYSl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSR2aWV3cHJvcHMgaXRlbT0nb25lJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CgkJCQkgICAge2lmICFlbXB0eSgkZW50cnktPmV4dHJhWyRvbmVdKX0KCQkJCSAgICAgICAge2lmICRlbnRyeS0+ZXh0cmFbJG9uZV0tPmRlZm4udHlwZSA9PSA4fQoJCQkJCSAgICB7JGVudHJ5LT5leHRyYVskb25lXS0+dmFsfGRhdGVfZm9ybWF0OicleCd9CgkJCQkJe2Vsc2V9CgkJCQkgICAgICAgICAgICB7JGVudHJ5LT5leHRyYVskb25lXS0+dmFsfQoJCQkJCXsvaWZ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvaWZ9CgkJCQk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgey9mb3JlYWNofQogICAgICAgICAgICAgICAgICAgICAgICB7L2lmfQoJCQk8dGQ+CgkJCSAge2lmICRlbnRyeS0+ZGlzYWJsZWR9CgkJCSAgICA8YSBocmVmPSJ7bW9kX2FjdGlvbl91cmwgYWN0aW9uPWFkbWluX2VuYWJsZV91c2VyIHVpZD0kZW50cnktPmlkIHN0YXRlPTF9Ij57eHRpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicgYWx0PSRtb2QtPkxhbmcoJ2VuYWJsZV91c2VyJyl9PC9hPgoJCQkgIHtlbHNlfQoJCQkgICAgPGEgaHJlZj0ie21vZF9hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9lbmFibGVfdXNlciB1aWQ9JGVudHJ5LT5pZCBzdGF0ZT0wfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS90cnVlLmdpZicgYWx0PSRtb2QtPkxhbmcoJ2Rpc2FibGVfdXNlcicpfTwvYT4KCQkJICB7L2lmfQoJCQk8L3RkPgoJCQk8dGQ+e2lmIGlzc2V0KCRlbnRyeS0+bG9nb3V0bGluayl9eyRlbnRyeS0+bG9nb3V0bGlua317L2lmfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5oaXN0b3J5bGlua3xkZWZhdWx0OicnfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua3xkZWZhdWx0OicnfTwvdGQ+CgkJCTx0ZD57aWYgaXNzZXQoJGVudHJ5LT5kZWxldGVsaW5rKX17JGVudHJ5LT5kZWxldGVsaW5rfXsvaWZ9PC90ZD4KCQkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImJ1bGtzZWxlY3QiIG5hbWU9InskYWN0aW9uaWR9c2VsZWN0ZWRbXSIgdmFsdWU9InskZW50cnktPmlkfSIvPjwvdGQ+CgkJPC90cj4Key9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCntpZiAkaXRlbWNvdW50ID4gMH0KICB7aWYgIWVtcHR5KCRidWxrX2FjdGlvbnMpfQogIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiBncmlkXzEyIHRleHQtcmlnaHQiPgogICAgICA8bGFiZWw+eyRtb2QtPkxhbmcoJ3dpdGhfc2VsZWN0ZWQnKX06CiAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1idWxrX2FjdGlvbiI+CgkgPG9wdGlvbiB2YWx1ZT0iIj57JG1vZC0+TGFuZygnbm9uZScpfTwvb3B0aW9uPgoJIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kYnVsa19hY3Rpb25zfQoJIDwvc2VsZWN0PgogICAgICA8L2xhYmVsPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iZG9idWxrIiBuYW1lPSJ7JGFjdGlvbmlkfWRvYnVsayIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICA8L2Rpdj4KICB7L2lmfQoKICB7aWYgJGl0ZW1jb3VudCA+IDB9CiAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIGdyaWRfMTIgdGV4dC1yaWdodCI+CiAgICB7aWYgaXNzZXQoJG5hdmlnYXRpb24uZmlyc3RwYWdlX3VybCl9CiAgICAgIDxhIGhyZWY9InskbmF2aWdhdGlvbi5maXJzdHBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ2ZpcnN0cGFnZScpfTwvYT4mbmJzcDsKICAgICAgPGEgaHJlZj0ieyRuYXZpZ2F0aW9uLnByZXZwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdwcmV2cGFnZScpfTwvYT4mbmJzcDsKICAgIHsvaWZ9CiAgICB7JG1vZC0+TGFuZygncGFnZScpfSB7JG5hdmlnYXRpb24uY3VycGFnZX0geyRtb2QtPkxhbmcoJ3Byb21wdF9vZicpfSB7JG5hdmlnYXRpb24ubnBhZ2VzfQogICAge2lmIGlzc2V0KCRuYXZpZ2F0aW9uLmxhc3RwYWdlX3VybCl9CiAgICAgICZuYnNwOzxhIGhyZWY9InskbmF2aWdhdGlvbi5uZXh0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbmV4dHBhZ2UnKX08L2E+CiAgICAgICZuYnNwOzxhIGhyZWY9InskbmF2aWdhdGlvbi5sYXN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbGFzdHBhZ2UnKX08L2E+CiAgICB7L2lmfQogIDwvZGl2PgogIHsvaWZ9CnsvaWZ9CnskZW5kZm9ybX0K]]></data>
	</file>
</module>
