<?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.2.0</version>
    <mincmsversion>2.2.16</mincmsversion>
	<help><![CDATA[PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Rldi9DTVNNUy1ERVYtMjAyNS1NT0RTL21vZHVsZXMvTUFNUy9jc3MvbWFtcy5jc3MiIC8+CjxzY3JpcHQgc3JjPSJodHRwczovL2Rldi9DTVNNUy1ERVYtMjAyNS1NT0RTL21vZHVsZXMvTUFNUy9qcy9qcy5jb29raWUuanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgdmFyIGFjdGl2ZV90YWIgPSBDb29raWVzLmdldCgnbWFtc19hY3RpdmUnKTsKCiAgaWYodHlwZW9mIGFjdGl2ZV90YWIgPT09ICJ1bmRlZmluZWQiKQogIHsKICAgIF9zZXRfYWN0aXZlX3RhYignZ2VuZXJhbCcpOwogIH0KICBlbHNlCiAgewogICAgX3NldF9hY3RpdmVfdGFiKGFjdGl2ZV90YWIpOwogIH0KCiAgJCgnI3BhZ2VfdGFicyA+IGRpdicpCiAgICAuZWFjaChmdW5jdGlvbigpCiAgICB7CiAgICAgICQodGhpcykuY2xpY2soZnVuY3Rpb24oKQogICAgICB7CiAgICAgICAgQ29va2llcy5zZXQoJ21hbXNfYWN0aXZlJywgdGhpcy5pZCk7CiAgICAgIH0pOwogICAgfSk7Cn0pOwoKCmZ1bmN0aW9uIF9zZXRfYWN0aXZlX3RhYih0YWJfbmFtZSkKewogICQoJyNwYWdlX3RhYnMgPiBkaXYnKQogICAgLmVhY2goZnVuY3Rpb24oKQogICAgewogICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgIH0pOwoKICAkKCcjcGFnZV9jb250ZW50ID4gZGl2JykKICAgIC5lYWNoKGZ1bmN0aW9uKCkKICAgIHsKICAgICAgJCh0aGlzKS5oaWRlKCk7CiAgICB9KTsKCiAgJCgnIycgKyB0YWJfbmFtZSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICQoJyMnICsgdGFiX25hbWUgKyAnX2MnKS5zaG93KCk7CiAgQ29va2llcy5zZXQoJ21hbXNfYWN0aXZlJywgdGFiX25hbWUpOwoKfQo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4KCjxkaXYgaWQ9InBhZ2VfdGFicyI+CgogIDxkaXYgIGlkPSJnZW5lcmFsIj4KICAgIEdlbmVyYWwKICA8L2Rpdj4KICA8ZGl2IGlkPSJ1c2luZyI+CiAgICBIb3cgRG8gSSBVc2UgSXQKICA8L2Rpdj4KICA8ZGl2IGlkPSJwYXJhbWV0ZXJzIj4KICAgIFBhcmFtZXRlcnMKICA8L2Rpdj4KICA8ZGl2IGlkPSJzbWFydHkiPgogICAgU21hcnR5IFBsdWdpbnMKICA8L2Rpdj4KICA8ZGl2IGlkPSJob29rcyI+CiAgICBIb29rcwogIDwvZGl2PgogICAgPGRpdiBpZD0iYWJvdXQiPgogICAgQWJvdXQKICA8L2Rpdj4KCjwvZGl2PgoKPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4KCiAgPGRpdiBpZD0iZ2VuZXJhbF9jIj4KICAgIDxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgogIDxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc2VzKTwvaT4uICBJdCBhbGxvd3MgY3JlYXRpb24gb2YgdXNlciBncm91cHMsIGFuZCB1c2VyIGFjY291bnRzIGFuZCBhbGxvd3MgdXNlcnMgdG8gbG9naW4gYW5kIGxvZ291dC48L3A+CiAgPGg0PkZlYXR1cmVzOjwvaDQ+CiAgPHVsPgogICAgPGxpPlVzZXJzIGNhbiBiZSBtZW1iZXJzIG9mIG11bHRpcGxlIGdyb3Vwcy48L2xpPgogICAgPGxpPlVzZXIgYWNjb3VudCBleHBpcmF0aW9uLiAgWW91IGNhbiBjcmVhdGUgdGVtcG9yYXJ5IHVzZXJzPC9saT4KICAgIDxsaT5Hcm91cCBQcm9wZXJ0aWVzLiAgWW91IGNhbiBhc2sgZm9yIGRpZmZlcmVudCBpbmZvcm1hdGlvbiBmcm9tIG1lbWJlcnMgb2YgZGlmZmVyZW50IGdyb3Vwcy48L2xpPgogICAgPGxpPkxvdHMgb2YgZmllbGQgdHlwZXMuPC9saT4KICAgIDxsaT5Qcm92aWRlcyBhIGNvbnRlbnQgdHlwZSB0byBtYWtlIHByb3RlY3RpbmcgY29udGVudCBzaW1wbGUsIGlmIG5vdCB0cml2aWFsLjwvbGk+CiAgICA8bGk+Q2FwYWJsZSBvZiBoYW5kbGluZyB0aG91c2FuZHMgb2YgdXNlcnM8L2xpPgogICAgPGxpPkV4dGVuc2l2ZSBmbGV4aWJpbGl0eSBmb3IgaGFuZGxpbmcgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4sIGFuZCBzZW5kcyBldmVudHMgdG8gZXh0ZW5kIHRoZSB3b3JrZmxvdyBwcm9jZXNzLjwvbGk+CiAgICA8bGk+Rm9yZ290dGVuIHBhc3N3b3JkLCBhbmQgZm9yZ290IHVzZXJuYW1lIGZ1bmN0aW9uYWxpdHkuLi4gYWxsb3dzIHVzZXJzIHRvIHNldCBhIG5ldyBwYXNzd29yZCwgYW5kL29yIHRvIHJlY292ZXIgdGhlaXIgdXNlcm5hbWUgaWYgdGhleSBjb21wbGV0ZWx5IGZvcmdvdCBsb2dpbiBkZXRhaWxzLjwvbGk+CiAgICA8bGk+RXh0ZW5kYWJsZSB0byBkaWZmZXJlbnQgYXV0aGVudGljYXRpb24gdHlwZXMgKExEQVAsIEZhY2Vib29rLCBldGMpLjwvbGk+CiAgICA8bGk+UHJvdmlkZXMgZXh0ZW5zaXZlIGltcG9ydCBhbmQgZXhwb3J0IGNhcGFiaWxpdGllcy48L2xpPgogICAgPGxpPkhhcyBhbiBleHRlbnNpdmUgQVBJIGZvciBhZGRpbmcgZnVuY3Rpb25hbGl0eSBpbnRvIHZhcmlvdXMgb3RoZXIgQ01TTVMgYWRkb24gbW9kdWxlcy48L2xpPgogICAgPGxpPlRoZSBhYmlsaXR5IHRvIGVuY3J5cHQgc2Vuc2l0aXZlIHVzZXIgZGF0YS48L2xpPgogICAgPGxpPlN0cm9uZyBlbmNyeXB0aW9uIGFuZCBzZWN1cml0eS48L2xpPgogICAgPGxpPkV4dGVuc2l2ZSBhZG1pbmlzdHJhdGl2ZSBjYXBhYmlsaXRpZXMuPC9saT4KICAgIDxsaT5BZGRpdGlvbmFsIDxiPkxJU0U8L2I+IGN1c3RvbSBmaWVsZHMgaWYgeW91IGhhdmUgaXQgaW5zdGFsbGVkLjwvbGk+CiAgPC91bD4KCgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KPGgzPlByaXZhY3kgV2FybmluZzo8L2gzPgo8cD5BZG1pbmlzdHJhdG9ycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQuPC9wPgoKPHA+VGhpcyBtb2R1bGUgZG9lcyBsb2cgdGhlIElQIGFkZHJlc3Mgb2YgdXNlcnMuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEby1Ob3QtVHJhY2sgcG9saWNpZXMsIGFuZCBtYXkgYnJlYWsgc29tZSBsYXdzLiAgPHN0cm9uZz5Vc2UgQXQgWW91ciBPd24gUmlzay48L3N0cm9uZz48L3A+CjxwPkFkZGl0aW9uYWxseSwgdGhlIGFkbWluaXN0cmF0b3IgaGFzIHRoZSBhYmlsaXR5IHRvIGNvbmZpZ3VyZSB0aGUgbW9kdWxlIHNvIHRoYXQgY29va2llcyBhcmUgdXNlZC4gIEhvd2V2ZXIgbm8gcGVyc29uYWwgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBjb29raWVzIChpZiBlbmFibGVkKS4gIE9ubHkgYSBzeXN0ZW0gYXNzaWduZWQgdW5pcXVlIHVzZXIgaWRlbnRpZmllciwgYW5kIGEgc2Vzc2lvbiBpZGVudGlmaWVyLjwvcD4KCjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHNvbWUgYXNzaXN0YW5jZSBpbiBtYW5hZ2luZyB1c2VyIHByaXZhY3kuICBUaGVyZSBpcyBmdW5jdGlvbmFsaXR5IHRvIGFub255bWl6ZSBhIHVzZXJzIGFjY291bnQsIGFuZCBmdW5jdGlvbmFsaXR5IHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNsZWFyIG9sZCBkYXRhIGZyb20gdXNlciBoaXN0b3J5IGxvZ3MuPC9wPgoKPHA+VGhpcyBtb2R1bGUgZG9lcyBOT1QgcHJvdmlkZSB0aGUgYWJpbGl0eSBmb3IgdXNlcnMgdG8gcmVtb3ZlIHRoZWlyIGFjY291bnRzLiAgVGhpcyBpcyBiZWNhdXNlIG90aGVyIGZ1bmN0aW9uYWxpdHkgKHN1Y2ggYXMgRS1jb21tZXJjZSkgbWF5IHJlcXVpcmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gZm9yIHJlZmVyZW50aWFsIGludGVncml0eS4gIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGFkbWluIG9wdGlvbiB0byBhbGxvdyBhbm9ueW1pemluZyBhIHVzZXIuPC9wPgo8L2Rpdj4KCjxoMz5FbmNyeXB0ZWQgRGF0YTo8L2gzPgo8cD5UaGUgRW5jcnlwdGVkIGZpZWxkIGZ1bmN0aW9uYWxpdHkgaXMgaW50ZW5kZWQgdG8gc3RvcmUgKGluIGEgc2VjdXJlIHdheSkgcGVyc29uYWwgYW5kIHByaXZhdGUgZGF0YSB0aGF0IGV2ZW4gdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBzaG91bGQgbm90IGhhdmUgYWNjZXNzIHRvLiAgaS5lOiBpdGVtcyBzdWNoIGFzIENyZWRpdCBDYXJkIGluZm9ybWF0aW9uLiAgVGhlIG9ubHkgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGFibGUgdG8gdmlldyBhbmQgZWRpdCB0aGlzIGRhdGEgaXMgdGhlIHVzZXIgaGltc2VsZi4gICBUaGlzIGRhdGEgc2hvdWxkIG5vdCBiZSBleHBvcnRlZCB0byBwbGFpbiB0ZXh0IGVpdGhlci4gIFRoZSBkYXRhIGNvdWxkIGhvd2V2ZXIgYmUgcmVhZCBhbmQgdXNlZCBieSBvdGhlciBtb2R1bGVzLjwvcD4KCjxoMz5UaXBzPC9oMz4KPHVsPgogIDxsaT5EeW5hbWljIE5hdmlnYXRpb25zOgogICAgPHA+SW4gbW9zdCBjaXJjdW1zdGFuY2VzIHlvdSBjYW5ub3QgYWxsb3cgYnJvd3NlciBjYWNoaW5nIG9uIGFueSBwYWdlIHRoYXQgaGFzIGEgZHluYW1pYyBuYXZpZ2F0aW9uLi4uIHRoZSB0d28gc2hvdWxkIG5vdCBiZSBtaXhlZC48L3A+CiAgPC9saT4KICA8bGk+UmVkaXJlY3QgUHJlZmVyZW5jZXMgYW5kICZsYnJhY2U7JHVzZXJuYW1lfToKICAgIDxwPklmIHVzaW5nIHRoZSA8Y29kZT4mbGJyYWNlOyR1c2VybmFtZX08L2NvZGU+IHNtYXJ0eSB2YXJpYWJsZSBpbiBhbnkgb2YgdGhlIHJlZGlyZWN0IHByZWZlcmVuY2VzIGluIHRoZSBNQU1TIG1vZHVsZSdzICZxdW90O2J1aWx0aW4gYXV0aGVudGljYXRpb24mcXVvdDsgdGFiIGJlIHN1cmUgdG8gdHVybiBPRkYgdGhlICZxdW90O0VtYWlsIGlzIFVzZXJuYW1lJnF1b3Q7IHByZWZlcmVuY2UuPC9wPgogIDwvbGk+CjwvdWw+Cgo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+CiAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBpZiB5b3UgaGF2ZSA8Yj5Gcm9udCBFbmQgVXNlcnMgKEZFVSk8L2I+IGluc3RhbGxlZCB5b3UnbGwgc2VlIGEgbmV3IHRhYiBoZXJlIHJlZ2FyZGluZyB0aGUgbWlncmF0aW9uIHN0ZXBzIGZyb20gPGI+RkVVPC9iPiB0byA8Yj5NQU1TPC9iPiBzaG91bGQgeW91IHJlcXVpcmUgaXQuPC9wPgo8L2Rpdj4gIDwvZGl2PgogIDxkaXYgaWQ9InVzaW5nX2MiPgogICAgPGgzPkhvdyBkbyBJIHVzZSBpdDo8L2gzPgo8cD5BZnRlciBpbnN0YWxsYXRpb24geW91IGNhbiB0aGUgYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBNQU1TIG1vZHVsZSB1bmRlciB0aGUgJnF1b3Q7VXNlcnMgJmFtcDsgR3JvdXBzJnF1b3Q7IG1lbnUuPC9wPgo8cD5Zb3UgbmVlZCB0byBkZWZpbmUgYXQgbGVhc3Qgb25lIHByb3BlcnR5LiAgUHJvcGVydGllcyBhcmUgZXNzZW50aWFsbHkgZmllbGQgZGVmaW5pdGlvbnMsIGhlcmUgeW91IHNwZWNpZnkgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gZ2F0aGVyLCBhbmQgbGltaXRzLiBpLmU6ICBOYW1lLCBBZ2UsIENpdHksIFN0YXRlLCBDb3VudHJ5LCBldGMuPC9wPgo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSAob3IgZW1haWwgYWRkcmVzcykgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3UuICBUaG91Z2ggeW91IGNhbiBwcm92aWRlIHByb3BlcnRpZXMgZm9yIGFkZGl0aW9uYWwgZW1haWwgYWRkcmVzc2VzLjwvcD4KPHA+PGI+Tm90ZTo8L2I+IE5ldyBpbnN0YWxsYXRpb25zIG9mIHRoZSBNQU1TIG1vZHVsZSBzcGVjaWZ5IHRoYXQgdGhlIHVzZXJzIGVtYWlsIGFkZHJlc3MgaXMgdGhlaXIgdXNlcm5hbWUgKHRoaXMgb3B0aW9uIGNhbiBiZSBjaGFuZ2VkIGluIHRoZSBtb2R1bGVzIGFkbWluIHBhbmVsKS4gIFNvIGlmIHVzaW5nIHRoaXMgb3B0aW9uIHlvdSB3aWxsIG5vdCBuZWVkIHRvIGNyZWF0ZSBhbiBlbWFpbCBhZGRyZXNzIHByb3BlcnR5LjwvcD4KPHA+TmV4dCB5b3UgbXVzdCBjcmVhdGUgb25lIG9yIG1vcmUgdXNlciBncm91cHMuICBXaGVuIHlvdSBjcmVhdGUgYSBncm91cCwgeW91IGFyZSBhc2tlZCBmb3IgYSBncm91cCBuYW1lLCBhIGRlc2NyaXB0aW9uIGFuZCB0byBhc3NvY2lhdGUgb25lIG9yIG1vcmUgcHJvcGVydGllcyB3aXRoIHRoYXQgZ3JvdXAsIHNwZWNpZnkgdGhlIHByb3BlcnRpZXMgc29ydCBvcmRlciwgYW5kIHdoZXRoZXIgaXQgaXMgYW4gb3B0aW9uYWwsIHJlcXVpcmVkLCBvciBoaWRkZW4gZmllbGQuICBBdCBsZWFzdCBvbmUgcHJvcGVydHkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYSBncm91cC48L3A+CjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuICBUYWtlIHNvbWUgdGltZSBoZXJlLCB0aGVyZSBhcmUgbnVtZXJvdXMgb3B0aW9ucy48L3A+CjxwPlRoaXJkbHkgeW91IHNob3VsZCBjcmVhdGUgc29tZSB1c2Vycy4gIEFkZGluZyB1c2VycyBpcyBhIHR3byBzdGVwIHByb2Nlc3MuICBXaGVuIGNyZWF0aW5nIGEgdXNlciB5b3UgYXJlIGFza2VkIGZvciB0aGUgdXNlcm5hbWUvZW1haWwgYW5kIHBhc3N3b3JkLCBhbmQgYW4gZXhwaXJ5IGRhdGUgZm9yIHRoYXQgdXNlci4gIFlvdSB0aGVuIG11c3Qgc2VsZWN0IHRoZSBncm91cHMgdGhhdCB0aGF0IHVzZXIgaXMgYSBtZW1iZXIgb2YsIGFuZCBjbGljayAmcXVvdDtOZXh0JnF1b3Q7PC9wPgo8cD48ZW0+Tm90ZTogPC9lbT5UaGlzIGlzIGEgbGFib3VyIGludGVuc2l2ZSBhbmQgYm9yaW5nIHByb2Nlc3MsIGl0IGlzIGVhc2llciB0byBsZXQgdXNlcnMgcmVnaXN0ZXIgdGhlbXNlbHZlcyA8ZW0+KFNlZSB0aGUgU2VsZlJlZ2lzdHJhdGlvbiBNb2R1bGUpPC9lbT4sIGFuZCB0aGVuIHlvdSBjYW4gZWRpdCB0aGVpciBncm91cCBpbmZvcm1hdGlvbi4gIGJ1dCBmb3IgdGVzdGluZyBwdXJwb3NlcywgcGxlYXNlIGNyZWF0ZSBhdCBsZWFzdCBvbmUgdXNlcjwvcD4KPHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD4KPHA+WW91IGFyZSBub3cgcmVhZHkgdG8gYWRkIHRoZSBmcm9udCBlbmQgZnVuY3Rpb25hbGl0eSB0byB5b3VyIHNpdGUuICBUaGlzIGlzIGFzIHNpbXBsZSBhcyBhZGRpbmcgdGhlICYjMTIzO01BTVN9IHRhZyB0byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGUuICBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGlzIHBhZ2UgaXMgc2V0IHRvICZxdW90O25vdCBjYWNoZSZxdW90OyB3aGVuIGVkaXRpbmcgdGhlIGNvbnRlbnQgcGFnZShzKSB3aGVyZSB0aGUgbG9naW4gZm9ybSBpcyBkaXNwbGF5ZWQuICBJZiB5b3UgY2FsbCB0aGUgJiMxMjM7TUFNU30gdGFnIGZyb20gd2l0aGluIGEgcGFnZSB0ZW1wbGF0ZSwgeW91IG11c3QgZGlzYWJsZSBjYWNoaW5nIG9uIGFsbCBwYWdlcyB0aGF0IHVzZSB0aGF0IHRlbXBsYXRlLjwvcD4KPHA+QWRkaW5nIHByb3RlY3RlZCBjb250ZW50IHRvIHlvdXIgQ01TTVMgc2l0ZSBpcyBhcyBzaW1wbGUgYXMgY3JlYXRpbmcgbmV3IHBhZ2VzIG9mIHR5cGUgJnF1b3Q7UHJvdGVjdGVkIENvbnRlbnQmcXVvdDsgYW5kIHNlbGVjdGluZyB3aGljaCB1c2VyIGdyb3VwcyAob3IgYWxsKSB0aGF0IGFyZSBhbGxvd2VkIHRvIHZpZXcgdGhlIHBhZ2UuPC9wPgo8cD48ZW0+T3B0aW9uYWxseTwvZW0+IENyZWF0ZSBhbm90aGVyIG5ldyBjb250ZW50IHBhZ2Ugb2YgdHlwZSAnRXJyb3IgSGFuZGxlcicgYW5kIHNldCB0aGUgZXJyb3IgaGFuZGxlciB0byA0MDMgZXJyb3IuICBJbiB0aGUgY29udGVudCBhcmVhIG9mIHRoYXQgcGFnZSwgeW91IHNob3VsZCBjYWxsICYjMTIzO01BTVN9IHRvIGRpc3BsYXkgYSBsb2dpbiBmb3JtIG9uIHRoZSA0MDMgZXJyb3IgcGFnZS48L3A+Cgo8aDM+U3Ryb25nIFBhc3N3b3Jkczo8L2gzPgo8cD5UaGlzIG1vZHVsZSwgd2hlbiBmcmVzaGx5IGluc3RhbGxlZCAobm90IGFuIHVwZ3JhZGUpIGVuYWJsZXMgc3Ryb25nIHBhc3N3b3Jkcy4gIEF0IGEgbWluaW11bSBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIgYW5kIG9uZSBkaWdpdCBhcmUgcmVxdWlyZWQgdG8gYmUgaW4gZXZlcnkgcGFzc3dvcmQuICBUaGUgc2l0ZSBhZG1pbmlzdHJhdG9yIGNhbiBhbHNvIHNwZWNpZnkgb3RoZXIgb3B0aW9uYWwgY2hhcmFjdGVycywgb25lIG9mIHdoaWNoIG11c3QgYmUgcHJlc2VudCBpbiBhbGwgcGFzc3dvcmRzLjwvcD4gIDwvZGl2PgogIDxkaXYgaWQ9InBhcmFtZXRlcnNfYyI+CiAgICA8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb24gPSA8L2I+ImRlZmF1bHQiCiAgICA8cD5BY3Rpb25zOjwvcD4KICAgIDx1bD4KICAgICAgPGxpPjxiPjxlbT5kZWZhdWx0PC9lbT48L2I+IC0gVGhlIGRlZmF1bHQgYWN0aW9uLiAgSWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGUgbG9nb3V0Zm9ybSBhY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuICBJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluIHRoZSBsb2dpbiBhY3Rpb24gd2lsbCBiZSBjYWxsZWQuCiAgICAgIDxsaT48Yj48ZW0+bG9naW48L2VtPjwvYj4gLSBEaXNwbGF5IHRoZSBsb2dpbiBmb3JtLjwvbGk+CiAgICAgIDxsaT48Yj48ZW0+bG9nb3V0Zm9ybTwvZW0+PC9iPiAtIERpc3BsYXkgb3V0cHV0IGFib3V0IHlvdXIgY3VycmVudCB1c2VybmFtZSwgYW5kIGFjdGlvbnMgdG8gY2hhbmdlIHlvdXIgc2V0dGluZ3MsIG9yIGxvZ291dC4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPgogICAgICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gZm9yIGxvZ2dlZCBpbiB1c2Vycy4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPgogICAgICA8bGk+PGI+PGVtPmZvcmdvdHB3PC9lbT48L2I+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm0uPC9saT4KICAgICAgICAgICAgPGxpPjxiPjxlbT5sb3N0dXNlcm5hbWU8L2VtPjwvYj4gLSBEaXNwbGF5IHRoZSBsb3N0dXNlcm5hbWUgZm9ybSAoaWYgdGhlIHN5c3RlbSBpcyBwcm9wZXJseSBzZXR1cCB0byBoYW5kbGUgbG9zdCB1c2VybmFtZSByZXF1ZXN0cywgYW5kIHRoZSB1c2VyIGlzIG5vdCBjdXJyZW50bHkgbG9nZ2VkIGluLjwvbGk+CiAgICAgIDxsaT48Yj48ZW0+cmVzZXRfc2Vzc2lvbjwvZW0+PC9iPiAtIFByb3ZpZGUgYSBqYXZhc2NyaXB0IGNvbnRyb2xsZWQgdGVtcGxhdGUgdG8gYWxsb3cgdGhlIG1hbnVhbCwgb3IgYXV0b21hdGljIHBpbmdpbmcgb2YgdGhlIHVzZXIgc2Vzc2lvbi4gIFRoaXMgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gcmVtaW5kIHRoZSB1c2VyIHRoYXQgaGlzIGxvZ2luIHNlc3Npb24gaXMgYWJvdXQgdG8gZXhwaXJlLCBhbmQgdG8gdHJpZ2dlciBpdHMgcmVzZXQuICBOb3JtYWxseSB0aGlzIG1ldGhvZCBpcyBub3QgcmVxdWlyZWQgYXMgYW55IHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgRnJvbnRFbmRVc2VyIGNvbnRyb2xzIHdvdWxkIGhhbmRsZSB0aGlzLCBqdXN0IHJlcXVpcmluZyB0aGUgdXNlciB0byB2aWV3IGEgcGFnZSBvbiBhIHJlZ3VsYXIgYmFzaXMuICBIb3dldmVyLCBpZiB0aGVyZSBhcmUgcGFnZXMgd2l0aCBhbG90IG9mIGNvbnRlbnQgcmVxdWlyaW5nIGV4dGVuc2l2ZSByZWFkaW5nLCB0aGlzIG1heSBiZSBhIHVzZWZ1bCBzb2x1dGlvbi48L2xpPgogICAgICA8bGk+PGI+PGVtPnZpZXd1c2VyPC9lbT48L2I+IC0gRGlzcGxheSBhIHJlcG9ydCBmb3IgYSBzaW5nbGUgdXNlciwgcmVxdWlyZXMgdXNlIG9mIHRoZSB1aWQgcGFyYW1ldGVyLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHJldHVybnRvID0gPC9iPiJwYWdlIgogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPgogICAgPHA+Tm90ZTogVGhhdCBvbiBsb2dpbiB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy48L3A+CiAgPC9MST4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3VwcyA9IDwvYj4iZ3JvdXAxLCBncm91cDIsIGdyb3VwMyIKICAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGZvcm1zLiAgQmFzaWNhbGx5IG9ubHkgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGlmIHRoZXkgYmVsb25nIHRvIHRoYXQgcGFydGljdWxhciBncm91cChzKS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBsb3N0dW5fZ3JvdXAgPSA8L2I+Imdyb3VwIgogICAgIDxwPlVzZWQgd2l0aCB0aGUgbG9zdHVzZXJuYW1lIGZvcm0sIHRoaXMgZmVhdHVyZSBzcGVjaWZpZXMgdGhlIGZyb250ZW5kIHVzZXIgZ3JvdXAgdG8gYXNzdW1lIHRodCB1c2VycyBhcmUgbWVtYmVycyBvZi48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBub2NhcHRjaGEgPSA8L2I+IjEiCiAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGFuZCB2ZXJpZnkgZm9ybXMsIFRoaXMgd2lsbCBkaXNhYmxlIGNhcHRjaGEgb24gdGhlIGZvcm0uIEJ5IGRlZmF1bHQsIGlmIHRoZSBDYXB0Y2hhIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHZhbGlkYXRpb24gb2YgYSBjYXB0Y2hhIGltYWdlIHdpbGwgYmUgcmVxdWlyZWQgZm9yIGxvZ2luLiAgVGhpcyBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgaW50ZW50ZWQgdG8gcHJldmVudCBicnV0ZSBmb3JjZSBhdHRhY2tzLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHVpZCA9IDwvYj5udWxsCiAgICA8cD5Vc2VkIHdpdGggdGhlIHZpZXd1c2VyIGFjdGlvbi4gIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIHRvIHNwZWNpZnkgd2hpY2ggdXNlciB0byB2aWV3IHRoZSBkZXRhaWxzIG9mLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGlubGluZSA9IDwvYj50cnVlCiAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgZm9ybSBzdWJtaXNzaW9uIHNob3VsZCByZXBsYWNlIHRoZSBvcmlnaW5hbCBpbnB1dCB0YWcuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9naW50ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGxvZ2luIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9nb3V0dGVtcGxhdGUgPSA8L2I+c3RyaW5nCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBsb2dvdXQgdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGNoYW5nZXNldHRpbmdzIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9yZ290cHd0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGZvcmdvdCBwYXNzd29yZCBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGxvc3R1bnRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGxvc3QgdXNlcm5hbWUgZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2aWV3dXNlcnRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgdmlld3VzZXIgdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGFmdGVyIHZlcmlmaWNhdGlvbiB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiByZXNldHNlc3Npb250ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IHJlc2V0IHNlc3Npb24gZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2ZXJpZnlmb3JtdGVtcGxhdGUgPSA8L2I+c3RyaW5nCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCB2ZXJpZmljYXRpb24gZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KPC91bD4KPHA+PHN0cm9uZz5UaXA6PC9zdHJvbmc+IFlvdSBjYW4gdXNlIHRoZSAmIzEyMzt4dF9tb2R1bGVfaGludH0gcGx1Z2luIGZyb20gQ01TRXh0LCBvciB0aGUgJiMxMjM7Y21zX21vZHVsZV9oaW50fSBwbHVnaW4gaW4gQ01TTVMgMi4wIHRvIHNldCB0aGVzZSBwYXJhbWV0ZXJzIG9uIGEgZ2xvYmFsLCBwZXItcGFnZS10ZW1wbGF0ZSwgb3IgcGVyLXBhZ2UgYmFzaXMgd2l0aG91dCBoYXZpbmcgdG8gYWRqdXN0IGV2ZXJ5IGNhbGwsIGFuZCB3aGlsZSBzdGlsbCBtYWludGFpbmluZyBwcmV0dHkgVVJMJ3MuPC9wPgoKPGgzPlVzaW5nIERpZmZlcmVudCBUZW1wbGF0ZXMuPC9oMz4KPHA+SXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBtYW55IG9mIHRoZSBNQU1TIG1vZHVsZSB0ZW1wbGF0ZXMuICBJdCBpcyBhbHNvIGZsZXhpYmxlLiAgWW91IGNhbiB1c2UgZ2xvYmFsIGNvbnRlbnQgYmxvY2tzLCBvciBmaWxlIGJhc2VkIHRlbXBsYXRlcyBvcgogYW55IG90aGVyIHNtYXJ0eSByZXNvdXJjZSBhcyBhIHRlbXBsYXRlLjwvcD4KPHVsPgogIDxsaT5UZW1wbGF0ZSBuYW1lcyBlbmRpbmcgd2l0aCAudHBsCiAgICA8cD5JZiB0aGUgc3BlY2lmaWVkIHRlbXBsYXRlIG5hbWUgaXMgbm90IGEgc21hcnR5IHJlc291cmNlLCBidXQgZW5kcyB3aXRoIHRoZSBleHRlbnNpb24gPGNvZGU+LnRwbDwvY29kZT4sIHRoZW4gTUFNUyAoYWN0dWFsbHkgQ01TRXh0KSB3aWxsIGFzc3VtZSB0aGF0IHlvdSB3YW50IGEgZmlsZSB0ZW1wbGF0ZSBmcm9tIHRoZSBtb2R1bGUgZGlyZWN0b3J5LCBvciBmcm9tIHRoZSBtb2R1bGVfY3VzdG9tIGRpcmVjdG9yeSA8ZW0+KHNlZSA8YSBocmVmPSJodHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZyI+aHR0cDovL2RvY3MuY21zbWFkZXNpbXBsZS5vcmc8L2E+IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtb2R1bGVfY3VzdG9tIHN0dWZmKTwvZW0+LgogIDwvbGk+CiAgPGxpPmdsb2JhbGNvbnRlbnQ6Z2NiX25hbWUKICAgIDxwPlNwZWNpZnlpbmcgYSB0ZW1wbGF0ZSBpbiB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIGdsb2JhbCBjb250ZW50IGJsb2NrIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT50ZW1wbGF0ZTpnY2JfbmFtZQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgcGFnZSB0ZW1wbGF0ZSBhcyBhcyByZXBsYWNlbWVudCB0ZW1wbGF0ZS48L3A+CiAgPC9saT4KICA8bGk+Y21zX3RlbXBsYXRlOm5hbWUKICAgIDxwPlNwZWNpZnlpbmcgYSB0ZW1wbGF0ZSBpbiB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIHRlbXBsYXRlIGZyb20gd2l0aGluIERlc2lnbiBNYW5hZ2VyIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT5maWxlOmZpbGVuYW1lLnRwbAogICAgPHA+VXNpbmcgdGhpcyBzeW50YXggYWxsb3dzIHlvdSB0byB1c2UgYSBmaWxlIGJhc2VkIHRlbXBsYXRlIGZyb20gd2l0aGluIHRoZSBzbWFydHkgdGVtcGxhdGVzIGRpciA8ZW0+KHVzdWFsbHkgdG1wL3RlbXBsYXRlcyk8L2VtPi4KICA8L2xpPgo8L3VsPgo8cD5UaGVzZSBtZXRob2RzIGNhbiBiZSB1c2VkIHdpdGggdGhlIGxvZ2ludGVtcGxhdGUsIGxvZ291dHRlbXBsYXRlLCBjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlLCBhbmQgZm9yZ290cHd0ZW1wbGF0ZSBwYXJhbWV0ZXJzLjwvcD4KPHA+Tm90ZTogVGhlc2UgcGFyYW1ldGVycyBtYXkgbm90IGJlIHBhc3NlZCB0byB0aGUgdmFyaW91cyBmb3JtcyBmcm9tIHRoZSBwcmltYXJ5ICYjMTIzO01BTVN9IGNhbGwuICBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSB0aGUgJiMxMjM7eHRfbW9kdWxlX2hpbnR9IHRhZyBvbiB0aGUgcGFnZSB3aGVyZSB0aGUgdmFyaW91cyBmb3JtcyBvciB2aWV3cyB3aWxsIGJlIGRpc3BsYXllZC4gaS5lOgo8cHJlPjxjb2RlPiYjMTIzO3h0X21vZHVsZV9oaW50IG1vZHVsZSA9IE1BTVMgY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSA9ICdnbG9iYWxfY29udGVudDpteWNoYW5nZXNldHRpbmdzJ308L2NvZGU+PC9wcmU+CiAgLjwvcD4gIDwvZGl2PgogIDxkaXYgaWQ9InNtYXJ0eV9jIj4KICAgIDxoMz5TbWFydHkgUGx1Z2luczo8L2gzPgo8aDQ+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+JiMxMjM7aWYgbWFtc19zbWFydHk6OmlzX3VzZXJfbWVtYmVyb2YoJ1N0YWZmLE1hbmFnZXJzJyl9SGVsbG8gQ3VzdG9tZXImIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPgo8L3VsPiAgPC9kaXY+CiAgPGRpdiBpZD0iaG9va3NfYyI+CiAgICA8aDM+SG9va3M8L2gzPgo8cD5UaGlzIG1vZHVsZSB1c2VzIEhvb2tzIHRvIHRpZSBpbiBleHRlcm5hbCBmdW5jdGlvbmFsaXR5LiAgVGhlIGZvbGxvd2luZyBob29rcyBhcmUgYXZhaWxhYmxlOjwvcD4KPHVsPgogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUNoYW5nZVNldHRpbmdzPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgdGhlIGNoYW5nZSBzZXR0aW5ncyBmb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCwgYnV0IGJlZm9yZSBhbnkgdmFsaWRhdGlvbiBvY2N1cnMuPC9wPgoJPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+Cgk8L3VsPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5NQU1TOjpDaGFuZ2VTZXR0aW5nc0FmdGVyVmFsaWRhdGU8L2NvZGU+CiAgICAgICAgPHA+U2VudCBhZnRlciBhbGwgdmFsaWRhdGlvbiBpcyBkb25lIGluIHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSwgYnV0IGJlZm9yZSBhbnl0aGluZyBpcyBzYXZlZCB0byB0aGUgZGF0YWJhc2UuPC9wPgoJPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+Cgk8L3VsPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5NQU1TOjpPbkNyZWF0ZVVzZXI8L2NvZGU+CiAgICAgICAgPHA+U2VudCBhZnRlciBhIHVzZXIgaXMgY3JlYXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25VcGRhdGVVc2VyPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGluZm9ybWF0aW9uIGlzIGVkaXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25EZWxldGVVc2VyPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyByZW1vdmVkIGZyb20gIHRoZSBkYXRhYmFzZS48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyIGlkPC9saT4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25DcmVhdGVHcm91cDwvY29kZT4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4KCSAgIDxsaT48Y29kZT5kZXNjcmlwdGlvbjwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgZGVzY3JpcHRpb248L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25VcGRhdGVHcm91cDwvY29kZT4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4KCSAgIDxsaT48Y29kZT5kZXNjcmlwdGlvbjwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgZGVzY3JpcHRpb248L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25EZWxldGVHcm91cDwvY29kZT4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUxvZ2luPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIGxvZ2dlZCBpbi4gSGFuZGxlcnMgY2FuIHRocm93IHRoZSA8Y29kZT5NQU1TTG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+Z3JvdXBzPC9jb2RlPiA6IHN0cmluZyAtIEEgbGlzdCBvZiBvbmx5Z3JvdXBzIChzZWUgdGhlIG9ubHlncm91cHMgcGFyYW0pPC9saT4KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyTG9naW5BdXRoPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGJ1dCBiZWZvcmUgYWN0dWFsbHkgYmVpbmcgbG9nZ2VkIGluLiAgVGhpcyBob29rIGlzIHVzZWZ1bCB0byBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIGRvIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLiAgSGFuZGxlcnMgY2FuIHRocm93IGEgPGNvZGU+TUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uPC9jb2RlPiB0byBnZW5lcmF0ZSBhbiBlcnJvci48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBpZCBkZXRlY3RlZCBmb3IgdGhpcyB1c2VybmFtZS48L2xpPgoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBwcm92aWRlZCB1c2VybmFtZS48L2xpPgoJICAgPGxpPjxjb2RlPmdyb3VwczwvY29kZT4gOiBzdHJpbmcgLSBBIGxpc3Qgb2Ygb25seWdyb3VwcyAoc2VlIHRoZSBvbmx5Z3JvdXBzIHBhcmFtKTwvbGk+CgkgICA8bGk+PGNvZGU+aXA8L2NvZGU+IDogc3RyaW5nIC0gVGhlIElQIGFkZHJlc3MgZGV0ZWN0ZWQuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpPbkxvZ2luRmFpbGVkPC9jb2RlPgogICAgICAgIDxwPlNlbnQgd2hlbiBhIGxvZ2luIGF0dGVtcHQgaGFzIGZhaWxlZCBmb3Igc29tZSByZWFzb24uPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgcHJvdmlkZWQgdXNlcm5hbWUuPC9saT4KCSAgIDxsaT48Y29kZT5tc2c8L2NvZGU+IDogc3RyaW5nIC0gVGhlIGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRodCBoZSBmYWlsZWQgbG9naW4gYXR0ZW1wdC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRXhwaXJlVXNlcjwvY29kZT4KICAgICAgICA8cD5TZW50IHdoZW4gYSB1c2VyIHNlc3Npb24gaXMgZXhwaXJlZCwgYW5kIHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgZXhwaXJlZCB1c2VyaWQuPC9saT4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZXhwaXJlZCB1c2VybmFtZS48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUFub25pbWl6ZVVzZXI8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBiZWZvcmUgYSB1c2VyIGlzIGFub25pbWl6ZWQuPC9wPgoJPHA+UGFyYW1ldGVyczo8L3A+Cgk8dWw+CgkgICAgPGxpPjxjb2RlPiR1aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZCB0byBleHBpcmUuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpBZnRlckFub25pbWl6ZVVzZXI8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBhZnRlciBhIHVzZXIgaXMgYW5vbmltaXplZC48L3A+Cgk8cD5QYXJhbWV0ZXJzOjwvcD4KCTx1bD4KCSAgICA8bGk+PGNvZGU+JHVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkIHRvIGV4cGlyZS48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkFmZXJWZXJpZnk8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBhZnRlciBhIHVzZXIgYWNjb3VudCBpcyB2ZXJpZmllZC48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgIDxsaT48Y29kZT51aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZCB0byBleHBpcmUuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpDbGVhclVzZXJIaXN0b3J5PC9jb2RlPgogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHVzZXIgaGlzdG9yeSBpcyBjbGVhcmVkIGZyb20gdGhlIGRhdGFiYXNlLjwvbGk+CiAgICAgICAgPHA+UGFyYW1ldGVyczo8L3A+Cgk8dWw+CgkgICAgPGxpPjxjb2RlPiRvbGRlcl90aGFuPC9jb2RlPiA6IGludCAtIEEgdW5peCB0aW1lc3RhbXAgY29udGFpbmluZyB0aGUgbWF4aW11bSB0aW1lIG9mIHJlY29yZHMgdG8ga2VlcC48L2xpPgoJPC91bD4KICA8L2xpPgoKICA8bGk+PGNvZGU+TUFNUzo6T25Mb2dpbjwvY29kZT4KICAgICAgICA8cD5TZW50IGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dpbiBvcGVyYXRpb24uPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+aXA8L2NvZGU+IDogc3RyaW5nIC0gVGhlIElQIGFkZHJlc3MgZGV0ZWN0ZWQuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpPbkxvZ291dDwvY29kZT4KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBoYXMgYmVlbiBsb2dnZWQgb3V0IG9mIHRoZSBzeXN0ZW0uPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+Cgk8L3VsPgogICAgPC9saT4KPC91bD4gIDwvZGl2PgogICAgPGRpdiBpZD0iYWJvdXRfYyI+CiAgICA8aDM+QWJvdXQgdGhpcyBtb2R1bGU8L2gzPgoKICA8cD5UaGlzIG1vZHVsZSBpcyBhIGZvcmsgb2YgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGRldmVsb3BlZCBieSA8c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAmbHQ7Y2FsZ3V5MTAwMCZndDs8L3N0cm9uZz4uPGJyIC8+CiAgICAgIFRoaXMgaXMgYSAxc3QgZ2VuZXJhdGlvbiBmb3JrIG9mIHRoZSBtb2R1bGUuIENvbnNpZGVyIHRoaXMgYXMgYW5vdGhlciBmbGF2b3VyIG9mIHRoZSBvcmlnaW5hbCBtb2R1bGUuPGJyIC8+CgogIElmIHlvdSBmaW5kIGFueSBidWdzIHBsZWFzZSBmZWVsIGZyZWUgdG8gc3VibWl0IGEgYnVnIHJlcG9ydCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0NjUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiBvciBmb3IgYW55IGdvb2QgaWRlYXMgY29uc2lkZXIgc3VibWl0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQ2NSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvcD4KICA8cD5QbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgZGV2ZWxvcGVycyBkbyBoYXZlIHRoZWlyIGRhaWx5IGpvYnMgd2hpY2ggbWVhbnMgdGhhdCBmZWF0dXJlIHJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGFuZCBkb25lIGFzIHRpbWUgYWxsb3dzLiBJZiB5b3UgbmVlZCBhIGZlYXR1cmUgcmVhbGx5IGJhZGx5IGNvbnNpZGVyIGNvbnRhY3Rpbmcgb25lIG9mIHRoZSBkZXZlbG9wZXJzIGZvciBhIHNwb25zb3JlZCBkZXZlbG9wbWVudC4KICA8L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIC8gbWFpbnRhaW5lcnMgb3IgcHJvamVjdCBtYW5hZ2VycyBhcmUgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL21hbXMiPmhlcmU8L2E+LiBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxldmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAyMCAtIDIwMjYsIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDxhIGhyZWY9Im1haWx0bzppbmZvQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7aW5mb0BjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE5LCBSb2JlcnQgQ2FtcGJlbGwgJmx0O2NhbGd1eTEwMDAmZ3Q7LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+Cjxocj4KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGZyZWUgc29mdHdhcmU7PGJyIC8+IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFzIHB1Ymxpc2hlZCBieSB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cm9uZz47PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD48c3Ryb25nPkZyb250RW5kVXNlcnM8L3N0cm9uZz4gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IDxzdHJvbmc+V0lUSE9VVCBBTlkgV0FSUkFOVFk8L3N0cm9uZz47PGJyIC8+IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiA8c3Ryb25nPk1FUkNIQU5UQUJJTElUWTwvc3Ryb25nPiBvciA8c3Ryb25nPkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFPC9zdHJvbmc+LjwvcD4KPHA+U2VlIHRoZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9wPgogPHA+WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgPHN0cm9uZz5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTwvc3Ryb25nPiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPC9zdHJvbmc+IG9yIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPnJlYWQgaXQgb25saW5lPC9hPi48L3A+CjxwPjxzdHJvbmc+WW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyA8c3Ryb25nPkZyb250RW5kVXNlcnM8L3N0cm9uZz4uPC9zdHJvbmc+PC9wPgo8aHI+CjxoND5DdXJyZW50IE1haW50YWluZXJzPC9oND4KPHVsPgogIDxsaSBjbGFzcz0icF9ib3R0b21fMTUiPjxzdHJvbmc+RmVybmFuZG8gTW9yZ2FkbyAoSm8gTW9yZyk8L3N0cm9uZz48L2xpPgo8L3VsPgoKPGg0PlBhc3QgTWFpbnRhaW5lcnM8L2g0Pgo8dWw+CiAgPGxpPjxzdHJvbmc+Um9iZXJ0IENhbXBiZWxsIChjYWxndXkxMDAwKTwvc3Ryb25nPiA8YnIgLz53d3cuY2FsZ3V5MTAwMC5jb208L2xpPgo8L3VsPgoKPGg0Pktub3duIENvbnRyaWJ1dG9yczwvaDQ+Cjx1bD4KICA8bGk+PHN0cm9uZz5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApPC9zdHJvbmc+PGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4KPC91bD4KCiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2PjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q01TTVNFeHQgPSZndDsgMS41LjM8L2xpPjxsaT5TbWFydHlFeHQgPSZndDsgMS4wPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKbyBNb3JnICZsdDtqb21vcmdAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4yLjA8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48c3R5bGU+CiAgc2VjdGlvbiNjaGFuZ2Vsb2cgc3BhbgogIHsKICAgIE1vbm8nLCAnTHVjaWRhIENvbnNvbGUnLCAnTHVjaWRhIFNhbnMgVHlwZXdyaXRlcicsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBjb2xvcjogIzIzMjMyMzsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci1yYWRpdXM6IDAuMzE1ZW07CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgcGFkZGluZzogMC4zZW07CiAgICBmb250LXNpemU6IDAuOWVtOwogIH0KPC9zdHlsZT4KPHNlY3Rpb24gaWQ9ImNoYW5nZWxvZyI+CiAgPGgzPjxzcGFuPlZlcnNpb24gMS4yLjA8L3NwYW4+IDxzbWFsbD4yMDI2LTAzLTE2PC9zbWFsbD48L2gzPgoKICA8dWw+CiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGNvbXBhdGliaWxpdHkgaXNzdWVzIGZvciBQSFAgNy40IHRocm91Z2ggUEhQIDguNDs8L2xpPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiBhZG1pbiBncm91cCBlZGl0aW5nLCBncm91cCBpbmZvIGNhY2hpbmcsIGFuZCBwYXNzd29yZC1yZXNldCBhdXRvLWxvZ2luIGVycm9yIGhhbmRsaW5nOzwvbGk+CiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IHVzZXIgY2FjaGUgaGFuZGxpbmcgZm9yIGZhaWxlZCBkYXRhYmFzZSByZWFkcyBhbmQgaW5jb25zaXN0ZW50IHByb3BlcnR5IHJvd3M7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gaW1wb3J0LCBsb3N0IHVzZXJuYW1lLCBmb3JjZWQgbG9nb3V0IHNjaGVkdWxpbmcsIGFuZCBzZXNzaW9uIHN0YXR1cyBpc3N1ZXM7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gdXNlciBoaXN0b3J5IGZpbHRlcmluZyBmb3JtIHBhcmFtZXRlcnM7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gc2Vzc2lvbiBzdGF0dXMgY291bnRkb3duIGNoZWNrcyB0byB1c2UgdGhlIENNU01TRXh0IHNlc3Npb24gbWFya2VyIGZpbGU7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gYmFja2VuZCBhdXRoZW50aWNhdGlvbiBzZXR0aW5ncyBzYXZlIGFjdGlvbiB0byBpZ25vcmUgZGlyZWN0IG5vbi1zdWJtaXQgcmVxdWVzdHM7PC9saT4KICAgIDxsaT48c3Bhbj5jaGFuZ2VkPC9zcGFuPiB0aGUgTUFNUyBBUEkgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGFuZCByZWxpYWJsZTs8L2xpPgogICAgPGxpPjxzcGFuPmFkZGVkPC9zcGFuPiB0aGUgPGNvZGU+QWRkSGlzdG9yeSgpPC9jb2RlPiwgPGNvZGU+R2V0QnVsa1VzZXJJbmZvKCk8L2NvZGU+LCBhbmQgPGNvZGU+SXNWYWxpZEVtYWlsQWRkcmVzcygpPC9jb2RlPiBBUEkgbWV0aG9kczs8L2xpPgogIDwvdWw+CgogIDxoMz48c3Bhbj5WZXJzaW9uIDEuMS4wPC9zcGFuPiA8c21hbGw+MjAyNC0wMi0xMjwvc21hbGw+PC9oMz4KCiAgPHVsPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiBiYWNrZW5kIHRhYnMgYWN0aXZlIHN0YXRlOzwvbGk+CiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGJhY2tlbmQgbGF5b3V0OzwvbGk+CiAgICA8bGk+PHNwYW4+Y2hhbmdlZDwvc3Bhbj4gZmluYWxseSBHcm91cHMgYW5kIFByb3BlcnRpZXMgYXJlIG5vdCByZXF1aXJlZCB0byBiZSBzZXQgZm9yIHVzZXJzIHRvIGJlIGNyZWF0ZWQ7PC9saT4KICAgIDxsaT48c3Bhbj5jaGFuZ2VkPC9zcGFuPiBhIG5ldyBBUEkgaGFzIGJlZW4gc3RhcnRlZCB0byBiZSBpbXBsZW1lbnRlZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgYW5kIGVmZmljaWVudDs8L2xpPgogICAgPGxpPjxzcGFuPmRlcHJlY2F0ZWQ8L3NwYW4+IHRoZSBvbGQgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmU7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gY29tcGF0aWJpbGl0eSB3aXRoIFBIUCA4KyAodGhlcmUgbWF5IHN0aWxsIGJlIGEgZmV3IG5vdGljZXMgb3Igd2FybmluZ3MpOzwvbGk+CiAgPC91bD4KCiAgPGgzPjxzcGFuPlZlcnNpb24gMS4wPC9zcGFuPiA8c21hbGw+MjAyMS0wMi0yMzwvc21hbGw+PC9oMz4KCiAgPHA+SW5pdGlhbCBwdWJsaWMgcmVsZWFzZTwvcD4KPC9zZWN0aW9uPgo8YnIgLz4=]]></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.5.3</requiredversion>
	</requires>
	<requires>
	  <requiredname>SmartyExt</requiredname>
	  <requiredversion>1.0</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/##event.CGEcommerceBase.OrderDeleted.php##</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gYW4gb3JkZXIgaGFzIGJlZW4gZGVsZXRlZC4KaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApIHJldHVybjsKCi8vIGhhbmRsZSB0aGUgY2FzZSBvZiBhdHRlbXB0ZWQgcmVjdXJzaW9uLgppZiggeHRfdG1wZGF0YTo6ZXhpc3RzKF9fRklMRV9fKSApIHJldHVybjsKeHRfdG1wZGF0YTo6c2V0KF9fRklMRV9fLDEpOwoKLy8gaGVyZSB3ZSBncmFiIHRoZSBvcmRlciBkaXJlY3RseS4KJG9yZGVyX2lkID0gKGludCkkcGFyYW1zWydvcmRlcl9pZCddOwokb3JkZXJfb2JqID0gb3JkZXJzX29wczo6bG9hZF9ieV9pZCgkb3JkZXJfaWQpOwppZiggISRvcmRlcl9vYmogKSByZXR1cm47CgovLyBmaW5kIHRoZSBsaW5lIGl0ZW0gd2l0aCBhIFNlbGZSZWcgU3Vic2NyaXB0aW9uLgpmb3IoICRzID0gMDsgJHMgPCAkb3JkZXJfb2JqLT5jb3VudF9kZXN0aW5hdGlvbnMoKTsgJHMrKyApIHsKICAgICRzaGlwcGluZyA9ICRvcmRlcl9vYmotPmdldF9zaGlwcGluZygkcyk7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkc2hpcHBpbmctPmNvdW50X2FsbF9pdGVtcygpOyAkaSsrICkgewogICAgICAgICRpdGVtID0gJHNoaXBwaW5nLT5nZXRfaXRlbSgkaSk7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfc291cmNlKCkgIT0gJ1NlbGZSZWdpc3RyYXRpb24nICkgY29udGludWU7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfaXRlbV90eXBlKCkgIT0gbGluZV9pdGVtOjpJVEVNVFlQRV9TRVJWSUNFICkgY29udGludWU7CiAgICAgICAgaWYoICEkaXRlbS0+aXNfc3Vic2NyaXB0aW9uKCkgKSBjb250aW51ZTsKCiAgICAgICAgJHVpZCA9ICRpdGVtLT5nZXRfZXh0cmEoJ21hbXNfdWlkJyk7CiAgICAgICAgaWYoICEkdWlkICkgY29udGludWU7ICAvLyBubyBhc3NvY2RhdGEsIG1heWJlIHRoaXMgdXNlciBuZXZlciBwYWlkLgoKICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR1aW5mbykgfHwgJHVpbmZvWzBdID09IEZBTFNFICkgewogICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksIHNwcmludGYoJ09yZGVyICVkIGRlbGV0ZWQgYnV0IGNhbm5vdCBmaW5kIHVzZXIgYWNjb3VudCcsJG9yZGVyX2lkKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHVpbmZvID0gJHVpbmZvWzFdOwoKICAgICAgICBzd2l0Y2goICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmRlbGV0ZWQnKSApCiAgICAgICAgewogICAgICAgIGNhc2UgJ2RlbGV0ZSc6CiAgICAgICAgICAgICR0aGlzLT5EZWxldGVBbGxVc2VyUHJvcGVydGllcygnJywkdWlkLHRydWUpOwogICAgICAgICAgICAkdGhpcy0+RGVsZXRlVXNlckZ1bGwoJHVpZCk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwgc3ByaW50ZignRGVsZXRlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJWQgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2Rpc2FibGUnOgogICAgICAgICAgICAkdGhpcy0+U2V0VXNlckRpc2FibGVkKCAkdWlkICk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSxzcHJpbnRmKCdEaXNhYmxlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJXMgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V4cGlyZSc6CiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyKCR1aWQsJHVpbmZvWyd1c2VybmFtZSddLCR1aW5mb1sncGFzc3dvcmQnXSx0aW1lKCktMzYwMCxmYWxzZSk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwgc3ByaW50ZignRXhwaXJlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJWQgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ25vbmUnOgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICB9Cn0KCi8vIHNldHVwIGZvciBhbm90aGVyIG9yZGVyLi4uIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UuCnh0X3RtcGRhdGE6OmVyYXNlKF9fRklMRV9fKTsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/##event.CGEcommerceBase.OrderUpdated.php##</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gYW4gb3JkZXIgaGFzIGJlZW4gZGVsZXRlZC4KaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApIHJldHVybjsKCi8vIGhhbmRsZSB0aGUgY2FzZSBvZiBhdHRlbXB0ZWQgcmVjdXJzaW9uLgoKaWYoIHh0X3RtcGRhdGE6OmV4aXN0cyhfX0ZJTEVfXykgKSByZXR1cm47Cnh0X3RtcGRhdGE6OnNldChfX0ZJTEVfXywxKTsKCi8vIGhlcmUgd2UgZ3JhYiB0aGUgb3JkZXIgZGlyZWN0bHkuCiRvcmRlcl9pZCA9IChpbnQpJHBhcmFtc1snb3JkZXJfaWQnXTsKJG9yZGVyX29iaiA9IG9yZGVyc19vcHM6OmxvYWRfYnlfaWQoJG9yZGVyX2lkKTsKaWYoICEkb3JkZXJfb2JqICkgcmV0dXJuOwppZiggIWluX2FycmF5KCAkb3JkZXJfb2JqLT5nZXRfc3RhdHVzKCksIFsnY2FuY2VsbGVkJywgJ2hvbGQnLCAnc3Vic2NyaWJlZCddICkgKSByZXR1cm47IC8vIGRvIG5vdCB1c2UgY29uc3RhbnQgYXMgaXQgY3JlYXRlcyBhIGRlcGVuZGVuY3kuCgovLyBmaW5kIHRoZSBsaW5lIGl0ZW0gd2l0aCBhIFNlbGZSZWcgU3Vic2NyaXB0aW9uLgpmb3IoICRzID0gMDsgJHMgPCAkb3JkZXJfb2JqLT5jb3VudF9kZXN0aW5hdGlvbnMoKTsgJHMrKyApIHsKICAgICRzaGlwcGluZyA9ICRvcmRlcl9vYmotPmdldF9zaGlwcGluZygkcyk7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkc2hpcHBpbmctPmNvdW50X2FsbF9pdGVtcygpOyAkaSsrICkgewogICAgICAgICRpdGVtID0gJHNoaXBwaW5nLT5nZXRfaXRlbSgkaSk7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfc291cmNlKCkgIT0gJ1NlbGZSZWdpc3RyYXRpb24nICkgY29udGludWU7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfaXRlbV90eXBlKCkgIT0gbGluZV9pdGVtOjpJVEVNVFlQRV9TRVJWSUNFICkgY29udGludWU7CiAgICAgICAgaWYoICEkaXRlbS0+aXNfc3Vic2NyaXB0aW9uKCkgKSBjb250aW51ZTsKCiAgICAgICAgJHVpZCA9ICRpdGVtLT5nZXRfZXh0cmEoJ21hbXNfdWlkJyk7CiAgICAgICAgaWYoICEkdWlkICkgY29udGludWU7ICAvLyBubyBhc3NvY2RhdGEsIG1heWJlIHRoaXMgdXNlciBuZXZlciBwYWlkLgoKICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR1aW5mbykgfHwgJHVpbmZvWzBdID09IEZBTFNFICkgewogICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksc3ByaW50ZignVHJhbnNhY3Rpb24gcmVsYXRlZCB0byB1c2VyICVkIG9jY3VycmVkLCBidXQgY291bGQgbm90IGZpbmQgdXNlciBhY2NvdW50JykpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR1aW5mbyA9ICR1aW5mb1sxXTsKCiAgICAgICAgaWYoICRvcmRlcl9vYmotPmdldF9zdGF0dXMoKSA9PSAnaG9sZCcgKSB7CiAgICAgICAgICAgIC8vIGhvbGQgb3JkZXIsIHByb2xseSByZWxhdGVkIHRvIGRlY2xpbmVkIHBheW1lbnQuCiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyRGlzYWJsZWQoICR1aWQgKTsKICAgICAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLCdEaXNhYmxlZCB1c2VyIGR1ZSB0byByZWxhdGVkIG9yZGVyIHN0YXR1cyBvZiBob2xkJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICRvcmRlcl9vYmotPmdldF9zdGF0dXMoKSA9PSAnc3Vic2NyaWJlZCcgKSB7CiAgICAgICAgICAgIC8vIHN1YnNjcmliZWQuCiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyRGlzYWJsZWQoICR1aWQsIEZBTFNFICk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwnRW5hYmxlZCB1c2VyIGR1ZSB0byByZWxhdGVkIG9yZGVyIHN0YXR1cyBvZiBzdWJzY3JpYmVkJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBjYW5jZWxsZWQgb3JkZXIKICAgICAgICAgICAgc3dpdGNoKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZWNvbW1fb3JkZXJjYW5jZWxsZWQnKSApIHsKICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzoKICAgICAgICAgICAgICAgICR0aGlzLT5EZWxldGVBbGxVc2VyUHJvcGVydGllcygnJywkdWlkLHRydWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVVzZXIoJHVpZCk7CiAgICAgICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksIHNwcmludGYoJ0RlbGV0ZWQgdXNlciAlcyBiZWNhdXNlIG9yZGVyICVkIHdhcyBkZWxldGVkJywkdWluZm9bJ3VzZXJuYW1lJ10sJG9yZGVyX2lkKSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2Rpc2FibGUnOgogICAgICAgICAgICAgICAgJHRoaXMtPlNldFVzZXJEaXNhYmxlZCggJHVpZCApOwogICAgICAgICAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLHNwcmludGYoJ0Rpc2FibGVkIHVzZXIgJXMgYmVjYXVzZSBvcmRlciAlcyB3YXMgY2FuY2VsbGVkJywkdWluZm9bJ3VzZXJuYW1lJ10sJG9yZGVyX2lkKSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2V4cGlyZSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+U2V0VXNlcigkdWlkLCR1aW5mb1sndXNlcm5hbWUnXSxudWxsLHRpbWUoKS0zNjAwKTsKICAgICAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwgc3ByaW50ZignRXhwaXJlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJWQgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnbm9uZSc6CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKLy8gc2V0dXAgZm9yIGFub3RoZXIgb3JkZXIuLi4gc2hvdWxkbid0IGhhcHBlbiwgYnV0IGp1c3QgaW4gY2FzZS4KeHRfdG1wZGF0YTo6ZXJhc2UoX19GSUxFX18pOwoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/action.addgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCmZ1bmN0aW9uIHN3YXAoJiRhLCAmJGIpIDogdm9pZAp7CiAgJHRtcCA9ICRhOwogICRhICAgPSAkYjsKICAkYiAgID0gJHRtcDsKfQoKCmZ1bmN0aW9uIHJlb3JkZXJfYnlfa2V5KCYkaW5wdXQsICRmbGQsICRrZXlzKSA6IHZvaWQKewogIGlmKCFpc19hcnJheSgkaW5wdXQpKXtyZXR1cm47fQogIAogICR0bXAgPSBbXTsKICAKICBmb3JlYWNoKCRrZXlzIGFzICRvbmVrZXkpCiAgewogICAgZm9yZWFjaCgkaW5wdXQgYXMgJHJlYykKICAgIHsKICAgICAgaWYoJHJlY1skZmxkXSA9PSAkb25la2V5KQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJHJlYzsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICAkaW5wdXQgPSAkdG1wOwp9CgpmdW5jdGlvbiBhZGp1c3Rfb3JkZXJfYnlfa2V5cygmJGlucHV0LCAkZmxkLCAka2V5cykgOiB2b2lkCnsKICBpZighaXNfYXJyYXkoJGlucHV0KSl7cmV0dXJuO30KICAKICAkdG1wID0gW107CiAgCiAgZm9yZWFjaCgka2V5cyBhcyAkb25la2V5KQogIHsKICAgIGZvcmVhY2goJGlucHV0IGFzICRyZWMpCiAgICB7CiAgICAgIGlmKCRyZWNbJGZsZF0gPT0gJG9uZWtleSkKICAgICAgewogICAgICAgICR0bXBbXSA9ICRyZWM7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgZm9yZWFjaCgkaW5wdXQgYXMgJHJlYykKICB7CiAgICAkZjEgPSAwOwogICAgZm9yZWFjaCgkdG1wIGFzICR0bXByZWMpCiAgICB7CiAgICAgIGlmKCRyZWNbJGZsZF0gPT0gJHRtcHJlY1skZmxkXSkKICAgICAgewogICAgICAgICRmMSA9IDE7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGlmKDAgPT0gJGYxKSB7ICR0bXBbXSA9ICRyZWM7IH0KICB9CiAgCiAgJGlucHV0ID0gJHRtcDsKfQoKCi8vCi8vIEluaXRpYWxpemF0aW9uCi8vCiRncm91cG5hbWUgPSAkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSA/PyAnJzsKJGdyb3VwZGVzYyA9ICRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddID8/ICcnOwokZ2lkICAgICAgID0gLTE7CgovLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgppZighaXNzZXQoJHBhcmFtc1snZ3JvdXBfaWQnXSkpCnsKICBpZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZGdyb3VwJykpCiAgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgCiAgICByZXR1cm47CiAgfQp9CmVsc2UKewogIGlmKCEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpKQogIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgIAogICAgcmV0dXJuOwogIH0KfQoKJHByb3BkZWZuID0gW107CnsKICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAKICAjIHdoeSB3b3VsZCB3ZSB3YW50IHRvIGVuZm9yY2UgdGhlIHVzZSBvZiBleHRyYSBwcm9wZXJ0aWVzPyAoSk0pCiAgCi8vICBpZihjb3VudCgkdG1wKSA9PSAwKQovLyAgewovLyAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9ub3Byb3BlcnRpZXMnKSk7Ci8vCi8vICAgIHJldHVybjsKLy8gIH0KICAKICBmb3JlYWNoKCR0bXAgYXMgJGtleSA9PiAkcmVjKQogIHsKICAgICRyZWNbJ3JlcXVpcmVkJ10gICA9IDA7CiAgICAkcmVjWydsb3N0dW5mbGFnJ10gPSAtMTsKICAgICRwcm9wZGVmblska2V5XSAgICA9ICRyZWM7CiAgfQp9CgppZihpc3NldCgkcGFyYW1zWydncm91cF9pZCddKSkKewogIC8vIHdlJ3JlIGVkaXRpbmcgYSBncm91cAogICRnaWQgICA9IChpbnQpJHBhcmFtc1snZ3JvdXBfaWQnXTsKICAkZ2luZm8gPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCRnaWQpOwogIAogIGlmKGlzc2V0KCRnaW5mb1swXSkgJiYgRkFMU0UgPT0gJGdpbmZvWzBdKQogIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX2dyb3Vwbm90Zm91bmQnKSk7CiAgICAKICAgIHJldHVybjsKICB9CiAgCiAgJGdyb3VwbmFtZSA9ICRnaW5mb1snZ3JvdXBuYW1lJ107CiAgJGdyb3VwZGVzYyA9ICRnaW5mb1snZ3JvdXBkZXNjJ107CiAgCiAgLy8gbG9hZCByZWxhdGlvbnMsIGFuZCBhZGp1c3QgdGhlIHByb3BkZWZuIGFycmF5CiAgJHJlcyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRnaWQpOwogIAogIGlmKGlzc2V0KCRyZXNbMF0pICYmIGZhbHNlID09ICRyZXNbMF0pCiAgewogICAgLy8gZWRpdGluZyBhIGdyb3VwLCBidXQgbm8gcHJvcGVydHkgcmVsYXRpb25zIChtYXliZSB0aGUgZ3JvdXBzIGFyZSBoZWxkIGluIGEgY29uc3VtZXIgbW9kdWxlLCBidXQgbm90IHRoZSBwcm9wZXJ0eSBkZWZzKS4KICAgIC8vIHRyZWF0IGl0IGxpa2Ugd2UncmUgYWRkaW5nIGEgZ3JvdXAuCiAgICAvKgogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkgICAgICR0aGlzLT5MYW5nKCdlcnJvcl9ub2dyb3VwcHJvcGVydGllcycpKTsKICAgIHJldHVybjsKICAgICovCiAgfQogIGVsc2UKICB7CiAgICAvLyBzb3J0IHRoZW0gYnkgc29ydCBrZXkKICAgIHVhc29ydCgkcmVzLCBbJ3h0X2FycmF5JywgJ2NvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleSddKTsKICAgIAogICAgLy8gc29ydCB0aGUgcHJvcGRlZm5zIGJ5IHRoZSBzb3J0IG9yZGVyLgogICAgJG5hbWVzID0gW107CiAgICBmb3JlYWNoKCRyZXMgYXMgJHRtcCl7JG5hbWVzW10gPSAkdG1wWyduYW1lJ107fQogICAgYWRqdXN0X29yZGVyX2J5X2tleXMoJHByb3BkZWZuLCAnbmFtZScsICRuYW1lcyk7CiAgICAKICAgIC8vIHVwZGF0ZSB0aGUgcHJvcGRlZm5zCiAgICBmb3IoJGkgPSAwLCAkaU1heCA9IGNvdW50KCRyZXMpOyAkaSA8ICRpTWF4OyAkaSsrKQogICAgewogICAgICBmb3IoJGogPSAwLCAkak1heCA9IGNvdW50KCRwcm9wZGVmbik7ICRqIDwgJGpNYXg7ICRqKyspCiAgICAgIHsKICAgICAgICBpZigkcmVzWyRpXVsnbmFtZSddID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgICB7CiAgICAgICAgICAkcHJvcGRlZm5bJGpdWydyZXF1aXJlZCddICAgPSAkcmVzWyRpXVsncmVxdWlyZWQnXTsKICAgICAgICAgICRwcm9wZGVmblskal1bJ2xvc3R1bmZsYWcnXSA9ICRyZXNbJGldWydsb3N0dW5mbGFnJ10gPz8gLTE7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0gLy8gZm9yCiAgfSAvLyBlbHNlCn0KCi8vIGV4Y2x1ZGUgcHJvcGVydHkgZGVmbnMgZnJvbSBtb2R1bGVzCnsKICAkdG1wID0gW107CiAgCiAgZm9yZWFjaCgkcHJvcGRlZm4gYXMgJGtleSA9PiAkcmVjKQogIHsKICAgIGlmKCFpc3NldCgkcmVjWydleHRyYSddWydtb2R1bGUnXSkpIHsgJHRtcFtdID0gJHJlYzsgfQogIH0KICAKICAkcHJvcGRlZm4gPSAkdG1wOwp9CgppZihpc3NldCAoJHBhcmFtc1snY2FuY2VsJ10pKSB7ICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2dyb3VwcycpOyB9CgppZihpc3NldCgkcGFyYW1zWydtb3ZldXAnXSkpCnsKICAvLyB1cGRhdGUgdGhlIHByb3BkZWZuIHdpdGggc3RhdHVzIHZhbHVlcwogIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHBhcmFtc1snaW5wdXRfbmFtZSddKTsgJGkgPCAkaU1heDsgJGkrKykKICB7CiAgICAkbmFtZSA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICBmb3IoJGogPSAwLCAkak1heCA9IGNvdW50KCRwcm9wZGVmbik7ICRqIDwgJGpNYXg7ICRqKyspCiAgICB7CiAgICAgIGlmKCRuYW1lID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgewogICAgICAgICRwcm9wZGVmblskal1bJ3JlcXVpcmVkJ10gICA9ICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkJ11bJGldOwogICAgICAgICRwcm9wZGVmblskal1bJ2xvc3R1bmZsYWcnXSA9IGlzc2V0KCRwYXJhbXNbJ2lucHV0X2xvc3R1bl8nIC4gJG5hbWVdKSA/IDEgOiAtMTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSkpCiAgewogICAgJGdyb3VwbmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pOwogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSkpCiAgewogICAgJGdyb3VwZGVzYyA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10pOwogIH0KICAKICAvLyB3ZSdyZSBtb3Zpbmcgc3R1ZmYgdXAKICAvLyBzbyBhZGp1c3QgdGhlIHByb3BkZWZuIGFycmF5CiAgJGlkeCA9IChpbnQpJHBhcmFtc1snbW92ZXVwJ10gLSAxOwogIHN3YXAoJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpZHhdLCAkcGFyYW1zWydpbnB1dF9uYW1lJ11bJGlkeCAtIDFdKTsKICByZW9yZGVyX2J5X2tleSgkcHJvcGRlZm4sICduYW1lJywgJHBhcmFtc1snaW5wdXRfbmFtZSddKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snbW92ZWRvd24nXSkpCnsKICAvLyB1cGRhdGUgdGhlIHByb3BkZWZuIHdpdGggc3RhdHVzIHZhbHVlcwogIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHBhcmFtc1snaW5wdXRfbmFtZSddKTsgJGkgPCAkaU1heDsgJGkrKykKICB7CiAgICAkbmFtZSA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICBmb3IoJGogPSAwLCAkak1heCA9IGNvdW50KCRwcm9wZGVmbik7ICRqIDwgJGpNYXg7ICRqKyspCiAgICB7CiAgICAgIGlmKCRuYW1lID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgewogICAgICAgICRwcm9wZGVmblskal1bJ3JlcXVpcmVkJ10gICA9ICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkJ11bJGldOwogICAgICAgICRwcm9wZGVmblskal1bJ2xvc3R1bmZsYWcnXSA9IGlzc2V0KCRwYXJhbXNbJ2lucHV0X2xvc3R1bl8nIC4gJG5hbWVdKSA/IDEgOiAtMTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSkpCiAgewogICAgJGdyb3VwbmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pOwogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSkpCiAgewogICAgJGdyb3VwZGVzYyA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10pOwogIH0KICAKICAvLyB3ZSdyZSBtb3Zpbmcgc3R1ZmYgZG93bgogIC8vIHNvIGFkanVzdCB0aGUgcHJvcGRlZm4gYXJyYXkKICAkaWR4ID0gKGludCkkcGFyYW1zWydtb3ZlZG93biddIC0gMTsKICBzd2FwKCRwYXJhbXNbJ2lucHV0X25hbWUnXVskaWR4XSwgJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpZHggKyAxXSk7CiAgcmVvcmRlcl9ieV9rZXkoJHByb3BkZWZuLCAnbmFtZScsICRwYXJhbXNbJ2lucHV0X25hbWUnXSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkKewogICR0aGlzLT5teVJlZGlyZWN0KCRpZCwgJ2RvX2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKLy8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCmlmKGlzc2V0KCRwYXJhbXNbJ2Vycm9yJ10pKQp7CiAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsICRwYXJhbXNbJ2Vycm9yJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10pOwp9CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGhpcy0+TGFuZygnYWRkZ3JvdXAnKSk7CmlmKCRnaWQgPiAwKQp7CiAgJHNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZ3JvdXBfaWQnLCAkZ2lkKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsICR0aGlzLT5MYW5nKCdlZGl0Z3JvdXAnKSk7Cn0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9ncm91cG5hbWUnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZ3JvdXBkZXNjJywgJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpOwokY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwokYWRkdGV4dCAgPSAnJzsKCmlmKAogICEkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSAmJgogICEkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpCikKewogICRhZGR0ZXh0ID0gJ3JlYWRvbmx5PSJyZWFkb25seSIgZGlzYWJsZWQ9ImRpc2FibGVkIic7Cn0KCiRzbWFydHktPmFzc2lnbignaW5wdXRfZ3JvdXBuYW1lJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9ncm91cG5hbWUnLCAkZ3JvdXBuYW1lLCAyMCwgODAsICRhZGR0ZXh0KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZ3JvdXBkZXNjJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9ncm91cGRlc2MnLCAkZ3JvdXBkZXNjLCA4MCwgMjU1LCAkYWRkdGV4dCkpOwoKLy8gZGlzcGxheSBhIGxpc3Qgb2YgdGhlIHByb3BlcnRpZXMgaW4gYSBmb3JtCi8vIHRvIGFsbG93IHRoZSB1c2VyIHRvIHBpY2sgd2hpY2ggb25lcyBhcmUgcmVxdWlyZWQgYW5kIHdoaWNoIG9uZXMgYXJlbnQuCiRyb3dhcnJheSA9IGFycmF5KCk7CiRrZXlzICAgICA9IGFycmF5X2tleXMoJHRoaXMtPkdldEZpZWxkVHlwZXMoKSk7CiRvcHRpb25zICA9IGFycmF5KAogICR0aGlzLT5MYW5nKCdvZmYnKSAgICAgID0+IDAsCiAgJHRoaXMtPkxhbmcoJ29wdGlvbmFsJykgPT4gMSwKICAkdGhpcy0+TGFuZygncmVxdWlyZWQnKSA9PiAyLAogICR0aGlzLT5MYW5nKCdoaWRkZW4nKSAgID0+IDMsCiAgJHRoaXMtPkxhbmcoJ3JlYWRvbmx5JykgPT4gNAopOwoKJHRoZW1lT2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfdGhlbWVfb2JqZWN0KCk7CiRpbWdfdXAgICAgICA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vc29ydF91cC5naWYnLCAkdGhpcy0+TGFuZygnbW92ZV91cCcsICcnLCAnJywgJ3N5c3RlbWljb24nKSk7CiRzbWFydHktPmFzc2lnbignaW1nX3VwJywgJGltZ191cCk7CiRpbWdfZG93biA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZicsICR0aGlzLT5MYW5nKCdtb3ZlX2Rvd24nLCAnJywgJycsICdzeXN0ZW1pY29uJykpOwokc21hcnR5LT5hc3NpZ24oJ2ltZ19kb3duJywgJGltZ19kb3duKTsKCiRzdWJtaXRfYnRuID0gZnVuY3Rpb24oCiAgc3RyaW5nICRpZCwKICBzdHJpbmcgJG5hbWUsCiAgc3RyaW5nICR2YWx1ZSwKICA/c3RyaW5nICRhZGR0ZXh0ID0gbnVsbCwKICA/c3RyaW5nICRpbWcgPSBudWxsCikKewogIHJldHVybiAiPGJ1dHRvbiBuYW1lPSd7JGlkfXskbmFtZX0nIHZhbHVlPSd7JHZhbHVlfScgJGFkZHRleHQ+IiAuICR0aGlzLT5EaXNwbGF5SW1hZ2UoJGltZywgJG5hbWUpIC4gJzwvYnV0dG9uPic7Cn07CiRzb3J0b3JkZXIgID0gMTsKCmZvcmVhY2goJHByb3BkZWZuIGFzICRkZWZuKQp7CiAgJG9uZXJvdyAgICAgICAgICAgID0gbmV3IFN0ZENsYXNzKCk7CiAgJG9uZXJvdy0+bmFtZSAgICAgID0gJGRlZm5bJ25hbWUnXTsKICAkb25lcm93LT5wcm9tcHQgICAgPSAkZGVmblsncHJvbXB0J107CiAgJG9uZXJvdy0+dHlwZSAgICAgID0gJHRoaXMtPkxhbmcoJGtleXNbJGRlZm5bJ3R5cGUnXV0pOwogICRvbmVyb3ctPmhpZGRlbiAgICA9ICc8ZGl2PicgLiAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaW5wdXRfbmFtZVtdJywgJGRlZm5bJ25hbWUnXSkgLiAnPC9kaXY+JzsKICAkb25lcm93LT5yZXF1aXJlZCAgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9yZXF1aXJlZFtdJywgJG9wdGlvbnMsIC0xLCAkZGVmblsncmVxdWlyZWQnXSk7CiAgJG9uZXJvdy0+bG9zdHVuICAgID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaW5wdXRfbG9zdHVuXycgLiAkZGVmblsnbmFtZSddLCAxLCAkZGVmblsnbG9zdHVuZmxhZyddKTsKICAkb25lcm93LT5lbmNyeXB0ZWQgPSAkZGVmblsnZW5jcnlwdCddOwogIAogIGlmKCRzb3J0b3JkZXIgPiAxKQogIHsKICAgICRvbmVyb3ctPm1vdmV1cF9pZHggPSAkc29ydG9yZGVyOwogICAgJG9uZXJvdy0+bW92ZXVwICAgICA9ICRzdWJtaXRfYnRuKCRpZCwgJ21vdmV1cCcsICRzb3J0b3JkZXIsICcnLCAnaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmJyk7CiAgfQogIGlmKCRzb3J0b3JkZXIgPCBjb3VudCgkcHJvcGRlZm4pKQogIHsKICAgICRvbmVyb3ctPm1vdmVkb3duX2lkeCA9ICRzb3J0b3JkZXI7CiAgICAkb25lcm93LT5tb3ZlZG93biAgICAgPSAkc3VibWl0X2J0bigkaWQsICdtb3ZlZG93bicsICRzb3J0b3JkZXIsICcnLCAnaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYnKTsKICB9CiAgCiAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICsrJHNvcnRvcmRlcjsKfQoKJHNtYXJ0eS0+YXNzaWduKCdwcm9wcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbigncHJvcGNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignc29ydG9yZGVydGV4dCcsICR0aGlzLT5MYW5nKCdzb3J0b3JkZXInKSk7CiRzbWFydHktPmFzc2lnbignbmFtZXRleHQnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHR0ZXh0JywgJHRoaXMtPkxhbmcoJ3Byb21wdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd0eXBldGV4dCcsICR0aGlzLT5MYW5nKCd0eXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ2ZpZWxkc3RhdHVzdGV4dCcsICR0aGlzLT5MYW5nKCdmaWVsZHN0YXR1cycpKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VkaW5sb3N0dW50ZXh0JywgJHRoaXMtPkxhbmcoJ3VzZWRpbmxvc3R1bicpKTsKCi8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZGdyb3VwLnRwbCcpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.addprop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgeyBleGl0OyB9CgppbmNsdWRlX29uY2UgX19ESVJfXyAuICcvaW5jbHVkZXMvZnVuY3Rpb24uaHRtbF9lbnRpdHlfZGVjb2RlX3BocDQucGhwJzsKCmlmKCEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnYWRkcHJvcCcpKSB7IGV4aXQ7IH0KCiMKIyBJbml0aWFsaXphdGlvbgojCiR0eXBlcyA9ICR0aGlzLT5HZXRGaWVsZFR5cGVzKCk7CnVuc2V0KCR0eXBlc1snZGF0YSddKTsKJGZpZWxkdHlwZXMgICAgICAgICAgID0gJHRoaXMtPmxhbmdpZnlLZXlzKCR0eXBlcyk7CiR0aXRsZSAgICAgICAgICAgICAgICA9ICR0aGlzLT5MYW5nKCdhZGRwcm9wJyk7CiRkZWZuICAgICAgICAgICAgICAgICA9IFtdOwokZGVmblsnbmFtZSddICAgICAgICAgPSAnJzsKJGRlZm5bJ3Byb21wdCddICAgICAgID0gJyc7CiRkZWZuWyd0eXBlJ10gICAgICAgICA9IDA7CiRkZWZuWydsZW5ndGgnXSAgICAgICA9IDgwOwokZGVmblsnbWF4bGVuZ3RoJ10gICAgPSAyNTU7CiRkZWZuWydhdHRyaWJzJ10gICAgICA9ICcnOwokZGVmblsnZm9yY2VfdW5pcXVlJ10gPSAwOwokZGVmblsnZW5jcnlwdCddICAgICAgPSAwOwokYXR0cmlicyAgICAgICAgICAgICAgPSBbXTsKJG9wdGlvbnMgICAgICAgICAgICAgID0gW107CiRzZWxvcHRpb25zICAgICAgICAgICA9ICcnOwokc3RhdHVzICAgICAgICAgICAgICAgPSAnJzsKJG1lc3NhZ2UgICAgICAgICAgICAgID0gJyc7CiRwcm9wbmFtZSAgICAgICAgICAgICA9ICcnOwokdG1wICAgICAgICAgICAgICAgICAgPSBbXTsKCiMKIyBSZWFkIFBhcmFtZXRlcnMKIwppZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcm9wZXJ0aWVzJyk7CiAgCiAgcmV0dXJuOwp9CgppZihpc3NldCgkcGFyYW1zWydwcm9wbmFtZSddKSkKewogICRwcm9wbmFtZSA9IHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdwcm9wbmFtZScpOwogICR0aXRsZSAgICA9ICR0aGlzLT5MYW5nKCdlZGl0cHJvcCcsICRwcm9wbmFtZSk7CiAgJGRlZm4gICAgID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbigkcHJvcG5hbWUpOwogIAogIGlmKCRkZWZuID09IEZBTFNFKQogIHsKICAgICRwYXJtcyAgICAgICAgICAgID0gW107CiAgICAkcGFybXNbJ2Vycm9yJ10gICA9IDE7CiAgICAkcGFybXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9wcm9wbm90Zm91bmQnKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ3Byb3BlcnRpZXMnLCAkcGFybXMpOwogICAgCiAgICByZXR1cm47CiAgfQogIAogICR0bXAgPSAkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcHJvcG5hbWUpOwogIAogIGlmKCFlbXB0eSgkdG1wKSkKICB7CiAgICAkc2Vsb3B0aW9ucyA9IFtdOwogICAgCiAgICBmb3JlYWNoKCR0bXAgYXMgJGtleSA9PiAkdmFsKQogICAgewogICAgICAkc2Vsb3B0aW9uc1tdID0gKCRrZXkgPT09ICR2YWwpID8gJHZhbCA6ICIka2V5PSR2YWwiOwogICAgfQogICAgCiAgICAkc2Vsb3B0aW9ucyA9IGltcGxvZGUoIlxuIiwgJHNlbG9wdGlvbnMpOwogIH0KICAKICBpZihpc3NldCgkZGVmblsnYXR0cmlicyddKSAmJiAhZW1wdHkoJGRlZm5bJ2F0dHJpYnMnXSkpCiAgewogICAgJGF0dHJpYnMgPSB1bnNlcmlhbGl6ZSgkZGVmblsnYXR0cmlicyddKTsKICB9CiAgCn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3R5cGUnXSkpCnsKICAkZGVmblsndHlwZSddID0gKGludCkkcGFyYW1zWydpbnB1dF90eXBlJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2xlbmd0aCddKSkKewogICRkZWZuWydsZW5ndGgnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfbGVuZ3RoJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X21heGxlbmd0aCddKSkKewogICRkZWZuWydtYXhsZW5ndGgnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfbWF4bGVuZ3RoJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X25hbWUnXSkpCnsKICAkZGVmblsnbmFtZSddID0gc3RydG9sb3dlcih4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnaW5wdXRfbmFtZScpKTsKICAkZGVmblsnbmFtZSddID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkZGVmblsnbmFtZSddKTsKICAkZGVmblsnbmFtZSddID0gc3RyX3JlcGxhY2UoJy0nLCAnXycsICRkZWZuWyduYW1lJ10pOwp9CgppZihpc3NldCgkcGFyYW1zWydpbnB1dF9wcm9tcHQnXSkpCnsKICAkZGVmblsncHJvbXB0J10gPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnaW5wdXRfcHJvbXB0Jyk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZvcmNlX3VuaXF1ZSddKSkKewogICRkZWZuWydmb3JjZV91bmlxdWUnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfZm9yY2VfdW5pcXVlJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2VuY3J5cHQnXSkpCnsKICAkZGVmblsnZW5jcnlwdCddID0gKGludCkkcGFyYW1zWydpbnB1dF9lbmNyeXB0J107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3NlbG9wdGlvbnMnXSkpCnsKICAkc2Vsb3B0aW9ucyA9IHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdpbnB1dF9zZWxvcHRpb25zJyk7CiAgLy8kc2Vsb3B0aW9ucyA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHNlbG9wdGlvbnMpOwogICRzZWxvcHRpb25zID0gXG1hbXNcY21zX2h0bWxfZW50aXR5X2RlY29kZSgkc2Vsb3B0aW9ucyk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3JhZGlvb3B0aW9ucyddKSkKewogICRzZWxvcHRpb25zID0geHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2lucHV0X3JhZGlvb3B0aW9ucycpOwogIC8vJHNlbG9wdGlvbnMgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCRzZWxvcHRpb25zKTsKICAkc2Vsb3B0aW9ucyA9IFxtYW1zXGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHNlbG9wdGlvbnMpOwp9Cgpmb3JlYWNoKCRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUpCnsKICBpZihzdGFydHN3aXRoKCRrZXksICdpbnB1dF9hdHRyaWJfJykpCiAgewogICAgJGF0dHJpYiAgICAgICAgICAgPSBzdWJzdHIoJGtleSwgMTMpOwogICAgJGF0dHJpYnNbJGF0dHJpYl0gPSAkdmFsdWU7CiAgfQp9CgppZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpCnsKICBpZihlbXB0eSgkZGVmblsnbmFtZSddKSB8fCBlbXB0eSgkZGVmblsncHJvbXB0J10pKQogIHsKICAgICRzdGF0dXMgID0gJ2Vycm9yJzsKICAgICRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICB9CiAgCiAgaWYoZW1wdHkoJHN0YXR1cykgJiYgJHNlbG9wdGlvbnMpCiAgewogICAgJG9wdGlvbnMgPSBbXTsKICAgICR0bXAgICAgID0gc3RyX3JlcGxhY2UoWyJcclxuIiwgIlxyIiwgIlxuIl0sICd8OnwnICwgJHNlbG9wdGlvbnMpOwogICAgJHRtcCAgICAgPSBleHBsb2RlKCd8OnwnLCAkdG1wKTsKICAgIAogICAgZm9yZWFjaCgkdG1wIGFzICRsaW5lKQogICAgewogICAgICAkbGluZSA9IHRyaW0oJGxpbmUpOwogICAgICBpZignJyAhPT0gJGxpbmUpIHsgJG9wdGlvbnNbXSA9ICRsaW5lOyB9CiAgICB9CiAgfQogIAogIGZvcmVhY2goJHRtcCBhcyAkb25lKQogIHsKICAgICRvbmUgPSB0cmltKCRvbmUpOwogICAgCiAgICBpZighZW1wdHkoJG9uZSkpIHsgJG9wdGlvbnNbXSA9ICRvbmU7IH0KICB9CiAgCiAgaWYoZW1wdHkoJHN0YXR1cykpCiAgewogICAgc3dpdGNoKCRkZWZuWyd0eXBlJ10pCiAgICB7CiAgICAgIGNhc2UgJzAnOiAvKiB0ZXh0ICovCiAgICAgIGJyZWFrOwogICAgICBjYXNlICc2JzogLyogaW1hZ2UgKi8KICAgICAgICAkZGVmblsnbGVuZ3RoJ10gID0gMjU1OwogICAgICAgICRkZWZuWydlbmNyeXB0J10gPSAwOwogICAgICBicmVhazsKICAgICAgY2FzZSAnMic6IC8qIGVtYWlsICovCiAgICAgICAgLy8gZW1haWwgZmllbGRzIGNhbm5vdCBiZSBlbmNyeXB0ZWQuCiAgICAgICAgJGRlZm5bJ2VuY3J5cHQnXSA9IDA7CiAgICAgIGJyZWFrOwogICAgICBjYXNlIDE6ICAgLyogY2hlY2tib3ggKi8KICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSAxOwogICAgICBicmVhazsKICAgICAgY2FzZSAzOiAgIC8qIHRleHRhcmVhICovCiAgICAgICAgJGRlZm5bJ2xlbmd0aCddID0gMjU1OwogICAgICBicmVhazsKICAgICAgY2FzZSA0OgogICAgICBjYXNlIDU6CiAgICAgICAgJGRlZm5bJ2xlbmd0aCddID0gY291bnQoJG9wdGlvbnMpOwogICAgICBicmVhazsKICAgICAgY2FzZSA3OiAvKiByYWRpb2J1dHRvbnMgKi8KICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSBjb3VudCgkb3B0aW9ucyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlIDg6IC8qIGRhdGUgKi8KICAgICAgZGVmYXVsdDoKICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSAxOwogICAgICBicmVhazsKICAgIH0KICAgIAogICAgaWYoCiAgICAgICgoJGRlZm5bJ3R5cGUnXSA9PSAwIHx8ICRkZWZuWyd0eXBlJ10gPT0gMikgJiYKICAgICAgICgkZGVmblsnbGVuZ3RoJ10gPCAxIHx8ICRkZWZuWydsZW5ndGgnXSA+IDI1NSB8fCAkZGVmblsnbWF4bGVuZ3RoJ10gPCAxIHx8ICRkZWZuWydtYXhsZW5ndGgnXSA+IDEwMjQgfHwKICAgICAgICAkZGVmblsnbWF4bGVuZ3RoJ10gPCAkZGVmblsnbGVuZ3RoJ10pKSB8fAogICAgICAoKCRkZWZuWyd0eXBlJ10gPT0gNCB8fCAkZGVmblsndHlwZSddID09IDUgfHwgJGRlZm5bJ3R5cGUnXSA9PSA3KSAmJiAkc2Vsb3B0aW9ucyA9PSAnJykgfHwKICAgICAgKCgkZGVmblsndHlwZSddID09IDYpICYmICgkZGVmblsnbGVuZ3RoJ10gPCAxMCB8fCAkZGVmblsnbGVuZ3RoJ10gPiAxMDI0KSkKICAgICkKICAgIHsKICAgICAgJHN0YXR1cyAgPSAnZXJyb3InOwogICAgICAkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJyk7CiAgICB9CiAgfQogIAogIGlmKGVtcHR5KCRzdGF0dXMpKQogIHsKICAgICRkZWZuWydhdHRyaWJzJ10gPSBzZXJpYWxpemUoJGF0dHJpYnMpOwogIH0KICAKICBpZihlbXB0eSgkc3RhdHVzKSkKICB7CiAgICBpZighZW1wdHkoJHByb3BuYW1lKSkKICAgIHsKICAgICAgJHRtcCA9ICR0aGlzLT5TZXRQcm9wZXJ0eURlZm4oCiAgICAgICAgJHByb3BuYW1lLCAkZGVmblsnbmFtZSddLCAkZGVmblsncHJvbXB0J10sICRkZWZuWydsZW5ndGgnXSwgJGRlZm5bJ3R5cGUnXSwgJGRlZm5bJ21heGxlbmd0aCddLCAkZGVmblsnYXR0cmlicyddLAogICAgICAgICRkZWZuWydmb3JjZV91bmlxdWUnXSwgJGRlZm5bJ2VuY3J5cHQnXQogICAgICApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAvLyBOZXcgcHJvcGVydHkKICAgICAgJHRtcCA9ICR0aGlzLT5BZGRQcm9wZXJ0eURlZm4oCiAgICAgICAgJGRlZm5bJ25hbWUnXSwgJGRlZm5bJ3Byb21wdCddLCAkZGVmblsndHlwZSddLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSwgJGRlZm5bJ2F0dHJpYnMnXSwKICAgICAgICAkZGVmblsnZm9yY2VfdW5pcXVlJ10sICRkZWZuWydlbmNyeXB0J10KICAgICAgKTsKICAgICAgaWYoISR0bXBbMF0pCiAgICAgIHsKICAgICAgICAkc3RhdHVzICA9ICdlcnJvcic7CiAgICAgICAgJG1lc3NhZ2UgPSAkdG1wWzFdOwogICAgICB9CiAgICB9CiAgfQogIAogIGlmKGVtcHR5KCRzdGF0dXMpICYmIGlzc2V0KCRvcHRpb25zKSAmJiAhZW1wdHkoJG9wdGlvbnMpKQogIHsKICAgIAogICAgaWYoIWVtcHR5KCRwcm9wbmFtZSkpCiAgICB7CiAgICAgICR0aGlzLT5EZWxldGVTZWxlY3RPcHRpb25zKCRwcm9wbmFtZSk7CiAgICB9CiAgICAKICAgICR0bXAgPSAkdGhpcy0+QWRkU2VsZWN0T3B0aW9ucygkZGVmblsnbmFtZSddLCAkb3B0aW9ucyk7CiAgICAKICAgIGlmKCEkdG1wWzBdKQogICAgewogICAgICAkc3RhdHVzICA9ICdlcnJvcic7CiAgICAgICRtZXNzYWdlID0gJHRtcFsxXTsKICAgIH0KICB9CiAgCiAgaWYoZW1wdHkoJHN0YXR1cykpCiAgewogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcm9wZXJ0aWVzJyk7CiAgfQogIAogIC8vCiAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0J3MgYW4gZXJyb3Igb2Ygc29tZSBzb3J0CiAgLy8KfQoKIwojIEdpdmUgZXZlcnl0aGluZyB0byBzbWFydHkKIwppZighZW1wdHkoJHN0YXR1cykpCnsKICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywgMSk7Cn0KCmlmKCFlbXB0eSgkbWVzc2FnZSkpCnsKICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkbWVzc2FnZSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRwcm9wJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBGQUxTRSwgJycsICRwYXJhbXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGl0bGUpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9uYW1lJywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5mb19uYW1lJywgJHRoaXMtPkxhbmcoJ2luZm9fbmFtZScpKTsKCiRxdWVyeSAgID0gJ1NFTEVDVCBjb3VudChpZCkgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJzsKJG51c2VycyAgPSAkZGItPkdldE9uZSgkcXVlcnkpOwokcXVlcnkgICA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19ncm91cHMnOwokbmdyb3VwcyA9ICRkYi0+R2V0T25lKCRxdWVyeSk7CgppZighZW1wdHkoJHByb3BuYW1lKSAmJiAoJG51c2VycyA+IDAgfHwgJG5ncm91cHMgPiAwKSkKewogICRzbWFydHktPmFzc2lnbigKICAgICdpbnB1dF9uYW1lJywKICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdpbnB1dF9uYW1lJywgJHByb3BuYW1lKSAuICRwcm9wbmFtZQogICk7Cn0KZWxzZQp7CiAgJHNtYXJ0eS0+YXNzaWduKAogICAgJ2lucHV0X25hbWUnLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9uYW1lJywgJGRlZm5bJ25hbWUnXSwgMzAsIDMwKQogICk7Cn0KCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3Byb21wdCcsICR0aGlzLT5MYW5nKCdwcm9tcHQnKSk7CiRzbWFydHktPmFzc2lnbigKICAnaW5wdXRfcHJvbXB0JywKICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3Byb21wdCcsICRkZWZuWydwcm9tcHQnXSwgODAsIDI1NSkKKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdHlwZScsICR0aGlzLT5MYW5nKCd0eXBlJykpOwokc21hcnR5LT5hc3NpZ24oCiAgJ2lucHV0X3R5cGUnLAogICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKAogICAgJGlkLCAnaW5wdXRfdHlwZScsICRmaWVsZHR5cGVzLCAtMSwgJGRlZm5bJ3R5cGUnXSwKICAgICdvbmNoYW5nZT0idGhpcy5mb3JtLnN1Ym1pdCgpOyInCiAgKQopOwoKaWYoJGRlZm5bJ3R5cGUnXSA9PSAwIHx8ICRkZWZuWyd0eXBlJ10gPT0gMikKewogICRzbWFydHktPmFzc2lnbigKICAgICdpbnB1dF9mb3JjZV91bmlxdWUnLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsICdpbnB1dF9mb3JjZV91bmlxdWUnLCAkZGVmblsnZm9yY2VfdW5pcXVlJ10pCiAgKTsKfQoKaWYoIWlzc2V0KCRwYXJhbXNbJ3Byb3BuYW1lJ10pKQp7CiAgJHNtYXJ0eS0+YXNzaWduKAogICAgJ2lucHV0X2VuY3J5cHQnLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsICdpbnB1dF9lbmNyeXB0JywgJGRlZm5bJ2VuY3J5cHQnXSkKICApOwp9CmVsc2UKewogICRzbWFydHktPmFzc2lnbignaW5wdXRfZW5jcnlwdCcsICRkZWZuWydlbmNyeXB0J10gPyAkdGhpcy0+TGFuZygneWVzJykgOiAkdGhpcy0+TGFuZygnbm8nKSk7Cn0KCiRzbWFydHktPmFzc2lnbignZGVmbicsICRkZWZuKTsKJHNtYXJ0eS0+YXNzaWduKAogICdvcmlnX3R5cGUnLAogICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdvcmlnX3R5cGUnLCAkZGVmblsndHlwZSddKQopOwokc21hcnR5LT5hc3NpZ24oCiAgJ3N1Ym1pdCcsCiAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkKKTsKJHNtYXJ0eS0+YXNzaWduKAogICdjYW5jZWwnLAogICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpCik7CgokZmxkcyA9IFtdOwpzd2l0Y2goJGRlZm5bJ3R5cGUnXSkKewogIGNhc2UgMDoKICBjYXNlIDI6CiAgICAkZmxkc1tdID0gWwogICAgICAkdGhpcy0+TGFuZygnbGVuZ3RoJykgLiAkdGhpcy0+TGFuZygnbGVuZ3RoY29tbWVudCcpLAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X2xlbmd0aCcsICRkZWZuWydsZW5ndGgnXSwgMywgMykKICAgIF07CiAgICAkZmxkc1tdID0gWwogICAgICAkdGhpcy0+TGFuZygnbWF4bGVuZ3RoJyksCiAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW5wdXRfbWF4bGVuZ3RoJywgJGRlZm5bJ21heGxlbmd0aCddLCAzLCAzKQogICAgXTsKICBicmVhazsKICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAkdmFsICAgID0gKGlzc2V0KCRhdHRyaWJzWydjaGVja2VkJ10pKSA/ICRhdHRyaWJzWydjaGVja2VkJ10gOiAwOwogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3Byb21wdF9kZmx0X2NoZWNrZWQnKSwKICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaW5wdXRfYXR0cmliX2NoZWNrZWQnLCAxLCAkdmFsKQogICAgXTsKICBicmVhazsKICAKICBjYXNlIDM6CiAgICAkdmFsICAgID0gKGlzc2V0KCRhdHRyaWJzWyd3eXNpd3lnJ10pKSA/ICRhdHRyaWJzWyd3eXNpd3lnJ10gOiAwOwogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3Byb3BfdGV4dGFyZWFfd3lzaXd5ZycpLAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaW5wdXRfYXR0cmliX3d5c2l3eWcnLCAnMCcpIC4KICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaW5wdXRfYXR0cmliX3d5c2l3eWcnLCAnMScsICR2YWwpCiAgICBdOzsKICBicmVhazsKICAKICBjYXNlIDQ6CiAgY2FzZSA1OgogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3NlbG9wdGlvbnMnKSwKICAgICAgLy8kdGhpcy0+Q3JlYXRlVGV4dEFyZWEoRkFMU0UsICRpZCwgJHNlbG9wdGlvbnMsICdpbnB1dF9zZWxvcHRpb25zJykKICAgICAgbWFtc191dGlsczo6Q3JlYXRlVGV4dEFyZWEoRkFMU0UsICRpZCwgJHNlbG9wdGlvbnMsICdpbnB1dF9zZWxvcHRpb25zJykKICAgIF07CiAgYnJlYWs7CiAgCiAgY2FzZSA2OgogICAgLy8gbm90aGluZyBoZXJlCiAgYnJlYWs7CiAgCiAgY2FzZSA3OgogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3JhZGlvb3B0aW9ucycpLAogICAgICAvLyR0aGlzLT5DcmVhdGVUZXh0QXJlYShGQUxTRSwgJGlkLCAkc2Vsb3B0aW9ucywgJ2lucHV0X3JhZGlvb3B0aW9ucycpCiAgICAgIG1hbXNfdXRpbHM6OkNyZWF0ZVRleHRBcmVhKEZBTFNFLCAkaWQsICRzZWxvcHRpb25zLCAnaW5wdXRfc2Vsb3B0aW9ucycpCiAgICBdOwogIGJyZWFrOwogIAogIGNhc2UgODogLyogZGF0ZSAqLwogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3N0YXJ0X3llYXInKSAuICc6JywKICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgKICAgICAgICAkaWQsICdpbnB1dF9hdHRyaWJfc3RhcnR5ZWFyJywKICAgICAgICAoaXNzZXQoJGF0dHJpYnNbJ3N0YXJ0eWVhciddKSkgPyAkYXR0cmlic1snc3RhcnR5ZWFyJ10gOiAnLTUnLAogICAgICAgIDQsIDQKICAgICAgKQogICAgXTsKICAgICRmbGRzW10gPSBbCiAgICAgICR0aGlzLT5MYW5nKCdlbmRfeWVhcicpIC4gJzonLAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KAogICAgICAgICRpZCwgJ2lucHV0X2F0dHJpYl9lbmR5ZWFyJywKICAgICAgICAoaXNzZXQoJGF0dHJpYnNbJ2VuZHllYXInXSkpID8gJGF0dHJpYnNbJ2VuZHllYXInXSA6ICcrMTAnLAogICAgICAgIDQsIDQKICAgICAgKQogICAgXTsKICBicmVhazsKICAKfQoKJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHMnLCAkZmxkcyk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZHByb3AudHBsJyk7CgpyZXR1cm47Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_quickfind.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CmlmKCAhICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgZXhpdDsKCiR0ZXJtID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCAkX1JFUVVFU1QsICd0ZXJtJyApOwokbGlzdCA9IG51bGw7CmlmKCBpc19udW1lcmljKCAkdGVybSApICYmIChpbnQpICR0ZXJtID4gMCApIHsKICAgIC8vIGFzc3VtZSBpdCdzIGEgdWlkLgogICAgJHNxbCA9ICdTRUxFQ1QgaWQsIHVzZXJuYW1lIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSBDQVNUKGlkIEFTIENIQVIpIExJS0UgPyBMSU1JVCAxMCc7CiAgICAkbGlzdCA9ICRkYi0+R2V0QXJyYXkoICRzcWwsIFsgJyUnLiR0ZXJtLiclJyBdICk7CiAgICBkZWJ1Z190b19sb2coICRkYi0+c3FsICk7Cn0gZWxzZSB7CiAgICAvLyBhc3N1bWUgaXQncyBwYXJ0IG9mIHRoZSB1c2VybmFtZQogICAgJHNxbCA9ICdTRUxFQ1QgaWQsIHVzZXJuYW1lIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSB1c2VybmFtZSBMSUtFID8gTElNSVQgMTAnOwogICAgJGxpc3QgPSAkZGItPkdldEFycmF5KCAkc3FsLCBbICclJy4kdGVybS4nJScgXSApOwp9CgppZiggIWlzX2FycmF5KCAkbGlzdCApIHx8ICFjb3VudCgkbGlzdCkgKSBleGl0OwoKJG91dCA9IG51bGw7CmZvcmVhY2goICRsaXN0IGFzICRvbmUgKSB7CiAgICAkb3V0W10gPSBbICdsYWJlbCc9PiRvbmVbJ3VzZXJuYW1lJ10uJyAoJy4kb25lWydpZCddLicpJywgJ3ZhbHVlJz0+JG9uZVsnaWQnXSBdOwp9Clx4dF91dGlsczo6c2VuZF9hamF4X2FuZF9leGl0KCAkb3V0ICk7]]></data>
	</file>
	<file>
	  <filename>/action.admin_anonimize_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAndXNlcnMnICkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwoKdHJ5IHsKICAgICR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoICRwYXJhbXMsICd1aWQnICk7CgogICAgLy8gZ2VuZXJhdGUgYSB1bmlxdWUgZGlzYWJsZWQgdXNlcm5hbWUuLi4gc29tZXRoaW5nIHByZXR0eSBtdWNoIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlCiAgICAkbmV3X3VzZXJuYW1lID0gJ3UnLnNoYTEoIHRpbWUoKS5fX0ZJTEVfXy5yYW5kKCkgKTsKICAgICRuZXdfcGFzc3dvcmQgPSBzaGExKCBzaGExKCB0aW1lKCkuX19GSUxFX18ucmFuZCgpICkgKTsKCiAgICAvLyB0b2RvOiBjaGVjayBpZiB0aGUgbmV3IHVzZXJuYW1lIGV4aXN0cwoKICAgIC8vIHNlbmQgYSBob29rIGJlZm9yZSBhbm9uaW1pemluZwogICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCAnTUFNUzo6QmVmb3JlQW5vbmltaXplVXNlcicsICR1aWQgKTsKCiAgICAkZmlsZXMgPSAkdGhpcy0+R2V0VXNlckZpbGVzRnVsbCggJHVpZCwgVFJVRSApOwogICAgaWYoICRmaWxlcyApIHsKICAgICAgICAkcGF0aCA9ICR0aGlzLT5nZXRfdXBsb2FkX2Rpcm5hbWUoKTsKICAgICAgICBmb3JlYWNoKCAkZmlsZXMgYXMgJGZpbGUgKSB7CiAgICAgICAgICAgICRmbiA9ICIkcGF0aC8kZmlsZSI7CiAgICAgICAgICAgICR0biA9ICIkcGF0aC90aHVtYl97JGZpbGV9IjsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZuKSAmJiAhaXNfd3JpdGFibGUoJGZuKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW5zdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gcmVtb3ZlIHVzZXIgZmlsZSAkZmlsZSIpOwogICAgICAgICAgICBpZiggaXNfZmlsZSgkdG4pICYmICFpc193cml0YWJsZSgkdG4pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJJbnN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byByZW1vdmUgdXNlciB0aHVtYm5haWwgZm9yICRmaWxlIik7CiAgICAgICAgICAgIGlmKCBpc19maWxlKCR0bikgKSB1bmxpbmsoJHRuKTsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZuKSApIHVubGluaygkZm4pOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBjbGVhciBhbGwgdGhlIHVzZXJzIHByb3BlcnRpZXMKICAgICR0aGlzLT5EZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoICR1aWQgKTsKCiAgICAvLyB3ZSBhZGp1c3QgdGhlIHVzZXJuYW1lLCB0aGUgcGFzc3dvcmQsIGFuZCBkaXNhYmxlIHRoZSBhY2NvdW50CiAgICAkdGhpcy0+U2V0VXNlckRpc2FibGVkKCAkdWlkICk7CiAgICAkdGhpcy0+U2V0VXNlciggJHVpZCwgJG5ld191c2VybmFtZSwgJG5ld19wYXNzd29yZCApOwoKICAgIC8vIGRlbGV0ZSBhbGwgdXNlciBoaXN0b3J5CiAgICAkc3FsID0gJ0RFTEVURSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19oaXN0b3J5IFdIRVJFIHVzZXJpZCA9ID8nOwogICAgJGRiLT5FeGVjdXRlKCAkc3FsLCBbICR1aWQgXSApOwoKICAgIC8vIHNlbmQgYSBob29rIGFmdGVyIGFub25pbWl6aW5nCiAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soICdNQU1TOjpBZnRlckFub25pbWl6ZVVzZXInLCAkdWlkICk7CgogICAgYXVkaXQoJHVpZCwnTUFNUycsJ1VzZXIgYW5vbmltaXplZCcpOwoKICAgICR0aGlzLT5TZXRNZXNzYWdlKCAkdGhpcy0+TGFuZygnbXNnX2Fub25pbWl6ZWQnKSApOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkZS0+R2V0TWVzc2FnZSgpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7Cn0K]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2RlbGV0ZXByb3AnICkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcm9wZXJ0aWVzJyk7Cgp0cnkKewogICRwcm9wbmFtZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAncHJvcG5hbWUnKTsKICBpZiggJycgPT09ICRwcm9wbmFtZSApIHJldHVybjsKCiAgLy8gT25seSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG9wdGlvbmFsIG9yIHVudXNlZCBtYXkgYmUgZGVsZXRlZC4KICAkcHJvcGdyb3VwcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eUdyb3VwUmVsYXRpb25zKCRwcm9wbmFtZSk7CiAgaWYoICFpc19hcnJheSgkcHJvcGdyb3VwcykgfHwgKGlzc2V0KCRwcm9wZ3JvdXBzWzBdKSAmJiBmYWxzZSA9PT0gJHByb3Bncm91cHNbMF0pICkKICB7CiAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgfQogIGZvcmVhY2goICRwcm9wZ3JvdXBzIGFzICRyZWMgKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHJlYykgfHwgIWlzc2V0KCRyZWNbJ3JlcXVpcmVkJ10pICkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kYmVycm9yJykpOwogICAgfQogICAgaWYoIDEgPCAoaW50KSAkcmVjWydyZXF1aXJlZCddICkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVfcHJvcGRlZm4nKSk7CiAgICB9CiAgfQoKICBpZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKICB7CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX2NhbmNlbGxlZCcpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgfQoKICBpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkKICB7CiAgICAkbWFtc19jb25maXJtID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCAnbWFtc19jb25maXJtJyk7CiAgICBpZiggISRtYW1zX2NvbmZpcm0gKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjdGlvbl9ub3Rjb25maXJtZWQnKSk7CiAgICB9CgogICAgaWYoICEkdGhpcy0+RGVsZXRlUHJvcGVydHlEZWZuKCRwcm9wbmFtZSkgKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RlbGV0ZXByb3AnKSk7CiAgICB9CgogICAgYXVkaXQoJycsICR0aGlzLT5HZXROYW1lKCksICdSZW1vdmVkIHByb3BlcnR5ICcgLiAkcHJvcG5hbWUpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJvcGVydGllcycpOwogIH0KCiAgJGZpZWxkdHlwZXMgPSBhcnJheV9mbGlwKCR0aGlzLT5sYW5naWZ5S2V5cygkdGhpcy0+R2V0RmllbGRUeXBlcygpKSk7CiAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCRwcm9wbmFtZSk7CiAgaWYoICFpc19hcnJheSgkZGVmbikgKQogIHsKICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfZGVsZXRlcHJvcCcpKTsKICB9CgogICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2RlbGV0ZXByb3AudHBsJyk7CiAgJHRwbC0+YXNzaWduKCdmaWVsZHR5cGVzJywgJGZpZWxkdHlwZXMpOwogICR0cGwtPmFzc2lnbigncHJvcG5hbWUnLCAkcHJvcG5hbWUpOwogICR0cGwtPmFzc2lnbignZGVmbicsICRkZWZuKTsKICAkdHBsLT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9kZWxldGVwcm9wJywgJHJldHVybmlkLCBbJ3Byb3BuYW1lJyA9PiAkcHJvcG5hbWVdKSk7CiAgJHRwbC0+YXNzaWduKCdmb3JtZW5kJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkKewogICR0aGlzLT5TZXRFcnJvcigkZS0+R2V0TWVzc2FnZSgpKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_doimport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgZXhpdDsKJGZpbGUgPSB4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2ZpbGUnKTsKaWYoICEkZmlsZSApIGV4aXQ7CiRmaWxlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OLiIvJGZpbGUiOwppZiggIWlzX3JlYWRhYmxlKCRmaWxlKSApIGV4aXQ7CiRub3cgPSB0aW1lKCk7CgokaW1hZ2VEaXIgPSAkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SOwokaW1hZ2VEaXIgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpOwoKJHRtcCA9ICR0aGlzLT5YVEdldFByZWZlcmVuY2UoJ2ltcG9ydHByZWZzJyk7CmlmKCAhJHRtcCApIGV4aXQ7CiRpbXBvcnRwcmVmcyA9IHVuc2VyaWFsaXplKCR0bXApOwoKJHByb2dyZXNzX21heCA9IGZ1bmN0aW9uKCR2YWwpIHsKICAgICR2YWwgPSAoaW50KSR2YWw7CiAgICAkdmFsID0gbWF4KDEsJHZhbCk7CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF9wcm9ncmVzc19tYXgoJy4kdmFsLicpOzwvc2NyaXB0Pic7CiAgICBmbHVzaCgpOwp9OwokcHJvZ3Jlc3Nfc2V0ID0gZnVuY3Rpb24oJHZhbCkgewogICAgJHZhbCA9IChpbnQpJHZhbDsKICAgICR2YWwgPSBtYXgoMSwkdmFsKTsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X3Byb2dyZXNzX3NldCgnLiR2YWwuJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfc3RhdHVzID0gZnVuY3Rpb24oJG1zZykgewogICAgJG1zZyA9IHRyaW0oJG1zZyk7CiAgICBpZiggISRtc2cgKSByZXR1cm47CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF9zdGF0dXMoXCcnLiRtc2cuJ1wnKTs8L3NjcmlwdD4nOwogICAgZmx1c2goKTsKfTsKJGltcG9ydF93YXJuaW5nID0gZnVuY3Rpb24oJG1zZykgewogICAgJG1zZyA9IHRyaW0oJG1zZyk7CiAgICBpZiggISRtc2cgKSByZXR1cm47CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF93YXJuaW5nKFwnJy4kbXNnLidcJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfZXJyb3IgPSBmdW5jdGlvbigkbXNnKSB7CiAgICAkbXNnID0gdHJpbSgkbXNnKTsKICAgIGlmKCAhJG1zZyApIHJldHVybjsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X2Vycm9yKFwnJy4kbXNnLidcJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfZXJyb3JfbGluZSA9IGZ1bmN0aW9uKCRsaW5lbnVtLCRtc2cpIHsKICAgICRsaW5lbnVtID0gKGludCkkbGluZW51bTsKICAgICRtc2cgPSB0cmltKCRtc2cpOwogICAgaWYoICEkbXNnICkgcmV0dXJuOwogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5pbXBvcnRfZXJyb3IoXCcnLiRsaW5lbnVtLic6ICcuJG1zZy4nXCcpOzwvc2NyaXB0Pic7CiAgICBmbHVzaCgpOwp9OwokaW1wb3J0X2ZpbmlzaCA9IGZ1bmN0aW9uKCkgewogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5pbXBvcnRfZmluaXNoKCk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRjbGVhbl9maWVsZHMgPSBmdW5jdGlvbigkdGhlX2FycmF5KSB7CiAgICBmb3JlYWNoKCAkdGhlX2FycmF5IGFzICYkZWxlbSApIHsKICAgICAgICAkZWxlbSA9IHRyaW0odHJpbSgkZWxlbSwnIlwnJykpOwogICAgfQogICAgcmV0dXJuICR0aGVfYXJyYXk7Cn07CiRnZXRfZmllbGQgPSBmdW5jdGlvbigkY29sdW1ucywkZmllbGRtYXAsJGZpZWxkKSB7CiAgICBpZiggISRmaWVsZCApIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgZmllbGQgc3BlY2lmaWVkICcuJGZpZWxkKTsKICAgICRpZHggPSBhcnJheV9zZWFyY2goJGZpZWxkLCRmaWVsZG1hcCk7CiAgICBpZiggJGlkeCA9PT0gRkFMU0UgKSByZXR1cm47CiAgICBpZiggaXNzZXQoJGNvbHVtbnNbJGlkeF0pICkgcmV0dXJuICRjb2x1bW5zWyRpZHhdOwp9OwokYWxsX2NvbHVtbnNfZW1wdHkgPSBmdW5jdGlvbigkY29sdW1ucykgewogICAgZm9yZWFjaCggJGNvbHVtbnMgYXMgJGNvbCApIHsKICAgICAgICBpZiggJGNvbCApIHJldHVybiBGQUxTRTsKICAgIH0KICAgIHJldHVybiBUUlVFOwp9OwoKdHJ5IHsKICAgICRmaWxlc2l6ZSA9IGZpbGVzaXplKCRmaWxlKTsKICAgICRmaCA9IGZvcGVuKCRmaWxlLCdyJyk7CiAgICAkbGluZV9udW0gPSAwOwogICAgJHByb2Nlc3NlZF9saW5lcyA9IDA7CiAgICAkaGF2ZV9oZWFkZXIgPSAwOwogICAgJGZpZWxkbWFwID0gbnVsbDsKICAgICRncm91cHMgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiAgICAkcHJvcGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICRyZWxucyA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRnbmFtZSA9PiAkZ2lkICkgewogICAgICAgICRyZWxuc1skZ25hbWVdID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICB9CiAgICAkdG1wID0gbWF4KDEsKGludCkkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJyw1MjApKTsKICAgICRkZmx0X2V4cGlyeSA9IHN0cnRvdGltZShzcHJpbnRmKCcrICVkIG1vbnRocycsJHRtcCkpOwogICAgJGRmbHRfcGFzc3dvcmQgPSAnY2hhbmdlbWUnOwogICAgJGVycm9yX3VzZXJzID0gYXJyYXkoKTsKICAgICRhbGxfdXNlcnMgPSBudWxsOwogICAgewogICAgICAgICRxdWVyeSA9IG5ldyBtYW1zX3VzZXJfcXVlcnkoKTsKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICB3aGlsZSggISRycy0+RU9GICkgewogICAgICAgICAgICAkZmxkcyA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkYWxsX3VzZXJzWyRmbGRzWyd1c2VybmFtZSddXSA9ICRmbGRzWydpZCddOwogICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgfQogICAgfQogICAgJHRvdWNoZWRfZ2lkcyA9IGFycmF5KCk7CiAgICAkdG91Y2hlZF91aWRzID0gYXJyYXkoKTsKCiAgICAkcHJvZ3Jlc3NfbWF4KCRmaWxlc2l6ZSk7CiAgICB3aGlsZSggIWZlb2YoJGZoKSApIHsKICAgICAgICBzZXRfdGltZV9saW1pdCgzMCk7CiAgICAgICAgJHByb2dyZXNzX3NldChmdGVsbCgkZmgpKTsKICAgICAgICAkcmVjID0gZmdldGNzdigkZmgpOwogICAgICAgICRsaW5lX251bSsrOwoKICAgICAgICBpZiggIWlzX2FycmF5KCRyZWMpIHx8ICFjb3VudCgkcmVjKSApIGNvbnRpbnVlOwoKICAgICAgICAkcHJvY2Vzc2VkX2xpbmVzKys7CiAgICAgICAgaWYoICRwcm9jZXNzZWRfbGluZXMgPT0gMSApIHsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gcHJvY2VzcyB0aGUgaGVhZGVyCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIGlmKCAhc3RhcnRzd2l0aCgkcmVjWzBdLCcjIycpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmlsZWZvcm1hdCcpKTsKICAgICAgICAgICAgJGZpZWxkbWFwID0gJHJlYzsKICAgICAgICAgICAgJGZpZWxkbWFwWzBdID0gc3Vic3RyKCRmaWVsZG1hcFswXSwyKTsKICAgICAgICAgICAgJGZpZWxkbWFwID0gJGNsZWFuX2ZpZWxkcygkZmllbGRtYXApOwogICAgICAgICAgICBpZiggIWluX2FycmF5KCd1c2VybmFtZScsJGZpZWxkbWFwKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydHJlcXVpcmVkZmllbGQnLCd1c2VybmFtZScpKTsKICAgICAgICAgICAgaWYoICFpbl9hcnJheSgnZ3JvdXBuYW1lJywkZmllbGRtYXApICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJ2dyb3VwbmFtZScpKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvLwogICAgICAgIC8vIHByb2Nlc3NpbmcgYSBkYXRhIGxpbmUKICAgICAgICAvLwogICAgICAgICRjb2x1bW5zID0gJHJlYzsKICAgICAgICAkY29sdW1ucyA9ICRjbGVhbl9maWVsZHMoJGNvbHVtbnMpOwoKICAgICAgICBpZiggJGFsbF9jb2x1bW5zX2VtcHR5KCRjb2x1bW5zKSApIGNvbnRpbnVlOwoKICAgICAgICBpZiggY291bnQoJGNvbHVtbnMpIDwgY291bnQoJGZpZWxkbWFwKSAtIDEgfHwgY291bnQoJGNvbHVtbnMpID4gY291bnQoJGZpZWxkbWFwKSApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0X2NvbHVtbmNvdW50JykpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYoIGNvdW50KCRjb2x1bW5zKSA8IGFycmF5X3NlYXJjaCgndXNlcm5hbWUnLCRmaWVsZG1hcCkgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydF9jb2x1bW5jb3VudCcpKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgdGhlIHVzZXIgcmVjLgogICAgICAgICR1c2VyID0gYXJyYXkoJ3VzZXJuYW1lJz0+JycsJ3Bhc3N3b3JkJz0+JycsJ2duYW1lJz0+bnVsbCwnZXhwaXJlcyc9Pm51bGwsJ3Byb3BzJz0+YXJyYXkoKSk7CiAgICAgICAgJHVzZXJbJ3VzZXJuYW1lJ10gPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwndXNlcm5hbWUnKTsKICAgICAgICAkdXNlclsncGFzc3dvcmQnXSA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCd0eHRwYXNzd29yZCcpOwogICAgICAgICR1c2VyWydjcmVhdGVkYXRlJ10gPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwnY3JlYXRlZGF0ZScsJG5vdyk7CiAgICAgICAgJHVzZXJbJ2V4cGlyZXMnXSA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCdleHBpcmVzJywkbm93KTsKICAgICAgICAkZ25hbWVzID0gJGdldF9maWVsZCgkY29sdW1ucywkZmllbGRtYXAsJ2dyb3VwbmFtZScpOwogICAgICAgIGlmKCAhJGduYW1lcyApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJywkZ25hbWUpKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgICRnbmFtZXMgPSAkY2xlYW5fZmllbGRzKGV4cGxvZGUoJywnLCRnbmFtZXMpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJGdyb3Vwc1skZ25hbWVdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGdyb3VwbmFtZScsJGduYW1lKSk7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRyZWxuc1skZ25hbWVdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGdyb3VwbmFtZScsJGduYW1lKSk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCggJHJlbG5zWyRnbmFtZV0gYXMgJHJlbG4gKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSByZXF1aXJlZCBmaWVsZHMgZm9yIHRoaXMgZ3JvdXAgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZmllbGQgbWFwCiAgICAgICAgICAgICAgICAgICAgaWYoICRyZWxuWydyZXF1aXJlZCddID09IDIgJiYgIWluX2FycmF5KCRyZWxuWyduYW1lJ10sJGZpZWxkbWFwKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhlIGZpZWxkIHRvIHRoZSB1c2VyIHJlYwogICAgICAgICAgICAgICAgICAgICR0bXAgPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwkcmVsblsnbmFtZSddKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHRtcCApICR1c2VyWydwcm9wcyddWyRyZWxuWyduYW1lJ11dID0gJHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkaW1wb3J0X2Vycm9yX2xpbmUoJGxpbmVfbnVtLCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgICAgICBpZiggJHVzZXJbJ3VzZXJuYW1lJ10gKSAkZXJyb3JfdXNlcnNbXSA9ICR1c2VyWyd1c2VybmFtZSddOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vIHZhbGlkYXRlIHRoZSB1c2VyIHJlYy4KICAgICAgICBpZiggIXh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXIsJ3VzZXJuYW1lJykgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydHJlcXVpcmVkZmllbGQnLCd1c2VybmFtZScpKTsKICAgICAgICAgICAgaWYoICR1c2VyWyd1c2VybmFtZSddICkgJGVycm9yX3VzZXJzW10gPSAkdXNlclsndXNlcm5hbWUnXTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBpZiggIXh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXIsJ2NyZWF0ZWRhdGUnKSApICR1c2VyWydjcmVhdGVkYXRlJ10gPSAkbm93OwogICAgICAgIGlmKCAhaXNfaW50KCR1c2VyWydjcmVhdGVkYXRlJ10pICkgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA9IHN0cnRvdGltZSgkdXNlclsnY3JlYXRlZGF0ZSddKTsKICAgICAgICBpZiggIWlzX2ludCgkdXNlclsnZXhwaXJlcyddKSApICR1c2VyWydleHBpcmVzJ10gPSBzdHJ0b3RpbWUoJHVzZXJbJ2V4cGlyZXMnXSk7CiAgICAgICAgLy8geWVwLCBhZ2Fpbi4KICAgICAgICBpZiggIXh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXIsJ2NyZWF0ZWRhdGUnKSApICR1c2VyWydjcmVhdGVkYXRlJ10gPSAkbm93OwogICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwnZXhwaXJlcycpICkgJHVzZXJbJ2V4cGlyZXMnXSA9ICRkZmx0X2V4cGlyeTsKICAgICAgICB0cnkgewogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRyZWxuc1skZ25hbWVdIGFzICRyZWxuICkgewogICAgICAgICAgICAgICAgICAgICR2YWwgPSB4dF91dGlsczo6Z2V0X3BhcmFtKCR1c2VyWydwcm9wcyddLCRyZWxuWyduYW1lJ10pOwogICAgICAgICAgICAgICAgICAgIGlmKCAkcmVsblsncmVxdWlyZWQnXSA9PSAyICYmICEkdmFsICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHZhbGlkYXRlcyB0aGF0IGEgcmVxdWlyZWQgZmllbGQgZm9yIG91ciBkZXN0aW5hdGlvbiBncm91cCBpcyBmaWxsZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiggJHZhbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBhIGRyb3Bkb3duIG9yIG11bHRpc2VsZWN0LCBtYWtlIHN1cmUgdGhlIHZhbHVlIGlzIHZhbGlkLgogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goICRwcm9wZGVmbnNbJHJlbG5bJ25hbWUnXV1bJ3R5cGUnXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkdGhpczo6RklFTERUWVBFX0RBVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggaXNfaW50KCR2YWwpICYmICR2YWwgPCAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIHN0cnRvdGltZSgkdmFsKSA8IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfRU1BSUw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2VtYWlsKCR2YWwpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigiJHZhbCBpZCBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2VtYWlsKCR2YWwpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfSU1BR0U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqdXN0IGVuc3VyZSB0aGF0IHRoZSBpbWFnZSBleGlzdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXNwZWMgPSAkaW1hZ2VEaXIuJy8nLiR2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWZpbGVfZXhpc3RzKCRmaWxlc3BlYykgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWVsZHZhbHVlJywkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHRoaXM6OkZJRUxEVFlQRV9NVUxUSVNFTEVDVDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRzID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFscyA9ICRjbGVhbl9maWVsZHMoZXhwbG9kZSgnLCcsJHZhbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHZhbHMgYXMgJG9uZXZhbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRvcHRzWyRvbmV2YWxdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkdGhpczo6RklFTERUWVBFX0RST1BET1dOOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfUkFESU9CVVROUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRzID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRvcHRzWyR2YWxdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGlmKCAkdXNlclsndXNlcm5hbWUnXSApICRlcnJvcl91c2Vyc1tdID0gJHVzZXJbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gZG8gdGhlIGFkZCBvciB1cGRhdGUuCiAgICAgICAgJHVpZCA9IG51bGw7CiAgICAgICAgaWYoIGlzc2V0KCRhbGxfdXNlcnNbJHVzZXJbJ3VzZXJuYW1lJ11dKSApIHsKICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSB1c2VyLgogICAgICAgICAgICAkdWlkID0gJGFsbF91c2Vyc1skdXNlclsndXNlcm5hbWUnXV07CiAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+U2V0VXNlcigkdWlkLCR1c2VyWyd1c2VybmFtZSddLCR1c2VyWydwYXNzd29yZCddLCR1c2VyWydleHBpcmVzJ10pOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXApIHx8ICR0bXBbMF0gPT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0dXBkYXRldXNlcicsJHRtcFsxXSkpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICR1c2VyWydjcmVhdGVkYXRlJ10gJiYgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA8ICgkbm93IC0gOTApICkgewogICAgICAgICAgICAgICAgJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBjcmVhdGVkYXRlID0gPyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAgICAgJHRtcCA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkdXNlclsnY3JlYXRlZGF0ZSddKSwiJyIpOwogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsIFsgJHRtcCwgJHVpZCBdICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGdpZGxpc3QgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgICRnaWRsaXN0W10gPSAkZ3JvdXBzWyRnbmFtZV07CiAgICAgICAgICAgICAgICBpZiggIWluX2FycmF5KCRncm91cHNbJGduYW1lXSwkdG91Y2hlZF9naWRzKSApICR0b3VjaGVkX2dpZHNbXSA9ICRncm91cHNbJGduYW1lXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+U2V0VXNlckdyb3VwcygkdWlkLCRnaWRsaXN0KTsKICAgICAgICAgICAgJHRoaXMtPlNldFVzZXJQcm9wZXJ0aWVzKCR1aWQsJHVzZXJbJ3Byb3BzJ10pOwogICAgICAgICAgICAkaW1wb3J0X3N0YXR1cygndXBkYXRlZCB1c2VyICcuJHVzZXJbJ3VzZXJuYW1lJ10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gaW5zZXJ0IHRoZSB1c2VyCiAgICAgICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwncGFzc3dvcmQnKSApICR1c2VyWydwYXNzd29yZCddID0gJGRmbHRfcGFzc3dvcmQ7CiAgICAgICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwnZXhwaXJlcycpICkgJHVzZXJbJ2V4cGlyZXMnXSA9ICRkZmx0X2V4cGlyeTsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5BZGRVc2VyKCR1c2VyWyd1c2VybmFtZSddLCR1c2VyWydwYXNzd29yZCddLCR1c2VyWydleHBpcmVzJ10pOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXApIHx8ICR0bXBbMF0gPT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0aW5zZXJ0dXNlcicsJHRtcFsxXSkpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHVpZCA9IChpbnQpICR0bXBbMV07CiAgICAgICAgICAgIGlmKCAkdXNlclsnY3JlYXRlZGF0ZSddICYmICR1c2VyWydjcmVhdGVkYXRlJ10gPCAoJG5vdyAtIDkwKSApIHsKICAgICAgICAgICAgICAgICRzcWwgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyBTRVQgY3JlYXRlZGF0ZSA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICAgICAgICAgICAgICR0bXAgPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJHVzZXJbJ2NyZWF0ZWRhdGUnXSksIiciKTsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLCBbICR0bXAsICR1aWQgXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRnaWRsaXN0ID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGduYW1lcyBhcyAkZ25hbWUgKSB7CiAgICAgICAgICAgICAgICAkZ2lkbGlzdFtdID0gJGdyb3Vwc1skZ25hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyR3JvdXBzKCR1aWQsJGdpZGxpc3QpOwogICAgICAgICAgICAkdGhpcy0+U2V0VXNlclByb3BlcnRpZXMoJHVpZCwkdXNlclsncHJvcHMnXSk7CiAgICAgICAgICAgICRpbXBvcnRfc3RhdHVzKCdjcmVhdGVkIHVzZXIgJy4kdXNlclsndXNlcm5hbWUnXSk7CiAgICAgICAgICAgIC8vIHRvZG86IHN0YXR1cyBtc2cKICAgICAgICB9CgogICAgICAgIC8vIHNldCBwcm9ncmVzcwogICAgICAgICRwcm9ncmVzc19zZXQoZnRlbGwoJGZoKSk7CgogICAgICAgIC8vIHNldCB0aGUgdXNlcgogICAgICAgIGlmKCAkdWlkICYmICFpbl9hcnJheSgkdWlkLCR0b3VjaGVkX3VpZHMpICkgJHRvdWNoZWRfdWlkc1tdID0gJHVpZDsKCiAgICAgICAgLy8gZGVsZXRlIHRoZSB1c2VyIGZyb20gdGhlIGNvbXBsZXRlIHVzZXIgbGlzdC4KICAgICAgICB1bnNldCgkYWxsX3VzZXJzWyR1c2VyWyd1c2VybmFtZSddXSk7CgogICAgfSAvLyBmZW9mCgogICAgLy8gZGVsZXRlIHVzZXJzIHdobyBhcmUgbWVtYmVyIG9mIHRoZSBpbXBvcnRlZCBncm91cCwgKGFzc3VtaW5nIHdlIG9ubHkgbGlzdGVkIG9uZSBncm91cCkgYnV0CiAgICAvLyBub3QgbGlzdGVkIGluIHRoaXMgbGlzdC4KICAgICR0b3VjaGVkX3VpZHMgPSBhcnJheV91bmlxdWUoJHRvdWNoZWRfdWlkcyk7CiAgICBpZiggY291bnQoJHRvdWNoZWRfZ2lkcykgPT0gMSAmJiBjb3VudCgkdG91Y2hlZF91aWRzKSAmJiAkaW1wb3J0cHJlZnNbJ2RlbGV0ZV91c2VycyddICkgewogICAgICAgIC8vIGdvdHRhIGdldCB0aGUgdWlkcyBvZiBhbGwgb2YgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAuCiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeSgpOwogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQobWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwkdG91Y2hlZF9naWRzWzBdKTsKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICAkZGVsX3VpZHMgPSBhcnJheSgpOwogICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgaWYoICFpbl9hcnJheSgkcnMtPmZpZWxkc1snaWQnXSwkdG91Y2hlZF91aWRzKSAmJiAhaW5fYXJyYXkoJHJzLT5maWVsZHNbJ2lkJ10sJGRlbF91aWRzKSApIHsKICAgICAgICAgICAgICAgICRkZWxfdWlkc1tdID0gJHJzLT5maWVsZHNbJ2lkJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KCiAgICAgICAgLy8gZ290dGEgZGVsZXRlIHJlbWFpbmluZyB1c2VycwogICAgICAgIGlmKCBjb3VudCgkZGVsX3VpZHMpICkgewogICAgICAgICAgICAkcHJvZ3Jlc3NfbWF4KGNvdW50KCRkZWxfdWlkcykpOwogICAgICAgICAgICAkbiA9IDA7CiAgICAgICAgICAgIGZvcmVhY2goICRkZWxfdWlkcyBhcyAkdWlkICkgewogICAgICAgICAgICAgICAgc2V0X3RpbWVfbGltaXQoMjApOwogICAgICAgICAgICAgICAgaWYoICR1aWQgPiAwICkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5EZWxldGVVc2VyRnVsbCggJHVpZCApOwogICAgICAgICAgICAgICAgICAgICRpbXBvcnRfc3RhdHVzKCR0aGlzLT5MYW5nKCdpbXBvcnRfZGVsZXRlZHVzZXInLCR1aWQpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRuKys7CiAgICAgICAgICAgICAgICAkcHJvZ3Jlc3Nfc2V0KCRuKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkaW1wb3J0X2ZpbmlzaCgpOwp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAkaW1wb3J0X2Vycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwp9CmV4aXQ7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_edituser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIG1hbXNfdXRpbHM7CnVzZSB4dF91dGlsczsKdXNlIHh0X3BhcmFtOwoKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CmlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICd1c2VycycgKSApIHJldHVybjsKCi8vIHRoaXMgYWN0aW9uIGhhbmRsZXMgdGhlIGZpcnN0IHBvcnRpb24gb2YgdGhlIGFkZC9lZGl0IHVzZXIgd2l6YXJkLgoKJGRlZmF1bHRfZ3JvdXAgPSAoaW50KSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwoKdHJ5CnsKICAkdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKICAKICBpZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCiAgewogICAgLy8gd2UncmUgY2FuY2VsbGluZy4KICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICB9CiAgCiAgJHVzZXJfaWQgPSB4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAndXNlcl9pZCcpOwogICR1c2VyICAgID0gdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAKICBpZigkdXNlcikKICB7CiAgICAvLyB3ZSBhcmUgaGVyZSBmcm9tIHRoZSAnYmFjaycgb3BlcmF0aW9uLiBvciBhbiBlcnJvciBpbiBzdGVwMi4KICAgIGlmKCR1c2VyLT5pZCAhPSAkdXNlcl9pZCkgeyAkdXNlciA9IE5VTEw7IH0KICB9CiAgCiAgaWYoISR1c2VyKQogIHsKICAgICR1c2VyID0gbmV3IHVzZXJfZWRpdF9hc3Npc3RhbnQoJHVzZXJfaWQpOwogIH0KICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgIC8vIGZpbGwgdGhlIGRhdGEgZnJvbSB0aGUgZm9ybQogICAgICAgICAgJHVzZXItPm5ld191c2VybmFtZSA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoeHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywndXNlcm5hbWUnKSk7CiAgICAgICAgICAkdXNlci0+bmV3X3Bhc3N3b3JkID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwYXNzd29yZCcpKTsKICAgICAgICAgICR1c2VyLT5yZXBlYXRfcGFzc3dvcmQgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3JlcGVhdHBhc3N3b3JkJykpOwogICAgICAgICAgJHVzZXItPmV4cGlyZXMgPSB4dF9wYXJhbTo6Z2V0X3NlcGFyYXRlZF9kYXRlKCRwYXJhbXMsJ2V4cGlyZXMnKTsKICAgICAgICAgICR1c2VyLT5pc19kaXNhYmxlZCA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdkaXNhYmxlZCcpOwogICAgICAgICAgJHVzZXItPmZvcmNlX2NoYW5nZV9zZXR0aW5ncyA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdmb3JjZV9jaHNldHRpbmdzJyk7CiAgICAgICAgICAkdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlID0geHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ2ZvcmNlX25ld3B3Jyk7CiAgICAgICAgICAkdXNlci0+bXVzdF92YWxpZGF0ZSA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdtdXN0X3ZhbGlkYXRlJyk7CiAgICAgICAgICAkdXNlci0+c2V0X2dyb3Vwcyh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21lbWJlcm9mJykpOyMjIwoKICAgICAgICAgIC8vIHZhbGlkYXRlIHRoZSBkYXRhCiAgICAgICAgICAkdXNlci0+dmFsaWRhdGUoKTsKICAgICAgICAgIAogICAgICAgICAgLy8gc2F2ZSB0aGUgZGF0YSAodGVtcG9yYXJpbHkpCiAgICAgICAgICAkdXNlci0+c3RvcmUoKTsKCiAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgbmV4dCBzdGVwLgogICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fZWRpdHVzZXIyJywkcmV0dXJuaWQpOwogICAgICAgIH0KICAgICAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgICAgIHsKICAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQogICAgfQoKICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXR1c2VyLnRwbCcpOwogICAgJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2VkaXR1c2VyJywkcmV0dXJuaWQsWyAndXNlcl9pZCcgPT4gJHVzZXJfaWQgXSkpOwogICAgJHRwbC0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0cGwtPmFzc2lnbigndXNlcicsJHVzZXIpOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfdXNlcm5hbWUnLCRhdXRoX2NvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCkpOwogICAgJHRwbC0+YXNzaWduKCd1bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJykpOwogICAgJHRwbC0+YXNzaWduKCdtYXhfdW5mbGRsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ21heF9wd2ZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKTsKICAgICR0cGwtPmFzc2lnbigncmVxdWlyZV9vbmVncm91cCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSk7CgogICAgJGdyb3VwcyA9IG51bGw7CiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldEdyb3VwTGlzdEZ1bGwoKTsKICAgIGlmKCAkZGVmYXVsdF9ncm91cCA8IDEgJiYgY291bnQoJGdyb3VwcykgKSB7CiAgICAgICAgJGdpZHMgPSBhcnJheV9rZXlzKCRncm91cHMpOwogICAgICAgICRkZWZhdWx0X2dyb3VwID0gJGdpZHNbMF07CiAgICB9CiAgICAkdHBsLT5hc3NpZ24oJ2RlZmF1bHRfZ3JvdXAnLCRkZWZhdWx0X2dyb3VwKTsKICAgICR0cGwtPmFzc2lnbignZ3JvdXBzJywkZ3JvdXBzKTsKCiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_edituser2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkKewogIGV4aXQ7Cn0KaWYoISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpKQp7CiAgcmV0dXJuOwp9CgokdXNlcl9pZCA9ICR1c2VyID0gTlVMTDsKdHJ5CnsKICAkdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKICBpZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCiAgewogICAgLy8gY2xlYXIgYW55dGhpbmcgaW4gdGhlIHNlc3Npb24sIGJ1dCBkb24ndCBuZWVkIHRoZSBkYXRhLgogICAgXE1BTVNcdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICB9CiAgCiAgJHVzZXIgPSBcTUFNU1x1c2VyX2VkaXRfYXNzaXN0YW50OjpyZXRyaWV2ZSgpOwogIAogIGlmKCEkdXNlcikKICB7CiAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgcmVzdG9yZSB1c2VyIGVkaXQgaW5mbyBmcm9tIHNlc3Npb24nKTsKICB9CiAgCiAgJHVzZXJfaWQgPSAkdXNlci0+aWQ7CiAgCiAgaWYoaXNzZXQoJHBhcmFtc1snYmFjayddKSkKICB7CiAgICAkdXNlci0+c3RvcmUoKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCwgWyd1c2VyX2lkJyA9PiAkdXNlcl9pZF0pOwogIH0KICAKICAkYWxsZGVmbnMgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgJGZpZWxkcyAgICAgPSBbXTsKICAkcHJvcGVydGllcyA9IFxtYW1zX3V0aWxzOjpnZXRfcHJvcGVydGllc19mb3JfZ3JvdXBzKCR1c2VyLT5nZXRfZ3JvdXBzKCkpOwogIAogICMgcmVtb3ZlIGVtcHR5IHByb3BzLi4uIElESyB3aHkgdGhlcmUgYXJlIGFueSBidXQgZG8gbWFrZSB0aGlzIHB1a2UuLi4gbmVlZCB0byByZXZpc2l0IChKTSkKICAkcHJvcGVydGllcyA9IFxhcnJheV9maWx0ZXIoJHByb3BlcnRpZXMpOwogIAogIGlmKCFcY291bnQoJHByb3BlcnRpZXMpKQogIHsKICAgIC8vIHRoZXJlIGFyZSBubyBwcm9wZXJ0aWVzIHRvIHRoaW5rIG9mLgogICAgLy8gc2ltdWxhdGUgc3VibWlzc2lvbi4KICAgICRwYXJhbXNbJ3N1Ym1pdCddID0gMTsKICB9CiAgZWxzZQogIHsKICAgIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3ApCiAgICB7CiAgICAgICRwcm9wX25hbWUgPSAkcHJvcFsnbmFtZSddOwogICAgICAKICAgICAgaWYoIWlzc2V0KCRhbGxkZWZuc1skcHJvcF9uYW1lXSkpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdEZWZpbml0aW9uIGZvciBwcm9wZXJ0eSAnIC4gJHByb3BfbmFtZSAuICcgbm90IGZvdW5kJyk7CiAgICAgIH0KICAgICAgLy9pZiggJGFsbGRlZm5zWyRwcm9wX25hbWVdWydlbmNyeXB0J10gJiYgJHVzZXJfaWQgPiAwICkgY29udGludWU7ICAvLyBjYW5ub3QgZWRpdCBlbmNyeXB0ZWQgcHJvcGVydGllcy4KICAgICAgJGZpZWxkc1skcHJvcF9uYW1lXSA9IG5ldyBwcm9wZXJ0eV9lZGl0b3JfZGVmbigkYWxsZGVmbnNbJHByb3BfbmFtZV0sICRwcm9wLCAkdXNlcik7CiAgICB9CiAgfQogIAogIGlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkKICB7CiAgICAvKiBoYW5kbGUgc3VibWlzc2lvbiAqLwogICAgdHJ5CiAgICB7CiAgICAgIC8vIG5vdGUsIHdlIHVzZSB0aGUgc2V0IHZhbHVlIG1ldGhvZCBvbiB0aGUgZmllbGQuLi4gaXQgd2lsbCBhY3R1YWxseSBtb2RpZnkgdGhlIHVzZXIKICAgICAgLy8gYW5kIHNldCB0aGUgZGF0YS4KICAgICAgZm9yZWFjaCgkZmllbGRzIGFzICRwcm9wX25hbWUgPT4gJGZpZWxkKQogICAgICB7CiAgICAgICAgJGtleSAgPSAncHJvcF8nIC4gJHByb3BfbmFtZTsKICAgICAgICAka2V5MiA9ICdwcm9wZGVsXycgLiAkcHJvcF9uYW1lOwogICAgICAgICR2YWwgID0gXHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywgJGtleSk7CiAgICAgICAgaWYoJGZpZWxkLT50eXBlID09IDgpCiAgICAgICAgewogICAgICAgICAgJHZhbCA9IFx4dF9wYXJhbTo6Z2V0X3NlcGFyYXRlZF9kYXRlKCRwYXJhbXMsICRrZXkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCRmaWVsZC0+dHlwZSA9PSA2KQogICAgICAgIHsKICAgICAgICAgIC8vIGltYWdlCiAgICAgICAgICBpZihpc3NldCgkcGFyYW1zWyRrZXkyXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgICRmaWVsZC0+Y2xlYXJfdmFsdWUoKTsKICAgICAgICAgIH0KICAgICAgICAgICR2YWwgPSAkaWQgLiAka2V5OwogICAgICAgIH0KICAgICAgICAkZmllbGQtPnNldF92YWx1ZSgkdmFsKTsKICAgICAgfQogICAgICAKICAgICAgLy8gcGFzcyAyIC4uIHZhbGlkYXRlIHRoZSBpbnB1dCAocmVxdWlyZWQgZmllbGRzLCB1cGxvYWQgdHlwZXMgYW5kIHNvLW9uKQogICAgICBmb3JlYWNoKCRmaWVsZHMgYXMgJHByb3BfbmFtZSA9PiAkZmllbGQpCiAgICAgIHsKICAgICAgICAkZmllbGQtPnZhbGlkYXRlKCk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHBhc3MgMi4xIC4uLiBlbnN1cmUgdGhhdCBpZiBtdXN0X3ZhbGlkYXRlIGlzIG9uLCB0aGF0IHdlIGhhdmUgYW4gZW1haWwgYWRkcmVzcwogICAgICAvLyBmb3IgdGhpcyB1c2VyLgogICAgICBpZigkdXNlci0+bXVzdF92YWxpZGF0ZSAmJiAhJHVzZXItPmNhbl92YWxpZGF0ZSgpKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl92YWxpZGF0ZV9pbnN1ZmZpY2llbnRpbmZvJykpOwogICAgICB9CiAgICAgIAogICAgICAkaXNfYWRkID0gKCR1c2VyLT5pZCA8IDEpID8gVFJVRSA6IEZBTFNFOwogICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAKICAgICAgLy8gcGFzcyAzIC4uIGRvIHBvc3QgcHJvY2Vzc2luZy4KICAgICAgZm9yZWFjaCgkZmllbGRzIGFzICRwcm9wX25hbWUgPT4gJGZpZWxkKQogICAgICB7CiAgICAgICAgJGZpZWxkLT5wb3N0cHJvY2VzcygkdXNlcik7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIGFsbCBkb25lLi4uIGp1c3QgZ290dGEgZG8gc29tZSBub3RpZmljYXRpb25zIGFuZCBldmVudHMuCiAgICAgICRldnRfcGFybXMgPSBbJ25hbWUnID0+ICR1c2VyLT51c2VybmFtZSwgJ2lkJyA9PiAkdXNlci0+aWRdOwogICAgICAKICAgICAgaWYoJGlzX2FkZCkKICAgICAgewogICAgICAgIGF1ZGl0KCcnLCAkdGhpcy0+R2V0TmFtZSgpLCAnQWRkZWQgdXNlciAnIC4gJHVzZXItPnVzZXJuYW1lKTsKICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVzZXItPmlkLCAnYWRtaW4gYWRkIHVzZXInKTsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uQ3JlYXRlVXNlcicsICRldnRfcGFybXMpOwogICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcmFkZGVkJykpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdXNlcl9pZCwgJ2FkbWluIGNoYW5nZSBzZXR0aW5ncycpOwogICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwgJHRoaXMtPkdldE5hbWUoKSwgJ01vZGlmaWVkIHVzZXIgJyAuICR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgCiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCAkZXZ0X3Bhcm1zKTsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX3VzZXJtb2RpZmllZCcpKTsKICAgICAgICAKICAgICAgICBpZigkdXNlci0+bXVzdF92YWxpZGF0ZSkKICAgICAgICB7CiAgICAgICAgICAvLyB1c2VyIHNhdmUgcmVzZXRzIHRoZSB0ZW1wIGNvZGUuCiAgICAgICAgICAkaGVscGVyID0gJHRoaXMtPmdldF92ZXJpZmljYXRpb25fYXNzaXN0YW50KCk7CiAgICAgICAgICAkY29kZSAgID0gJGhlbHBlci0+c2V0X2ZvcmNlX3ZlcmlmeSgkdXNlci0+aWQpOwogICAgICAgICAgJGhlbHBlci0+c2VuZCgkdXNlci0+aWQsICRjb2RlKTsKICAgICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwgJ01BTVMnLCAnVXNlciBzZW50IHZlcmlmaWNhdGlvbiBlbWFpbCcpOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9CiAgfQogIAogICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXR1c2VyMi50cGwnKTsKICAkdHBsLT5hc3NpZ24oJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKSk7CiAgJHRwbC0+YXNzaWduKCdoaWRkZW5fZmllbGRfY29sb3InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKSk7CiAgJHRwbC0+YXNzaWduKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdXJpZWRfZmllbGRfbWFya2VyJywgJyonKSk7CiAgJHRwbC0+YXNzaWduKCdoaWRkZW5fZmllbGRfbWFya2VyJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9tYXJrZXInLCAnISEnKSk7CiAgJHRwbC0+YXNzaWduKCdmaWVsZHMnLCAkZmllbGRzKTsKICAkdHBsLT5hc3NpZ24oJ3VzZXInLCAkdXNlcik7CiAgJHRwbC0+ZGlzcGxheSgpOwogICR1c2VyLT5zdG9yZSgpOwp9CmNhdGNoKFxFeGNlcHRpb24gJGUpCnsKICBpZigkdXNlcikKICB7CiAgICAkdXNlci0+c3RvcmUoKTsKICB9CiAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwogICR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCwgWyd1c2VyX2lkJyA9PiAkdXNlcl9pZF0pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_enable_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSBleGl0OwoKJHVpZCA9IChpbnQpIHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywndWlkJyk7CiRzdGF0ZSA9IChpbnQpIHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnc3RhdGUnLDApOwokc3RhdGUgPSAhJHN0YXRlOwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKCnRyeSB7CiAgICAkdGhpcy0+U2V0VXNlckRpc2FibGVkKCR1aWQsJHN0YXRlKTsKICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcl9zdGF0ZV9jaGFuZ2VkJykpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwp9CiR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHJldHVybjsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7Cgokb2Zmc2V0ID0gMDsKJGJhdGNoc2l6ZSA9IDUwOwokY291bnQgPSAkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKERJU1RJTkNUIHUuaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIHUnKTsKaWYoICRjb3VudCA9PSAwICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZXhwb3J0X25vdXNlcnMnKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQokdXF1ZXJ5ID0gJ1NFTEVDVCBESVNUaU5DVCB1LmlkLHUudXNlcm5hbWUsdS5leHBpcmVzLHUuY3JlYXRlZGF0ZQogICAgICAgICAgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIHUgT1JERVIgQlkgdS5pZCc7CgokZ3JvdXBzID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0R3JvdXBMaXN0KCkpOwokcHJvcGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKJHJlbG5zID0gYXJyYXkoKTsKZm9yZWFjaCggJGdyb3VwcyBhcyAkZ2lkID0+ICRnbmFtZSApIHsKICAkcmVsbnNbJGdpZF0gPSAkdGhpcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKfQoKLy8gYnVpbGQgdGhlIGZpZWxkIG1hcAokZmllbGRtYXAgPSBhcnJheSgndXNlcm5hbWUnPT5udWxsLCdleHBpcmVzJz0+bnVsbCwnY3JlYXRlZGF0ZSc9Pm51bGwsJ2dyb3VwbmFtZSc9Pm51bGwpOwpmb3JlYWNoKCAkcmVsbnMgYXMgJGdpZCA9PiAkcmVsbl9saXN0ICkgewogICAgZm9yZWFjaCggJHJlbG5fbGlzdCBhcyAkcmVsbiApIHsKICAgICAgICBpZiggIWlzc2V0KCRwcm9wZGVmbnNbJHJlbG5bJ25hbWUnXV0pICkgY29udGludWU7CiAgICAgICAgaWYoICRwcm9wZGVmbnNbJHJlbG5bJ25hbWUnXV1bJ2VuY3J5cHQnXSApIGNvbnRpbnVlOwogICAgICAgIGlmKCAkcmVsblsncmVxdWlyZWQnXSA9PSAyIHx8ICRyZWxuWydyZXF1aXJlZCddID09IDEgfHwgJHJlbG5bJ3JlcXVpcmVkJ10gPT0gMyApICRmaWVsZG1hcFskcmVsblsnbmFtZSddXSA9IG51bGw7CiAgICB9Cn0KCiRmbiA9ICdtYW1zLScgLiBkYXRlKCdZLW0tZCcpIC4gJy5jc3YnOwokaGVhZGVyID0gJyMjJyAuIGltcGxvZGUoJywnLCBhcnJheV9rZXlzKCRmaWVsZG1hcCkpOwokZXhwb3J0ID0gdG1wZmlsZSgpOwppZiggRkFMU0UgPT09ICRleHBvcnQgKQp7CiAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kYmVycm9yJykpOwp9CmlmKCBGQUxTRSA9PT0gZndyaXRlKCRleHBvcnQsICRoZWFkZXIgLiAiXG4iKSApCnsKICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7Cn0KCndoaWxlKCAkb2Zmc2V0IDwgJGNvdW50ICkgewogICAgJGRicl91ID0gJGRiLT5TZWxlY3RMaW1pdCgkdXF1ZXJ5LCRiYXRjaHNpemUsJG9mZnNldCk7CiAgICBpZiggISRkYnJfdSApCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kYmVycm9yJykpOwogICAgfQoKICAgIC8vIGdldCB0aGUgdXNlciBpZHMuCiAgICAkdWlkcyA9IGFycmF5KCk7CiAgICB3aGlsZSggISRkYnJfdS0+RU9GKCkgKSB7CiAgICAgICAgJHRtcCA9IChpbnQpJGRicl91LT5maWVsZHNbJ2lkJ107CiAgICAgICAgaWYoICR0bXAgPiAwICYmICFpbl9hcnJheSgkdG1wLCR1aWRzKSApICR1aWRzW10gPSAkdG1wOwogICAgICAgICRkYnJfdS0+TW92ZU5leHQoKTsKICAgIH0KICAgIGlmKCAhY291bnQoJHVpZHMpICkKICAgIHsKICAgICAgICAkb2Zmc2V0ICs9ICRiYXRjaHNpemU7CiAgICAgICAgY29udGludWU7CiAgICB9CiAgICAkZGJyX3UtPk1vdmVGaXJzdCgpOwoKICAgIC8vIGdldCB0aGUgYmVsb25ncyBzdHVmZiBmb3IgdGhlc2UgdXNlcnMKICAgICRicXVlcnkgPSAnU0VMRUNUIHVzZXJpZCxncm91cGlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2JlbG9uZ3MKICAgICAgICAgICAgIFdIRVJFIHVzZXJpZCBJTiAoJy5pbXBsb2RlKCcsJywkdWlkcykuJykgT1JERVIgQlkgdXNlcmlkLGdyb3VwaWQnOwogICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJGJxdWVyeSk7CiAgICAkYmVsb25ncyA9IGFycmF5KCk7CiAgICBpZiggIWlzX2FycmF5KCR0bXApICkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICB9CiAgICBmb3JlYWNoKCAkdG1wIGFzICRicm93ICkgewogICAgICAgIGlmKCAhaXNzZXQoJGJlbG9uZ3NbJGJyb3dbJ3VzZXJpZCddXSkgKSAkYmVsb25nc1skYnJvd1sndXNlcmlkJ11dID0gYXJyYXkoKTsKICAgICAgICAkYmVsb25nc1skYnJvd1sndXNlcmlkJ11dW10gPSAkYnJvd1snZ3JvdXBpZCddOwogICAgfQoKICAgIC8vIGdldCB0aGUgcHJvcGVydGllcyBmb3IgdGhlc2UgdXNlcnMKICAgICRwcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfcHJvcGVydGllcwogICAgICAgICAgICAgV0hFUkUgdXNlcmlkIElOICgnLmltcGxvZGUoJywnLCR1aWRzKS4nKSBPUkRFUiBCWSB1c2VyaWQsdGl0bGUnOwogICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJHBxdWVyeSk7CiAgICAkcHJvcGVydGllcyA9IGFycmF5KCk7CiAgICBpZiggIWlzX2FycmF5KCR0bXApICkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICB9CiAgICBmb3JlYWNoKCAkdG1wIGFzICRwcm93ICkgewogICAgICAgIGlmKCAhaXNzZXQoJHByb3BlcnRpZXNbJHByb3dbJ3VzZXJpZCddXSkgKSAkcHJvcGVydGllc1skcHJvd1sndXNlcmlkJ11dID0gYXJyYXkoKTsKICAgICAgICAkcHJvcGVydGllc1skcHJvd1sndXNlcmlkJ11dW10gPSBhcnJheSgkcHJvd1sndGl0bGUnXSwkcHJvd1snZGF0YSddKTsKICAgIH0KCiAgICB3aGlsZSggISRkYnJfdS0+RU9GKCkgKSB7CiAgICAgICAgLy8gYWRkIHByaW1hcnkgZmllbGRzCiAgICAgICAgJHVpZCA9ICRkYnJfdS0+ZmllbGRzWydpZCddOwogICAgICAgICRyb3cgPSAkZmllbGRtYXA7CiAgICAgICAgJHJvd1sndXNlcm5hbWUnXSA9ICRkYnJfdS0+ZmllbGRzWyd1c2VybmFtZSddOwogICAgICAgICRyb3dbJ2V4cGlyZXMnXSA9ICRkYnJfdS0+ZmllbGRzWydleHBpcmVzJ107CiAgICAgICAgJHJvd1snY3JlYXRlZGF0ZSddID0gJGRicl91LT5maWVsZHNbJ2NyZWF0ZWRhdGUnXTsKCiAgICAgICAgLy8gYWRkIGdyb3VwbmFtZShzKQogICAgICAgIGlmKCBpc3NldCgkYmVsb25nc1skdWlkXSkgKSB7CiAgICAgICAgICAgICR0bXAgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkYmVsb25nc1skdWlkXSBhcyAkZ2lkICkgewogICAgICAgICAgICAgICAgaWYoIGlzc2V0KCRncm91cHNbJGdpZF0pICkgJHRtcFtdID0gJGdyb3Vwc1skZ2lkXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcm93Wydncm91cG5hbWUnXSA9IGltcGxvZGUoJywnLCR0bXApOwogICAgICAgIH0KCiAgICAgICAgLy8gYWRkIHByb3BlcnRpZXMKICAgICAgICBpZiggaXNzZXQoJHByb3BlcnRpZXNbJHVpZF0pICkgewogICAgICAgICAgICBmb3JlYWNoKCAkcHJvcGVydGllc1skdWlkXSBhcyAkcmVjICkgewogICAgICAgICAgICAgICAgaWYoIGFycmF5X2tleV9leGlzdHMoJHJlY1swXSwkcm93KSApICRyb3dbJHJlY1swXV0gPSAkcmVjWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRkYnJfdS0+TW92ZU5leHQoKTsKCiAgICAgICAgLy8gb3V0cHV0IHRoZSByb3cuCiAgICAgICAgJGxpbmUgPSB4dF9hcnJheTo6aW1wbG9kZV9xdW90ZWQoYXJyYXlfdmFsdWVzKCRyb3cpKSAuICJcbiI7CiAgICAgICAgaWYoIEZBTFNFID09PSBmd3JpdGUoJGV4cG9ydCwgJGxpbmUpICkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICAgICAgfQogICAgfQogICAgJG9mZnNldCArPSAkYmF0Y2hzaXplOwp9IC8vIHdoaWxlCgppZiggIXJld2luZCgkZXhwb3J0KSApCnsKICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7Cn0KCi8vIENsZWFyIGV4aXN0aW5nIGJ1ZmZlcnMgb25seSBhZnRlciB0aGUgY29tcGxldGUgZXhwb3J0IGlzIHJlYWR5LgokaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7CmZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7IG9iX2VuZF9jbGVhbigpOyB9CmhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQnKTsKaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gJGZuKTsKZnBhc3N0aHJ1KCRleHBvcnQpOwpmY2xvc2UoJGV4cG9ydCk7CgpleGl0KCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_importgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCAkZ0NtcyApICkgcmV0dXJuOwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0Z3JvdXBzJykgKSByZXR1cm47CgpmdW5jdGlvbiBjaGVja19ncm91cF9jb21wbGV0ZSggJiRncnAgKQp7CiAgaWYoICFpc19hcnJheSggJGdycCApICkgcmV0dXJuIGZhbHNlOwogIGlmKCFpc3NldCgkZ3JwWyduYW1lJ10pIHx8IGVtcHR5KCRncnBbJ25hbWUnXSkpIHJldHVybiBmYWxzZTsKCiAgLy8gcGFzc2VkCiAgaWYoICFpc3NldCgkZ3JwWydwcm9wZXJ0aWVzJ10pIHx8ICFpc19hcnJheSgkZ3JwWydwcm9wZXJ0aWVzJ10pIHx8IChjb3VudCgkZ3JwWydwcm9wZXJ0aWVzJ10pID09IDApICkgcmV0dXJuIGZhbHNlOwoKICBmb3JlYWNoKCAkZ3JwWydwcm9wZXJ0aWVzJ10gYXMgJG9uZXByb3AgKSB7CiAgICBpZiggIWNoZWNrX3Byb3BlcnR5X2NvbXBsZXRlKCAkb25lcHJvcCApICkgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KCgpmdW5jdGlvbiBjaGVja19wcm9wZXJ0eV9jb21wbGV0ZSggJiRwcm9wICkKewogIGlmKCAhaXNfYXJyYXkoICRwcm9wICkgKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWyduYW1lJ10pIHx8IGVtcHR5KCRwcm9wWyduYW1lJ10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWyd0eXBlJ10pIHx8ICRwcm9wWyd0eXBlJ10gPT0gJycpIHJldHVybiBGQUxTRTsKICBpZighaXNzZXQoJHByb3BbJ3Byb21wdCddKSB8fCBlbXB0eSgkcHJvcFsncHJvbXB0J10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWydzb3J0b3JkZXInXSkgfHwgJHByb3BbJ3NvcnRvcmRlciddID09PSAnJyApIHJldHVybiBGQUxTRTsKICBpZighaXNzZXQoJHByb3BbJ3N0YXR1cyddKSB8fCAkcHJvcFsnc3RhdHVzJ10gPT09ICcnKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWydsb3N0dW5mbGFnJ10pIHx8ICRwcm9wWydsb3N0dW5mbGFnJ10gPT09ICcnKSByZXR1cm4gRkFMU0U7CgogIGlmKGlzc2V0KCRwcm9wWydsZW5ndGgnXSkpIHsKICAgIGlmKGVtcHR5KCRwcm9wWydsZW5ndGgnXSkpIHJldHVybiBGQUxTRTsKICAgIGlmKGludHZhbCgkcHJvcFsnbGVuZ3RoJ10pID09IDApIHJldHVybiBGQUxTRTsKICB9CiAgaWYoaXNzZXQoJHByb3BbJ21heGxlbmd0aCddKSkgewogICAgaWYoZW1wdHkoJHByb3BbJ21heGxlbmd0aCddKSkgcmV0dXJuIEZBTFNFOwogICAgaWYoaW50dmFsKCRwcm9wWydtYXhsZW5ndGgnXSkgPT0gMCkgcmV0dXJuIEZBTFNFOwogIH0KCiAgJHR5cGUgPSBpbnR2YWwoJHByb3BbJ3R5cGUnXSk7CiAgaWYoICR0eXBlID4gOSB8fCAkdHlwZSA8IDAgKSByZXR1cm4gRkFMU0U7CiAgaWYoICR0eXBlID09IDQgfHwgJHR5cGUgPT0gNSApIHsKICAgIC8vIGNoZWNrIGZvciBvcHRpb25zCiAgICBpZiggIWlzc2V0KCRwcm9wWydvcHRpb25zJ10pIHx8ICFpc19hcnJheSgkcHJvcFsnb3B0aW9ucyddKSApIHJldHVybiBGQUxTRTsKCiAgICBmb3JlYWNoKCAkcHJvcFsnb3B0aW9ucyddIGFzICRvbmVvcCApIHsKICAgICAgaWYoICFpc3NldCgkb25lb3BbJ25hbWUnXSkgfHwgIWlzc2V0KCRvbmVvcFsndGV4dCddKSApIHJldHVybiBGQUxTRTsKICAgIH0KICB9CgogIHJldHVybiBUUlVFOwp9CgppZiggIW1hbXNfdXRpbHM6OnVzaW5nX3N0ZF9jb25zdW1lcigpICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfbm90c3VwcG9ydGVkJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7Cn0KCmlmKCBpc3NldCggJHBhcmFtc1snY2FuY2VsJ10gKSApIHsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwp9CgppZiggaXNzZXQoICRwYXJhbXNbJ3N1Ym1pdCddICkgKSB7CiAgLy8KICAvLyBTdWJtaXQgd2FzIHByZXNzZWQKICAvLwogIGlmKCAhaXNzZXQoICRfRklMRVNbJGlkLid4bWxmaWxlJ10gKSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ191cGxvYWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogIH0KICAkdGhlZmlsZSA9JiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddOwogIGlmKCAkdGhlZmlsZVsndHlwZSddICE9ICd0ZXh0L3htbCcgfHwgJHRoZWZpbGVbJ3NpemUnXSA9PSAwIHx8ICR0aGVmaWxlWydlcnJvciddICE9IDAgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICB9CgogIC8vCiAgLy8gV2UgZ290IGFuIFhNTCBmaWxlIChob3BlIGl0J3MgdGhlIHJpZ2h0IG9uZQogIC8vIG5vdyB3ZSBjYW4gdHJ5IHRvIHBhcnNlIGl0CiAgLy8KCiAgJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkdGhlZmlsZVsndG1wX25hbWUnXSApOwogICRwYXJzZXIgPSB4bWxfcGFyc2VyX2NyZWF0ZSgpOwogICRyZXQgPSB4bWxfcGFyc2VfaW50b19zdHJ1Y3QoICRwYXJzZXIsICR4bWwsICR2YWwsICR4dCApOwogIHhtbF9wYXJzZXJfZnJlZSggJHBhcnNlciApOwoKICBpZiggJHJldCA9PSAwICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyAxJyk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogIH0KCiAgLy8KICAvLyBXZSBoYXZlIHNvbWUga2luZCBvZiB2YWxpZCBYTUwKICAvLwogICRvbmVwcm9wZXJ0eSA9IGFycmF5KCk7CiAgJG9uZW9wdGlvbiA9IGFycmF5KCk7CiAgJGhhdmVfY29tcGxldGVfZ3JvdXAgPSBmYWxzZTsKICAkZ3JwX2luZm8gPSBhcnJheSgpOwogIGZvcmVhY2goICR2YWwgYXMgJGVsZW0gKSB7CiAgICAkdmFsdWUgPSAoaXNzZXQoJGVsZW1bJ3ZhbHVlJ10pPyRlbGVtWyd2YWx1ZSddOicnKTsKICAgICR0eXBlID0gKGlzc2V0KCRlbGVtWyd0eXBlJ10pPyRlbGVtWyd0eXBlJ106JycpOwogICAgJHRhZyA9IHN0cnRvbG93ZXIoJGVsZW1bJ3RhZyddKTsKICAgICRmbGQgPSBzdWJzdHIoJHRhZyxzdHJwb3MoJHRhZywnXycpKzEpOwoKICAgIHN3aXRjaCggJHRhZyApIHsKICAgIGNhc2UgJ21hbXNfZ3JvdXAnOgogICAgICB7CiAgICAgICAgaWYoICR0eXBlICE9ICdjb21wbGV0ZScgJiYgJHR5cGUgIT0gJ2Nsb3NlJyApCiAgICAgICAgewogICAgICAgICAgY29udGludWUgMjsKICAgICAgICB9CiAgICAgICAgaWYoICFjaGVja19ncm91cF9jb21wbGV0ZSgkZ3JwX2luZm8pICkKICAgICAgICB7CiAgICAgICAgICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKICAgICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfYmFkX3htbCcpIC4gJyAyJyk7CiAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyB3ZSBzaG91bGQgaGF2ZSBhIGNvbXBsZXRlIGdyb3VwIGF0IHRoaXMgcG9pbnQKICAgICAgICAkaGF2ZV9jb21wbGV0ZV9ncm91cCA9IHRydWU7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBjYXNlICdncnBfbmFtZSc6CiAgICBjYXNlICdncnBfZGVzY3JpcHRpb24nOgogICAgICB7CiAgICAgICAgaWYoICR0eXBlICE9ICdjb21wbGV0ZScgJiYgJHR5cGUgIT0gJ2Nsb3NlJyApCiAgICAgICAgewogICAgICAgICAgY29udGludWUgMjsKICAgICAgICB9CiAgICAgICAgaWYoIGlzc2V0KCRncnBfaW5mb1skZmxkXSkgKQogICAgICAgIHsKICAgICAgICAgIC8vIGFuIGVycm9yIHRoYXQgd2Ugc2hvdWxkIG5ldmVyIGdldAogICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykgLiAnIDMnKTsKICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRncnBfaW5mb1skZmxkXSA9ICR2YWx1ZTsKICAgICAgICBicmVhazsKICAgICAgfQoKCiAgICBjYXNlICdwcm9wZXJ0eSc6CiAgICAgIHsKICAgICAgICBpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkKICAgICAgICB7CiAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgIH0KICAgICAgICBpZiggIWNoZWNrX3Byb3BlcnR5X2NvbXBsZXRlKCRvbmVwcm9wZXJ0eSkgKQogICAgICAgIHsKICAgICAgICAgIC8vIGFuIGVycm9yIHRoYXQgd2Ugc2hvdWxkIG5ldmVyIGdldAogICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykgLiAnIDQnKTsKICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmKCAhaXNzZXQoJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10pICkgJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10gPSBbXTsKICAgICAgICAkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXVtdID0gJG9uZXByb3BlcnR5OwogICAgICAgICRvbmVwcm9wZXJ0eSA9IFtdOwogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgY2FzZSAncHJvcF9uYW1lJzoKICAgIGNhc2UgJ3Byb3BfcHJvbXB0JzoKICAgIGNhc2UgJ3Byb3BfdmFsdWUnOgogICAgY2FzZSAncHJvcF90eXBlJzoKICAgIGNhc2UgJ3Byb3BfbGVuZ3RoJzoKICAgIGNhc2UgJ3Byb3BfbWF4bGVuZ3RoJzoKICAgIGNhc2UgJ3Byb3Bfc29ydG9yZGVyJzoKICAgIGNhc2UgJ3Byb3Bfc3RhdHVzJzoKICAgIGNhc2UgJ3Byb3BfbG9zdHVuZmxhZyc6CiAgICAgIHsKICAgICAgICBpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkKICAgICAgICB7CiAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgIH0KICAgICAgICBpZiggaXNzZXQoICRvbmVwcm9wZXJ0eVskZmxkXSApICkKICAgICAgICB7CiAgICAgICAgICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKICAgICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfYmFkX3htbCcpIC4gJyA1Jyk7CiAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkb25lcHJvcGVydHlbJGZsZF0gPSAkdmFsdWU7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBjYXNlICdwcm9wX29wdGlvbic6CiAgICAgIHsKICAgICAgICBpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkKICAgICAgICB7CiAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgIH0KICAgICAgICAkb25lcHJvcGVydHlbJ29wdGlvbnMnXVtdID0gJG9uZW9wdGlvbjsKICAgICAgICAkb25lb3B0aW9uID0gW107CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICBjYXNlICdvcF9uYW1lJzoKICAgIGNhc2UgJ29wX3RleHQnOgogICAgICB7CiAgICAgICAgaWYoICR0eXBlICE9ICdjb21wbGV0ZScgJiYgJHR5cGUgIT0gJ2Nsb3NlJyApCiAgICAgICAgewogICAgICAgICAgY29udGludWUgMjsKICAgICAgICB9CiAgICAgICAgJG9uZW9wdGlvblskZmxkXSA9ICR2YWx1ZTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfSAvLyBzd2l0Y2gKICB9IC8vIGZvcmVhY2gKCiAgLy8KICAvLyBJZiB3ZSBnb3QgaGVyZSwgd2UgcGFyc2VkIHRoZSB4bWwgZmlsZSBwcm9wZXJseQogIC8vIGFuZCBpdCBsb29rcyBnb29kLgogIC8vCgogIC8vIElmIHRoZSBuZXduYW1lIGlzIHNldCwgd2UnbGwgdXNlIHRoYXQKICBpZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfbmV3bmFtZSddKSAmJiAkcGFyYW1zWydpbnB1dF9uZXduYW1lJ10gIT0gJycgKSAkZ3JwX2luZm9bJ25hbWUnXSA9ICRwYXJhbXNbJ2lucHV0X25ld25hbWUnXTsKCiAgaWYoICR0aGlzLT5Hcm91cEV4aXN0c0J5TmFtZSggJGdycF9pbmZvWyduYW1lJ10gKSApIHsKICAgIC8vIGFuIGVycm9yIHRoYXQgd2Ugc2hvdWxkIG5ldmVyIGdldAogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9ncm91cGV4aXN0cycpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQoKICBpZiggIWlzc2V0KCRncnBfaW5mb1sncHJvcGVydGllcyddKSB8fCAhaXNfYXJyYXkoJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10pIHx8IChjb3VudCgkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSkgPT0gMCkgKSB7CiAgICAvLyBubyBwcm9wZXJ0aWVzPwogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9wcm9wZXJ0aWVzJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICAgIHJldHVybjsKICB9CgogIC8vIE5vdyBhZGQgdGhlIHByb3BlcnRpZXMKICAvLyAoZmlyc3Qgc2NhbiBmb3IgbmFtZXMpCiAgJHBhc3NlZCA9IHRydWU7CiAgZm9yZWFjaCggJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10gYXMgJG9uZXByb3AgKSB7CiAgICAkcmVzID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbiggJG9uZXByb3BbJ25hbWUnXSApOwogICAgaWYoIGlzX2FycmF5KCRyZXMpICkgewogICAgICAkcGFzc2VkID0gZmFsc2U7CiAgICAgIGJyZWFrOwogICAgfQogIH0KICBpZiggISRwYXNzZWQgKSB7CiAgICAvLyBubyBwcm9wZXJ0aWVzPwogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9kdXBfcHJvcGVydGllcycpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQoKICAvLwogIC8vIE5vdyByZWFsbHkgYWRkIHRoZW0KICAvLwogIGZvcmVhY2goICRncnBfaW5mb1sncHJvcGVydGllcyddIGFzICRvbmVwcm9wICkgewogICAgJGxlbmd0aCA9ICRvbmVwcm9wWydsZW5ndGgnXSA/PyAwOwogICAgJG1heGxlbmd0aCA9ICRvbmVwcm9wWydtYXhsZW5ndGgnXSA/PyAwOwogICAgJHJlcyA9ICR0aGlzLT5BZGRQcm9wZXJ0eURlZm4oJG9uZXByb3BbJ25hbWUnXSwgJG9uZXByb3BbJ3Byb21wdCddLCAkb25lcHJvcFsndHlwZSddLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoKTsKICAgIGlmKCBpc19hcnJheSggJHJlcyApICYmICRyZXNbMF0gPT09IEZBTFNFICkgewogICAgICAvLyBmb3Igc29tZSBkdW1iIHJlYXNvbiwgd2Ugc3RpbGwgY291bGRuJ3QgaW5zZXJ0CiAgICAgIC8vIHRoZSBwcm9wZXJ0eQogICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRhZGRwcm9wJykpOwogICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYoICRvbmVwcm9wWyd0eXBlJ10gPT0gNCB8fCAkb25lcHJvcFsndHlwZSddID09IDUgKSB7CiAgICAgIC8vIGl0J3MgYSBzZWxlY3QgdHlwZQogICAgICAkb3BzID0gW107CiAgICAgIGZvcmVhY2goICRvbmVwcm9wWydvcHRpb25zJ10gYXMgJG9uZW9wICkgewogICAgICAgICRvcHNbXSA9ICRvbmVvcFsndGV4dCddIC4gJz0nIC4gJG9uZW9wWyduYW1lJ107CiAgICAgIH0KICAgICAgJHJlcyA9ICR0aGlzLT5BZGRTZWxlY3RPcHRpb25zKCAkb25lcHJvcFsnbmFtZSddLCAkb3BzICk7CiAgICAgIGlmKCAkcmVzWzBdID09IEZBTFNFICkgewogICAgICAgIC8vIGZvciBzb21lIGR1bWIgcmVhc29uLCB3ZSBzdGlsbCBjb3VsZG4ndCBpbnNlcnQKICAgICAgICAvLyB0aGUgcHJvcGVydHkKICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRhZGRwcm9wJykgLiAnIDInKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH0KCiAgLy8gV29vaG9vLCB0aGUgcHJvcGVydGllcyB3ZXJlIGFkZGVkCiAgLy8gTm93IHRvIGFkZCB0aGUgZ3JvdXAgaXRzZWxmLgogICRyZXMgPSAkdGhpcy0+QWRkR3JvdXAoJGdycF9pbmZvWyduYW1lJ10sJGdycF9pbmZvWydkZXNjcmlwdGlvbiddKTsKICBpZiggaXNfYXJyYXkoICRyZXMgKSAmJiAkcmVzWzBdID09PSBGQUxTRSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudGFkZGdyb3VwJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICAgIHJldHVybjsKICB9CiAgJGdycGlkID0gJHJlc1sxXTsKCiAgLy8gYW5kIGFzc29jaWF0ZSB0aGUgcHJvcGVydGllcyB3aXRoIHRoZSBncm91cAogICRlcnJvciA9IGZhbHNlOwogIGZvcmVhY2goICRncnBfaW5mb1sncHJvcGVydGllcyddIGFzICRvbmVwcm9wICkgewogICAgLy8gaWYgaXQncyBhbiBvcHRpb24gdHlwZSAodHlwZSA0IG9yIDUpIHRoZW4KICAgIC8vIGFkZCB0aGUgb3B0aW9ucwogICAgJHJlcyA9ICR0aGlzLT5BZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRncnBpZCwgJG9uZXByb3BbJ25hbWUnXSwgJG9uZXByb3BbJ3NvcnRvcmRlciddLCAkb25lcHJvcFsnbG9zdHVuZmxhZyddLCAkb25lcHJvcFsnc3RhdHVzJ10gKTsKICAgIGlmKCAkcmVzWzBdID09PSBGQUxTRSApICRlcnJvciA9IHRydWU7CiAgfQogIGlmKCAkZXJyb3IgPT0gdHJ1ZSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudGFkZGdyb3VwcmVscycpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQoKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwp9IC8vIGlmCgovLyBQcm92aWRlIGEgc2ltcGxlIGZvcm0gdGhhdCBhbGxvd3MgcGVvcGxlIHRvIGNob29zZSB0aGUgZmlsZSB0byBpbXBvcnQKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9pbXBvcnRncm91cCcsJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdCcsJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CiRzbWFydHktPmFzc2lnbignY2FuY2VsJywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLCR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9maWxlbmFtZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9pbXBvcnR4bWxmaWxlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpbGVuYW1lJywkdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwneG1sZmlsZScsJycsNDApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbmV3bmFtZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9uZXdncm91cG5hbWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfbmV3bmFtZScsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X25ld25hbWUnKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2ltcG9ydGdyb3VwLnRwbCcpOwoKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_from_feu.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQ0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnc2l0ZXByZWZzJykgKSByZXR1cm47DQovKiogQHZhciBpbnQgJHJldHVybmlkIGluIHNjb3BlIGZyb20gZmlsZSBpbmNsdXNpb24gKi8NCg0KJHBhcm1zID0gW107DQokcGFybXNbJ2Vycm9yJ10gPSAwOw0KJHBhcm1zWydtZXNzYWdlJ10gPSAnU3VjY2VzcyEnOw0KDQoNCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydkb19pbXBvcnQnXSkgKQ0Kew0KICAkciA9IFxNQU1TXGZldV9pbXBvcnRlcjo6cnVuKCk7DQogICRwYXJtc1snZXJyb3InXSA9ICRyWzFdWzBdOw0KICAkcGFybXNbJ21lc3NhZ2UnXSA9ICRyWzFdWzFdOw0KfQ0KZWxzZQ0Kew0KICAkcGFybXNbJ2Vycm9yJ10gPSAxOw0KICAkcGFybXNbJ21lc3NhZ2UnXSA9ICdObyBkaXJlY3QgYWNjZXNzISc7DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9zZXR0aW5ncycsICRyZXR1cm5pZCwgJHBhcm1zKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHJldHVybjsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKCmlmKCAhbWFtc191dGlsczo6dXNpbmdfc3RkX2NvbnN1bWVyKCkgKSB7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9ub3RzdXBwb3J0ZWQnKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICByZXR1cm47Cn0KCiRpbXBvcnRwcmVmcyA9IGFycmF5KCdkZWxldGVfdXNlcnMnPT4wLCdkZWxpbWl0ZXInPT4nLCcpOwokdG1wID0gJHRoaXMtPlhUR2V0UHJlZmVyZW5jZSgnaW1wb3J0cHJlZnMnKTsKaWYoICR0bXAgKSAkdG1wID0gdW5zZXJpYWxpemUoJHRtcCk7CmlmKCBpc19hcnJheSgkdG1wKSApICRpbXBvcnRwcmVmcyA9ICR0bXA7CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogIHRyeSB7CiAgICAkX2ZwID0gJGlkLidmaWxlJzsKICAgIC8vIGNoZWNrIHRoZSBmaWxlCiAgICBpZiggIWlzc2V0KCRfRklMRVMpIHx8ICFpc3NldCgkX0ZJTEVTWyRfZnBdKSB8fCAkX0ZJTEVTWyRfZnBdWyduYW1lJ10gPT0gJycgKSB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJykpOwogICAgfQogICAgaWYoICRfRklMRVNbJF9mcF1bJ3NpemUnXSA9PSAwIHx8ICRfRklMRVNbJF9mcF1bJ2Vycm9yJ10gIT0gMCApIHsKICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcHJvYmxlbV91cGxvYWQnKSk7CiAgICB9CiAgICAkZmggPSBmb3BlbigkX0ZJTEVTWyRfZnBdWyd0bXBfbmFtZSddLCdyJyk7CiAgICBpZiggISRmaCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3Npbmd1cGxvYWQnKSk7CiAgICB3aGlsZSggIWZlb2YoJGZoKSApIHsKICAgICAgJGxpbmUgPSB4dF91dGlsczo6ZmdldHMoJGZoKTsKICAgICAgJGxpbmUgPSB0cmltKCRsaW5lKTsKICAgICAgaWYoICEkbGluZSApIGNvbnRpbnVlOwogICAgICBpZiggIXN0YXJ0c3dpdGgoJGxpbmUsJyMjJykgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWxlZm9ybWF0JykpOwogICAgICAkbGluZSA9IHRyaW0oc3Vic3RyKCRsaW5lLDIpKTsKICAgICAgJGZpZWxkcyA9IHh0X2FycmF5OjpzbWFydF9leHBsb2RlKCRsaW5lLCRpbXBvcnRwcmVmc1snZGVsaW1pdGVyJ10pOwogICAgICBpZiggY291bnQoJGZpZWxkcykgPCAxICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmlsZWZvcm1hdCcpKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICBmY2xvc2UoJGZoKTsKCiAgICAkaW1wb3J0cHJlZnNbJ2RlbGV0ZV91c2VycyddID0gKGludCl4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2RlbGV0ZV91c2VycycsMCk7CiAgICAkaW1wb3J0cHJlZnNbJ2RlbGltaXRlciddID0gdHJpbSh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2RlbGltaXRlcicpKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbXBvcnRwcmVmcycsc2VyaWFsaXplKCRpbXBvcnRwcmVmcykpOwoKICAgICRmbiA9IHRlbXBuYW0oVE1QX0NBQ0hFX0xPQ0FUSU9OLCdtYW1zX2ltcG9ydCcpOwogICAgaWYoICEkZm4gKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9jcmVhdGV0bXBmaWxlJykpOwogICAgQGNvcHkoJF9GSUxFU1skX2ZwXVsndG1wX25hbWUnXSwkZm4pOwoKICAgICRyZXR1cm5fdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3JldHVybl91cmwnLCRyZXR1cm5fdXJsKTsKCiAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdhZG1pbl9kb2ltcG9ydCcsICRyZXR1cm5pZCxhcnJheSgnZmlsZSc9PmJhc2VuYW1lKCRmbikpKS4nJnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2lmcmFtZV9zcmMnLCAkdXJsKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5faW1wb3J0X3VzZXJzMi50cGwnKTsKICAgIHJldHVybjsKICB9CiAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgfQp9CgovLyBidWlsZCB0aGUgZm9ybS4KJGdyb3VwbGlzdCA9IGFycmF5X2ZsaXAoJHRoaXMtPkdldEdyb3VwTGlzdCgpKTsKaWYoICFjb3VudCgkZ3JvdXBsaXN0KSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ25vZ3JvdXBzJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7Cn0KCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9pbXBvcnRfdXNlcnMnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignb3B0aW9ucycsJGltcG9ydHByZWZzKTsKJHNtYXJ0eS0+YXNzaWduKCdncm91cGxpc3QnLCRncm91cGxpc3QpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2ltcG9ydF91c2Vycy50cGwnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_logout.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCmlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB7CglpZiggaXNzZXQoJHBhcmFtc1sndXNlcl9pZCddKSApIHsKCQkkdGhpcy0+TG9nb3V0VXNlciggJHBhcmFtc1sndXNlcl9pZCddLCAnTG9nZ2VkIG91dCBieSBhZG1pbicgKTsKCX0KfQoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCd1c2VycycpOwoKLy8gRU9GCg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnc2l0ZXByZWZzJykgKSByZXR1cm47CgppZiggaXNzZXQoJHBhcmFtc1snZXJyb3InXSkgJiYgJHBhcmFtc1snZXJyb3InXSA9PSAxICkKewogIAogIGlmKCBpc19hcnJheSgkcGFyYW1zWydtZXNzYWdlJ10pKQogIHsKICAgICRlcnJfbGlzdCA9IFtdOwogICAgZm9yZWFjaCgkcGFyYW1zWydtZXNzYWdlJ10gYXMgJG1zZykKICAgIHsKICAgICAgJGVycl9saXN0W10gPSAkdGhpcy0+TGFuZygkbXNnKTsKICAgIH0KICB9CiAgZWxzZQogIHsKICAgICRlcnJfbGlzdCA9IFskdGhpcy0+TGFuZygkcGFyYW1zWydtZXNzYWdlJ10pXTsKICB9CiAgJHRoaXMtPlNob3dFcnJvcnMoJGVycl9saXN0KTsKfQplbHNlCnsKICBpZiggaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSApCiAgewogICAgJHRoaXMtPlNob3dNZXNzYWdlKCAkdGhpcy0+TGFuZygkcGFyYW1zWydtZXNzYWdlJ10pICk7CiAgfQp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAncHJlZnMnLCAkdGhpcy0+TGFuZygncHJlZmVyZW5jZXMnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlciggJ2F1dGgnLCAkdGhpcy0+TGFuZygnYXV0aGVudGljYXRpb24nKSk7CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwplY2hvICR0aGlzLT5TdGFydFRhYigncHJlZnMnLCRwYXJhbXMpOwppbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9wcmVmc3RhYi5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYignYXV0aCcsJHBhcmFtcyk7CmluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2F1dGh0YWIucGhwJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7CiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_set_auth.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYignYXV0aCcpOwoKaWYoICFceHRfcGFyYW06OmV4aXN0cygkcGFyYW1zLCAnc3VibWl0JykgKQp7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAnYXV0aCcsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsKICByZXR1cm47Cn0KCmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX3VzZXJzYWx0JykgKSB7CiAgICBpZiggXHh0X3BhcmFtOjpleGlzdHMoJHBhcmFtcywncHdzYWx0JykgKSB7CiAgICAgICAgJHB3c2FsdCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwd3NhbHQnKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGNvdW50KGlkKSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2Vycyc7CiAgICAgICAgJG51c2VycyA9ICRkYi0+R2V0T25lKCRxdWVyeSk7CiAgICAgICAgaWYoICRudXNlcnMgPiAwICkgewogICAgICAgICAgICAkb2xkc2FsdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwd3NhbHQnKTsKICAgICAgICAgICAgaWYoICRvbGRzYWx0ICE9ICRwd3NhbHQgKSB7CiAgICAgICAgICAgICAgICAvLyBjYW4gb25seSBjaGFuZ2UgdGhlIHNhbHQgaWYgdGhlcmUgYXJlIG5vIHVzZXJzLgogICAgICAgICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9hZGp1c3RzYWx0JykpOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAnYXV0aCcsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHdzYWx0JywkcHdzYWx0KTsKICAgIH0KfQoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnLChpbnQpJHBhcmFtc1sncmVxdWlyZV9vbmVncm91cCddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnLChpbnQpJHBhcmFtc1snZGVmYXVsdF9ncm91cCddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N1cHBvcnRfbG9zdHVuJywoaW50KSRwYXJhbXNbJ3N1cHBvcnRfbG9zdHVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dfY2hhbmdldXNlcm5hbWUnLChpbnQpJHBhcmFtc1snYWxsb3dfY2hhbmdldXNlcm5hbWUnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3RwdycsKGludCkkcGFyYW1zWydzdXBwb3J0X2xvc3RwdyddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJywoaW50KSRwYXJhbXNbJ3B3ZmxkbGVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluX3Bhc3N3b3JkbGVuZ3RoJywoaW50KSRwYXJhbXNbJ21pbnB3bGVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJywoaW50KSRwYXJhbXNbJ21heHB3bGVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW5oYW5jZWRfcGFzc3dvcmQnLChpbnQpJHBhcmFtc1snZW5oYW5jZWRwdyddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Bhc3N3b3JkX3JlcXVpcmVkY2hhcnMnLHRyaW0oJHBhcmFtc1sncHdyZXF1aXJlZGNoYXJzJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJywoaW50KSRwYXJhbXNbJ3VuZmxkbGVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywoaW50KSRwYXJhbXNbJ21pbnVubGVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJywoaW50KSRwYXJhbXNbJ21heHVubGVuJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScsdHJpbSgkcGFyYW1zWydjb29raWVuYW1lJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLChpbnQpJHBhcmFtc1snY29va2llX2tlZXBhbGl2ZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJywoaW50KSRwYXJhbXNbJ3VzZXJuYW1lX2lzX2VtYWlsJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX2VtYWlscycsKGludCkkcGFyYW1zWydhbGxvd19kdXBsaWNhdGVfZW1haWxzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycycsKGludCkkcGFyYW1zWydhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbG9naW5fYWZ0ZXJfdmVyaWZ5JywgKGludCkgJHBhcmFtc1snbG9naW5fYWZ0ZXJfdmVyaWZ5J10pOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NpZ25pbl9idXR0b24nLHRyaW0oJHBhcmFtc1snc2lnbmluX2J1dHRvbiddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLHRyaW0oJHBhcmFtc1sncmVxdWlyZWRfZmllbGRfbWFya2VyJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJyx0cmltKCRwYXJhbXNbJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9tYXJrZXInLHRyaW0oJHBhcmFtc1snaGlkZGVuX2ZpZWxkX21hcmtlciddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfY29sb3InLHRyaW0oJHBhcmFtc1snaGlkZGVuX2ZpZWxkX2NvbG9yJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NlY3VyZV9maWVsZF9tYXJrZXInLHRyaW0oJHBhcmFtc1snc2VjdXJlX2ZpZWxkX21hcmtlciddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfY29sb3InLHRyaW0oJHBhcmFtc1snc2VjdXJlX2ZpZWxkX2NvbG9yJ10pKTsKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnLHRyaW0oJHBhcmFtc1sncGFnZWlkZm9yZ290cGFzc3dkJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsdHJpbSgkcGFyYW1zWydwYWdlaWRfY2hhbmdlc2V0dGluZ3MnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ2luJyx0cmltKCRwYXJhbXNbJ3BhZ2VpZF9sb2dpbiddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9nb3V0Jyx0cmltKCRwYXJhbXNbJ3BhZ2VpZF9sb2dvdXQnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX29udmVyaWZ5Jyx0cmltKCRwYXJhbXNbJ3BhZ2VpZF9vbnZlcmlmeSddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfYWZ0ZXJ2ZXJpZnknLHRyaW0oJHBhcmFtc1sncGFnZWlkX2FmdGVydmVyaWZ5J10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9hZnRlcmNoYW5nZXNldHRpbmdzJyx0cmltKCRwYXJhbXNbJ3BhZ2VpZF9hZnRlcmNoYW5nZXNldHRpbmdzJ10pKTsKCmlmKCBpc3NldCgkcGFyYW1zWydlY29tbV9vcmRlcmNhbmNlbGxlZCddKSApICB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbicsKGludCkkcGFyYW1zWydlY29tbV9wYWlkcmVnaXN0cmF0aW9uJ10pOwogICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlY29tbV9wYWlkcmVnaXN0cmF0aW9uJykgKSB7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ0dFY29tbWVyY2VCYXNlJywnT3JkZXJVcGRhdGVkJyxmYWxzZSk7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ0dFY29tbWVyY2VCYXNlJywnT3JkZXJEZWxldGVkJyxmYWxzZSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlclVwZGF0ZWQnKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlckRlbGV0ZWQnKTsKICAgIH0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmNhbmNlbGxlZCcsdHJpbSgkcGFyYW1zWydlY29tbV9vcmRlcmNhbmNlbGxlZCddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZWNvbW1fb3JkZXJkZWxldGVkJyx0cmltKCRwYXJhbXNbJ2Vjb21tX29yZGVyZGVsZXRlZCddKSk7Cn0KJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAnYXV0aCcsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsK]]></data>
	</file>
	<file>
	  <filename>/action.ajax.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKiBAdmFyICAkcGFyYW1zIGFycmF5ICovDQokb3V0ID0gWw0KICAnbXNnJyAgICAgPT4gJ29rJywNCiAgJ2Vycm9yJyAgID0+IDAsDQogICdjb250ZW50JyA9PiAnJywNCiAgJ3R5cGUnID0+ICd0eHQnLA0KICAncGFyYW1zJyAgPT4gJHBhcmFtcw0KXTsNCg0KJHBhcmFtcyA9IFxNQU1TXHV0aWxzOjpwcm1zX3RvX3BhcmFtcygkcGFyYW1zLCBUUlVFKTsNCg0KaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkNCnsNCiAgaGVhZGVyKCdIVFRQLzEuMSA0MDMgRm9yYmlkZGVuIScpOw0KICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcpOw0KICAkb3V0Wydtc2cnXSA9ICdGb3JiaWRkZW4nOw0KICAkb3V0WydlcnJvciddID0gODAwODU7DQogIGRpZSgganNvbl9lbmNvZGUoJG91dCkgKTsNCn0NCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ2ZuYyddKSApDQp7DQogICRmbmMgPSB0cmltKCRwYXJhbXNbJ2ZuYyddKTsNCiAgJHBybXMgPSBbXTsNCiAgDQogIGlmKCBpc3NldCgkcGFyYW1zWydwYXJhbXMnXSkgKQ0KICB7DQogICAgaWYoIGlzX2FycmF5KCRwYXJhbXNbJ3BhcmFtcyddKSApDQogICAgew0KICAgICAgJHBybXMgPSAkcGFyYW1zWydwYXJhbXMnXTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRwcm1zID0gZXhwbG9kZSgnLCcsICRwYXJhbXNbJ3BhcmFtcyddKTsNCiAgICB9DQogIH0NCiAgDQogIGFycmF5X3Vuc2hpZnQoJHBybXMsICR0aGlzLT5HZXROYW1lKCkpOw0KICANCiAgaWYoIGNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApDQogIHsNCiAgICAjIGZyb250ZW5kIGFwaQ0KICAgICRjYWxsYWJsZSA9ICdcXE1BTVNcXGFqYXhfaGFuZGxlcjo6ZmVfJyAuICRmbmM7DQogIH0NCiAgZWxzZQ0KICB7DQogICAgIyBiYWNrZW5kIGFwaQ0KICAgICRjYWxsYWJsZSA9ICdcXE1BTVNcXGFqYXhfaGFuZGxlcjo6YmVfJyAuICRmbmM7DQogIH0NCiAgDQogIGlmKCFpc19jYWxsYWJsZSgkY2FsbGFibGUsIEZBTFNFLCAkY2FsbGFibGVfbmFtZSkpDQogIHsNCiAgICBoZWFkZXIoJ0hUVFAvMS4xIDUwMCBSZXF1ZXN0IGZ1bmN0aW9uIGVycm9yIScpOw0KICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04Jyk7DQogICAgJG91dFsnbXNnJ10gICA9ICRmbmMgLiAnIG5vdCB2YWxpZCBhcGkgY2FsbCEnOw0KICAgICRvdXRbJ2Vycm9yJ10gPSA4MDA4NTsNCiAgICBkaWUoanNvbl9lbmNvZGUoJG91dCkpOw0KICB9DQogIA0KICB0cnkNCiAgew0KICAgICRvdXRbJ2NvbnRlbnQnXSA9IEBjYWxsX3VzZXJfZnVuY19hcnJheSgkY2FsbGFibGUsICRwcm1zKTsNCiAgfQ0KICBjYXRjaChcQXJndW1lbnRDb3VudEVycm9yICRlKQ0KICB7DQogICAgJG91dFsnZXJyb3InXSAgID0gJGUtPmdldENvZGUoKTsNCiAgICAkb3V0Wydtc2cnXSAgICAgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICRvdXRbJ2NvbnRlbnQnXSA9ICdPb3BzISc7DQogIH0NCiAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkNCiAgew0KICAgICRvdXRbJ2Vycm9yJ10gICA9ICRlLT5nZXRDb2RlKCk7DQogICAgJG91dFsnbXNnJ10gICAgID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAkb3V0Wydjb250ZW50J10gPSAnT29wcyEnOw0KICB9DQogIA0KICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcpOw0KICBkaWUoanNvbl9lbmNvZGUoJG91dCkpOw0KfQ0KDQpoZWFkZXIoJ0hUVFAvMS4xIDUwMCBSZXF1ZXN0IGZ1bmN0aW9uIGVycm9yIScpOw0KaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgnKTsNCiRvdXRbJ21zZyddICAgPSAnd3Jvbmcgc2V0IG9mIHBhcmFtcyc7DQokb3V0WydlcnJvciddID0gODAwODU7DQoNCmRpZShqc29uX2VuY29kZSgkb3V0KSk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiRfU0VTU0lPTlsnbWFtcyddWydlcnJvcmlkJ10gPSAwOwokY2FuX2NoYW5nZXBhc3N3ZCA9IFRSVUU7CiRjb25zdW1lciAgICAgICAgID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKJGNhbl9jaGFuZ2VwYXNzd2QgPSAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VQQVNTV0QpOwoKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CgppZigkdWlkIDwgMSkKewogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yaWQnXSA9IDE7CiAgJF9TRVNTSU9OWydtYW1zY3MnXVsnZXJyb3InXSA9ICdub3RfbG9nZ2VkX2luX29yX25vbmV4aXN0ZW50JzsKICAkX1NFU1NJT05bJ21hbXNjcyddWydlcnJvcl9tZXNzYWdlJ10gPSAnWW91IGFyZSBub3QgbG9nZ2VkIGluLic7CiAgcmV0dXJuOwp9CgokcmVzdWx0ID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwoKaWYoISRyZXN1bHRbMF0pCnsKICAvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yaWQnXSA9IDI7CiAgJF9TRVNTSU9OWydtYW1zY3MnXVsnZXJyb3InXSA9ICdub3RfbG9nZ2VkX2luX29yX2FjY291bnRfZXhwaXJlZCc7CiAgJF9TRVNTSU9OWydtYW1zY3MnXVsnZXJyb3JfbWVzc2FnZSddID0gJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbi4nOwogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHJlc3VsdFsxXSk7CiAgCiAgcmV0dXJuOwp9CgppZigkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VTRVRUSU5HUykpCnsKICAvLyB0aGUgY29uc3VtZXIgcHJvdmlkZXMgdGhlIGxvZ2luIGNhcGFiaWxpdGllcwogIGVjaG8gJGNvbnN1bWVyLT5nZXRfY2hhbmdlc2V0dGluZ3NfZGlzcGxheSgkaWQsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgCiAgcmV0dXJuOwp9CgppZighJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfVVNFU1REQ0hBTkdFU0VUVElOR1MpKSB7IHJldHVybjsgfQoKJHVpbmZvID0gJHJlc3VsdFsxXTsKCi8vIGdldCB0aGUgdXNlcnMgbWVtYmVyIGdyb3VwcwokZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwoKLy9pZighJGdyb3VwcykKLy97Ci8vICAvLyB0aGlzIHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncnVvcHMuLi4KLy8gIC8vIGhhbmRsZSB0aGlzIGxhdGVyIHRvZG8KLy8gICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX25vZ3JvdXBzJykpOwovLwovLyAgcmV0dXJuOwovL30KCi8vIG5vdyB3ZSBoYXZlIHRoZSBncm91cHMsIHdlIGJ1aWxkIGEgdW5pb24gb2YgYWxsIG9mIHRoZSBncm91cHMgcHJvcGVydGllcwokcHJvcGVydGllcyA9IFtdOwoKZm9yZWFjaCgkZ3JvdXBzIGFzICRncnByZWNvcmQpCnsKICAkZ2lkICAgICAgICAgICA9ICRncnByZWNvcmRbJ2dyb3VwaWQnXTsKICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRnaWQpOwogIAogIGlmKGlzX2FycmF5KCRwcm9wcmVsYXRpb25zKSAmJiBjb3VudCgkcHJvcHJlbGF0aW9ucykgPT0gMiAmJiAkcHJvcHJlbGF0aW9uc1swXSA9PT0gRkFMU0UpIHsgY29udGludWU7IH0KICAKICBpZihjb3VudCgkcHJvcGVydGllcykpCiAgewogICAgJHByb3BlcnRpZXMgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCRwcm9wZXJ0aWVzLCAkcHJvcHJlbGF0aW9ucyk7CiAgfQogIGVsc2UKICB7CiAgICAkcHJvcGVydGllcyA9ICRwcm9wcmVsYXRpb25zOwogIH0KfQoKdWFzb3J0KCRwcm9wZXJ0aWVzLCBhcnJheSgneHRfYXJyYXknLCAnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JykpOwoKaWYoY291bnQoJHByb3BlcnRpZXMpID09IDAgJiYgMCkgIyBtYW5kYXRvcnkgcHJvcGVydGllcyBwZXIgZ3JvdXAgd2lsbCBiZSBhIHByZWZlcmVuY2UgKEpNKQp7CiAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSA9PSAxKQogIHsKICAgIC8vIHRoaXMgdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IGdyb3Vwcy4uLgogICAgLy8gaGFuZGxlIHRoaXMgbGF0ZXIgdG9kbwogICAgCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9vbmVncm91cHJlcXVpcmVkJykpOwogICAgCiAgICByZXR1cm47CiAgfQp9CgovLyBub3cgd2UncmUgcmVhZHkgdG8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCi8vIGZpcnN0IHdlIHB1dCBpbiBzdHVmZiB0aGF0IGlzIHJlcXVpcmVkICh1c2VybmFtZSwgcGFzc3dvcmQsIGV0YywgZXRjKQokcm93YXJyYXkgPSBbXTsKCi8vIG1ha2Ugc3VyZSB1c2VybmFtZSBpcyBpbiB0aGVyZQovLyB3ZSBjYW4gaGlkZSBpdCBpbiB0aGUgdGVtcGxhdGUuCiR2YWwgICAgICAgICAgICAgICAgPSAkdWluZm9bJ3VzZXJuYW1lJ107CiRvbmVyb3cgICAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKJG9uZXJvdy0+bmFtZSAgICAgICA9ICd1c2VybmFtZSc7CiRvbmVyb3ctPnR5cGUgICAgICAgPSAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpID8gMiA6IDA7CiRvbmVyb3ctPmNvbG9yICAgICAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLCAnYmx1ZScpOwokb25lcm93LT5tYXJrZXIgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsICcqJyk7CiRvbmVyb3ctPnJlcXVpcmVkICAgPSAxOwokb25lcm93LT5wcm9tcHQgICAgID0gJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCk7CiRvbmVyb3ctPnZhbHVlICAgICAgPSAkdmFsOwokb25lcm93LT5pbnB1dF9pZCAgID0gJ21hbXNfaW5wdXRfdXNlcm5hbWUnOwokb25lcm93LT5pbnB1dF9uYW1lID0gJGlkIC4gJG9uZXJvdy0+aW5wdXRfaWQ7CiRvbmVyb3ctPmxlbmd0aCAgICAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLCA0MCk7CiRvbmVyb3ctPm1heGxlbmd0aCAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJywgODApOwokb25lcm93LT5yZWFkb25seSAgID0gKCEkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VVU0VSTkFNRSkpOwoKJHRtcCA9ICdkaXNhYmxlZD0iZGlzYWJsZWQiJzsKCmlmKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVVTRVJOQU1FKSkgeyAkdG1wID0gJyc7IH0KCiRvbmVyb3ctPmNvbnRyb2wgICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoCiAgJGlkLCAnbWFtc19pbnB1dF91c2VybmFtZScsICR2YWwsICRvbmVyb3ctPmxlbmd0aCwgJG9uZXJvdy0+bWF4bGVuZ3RoLCAkdG1wCik7Cgokcm93YXJyYXlbJG9uZXJvdy0+bmFtZV0gPSAkb25lcm93OwoKaWYoJGNhbl9jaGFuZ2VwYXNzd2QpCnsKICAvLyBhbmQgcGFzc3dvcmQKICAkdmFsID0gJyc7CiAgaWYoaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddKSkKICB7CiAgICAkdmFsID0gJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddOwogIH0KICAKICAkb25lcm93ICAgICAgICAgICA9IG5ldyBTdGRDbGFzcygpOwogICRvbmVyb3ctPm5hbWUgICAgID0gJ3Bhc3N3b3JkJzsKICAkb25lcm93LT50eXBlICAgICA9ICdwYXNzd29yZCc7CiAgJG9uZXJvdy0+Y29sb3IgICAgPSBOVUxMOwogICRvbmVyb3ctPnJlcXVpcmVkID0gKCR1aW5mb1snZm9yY2VfbmV3cHcnXSkgPyAxIDogMDsKICAkb25lcm93LT5tYXJrZXIgICA9IE5VTEw7CiAgCiAgaWYoJG9uZXJvdy0+cmVxdWlyZWQpCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwogIH0KICAKICAkb25lcm93LT5wcm9tcHQgICAgICAgICAgPSAkdGhpcy0+TGFuZygncGFzc3dvcmQnKTsKICAkb25lcm93LT5jb250cm9sICAgICAgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRQYXNzd29yZCgKICAgICRpZCwgJ21hbXNfaW5wdXRfcGFzc3dvcmQnLCAkdmFsLAogICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyksCiAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykKICApOwogIAogICRvbmVyb3ctPmFkZHRleHQgICAgICAgICA9ICR0aGlzLT5MYW5nKCdpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCcpOwogICRvbmVyb3ctPnZhbHVlICAgICAgICAgICA9IE5VTEw7CiAgJG9uZXJvdy0+aW5wdXRfaWQgICAgICAgID0gJ21hbXNfaW5wdXRfcGFzc3dvcmQnOwogICRvbmVyb3ctPmlucHV0X25hbWUgICAgICA9ICRpZCAuICRvbmVyb3ctPmlucHV0X2lkOwogICRvbmVyb3ctPmxlbmd0aCAgICAgICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcpOwogICRvbmVyb3ctPm1heGxlbmd0aCAgICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKTsKICAkb25lcm93LT5yZWFkb25seSAgICAgICAgPSBGQUxTRTsKICAkcm93YXJyYXlbJG9uZXJvdy0+bmFtZV0gPSAkb25lcm93OwogIAogIC8vIGFuZCBtYWtlIGhpbSByZXBlYXQgdGhlIHBhc3N3b3JkCiAgJHZhbCA9ICcnOwogIAogIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSkpCiAgewogICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXTsKICB9CiAgCiAgJG9uZXJvdyAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKICAkb25lcm93LT5uYW1lICAgICA9ICdyZXBlYXRfcGFzc3dvcmQnOwogICRvbmVyb3ctPnR5cGUgICAgID0gJ3Bhc3N3b3JkJzsKICAkb25lcm93LT5jb2xvciAgICA9IE5VTEw7CiAgJG9uZXJvdy0+bWFya2VyICAgPSBOVUxMOwogICRvbmVyb3ctPnJlcXVpcmVkID0gKCR1aW5mb1snZm9yY2VfbmV3cHcnXSkgPyAxIDogMDsKICAKICBpZigkb25lcm93LT5yZXF1aXJlZCkKICB7CiAgICAkb25lcm93LT5tYXJrZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfbWFya2VyJywgJyonKTsKICAgICRvbmVyb3ctPmNvbG9yICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsICdibHVlJyk7CiAgfQogIAogICRvbmVyb3ctPnByb21wdCAgICAgICAgICA9ICR0aGlzLT5MYW5nKCdyZXBlYXRwYXNzd29yZCcpOwogICRvbmVyb3ctPmNvbnRyb2wgICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFBhc3N3b3JkKAogICAgJGlkLCAnbWFtc19pbnB1dF9yZXBlYXRwYXNzd29yZCcsICR2YWwsCiAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSwKICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKQogICk7CiAgCiAgJG9uZXJvdy0+YWRkdGV4dCAgICAgICAgID0gJHRoaXMtPkxhbmcoJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJyk7CiAgJG9uZXJvdy0+dmFsdWUgICAgICAgICAgID0gTlVMTDsKICAkb25lcm93LT5pbnB1dF9pZCAgICAgICAgPSAnbWFtc19pbnB1dF9yZXBlYXRwYXNzd29yZCc7CiAgJG9uZXJvdy0+aW5wdXRfbmFtZSAgICAgID0gJGlkIC4gJG9uZXJvdy0+aW5wdXRfaWQ7CiAgJG9uZXJvdy0+bGVuZ3RoICAgICAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyk7CiAgJG9uZXJvdy0+bWF4bGVuZ3RoICAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpOwogICRvbmVyb3ctPnJlYWRvbmx5ICAgICAgICA9IEZBTFNFOwogICRyb3dhcnJheVskb25lcm93LT5uYW1lXSA9ICRvbmVyb3c7Cn0KCiRlbmNyeXB0X2NvbG9yICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfY29sb3InLCAneWVsbG93Jyk7CiRlbmNyeXB0X21hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfbWFya2VyJywgJ15eJyk7CgoKLy8gbm93IGZvciB0aGUgcHJvcGVydGllcwpmb3JlYWNoKCRwcm9wZXJ0aWVzIGFzICRwcm9wKQp7CiAgLy8gZ2V0IHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uCiAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCRwcm9wWyduYW1lJ10pOwogIAogIGlmKCRwcm9wWydyZXF1aXJlZCddID09IDMpe2NvbnRpbnVlO30gLy8gaGlkZGVuLgogIAogICRvbmVyb3cgICAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKICAkb25lcm93LT5uYW1lICAgICAgID0gJHByb3BbJ25hbWUnXTsKICAkb25lcm93LT5wcm9wbmFtZSAgID0gJHByb3BbJ25hbWUnXTsKICAkb25lcm93LT5pbnB1dF9pZCAgID0gJ21hbXNfaW5wdXRfJyAuICRvbmVyb3ctPnByb3BuYW1lOwogICRvbmVyb3ctPmlucHV0X25hbWUgPSAkaWQgLiAkb25lcm93LT5pbnB1dF9pZDsKICAkdmFsICAgICAgICAgICAgICAgID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BbJ25hbWUnXSwgJHVpZCk7CiAgCiAgaWYoaXNzZXQoJHBhcmFtc1skb25lcm93LT5pbnB1dF9pZF0pKQogIHsKICAgICR2YWwgPSAkcGFyYW1zWyRvbmVyb3ctPmlucHV0X2lkXTsKICB9CiAgCiAgLy8gYmVnaW4gYnVpbGRpbmcgdGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIGRhdGEgZm9yIGJ1aWxkaW5nIHRoZSBmaWVsZHMuCiAgJG9uZXJvdy0+dHlwZSAgICAgID0gJGRlZm5bJ3R5cGUnXTsKICAkb25lcm93LT5lbmNyeXB0ZWQgPSAkZGVmblsnZW5jcnlwdCddOwogICRvbmVyb3ctPnJlcXVpcmVkICA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSAyKTsKICAkb25lcm93LT5yZWFkb25seSAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gNCk7CiAgJG9uZXJvdy0+c3RhdHVzICAgID0gJHByb3BbJ3JlcXVpcmVkJ107CiAgJG9uZXJvdy0+Y29sb3IgICAgID0gTlVMTDsKICAkb25lcm93LT5tYXJrZXIgICAgPSBOVUxMOzsKICAkb25lcm93LT52YWx1ZSAgICAgPSAkdmFsOwogICRvbmVyb3ctPmxlbmd0aCAgICA9ICRkZWZuWydsZW5ndGgnXTsKICAkb25lcm93LT5tYXhsZW5ndGggPSAkZGVmblsnbWF4bGVuZ3RoJ107CiAgJG9uZXJvdy0+cHJvbXB0ICAgID0gJGRlZm5bJ3Byb21wdCddOwogIAogIGlmKCRkZWZuWydlbmNyeXB0J10pCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJGVuY3J5cHRfY29sb3I7CiAgICAkb25lcm93LT5tYXJrZXIgPSAkZW5jcnlwdF9tYXJrZXI7CiAgfQogIGVsc2UgaWYoJG9uZXJvdy0+cmVxdWlyZWQpCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwogIH0KICAKICBzd2l0Y2goJGRlZm5bJ3R5cGUnXSkKICB7CiAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgJG9uZXJvdy0+Y29udHJvbCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkb25lcm93LT5pbnB1dF9uYW1lLCAkdmFsLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSAxOiAvLyBjaGVja2JveAogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgMCk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgLj0gXE1BTVNcUlJVdGlsczo6bXlDcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgMSwgJHZhbCk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICR2YWwsICRkZWZuWydsZW5ndGgnXSwgJGRlZm5bJ21heGxlbmd0aCddKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICRmbGFnID0gRkFMU0U7CiAgICAgIGlmKGlzc2V0KCRkZWZuWydhdHRyaWJzJ10pICYmICFlbXB0eSgkZGVmblsnYXR0cmlicyddKSkKICAgICAgewogICAgICAgICRhdHRyaWJzID0gdW5zZXJpYWxpemUoJGRlZm5bJ2F0dHJpYnMnXSk7CiAgICAgICAgaWYoaXNfYXJyYXkoJGF0dHJpYnMpICYmIGlzc2V0KCRhdHRyaWJzWyd3eXNpd3lnJ10pKQogICAgICAgIHsKICAgICAgICAgICRmbGFnID0gJGF0dHJpYnNbJ3d5c2l3eWcnXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgJG9uZXJvdy0+d3lzaXd5ZyA9ICRmbGFnOwogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZVRleHRBcmVhKCRmbGFnLCAkaWQsICR2YWwsICRvbmVyb3ctPmlucHV0X25hbWUpOwogICAgYnJlYWs7CiAgICAKICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgJG9wdHMgICAgICAgICAgICA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAkb25lcm93LT5vcHRpb25zID0gYXJyYXlfZmxpcCgkb3B0cyk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICRvcHRzLCAtMSwgJHZhbCk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAkb3B0cyAgICAgICAgICAgICA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAkb25lcm93LT5vcHRpb25zICA9IGFycmF5X2ZsaXAoJG9wdHMpOwogICAgICAKICAgICAgIyBqdXN0IGluIGNhc2UsIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3QKICAgICAgaWYoaXNfYXJyYXkoJHZhbCkpIHsgJHZhbCA9IGltcGxvZGUoJywnLCAkdmFsKTsgfQogICAgICAKICAgICAgJG9uZXJvdy0+c2VsZWN0ZWQgPSBleHBsb2RlKCcsJywgJHZhbCk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgID0gJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgKICAgICAgICAkaWQsICRvbmVyb3ctPmlucHV0X25hbWUgLiAnW10nLCAkb3B0cywgJG9uZXJvdy0+c2VsZWN0ZWQsICRkZWZuWydsZW5ndGgnXQogICAgICApOwogICAgYnJlYWs7CiAgICAKICAgIGNhc2UgNjogLy8gaW1hZ2UKICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAkZGVzdERpcjEgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSAuIERJUkVDVE9SWV9TRVBBUkFUT1I7CiAgICAgICRkZXN0RGlyMSAuPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdtYW1zJykgLiBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAkZGVzdERpcjIgPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gJy8nOwogICAgICAkZGVzdERpcjIgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpIC4gJy8nOwogICAgICAkZmlsZTEgICAgPSAkZGVzdERpcjEgLiAkdmFsOwogICAgICAkZmlsZTIgICAgPSAkZGVzdERpcjIgLiAkdmFsOwogICAgICAKICAgICAgaWYoaXNfcmVhZGFibGUoJGZpbGUxKSAmJiBpc19maWxlKCRmaWxlMSkpCiAgICAgIHsKICAgICAgICAkb25lcm93LT5pbWFnZV91cmwgPSAkZmlsZTI7CiAgICAgICAgJG9uZXJvdy0+aW1hZ2UgICAgID0gJzxpbWcgc3JjPSInIC4gJGZpbGUyIC4gJyIgYWx0PSInIC4gJHZhbCAuICciLz4nOwogICAgICAgIGlmKCEkb25lcm93LT5yZXF1aXJlZCkKICAgICAgICB7CiAgICAgICAgICAkb25lcm93LT5wcm9tcHQyICAgICA9ICR0aGlzLT5MYW5nKCdwcm9tcHRfY2xlYXInKTsKICAgICAgICAgICRvbmVyb3ctPmlucHV0X25hbWUyID0gJG9uZXJvdy0+aW5wdXRfbmFtZSAuICdfY2xlYXInOwogICAgICAgICAgJG9uZXJvdy0+Y29udHJvbDIgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRvbmVyb3ctPmlucHV0X25hbWUgLiAnX2NsZWFyJywgJ2NsZWFyJywgJycpOwogICAgICAgIH0KICAgICAgfQogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgJHZhbCkgLgogICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsICdtYW1zXycgLiAkb25lcm93LT5pbnB1dF9uYW1lLCAnJywgJGRlZm5bJ2xlbmd0aCddKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlICc3JzogLy8gcmFkaW8gZ3JvdXAKICAgICAgJG9wdHMgICAgICAgICAgICA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAkb25lcm93LT5vcHRpb25zID0gYXJyYXlfZmxpcCgkb3B0cyk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXRSYWRpb0dyb3VwKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgJG9wdHMsICR2YWwsICcnLCAnPGJyLz4nKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlICc4JzogLy8gZGF0ZQogICAgICAkcGFybXMgICAgICAgICAgID0gYXJyYXkoKTsKICAgICAgJHBhcm1zWydwcmVmaXgnXSA9ICRvbmVyb3ctPmlucHV0X2lkOwogICAgICBpZigkdmFsKQogICAgICB7CiAgICAgICAgJHBhcm1zWyd0aW1lJ10gPSAkdmFsOwogICAgICB9CiAgICAgICRwYXJtc1snc3RhcnRfeWVhciddID0gIi01IjsKICAgICAgJHBhcm1zWydlbmRfeWVhciddICAgPSAiKzEwIjsKICAgICAgCiAgICAgIGlmKGlzc2V0KCRkZWZuWydhdHRyaWJzJ10pICYmICFlbXB0eSgkZGVmblsnYXR0cmlicyddKSkKICAgICAgewogICAgICAgICRhdHRyaWJzID0gdW5zZXJpYWxpemUoJGRlZm5bJ2F0dHJpYnMnXSk7CiAgICAgICAgaWYoaXNzZXQoJGF0dHJpYnNbJ3N0YXJ0eWVhciddKSAmJiAhZW1wdHkoJGF0dHJpYnNbJ3N0YXJ0eWVhciddKSkKICAgICAgICB7CiAgICAgICAgICAkcGFybXNbJ3N0YXJ0X3llYXInXSA9ICRhdHRyaWJzWydzdGFydHllYXInXTsKICAgICAgICB9CiAgICAgICAgaWYoaXNzZXQoJGF0dHJpYnNbJ2VuZHllYXInXSkgJiYgIWVtcHR5KCRhdHRyaWJzWydlbmR5ZWFyJ10pKQogICAgICAgIHsKICAgICAgICAgICRwYXJtc1snZW5kX3llYXInXSA9ICRhdHRyaWJzWydlbmR5ZWFyJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAkcmVsX3RvX2Fic195ZWFyID0gZnVuY3Rpb24oJHN0cil7CiAgICAgICAgaWYoc3RhcnRzd2l0aCgkc3RyLCAnLScpKQogICAgICAgIHsKICAgICAgICAgICR2ICAgID0gKGludClzdWJzdHIoJHN0ciwgMSk7CiAgICAgICAgICAkeWVhciA9IGRhdGUoJ1knKSAtICR2OwogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHllYXI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoc3RhcnRzd2l0aCgkc3RyLCAnKycpKQogICAgICAgIHsKICAgICAgICAgICR2ICAgID0gKGludClzdWJzdHIoJHN0ciwgMSk7CiAgICAgICAgICAkeWVhciA9IGRhdGUoJ1knKSArICR2OwogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHllYXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAoaW50KSRzdHI7CiAgICAgIH07CiAgICAgIAogICAgICAkc3RyID0gJ3todG1sX3NlbGVjdF9kYXRlICc7CiAgICAgIGZvcmVhY2goJHBhcm1zIGFzICRrZXkgPT4gJHZhbHVlKQogICAgICB7CiAgICAgICAgJHN0ciAuPSAka2V5IC4gJz0iJyAuICR2YWx1ZSAuICciICc7CiAgICAgIH0KICAgICAgJHN0ciAgICAgICAgICAgICAgICAuPSAnfSc7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgICAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHN0cik7CiAgICAgICRvbmVyb3ctPnN0YXJ0X3llYXIgPSAkcmVsX3RvX2Fic195ZWFyKCRwYXJtc1snc3RhcnRfeWVhciddKTsKICAgICAgJG9uZXJvdy0+ZW5kX3llYXIgICA9ICRyZWxfdG9fYWJzX3llYXIoJHBhcm1zWydlbmRfeWVhciddKTsKICAgIAogICAgYnJlYWs7CiAgfQogICRyb3dhcnJheVskcHJvcFsnbmFtZSddXSA9ICRvbmVyb3c7Cn0KCi8vIGZpbGwgaW4gdGhlIHZhcmlhYmxlcyBmb3IgdGhlIHRlbXBsYXRlCiR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywgJ2NoYW5nZXNldHRpbmdzdGVtcGxhdGUnLCAnTUFNUzo6Y2hzZXR0aW5ncyBmb3JtJyk7CiR0cGwgICAgICAgICA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwoKaWYoaXNzZXQoJHBhcmFtc1snZXJyb3InXSkpCnsKICAkdHBsLT5hc3NpZ24oJ2Vycm9yJywgJHBhcmFtc1snZXJyb3InXSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10pOwp9CgokdHBsLT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3VzZXJfc2V0dGluZ3MnKSk7IC8vIGRlcHJlY2F0ZWQKJHRwbC0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoJGlkLCAnZG9fdXNlcmNoYW5nZXNldHRpbmdzJywgJHJldHVybmlkKSk7CiR0cGwtPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokdHBsLT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdtYW1zX3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOyAvLyBkZXByZWNhdGVkCgppZihpc3NldCgkcGFyYW1zWydyZXR1cm50byddKSkKewogICR0cGwtPmFzc2lnbignaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ21hbXNfcmV0dXJudG8nLCAkcGFyYW1zWydyZXR1cm50byddKSk7Cn0KCiR0cGwtPmFzc2lnbignZm9ybWlkJywgJGlkKTsKJHRwbC0+YXNzaWduKCdjb250cm9scycsICRyb3dhcnJheSk7CiR0cGwtPmFzc2lnbignY29udHJvbGNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiR0cGwtPmRpc3BsYXkoKTsKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBhbGxvdyBtYW5hZ2VtZW50IG9mIGZyb250ZW5kCiMgIHVzZXJzLCBhbmQgdGhlaXIgbG9naW4gcHJvY2VzcyB3aXRoaW4gYSBDTVMgTWFkZSBTaW1wbGUgcG93ZXJlZAojICB3ZWJzaXRlLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEEgZm9yayBvZjoKIwojIE1vZHVsZTogRnJvbnRFbmRVc2VycyAoYykgMjAwOC0yMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBWaXNpdCB0aGUgQ01TTVMgSG9tZXBhZ2UgYXQ6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLyBETyBUSEUgQUNUSU9OCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCmlmKCEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygpKQp7CiAgZWNobyAiQnJlYWtpbmcgYW4gZW50cnksIGFyZSB3ZT8iOwogIAogIHJldHVybjsKfQoKJGN1cnJlbnRfdGFiID0gJHBhcmFtc1sneHRfYWN0aXZldGFiJ10gPz8gJ3VzZXJzJzsKCiAgLy8gdGhlIHRhYnMKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CgppZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzJykgKQp7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd1c2VycycsICR0aGlzLT5MYW5nKCd1c2VycycpLCAkY3VycmVudF90YWIgPT0gJ3VzZXJzJyk7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd1c2VyaGlzdG9yeScsICR0aGlzLT5MYW5nKCd1c2VyaGlzdG9yeScpLCAkY3VycmVudF90YWIgPT0gJ3VzZXJoaXN0b3J5Jyk7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdhZG1pbicsICR0aGlzLT5MYW5nKCdhZG1pbicpLCAkY3VycmVudF90YWIgPT0gJ2FkbWluJyk7Cn0KaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3Byb3BlcnRpZXMnKSkKewogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncHJvcGVydGllcycsICR0aGlzLT5MYW5nKCd1c2VyX3Byb3BlcnRpZXMnKSwgJGN1cnJlbnRfdGFiID09ICdwcm9wZXJ0aWVzJyk7Cn0KaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdncm91cHMnKSApCnsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2dyb3VwcycsICR0aGlzLT5MYW5nKCdncm91cHMnKSwgJGN1cnJlbnRfdGFiID09ICdncm91cHMnKTsKfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgovLyBUaGUgY29udGVudCBvZiB0aGUgdGFicwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCmlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpKQp7CiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3VzZXJzJywgJHBhcmFtcyk7CiAgaW5jbHVkZShfX0RJUl9fIC4gJy9mdW5jdGlvbi5hZG1pbl91c2Vyc3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICAKICBlY2hvICR0aGlzLT5TdGFydFRhYigndXNlcmhpc3RvcnknLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2FjdGlvbi51c2VyaGlzdG9yeS5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICAKICBlY2hvICR0aGlzLT5TdGFydFRhYignYWRtaW4nLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmFkbWluX2FkbWludGFiLnBocCcpOwogIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncHJvcGVydGllcycpKQp7CiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3Byb3BlcnRpZXMnLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmFkbWluX3Byb3BlcnRpZXN0YWIucGhwJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdncm91cHMnKSkKewogIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdncm91cHMnLCAkcGFyYW1zKTsKICBpbmNsdWRlKF9fRElSX18gLiAnL2Z1bmN0aW9uLmFkbWluX2dyb3Vwc3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.do_addgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKCiRnaWQgPSBmYWxzZTsKaWYoIGlzc2V0KCRwYXJhbXNbJ2dyb3VwX2lkJ10pICkgJGdpZCA9IChpbnQpJHBhcmFtc1snZ3JvdXBfaWQnXTsKCiRncm91cG5hbWUgPSAnJzsKJGdyb3VwZGVzYyA9ICcnOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2dyb3VwbmFtZSddICkgKSAkZ3JvdXBuYW1lID0gdHJpbSgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSk7CmlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10gKSApICRncm91cGRlc2MgPSB0cmltKCRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddKTsKCmlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSApIHsKICAvLyBtYWtlIHN1cmUgdGhlIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBpbgogIGlmKCAkZ3JvdXBuYW1lID09ICcnIHx8ICRncm91cGRlc2MgPT0gJycgKSB7CiAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgcmV0dXJuOwogIH0KCiAgLy8gbWFrZSBzdXJlIHRoZSBncm91cCBuYW1lIGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogICR0bXAgPSAkdGhpcy0+R2V0R3JvdXBJRCggJGdyb3VwbmFtZSApOwogIAogIGlmKCAkdG1wICE9ICRnaWQgJiYgJHRtcCAhPSAnLTEnICkgewogICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOwogICAgJHBhcmFtc1snZXJyb3InXSA9ICcxJzsKICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9ncm91cGV4aXN0cycpOwogICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICByZXR1cm47CiAgfQp9CgovLyBtYWtlIHN1cmUgbm90IGFsbCBwcm9wZXJ0aWVzIGFyZSBvZmYuCi8vIGFuZCB0aGF0IHdlJ3JlIG5vdCBzZXR0aW5nIGEgbG9zdHVuIGZsYWcgZm9yIGEgaGlkZGVuIG9yIG9wdGlvbmFsIGZpZWxkLgppZiggJHBhcmFtc1snaW5wdXRfbmFtZSddICYmICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTKSApCnsKICAgICRyZWxuYWRkZWQgPSAwOwogICAgZm9yKCRpID0gMCwgJGlNYXggPSBjb3VudCgkcGFyYW1zWydpbnB1dF9uYW1lJ10pOyAkaSA8ICRpTWF4OyAkaSsrICkKICAgIHsKICAgICAgICBpZiggJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV0gIT0gMCApICRyZWxuYWRkZWQrKzsKICAgICAgICBpZiggJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV0gIT0gMiApIHsKICAgICAgICAgICAgLy8gaXQncyBub3QgYSByZXF1aXJlZCBmaWVsZC4uLi4gc28gY2FuJ3QgYmUgdXNlZCBpbiBsb3N0dW4KICAgICAgICAgICAgJHN0ciA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9sb3N0dW5fJy4kc3RyXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAgICAgICAgICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgICAgICAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub25yZXF1aXJlZCcpOwogICAgICAgICAgICAgICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgICMgd2lsbCBub3QgZW5mb3JjZSByZWxhdGlvbnMgYW55bW9yZSAoSk0pCi8vICAgIGlmKCAkcmVsbmFkZGVkID09IDAgKSB7Ci8vICAgICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7Ci8vICAgICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwovLyAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX25vcmVsYXRpb25zJyk7Ci8vICAgICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKLy8gICAgICAgIHJldHVybjsKLy8gICAgfQp9CgovLyB3ZSdyZSBjbGVhciB0byBhZGQgb3IgdXBkYXRlCmlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSApIHsKICBpZiggJGdpZCAhPT0gZmFsc2UgKSB7CiAgICAkcmV0ID0gJHRoaXMtPlNldEdyb3VwKCAkZ2lkLCAkZ3JvdXBuYW1lLCAkZ3JvdXBkZXNjICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApIHsKICAgICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOwogICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkcmV0WzFdOwogICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKICAgICAgcmV0dXJuOwogICAgfQogIH0KICBlbHNlIHsKICAgICRyZXQgPSAkdGhpcy0+QWRkR3JvdXAoICRncm91cG5hbWUsICRncm91cGRlc2MgKTsKICAgIGlmKCAkcmV0WzBdID09IEZBTFNFICkgewogICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CiAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXRbMV07CiAgICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgICByZXR1cm47CiAgICB9CiAgICAkZ2lkID0gJHJldFsxXTsKICB9Cn0KCmlmKCAkcGFyYW1zWydpbnB1dF9uYW1lJ10gJiYgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfRURJVEdST1VQUFJPUFMpICkgewogIC8vIGFsc28gYWRkIHRoZSBwcm9wZXJ0eSBjaG9pY2VzCiAgJHRoaXMtPkRlbGV0ZUFsbEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICBmb3IoJGkgPSAwLCAkaU1heCA9IGNvdW50KCRwYXJhbXNbJ2lucHV0X25hbWUnXSk7ICRpIDwgJGlNYXg7ICRpKysgKSB7CiAgICAkcHJvcG5hbWUgPSAnJzsKICAgICRzb3J0b3JkZXIgPSAnJzsKICAgICRsb3N0dW4gPSAtMTsKICAgICRyZXF1aXJlZCA9IDA7CgogICAgJHByb3BuYW1lID0gJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpXTsKICAgICRyZXF1aXJlZCA9ICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkJ11bJGldOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9sb3N0dW5fJy4kcHJvcG5hbWVdICkgKSB7CiAgICAgICRsb3N0dW4gPSAxOwogICAgfQoKICAgIGlmKCAkcmVxdWlyZWQgIT0gMCAmJiAkcHJvcG5hbWUgIT0gJycpIHsKICAgICAgJHJlcyA9ICR0aGlzLT5BZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRnaWQsICRwcm9wbmFtZSwgJGksICRsb3N0dW4sICRyZXF1aXJlZCApOwogICAgfQogIH0KfQoKLy8gc2VuZCBhbiBldmVudAokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ25hbWUnXSA9ICRncm91cG5hbWU7CiRwYXJtc1snZGVzY3JpcHRpb24nXSA9ICRncm91cGRlc2M7CiRwYXJtc1snaWQnXSA9ICRnaWQ7CiRzdHIgPSAnT25DcmVhdGVHcm91cCc7CmlmKCBpc3NldCgkcGFyYW1zWydncm91cF9pZCddKSApIHsKICAkc3RyID0gJ09uVXBkYXRlR3JvdXAnOwp9ClxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6Jy4kc3RyLCRwYXJtcyk7CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdncm91cHMnICk7Ci8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_admintasks.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnNuZ3JvdXBzJykgKSByZXR1cm47CgppZiggaXNzZXQoICRwYXJhbXNbJ2J1dHRvbl9leHBvcnR1c2VyaGlzdG9yeSddICkgKSB7CiAgaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fZXhwb3J0dXNlcmhpc3RvcnkucGhwJyk7Cn0KZWxzZSBpZiggaXNzZXQoICRwYXJhbXNbJ2J1dHRvbl9jbGVhcnVzZXJoaXN0b3J5J10gKSApIHsKICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9jbGVhcnVzZXJoaXN0b3J5LnBocCcpOwp9CiAgCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/action.do_deletegroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3JlbW92ZWdyb3VwcycgKSApIHJldHVybjsKCmlmICghaXNzZXQgKCRwYXJhbXNbJ2dyb3VwX2lkJ10pIHx8ICRwYXJhbXNbJ2dyb3VwX2lkJ10gPT0gIiIpIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgcmV0dXJuOwp9CgokZ3JvdXAgPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCAkcGFyYW1zWydncm91cF9pZCddICk7CmlmKCAhaXNzZXQoJGdyb3VwWydpZCddKSAmJiAkZ3JvdXBbMF0gPT0gRkFMU0UgKSB7CiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZ3JvdXBbMV0gKTsKICAgIHJldHVybjsKfQoKJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeSgpOwokcXVlcnktPmFkZF9hbmRfb3B0KG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQSUQsJGdyb3VwWydpZCddKTsKJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CmlmKCAkcnMtPmdldF9mb3VuZF9yb3dzKCkgPiAwICkgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcgKCdlcnJvcl9ub3RlbXB0eWdyb3VwJykpOwogICAgcmV0dXJuOwp9CgokcmV0ID0gJHRoaXMtPkRlbGV0ZUdyb3VwRnVsbCggJHBhcmFtc1snZ3JvdXBfaWQnXSApOwppZiggJHJldFswXSA9PSBGQUxTRSApIHsKICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZ3JvdXBbMV0gKTsKICByZXR1cm47Cn0KCiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1snaWQnXSA9ICRwYXJhbXNbJ2dyb3VwX2lkJ107CiRwYXJtc1snbmFtZSddID0gJGdyb3VwWydncm91cG5hbWUnXTsKXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPbkRlbGV0ZUdyb3VwJywkcGFybXMpOwoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZ3JvdXBzJyApOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.do_deleteuser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3JlbW92ZXVzZXJzJyApICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKCiR1c2VyX2lkID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VzZXJfaWQnKTsKaWYoICR1c2VyX2lkIDwgMSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgIHJldHVybjsKfQoKJHVzZXIgPSAkdGhpcy0+R2V0VXNlckluZm8oICRwYXJhbXNbJ3VzZXJfaWQnXSApOwppZiggIWlzX2FycmF5KCR1c2VyKSB8fCAkdXNlclswXSA9PSBGQUxTRSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgIHJldHVybjsKfQoKLy8gR2V0IGFsbCBvZiB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbnMsIGlmIHRoZXkncmUgb2YgdHlwZSA2Ci8vIGFuZCB0aGUgcHJvcGVydHkgaXMgbm90IGVtcHR5LCB0aGVuIHdlIG1heQovLyBoYXZlIHRvIGRlbGV0ZSBhIGZpbGUgYXMgd2VsbC4KJHJldCA9ICR0aGlzLT5EZWxldGVVc2VyRnVsbCggJHBhcmFtc1sndXNlcl9pZCddICk7CmlmKCAkcmV0WzBdID09IEZBTFNFICkgewogICAgYXVkaXQoJHVzZXJfaWQsJ01BTVMnLCdGYWlsZWQgdG8gZGVsZXRlIHVzZXIgKGZvcmVpZ24ga2V5IHByb2JsZW0gPz8pJyk7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJkZWxldGUnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgcmV0dXJuOwp9CgovLyBzZW5kIGFuIGV2ZW50CiRwYXJtc1sndWlkJ10gPSAkdXNlcl9pZDsKJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJbMV1bJ3VzZXJuYW1lJ107CgovLyBhbmQgbG9nIGl0CmF1ZGl0KCAnJywgJHRoaXMtPkdldE5hbWUoKSwnRGVsZXRlZCBVc2VyICcuJHBhcmFtc1sndXNlcl9pZCddKTsKCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ3VzZXJzJyApOwoKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.do_setprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgeyBleGl0OyB9CgppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgeyByZXR1cm47IH0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3JlbW92ZWFsbCddKSkKewogICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy01IHllYXJzJyk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnLCAnJywgJ2FkbWluX3NldHRpbmdzJyk7Cn0KZWxzZSBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9yZW1vdmUxd2VlayddKSkKewogICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIHdlZWsnKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcmVmcycsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsKfQplbHNlIGlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3JlbW92ZTFtb250aCddKSkKewogICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIG1vbnRoJyk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnLCAnJywgJ2FkbWluX3NldHRpbmdzJyk7Cn0KZWxzZSBpZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcmVmcycsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsKfQoKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhdXRvX2NyZWF0ZV91bmtub3duJywoaW50KSRwYXJhbXNbJ2F1dG9fY3JlYXRlX3Vua25vd24nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsdHJpbSgkcGFyYW1zWydhdXRoX21vZHVsZSddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfYWdlJywgXHh0X3BhcmFtOjpnZXRfaW50KCAkcGFyYW1zLCAnY2xlYXJoaXN0b3J5X2FnZScpICk7CgokcmFuZG9tdXNlcm5hbWUgPSAwOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3JhbmRvbXVzZXJuYW1lJ10pICkgJHJhbmRvbXVzZXJuYW1lID0gKGludCkkcGFyYW1zWydpbnB1dF9yYW5kb211c2VybmFtZSddOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX3JhbmRvbXVzZXJuYW1lJywkcmFuZG9tdXNlcm5hbWUpOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2V4cGlyZWFnZSddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJywoaW50KSRwYXJhbXNbJ2lucHV0X2V4cGlyZWFnZSddKTsKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycsICRwYXJhbXNbJ2lucHV0X3Nlc3Npb250aW1lb3V0J10pOwoKJGNvb2tpZV9rZWVwYWxpdmUgPSAwOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2Nvb2tpZWtlZXBhbGl2ZSddICkgKSAkY29va2llX2tlZXBhbGl2ZSA9ICRwYXJhbXNbJ2lucHV0X2Nvb2tpZWtlZXBhbGl2ZSddOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsJGNvb2tpZV9rZWVwYWxpdmUpOwppZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfc2lnbmluX2J1dHRvbiddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzaWduaW5fYnV0dG9uJywgJHBhcmFtc1snaW5wdXRfc2lnbmluX2J1dHRvbiddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycsKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2FsbG93X3JlcGVhdGVkX2xvZ2lucyddKT8kcGFyYW1zWydpbnB1dF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXTowKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywkcGFyYW1zWydpbnB1dF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRoJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywkcGFyYW1zWydpbnB1dF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnXSk7CiRtYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zID0gMDsKaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJ10gKSApICRtYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zID0gJHBhcmFtc1snaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsJG1hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMpOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2lucHV0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSkgJiYgJHBhcmFtc1snaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddPT0xKSAgewogICAgLy8gdXNpbmcgRkVVc2VyLXNwZWNpZmljIHBlcm1pc3Npb25zLCBzbyBjcmVhdGUgdGhlbSBpZiBuZWNlc3NhcnkKICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBVc2VycycsJ01vZGlmeSBNQU1TIFVzZXJzJyk7CiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgR3JvdXBzJywnTW9kaWZ5IE1BTVMgVXNlciBHcm91cHMnKTsKICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBNQU1TVXNlclByb3BzJywnTW9kaWZ5IE1BTVMgVXNlciBQcm9wZXJ0aWVzJyk7Cn0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF90aW1lcycsdHJpbSgkcGFyYW1zWydmb3JjZWxvZ291dF90aW1lcyddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywoaW50KSRwYXJhbXNbJ2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmV1c2Vyc19pbnRlcnZhbCcsKGludCkkcGFyYW1zWydleHBpcmV1c2Vyc19pbnRlcnZhbCddKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ3BhZ2V0eXBlX2dyb3VwcyddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnLGltcGxvZGUoJywnLCRwYXJhbXNbJ3BhZ2V0eXBlX2dyb3VwcyddKSk7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcmVmcycpOwokdGhpcy0+U2V0Q3VycmVudEFjdGlvbignYWRtaW5fc2V0dGluZ3MnKTsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_userchangesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgeyBleGl0OyB9CgokcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ21hbXNfcmV0dXJudG8nKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfY2FuY2VsJ10pKQp7CiAgaWYoJHJldHVybnRvKQogIHsKICAgICRyZXR1cm5pZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRyZXR1cm50bywgJHJldHVybmlkKTsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybmlkKTsKICB9Cn0KCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwoKaWYoJHVpZCA8IDEpCnsKICAkX1NFU1NJT05bJ21hbXNjcyddWydlcnJvcmlkJ10gPSAzOwogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yJ10gPSAnbm90X2xvZ2dlZF9pbl9vcl9zZXNzaW9uX2V4cGlyZWQnOwogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yX21lc3NhZ2UnXSA9ICdTZXNzaW9uIGV4cGlyZWQuIFlvdSBhcmUgbm90IGxvZ2dlZCBpbi4nOwogIC8vIHVzZXIgaXNuJ3QgbG9nZ2VkIGluCiAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3Jfbm90bG9nZ2VkaW4nKSk7CiAgCiAgcmV0dXJuOwp9CiRyZXN1bHQgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CmlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCnsKICAvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHJlc3VsdFsxXSk7CiAgCiAgcmV0dXJuOwp9CiR1aW5mbyA9ICRyZXN1bHRbMV07CgokdXNlcm5hbWUgPSAkdWluZm9bJ3VzZXJuYW1lJ107CiRwYXNzd29yZCA9ICcnOwoKY2xhc3MgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IgZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQoKdHJ5CnsKICBpZighXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSkKICB7CiAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykpOwogIH0KICAKICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6OkJlZm9yZUNoYW5nZVNldHRpbmdzJywgWyd1aWQnID0+ICR1aWRdKTsKICAKICAvLyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGhpcyB1c2VybmFtZQogICRjb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgaWYoJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfQ0hBTkdFVVNFUk5BTUUpKQogIHsKICAgIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfdXNlcm5hbWUnXSkpCiAgICB7CiAgICAgIC8vIHVzZXIgaXMgY2hhbmdpbmcgaGlzIHVzZXJuYW1lCiAgICAgICR0bXAgPSB0cmltKCRwYXJhbXNbJ21hbXNfaW5wdXRfdXNlcm5hbWUnXSk7CiAgICAgIGlmKCEkdGhpcy0+SXNWYWxpZFVzZXJuYW1lKCR0bXAsIEZBTFNFLCAkdWlkKSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHVzZXJuYW1lJykpOwogICAgICB9CiAgICAgIGlmKCR0bXApCiAgICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSAkdG1wOwogICAgICB9CiAgICB9CiAgfQogIAogIC8vIGNoZWNrIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGhpcyBwYXNzd29yZAogIGlmKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVBBU1NXRCkpCiAgewogICAgLy8gY2hhbmdlIHRoaXMgcGFzc3dvcmQKICAgICRwYXNzd29yZCA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUodHJpbSgkcGFyYW1zWydtYW1zX2lucHV0X3Bhc3N3b3JkJ10pKTsKICAgICRyZXBlYXQgICA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUodHJpbSgkcGFyYW1zWydtYW1zX2lucHV0X3JlcGVhdHBhc3N3b3JkJ10pKTsKICAgIGlmKCR1aW5mb1snZm9yY2VfbmV3cHcnXSAmJiAhJHBhc3N3b3JkKQogICAgewogICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAncGFzc3dvcmQnKSk7CiAgICB9CiAgICAKICAgIGlmKCR1aW5mb1snZm9yY2VfbmV3cHcnXSAmJiAhJHJlcGVhdCkKICAgIHsKICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1cmllZGZpZWxkJywgJ3JlcGVhdHBhc3N3b3JkJykpOwogICAgfQogICAgCiAgICBpZigkcGFzc3dvcmQgIT0gJHJlcGVhdCAmJiAkcGFzc3dvcmQgIT0gJycpCiAgICB7CiAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKICAgIH0KICAgIAogICAgaWYoJHBhc3N3b3JkICE9ICcnICYmICEkdGhpcy0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgfQogIH0KICAKICAvLyBnZXQgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAkZGVmbnNieW5hbWUgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogIAogIC8vIEdldCBtZW1iZXIgZ3JvdXBzCiAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAKICAvLyBHZXQgZ3JvdXAgcHJvcGVydHkgcmVsYXRpb25zIGludG8gYSB1bmlvbi4KICAkcHJvcGVydGllcyA9IFtdOwogICR0bXAgICAgICAgID0gW107CiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvbmVncm91cCkKICB7CiAgICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRvbmVncm91cFsnZ3JvdXBpZCddKTsKICAgICR0bXAgICAgICAgICAgID0gXE1BTVNcUlJVdGlsczo6YXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCgkdG1wLCAkcHJvcHJlbGF0aW9ucyk7CiAgICB1YXNvcnQoJHRtcCwgWyd4dF9hcnJheScsICdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknXSk7CiAgfQogICRwcm9wZXJ0aWVzID0geHRfYXJyYXk6OnRvX2hhc2goJHRtcCwgJ25hbWUnKTsKICAKICAkdXNlcnByb3BzICAgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7CiAgJGRlbGV0ZXByb3BzID0gW107CiAgCiAgLy8gZG8gdmFsaWRhdGlvbiBvZiB0aGUgZmllbGRzLgogIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3BuYW1lID0+ICRwcm9wKQogIHsKICAgICRmbGR0eXBlICA9ICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWyd0eXBlJ107CiAgICAkcmVxdWlyZWQgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMik7CiAgICAkaGlkZGVuICAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMyk7CiAgICAkcmVhZG9ubHkgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gNCk7CiAgICAKICAgIHN3aXRjaCgkZmxkdHlwZSkKICAgIHsKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfVEVYVDoKICAgICAgICBpZigkcmVxdWlyZWQpCiAgICAgICAgewogICAgICAgICAgaWYoIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pIHx8IGVtcHR5KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pKQogICAgICAgICAgewogICAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfQ0hFQ0tCT1g6CiAgICAgICAgaWYoIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pKQogICAgICAgIHsKICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0gPSAwOwogICAgICAgIH0KICAgICAgICBpZigkcmVxdWlyZWQpCiAgICAgICAgewogICAgICAgICAgaWYoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSA9PSAwKQogICAgICAgICAgewogICAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfRU1BSUw6CiAgICAgICAgaWYoJHJlcXVpcmVkKQogICAgICAgIHsKICAgICAgICAgIGlmKCFpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZW1haWxhZGRyZXNzJykpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPklzVmFsaWRFbWFpbEFkZHJlc3MoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSwgJHVpZCk7CiAgICAgICAgICAgIGlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkZW1sID0gJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXTsKICAgICAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnKSAuICIgJGVtbCIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX1RFWFRBUkVBOgogICAgICAgIGlmKCRyZXF1aXJlZCAmJiAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJGRlZm5zYnluYW1lWyRwcm9wbmFtZV1bJ3Byb21wdCddKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKCRyZXF1aXJlZCAmJiBlbXB0eSgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfTVVMVElTRUxFQ1Q6CiAgICAgICAgaWYoJHJlcXVpcmVkICYmICFpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICB9CiAgICAgICAgLy8gZW5jb2RlIGl0IGludG8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdC4KICAgICAgICBpZihpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICB7CiAgICAgICAgICAkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdID0gaW1wbG9kZSgnLCcsICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSA9ICcnOwogICAgICAgIH0KICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9JTUFHRToKICAgICAgICBpZigKICAgICAgICAgIGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdfY2xlYXInXSkgJiYKICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdfY2xlYXInXSA9PSAnY2xlYXInCiAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgIC8vIHdlJ3JlIHRvbGQgdG8gY2xlYXIgYW4gaW1hZ2UgcHJvcGVydHksIHdlIG11c3QgYWxzbwogICAgICAgICAgLy8gZGVsZXRlIHRoZSBpbWFnZQogICAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICAgJGRlc3REaXIxID0gJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10gLiAnLyc7CiAgICAgICAgICAkZGVzdERpcjEgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpIC4gJy8nOwogICAgICAgICAgJGZpbGUxICAgID0gJGRlc3REaXIxIC4gJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXTsKICAgICAgICAgIAogICAgICAgICAgaWYoaXNfZmlsZSgkZmlsZTEpKSB7IEB1bmxpbmsoJGZpbGUxKTsgfQogICAgICAgICAgCiAgICAgICAgICAvLyB1bnNldCB0aGUgaGlkZGVuIHBhcmFtIHRvIHByZXZlbnQgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZwogICAgICAgICAgJGRlbGV0ZXByb3BzW10gPSAkcHJvcG5hbWU7CiAgICAgICAgICB1bnNldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKTsKICAgICAgICB9CiAgICAgICAgaWYoCiAgICAgICAgICAkcmVxdWlyZWQgJiYKICAgICAgICAgICgoIWlzc2V0KCRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pIHx8CiAgICAgICAgICAgICRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV1bJ3NpemUnXSA9PSAwKSAmJgogICAgICAgICAgICghaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkgfHwgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSA9PSAnJykpCiAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgIC8vIGJ1dCB3ZSBjYW4ndCBmaW5kIGEgdmFsdWUKICAgICAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVxdWlyZWRmaWVsZCcsICRwcm9wbmFtZSkpOwogICAgICAgIH0KICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9EQVRFOgogICAgICAgIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdNb250aCddKSkKICAgICAgICB7CiAgICAgICAgICAkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdID0KICAgICAgICAgICAgbWt0aW1lKAogICAgICAgICAgICAgIDAsIDAsIDAsCiAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lIC4gJ01vbnRoJ10sCiAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lIC4gJ0RheSddLAogICAgICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdZZWFyJ10KICAgICAgICAgICAgKTsKICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdNb250aCddKTsKICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdEYXknXSk7CiAgICAgICAgICB1bnNldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWUgLiAnWWVhciddKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV07CiAgICAgICAgCiAgICAgICAgaWYocHJlZ19tYXRjaCgiL15bMC05XXs0fS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0yXVswLTldfDNbMC0xXSkkLyIsICR2YWwpKQogICAgICAgIHsKICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0gPSBzdHJ0b3RpbWUoJHZhbCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKCRyZXF1aXJlZCAmJiAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJHByb3BuYW1lKSk7CiAgICAgICAgfQogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX0RST1BET1dOOgogICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9SQURJT0JVVE5TOgogICAgICAgIGlmKCRyZXF1aXJlZCAmJiAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJHByb3BuYW1lKSk7CiAgICAgICAgfQogICAgICBicmVhazsKICAgICAgCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgLy8gd2UgZG9uJ3QgYWNjZXB0IGZpZWxkIHR5cGVzIGxpa2UgdGhpcwogICAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudHNldHByb3BlcnR5dHlwZScsICRwcm9wbmFtZSkpOwogICAgICBicmVhazsKICAgIH0KICB9CiAgCiAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpDaGFuZ2VTZXR0aW5nc0FmdGVyVmFsaWRhdGUnLCBbJ3VpZCcgPT4gJHVpZF0pOwogIAogIC8vCiAgLy8gbm93IHdlIGFjdHVhbGx5IGNoYW5nZSB0aGUgdXNlciBzZXR0aW5ncwogIC8vCiAgCiAgLy8gcGFzc3dvcmQKICBpZigkcGFzc3dvcmQgIT0gJycgfHwgJHVzZXJuYW1lICE9ICcnKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+U2V0VXNlcigkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCk7CiAgICAkdGhpcy0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCBGQUxTRSk7CiAgICAKICAgIGlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCiAgICB7CiAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcHJvYmxlbXNldHRpbmdpbmZvJykgLiAnICcgLiAkcmVzdWx0WzFdKTsKICAgIH0KICB9CiAgCiAgLy8KICAvLyBub3cgZGVsZXRlIGFsbCB0aGUgcHJvcGVydGllcyBmb3IgdGhpcyB1c2VyCiAgLy8gaW4gcHJlcGFyYXRpb24gZm9yIHNldHRpbmcgbmV3IG9uZXMuCiAgLy8KICAkdGhpcy0+Rm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCBGQUxTRSk7CiAgCiAgZm9yZWFjaCgkZGVsZXRlcHJvcHMgYXMgJG9uZSkKICB7CiAgICAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkb25lLCAkdWlkLCBGQUxTRSk7CiAgfQogIAogIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3BuYW1lID0+ICRwcm9wKQogIHsKICAgICRyZXF1aXJlZCAgICAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMik7CiAgICAkaGlkZGVuICAgICAgID0gKCRwcm9wWydyZXF1aXJlZCddID09IDMpOwogICAgJHJlYWRvbmx5ICAgICA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSA0KTsKICAgICRmbGR0eXBlICAgICAgPSAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsndHlwZSddOwogICAgJGZvcmNlX3VuaXF1ZSA9ICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWydmb3JjZV91bmlxdWUnXTsKICAgICR2YWwgICAgICAgICAgPSBOVUxMOwogICAgCiAgICBpZighaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpIHsgY29udGludWU7IH0KICAgIAogICAgaWYoJHJlYWRvbmx5IHx8ICRoaWRkZW4pIHsgY29udGludWU7IH0gLy8gY2Fubm90IHNldCByZWFkb25seSBvciBoaWRkZW4gZmllbGRzCiAgICAKICAgIGlmKCRmbGR0eXBlID09IE1BTVM6OkZJRUxEVFlQRV9JTUFHRSkKICAgIHsKICAgICAgLy8gaW1hZ2UgdHlwZQogICAgICAkdmFsID0gJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXTsKICAgICAgCiAgICAgIGlmKGlzc2V0KCRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pICYmICRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV1bJ3NpemUnXSA+IDApCiAgICAgIHsKICAgICAgICAvLyBJdCBpcyBhbiB1cGxvYWQgZmlsZSB0eXBlCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5NYW5hZ2VJbWFnZVVwbG9hZCgkaWQgLiAnbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lLCAkcHJvcG5hbWUpOwogICAgICAgIGlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCiAgICAgICAgewogICAgICAgICAgJHBhcmFtc1snZXJyb3InXSAgID0gMTsKICAgICAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcicpIC4gJyZuYnNwOycgLiAkcmVzdWx0WzFdOwogICAgICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgIH0KICAgICAgICAkdmFsID0gJHJlc3VsdFsxXTsKICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAkdmFsID0gdHJpbSgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKTsKICAgICAgJHZhbCA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHZhbCk7CiAgICAgIAogICAgICBpZigkZmxkdHlwZSA9PSBNQU1TOjpGSUVMRFRZUEVfVEVYVCkKICAgICAgewogICAgICAgICR2YWwgPSBzdHJpcF90YWdzKCR2YWwpOwogICAgICB9CiAgICAgIGVsc2UgaWYoJGZsZHR5cGUgPT0gTUFNUzo6RklFTERUWVBFX1RFWFRBUkVBKQogICAgICB7CiAgICAgICAgJHZhbCA9IHh0X3V0aWxzOjpjbGVhbl9pbnB1dF9odG1sKCR2YWwpOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNoZWNrIGZvciBmb3JjZWQgdW5pcXVlIHZhbHVlcy4KICAgIGlmKCR2YWwgJiYgJGZvcmNlX3VuaXF1ZSAmJiAhJHRoaXMtPklzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVpZCwgJHByb3BuYW1lLCAkdmFsKSkKICAgIHsKICAgICAgJHBhcmFtc1snZXJyb3InXSAgID0gMTsKICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJfbm9udW5pcXVlX2ZpZWxkX3ZhbHVlJywgJHByb3BuYW1lKTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAKICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICAkcmV0ID0gJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BuYW1lLCAkdmFsLCAkdWlkKTsKICAgIGlmKCRyZXQgPT0gRkFMU0UpCiAgICB7CiAgICAgICRwYXJhbXNbJ2Vycm9yJ10gICA9IDE7CiAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9zZXR0aW5ncHJvcGVydHknKSAuICcgJyAuICRwcm9wbmFtZTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAKICAgICAgcmV0dXJuOwogICAgfQogIH0KICAKICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2NoYW5nZSBzZXR0aW5ncycpOwogIAogIC8vIHNlbmQgYSBob29rCiAgJGV2ZW50X3BhcmFtcyAgICAgICAgID0gW107CiAgJGV2ZW50X3BhcmFtc1snbmFtZSddID0gJHVpbmZvWyd1c2VybmFtZSddOwogICRldmVudF9wYXJhbXNbJ2lkJ10gICA9ICR1aWQ7CiAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCAkZXZlbnRfcGFyYW1zKTsKICAKfQpjYXRjaChcRXhjZXB0aW9uICRlKQp7CiAgJGVyciAgICAgICAgICAgICAgID0gJGUtPkdldE1lc3NhZ2UoKTsKICAkcGFyYW1zWydlcnJvciddICAgPSAxOwogICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwp9CgppZigkcmV0dXJudG8pCnsKICAkcGFnZWlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHJldHVybnRvKTsKICBpZigkcGFnZWlkKQogIHsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgfQp9CmlmKCgkdXJsID0gJHRoaXMtPkdldFBvc3RMb2dpblVSTCgpKSkKewogIHJlZGlyZWN0KCR1cmwpOwp9CmVsc2UgaWYoKCR0cGxzdHIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnKSkpCnsKICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJ3N0cmluZzonIC4gJHRwbHN0cik7CiAgJHRwbC0+YXNzaWduKCd1c2VybmFtZScsICR1aW5mb1sndXNlcm5hbWUnXSk7CiAgJHRwbC0+YXNzaWduKCd1c2VyaW5mbycsICR1aW5mbyk7CiAgJGdyb3VwcyAgICA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdGhpcy0+TG9nZ2VkaW5JZCgpKTsKICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSgkZ3JvdXBzWzBdWydncm91cGlkJ10pOwogICR0cGwtPmFzc2lnbignZ3JvdXAnLCAkZ3JvdXBuYW1lKTsKICAkdG1wID0gdHJpbSgkdHBsLT5mZXRjaCgpKTsKICAKICBpZigkdG1wKQogIHsKICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wKTsKICAgIGlmKCRwYWdlaWQpCiAgICB7CiAgICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICB9CiAgfQp9CgokcGFybXMgPSBbJ21lc3NhZ2UnID0+ICR0aGlzLT5MYW5nKCdtc2dfc2V0dGluZ3NjaGFuZ2VkJyldOwokdGhpcy0+bXlSZWRpcmVjdCgnY250bnQwMScsICdsb2dvdXRmb3JtJywgJHJldHVybmlkLCAkcGFybXMpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.forgotpw.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1c2VybmFtZSA9ICRlbWFpbCA9IG51bGw7CiRlcnJvciA9IG51bGw7CiRtZXNzYWdlID0gbnVsbDsKJHVzZXJuYW1lX2lzX2VtYWlsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJywwKTsKJG5vY2FwdGNoYSA9IFx4dF9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywnbm9jYXB0Y2hhJyxGQUxTRSk7CiRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdyZXR1cm50bycsJHJldHVybmlkKTsKCiR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnZm9yZ290cHd0ZW1wbGF0ZScsJ01BTVM6OmZvcmdvdCBwYXNzd29yZCBmb3JtJyk7CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKCmlmKCBpc3NldCgkcGFyYW1zWydtYW1zX2NhbmNlbCddKSApIHsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybnRvKTsKfQplbHNlIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgIHRyeSB7CiAgICAgICAgaWYoICFceHRfdXRpbHM6OnZhbGlkX2Zvcm1fY3NyZigpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykgKTsKCiAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYSB1c2VybmFtZQogICAgICAgICR1c2VybmFtZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX3VzZXJuYW1lJyk7CiAgICAgICAgaWYoICEkdXNlcm5hbWUgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICAgICBpZiggJHVzZXJuYW1lX2lzX2VtYWlsICYmICFpc19lbWFpbCgkdXNlcm5hbWUpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZW1haWxhZGRyZXNzJykpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgY2FwdGNoYQogICAgICAgIGlmKCAhJG5vY2FwdGNoYSApIHsKICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgIGlmKCBpc19vYmplY3QoJGNhcHRjaGEpICYmICEkY2FwdGNoYS0+Q2hlY2tDYXB0Y2hhKFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX2lucHV0X2NhcHRjaGEnKSkgKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCcpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gc2VlIGlmIHdlIGNhbiBmaW5kIHRoaXMgdXNlcgogICAgICAgICR1aWQgPSAkdGhpcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICEkdWlkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKSk7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgICAgICBpZiggISR0bXAgfHwgISR0bXBbMF0gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90ZmluZGVtYWlsJykpOwogICAgICAgICR1c2VyX2luZm8gPSAkdG1wWzFdOwogICAgICAgIHVuc2V0KCR0bXApOwogICAgICAgIGlmKCAkdXNlcl9pbmZvWydkaXNhYmxlZCddICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZGlzYWJsZWQnKSk7CiAgICAgICAgaWYoIHRpbWUoKSA+IHN0cnRvdGltZSgkdXNlcl9pbmZvWydleHBpcmVzJ10pICkgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWNjb3VudGV4cGlyZWQnKSk7CiAgICAgICAgJGVtYWlsID0gJHVzZXJuYW1lOwogICAgICAgIGlmKCAhJHVzZXJuYW1lX2lzX2VtYWlsICkgewogICAgICAgICAgICAkZW1haWwgPSAkdGhpcy0+R2V0RW1haWwoJHVpZCk7CiAgICAgICAgICAgIGlmKCAhJGVtYWlsICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9jb3VsZG5vdGZpbmRlbWFpbCcpKTsKICAgICAgICB9CgogICAgICAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgdGVtcGNvZGUgZm9yIHRoaXMgdXNlciBhbHJlYWR5CiAgICAgICAgaWYoICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycycpICYmICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoJHVpZCkgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcmVzZXRhbHJlYWR5c2VudCcpKTsKICAgICAgICB9CgogICAgICAgIC8vCiAgICAgICAgLy8gd29vdC4uLiBhdCB0aGlzIHBvaW50IGl0IGFsbCB3b3JrZWQuCiAgICAgICAgLy8gcmVhZHkgdG8gZ2V0IGEgdGVtcCBjb2RlIGFuZCBzZW5kIGFuIGVtYWlsLgogICAgICAgIC8vCiAgICAgICAgJGNvZGUgPSBzdWJzdHIoc3RydG91cHBlcihtZDUoX19GSUxFX18uJHVzZXJuYW1lLm1pY3JvdGltZSgpKSksMCwyNSk7CiAgICAgICAgJHRoaXMtPlNldFVzZXJUZW1wQ29kZSggJHVpZCwgJGNvZGUgKTsKCiAgICAgICAgLy8gc2VuZCBvdXIgZnVua3kgZW1haWwKICAgICAgICAkZGVzdHBhZ2UgPSAkcmV0dXJuaWQ7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKTsKICAgICAgICBpZiggJHRtcCApICRkZXN0cGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwoKICAgICAgICAkdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2ZvcmdvdHB3ZW1haWx0ZW1wbGF0ZScsJ01BTVM6OmZvcmdvdCBwYXNzd29yZCBlbWFpbCcpOwogICAgICAgICR0cGwyID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAgICAgJHRwbDItPmFzc2lnbigndGl0bGUnLCR0aGlzLT5MYW5nKCd0aXRsZV9mb3Jnb3Rwd2VtYWlsJykpOwogICAgICAgICR0cGwyLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcsJHRoaXMtPkxhbmcoJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcpKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdtZXNzYWdlX2ZvcmdvdHB3bWFpbCcsJHRoaXMtPkxhbmcoJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcpKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygnbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJykpOwogICAgICAgICR0cGwyLT5hc3NpZ24oJ3Byb21wdF9jb2RlJywkdGhpcy0+TGFuZygncHJvbXB0X2NvZGUnKSk7CiAgICAgICAgJHRwbDItPmFzc2lnbignZGF0YV9jb2RlJywkY29kZSk7CiAgICAgICAgJHRwbDItPmFzc2lnbigncHJvbXB0X2xpbmsnLCR0aGlzLT5MYW5nKCdwcm9tcHRfbGluaycpKTsKICAgICAgICAkcHJldHR5ID0gIm1hbXMvdmVyaWZ5Y29kZS8kZGVzdHBhZ2UvJHVpZC8kY29kZSI7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoJ3VpZCc9PiR1aWQsJ2NvZGUnPT4kY29kZSk7CiAgICAgICAgJHRwbDItPmFzc2lnbignZGF0YV91cmwnLCR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAnLCd2ZXJpZnljb2RlJywkZGVzdHBhZ2UsJHBhcm1zLGZhbHNlLGZhbHNlLCRwcmV0dHkpKTsKICAgICAgICAkYm9keSA9ICR0cGwyLT5mZXRjaCgpOwoKICAgICAgICAkY21zbWFpbGVyID0gbmV3IFxjbXNfbWFpbGVyKCk7CiAgICAgICAgJGNtc21haWxlci0+cmVzZXQoKTsKICAgICAgICAkY21zbWFpbGVyLT5BZGRBZGRyZXNzKCRlbWFpbCk7CiAgICAgICAgJGNtc21haWxlci0+U2V0Qm9keSgkYm9keSk7CiAgICAgICAgJGNtc21haWxlci0+U2V0U3ViamVjdCgkdGhpcy0+TGFuZygnbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCcpKTsKICAgICAgICAkY21zbWFpbGVyLT5Jc0hUTUwodHJ1ZSk7CiAgICAgICAgJGNtc21haWxlci0+U2V0UHJpb3JpdHkoMSk7CiAgICAgICAgJGNtc21haWxlci0+U2VuZCgpOwoKICAgICAgICAvLyBhdWRpdCBzb21ldGhpbmcKICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksJ1JlcXVlc3RlZCBhIHBhc3N3b3JkIHJlc2V0IGNvZGUnKTsKCiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsJ2ZvcmdvdHB3Jyk7CgogICAgICAgIC8vIGFuZCB3ZSdyZSBkb25lLCBkbyBhIHJlZGlyZWN0IGFmdGVyIHBvc3QKICAgICAgICAkdGhpcy0+U2hvd0Zvcm1hdHRlZE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCcsJGVtYWlsKSxmYWxzZSwkdGhpcy0+TGFuZygndGl0bGVfZm9yZ290cHcnKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgJGVycm9yID0gMTsKICAgICAgICAkbWVzc2FnZSA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICB9Cn0KCi8vIGNyZWF0ZSBhbmQgZGlzcGxheSB0aGUgdGVtcGxhdGUuCiR0cGwtPmFzc2lnbignZXJyb3InLCRlcnJvcik7CiR0cGwtPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwokY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwppZiggaXNfb2JqZWN0KCRjYXB0Y2hhKSAmJiAhJG5vY2FwdGNoYSApIHsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV90aXRsZScsJHRoaXMtPkxhbmcoJ2NhcHRjaGFfdGl0bGUnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGEnLCRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCkpOwogICAgJHRlc3QgPSBtZXRob2RfZXhpc3RzKCRjYXB0Y2hhLCAnTmVlZHNJbnB1dEZpZWxkJykgPyAkY2FwdGNoYS0+TmVlZHNJbnB1dEZpZWxkKCkgOiB0cnVlOwogICAgaWYoICR0ZXN0ICkgJHRwbC0+YXNzaWduKCdpbnB1dF9jYXB0Y2hhJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ21hbXNfaW5wdXRfY2FwdGNoYScsJycsMTApKTsKfQokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ25vY2FwdGNoYSddID0gJG5vY2FwdGNoYTsKJHBhcm1zWydyZXR1cm50byddID0gJHJldHVybnRvOwokdHBsLT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdmb3Jnb3RwdycsICRyZXR1cm5pZCwgJHBhcm1zICkpOwokdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX2lzX2VtYWlsJywkdXNlcm5hbWVfaXNfZW1haWwpOwokdHBsLT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiR0cGwtPmFzc2lnbignbWF4X3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJykpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMK]]></data>
	</file>
	<file>
	  <filename>/action.getfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CmlmKCAoJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCkpIDwgMSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDNFeGNlcHRpb24oKTsKCi8vIGRvd25sb2FkIGFuIGltYWdlLi4uIG9yIGEgZmlsZSwgb3IgZHVtcCBhbiBpbWFnZSB0byBzdGRvdXQKLy8ganVzdCB3aXRoIG9iZnVzY2F0aW9uIHNvIHRoYXQgdGhlIGZpbGVuYW1lIGFuZCBwYXRoIGFyZSBub3Qgb2J2aW91cy4KLy8gYW5kIHdpdGggRkVVIHByb3RlY3Rpb24KJHBhcmFtcyA9IFx4dF91dGlsczo6ZGVjcnlwdF9wYXJhbXMoICRwYXJhbXMgKTsKJGZpbGUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdmaWxlJyApOwokZGwgPSBceHRfcGFyYW06OmdldF9ib29sKCAkcGFyYW1zLCAnZG93bmxvYWQnICk7CiRncm91cHMgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdncm91cHMnICk7CiRub2NhY2hlID0gXHh0X3BhcmFtOjpnZXRfYm9vbCggJHBhcmFtcywgJ25vY2FjaGUnICk7CgppZiggJGdyb3VwcyApIHsKICAgIC8vIGNvbnZlcnQgcGVybWl0dGVkIGdyb3VwcyBpbnRvIGdpZHMuCiAgICAkZ3JvdXBzID0gZXhwbG9kZSgnLCcsJGdyb3Vwcyk7CiAgICAkYWxsX2dyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgICRhbGxvd2VkX2dyb3VwcyA9IG51bGw7CiAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRncm91cF9uYW1lICkgewogICAgICAgICRncm91cF9uYW1lID0gdHJpbSgkZ3JvdXBfbmFtZSk7CiAgICAgICAgaWYoICEkZ3JvdXBfbmFtZSApIGNvbnRpbnVlOwogICAgICAgIGlmKCBpc3NldCggJGFsbF9ncm91cHNbJGdyb3VwX25hbWVdKSApICRhbGxvd2VkX2dyb3VwcyA9ICRhbGxfZ3JvdXBzWyRncm91cF9uYW1lXTsKICAgIH0KCiAgICAvLyBzZWUgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBpbiBvbmUgb2YgdGhlc2UgZ3JvdXBzCiAgICBpZiggISAkdGhpcy0+TWVtYmVyT2ZHcm91cCggJHVpZCwgJGFsbG93ZWRfZ3JvdXBzICkgKSB0aHJvdyBuZXcgXENtc0Vycm9yNDAzRXhjZXB0aW9uKCk7Cn0KCmlmKCAkZmlsZSApIHsKICAgIGlmKCAhaXNfZmlsZSggJGZpbGUgKSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDRFeGNlcHRpb24oKTsKCiAgICAkbWltZV90eXBlID0gXHh0X3V0aWxzOjpnZXRfbWltZV90eXBlKCAkZmlsZSApOwogICAgaWYoICEgc3RhcnRzd2l0aCggJG1pbWVfdHlwZSwgJ2ltYWdlLycpICkgJGRsID0gdHJ1ZTsKICAgIGlmKCAkZGwgKSBceHRfdXRpbHM6OnNlbmRfZmlsZV9hbmRfZXhpdCggJGZpbGUgKTsKCiAgICAvLyBpdHMgYW4gaW1hZ2UuCiAgICAvLyBzbyBqdXN0IHBhc3N0aHJvdWdoIHRoZSBpbWFnZQogICAgaWYoICRub2NhY2hlICkgewogICAgICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7CiAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBwcml2YXRlJyxmYWxzZSk7CiAgICB9CiAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogJy4kbWltZV90eXBlKTsKICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmlsZSkpOwoKICAgICRjaHVua3NpemUgPSA2NTUzNTsKICAgICRoYW5kbGU9Zm9wZW4oJGZpbGUsJ3JiJyk7CiAgICAkY29udGVudHMgPSAnJzsKICAgIGRvIHsKICAgICAgICAkZGF0YSA9IGZyZWFkKCRoYW5kbGUsJGNodW5rc2l6ZSk7CiAgICAgICAgaWYoIHN0cmxlbigkZGF0YSkgPT0gMCApIGJyZWFrOwogICAgICAgIHByaW50KCRkYXRhKTsKICAgIH0gd2hpbGUodHJ1ZSk7CiAgICBmY2xvc2UoJGhhbmRsZSk7Cn0KZXhpdCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.login.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQovKiogQHZhciBpbnQgJHJldHVybmlkIGluIHNjb3BlIGZyb20gZmlsZSBpbmNsdXNpb24gKi8KaWYoICFpc3NldCgkZ0NtcykgKSByZXR1cm47CgppZiggIWNsYXNzX2V4aXN0cygnTUFNU0xvZ2luRmFpbGVkZXhjZXB0aW9uJykgKSB7CiAgICBjbGFzcyBNQU1TTG9naW5GYWlsZWRFeGNlcHRpb24gZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQp9CgoKJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKCi8vIHRoaXMgaXMgdGhlIHN0YW5kYXJkIGxvZ2luLi4uIHNob3VsZCBhbGwgZ28gaW4gdGhlIG1hbXNfc3RkX2NvbnN1bWVyIGNsYXNzLgp0cnkKewogICRlcnJvciAgICAgID0gJHVzZXJuYW1lID0gJHBhc3N3b3JkID0gJHJlbWVtYmVybWUgPSBOVUxMOwogICRpbmxpbmUgICAgID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCAnaW5saW5lJyk7CiAgJG5vY2FwdGNoYSAgPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsICdub2NhcHRjaGEnKTsKICAkcmV0dXJudG8gICA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAncmV0dXJudG8nKTsKICAkb25seWdyb3VwcyA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnb25seV9ncm91cHMnKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgICAgICR1c2VybmFtZSA9ICRpcCA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gY2hlY2sgdGhlIENTUkYgc3R1ZmYuCiAgICAgICAgICAgIGlmKCAhXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykgKTsKCiAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBob25leXBvdAogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19fZGF0YSddKSApIHsKICAgICAgICAgICAgICAgICRob25leXBvdCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX19kYXRhJyk7CiAgICAgICAgICAgICAgICBpZiggJGhvbmV5cG90ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9zZWN1cml0eScpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgZ3V0cyBvZiB0aGUgbG9naW4gcHJvY2Vzcy4KICAgICAgICAgICAgJHVzZXJuYW1lID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF91c2VybmFtZScpKTsKICAgICAgICAgICAgJHBhc3N3b3JkID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF9wYXNzd29yZCcpKTsKICAgICAgICAgICAgJHJlbWVtYmVybWUgPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ21hbXNfcmVtZW1iZXJtZScpOwoKICAgICAgICAgICAgLy8gY2hlY2sgdXNlcm5hbWUgJiBwYXNzd29yZAogICAgICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3VzZXJuYW1lJykpOwogICAgICAgICAgICBpZiggISRwYXNzd29yZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3Bhc3N3b3JkJykpOwoKICAgICAgICAgICAgLy8gZG8gQmVmb3JlTG9naW4uLi4gdGhlc2UgcmVmZXJlbmNlcyBhcmUgcHJldHR5IGhhY2t5CiAgICAgICAgICAgICRpcCA9IFx4dF91dGlsczo6Z2V0X3JlYWxfaXAoKTsKICAgICAgICAgICAgJG9rID0gdHJ1ZTsKICAgICAgICAgICAgJG1zZyA9IG51bGw7CiAgICAgICAgICAgICRwYXJtcyA9IFsgJ3VzZXJuYW1lJz0+JHVzZXJuYW1lLCAnZ3JvdXBzJz0+JG9ubHlncm91cHMsICdpcCc9PiRpcCwgJ2FsbG93Jz0+JiRvaywgJ21lc3NhZ2UnPT4mJG1zZyBdOwogICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6OkJlZm9yZUxvZ2luJywgJHBhcm1zICk7CiAgICAgICAgICAgIGlmKCAhXGNtc190b19ib29sKCRvaykgKSB7IHRocm93IG5ldyBcTUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uKCRtc2cpOyB9IC8vIFdoeSBjaGVjayB0aGlzIGhlcmU/Pz8gSk0KCiAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBjYXB0Y2hhCiAgICAgICAgICBpZighJG5vY2FwdGNoYSkKICAgICAgICAgIHsKICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgIGlmKGlzX29iamVjdCgkY2FwdGNoYSkgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdtYW1zX2lucHV0X2NhcHRjaGEnKSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgXE1BTVNMb2dpbkZhaWxlZEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY2FwdGNoYW1pc21hdGNoJykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjaGVjayBwYXNzd29yZCwgYnV0IGRvIG5vdCBsb2dpbgogICAgICAgICAgICAkdWlkID0gJHRoaXMtPkNoZWNrUGFzc3dvcmQoICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb25seWdyb3VwcyApOwogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXE1BTVNMb2dpbkZhaWxlZEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbG9naW5mYWlsZWQnKSk7CgogICAgICAgICAgICAvLyBsb2dpbiBwYXNzZWQuLi4gbm93IGRvIHRoZSBhZnRlcmxvZ2luYXV0aCBldmVudAogICAgICAgICAgICAvLyB0byBzZWUgaWYgYW55IG90aGVyIG1vZHVsZSBpcyBwcmV2ZW50aW5nIGxvZ2luLgogICAgICAgICAgICAvLyByZWZlcmVuY2VzIGFyZSBwcmV0dHkgaGFja3kuCiAgICAgICAgICAgICRvayA9IHRydWU7CiAgICAgICAgICAgICRtc2cgPSBudWxsOwogICAgICAgICAgICAkcGFybXMgPSBbICdpZCc9PiR1aWQsICd1c2VybmFtZSc9PiR1c2VybmFtZSwgJ2dyb3Vwcyc9PiRvbmx5Z3JvdXBzLCAnaXAnPT4kaXAsICdhbGxvdyc9PiYkb2ssICdtZXNzYWdlJz0+JiRtc2cgXTsKICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpBZnRlckxvZ2luQXV0aCcsICRwYXJtcyApOwogICAgICAgICAgICBpZiggIVxjbXNfdG9fYm9vbCgkb2spICkgdGhyb3cgbmV3IFxNQU1TTG9naW5GYWlsZWRFeGNlcHRpb24oJG1zZyk7CgogICAgICAgICAgICAvLyBnZXQgdWlkIGFuZCB1c2VyaW5mbwogICAgICAgICAgICAkcmVzID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgICAgICAgICBpZiggISRyZXNbMF0gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsgLy8gc2hvdWxkIG5ldmVyIGV2ZXIgaGFwcGVuLgogICAgICAgICAgICAkdXNlcl9pbmZvID0gJHJlc1sxXTsKCiAgICAgICAgICAgIGlmKCAhZW1wdHkoJHVzZXJfaW5mb1snbXVzdF92YWxpZGF0ZSddKSAmJiAkdXNlcl9pbmZvWydtdXN0X3ZhbGlkYXRlJ10gKSB7CiAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgdmVyaWZ5b25seSBhY3Rpb24uLi4KICAgICAgICAgICAgICAgIC8vIHN0b3JlIHVzZXJuYW1lIC8gcGFzc3dvcmQgLyBncm91cHMKICAgICAgICAgICAgICAgICR0ZW1wY29kZSA9ICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoICR1aWQgKTsKICAgICAgICAgICAgICAgIGlmKCAkdGVtcGNvZGUgKSB7CiAgICAgICAgICAgICAgICAgICAgXG1hbXNfdXRpbHM6OnNhdmVfdGVtcF9sb2dpbmRhdGEoICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb25seWdyb3VwcyApOwogICAgICAgICAgICAgICAgICAgICRhc3Npc3RhbnQgPSAkdGhpcy0+Z2V0X3ZlcmlmaWNhdGlvbl9hc3Npc3RhbnQoKTsKICAgICAgICAgICAgICAgICAgICAkdXJsID0gJGFzc2lzdGFudC0+Z2V0X3ZlcmlmeV9mb3JtX3VybCggJHVpZCApOwogICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhY3R1YWxseSBsb2cgdGhlIHVzZXIgaW4uCiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+TG9naW4oICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb25seWdyb3Vwcyk7CiAgICAgICAgICAgIGlmKCAhJHJlc1swXSApIHRocm93IG5ldyBcTUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uKCRyZXNbMV0pOwogICAgICAgICAgICAkdWlkID0gJHJlc1swXTsKCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIHdlJ3JlIGxvZ2dlZCBpbgogICAgICAgICAgICAvLwoKICAgICAgICAgICAgaWYoICR1c2VyX2luZm9bJ211c3RfdmFsaWRhdGUnXSApIHsKICAgICAgICAgICAgICAgIC8vIGZvcmNlIHRoZSB1c2VyIHRvIHZhbGlkYXRlIHRoZW1zZWx2ZXMuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICR1c2VyX2luZm9bJ2ZvcmNlX2Noc2V0dGluZ3MnXSApIHsKICAgICAgICAgICAgICAgIC8vIGZvcmNlIHVzZXIgdG8gY2hhbmdlIHNldHRpbmdzLgogICAgICAgICAgICAgICAgJGNzcGFnZSA9ICRyZXR1cm5pZDsKICAgICAgICAgICAgICAgIGlmKCAoJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZ3MnKSkgKSB7ICAvLyB0ZXN0IG1lCiAgICAgICAgICAgICAgICAgICAgJHRwbDIgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRtcCk7CiAgICAgICAgICAgICAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgICAgICAgICAgICAgICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICAgICAgICAgICAgICAgICAkdHBsMi0+YXNzaWduKCd1c2VybmFtZScsJHVzZXJuYW1lKTsKICAgICAgICAgICAgICAgICAgICAkdHBsMi0+YXNzaWduKCdncm91cCcsJGdyb3VwbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICR0cGwyLT5mZXRjaCgpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgJGNzcGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJHJldHVybmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCd1aWQnPT4kdWlkKTsKICAgICAgICAgICAgICAgIGlmKCAkcmV0dXJudG8gKSAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RGb3JGcm9udGVuZCgkaWQsJGNzcGFnZSwnY2hhbmdlc2V0dGluZ3MnLCRwYXJtcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICR1c2VyX2luZm9bJ2ZvcmNlX25ld3B3J10gKSB7CiAgICAgICAgICAgICAgICAvLyB1c2VyIGNhbm5vdCBiZSByZW1lbWJlcmVkIGlmIGZvcmNlIHBhc3N3b3JkIHJlc2V0IChmb3Igc2VjdXJpdHkpCiAgICAgICAgICAgICAgICAkcGFybXMgPSBhcnJheSgndWlkJz0+JHVpZCk7CiAgICAgICAgICAgICAgICBpZiggJHJldHVybnRvICkgJHBhcm1zWydyZXR1cm50byddID0gJHJldHVybnRvOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0Rm9yRnJvbnRlbmQoJGlkLCRyZXR1cm5pZCwndXNlcl9mb3JjZW5ld3B3JywkcGFybXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggJHJlbWVtYmVybWUgKSAkdGhpcy0+U2V0UGVybWFuZW50Q29va2llKCR1aWQpOwoKICAgICAgICAgICAgLy8gcmVkaXJlY3Qgc29tZXdoZXJlID8KICAgICAgICAgICAgaWYoICRyZXR1cm50byApIHsKICAgICAgICAgICAgICAgIC8vIGEgcGFnZSBpZCBvciBhbGlhcwogICAgICAgICAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRyZXR1cm50byk7CiAgICAgICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICgkdXJsID0gJHRoaXMtPkdldFBvc3RMb2dpblVSTCgpICkgKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzIG92ZXJyaWRlcyB0aGUgcHJlZmVyZW5jZSwgYnV0IG5vdCByZXR1cm50by4KICAgICAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoICgkdHBsc3RyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicpKSApIHsKICAgICAgICAgICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbHN0cik7CiAgICAgICAgICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAgICAgICAgICAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAgICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdncm91cCcsJGdyb3VwbmFtZSk7CiAgICAgICAgICAgICAgICAkdG1wID0gdHJpbSgkdHBsLT5mZXRjaCgpKTsKICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAgICAgICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gYWxsIGVsc2UgZmFpbHMsIHJlZGlyZWN0IGJhY2sgdG8gb3VyIGN1cnJlbiBwYWdlLgogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCAkcmV0dXJuaWQgKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxNQU1TTG9naW5GYWlsZWRFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0xvZ2luIGZhaWxlZCBmb3IgdXNlciAnLiR1c2VybmFtZSk7CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dpbkZhaWxlZCcsIFsgJ3VzZXJuYW1lJyA9PiAkdXNlcm5hbWUsICdpcCc9PiRpcCwgJ21zZycgPT4gJGVycm9yIF0gKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGJ1aWxkIHRoZSBmb3JtCiAgICAkY29udGVudCA9IFxjbXNfdXRpbHM6OmdldF9jdXJyZW50X2NvbnRlbnQoKTsKICAgIGlmKCBnZXRfY2xhc3MoJGNvbnRlbnQpID09ICdFcnJvclBhZ2UnICkgewogICAgICAgIC8vIHdlJ3JlIGJlaW5nIGNhbGxlZCBmcm9tIGFuIGVycm9yIHBhZ2UuLi4gc28gd2hlbiB3ZSdyZSBkb25lIHdlIHdhbnQgdG8gcmVkaXJlY3QgYmFjayB0byB0aGUKICAgICAgICAvLyByZXF1ZXN0ZWQgcGFnZSwgaWYgZW5hYmxlZC4KICAgICAgICAkdGhpcy0+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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwppZiggJHVpZCA8IDEgKSByZXR1cm47CiR1c2VybmFtZSA9ICR0aGlzLT5Mb2dnZWRJbk5hbWUoKTsKJHRoaXMtPkxvZ291dCgpOwoKYXVkaXQoICcnLCAkdGhpcy0+R2V0TmFtZSgpLCAiJHVzZXJuYW1lIGxvZ2dlZCBvdXQiKTsKCiRwYXJtcyA9IFtdOwokcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiRwYXJtc1snaWQnXSA9ICR1aWQ7CgovLyB3ZSdyZSBsb2dnZWQgb3V0Ci8vIHJlZGlyZWN0IHNvbWV3aGVyZQppZiggKCRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdyZXR1cm50bycpKSApIHsKICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcmV0dXJudG8pOwogICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwp9CmlmKCAoJHVybCA9ICR0aGlzLT5HZXRQb3N0TG9naW5VUkwoKSkgKSB7CiAgICByZWRpcmVjdCgkdXJsKTsKfQplbHNlIGlmKCAoJHRwbHN0ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9nb3V0JykpICkgewogICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kdHBsc3RyKTsKICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwJywkZ3JvdXBuYW1lKTsKICAgICR0bXAgPSAkdHBsLT5mZXRjaCgpOwogICAgaWYoICR0bXAgKSB7CiAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwogICAgICAgIGlmKCAkcGFnZWlkICkgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcGFnZWlkKTsKICAgIH0KfQovLyBhbGwgZWxzZSBmYWlscywgcmVkaXJlY3QgYmFjayB0byBvdXIgY3VycmVuIHBhZ2UuCiR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybmlkKTsK]]></data>
	</file>
	<file>
	  <filename>/action.logoutform.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKaWYoICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0xPR09VVCkgKSB7CiAgLy8gdGhlIGNvbnN1bWVyIHByb3ZpZGVzIHRoZSBsb2dpbiBjYXBhYmlsaXRpZXMKICBlY2hvICRjb25zdW1lci0+Z2V0X2xvZ291dF9kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7CiAgcmV0dXJuOwp9Cgp0cnkgewovLyBkbyB0aGUgZGVmYXVsdAogICAgJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZiggISR1aWQgKSByZXR1cm47IC8vIG5vdGhpbmcgdG8gZG8sIHVzZXIgaXMgbm90IGxvZ2dlZCBpbi4KCiAgICAkcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmV0dXJudG8nKTsgLy8gdGVzdCBtZS4KICAgICR1c2VybmFtZSA9ICR0aGlzLT5Mb2dnZWRJbk5hbWUoKTsKICAgICR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnbG9nb3V0dGVtcGxhdGUnLCdNQU1TOjpsb2dvdXQgZm9ybScpOwogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgLy8gcmVwbGFjZSB7JGdyb3VwbmFtZX0gd2l0aCB0aGUgZmlyc3QgZ3JvdXBuYW1lIHdlIGNhbiBmaW5kIHRoYXQgbWF0Y2hlcwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgJGdyb3VwbmFtZSA9ICR0aGlzLT5HZXRHcm91cE5hbWUoICRncm91cHNbMF1bJ2dyb3VwaWQnXSApOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfbG9nZ2VkaW4nLCAkdGhpcy0+TGFuZygnbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnKSk7IC8vIGNhbiBnZXQgcmlkIG9mIHRoaXMuCiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJpZCcsICR1aWQpOwogICAgJHRwbC0+YXNzaWduKCd1c2VybmFtZScsICR1c2VybmFtZSk7CiAgICAkbXNnID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21lc3NhZ2UnKTsKICAgIGlmKCAkbXNnICkgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbXNnKTsKCiAgICAvLyBzdGFydCB1Z2x5CiAgICAvLyB0b2RvOiBuZWVkIHNvbWUgbWVjaGFuaXNtIHRvIHRlbGwgJ3doaWNoJyBhdXRoZW50aWNhdGlvbiB3YXMgdXNlZCwgaWYgYWx0IGF1dGhlbnRpY2F0aW9uIGlzIHN1cHBvcnRlZC4KICAgICRsb2dnZWRpbl91c2luZ19zdGQgPSBGQUxTRTsKICAgICRtYW5pcCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpOwogICAgaWYoICRtYW5pcC0+X3N0ZF9Mb2dnZWRJbklkKCkgKSAkbG9nZ2VkaW5fdXNpbmdfc3RkID0gVFJVRTsKICAgIC8vIGVuZCB1Z2x5CgogICAgJHBhcm1zID0gYXJyYXkoKTsKICAgIGlmKCAkcmV0dXJudG8gKSAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsb2dvdXQnLCRyZXR1cm5pZCwkcGFybXMpOwogICAgJHRwbC0+YXNzaWduKCd1cmxfbG9nb3V0JywkdXJsKTsKCiAgICAvLyByZXBsYWNlIHskZ3JvdXBuYW1lfSB3aXRoIHRoZSBmaXJzdCBncm91cG5hbWUgd2UgY2FuIGZpbmQgdGhhdCBtYXRjaGVzCiAgICAkY3NwYWdlID0gJHJldHVybmlkOwogICAgaWYoICgkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycpKSApIHsgIC8vIHRlc3QgbWUKICAgICAgICAkdHBsMiA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kdG1wKTsKICAgICAgICAkdG1wID0gJHRwbDItPmZldGNoKCk7CiAgICAgICAgaWYoICR0bXAgKSAkY3NwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCwkcmV0dXJuaWQpOwogICAgfQogICAgJHBhcm1zID0gYXJyYXkoJ2Zvcm0nPT4nY2hhbmdlc2V0dGluZ3MnKTsKICAgIGlmKCAkcmV0dXJudG8gKSAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0JywkY3NwYWdlLCRwYXJtcyk7CiAgICAkdHBsLT5hc3NpZ24oJ3VybF9jaGFuZ2VzZXR0aW5ncycsJHVybCk7CiAgICAkcHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoICR0aGlzLT5Mb2dnZWRJbklkKCkgKTsKICAgIGlmKCAkcHJvcHMgIT09IGZhbHNlICkgewogICAgICAgIGZvcmVhY2goICRwcm9wcyBhcyAkcCApIHsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCRwWyd0aXRsZSddLCRwWydkYXRhJ10pOwogICAgICAgIH0KICAgIH0KCiAgICBpZiggJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfQUxUTE9HSU4pICkgewogICAgICAgIC8vIHRoZSBjb25zdW1lciBoYXMgYWx0ZXJuYXRlIGxvZ2luIGNhcGFiaWxpdGllcy4uLi4KICAgICAgICAkcmVzID0gJGNvbnN1bWVyLT5nZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2FsdF9sb2dvdXRmb3JtJywkcmVzKTsKICAgIH0KCiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBmYXRhbCBlcnJvciB3ZSBjYW5ub3Qgd29yayBhcm91bmQuCiAgICBlY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlLT5HZXRNZXNzYWdlKCkpOwp9CgojCiMgRU9GCiM=]]></data>
	</file>
	<file>
	  <filename>/action.lostusername.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCnRyeSB7CiAgICBpZiggISR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3R1bicpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignU29ycnksIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkaXNhYmxlZCcpOwogICAgJG1lc3NhZ2UgPSBudWxsOwogICAgJHVzZXJuYW1lX2lzX2VtYWlsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJyk7CiAgICAkbm9jYXB0Y2hhID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdub2NhcHRjaGEnKTsKICAgICR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnbG9zdHVudGVtcGxhdGUnLCdNQU1TOjpsb3N0IHVzZXJuYW1lIGZvcm0nKTsKICAgICRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdyZXR1cm50bycsJHJldHVybmlkKTsKCiAgICAkZ2lkID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfZ2lkJywtMSk7CiAgICAkZ2lkID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2xvc3R1bl9ncm91cCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnLCRnaWQpKTsKICAgIGlmKCAhaXNfbnVtZXJpYygkZ2lkKSApIHsKICAgICAgICAkZ2lkID0gJHRoaXMtPkdldEdyb3VwSUQoICRnaWQgKTsKICAgICAgICBpZiggJGdpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2dyb3Vwbm90Zm91bmQnKSk7CiAgICB9CiAgICBpZiggJGdpZCA8PSAwICkgewogICAgICAgIC8vIG5vIGdpZCBzcGVjaWZpZWQgb3IgZm91bmQsICBnZXQgdGhlIGdpZCBvZiB0aGUgZmlyc3QgZ3JvdXAuCiAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgICAgICBpZiggIWNvdW50KCRncm91cHMpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdub2dyb3VwcycpKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfdmFsdWVzKCRncm91cHMpOwogICAgICAgICRnaWQgPSAkdmFsdWVzWzBdOwogICAgfQoKICAgICRyZWxucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRnaWQpOwogICAgaWYoICFpc19hcnJheSgkcmVsbnMpIHx8IChpc3NldCgkcmVsbnNbMF0pICYmIGZhbHNlID09PSAkcmVsbnNbMF0pICkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kYmVycm9yJykpOwogICAgfQoKICAgIC8vIE5vdzogd2UgbmVlZCB0byBnZXQgdGhlIHByb3BlcnRpZXMgdGhhdCBtYXkgYmUgZmlsbGVkIGluIGluIHRoaXMgZ3JvdXAuCiAgICAvLyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZSBmb3JtCiAgICAvLyB3ZSBkbyB0aGlzIGJlZm9yZSBoYW5kbGluZyBzdWJtaXQgc28gdGhhdCB3ZSBkb24ndCBsb3NlIGFzIG11Y2ggdXNlciBlbnRlcmVkIGluZm9ybWF0aW9uCiAgICAvLyBpZiB0aGVyZSBpcyBhIHNpbGx5IGVycm9yIGluIGZvcm0gc3VibWlzc2lvbi4KICAgICRyb3dhcnJheSA9IFtdOwogICAgJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgIGlmKCAhaXNfYXJyYXkoJGRlZm5zKSApCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfZGJlcnJvcicpKTsKICAgIH0KICAgIGZvcmVhY2goICRyZWxucyBhcyAkb25lcmVsbiApIHsKICAgICAgICBpZiggIWlzX2FycmF5KCRvbmVyZWxuKSB8fCAhaXNzZXQoJG9uZXJlbG5bJ25hbWUnXSwgJG9uZXJlbG5bJ3JlcXVpcmVkJ10sICRvbmVyZWxuWydsb3N0dW5mbGFnJ10pICkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICAgICAgfQogICAgICAgIGlmKCAyICE9PSAoaW50KSAkb25lcmVsblsncmVxdWlyZWQnXSB8fCAxICE9PSAoaW50KSAkb25lcmVsblsnbG9zdHVuZmxhZyddICkgY29udGludWU7CiAgICAgICAgaWYoICFpc3NldCgkZGVmbnNbJG9uZXJlbG5bJ25hbWUnXV0pICkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICAgICAgfQoKICAgICAgICAkZGVmbiA9ICRkZWZuc1skb25lcmVsblsnbmFtZSddXTsKICAgICAgICBpZigKICAgICAgICAgICFpc19hcnJheSgkZGVmbikgfHwKICAgICAgICAgICFpc3NldCgkZGVmblsnbmFtZSddLCAkZGVmblsndHlwZSddLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSwgJGRlZm5bJ3Byb21wdCddKQogICAgICAgICkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICAgICAgfQoKICAgICAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAgICAgJG9uZXJvdy0+cmVxdWlyZWQgPSBmYWxzZTsKICAgICAgICAkb25lcm93LT5wcm9wbmFtZSA9ICRvbmVyZWxuWyduYW1lJ107CiAgICAgICAgJG9uZXJvdy0+bmFtZSA9ICdtYW1zX2lucHV0XycuJG9uZXJlbG5bJ25hbWUnXTsKICAgICAgICAkb25lcm93LT5mbGRuYW1lID0gJGlkLiRvbmVyb3ctPm5hbWU7CiAgICAgICAgJG9uZXJvdy0+dHlwZSA9ICRkZWZuWyd0eXBlJ107CiAgICAgICAgaWYoICRvbmVyb3ctPnR5cGUgPT0gOCApIHsKICAgICAgICAgICAgLy8gZGF0ZSBmaWVsZCB1c2VzIGh0bWxfc2VsZWN0X2RhdGUgd2hpY2ggcHJvdmlkZXMgdGhyZWUgaW5wdXQgZmllbGRzLgogICAgICAgICAgICAkX20gPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywkb25lcm93LT5uYW1lLidNb250aCcpOwogICAgICAgICAgICAkX2QgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywkb25lcm93LT5uYW1lLidEYXknKTsKICAgICAgICAgICAgJF95ID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJG9uZXJvdy0+bmFtZS4nWWVhcicpOwogICAgICAgICAgICBpZiggJF9tICYmICRfZCAmJiAkX3kgKSAkcGFyYW1zWyRvbmVyb3ctPm5hbWVdID0gbWt0aW1lKDAsMCwwLCRfbSwkX2QsJF95KTsKICAgICAgICB9CiAgICAgICAgJG9uZXJvdy0+dmFsID0gXHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywkb25lcm93LT5uYW1lKTsgLy8gZG8gbm90IHVzZSB4dF9wYXJhbSBiZWNhdXNlIGlucHV0IG1heSBiZSBhbiBhcnJheQogICAgICAgICRvbmVyb3ctPmxlbmd0aCA9ICRkZWZuWydsZW5ndGgnXTsKICAgICAgICAkb25lcm93LT5tYXhsZW5ndGggPSAkZGVmblsnbWF4bGVuZ3RoJ107CiAgICAgICAgJG9uZXJvdy0+cHJvbXB0ID0gJGRlZm5bJ3Byb21wdCddOwoKICAgICAgICBzd2l0Y2goICRkZWZuWyd0eXBlJ10gKSB7CiAgICAgICAgY2FzZSA0OiAvLyBkcm9wZG93bgogICAgICAgIGNhc2UgNTogLy8gbXVsdGlzZWxlY3QKICAgICAgICBjYXNlIDc6IC8vIHJhZGlvYnRucwogICAgICAgICAgICAkb3B0aW9ucyA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRvcHRpb25zKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2RiZXJyb3InKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9uZXJvdy0+b3B0aW9ucyA9IGFycmF5X2ZsaXAoJG9wdGlvbnMpOwogICAgICAgICAgICAkb25lcm93LT5sZW5ndGggPSA1OwogICAgICAgICAgICBpZiggY291bnQoJG9uZXJvdy0+b3B0aW9ucykgPiAyMCApICRvbmVyb3ctPmxlbmd0aCA9IDEwOwogICAgICAgICAgICAkb25lcm93LT5sZW5ndGggPSBtaW4oY291bnQoJG9uZXJvdy0+b3B0aW9ucyksJG9uZXJvdy0+bGVuZ3RoKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODogLy8gZGF0ZQogICAgICAgICAgICAkb25lcm93LT5zdGFydF95ZWFyID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRkZWZuWydleHRyYSddLCdzdGFydHllYXInLCctMTAnKTsKICAgICAgICAgICAgJG9uZXJvdy0+ZW5kX3llYXIgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJGRlZm5bJ2V4dHJhJ10sJ2VuZHllYXInLCcrNScpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OiAvLyBpbWFnZQogICAgICAgICAgICAvLyB0aGlzIGlzbid0IGFsbG93ZWQKICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICB9CgogICAgICAgICRyb3dhcnJheVskb25lcm93LT5wcm9wbmFtZV0gPSAkb25lcm93OwogICAgfQogICAgaWYoICFjb3VudCgkcm93YXJyYXkpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fbm9jb250cm9scycpKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19jYW5jZWwnXSkgKSB7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJudG8pOwogICAgfQogICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19zdWJtaXQnXSkgKSB7CiAgICAgICAgLy8KICAgICAgICAvLyBoYW5kbGUgZm9ybSBzdWJtaXQKICAgICAgICAvLwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vIGJ5IHRoaXMgcG9pbnQgb3VyIHZhbHVlcyBzaG91bGQgYmUgdXB0b2RhdGUgaW4gdGhlICRyb3dhcnJheQoKICAgICAgICAgICAgLy8gY2hlY2sgb3VyIGhvbmV5cG90CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX19kYXRhJ10pICkgewogICAgICAgICAgICAgICAgJHRtcCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX19kYXRhJyk7CiAgICAgICAgICAgICAgICBpZiggJHRtcCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfeW91YXJlYWJvdCcpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGNhcHRjaGEKICAgICAgICAgICAgaWYoICEkbm9jYXB0Y2hhICkgewogICAgICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgICAgICBpZiggaXNfb2JqZWN0KCRjYXB0Y2hhKSAmJiAhJGNhcHRjaGEtPkNoZWNrQ2FwdGNoYSgkcGFyYW1zWydtYW1zX2lucHV0X2NhcHRjaGEnXSA/PyAnJykgKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9jYXB0Y2hhbWlzbWF0Y2gnKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGNoZWNrIGFueSByZXF1aXJlZCBmaWVsZHMKICAgICAgICAgICAgZm9yZWFjaCggJHJvd2FycmF5IGFzICRrZXkgPT4gJHJlYyApIHsKICAgICAgICAgICAgICAgIGlmKCAkcmVjLT5yZXF1aXJlZCAmJiAhJHJlYy0+dmFsICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywkcmVjLT5wcm9tcHQpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gcmVhZHkgdG8gZG8gcmVhbCB3b3JrCiAgICAgICAgICAgIC8vIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgZmllbGRzIChleGNlcHQgcGFzc3dvcmQpIGFuZCBidWlsZCBhbiBtYW1zIHF1ZXJ5CiAgICAgICAgICAgIC8vIGFuZCBob3BlIHRoYXQgd2Ugb25seSBmaW5kIG9uZSByZXN1bHQuCiAgICAgICAgICAgIC8vIGlmIHdlIGZpbmQgb25lIHJlc3VsdC4uLiB3ZSBjYW4gZGlzcGxheSBzb21lIGluZm9ybWF0aW9uIHRvIHRoZSBndXkuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIERJU1RJTkNUIFUuKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyBVICc7CiAgICAgICAgICAgICRuX2NvbmRzID0gMDsKICAgICAgICAgICAgJHdoZXJlID0gJGpvaW5zID0gJHBhcm1zID0gW107CgogICAgICAgICAgICBmb3JlYWNoKCAkcm93YXJyYXkgYXMgJGtleSA9PiAkcmVjICkgewogICAgICAgICAgICAgICAgaWYoICEkcmVjLT52YWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAka2V5ID09ICdfcGFzc3dvcmQnICkgY29udGludWU7CiAgICAgICAgICAgICAgICBpZiggJGtleSA9PSAnX2VtYWlsJyApIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgIHN3aXRjaCggJHJlYy0+dHlwZSApIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogLy8gdGV4dAogICAgICAgICAgICAgICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAgICAgICAgICAgY2FzZSAzOiAvLyB0ZXh0YXJlYQogICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfc2NhbGFyKCRyZWMtPnZhbCkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub2RhdGEnKSk7CiAgICAgICAgICAgICAgICAgICAgaWYoIHN0cmxlbigoc3RyaW5nKSAkcmVjLT52YWwpID4gMyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gIlB7JG5fY29uZHN9IjsKICAgICAgICAgICAgICAgICAgICAgICAgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX21hbXNfcHJvcGVydGllcyAkYWxpYXMgT04gVS5pZCA9IHskYWxpYXN9LnVzZXJpZCBBTkQgeyRhbGlhc30udGl0bGUgPSAneyRyZWMtPnByb3BuYW1lfSciOwogICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ7JGFsaWFzfS5kYXRhIExJS0UgPyI7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJyUnIC4gKHN0cmluZykgJHJlYy0+dmFsIC4gJyUnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19zY2FsYXIoJHJlYy0+dmFsKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbG9zdHVuX25vZGF0YScpKTsKICAgICAgICAgICAgICAgICAgICAkYWxpYXMgPSAiUHskbl9jb25kc30iOwogICAgICAgICAgICAgICAgICAgICRuX2NvbmRzKys7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX21hbXNfcHJvcGVydGllcyAkYWxpYXMgT04gVS5pZCA9IHskYWxpYXN9LnVzZXJpZCBBTkQgeyRhbGlhc30udGl0bGUgPSAneyRyZWMtPnByb3BuYW1lfSciOwogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInskYWxpYXN9LmRhdGEgPSA/IjsKICAgICAgICAgICAgICAgICAgICAkcGFybXNbXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSA0OiAvLyBkcm9wZG93bgogICAgICAgICAgICAgICAgY2FzZSA3OiAvLyByYWRpb2J0bnMKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX3NjYWxhcigkcmVjLT52YWwpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fbm9kYXRhJykpOwogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7CiAgICAgICAgICAgICAgICAgICAgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gKHN0cmluZykgJHJlYy0+dmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNTogLy8gbXVsdGlzZWxlY3QKICAgICAgICAgICAgICAgICAgICAvLyBtdWx0aXNlbGVjdCBpcyBhIGRpZmZlcmVudCBjYXNlLi4uIHdlIG5lZWQgdG8gYnVpbGQgYW4gT1IgcmVsYXRpb25zaGlwIHNvIHRoYXQgYW55IG9mIHRoZSBzZWxlY3RlZCBpdGVtcyBtYXRjaC4KICAgICAgICAgICAgICAgICAgICAkdF92YWwgPSAkcmVjLT52YWw7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkdF92YWwpICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0X3ZhbCA9IFskdF92YWxdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7CiAgICAgICAgICAgICAgICAgICAgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHRfdmFsIGFzICR2YWx1ZSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzX3NjYWxhcigkdmFsdWUpIHx8ICcnID09PSAoc3RyaW5nKSAkdmFsdWUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoZXNbXSA9ICJGSU5EX0lOX1NFVCg/LCB7JGFsaWFzfS5kYXRhKSI7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gKHN0cmluZykgJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiggIWNvdW50KCRtYXRjaGVzKSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub2RhdGEnKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJygnIC4gaW1wbG9kZSgnIE9SICcsICRtYXRjaGVzKSAuICcpJzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDg6IC8vIGRhdGUKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX3NjYWxhcigkcmVjLT52YWwpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fbm9kYXRhJykpOwogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7CiAgICAgICAgICAgICAgICAgICAgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gKHN0cmluZykgJHJlYy0+dmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBzb21lIGluZm9ybWF0aW9uCiAgICAgICAgICAgIGlmKCAkbl9jb25kcyA9PSAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fbm9kYXRhJykpOwoKICAgICAgICAgICAgLy8gYnVpbGQgdGhlIHF1ZXJ5CiAgICAgICAgICAgICRzcWwgLj0gaW1wbG9kZSgnICcsJGpvaW5zKTsKICAgICAgICAgICAgJHNxbCAuPSAnIFdIRVJFICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAgICAgICAgICRzcWwgLj0gJyBMSU1JVCAyJzsKICAgICAgICAgICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJHNxbCwkcGFybXMpOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXApICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kYmVycm9yJykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCBjb3VudCgkdG1wKSA+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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiRhY3Rpb24gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnYWN0aW9uJyk7CgppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnbGlzdHVzZXJzJyApICkgcmV0dXJuOwoKIyR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VyaGlzdG9yeScpOwokdXNlcmlkID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VzZXJfaWQnKTsKJHBhZ2VsaW1pdHMgPSBhcnJheSgpOwokcGFnZWxpbWl0c1snNSddID0gNTsKJHBhZ2VsaW1pdHNbJzEwJ10gPSAxMDsKJHBhZ2VsaW1pdHNbJzI1J10gPSAyNTsKJHBhZ2VsaW1pdHNbJzUwJ10gPSA1MDsKJHBhZ2VsaW1pdHNbJzEwMCddID0gMTAwOwokcGFnZWxpbWl0c1snMjUwJ10gPSAyNTA7CiRwYWdlbGltaXRzWyc1MDAnXSA9IDUwMDsKCiRkYXRlbGlzdCA9IGFycmF5KCk7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9hbGxyZWNvcmRzJyldID0gLTE7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmVob3Vyb2xkJyldID0gJzFoJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX3NpeGhvdXJvbGQnKV0gPSAnNmgnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdHdlbHZlaG91cm9sZCcpXSA9ICcxMmgnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25lZGF5b2xkJyldID0gJzFkJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZXdlZWtvbGQnKV0gPSAnMXcnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdHdvd2Vla3NvbGQnKV0gPSAnMncnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25lbW9udGhvbGQnKV0gPSAnMW0nOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdGhyZWVtb250aHNvbGQnKV0gPSAnM20nOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfc2l4bW9udGhzb2xkJyldID0gJzZtJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZXllYXJvbGQnKV0gPSAnMXknOwoKJHNvcnRvcmRlcnMgPSBhcnJheSgpOwokc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX2RhdGVfZGVzYycpXSA9ICdyZWZkYXRlIERFU0MnOwokc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX2RhdGVfYXNjJyldID0gJ3JlZmRhdGUgQVNDJzsKJHNvcnRvcmRlcnNbJHRoaXMtPkxhbmcoJ3NvcnRvcmRlcl9hY3Rpb25fZGVzYycpXSA9ICdhY3Rpb24gREVTQyc7CiRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfYWN0aW9uX2FzYycpXSA9ICdhY3Rpb24gQVNDJzsKJHNvcnRvcmRlcnNbJHRoaXMtPkxhbmcoJ3NvcnRvcmRlcl9pcGFkZHJlc3NfZGVzYycpXSA9ICdpcGFkZHJlc3MgREVTQyc7CiRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfaXBhZGRyZXNzX2FzYycpXSA9ICdpcGFkZHJlc3MgQVNDJzsKaWYoICR1c2VyaWQgPT0gJycgKSB7CiAgICAkc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX3VzZXJuYW1lX2Rlc2MnKV0gPSAndXNlcm5hbWUgREVTQyc7CiAgICAkc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX3VzZXJuYW1lX2FzYycpXSA9ICd1c2VybmFtZSBBU0MnOwp9CgokZXZlbnR0eXBlcyA9IGFycmF5KCk7CiRldmVudHR5cGVzWydhbGwnXSA9ICdhbGwnOwokZXZlbnR0eXBlc1snZmFpbCddID0gJ2ZhaWwnOwokZXZlbnR0eXBlc1snbG9naW4nXSA9ICdsb2dpbic7CiRldmVudHR5cGVzWydsb2dvdXQnXSA9ICdsb2dvdXQnOwokZXZlbnR0eXBlc1snZXhwaXJlJ10gPSAnZXhwaXJlJzsKJGV2ZW50dHlwZXNbJ3Jlc2V0cHcnXSA9ICdyZXNldHB3JzsKJGV2ZW50dHlwZXNbJ2dldHVzZXJuYW1lJ10gPSAnZ2V0dXNlcm5hbWUnOwokZXZlbnR0eXBlc1snZm9yZ290cHcnXSA9ICdmb3Jnb3Rwdyc7CiRldmVudHR5cGVzWydpbml0X3ZlcmlmeSddID0gJ2luaXRfdmVyaWZ5JzsKJGV2ZW50dHlwZXNbJ3ZlcmlmeSBjb21wbGV0ZSddID0gJ3ZlcmlmeSBjb21wbGV0ZSc7CiRldmVudHR5cGVzWydhZG1pbiBhZGQgdXNlciddID0gJ2FkbWluIGFkZCB1c2VyJzsKJGV2ZW50dHlwZXNbJ2FkbWluIGNoYW5nZSBzZXR0aW5ncyddID0gJ2FkbWluIGNoYW5nZSBzZXR0aW5ncyc7CgppZiggaXNzZXQoICRwYXJhbXNbJ3N1Ym1pdHVzZXJoaXN0b3J5J10gKSApCnsKICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3BhZ2VsaW1pdCddICkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfcGFnZWxpbWl0JywkcGFyYW1zWydpbnB1dF9wYWdlbGltaXQnXSk7CiAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9zb3J0b3JkZXInXSApICkgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3NvcnRvcmRlcicsJHBhcmFtc1snaW5wdXRfc29ydG9yZGVyJ10pOwogIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZXZlbnR0eXBlJ10gKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9ldmVudHR5cGUnLCRwYXJhbXNbJ2lucHV0X2V2ZW50dHlwZSddKTsKICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2ZpbHRlcl9kYXRlJ10gKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9kYXRlJywkcGFyYW1zWydpbnB1dF9maWx0ZXJfZGF0ZSddKTsKICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2dyb3VwX2lwJ10gKSApICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZ3JvdXBfaXAnLCRwYXJhbXNbJ2lucHV0X2dyb3VwX2lwJ10pOwogIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfdXNlcm5hbWVfcmVnZXgnXSApICkgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3VzZXJuYW1lX3JlZ2V4JywkcGFyYW1zWydpbnB1dF91c2VybmFtZV9yZWdleCddKTsKICBpZihpc3NldCgkcGFyYW1zWydyZXR1cm5fdG8nXSkgJiYgJHBhcmFtc1sncmV0dXJuX3RvJ10gPT09ICdkZWZhdWx0YWRtaW4nKQogIHsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIFsneHRfYWN0aXZldGFiJyA9Pid1c2VyaGlzdG9yeSddKTsKICB9CiAgCiAgI2lmKCAhJHVzZXJpZCApICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwndXNlcmhpc3RvcnknKTsKfQplbHNlIGlmKCBpc3NldCggJHBhcmFtc1sncmVzZXQnXSApICkKewogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9wYWdlbGltaXQnLDEwKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZXZlbnR0eXBlJywnYWxsJyk7CiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2RhdGUnLCctMScpOyAvLyB0b2RvCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2dyb3VwX2lwJywwKTsgLy8gdG9kbwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9zb3J0b3JkZXInLCdyZWZkYXRlIERFU0MnKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfdXNlcm5hbWVfcmVnZXgnLCcnKTsKICBpZihpc3NldCgkcGFyYW1zWydyZXR1cm5fdG8nXSkgJiYgJHBhcmFtc1sncmV0dXJuX3RvJ10gPT09ICdkZWZhdWx0YWRtaW4nKQogIHsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIFsneHRfYWN0aXZldGFiJyA9Pid1c2VyaGlzdG9yeSddKTsKICB9Cn0KCiRpbnB1dF9wYWdlbGltaXQgPSAoaW50KSR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9wYWdlbGltaXQnLDEwKTsKJGlucHV0X3NvcnRvcmRlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9zb3J0b3JkZXInLCdyZWZkYXRlIERFU0MnKTsKJGlucHV0X2V2ZW50dHlwZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9ldmVudHR5cGUnLCdhbGwnKTsKJGlucHV0X2ZpbHRlcl9kYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2RhdGUnLCctMScpOwokaW5wdXRfZ3JvdXBfaXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZ3JvdXBfaXAnLDApOwokaW5wdXRfdXNlcm5hbWVfcmVnZXggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfdXNlcm5hbWVfcmVnZXgnKTsKCi8vIEFkZCB0aGUgdXNlciBpbmZvIHRvIHNtYXJ0eQppZiggJHVzZXJpZCAhPSAnJyApIHsKICAgIC8vJHRoaXMtPlNldEVuY3J5cHRpb25LZXkoJHVzZXJpZCk7CiAgICAkcmVzdWx0cyA9ICR0aGlzLT5HZXRVc2VySW5mbygkcGFyYW1zWyd1c2VyX2lkJ10pOwogICAgJHVzZXJpbmZvID0gJyc7CiAgICBpZiggJHJlc3VsdHNbMF0gPT09IFRSVUUgKSAkdXNlcmluZm8gPSAkcmVzdWx0c1sxXTsKICAgIGZvcmVhY2goICR1c2VyaW5mbyBhcyAkayA9PiAkdiApIHsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3VzZXJfJy4kaywkdik7CiAgICB9CiAgICAkcHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoJHBhcmFtc1sndXNlcl9pZCddKTsKICAgIGZvcmVhY2goICRwcm9wcyBhcyAkb25lcHJvcCApIHsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3VzZXJwcm9wXycuJG9uZXByb3BbJ3RpdGxlJ10sJG9uZXByb3BbJ2RhdGEnXSk7CiAgICB9Cn0KCi8vIGZpZ3VyZSBvdXQgd2hhdCBwYWdlIHdlJ3JlIG9uCiRwYWdlbnVtYmVyID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3BhZ2VudW1iZXInLDEpOwokc3RhcnRlbGVtZW50ID0gKCRwYWdlbnVtYmVyLTEpICogJGlucHV0X3BhZ2VsaW1pdDsKCi8vCi8vIEFkZCB0aGUgaGlzdG9yeSB0byBzbWFydHkKLy8KJHdoZXJlID0gYXJyYXkoKTsKJHBhcm1zID0gYXJyYXkoKTsKJHF1ZXJ5MSA9ICJTRUxFQ1QgQS4qLEIudXNlcm5hbWUKICAgICAgICAgICAgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2hpc3RvcnkgQSwKICAgICAgICAgICAgICAgICAgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3VzZXJzIEIKICAgICAgICAgICAgV0hFUkUgQS51c2VyaWQgPSBCLmlkIjsKJHF1ZXJ5MiA9ICJTRUxFQ1QgQ09VTlQoQS51c2VyaWQpIEFTIGNvdW50CiAgICAgICAgICAgICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19oaXN0b3J5IEEsCiAgICAgICAgICAgICAgICAgICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc191c2VycyBCCiAgICAgICAgICAgIFdIRVJFIEEudXNlcmlkID0gQi5pZCI7CmlmKCAkdXNlcmlkID4gMSApIHsKICAgICR3aGVyZVtdID0gJ3VzZXJpZCA9ID8nOwogICAgJHBhcm1zW10gPSAkdXNlcmlkOwp9CmVsc2UgewogICAgLy8gb25seSB1c2UgdGhlIHVzZXJuYW1lIHJlZ2V4IGlmIHRoZSB1c2VyaWQgaXMgZW1wdHkKICAgIGlmKCAkaW5wdXRfdXNlcm5hbWVfcmVnZXggIT0gJycgKSB7CiAgICAgICAgJHdoZXJlW10gPSAndXNlcm5hbWUgUkVHRVhQID8nOwogICAgICAgICRwYXJtc1tdID0gJGlucHV0X3VzZXJuYW1lX3JlZ2V4OwogICAgfQp9CmlmKCAkaW5wdXRfZXZlbnR0eXBlICE9ICdhbGwnICkgewogICAgJHdoZXJlW10gPSAnYWN0aW9uID0gPyc7CiAgICAkcGFybXNbXSA9ICRpbnB1dF9ldmVudHR5cGU7Cn0KaWYoICRpbnB1dF9maWx0ZXJfZGF0ZSAhPSAtMSApIHsKICAgICRkYXRlID0gJyc7CiAgICBzd2l0Y2goICRpbnB1dF9maWx0ZXJfZGF0ZSApIHsKICAgIGNhc2UgJzFoJzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSBob3VyIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnNmgnOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCc2IGhvdXJzIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMTJoJzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMTIgaG91cnMgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcxZCc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgZGF5IGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMXcnOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCcxIHdlZWsgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcydyc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzIgd2Vla3MgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcxbSc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgbW9udGggYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICczbSc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzMgbW9udGhzIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnNm0nOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCc2IG1vbnRocyBhZ28nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJzF5JzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSB5ZWFyIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgfQogICAgaWYoICRkYXRlICE9ICcnICkgewogICAgICAgICR3aGVyZVtdID0gJ3JlZmRhdGUgPiA/JzsKICAgICAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZGF0ZSksIiciKTsKICAgIH0KfQppZiggY291bnQoJHdoZXJlKSA+IDAgKSB7CiAgICAkcXVlcnkxIC49ICcgQU5EICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAkcXVlcnkyIC49ICcgQU5EICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7Cn0KaWYoICRpbnB1dF9ncm91cF9pcCA9PSAxICkgewogICAgJHF1ZXJ5MSAuPSAnIEdST1VQIEJZIGlwYWRkcmVzcyc7CiAgICAkcXVlcnkyIC49ICcgR1JPVVAgQlkgaXBhZGRyZXNzJzsKfQokcXVlcnkxIC49ICIgT1JERVIgQlkgIi4kaW5wdXRfc29ydG9yZGVyOwokcXVlcnkxIC49ICIgTElNSVQgJHN0YXJ0ZWxlbWVudCwkaW5wdXRfcGFnZWxpbWl0IjsKCi8vIE5vdyBnZXQgdGhlIGNvdW50LCBhbmQgbnVtYmVyIG9mIHBhZ2VzCiR0bXByb3cgPSAkZGItPkdldFJvdyggJHF1ZXJ5MiwgJHBhcm1zICk7CiRyZWNvcmRjb3VudCA9ICR0bXByb3dbJ2NvdW50J107CiRwYWdlY291bnQgPSAoaW50KWNlaWwoJHJlY29yZGNvdW50IC8gJGlucHV0X3BhZ2VsaW1pdCk7CiRzbWFydHktPmFzc2lnbigncmVjb3JkY291bnQnLCRyZWNvcmRjb3VudCk7CgovLyBzb21lIHBhZ2luYXRpb24gdmFyaWFibGVzIHRvIHNtYXJ0eS4KaWYoICRwYWdlbnVtYmVyID09IDEgKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3ByZXZwYWdlJywnPCcpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHBhZ2UnLCc8PCcpOwp9CmVsc2UgewogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2cGFnZScsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJzwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdwYWdlbnVtYmVyJz0+JHBhZ2VudW1iZXItMSwgJ3VzZXJfaWQnPT4kdXNlcmlkLCd4dF9hY3RpdmV0YWInPT4ndXNlcmhpc3RvcnknKSkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHBhZ2UnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCc8PCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3BhZ2VudW1iZXInPT4xLCAndXNlcl9pZCc9PiR1c2VyaWQsJ3h0X2FjdGl2ZXRhYic9Pid1c2VyaGlzdG9yeScpKSk7Cn0KaWYoICRwYWdlbnVtYmVyID49ICRwYWdlY291bnQgKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywnPicpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdsYXN0cGFnZScsJz4+Jyk7Cn0KZWxzZSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3BhZ2VudW1iZXInPT4kcGFnZW51bWJlcisxLCAndXNlcl9pZCc9PiR1c2VyaWQsJ3h0X2FjdGl2ZXRhYic9Pid1c2VyaGlzdG9yeScpKSk7CgogICAgJHNtYXJ0eS0+YXNzaWduKCdsYXN0cGFnZScsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJz4+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgncGFnZW51bWJlcic9PiRwYWdlY291bnQsICd1c2VyX2lkJz0+JHVzZXJpZCwneHRfYWN0aXZldGFiJz0+J3VzZXJoaXN0b3J5JykpKTsKCn0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlbnVtYmVyJywkcGFnZW51bWJlcik7CiRzbWFydHktPmFzc2lnbigncGFnZWNvdW50JywkcGFnZWNvdW50KTsKJHNtYXJ0eS0+YXNzaWduKCdvZnRleHQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfb2YnKSk7CmlmKCAkdXNlcmlkID09ICcnICkgJHNtYXJ0eS0+YXNzaWduKCdtdWx0aXVzZXInLDEpOwoKLy8gVGhlIGRhdGFiYXNlIHF1ZXJ5CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5MSwgJHBhcm1zICk7CiRyb3dhcnJheSA9IGFycmF5KCk7CiRyb3djbGFzcyA9ICdyb3cxJzsKd2hpbGUoICRkYnJlc3VsdCAmJiAhJGRicmVzdWx0LT5FT0YgKSB7CiAgICAkZmllbGRzID0gJGRicmVzdWx0LT5maWVsZHM7CiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CiAgICBmb3JlYWNoKCAkZmllbGRzIGFzICRrZXkgPT4gJHZhbHVlICkgewogICAgICAgICRvbmVyb3ctPiRrZXkgPSAkdmFsdWU7CiAgICB9CgogICAgLy8gZml4IHNvbWUgZmllbGRzIHVwCiAgICAkb25lcm93LT5yZWZkYXRlID0gJGRiLT5Vbml4VGltZVN0YW1wKCRvbmVyb3ctPnJlZmRhdGUpOwogICAgaWYoICRvbmVyb3ctPmlwYWRkcmVzcyA9PSAnJyApICRvbmVyb3ctPmlwYWRkcmVzcyA9ICR0aGlzLT5MYW5nKCd1bmtub3duJyk7CiAgICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCiAgICAkcm93YXJyYXlbXSA9ICRvbmVyb3c7CiAgICAkcm93Y2xhc3MgPSAoJHJvd2NsYXNzID09ICdyb3cxJykgPyAncm93MicgOiAncm93MSc7CiAgICAkZGJyZXN1bHQtPk1vdmVOZXh0KCk7Cn0KCmlmKCBjb3VudCgkcm93YXJyYXkpID09IDAgKSAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5MYW5nKCdpbmZvX25vaGlzdG9yeWRldGVjdGVkJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZWNvcmRzZm91bmQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfcmVjb3Jkc2ZvdW5kJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2xlZ2VuZF9maWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0ZXInKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfbGVnZW5kX2dyb3Vwc29ydCcsJHRoaXMtPkxhbmcoJ3RpdGxlX2dyb3Vwc29ydCcpKTsKCmlmKCRhY3Rpb24gPT0gJ2RlZmF1bHRhZG1pbicpCnsKICAkc21hcnR5LT5hc3NpZ24oJ3VoX2Zvcm1zdGFydCcsICR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsICd1c2VyaGlzdG9yeScsICRyZXR1cm5pZCwgWydyZXR1cm5fdG8nID0+ICdkZWZhdWx0YWRtaW4nLCAneHRfYWN0aXZldGFiJyA9Pid1c2VyaGlzdG9yeSddCiAgKSk7Cn0KZWxzZQp7CiAgJHNtYXJ0eS0+YXNzaWduKCd1aF9mb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ3VzZXJoaXN0b3J5JykpOwp9Cgokc21hcnR5LT5hc3NpZ24oJ3VoX2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0dXNlcmhpc3RvcnknLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3Jlc2V0JywkdGhpcy0+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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnZm9yY2VuZXdwd3RlbXBsYXRlJywnTUFNUzo6Zm9yY2UgbmV3IHBhc3N3b3JkJyk7CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRlbXBsYXRlKTsKJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ3VzZXJfZm9yY2VuZXdwdycsJHJldHVybmlkLCRwYXJhbXMpKTsKJHRwbC0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCnRyeSB7CiAgICAkdWlkID0gKGludCkgeHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCd1aWQnKTsKICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpKTsKICAgICR1aWQyID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIGlmKCAkdWlkICE9ICR1aWQyICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJykpOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICAkcHcxID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21hbXNfcGFzc3dvcmQnKSk7CiAgICAgICAgJHB3MiA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoeHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdtYW1zX3JlcGVhdHBhc3N3b3JkJykpOwogICAgICAgIGlmKCAkcHcxICE9ICRwdzIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnKSk7CgogICAgICAgIC8vIHNlZSBpZiBpdCBpcyBhIHZhbGlkIHBhc3N3b3JkLgogICAgICAgIGlmKCAhJHRoaXMtPklzVmFsaWRQYXNzd29yZCgkcHcxICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXNzd29yZCcpKTsKCiAgICAgICAgLy8gbm93IHNlZSBpZiB0aGUgcGFzc3dvcmQgaGFzIGFjdHVhbGx5IGNoYW5nZWQuCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkZW5jcnlwdGVkID0gJHRoaXMtPkVuY3J5cHRQYXNzd29yZCgkdWlkLCRwdzEpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgcGFzc3dvcmQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkc3RvcmVkID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR1aWQpKTsKICAgICAgICBpZiggJGVuY3J5cHRlZCA9PSAkc3RvcmVkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9wYXNzd29yZG5vdGNoYW5nZWQnKSk7CgogICAgICAgIC8vIHNldCB0aGUgcGFzc3dvcmQKICAgICAgICAkdGhpcy0+U2V0VXNlclBhc3N3b3JkKCR1aWQsJHB3MSk7CgogICAgICAgIC8vIGRpc2FibGUgdGhlIGZvcmNlIHJlc2V0IGZsYWcKICAgICAgICAkdGhpcy0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLEZBTFNFKTsKCiAgICAgICAgLy8gYW5kIHJlZGlyZWN0IG91dCBvIGhlcmUuCiAgICAgICAgaWYoICgkcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmV0dXJudG8nKSkgKSB7CiAgICAgICAgICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcmV0dXJudG8pOwogICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgfQogICAgICAgIGlmKCAoJHVybCA9ICR0aGlzLT5HZXRQb3N0TG9naW5VUkwoKSkgKSB7CiAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCAoJHRwbHN0ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nKSkgKSB7CiAgICAgICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbHN0cik7CiAgICAgICAgICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKICAgICAgICAgICAgJGdyb3VwbmFtZSA9ICR0aGlzLT5HZXRHcm91cE5hbWUoICRncm91cHNbMF1bJ2dyb3VwaWQnXSApOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwJywkZ3JvdXBuYW1lKTsKICAgICAgICAgICAgJHRtcCA9ICR0cGwtPmZldGNoKCk7CiAgICAgICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwogICAgICAgICAgICAgICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGFsbCBlbHNlIGZhaWxzLCByZWRpcmVjdCBiYWNrIHRvIG91ciBjdXJyZW4gcGFnZS4KICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZXR1cm5pZCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBvbiBlcnJvciwgd2UganVzdCBkaXNwbGF5IGEgbWVzc2FnZS4KICAgICR0cGwtPmFzc2lnbignZXJyb3InLCRlLT5HZXRNZXNzYWdlKCkpOwp9CgokdHBsLT5kaXNwbGF5KCk7]]></data>
	</file>
	<file>
	  <filename>/action.verifycode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1c2VybmFtZSA9ICRmYXRhbCA9ICRlcnJvciA9ICRtZXNzYWdlID0gbnVsbDsKJGRvX2Zvcm0gPSAxOwokdWlkID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VpZCcpOwokY29kZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdjb2RlJyk7CiR1c2VybmFtZV9pc19lbWFpbCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcsMCk7CiRwYXNzd29yZDEgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19wYXNzd29yZDEnKTsKJHBhc3N3b3JkMiA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX3Bhc3N3b3JkMicpOwokdGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2ZvcmdvdHB3dmVyaWZ5dGVtcGxhdGUnLCdNQU1TOjpmb3Jnb3QgcGFzc3dvcmQgdmVyaWZ5Jyk7CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRlbXBsYXRlKTsKCnRyeSB7CiAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICBpZiggISRjb2RlICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgJHJlcyA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgICR1aW5mbyA9ICRyZXNbMV07CiAgICBpZiggIWlzX2FycmF5KCR1aW5mbyApKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKSk7CiAgICBpZiggJHVpbmZvWydkaXNhYmxlZCddICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWNjb3VudGRpc2FibGVkJykpOwogICAgaWYoIHRpbWUoKSA+IHN0cnRvdGltZSgkdWluZm9bJ2V4cGlyZXMnXSkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZXhwaXJlZCcpKTsKICAgICR1c2VybmFtZSA9ICR1aW5mb1sndXNlcm5hbWUnXTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19hZnRlcnZlcmlmeSddKSApIHsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21hbXNfYWZ0ZXJ2ZXJpZnknLDEpOwogICAgICAgICRkb19mb3JtID0gMDsKICAgICAgICAkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdpbmZvX3Bhc3N3b3JkX3Jlc2V0Jyk7CiAgICB9CiAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICBpZiggIVx4dF91dGlsczo6dmFsaWRfZm9ybV9jc3JmKCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3Jfc2VjdXJpdHknKSApOwogICAgICAgICR0ZW1wY29kZSA9ICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAgICAgaWYoICEkdGVtcGNvZGUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wY29kZW5vdGZvdW5kJykpOwoKICAgICAgICAkY29kZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX2NvZGUnKTsKICAgICAgICAkcGFzc3dvcmQxID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19wYXNzd29yZDEnKSk7CiAgICAgICAgJHBhc3N3b3JkMiA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfcGFzc3dvcmQyJykpOwogICAgICAgIGlmKCAhJHRoaXMtPklzVmFsaWRQYXNzd29yZCgkcGFzc3dvcmQxKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgICAgIGlmKCAkcGFzc3dvcmQxICE9ICRwYXNzd29yZDIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnKSk7CiAgICAgICAgaWYoICRjb2RlICE9ICR0ZW1wY29kZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGNvZGUnKSk7CiAgICAgICAgJHRoaXMtPlNldFVzZXJQYXNzd29yZCgkdWlkLCRwYXNzd29yZDEpOwogICAgICAgICR0aGlzLT5SZW1vdmVVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAgICAgJHVzZXJuYW1lID0gJHRoaXMtPkdldFVzZXJuYW1lKCR1aWQpOwoKICAgICAgICAvLyBhbmQgc2VuZCBhbiBldmVudAogICAgICAgICRldmVudF9wYXJhbXMgPSBhcnJheSgpOwogICAgICAgICRldmVudF9wYXJhbXNbJ25hbWUnXSA9ICR1c2VybmFtZTsKICAgICAgICAkZXZlbnRfcGFyYW1zWydpZCddID0gJHVpZDsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uVXBkYXRlVXNlcicsJGV2ZW50X3BhcmFtcyk7CgogICAgICAgIC8vIGFuZCBhdWRpdCBpdAogICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwnU3VjY2Vzc2Z1bGx5IGNoYW5nZWQgcGFzc3dvcmQgdmlhIGZvcmdvdHB3Jyk7CiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsJ3Jlc2V0cHcnKTsKCiAgICAgICAgLy8gYXV0by1sb2dpbiBpZiBlbmFibGVkCiAgICAgICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdsb2dpbl9hZnRlcl92ZXJpZnknKSApCiAgICAgICAgewogICAgICAgICAgJHJlcyA9ICR0aGlzLT5Mb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZDEpOwogICAgICAgICAgaWYoICEkcmVzWzBdICkKICAgICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXNbMV0pOwogICAgICAgICAgfQogICAgICAgICAgJHVpZCA9ICRyZXNbMF07CiAgICAgICAgfQoKICAgICAgICAvLyBhbmQgcmVkaXJlY3Qgc29tZXdoZXJlCiAgICAgICAgJHBhZ2V0cGwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVydmVyaWZ5Jyk7CiAgICAgICAgaWYoICRwYWdldHBsICkgewogICAgICAgICAgICAkdHBsMiA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kcGFnZXRwbCk7CiAgICAgICAgICAgICR0cGwyLT5hc3NpZ24oJ3VzZXJuYW1lJywkZXZlbnRfcGFyYW1zWyduYW1lJ10pOwogICAgICAgICAgICAkdHBsMi0+YXNzaWduKCd1aWQnLCR1aWQpOwogICAgICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAgICAgICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICAgICAgICAgJHRwbDItPmFzc2lnbignZ3JvdXBuYW1lJywkZ3JvdXBuYW1lKTsKICAgICAgICAgICAgJHBhZ2UgPSAkdHBsMi0+ZmV0Y2goKTsKICAgICAgICAgICAgJGRlc3QgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcGFnZSwkcmV0dXJuaWQpOwogICAgICAgICAgICBpZiggISRkZXN0ICkgewogICAgICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnQ291bGQgbm90IGNvbnZlcnQgdGVtcGxhdGUgJnF1b3Q7Jy4kcGFnZXRwbC4nJnF1b3Q7IHRvIGEgcGFnZSBpZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkZGVzdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIHJlZGlyZWN0IGFmdGVyIFBPU1QKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJ21hbXNfYWZ0ZXJ2ZXJpZnknPT4xLCd1aWQnPT4kdWlkLCdjb2RlJz0+J19faW52YWxpZF9fJyk7CiAgICAgICAgICAgICR0aGlzLT5yZWRpcmVjdCgnY250bnQwMDEnLCd2ZXJpZnljb2RlJywkcmV0dXJuaWQsJHBhcm1zKTsKICAgICAgICB9CiAgICB9Cn0KY2F0Y2goIFxSdW50aW1lRXhjZXB0aW9uICRlICkgewogICAgJGVycm9yID0gMTsKICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKfQpjYXRjaCggXExvZ2ljRXhjZXB0aW9uICRlICkgewogICAgJGRvX2Zvcm0gPSAwOwogICAgJGVycm9yID0gMTsKICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKfQoKCi8vIGNyZWF0ZSB0aGUgdGVtcGxhdGUKaWYoICRkb19mb3JtICkgewogICAgJHBhcm1zID0gYXJyYXkoJ3VpZCc9PiR1aWQsJ2NvZGUnPT4kY29kZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCdjbnRudDAxJywndmVyaWZ5Y29kZScsJHJldHVybmlkLCRwYXJtcykpOwogICAgJHRwbC0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKfQokdHBsLT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiR0cGwtPmFzc2lnbignbWF4X3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiR0cGwtPmFzc2lnbignbWF4X3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX2lzX2VtYWlsJywkdXNlcm5hbWVfaXNfZW1haWwpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwokdHBsLT5hc3NpZ24oJ3Bhc3N3b3JkMScsJHBhc3N3b3JkMSk7CiR0cGwtPmFzc2lnbigncGFzc3dvcmQyJywkcGFzc3dvcmQyKTsKJHRwbC0+YXNzaWduKCdjb2RlJywkY29kZSk7CiR0cGwtPmFzc2lnbigndWlkJywkdWlkKTsKJHRwbC0+YXNzaWduKCdlcnJvcicsJGVycm9yKTsKJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbWVzc2FnZSk7CiR0cGwtPmRpc3BsYXkoKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.verifyonly.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR0aXRsZSA9ICRlcnJvciA9ICRtc2cgPSBudWxsOwoKdHJ5IHsKICAgICR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJyk7CiAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgICR1aW5mbyA9ICRyZXNbMV07CiAgICBpZiggIWlzX2FycmF5KCR1aW5mbyApKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgIGlmKCAkdWluZm9bJ2Rpc2FibGVkJ10gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjY291bnRkaXNhYmxlZCcpKTsKICAgIGlmKCB0aW1lKCkgPiBzdHJ0b3RpbWUoJHVpbmZvWydleHBpcmVzJ10pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZXhwaXJlZCcpKTsKICAgIHVuc2V0KCRyZXMpOwogICAgJGNvZGUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY29kZScpOwogICAgaWYoICEkY29kZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgaWYoICRjb2RlID09ICd4eHh4JyApICRjb2RlID0gbnVsbDsKICAgICRkYmNvZGUgPSAkdGhpcy0+R2V0VXNlclRlbXBDb2RlKCR1aWQpOwogICAgaWYoICEkZGJjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGNvZGVub3Rmb3VuZCcgKSApOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggIVx4dF91dGlsczo6dmFsaWRfZm9ybV9jc3JmKCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3Jfc2VjdXJpdHknKSApOwoKICAgICAgICAgICAgJHRpdGxlID0gJHRoaXMtPkxhbmcoJ2FjY291bnRfdmVyaWZpY2F0aW9uJyk7CiAgICAgICAgICAgICRtc2cgPSBudWxsOwogICAgICAgICAgICAkZXJyb3IgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmKCAhJGRiY29kZSB8fCAkZGJjb2RlICE9ICRjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkY29kZScpKTsKCiAgICAgICAgICAgIC8vIHN1Y2Nlc3MgY29uZGl0aW9uCiAgICAgICAgICAgICR0aGlzLT5SZW1vdmVVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAgICAgICAgICR0aGlzLT5Gb3JjZVZlcmlmeSgkdWlkLEZBTFNFKTsKICAgICAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLCdTdWNjZXNzZnVsbHkgdmVyaWZpZWQgaGlzL2hlciBpbmZvcm1hdGlvbicpOwogICAgICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwndmVyaWZ5IGNvbXBsZXRlJyk7CgogICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soICdNQU1TOjpBZnRlclZlcmlmeScsIFsndWlkJz0+JHVpZCBdICk7CgogICAgICAgICAgICAkZXZlbnRfcGFybXMgPSBbXTsKICAgICAgICAgICAgJGV2ZW50X3Bhcm1zWydpZCddID0gJHVpZDsKICAgICAgICAgICAgJGV2ZW50X3Bhcm1zWyduYW1lJ10gPSAkdWluZm9bJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywkZXZlbnRfcGFybXMpOwoKICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBzYXZlZCBkYXRhIEFORCB3ZSBjYW4gbG9naW4gYWZ0ZXIgdmVyaWZ5CiAgICAgICAgICAgIC8vIHRoZW4gbG9nIHRoZSB1c2VyIGluLgogICAgICAgICAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xvZ2luX2FmdGVyX3ZlcmlmeScpICkgewogICAgICAgICAgICAgICAgJGRhdGEgPSBcbWFtc191dGlsczo6cmV0cmlldmVfdGVtcF9sb2dpbmRhdGEoKTsKICAgICAgICAgICAgICAgIGlmKCAkZGF0YSApIHsKICAgICAgICAgICAgICAgICAgICAkcmVzID0gJHRoaXMtPkxvZ2luKCAkZGF0YS0+dXNlcm5hbWUsICRkYXRhLT5wYXNzd29yZCwgJGRhdGEtPm9ubHlncm91cHMpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJHJlc1swXSApIHRocm93IG5ldyBcTUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uKCRyZXNbMV0pOwogICAgICAgICAgICAgICAgICAgICR1aWQgPSAkcmVzWzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIHJlZGlyZWN0CiAgICAgICAgICAgICRwYWdlID0gXG1hbXNfdXRpbHM6OnJlc29sdmVfcHJlZnRwbF90b19wYWdlKCdwYWdlaWRfYWZ0ZXJ2ZXJpZnknLCR1aWQpOwogICAgICAgICAgICBpZiggJHBhZ2UgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlKTsKCiAgICAgICAgICAgIC8vIG5vIHBhZ2V0ZW1wbGF0ZSBvciBvdGhlciBlcnJvciBtZWFucyBubyByZWRpcmVjdAogICAgICAgICAgICAvLyBmYWxsIHRocm91Z2ggdG8gZGlzcGxheWluZyBhIG1lc3NhZ2UKICAgICAgICAgICAgJG1zZyA9ICR0aGlzLT5MYW5nKCdtc2dfdmVyaWZpY2F0aW9uX2NvbXBsZXRlJyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkbXNnID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgJGVycm9yID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPlNob3dGb3JtYXR0ZWRNZXNzYWdlKCRtc2csJGVycm9yLCR0aXRsZSk7CiAgICAgICAgcmV0dXJuOwogICAgfSAvLyBzdWJtaXQKCiAgICAvLyBkaXNwbGF5IHRoZSBmb3JtCiAgICAkdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ3ZlcmlmeWZvcm10ZW1wbGF0ZScsJ01BTVM6OnZlcmlmeV9mb3JtJyk7CiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VpZCcsJHVpZCk7CiAgICAkdHBsLT5hc3NpZ24oJ2NvZGUnLCRjb2RlKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICRtc2cgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgJGVycm9yID0gdHJ1ZTsKICAgICR0aGlzLT5TaG93Rm9ybWF0dGVkTWVzc2FnZSgkbXNnLCRlcnJvciwkdGl0bGUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.viewuser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1aWQgPSAoaW50KSR0aGlzLT5Mb2dnZWRJbklkKCk7CiR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJywkdWlkKTsKaWYoICR1aWQgPCAxICkgcmV0dXJuOwokdG1wID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwppZiggJHRtcFswXSA9PT0gRkFMU0UgKSByZXR1cm47CiR1c2VyX2luZm8gPSAkdG1wWzFdOwokdG1wID0gbnVsbDsKJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwppZiggISRncm91cHMgKSByZXR1cm47CgokdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ3ZpZXd1c2VydGVtcGxhdGUnLCdNQU1TOjp2aWV3IHVzZXInKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwokdHBsLT5hc3NpZ24oJ3VzZXJpbmZvJywkdXNlcl9pbmZvKTsKJHRwbC0+YXNzaWduKCdlbWFpbF9hZGRyZXNzJywkdGhpcy0+R2V0RW1haWwoJHVpZCkpOwoKLy8gbm93IHdlIGhhdmUgdGhlIGdyb3Vwcywgd2UgYnVpbGQgYSB1bmlvbiBvZiBhbGwgb2YgdGhlIGdyb3VwcyBwcm9wZXJ0aWVzCiRwcm9wMiA9IGFycmF5KCk7CmZvcmVhY2goICRncm91cHMgYXMgJGdycHJlY29yZCApCnsKICAgICRnaWQgPSAkZ3JwcmVjb3JkWydncm91cGlkJ107CiAgICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ2lkICk7CiAgICAkcHJvcDIgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCAkcHJvcDIsICRwcm9wcmVsYXRpb25zICk7CiAgICB1YXNvcnQoICRwcm9wMiwgYXJyYXkoJ3h0X2FycmF5JywnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JykgKTsKfQoKLy8gbm93IHdlIG1lcmdlIGluIGFsbCBvZiB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbnMKJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKJHByb3AzID0gYXJyYXkoKTsKZm9yZWFjaCggJHByb3AyIGFzICRvbmVwcm9wICkgewogICAgZm9yZWFjaCggJGRlZm5zIGFzICRvbmVkZWZuICkgewogICAgICAgIGlmKCAkb25lZGVmblsnbmFtZSddID09ICRvbmVwcm9wWyduYW1lJ10gKSB7CiAgICAgICAgICAgICRvbmVwcm9wWydwcm9tcHQnXSA9ICRvbmVkZWZuWydwcm9tcHQnXTsKICAgICAgICAgICAgJG9uZXByb3BbJ3R5cGUnXSA9ICRvbmVkZWZuWyd0eXBlJ107CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgICRwcm9wM1tdID0gJG9uZXByb3A7Cn0KCi8vIEFuZCBub3cgbWVyZ2UgaW4gdGhlIHZhbHVlcwokdXNlcnByb3BzID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpOwokcHJvcHNieW5hbWUgPSBhcnJheSgpOwpmb3JlYWNoKCAkcHJvcDMgYXMgJG9uZXByb3AgKSB7CiAgICBpZiggaXNfYXJyYXkoJHVzZXJwcm9wcykgKSB7CiAgICAgICAgZm9yZWFjaCggJHVzZXJwcm9wcyBhcyAkb25ldmFsICkgewogICAgICAgICAgICBpZiggJG9uZXByb3BbJ25hbWUnXSA9PSAkb25ldmFsWyd0aXRsZSddICYmIGlzc2V0KCRvbmV2YWxbJ2RhdGEnXSkgJiYgIWVtcHR5KCRvbmV2YWxbJ2RhdGEnXSkgKSB7CiAgICAgICAgICAgICAgICAkb25lcHJvcFsnZGF0YSddID0gJG9uZXZhbFsnZGF0YSddOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYoIGlzc2V0KCRvbmVwcm9wWydkYXRhJ10pICkgJHByb3BzYnluYW1lWyRvbmVwcm9wWyduYW1lJ11dID0gJG9uZXByb3A7Cn0KCiR0cGwtPmFzc2lnbigndXNlcl9wcm9wZXJ0aWVzJywkcHJvcHNieW5hbWUpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/CMSMS-DEV-2025-MODS.code-workspace</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewoJImZvbGRlcnMiOiBbCgkJewoJCQkicGF0aCI6ICIuLi8uLiIKCQl9CgldLAoJInNldHRpbmdzIjoge30KfQ==]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KcmV0dXJuOwoKLy8gMC4gIENoZWNrIGNtcyB2ZXJzaW9uCmdsb2JhbCAkQ01TX1ZFUlNJT047CmlmKCB2ZXJzaW9uX2NvbXBhcmUoJENNU19WRVJTSU9OLCcyLjAtYmV0YTEnKSA8IDAgKSB7CiAgLy8gbm90IENNUyAyLjAsIGRvbid0IGdvIGFueSBmdXJ0aGVyLgogIHJldHVybjsKfQoKLy8gMS4gIEdldCB0aGUgY29udGVudF9pZAokY29udGVudF9pZCA9IGNtc191dGlsczo6Z2V0X2N1cnJlbnRfcGFnZWlkKCk7CmlmKCAkY29udGVudF9pZCA8PSAwICkgcmV0dXJuOwoKLy8gMi4gIEdldCB0aGUgY29udGVudCBvYmplY3QKaWYoIGNsYXNzX2V4aXN0cygnQ01TQ29udGVudCcpKQokY29udGVudF9vYmogPSBDbXNDb250ZW50T3BlcmF0aW9uczo6bG9hZF9jb250ZW50X2Zyb21faWQoJGNvbnRlbnRfaWQpOwppZiggIWlzX29iamVjdCgkY29udGVudF9vYmopICkKICB7CiAgICByZXR1cm47CiAgfQoKLy8gMy4gIEdldCB0aGUgcHJvcGVydGllcy4KJGNvbnRlbnRfb2JqLT5sb2FkX3Byb3BlcnRpZXMoKTsKJG1hbXNfZ3JvdXBzID0gJGNvbnRlbnRfb2JqLT5nZXRfcHJvcGVydHlfdmFsdWUoJ21hbXNfZ3JvdXBzJyk7CiRtYW1zX3JlZGlyZWN0ID0gJGNvbnRlbnRfb2JqLT5nZXRfcHJvcGVydHlfdmFsdWUoJ21hbXNfcmVkaXJlY3QnKTsKCi8vIGlmIHRoZSBncm91cHMgbGlzdCBpcyBlbXB0eSwgcmV0dXJuLgppZiggJG1hbXNfZ3JvdXBzID09ICcnICkgcmV0dXJuOwoKLy8gY2hlY2sgdGhpcyB1c2VycyBtZW1iZXIgZ3JvdXBzCiRwYXNzZWQgPSBmYWxzZTsKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CmlmKCAkdWlkICkKICB7CiAgICAvLyBnZXQgdGhlIG1lbWJlciBncm91cHMuCiAgICAkdDEgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzKCR1aWQpOwogICAgaWYoIGlzX2FycmF5KCAkdDEgKSApCiAgICAgIHsKCS8vIHVzZXIgaXMgYSBtZW1iZXIgb2YgYXQgbGVhc3Qgb25lIGdyb3VwCgkkbWVtYmVyZ3JvdXBzID0gYXJyYXkoKTsKCWZvcmVhY2goICR0MSBhcyAkcm93ICkKCSAgewoJICAgICRtZW1iZXJncm91cHNbXSA9ICRyb3dbJ2dyb3VwaWQnXTsKCSAgfQoKCS8vIHRlc3QgbWVtYmVyc2hpcC4KCSR0MSA9IGV4cGxvZGUoJywnLCRtYW1zX2dyb3Vwcyk7CglpZiggaW5fYXJyYXkoJHQxLCctMScpICkKCSAgewoJICAgIC8vIGFueSBncm91cCB3aWxsIGRvLgoJICAgICRwYXNzZWQgPSB0cnVlOwoJICB9CgllbHNlCgkgIHsKCSAgICAkdG1wID0gYXJyYXlfaW50ZXJzZWN0KCRtZW1iZXJncm91cHMsJHQyKTsKCSAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgPiAwICkKCSAgICAgIHsKCQkkcGFzc2VkID0gdHJ1ZTsKCSAgICAgIH0KCSAgfQogICAgICB9CiAgfQoKaWYoICEkcGFzc2VkICkKICB7CiAgICBpZiggJG1hbXNfcmVkaXJlY3QgIT0gLTEgKQogICAgICB7CglyZWRpcmVjdF90b19hbGlhcygkbWFtc19yZWRpcmVjdCk7CiAgICAgIH0KICB9CiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_admintab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCd1c2VycycpICkgcmV0dXJuOwovLyBhIGZvcm0gZm9yIHBlcmZvcm1pbmcgdmFyaW91cyBhZG1pbiB0YXNrcwovLyBsaWtlIHJlc2V0dGluZyBleHBpcnkgZGF0ZXMsIGV0YywgZXRjLgoKJHNtYXJ0eS0+YXNzaWduKCdhZHRfc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fYWRtaW50YXNrcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHRfaW5wdXRfaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWN0aXZlX3RhYicsJ2FkbWluJykpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+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+R2V0R3JvdXBMaXN0KCk7CiRncm91cHMgPSBhcnJheV9tZXJnZShbIk5vbmUiID0+IC0xXSwgJGdyb3VwczEgKTsKJHNtYXJ0eS0+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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdncm91cHMnKSl7cmV0dXJuO30KCiRncm91cHMgICA9ICR0aGlzLT5HZXRHcm91cExpc3RGdWxsKFRSVUUpOwoKJHJvd2NsYXNzID0gJ3JvdzEnOwoKJHRwbCAgICAgICAgID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdncm91cGxpc3QudHBsJyk7CiR0aGVtZU9iamVjdCA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOwokcHJvcGRlZm5zICAgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwokbmRlZnMgICAgICAgPSAoaXNfYXJyYXkoJHByb3BkZWZucykgJiYgY291bnQoJHByb3BkZWZucykpID8gY291bnQoJHByb3BkZWZucykgOiAwOwokcm93YXJyYXkgICAgPSBbXTsKCiR0cGwtPmFzc2lnbignZ3JvdXBzZm91bmQnLCAkdGhpcy0+TGFuZygnZ3JvdXBzZm91bmQnKSk7CiR0cGwtPmFzc2lnbignbnByb3BzJywgJG5kZWZzKTsKJHRwbC0+YXNzaWduKCdpZHRleHQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiR0cGwtPmFzc2lnbignbmFtZXRleHQnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHRwbC0+YXNzaWduKCdkZXNjdGV4dCcsICR0aGlzLT5MYW5nKCdkZXNjcmlwdGlvbicpKTsKCmZvcmVhY2goJGdyb3VwcyBhcyAkb25lZ3JvdXApCnsKICBpZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnbGlzdGdyb3VwcycpKQogIHsKICAgICRvbmVyb3cgICAgICAgICA9IG5ldyBzdGRDbGFzcygpOwogICAgJG9uZXJvdy0+aWQgICAgID0gJG9uZWdyb3VwWydpZCddOwogICAgJG9uZXJvdy0+bmFtZSAgID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkb25lZ3JvdXBbJ2dyb3VwbmFtZSddLCBhcnJheSgnZ3JvdXBfaWQnID0+ICRvbmVncm91cFsnaWQnXSkKICAgICk7CiAgICAkb25lcm93LT5kZXNjICAgPSAkb25lZ3JvdXBbJ2dyb3VwZGVzYyddOwogICAgJG9uZXJvdy0+bnVzZXJzID0gbnVsbDsKICAgIGlmKCBpc3NldCgkb25lZ3JvdXBbJ2NvdW50J10pICYmIGlzX251bWVyaWMoJG9uZWdyb3VwWydjb3VudCddKSApCiAgICB7CiAgICAgICRvbmVyb3ctPm51c2VycyA9IChpbnQpICRvbmVncm91cFsnY291bnQnXTsKICAgIH0KICAgIAogICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CiAgICAKICAgIC8vaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXRncm91cHMnKSAmJiAkbmRlZnMpCiAgICBpZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpKQogICAgewogICAgICAkb25lcm93LT5lZGl0bGluayAgID0KICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLAogICAgICAgICAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKICAgICAgICAgIFsnZ3JvdXBfaWQnID0+ICRvbmVncm91cFsnaWQnXV0KICAgICAgICApOwogICAgICAkb25lcm93LT5leHBvcnRsaW5rID0KICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICRpZCwgJ2FkbWluX2V4cG9ydGdyb3VwJywgJHJldHVybmlkLAogICAgICAgICAgJzxpbWcgc3JjPSInIC4gJHRoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvaWNvbnMveG1sX3Jzcy5naWYiIGFsdD0ieG1sIi8+JywKICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAnZ3JvdXBfaWQnICAgICAgID0+ICRvbmVncm91cFsnaWQnXSwKICAgICAgICAgICAgJ2Rpc2FibGVfYnVmZmVyJyA9PiAxLAogICAgICAgICAgICAnZGlzYWJsZV90aGVtZScgID0+IDEKICAgICAgICAgICksCiAgICAgICAgICAnJywgRkFMU0UsIEZBTFNFLCAnY2xhc3M9InN5c3RlbWljb24iIHRpdGxlPSInIC4gJHRoaXMtPkxhbmcoJ3RpdGxlX3Jzc2V4cG9ydCcpIC4gJyInCiAgICAgICAgKTsKICAgIH0KICAgIGlmKAogICAgICAwID09PSAkb25lcm93LT5udXNlcnMgJiYKICAgICAgJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3JlbW92ZWdyb3VwcycpCiAgICApCiAgICB7CiAgICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPQogICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgJGlkLCAnZG9fZGVsZXRlZ3JvdXAnLCAkcmV0dXJuaWQsCiAgICAgICAgICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKICAgICAgICAgIFsnZ3JvdXBfaWQnID0+ICRvbmVncm91cFsnaWQnXV0sCiAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZV9kZWxldGVncm91cCcpCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgJHJvd2NsYXNzID09ICdyb3cxJyA/ICRyb3djbGFzcyA9ICdyb3cyJyA6ICRyb3djbGFzcyA9ICdyb3cxJzsKICB9Cn0KICAKJHRwbC0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHRwbC0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiR0cGwtPmFzc2lnbignZ3JvdXBzZm91bmQnLCAkdGhpcy0+TGFuZygnZ3JvdXBzZm91bmQnKSk7CgoKaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZGdyb3VwJykpCnsKICAkdHBsLT5hc3NpZ24oJ3Byb3Bjb3VudCcsIGNvdW50KCRwcm9wZGVmbnMpKTsKICAvL2lmKGlzX2FycmF5KCRwcm9wZGVmbnMpICYmIGNvdW50KCRwcm9wZGVmbnMpID4gMCkKICBpZihpc19hcnJheSgkcHJvcGRlZm5zKSkKICB7CiAgICAkdHBsLT5hc3NpZ24oCiAgICAgICdhZGRncm91cGxpbmsnLAogICAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwKICAgICAgICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkZ3JvdXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpCiAgICAgICkgLiAnICcgLgogICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FkZGdyb3VwJykpCiAgICApOwogIH0KICAKICAkdHBsLT5hc3NpZ24oCiAgICAnaW1wb3J0bGluaycsCiAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgJGlkLCAnYWRtaW5faW1wb3J0Z3JvdXAnLCAkcmV0dXJuaWQsCiAgICAgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdpbXBvcnRncm91cCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykKICAgICkgLiAnICcgLgogICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5faW1wb3J0Z3JvdXAnLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdpbXBvcnRncm91cCcpKQogICk7Cn0KCiR0cGwtPmRpc3BsYXkoKTsKCi8vIEVPRgo=]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsgZXhpdDsgfQppZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3Byb3BlcnRpZXMnKSkgeyByZXR1cm47IH0KCiR0cGwgICAgICAgICA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgncHJvcGVydGllc2Zvcm0udHBsJyk7CiRtZXNzYWdlICAgICA9ICRwYXJhbXNbJ21lc3NhZ2UnXSA/PyAnJzsKJHRoZW1lT2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfdGhlbWVfb2JqZWN0KCk7CiRyb3dhcnJheSAgICA9IFtdOwokcm93Y2xhc3MgICAgPSAncm93MSc7CiRrZXlzICAgICAgICA9IGFycmF5X2tleXMoJHRoaXMtPkdldEZpZWxkVHlwZXMoKSk7CiRkZWZucyAgICAgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CgppZihpc19hcnJheSgkZGVmbnMpKQp7CiAgZm9yZWFjaCgkZGVmbnMgYXMgJGRlZm4pCiAgewogICAgJGNhbl9kZWxldGUgPSBUUlVFOwogICAgJHByb3Bncm91cHMgPSAkdGhpcy0+R2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucygkZGVmblsnbmFtZSddKTsKICAgIAogICAgaWYoY291bnQoJHByb3Bncm91cHMpKQogICAgewogICAgICBmb3JlYWNoKCRwcm9wZ3JvdXBzIGFzICRyZWMpCiAgICAgIHsKICAgICAgICBpZigkcmVjWydyZXF1aXJlZCddID4gMSkKICAgICAgICB7CiAgICAgICAgICAkY2FuX2RlbGV0ZSA9IEZBTFNFOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgIAogICAgaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXRwcm9wJykgJiYgIWlzc2V0KCRkZWZuWydleHRyYSddWydtb2R1bGUnXSkpCiAgICB7CiAgICAgICRvbmVyb3ctPm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRwcm9wJywgJHJldHVybmlkLCAkZGVmblsnbmFtZSddLCBbJ3Byb3BuYW1lJyA9PiAkZGVmblsnbmFtZSddXSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRvbmVyb3ctPm5hbWUgPSAkZGVmblsnbmFtZSddOwogICAgICBpZihpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pKQogICAgICB7CiAgICAgICAgJG9uZXJvdy0+bmFtZSAuPSAnJm5ic3A7PGVtIHRpdGxlPSInIC4gJHRoaXMtPkxhbmcoJ3RpdGxlX3Byb3Btb2R1bGUnKSAuICciPignIC4gJGRlZm5bJ2V4dHJhJ11bJ21vZHVsZSddIC4KICAgICAgICAgICAgICAgICAgICAgICAgICcpPC9lbT4nOwogICAgICB9CiAgICB9CiAgICAKICAgICRvbmVyb3ctPmVuY3J5cHQgICAgICA9ICRkZWZuWydlbmNyeXB0J107CiAgICAkb25lcm93LT5wcm9tcHQgICAgICAgPSAkZGVmblsncHJvbXB0J107CiAgICAkb25lcm93LT50eXBlICAgICAgICAgPSAkdGhpcy0+TGFuZygka2V5c1skZGVmblsndHlwZSddXSk7CiAgICAkb25lcm93LT5sZW5ndGggICAgICAgPSAkZGVmblsnbGVuZ3RoJ107CiAgICAkb25lcm93LT5mb3JjZV91bmlxdWUgPSAkZGVmblsnZm9yY2VfdW5pcXVlJ107CiAgICAkb25lcm93LT5yb3djbGFzcyAgICAgPSAkcm93Y2xhc3M7CiAgICAkaXNfbW9kdWxlcHJvcCAgICAgICAgPSAwOwogICAgCiAgICBpZigKICAgICAgaXNzZXQoJGRlZm5bJ2V4dHJhJ10pCiAgICAgICYmIGlzc2V0KCRkZWZuWydleHRyYSddWydtb2R1bGUnXSkKICAgICAgJiYgJycgIT0gJGRlZm5bJ2V4dHJhJ11bJ21vZHVsZSddCiAgICApCiAgICB7CiAgICAgICR0bXAgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJGRlZm5bJ2V4dHJhJ11bJ21vZHVsZSddKTsKICAgICAgCiAgICAgIGlmKGlzX29iamVjdCgkdG1wKSkgeyAkaXNfbW9kdWxlcHJvcCA9IDE7IH0KICAgIH0KICAgIAogICAgaWYoICFpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pICYmICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0cHJvcCcpICkKICAgIHsKICAgICAgJG9uZXJvdy0+ZWRpdGxpbmsgPQogICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgJGlkLCAnYWRkcHJvcCcsICRyZXR1cm5pZCwKICAgICAgICAgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICBbJ3Byb3BuYW1lJyA9PiAkZGVmblsnbmFtZSddXQogICAgICAgICk7CiAgICAgIAogICAgICBpZigkY2FuX2RlbGV0ZSAmJiAhJGlzX21vZHVsZXByb3ApCiAgICAgIHsKICAgICAgICAkb25lcm93LT5kZWxldGVfdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoCiAgICAgICAgICAkaWQsICdhZG1pbl9kZWxldGVwcm9wJywgJHJldHVybmlkLAogICAgICAgICAgWydwcm9wbmFtZScgPT4gJGRlZm5bJ25hbWUnXSwgJ3Byb3B0eXBlJyA9PiAkZGVmblsndHlwZSddXQogICAgICAgICk7CiAgICAgIH0KICAgIH0KICAgIAogICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgCiAgICAoJ3JvdzEnID09ICRyb3djbGFzcyA/ICRyb3djbGFzcyA9ICdyb3cyJyA6ICRyb3djbGFzcyA9ICdyb3cxJyk7CiAgfQp9CgokdHBsLT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3Byb3BlcnRpZXMnKSk7CiR0cGwtPmFzc2lnbignbWVzc2FnZScsICRtZXNzYWdlKTsKJHRwbC0+YXNzaWduKCduYW1ldGV4dCcsICR0aGlzLT5MYW5nKCduYW1lJykpOwokdHBsLT5hc3NpZ24oJ2xlbmd0aHRleHQnLCAkdGhpcy0+TGFuZygnbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3Byb21wdHRleHQnLCAkdGhpcy0+TGFuZygncHJvbXB0JykpOwokdHBsLT5hc3NpZ24oJ3R5cGV0ZXh0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF90eXBlJykpOwokdHBsLT5hc3NpZ24oJ3Byb3BzJywgJHJvd2FycmF5KTsKJHRwbC0+YXNzaWduKCdwcm9wY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHRwbC0+YXNzaWduKCdwcm9wc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Byb3BzZm91bmQnKSk7CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnYWRkcHJvcCcpKQp7CiAgLy8gdG9kbywgYWRkIGEgcGVybWlzc2lvbiBjaGVjayBhcm91bmQgdGhpcwogIC8vIG1heWJlIGNyZWF0ZSBhbiAiZWRpdCBmcm9udGVuZHVzZXIgcHJvcGVydGllcyIgcGVybWlzc2lvbgogICR0cGwtPmFzc2lnbignYWRkX3VybCcsICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkZHByb3AnLCAkcmV0dXJuaWQpKTsKfQoKJHRwbC0+ZGlzcGxheSgpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_userstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHJldHVybjsKCi8vIHRoaXMgdGFiIGhhcyBtZXJlbHkgb25lIG1vZm8gbGlzdCBvZiB1c2VzIGFuZCB0aGUgYWJpbGl0eSB0byBlZGl0IHRoZW0sCi8vIHNlZSBkZXRhaWxzIGFib3V0IHRoZW0sIGFuZCB0aGVuIGRlbGV0ZSB0aGVtCgovLwovLyBpbml0aWFsaXphdGlvbgovLwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKJGFkbWludGhlbWUgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgndXNlcmxpc3QudHBsJyk7CmlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnbGlzdHVzZXJzJykgKQp7CiAgJGZpbHRlciA9ICRiYXJlX2ZpbHRlciA9IFsKICAgICdncm91cCcgICAgICAgICAgPT4gJycsCiAgICAncmVnZXgnICAgICAgICAgID0+ICcnLAogICAgJ2xvZ2dlZGlub25seScgICA9PiAwLAogICAgJ2xpbWl0JyAgICAgICAgICA9PiA1MCwKICAgICd2aWV3cHJvcHMnICAgICAgPT4gW10sCiAgICAncHJvcHNlbCcgICAgICAgID0+ICcnLAogICAgJ3Byb3B2YWwnICAgICAgICA9PiAnJywKICAgICdzb3J0YnknICAgICAgICAgPT4gJ3VzZXJuYW1lIGFzYycsCiAgICAnZGlzYWJsZWRzdGF0dXMnID0+ICcnCiAgXTsKICAKICAkdG1wID0gY21zX3VzZXJwcmVmczo6Z2V0KCdtYW1zX2ZpbHRlcicpOwogICAgaWYoICR0bXAgKSAkZmlsdGVyID0gdW5zZXJpYWxpemUoJHRtcCk7CgogICAgLy8gYnVsayBhY3Rpb24gc3R1ZmYKICBpZihpc3NldCgkcGFyYW1zWydkb2J1bGsnXSkpCiAgewogICAgaWYoaXNzZXQoJHBhcmFtc1snc2VsZWN0ZWQnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsZWN0ZWQnXSkpCiAgICB7CiAgICAgICRzZWwgPSBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkcGFyYW1zWydzZWxlY3RlZCddKSk7CiAgICAgICR0aGlzLT5teVJlZGlyZWN0KAogICAgICAgICRpZCwgJ2FkbWluX2J1bGthY3Rpb25zJywgJHJldHVybmlkLAogICAgICAgIFsnam9iJyA9PiBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2J1bGtfYWN0aW9uJywgJ2RlbGV0ZScpLCAndWlkcycgPT4gJHNlbF0KICAgICAgKTsKICAgIH0KICB9CgogICAgLy8gZmlsdGVyaW5nIHN0dWZmCiAgaWYoaXNzZXQoJHBhcmFtc1snZmlsdGVyX3Jlc2V0J10pKQogIHsKICAgIGNtc191c2VycHJlZnM6OnJlbW92ZSgnbWFtc19maWx0ZXInKTsKICAgICR0aGlzLT5zZXNzaW9uX2NsZWFyKCdjdXJfcGFnZScpOwogICAgJGZpbHRlciA9ICRiYXJlX2ZpbHRlcjsKICAgICMkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ3VzZXJzJyk7CiAgfQogIGVsc2UgaWYoaXNzZXQoJHBhcmFtc1snZmlsdGVyJ10pKQogIHsKICAgICRmaWx0ZXJbJ2dyb3VwJ10gICAgICAgID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZmlsdGVyX2dyb3VwJyk7CiAgICAkZmlsdGVyWydyZWdleCddICAgICAgICA9IHRyaW0oZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZmlsdGVyX3JlZ2V4JykpOwogICAgJGZpbHRlclsnbG9nZ2VkaW5vbmx5J10gPSAoaW50KWdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ2ZpbHRlcl9sb2dnZWRpbm9ubHknKTsKICAgICRmaWx0ZXJbJ2xpbWl0J10gICAgICAgID0gKGludClnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfbGltaXQnKTsKICAgICRmaWx0ZXJbJ3NvcnRieSddICAgICAgID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfc29ydGJ5JykpOwogICAgJGZpbHRlclsndmlld3Byb3BzJ10gICAgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfdmlld3Byb3BzJyk7CiAgICAkZmlsdGVyWydwcm9wc2VsJ10gICAgICA9IHRyaW0oZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZmlsdGVyX3Byb3BlcnR5c2VsJykpOwogICAgaWYoJGZpbHRlclsncHJvcHNlbCddID09ICdub25lJykgeyAkZmlsdGVyWydwcm9wc2VsJ10gPSAnJzsgfQogICAgCiAgICAkZmlsdGVyWydwcm9wdmFsJ10gICAgICAgID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfcHJvcGVydHknKSk7CiAgICAkZmlsdGVyWydkaXNhYmxlZHN0YXR1cyddID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdmaWx0ZXJfZGlzYWJsZWQnKTsKICAgICR0aGlzLT5zZXNzaW9uX2NsZWFyKCdjdXJfcGFnZScpOwogICAgY21zX3VzZXJwcmVmczo6c2V0KCdtYW1zX2ZpbHRlcicsIHNlcmlhbGl6ZSgkZmlsdGVyKSk7CiAgfQoKICAgICR0cGwtPmFzc2lnbignZmlsdGVyJywkZmlsdGVyKTsKICAgICRmaWx0ZXJhcHBsaWVkID0gKCRmaWx0ZXIgIT0gJGJhcmVfZmlsdGVyKTsKICAgICR0cGwtPmFzc2lnbignZmlsdGVyX2FwcGxpZWQnLCRmaWx0ZXJhcHBsaWVkKTsKCiAgICAvLyBnZXQgYSBncm91cCBsaXN0IGZvciB0aGUgZmlsdGVyCiAgICAvLyBpdCBzaG91bGQgYmUgcmVhZHkgdG8gZ28gcmlnaHQgaW50byB0aGUgZHJvcGRvd24gKGNvb2wgZWgpCiAgICAkZ3JvdXBzID0gbnVsbDsKICAgICRncm91cHMxID0gJHRoaXMtPkdldEdyb3VwTGlzdCgpOwogICAgaWYoaXNfYXJyYXkoJGdyb3VwczEpICYmIGNvdW50KCRncm91cHMxKSkKICAgIHsKICAgICAgJGdyb3VwcyA9IGFycmF5X21lcmdlKFskdGhpcy0+TGFuZygnYW55JykgPT4gLTFdLCAkZ3JvdXBzMSk7CiAgICAgICR0cGwtPmFzc2lnbignZ3JvdXBzJywgYXJyYXlfZmxpcCgkZ3JvdXBzKSk7CiAgICB9CiAgCiAgLy8gYSBwdWxsZG93biBsaXN0IGZvciBsaW1pdHMKICAgICRsaW1pdHMgPSBhcnJheSggJzEwJyA9PiAxMCwKICAgICAgICAgICAgICAgICAgICAgJzI1JyA9PiAyNSwKICAgICAgICAgICAgICAgICAgICAgJzUwJyA9PiA1MCwKICAgICAgICAgICAgICAgICAgICAgJzEwMCcgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAnMjUwJyA9PiAyNTAsCiAgICAgICAgICAgICAgICAgICAgICc1MDAnID0+IDUwMCApOwogICAgJHRwbC0+YXNzaWduKCdsaW1pdHMnLCRsaW1pdHMpOwoKICAgIC8vIGEgcHVsbGRvd24gbGlzdCBmb3IgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAgICRkZWZuczEgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgJGRlZm5zID0gYXJyYXkoKTsKICAgICRkZWZuc1snTm9uZSddID0gJ25vbmUnOwogICAgJGFsbGRlZm5zID0gYXJyYXkoKTsKICBpZihpc19hcnJheSgkZGVmbnMxKSkKICB7CiAgICBmb3JlYWNoKCRkZWZuczEgYXMgJGRlZikKICAgIHsKICAgICAgaWYoJGRlZlsncHJvbXB0J10gPT0gJycgfHwgJGRlZlsnbmFtZSddID09ICcnKSB7IGNvbnRpbnVlOyB9CiAgICAgIGlmKCRkZWZbJ2VuY3J5cHQnXSkgeyBjb250aW51ZTsgfSAvLyB5b3UgY2FuJ3QgdmlldyBlbmNyeXB0ZWQgcHJvcGVydGllcyBpbiB0aGlzIGxpc3QuCiAgICAgIAogICAgICAkZGVmbnNbJGRlZlsncHJvbXB0J11dICA9ICRkZWZbJ25hbWUnXTsKICAgICAgJGFsbGRlZm5zWyRkZWZbJ25hbWUnXV0gPSAkZGVmWydwcm9tcHQnXTsKICAgIH0KICB9CiAgICAKICAkdHBsLT5hc3NpZ24oJ2RlZm5saXN0JyxhcnJheV9mbGlwKCRkZWZucykpOwoKICAvLyBhIHB1bGxkb3duIGxpc3QgZm9yIHNvcnRpbmcKICAkc29ydHMgPSBbCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV91c2VybmFtZV9hc2MnKSAgPT4gJ3VzZXJuYW1lIGFzYycsCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV91c2VybmFtZV9kZXNjJykgPT4gJ3VzZXJuYW1lIGRlc2MnLAogICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdzb3J0YnlfY3JlYXRlX2FzYycpICAgID0+ICdjcmVhdGVkYXRlIGFzYycsCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV9jcmVhdGVfZGVzYycpICAgPT4gJ2NyZWF0ZWRhdGUgZGVzYycsCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV9leHBpcmVzX2FzYycpICAgPT4gJ2V4cGlyZXMgYXNjJywKICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnc29ydGJ5X2V4cGlyZXNfZGVzYycpICA9PiAnZXhwaXJlcyBkZXNjJwogICAgICAgICAgICBdOwogIAogICR0cGwtPmFzc2lnbignc29ydGxpc3QnLGFycmF5X2ZsaXAoJHNvcnRzKSk7CgogIC8vIG5vdyBzZXQgdXAgdGhlIHRlbXBsYXRlIGZpZWxkcwogICR0cGwtPmFzc2lnbiggJ3Byb21wdF9zb3J0JywgJHRoaXMtPkxhbmcoJ3NvcnQnKSk7CiAgJHRwbC0+YXNzaWduKCAnc3RhcnRmb3JtJywgJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCd4dF9hY3RpdmV0YWInPT4ndXNlcnMnKSkpOwogICR0cGwtPmFzc2lnbiggJ3Blcm1fcmVtb3ZldXNlcnMnLCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncmVtb3ZldXNlcnMnKT8xOjApOwogICR0cGwtPmFzc2lnbiggJ3VzZXJzZm91bmQnLCAkdGhpcy0+TGFuZygndXNlcnNmb3VuZCcpKTsKICAkdHBsLT5hc3NpZ24oICdhbGxkZWZucycsJGFsbGRlZm5zKTsKICAkdHBsLT5hc3NpZ24oICd2aWV3cHJvcHMnLCRmaWx0ZXJbJ3ZpZXdwcm9wcyddKTsKICAkdHBsLT5hc3NpZ24oICdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwoKICAvLyBub3cgZ2V0IG91ciB1c2VycwogICR1c2VycyA9IG51bGw7CiAgJGN1cnBhZ2UgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJ2N1cl9wYWdlJywxKTsKICAkbm1hdGNoZXMgPSAwOwogIAogIGlmKGlzc2V0KCRwYXJhbXNbJ3BhZ2UnXSkpCiAgewogICAgJGN1cnBhZ2UgPSAoaW50KSRwYXJhbXNbJ3BhZ2UnXTsKICAgICR0aGlzLT5zZXNzaW9uX3B1dCgnY3VyX3BhZ2UnLCAkY3VycGFnZSk7CiAgfQogIAogICRvZmZzZXQgPSAoJGN1cnBhZ2UgLSAxKSAqICRmaWx0ZXJbJ2xpbWl0J107CiAgdHJ5CiAgewogICAgJHVzZXJzID0gbWFtc191dGlsczo6Z2V0X3VzZXJzX2Zyb21fZmlsdGVyKCAkZmlsdGVyLCAkb2Zmc2V0LCAkbm1hdGNoZXMgKTsKICB9CiAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApCiAgewogICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZS0+R2V0TWVzc2FnZSgpICk7CiAgfQogIAogIGlmKCFpc19hcnJheSgkdXNlcnMpKQogIHsKICAgIC8vIGFuIGVycm9yIG9jY3VycmVkCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRkYi0+RXJyb3JNc2coKSk7CiAgfQoKICAgIC8vIGNhbGN1bGF0ZSBwYWdlcyBhbmQgcGFnZSBsaW5rcy4KICAgICRudW11c2VycyA9ICRubWF0Y2hlczsKICAgICRucGFnZXMgPSAoaW50KSgkbm1hdGNoZXMgLyAkZmlsdGVyWydsaW1pdCddKTsKICAgIGlmKCAkbm1hdGNoZXMgJSAkZmlsdGVyWydsaW1pdCddICE9IDAgKSAkbnBhZ2VzKys7CiAgICAkY3VycGFnZSA9IG1heCgwLG1pbigkY3VycGFnZSwkbnBhZ2VzKSk7CgogICAgJG5hdiA9IGFycmF5KCk7CiAgICAkbmF2WyducGFnZXMnXSA9ICRucGFnZXM7CiAgICAkbmF2WydjdXJwYWdlJ10gPSAkY3VycGFnZTsKICAgIGlmKCAkY3VycGFnZSA+IDEgKSB7CiAgICAgICAgJG5hdlsnZmlyc3RwYWdlX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCBhcnJheSgneHRfYWN0aXZldGFiJz0+J3VzZXJzJywncGFnZSc9PjEpKTsKICAgICAgICAkbmF2WydwcmV2cGFnZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZGVmYXVsdGFkbWluJywnJywgYXJyYXkoJ3h0X2FjdGl2ZXRhYic9Pid1c2VycycsJ3BhZ2UnPT4kY3VycGFnZS0xKSk7CiAgICB9CiAgICBpZiggJGN1cnBhZ2UgPCAkbnBhZ2VzICkgewogICAgICAgICRuYXZbJ25leHRwYWdlX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCBhcnJheSgneHRfYWN0aXZldGFiJz0+J3VzZXJzJywncGFnZSc9PiRjdXJwYWdlKzEpKTsKICAgICAgICAkbmF2WydsYXN0cGFnZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZGVmYXVsdGFkbWluJywnJywgYXJyYXkoJ3h0X2FjdGl2ZXRhYic9Pid1c2VycycsJ3BhZ2UnPT4kbnBhZ2VzKSk7CiAgICB9CiAgICAkdHBsLT5hc3NpZ24oJ25hdmlnYXRpb24nLCRuYXYpOwoKICAgIC8vIGdldCB0aGUgdG90YWwgbnVtYmVyIG9mIHVzZXJzCgogICAgLy8gZ2V0IHRoZSBzZWxlY3RlZCBwcm9wZXJ0aWVzLgogICAgaWYoIGlzX2FycmF5KCRmaWx0ZXJbJ3ZpZXdwcm9wcyddKSAmJiBjb3VudCgkZmlsdGVyWyd2aWV3cHJvcHMnXSkgKSB7CiAgICAgICAgaWYoIGlzX2FycmF5KCR1c2VycykgJiYgY291bnQoJHVzZXJzKSApIHsKICAgICAgICAgICAgJHVpZHMgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkdXNlcnMgYXMgJHJvdyApIHsKICAgICAgICAgICAgICAgICR1aWRzW10gPSAkcm93WydpZCddOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIEEuaWQsIjsKICAgICAgICAgICAgJGZsZHMgPSBhcnJheSgpOwogICAgICAgICAgICAkY29uZHMgPSBhcnJheSgpOwogICAgICAgICAgICAkY291bnRfdmlld19wcm9wcyA9IGNvdW50KCRmaWx0ZXJbJ3ZpZXdwcm9wcyddKTsKICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgJGNvdW50X3ZpZXdfcHJvcHM7ICRpKysgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkcHJvcCA9ICRmaWx0ZXJbJ3ZpZXdwcm9wcyddWyRpXTsKICAgICAgICAgICAgICAgICRubSA9ICdqJy4kaTsKICAgICAgICAgICAgICAgICRmbGRzW10gID0gIiRubS5kYXRhIGFzICRwcm9wIjsKICAgICAgICAgICAgICAgICRjb25kc1tdID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFTICRubSBPTiBBLmlkID0gJG5tLnVzZXJpZCBBTkQgKCRubS50aXRsZSA9ICckcHJvcCcpIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcXVlcnkgLj0gaW1wbG9kZSgnLCcsJGZsZHMpLicgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgQSc7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIExFRlQgSk9JTiAnLmltcGxvZGUoJyBMRUZUIEpPSU4gJywkY29uZHMpOwogICAgICAgICAgICAkcXVlcnkgLj0gJyBXSEVSRSBBLmlkIElOICgnLmltcGxvZGUoJywnLCR1aWRzKS4nKSc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJ1NFVCBzcWxfYmlnX3NlbGVjdHMgPSAxJyk7CiAgICAgICAgICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgICAgICRleHRyYXByb3BzID0gaXNfYXJyYXkoJHRtcCkgPyB4dF9hcnJheTo6dG9faGFzaCgkdG1wLCdpZCcpIDogW107CiAgICAgICAgfQogICAgfQoKICAgIC8vIGJ1aWxkIHRoZSB1c2VyIGxpc3QuCiAgICAkcm93YXJyYXkgPSBhcnJheSgpOwogICAgJHRwbC0+YXNzaWduKCdudW11c2VycycsICRudW11c2VycyApOwogICAgJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSAmJiBnZXRfY2xhc3MoJGNvbnN1bWVyKSA9PSAnbWFtc19zdGRfY29uc3VtZXInICkgewogICAgICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9lbWFpbCcpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ3VzZXJuYW1lJykpOwogICAgfQogICAgJHRwbC0+YXNzaWduKCdlbWFpbHRleHQnLCAkdGhpcy0+TGFuZygnZW1haWwnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXR1c3RleHQnLCAkdGhpcy0+TGFuZygnc3RhdHVzJykpOwogICAgJHRwbC0+YXNzaWduKCdjcmVhdGVkdGV4dCcsICR0aGlzLT5MYW5nKCdjcmVhdGVkJykpOwogICAgJHRwbC0+YXNzaWduKCdleHBpcmVzdGV4dCcsICR0aGlzLT5MYW5nKCdleHBpcmVzJykpOwogICAgaWYoIGlzX2FycmF5KCR1c2VycykgKSB7CiAgICAgICAgZm9yZWFjaCggJHVzZXJzIGFzICRyb3cgKSB7CiAgICAgICAgICAgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAgICAgJG9uZXJvdy0+aWQgPSAkcm93WydpZCddOwogICAgICAgICAgICAkb25lcm93LT5kaXNhYmxlZCA9IChib29sKSAkcm93WydkaXNhYmxlZCddOwogICAgICAgICAgICAkb25lcm93LT5tdXN0X3ZhbGlkYXRlID0gKGJvb2wpIChpc3NldCgkcm93WydtdXN0X3ZhbGlkYXRlJ10pKSA/ICRyb3dbJ211c3RfdmFsaWRhdGUnXSA6IGZhbHNlOwogICAgICAgICAgICAkb25lcm93LT5jcmVhdGVkICA9ICRyb3dbJ2NyZWF0ZWRhdGUnXTsKICAgICAgICAgICAgJG9uZXJvdy0+dXNlcm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCwgJHJvd1sndXNlcm5hbWUnXSwgYXJyYXkoJ3VzZXJfaWQnID0+ICRyb3dbJ2lkJ10pKTsKICAgICAgICAgICAgJG9uZXJvdy0+ZXhwaXJlcyAgPSAkcm93WydleHBpcmVzJ107CiAgICAgICAgICAgICRvbmVyb3ctPnVuc2FmZXBhc3N3b3JkID0gc3RybGVuKCRyb3dbJ3Bhc3N3b3JkJ10pID09IDMyOwoKICAgICAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdsaXN0dXNlcnMnKSApIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmhpc3RvcnlsaW5rID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAndXNlcmhpc3RvcnknLCAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbmZvLmdpZicsJHRoaXMtPkxhbmcoJ2hpc3RvcnknKSwnJywnJywnc3lzdGVtaWNvbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndXNlcl9pZCc9PiRyb3dbJ2lkJ10pKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIHsKICAgICAgICAgICAgICAgICRvbmVyb3ctPmVkaXRsaW5rID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnYWRtaW5fZWRpdHVzZXInLCAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nICgnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ICgndXNlcl9pZCcgPT4gJHJvd1snaWQnXSApKTsKICAgICAgICAgICAgICAgIGlmKCAkcm93Wydsb2dnZWRpbiddICkgewogICAgICAgICAgICAgICAgICAgICRvbmVyb3ctPmxvZ291dGxpbmsgPQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCdhZG1pbl9sb2dvdXQnLCRyZXR1cm5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9iYWNrLmdpZicsICR0aGlzLT5MYW5nKCdwcm9tcHRfbG9nb3V0JyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCd1c2VyX2lkJz0+JHJvd1snaWQnXSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3JlbW92ZXVzZXJzJykgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5kZWxldGVsaW5rID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCdkb19kZWxldGV1c2VyJywkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywkdGhpcy0+TGFuZyAoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5ICgndXNlcl9pZCcgPT4gJHJvd1snaWQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nICgnYXJleW91c3VyZV9kZWxldGUnLCRyb3dbJ3VzZXJuYW1lJ10pKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRmaWx0ZXJbJ3ZpZXdwcm9wcyddKSAmJiBjb3VudCgkZmlsdGVyWyd2aWV3cHJvcHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5leHRyYSA9IFtdOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJGZpbHRlclsndmlld3Byb3BzJ10gYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICBpZiggaXNzZXQoJGV4dHJhcHJvcHNbJG9uZXJvdy0+aWRdWyRvbmVdKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iID0gbmV3IFxTdGRDbGFzczsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iLT52YWwgPSAkZXh0cmFwcm9wc1skb25lcm93LT5pZF1bJG9uZV07CiAgICAgICAgICAgICAgICAgICAgICAgICRvYi0+ZGVmbiA9ICRkZWZuczFbJG9uZV07CiAgICAgICAgICAgICAgICAgICAgICAgICRvbmVyb3ctPmV4dHJhWyRvbmVdID0gJG9iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgICAgIH0KICAgIH0KCiAgICAkdHBsLT5hc3NpZ24oJ2l0ZW1jb3VudCcsY291bnQoJHJvd2FycmF5KSk7CiAgICAkdHBsLT5hc3NpZ24oJ2l0ZW1zJywkcm93YXJyYXkpOwogICAgJGJ1bGtfYWN0aW9ucyA9IFtdOwogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApCiAgICB7CiAgICAgICAgJGJ1bGtfYWN0aW9uc1snZGlzYWJsZSddID0gJHRoaXMtPkxhbmcoJ2J1bGtfZGlzYWJsZScpOwogICAgICAgICRidWxrX2FjdGlvbnNbJ2VuYWJsZSddID0gJHRoaXMtPkxhbmcoJ2J1bGtfZW5hYmxlJyk7CiAgICAgICAgJGJ1bGtfYWN0aW9uc1snZm9yY2VjaHB3J10gPSAkdGhpcy0+TGFuZygnYnVsa19mb3JjZWNocHcnKTsKICAgICAgICAkYnVsa19hY3Rpb25zWydmb3JjZWNoc2V0dGluZ3MnXSA9ICR0aGlzLT5MYW5nKCdidWxrX2ZvcmNlY2hzZXR0aW5ncycpOwogICAgICAgICRidWxrX2FjdGlvbnNbJ3NldHBhc3N3b3JkJ10gPSAkdGhpcy0+TGFuZygnYnVsa19zZXRwYXNzd29yZCcpOwogICAgICAgICRidWxrX2FjdGlvbnNbJ3NldGV4cGlyeSddID0gJHRoaXMtPkxhbmcoJ2J1bGtfc2V0ZXhwaXJ5Jyk7CiAgICB9CgogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdyZW1vdmV1c2VycycpICkgewogICAgICAgICRidWxrX2FjdGlvbnNbJ2RlbGV0ZSddID0gJHRoaXMtPkxhbmcoJ2J1bGtfZGVsZXRlJyk7CiAgICB9CiAgICAKICAgIGlmKCBjb3VudCgkYnVsa19hY3Rpb25zKSApICR0cGwtPmFzc2lnbignYnVsa19hY3Rpb25zJywkYnVsa19hY3Rpb25zKTsKfSAvLyBsaXN0dXNlcnMgcGVybWlzc2lvbgoKaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZHVzZXInKSkKewovLyAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSA9PSAwIHx8IGNvdW50KCRncm91cHMxKSA+IDApCi8vICB7Ci8vICAgICR0cGwtPmFzc2lnbignYWRkX3VybCcsICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkbWluX2VkaXR1c2VyJywgJHJldHVybmlkKSk7Ci8vICB9CiAgCiAgJHRwbC0+YXNzaWduKCdhZGRfdXJsJywgJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCAnYWRtaW5fZWRpdHVzZXInLCAkcmV0dXJuaWQpKTsKfQoKaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgewogICAgaWYoICFlbXB0eSgkZ3JvdXBzKSApICR0cGwtPmFzc2lnbignaW1wb3J0X3VybCcsJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdhZG1pbl9pbXBvcnRfdXNlcnMnLCRyZXR1cm5pZCkpOwogICAgaWYoICFlbXB0eSgkcm93YXJyYXkpICkgJHRwbC0+YXNzaWduKCdleHBvcnRfdXJsJywkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2FkbWluX2V4cG9ydF91c2VycycsJHJldHVybmlkKSk7Cn0KCiR0cGwtPmRpc3BsYXkoKTsK]]></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>/includes</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/includes/function.html_entity_decode_php4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCm5hbWVzcGFjZSBtYW1zOw0KLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQovLyBGaWxlIG5hbWUgICA6IGh0bWxfZW50aXR5X2RlY29kZV9waHA0LnBocA0KLy8gQmVnaW4gICAgICAgOiAyMDA2LTA2LTIyDQovLyBMYXN0IFVwZGF0ZSA6IDIwMDYtMDYtMjINCi8vIEF1dGhvciAgICAgIDogTmljb2xhIEFzdW5pDQovLyBWZXJzaW9uICAgICA6IDEuMC4wMDANCi8vIExpY2Vuc2UgICAgIDogR05VIExHUEwgKGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9sZXNzZXIuaHRtbCkNCi8vDQovLyBEZXNjcmlwdGlvbiA6IFRoaXMgaXMgYSBQSFA0IGZ1bmN0aW9uIHRoYXQgcmVkZWZpbmUgdGhlDQovLyAgICAgICAgICAgICAgIHN0YW5kYXJkIGh0bWxfZW50aXR5X2RlY29kZSBmdW5jdGlvbiB0byBzdXBwb3J0DQovLyAgICAgICAgICAgICAgIFVURi04IGVuY29kaW5nLg0KLy8NCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0KDQovKioNCiAqIFRDUERGIENsYXNzLg0KICogQHBhY2thZ2UgY29tLnRlY25pY2sudGNwZGYNCiAqLw0KDQoNCi8qKg0KICogUmV0dXJucyB0aGUgVVRGLTggc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdW5pY29kZSB2YWx1ZS4NCiAqDQogKiBAaWdub3JlDQogKiBAcGFyYW0gJG51bSB1bmljb2RlIHZhbHVlIHRvIGNvbnZlcnQuDQogKiBAcmV0dXJuIHN0cmluZyBjb252ZXJ0ZWQNCiAqLw0KZnVuY3Rpb24gX19jb2RlX3RvX3V0ZjgoJG51bSkgew0KICBpZiAoJG51bSA8PSAweDdGKSB7DQogICAgJG9yZCA9ICRvcmRbMV07DQogICAgaWYgKHByZWdfbWF0Y2goJy9eeChbMC05YS1mXSspJC9pJywgJG9yZCwgJG1hdGNoKSkNCiAgICB7DQogICAgICAkb3JkID0gaGV4ZGVjKCRtYXRjaFsxXSk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAkb3JkID0gaW50dmFsKCRvcmQpOw0KICAgIH0NCiAgICANCiAgICAkbm9fYnl0ZXMgPSAwOw0KICAgICRieXRlID0gYXJyYXkoKTsNCiAgICANCiAgICBpZiAoJG9yZCA8IDEyOCkNCiAgICB7DQogICAgICByZXR1cm4gY2hyKCRvcmQpOw0KICAgIH0NCiAgICBlbHNlaWYgKCRvcmQgPCAyMDQ4KQ0KICAgIHsNCiAgICAgICRub19ieXRlcyA9IDI7DQogICAgfQ0KICAgIGVsc2VpZiAoJG9yZCA8IDY1NTM2KQ0KICAgIHsNCiAgICAgICRub19ieXRlcyA9IDM7DQogICAgfQ0KICAgIGVsc2VpZiAoJG9yZCA8IDExMTQxMTIpDQogICAgew0KICAgICAgJG5vX2J5dGVzID0gNDsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgIHJldHVybjsNCiAgICB9DQogICAgDQogICAgc3dpdGNoKCRub19ieXRlcykNCiAgICB7DQogICAgICBjYXNlIDI6DQogICAgICB7DQogICAgICAgICRwcmVmaXggPSBhcnJheSgzMSwgMTkyKTsNCiAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgICBjYXNlIDM6DQogICAgICB7DQogICAgICAgICRwcmVmaXggPSBhcnJheSgxNSwgMjI0KTsNCiAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgICBjYXNlIDQ6DQogICAgICB7DQogICAgICAgICRwcmVmaXggPSBhcnJheSg3LCAyNDApOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBmb3IgKCRpID0gMDsgJGkgPCAkbm9fYnl0ZXM7ICRpKyspDQogICAgew0KICAgICAgJGJ5dGVbJG5vX2J5dGVzIC0gJGkgLSAxXSA9ICgoJG9yZCAmICg2MyAqIHBvdygyLCA2ICogJGkpKSkgLyBwb3coMiwgNiAqICRpKSkgJiA2MyB8IDEyODsNCiAgICB9DQogICAgDQogICAgJGJ5dGVbMF0gPSAoJGJ5dGVbMF0gJiAkcHJlZml4WzBdKSB8ICRwcmVmaXhbMV07DQogICAgDQogICAgJHJldCA9ICcnOw0KICAgIGZvciAoJGkgPSAwOyAkaSA8ICRub19ieXRlczsgJGkrKykNCiAgICB7DQogICAgICAkcmV0IC49IGNocigkYnl0ZVskaV0pOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHJldDsNCiAgfQ0KfQ0KDQovKioNCiAqIFJldmVyc2UgZnVuY3Rpb24gZm9yIGh0bWxlbnRpdGllcy4NCiAqIENvbnZlcnQgZW50aXRpZXMgaW4gVVRGLTguDQogKg0KICogQHBhcmFtICR0ZXh0X3RvX2NvbnZlcnQgVGV4dCB0byBjb252ZXJ0Lg0KICogQHJldHVybiBzdHJpbmcgY29udmVydGVkDQogKi8NCi8vZnVuY3Rpb24gaHRtbF9lbnRpdHlfZGVjb2RlX3BocDQoJHRleHRfdG9fY29udmVydCkgew0KZnVuY3Rpb24gY21zX2h0bWxfZW50aXR5X2RlY29kZSgkdGV4dF90b19jb252ZXJ0KSB7DQogICRodG1sZW50aXRpZXNfdGFibGUgPSBhcnJheSAoDQogICAgIiZBYWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTI5KS4iIiwNCiAgICAiJmFhY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxNjEpLiIiLA0KICAgICImQWNpcmM7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTMwKS4iIiwNCiAgICAiJmFjaXJjOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2MikuIiIsDQogICAgIiZhY3V0ZTsiID0+ICIiLmNocigxOTQpLmNocigxODApLiIiLA0KICAgICImQUVsaWc7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTM0KS4iIiwNCiAgICAiJmFlbGlnOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2NikuIiIsDQogICAgIiZBZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTI4KS4iIiwNCiAgICAiJmFncmF2ZTsiID0+ICIiLmNocigxOTUpLmNocigxNjApLiIiLA0KICAgICImYWxlZnN5bTsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxODEpLiIiLA0KICAgICImQWxwaGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTQ1KS4iIiwNCiAgICAiJmFscGhhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE3NykuIiIsDQogICAgIiZhbXA7IiA9PiAiIi5jaHIoMzgpLiIiLA0KICAgICImYW5kOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE2NykuIiIsDQogICAgIiZhbmc7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTYwKS4iIiwNCiAgICAiJkFyaW5nOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzMykuIiIsDQogICAgIiZhcmluZzsiID0+ICIiLmNocigxOTUpLmNocigxNjUpLiIiLA0KICAgICImYXN5bXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM3KS5jaHIoMTM2KS4iIiwNCiAgICAiJkF0aWxkZTsiID0+ICIiLmNocigxOTUpLmNocigxMzEpLiIiLA0KICAgICImYXRpbGRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2MykuIiIsDQogICAgIiZBdW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzMikuIiIsDQogICAgIiZhdW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2NCkuIiIsDQogICAgIiZiZHF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTgpLiIiLA0KICAgICImQmV0YTsiID0+ICIiLmNocigyMDYpLmNocigxNDYpLiIiLA0KICAgICImYmV0YTsiID0+ICIiLmNocigyMDYpLmNocigxNzgpLiIiLA0KICAgICImYnJ2YmFyOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2NikuIiIsDQogICAgIiZidWxsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE2MikuIiIsDQogICAgIiZjYXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTY5KS4iIiwNCiAgICAiJkNjZWRpbDsiID0+ICIiLmNocigxOTUpLmNocigxMzUpLiIiLA0KICAgICImY2NlZGlsOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2NykuIiIsDQogICAgIiZjZWRpbDsiID0+ICIiLmNocigxOTQpLmNocigxODQpLiIiLA0KICAgICImY2VudDsiID0+ICIiLmNocigxOTQpLmNocigxNjIpLiIiLA0KICAgICImQ2hpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE2NykuIiIsDQogICAgIiZjaGk7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTM1KS4iIiwNCiAgICAiJmNpcmM7IiA9PiAiIi5jaHIoMjAzKS5jaHIoMTM0KS4iIiwNCiAgICAiJmNsdWJzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE1MykuY2hyKDE2MykuIiIsDQogICAgIiZjb25nOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNykuY2hyKDEzMykuIiIsDQogICAgIiZjb3B5OyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2OSkuIiIsDQogICAgIiZjcmFycjsiID0+ICIiLmNocigyMjYpLmNocigxMzQpLmNocigxODEpLiIiLA0KICAgICImY3VwOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE3MCkuIiIsDQogICAgIiZjdXJyZW47IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTY0KS4iIiwNCiAgICAiJmRhZ2dlcjsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNjApLiIiLA0KICAgICImRGFnZ2VyOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE2MSkuIiIsDQogICAgIiZkYXJyOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNCkuY2hyKDE0NykuIiIsDQogICAgIiZkQXJyOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNSkuY2hyKDE0NykuIiIsDQogICAgIiZkZWc7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTc2KS4iIiwNCiAgICAiJkRlbHRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE0OCkuIiIsDQogICAgIiZkZWx0YTsiID0+ICIiLmNocigyMDYpLmNocigxODApLiIiLA0KICAgICImZGlhbXM7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTUzKS5jaHIoMTY2KS4iIiwNCiAgICAiJmRpdmlkZTsiID0+ICIiLmNocigxOTUpLmNocigxODMpLiIiLA0KICAgICImRWFjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzNykuIiIsDQogICAgIiZlYWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTY5KS4iIiwNCiAgICAiJkVjaXJjOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzOCkuIiIsDQogICAgIiZlY2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxNzApLiIiLA0KICAgICImRWdyYXZlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzNikuIiIsDQogICAgIiZlZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTY4KS4iIiwNCiAgICAiJmVtcHR5OyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDEzMykuIiIsDQogICAgIiZlbXNwOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDEzMSkuIiIsDQogICAgIiZlbnNwOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDEzMCkuIiIsDQogICAgIiZFcHNpbG9uOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE0OSkuIiIsDQogICAgIiZlcHNpbG9uOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE4MSkuIiIsDQogICAgIiZlcXVpdjsiID0+ICIiLmNocigyMjYpLmNocigxMzcpLmNocigxNjEpLiIiLA0KICAgICImRXRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE1MSkuIiIsDQogICAgIiZldGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTgzKS4iIiwNCiAgICAiJkVUSDsiID0+ICIiLmNocigxOTUpLmNocigxNDQpLiIiLA0KICAgICImZXRoOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3NikuIiIsDQogICAgIiZFdW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzOSkuIiIsDQogICAgIiZldW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3MSkuIiIsDQogICAgIiZldXJvOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzMCkuY2hyKDE3MikuIiIsDQogICAgIiZleGlzdDsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxMzEpLiIiLA0KICAgICImZm5vZjsiID0+ICIiLmNocigxOTgpLmNocigxNDYpLiIiLA0KICAgICImZm9yYWxsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDEyOCkuIiIsDQogICAgIiZmcmFjMTI7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTg5KS4iIiwNCiAgICAiJmZyYWMxNDsiID0+ICIiLmNocigxOTQpLmNocigxODgpLiIiLA0KICAgICImZnJhYzM0OyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE5MCkuIiIsDQogICAgIiZmcmFzbDsiID0+ICIiLmNocigyMjYpLmNocigxMjkpLmNocigxMzIpLiIiLA0KICAgICImR2FtbWE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTQ3KS4iIiwNCiAgICAiJmdhbW1hOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE3OSkuIiIsDQogICAgIiZnZTsiID0+ICIiLmNocigyMjYpLmNocigxMzcpLmNocigxNjUpLiIiLA0KICAgICImaGFycjsiID0+ICIiLmNocigyMjYpLmNocigxMzQpLmNocigxNDgpLiIiLA0KICAgICImaEFycjsiID0+ICIiLmNocigyMjYpLmNocigxMzUpLmNocigxNDgpLiIiLA0KICAgICImaGVhcnRzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE1MykuY2hyKDE2NSkuIiIsDQogICAgIiZoZWxsaXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTY2KS4iIiwNCiAgICAiJklhY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxNDEpLiIiLA0KICAgICImaWFjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3MykuIiIsDQogICAgIiZJY2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxNDIpLiIiLA0KICAgICImaWNpcmM7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTc0KS4iIiwNCiAgICAiJmlleGNsOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2MSkuIiIsDQogICAgIiZJZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTQwKS4iIiwNCiAgICAiJmlncmF2ZTsiID0+ICIiLmNocigxOTUpLmNocigxNzIpLiIiLA0KICAgICImaW1hZ2U7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTMyKS5jaHIoMTQ1KS4iIiwNCiAgICAiJmluZmluOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE1OCkuIiIsDQogICAgIiZpbnQ7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTcxKS4iIiwNCiAgICAiJklvdGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTUzKS4iIiwNCiAgICAiJmlvdGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg1KS4iIiwNCiAgICAiJmlxdWVzdDsiID0+ICIiLmNocigxOTQpLmNocigxOTEpLiIiLA0KICAgICImaXNpbjsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxMzYpLiIiLA0KICAgICImSXVtbDsiID0+ICIiLmNocigxOTUpLmNocigxNDMpLiIiLA0KICAgICImaXVtbDsiID0+ICIiLmNocigxOTUpLmNocigxNzUpLiIiLA0KICAgICImS2FwcGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU0KS4iIiwNCiAgICAiJmthcHBhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE4NikuIiIsDQogICAgIiZMYW1iZGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU1KS4iIiwNCiAgICAiJmxhbWJkYTsiID0+ICIiLmNocigyMDYpLmNocigxODcpLiIiLA0KICAgICImbGFuZzsiID0+ICIiLmNocigyMjYpLmNocigxNDApLmNocigxNjkpLiIiLA0KICAgICImbGFxdW87IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTcxKS4iIiwNCiAgICAiJmxhcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM0KS5jaHIoMTQ0KS4iIiwNCiAgICAiJmxBcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM1KS5jaHIoMTQ0KS4iIiwNCiAgICAiJmxjZWlsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE0MCkuY2hyKDEzNikuIiIsDQogICAgIiZsZHF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTYpLiIiLA0KICAgICImbGU7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM3KS5jaHIoMTY0KS4iIiwNCiAgICAiJmxmbG9vcjsiID0+ICIiLmNocigyMjYpLmNocigxNDApLmNocigxMzgpLiIiLA0KICAgICImbG93YXN0OyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE1MSkuIiIsDQogICAgIiZsb3o7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTUxKS5jaHIoMTM4KS4iIiwNCiAgICAiJmxybTsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNDIpLiIiLA0KICAgICImbHNhcXVvOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE4NSkuIiIsDQogICAgIiZsc3F1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTIpLiIiLA0KICAgICImbWFjcjsiID0+ICIiLmNocigxOTQpLmNocigxNzUpLiIiLA0KICAgICImbWRhc2g7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQ4KS4iIiwNCiAgICAiJm1pY3JvOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE4MSkuIiIsDQogICAgIiZtaWRkb3Q7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTgzKS4iIiwNCiAgICAiJm1pbnVzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE0NikuIiIsDQogICAgIiZNdTsiID0+ICIiLmNocigyMDYpLmNocigxNTYpLiIiLA0KICAgICImbXU7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg4KS4iIiwNCiAgICAiJm5hYmxhOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDEzNSkuIiIsDQogICAgLy8iJm5ic3A7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTYwKS4iIiwgLy8gZG9uJ3QgYWN0dWFsbHkga25vdyB3aHkgKEpvIE1vcmcpDQogICAgIiZuYnNwOyIgPT4gIiIuY2hyKDMyKS4iIiwNCiAgICAiJm5kYXNoOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE0NykuIiIsDQogICAgIiZuZTsiID0+ICIiLmNocigyMjYpLmNocigxMzcpLmNocigxNjApLiIiLA0KICAgICImbmk7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTM5KS4iIiwNCiAgICAiJm5vdDsiID0+ICIiLmNocigxOTQpLmNocigxNzIpLiIiLA0KICAgICImbm90aW47IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTM3KS4iIiwNCiAgICAiJm5zdWI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTMyKS4iIiwNCiAgICAiJk50aWxkZTsiID0+ICIiLmNocigxOTUpLmNocigxNDUpLiIiLA0KICAgICImbnRpbGRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3NykuIiIsDQogICAgIiZOdTsiID0+ICIiLmNocigyMDYpLmNocigxNTcpLiIiLA0KICAgICImbnU7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg5KS4iIiwNCiAgICAiJk9hY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxNDcpLiIiLA0KICAgICImb2FjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3OSkuIiIsDQogICAgIiZPY2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxNDgpLiIiLA0KICAgICImb2NpcmM7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTgwKS4iIiwNCiAgICAiJk9FbGlnOyIgPT4gIiIuY2hyKDE5NykuY2hyKDE0NikuIiIsDQogICAgIiZvZWxpZzsiID0+ICIiLmNocigxOTcpLmNocigxNDcpLiIiLA0KICAgICImT2dyYXZlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE0NikuIiIsDQogICAgIiZvZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTc4KS4iIiwNCiAgICAiJm9saW5lOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE5MCkuIiIsDQogICAgIiZPbWVnYTsiID0+ICIiLmNocigyMDYpLmNocigxNjkpLiIiLA0KICAgICImb21lZ2E7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTM3KS4iIiwNCiAgICAiJk9taWNyb247IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU5KS4iIiwNCiAgICAiJm9taWNyb247IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTkxKS4iIiwNCiAgICAiJm9wbHVzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzOCkuY2hyKDE0OSkuIiIsDQogICAgIiZvcjsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxNjgpLiIiLA0KICAgICImb3JkZjsiID0+ICIiLmNocigxOTQpLmNocigxNzApLiIiLA0KICAgICImb3JkbTsiID0+ICIiLmNocigxOTQpLmNocigxODYpLiIiLA0KICAgICImT3NsYXNoOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1MikuIiIsDQogICAgIiZvc2xhc2g7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg0KS4iIiwNCiAgICAiJk90aWxkZTsiID0+ICIiLmNocigxOTUpLmNocigxNDkpLiIiLA0KICAgICImb3RpbGRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE4MSkuIiIsDQogICAgIiZvdGltZXM7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTUxKS4iIiwNCiAgICAiJk91bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTUwKS4iIiwNCiAgICAiJm91bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTgyKS4iIiwNCiAgICAiJnBhcmE7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTgyKS4iIiwNCiAgICAiJnBhcnQ7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTMwKS4iIiwNCiAgICAiJnBlcm1pbDsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNzYpLiIiLA0KICAgICImcGVycDsiID0+ICIiLmNocigyMjYpLmNocigxMzgpLmNocigxNjUpLiIiLA0KICAgICImUGhpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE2NikuIiIsDQogICAgIiZwaGk7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTM0KS4iIiwNCiAgICAiJlBpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE2MCkuIiIsDQogICAgIiZwaTsiID0+ICIiLmNocigyMDcpLmNocigxMjgpLiIiLA0KICAgICImcGl2OyIgPT4gIiIuY2hyKDIwNykuY2hyKDE1MCkuIiIsDQogICAgIiZwbHVzbW47IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTc3KS4iIiwNCiAgICAiJnBvdW5kOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2MykuIiIsDQogICAgIiZwcmltZTsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNzgpLiIiLA0KICAgICImUHJpbWU7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTc5KS4iIiwNCiAgICAiJnByb2Q7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTQzKS4iIiwNCiAgICAiJnByb3A7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTU3KS4iIiwNCiAgICAiJlBzaTsiID0+ICIiLmNocigyMDYpLmNocigxNjgpLiIiLA0KICAgICImcHNpOyIgPT4gIiIuY2hyKDIwNykuY2hyKDEzNikuIiIsDQogICAgIiZyYWRpYzsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxNTQpLiIiLA0KICAgICImcmFuZzsiID0+ICIiLmNocigyMjYpLmNocigxNDApLmNocigxNzApLiIiLA0KICAgICImcmFxdW87IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTg3KS4iIiwNCiAgICAiJnJhcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM0KS5jaHIoMTQ2KS4iIiwNCiAgICAiJnJBcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM1KS5jaHIoMTQ2KS4iIiwNCiAgICAiJnJjZWlsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE0MCkuY2hyKDEzNykuIiIsDQogICAgIiZyZHF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTcpLiIiLA0KICAgICImcmVhbDsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxNTYpLiIiLA0KICAgICImcmVnOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3NCkuIiIsDQogICAgIiZyZmxvb3I7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTQwKS5jaHIoMTM5KS4iIiwNCiAgICAiJlJobzsiID0+ICIiLmNocigyMDYpLmNocigxNjEpLiIiLA0KICAgICImcmhvOyIgPT4gIiIuY2hyKDIwNykuY2hyKDEyOSkuIiIsDQogICAgIiZybG07IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQzKS4iIiwNCiAgICAiJnJzYXF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxODYpLiIiLA0KICAgICImcnNxdW87IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTUzKS4iIiwNCiAgICAiJnNicXVvOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE1NCkuIiIsDQogICAgIiZTY2Fyb247IiA9PiAiIi5jaHIoMTk3KS5jaHIoMTYwKS4iIiwNCiAgICAiJnNjYXJvbjsiID0+ICIiLmNocigxOTcpLmNocigxNjEpLiIiLA0KICAgICImc2RvdDsiID0+ICIiLmNocigyMjYpLmNocigxMzkpLmNocigxMzMpLiIiLA0KICAgICImc2VjdDsiID0+ICIiLmNocigxOTQpLmNocigxNjcpLiIiLA0KICAgICImc2h5OyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3MykuIiIsDQogICAgIiZTaWdtYTsiID0+ICIiLmNocigyMDYpLmNocigxNjMpLiIiLA0KICAgICImc2lnbWE7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTMxKS4iIiwNCiAgICAiJnNpZ21hZjsiID0+ICIiLmNocigyMDcpLmNocigxMzApLiIiLA0KICAgICImc2ltOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE4OCkuIiIsDQogICAgIiZzcGFkZXM7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTUzKS5jaHIoMTYwKS4iIiwNCiAgICAiJnN1YjsiID0+ICIiLmNocigyMjYpLmNocigxMzgpLmNocigxMzApLiIiLA0KICAgICImc3ViZTsiID0+ICIiLmNocigyMjYpLmNocigxMzgpLmNocigxMzQpLiIiLA0KICAgICImc3VtOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE0NSkuIiIsDQogICAgIiZzdXAxOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE4NSkuIiIsDQogICAgIiZzdXAyOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3OCkuIiIsDQogICAgIiZzdXAzOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3OSkuIiIsDQogICAgIiZzdXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTMxKS4iIiwNCiAgICAiJnN1cGU7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTM1KS4iIiwNCiAgICAiJnN6bGlnOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1OSkuIiIsDQogICAgIiZUYXU7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTY0KS4iIiwNCiAgICAiJnRhdTsiID0+ICIiLmNocigyMDcpLmNocigxMzIpLiIiLA0KICAgICImdGhlcmU0OyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE4MCkuIiIsDQogICAgIiZUaGV0YTsiID0+ICIiLmNocigyMDYpLmNocigxNTIpLiIiLA0KICAgICImdGhldGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg0KS4iIiwNCiAgICAiJnRoZXRhc3ltOyIgPT4gIiIuY2hyKDIwNykuY2hyKDE0NSkuIiIsDQogICAgIiZ0aGluc3A7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTM3KS4iIiwNCiAgICAiJlRIT1JOOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1OCkuIiIsDQogICAgIiZ0aG9ybjsiID0+ICIiLmNocigxOTUpLmNocigxOTApLiIiLA0KICAgICImdGlsZGU7IiA9PiAiIi5jaHIoMjAzKS5jaHIoMTU2KS4iIiwNCiAgICAiJnRpbWVzOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1MSkuIiIsDQogICAgIiZ0cmFkZTsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxNjIpLiIiLA0KICAgICImVWFjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1NCkuIiIsDQogICAgIiZ1YWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg2KS4iIiwNCiAgICAiJnVhcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM0KS5jaHIoMTQ1KS4iIiwNCiAgICAiJnVBcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM1KS5jaHIoMTQ1KS4iIiwNCiAgICAiJlVjaXJjOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1NSkuIiIsDQogICAgIiZ1Y2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxODcpLiIiLA0KICAgICImVWdyYXZlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1MykuIiIsDQogICAgIiZ1Z3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg1KS4iIiwNCiAgICAiJnVtbDsiID0+ICIiLmNocigxOTQpLmNocigxNjgpLiIiLA0KICAgICImdXBzaWg7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTQ2KS4iIiwNCiAgICAiJlVwc2lsb247IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTY1KS4iIiwNCiAgICAiJnVwc2lsb247IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTMzKS4iIiwNCiAgICAiJlV1bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTU2KS4iIiwNCiAgICAiJnV1bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg4KS4iIiwNCiAgICAiJndlaWVycDsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxNTIpLiIiLA0KICAgICImWGk7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU4KS4iIiwNCiAgICAiJnhpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE5MCkuIiIsDQogICAgIiZZYWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTU3KS4iIiwNCiAgICAiJnlhY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxODkpLiIiLA0KICAgICImeWVuOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2NSkuIiIsDQogICAgIiZ5dW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE5MSkuIiIsDQogICAgIiZZdW1sOyIgPT4gIiIuY2hyKDE5NykuY2hyKDE4NCkuIiIsDQogICAgIiZaZXRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE1MCkuIiIsDQogICAgIiZ6ZXRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE4MikuIiIsDQogICAgIiZ6d2o7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQxKS4iIiwNCiAgICAiJnp3bmo7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQwKS4iIiwNCiAgICAiJnF1b3Q7IiA9PiAnIicsDQogICAgIiZndDsiID0+ICI+IiwNCiAgICAiJmx0OyIgPT4gIjwiDQogICk7DQogIA0KICAkcmV0dXJuX3RleHQgPSBodG1sX2VudGl0eV9kZWNvZGUoJHRleHRfdG9fY29udmVydCwgKEVOVF9RVU9URVMgfCBFTlRfSFRNTDUpLCAnVVRGLTgnKTsNCiAgDQogICMganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIGlmIGh0bWxfZW50aXR5X2RlY29kZSBzdGlsbCBtaXNzZWQgc29tZXRoaW5nDQogICMgYW5kIGFsc28gY29udmVydHMgJm5ic3A7IHRvIGNocigzMikgd2hpY2ggc2VlbXMgY29ycmVjdCAoSm8gTW9yZykNCiAgJHJldHVybl90ZXh0ID0gc3RydHIoJHJldHVybl90ZXh0LCAkaHRtbGVudGl0aWVzX3RhYmxlKTsNCiAgDQogIC8vIGNvbnZlcnQgaGV4LCBhbmQgbnVtZXJpYyBlbnRpdGllcyB0byB0aGVpciBjaGFyYWN0ZXIgdmFsdWVzLg0KICAkcmV0dXJuX3RleHQgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJ34mI3goWzAtOWEtZl0rKTt+aScsIGZ1bmN0aW9uKCBhcnJheSAkbWF0Y2hlcyApIHsNCiAgICByZXR1cm4gX19jb2RlX3RvX3V0ZjgoICRtYXRjaGVzWzFdICk7DQogIH0sICRyZXR1cm5fdGV4dCApOw0KICAkcmV0dXJuX3RleHQgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJ34mIyhbMC05XSspO34nLCBmdW5jdGlvbiggYXJyYXkgJG1hdGNoZXMgKSB7DQogICAgcmV0dXJuIF9fY29kZV90b191dGY4KCAkbWF0Y2hlc1sxXSApOw0KICB9LCAkcmV0dXJuX3RleHQgKTsNCiAgDQogIHJldHVybiAkcmV0dXJuX3RleHQ7DQp9DQoNCi8vIEVPRg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/includes/inc.extra_classes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogc29tZSBjbGFzc2VzIHRoYXQgYXJlIHNtYWxsIGhlbHBlcnMNCiAqIGdvIGhlcmUNCiAqLw0KbmFtZXNwYWNlIE1BTVM7DQpjbGFzcyBEZXByZWNhdGVkTWV0aG9kRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbg0Kew0KICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1ldGhvZCkNCiAgew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoIlRoZSBtZXRob2QgJyRtZXRob2QnIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBleGlzdHMuIiwgXEVfVVNFUl9ERVBSRUNBVEVEKTsNCiAgfQ0KfQ0KY2xhc3MgTWV0aG9kTm9Gb3VuZEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24NCnsNCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCAkY2xhc3NfbmFtZSkNCiAgew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoIm1ldGhvZCAkbmFtZSBub3QgZm91bmQgaW4gICRjbGFzc19uYW1lIG9iamVjdCIsIFxFX1VTRVJfREVQUkVDQVRFRCk7DQogIH0NCn0NCj8+]]></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+Tm90ZTo8L3N0cm9uZz4gQ29sdW1uIHNvcnRpbmcgd2lsbCBwcm92aWRlIGFkZGl0aW9uYWwgc29ydGluZyBvbiBtYXRjaGVkIGVsZW1lbnRzJzsKJGxhbmdbJ2FueSddID0gJ0FueSc7CiRsYW5nWydzb3J0YnlfdXNlcm5hbWVfYXNjJ10gPSAnVXNlcm5hbWUgKGFzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X3VzZXJuYW1lX2Rlc2MnXSA9ICdVc2VybmFtZSAoZGVzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2NyZWF0ZV9hc2MnXSA9ICdDcmVhdGUgRGF0ZSAoYXNjZW5kaW5nKSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2Rlc2MnXSA9ICdDcmVhdGUgRGF0ZSAoZGVzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfYXNjJ10gPSAnRXhwaXJ5IERhdGUgKGFzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfZGVzYyddID0gJ0V4cGlyeSBEYXRlIChkZXNjZW5kaW5nKSc7CiRsYW5nWydpbXBvcnRfZnJvbV9mZXUnXSA9ICdJbXBvcnQgRnJvbSBGcm9udCBFbmQgVXNlcnMnOwokbGFuZ1snaW5mb19pbXBvcnRfZnJvbV9mZXUnXSA9ICdGcm9udCBFbmQgVXNlcnMgbW9kdWxlIGhhcyBiZWVuIGRldGVjdGVkLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiB0cnkgdG8gaW1wb3J0IGRhdGEgZnJvbSBpdC4gQWxsIGRhdGEgZXhjZXB0IGZvciB0ZW1wbGF0ZXMgYW5kIGJhY2tlbmQgcGVybWlzc2lvbnMgd2lsbCBiZSBjb3BpZWQuIEluIGNhc2Ugb2YgZXJyb3IgTUFNUyB3aWxsIHRyeSB0byByZXN0b3JlIGl0cyBwcmV2aW91cyBkYiB0YWJsZXMuJzsKJGxhbmdbJ2NvbmZpcm1faW1wb3J0X2Zyb21fZmV1J10gPSAnQXJlIHlvdSBzdXJlPyBUaGlzIGFjdGlvbiBtYXkgZGVsZXRlIGN1cnJlbnQgTUFNUyBEQiByZWNvcmRzISc7CiRsYW5nWydpbXBvcnQnXSA9ICdJbXBvcnQnOwoKJGxhbmdbJ2luZm9fZW5jcnlwdGVkJ10gPSAnRW5jcnlwdGVkIHByb3BlcnRpZXMgY2FuIG9ubHkgYmUgc2VlbiBhbmQgZWRpdGVkIGJ5IHRoZSB1c2VyLiAgTm90IGV2ZW4gdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBjYW4gc2VlIG9yIG1hbmFnZSB0aGlzIGRhdGEuJzsKJGxhbmdbJ2VuY3J5cHRlZCddID0gJ0VuY3J5cHRlZCc7CiRsYW5nWydpbmZvX2Nvb2tpZW5hbWUnXSA9ICdJZiBzZXQsIHRoZSAmcXVvdDtyZW1lbWJlciBtZSZxdW90OyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgZW5hYmxlZC4gIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgY29va2llIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LCBidXQgbGFzdHMgdXAgdG8gc2l4dHkgZGF5cy4gIFRvIGludmFsaWRhdGUgYWxsIGV4aXN0aW5nIHJlbWVtYmVybWUgY29va2llcywgY2hhbmdlIHRoaXMgY29va2llIG5hbWUuICBUbyBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSwgeW91IHNob3VsZCBjbGVhciB0aGUgY29va2llbmFtZSwgYW5kIHBvc3NpYmx5IGNoYW5nZSB5b3VyIGxvZ2luIHRlbXBsYXRlLic7CiRsYW5nWydtc2dfdXNlcm5hbWVfcmVhZG9ubHknXSA9ICdUaGUgYXV0aGVudGljYXRpb24gY29uc3VtZXIgZG9lcyBub3QgcGVybWl0IGNoYW5naW5nIHRoZSB1c2VybmFtZSBmb3IgdGhpcyBhY2NvdW50JzsKJGxhbmdbJ21zZ19wYXNzd29yZF9yZWFkb25seSddID0gJ1RoZSBhdXRoZW50aWNhdGlvbiBjb25zdW1lciBkb2VzIG5vdCBwZXJtaXQgY2hhbmdpbmcgdGhlIHBhc3N3b3JkIGZvciB0aGlzIGFjY291bnQnOwokbGFuZ1sncHJvbXB0X25vcm1hbGxvZ2luJ10gPSAnU2lnbiBJbic7CiRsYW5nWydtb3ZlX3VwJ10gPSAnTW92ZSBVcCc7CiRsYW5nWydtb3ZlX2Rvd24nXSA9ICdNb3ZlIERvd24nOwokbGFuZ1sndGl0bGVfcHJvcG1vZHVsZSddID0gJ1RoaXMgcHJvcGVydHkgaXMgY3JlYXRlZCBieSBhIG1vZHVsZSwgYW5kIGNhbm5vdCBiZSBlZGl0ZWQnOwokbGFuZ1snbm90X2F2YWlsYWJsZSddID0gJ05vdCBBdmFpbGFibGUnOwokbGFuZ1sncHJvbXB0X2RmbHRfY2hlY2tlZCddID0gJ0J5IGRlZmF1bHQsIHRoaXMgZmllbGQgc2hvdWxkIGJlIGNoZWNrZWQnOwokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlZCddID0gJ09wZXJhdGlvbiBDb21wbGV0ZWQnOwokbGFuZ1snbWVtYmVycyddID0gJ01lbWJlcnMnOwokbGFuZ1sndmlld19maWx0ZXInXSA9ICdWaWV3IEZpbHRlcic7CiRsYW5nWydkYXRhJ10gPSAnRGF0YSc7CiRsYW5nWydhcHBsaWVkJ10gPSAnQXBwbGllZCc7CiRsYW5nWydmaXJzdHBhZ2UnXSA9ICcmbHQ7Jmx0Oyc7CiRsYW5nWydwcmV2cGFnZSddID0gJyZsdDsnOwokbGFuZ1snbmV4dHBhZ2UnXSA9ICcmZ3Q7JzsKJGxhbmdbJ2xhc3RwYWdlJ10gPSAnJmd0OyZndDsnOwokbGFuZ1sncGFnZSddID0gJ1BhZ2UnOwokbGFuZ1sncHJvbXB0X2FsbG93X2NoYW5nZXVzZXJuYW1lJ10gPSAnQWxsb3cgQ2hhbmdpbmcgVXNlcm5hbWUnOwokbGFuZ1snaW5mb19hbGxvd19jaGFuZ2V1c2VybmFtZSddID0gJ0lmIGVuYWJsZWQgdXNlcnMgd2lsbCBiZSBwZXJtaXR0ZWQgdG8gY2hhbmdlIHRoZWlyIHVzZXJuYW1lIGFsb25nIHdpdGggb3RoZXIgc2V0dGluZ3MnOwokbGFuZ1sndGVtcGxhdGVfc2F2ZWQnXSA9ICdUZW1wbGF0ZSBzYXZlZCc7CiRsYW5nWyd0ZW1wbGF0ZV9yZXNldGRlZmF1bHRzJ10gPSAnVGVtcGxhdGUgcmVzZXQgdG8gZGVmYXVsdHMnOwokbGFuZ1snbGJsX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWydlbmFibGVfY2FwdGNoYSddID0gJ0VuYWJsZSBjYXB0Y2hhIG9uIHRoZSBsb2dpbiBmb3JtJzsKJGxhbmdbJ2luZm9fZW5hYmxlX2NhcHRjaGEnXSA9ICdJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluLCBhbmQgdGhlIG1vZHVsZSBwcmVmZXJlbmNlIHN0YXRlcyB0byBkaXNwbGF5IHRoZSBsb2dpbiBmb3JtLCB0aGlzIG9wdGlvbiBjb250cm9scyB3aGV0aGVyIGEgY2FwdGNoYSB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgbG9naW4gc2NyZWVuLiAgSWYgY2FwdGNoYSBpcyBhdmFpbGFibGUnOwokbGFuZ1sncGFnZXR5cGVfdW5hdXRob3JpemVkJ10gPSAnWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byB2aWV3IHRoaXMgY29udGVudCc7CiRsYW5nWydpbmZvX2NvbnRlbnRwYWdlX2dyb3VwbGlzdCddID0gJ1NwZWNpZnkgYSBsaXN0IG9mIE1BTVMgZ3JvdXBzIHRoYXQgbWF5IGhhdmUgYWNjZXNzIHRvIHRoaXMgcGFnZS4gIFNlbGVjdGluZyBubyBncm91cHMgd2lsbCBhbGxvdyBhbnkgdXNlciBsb2dnZWQgaW4gdG8gTUFNUyB0byB2aWV3IHRoZSBwYWdlJzsKJGxhbmdbJ3BhZ2V0eXBlX3NldHRpbmdzJ10gPSAnUHJvdGVjdGVkIFBhZ2UgU2V0dGluZ3MnOwokbGFuZ1sncGFnZXR5cGVfZ3JvdXBzJ10gPSAnQWxsb3dlZCBHcm91cHMnOwokbGFuZ1snaW5mb19wYWdldHlwZV9ncm91cHMnXSA9ICdTZWxlY3QgdGhlIGdyb3VwcyB0aGF0IGFyZSAoYnkgZGVmYXVsdCkgYWxsb3dlZCB0byB2aWV3IHByb3RlY3RlZCBwYWdlcy4gIEFuIGVkaXRvciB3aXRoIHRoZSAmcXVvdDtNYW5hZ2UgQWxsIENvbnRlbnQmcXVvdDsgcGVybWlzc2lvbiBjYW4gb3ZlcnJpZGUgdGhpcyBmb3IgZWFjaCBwYWdlJzsKJGxhbmdbJ3BhZ2V0eXBlX2FjdGlvbiddID0gJ0FjdGlvbiBmb3IgaW5zdWZmaWNpZW50IGFjY2Vzcyc7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX2FjdGlvbiddID0gJ1NwZWNpZnkgdGhlIGJlaGF2aW9yIGZvciBwZW9wbGUgYWNjZXNzaW5nIHRoaXMgcGFnZSB3aXRob3V0IHN1ZmZpY2llbnQgcGVybWlzc2lvbi4gIFlvdSBjYW4gZWl0aGVyIHJlZGlyZWN0IHRvIGEgc3BlY2lmaWVkIHBhZ2UsIG9yIGRpc3BsYXkgdGhlIGxvZ2luIGZvcm0nOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddID0gJ1Nob3cgdGhlIExvZ2luIEZvcm0nOwokbGFuZ1sncmVkaXJlY3QnXSA9ICdSZWRpcmVjdCB0byBhIFBhZ2UnOwokbGFuZ1sncGFnZXR5cGVfcmVkaXJlY3R0byddID0gJ1JlZGlyZWN0IFRvJzsKJGxhbmdbJ2luZm9fcGFnZXR5cGVfcmVkaXJlY3R0byddID0gJ1NwZWNpZnkgdGhlIHBhZ2UgdG8gcmVkaXJlY3QgdG8uICBJZiB5b3Ugc2VsZWN0IG5vbmUsIGFuZCB0aGUgYWN0aW9uIGlzIHNldCB0byAmcXVvdDtyZWRpcmVjdCZxdW90OyB0aGUgdXNlciB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbWVzc2FnZSBpbmRpY2F0aW5nIHRoYXQgdGhleSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHBhZ2UnOwokbGFuZ1sncGVybWlzc2lvbnMnXSA9ICdQZXJtaXNzaW9ucyc7CiRsYW5nWydNQU1TXFxQcm90ZWN0ZWRQYWdlJ10gPSAnTUFNUyBQcm90ZWN0ZWQgQ29udGVudCc7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9wYWdlJ10gPSAnTUFNUyBQcm90ZWN0ZWQgQ29udGVudCc7CiRsYW5nWydwcm9tcHRfdmlld3Byb3BzJ10gPSAnU2VsZWN0IEFkZGl0aW9uYWwgUHJvcGVydGllcyB0byBWaWV3JzsKJGxhbmdbJ3ZpZXcnXSA9ICdWaWV3JzsKJGxhbmdbJ2luZm9faWdub3JlX3VzZXJpZCddID0gJ0lmIGNoZWNrZWQgdGhlIGltcG9ydCByb3V0aW5lIHdpbGwgYXR0ZW1wdCB0byBhZGQgdXNlcnMgaW5kZXBlbmRlbnQgb2YgdGhlIHVzZXJpZCBjb2x1bW4uICBJZiBhIHVzZXIgd2l0aCB0aGUgbmFtZSBzcGVjaWZpZWQgaW4gdGhlIGltcG9ydCBmaWxlIGFscmVhZHkgZXhpc3RzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCc7CiRsYW5nWydpZ25vcmVfdXNlcmlkJ10gPSAnSWdub3JlIFVzZXJJRCBDb2x1bW4gb24gSW1wb3J0JzsKJGxhbmdbJ2V4cG9ydF9wYXNzaGFzaCddID0gJ0V4cG9ydCB0aGUgcGFzc3dvcmQgaGFzaCB0byB0aGUgZmlsZSc7CiRsYW5nWydpbmZvX2V4cG9ydF9wYXNzaGFzaCddID0gJ1RoZSBwYXNzd29yZCBoYXNoIGlzIG9ubHkgdXNlZnVsIGlmIHRoZSBwYXNzd29yZCBzYWx0IG9uIHRoZSBpbXBvcnQgaG9zdCBpcyBpZGVudGljYWwgdG8gdGhhdCBvZiB0aGUgZXhwb3J0IGhvc3QnOwokbGFuZ1snZXJyb3JfYWRqdXN0c2FsdCddID0gJ1RoZSBwYXNzd29yZCBzYWx0IGNhbm5vdCBiZSBhZGp1c3RlZCc7CiRsYW5nWydwcm9tcHRfcHdzYWx0J10gPSAnUGFzc3dvcmQgU2FsdCc7CiRsYW5nWydpbmZvX3B3c2FsdCddID0gJ01lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBzYWx0cyBhbGwgcGFzc3dvcmRzIHdpdGggdGhpcyBrZXkgd2hpY2ggaXMgY3JlYXRlZCB1cG9uIGluc3RhbGwuICBPbmNlIHVzZXJzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZGF0YWJhc2UgdGhlIHNhbHQgY2Fubm90IGJlIGNoYW5nZWQuIFRoZSBzYWx0IG1heSBiZSBlbXB0eSBmb3Igb2xkZXIgaW5zdGFsbHMuJzsKJGxhbmdbJ2FkdmFuY2VkX3NldHRpbmdzJ10gPSAnQWR2YW5jZWQgU2V0dGluZ3MnOwokbGFuZ1snaW5mb19zZXNzaW9udGltZW91dCddID0gJ1NwZWNpZnkgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSBhbiBpbmFjdGl2ZSB1c2VyIGlzIGF1dG9tYXRpY2FsbHkgbG9nZ2VkIG91dCBvZiB0aGUgd2Vic2l0ZSc7CiRsYW5nWydwcm9tcHRfZXhwaXJldXNlcnNfaW50ZXJ2YWwnXSA9ICdVc2VyIEV4cGlyeSBJbnRlcnZhbCc7CiRsYW5nWydpbmZvX2V4cGlyZXVzZXJzX2ludGVydmFsJ10gPSAnU3BlY2lmeSBhIHZhbHVlIChpbiBzZWNvbmRzKSB0aGF0IGluZGljYXRlcyBob3cgb2Z0ZW4gdGhlIHN5c3RlbSBzaG91bGQgZm9yY2UgdXNlcnMgd2hvXCdzIHNlc3Npb24gaGFzIGV4cGlyZWQgdG8gYmUgbG9nZ2VkIG91dC4gIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIHRvIHNhdmUgZGF0YWJhc2UgcXVlcmllcy4gIElmIGxlZnQgZW1wdHkgb3Igc2V0IHRvIDAgZXhwaXJ5IHdpbGwgYmUgcGVyZm9ybWVkIG9uIGV2ZXJ5IHJlcXVlc3QuJzsKJGxhbmdbJ21zZ19zZXR0aW5nc2NoYW5nZWQnXSA9ICdZb3VyIHNldHRpbmdzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQnOwokbGFuZ1snZm9yY2VkbG9nb3V0dGFza19kZXNjJ10gPSAnRm9yY2UgdXNlcnMgdG8gbG9nb3V0IGF0IHJlZ3VsYXIgaW50ZXJ2YWxzJzsKJGxhbmdbJ3Byb21wdF9mb3JjZWxvZ291dF90aW1lcyddID0gJ1RpbWVzIGZvciBmb3JjZWQgbG9nb3V0JzsKJGxhbmdbJ2luZm9fZm9yY2Vsb2dvdXRfdGltZXMnXSA9ICdTcGVjaWZ5IGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdGltZXMgbGlrZSBISDpNTSxISDpNTSB3aGVyZSB1c2VycyB3aWxsIGJlIGZvcmNpYmx5IGxvZ2dlZCBvdXQuIE5vdGUsIHRoaXMgdXNlcyB0aGUgcHN1ZWRvY3JvbiBtZWNoYW5pc20gc28geW91IG11c3QgYmUgc3VyZSB0aGF0IHRoZSB0aW1lcyBlbnRlcmVkIGhlcmUgd2lsbCBjb2luY2lkZSByZWFzb25hYmx5IHdpdGggeW91ciAmcXVvdDtwc2V1ZG9jcm9uIGdyYW51bGFyaXR5JnF1b3Q7IGFuZCB0aGF0IHN1ZmZpY2llbnQgcmVxdWVzdHMgd2lsbCBvY2N1ciB0byB5b3VyIHdlYnNpdGUgdG8gZW5zdXJlIHRoYXQgcHNldWRvY3JvbiBpcyBleGVjdXRlZC4nOwokbGFuZ1sncHJvbXB0X2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnXSA9ICdFeGNsdWRlIHVzZXJzIHRoYXQgaGF2ZSBiZWVuIGFjdGl2ZSBpbiA8ZW0+KG1pbnV0ZXMpPC9lbT4nOwokbGFuZ1snaW5mb19mb3JjZWxvZ291dF9zZXNzaW9uYWdlJ10gPSAnSWYgc3BlY2lmaWVkLCBhbnkgdXNlcnMgdGhhdCBoYXZlIGJlZW4gYWN0aXZlIGluIHRoaXMgbnVtYmVyIG9mIG1pbnV0ZXMgd2lsbCBub3QgYmUgZm9yY2libHkgbG9nZ2VkIG91dCc7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHVzZXIgJXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVleHRlbnNpb24nXSA9ICdUaGUgdXBsb2FkZWQgZmlsZSBkb2VzIG5vdCBtYXRjaCB0aGUgbGlzdCBvZiBhbGxvd2VkIGZpbGUgdHlwZXMnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0FsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSBoYXMgYmVlbiBkZWxldGVkJzsKJGxhbmdbJ2luZm9fZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbiddID0gJ0lmIGVuYWJsZWQsIHRoaXMgbW9kdWxlIHdpbGwgbGlzdGVuIHRvIGV2ZW50cyBmcm9tIHRoZSBFY29tbWVyY2Ugc3VpdGUuICBUaGUgZm9sbG93aW5nIHNldHRpbmdzIG9ubHkgaGF2ZSBlZmZlY3QgaWYgdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQuJzsKJGxhbmdbJ3Byb21wdF9lY29tbV9wYWlkcmVnaXN0cmF0aW9uJ10gPSAnTGlzdGVuIHRvIE9yZGVyIEV2ZW50cyc7CiRsYW5nWydpbmZvX3BhaWRyZWdfc2V0dGluZ3MnXSA9ICdUaGUgZm9sbG93aW5nIHNldHRpbmdzIG9ubHkgYXBwbHkgaWYgdXNpbmcgc2VsZiByZWdpc3RyYXRpb24gYW5kIGFsbG93aW5nIGZvciBwYWlkIHJlZ2lzdHJhdGlvbic7CiRsYW5nWydub25lJ10gPSAnTm9uZSc7CiRsYW5nWydkZWxldGVfdXNlciddID0gJ0RlbGV0ZSBVc2VyJzsKJGxhbmdbJ2V4cGlyZV91c2VyJ10gPSAnRXhwaXJlIFVzZXInOwokbGFuZ1sncHJvbXB0X2FjdGlvbl9vcmRlcmNhbmNlbGxlZCddID0gJ0FjdGlvbiB0byBwZXJmb3JtIHdoZW4gYSBzdWJzY3JpcHRpb24gb3JkZXIgaXMgY2FuY2VsbGVkJzsKJGxhbmdbJ3Byb21wdF9hY3Rpb25fb3JkZXJkZWxldGVkJ10gPSAnQWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBhIHN1YnNjcmlwdGlvbiBvcmRlciBpcyBkZWxldGVkJzsKJGxhbmdbJ2Vjb21tZXJjZV9zZXR0aW5ncyddID0gJ0Vjb21tZXJjZSBTZXR0aW5ncyc7CiRsYW5nWydzZWN1cmVmaWVsZG1hcmtlciddID0gJ1NlY3VyZSBGaWVsZCBNYXJrZXInOwokbGFuZ1snc2VjdXJlZmllbGRjb2xvciddID0gJ1NlY3VyZSBGaWVsZCBDb2xvcic7CiRsYW5nWydwcm9tcHRfZW5jcnlwdCddID0gJ1N0b3JlIHRoaXMgZGF0YSBlbmNyeXB0ZWQgaW4gdGhlIGRhdGFiYXNlJzsKJGxhbmdbJ2Vycm9yX25vdHN1cHBvcnRlZCddID0gJ1RoZSBjaG9zZW4gb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZ2l2ZW4geW91ciBjdXJyZW50IGNvbmZpZ3VyYXRpb24nOwokbGFuZ1snYXVkaXRfdXNlcl9jcmVhdGVkJ10gPSAnVXNlciBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQnOwokbGFuZ1snaW5mb19hdXRvX2NyZWF0ZV91bmtub3duJ10gPSAnSWYgYSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgYnkgYW4gZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gbW9kdWxlIGJ1dCBpcyBub3Qga25vd24gaW4gdGhlIE1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBtb2R1bGUgc2hvdWxkIGFuIE1BTVMgYWNjb3VudCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHk/JzsKJGxhbmdbJ3Byb21wdF9hdXRvX2NyZWF0ZV91bmtub3duJ10gPSAnQXV0b21hdGljYWxseSBDcmVhdGUgVW5rbm93biBVc2Vycyc7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnRGlzcGxheSBTZXR0aW5ncyc7CiRsYW5nWydpbmZvX3N0ZF9hdXRoX3NldHRpbmdzJ10gPSAnVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgb25seSBhcHBsaWNhYmxlIGlmIHVzaW5nIHRoZSAmcXVvdDtCdWlsdGluIEF1dGhlbnRpY2F0aW9uJnF1b3Q7Lic7CiRsYW5nWydpbmZvX3N1cHBvcnRfbG9zdHVuJ10gPSAnU2VsZWN0aW5nIE5vIHdpbGwgZGlzYWJsZSB0aGUgYWJpbGl0eSBmb3IgYSB1c2VyIHRvIHJlcXVlc3QgbG9zdCBsb2dpbiBpbmZvcm1hdGlvbiwgaXJyZXNwZWN0aXZlIG9mIG90aGVyIHNldHRpbmdzJzsKJGxhbmdbJ2luZm9fc3VwcG9ydF9sb3N0cHcnXSA9ICdTZWxlY3RpbmcgTm8gd2lsbCBkaXNhYmxlIHRoZSBhYmlsaXR5IGZvciBhIHVzZXIgdG8gYSBwYXNzd29yZCByZXNldCwgaXJyZXNwZWN0aXZlIG9mIG90aGVyIHNldHRpbmdzJzsKJGxhbmdbJ3Byb21wdF9zdXBwb3J0X2xvc3R1biddID0gJ0FsbG93IHVzZXJzIHRvIHJlcXVlc3QgdGhlaXIgdXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X3N1cHBvcnRfbG9zdHB3J10gPSAnQWxsb3cgdXNlcnMgdG8gcmVxdWVzdCBhIHBhc3N3b3JkIGNoYW5nZSc7CiRsYW5nWydhdXRoX3NldHRpbmdzJ10gPSAnQXV0aGVudGljYXRpb24gU2V0dGluZ3MnOwokbGFuZ1snYXV0aGVudGljYXRpb24nXSA9ICdCdWlsdGluIEF1dGhlbnRpY2F0aW9uJzsKJGxhbmdbJ2F1dGhfYnVpbHRpbiddID0gJ01BTVMgU3RhbmRhcmQgQXV0aGVudGljYXRpb24nOwokbGFuZ1snYXV0aF9tb2R1bGUnXSA9ICdBdXRoZW50aWNhdGlvbiBNb2R1bGUvTWV0aG9kJzsKJGxhbmdbJ2luZm9fYXV0aF9tb2R1bGUnXSA9ICdUaGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSBzdXBwb3J0cyB1c2luZyBhbHRlcm5hdGUgYXV0aGVudGljYXRpb24gbWV0aG9kcywgd2l0aCB2YXJ5aW5nIGNhcGFiaWxpdGllcy4gIFNvbWUgZnVuY3Rpb25hbGl0eSB3aWxsIG5vdCBmdW5jdGlvbiBvciBiZSBkaXNhYmxlZCB3aGVuIG5vdCB1c2luZyB0aGUgYnVpbHQgaW4gYXV0aGVudGljYXRpb24gbWV0aG9kJzsKJGxhbmdbJ2Vycm9yX3VzZXJfbm9udW5pcXVlX2ZpZWxkX3ZhbHVlJ10gPSAnVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgJXMgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciB1c2VyJzsKJGxhbmdbJ3VuaXF1ZSddID0gJ1VuaXF1ZSc7CiRsYW5nWydlcnJvcl9ub251bmlxdWVfZmllbGRfdmFsdWUnXSA9ICdUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciAlcyAoJXMpIGlzIG5vdCB1bmlxdWUnOwokbGFuZ1sncHJvbXB0X2ZvcmNlX3VuaXF1ZSddID0gJ0ZvcmNlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5IHRvIGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHVzZXIgYWNjb3VudHMnOwokbGFuZ1snaGVscF9yZXR1cm50byddID0gJ1VzZWQgd2l0aHQgaGUgbG9naW4gYW5kIGxvZ291dCBmb3JtcywgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIGEgcGFnZSBpZCBvciBhbGlhcyB0aGF0IHRoZSB1c2VyIHNob3VsZCBiZSByZXR1cm5lZCB0byBhZnRlciB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLiAgVGhpcyB3aWxsIG92ZXJyaWRlIHRoZSByZXR1cm5sYXN0IGFuZCB0aGUgcmVkaXJlY3Rpb24gcHJlZmVyZW5jZXMuJzsKJGxhbmdbJ2hlbHBfaW5saW5lJ10gPSAnVXNlZCB3aXRoIHRoZSBsb2dpbiBmb3Jtcy9hY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGZvcm0gc2hvdWxkIHJlcGxhY2UgaXRzIG93biB0YWcgb24gdGhlIHNhbWUgcGFnZS4uLiAgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0IGlmIHJldHVybnRvLCByZXR1cm5sYXN0LCBvciBzb21lIHJlZGlyZWN0aW9uIHByZWZlcmVuY2VzIGFyZSBzZXQgcmVzdWx0aW5nIGluIGEgcmVkaXJlY3Rpb24gdG8gYSBkaWZmZXJlbnQgcGFnZS4nOwokbGFuZ1sndGl0bGVfcmVzZXRfc2Vzc2lvbiddID0gJ0xvZ2luIFNlc3Npb24gVGltZW91dCBXYXJuaW5nJzsKJGxhbmdbJ21zZ19yZXNldF9zZXNzaW9uJ10gPSAnWW91ciBsb2dpbiBzZXNzaW9uIGlzIGFib3V0IHRvIGV4cGlyZSwgcGxlYXNlIGNsaWNrICImcXVvdDtPayZxdW90OyB0byBjb25maXJtIHlvdXIgYWN0aXZpdHkgb24gdGhpcyB3ZWJzaXRlLic7CiRsYW5nWydvayddID0gJ09rJzsKJGxhbmdbJ3Jlc2V0c2Vzc2lvbl90ZW1wbGF0ZSddID0gJ1Jlc2V0IFNlc3Npb24gVGVtcGxhdGUnOwokbGFuZ1snaW5mb19uYW1lJ10gPSAnVGhpcyBpcyB0aGUgZmllbGQgbmFtZSwgdG8gYmUgdXNlZCBmb3IgYWRkcmVzc2luZyBpbiBzbWFydHkuICBJdCBtdXN0IGNvbnNpc3Qgb2Ygb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdW5kZXJzY29yZXMuJzsKJGxhbmdbJ3Zpc2l0b3JzX3RhYiddID0gJ1Zpc2l0b3JzJzsKJGxhbmdbJ21hbXNfZ3JvdXBzX3Byb21wdCddID0gJ1NlbGVjdCBvbmUgb3IgbW9yZSBNQU1TIGdyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHZpZXcgdGhpcyBwYWdlJzsKJGxhbmdbJ2Vycm9yX211c3RzZWxlY3RfZ3JvdXAnXSA9ICdBIGdyb3VwIG11c3QgYmUgc2VsZWN0ZWQnOwokbGFuZ1snc2VsZWN0b25lJ10gPSAnU2VsZWN0IE9uZSc7CiRsYW5nWydzdGFydF95ZWFyJ10gPSAnU3RhcnQgWWVhcic7CiRsYW5nWydlbmRfeWVhciddID0gJ0VuZCBZZWFyJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXRlJzsKJGxhbmdbJ3Byb21wdF90aHVtYm5haWxfc2l6ZSddID0gJ1RodW1ibmFpbCBTaXplJzsKJGxhbmdbJ09uVXBkYXRlR3JvdXAnXSA9ICdPbiBVc2VyIEdyb3VwIE1vZGlmaWVkJzsKJGxhbmdbJ2Vycm9yX3Rvb21hbnlzZWxlY3RlZCddID0gJ1RvbyBtYW55IHVzZXJzIGFyZSBzZWxlY3RlZCBmb3IgYnVsayBvcGVyYXRpb25zLi4uLiBQbGVhc2UgdHJpbSBpdCB0byAyNTAgb3IgbGVzcyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIHVzZXJzPyc7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICdEZWxldGUgU2VsZWN0ZWQnOwokbGFuZ1sncHJvbXB0X3JhbmRvbXVzZXJuYW1lJ10gPSAnR2VuZXJhdGUgcmFuZG9tIHVzZXJuYW1lIHdoZW4gYWRkaW5nIG5ldyB1c2Vycyc7CiRsYW5nWydtb250aHMnXSA9ICdtb250aHMnOwokbGFuZ1sncHJvbXB0X2V4cGlyZWFnZSddID0gJ0RlZmF1bHQgdXNlciBleHBpcnkgcGVyaW9kJzsKJGxhbmdbJ25vdGlmaWNhdGlvbl9zZXR0aW5ncyddID0gJ05vdGlmaWNhdGlvbiBTZXR0aW5ncyc7CiRsYW5nWydwcm9wZXJ0eV9zZXR0aW5ncyddID0gJ1Byb3BlcnR5IFNldHRpbmdzJzsKJGxhbmdbJ3JlZGlyZWN0aW9uX3NldHRpbmdzJ10gPSAnUmVkaXJlY3Rpb24gU2V0dGluZ3MnOwokbGFuZ1snZ2VuZXJhbF9zZXR0aW5ncyddID0gJ0dlbmVyYWwgU2V0dGluZ3MnOwokbGFuZ1snc2Vzc2lvbl9zZXR0aW5ncyddID0gJ1Nlc3Npb24gYW5kIENvb2tpZSBTZXR0aW5ncyc7CiRsYW5nWydmaWVsZF9zZXR0aW5ncyddID0gJ0ZpZWxkIFNldHRpbmdzJzsKJGxhbmdbJ3Byb3BfdGV4dGFyZWFfd3lzaXd5ZyddID0gJ0FsbG93IHVzZSBvZiB3eXNpd3lnIG9uIHRoaXMgdGV4dCBhcmVhJzsKJGxhbmdbJ2VkaXRpbmdfdXNlciddID0gJ0VkaXRpbmcgVXNlcic7CiRsYW5nWydub2lubGluZSddID0gJ0RvIG5vdCBpbmxpbmUgZm9ybXMnOwokbGFuZ1snaW5mb19sb3N0dW4nXSA9ICdDbGljayBoZXJlIGlmIHlvdSBjYW5ub3QgcmVtZW1iZXIgeW91ciBsb2dpbiBkZXRhaWxzJzsKJGxhbmdbJ2luZm9fZm9yZ290cHcnXSA9ICdDbGljayBoZXJlIGlmIHlvdSBjYW5ub3QgcmVtZW1iZXIgeW91ciBwYXNzd29yZCc7CiRsYW5nWydpbmZvX2xvZ291dCddID0gJ0NsaWNrIGhlcmUgdG8gc2lnbiBvdXQnOwokbGFuZ1snaW5mb19jaGFuZ2VzZXR0aW5ncyddID0gJ0NsaWNrIGhlcmUgdG8gYWRqdXN0IHlvdXIgcGFzc3dvcmQgb3Igb3RoZXIgaW5mb3JtYXRpb24nOwokbGFuZ1sndmlld3VzZXJfdGVtcGxhdGUnXSA9ICdWaWV3IFVzZXIgVGVtcGxhdGUnOwokbGFuZ1snZXZlbnQnXSA9ICdFdmVudCc7CiRsYW5nWydtYW1zX2V2ZW50X25vdGlmaWNhdGlvbiddID0gJ01BTVMgRXZlbnQgTm90aWZpY2F0aW9uJzsKJGxhbmdbJ3Byb21wdF9ub3RpZmljYXRpb25fYWRkcmVzcyddID0gJ05vdGlmaWNhdGlvbiBFbWFpbCBBZGRyZXNzJzsKJGxhbmdbJ3Byb21wdF9ub3RpZmljYXRpb25fdGVtcGxhdGUnXSA9ICdOb3RpZmljYXRpb24gRW1haWwgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbl9zdWJqZWN0J10gPSAnTm90aWZpY2F0aW9uIEVtYWlsIFN1YmplY3QnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbnMnXSA9ICdFbWFpbCBOb3RpZmljYXRpb25zJzsKJGxhbmdbJ09uTG9naW4nXSA9ICdPbiBMb2dpbic7CiRsYW5nWydPbkxvZ291dCddID0gJ09uIExvZ291dCc7CiRsYW5nWydPbkV4cGlyZVVzZXInXSA9ICdPbiBTZXNzaW9uIEV4cGlyeSc7CiRsYW5nWydPbkNyZWF0ZVVzZXInXSA9ICdPbiBOZXcgVXNlciBDcmVhdGVkJzsKJGxhbmdbJ09uRGVsZXRlVXNlciddID0gJ09uIFVzZXIgRGVsZXRlZCc7CiRsYW5nWydPblVwZGF0ZVVzZXInXSA9ICdPbiBVc2VyIFNldHRpbmdzIENoYW5nZWQnOwokbGFuZ1snT25DcmVhdGVHcm91cCddID0gJ09uIFVzZXIgR3JvdXAgQ3JlYXRlZCc7CiRsYW5nWydPbkRlbGV0ZUdyb3VwJ10gPSAnT24gVXNlciBHcm91cCBEZWxldGVkJzsKCiRsYW5nWydsb3N0dW5jb25maXJtX3ByZW1zZyddID0gJ1dvb3QhIFdlIGZvdW5kIHlvdSEuIEdpdmVuIHRoZSBkZXRhaWxzIHlvdSBlbnRlcmVkLCB3ZSB3ZXJlIGFibGUgdG8gZmluZCB5b3VyIChhbmQgb25seSB5b3VycykgbG9naW4gbmFtZS4nOwokbGFuZ1sneW91cl91c2VybmFtZV9pcyddID0gJ1lvdXIgdXNlcm5hbWUgaXMnOwokbGFuZ1snbG9zdHVuY29uZmlybV9wb3N0bXNnJ10gPSAnV2UgcmVjb21tZW5kIHlvdSByZWNvcmQgdGhpcyBpbmZvcm1hdGlvbiBpbiBhIHNlY3VyZSwgYnV0IHJldHJpZXZhYmxlIGxvY2F0aW9uLic7CiRsYW5nWydwcm9tcHRfYWZ0ZXJfY2hhbmdlX3NldHRpbmdzJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgY2hhbmdlIHNldHRpbmdzJzsKJGxhbmdbJ3Byb21wdF9hZnRlcl92ZXJpZnlfY29kZSddID0gJ1BhZ2VJRC9BbGlhcyB0byBqdW1wIHRvIGFmdGVyIGNvZGUgdmVyaWZpY2F0aW9uIConOwokbGFuZ1snbG9zdHVuX2RldGFpbHNfdGVtcGxhdGUnXSA9ICdMb3N0IFVzZXJuYW1lIERldGFpbHMgVGVtcGxhdGUnOwokbGFuZ1snbG9zdHVuX2NvbmZpcm1fdGVtcGxhdGUnXSA9ICdMb3N0IFVzZXJuYW1lIENvbmZpcm0gVGVtcGxhdGUnOwokbGFuZ1snZXJyb3Jfbm9udW5pcXVlbWF0Y2gnXSA9ICdFcnJvcjogTW9yZSB0aGFuIG9uZSB1c2VyIGFjY291bnQgbWF0Y2hlZCB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQnOwokbGFuZ1snZXJyb3JfY2FudGZpbmR1c2VyJ10gPSAnRXJyb3I6IENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgdXNlcic7CiRsYW5nWydlcnJvcl9ncm91cG5vdGZvdW5kJ10gPSAnRXJyb3I6IENvdWxkIG5vdCBmaW5kIGEgZ3JvdXAgYnkgdGhhdCBuYW1lJzsKJGxhbmdbJ3JlYWRvbmx5J10gPSAnUmVhZCBPbmx5JzsKJGxhbmdbJ3Byb21wdF91c2VybWFuaXB1bGF0b3InXSA9ICdVc2VyIE1hbmlwdWxhdG9yIENsYXNzJzsKJGxhbmdbJ2FkbWluX2xvZ291dCddID0gJ0xvZ2dlZCBvdXQgYnkgYWRtaW5pc3RyYXRvcic7CiRsYW5nWydwcm9tcHRfbG9nZ2VkaW5vbmx5J10gPSAnU2hvdyBPbmx5IExvZ2dlZCBJbiBVc2Vycyc7CiRsYW5nWydwcm9tcHRfbG9nb3V0J10gPSAnTG9nb3V0IHRoaXMgdXNlcic7CiRsYW5nWyd1c2VyX3Byb3BlcnRpZXMnXSA9ICdVc2VyIFByb3BlcnRpZXMnOwokbGFuZ1sndXNlcmhpc3RvcnknXSA9ICdVc2VyIEhpc3RvcnknOwokbGFuZ1snZXhwb3J0J10gPSAnRXhwb3J0JzsKJGxhbmdbJ2NsZWFyJ10gPSAnQ2xlYXInOwokbGFuZ1sncHJvbXB0X2V4cG9ydHVzZXJoaXN0b3J5J10gPSAnRXhwb3J0IFVzZXIgSGlzdG9yeSBUbyBBU0NJSSB0aGF0IGlzIGF0IGxlYXN0JzsKJGxhbmdbJ3Byb21wdF9jbGVhcnVzZXJoaXN0b3J5J10gPSAnQ2xlYXIgVXNlciBIaXN0b3J5IHJlY29yZHMgdGhhdCBpcyBhdCBsZWFzdCc7CiRsYW5nWyd0aXRsZV9sb3N0dXNlcm5hbWUnXSA9ICdGb3Jnb3QgWW91ciBMb2dpbiBEZXRhaWxzPyc7CiRsYW5nWyd0aXRsZV9yc3NleHBvcnQnXSA9ICdFeHBvcnQgZ3JvdXAgZGVmaW5pdGlvbiAoYW5kIHByb3BlcnRpZXMpIHRvIFhNTCc7CiRsYW5nWyd0aXRsZV91c2VyaGlzdG9yeW1haW50ZW5hbmNlJ10gPSAnVXNlciBIaXN0b3J5IE1haW50ZW5hbmNlJzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ3Byb21wdF9vZiddID0gJ09mJzsKJGxhbmdbJ2RhdGVfYWxscmVjb3JkcyddID0gJyoqIE5vIExpbWl0ICoqJzsKJGxhbmdbJ2RhdGVfb25laG91cm9sZCddID0gJ09uZSBIb3VyIE9sZCc7CiRsYW5nWydkYXRlX3NpeGhvdXJvbGQnXSA9ICdTaXggSG91cnMgT2xkJzsKJGxhbmdbJ2RhdGVfdHdlbHZlaG91cm9sZCddID0gJ1R3ZWx2ZSBIb3VycyBPbGQnOwokbGFuZ1snZGF0ZV9vbmVkYXlvbGQnXSA9ICdPbmUgRGF5IE9sZCc7CiRsYW5nWydkYXRlX29uZXdlZWtvbGQnXSA9ICdPbmUgV2VlayBPbGQnOwokbGFuZ1snZGF0ZV90d293ZWVrc29sZCddID0gJ1R3byB3ZWVrcyBPbGQnOwokbGFuZ1snZGF0ZV9vbmVtb250aG9sZCddID0gJ09uZSBNb250aCBPbGQnOwokbGFuZ1snZGF0ZV90aHJlZW1vbnRoc29sZCddID0gJ1RocmVlIE1vbnRocyBPbGQnOwokbGFuZ1snZGF0ZV9zaXhtb250aHNvbGQnXSA9ICdTaXggTW9udGhzIE9sZCc7CiRsYW5nWydkYXRlX29uZXllYXJvbGQnXSA9ICdPbmUgWWVhciBPbGQnOwokbGFuZ1sndGl0bGVfZ3JvdXBzb3J0J10gPSAnR3JvdXBpbmcgYW5kIFNvcnRpbmcnOwokbGFuZ1sncHJvbXB0X3JlY29yZHNmb3VuZCddID0gJ1JlY29yZHMgbWF0Y2hpbmcgdGhlIGNyaXRlcmlhJzsKJGxhbmdbJ3NvcnRvcmRlcl91c2VybmFtZV9kZXNjJ10gPSAnRGVzY2VuZGluZyBVc2VybmFtZSc7CiRsYW5nWydzb3J0b3JkZXJfdXNlcm5hbWVfYXNjJ10gPSAnQXNjZW5kaW5nIFVzZXJuYW1lJzsKJGxhbmdbJ3NvcnRvcmRlcl9kYXRlX2Rlc2MnXSA9ICdEZXNjZW5kaW5nIERhdGUnOwokbGFuZ1snc29ydG9yZGVyX2RhdGVfYXNjJ10gPSAnQXNjZW5kaW5nIERhdGUnOwokbGFuZ1snc29ydG9yZGVyX2FjdGlvbl9kZXNjJ10gPSAnRGVzY2VuZGluZyBFdmVudCBUeXBlJzsKJGxhbmdbJ3NvcnRvcmRlcl9hY3Rpb25fYXNjJ10gPSAnQXNjZW5kaW5nIEV2ZW50IFR5cGUnOwokbGFuZ1snc29ydG9yZGVyX2lwYWRkcmVzc19kZXNjJ10gPSAnRGVzY2VuZGluZyBJcCBBZGRyZXNzJzsKJGxhbmdbJ3NvcnRvcmRlcl9pcGFkZHJlc3NfYXNjJ10gPSAnQXNjZW5kaW5nIElwIEFkZHJlc3MnOwokbGFuZ1snaW5mb19ub2hpc3RvcnlkZXRlY3RlZCddID0gJ05vIEhpc3RvcnkgRGV0ZWN0ZWQnOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldCc7CiRsYW5nWydwcm9tcHRfZ3JvdXBfaXAnXSA9ICdHcm91cCBCeSBJUCBBZGRyZXNzJzsKJGxhbmdbJ3Byb21wdF9maWx0ZXJfZXZlbnR0eXBlJ10gPSAnRXZlbnQgVHlwZSBGaWx0ZXInOwokbGFuZ1sncHJvbXB0X2ZpbHRlcl9kYXRlJ10gPSAnRGlzcGxheSBvbmx5IGV2ZW50cyB0aGF0IGFyZSBsZXNzIHRoYW46JzsKJGxhbmdbJ3Byb21wdF9wYWdlbGltaXQnXSA9ICdQYWdlIExpbWl0JzsKJGxhbmdbJ2ZvciddID0gJ2Zvcic7CiRsYW5nWyd0aXRsZV91c2VyaGlzdG9yeSddID0gJ1VzZXIgSGlzdG9yeSBSZXBvcnQnOwokbGFuZ1sndW5rbm93biddID0gJ1Vua25vd24nOwokbGFuZ1sncHJvbXB0X2lwYWRkcmVzcyddID0gJ0lQIEFkZHJlc3MnOwokbGFuZ1sncHJvbXB0X2V2ZW50dHlwZSddID0gJ0V2ZW50IFR5cGUnOwokbGFuZ1sncHJvbXB0X2RhdGUnXSA9ICdEYXRlJzsKJGxhbmdbJ3Byb21wdF9yZXR1cm4nXSA9ICdSZXR1cm4nOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlX21zZyddID0gJ0ltcG9ydCBPcGVyYXRpb24gQ29tcGxldGUnOwokbGFuZ1sncHJvbXB0X2xpbmVzcHJvY2Vzc2VkJ10gPSAnTGluZXMgUHJvY2Vzc2VkJzsKJGxhbmdbJ3Byb21wdF9lcnJvcnMnXSA9ICdFcnJvcnMgRW5jb3VudGVyZWQnOwokbGFuZ1sncHJvbXB0X3JlY29yZHNhZGRlZCddID0gJ1JlY29yZHMgQWRkZWQnOwokbGFuZ1snZXJyb3Jfbm9ncm91cHByb3ByZWxucyddID0gJ0NvdWxkIG5vdCBmaW5kIHByb3BlcnRpZXMgZm9yIGdyb3VwICVzJzsKJGxhbmdbJ2Vycm9yX25vcmVzcG9uc2Vmcm9tc2VydmVyJ10gPSAnQ291bGQgbm90IGdldCBhIHJlc3BvbnNlIGZyb20gdGhlIFNNVFAgc2VydmVyJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGZpbGVub3Rmb3VuZCddID0gJ0ZpbGUgc3BlY2lmaWVkICglcykgY291bGQgbm90IGJlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnXSA9ICdJbnZhbGlkIHZhbHVlIGZvciBjb2x1bW4gJXMnOwokbGFuZ1snZXJyb3JfaW1wb3J0ZmllbGRsZW5ndGgnXSA9ICdGaWVsZCAlcyBleGNlZWRzIG1heGltdW0gbGVuZ3RoJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGluc2VydHVzZXInXSA9ICdQcm9ibGVtIGNyZWF0aW5nIHVzZXI6ICVzJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydHVwZGF0ZXVzZXInXSA9ICdQcm9ibGVtIHVwZGF0aW5nIHVzZXI6ICVzJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydHVzZXJzJ10gPSAnSW1wb3J0IEVycm9yIChsaW5lICVzKTogJXMnOwokbGFuZ1snZXJyb3JfcHJvcGVydHlkZWZucyddID0gJ0NvdWxkIG5vdCBnZXQgdGhlIHByb3BlcnR5IGRlZmluaXRpb25zIChpbnRlcm5hbCBlcnJvciknOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdpbmZvJ10gPSAnUHJvYmxlbSBzZXR0aW5nIHVzZXIgaW5mbyc7CiRsYW5nWydlcnJvcl9pbXBvcnRyZXF1aXJlZGZpZWxkJ10gPSAnQ291bGQgbm90IGZpbmQgYSBjb2x1bW4gdG8gbWF0Y2ggdGhlIHJlcXVpcmVkIGZpZWxkICVzJzsKJGxhbmdbJ2Vycm9yX25vZ3JvdXBwcm9wZXJ0aWVzJ10gPSAnQ291bGQgbm90IGZpbmQgcHJvcGVydGllcyBmb3IgdGhlIHNwZWNpZmllZCBncm91cCc7CiRsYW5nWydlcnJvcl9pbXBvcnRmaWxlZm9ybWF0J10gPSAnVGhlIGZpbGUgc3BlY2lmaWVkIGZvciBpbXBvcnQgaXMgbm90IGluIHRoZSBjb3JyZWN0IGZvcm1hdCc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdG9wZW5maWxlJ10gPSAnQ291bGQgbm90IG9wZW4gZmlsZSc7CiRsYW5nWydpbmZvX2ltcG9ydHVzZXJzZmlsZWZvcm1hdDInXSA9ICcKPGg1PkZpbGUgRm9ybWF0IEluZm9ybWF0aW9uPC9oNT4KPHA+VGhlIGlucHV0IGZpbGUgbXVzdCBiZSBpbiBBU0NJSSBmb3JtYXQgdXNpbmcgY29tbWEgPGVtPihub3JtYWxseSk8L2VtPiBzZXBhcmF0ZWQgdmFsdWVzLiAgRWFjaCBsaW5lIGluIHRoaXMgaW5wdXQgZmlsZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBoZWFkZXIgbGluZSwgZGlzY3Vzc2VkIGJlbG93KSByZXByZXNlbnRzIG9uZSB1c2VyIHJlY29yZC4gIFRoZSBvcmRlciBvZiB0aGUgZmllbGRzIGluIGVhY2ggbGluZSBtdXN0IGJlIGlkZW50aWNhbC4gIFRoaXMgaW1wb3J0IHJvdXRpbmUgYWNjZXB0cyBNQUMgYW5kIHVuaXggbGluZSBlbmRpbmdzLiAgQ29sdW1uIHZhbHVlcyBjYW4gYmUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBpZiB0aGUgZGVsaW1pdGVyIG1heSBiZSBjb250YWluZWQgd2l0aGluIHRoZSBjb2x1bW4gdmFsdWUuPC9wPgo8aDU+SGVhZGVyIGxpbmU8L2g1Pgo8dWw+CjxsaT5UaGUgZmlyc3QgbGluZSBvZiB0aGUgZmlsZSBtdXN0IGJlZ2luIHdpdGggdHdvIHBvdW5kIChcIykgY2hhcmFjdGVycywgYW5kIG5hbWVzIGVhY2ggb2YgdGhlIGZpZWxkcyBpbiB0aGUgZmlsZS4gIFRoZSBuYW1lcyBvZiB0aGVzZSBmaWVsZHMgaXMgc2lnbmlmaWNhbnQuICBUaGVyZSBhcmUgc29tZSByZXF1aXJlZCBmaWVsZCBuYW1lcyAoc2VlIGJlbG93KSwgYW5kIG90aGVyIGZpZWxkIG5hbWVzIG11c3QgbWF0Y2ggdGhlIHByb3BlcnR5IG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdXNlcnMgYXJlIGdvaW5nIHRvIGJlIGFkZGVkIGludG8uPC9saT4KPGxpPlRoZSBpbXBvcnQgcHJvY2VzcyB3aWxsIGZhaWwgaWYgdGhlIGZpZWxkcyBpbiB0aGUgaW5wdXQgZmlsZSBkb2VzIG5vdCBtYXRjaCBhbGwgb2YgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cCB0aGF0IHVzZXJzIGFyZSBiZWluZyBhZGRlZCBpbnRvPC9saT4KPGxpPlRoZSBpbnB1dCBmaWxlIG1heSBjb250YWluIGZpZWxkcyByZXByZXNlbnRpbmcgc29tZSBvZiB0aGUgb3B0aW9uYWwgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWVkIGdyb3VwLjwvbGk+CjxsaT5UaGUgaW1wb3J0IHByb2Nlc3Mgd2lsbCBpZ25vcmUgYW55IGZpZWxkcyBpbiB0aGUgaW5wdXQgZmlsZSB0aGF0IGFyZSBlaXRoZXIgbm90IGtub3duLCBvciBtYXAgdG8gcHJvcGVydGllcyB0aGF0IGFyZSA8ZW0+b2ZmPC9lbT4gaW4gdGhlIHNwZWNpZmllZCB1c2VyIGdyb3Vwcy48L2xpPgo8L3VsPjxici8+CjxoNj48c3Ryb25nPkNvbHVtbmFyIERhdGE8L3N0cm9uZz48L2g2Pgo8dWw+CjxsaT5UaGUgPHN0cm9uZz51c2VybmFtZTwvc3Ryb25nPiBGaWVsZCAtIFRoZSBkZXNpcmVkIHVzZXJuYW1lLgogICAgPHA+VGhpcyBmaWVsZCBtdXN0IGV4aXN0IGluIHRoZSBoZWFkZXJsaW5lLCBhbmQgaW4gZWFjaCBhbmQgZXZlcnkgbGluZSBvZiB0aGUgaW5wdXQgZmlsZS4gSWYgYSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgZGF0YWJhc2UgaGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgb3ZlcndyaXR0ZW4uPC9wPjwvbGk+CjxsaT5UaGUgPHN0cm9uZz50eHRwYXNzd29yZDwvc3Ryb25nPiBGaWVsZCAtIDxlbT4ob3B0aW9uYWwpPC9lbT4uICBUaGUgcGFzc3dvcmQgdG8gc2V0IGZvciB0aGUgdXNlciBpbiBwbGFpbiB0ZXh0LiAgSWYgdGhlIHBhc3N3b3JkIGZpZWxkIGlzIGVtcHR5IHdoZW4gY3JlYXRpbmcgbmV3IHVzZXJzIHRoZSBwYXNzd29yZCAmcXVvdDtjaGFuZ2VtZSZxdW90OyBpcyBoYXJkY29kZWQuICBJZiB0aGUgcGFzc3dvcmQgZmllbGQgaXMgZW1wdHkgd2hlbiB1cGRhdGluZyBhIHVzZXIgaGlzIHBhc3N3b3JkIHdpbGwgbm90IGJlIGFkanVzdGVkLjwvbGk+CjxsaT5UaGUgPHN0cm9uZz5leHBpcmVzPC9zdHJvbmc+IEZpZWxkIC0gPGVtPihvcHRpb25hbCk8L2VtPi4gIFRoZSBkZXNpcmVkIGV4cGlyeSBkYXRlIGZvciB0aGUgdXNlci4gIElmIHRoaXMgZmllbGQgaXMgc3BlY2lmaWVkIGFuZCBjYW4gYmUgdmFsaWRhdGVkIGFzIGEgdmFsaWQgZGF0ZSB0aGVuIHRoZSBleHBpcnkgZGF0ZSB3aWxsIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBhIG5ldyB1c2VyLCBvdGhlcndpc2UgYSBkZWZhdWx0IHZhbHVlIG9mIDEwIGZyb20gdGhlIGNyZWF0ZSBkYXRlIHdpbGwgYmUgdXNlZC4gIElmIHRoaXMgZmllbGQgaXMgZW1wdHkgd2hlbiB1cGRhdGluZyBhIHVzZXIgdGhlbiBoaXMgZXhwaXJ5IHdpbGwgbm90IGJlIGFkanVzdGVkLjwvbGk+CjxsaT5UaGUgPHN0cm9uZz5ncm91cG5hbWU8L3N0cm9uZz4gRmllbGQgLSBBIDogc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGdyb3VwIG5hbWVzIHRoYXQgeW91IHdhbnQgdG8gaGF2ZSB0aGUgdXNlciBiZSBhIG1lbWJlciBvZi4gSWYgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGZpbGxlZCBpbiB0aGUgaW5zZXJ0L3VwZGF0ZSBvZiB0aGUgcmVjb3JkIHdpbGwgZmFpbC48L2xpPgo8bGk+RHJvcGRvd24vUmFkaW8gRmllbGRzCiAgPHA+VGhlIHZhbHVlIG9mIGRyb3Bkb3duIHByb3BlcnRpZXMgaW4gYW4gaW1wb3J0IGZpbGUgaXMgcmVwcmVzZW50ZWQgYXMgdGhlIHN0cmluZyB0aGF0IGlzIHNob3duIGluIHRoZSBkcm9wZG93biBjb250cm9sIGluIHRoZSBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUgbW9kdWxlLjwvcD4KPC9saT4KPGxpPk11bHRpc2VsZWN0IEZpZWxkcwogIDxwPk11bHRpc2VsZWN0IGZpZWxkcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgQVNDSUkgZmlsZSBhcyBhIDogc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywgd2hlcmUgZWFjaCBzdHJpbmcgcmVwcmVzZW50cyB0aGUgdGV4dCBzaG93biBpbiB0aGUgbXVsdGlzZWxlY3QgbGlzdDwvcD4KPC9saT4KPGxpPkVtYWlsIEZpZWxkcwogIDxwPk11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIHRoYXQgY2FuIGJlIHZhbGlkYXRlZCBieSBQSFBzIGJ1aWx0aW4gZnVuY3Rpb25hbGl0eS48L3A+CjwvbGk+CjxsaT5EYXRlIEZpZWxkcwogIDxwPk11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgdW5peCB0aW1lc3RhbXAgYnkgdGhlIHN0cnRvdGltZSgpIG1ldGhvZC48L3A+CjwvbGk+CjxsaT5JbWFnZSBGaWVsZHMKICAgIDxwPkltYWdlIGFyZSBmaWVsZHMgd2hvXCdzIGNvbHVtbiBuYW1lIG1hdGNoZXMgYSBwcm9wZXJ0eSBvZiB0eXBlIEltYWdlLiAgSWYgdGhpcyBmaWVsZCBpcyBub3QgZW1wdHkgdGhlbiB0aGUgZmlsZW5hbWUgc3BlY2lmaWVkIGluIHRoZXNlIGNvbHVtbnMgbXVzdCBleGlzdCBpbiBpbWFnZSBkZXN0aW5hdGlvbiBwYXRoIGFzIHNwZWNpZmllZCBpbiB0aGUgTUFNUyBwcmVmZXJlbmNlcy4uICBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgZXhpc3QsIGFuZCB0aGUgZmllbGQgaXMgcmVxdWlyZWQsIHRoZW4gdGhlIHJlY29yZCB3aWxsIGZhaWwuPC9wPjwvbGk+CjwvdWw+CjxoNT5Ob3RlczwvaDU+CjxwPlRoZSBpbXBvcnQgcHJvY2VzcyBpcyBhIG1lbW9yeSBhbmQgZGF0YWJhc2UgaW50ZW5zaXZlIHJvdXRpbmUuICBJdCBpcyBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IHRoZSBob3N0IHByb3ZpZGVyLCBzdWNoIGFzIG1lbW9yeSBsaW1pdGF0aW9ucywgcHJvY2Vzc2luZyB0aW1lLCBmaWxlIHNpemUgdXBsb2FkLCBhbmQgc2FmZSBtb2RlIHJlc3RyaWN0aW9ucy4gIEFueSBvbmUgb2YgdGhlc2UgbGltaXRhdGlvbnMgbWF5IGNhdXNlIHRoZSBpbXBvcnQgdG8gZmFpbC4gVGhlcmVmb3JlIGl0IGlzIGFkdmlzYWJsZSB0byBlbnN1cmUgdGhhdCBpbXBvcnQgZmlsZXMgYXJlIHNtYWxsZXIgaW4gc2l6ZSwgYW5kIHNpbXBsZXIgaW4gbmF0dXJlLjwvcD4KPHA+VGhvdWdoIGV2ZXJ5IGVmZm9ydCBoYXMgYmVlbiBtYWRlIHRvIGVuc3VyZSB0aGF0IGRhdGFiYXNlIGNvcnJ1cHRpb24gd2lsbCBub3Qgb2NjdXIsIGl0IGlzIGFkdmlzYWJsZSB0byBwZXJmb3JtIGEgZGF0YWJhc2UgYmFja3VwIGJlZm9yZSBkb2luZyBhIHVzZXIgaW1wb3J0LjwvcD4KPHA+VGhlIEV4cG9ydCBkYXRhIGlzIHRoZSBzYW1lIGZvcm1hdCBhcyBuZWVkZWQgZm9yIGltcG9ydC4gIEhvd2V2ZXIgaXQgbWF5IHByb3ZpZGUgZXh0cmEgZmllbGRzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3IgaW1wb3J0LjwvcD4KPGg1PkV4YW1wbGU8L2g1Pgo8cHJlPgojI3VzZXJuYW1lLGZpcnN0X25hbWUsbGFzdF9uYW1lLGVtYWlsLGNpdHksc3RhdGUsY291bnRyeSx6aXAKdXNlcjEsdGVzdCx1c2VyLHVzZXIxQHNvbWVkb21haW4uY29tLHNvbWV3aGVyZSxUWCxVUywxMjM0NQo8L3ByZT4KJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnRkZXN0Z3JvdXAnXSA9ICdJbXBvcnQgVXNlcnMgSW50byBUaGlzIEdyb3VwJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnRmaWxlbmFtZSddID0gJ0lucHV0IENTViBGaWxlJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnR4bWxmaWxlJ10gPSAnSW5wdXQgWE1MIEZpbGUnOwokbGFuZ1sncHJvbXB0X2V4cG9ydHVzZXJzJ10gPSAnRXhwb3J0IFVzZXJzJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnR1c2VycyddID0gJ0ltcG9ydCBVc2Vycyc7CiRsYW5nWydwcm9tcHRfY2xlYXInXSA9ICdDbGVhcic7CiRsYW5nWydwcm9tcHRfaW1hZ2VfZGVzdGluYXRpb25fcGF0aCddID0gJ0ltYWdlIERlc3RpbmF0aW9uIFBhdGgnOwokbGFuZ1snZXJyb3JfbWlzc2luZ191cGxvYWQnXSA9ICdBIHByb2JsZW0gb2NjdXJyZWQgd2l0aCBhIG1pc3NpbmcgKGJ1dCByZXF1aXJlZCkgdXBsb2FkJzsKJGxhbmdbJ2Vycm9yX2JhZF94bWwnXSA9ICdDb3VsZCBub3QgcGFyc2UgdGhlIHByb3ZpZGVkIFhNTCBmaWxlJzsKJGxhbmdbJ2Vycm9yX25vdGVtcHR5Z3JvdXAnXSA9ICdDYW5ub3QgZGVsZXRlIGEgZ3JvdXAgdGhhdCBzdGlsbCBoYXMgdXNlcnMnOwokbGFuZ1snZXJyb3Jfbm9yZXBlYXRlZGxvZ2lucyddID0gJ1RoaXMgdXNlciBpcyBhbHJlYWR5IGxvZ2dlZCBpbic7CiRsYW5nWydlcnJvcl9jYXB0Y2hhbWlzbWF0Y2gnXSA9ICdTb3JyeSwgYnV0IGNhcHRjaGEgdmVyaWZpY2F0aW9uIGZhaWxlZC4gIFBsZWFzZSB0cnkgYWdhaW4uJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXSA9ICdBbGxvdyB1c2VycyB0byBsb2dpbiBtb3JlIHRoYW4gb25jZSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJ10gPSAnSW1hZ2UgRmlsZSBFeHRlbnNpb25zIHRoYXQgVXNlcnMgYWxsb3dlZCB0byB1cGxvYWQnOwokbGFuZ1snZXZlbnRfaGVscF9PblJlZnJlc2hVc2VyJ10gPSAnCjxoMz5PblJlZnJlc2hVc2VyPC9oMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIHVzZXIgc2Vzc2lvbiBpcyByZWZyZXNoZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczo8L2g0Pgo8dWw+CiAgPGxpPjxlbT5pZDwvZW0+IC0gVGhlIFVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZVVzZXInXSA9ICcKPGgzPk9uRGVsZXRlVXNlcjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGlzIGRlbGV0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZVVzZXInXSA9ICcKPGgzPk9uQ3JlYXRlVXNlcjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGlzIGNyZWF0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSB1c2VyIG5hbWU8L2xpPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uVXBkYXRlVXNlciddID0gJwo8aDM+T25VcGRhdGVVc2VyPGgzPgo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgaXMgdXBkYXRlZCAoZWl0aGVyIGJ5IHVzZXIgdGhlbXNlbGYgb3IgYWRtaW4pPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZUdyb3VwJ10gPSAnCjxoMz5PbkNyZWF0ZUdyb3VwPGgzPgo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIGdyb3VwIGlzIGNyZWF0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSBncm91cCBuYW1lPC9saT4KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGdyb3VwIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVHcm91cCddID0gJwo8aDM+T25EZWxldGVHcm91cDxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBncm91cCBpcyBkZWxldGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgZ3JvdXAgbmFtZTwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBncm91cCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX0FmdGVyTG9naW5BdXRoJ10gPSAnCjxoMz5PbkxvZ2luPGgzPgo8cD5BbiBldmVudCBzZW50IHdoZW4gYSB1c2VyIGxvZ3MgaW48LCBhZnRlciBhdXRoZW50aWNhdGlvbiwgYnV0IGJlZm9yZSBzZXNzaW9uIGluZm9ybWF0aW9uIGlzIGNyZWF0ZWQsIGFuZCB0aGUgc3lzdGVtIHJlY29nbml6ZXMgaGltIGFzIGxvZ2dlZCBpbi4KVGhpcyBldmVudCBjYW4gYmUgdXNlZCBieSB0aGlyZCBwYXJ0eSBtb2R1bGVzIHRvIGFpZGUgaW4gc2VjdXJpdHkgZm9yIE1BTVMuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGlkIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+aXA8L2VtPiAtIFRoZSBpcCBhZGRyZXNzIG9mIHRoZSBjbGllbnQ8L2xpPgo8bGk+PGVtPmFsbG93PC9lbT4gLSBib29sZWFuIHJlZmVyZW5jZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gbG9naW4uICBNb2R1bGVzIGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhbGxvdyBsb2dpbi48L2xpPgo8bGk+PGVtPm1zZzwvZW0+IC0gc3RyaW5nIG1lc3NhZ2UgdG8gaW5kaWNhdGUgdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBpZiBhIG1vZHVsZSBoYXMgc2V0IGFsbG93IHRvIGZhbHNlLjwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX0JlZm9yZUxvZ2luJ10gPSAnCjxoMz5PbkxvZ2luPGgzPgo8cD5BbiBldmVudCBzZW50IHdoZW4gYSB1c2VyIGxvZ3MgaW48LCBhZnRlciBsb2dpbiBmb3JtIHN1Ym1pc3Npb24sIGJ1dCBiZWZvcmUgdGhleSBhcmUgYXV0aGVudGljYXRlZC4uLgpUaGlzIGV2ZW50IGNhbiBiZSB1c2VkIGJ5IHRoaXJkIHBhcnR5IG1vZHVsZXMgdG8gYWlkZSBpbiBzZWN1cml0eSBmb3IgTUFNUy48L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGNsaWVudDwvbGk+CjxsaT48ZW0+YWxsb3c8L2VtPiAtIGJvb2xlYW4gcmVmZXJlbmNlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdXNlciBzaG91bGQgYmUgYWxsb3dlZCB0byBsb2dpbi4gIE1vZHVsZXMgY2FuIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FsbG93IGxvZ2luLjwvbGk+CjxsaT48ZW0+bXNnPC9lbT4gLSBzdHJpbmcgbWVzc2FnZSB0byBpbmRpY2F0ZSB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtIGlmIGEgbW9kdWxlIGhhcyBzZXQgYWxsb3cgdG8gZmFsc2UuPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dpbiddID0gJwo8aDM+T25Mb2dpbjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW48L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGNsaWVudDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW5GYWlsZWQnXSA9ICcKPGgzPk9uTG9naW5GYWlsZWQ8aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dpbiBmYWlsczwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+bXNnPC9lbT4gLSBBIG1lc3NhZ2UgaW5kaWNhdGluZyB3aHkgdGhlIGxvZ2luIGZhaWxlZC4vbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uTG9nb3V0J10gPSAnCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dzIG91dDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSB1c2VyIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25FeHBpcmVVc2VyJ10gPSAnCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBzZXNzaW9uIGV4cGlyZXM8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgZXhwaXJlZCB1c2VyPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQgb2YgdGhlIGV4cGlyZWQgdXNlcjwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9pbmZvX0FmdGVyTG9naW5BdXRoJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIGFmdGVyIGF1dGhlbnRpY2F0aW9uLCBidXQgYmVmb3JlIGFjdHVhbGx5IGxvZ2dpbmcgdGhlIHVzZXIgaW4uJzsKJGxhbmdbJ2V2ZW50X2luZm9fQmVmb3JlTG9naW4nXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBpbiB0byB0aGUgc3lzdGVtLCBhZnRlciBoZSBpcyBoYXMgc3VibWl0dGVkIHRoZSBsb2dpbiBmb3JtLCBidXQgYmVmb3JlIGFueSBhdXRoZW50aWNhdGlvbiBpcyB0ZXN0ZWQuJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dpbiddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dzIGluIHRvIHRoZSBzeXN0ZW0nOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ2luRmFpbGVkJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGZhaWxzIHRvIGxvZyBpbiB0byB0aGUgc3lzdGVtJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dvdXQnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBvdXQgb2YgdGhlIHN5c3RlbSc7CiRsYW5nWydldmVudF9pbmZvX09uRXhwaXJlVXNlciddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBzZXNzaW9uIGlzIGV4cGlyZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIG5ldyB1c2VyIGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PblJlZnJlc2hVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIHVzZXIgc2Vzc2lvbiBpcyByZWZyZXNoZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PblVwZGF0ZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgaW5mbyBpcyB1cGRhdGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGFjY291bnQgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgY3JlYXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uVXBkYXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgdXBkYXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgZGVsZXRlZCc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnQmFja2VuZCBHcm91cCc7CiRsYW5nWydpbmZvX3N0YXInXSA9ICcqIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBmdWxsIHNtYXJ0eSB0ZW1wbGF0ZXMuPGJyLz5BbG9uZyB3aXRoIG90aGVyIHByZS1leGlzdGluZyBzbWFydHkgdmFyaWFibGVzIGFuZCBwbHVnaW5zLCB0aGUgeyR1c2VybmFtZX0gYW5kIHskZ3JvdXB9IHZhcmlhYmxlcyBhcmUgYXZhaWxhYmllLiAgPGVtPihUaGUgeyRncm91cH0gdmFyaWFibGUgbWF0Y2hlcyB0aGUgZmlyc3QgZ3JvdXAgdG8gd2hpY2ggdGhlIHVzZXIgYmVsb25ncy4pPC9lbT4uJzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdFZGl0IHRoaXMgZmllbGQgdG8gcmVzZXQgdGhlIHVzZXJzIHBhc3N3b3JkJzsKJGxhbmdbJ2luZm9fYWRtaW5fcmVwZWF0cGFzc3dvcmQnXSA9ICdFZGl0IHRoaXMgZmllbGQgdG8gcmVzZXQgdGhlIHVzZXJzIHBhc3N3b3JkJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cyddID0gJ0EgdXNlciB3aXRoIHRoYXQgdXNlcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbm9jc3ZyZXN1bHRzJ10gPSAnTm8gcmVzdWx0cyByZXR1cm5lZCBmcm9tIGNzdiBleHBvcnQnOwokbGFuZ1sncHJvbXB0X3VuZmxkbGVuJ10gPSAnTGVuZ3RoIG9mIHVzZXJuYW1lIGZpZWxkJzsKJGxhbmdbJ3Byb21wdF9wd2ZsZGxlbiddID0gJ0xlbmd0aCBvZiBwYXNzd29yZCBmaWVsZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmRsZW5ndGhzJ10gPSAnTWluL01heCBwYXNzd29yZCBsZW5ndGhzIGFyZSBpbnZhbGlkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZWxlbmd0aHMnXSA9ICdNaW4vTWF4IHVzZXJuYW1lIGxlbmd0aHMgYXJlIGludmFsaWQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGVtYWlsYWRkcmVzcyddID0gJ0ludmFsaWQgRW1haWwgYWRkcmVzcyc7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ1dlIGNvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGFkZHJlc3MgZm9yIHRoaXMgYWNjb3VudCc7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2VldHRpbmdpbmZvJ10gPSAnUHJvYmxlbSBzZXR0aW5nIHVzZXIgaW5mbyc7CiRsYW5nWydlcnJvcl9zZXR0aW5ncHJvcGVydHknXSA9ICdQcm9ibGVtIHNldHRpbmcgcHJvcGVydHknOwokbGFuZ1sndXNlcl9hZGRlZCddID0gJ1VzZXIgQWRkZWQgJXMgPSAlcyc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICdVc2VyIERlbGV0ZWQgdWlkPSVzJzsKJGxhbmdbJ3Byb3BlcnR5ZmlsdGVyJ10gPSAnUHJvcGVydHknOwokbGFuZ1sndmFsdWVyZWdleCddID0gJ1ZhbHVlIChyZWd1bGFyIGV4cHJlc3Npb24pJzsKJGxhbmdbJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJ10gPSAnV2FybmluZzogVGhlc2UgZmllbGRzIGFmZmVjdCB0aGUgc2l6ZSBvZiBpbnB1dCBmaWVsZHMgZm9yIGZvcm1zLiAgRGVjcmVhc2luZyB0aGlzIG51bWJlciBvbiBhbiBleGlzdGluZyBzaXRlIG1heSBub3QgYmUgYWR2aXNhYmxlJzsKJGxhbmdbJ2NvbmZpcm1fc3VibWl0cHJlZnMnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gYWRqdXN0IHRoZSBtb2R1bGUgcHJlZmVyZW5jZXM/JzsKJGxhbmdbJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnXSA9ICdFbWFpbCBhZGRyZXNzIGFscmVhZHkgdXNlZCc7CiRsYW5nWydwcm9tcHRfdXNlY29va2llc3RvcmVtZW1iZXInXSA9ICdVc2UgY29va2llcyB0byByZW1lbWJlciBsb2dpbiBkZXRhaWxzJzsKJGxhbmdbJ3Byb21wdF9jb29raWVuYW1lJ10gPSAnVGhlIG5hbWUgb2YgdGhlICZxdW90O1JlbWVtYmVyIE1lJnF1b3Q7IGNvb2tpZSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJ0FsbG93IGR1cGxpY2F0ZSBlbWFpbHMnOwokbGFuZ1sncHJvbXB0X3VzZXJuYW1lX2lzX2VtYWlsJ10gPSAnRW1haWwgYWRkcmVzcyBpcyB1c2VybmFtZSc7CiRsYW5nWydpbmZvX2Nvb2tpZV9rZWVwYWxpdmUnXSA9ICdJZiBlbmFibGVkLCBhIGNvb2tpZSB3aWxsIGJlIHNldCB3aXRoIGFuIGV4cGlyeSB0aW1lIG9mIDI0IGhvdXJzIHRvIGtlZXAgc2Vzc2lvbnMgYWxpdmUuICBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSByZW1lbWJlcm1lIGZ1bmN0aW9uYWxpdHksIGFuZCBjYW4gYmUgdXNlZCB0byBleHRlbmQgYSB1c2VycyBsb2dpbiB0byB0aGUgc3lzdGVtIGlmIHNlc3Npb24gZGF0YSBpcyBjbGVhcmVkIHRvbyBmcmVxdWVudGx5Lic7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcoQWxsb3cgbXVsdGlwbGUgdXNlcnMgd2l0aCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzKSc7CiRsYW5nWydpbmZvX3VzZXJuYW1lX2lzX2VtYWlsJ10gPSAnKHVzZXJcJ3MgZW1haWwgYWRkcmVzcyBpcyB0aGVpciB1c2VybmFtZSAtLSBkb25cJ3Qgc2V0IHRoaXMgd2l0aCAiYWxsb3cgZHVwbGljYXRlIGVtYWlsIGFkZHJlc3NlcyIhKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJ0FsbG93IGR1cGxpY2F0ZSAiZm9yZ290IHBhc3N3b3JkIiByZW1pbmRlcnM/JzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJyhBbGxvdyBhIHVzZXJzIHRvIHJlcXVlc3QgYSBwYXNzd29yZCByZXNldCwgZXZlbiBpZiB0aGV5IGhhdmVuXCd0IGFjdGVkIG9uIGEgcHJldmlvdXMgb25lKSc7CiRsYW5nWydwcm9tcHRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddID0gJ1VzZSBGcm9udC1lbmQgVXNlciBzcGVjaWZpYyBwZXJtaXNzaW9ucz8nOwokbGFuZ1snaW5mb19tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJ10gPSAnKE5vcm1hbGx5LCBNQU1TU2VycyBwZXJtaXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQgQWRtaW4gQXJlYSBwZXJtaXNzaW9ucyBsaWtlIEFkZCBVc2VyLCBBZGQgR3JvdXAsIGV0Yy4gSWYgeW91IHNlbGVjdCB0aGlzIG9wdGlvbiwgdGhlcmUgd2lsbCBiZSBzZXBhcmF0ZSBwZXJtaXNzaW9ucyBmb3IgTUFNU3NlcnMuKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXBsb2FkJ10gPSAnQ291bGQgbm90IGZpbmQgdGhlIHVwbG9hZGVkIGZpbGUgKGludGVybmFsIGVycm9yKSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtX3VwbG9hZCddID0gJ1RoZXJlIHdhcyBhIHByb2JsZW0gd2l0aCB5b3VyIHVwbG9hZGVkIGZpbGUuICBQbGVhc2UgdHJ5IGFnYWluJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VybmFtZSddID0gJ1lvdSBkaWQgbm90IGVudGVyIGEgdXNlcm5hbWUnOwokbGFuZ1snZXJyb3JfbWlzc2luZ2VtYWlsJ10gPSAnWW91IGRpZCBub3QgZW50ZXIgeW91ciBlbWFpbCc7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhIHBhc3N3b3JkJzsKJGxhbmdbJ21hbXN1c2VyX2xvZ291dCddID0gJ01BTVMgVXNlciBMb2dvdXQnOwokbGFuZ1snbWFtc3VzZXJfbG9nZ2VkaW4nXSA9ICdNQU1TIFVzZXIgTG9naW4nOwokbGFuZ1snZWRpdHByb3BfaW5mb21zZyddID0gJzxmb250IGNvbG9yPSJyZWQiPjxiPlVTRSBDQVVUSU9OPC9iPiB3aGVuIGNoYW5naW5nIGV4aXN0aW5nIHByb3BlcnRpZXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gZ3JvdXBzLCB5b3UgbWF5IHBvdGVudGlhbGx5IGNhdXNlIGRhbWFnZSBhbmQgYnJlYWsgYW4gZXhpc3Rpbmcgc2l0ZSA8aT4oZXNwZWNpYWxseSBpZiB5b3UgcmVkdWNlIGZpZWxkIGxlbmd0aHMsIGV0Yyk8L2k+PC9mb250Pic7CiRsYW5nWydpbmZvX3NtdHB2YWxpZGF0ZSddID0gJ1RoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yayBvbiB3aW5kb3dzJzsKJGxhbmdbJ21zZ19kb250Y3JlYXRldXNlcm5hbWUnXSA9ICdEbyBub3QgY3JlYXRlIGEgcHJvcGVydHkgZm9yIHVzZXJuYW1lLCBvciBwYXNzd29yZCBhcyB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBidWlsdGluIHRvIHRoZSBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUgbW9kdWxlJzsKJGxhbmdbJ3Byb21wdF9leHBvcnRjc3YnXSA9ICdFeHBvcnQgVXNlcnMgdG8gQ1NWJzsKJGxhbmdbJ2V4cG9ydGNzdiddID0gJ0V4cG9ydCc7CiRsYW5nWydpbXBvcnRjc3YnXSA9ICdJbXBvcnQnOwokbGFuZ1snYWRtaW4nXSA9ICdBZG1pbic7CiRsYW5nWydlZGl0cHJvcCddID0gJ0VkaXQgUHJvcGVydHk6IDxlbT4lczwvZW0+JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01heGltdW0gTGVuZ3RoJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ3NvcnRieSddID0gJ1NvcnQgQnknOwokbGFuZ1snc29ydCddID0gJ1NvcnRpbmcnOwokbGFuZ1sndXNlcnNpbmdyb3VwJ10gPSAnVXNlcnMgaW4gdGhlIHNlbGVjdGVkIGdyb3VwKHMpJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ0xpbWl0IHJlc3VsdHMgdG8nOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnQ291bGQgbm90IGZpbmQgYW4gZW1haWwgZmllbGQgZm9yIHRoaXMgdXNlci4gIFlvdSBtYXkgbmVlZCB0byBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcic7CiRsYW5nWydwcm9tcHRfZm9yZ290cHdfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBmb3IgRm9yZ290IFBhc3N3b3JkIGZvcm0nOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZm9yIENoYW5nZSBTZXR0aW5ncyBmb3JtJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgbG9naW4gKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgdG8ganVtcCB0byBhZnRlciBsb2dvdXQgKic7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ0EgbnVtYmVyIG9mIHVzZXJzIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHJlc2V0dGluZyBsb3N0IHBhc3N3b3Jkcy4gIEN1cnJlbnRseSB0aGlzIGNvdW50IGlzIGF0Oic7CiRsYW5nWydyZW1vdmUxd2VlayddID0gJ1JlbW92ZSBhbGwgZW50cmllcyBtb3JlIHRoYW4gYSB3ZWVrIG9sZCc7CiRsYW5nWydyZW1vdmUxbW9udGgnXSA9ICdSZW1vdmUgYWxsIGVudHJpZXMgbW9yZSB0aGFuIGEgbW9udGggb2xkJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ1JlbW92ZSBhbGwgZW50cmllcyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY29kZSddID0gJ0FuIGludmFsaWQgY29kZSBoYXMgYmVlbiBlbnRlcmVkLCBwbGVhc2UgdHJ5IGFnYWluJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdTb3JyeSwgSXQgYXBwZWFycyB0aGF0IHRoZSB0ZW1wb3JhcnkgY29kZSB5b3UgcmVjZWl2ZWQgZm9yIHJlc2V0dGluZyB5b3VyIHBhc3N3b3JkIGlzIG5vdyBpbnZhbGlkICh0ZW1wb3JhcnkgY29kZXMgY2FuIG9ubHkgYmUgdXNlZCBvbmNlKS4gIFBsZWFzZSB0cnkgYWdhaW4uJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3ZlcmlmeXRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgdXNlZCB0byBkaXNwbGF5IHZlcmlmaWNhdGlvbiBmb3JtJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX2VtYWlsdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSB1c2VkIGZvciBmb3Jnb3R0ZW4gcGFzc3dvcmQgZW1haWwnOwokbGFuZ1snZXJyb3JfcmVzZXRhbHJlYWR5c2VudCddID0gJ0VpdGhlciB5b3Vyc2VsZiBvciBzb21lb25lIGVsc2UgaGFzIGFscmVhZHkgdHJpZ2dlcmVkIGEgcGFzc3dvcmQgcmVzZXQgb3BlcmF0aW9uIGZvciB0aGlzIGFjY291bnQuICBDaGVjayB5b3VyIGVtYWlsLCB5b3UgbWF5IGhhdmUgZnVydGhlciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQgaW4geW91ciBpbmJveCc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgZXJyb3InOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnWW91IGFyZSByZWNlaXZpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2Ugc29tZWJvZHkgdG9sZCBvdXIgc2l0ZSB0aGF0IHlvdSBoYWQgbG9zdCB5b3VyIHBhc3N3b3JkLiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93LiAgSWYgeW91IGRvblwndCBoYXZlIGEgY2x1ZSB3aGF0IHRoaXMgaXMsIHRoZW4geW91IGFyZSBzYWZlIHRvIGRlbGV0ZSB0aGlzIG1lc3NhZ2UsIGFuZCB3ZSB0aGFuayB5b3UgZm9yIHlvdXIgdGltZS4nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb2RlJzsKJGxhbmdbJ21lc3NhZ2VfY29kZSddID0gJ1RoZSBmb2xsb3dpbmcgY29kZSBoYXMgYmVlbiByYW5kb21seSBnZW5lcmF0ZWQgaW4gb3JkZXIgdG8gdmVyaWZ5IHRoZSB1c2VyIGFjY291bnQuICB3aGVuIHlvdSBjbGljayBvbiB0aGUgbGluayBiZWxvdyB5b3Ugd2lsbCBiZSBwcmVzZW50ZWQgd2l0aCBhIGZpZWxkIHRvIGVudGVyIHRoaXMgY29kZS4gIE5vcm1hbGx5IHRoZSBmaWVsZCBpcyBwcmUtY29tcGxldGVkIGZvciB5b3UsIGJ1dCBpbmNhc2UgaXQgaXNuXCd0IHRoZSBjb2RlIGlzOic7CiRsYW5nWydwcm9tcHRfbGluayddID0gJ0NsaWNraW5nIG9uIHRoZSBmb2xsb3dpbmcgbGluayB3aWxsIHRha2UgeW91IHRvIHRoZSB3ZWJzaXRlIHdoZXJlIHlvdSBjYW4gZW50ZXIgdGhlIGFib3ZlIGNvZGUsIGFuZCByZXNldCB5b3VyIHBhc3N3b3JkOic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnTG9zdCBQYXNzd29yZCc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0NvdWxkIG5vdCBmaW5kIHRoZSBDTVNNYWlsZXIgbW9kdWxlJzsKJGxhbmdbJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCddID0gJ0FuIGVtYWlsIGhhcyBiZWVuIHNlbnQgdG8gJXMgd2l0aCBpbnN0cnVjdGlvbnMgYXMgdG8gaG93IHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuICBUaGFuayB5b3UnOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdTbyB5b3UgZm9yZ290IG9yIGxvc3QgeW91ciBwYXNzd29yZC4gV2VsbCwgZW50ZXIgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGludG8gdGhpcyBmb3JtLCBhbmQgaWYgd2UgY2FuIGZpbmQgeW91IHdlIHdpbGwgc2VuZCB5b3UgYW4gZW1haWwgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IGl0Lic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZSddID0gJ0ZvcmdvdCBQYXNzd29yZCBUZW1wbGF0ZXMnOwokbGFuZ1snbG9zdHVzZXJuYW1lX3RlbXBsYXRlJ10gPSAnTG9zdCBVc2VybmFtZSBUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl9wcm9wbm90Zm91bmQnXSA9ICdQcm9wZXJ0eSAlcyBub3QgZm91bmQnOwokbGFuZ1sncHJvcHNmb3VuZCddID0gJ1Byb3BlcnRpZXMgZm91bmQnOwokbGFuZ1snYWRkcHJvcCddID0gJ0FkZCBQcm9wZXJ0eSc7CiRsYW5nWydlcnJvcl9yZXF1aXJlZGZpZWxkJ10gPSAnQSByZXF1aXJlZCBmaWVsZCAoJXMpIHdhcyBlbXB0eSc7CiRsYW5nWydpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCddID0gJ0VudGVyIGEgbmV3IHBhc3N3b3JkIGhlcmUgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQnOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdZb3UgZG8gbm90IGFwcGVhciB0byBiZSBsb2dnZWQgaW4nOwokbGFuZ1sndXNlcl9zZXR0aW5ncyddID0gJ1NldHRpbmdzJzsKJGxhbmdbJ3VzZXJfcmVnaXN0cmF0aW9uJ10gPSAnUmVnaXN0cmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2FjY291bnRleHBpcmVkJ10gPSAnVGhpcyBhY2NvdW50IGhhcyBleHBpcmVkJzsKJGxhbmdbJ2Vycm9yX2ltcHJvcGVyZW1haWxmb3JtYXQnXSA9ICdJbXByb3BlciBlbWFpbCBhZGRyZXNzIGZvcm1hdHRpbmcnOwokbGFuZ1snZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnXSA9ICdJbnZhbGlkIGV4cGlyeSBkYXRlLiAgVGhpcyBtYXkgYmUgc3lzdGVtIHJlbGF0ZWQuICBUcnkgc2V0dGluZyBhbiBlYXJsaWVyIHllYXIuJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW1zZXR0aW5ncHJvcGVydHknXSA9ICdFcnJvciBzZXR0aW5nIHByb3BlcnR5ICVzIGZvciB1c2VyICRzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRncm91cGlkJ10gPSAnSW52YWxpZCBncm91cCBpZCAlcyc7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnSGlkZGVuIGZpZWxkIG1hcmtlcic7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnSGlkZGVuIGZpZWxkIGNvbG9yJzsKJGxhbmdbJ2hpZGRlbiddID0gJ0hpZGRlbic7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnQSBwcm9wZXJ0eSB3aXRoIHRoYXQgbmFtZSBpcyBhbHJlYWR5IGRlZmluZWQnOwokbGFuZ1snZXJyb3Jfbm9wcm9wZXJ0aWVzJ10gPSAnTm8gcHJvcGVydGllcyBkZWZpbmVkJzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnTm8gcHJvcGVydGllcyB3ZXJlIHNlbGVjdGVkIGZvciB0aGlzIGdyb3VwLiAgQSBncm91cCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHByb3BlcnR5IHNlbGVjdGVkIChSZXF1aXJlZCxPcHRpb25hbCwgb3IgSGlkZGVuKSc7CiRsYW5nWydub2dyb3VwcyddID0gJ05vIEdyb3VwcyBhcmUgZGVmaW5lZCc7CiRsYW5nWydncm91cHNmb3VuZCddID0gJ0dyb3VwcyBmb3VuZCc7CiRsYW5nWydlcnJvcl9vbmVncm91cHJlcXVpcmVkJ10gPSAnTWVtYmVyc2hpcCBpbiBhdCBsZWFzdCBvbmUgZ3JvdXAgaXMgcmVxdWlyZWQnOwokbGFuZ1sncHJvbXB0X3JlcXVpcmVvbmVncm91cCddID0gJ1JlcXVpcmUgbWVtYmVyc2hpcCBpbiBhdGxlYXN0IG9uZSBncm91cCc7CiRsYW5nWydiYWNrJ10gPSAnQmFjayc7CiRsYW5nWydlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJ10gPSAnJXMgaXMgYSByZXF1aXJlZCBmaWVsZCc7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnTWFyayByZXF1aXJlZCBmaWVsZHMgd2l0aCc7CiRsYW5nWydyZXF1aXJlZGZpZWxkY29sb3InXSA9ICdIaWxpdGUgcmVxdWlyZWQgZmllbGRzIGluJzsKJGxhbmdbJ25leHQnXSA9ICdOZXh0JzsKJGxhbmdbJ2Vycm9yX2dyb3VwZXhpc3RzJ10gPSAnQSBHcm91cCB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydyZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsKJGxhbmdbJ29wdGlvbmFsJ10gPSAnT3B0aW9uYWwnOwokbGFuZ1snb2ZmJ10gPSAnT2ZmJzsKJGxhbmdbJ3NpemUnXSA9ICdTaXplJzsKJGxhbmdbJ3NpemVjb21tZW50J10gPSAnPGJyLz4oTWF4aW11bSBzaXplIG9mIGFueSBvbmUgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMpJzsKJGxhbmdbJ2xlbmd0aCddID0gJ0xlbmd0aCc7CiRsYW5nWydsZW5ndGhjb21tZW50J10gPSAnPGJyPihjaGFycyBpbiB0aGUgdGV4dCBpbnB1dCknOwokbGFuZ1snc2Vsb3B0aW9ucyddID0gJ0Ryb3Bkb3duIG9wdGlvbnMsIHNlcGFyYXRlZCBieSBsaW5lIGJyZWFrcy4gIFZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIGZyb20gdGV4dCB3aXRoIGEgPSBjaGFyYWN0ZXIuIGkuZTogRmVtYWxlPWYnOwokbGFuZ1sncmFkaW9vcHRpb25zJ10gPSAnUmFkaW9idXR0b24gbGFiZWxzLCBzZXBhcmF0ZWQgYnkgbGluZSBicmVha3MuIFZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIGZyb20gdGV4dCB3aXRoIGEgPSBjaGFyYWN0ZXIuIGkuZTogRmVtYWxlPWYnOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ3Byb21wdCddID0gJ1Byb21wdCc7CiRsYW5nWydwcm9tcHRfdHlwZSddID0gJ1R5cGUnOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7CiRsYW5nWydmaWVsZHN0YXR1cyddID0gJ0ZpZWxkIFN0YXR1cyc7CiRsYW5nWyd1c2VkaW5sb3N0dW4nXSA9ICdBc2sgaW4gTG9zdDxici8+VXNlcm5hbWUnOwokbGFuZ1sndGV4dCddID0gJ1RleHQnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydtdWx0aXNlbGVjdCddID0gJ011bHRpIFNlbGVjdCBMaXN0JzsKJGxhbmdbJ3JhZGlvYnV0dG9ucyddID0gJ1JhZGlvIEJ1dHRvbnMnOwokbGFuZ1snaW1hZ2UnXSA9ICdJbWFnZSc7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dGFyZWEnOwokbGFuZ1snZHJvcGRvd24nXSA9ICdEcm9wZG93bic7CiRsYW5nWydtc2dfY3VycmVudGx5bG9nZ2VkaW5hcyddID0gJ1dlbGNvbWUnOwokbGFuZ1snbG9nb3V0J10gPSAnU2lnbiBvdXQnOwokbGFuZ1sncHJvbXB0X25ld2dyb3VwbmFtZSddID0gJ1VzZSB0aGlzIGdyb3VwIG5hbWUnOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzJ10gPSAnQ2hhbmdlIE15IFNldHRpbmdzJzsKJGxhbmdbJ2Vycm9yX2xvZ2luZmFpbGVkJ10gPSAnTG9naW4gZmFpbGVkLiAgVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHlvdSBlbnRlcmVkIGFuIGludmFsaWQgdXNlcm5hbWUgb3IgcGFzc3dvcmQuICBCdXQgeW91ciBhY2NvdW50IG1heSBoYXZlIGFsc28gZXhwaXJlZCBvciBiZWVuIGRpc2FibGVkIGJ5IGFuIGFkbWluaXN0cmF0b3IuICBQbGVhc2UgZG91YmxlIGNoZWNrIHlvdXIgbG9naW4gY3JlZGVudGlhbHMsIGFuZCBpZiB0aGV5IGFyZSBjb3JyZWN0IHlvdSBtYXkgbmVlZCB0byBjb250YWN0IHRoZSBzaXRlIGFkbWluaXN0cmF0b3IuJzsKJGxhbmdbJ2xvZ2luJ10gPSAnU2lnbiBpbic7CiRsYW5nWydwcm9tcHRfc2lnbmluX2J1dHRvbiddID0gJ1NpZ24gaW4gYnV0dG9uIGxhYmVsJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ3Byb21wdF9lbWFpbCddID0gJ0VtYWlsIEFkZHJlc3MnOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1sncHJvbXB0X3JlbWVtYmVybWUnXSA9ICdSZW1lbWJlciBtZSBvbiB0aGlzIGNvbXB1dGVyJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0ZXInOwokbGFuZ1snZm9yZ290cHcnXSA9ICdGb3Jnb3QgWW91ciBQYXNzd29yZD8nOwokbGFuZ1snbG9zdHVzZXJuYW1lJ10gPSAnRm9yZ290IFlvdXIgTG9naW4gRGV0YWlscz8nOwokbGFuZ1snZGVmYXVsdHMnXSA9ICdEZWZhdWx0cyc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdUaGF0IHVzZXJuYW1lICglcykgaXMgYWxyZWFkeSBpbiB1c2UnOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ1VzZSBTTVRQIHRvIHZhbGlkYXRlIGVtYWlsIGFkZHJlc3Nlcz8nOwokbGFuZ1sncHJvbXB0X21pbnB3bGVuJ10gPSAnTWluaW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTWF4aW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnTWluaW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHVubGVuJ10gPSAnTWF4aW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X3Nlc3Npb250aW1lb3V0J10gPSAnU2Vzc2lvbiBUaW1lb3V0IChzZWNvbmRzKSc7CiRsYW5nWydwcm9tcHRfY29va2lla2VlcGFsaXZlJ10gPSAnVXNlIGNvb2tpZXMgdG8ga2VlcCBsb2dpbnMgYWxpdmUnOwokbGFuZ1sncHJvbXB0X2FsbG93ZW1haWxyZWcnXSA9ICdBbGxvdyBFbWFpbCBSZWdpc3RyYXRpb24nOwokbGFuZ1sncHJvbXB0X2RmbHRncm91cCddID0gJ0RlZmF1bHQgR3JvdXAgZm9yIG5ldyB1c2Vycyc7CiRsYW5nWydjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZSddID0gJ0NoYW5nZSBTZXR0aW5ncyBUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl9wYXNzd29yZG1pc21hdGNoJ10gPSAnUGFzc3dvcmRzIERvIG5vdCBtYXRjaCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWUnXSA9ICdJbnZhbGlkIFVzZXJuYW1lJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZCddID0gJ0ludmFsaWQgUGFzc3dvcmQuICBZb3VyIHBhc3N3b3JkIG1heSBiZSB0b28gc2hvcnQsIHRvbyBsb25nLCBvciBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhpcyBzeXN0ZW0uICBTZWUgdGhlIHdlYnNpdGVzIHBhc3N3b3JkIHBvbGljeSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nOwokbGFuZ1snZXJyb3JfdXNlcm5vdGZvdW5kJ10gPSAnU29ycnksIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZy4gIFdlIGNvdWxkIG5vdCBmaW5kIGFueSBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2VyJzsKJGxhbmdbJ2VkaXR1c2VyJ10gPSAnRWRpdCBVc2VyJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnVmFsaWQnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdVc2VybmFtZSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snZXJyb3JfbWVtYmVyZ3JvdXBzJ10gPSAnVGhpcyB1c2VyIGlzIG5vdCBhIG1lbWJlciBvZiBhbnkgZ3JvdXBzJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICdObyBQcm9wZXJ0aWVzJzsKJGxhbmdbJ2Vycm9yX2R1cF9wcm9wZXJ0aWVzJ10gPSAnQXR0ZW1wdCB0byBpbXBvcnQgZHVwbGljYXRlIHByb3BlcnRpZXMnOwokbGFuZ1sndmFsdWUnXSA9ICdWYWx1ZSc7CiRsYW5nWydncm91cHMnXSA9ICdHcm91cHMnOwokbGFuZ1sncHJvcGVydGllcyddID0gJ1Byb3BlcnRpZXMnOwokbGFuZ1sncHJvcG5hbWUnXSA9ICdQcm9wZXJ0eSBOYW1lJzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ1Byb3BlcnR5IFZhbHVlJzsKJGxhbmdbJ2FkZCddID0gJ0FkZCc7CiRsYW5nWydoaXN0b3J5J10gPSAnSGlzdG9yeSc7CiRsYW5nWydlZGl0J10gPSAnRWRpdCc7CiRsYW5nWydleHBpcmVzJ10gPSAnRXhwaXJlcyc7CiRsYW5nWydzcGVjaWZ5X2RhdGUnXSA9ICdTcGVjaWZ5IERhdGUnOwokbGFuZ1snMTJocnMnXSA9ICcxMiBIb3Vycyc7CiRsYW5nWycyNGhycyddID0gJzI0IEhvdXJzJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggSG91cnMnOwokbGFuZ1snMXdlZWsnXSA9ICcxIFdlZWsnOwokbGFuZ1snMndlZWtzJ10gPSAnMiBXZWVrcyc7CiRsYW5nWycxbW9udGgnXSA9ICcxIE1vbnRoJzsKJGxhbmdbJzNtb250aHMnXSA9ICczIE1vbnRocyc7CiRsYW5nWyc2bW9udGhzJ10gPSAnNiBNb250aHMnOwokbGFuZ1snMXllYXInXSA9ICcxIFllYXInOwokbGFuZ1snbmV2ZXInXSA9ICdOZXZlcic7CiRsYW5nWydwb3N0aW5zdGFsbG1lc3NhZ2UnXSA9ICdNb2R1bGUgaW5zdGFsbGVkIHN1Y2Vzc2Z1bGx5Ljxici8+QmUgc3VyZSB0byBzZXQgdGhlICJNb2RpZnkgTUFNUyBQcm9wZXJ0aWVzIHBlcm1pc3Npb24uICBBZGRpdGlvbmFsbHksIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBpbnN0YWxsIHRoZSBDYXB0Y2hhIG1vZHVsZS4gIElmIGluc3RhbGxlZCwgdmFsaWRhdGlvbiBvZiBhIGNhcHRjaGEgaW1hZ2Ugd2lsbCBiZSByZXF1aXJlZCBpbiBhZGRpdGlvbiB0byB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHRvIGxvZ2luLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcmV2ZW50IGJydXRlIGZvcmNlIGF0dGFja3MuICA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBub2NhcHRjaGEgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5IGV2ZW4gaWYgdGhlIENhcHRjaGEgbW9kdWxlIGlzIGluc3RhbGxlZC4iJzsKJGxhbmdbJ2VtYWlsJ10gPSAnRW1haWwgQWRkcmVzcyc7CiRsYW5nWydwYXNzd29yZCddID0gJ1Bhc3N3b3JkJzsKJGxhbmdbJ3JlcGVhdHBhc3N3b3JkJ10gPSAnQWdhaW4nOwokbGFuZ1snZXJyb3JfZ3JvdXBuYW1lX2V4aXN0cyddID0gJ0dyb3VwIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlZGl0Z3JvdXAnXSA9ICdFZGl0IEdyb3VwJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ2NvbmZpcm1fZWRpdGdyb3VwJ10gPSAnQXJlIHlvdSBzdXJlIHRoaXMgaXMgdGhlIHByb3BlciBzZXR0aW5ncyBmb3IgdGhpcyBncm91cD9cblR1cm5pbmcgYSBwcm9wZXJ0eSBvZmYgd2lsbCBub3QgZGVsZXRlIGFueSBlbnRyaWVzIGluIHRoZSBwcm9wZXJ0aWVzIHRhYmxlIGZvciB0aGlzIGdyb3VwL3VzZXIuICBUaGV5IHdpbGwgbWVyZWx5IGJlIHVuYXZhaWxhYmxlLic7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZWdyb3VwJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGdyb3VwPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbXBsZXRlbHkgZGVsZXRlIHRoaXMgcHJvcGVydHk/XG5Eb2luZyBzbyB3aWxsIGFsc28gZXJhc2UgYW55IHVzZXIgZW50cmllcyBmb3IgdGhpcyBwcm9wZXJ0eS4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnSW5zdWZmaWNpZW50IFBhcmFtZXRlcnMnOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWyd1c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRwcm9wJ10gPSAnUHJvYmxlbSBhZGRpbmcgcHJvcGVydHknOwokbGFuZ1snZXJyb3JfY2FudGFkZGdyb3VwcmVsbiddID0gJ1Byb2JsZW0gYWRkaW5nIGdyb3VwIHJlbGF0aW9uJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRncm91cCddID0gJ1Byb2JsZW0gYWRkaW5nIGdyb3VwJzsKJGxhbmdbJ2Vycm9yX2NhbnRhc3NpZ251c2VyJ10gPSAnUHJvYmxlbSBhZGRpbmcgYSB1c2VyIHRvIGEgZ3JvdXAnOwokbGFuZ1snZXJyb3JfY291bGRub3RkZWxldGVwcm9wZXJ0eSddID0gJ1Byb2JsZW0gZGVsZXRpbmcgYSBwcm9wZXJ0eSc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdGZpbmRlbWFpbCddID0gJ0NvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGFkZHJlc3MnOwokbGFuZ1snZXJyb3JfZGVzdGluYXRpb25ub3R3cml0YWJsZSddID0gJ05vIHdyaXRlIHBlcm1pc3Npb24gdG8gZGVzdGluYXRpb24gZGlyZWN0b3J5JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXJhbXMnXSA9ICdJbnZhbGlkIFBhcmFtZXRlcnMnOwokbGFuZ1snZXJyb3Jfbm9ncm91cHMnXSA9ICdDb3VsZCBub3QgZmluZCBhbnkgZ3JvdXBzJzsKJGxhbmdbJ2FwcGx5ZmlsdGVyJ10gPSAnQXBwbHknOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdGVyJzsKJGxhbmdbJ3VzZXJmaWx0ZXInXSA9ICdVc2VybmFtZSBSZWd1bGFyIEV4cHJlc3Npb24nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWyduYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydncm91cG5hbWUnXSA9ICdHcm91cCBOYW1lJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQnOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvcic7CiRsYW5nWydhZGRncm91cCddID0gJ0FkZCBHcm91cCc7CiRsYW5nWydpbXBvcnRncm91cCddID0gJ0ltcG9ydCBHcm91cCc7CiRsYW5nWydhZGR1c2VyJ10gPSAnQWRkIFVzZXInOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcm91cHMgRm91bmQnOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ1VzZXJzIGZvdW5kIHRoYXQgbWF0Y2ggdGhlIGNyaXRlcmlhJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3JvdXAnOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdTZWxlY3QgR3JvdXAnOwokbGFuZ1sncmVnaXN0cmF0aW9uX3RlbXBsYXRlJ10gPSAnUmVnaXN0cmF0aW9uIFRlbXBsYXRlJzsKJGxhbmdbJ2xvZ291dF90ZW1wbGF0ZSddID0gJ0xvZ291dCBUZW1wbGF0ZSc7CiRsYW5nWydsb2dpbl90ZW1wbGF0ZSddID0gJ0xvZ2luIFRlbXBsYXRlJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHJlZmVyZW5jZXMnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3JvdXBzJzsKJGxhbmdbJ3VzZXJzJ10gPSAiVXNlcnMiOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnTWVtYmVycyBBcmVhIChNQU1TKSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ01lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZTogYWxsb3cgdXNlcnMgdG8gbG9nIGluIHRvIHRoZSBmcm9udGVuZCBvZiB5b3VyIHNpdGUnOwokbGFuZ1snZGVmYXVsdGZyb250cGFnZSddID0gIkRlZmF1bHQgZnJvbnQgcGFnZSI7CiRsYW5nWydsYXN0YWNjZXNzZWRwYWdlJ10gPSAnTGFzdCBhY2Nlc3NlZCBwYWdlJzsKJGxhbmdbJ290aGVycGFnZSddID0gJ090aGVyIHBhZ2U6ICc7CiRsYW5nWydjYXB0Y2hhX3RpdGxlJ10gPSAnUGxlYXNlIHZlcmlmeSB5b3UgYXJlIG5vdCBhIGJvdC4nOwoKIyBMSVNFIGN1c3RvbSBmaWVsZHMKJGxhbmdbJ2ZpZWxkZGVmX01BTVNTaW5nbGVTZWxlY3QnXSA9ICdNQU1TIFVzZXJzIFNpbmdsZSBTZWxlY3QnOwokbGFuZ1snZmllbGRkZWZfTUFNU011bHRpU2VsZWN0J10gPSAnTUFNUyBVc2VycyBNdWx0aSBTZWxlY3QnOwokbGFuZ1snZmllbGRkZWZfTUFNU0dyb3Vwc1NpbmdsZVNlbGVjdCddID0gJ01BTVMgR3JvdXBzIFNpbmdsZSBTZWxlY3QnOwokbGFuZ1snZmllbGRkZWZfTUFNU0dyb3Vwc011bHRpU2VsZWN0J10gPSAnTUFNUyBHcm91cHMgTXVsdGkgU2VsZWN0JzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfb3B0aW9ucyddID0gJ01BTVMgR3JvdXBzJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfbXVsdGlzZWxlY3RfaGVscCddID0gJ1BsZWFzZSBzZWxlY3Qgb25lIG9yIG1vcmUgb2YgdGhlIGF2YWlsYWJsZSBNQU1TIEdyb3Vwcyc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX2ZpZWxkc19oZWxwJ10gPSAnUGxlYXNlIHNlbGVjdCB0aGUgY3VzdG9tIGZpZWxkIGZyb20gTUFNUyBmcm9tIHdoaWNoIHRvIGRyYXcgdGhlIHZhbHVlcyB0aGF0IHdpbGwgYmUgc2hvd24gb24gdGhlIHNlbGVjdCBmaWVsZC48YnI+Tm90ZSB0aGF0IHRoZSBzZWxlY3RlZCBmaWVsZCBzaG91bGQgaGF2ZSB1bmlxdWUgdmFsdWVzIGFjcm9zcyBhbGwgRkVVIHVzZXJzIGVudHJpZXMuJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfZmllbGRzJ10gPSAnU2VsZWN0IDFzdCBNQU1TIEZpZWxkJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfZmllbGRzMiddID0gJ1NlbGVjdCAybmQgTUFNUyBGaWVsZCc7CiRsYW5nWydmaWVsZGRlZl91c2VycyddID0gJ1VzZXJzJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZV91c2VybmFtZSddID0gJ1VzZSBVc2VybmFtZSBGaWVsZCc7CiRsYW5nWydmaWVsZGRlZl91c2VfdWlkJ10gPSAnUHJlcGVuZCBVc2VyIElEJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZV91aWRfaGVscCddID0gJ1ByZXBlbmQgdXNlciBpZCB0byB0aGUgb3B0aW9ucyBpbiBbbl0gZm9ybWF0Lic7CiRsYW5nWydmaWVsZGRlZl91c2VfdXNlcm5hbWVfaGVscCddID0gJ0lmIHlvdSBjaGVjayB0aGlzIG9wdGlvbiwgdGhlIGN1c3RvbSBmaWVsZHMgYmVsb3cgd2lsbCBub3QgYmUgdXNlZC4nOwokbGFuZ1snZmllbGRkZWZfc2VwYXJhdG9yX2NociddID0gJ1NlcGFyYXRvciBDaGFyYWN0ZXInOwokbGFuZ1snZmllbGRkZWZfc2VwYXJhdG9yX2Nocl9oZWxwJ10gPSAnQ2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgZmllbGQgMSBhbmQgZmllbGQgMiBvbiB0aGUgb3B0aW9ucyB0ZXh0LiBEZWZhdWx0IGlzIGEgc3BhY2UgY2hhcmFjdGVyLic7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fdW5zYWZlcGFzc3dvcmQnXSA9ICdEaWVzZXMgQmVudXR6ZXJrZW5ud29ydCB2ZXJ3ZW5kZXQgZWluZW4gYWx0ZW4gSGFzaC1NZWNoYW5pc211cy4gRGVyIEJlbnV0emVyIHNvbGx0ZSBkYXMgS2VubndvcnQgw6RuZGVybi4nOwokbGFuZ1sndW5zYWZlJ10gPSAndW5zaWNoZXInOwokbGFuZ1snbXNnX2Fub25pbWl6ZWQnXSA9ICdCZW51dHplciBhbm9ueW1pc2llcnQnOwokbGFuZ1snYW5vbmltaXplJ10gPSAnQmVudXR6ZXIgYW5vbnltaXNpZXJlbic7CiRsYW5nWydjb25maXJtX2Fub25pbWl6ZSddID0gJ03DtmNodGVuIFNpZSBkaWVzZW4gQmVudXR6ZXIgd2lya2xpY2ggYW5vbnltaXNpZXJlbj8gRGFzIEtvbnRvIHdpcmQgZGVha3RpdmllcnQsIGRhcyBQYXNzd29ydCBnZcOkbmRlcnQsIGRlciBCZW51dHplcm5hbWUgdW5kIGFsbGUgcGVyc8O2bmxpY2hlbiBJbmZvcm1hdGlvbmVuIGdlbMO2c2NodC4nOwokbGFuZ1sncHJvbXB0X2NsZWFyaGlzdG9yeV9hZ2UnXSA9ICdWZXJsYXVmc2VpbnRyw6RnZSBsw7ZzY2hlbiwgZGllIMOkbHRlciBhbHMgTiBUYWdlIHNpbmQnOwokbGFuZ1snaW5mb19jbGVhcmhpc3RvcnlfYWdlJ10gPSAnR2ViZW4gU2llIGVpbmVuIFdlcnQgdW5nbGVpY2ggTnVsbCBlaW4sIHVtIHJlZ2VsbcOkw59pZyBhbGxlIEJlbnV0emVydmVybGF1ZnNlaW50csOkZ2UgenUgZW50ZmVybmVuLCBkaWUgw6RsdGVyIGFscyBkaWUgYW5nZWdlYmVuZSBBbnphaGwgdm9uIFRhZ2VuIHNpbmQuJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdOYWNoIGRlciBCZW51dHplcsO8YmVycHLDvGZ1bmcgYXV0b21hdGlzY2ggYW5tZWxkZW4nOwokbGFuZ1snaW5mb19sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdXZW5uIGRpZXNlIE9wdGlvbiBha3RpdmllcnQgaXN0LCB3aXJkIGVpbiBhdXRoZW50aWZpemllcnRlciBCZW51dHplciwgZGVyIHNlaW5lIElkZW50aXTDpHQgZXJmb2xncmVpY2ggdmVyaWZpemllcnQsIGF1dG9tYXRpc2NoIGFuZ2VtZWxkZXQuJzsKJGxhbmdbJ3F1aWNrZmluZF9pZG5hbWUnXSA9ICdCZW51dHplci1JRC8tbmFtZSc7CiRsYW5nWydxdWlja2ZpbmRfcGgnXSA9ICdCZW51dHplci1JRCBvZGVyIC1uYW1lJzsKJGxhbmdbJ2ZpbmQnXSA9ICdCZW51dHplciBiZWFyYmVpdGVuJzsKJGxhbmdbJ3F1aWNrZmluZF91c2VyJ10gPSAnU2NobmVsbHN1Y2hl4oCmJzsKJGxhbmdbJ3VzZXJzbWF0Y2hpbmcnXSA9ICdCZW51dHplciwgZGllIElocmVuIEtyaXRlcmllbiBlbnRzcHJlY2hlbic7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWRzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snZGlzYWJsZWQnXSA9ICdkZWFrdGl2aWVydCc7CiRsYW5nWydlbmFibGVkJ10gPSAnYWt0aXZpZXJ0JzsKJGxhbmdbJ3Byb3ByZWdleCddID0gJ0VpZ2Vuc2NoYWZ0c3dlcnQnOwokbGFuZ1snaW5mb19wcm9wcmVnZXgnXSA9ICdHZWJlbiBTaWUgZWluZSBaZWljaGVuZm9sZ2UsIFRlaWx6ZWljaGVuZm9sZ2Ugb2RlciBlaW5lbiByZWd1bMOkcmVuIEF1c2RydWNrIGVpbi4gR2ViZW4gU2llIGbDvHIgS29udHJvbGxrw6RzdGNoZW5mZWxkZXIgZWluZW4gV2VydCB2b24gMCBvZGVyIDEgZWluLiBVbSBuYWNoIGVpbmVtIGJlbGllYmlnZW4gV2VydCBmw7xyIGVpbmUgRWlnZW5zY2hhZnQgenUgZmlsdGVybiwgdmVyd2VuZGVuIFNpZSBkaWUgWmVpY2hlbmZvbGdlIDxjb2RlPi4qPC9jb2RlPiAoUHVua3QtU3Rlcm5jaGVuKS4nOwokbGFuZ1snaW5mb19leHBpcmVkJ10gPSAnRGllc2VzIEJlbnV0emVya29udG8gaXN0IGFiZ2VsYXVmZW47IEFubWVsZHVuZyB2ZXJoaW5kZXJ0Lic7CiRsYW5nWydkaXNhYmxlX3VzZXIyJ10gPSAnQmVudXR6ZXIgZGVha3RpdmllcmVuJzsKJGxhbmdbJ2Vycm9yX3VzZXJkZWxldGUnXSA9ICdEaWVzZXMgQmVudXR6ZXJrb250byBrb25udGUgbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbi4gVmllbGxlaWNodCBoYWJlbiBhbmRlcmUgTW9kdWxlIERhdGVuLCBkaWUgbWl0IGRpZXNlbSBCZW51dHplciB2ZXJidW5kZW4gc2luZD8nOwokbGFuZ1snd2Fybl9zdHJvbmdwYXNzd29yZCddID0gJ0JlYWNodGVuIFNpZSwgZGFzcyBzdGFuZGFyZG3DpMOfaWcgc3RhcmtlIEtlbm53w7ZydGVyIGVyZm9yZGVybGljaCBzaW5kLiBEaWUgRWluc3RlbGx1bmdlbiBmw7xyIEtlbm53w7ZydGVyIGvDtm5uZW4gw7xiZXIgZGllIEFkbWluaXN0cmF0aW9uIGbDvHIgZGllc2VzIE1vZHVsIGdlc3RldWVydCB3ZXJkZW4uJzsKJGxhbmdbJ2NvZGUnXSA9ICdDb2RlJzsKJGxhbmdbJ3ZlcmlmeSddID0gJ1ZlcmlmaXppZXJlbic7CiRsYW5nWydpbmZvX3ZlcmlmeV9pZGVudGl0eSddID0gJ1NpZSBzb2xsdGVuIGJlcmVpdHMgZWluZSBFLU1haWwgbWl0IGVpbmVtIENvZGUgZXJoYWx0ZW4gaGFiZW4sIHVtIHp1IGJlc3TDpHRpZ2VuLCBkYXNzIFNpZSBkZXIgRWlnZW50w7xtZXIgZGVyIG1pdCBkaWVzZW0gS29udG8gdmVya27DvHBmdGVuIEUtTWFpbC1BZHJlc3NlIHNpbmQuIEJpdHRlIGdlYmVuIFNpZSBoaWVyIGRlbiBCZXN0w6R0aWd1bmdzY29kZSBlaW4gPGVtPihlciBrYW5uIHNvZ2FyIGF1dG9tYXRpc2NoIGJlcmVpdGdlc3RlbGx0IHdlcmRlbikuPC9lbT4nOwokbGFuZ1snaW5mb192ZXJpZnlfaWRlbnRpdHkyJ10gPSAnU2llIHNvbGx0ZW4gYmVyZWl0cyBlaW5lIEUtTWFpbCBtaXQgZWluZW0gQ29kZSBlcmhhbHRlbiBoYWJlbiwgdW0genUgYmVzdMOkdGlnZW4sIGRhc3MgU2llIGRlciBFaWdlbnTDvG1lciBkZXIgbWl0IGRpZXNlbSBLb250byB2ZXJrbsO8cGZ0ZW4gRS1NYWlsLUFkcmVzc2Ugc2luZC4gQml0dGUgZ2ViZW4gU2llIGhpZXIgZGVuIEJlc3TDpHRpZ3VuZ3Njb2RlIGVpbiA8ZW0+KGVyIGthbm4gc29nYXIgYXV0b21hdGlzY2ggYmVyZWl0Z2VzdGVsbHQgd2VyZGVuKS48L2VtPic7CiRsYW5nWydtc2dfdmVyaWZpY2F0aW9uX2NvbXBsZXRlJ10gPSAnU2llIHd1cmRlbiBlcmZvbGdyZWljaCB2ZXJpZml6aWVydC4gVmllbGVuIERhbmsuPGJyLz5Nw7ZnbGljaGVyd2Vpc2UgbcO8c3NlbiBTaWUgSWhyZSBBbm1lbGRlZGF0ZW4gZXJuZXV0IGVpbmdlYmVuLCB1bSBhdWYgZGllIGdlc2Now7x0enRlbiBCZXJlaWNoZSB6dWdyZWlmZW4genUga8O2bm5lbi4nOwokbGFuZ1snZXJyb3JfdmFsaWRhdGVfaW5zdWZmaWNpZW50aW5mbyddID0gJ0RpZXNlciBCZW51dHplciBtdXNzIHNpY2ggc2VsYnN0IGVybmV1dCB2YWxpZGllcmVuLCBhYmVyIGVzIHNpbmQgbmljaHQgZ2Vuw7xnZW5kIEJlbnV0emVyaW5mb3JtYXRpb25lbiB2ZXJmw7xnYmFyLCB1bSBkaWVzIHp1IGVybcO2Z2xpY2hlbi4nOwokbGFuZ1snaW5mb19tdXN0X3ZhbGlkYXRlJ10gPSAnRGllc2VyIEJlbnV0emVyIG11c3Mgc2ljaCB2b3IgZGVtIEFubWVsZGVuIHNlbGJzdCB2YWxpZGllcmVuJzsKJGxhbmdbJ21hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsnXSA9ICdNQU1TLUFibWVsZGVsaW5rJzsKJGxhbmdbJ2hkcl9idWxrX3NldHBhc3N3b3JkJ10gPSAnTWFzc2VuYW5wYXNzdW5nIHZvbiBCZW51dHplcmtlbm53w7ZydGVybic7CiRsYW5nWydpbmZvX2J1bGtfc2V0cGFzc3dvcmQnXSA9ICdEaWVzZXMgRm9ybXVsYXIgZXJtw7ZnbGljaHQgZGFzIGV4cGxpeml0ZSBTZXR6ZW4gZGVzIEtlbm53b3J0cyBmw7xyIGF1c2dld8OkaGx0ZSBCZW51dHplci4gRGllIEJlbnV0emVyIGVyaGFsdGVuIGtlaW5lIEUtTWFpbCwgZGllIGRhcmF1ZiBoaW53ZWlzdCwgZGFzcyBzaWNoIGlociBLZW5ud29ydCBnZcOkbmRlcnQgaGF0LiBEYXMgZmVzdGdlbGVndGUgS2VubndvcnQgbXVzcyBkZW4gS2VubndvcnRyZWdlbG4gaW4gZGVuIE1vZHVsZWluc3RlbGx1bmdlbiBlbnRzcHJlY2hlbi4nOwokbGFuZ1snaGRyX2J1bGtfc2V0ZXhwaXJ5J10gPSAnTWFzc2VuYW5wYXNzdW5nIGRlcyBEZWFrdGl2aWVydW5nc2RhdHVtcyB2b24gQmVudXR6ZXJuJzsKJGxhbmdbJ2luZm9fYnVsa19zZXRleHBpcnknXSA9ICdEaWVzZXMgRm9ybXVsYXIgZXJtw7ZnbGljaHQgZGllIEFucGFzc3VuZyBkZXMgRGVha3RpdmllcnVuZ3NkYXR1bXMgZsO8ciBkaWUgYXVzZ2V3w6RobHRlbiBCZW51dHplci4gRGVha3RpdmllcnRlIEJlbnV0emVyIGvDtm5uZW4gc2ljaCBuaWNodCBhdWYgZGVyIFdlYnNpdGUgYW5tZWxkZW4uIEVzIGlzdCBtw7ZnbGljaCwgZWluIERlYWt0aXZpZXJ1bmdzZGF0dW0gaW4gZGllIFZlcmdhbmdlbmhlaXQgenUgc2V0emVuJzsKJGxhbmdbJ2J1bGtfZGVsZXRlJ10gPSAnbMO2c2NoZW4nOwokbGFuZ1snYnVsa19kaXNhYmxlJ10gPSAnZGVha3RpdmllcmVuJzsKJGxhbmdbJ2J1bGtfZW5hYmxlJ10gPSAnYWt0aXZpZXJlbic7CiRsYW5nWydidWxrX2ZvcmNlY2hwdyddID0gJ0tlbm53b3J0w6RuZGVydW5nIGVyendpbmdlbic7CiRsYW5nWydidWxrX2ZvcmNlY2hzZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nc8OkbmRlcnVuZyBlcnp3aW5nZW4nOwokbGFuZ1snYnVsa19zZXRwYXNzd29yZCddID0gJ05ldWVzIEtlbm53b3J0IHZlcmdlYmVuJzsKJGxhbmdbJ2J1bGtfc2V0ZXhwaXJ5J10gPSAnVmVyZmFsbHNkYXR1bSBlaW5zdGVsbGVuJzsKJGxhbmdbJ3dpdGhfc2VsZWN0ZWQnXSA9ICdhdXNnZXfDpGhsdGUnOwokbGFuZ1snYnVsa19zZWxlY3RvbmUnXSA9ICdCaXR0ZSBlaW5lbiBvZGVyIG1laHJlcmUgQmVudXR6ZXIgd8OkaGxlbic7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcnBhc3N3b3JkJ10gPSAnQml0dGUgZWluIEtlbm53b3J0IGVpbmdlYmVuJzsKJGxhbmdbJ3RwbHR5cGVfdmVyaWZ5X2VtYWlsJ10gPSAnQmVzdMOkdGlndW5ncy1FLU1haWwnOwokbGFuZ1sndHBsdHlwZV9mb3JjZV9uZXdfcGFzc3dvcmQnXSA9ICdOZXVlcyBLZW5ud29ydCBlcnp3aW5nZW4nOwokbGFuZ1sndHBsdHlwZV92aWV3X3VzZXInXSA9ICdCZW51dHplciBhbnNlaGVuJzsKJGxhbmdbJ3RwbHR5cGVfcmVzZXRfc2Vzc2lvbiddID0gJ1NpdHp1bmcgenVyw7xja3NldHplbic7CiRsYW5nWydtc2dfdXNlcmFkZGVkJ10gPSAnTmV1ZXIgQmVudXR6ZXIgd3VyZGUgZXJmb2xncmVpY2ggaGluenVnZWbDvGd0JzsKJGxhbmdbJ21zZ191c2VybW9kaWZpZWQnXSA9ICdCZW51dHplcmRldGFpbHMgd3VyZGVuIGFrdHVhbGlzaWVydCc7CiRsYW5nWydlcnJvcl9mbGR2YWxsZW5ndGgnXSA9ICdEZXIgV2VydCwgZGVyIGbDvHIgJXMgYW5nZWdlYmVuIHd1cmRlLCBpc3QgenUgbGFuZy4nOwokbGFuZ1sndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIOKAkyBNQU1TJzsKJGxhbmdbJ2Rlc2NfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIGbDvHIgZGFzIE1vZHVsIOKAnk1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZeKAnCc7CiRsYW5nWyd0cGx0eXBlX01BTVMnXSA9ICdNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUnOwokbGFuZ1sndHBsdHlwZV9sb2dpbl9mb3JtJ10gPSAnQW5tZWxkZWZvcm11bGFyJzsKJGxhbmdbJ3RwbHR5cGVfbG9nb3V0X2Zvcm0nXSA9ICdBYm1lbGRlZm9ybXVsYXInOwokbGFuZ1snZXJyb3JfbG9zdHVuX2JhZHBhc3N3b3JkJ10gPSAnRGFzIGFuZ2VnZWJlbmUgS2VubndvcnQgd2FyIGxlaWRlciBuaWNodCBrb3JyZWt0Lic7CiRsYW5nWydlcnJvcl9sb3N0dW5fdXNlcm5vdGZvdW5kJ10gPSAnRXMga29ubnRlIGxlaWRlciBrZWluIEJlbnV0emVya29udG8gbWl0IGRlbiBhbmdlZ2ViZW5lbiBJbmZvcm1hdGlvbmVuIGdlZnVuZGVuIHdlcmRlbi4nOwokbGFuZ1snZXJyb3JfbG9zdHVuX25vZGF0YSddID0gJ1NpZSBoYWJlbiBuaWNodCBnZW7DvGdlbmQgRGF0ZW4gaW4gZGFzIEZvcm11bGFyIGbDvHIgZGVuIHZlcmxvcmVuZW4gQmVudXR6ZXJuYW1lbiBlaW5nZWdlYmVuLCBkYW1pdCB3aXIgZGFzIEJlbnV0emVya29udG8gaW4gdW5zZXJlciBEYXRlbmJhbmsgZmluZGVuIGvDtm5uZW4uJzsKJGxhbmdbJ2luZm9fbG9zdHVuX2VtYWlsJ10gPSAnV2VubiBJaHJlbSBLb250byBtZWhyZXJlIEUtTWFpbC1BZHJlc3NlbiB6dWdlb3JkbmV0IHNpbmQsIHZlcnN1Y2hlbiBTaWUsIG1pbmRlc3RlbnMgZWluZSBkYXZvbiBoaWVyIGVpbnp1Z2ViZW4uIERpZXMga2FubiBkYWJlaSBoZWxmZW4sIFNpZSBlaW5kZXV0aWcgenUgaWRlbnRpZml6aWVyZW4nOwokbGFuZ1snaW5mb19sb3N0dXNlcm5hbWUnXSA9ICc8cD5TaWUgc2NoZWluZW4gYWxzbyBkZW4gQmVudXR6ZXJuYW1lbiBvZGVyIGRpZSBFLU1haWwtQWRyZXNzZSwgbWl0IGRlciBTaWUgc2ljaCBiZWkgZGllc2VtIEtvbnRvIGFuZ2VtZWxkZXQgaGFiZW4sIHZlcmdlc3NlbiBvZGVyIHZlcmxvcmVuIHp1IGhhYmVuLiBNYWNoZW4gU2llIHNpY2gga2VpbmUgU29yZ2VuLCB3aXIga8O2bm5lbiBJaG5lbiBoZWxmZW4uPC9wPjxwPkdlYmVuIFNpZSBzbyB2aWVsZSBJbmZvcm1hdGlvbmVuIHdpZSBtw7ZnbGljaCBpbiBkaWVzZXMgRm9ybXVsYXIgZWluIHVuZCB3aXIgd2VyZGVuIHNlaGVuLCBvYiB3aXIgU2llIGVpbmRldXRpZyBpZGVudGlmaXppZXJlbiB1bmQgSWhyZW4gQW5tZWxkZW5hbWVuIGZpbmRlbiBrw7ZubmVuLjwvcD4nOwokbGFuZ1snbXNnX2NvbmZpcm1fZGVsZXRlcHJvcCddID0gJ1NpZSBtw7xzc2VuIGltIEJlc3TDpHRpZ3VuZ3NmZWxkIOKAnkph4oCcIGF1c3fDpGhsZW4sIHVtIHp1IGJlc3TDpHRpZ2VuLCBkYXNzIFNpZSBkaWVzZSBFaWdlbnNjaGFmdCBsw7ZzY2hlbiBtw7ZjaHRlbi4nOwokbGFuZ1sncHJvbXB0X2NvbmZpcm1fZGVsZXRlcHJvcCddID0gJ1NvbGwgZGllIEVpZ2Vuc2NoYWZ0IHdpcmtsaWNoIGdlbMO2c2NodCB3ZXJkZW4/JzsKJGxhbmdbJ3dhcm5fZGVsZXRlcHJvcCddID0gJzxzdHJvbmc+U2VpZW4gU2llIHZvcnNpY2h0aWchPC9zdHJvbmc+IEJlaW0gTMO2c2NoZW4gZWluZXIgRWlnZW5zY2hhZnQgd2VyZGVuIGFsbGUgRGF0ZW4gZ2Vsw7ZzY2h0LCBkaWUgbWl0IE51dHplcm4gZGllc2VyIEVpZ2Vuc2NoYWZ0IHZlcmtuw7xwZnQgc2luZC4gQXXDn2VyZGVtIHdpcmQgZGllc2UgRWlnZW5zY2hhZnQgYXVzIGFsbGVuIEdydXBwZW5iZXppZWh1bmdlbiBlbnRmZXJudC4nOwokbGFuZ1snaGRyX2RlbGV0ZXByb3AnXSA9ICdFaWdlbnNjaGFmdCBsw7ZzY2hlbic7CiRsYW5nWydtc2dfY2FuY2VsbGVkJ10gPSAnQWt0aW9uIGFiZ2Vicm9jaGVuJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZV9wcm9wZGVmbiddID0gJ0VudHNjaHVsZGlndW5nLCBhYmVyIGRpZXNlIEVpZ2Vuc2NoYWZ0IGthbm4gbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbiwgZGEgc2llIGplIG5hY2ggQmVkYXJmIG1pdCBlaW5lciBvZGVyIG1laHJlcmVuIEJlbnV0emVyZ3J1cHBlbiB2ZXJrbsO8cGZ0IG9kZXIgYXVzZ2VibGVuZGV0IHdpcmQuIE51ciBvcHRpb25hbGUvYXVzZ2VzY2hhbHRldGUgRWlnZW5zY2hhZnRlbiBrw7ZubmVuIGdlbMO2c2NodCB3ZXJkZW4uJzsKJGxhbmdbJ3RpdGxlX2FkZF91c2VyJ10gPSAnTmV1ZXMgQmVudXR6ZXJrb250byBlcnN0ZWxsZW4nOwokbGFuZ1snaW5mb19wYXNzd29yZF9yZXNldCddID0gJ0RhcyBLZW5ud29ydCB3dXJkZSBlcmZvbGdyZWljaCB6dXLDvGNrZ2VzZXR6dC4gWnVtIEZvcnRmYWhyZW4gYml0dGUgYW5tZWxkZW4uJzsKJGxhbmdbJ2Vycm9yX3Bhc3N3b3Jkbm90Y2hhbmdlZCddID0gJ0JpdHRlIHN0ZWxsZW4gU2llIHNpY2hlciwgZGFzcyBTaWUgSWhyIFBhc3N3b3J0IGF1ZiBlaW5lbiBuZXVlbiBXZXJ0IMOkbmRlcm4sIHVuZCDDvGJlcnByw7xmZW4gU2llLCBvYiBlcyBrb3JyZWt0IGlzdC4nOwokbGFuZ1snbGJsX3RlbXBsYXRlJ10gPSAnVm9ybGFnZSc7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWQnXSA9ICdJc3QgZGllc2VzIEJlbnV0emVya29udG8gZGVha3RpdmllcnQ/JzsKJGxhbmdbJ2VuYWJsZV91c2VyJ10gPSAnRGllc2VzIEJlbnV0emVya29udG8gYWt0aXZpZXJlbic7CiRsYW5nWydlcnJvcl9hY2NvdW50ZGlzYWJsZWQnXSA9ICdFcyB0dXQgdW5zIGxlaWQsIGFiZXIgZGllc2VzIEtvbnRvIHNjaGVpbnQgZGVha3RpdmllcnQgd29yZGVuIHp1IHNlaW4uIEJpdHRlIHdlbmRlbiBTaWUgc2ljaCBhbiBkaWUgV2Vic2VpdGVuYWRtaW5pc3RyYXRvcmVuLCB1bSBkaWVzZXMgUHJvYmxlbSB6dSBiZWhlYmVuLic7CiRsYW5nWyd0aXRsZV9mb3Jnb3RwdyddID0gJ0tlbm53b3J0IHZlcmdlc3Nlbic7CiRsYW5nWyc0MDNlcnJvciddID0gJ2VpbmVuIEZlaGxlciA0MDMgZ2VuZXJpZXJlbic7CiRsYW5nWydwcm9tcHRfZW5oYW5jZWRwdyddID0gJ2VpbiBzdGFya2VzIEtlbm53b3J0IHZlcmxhbmdlbic7CiRsYW5nWydpbmZvX3B3cmVxdWlyZWRjaGFycyddID0gJ1dlbm4gbmljaHQgbGVlciB1bmQgc3RhcmtlIEtlbm53w7ZydGVyIGFrdGl2aWVydCBzaW5kLCBtdXNzIHp1c8OkdHpsaWNoIHp1IGRlbiBBbmZvcmRlcnVuZ2VuIGbDvHIgc3RhcmtlIFBhc3N3w7ZydGVyIG1pbmRlc3RlbnMgZWluZXMgZGVyIGFuZ2VnZWJlbmVuIFplaWNoZW4gaW0gS2VubndvcnQgZW50aGFsdGVuIHNlaW4uJzsKJGxhbmdbJ2luZm9faW1wb3J0X2Zvcm1hdCddID0gJzxwPkbDvHIgSW5mb3JtYXRpb25lbiB6dW0gSW1wb3J0Zm9ybWF0IHNvbGx0ZSBlaW4gb2RlciB6d2VpIEJlaXNwaWVsYmVudXR6ZXIgaW4gZGVuIGdld8O8bnNjaHRlbiBHcnVwcGVuIGVyc3RlbGx0IHVuZCBkYW5uIGV4cG9ydGllcnQgd2VyZGVuLiBEaWUgcmVzdWx0aWVyZW5kZSBEYXRlaSBrYW5uIGRhbm4gYWxzIFZvcmxhZ2UgZsO8ciB3ZWl0ZXJlIEltcG9ydGUgdmVyd2VuZGV0IHdlcmRlbjwvcD4NCjxwPlp1c8OkdHpsaWNoIGthbm4gZGVyIEltcG9ydGRhdGVpIGVpbmUgU3BhbHRlIOKAnnR4dHBhc3N3b3Jk4oCcIGhpbnp1Z2Vmw7xndCB3ZXJkZW4sIHVtIGRhcyBLZW5ud29ydCBmw7xyIEJlbnV0emVyIHp1IGRlZmluaWVyZW4gKGltIEtsYXJ0ZXh0KS4gV2VubiBkaWUgdHh0cGFzc3dvcmQtU3BhbHRlIGbDvHIgZWluZW4gYmVzdGVoZW5kZW4gQmVudXR6ZXIgbGVlciBpc3QsIHdpcmQgc2VpbiBQYXNzd29ydCBuaWNodCB2ZXLDpG5kZXJ0LiBXZW5uIGRpZXNlIFNwYWx0ZSBmw7xyIGVpbmVuIG5ldWVuIEJlbnV0emVyIGxlZXIgaXN0IG9kZXIgw7xiZXJoYXVwdCBuaWNodCBhbmdlZ2ViZW4gd2lyZCwgd2lyZCBkYXMgUGFzc3dvcnQg4oCeY2hhbmdlbWXigJwgZmVzdGdlbGVndC4nOwokbGFuZ1snaW1wb3J0X2RlbGV0ZWR1c2VyJ10gPSAnQmVudXR6ZXIgJXMgbMO2c2NoZW4nOwokbGFuZ1snZXJyb3JfZXhwb3J0X25vdXNlcnMnXSA9ICdLZWluZSBCZW51dHplciB6dW0gRXhwb3J0aWVyZW4gZ2VmdW5kZW4nOwokbGFuZ1sncHJvbXB0X2V4cG9ydF91c2VycyddID0gJ0JlbnV0emVyIGV4cG9ydGllcmVuJzsKJGxhbmdbJ3Byb21wdF9kZWxpbWl0ZXInXSA9ICdUcmVubmVyJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVfdXNlcnMnXSA9ICdFeHRyYS1CZW51dHplciBsw7ZzY2hlbic7CiRsYW5nWydpbmZvX2ltcG9ydF9kZWxldGVfdXNlcnMnXSA9ICdXZW5uIGRpZXNlIE9wdGlvbiBha3RpdmllcnQgaXN0IHVuZCBudXIgPHN0cm9uZz5laW5lIEJlbnV0emVyZ3J1cHBlPC9zdHJvbmc+IGluIGRlciBJbXBvcnRkYXRlaSBlcnfDpGhudCB3aXJkLCB3ZXJkZW4gQmVudXR6ZXIgZ2Vsw7ZzY2h0LCBkaWUgTWl0Z2xpZWRlciBkaWVzZXIgQmVudXR6ZXJncnVwcGUgc2luZCwgYWJlciBuaWNodCBpbiBkZXIgSW1wb3J0ZGF0ZWkgZXJ3w6RobnQgd2VyZGVuLiBIaWVyIGlzdCBWb3JzaWNodCBnZWJvdGVuLCBkYSBuaWNodCDDvGJlcnByw7xmdCB3aXJkLCBvYiBkaWUgZ2Vsw7ZzY2h0ZW4gQmVudXR6ZXIgTWl0Z2xpZWRlciBhbmRlcmVyIEdydXBwZW4gc2luZC4nOwokbGFuZ1sndGl0bGVfaW1wb3J0X3VzZXJzJ10gPSAnQmVudXR6ZXIgYXVzIGVpbmVyIENTVi1EYXRlaSBpbXBvcnRpZXJlbic7CiRsYW5nWydmcm9udGVuZF9hY2Nlc3MnXSA9ICdCZXRyYWNodGVyJzsKJGxhbmdbJ2FueSddID0gJ2VnYWwnOwokbGFuZ1snc29ydGJ5X3VzZXJuYW1lX2FzYyddID0gJ0JlbnV0emVybmFtZSAoYXVmc3RlaWdlbmQpJzsKJGxhbmdbJ3NvcnRieV91c2VybmFtZV9kZXNjJ10gPSAnQmVudXR6ZXJuYW1lIChhYnN0ZWlnZW5kKSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2FzYyddID0gJ0Vyc3RlbGx1bmdzZGF0dW0gKGF1ZnN0ZWlnZW5kKSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2Rlc2MnXSA9ICdFcnN0ZWxsdW5nc2RhdHVtIChhYnN0ZWlnZW5kKSc7CiRsYW5nWydzb3J0YnlfZXhwaXJlc19hc2MnXSA9ICdWZXJmYWxsc2RhdHVtIChhdWZzdGVpZ2VuZCknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfZGVzYyddID0gJ1ZlcmZhbGxzZGF0dW0gKGFic3RlaWdlbmQpJzsKJGxhbmdbJ2ltcG9ydF9mcm9tX2ZldSddID0gJ0F1cyBGcm9udEVuZFVzZXJzLU1vZHVsIGltcG9ydGllcmVuJzsKJGxhbmdbJ2luZm9faW1wb3J0X2Zyb21fZmV1J10gPSAnRGFzIE1vZHVsIOKAnkZyb250RW5kVXNlcnPigJwgd3VyZGUgZXJrYW5udC4gRGFzIGJlZGV1dGV0LCBkYXNzIFNpZSB2ZXJzdWNoZW4ga8O2bm5lbiwgRGF0ZW4gZGFyYXVzIHp1IGltcG9ydGllcmVuLiBBbGxlIERhdGVuIGF1w59lciBWb3JsYWdlbiB1bmQgQmFja2VuZC1CZXJlY2h0aWd1bmdlbiB3ZXJkZW4ga29waWVydC4gSW0gRmVobGVyZmFsbCB2ZXJzdWNodCBNQU1TLCBzZWluZSB2b3JoZXJpZ2VuIERhdGVuYmFua3RhYmVsbGVuIHdpZWRlcmhlcnp1c3RlbGxlbi4nOwokbGFuZ1snY29uZmlybV9pbXBvcnRfZnJvbV9mZXUnXSA9ICdTaW5kIFNpZSBzaWNoZXI/IERpZXNlIEFrdGlvbiBrYW5uIGFrdHVlbGxlIE1BTVMtVGFiZWxsZW5laW50csOkZ2UgbMO2c2NoZW4hJzsKJGxhbmdbJ2ltcG9ydCddID0gJ0ltcG9ydGllcmVuJzsKJGxhbmdbJ2luZm9fZW5jcnlwdGVkJ10gPSAnVmVyc2NobMO8c3NlbHRlIEVpZ2Vuc2NoYWZ0ZW4ga8O2bm5lbiBudXIgdm9tIEJlbnV0emVyIGVpbmdlc2VoZW4gdW5kIGJlYXJiZWl0ZXQgd2VyZGVuLiBOaWNodCBlaW5tYWwgZGVyIEFkbWluaXN0cmF0b3Iga2FubiBkaWVzZSBEYXRlbiBzZWhlbiBvZGVyIHZlcndhbHRlbi4nOwokbGFuZ1snZW5jcnlwdGVkJ10gPSAndmVyc2NobMO8c3NlbHQnOwokbGFuZ1snaW5mb19jb29raWVuYW1lJ10gPSAnV2VubiBha3RpdmllcnQsIHdpcmQgZGllIEVyaW5uZXJ1bmdzZnVua3Rpb25hbGl0w6R0IGFrdGl2aWVydC4gRGllcyDDpGhuZWx0IGRlciBDb29raWUtS2VlcGFsaXZlLUZ1bmt0aW9uLCBkYXVlcnQgamVkb2NoIGJpcyB6dSA2MCBUYWdlLiBVbSBhbGxlIHZvcmhhbmRlbmVuIEVyaW5uZXJ1bmdzLUNvb2tpZXMgdW5nw7xsdGlnIHp1IG1hY2hlbiwgw6RuZGVybiBTaWUgZGllc2VuIENvb2tpZS1OYW1lbi4gVW0gZGllc2UgRnVua3Rpb24genUgZGVha3RpdmllcmVuLCBzb2xsdGVuIFNpZSBkZW4gQ29va2llbmFtZW4gbMO2c2NoZW4gdW5kIG3DtmdsaWNoZXJ3ZWlzZSBJaHJlIEFubWVsZGV2b3JsYWdlIMOkbmRlcm4uJzsKJGxhbmdbJ3Byb21wdF9ub3JtYWxsb2dpbiddID0gJ0FubWVsZGVuJzsKJGxhbmdbJ25vdF9hdmFpbGFibGUnXSA9ICduaWNodCB2ZXJmw7xnYmFyJzsKJGxhbmdbJ29wZXJhdGlvbl9jb21wbGV0ZWQnXSA9ICdBa3Rpb24gYXVzZ2Vmw7xocnQnOwokbGFuZ1snbWVtYmVycyddID0gJ01pdGdsaWVkZXInOwokbGFuZ1sndmlld19maWx0ZXInXSA9ICdGaWx0ZXIgYW5zZWhlbic7CiRsYW5nWydmaXJzdHBhZ2UnXSA9ICfCqyc7CiRsYW5nWydwcmV2cGFnZSddID0gJ+KAuSc7CiRsYW5nWyduZXh0cGFnZSddID0gJ+KAuic7CiRsYW5nWydsYXN0cGFnZSddID0gJ8K7JzsKJGxhbmdbJ3BhZ2UnXSA9ICdTZWl0ZSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfY2hhbmdldXNlcm5hbWUnXSA9ICdXZWNoc2VsIGRlcyBCZW51dHplcm5hbWVucyBlcmxhdWJlbic7CiRsYW5nWydpbmZvX2FsbG93X2NoYW5nZXVzZXJuYW1lJ10gPSAnV2VubiBkaWVzZSBPcHRpb24gYWt0aXZpZXJ0IGlzdCwga8O2bm5lbiBCZW51dHplciBpaHJlbiBCZW51dHplcm5hbWVuIHp1c2FtbWVuIG1pdCBhbmRlcmVuIEVpbnN0ZWxsdW5nZW4gw6RuZGVybic7CiRsYW5nWyd0ZW1wbGF0ZV9zYXZlZCddID0gJ1ZvcmxhZ2UgZ2VzcGVpY2hlcnQnOwokbGFuZ1sndGVtcGxhdGVfcmVzZXRkZWZhdWx0cyddID0gJ1ZvcmxhZ2UgYXVmIFN0YW5kYXJkd2VydGUgenVyw7xja2dlc2V0enQnOwokbGFuZ1snbGJsX3NldHRpbmdzJ10gPSAnRWluc3RlbGx1bmdlbic7CiRsYW5nWydsYmxfdGVtcGxhdGVzJ10gPSAnVm9ybGFnZW4nOwokbGFuZ1snZW5hYmxlX2NhcHRjaGEnXSA9ICdDQVBUQ0hBIGbDvHIgZGFzIEFubWVsZGVmb3JtdWxhciBha3RpdmllcmVuJzsKJGxhbmdbJ2luZm9fZW5hYmxlX2NhcHRjaGEnXSA9ICdXZW5uIGRlciBCZW51dHplciBuaWNodCBhbmdlbWVsZGV0IGlzdCB1bmQgZGllIE1vZHVsZWluc3RlbGx1bmcgYmVzYWd0LCBkYXNzIGRhcyBBbm1lbGRlZm9ybXVsYXIgYW5nZXplaWd0IHdlcmRlbiBzb2xsLCBzdGV1ZXJ0IGRpZXNlIE9wdGlvbiwgb2IgZWluIENhcHRjaGEgYXVmIGRlbSBBbm1lbGRlYmlsZHNjaGlybSBhbmdlemVpZ3Qgd2lyZCwgd2VubiBDYXB0Y2hhIHZlcmbDvGdiYXIgaXN0Lic7CiRsYW5nWydwYWdldHlwZV91bmF1dGhvcml6ZWQnXSA9ICdTaWUgc2luZCBuaWNodCBiZXJlY2h0aWd0LCBkaWVzZW4gSW5oYWx0IHp1IHNlaGVuJzsKJGxhbmdbJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0J10gPSAnR2ViZW4gU2llIGVpbmUgTGlzdGUgdm9uIE1BTVMtR3J1cHBlbiBhbiwgZGllIG3DtmdsaWNoZXJ3ZWlzZSBadWdyaWZmIGF1ZiBkaWVzZSBTZWl0ZSBoYWJlbi4gV2VubiBTaWUga2VpbmUgR3J1cHBlbiBhdXN3w6RobGVuLCBrYW5uIGplZGVyIGJlaSBNQU1TIGFuZ2VtZWxkZXRlIEJlbnV0emVyIGRpZSBTZWl0ZSBhbnplaWdlbic7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX2dyb3VwcyddID0gJ1fDpGhsZW4gU2llIGRpZSBHcnVwcGVuIGF1cywgZGllIHN0YW5kYXJkbcOkw59pZyBnZXNjaMO8dHp0ZSBTZWl0ZW4gYW56ZWlnZW4gZMO8cmZlbi4gRWluIEJlbnV0emVyIG1pdCBkZXIgQmVyZWNodGlndW5nIOKAnkFsbGUgSW5oYWx0ZSB2ZXJ3YWx0ZW7igJwga2FubiBkaWVzIGbDvHIgamVkZSBTZWl0ZSBhdcOfZXIgS3JhZnQgc2V0emVuLic7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX2FjdGlvbiddID0gJ0dlYmVuIFNpZSBkYXMgVmVyaGFsdGVuIGbDvHIgUGVyc29uZW4gYW4sIGRpZSBvaG5lIGF1c3JlaWNoZW5kZSBCZXJlY2h0aWd1bmcgYXVmIGRpZXNlIFNlaXRlIHp1Z3JlaWZlbi4gU2llIGvDtm5uZW4gZW50d2VkZXIgYXVmIGVpbmUgYmVzdGltbXRlIFNlaXRlIHVtbGVpdGVuIG9kZXIgZGFzIEFubWVsZGVmb3JtdWxhciBhbnplaWdlbi4nOwokbGFuZ1sncmVkaXJlY3QnXSA9ICdhdWYgZWluZSBTZWl0ZSB1bWxlaXRlbic7CiRsYW5nWydwYWdldHlwZV9yZWRpcmVjdHRvJ10gPSAndW1sZWl0ZW4gbmFjaCc7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX3JlZGlyZWN0dG8nXSA9ICdHZWJlbiBTaWUgZGllIFNlaXRlIGFuLCBhdWYgZGllIHVtZ2VsZWl0ZXQgd2VyZGVuIHNvbGwuIFdlbm4gU2llIGtlaW5lIGF1c3fDpGhsZW4gdW5kIGRpZSBBa3Rpb24gYXVmIOKAnnVtbGVpdGVu4oCcIGdlc2V0enQgaXN0LCB3aXJkIGRlbSBCZW51dHplciBlaW5lIE1lbGR1bmcgYW5nZXplaWd0LCBkaWUgYmVzYWd0LCBkYXNzIGVyIGtlaW5lbiBadWdyaWZmIGF1ZiBkaWUgU2VpdGUgaGF0Lic7CiRsYW5nWydwZXJtaXNzaW9ucyddID0gJ0JlcmVjaHRpZ3VuZ2VuJzsKJGxhbmdbJ01BTVNcUHJvdGVjdGVkUGFnZSddID0gJ0dlc2Now7x0enRlciBJbmhhbHQgKE1BTVMpJzsKJGxhbmdbJ21hbXNfcHJvdGVjdGVkX3BhZ2UnXSA9ICdHZXNjaMO8dHp0ZXIgSW5oYWx0IChNQU1TKSc7CiRsYW5nWydwcm9tcHRfdmlld3Byb3BzJ10gPSAnWnVzw6R0emxpY2hlIEVpZ2Vuc2NoYWZ0ZW4genVtIEFuemVpZ2VuIGF1c3fDpGhsZW4nOwokbGFuZ1sndmlldyddID0gJ0Fuc2VoZW4nOwokbGFuZ1snaW5mb19pZ25vcmVfdXNlcmlkJ10gPSAnV2VubiBkaWVzZSBPcHRpb24gYWt0aXZpZXJ0IGlzdCwgdmVyc3VjaHQgZGllIEltcG9ydHJvdXRpbmUsIEJlbnV0emVyIHVuYWJow6RuZ2lnIHZvbiBkZXIgQmVudXR6ZXItSUQtU3BhbHRlIGhpbnp1enVmw7xnZW4uIEV4aXN0aWVydCBiZXJlaXRzIGVpbiBCZW51dHplciBtaXQgZGVtIGluIGRlciBJbXBvcnRkYXRlaSBhbmdlZ2ViZW5lbiBOYW1lbiwgd2lyZCBlaW4gRmVobGVyIGdlbmVyaWVydC4nOwokbGFuZ1snYWR2YW5jZWRfc2V0dGluZ3MnXSA9ICdFcndlaXRlcnRlIEVpbnN0ZWxsdW5nZW4nOwokbGFuZ1snbm9uZSddID0gJ2tlaW5lJzsKJGxhbmdbJ2RlbGV0ZV91c2VyJ10gPSAnQmVudXR6ZXIgbMO2c2NoZW4nOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJ0FuemVpZ2VvcHRpb25lbic7CiRsYW5nWydhdXRoX3NldHRpbmdzJ10gPSAnQXV0aGVudGlmaXppZXJ1bmdzZWluc3RlbGx1bmdlbic7CiRsYW5nWydhdXRoZW50aWNhdGlvbiddID0gJ0VpbmdlYmF1dGUgQXV0aGVudGlmaXppZXJ1bmcnOwokbGFuZ1snYXV0aF9idWlsdGluJ10gPSAnU3RhbmRhcmRhdXRoZW50aWZpemllcnVuZyB2b24gTUFNUyc7CiRsYW5nWydvayddID0gJ09LJzsKJGxhbmdbJ3Zpc2l0b3JzX3RhYiddID0gJ0Jlc3VjaGVyJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydwcm9tcHRfdGh1bWJuYWlsX3NpemUnXSA9ICdHcsO2w59lIGRlcyBWb3JzY2hhdWJpbGRzJzsKJGxhbmdbJ21vbnRocyddID0gJ01vbmF0ZSc7CiRsYW5nWydmaWVsZF9zZXR0aW5ncyddID0gJ0ZlbGRlaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ3ZpZXd1c2VyX3RlbXBsYXRlJ10gPSAnQmVudXR6ZXJ2b3JsYWdlIGFuc2VoZW4nOwokbGFuZ1snZXZlbnQnXSA9ICdFcmVpZ25pcyc7CiRsYW5nWyd5b3VyX3VzZXJuYW1lX2lzJ10gPSAnSWhyIEJlbnV0emVybmFtZSBpc3QnOwokbGFuZ1sncHJvbXB0X2xvZ2dlZGlub25seSddID0gJ051ciBhbmdlbWVsZGV0ZSBCZW51dHplciBhbnplaWdlbic7CiRsYW5nWyd1c2VyX3Byb3BlcnRpZXMnXSA9ICdCZW51dHplcmVpZ2Vuc2NoYWZ0ZW4nOwokbGFuZ1sndXNlcmhpc3RvcnknXSA9ICdCZW51dHplci1HZXNjaGljaHRlJzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVpbic7CiRsYW5nWydwcm9tcHRfb2YnXSA9ICd2b24nOwokbGFuZ1sncmVzZXQnXSA9ICdadXLDvGNrc2V0emVuJzsKJGxhbmdbJ3Vua25vd24nXSA9ICd1bmJla2FubnQnOwokbGFuZ1sncHJvbXB0X2lwYWRkcmVzcyddID0gJ0lQLUFkcmVzc2UnOwokbGFuZ1sncHJvbXB0X2V2ZW50dHlwZSddID0gJ0VyZWlnbmlzdHlwJzsKJGxhbmdbJ3Byb21wdF9kYXRlJ10gPSAnRGF0dW0nOwokbGFuZ1sncHJvbXB0X2xpbmVzcHJvY2Vzc2VkJ10gPSAnWmVpbGVuIHZlcmFyYmVpdGV0JzsKJGxhbmdbJ3Byb21wdF9lcnJvcnMnXSA9ICdGZWhsZXIgYXVmZ2V0cmV0ZW4nOwokbGFuZ1sncHJvbXB0X3JlY29yZHNhZGRlZCddID0gJ0VpbnRyw6RnZSBoaW56dWdlZsO8Z3QnOwokbGFuZ1snaW5mb19pbXBvcnR1c2Vyc2ZpbGVmb3JtYXQyJ10gPSAnPGg1PkluZm9ybWF0aW9uZW4genVtIERhdGVpZm9ybWF0PC9oNT4NCjxwPkRpZSBFaW5nYWJlZGF0ZWkgbXVzcyBpbSBBU0NJSS1Gb3JtYXQgbWl0IG5vcm1hbGVyd2Vpc2Uga29tbWFnZXRyZW5udGVuIFdlcnRlbiB2b3JsaWVnZW4uIEplZGUgWmVpbGUgaW4gZGllc2VyIEVpbmdhYmVkYXRlaSDigJMgbWl0IEF1c25haG1lIGRlciB1bnRlbiBlcmzDpHV0ZXJ0ZW4gS29wZnplaWxlIOKAkyByZXByw6RzZW50aWVydCBlaW5lbiBCZW51dHplcmRhdGVuc2F0ei4gRGllIFJlaWhlbmZvbGdlIGRlciBGZWxkZXIgaW4gamVkZXIgWmVpbGUgbXVzcyBpZGVudGlzY2ggc2Vpbi4gRGllc2UgSW1wb3J0cm91dGluZSBha3plcHRpZXJ0IE1hYy0gdW5kIFVuaXgtWmVpbGVuZW5kZW4uIFNwYWx0ZW53ZXJ0ZSBzb2xsdGVuIGluIGRvcHBlbHRlIEFuZsO8aHJ1bmdzemVpY2hlbiBlaW5nZXNjaGxvc3NlbiB3ZXJkZW4sIHdlbm4gZGFzIFRyZW5uemVpY2hlbiBpbSBTcGFsdGVud2VydCBlbnRoYWx0ZW4gc2VpbiBkYXJmLjwvcD4NCjxoNT5Lb3BmemVpbGU8L2g1Pg0KPHVsPg0KPGxpPkRpZSBlcnN0ZSBaZWlsZSBkZXIgRGF0ZWkgbXVzcyBtaXQgendlaSBSYXV0ZW56ZWljaGVuIChcXCMpIGJlZ2lubmVuIHVuZCBqZWRlcyBkZXIgRmVsZGVyIGluIGRlciBEYXRlaSBiZW5lbm5lbi4gRGllIE5hbWVuIGRpZXNlciBGZWxkZXIgc2luZCB2b24gQmVkZXV0dW5nLiBFcyBnaWJ0IGVpbmlnZSBlcmZvcmRlcmxpY2hlIEZlbGRuYW1lbiAoc2llaGUgdW50ZW4pLCB1bmQgYW5kZXJlIEZlbGRuYW1lbiBtw7xzc2VuIG1pdCBkZW4gRWlnZW5zY2hhZnRzbmFtZW4gw7xiZXJlaW5zdGltbWVuLCBkaWUgbWl0IGRlciBHcnVwcGUgdmVya27DvHBmdCBzaW5kLCB6dSBkZXIgQmVudXR6ZXIgaGluenVnZWbDvGd0IHdlcmRlbi48L2xpPg0KPGxpPkRlciBJbXBvcnR2b3JnYW5nIHNjaGzDpGd0IGZlaGwsIHdlbm4gZGllIEZlbGRlciBpbiBkZXIgRWluZ2FiZWRhdGVpIG5pY2h0IG1pdCBhbGxlbiBlcmZvcmRlcmxpY2hlbiBFaWdlbnNjaGFmdGVuIMO8YmVyZWluc3RpbW1lbiwgZGllIGRlciBHcnVwcGUgenVnZW9yZG5ldCBzaW5kLCBkZXIgQmVudXR6ZXIgaGluenVnZWbDvGd0IHdlcmRlbjwvbGk+DQo8bGk+RGllIEVpbmdhYmVkYXRlaSBrYW5uIEZlbGRlciBlbnRoYWx0ZW4sIGRpZSBlaW5pZ2UgZGVyIG9wdGlvbmFsZW4gRWlnZW5zY2hhZnRlbiBpbiBkZXIgYW5nZWdlYmVuZW4gR3J1cHBlIHJlcHLDpHNlbnRpZXJlbi48L2xpPg0KPGxpPkRlciBJbXBvcnRwcm96ZXNzIGlnbm9yaWVydCBhbGxlIEZlbGRlciBpbiBkZXIgRWluZ2FiZWRhdGVpLCBkaWUgZW50d2VkZXIgbmljaHQgYmVrYW5udCBzaW5kIG9kZXIgRWlnZW5zY2hhZnRlbiB6dWdlb3JkbmV0IHNpbmQsIGRpZSBpbiBkZW4gYW5nZWdlYmVuZW4gQmVudXR6ZXJncnVwcGVuIDxlbT5kZWFrdGl2aWVydDwvZW0+IHNpbmQuPC9saT4NCjwvdWw+DQo8aDY+U3BhbHRlbjwvaDY+DQo8ZGw+DQoJPGR0PkRhcyBGZWxkIOKAnjxzdHJvbmc+dXNlcm5hbWU8L3N0cm9uZz7igJw8L2R0Pg0KCTxkZD5EZXIgZ2V3w7xuc2NodGUgQmVudXR6ZXJuYW1lLjxicj5EaWVzZXMgRmVsZCBtdXNzIGluIGRlciBLb3BmemVpbGUgdW5kIGluIGplZGVyIGVpbnplbG5lbiBaZWlsZSBkZXIgRWluZ2FiZWRhdGVpIHZvcmhhbmRlbiBzZWluLiBXZW5uIGVpbiBCZW51dHplciBtaXQgZGVtIGFuZ2VnZWJlbmVuIEJlbnV0emVybmFtZW4gYmVyZWl0cyBpbiBkZXIgRGF0ZW5iYW5rIGV4aXN0aWVydCwgd2VyZGVuIHNlaW5lIEluZm9ybWF0aW9uZW4gw7xiZXJzY2hyaWViZW4uPC9kZD4NCgk8ZHQ+RGFzIEZlbGQg4oCePHN0cm9uZz50eHRwYXNzd29yZDwvc3Ryb25nPuKAnCA8ZW0+KG9wdGlvbmFsKTwvZW0+LjwvZHQ+DQoJPGRkPkRhcyBmw7xyIGRlbiBCZW51dHplciBmZXN0enVsZWdlbmRlIEtlbm53b3J0IGltIEtsYXJ0ZXh0LiBXZW5uIGRhcyBLZW5ud29ydGZlbGQgYmVpbSBBbmxlZ2VuIG5ldWVyIEJlbnV0emVyIGxlZXIgaXN0LCB3aXJkIGRhcyBQYXNzd29ydCDigJ5jaGFuZ2VtZeKAnCBmZXN0Z2VsZWd0LiBXZW5uIGRhcyBLZW5ud29ydGZlbGQgYmVpbSBBa3R1YWxpc2llcmVuIGVpbmVzIGJlc3RlaGVuZGVuIEJlbnV0emVycyBsZWVyIGlzdCwgd2lyZCBzZWluIEtlbm53b3J0IG5pY2h0IGFuZ2VwYXNzdC48L2RkPg0KCTxkdD5EYXMgRmVsZCDigJ48c3Ryb25nPmV4cGlyZXM8L3N0cm9uZz7igJwgPGVtPihvcHRpb25hbCk8L2VtPi48L2R0Pg0KCTxkZD5EYXMgZ2V3w7xuc2NodGUgVmVyZmFsbHNkYXR1bSBmw7xyIGRhcyBCZW51dHplcmtvbnRvLiBXZW5uIGRpZXNlcyBGZWxkIGFuZ2VnZWJlbiBpc3QgdW5kIGFscyBnw7xsdGlnZXMgRGF0dW0gZXJrYW5udCB3aXJkLCB3aXJkIGJlaW0gRXJzdGVsbGVuIGVpbmVzIG5ldWVuIEJlbnV0emVycyBkYXMgVmVyZmFsbHNkYXR1bSB2ZXJ3ZW5kZXQsIGFuZGVybmZhbGxzIHdpcmQgZWluIFN0YW5kYXJkd2VydCB2b24gMTAgSmFocmVuIGFiIGRlbSBFcnN0ZWxsdW5nc2RhdHVtIHZlcndlbmRldC4gV2VubiBkaWVzZXMgRmVsZCBiZWltIEFrdHVhbGlzaWVyZW4gZWluZXMgYmVzdGVoZW5kZW4gQmVudXR6ZXJzIGxlZXIgaXN0LCB3aXJkIHNlaW4gVmVyZmFsbHNkYXR1bSBuaWNodCBhbmdlcGFzc3QuPC9kZD4NCgk8ZHQ+RGFzIEZlbGQg4oCePHN0cm9uZz5ncm91cG5hbWU8L3N0cm9uZz7igJw8L2R0Pg0KCTxkZD5FaW5lIGR1cmNoIERvcHBlbHB1bmt0ZSAoOikgZ2V0cmVubnRlIExpc3RlIGRlciBHcnVwcGVubmFtZW4sIGJlaSBkZW5lbiBkZXIgQmVudXR6ZXIgTWl0Z2xpZWQgc2VpbiBzb2xsLiBXZW5uIG5pY2h0IGFsbGUgUGZsaWNodGZlbGRlciBhdXNnZWbDvGxsdCBzaW5kLCBzY2hsw6RndCBkYXMgRWluZsO8Z2VuL0FrdHVhbGlzaWVyZW4gZGVzIERhdGVuc2F0emVzIGZlaGwuPC9kZD4NCgk8ZHQ+QXVma2xhcHAtL1JhZGlva25vcGZmZWxkZXI8L2R0Pg0KCTxkZD5EZXIgV2VydCB2b24gRHJvcGRvd24tRWlnZW5zY2hhZnRlbiBpbiBlaW5lciBJbXBvcnRkYXRlaSB3aXJkIGFscyBaZWljaGVuZm9sZ2UgZGFyZ2VzdGVsbHQsIGRpZSBpbSBEcm9wZG93bi1GZWxkIGltIE1vZHVsIOKAnk1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZeKAnCBhbmdlemVpZ3Qgd2lyZC48L2RkPg0KCTxkdD5NZWhyZmFjaGF1c3dhaGxmZWxkZXI8L2R0Pg0KCTxkZD5NZWhyZmFjaGF1c3dhaGxmZWxkZXIgc2luZCBpbiBkZXIgQVNDSUktRGF0ZWkgYWxzIGR1cmNoIERvcHBlbHB1bmt0ICg6KSBnZXRyZW5udGUgTGlzdGUgdm9uIFplaWNoZW5mb2xnZW4gZW50aGFsdGVuLCB3b2JlaSBqZWRlIFplaWNoZW5mb2xnZSBkZW4gaW4gZGVyIE1laHJmYWNoYXVzd2FobGxpc3RlIGFuZ2V6ZWlndGVuIFRleHQgZGFyc3RlbGx0PC9kZD4NCgk8ZHQ+RS1NYWlsLUZlbGRlcjwvZHQ+DQoJPGRkPk11c3MgZWluZSBnw7xsdGlnZSBFLU1haWwtQWRyZXNzZSBzZWluLCBkaWUgdm9uIFBIUHMgZWluZ2ViYXV0ZXIgRnVua3Rpb25hbGl0w6R0IHZhbGlkaWVydCB3ZXJkZW4ga2Fubi48L2RkPg0KCTxkdD5EYXR1bXNmZWxkZXI8L2R0Pg0KCTxkZD5NdXNzIGluIGVpbmVtIEZvcm1hdCB2b3JsaWVnZW4sIGRhcyBkdXJjaCBkaWUgTWV0aG9kZSA8Y29kZT5zdHJ0b3RpbWUoKTwvY29kZT4gaW4gZWluZW4gVW5peC1aZWl0c3RlbXBlbCBrb252ZXJ0aWVydCB3ZXJkZW4ga2Fubi48L2RkPg0KCTxkdD5CaWxkZmVsZGVyPC9kdD4NCgk8ZGQ+QmlsZGVyIHNpbmQgRmVsZGVyLCBkZXJlbiBTcGFsdGVubmFtZSBtaXQgZWluZXIgRWlnZW5zY2hhZnQgdm9tIFR5cCBCaWxkIMO8YmVyZWluc3RpbW10LiBXZW5uIGRpZXNlcyBGZWxkIG5pY2h0IGxlZXIgaXN0LCBtdXNzIGRlciBpbiBkaWVzZW4gU3BhbHRlbiBhbmdlZ2ViZW5lIERhdGVpbmFtZSBpbSBCaWxkemllbHBmYWQgdm9yaGFuZGVuIHNlaW4sIHdpZSBlciBpbiBkZW4gTUFNUy1FaW5zdGVsbHVuZ2VuIGFuZ2VnZWJlbiBpc3QuIFdlbm4gZGFzIEJpbGQgbmljaHQgdm9yaGFuZGVuIGlzdCB1bmQgZGFzIEZlbGQgZXJmb3JkZXJsaWNoIGlzdCwgc2NobMOkZ3QgZGVyIERhdGVuc2F0eiBmZWhsLjwvZGQ+DQo8L2RsPg0KPGg1PkJlbWVya3VuZ2VuPC9oNT4NCjxwPkRlciBJbXBvcnR2b3JnYW5nIGlzdCBlaW5lIHNwZWljaGVyLSB1bmQgZGF0ZW5iYW5raW50ZW5zaXZlIFJvdXRpbmUuIEVyIHVudGVybGllZ3QgZGVuIHZvbSBIb3N0YW5iaWV0ZXIgYXVmZXJsZWd0ZW4gRWluc2NocsOkbmt1bmdlbiwgd2llIHouIEIuIFNwZWljaGVyYmVzY2hyw6Rua3VuZ2VuLCBWZXJhcmJlaXR1bmdzemVpdCwgSG9jaGxhZGVuIGRlciBEYXRlaWdyw7bDn2UgdW5kIEVpbnNjaHLDpG5rdW5nZW4gaW0gYWJnZXNpY2hlcnRlbiBNb2R1cy4gSmVkZSBkaWVzZXIgRWluc2NocsOkbmt1bmdlbiBrYW5uIGRhenUgZsO8aHJlbiwgZGFzcyBkZXIgSW1wb3J0IGZlaGxzY2hsw6RndC4gRGFoZXIgaXN0IGVzIHJhdHNhbSwgc2ljaGVyenVzdGVsbGVuLCBkYXNzIEltcG9ydGRhdGVpZW4ga2xlaW5lciB1bmQgZWluZmFjaGVyIHNpbmQuPC9wPg0KPHA+T2J3b2hsIGFsbGUgQW5zdHJlbmd1bmdlbiB1bnRlcm5vbW1lbiB3dXJkZW4sIHVtIHNpY2hlcnp1c3RlbGxlbiwgZGFzcyBrZWluZSBEYXRlbmJhbmtiZXNjaMOkZGlndW5nIGF1ZnRyaXR0LCBpc3QgZXMgcmF0c2FtLCBlaW5lIERhdGVuYmFua3NpY2hlcnVuZyBkdXJjaHp1ZsO8aHJlbiwgYmV2b3IgZWluZSBCZW51dHplcmltcG9ydCBkdXJjaGdlZsO8aHJ0IHdpcmQuPC9wPg0KPHA+RGllIERhdGVuIGJlaSBlaW5lbSBFeHBvcnQgaGFiZW4gZGFzIGdsZWljaGUgRm9ybWF0IHdpZSBmw7xyIGRlbiBJbXBvcnQgYmVuw7Z0aWd0IHdpcmQuIEV4cG9ydGUga8O2bm5lbiBqZWRvY2ggenVzw6R0emxpY2hlIEZlbGRlciBiZXJlaXRzdGVsbGVuLCBkaWUgZsO8ciBkZW4gSW1wb3J0IG5pY2h0IGVyZm9yZGVybGljaCBzaW5kLjwvcD4NCjxoNT5CZWlzcGllbDwvaDU+DQo8cHJlPg0KIyN1c2VybmFtZSxmaXJzdF9uYW1lLGxhc3RfbmFtZSxlbWFpbCxjaXR5LGNvdW50cnksemlwDQp1c2VyMSx0ZXN0LHVzZXIsdXNlcjFAZXhhbXBsZS5jb20sTXVzdGVyc3RhZHQsw5ZzdGVycmVpY2gsMTIzNDUNCjwvcHJlPic7CiRsYW5nWydwcm9tcHRfaW1wb3J0ZmlsZW5hbWUnXSA9ICdJbXBvcnQtQ1NWLURhdGVpJzsKJGxhbmdbJ3Byb21wdF9leHBvcnR1c2VycyddID0gJ0JlbnV0emVyIGV4cG9ydGllcmVuJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnR1c2VycyddID0gJ0JlbnV0emVyIGltcG9ydGllcmVuJzsKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdEZXIgQmVudXR6ZXIgaXN0IGJlcmVpdHMgYW5nZW1lbGRldCc7CiRsYW5nWydwcm9wZXJ0eWZpbHRlciddID0gJ0VpZ2Vuc2NoYWZ0JzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICdXZXJ0IChyZWd1bMOkcmVyIEF1c2RydWNrKSc7CiRsYW5nWydlcnJvcl9lbWFpbGFscmVhZHl1c2VkJ10gPSAnRS1NYWlsLUFkcmVzc2Ugd2lyZCBiZXJlaXRzIHZlcndlbmRldCc7CiRsYW5nWydwcm9tcHRfZXhwb3J0Y3N2J10gPSAnQmVudXRlciBpbiBDU1YtRGF0ZWkgZXhwb3J0aWVyZW4nOwokbGFuZ1snYWRtaW4nXSA9ICdBZG1pbmlzdHJhdGlvbic7CiRsYW5nWydzb3J0YnknXSA9ICdTb3J0aWVyZW4gbmFjaCc7CiRsYW5nWyd1c2VybGltaXQnXSA9ICdBbnphaGwgZGVyIEVyZ2Vibmlzc2UgYmVzY2hyw6Rua2VuIGF1Zic7CiRsYW5nWyd2YWx1ZSddID0gJ1dlcnQnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3J1cHBlbic7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnRWlnZW5zY2hhZnRlbic7CiRsYW5nWydwcm9wbmFtZSddID0gJ0VpZ2Vuc2NoYWZ0c25hbWUnOwokbGFuZ1sncHJvcHZhbHVlJ10gPSAnRWlnZW5zY2hhZnRzd2VydCc7CiRsYW5nWycxMmhycyddID0gJzEyIFN0dW5kZW4nOwokbGFuZ1snMjRocnMnXSA9ICcyNCBTdHVuZGVuJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggU3R1bmRlbic7CiRsYW5nWycxd2VlayddID0gJ2VpbmUgV29jaGUnOwokbGFuZ1snMndlZWtzJ10gPSAnendlaSBXb2NoZW4nOwokbGFuZ1snMW1vbnRoJ10gPSAnZWluIE1vbmF0JzsKJGxhbmdbJzNtb250aHMnXSA9ICdkcmVpIE1vbmF0ZSc7CiRsYW5nWyc2bW9udGhzJ10gPSAnc2VjaHMgTW9uYXRlJzsKJGxhbmdbJzF5ZWFyJ10gPSAnZWluIEphaHInOwokbGFuZ1snbmV2ZXInXSA9ICduaWUnOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnTW9kdWwgZXJmb2xncmVpY2ggaW5zdGFsbGllcnQuPGJyLz5TdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgU2llIGRpZSBCZXJlY2h0aWd1bmcg4oCeTUFNUy1FaWdlbnNjaGFmdGVuIMOkbmRlcm7igJwgZ2VzZXR6dCBoYWJlbi4gWnVzw6R0emxpY2ggZW1wZmVobGVuIHdpciBJaG5lbiwgZGFzIENhcHRjaGEtTW9kdWwgenUgaW5zdGFsbGllcmVuLiBGYWxscyBpbnN0YWxsaWVydCwgaXN0IHp1c8OkdHpsaWNoIHp1IEJlbnV0emVybmFtZSB1bmQgUGFzc3dvcnQgZGllIFZhbGlkaWVydW5nIGVpbmVzIENhcHRjaGEtQmlsZGVzIGVyZm9yZGVybGljaCwgdW0gc2ljaCBhbnp1bWVsZGVuLiBEYWR1cmNoIHNvbGxlbiBCcnV0ZS1Gb3JjZS1BbmdyaWZmZSB2ZXJoaW5kZXJ0IHdlcmRlbi4gPHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBNaXQgZGVtIFBhcmFtZXRlciDigJ5ub2NhcHRjaGHigJwga2FubiBkaWVzZSBGdW5rdGlvbmFsaXTDpHQgZGVha3RpdmllcnQgd2VyZGVuLCBhdWNoIHdlbm4gZGFzIENhcHRjaGEtTW9kdWwgaW5zdGFsbGllcnQgaXN0Lic7CiRsYW5nWydwYXNzd29yZCddID0gJ0tlbm53b3J0JzsKJGxhbmdbJ3JlcGVhdHBhc3N3b3JkJ10gPSAnbm9jaG1hbCc7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnRWluZSBHcnVwcGUgbWl0IGRpZXNlbSBOYW1lbiBleGlzdGllcnQgYmVyZWl0cy4nOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnR3J1cHBlIGJlYXJiZWl0ZW4nOwokbGFuZ1snc3VibWl0J10gPSAnQWJzZW5kZW4nOwokbGFuZ1snY2FuY2VsJ10gPSAnQWJicmVjaGVuJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0zDtnNjaGVuJzsKJGxhbmdbJ2NvbmZpcm1fZWRpdGdyb3VwJ10gPSAnU2luZCBTaWUgc2ljaGVyLCBkYXNzIGRpZXMgZGllIHJpY2h0aWdlbiBFaW5zdGVsbHVuZ2VuIGbDvHIgZGllc2UgR3J1cHBlIHNpbmQ/PGJyPg0KRHVyY2ggZGFzIERlYWt0aXZpZXJlbiBlaW5lciBFaWdlbnNjaGFmdCB3ZXJkZW4ga2VpbmUgRWludHLDpGdlIGluIGRlciBFaWdlbnNjaGFmdHN0YWJlbGxlIGbDvHIgZGllc2UgR3J1cHBlL2RpZXNlbiBCZW51dHplciBnZWzDtnNjaHQuIFNpZSB3ZXJkZW4gbGVkaWdsaWNoIG5pY2h0IHZlcmbDvGdiYXIgc2Vpbi4nOwokbGFuZ1snYXBwbHlmaWx0ZXInXSA9ICdBbndlbmRlbic7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1sndXNlcmZpbHRlciddID0gJ0JlbnV0emVybmFtZSAocmVndWzDpHJlciBBdXNkcnVjayknOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNjaHJlaWJ1bmcnOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnR3J1cHBlbm5hbWUnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnWnVncmlmZiB2ZXJ3ZWlnZXJ0JzsKJGxhbmdbJ2Vycm9yJ10gPSAnRmVobGVyJzsKJGxhbmdbJ2FkZGdyb3VwJ10gPSAnR3J1cHBlIGhpbnp1ZsO8Z2VuJzsKJGxhbmdbJ2ltcG9ydGdyb3VwJ10gPSAnR3J1cHBlIGltcG9ydGllcmVuJzsKJGxhbmdbJ2FkZHVzZXInXSA9ICdCZW51dHplciBoaW56dWbDvGdlbic7CiRsYW5nWydncm91cCddID0gJ0dydXBwZSc7CiRsYW5nWydzZWxlY3Rncm91cCddID0gJ0dydXBwZSB3w6RobGVuJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnRWluc3RlbGx1bmdlbic7CiRsYW5nWyd1c2VycyddID0gJ0JlbnV0emVyJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01pdGdsaWVkZXJiZXJlaWNoIChNQU1TKSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ01lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZTogZXJtw7ZnbGljaGVuIFNpZSBCZW51dHplcm4sIHNpY2ggYW0gRnJvbnRlbmQgSWhyZXIgV2Vic2l0ZSBhbnp1bWVsZGVuLic7CiRsYW5nWydmaWVsZGRlZl9tYW1zX2ZpZWxkc19oZWxwJ10gPSAnQml0dGUgd8OkaGxlbiBTaWUgZGFzIGJlbnV0emVyZGVmaW5pZXJ0ZSBGZWxkIHZvbiBNQU1TIGF1cywgYXVzIGRlbSBkaWUgV2VydGUgZ2V6b2dlbiB3ZXJkZW4gc29sbGVuLCBkaWUgaW0gYXVzZ2V3w6RobHRlbiBGZWxkIGFuZ2V6ZWlndCB3ZXJkZW4uPGJyPkJlYWNodGVuIFNpZSwgZGFzcyBkYXMgYXVzZ2V3w6RobHRlIEZlbGQgZsO8ciBhbGxlIE1BTVMtQmVudXR6ZXJlaW50csOkZ2UgZWluZGV1dGlnZSBXZXJ0ZSBoYWJlbiBzb2xsdGUuJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZXJzJ10gPSAnQmVudXR6ZXInOwokbGFuZ1snZmllbGRkZWZfdXNlX3VzZXJuYW1lJ10gPSAnQmVudXR6ZXJuYW1lbnNmZWxkIHZlcndlbmRlbic7CiRsYW5nWydmaWVsZGRlZl91c2VfdWlkJ10gPSAnQmVudXR6ZXItSUQgdm9yYW5zdGVsbGVuJzsKJGxhbmdbJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHInXSA9ICdUcmVubnplaWNoZW4nOwokbGFuZ1snZmllbGRkZWZfc2VwYXJhdG9yX2Nocl9oZWxwJ10gPSAnWmVpY2hlbiwgZGFzIHZlcndlbmRldCB3aXJkLCB1bSBGZWxkIDEgdW5kIEZlbGQgMiBpbSBPcHRpb25zdGV4dCB6dSB0cmVubmVuLiBTdGFuZGFyZCBpc3QgZWluIExlZXJ6ZWljaGVuLic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fdW5zYWZlcGFzc3dvcmQnXSA9ICdMZSBtb3QgZGUgcGFzc2UgZGUgY2V0IHV0aWxpc2F0ZXVyIHV0aWxpc2UgdW4gYW5jaWVuIG3DqWNhbmlzbWUgZGUgaGFjaGFnZS4gTFwndXRpbGlzYXRldXIgZGV2cmFpdCBjaGFuZ2VyIHNvbiBtb3QgZGUgcGFzc2UnOwokbGFuZ1sndW5zYWZlJ10gPSAnUGV1IHPDu3InOwokbGFuZ1snbXNnX2Fub25pbWl6ZWQnXSA9ICdVdGlsaXNhdGV1ciBhbm9ueW1pc8OpJzsKJGxhbmdbJ2Fub25pbWl6ZSddID0gJ0Fub255bWlzZXIgY2V0IHV0aWxpc2F0ZXVyJzsKJGxhbmdbJ2NvbmZpcm1fYW5vbmltaXplJ10gPSAnRXRlcy12b3VzIHPDu3LCt2UgZGUgdm91bG9pciBhbm9ueW1pc2VyIGNldCB1dGlsaXNhdGV1ciA/IExlIGNvbXB0ZSBzZXJhIGTDqXNhY3RpdsOpLCBsZSBtb3QgZGUgcGFzc2UgY2hhbmfDqSwgbGUgbm9tIGRcJ3V0aWxpc2F0ZXVyIGV0IHRvdXRlcyBsZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBzdXBwcmltw6llcyc7CiRsYW5nWydwcm9tcHRfY2xlYXJoaXN0b3J5X2FnZSddID0gJ1ZpZGVyIGxcJ2hpc3RvcmlxdWUgcGx1cyBhbmNpZW4gcXVlIE4gZGF5cyc7CiRsYW5nWydpbmZvX2NsZWFyaGlzdG9yeV9hZ2UnXSA9ICdTYWlzaXIgdW5lIHZhbGV1ciBub24gbnVsbGUgcG91ciBzdXBwcmltZXIgcsOpZ3VsacOocmVtZW50IHRvdXRlcyBsZXMgZW50csOpZXMgZGUgbFwnaGlzdG9yaXF1ZSBkZSBsXCd1dGlsaXNhdGV1ciBxdWkgc29udCBwbHVzIGFuY2llbm5lcyBxdWUgbGUgbm9tYnJlIGRlIGpvdXJzIHNww6ljaWZpw6kuJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdDb25uZXhpb24gYXV0b21hdGlxdWUgYXByw6hzIHbDqXJpZmljYXRpb24gZGUgbFwndXRpbGlzYXRldXInOwokbGFuZ1snaW5mb19sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdTaSBjZXR0ZSBvcHRpb24gZXN0IGFjdGl2w6llLCB1biB1dGlsaXNhdGV1ciBhdXRoZW50aWZpw6kgcXVpIHbDqXJpZmllIHNvbiBpZGVudGl0w6kgYXZlYyBzdWNjw6hzIHNlcmEgYXV0b21hdGlxdWVtZW50IGNvbm5lY3TDqS4nOwokbGFuZ1sncXVpY2tmaW5kX2lkbmFtZSddID0gJ0lEIC8gbm9tIGRcJ3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ3F1aWNrZmluZF9waCddID0gJ0lEIG91IG5vbSBkXCd1dGlsaXNhdGV1cic7CiRsYW5nWydmaW5kJ10gPSAnRWRpdGVyIGxcJ3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ3F1aWNrZmluZF91c2VyJ10gPSAnUmVjaGVyY2hlIHJhcGlkZeKApic7CiRsYW5nWyd1c2Vyc21hdGNoaW5nJ10gPSAnVXRpbGlzYXRldXJzIGNvcnJlc3BvbmRhbnQgw6AgbGEgcmVxdcOqdGUnOwokbGFuZ1sncHJvbXB0X2Rpc2FibGVkc3RhdHVzJ10gPSAnU3RhdHV0IGTDqXNhY3RpdsOpJzsKJGxhbmdbJ2Rpc2FibGVkJ10gPSAnRMOpc2FjdGl2w6knOwokbGFuZ1snZW5hYmxlZCddID0gJ0FjdGl2w6knOwokbGFuZ1sncHJvcHJlZ2V4J10gPSAnVmFsZXVyIGRlIHByb3ByacOpdMOpJzsKJGxhbmdbJ2luZm9fcHJvcHJlZ2V4J10gPSAnRW50cmVyIHVuZSBjaGHDrm5lIGRlIHZhbGV1ciwgc291cy1jaGHDrm5lLCBvdSB1bmUgZXhwcmVzc2lvbiByw6lndWxpw6hyZS4gUG91ciBsZXMgY2FzZXMgw6AgY29jaGVyLCBlbnRyZXIgdW5lIHZhbGV1ciBkZSAwIG91IDEuIFBvdXIgZmlsdHJlciBzdXIgTlwnSU1QT1JURSBRVUVMTEUgdmFsZXVyIGRcJ3VuZSBwcm9wcmnDqXTDqSwgdXRpbGlzZXIgbGEgY2hhw65uZSAuKiAocG9pbnQgYXN0w6lyaXNxdWUpLic7CiRsYW5nWydpbmZvX2V4cGlyZWQnXSA9ICdDZSBjb21wdGUgYSBleHBpcsOpLCBlbXDDqmNoYW50IGxhIGNvbm5leGlvbi4nOwokbGFuZ1snZGlzYWJsZV91c2VyMiddID0gJ0TDqXNhY3RpdmVyIGxcJ3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ2Vycm9yX3VzZXJkZWxldGUnXSA9ICdOb3VzIG5cJ2F2b25zIHBhcyBwdSBzdXBwcmltZXIgY2V0IHV0aWxpc2F0ZXVyLiBQZXV0LcOqdHJlIHF1ZSBkXCdhdXRyZXMgbW9kdWxlcyBvbnQgZGVzIGRvbm7DqWVzIGNvbm5lY3TDqWVzIMOgIGNldCB1dGlsaXNhdGV1ciA/JzsKJGxhbmdbJ3dhcm5fc3Ryb25ncGFzc3dvcmQnXSA9ICdOb3RlLCBwYXIgZMOpZmF1dCwgZGVzIG1vdHMgZGUgcGFzc2UgZm9ydHMgc29udCByZXF1aXMsIG7DqWFubW9pbnMgbGVzIHBhcmFtw6h0cmVzIHBvdXIgbGVzIG1vdHMgZGUgcGFzc2UgcGV1dmVudCDDqnRyZSBjb250csO0bMOpcyBkYW5zIGxlIHBhbm5lYXUgZFwnYWRtaW5pc3RyYXRpb24gZGUgY2UgbW9kdWxlJzsKJGxhbmdbJ2NvZGUnXSA9ICdDb2RlJzsKJGxhbmdbJ3ZlcmlmeSddID0gJ1bDqXJpZmllcic7CiRsYW5nWydpbmZvX3ZlcmlmeV9pZGVudGl0eSddID0gJ01lcmNpIGRlIHNhaXNpciBsZSBjb2RlIGRlIHbDqXJpZmljYXRpb24gcXVlIHZvdXMgYXZleiByZcOndSBkYW5zIGNlIGZvcm11bGFpcmUgPGVtPihpbCBwb3VycmFpdCBtw6ptZSDDqnRyZSBhdXRvbWF0aXF1ZW1lbnQgcmVtcGxpKTwvZW0+IHBvdXIgdsOpcmlmaWVyIHZvdHJlIGNvbXB0ZS4nOwokbGFuZ1snaW5mb192ZXJpZnlfaWRlbnRpdHkyJ10gPSAnTWVyY2kgZGUgc2Fpc2lyIGxlIGNvZGUgZGUgdsOpcmlmaWNhdGlvbiBxdWUgdm91cyBhdmV6IHJlw6d1IGRhbnMgY2UgZm9ybXVsYWlyZSA8ZW0+KGlsIHBvdXJyYWl0IG3Dqm1lIMOqdHJlIGF1dG9tYXRpcXVlbWVudCByZW1wbGkpPC9lbT4gcG91ciB2w6lyaWZpZXIgdm90cmUgY29tcHRlLic7CiRsYW5nWyd0aXRsZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnVm91cyBhdmV6IG91Ymxpw6kgdm90cmUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ21zZ192ZXJpZmljYXRpb25fY29tcGxldGUnXSA9ICdWb3RyZSBjb21wdGUgYSDDqXTDqSB2w6lyaWZpw6kgYXZlYyBzdWNjw6hzLiBNZXJjaS48YnIgLz5JbCBzZSBwZXV0IHF1ZSB2b3VzIGF5ZXogw6AgcmUtdGFwZXIgdm9zIGlkZW50aWZpYW50cyBkZSBjb25uZXhpb24gcG91ciBhY2PDqWRlciBhdSBjb250ZW51IHByb3TDqWfDqS4nOwokbGFuZ1snYWNjb3VudF92ZXJpZmljYXRpb24nXSA9ICdWw6lyaWZpY2F0aW9uIGR1IGNvbXB0ZSc7CiRsYW5nWydwcm9tcHRfdmVyaWZ5X3BhZ2UnXSA9ICdQYWdlIElEL0FsaWFzIHBvdXIgbGUgcHJvY2Vzc3VzIGRlIHbDqXJpZmljYXRpb24gKic7CiRsYW5nWydpbmZvX3ZlcmlmeWVtYWlsX3NlbnQnXSA9ICdMZXMgaW5zdHJ1Y3Rpb25zIGRlIHbDqXJpZmljYXRpb24gb250IMOpdMOpIGVudm95w6llcyc7CiRsYW5nWydlcnJvcl92YWxpZGF0ZV9pbnN1ZmZpY2llbnRpbmZvJ10gPSAnQ2V0IHV0aWxpc2F0ZXVyIGRvaXQgw6Agbm91dmVhdSB2YWxpZGVyIHNvbiBjb21wdGUsIG1haXMgbm91cyBuXCdhdm9ucyBwYXMgdHJvdXbDqSBkXCdhZHJlc3NlIGUtbWFpbCc7CiRsYW5nWydpbmZvX211c3RfdmFsaWRhdGUnXSA9ICdDZXQgdXRpbGlzYXRldXIgZG9pdCB2w6lyaWZpZXIgc29uIGFkcmVzc2UgZS1tYWlsIGF2YW50IGRlIHBvdXZvaXIgc2UgY29ubmVjdGVyJzsKJGxhbmdbJ21hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsnXSA9ICdMaWVuIGRlIGTDqWNvbm5leGlvbiBNQU1TJzsKJGxhbmdbJ2hkcl9idWxrX3NldHBhc3N3b3JkJ10gPSAnTW9kaWZpY2F0aW9uIHBhciBsb3RzIGRlIG1vdHMgZGUgcGFzc2UgdXRpbGlzYXRldXInOwokbGFuZ1snaW5mb19idWxrX3NldHBhc3N3b3JkJ10gPSAnQ2UgZm9ybXVsYWlyZSBwZXJtZXQgZGUgZMOpZmluaXIgZXhwbGljaXRlbWVudCB1biBtb3QgZGUgcGFzc2UgcG91ciBsZXMgdXRpbGlzYXRldXJzIHPDqWxlY3Rpb25uw6lzLiBMZXMgdXRpbGlzYXRldXJzIG5lIHJlY2V2cm9udCBwYXMgZFwnZS1tYWlsIGxldXIgaW5kaXF1YW50IHF1ZSBsZXVyIG1vdCBkZSBwYXNzZSBhIGNoYW5nw6kuIExlIG1vdCBkZSBwYXNzZSBpbmRpcXXDqSBkb2l0IMOqdHJlIGNvbmZvcm1lIGF1eCByw6hnbGVzIGRlIG1vdCBkZSBwYXNzZSBkYW5zIGxlcyBwYXJhbcOodHJlcyBkdSBtb2R1bGUuJzsKJGxhbmdbJ2hkcl9idWxrX3NldGV4cGlyeSddID0gJ01vZGlmaWNhdGlvbiBwYXIgbG90cyBkXCdleHBpcmF0aW9uIGRcJ3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ2luZm9fYnVsa19zZXRleHBpcnknXSA9ICdDZSBmb3JtdWxhaXJlIHBlcm1ldCBkZSBtb2RpZmllciBsZXMgZGF0ZXMgZFwnZXhwaXJhdGlvbiBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgc8OpbGVjdGlvbm7DqXMuIExlcyB1dGlsaXNhdGV1cnMgZXhwaXLDqXMgbmUgcGV1dmVudCBwYXMgc2UgY29ubmVjdGVyIGF1IHNpdGUuIElsIGVzdCBwb3NzaWJsZSBkZSByw6lnbGVyIHVuZSBkYXRlIGRcJ2V4cGlyYXRpb24gZGFucyBsZSBwYXNzw6knOwokbGFuZ1snYnVsa19kZWxldGUnXSA9ICdTdXBwcmltZXInOwokbGFuZ1snYnVsa19kaXNhYmxlJ10gPSAnRMOpc2FjdGl2ZXInOwokbGFuZ1snYnVsa19lbmFibGUnXSA9ICdBY3RpdmVyJzsKJGxhbmdbJ2J1bGtfZm9yY2VjaHB3J10gPSAnRm9yY2VyIGxlIGNoYW5nZW1lbnQgZGUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ2J1bGtfZm9yY2VjaHNldHRpbmdzJ10gPSAnRm9yY2VyIGxlIGNoYW5nZW1lbnQgZGUgcGFyYW3DqHRyZXMnOwokbGFuZ1snYnVsa19zZXRwYXNzd29yZCddID0gJ0TDqWZpbmlyIHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ2J1bGtfc2V0ZXhwaXJ5J10gPSAnRMOpZmluaXIgdW5lIGRhdGUgZFwnZXhwaXJhdGlvbic7CiRsYW5nWyd3aXRoX3NlbGVjdGVkJ10gPSAnT2JqZXRzIHPDqWxlY3Rpb25uw6lzJzsKJGxhbmdbJ2J1bGtfc2VsZWN0b25lJ10gPSAnTWVyY2kgZGUgc8OpbGVjdGlvbm5lciB1biBvdSBwbHVzaWV1cnMgdXRpbGlzYXRldXJzJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VycGFzc3dvcmQnXSA9ICdNZXJjaSBkZSBzYWlzaXIgdW4gbW90IGRlIHBhc3NlJzsKJGxhbmdbJ3RwbHR5cGVfY2hzZXR0aW5nc19mb3JtJ10gPSAnRm9ybXVsYWlyZSBkZSBjaGFuZ2VtZW50IGRlIHBhcmFtw6h0cmVzJzsKJGxhbmdbJ3RwbHR5cGVfZm9yZ290X3Bhc3N3b3JkX2Zvcm0nXSA9ICdGb3JtdWxhaXJlIGRlIG1vdCBkZSBwYXNzZSBvdWJsacOpJzsKJGxhbmdbJ3RwbHR5cGVfZm9yZ290X3Bhc3N3b3JkX2VtYWlsJ10gPSAnRS1tYWlsIGR1IG1vdCBkZSBwYXNzZSBvdWJsacOpJzsKJGxhbmdbJ3RwbHR5cGVfdmVyaWZ5X2VtYWlsJ10gPSAnRS1tYWlsIGRlIHbDqXJpZmljYXRpb24nOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfdmVyaWZ5J10gPSAnRm9ybXVsYWlyZSBkZSB2w6lyaWZpY2F0aW9uIGR1IG1vdCBkZSBwYXNzZSBvdWJsacOpJzsKJGxhbmdbJ3RwbHR5cGVfZm9yY2VfbmV3X3Bhc3N3b3JkJ10gPSAnRm9yY2VyIHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ3RwbHR5cGVfbG9zdF91c2VybmFtZV9mb3JtJ10gPSAnRm9ybXVsYWlyZSBkZSBub20gZFwndXRpbGlzYXRldXIgb3VibGnDqSc7CiRsYW5nWyd0cGx0eXBlX2xvc3RfdXNlcm5hbWVfY29uZmlybSddID0gJ0Zvcm11bGFpcmUgZGUgY29uZmlybWF0aW9uIGR1IG5vbSBkXCd1dGlsaXNhdGV1ciBvdWJsacOpJzsKJGxhbmdbJ3RwbHR5cGVfdmVyaWZ5X2Zvcm0nXSA9ICdGb3JtdWxhaXJlIGRlIHbDqXJpZmljYXRpb24gZHUgY29tcHRlJzsKJGxhbmdbJ3RwbHR5cGVfdmlld191c2VyJ10gPSAnVm9pciBsXCd1dGlsaXNhdGV1cic7CiRsYW5nWyd0cGx0eXBlX3Jlc2V0X3Nlc3Npb24nXSA9ICdSZW1ldHRyZSDDoCB6w6lybyBsYSBzZXNzaW9uJzsKJGxhbmdbJ21zZ191c2VyYWRkZWQnXSA9ICdOb3V2ZWwgdXRpbGlzYXRldXIgYWpvdXTDqSBhdmVjIHN1Y2PDqHMnOwokbGFuZ1snbXNnX3VzZXJtb2RpZmllZCddID0gJ0xlcyBkw6l0YWlscyBkZSBsXCd1dGlsaXNhdGV1ciBvbnQgw6l0w6kgbWlzIMOgIGpvdXInOwokbGFuZ1snZXJyb3JfZmxkdmFsbGVuZ3RoJ10gPSAnTGEgdmFsZXVyIGRvbm7DqWUgcG91ciAlcyBlc3QgdHJvcCBsb25ndWUnOwokbGFuZ1sndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyBNQU1TJzsKJGxhbmdbJ2Rlc2NfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyBwb3VyIGxlIG1vZHVsZSBNZW1icmVzIGR1IHNpdGUgKE1BTVMpJzsKJGxhbmdbJ3RwbHR5cGVfTUFNUyddID0gJ01lbWJyZXMgZHUgc2l0ZSc7CiRsYW5nWyd0cGx0eXBlX2xvZ2luX2Zvcm0nXSA9ICdGb3JtdWxhaXJlIGRlIGNvbm5leGlvbic7CiRsYW5nWyd0cGx0eXBlX2xvZ291dF9mb3JtJ10gPSAnRm9ybXVsYWlyZSBkZSBkw6ljb25uZXhpb24nOwokbGFuZ1sncHJvbXB0X2ZvciddID0gJ1BvdXInOwokbGFuZ1sncHJvbXB0X2ZvcmNlX2Noc2V0dGluZ3MnXSA9ICdGb3JjZXIgbFwndXRpbGlzYXRldXIgw6AgbW9kaWZpZXIgc2VzIHBhcmFtw6h0cmVzIMOgIGxhIHByb2NoYWluZSBjb25uZXhpb27CoCc7CiRsYW5nWydwcm9tcHRfZm9yY2VfcmV2YWxpZGF0ZSddID0gJ0NldCB1dGlsaXNhdGV1ciBkb2l0IHZhbGlkZXIgc29uIGFkcmVzc2UgZS1tYWlsIGF2YW50IGxhIHByb2NoYWluZSBjb25uZXhpb24nOwokbGFuZ1snTUFNU1xQcm90ZWN0ZWRTZWN0aW9uSGVhZCddID0gJ0VudMOqdGUgZGUgc2VjdGlvbiBwcm90w6lnw6llIE1BTVMnOwokbGFuZ1snTUFNU19Qcm90ZWN0ZWRTZWN0aW9uSGVhZCddID0gJ0VudMOqdGUgZGUgc2VjdGlvbiBwcm90w6lnw6llIE1BTVMnOwokbGFuZ1snbWFtc19wcm90ZWN0ZWRfc2VjdGlvbmhlYWQnXSA9ICdFbnTDqnRlIGRlIHNlY3Rpb24gcHJvdMOpZ8OpZSBNQU1TJzsKJGxhbmdbJ2Vycm9yX2xvc3R1bl9iYWRwYXNzd29yZCddID0gJ0TDqXNvbMOp4oCmIG1haXMgbGUgbW90IGRlIHBhc3NlIGVudHLDqSBlc3QgaW5jb3JyZWN0Lic7CiRsYW5nWydlcnJvcl9sb3N0dW5fdXNlcm5vdGZvdW5kJ10gPSAnRMOpc29sw6nigKYgZFwnYXByw6hzIGxlcyBpbmZvcm1hdGlvbnMgZG9ubsOpZXPigKYgbm91cyBuXCdhdm9ucyBwYXMgdHJvdXbDqSB2b3RyZSBjb21wdGUgdXRpbGlzYXRldXInOwokbGFuZ1snZXJyb3JfbG9zdHVuX25vZGF0YSddID0gJ1ZvdXMgblwnYXZleiBwYXMgZW50csOpIHN1ZmZpc2FtbWVudCBkXCdpbmZvcm1hdGlvbnMgcG91ciBub3VzIHBlcm1ldHRyZSBkZSByZXRyb3V2ZXIgdm90cmUgY29tcHRlLic7CiRsYW5nWydpbmZvX2xvc3R1bl90ZXh0ZmllbGQnXSA9ICdTaSB2b3VzIHBvdXZleiB2b3VzIHNvdXZlbmlyIGRcJ3VuZSBwYXJ0aWUgZHUgdGV4dGUgZGUgY2UgY2hhbXAsIHZldWlsbGV6IGxcJ2luZGlxdWVyIGljaSAobWluaW11bSBkZSA0IGNhcmFjdMOocmVzLCBlc3BhY2VzIG5vbiBjb21wcmlzKS4nOwokbGFuZ1snaW5mb19sb3N0dW5fdGV4dGFyZWEnXSA9ICdTaSB2b3VzIHZvdXMgc291dmVuZXogZFwndW5lIHBhcnRpZSBkdSB0ZXh0ZSBxdWUgdm91cyBhdmV6IHNhaXNpIGRhbnMgY2UgY2hhbXAsIHZldWlsbGV6IGVuIHNhaXNpciB1bmUgcGFydGllIGljaS4gQ2VsYSBjcsOpZXJhIHVuZSByZWNoZXJjaGUgcGFyIHNvdXMtY2hhw65uZS4gVm91cyBkZXZleiBzYWlzaXIgYXUgbW9pbnMgNCBjYXJhY3TDqHJlcy4nOwokbGFuZ1snaW5mb19sb3N0dW5fZW1haWwnXSA9ICdTXCdpbCB5IGEgcGx1c2lldXJzIGFkcmVzc2VzIGUtbWFpbCBhc3NvY2nDqWVzIMOgIHZvdHJlIGNvbXB0ZSwgZXNzYXllciBkXCdlbnRyZXIgYXUgbW9pbnMgbFwndW5lIGRcJ2VudHJlIGVsbGVzIGljaS4gQ2VsYSBwZXV0IGFpZGVyIMOgIHZvdXMgaWRlbnRpZmllci4nOwokbGFuZ1snaW5mb19sb3N0dXNlcm5hbWUnXSA9ICc8cD5BbG9ycy4uLiB2b3VzIHNlbWJsZXogYXZvaXIgb3VibGnDqSBvdSBwZXJkdSBsXCdhZHJlc3NlIGUtbWFpbCBxdWUgdm91cyB1dGlsaXNleiBwb3VyIHZvdXMgY29ubmVjdGVyIMOgIGNlIGNvbXB0ZS4gTmUgdm91cyBpbnF1acOpdGV6IHBhcywgbm91cyBwb3V2b25zIHZvdXMgYWlkZXIuPC9wPjxwPkVudHJleiBhdXRhbnQgZFwnaW5mb3JtYXRpb25zIHF1ZSBwb3NzaWJsZSBkYW5zIGNlIGZvcm11bGFpcmUsIGV0IG5vdXMgYWxsb25zIHZvaXIgc2kgbm91cyBwb3V2b25zIHZvdXMgaWRlbnRpZmllci48L3A+JzsKJGxhbmdbJ2Vycm9yX3NlY3VyaXR5J10gPSAnU291bWlzc2lvbiBkdSBmb3JtdWxhaXJlIGludmFsaWRlIChkZXMgcGFyYW3DqHRyZXMgZGUgc8OpY3VyaXTDqSBzb250IG1hbnF1YW50cyBvdSBpbnZhbGlkZXMpLic7CiRsYW5nWydlcnJvcl9kZWxldGVwcm9wJ10gPSAnVW5lIGVycmV1ciBlc3Qgc3VydmVudWUgZW4gc3VwcHJpbWFudCBsYSBwcm9wcmnDqXTDqSc7CiRsYW5nWydlcnJvcl9hY3Rpb25fbm90Y29uZmlybWVkJ10gPSAnT29wcy4gSWwgc2VtYmxlIHF1ZSB2b3VzIG5lIHBhcnZlbmV6IHBhcyDDoCBjb25maXJtZXIgdW5lIGFjdGlvbiBpbXBvcnRhbnRlLic7CiRsYW5nWydtc2dfY29uZmlybV9kZWxldGVwcm9wJ10gPSAnVm91cyBkZXZleiBzw6lsZWN0aW9ubmVyICJPdWkiIGRhbnMgbGEgYm/DrnRlIGRlIGNvbmZpcm1hdGlvbiBwb3VyIGNvbmZpcm1lciBxdWUgdm91cyBzb3VoYWl0ZXogc3VwcHJpbWVyIGNldHRlIHByb3ByacOpdMOpLic7CiRsYW5nWydwcm9tcHRfY29uZmlybV9kZWxldGVwcm9wJ10gPSAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldHRlIHByb3ByacOpdMOpID8nOwokbGFuZ1snd2Fybl9kZWxldGVwcm9wJ10gPSAnPHN0cm9uZz5GYWl0ZXMgYXR0ZW50aW9uPC9zdHJvbmc+IExhIHN1cHByZXNzaW9uIGRcJ3VuZSBwcm9wcmnDqXTDqSBzdXBwcmltZSBsZXMgZG9ubsOpZXMgYXNzb2Npw6llcyDDoCB0b3VzIGxlcyB1dGlsaXNhdGV1cnMgZGUgY2V0dGUgcHJvcHJpw6l0w6kuIElsIHNlcmEgw6lnYWxlbWVudCByZXRpcmVyIGNldHRlIHByb3ByacOpdMOpIGRlIHRvdXRlcyBsZXMgcmVsYXRpb25zIGRlIGdyb3VwZS4nOwokbGFuZ1snaGRyX2RlbGV0ZXByb3AnXSA9ICdTdXBwcmltZXIgbGEgcHJvcHJpw6l0w6knOwokbGFuZ1snbXNnX2NhbmNlbGxlZCddID0gJ09ww6lyYXRpb24gYW5udWzDqWUnOwokbGFuZ1snZXJyb3JfZGVsZXRlX3Byb3BkZWZuJ10gPSAnRMOpc29sw6ksIG1haXMgY2V0dGUgcHJvcHJpw6l0w6kgbmUgcGV1dCBwYXMgw6p0cmUgc3VwcHJpbcOpZS4gRWxsZSBlc3QgdXRpbGlzw6llIGVuIHRhbnQgcXVlIGNoYW1wIHJlcXVpcyBvdSBjYWNow6kgcGFyIHVuIG91IHBsdXNpZXVycyBncm91cGVzIGRcJ3V0aWxpc2F0ZXVycy4gU2V1bHMgbGVzIHByb3ByacOpdMOpcyBvcHRpb25uZWxsZXMgL29mZiBwZXV2ZW50IMOqdHJlIHN1cHByaW3DqXMuJzsKJGxhbmdbJ3RpdGxlX2FkZF91c2VyJ10gPSAnQ3LDqWVyIHVuIG5vdXZlYXUgY29tcHRlIGRcJ3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ2luZm9fcGFzc3dvcmRfcmVzZXQnXSA9ICdWb3RyZSBtb3QgZGUgcGFzc2UgYSDDqXTDqSByw6lpbml0aWFsaXPDqSBhdmVjIHN1Y2PDqHMuIFZldWlsbGV6IHZvdXMgY29ubmVjdGVyIHBvdXIgY29udGludWVyLic7CiRsYW5nWydlcnJvcl9wYXNzd29yZG5vdGNoYW5nZWQnXSA9ICdWZXVpbGxleiB2b3VzIGFzc3VyZXIgZFwnYXZvaXIgY2hhbmfDqSB2b3RyZSBtb3QgZGUgcGFzc2UgZXQgdsOpcmlmacOpIHF1XCdpbCBzb2l0IGNvcnJlY3QuJzsKJGxhbmdbJ21zZ19mb3JjZV9uZXdwdyddID0gJ0JpZW52ZW51ZSBkYW5zIGxlIHN5c3TDqG1lLiBQb3VyIGRlcyByYWlzb25zIGRlIHPDqWN1cml0w6ksIFZldWlsbGV6IHJlbnRyZXIgdW4gbm91dmVhdSBtb3QgZGUgcGFzc2UuJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1snaW5mb19mb3JjZV9uZXdwd190ZW1wbGF0ZSddID0gJ0NlIGdhYmFyaXQgZXN0IHV0aWxpc8OpIHBvdXIgYWZmaWNoZXIgbGUgZm9ybXVsYWlyZSBxdWkgZm9yY2UgbFwndXRpbGlzYXRldXIgw6AgY2hhbmdlciBzb24gbW90IGRlIHBhc3NlLic7CiRsYW5nWydmb3JjZV9uZXdwd190ZW1wbGF0ZSddID0gJ0dhYmFyaXQgZGUgZm9yw6dhZ2UgZGUgbm91dmVhdSBtb3QgZGUgcGFzc2UnOwokbGFuZ1sncHJvbXB0X2ZvcmNlX25ld3B3J10gPSAnRm9yY2VyIGxcJ3V0aWxpc2F0ZXVyIMOgIHLDqWluaXRpYWxpc2VyIHNvbiBtb3QgZGUgcGFzc2Ugw6AgbGEgcHJvY2hhaW5lIGNvbm5leGlvbsKgJzsKJGxhbmdbJ3Byb21wdF9kaXNhYmxlZCddID0gJ0NlIGNvbXB0ZSBlc3QtaWwgZMOpc2FjdGl2w6kgPyc7CiRsYW5nWydtc2dfdXNlcl9zdGF0ZV9jaGFuZ2VkJ10gPSAnU3RhdHV0IGRlIGxcJ3V0aWxpc2F0ZXVyIG1vZGlmacOpJzsKJGxhbmdbJ2luZm9fZGlzYWJsZWQnXSA9ICdDZSBjb21wdGUgdXRpbGlzYXRldXIgZXN0IGTDqXNhY3RpdsOpLCBlbXDDqmNoYW50IGxhIGNvbm5leGlvbic7CiRsYW5nWydlbmFibGVfdXNlciddID0gJ0FjdGl2ZXIgY2UgY29tcHRlIHV0aWxpc2F0ZXVyJzsKJGxhbmdbJ2Rpc2FibGVfdXNlciddID0gJ0TDqXNhY3RpdmVyIGNlIGNvbXB0ZSB1dGlsaXNhdGV1ciBldCB2ZWlsbGVyIMOgIGNlIHF1ZSBsXCd1dGlsaXNhdGV1ciBzb2l0IGTDqWNvbm5lY3TDqSc7CiRsYW5nWydlcnJvcl9hY2NvdW50ZGlzYWJsZWQnXSA9ICdOb3VzIHNvbW1lcyBkw6lzb2zDqXMsIG1haXMgY2UgY29tcHRlIHNlbWJsZSBhdm9pciDDqXTDqSBkw6lzYWN0aXbDqS4gVmV1aWxsZXogY29udGFjdGVyIGxlcyBhZG1pbmlzdHJhdGV1cnMgZHUgc2l0ZSBwb3VyIHLDqXNvdWRyZSBjZSBwcm9ibMOobWUnOwokbGFuZ1sndGl0bGVfZm9yZ290cHcnXSA9ICdNb3QgZGUgcGFzc2Ugb3VibGnDqSc7CiRsYW5nWyd2ZXJpZnlfaWRlbnRpdHknXSA9ICdWw6lyaWZpZXIgdm90cmUgaWRlbnRpdMOpJzsKJGxhbmdbJzQwM2Vycm9yJ10gPSAnR8OpbsOpcmVyIHVuZSBlcnJldXIgNDAzJzsKJGxhbmdbJ3Byb21wdF9lbmhhbmNlZHB3J10gPSAnRXhpZ2VyIHVuIG1vdCBkZSBwYXNzZSBmb3J0Jm5ic3A7JzsKJGxhbmdbJ2luZm9fZW5oYW5jZWRwdyddID0gJ1NpIGFjdGl2w6ksIGxlcyBtb3RzIGRlIHBhc3NlIGRldnJvbnQgYXZvaXIgYXUgbW9pbnMgdW4gY2FyYWN0w6hyZSBhbHBoYWLDqXRpcXVlLCB1bmUgbWFqdXNjdWxlIGV0IHVuIGNoaWZmcmUuJzsKJGxhbmdbJ3Byb21wdF9wd3JlcXVpcmVkY2hhcnMnXSA9ICdFeGlnZXIgdW4gZGUgY2VzIGNhcmFjdMOocmVzIGRhbnMgbGUgbW90IGRlIHBhc3NlJm5ic3A7JzsKJGxhbmdbJ2luZm9fcHdyZXF1aXJlZGNoYXJzJ10gPSAnU2kgbGVzIG1vdHMgZGUgcGFzc2Ugbm9uIHZpZGVzIGV0IGZvcnRzIHNvbnQgYWN0aXbDqXMsIGF1IG1vaW5zIGxcJ3VuIGRlcyBjYXJhY3TDqHJlcyBzcMOpY2lmacOpcyBzZXJvbnQgbsOpY2Vzc2FpcmVzIGRhbnMgbGUgbW90IGRlIHBhc3NlIGVuIHBsdXMgZGVzIGV4aWdlbmNlcyBkZSBtb3QgZGUgcGFzc2UgZm9ydHMnOwokbGFuZ1snZXJyb3JfY2FudHNldHByb3BlcnR5dHlwZSddID0gJ1ZvdXMgbmUgcG91dmV6IHBhcyBkw6lmaW5pciBsYSBwcm9wcmnDqXTDqSBkZSBjZSB0eXBlJzsKJGxhbmdbJ2luZm9faW1wb3J0X2Zvcm1hdCddID0gJzxwPlBvdXIgaW5mb3JtYXRpb24gc3VyIGxlIGZvcm1hdCBkXCdpbXBvcnQsIHZvdXMgZGV2cmlleiBjcsOpZXIgdW4gKG91IGRldXgpIHV0aWxpc2F0ZXVyIGV4ZW1wbGUgZGFucyBsZXMgZ3JvdXBlcyBzb3VoYWl0w6lzIGV0IGV4cG9ydGVyIGNldHRlIGluZm9ybWF0aW9uLiBMZSBmaWNoaWVyIGFpbnNpIGNyw6nDqSBwZXV0IMOqdHJlIHV0aWxpc8OpIGNvbW1lIHVuIGdhYmFyaXQgcG91ciBsZXMgcHJvY2hhaW5zIGltcG9ydHMuPC9wPjxici8+DQogPHA+RGUgcGx1cywgdW5lIGNvbG9ubmUgInR4dHBhc3N3b3JkIiBwZXV0IMOqdHJlIGFqb3V0w6llIGF1IGZpY2hpZXIgZFwnaW1wb3J0IHBvdXIgZMOpZmluaXIgKGVuIGZvcm1hdCB0ZXh0ZSkgbGUgbW90IGRlIHBhc3NlIGRlcyB1dGlsaXNhdGV1cnMuIFNpIGxhIGNvbG9ubmUgInR4dHBhc3N3b3JkIiBlc3QgdmlkZSBwb3VyIHVuIHV0aWxpc2F0ZXVyIGV4aXN0YW50LCBzb24gbW90IGRlIHBhc3NlIG5lIHNlcmEgcGFzIHRvdWNow6kuIFNpIGNldHRlIGNvbG9ubmUgZXN0IHZpZGUgcG91ciB1biBub3V2ZWwgdXRpbGlzYXRldXIsIG91IG5vbiBwcsOpc2VudGUsIGxlIG1vdCBkZSBwYXNzZSBjb2TDqSAiY2hhbmdlbWUiIGVzdCB1dGlsaXPDqS4nOwokbGFuZ1snaW1wb3J0X2RlbGV0ZWR1c2VyJ10gPSAnVXRpbGlzYXRldXIgc3VwcHJpbcOpICVzJzsKJGxhbmdbJ2Vycm9yX2V4cG9ydF9ub3VzZXJzJ10gPSAnQXVjdW4gdXRpbGlzYXRldXIgdHJvdXbDqSDDoCBleHBvcnRlcic7CiRsYW5nWydwcm9tcHRfZXhwb3J0X3VzZXJzJ10gPSAnRXhwb3J0ZXIgbGVzIHV0bGlzYXRldXJzJzsKJGxhbmdbJ3RpdGxlX2V4cG9ydF91c2VycyddID0gJ0V4cG9ydGVyIGRlcyB1dGlsaXNhdGV1cnMgZGFucyB1biBmaWNoaWVyIEFTQ0lJJzsKJGxhbmdbJ2luZm9fZW5jcnlwdCddID0gJ0xlcyBwcm9wcmnDqXTDqXMgY3J5cHTDqWVzIG5lIHBldXZlbnQgcGFzIMOqdHJlIGV4cG9ydMOpcyBlbiBBU0NJSSBvdSBjb25zdWx0w6llcyBwYXIgdW4gYWRtaW5pc3RyYXRldXIuIElscyBuZSBwZXV2ZW50IMOqdHJlIG1vZGlmacOpcyBxdWUgcGFyIGxcJ3V0aWxpc2F0ZXVyIGF1dG9yaXPDqS4nOwokbGFuZ1snZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJ10gPSAnTm9tIGRlIGdyb3VwZSBzcMOpY2lmacOpIGludmFsaWRlIG91IHZpZGUnOwokbGFuZ1snZXJyb3JfaW1wb3J0X2NvbHVtbmNvdW50J10gPSAnTm9tYnJlIGRlIGNvbG9ubmVzIGluY29ycmVjdCc7CiRsYW5nWydwcm9tcHRfZGVsaW1pdGVyJ10gPSAnRMOpbGltaXRldXInOwokbGFuZ1snZXJyb3JfY3JlYXRldG1wZmlsZSddID0gJ1Byb2Jsw6htZSBkZSBjcsOpYXRpb24gZHUgZmljaGllciB0ZW1wb3JhaXJlJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVfdXNlcnMnXSA9ICdTdXBwcmltZXIgZGVzIHV0aWxpc2F0ZXVycyBzdXBwbMOpbWVudGFpcmVzJzsKJGxhbmdbJ2luZm9faW1wb3J0X2RlbGV0ZV91c2VycyddID0gJ1NpIGFjdGl2w6ksIGV0IHNpIHVuaXF1ZW1lbnQgPHN0cm9uZz51biBncm91cGUgZFwndXRpbGlzYXRldXJzPC9zdHJvbmc+IGVzdCBtZW50aW9ubsOpIGRhbnMgbGUgZmljaGllciBkXCdpbXBvcnQsIGxlcyB1dGlsaXNhdGV1cnMgbWVtYnJlcyBkZSBjZSBncm91cGUsIG1haXMgbm9uIG1lbnRpb25uw6lzIGRhbnMgbGUgZmljaGllciBkXCdpbXBvcnQgc2Vyb250IHN1cHByaW3DqXMuIExhIHBydWRlbmNlIGRvaXQgw6p0cmUgZGUgbWlzZSwgY2FyIGF1Y3VuZSB2w6lyaWZpY2F0aW9uIG5cJ2VzdCBmYWl0ZSBwb3VyIHZvaXIgc2kgbGVzIHV0aWxpc2F0ZXVycyBzdXBwcmltw6lzIHNvbnQgbWVtYnJlcyBkXCd1biBhdXRyZSBncm91cGUuJzsKJGxhbmdbJ3RpdGxlX2ltcG9ydF91c2VycyddID0gJ0ltcG9ydGVyIGRlcyB1dGlsaXNhdGV1cnMgw6AgcGFydGlyIGRcJ3VuIGZpY2hpZXIgZGUgdHlwZSBDU1YnOwokbGFuZ1snZnJvbnRlbmRfYWNjZXNzJ10gPSAnVXRpbGlzYXRldXJzJzsKJGxhbmdbJ2Vycm9yX2xvc3R1bl9ub2NvbnRyb2xzJ10gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsZSBmb3JtdWxhaXJlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyBkw6l0YWlscyBkXCdpZGVudGlmaWFudOKApiBhdWN1biBjaGFtcCBhcHByb3ByacOpIHRyb3V2w6kgw6AgYWZmaWNoZXInOwokbGFuZ1snaW5mb19maWx0ZXJfc29ydGJ5J10gPSAnPHN0cm9uZz4gTm90ZTogPC9zdHJvbmc+IExlIHRyaSBkZXMgY29sb25uZXMgZm91cm5pcmEgdW4gdHJpIHN1cHBsw6ltZW50YWlyZSBzdXIgbGVzIMOpbMOpbWVudHMgY29ycmVzcG9uZGFudHMnOwokbGFuZ1snYW55J10gPSAnVG91cyc7CiRsYW5nWydzb3J0YnlfdXNlcm5hbWVfYXNjJ10gPSAnTm9tIGRcJ3V0aWxpc2F0ZXVyIChhc2NlbmRhbnQpJzsKJGxhbmdbJ3NvcnRieV91c2VybmFtZV9kZXNjJ10gPSAnTm9tIGRcJ3V0aWxpc2F0ZXVyIChkZXNjZW5kYW50KSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2FzYyddID0gJ0RhdGUgZGUgY3LDqWF0aW9uIChhc2NlbmRhbnQpJzsKJGxhbmdbJ3NvcnRieV9jcmVhdGVfZGVzYyddID0gJ0RhdGUgZGUgY3LDqWF0aW9uIChkZXNjZW5kYW50KSc7CiRsYW5nWydzb3J0YnlfZXhwaXJlc19hc2MnXSA9ICdEYXRlIGRcJ2V4cGlyYXRpb24gKGFzY2VuZGFudCknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfZGVzYyddID0gJ0RhdGUgZFwnZXhwaXJhdGlvbiAoZGVzY2VuZGFudCknOwokbGFuZ1snaW1wb3J0X2Zyb21fZmV1J10gPSAnSW1wb3J0ZXIgZGVwdWlzIEZyb250IEVuZCBVc2Vycyc7CiRsYW5nWydpbmZvX2ltcG9ydF9mcm9tX2ZldSddID0gJ0xlIG1vZHVsZSBGcm9udCBFbmQgVXNlcnMgYSDDqXTDqSBkw6l0ZWN0w6kuIENlbGEgc2lnbmlmaWUgcXVlIHZvdXMgcG91dmV6IGVzc2F5ZXIgZFwnZW4gaW1wb3J0ZXIgZGVzIGRvbm7DqWVzLiBUb3V0ZXMgbGVzIGRvbm7DqWVzLCDDoCBsXCdleGNlcHRpb24gZGVzIG1vZMOobGVzIGV0IGRlcyBhdXRvcmlzYXRpb25zIGFkbWluLCBzZXJvbnQgY29wacOpZXMuIEVuIGNhcyBkXCdlcnJldXIsIE1BTVMgdGVudGVyYSBkZSByZXN0YXVyZXIgbGVzIHRhYmxlcyBkZSBsYSBiYXNlIGRlIGRvbm7DqWVzIHByw6ljw6lkZW50ZS4nOwokbGFuZ1snY29uZmlybV9pbXBvcnRfZnJvbV9mZXUnXSA9ICfDinRlcy12b3VzIHPDu3IgPyBDZXR0ZSBhY3Rpb24gcGV1dCBzdXBwcmltZXIgZGVzIGVucmVnaXN0cmVtZW50cyBhY3R1ZWxzIGRlIGxhIGJhc2UgZGUgZG9ubsOpZXMgTUFNUyAhJzsKJGxhbmdbJ2ltcG9ydCddID0gJ0ltcG9ydCc7CiRsYW5nWydpbmZvX2VuY3J5cHRlZCddID0gJ0xlcyBwcm9wcmnDqXTDqXMgY3J5cHTDqWVzIG5lIHBldXZlbnQgw6p0cmUgdnVlcyBldCBtb2RpZmnDqWVzIHF1ZSBwYXIgbFwndXRpbGlzYXRldXIuICBNw6ptZSBsXCdhZG1pbmlzdHJhdGV1ciBkdSBzaXRlIG5lIHBldXQgcGFzIHZvaXIgb3UgZ8OpcmVyIGNlcyBkb25uw6llcy4nOwokbGFuZ1snZW5jcnlwdGVkJ10gPSAnQ3J5cHTDqSc7CiRsYW5nWydpbmZvX2Nvb2tpZW5hbWUnXSA9ICdTaSBjb2Now6ksIGxhIGZvbmN0aW9ubmFsaXTDqSAic2Ugc291dmVuaXIgZGUgbW9pIiBlc3QgYWN0aXbDqWUuIENlY2kgZXN0IHNpbWlsYWlyZSDDoCBsYSBmb25jdGlvbm5hbGl0w6kga2VlcC1hbGl2ZSBkdSBjb29raWUsIG1haXMgcGV1dCBkdXJlciBqdXNxdVwnw6AgNjAgam91cnMuIFBvdXIgaW52YWxpZGVyIHRvdXMgbGVzIGNvb2tpZXMgcmVtZW1iZXJtZSBleGlzdGFudHMsIG1vZGlmaWV6IGxlIG5vbSBkZSBjZSBjb29raWUuICBQb3VyIGTDqXNhY3RpdmVyIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBkZXZleiBlZmZhY2VyIGxlIG5vbSBkdSBjb29raWUgZXQgw6l2ZW50dWVsbGVtZW50IG1vZGlmaWVyIHZvdHJlIGdhYmFyaXQgZGUgY29ubmV4aW9uLic7CiRsYW5nWydtc2dfdXNlcm5hbWVfcmVhZG9ubHknXSA9ICdMXCdhdXRoZW50aWZpY2F0aW9uIGRlIGzigJl1dGlsaXNhdGV1ciBuZSBwZXJtZXQgcGFzIGRlIGNoYW5nZXIgbGUgbm9tIGRcJ3V0aWxpc2F0ZXVyIGRlIGNlIGNvbXB0ZSc7CiRsYW5nWydtc2dfcGFzc3dvcmRfcmVhZG9ubHknXSA9ICdMXCdhdXRoZW50aWZpY2F0aW9uIGRlIGzigJl1dGlsaXNhdGV1ciBuZSBwZXJtZXQgcGFzIGRlIGNoYW5nZXIgbGUgbW90IGRlIHBhc3NlIGRlIGNlIGNvbXB0ZSc7CiRsYW5nWydwcm9tcHRfbm9ybWFsbG9naW4nXSA9ICdTZSBjb25uZWN0ZXInOwokbGFuZ1snbW92ZV91cCddID0gJ0TDqXBsYWNlciB2ZXJzIGxlIGhhdXQnOwokbGFuZ1snbW92ZV9kb3duJ10gPSAnRMOpcGxhY2VyIHZlcnMgbGUgYmFzJzsKJGxhbmdbJ3RpdGxlX3Byb3Btb2R1bGUnXSA9ICdDZXR0ZSBwcm9wcmnDqXTDqSBlc3QgY3LDqcOpZSBwYXIgbGUgbW9kdWxlLCBldCBuZSBwZXV4IHBhcyDDqnRyZSBtb2RpZmnDqWUnOwokbGFuZ1snbm90X2F2YWlsYWJsZSddID0gJ05vbiBkaXNwb25pYmxlJzsKJGxhbmdbJ3Byb21wdF9kZmx0X2NoZWNrZWQnXSA9ICdQYXIgZMOpZmF1dCwgY2UgY2hhbXAgZGV2cmFpdCDDqnRyZSBjb2Now6knOwokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlZCddID0gJ09ww6lyYXRpb24gZWZmZWN0dcOpZSc7CiRsYW5nWydtZW1iZXJzJ10gPSAnTWVtYnJlcyc7CiRsYW5nWyd2aWV3X2ZpbHRlciddID0gJ1ZvaXIgbGVzIGZpbHRyZXMnOwokbGFuZ1snZGF0YSddID0gJ0Rvbm7DqWVzJzsKJGxhbmdbJ2FwcGxpZWQnXSA9ICdBcHBsaXF1w6knOwokbGFuZ1snZmlyc3RwYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldnBhZ2UnXSA9ICc8JzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0cGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2UnXSA9ICdQYWdlJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19jaGFuZ2V1c2VybmFtZSddID0gJ1Blcm1ldHRyZSBsZSBjaGFuZ2VtZW50IGRlIG5vbSBkXCd1dGlsaXNhdGV1cic7CiRsYW5nWydpbmZvX2FsbG93X2NoYW5nZXVzZXJuYW1lJ10gPSAnU2kgYWN0aXbDqSwgbGVzIHV0aWxpc2F0ZXVycyBwb3Vycm9udCBjaGFuZ2VyIGxldXIgaWRlbnRpZmlhbnQgYWluc2kgcXVlIGRcJ2F1dHJlcyBwYXJhbcOodHJlcyc7CiRsYW5nWyd0ZW1wbGF0ZV9zYXZlZCddID0gJ0dhYmFyaXQgc2F1dmVnYXJkw6knOwokbGFuZ1sndGVtcGxhdGVfcmVzZXRkZWZhdWx0cyddID0gJ0dhYmFyaXQgcsOpaW5pdGlhbGlzw6kgYXV4IHBhcmFtw6h0cmVzIHBhciBkw6lmYXV0JzsKJGxhbmdbJ2xibF9zZXR0aW5ncyddID0gJ1BhcmFtw6h0cmVzJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdHYWJhcml0cyc7CiRsYW5nWydNQU1TXFByb3RlY3RlZFBhZ2UnXSA9ICdDb250ZW51IHByb3TDqWfDqSBwYXIgTUFNUyc7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9wYWdlJ10gPSAnQ29udGVudSBwcm90w6lnw6kgcGFyIE1BTVMnOwokbGFuZ1sndmlldyddID0gJ1ZvaXInOwokbGFuZ1sndW5pcXVlJ10gPSAnVW5pcXVlJzsKJGxhbmdbJ29rJ10gPSAnT2snOwokbGFuZ1snZXJyb3JfbXVzdHNlbGVjdF9ncm91cCddID0gJ1VuIGdyb3VwZSBkb2l0IMOqdHJlIHPDqWxlY3Rpb25uw6knOwokbGFuZ1snc2VsZWN0b25lJ10gPSAnQ2hvaXNpcic7CiRsYW5nWydzdGFydF95ZWFyJ10gPSAnQW5uw6llIGRlIGTDqWJ1dCc7CiRsYW5nWydlbmRfeWVhciddID0gJ0FubsOpZSBkZSBmaW4nOwokbGFuZ1snZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1sncHJvbXB0X3RodW1ibmFpbF9zaXplJ10gPSAnVGFpbGxlIGFwZXLDp3UnOwokbGFuZ1sncHJvbXB0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucyddID0gJ0V4dGVuc2lvbnMgZGUgZmljaGllciBpbWFnZSBxdWUgbGVzIHV0aWxpc2F0ZXVycyBzb250IGF1dG9yaXPDqXMgw6AgdMOpbMOpdmVyc2VyJzsKJGxhbmdbJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCddID0gJ1ZvdXMgYXZleiByZcOndSBjZSBtZXNzYWdlIGNhciBxdWVscXVcJ3VuIChwcm9iYWJsZW1lbnQgdm91cykgYSBpbmRpcXXDqSBhdm9pciBwZXJkdSB2b3RyZSBtb3QgZGUgcGFzc2UuIFNpIHRlbCBlc3QgbGUgY2FzLCBtZXJjaSBkZSBzdWl2cmUgbGVzIGluc3RydWN0aW9ucyBjaS1kZXNzb3VzLiBTaSBjZSBuXCfDqXRhaXQgcGFzIHZvdXMsIGlnbm9yZXogc2ltcGxlbWVudCBjZSBtZXNzYWdlLCBtZXJjaS4nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb2RlJzsKJGxhbmdbJ3Byb21wdF9saW5rJ10gPSAnQ2xpcXVleiBzdXIgbGUgbGllbiBzdWl2YW50IHBvdXIgb3V2cmlyIG5vdHJlIHNpdGUsIGVudHJlciBsZSBjb2RlIGNpLWRlc3N1cyBldCByw6lpbml0aWFsaXNlciB2b3RyZSBtb3QgZGUgcGFzc2UgOic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnTW90IGRlIHBhc3NlIG91Ymxpw6knOwokbGFuZ1snaW5mb19mb3Jnb3Rwd21lc3NhZ2VzZW50J10gPSAnVW4gZS1tYWlsIGEgw6l0w6kgZW52b3nDqSDDoCBsXCdhZHJlc3NlICVzIGF2ZWMgbGVzIGluc3RydWN0aW9ucyBkZSByw6lpbml0aWFsaXNhdGlvbi4gTWVyY2knOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdNb3QgZGUgcGFzc2UgcGVyZHUgOiBlbnRyZXogbGVzIGluZm9ybWF0aW9ucyBkZW1hbmTDqWVzLCBldCwgc2kgbm91cyByZXRyb3V2b25zIHZvdHJlIGNvbXB0ZSwgbm91cyB2b3VzIGVudmVycm9ucyB1biBlLW1haWwgY29udGVuYW50IGRlcyBpbnN0cnVjdGlvbnMgcG91ciBsZSByw6lpbml0aWFsaXNlci4nOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnUHJvcHJpw6l0w6kgJXMgaW50cm91dmFibGUnOwokbGFuZ1sncHJvcHNmb3VuZCddID0gJ1Byb3ByacOpdMOpcyB0cm91dsOpZXMnOwokbGFuZ1snYWRkcHJvcCddID0gJ0Fqb3V0ZXIgdW5lIHByb3ByacOpdMOpJzsKJGxhbmdbJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJ10gPSAnRW50cmV6IHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlIHBvdXIgbGUgbW9kaWZpZXInOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdWb3VzIG5lIHNlbWJsZXogcGFzIMOqdHJlIGNvbm5lY3TDqSc7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnUGFyYW3DqHRyZXMnOwokbGFuZ1sndXNlcl9yZWdpc3RyYXRpb24nXSA9ICdJbnNjcmlwdGlvbic7CiRsYW5nWydlcnJvcl9hY2NvdW50ZXhwaXJlZCddID0gJ0NlIGNvbXB0ZSBhIGV4cGlyw6knOwokbGFuZ1snaGlkZGVuZmllbGRtYXJrZXInXSA9ICdNYXJxdWV1ciBjaGFtcCBjYWNow6knOwokbGFuZ1snaGlkZGVuZmllbGRjb2xvciddID0gJ0NvdWxldXIgY2hhbXAgY2FjaMOpJzsKJGxhbmdbJ2hpZGRlbiddID0gJ0NhY2jDqSc7CiRsYW5nWydlcnJvcl9ub3Byb3BlcnRpZXMnXSA9ICdBdWN1bmUgcHJvcHJpw6l0w6kgZMOpZmluaWUnOwokbGFuZ1snbm9ncm91cHMnXSA9ICdBdWN1biBncm91cGUgZMOpZmluaSc7CiRsYW5nWydncm91cHNmb3VuZCddID0gJ0dyb3VwZXMgdHJvdXbDqXMnOwokbGFuZ1snZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCddID0gJ0xcJ2FwcGFydGVuYW5jZSDDoCwgYXUgbW9pbnMsIHVuIGdyb3VwZSBlc3QgcmVxdWlzZSc7CiRsYW5nWydwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJ10gPSAnT2JsaWdhdGlvbiBkXCdhcHBhcnRlbmlyIMOgIGF1IG1vaW5zIHVuIGdyb3VwZSc7CiRsYW5nWydiYWNrJ10gPSAnUmV0b3VyJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nXSA9ICclcyBlc3QgdW4gY2hhbXAgb2JsaWdhdG9pcmUnOwokbGFuZ1snbmV4dCddID0gJ1N1aXZhbnQnOwokbGFuZ1snZXJyb3JfZ3JvdXBleGlzdHMnXSA9ICdVbiBncm91cGUgcG9ydGFudCBjZSBub20gZXhpc3RlIGTDqWrDoCc7CiRsYW5nWydyZXF1aXJlZCddID0gJ1JlcXVpcyc7CiRsYW5nWydvcHRpb25hbCddID0gJ09wdGlvbm5lbCc7CiRsYW5nWydvZmYnXSA9ICdEw6lzYWN0aXbDqSc7CiRsYW5nWydzaXplJ10gPSAnVGFpbGUnOwokbGFuZ1snbGVuZ3RoJ10gPSAnTG9uZ3VldXInOwokbGFuZ1sncHJvbXB0J10gPSAnSW52aXRlJzsKJGxhbmdbJ3Byb21wdF90eXBlJ10gPSAnVHlwZSc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWydmaWVsZHN0YXR1cyddID0gJ1N0YXR1dCBkdSBjaGFtcCc7CiRsYW5nWyd1c2VkaW5sb3N0dW4nXSA9ICdEZW1hbmRlciBsb3JzIGRlIGxhIHByb2PDqWR1cmUgZFwnaWRlbnRpZmlhbnQgcGVyZHUnOwokbGFuZ1sndGV4dCddID0gJ1RleHRlJzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2FzZSDDoCBjb2NoZXInOwokbGFuZ1snbXVsdGlzZWxlY3QnXSA9ICdMaXN0ZSBtdWx0aS1zw6lsZWN0aW9uJzsKJGxhbmdbJ3JhZGlvYnV0dG9ucyddID0gJ0JvdXRvbnMgcmFkaW8nOwokbGFuZ1snaW1hZ2UnXSA9ICdJbWFnZSc7CiRsYW5nWydlbWFpbCddID0gJ0FkcmVzc2UgZS1tYWlsJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnWm9uZSBkZSB0ZXh0ZSc7CiRsYW5nWydkcm9wZG93biddID0gJ01lbnUgZMOpcm91bGFudCc7CiRsYW5nWydtc2dfY3VycmVudGx5bG9nZ2VkaW5hcyddID0gJ0JpZW52ZW51ZSc7CiRsYW5nWydsb2dvdXQnXSA9ICdEw6ljb25uZXhpb24nOwokbGFuZ1sncHJvbXB0X25ld2dyb3VwbmFtZSddID0gJ1V0aWxpc2VyIGNlIG5vbSBkZSBncm91cGUnOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzJ10gPSAnTW9kaWZpZXIgbWVzIGluZm9ybWF0aW9ucyc7CiRsYW5nWydlcnJvcl9sb2dpbmZhaWxlZCddID0gJ0xhIGNvbm5leGlvbiBhIMOpY2hvdcOpLiBDZWxhIHNpZ25pZmllIHF1ZSB2b3VzIGF2ZXogZW50csOpIHVuIGlkZW50aWZpYW50IG91IHVuIG1vdCBkZSBwYXNzZSBpbnZhbGlkZS4gSWwgZXN0IMOpZ2FsZW1lbnQgcHJvYmFibGUgcXVlIHZvdHJlIGNvbXB0ZSBhaXQgZXhwaXLDqSBvdSBhaXQgw6l0w6kgZMOpc2FjdGl2w6kuIE1lcmNpIGRlIHbDqXJpZmllciB2b3MgaWRlbnRpZmlhbnRzLCBldCBzaSBsZSBwcm9ibMOobWUgcGVyc2lzdGUgdm91cyBwb3V2ZXogY29udGFjdGVyIGxcJ2FkbWluaXN0cmF0ZXVyIGR1IHNpdGUuJzsKJGxhbmdbJ2xvZ2luJ10gPSAnQ29ubmV4aW9uJzsKJGxhbmdbJ3Byb21wdF9zaWduaW5fYnV0dG9uJ10gPSAnVGV4dGUgZHUgYm91dG9uIGRlIGNvbm5leGlvbic7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdOb20gZFwndXRpbGlzYXRldXInOwokbGFuZ1sncHJvbXB0X2VtYWlsJ10gPSAnQWRyZXNzZSBlLW1haWwnOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnTW90IGRlIHBhc3NlJzsKJGxhbmdbJ3Byb21wdF9yZW1lbWJlcm1lJ10gPSAnU2Ugc291dmVuaXIgZGUgbW9pIHN1ciBjZXQgYXBwYXJlaWwnOwokbGFuZ1sncmVnaXN0ZXInXSA9ICdTXCdpbnNjcmlyZSc7CiRsYW5nWydmb3Jnb3RwdyddID0gJ01vdCBkZSBwYXNzZSBvdWJsacOpID8nOwokbGFuZ1snbG9zdHVzZXJuYW1lJ10gPSAnSWRlbnRpZmlhbnRzIG91Ymxpw6lzID8nOwokbGFuZ1snZGVmYXVsdHMnXSA9ICdQYXIgZMOpZmF1dCc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCddID0gJ0xlcyBtb3RzIGRlIHBhc3NlIG5lIHNvbnQgcGFzIGlkZW50aXF1ZXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lJ10gPSAnSWRlbnRpZmlhbnQgaW52YWxpZGUnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkJ10gPSAnTW90IGRlIHBhc3NlIGludmFsaWRlLiBDZWx1aS1jaSBwZXV0IMOqdHJlIHRyb3AgY291cnQsIHRyb3AgbG9uZywgb3UgdHJvcCBmYWlibGUgcG91ciBjZSBzeXN0w6htZS4gQ29uc3VsdGV6IG5vdHJlIHBvbGl0aXF1ZSBkZSBkw6lmaW5pdGlvbiBkZXMgbW90cyBkZSBwYXNzZSBwb3VyIHBsdXMgZFwnaW5mb3JtYXRpb25zJzsKJGxhbmdbJ2Vycm9yX3VzZXJub3Rmb3VuZCddID0gJ1ZldWlsbGV6IG5vdXMgZXhjdXNlciwgcXVlbHF1ZSBjaG9zZSBhIGR5c2ZvbmN0aW9ubsOpLiBBdWN1bmUgaW5mb3JtYXRpb24gblwnYSDDqXTDqSB0cm91dsOpZSBwb3VyIGNlIGNvbXB0ZSB1dGlsaXNhdGV1cic7CiRsYW5nWydlZGl0dXNlciddID0gJ01vZGlmaWVyIGxcJ3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnVmFsaWRlJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnSWRlbnRpZmlhbnQnOwokbGFuZ1snc3RhdHVzJ10gPSAnU3RhdHV0JzsKJGxhbmdbJ2Vycm9yX21lbWJlcmdyb3VwcyddID0gJ0NldCB1dGlsaXNhdGV1ciBuXCdlc3QgbWVtYnJlIGRcJ2F1Y3VuIGdyb3VwZSc7CiRsYW5nWydlcnJvcl9wcm9wZXJ0aWVzJ10gPSAnUGFzIGRlIHByb3ByacOpdMOpcyc7CiRsYW5nWydlcnJvcl9kdXBfcHJvcGVydGllcyddID0gJ1RlbnRhdGl2ZSBkXCdpbXBvcnQgZGUgcHJvcHJpw6l0w6lzIGR1cGxpcXXDqWVzJzsKJGxhbmdbJ3ZhbHVlJ10gPSAnVmFsZXVyJzsKJGxhbmdbJ2dyb3VwcyddID0gJ0dyb3VwZXMnOwokbGFuZ1sncHJvcGVydGllcyddID0gJ1Byb3ByacOpdMOpcyc7CiRsYW5nWydwcm9wbmFtZSddID0gJ05vbSBkZSBwcm9wcmnDqXTDqSc7CiRsYW5nWydwcm9wdmFsdWUnXSA9ICdWYWxldXIgZGUgcHJvcHJpw6l0w6knOwokbGFuZ1snYWRkJ10gPSAnQWpvdXRlcic7CiRsYW5nWydoaXN0b3J5J10gPSAnSGlzdG9yaXF1ZSc7CiRsYW5nWydlZGl0J10gPSAnRWRpdGVyJzsKJGxhbmdbJ2V4cGlyZXMnXSA9ICdFeHBpcmUnOwokbGFuZ1snc3BlY2lmeV9kYXRlJ10gPSAnU3DDqWNpZmllciB1bmUgZGF0ZSc7CiRsYW5nWycxMmhycyddID0gJzEyIGhldXJlcyc7CiRsYW5nWycyNGhycyddID0gJzI0IGhldXJlcyc7CiRsYW5nWyc0OGhycyddID0gJzQ4IGhldXJlcyc7CiRsYW5nWycxd2VlayddID0gJzEgc2VtYWluZSc7CiRsYW5nWycyd2Vla3MnXSA9ICcyIHNlbWFpbmVzJzsKJGxhbmdbJzFtb250aCddID0gJzEgbW9pcyc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBtb2lzJzsKJGxhbmdbJzZtb250aHMnXSA9ICc2IG1vaXMnOwokbGFuZ1snMXllYXInXSA9ICcxIGFuJzsKJGxhbmdbJ25ldmVyJ10gPSAnamFtYWlzJzsKJGxhbmdbJ3Bhc3N3b3JkJ10gPSAnTW90IGRlIHBhc3NlJzsKJGxhbmdbJ3JlcGVhdHBhc3N3b3JkJ10gPSAnw4Agbm91dmVhdSc7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnTGUgZ3JvdXBlIHBvcnRhbnQgY2Ugbm9tIGV4aXN0ZSBkw6lqw6AnOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnTW9kaWZpZXIgbGUgZ3JvdXBlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NvdW1ldHRyZSc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGVyJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ1N1cHByaW1lcic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbcOodHJlcyBpbnN1ZmZpc2FudHMnOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWyduYW1lJ10gPSAnTm9tJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRwcm9wJ10gPSAnUHJvYmzDqG1lIGRcJ2Fqb3V0IGRlIHByb3ByacOpdMOpJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRncm91cHJlbG4nXSA9ICdQcm9ibMOobWUgZFwnYWpvdXQgZGUgcmVsYXRpb24gZGUgZ3JvdXBlJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRncm91cCddID0gJ1Byb2Jsw6htZSBkXCdham91dCBkZSBncm91cGUnOwokbGFuZ1snZXJyb3JfY2FudGFzc2lnbnVzZXInXSA9ICdQcm9ibMOobWUgZFwnYWpvdXQgZFwndXRpbHNhdGV1ciDDoCB1biBncm91cGUnOwokbGFuZ1snZXJyb3JfY291bGRub3RkZWxldGVwcm9wZXJ0eSddID0gJ1Byb2Jsw6htZSBkZSBzdXBwcmVzc2lvbiBkZSBwcm9wcmnDqXTDqSc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdGZpbmRlbWFpbCddID0gJ0F1Y3VuZSBhZHJlc3NlIGVtYWlsIG5cJ2Egw6l0w6kgdHJvdXbDqWUnOwokbGFuZ1snZXJyb3JfZGVzdGluYXRpb25ub3R3cml0YWJsZSddID0gJ1BhcyBkXCdhdXRvcmlzYXRpb24gZFwnw6ljcml0dXJlIHN1ciBsZSByw6lwZXJ0b2lyZSBjaWJsZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnUGFyYW3DqHRyZXMgaW52YWxpZGVzJzsKJGxhbmdbJ2Vycm9yX25vZ3JvdXBzJ10gPSAnQXVjdW4gZ3JvdXBlIG5cJ2Egw6l0w6kgdHJvdXbDqSc7CiRsYW5nWydhcHBseWZpbHRlciddID0gJ0FwcGxpcXVlcic7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cmUnOwokbGFuZ1sndXNlcmZpbHRlciddID0gJ0V4cHJlc3Npb24gcsOpZ3VsacOocmUgZFwnaWRlbnRpZmlhbnQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydncm91cG5hbWUnXSA9ICdOb20gZGUgZ3JvdXBlJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY8OocyByZWZ1c8OpJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyZXVyJzsKJGxhbmdbJ2FkZGdyb3VwJ10gPSAnQWpvdXRlciB1biBncm91cGUnOwokbGFuZ1snaW1wb3J0Z3JvdXAnXSA9ICdJbXBvcnRlciB1biBncm91cGUnOwokbGFuZ1snYWRkdXNlciddID0gJ0Fqb3V0ZXIgdW4gdXRpbGlzYXRldXInOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ1V0aWxpc2F0ZXVycyB0cm91dsOpcyBjb3JyZXNwb25kYW50IGF1eCBjcml0w6hyZXMnOwokbGFuZ1snZ3JvdXAnXSA9ICdHcm91cGUnOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdTw6lsZWN0aW9ubmVyIHVuIGdyb3VwZSc7CiRsYW5nWydyZWdpc3RyYXRpb25fdGVtcGxhdGUnXSA9ICdHYWJhcml0IGRcJ2luc2NyaXB0aW9uJzsKJGxhbmdbJ2xvZ291dF90ZW1wbGF0ZSddID0gJ0dhYmFyaXQgZGUgZMOpY29ubmV4aW9uJzsKJGxhbmdbJ2xvZ2luX3RlbXBsYXRlJ10gPSAnR2FiYXJpdCBkZSBjb25uZXhpb24nOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcsOpZsOpcmVuY2VzJzsKJGxhbmdbJ3VzZXJzJ10gPSAnVXRpbGlzYXRldXJzJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01lbWJyZXMgZHUgc2l0ZSc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX29wdGlvbnMnXSA9ICdHcm91cGVzIE1BTVMnOwokbGFuZ1snZmllbGRkZWZfbWFtc19tdWx0aXNlbGVjdF9oZWxwJ10gPSAnTWVyY2kgZGUgc8OpbGVjdGlvbm5lciB1biBvdSBwbHVzaWV1cnMgZ3JvdXBlcyBNQU1TIGRpc3BvbmlibGVzJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZXJzJ10gPSAnVXRpbGlzYXRldXJzJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZV91c2VybmFtZSddID0gJ1V0aWxpc2VyIGxlIGNoYW1wIGRlIG5vbSBkXCd1dGlsaXNhdGV1cic7CiRsYW5nWydmaWVsZGRlZl91c2VfdXNlcm5hbWVfaGVscCddID0gJ1NpIHZvdXMgY29jaGV6IGNldHRlIG9wdGlvbiwgbGUgY2hhbXAgcGVyc29ubmFsaXPDqSBjaS1kZXNzb3VzIG5lIHNlcmEgcGFzIHV0aWxpc8OpLic7CiRsYW5nWydmaWVsZGRlZl9zZXBhcmF0b3JfY2hyJ10gPSAnQ2FyYWN0w6hyZSBkZSBzw6lwYXJhdGlvbic7CiRsYW5nWydmaWVsZGRlZl9zZXBhcmF0b3JfY2hyX2hlbHAnXSA9ICdDYXJhY3TDqHJlIHV0aWxpc8OpIHBvdXIgc8OpcGFyZXIgbGUgY2hhbXAgMSBkdSBjaGFtcCAyIGRhbnMgbGUgdGV4dGUgZGVzIG9wdGlvbnMuIFBhciBkw6lmYXV0LCB1biBjYXJhY3TDqHJlIGVzcGFjZS4nOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fdW5zYWZlcGFzc3dvcmQnXSA9ICdRdWVzdGEgcGFzc3dvcmQgdXRlbnRlIHV0aWxpenphIHVuIHZlY2NoaW8gbWVjY2FuaXNtbyBkaSBoYXNoaW5nLiBMXCd1dGVudGUgZGV2ZSBtb2RpZmljYXJlIGxhIHBhc3N3b3JkJzsKJGxhbmdbJ3Vuc2FmZSddID0gJ05vbiBzaWN1cm8nOwokbGFuZ1snbXNnX2Fub25pbWl6ZWQnXSA9ICdVdGVudGUgcmVzbyBhbm9uaW1vJzsKJGxhbmdbJ2Fub25pbWl6ZSddID0gJ1JlbmRpIGFub25pbW8gcXVlc3RvIHV0ZW50ZSc7CiRsYW5nWydjb25maXJtX2Fub25pbWl6ZSddID0gJ1NlaSBzaWN1cm8gZGkgdm9sZXIgcmVuZGVyZSBhbm9uaW1vIHF1ZXN0byB1dGVudGU/IExcJ2FjY291bnQgdmVycsOgIGRpc2FiaWxpdGF0bywgbGEgcGFzc3dvcmQgY2FtYmlhdGEsIGlsIG5vbWUgdXRlbnRlIGUgdHV0dGUgbGUgaW5mb3JtYXppb25pIHBlcnNvbmFsaSBjYW5jZWxsYXRlJzsKJGxhbmdbJ3Byb21wdF9jbGVhcmhpc3RvcnlfYWdlJ10gPSAnQ2FuY2VsbGEgbGUgdm9jaSBkZWxsYSBjcm9ub2xvZ2lhIHBpw7kgdmVjY2hpZSBkaSBOIGdpb3JuaSc7CiRsYW5nWydpbmZvX2NsZWFyaGlzdG9yeV9hZ2UnXSA9ICdJbnNlcmlzY2kgdW4gdmFsb3JlIGRpdmVyc28gZGEgemVybyBwZXIgcmltdW92ZXJlIHJlZ29sYXJtZW50ZSB0dXR0ZSBsZSB2b2NpIGRlbGxhIGNyb25vbG9naWEgdXRlbnRlIHByZWNlZGVudGkgYWwgbnVtZXJvIGRpIGdpb3JuaSBpbmRpY2F0byc7CiRsYW5nWydwcm9tcHRfbG9naW5fYWZ0ZXJfdmVyaWZ5J10gPSAnRWZmZXR0dWEgbFwnYWNjZXNzbyBhdXRvbWF0aWNhbWVudGUgZG9wbyBsYSB2ZXJpZmljYSBkZWxsXCd1dGVudGUnOwokbGFuZ1snaW5mb19sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdTZSBhYmlsaXRhdG8sIHVuIHV0ZW50ZSBhdXRlbnRpY2F0byBjaGUgdmVyaWZpY2EgY29ycmV0dGFtZW50ZSBsYSBwcm9wcmlhIGlkZW50aXTDoCB2ZXJyw6AgcmVnaXN0cmF0byBhdXRvbWF0aWNhbWVudGUuJzsKJGxhbmdbJ3F1aWNrZmluZF9pZG5hbWUnXSA9ICdJRCB1dGVudGUvTm9tZSc7CiRsYW5nWydxdWlja2ZpbmRfcGgnXSA9ICdJRCB1dGVudGUgbyBub21lJzsKJGxhbmdbJ2ZpbmQnXSA9ICdNb2RpZmljYSBVdGVudGUnOwokbGFuZ1sncXVpY2tmaW5kX3VzZXInXSA9ICdSaWNlcmNhIHZlbG9jZS4uLic7CiRsYW5nWyd1c2Vyc21hdGNoaW5nJ10gPSAnVXRlbnRpIGNvcnJpc3BvbmRlbnRpIGFpIHR1b2kgY3JpdGVyaSc7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWRzdGF0dXMnXSA9ICdTdGF0byBEaXNhYmlsaXRhdG8nOwokbGFuZ1snZGlzYWJsZWQnXSA9ICdEaXNhYmlsaXRhdG8nOwokbGFuZ1snZW5hYmxlZCddID0gJ0FiaWxpdGF0byc7CiRsYW5nWydwcm9wcmVnZXgnXSA9ICdWYWxvcmUgZGVsbGEgcHJvcHJpZXTDoCc7CiRsYW5nWydpbmZvX3Byb3ByZWdleCddID0gJ0luc2VyaXJlIHVuYSBzdHJpbmdhIGRpIHZhbG9yZSwgdW5hIHNvdHRvc3RyaW5nYSBvIHVuXCdlc3ByZXNzaW9uZSByZWdvbGFyZS4gUGVyIGkgY2FtcGkgZGVsbGUgY2FzZWxsZSBkaSBjb250cm9sbG8gaW5zZXJpcmUgdW4gdmFsb3JlIGRpIDAgbyAxLiBQZXIgZmlsdHJhcmUgc3UgUVVBTFNJQVNJIHZhbG9yZSBwZXIgdW5hIHByb3ByaWV0w6AsIHV0aWxpenphcmUgbGEgc3RyaW5nYSAuKiAoYXN0ZXJpc2NvIHB1bnRvKS4nOwokbGFuZ1snaW5mb19leHBpcmVkJ10gPSAnUXVlc3RvIGFjY291bnQgw6ggc2NhZHV0bywgYWNjZXNzbyBub24gY29uc2VudGl0by4nOwokbGFuZ1snZGlzYWJsZV91c2VyMiddID0gJ0Rpc2FiaWxpdGEgdXRlbnRlJzsKJGxhbmdbJ2Vycm9yX3VzZXJkZWxldGUnXSA9ICdOb24gw6ggc3RhdG8gcG9zc2liaWxlIGVsaW1pbmFyZSBxdWVzdG8gYWNjb3VudCB1dGVudGUuIEZvcnNlIGFsdHJpIG1vZHVsaSBoYW5ubyBkYXRpIGNvbGxlZ2F0aSBhIHF1ZXN0byB1dGVudGU/JzsKJGxhbmdbJ3dhcm5fc3Ryb25ncGFzc3dvcmQnXSA9ICdOb3RhLCBwZXIgaW1wb3N0YXppb25lIHByZWRlZmluaXRhLCBwYXNzd29yZCBjb21wbGVzc2Ugc29ubyBvYmJsaWdhdG9yaWUsIHNlYmJlbmUgbGUgaW1wb3N0YXppb25pIHBlciBsZSBwYXNzd29yZCBwb3NzYW5vIGVzc2VyZSBjb250cm9sbGF0ZSBkYWxsXCdpbnRlcm5vIGRlbCBwYW5uZWxsbyBkaSBhbW1pbmlzdHJhemlvbmUgZGkgcXVlc3RvIG1vZHVsbyc7CiRsYW5nWydjb2RlJ10gPSAnQ29kaWNlJzsKJGxhbmdbJ3ZlcmlmeSddID0gJ1ZlcmlmaWNhJzsKJGxhbmdbJ2luZm9fdmVyaWZ5X2lkZW50aXR5J10gPSAnRG92cmVzdGkgYXZlciBnacOgIHJpY2V2dXRvIHVuXCdlLW1haWwgY29uIHVuIGNvZGljZSBwZXIgdmVyaWZpY2FyZSBkaSBlc3NlcmUgaW4gcG9zc2Vzc28gZGVsbFwnaW5kaXJpenpvIGUtbWFpbCBhc3NvY2lhdG8gYSBxdWVzdG8gYWNjb3VudC4gSW5zZXJpc2NpIHF1aSBpbCBjb2RpY2UgZGkgdmVyaWZpY2EuIDxlbT4ocG90cmViYmUgYW5jaGUgZXNzZXJlIGZvcm5pdG8gYXV0b21hdGljYW1lbnRlKS48L2VtPic7CiRsYW5nWydpbmZvX3ZlcmlmeV9pZGVudGl0eTInXSA9ICdEb3ZyZXN0aSBhdmVyIGdpw6AgcmljZXZ1dG8gdW5cJ2UtbWFpbCBjb24gdW4gY29kaWNlIHBlciB2ZXJpZmljYXJlIGRpIGVzc2VyZSBpbiBwb3NzZXNzbyBkZWxsXCdpbmRpcml6em8gZS1tYWlsIGFzc29jaWF0byBhIHF1ZXN0byBhY2NvdW50LiBJbnNlcmlzY2kgcXVpIGlsIGNvZGljZSBkaSB2ZXJpZmljYS4gPGVtPihwb3RyZWJiZSBhbmNoZSBlc3NlcmUgZm9ybml0byBhdXRvbWF0aWNhbWVudGUpLjwvZW0+JzsKJGxhbmdbJ3RpdGxlX2ZvcmdvdHB3ZW1haWwnXSA9ICdIYWkgc21hcnJpdG8gbGUgdHVlIGNyZWRlbnppYWxpJzsKJGxhbmdbJ21zZ192ZXJpZmljYXRpb25fY29tcGxldGUnXSA9ICdWZXJpZmljYSBlZmZldHR1YXRhIGNvbiBzdWNjZXNzby4gR3JhemllLjxici8+UG90cmViYmUgZXNzZXJlIG5lY2Vzc2FyaW8gcmVpbnNlcmlyZSBsZSBjcmVkZW56aWFsaSBkaSBhY2Nlc3NvIHBlciBhY2NlZGVyZSBhbGxlIG5vc3RyZSBhcmVlIHByb3RldHRlLic7CiRsYW5nWydhY2NvdW50X3ZlcmlmaWNhdGlvbiddID0gJ1ZlcmlmaWNhIGFjY291bnQnOwokbGFuZ1sncHJvbXB0X3ZlcmlmeV9wYWdlJ10gPSAnSUQgZGVsbGEgcGFnaW5hL2FsaWFzIHBlciBnZXN0aXJlIGlsIHByb2Nlc3NvIGRpIHZlcmlmaWNhIConOwokbGFuZ1snaW5mb192ZXJpZnllbWFpbF9zZW50J10gPSAnTGUgaXN0cnV6aW9uaSBwZXIgbGEgdmVyaWZpY2Egc29ubyBzdGF0ZSBpbnZpYXRlJzsKJGxhbmdbJ2Vycm9yX3ZhbGlkYXRlX2luc3VmZmljaWVudGluZm8nXSA9ICdRdWVzdG8gdXRlbnRlIGRldmUgcmlwZXRlcmUgbGEgcHJvcHJpYSB2YWxpZGF6aW9uZSwgbWEgbm9uIHNvbm8gZGlzcG9uaWJpbGkgc3VmZmljaWVudGkgaW5mb3JtYXppb25pIHN1bGxcJ3V0ZW50ZSBwZXIgcmVuZGVybG8gcG9zc2liaWxlLic7CiRsYW5nWydpbmZvX211c3RfdmFsaWRhdGUnXSA9ICdRdWVzdGkgdXRlbnRpIGRldm9ubyB2YWxpZGFyc2kgcHJpbWEgZGkgYWNjZWRlcmUnOwokbGFuZ1snbWFtc19wcm90ZWN0ZWRfbG9nb3V0bGluayddID0gJ0Rpc2Nvbm5lc3Npb25lIGRpIE1BTVMnOwokbGFuZ1snaGRyX2J1bGtfc2V0cGFzc3dvcmQnXSA9ICdJbXBvc3RhemlvbmUgY29sbGV0dGl2YSBkZWxsZSBwYXNzd29yZCB1dGVudGUnOwokbGFuZ1snaW5mb19idWxrX3NldHBhc3N3b3JkJ10gPSAnUXVlc3RvIG1vZHVsbyBjb25zZW50ZSBkaSBpbXBvc3RhcmUgaW4gbW9kbyBlc3BsaWNpdG8gbGEgcGFzc3dvcmQgcGVyIGdsaSB1dGVudGkgc2VsZXppb25hdGkuIEFnbGkgdXRlbnRpIG5vbiB2aWVuZSBpbnZpYXRhIHVuXCdlLW1haWwgY2hlIGluZGljaGkgY2hlIGxhIGxvcm8gcGFzc3dvcmQgw6ggY2FtYmlhdGEuIExhIHBhc3N3b3JkIHNwZWNpZmljYXRhIGRldmUgY29ycmlzcG9uZGVyZSBhbGxlIHJlZ29sZSBkZWxsYSBwYXNzd29yZCBuZWxsZSBpbXBvc3RhemlvbmkgZGVsIG1vZHVsby4nOwokbGFuZ1snaGRyX2J1bGtfc2V0ZXhwaXJ5J10gPSAnSW1wb3N0YXppb25lIGNvbGxldHRpdmEgZGVsbGEgc2NhZGVuemEgZGVsbFwndXRlbnRlJzsKJGxhbmdbJ2luZm9fYnVsa19zZXRleHBpcnknXSA9ICdRdWVzdG8gbW9kdWxvIHBlcm1ldHRlIGRpIG1vZGlmaWNhcmUgbGEgZGF0YSBkaSBzY2FkZW56YSBwZXIgZ2xpIHV0ZW50aSBzZWxlemlvbmF0aS4gR2xpIHV0ZW50aSBzY2FkdXRpIG5vbiBwb3Nzb25vIGFjY2VkZXJlIGFsIHNpdG8gd2ViLiDDiCBwb3NzaWJpbGUgaW1wb3N0YXJlIHVuYSBkYXRhIGRpIHNjYWRlbnphIGFsIHBhc3NhdG8nOwokbGFuZ1snYnVsa19kZWxldGUnXSA9ICdFbGltaW5hJzsKJGxhbmdbJ2J1bGtfZGlzYWJsZSddID0gJ0Rpc2FiaWxpdGEnOwokbGFuZ1snYnVsa19lbmFibGUnXSA9ICdBYmlsaXRhJzsKJGxhbmdbJ2J1bGtfZm9yY2VjaHB3J10gPSAnRm9yemEgaWwgY2FtYmlvIGRlbGxhIHBhc3N3b3JkJzsKJGxhbmdbJ2J1bGtfZm9yY2VjaHNldHRpbmdzJ10gPSAnRm9yemEgaWwgY2FtYmlvIGRlbGxlIGltcG9zdGF6aW9uaSc7CiRsYW5nWydidWxrX3NldHBhc3N3b3JkJ10gPSAnSW1wb3N0YSB1bmEgbnVvdmEgcGFzc3dvcmQnOwokbGFuZ1snYnVsa19zZXRleHBpcnknXSA9ICdJbXBvc3RhIGxhIGRhdGEgZGkgc2NhZGVuemEnOwokbGFuZ1snd2l0aF9zZWxlY3RlZCddID0gJ0NvbiBzZWxlemlvbmF0byc7CiRsYW5nWydidWxrX3NlbGVjdG9uZSddID0gJ1BlciBmYXZvcmUgc2VsZXppb25hIHVubyBvIHBpw7kgdXRlbnRpJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VycGFzc3dvcmQnXSA9ICdQZXIgZmF2b3JlIGluc2VyaXNjaSB1bmEgcGFzc3dvcmQnOwokbGFuZ1sndHBsdHlwZV9jaHNldHRpbmdzX2Zvcm0nXSA9ICdNb2R1bG8gTW9kaWZpY2EgaW1wb3N0YXppb25pJzsKJGxhbmdbJ3RwbHR5cGVfZm9yZ290X3Bhc3N3b3JkX2Zvcm0nXSA9ICdNb2R1bG8gcGFzc3dvcmQgZGltZW50aWNhdGEnOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfZW1haWwnXSA9ICdFLW1haWwgcGFzc3dvcmQgZGltZW50aWNhdGEnOwokbGFuZ1sndHBsdHlwZV92ZXJpZnlfZW1haWwnXSA9ICdFLW1haWwgZGkgdmVyaWZpY2EnOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfdmVyaWZ5J10gPSAnTW9kdWxvIGRpIHZlcmlmaWNhIHBhc3N3b3JkIGRpbWVudGljYXRhJzsKJGxhbmdbJ3RwbHR5cGVfZm9yY2VfbmV3X3Bhc3N3b3JkJ10gPSAnRm9yemEgbnVvdmEgcGFzc3dvcmQnOwokbGFuZ1sndHBsdHlwZV9sb3N0X3VzZXJuYW1lX2Zvcm0nXSA9ICdNb2R1bG8gbm9tZSB1dGVudGUgc21hcnJpdG8nOwokbGFuZ1sndHBsdHlwZV9sb3N0X3VzZXJuYW1lX2NvbmZpcm0nXSA9ICdNb2R1bG8gZGkgY29uZmVybWEgZGVsIG5vbWUgdXRlbnRlIHNtYXJyaXRvJzsKJGxhbmdbJ3RwbHR5cGVfdmVyaWZ5X2Zvcm0nXSA9ICdNb2R1bG8gZGkgdmVyaWZpY2EgZGVsbFwnYWNjb3VudCc7CiRsYW5nWyd0cGx0eXBlX3ZpZXdfdXNlciddID0gJ1Zpc3VhbGl6emEgdXRlbnRlJzsKJGxhbmdbJ3RwbHR5cGVfcmVzZXRfc2Vzc2lvbiddID0gJ1JlaW1wb3N0YSBzZXNzaW9uZSc7CiRsYW5nWydtc2dfdXNlcmFkZGVkJ10gPSAnTnVvdm8gdXRlbnRlIGFnZ2l1bnRvIGNvbiBzdWNjZXNzbyc7CiRsYW5nWydtc2dfdXNlcm1vZGlmaWVkJ10gPSAnSSBkYXRpIGRlbGxcJ3V0ZW50ZSBzb25vIHN0YXRpIGFnZ2lvcm5hdGknOwokbGFuZ1snZXJyb3JfZmxkdmFsbGVuZ3RoJ10gPSAnSWwgdmFsb3JlIGluZGljYXRvIHBlciAlcyDDqCB0cm9wcG8gbHVuZ28nOwokbGFuZ1sndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdJbXBvc3RhemlvbmkgLSBNQU1TJzsKJGxhbmdbJ2Rlc2NfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdJbXBvc3RhemlvbmkgcGVyIGlsIG1vZHVsbyBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUnOwokbGFuZ1sndHBsdHlwZV9NQU1TJ10gPSAnTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlJzsKJGxhbmdbJ3RwbHR5cGVfbG9naW5fZm9ybSddID0gJ01vZHVsbyBkaSBhY2Nlc3NvJzsKJGxhbmdbJ3RwbHR5cGVfbG9nb3V0X2Zvcm0nXSA9ICdNb2R1bG8gZGkgZGlzY29ubmVzc2lvbmUnOwokbGFuZ1sncHJvbXB0X2ZvciddID0gJ1Blcic7CiRsYW5nWydwcm9tcHRfZm9yY2VfY2hzZXR0aW5ncyddID0gJ0ZvcnphIGxcJ3V0ZW50ZSBhIG1vZGlmaWNhcmUgbGUgaW1wb3N0YXppb25pIGFsIHByb3NzaW1vIGFjY2Vzc28nOwokbGFuZ1sncHJvbXB0X2ZvcmNlX3JldmFsaWRhdGUnXSA9ICdRdWVzdGkgdXRlbnRpIGRldm9ubyB2YWxpZGFyc2kgZG9wbyBpbCBwcm9zc2ltbyBhY2Nlc3NvJzsKJGxhbmdbJ01BTVNcUHJvdGVjdGVkU2VjdGlvbkhlYWQnXSA9ICdJbnRlc3RhemlvbmUgZGkgc2V6aW9uZSBwcm90ZXR0YSBkYSBNQU1TJzsKJGxhbmdbJ01BTVNfUHJvdGVjdGVkU2VjdGlvbkhlYWQnXSA9ICdJbnRlc3RhemlvbmUgZGkgc2V6aW9uZSBwcm90ZXR0YSBkYSBNQU1TJzsKJGxhbmdbJ21hbXNfcHJvdGVjdGVkX3NlY3Rpb25oZWFkJ10gPSAnSW50ZXN0YXppb25lIGRpIHNlemlvbmUgcHJvdGV0dGEgZGEgTUFNUyc7CiRsYW5nWydlcnJvcl9sb3N0dW5fYmFkcGFzc3dvcmQnXSA9ICdTcGlhY2VudGUsIG1hIGxhIHBhc3N3b3JkIGZvcm5pdGEgbm9uIMOoIGNvcnJldHRhLic7CiRsYW5nWydlcnJvcl9sb3N0dW5fdXNlcm5vdGZvdW5kJ10gPSAnU3BpYWNlbnRlLCBtYSBzdWxsYSBiYXNlIGRlaSBkYXRpIGZvcm5pdGkgbm9uIMOoIHN0YXRvIHBvc3NpYmlsZSB0cm92YXJlIGlsIHR1byBub21lIHV0ZW50ZS4nOwokbGFuZ1snZXJyb3JfbG9zdHVuX25vZGF0YSddID0gJ05vbiBoYWkgZm9ybml0byBkYXRpIHN1ZmZpY2llbnRpIG5lbCBtb2R1bG8gZGVsIG5vbWUgdXRlbnRlIHNtYXJyaXRvIHBlciBwb3RlciB0cm92YXJlIGlsIHR1byBhY2NvdW50IG5lbCBub3N0cm8gZGF0YWJhc2UuJzsKJGxhbmdbJ2luZm9fbG9zdHVuX3RleHRmaWVsZCddID0gJ1NlIHJpZXNjaSBhIHJpY29yZGFyZSB1bmEgcGFydGUgZGVsIHRlc3RvIGRpIHF1ZXN0byBjYW1wbywgaW5zZXJpc2NpbG8gcXVpIChhbG1lbm8gNCBjYXJhdHRlcmkgZXNjbHVzaSBnbGkgc3BhemkgdnVvdGkpJzsKJGxhbmdbJ2luZm9fbG9zdHVuX3RleHRhcmVhJ10gPSAnU2Ugcmllc2NpIGEgcmljb3JkYXJlIHVuYSBwYXJ0ZSBkZWwgdGVzdG8gY2hlIHBvdHJlc3RpIGF2ZXIgaW5zZXJpdG8gaW4gcXVlc3RvIGNhbXBvLCBpbnNlcmlzY2lsYSBxdWkuIENpw7IgY3JlZXLDoCB1bmEgcmljZXJjYSBwZXIgc290dG9zdHJpbmdhLiBEZXZpIGluc2VyaXJlIGFsbWVubyA0IGNhcmF0dGVyaS4nOwokbGFuZ1snaW5mb19sb3N0dW5fZW1haWwnXSA9ICdTZSBzb25vIHByZXNlbnRpIGluZGlyaXp6aSBlbWFpbCBtdWx0aXBsaSBhc3NvY2lhdGkgYWwgdHVvIGFjY291bnQsIHByb3ZhIGEgaW5zZXJpcm5lIGFsbWVubyB1bm8gcXVpLiBRdWVzdG8gcHXDsiBhaXV0YXJlIGEgaWRlbnRpZmljYXJ0aSBpbiBtb2RvIHVuaXZvY28nOwokbGFuZ1snaW5mb19sb3N0dXNlcm5hbWUnXSA9ICc8cD5EdW5xdWUgcGFyZSBjaGUgdHUgYWJiaWEgc21hcnJpdG8gbyBkaW1lbnRpY2F0byBpbCB0dW8gbm9tZSB1dGVudGUgbyBsXCdpbmRpcml6em8gZS1tYWlsIHVzYXRpIHBlciBhY2NlZGVyZSBhIHF1ZXN0byBhY2NvdW50LiAgTm9uIHByZW9jY3VwYXJ0aSwgcG9zc2lhbW8gYWl1dGFydGkuPC9wPjxwPkluc2VyaXNjaSBpbCBtYWdnaW9yIG51bWVybyBwb3NzaWJpbGUgZGkgaW5mb3JtYXppb25pICBpbiBxdWVzdG8gbW9kdWxvIGUgdmVkcmVtbyBzZSBzYXJlbW8gaW4gZ3JhZG8gZGkgaWRlbnRpZmljYXJ0aSBpbiBtb2RvIHVuaXZvY28gY29zw6wgZGEgcG90ZXIgdHJvdmFyZSBpbCB0dW8gbm9tZSBwZXIgbFwnYWNjZXNzby48L3A+JzsKJGxhbmdbJ2Vycm9yX3NlY3VyaXR5J10gPSAnSW52aW8gZGVsIG1vZHVsbyBub24gdmFsaWRvIChhbGN1bmkgZGF0aSBkaSBzaWN1cmV6emEgc29ubyBtYW5jYW50aSBvIG5vbiB2YWxpZGkpLic7CiRsYW5nWydlcnJvcl9kZWxldGVwcm9wJ10gPSAnU2kgw6ggdmVyaWZpY2F0byB1biBlcnJvcmUgbmVsbFwnZWxpbWluYXppb25lIGRlbGxhIHByb3ByaWV0w6AnOwokbGFuZ1snZXJyb3JfYWN0aW9uX25vdGNvbmZpcm1lZCddID0gJ09vcHMuICBTZW1icmEgY2hlIHR1IG5vbiBzaWEgcml1c2NpdG8gYSBjb25mZXJtYXJlIHVuXCdhemlvbmUgaW1wb3J0YW50ZS4nOwokbGFuZ1snbXNnX2NvbmZpcm1fZGVsZXRlcHJvcCddID0gJ0Jpc29nbmEgc2VsZXppb25hcmUgIlPDrCIgbmVsbGEgZmluZXN0cmEgZGkgY29uZmVybWEgcGVyIGNvbmZlcm1hcmUgY2hlIHNpIHZ1b2xlIGVsaW1pbmFyZSBxdWVzdGEgcHJvcHJpZXTDoC4nOwokbGFuZ1sncHJvbXB0X2NvbmZpcm1fZGVsZXRlcHJvcCddID0gJ1NlaSBzaWN1cm8gZGkgdm9sZXIgZWxpbWluYXJlIHF1ZXN0YSBwcm9wcmlldMOgPyc7CiRsYW5nWyd3YXJuX2RlbGV0ZXByb3AnXSA9ICc8c3Ryb25nPkZhcmUgYXR0ZW56aW9uZTwvc3Ryb25nPiBMXCdlbGltaW5hemlvbmUgZGkgdW5hIHByb3ByaWV0w6AgZWxpbWluZXLDoCB0dXR0aSBpIGRhdGkgYXNzb2NpYXRpIGEgcXVhbHNpYXNpIHV0ZW50ZSBwZXIgcXVlc3RhIHByb3ByaWV0w6AuICBSaW11b3ZlcsOgIGlub2x0cmUgcXVlc3RhIHByb3ByaWV0w6AgZGEgdHV0dGUgbGUgcmVsYXppb25pIGRpIGdydXBwby4nOwokbGFuZ1snaGRyX2RlbGV0ZXByb3AnXSA9ICdFbGltaW5hIHByb3ByaWV0w6AnOwokbGFuZ1snbXNnX2NhbmNlbGxlZCddID0gJ09wZXJhemlvbmUgYW5udWxsYXRhJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZV9wcm9wZGVmbiddID0gJ1NwaWFjZW50ZSwgbWEgcXVlc3RhIHByb3ByaWV0w6Agbm9uIHB1w7IgZXNzZXJlIGVsaW1pbmF0YSBwb2ljaMOpIMOoIGFzc29jaWF0YSBjb21lIG9iYmxpZ2F0b3JpYSBvIG5hc2Nvc3RhIGFkIHVubyBvIHBpw7kgZ3J1cHBpIGRpIHV0ZW50aS4gIFNvbG8gcHJvcHJpZXTDoCBmYWNvbHRhdGl2ZS9kaXNhdHRpdmF0ZSBwb3Nzb25vIGVzc2VyZSBlbGltaW5hdGUuJzsKJGxhbmdbJ3RpdGxlX2FkZF91c2VyJ10gPSAnQ3JlYSB1biBudW92byBhY2NvdW50IHV0ZW50ZSc7CiRsYW5nWydpbmZvX3Bhc3N3b3JkX3Jlc2V0J10gPSAnTGEgdHVhIHBhc3N3b3JkIMOoIHN0YXRhIHJlaW1wb3N0YXRhIGNvbiBzdWNjZXNzby4gIFBlciBmYXZvcmUgZWZmZXR0dWEgaWwgbG9naW4gcGVyIGNvbnRpbnVhcmUuJzsKJGxhbmdbJ2Vycm9yX3Bhc3N3b3Jkbm90Y2hhbmdlZCddID0gJ1BlciBmYXZvcmUgYXNzaWN1cmF0aSBkaSBjYW1iaWFyZSBsYSB0dWEgcGFzc3dvcmQgYWQgdW4gbnVvdm8gdmFsb3JlIGUgdmVyaWZpY2EgY2hlIHNpYSBjb3JyZXR0YSc7CiRsYW5nWydtc2dfZm9yY2VfbmV3cHcnXSA9ICdCZW52ZW51dG8gbmVsIHNpc3RlbWEuICBQZXIgbW90aXZpIGRpIHNpY3VyZXp6YSwgcGVyIGZhdm9yZSBpbmRpY2EgdW5hIG51b3ZhIHBhc3N3b3JkLic7CiRsYW5nWydsYmxfdGVtcGxhdGUnXSA9ICdNb2RlbGxvJzsKJGxhbmdbJ2luZm9fZm9yY2VfbmV3cHdfdGVtcGxhdGUnXSA9ICdRdWVzdG8gbW9kZWxsbyB2aWVuZSB1c2F0byBwZXIgbW9zdHJhcmUgaWwgbW9kdWxvIGNoZSBmb3J6YSBsXCd1dGVudGUgYSBjYW1iaWFyZSBsYSBwcm9wcmlhIHBhc3N3b3JkLic7CiRsYW5nWydmb3JjZV9uZXdwd190ZW1wbGF0ZSddID0gJ01vZGVsbG8gcGVyIGZvcnphcmUgbnVvdmEgcGFzc3dvcmQnOwokbGFuZ1sncHJvbXB0X2ZvcmNlX25ld3B3J10gPSAnRm9yemEgcXVlc3RvIHV0ZW50ZSBhbCBjYW1iaW8gZGVsbGEgcGFzc3dvcmQgYWwgcHJvc3NpbW8gbG9naW4nOwokbGFuZ1sncHJvbXB0X2Rpc2FibGVkJ10gPSAnUXVlc3RvIGFjY291bnQgw6ggZGlzYWJpbGl0YXRvPyc7CiRsYW5nWydtc2dfdXNlcl9zdGF0ZV9jaGFuZ2VkJ10gPSAnU3RhdG8gdXRlbnRlIG1vZGlmaWNhdG8nOwokbGFuZ1snaW5mb19kaXNhYmxlZCddID0gJ1F1ZXN0byBhY2NvdW50IHV0ZW50ZSDDqCBkaXNhYmlsaXRhdG8sIGxvZ2luIG5vbiBjb25zZW50aXRvJzsKJGxhbmdbJ2VuYWJsZV91c2VyJ10gPSAnQWJpbGl0YSBxdWVzdG8gYWNjb3VudCB1dGVudGUnOwokbGFuZ1snZGlzYWJsZV91c2VyJ10gPSAnRGlzYWJpbGl0YSBxdWVzdG8gYWNjb3VudCB1dGVudGUgZWQgYXNzaWN1cmF0aSBjaGUgc2lhIGRpc2Nvbm5lc3NvJzsKJGxhbmdbJ2Vycm9yX2FjY291bnRkaXNhYmxlZCddID0gJ1NwaWFjZW50ZSwgbWEgcXVlc3RvIGFjY291bnQgc2VtYnJhIGVzc2VyZSBzdGF0byBkaXNhYmlsaXRhdG8uICBQZXIgZmF2b3JlIGNvbnRhdHRhcmUgZ2xpIGFtbWluaXN0cmF0b3JpIGRlbCBzaXRvIHBlciByaXNvbHZlcmUgcXVlc3RvIHByb2JsZW1hJzsKJGxhbmdbJ3RpdGxlX2ZvcmdvdHB3J10gPSAnUGFzc3dvcmQgZGltZW50aWNhdGEnOwokbGFuZ1sndmVyaWZ5X2lkZW50aXR5J10gPSAnVmVyaWZpY2EgbGEgdHVhIGlkZW50aXTDoCc7CiRsYW5nWyc0MDNlcnJvciddID0gJ0dlbmVyYSB1biBlcnJvcmUgNDAzJzsKJGxhbmdbJ3Byb21wdF9lbmhhbmNlZHB3J10gPSAnUmljaGllZGkgdW5hIHBhc3N3b3JkIGNvbXBsZXNzYSc7CiRsYW5nWydpbmZvX2VuaGFuY2VkcHcnXSA9ICdTZSBhdHRpdmF0bywgbGUgcGFzc3dvcmQgcmljaGllZGVyYW5ubyBhbG1lbm8gdW4gY2FyYXR0ZXJlIGFsZmFiZXRpY28gbWFpdXNjb2xvIGUgdW5hIGNpZnJhLic7CiRsYW5nWydwcm9tcHRfcHdyZXF1aXJlZGNoYXJzJ10gPSAnUmljaGllZGUgdW5vIGRpIHF1ZXN0aSBjYXJhdHRlcmkgbmVsbGEgcGFzc3dvcmQnOwokbGFuZ1snaW5mb19wd3JlcXVpcmVkY2hhcnMnXSA9ICdTZSBzb25vIGFiaWxpdGF0ZSBwYXNzd29yZCBub24gdnVvdGUgZSBjb21wbGVzc2UsIG5lbGxhIHBhc3N3b3JkIHNhcsOgIHJpY2hpZXN0byBhbG1lbm8gdW5vIGRlaSBjYXJhdHRlcmkgc3BlY2lmaWNhdGkgaW4gYWdnaXVudGEgYWkgcmVxdWlzaXRpIGRlbGxhIHBhc3N3b3JkIGNvbXBsZXNzYS4nOwokbGFuZ1snZXJyb3JfY2FudHNldHByb3BlcnR5dHlwZSddID0gJ05vbiBwb3NzbyBpbXBvc3RhcmUgdW5hIHByb3ByaWV0w6AgZGkgcXVlc3RvIHRpcG8nOwokbGFuZ1snaW5mb19pbXBvcnRfZm9ybWF0J10gPSAnPHA+UGVyIGluZm9ybWF6aW9uaSBzdWwgZm9ybWF0byBkaSBpbXBvcnRhemlvbmUgIGRvdnJlc3RpIGNyZWFyZSB1bm8gbyBkdWUgdXRlbnRpIGNhbXBpb25lICBuZWkgZ3J1cHBpIGRlc2lkZXJhdGkgZWQgZXNwb3J0YXJlIHF1ZWxsZSBpbmZvcm1hemlvbmkuICBJbCBmaWxlIGNoZSBuZSByaXN1bHRlcsOgIHB1w7IgcXVpbmRpIGVzc2VyZSB1c2F0byBjb21lIHVuIG1vZGVsbG8gcGVyIHVsdGVyaW9yaSBpbXBvcnRhemlvbmk8L3A+PGJyLz4NCiA8cD5Jbm9sdHJlLCBwdcOyIGVzc2VyZSBhZ2dpdW50YSB1bmEgY29sb25uYSB0eHRwYXNzd29yZCBhbCBmaWxlIGRpIGltcG9ydGF6aW9uZSBwZXIgZGVmaW5pcmUgKGluIHRlc3RvIHNlbXBsaWNlKSBsYSBwYXNzd29yZCBwZXIgZ2xpIHV0ZW50aS4gIFNlIGxhIGNvbG9ubmEgdHh0cGFzc3dvcmQgw6ggdnVvdGEgcGVyIHVuIHV0ZW50ZSBlc2lzdGVudGUgbGEgc3VhIHBhc3N3b3JkIG5vbiB2aWVuZSB0b2NjYXRhLiAgU2UgcXVlc3RhIGNvbG9ubmEgw6ggdnVvdGEgcGVyIHVuIG51b3ZvIHV0ZW50ZSwgbyBub24gZm9ybml0YSBkZWwgdHV0dG8sIHZpZW5lIHVzYXRhIGxhIHBhc3N3b3JkIGNvZGlmaWNhdGEgICJjaGFuZ2VtZSIuJzsKJGxhbmdbJ2ltcG9ydF9kZWxldGVkdXNlciddID0gJ0VsaW1pbmF0byB1dGVudGUgICVzJzsKJGxhbmdbJ2Vycm9yX2V4cG9ydF9ub3VzZXJzJ10gPSAnTm9uIHNvbm8gc3RhdGkgdHJvdmF0aSB1dGVudGkgZGEgZXNwb3J0YXJlJzsKJGxhbmdbJ3Byb21wdF9leHBvcnRfdXNlcnMnXSA9ICdFc3BvcnRhIHV0ZW50aSc7CiRsYW5nWyd0aXRsZV9leHBvcnRfdXNlcnMnXSA9ICdFc3BvcnRhIGdsaSB1dGVudGkgaW4gdW4gZmlsZSBBU0NJSSc7CiRsYW5nWydpbmZvX2VuY3J5cHQnXSA9ICdMZSBwcm9wcmlldMOgIGNyaXB0YXRlIG5vbiBwb3Nzb25vIGVzc2VyZSBlc3BvcnRhdGUgaW4gQVNDSUkgbyB2aXN1YWxpenphdGUgZGEgdW4gYW1taW5pc3RyYXRvcmUuIFBvc3Nvbm8gZXNzZXJlIG1vZGlmaWNhdGUgc29sbyBkYWxsXCd1dGVudGUgYXV0b3JpenphdG8nOwokbGFuZ1snZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJ10gPSAnTm9tZSBkZWwgZ3J1cHBvIHNwZWNpZmljYXRvIG5vbiB2YWxpZG8gbyB2dW90byc7CiRsYW5nWydlcnJvcl9pbXBvcnRfY29sdW1uY291bnQnXSA9ICdDb250ZWdnaW8gZGVsbGUgY29sb25uZSBlcnJhdG8nOwokbGFuZ1sncHJvbXB0X2RlbGltaXRlciddID0gJ0RlbGltaXRhdG9yZSc7CiRsYW5nWydlcnJvcl9jcmVhdGV0bXBmaWxlJ10gPSAnUHJvYmxlbWEgZHVyYW50ZSBsYSBjcmVhemlvbmUgZGVsIGZpbGUgdGVtcG9yYW5lbyc7CiRsYW5nWydwcm9tcHRfZGVsZXRlX3VzZXJzJ10gPSAnRWxpbWluYSB1dGVudGkgZXh0cmEnOwokbGFuZ1snaW5mb19pbXBvcnRfZGVsZXRlX3VzZXJzJ10gPSAnU2UgYXR0aXZhdG8gZSBzb2xvIDxzdHJvbmc+dW4gZ3J1cHBvIGRpIHV0ZW50aTwvc3Ryb25nPiB2aWVuZSBpbmRpY2F0byBuZWwgZmlsZSBkaSBpbXBvcnRhemlvbmUsIGdsaSB1dGVudGkgY2hlIGZhbm5vIHBhcnRlIGRpIHF1ZWwgZ3J1cHBvIGRpIHV0ZW50aSBtYSBub24gaW5kaWNhdGkgbmVsIGZpbGUgZGkgaW1wb3J0YXppb25lLCB2ZXJyYW5ubyBlbGltaW5hdGkuICBFXCcgbmVjZXNzYXJpbyBlc3NlcmUgY2F1dGkgaW4gcXVlc3RvIGZyYW5nZW50ZSBwb2ljaMOpIG5vbiB2ZW5nb25vIGVmZmV0dHVhdGkgY29udHJvbGxpIHBlciB2ZWRlcmUgc2UgZ2xpIHV0ZW50aSBlbGltaW5hdGkgc29ubyBtZW1icmkgZGkgcXVhbHNpYXNpIGFsdHJvIGdydXBwby4nOwokbGFuZ1sndGl0bGVfaW1wb3J0X3VzZXJzJ10gPSAnSW1wb3J0YSB1dGVudGkgZGEgdW4gZmlsZSBkaSB0aXBvIENTVic7CiRsYW5nWydmcm9udGVuZF9hY2Nlc3MnXSA9ICdWaWV3ZXJzJzsKJGxhbmdbJ2Vycm9yX2xvc3R1bl9ub2NvbnRyb2xzJ10gPSAnSW1wb3NzaWJpbGUgdmlzdWFsaXp6YXJlIGlsIG1vZHVsbyBkZWwgbm9tZSB1dGVudGUgc21hcnJpdG8uLi4gTm9uIMOoIHN0YXRvIHRyb3ZhdG8gbmVzc3VuIGNhbXBvIGFkYXR0byBkYSB2aXN1YWxpenphcmUnOwokbGFuZ1snaW5mb19maWx0ZXJfc29ydGJ5J10gPSAnPHN0cm9uZz5Ob3RhOjwvc3Ryb25nPiBMXCdvcmRpbmFtZW50byBkZWxsZSBjb2xvbm5lIGZvcm5pcsOgIHVuIG9yZGluYW1lbnRvIGFnZ2l1bnRpdm8gc3VnbGkgZWxlbWVudGkgY2hlIGNvcnJpc3BvbmRvbm8nOwokbGFuZ1snYW55J10gPSAnUXVhbHNpYXNpJzsKJGxhbmdbJ3NvcnRieV91c2VybmFtZV9hc2MnXSA9ICdOb21lIHV0ZW50ZSAoY3Jlc2NlbnRlKSc7CiRsYW5nWydzb3J0YnlfdXNlcm5hbWVfZGVzYyddID0gJ05vbWUgdXRlbnRlIChkZWNyZXNjZW50ZSknOwokbGFuZ1snc29ydGJ5X2NyZWF0ZV9hc2MnXSA9ICdEYXRhIGRpIGNyZWF6aW9uZSAoY3Jlc2NlbnRlKSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2Rlc2MnXSA9ICdEYXRhIGRpIGNyZWF6aW9uZSAoZGVjcmVzY2VudGUpJzsKJGxhbmdbJ3NvcnRieV9leHBpcmVzX2FzYyddID0gJ0RhdGEgZGkgc2NhZGVuemEgKGNyZXNjZW50ZSknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfZGVzYyddID0gJ0RhdGEgZGkgc2NhZGVuemEgKGRlY3Jlc2NlbnRlKSc7CiRsYW5nWydpbXBvcnRfZnJvbV9mZXUnXSA9ICdJbXBvcnRhIGRhIEZyb250IEVuZCBVc2Vycyc7CiRsYW5nWydpbmZvX2ltcG9ydF9mcm9tX2ZldSddID0gJ8OIIHN0YXRvIHJpbGV2YXRvIGlsIG1vZHVsbyBGcm9udEVuZFVzZXJzLiBDacOyIHNpZ25pZmljYSBjaGUgcHVvaSBwcm92YXJlIGFkIGltcG9ydGFybmUgaSBkYXRpLiBUdXR0aSBpIGRhdGkgdHJhbm5lIGkgbW9kZWxsaSBlIGxlIGF1dG9yaXp6YXppb25pIGRpIGJhY2stZW5kIHZlcnJhbm5vIGNvcGlhdGkuIEluIGNhc28gZGkgZXJyb3JlIE1BTVMgcHJvdmVyw6AgYSByaXByaXN0aW5hcmUgbGUgc3VlIHRhYmVsbGUgZGIgcHJlY2VkZW50aS4nOwokbGFuZ1snY29uZmlybV9pbXBvcnRfZnJvbV9mZXUnXSA9ICdTZWkgc2ljdXJvPyBRdWVzdGEgYXppb25lIHB1w7IgZWxpbWluYXJlIGkgcmVjb3JkIGRlbGxhIHRhYmVsbGEgTUFNUyBjb3JyZW50ZSEnOwokbGFuZ1snaW1wb3J0J10gPSAnSW1wb3J0YSc7CiRsYW5nWydpbmZvX2VuY3J5cHRlZCddID0gJ0xlIHByb3ByaWV0w6AgY3JpcHRhdGUgcG9zc29ubyBlc3NlcmUgdmlzdWFsaXp6YXRlIGUgbW9kaWZpY2F0ZSBzb2xvIGRhbGxcJ3V0ZW50ZS4gTmVtbWVubyBsXCdhbW1pbmlzdHJhdG9yZSBkZWwgc2l0byBwdcOyIHZlZGVyZSBvIGdlc3RpcmUgcXVlc3RpIGRhdGkuJzsKJGxhbmdbJ2VuY3J5cHRlZCddID0gJ0NyaXB0YXRvJzsKJGxhbmdbJ2luZm9fY29va2llbmFtZSddID0gJ1NlIGltcG9zdGF0bywgbGEgZnVuemlvbmFsaXTDoCAicmVtZW1iZXIgbWUiIHZlcnLDoCBhdHRpdmF0YS4gIENpw7IgYXNzb21pZ2xpYSBhbGxhIGZ1bnppb25hbGl0w6AgY29va2llIGtlZXBhbGl2ZSwgbWEgZHVyYSBmaW5vIGEgc2Vzc2FudGEgZ2lvcm5pLiBQZXIgaW52YWxpZGFyZSB0dXR0aSBpIGNvb2tpZSByZW1lbWJlcm1lIGVzaXN0ZW50aSwgY2FtYmlhIHF1ZXN0byBub21lIGRpIGNvb2tpZS4gUGVyIGRpc2FiaWxpdGFyZSBxdWVzdGEgZnVuemlvbmFsaXTDoCwgZG92cmVzdGkgY2FuY2VsbGFyZSBpbCBjb29raWVuYW1lIGUgcG9zc2liaWxtZW50ZSBjYW1iaWFyZSBpbCBtb2RlbGxvIGRlbCBsb2dpbi4nOwokbGFuZ1snbXNnX3VzZXJuYW1lX3JlYWRvbmx5J10gPSAnTFwndXRlbnRlIGRpIGF1dGVudGljYXppb25lIG5vbiBjb25zZW50ZSBkaSBtb2RpZmljYXJlIGlsIG5vbWUgdXRlbnRlIHBlciBxdWVzdG8gYWNjb3VudCc7CiRsYW5nWydtc2dfcGFzc3dvcmRfcmVhZG9ubHknXSA9ICdMXCd1dGVudGUgZGVsbFwnYXV0ZW50aWNhemlvbmUgbm9uIGNvbnNlbnRlIGRpIG1vZGlmaWNhcmUgbGEgcGFzc3dvcmQgcGVyIHF1ZXN0byBhY2NvdW50JzsKJGxhbmdbJ3Byb21wdF9ub3JtYWxsb2dpbiddID0gJ1JlZ2lzdHJhemlvbmUnOwokbGFuZ1snbW92ZV91cCddID0gJ1Nwb3N0YSBzdSc7CiRsYW5nWydtb3ZlX2Rvd24nXSA9ICdTcG9zdGEgZ2nDuSc7CiRsYW5nWyd0aXRsZV9wcm9wbW9kdWxlJ10gPSAnUXVlc3RhIHByb3ByaWV0w6AgdmllbmUgY3JlYXRhIGRhIHVuIG1vZHVsbyBlIG5vbiBwdcOyIGVzc2VyZSBtb2RpZmljYXRhJzsKJGxhbmdbJ25vdF9hdmFpbGFibGUnXSA9ICdOb24gZGlzcG9uaWJpbGUnOwokbGFuZ1sncHJvbXB0X2RmbHRfY2hlY2tlZCddID0gJ1BlciBpbXBvc3RhemlvbmUgcHJlZGVmaW5pdGEsIHF1ZXN0byBjYW1wbyBkb3ZyZWJiZSBlc3NlcmUgc2VsZXppb25hdG8nOwokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlZCddID0gJ09wZXJhemlvbmUgY29tcGxldGF0YSc7CiRsYW5nWydtZW1iZXJzJ10gPSAnTWVtYnJpJzsKJGxhbmdbJ3ZpZXdfZmlsdGVyJ10gPSAnRmlsdHJvIFZpc3VhbGl6emF6aW9uZSc7CiRsYW5nWydkYXRhJ10gPSAnRGF0aSc7CiRsYW5nWydhcHBsaWVkJ10gPSAnQXBwbGljYXRvJzsKJGxhbmdbJ2ZpcnN0cGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZwYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0cGFnZSddID0gJz4nOwokbGFuZ1snbGFzdHBhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlJ10gPSAnUGFnaW5hJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19jaGFuZ2V1c2VybmFtZSddID0gJ0NvbnNlbnRpIGxhIG1vZGlmaWNhIGRlbCBub21lIHV0ZW50ZSc7CiRsYW5nWydpbmZvX2FsbG93X2NoYW5nZXVzZXJuYW1lJ10gPSAnU2UgYWJpbGl0YXRvIGdsaSB1dGVudGkgIHBvdHJhbm5vIG1vZGlmaWNhcmUgaWwgcHJvcHJpbyBub21lIHV0ZW50ZSBpbnNpZW1lIGFkIGFsdHJlIGltcG9zdGF6aW9uaSc7CiRsYW5nWyd0ZW1wbGF0ZV9zYXZlZCddID0gJ01vZGVsbG8gc2FsdmF0byc7CiRsYW5nWyd0ZW1wbGF0ZV9yZXNldGRlZmF1bHRzJ10gPSAnTW9kZWxsbyByaXByaXN0aW5hdG8gYWkgdmFsb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ2xibF9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSc7CiRsYW5nWydsYmxfdGVtcGxhdGVzJ10gPSAnTW9kZWxsaSc7CiRsYW5nWydlbmFibGVfY2FwdGNoYSddID0gJ0FiaWxpdGEgY2FwdGNoYSBuZWwgbW9kdWxvIGRpIGxvZ2luJzsKJGxhbmdbJ2luZm9fZW5hYmxlX2NhcHRjaGEnXSA9ICdTZSBsXCd1dGVudGUgbm9uIGhhIGVmZmV0dHVhdG8gbFwnYWNjZXNzbyBlIGxlIHByZWZlcmVuemUgZGVsIG1vZHVsbyBpbmRpY2FubyBkaSB2aXN1YWxpenphcmUgaWwgbW9kdWxvIGRpIGxvZ2luLCBxdWVzdGEgb3B6aW9uZSBjb250cm9sbGEgc2UgdW4gY2FwdGNoYSB2ZXJyw6AgdmlzdWFsaXp6YXRvIG5lbGxhIHNjaGVybWF0YSBkaSBsb2dpbi4gU2UgY2FwdGNoYSDDqCBkaXNwb25pYmlsZSc7CiRsYW5nWydwYWdldHlwZV91bmF1dGhvcml6ZWQnXSA9ICdOb24gc2VpIGF1dG9yaXp6YXRvIGEgdmlzdWFsaXp6YXJlIHF1ZXN0byBjb250ZW51dG8nOwokbGFuZ1snaW5mb19jb250ZW50cGFnZV9ncm91cGxpc3QnXSA9ICdTcGVjaWZpY2FyZSB1biBlbGVuY28gZGkgZ3J1cHBpIGRpIE1BTVMgY2hlIHBvc3Nvbm8gYXZlcmUgYWNjZXNzbyBhIHF1ZXN0YSBwYWdpbmEuIFNlIHNpIHNlbGV6aW9uYSBuZXNzdW4gZ3J1cHBvIHNpIGNvbnNlbnRpcsOgIGEgcXVhbHNpYXNpIHV0ZW50ZSBjb25uZXNzbyBhIE1BTVMgZGkgdmlzdWFsaXp6YXJlIGxhIHBhZ2luYSc7CiRsYW5nWydwYWdldHlwZV9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkZWxsYSBwYWdpbmEgcHJvdGV0dGEnOwokbGFuZ1sncGFnZXR5cGVfZ3JvdXBzJ10gPSAnR3J1cHBpIGNvbnNlbnRpdGknOwokbGFuZ1snaW5mb19wYWdldHlwZV9ncm91cHMnXSA9ICdTZWxlemlvbmEgaSBncnVwcGkgYSBjdWkgKHBlciBpbXBvc3RhemlvbmUgcHJlZGVmaW5pdGEpIMOoIGNvbnNlbnRpdG8gdmlzdWFsaXp6YXJlIGxlIHBhZ2luZSBwcm90ZXR0ZS4gIFVuIHJlZGF0dG9yZSBjb24gaSBwZXJtZXNzaSAiR2VzdGlzY2kgdHV0dGkgaSBjb250ZW51dGkiIHB1w7Igc292cmFzY3JpdmVybG8gcGVyIG9nbmkgcGFnaW5hJzsKJGxhbmdbJ3BhZ2V0eXBlX2FjdGlvbiddID0gJ0F6aW9uZSBwZXIgYWNjZXNzbyBpbnN1ZmZpY2llbnRlJzsKJGxhbmdbJ2luZm9fcGFnZXR5cGVfYWN0aW9uJ10gPSAnU3BlY2lmaWNhIGlsIGNvbXBvcnRhbWVudG8gcGVyIGxlIHBlcnNvbmUgY2hlIGFjY2Vkb25vIGEgcXVlc3RhIHBhZ2luYSBzZW56YSBhdXRvcml6emF6aW9uaSBzdWZmaWNpZW50aS4gUHVvaSByZWluZGlyaXp6YXJlIGEgdW5hIHBhZ2luYSBzcGVjaWZpY2EgbyB2aXN1YWxpenphcmUgaWwgbW9kdWxvIGRpIGxvZ2luJzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdNb3N0cmEgaWwgbW9kdWxvIGRpIGxvZ2luJzsKJGxhbmdbJ3JlZGlyZWN0J10gPSAnUmVpbmRpcml6emEgYWQgdW5hIHBhZ2luYSc7CiRsYW5nWydwYWdldHlwZV9yZWRpcmVjdHRvJ10gPSAnUmVpbmRpcml6emEgYSc7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX3JlZGlyZWN0dG8nXSA9ICdTcGVjaWZpY2EgbGEgcGFnaW5hIGEgY3VpIHJlaW5kaXJpenphcmUuICBTZSBzZWxlemlvbmkgbmVzc3VuYSBlIGxcJ2F6aW9uZSDDqCBpbXBvc3RhdGEgc3UgInJlaW5kaXJpenphIiBhbGxcJ3V0ZW50ZSB2ZXJyw6AgbW9zdHJhdG8gdW4gbWVzc2FnZ2lvIGNoZSBpbmRpY2EgY2hlIG5vbiBoYSBhY2Nlc3NvIGFsbGEgcGFnaW5hJzsKJGxhbmdbJ3Blcm1pc3Npb25zJ10gPSAnUGVybWVzc2knOwokbGFuZ1snTUFNU1xQcm90ZWN0ZWRQYWdlJ10gPSAnQ29udGVudXRvIHByb3RldHRvIGRpIE1BTVMnOwokbGFuZ1snbWFtc19wcm90ZWN0ZWRfcGFnZSddID0gJ0NvbnRlbnV0byBwcm90ZXR0byBkaSBNQU1TJzsKJGxhbmdbJ3Byb21wdF92aWV3cHJvcHMnXSA9ICdTZWxlemlvbmEgUHJvcHJpZXTDoCBhZ2dpdW50aXZlIGRhIHZpc3VhbGl6emFyZSc7CiRsYW5nWyd2aWV3J10gPSAnVmlzdWFsaXp6YXppb25lJzsKJGxhbmdbJ2luZm9faWdub3JlX3VzZXJpZCddID0gJ1NlIHNlbGV6aW9uYXRhLCBsYSByb3V0aW5lIGRpIGltcG9ydGF6aW9uZSB0ZW50ZXLDoCBkaSBhZ2dpdW5nZXJlIHV0ZW50aSBpbmRpcGVuZGVudGkgZGFsbGEgY29sb25uYSB1c2VyaWQuIFNlIGVzaXN0ZSBnacOgIHVuIHV0ZW50ZSBjb24gaWwgbm9tZSBzcGVjaWZpY2F0byBuZWwgZmlsZSBkaSBpbXBvcnRhemlvbmUsIHZlcnLDoCBnZW5lcmF0byB1biBlcnJvcmUnOwokbGFuZ1snaWdub3JlX3VzZXJpZCddID0gJ0lnbm9yYSBsYSBjb2xvbm5hIFVzZXJJRCBkdXJhbnRlIGxcJ2ltcG9ydGF6aW9uZSc7CiRsYW5nWydleHBvcnRfcGFzc2hhc2gnXSA9ICdFc3BvcnRhIGxcJ2hhc2ggZGVsbGEgcGFzc3dvcmQgbmVsIGZpbGUnOwokbGFuZ1snaW5mb19leHBvcnRfcGFzc2hhc2gnXSA9ICdMXCdoYXNoIGRlbGxhIHBhc3N3b3JkIMOoIHV0aWxlIHNvbG8gc2UgaWwgc2FsdCBkZWxsYSBwYXNzd29yZCBzdWxsXCdob3N0IGRpIGltcG9ydGF6aW9uZSDDqCBpZGVudGljbyBhIHF1ZWxsbyBkZWxsXCdob3N0IGRpIGVzcG9ydGF6aW9uZSc7CiRsYW5nWydlcnJvcl9hZGp1c3RzYWx0J10gPSAnSWwgc2FsdCBkZWxsYSBwYXNzd29yZCBub24gcHXDsiBlc3NlcmUgbW9kaWZpY2F0byc7CiRsYW5nWydwcm9tcHRfcHdzYWx0J10gPSAnU2FsdCBkZWxsYSBwYXNzd29yZCc7CiRsYW5nWydpbmZvX3B3c2FsdCddID0gJ01lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBjcmVhIGkgc2FsdCBkaSB0dXR0ZSBsZSBwYXNzd29yZCBjb24gcXVlc3RhIGNoaWF2ZSBjaGUgdmllbmUgIGNyZWF0YSBhbCBtb21lbnRvIGRlbGxcJ2luc3RhbGxhemlvbmUuICBVbmEgdm9sdGEgY2hlIGdsaSB1dGVudGkgc29ubyBzdGF0aSBhZ2dpdW50aSBhbCBkYXRhYmFzZSBpbCBzYWx0IG5vbiBwdcOyIGVzc2VyZSBjYW1iaWF0by4gSWwgc2FsdCBwb3RyZWJiZSBlc3NlcmUgdnVvdG8gcGVyIGluc3RhbGxhemlvbmkgdmVjY2hpZS4nOwokbGFuZ1snYWR2YW5jZWRfc2V0dGluZ3MnXSA9ICdJbXBvc3RhemlvbmkgYXZhbnphdGUnOwokbGFuZ1snaW5mb19zZXNzaW9udGltZW91dCddID0gJ1NwZWNpZmljYXJlIGlsIG51bWVybyBkaSBzZWNvbmRpIHByaW1hIGNoZSB1biB1dGVudGUgaW5hdHRpdm8gdmVuZ2EgZGlzY29ubmVzc28gYXV0b21hdGljYW1lbnRlIGRhbCBzaXRvJzsKJGxhbmdbJ3Byb21wdF9leHBpcmV1c2Vyc19pbnRlcnZhbCddID0gJ0ludGVydmFsbG8gZGkgc2NhZGVuemEgZGVsbFwndXRlbnRlJzsKJGxhbmdbJ2luZm9fZXhwaXJldXNlcnNfaW50ZXJ2YWwnXSA9ICdTcGVjaWZpY2FyZSB1biB2YWxvcmUgKGluIHNlY29uZGkpIGNoZSBpbmRpY2EgbGEgZnJlcXVlbnphIGNvbiBjdWkgaWwgc2lzdGVtYSBkZXZlIGZvcnphcmUgbGEgZGlzY29ubmVzc2lvbmUgZGVnbGkgdXRlbnRpIGxhIGN1aSBzZXNzaW9uZSDDqCBzY2FkdXRhLiBRdWVzdGEgw6ggdW5cJ290dGltaXp6YXppb25lIHBlciBzYWx2YXJlIGxlIHF1ZXJ5IGRlbCBkYXRhYmFzZS4gU2UgbGFzY2lhdGEgdnVvdGEgbyBpbXBvc3RhdGEgYSAwIGxhIHNjYWRlbnphIHZlcnLDoCBlc2VndWl0YSBzdSBvZ25pIHJpY2hpZXN0YS4nOwokbGFuZ1snbXNnX3NldHRpbmdzY2hhbmdlZCddID0gJ0xlIHR1ZSBpbXBvc3Rhemlvbmkgc29ubyBzdGF0ZSBhZ2dpb3JuYXRlIGNvcnJldHRhbWVudGUnOwokbGFuZ1snZm9yY2VkbG9nb3V0dGFza19kZXNjJ10gPSAnRm9yemEgZ2xpIHV0ZW50aSBhIGRpc2Nvbm5ldHRlcnNpIGEgaW50ZXJ2YWxsaSByZWdvbGFyaSc7CiRsYW5nWydwcm9tcHRfZm9yY2Vsb2dvdXRfdGltZXMnXSA9ICdUZW1waSBwZXIgbGEgZGlzY29ubmVzc2lvbmUgZm9yemF0YSc7CiRsYW5nWydpbmZvX2ZvcmNlbG9nb3V0X3RpbWVzJ10gPSAnU3BlY2lmaWNhcmUgdW4gZWxlbmNvIGRpIHRlbXBpIHNlcGFyYXRpIGRhIHZpcmdvbGUgY29tZSBISDpNTSxISDpNTSBpbiBjdWkgZ2xpIHV0ZW50aSB2ZXJyYW5ubyBkaXNjb25uZXNzaSBpbiBtYW5pZXJhIGZvcnphdGEuIE5vdGEsIHF1ZXN0byB1dGlsaXp6YSBpbCBtZWNjYW5pc21vIHBzdWVkb2Nyb24gcGVydGFudG8gZGV2aSBlc3NlcmUgc2ljdXJvIGNoZSBpIHRlbXBpIHF1aSBpbnNlcml0aSBjb2luY2lkYW5vIHJhZ2lvbmV2b2xtZW50ZSBjb24gbGEgdHVhICJncmFudWxhcml0w6AgcHNldWRvY3JvbiIgZSBjaGUgc2kgdmVyaWZpY2hlcmFubm8gc3VmZmljaWVudGkgcmljaGllc3RlIGFsIHR1byBzaXRvIHdlYiBwZXIgZ2FyYW50aXJlIGNoZSBwc2V1ZG9jcm9uIHNpYSBlc2VndWl0by4nOwokbGFuZ1sncHJvbXB0X2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnXSA9ICdFc2NsdWRpIGdsaSB1dGVudGkgY2hlIHNvbm8gc3RhdGkgYXR0aXZpIHBlciA8ZW0+KG1pbnV0aSk8L2VtPic7CiRsYW5nWydpbmZvX2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnXSA9ICdTZSBzcGVjaWZpY2F0bywgdHV0dGkgZ2xpIHV0ZW50aSBjaGUgc29ubyBzdGF0aSBhdHRpdmkgaW4g4oCL4oCLcXVlc3RvIG51bWVybyBkaSBzZWNvbmRpIG5vbiB2ZXJyYW5ubyBkaXNjb25uZXNzaSBpbiBtYW5pZXJhIGZvcnphdGEnOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGUnXSA9ICdTZWkgc2ljdXJvIGRpIHZvbGVyIGVsaW1pbmFyZSBsXCd1dGVudGUgJXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVleHRlbnNpb24nXSA9ICdJbCBmaWxlIGNhcmljYXRvIG5vbiBjb3JyaXNwb25kZSBhbGxcJ2VsZW5jbyBkZWkgdGlwaSBkaSBmaWxlIGNvbnNlbnRpdGknOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1R1dHRpIGkgZGF0aSBjb2xsZWdhdGkgYWwgbW9kdWxvIE1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBzb25vIHN0YXRpIGVsaW1pbmF0aSc7CiRsYW5nWydpbmZvX2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nXSA9ICdTZSBhYmlsaXRhdGEsIHF1ZXN0byBtb2R1bG8gYXNjb2x0ZXLDoCBnbGkgZXZlbnRpIGRlbGxhIHN1aXRlIEVjb21tZXJjZS4gTGUgc2VndWVudGkgaW1wb3N0YXppb25pIGhhbm5vIGVmZmV0dG8gc29sbyBzZSBxdWVzdGEgaW1wb3N0YXppb25lIMOoIGFiaWxpdGF0YS4nOwokbGFuZ1sncHJvbXB0X2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nXSA9ICdBc2NvbHRhIGdsaSBldmVudGkgZGVsbFwnb3JkaW5lJzsKJGxhbmdbJ2luZm9fcGFpZHJlZ19zZXR0aW5ncyddID0gJ0xlIGltcG9zdGF6aW9uaSBzZWd1ZW50aSBzaSBhcHBsaWNhbm8gc29sbyBzZSBzaSB1c2EgbFwnYXV0b3JlZ2lzdHJhemlvbmUgZSBzaSBjb25zZW50ZSBsYSByZWdpc3RyYXppb25lIGEgcGFnYW1lbnRvJzsKJGxhbmdbJ25vbmUnXSA9ICdOZXNzdW5vJzsKJGxhbmdbJ2RlbGV0ZV91c2VyJ10gPSAnRWxpbWluYSB1dGVudGUnOwokbGFuZ1snZXhwaXJlX3VzZXInXSA9ICdTY2FkZXJlIHV0ZW50ZSc7CiRsYW5nWydwcm9tcHRfYWN0aW9uX29yZGVyY2FuY2VsbGVkJ10gPSAnQXppb25lIGRhIGVzZWd1aXJlIHF1YW5kbyB1biBvcmRpbmUgZGkgc290dG9zY3JpemlvbmUgdmllbmUgYW5udWxsYXRvJzsKJGxhbmdbJ3Byb21wdF9hY3Rpb25fb3JkZXJkZWxldGVkJ10gPSAnQXppb25lIGRhIGVzZWd1aXJlIHF1YW5kbyB1biBvcmRpbmUgZGkgc290dG9zY3JpemlvbmUgdmllbmUgZWxpbWluYXRvJzsKJGxhbmdbJ2Vjb21tZXJjZV9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBFY29tbWVyY2UnOwokbGFuZ1snc2VjdXJlZmllbGRtYXJrZXInXSA9ICdNYXJjYXRvcmUgZGkgY2FtcG8gc2ljdXJvJzsKJGxhbmdbJ3NlY3VyZWZpZWxkY29sb3InXSA9ICdDb2xvcmUgZGkgY2FtcG8gc2ljdXJvJzsKJGxhbmdbJ3Byb21wdF9lbmNyeXB0J10gPSAnQXJjaGl2aWEgcXVlc3RpIGRhdGkgY3JpdHRvZ3JhZmF0aSBuZWwgZGF0YWJhc2UnOwokbGFuZ1snZXJyb3Jfbm90c3VwcG9ydGVkJ10gPSAnTFwnb3B6aW9uZSBwcmVzY2VsdGEgbm9uIMOoIHN1cHBvcnRhdGEgZGF0YSBsYSBjb25maWd1cmF6aW9uZSBjb3JyZW50ZSc7CiRsYW5nWydhdWRpdF91c2VyX2NyZWF0ZWQnXSA9ICdVdGVudGUgY3JlYXRvIGF1dG9tYXRpY2FtZW50ZSc7CiRsYW5nWydpbmZvX2F1dG9fY3JlYXRlX3Vua25vd24nXSA9ICdTZSB1biB1dGVudGUgw6ggYXV0ZW50aWNhdG8gZGEgdW4gbW9kdWxvIGRpIGF1dGVudGljYXppb25lIGVzdGVybm8gbWEgbm9uIMOoIGNvbm9zY2l1dG8gbmVsIG1vZHVsbyBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUsIMOoIG5lY2Vzc2FyaW8gY3JlYXJlIGF1dG9tYXRpY2FtZW50ZSB1biBhY2NvdW50IE1BTVM/JzsKJGxhbmdbJ3Byb21wdF9hdXRvX2NyZWF0ZV91bmtub3duJ10gPSAnQ3JlYSBhdXRvbWF0aWNhbWVudGUgdXRlbnRpIHNjb25vc2NpdXRpJzsKJGxhbmdbJ2Rpc3BsYXlfc2V0dGluZ3MnXSA9ICdNb3N0cmEgaW1wb3N0YXppb25pJzsKJGxhbmdbJ2luZm9fc3RkX2F1dGhfc2V0dGluZ3MnXSA9ICdMZSBpbXBvc3Rhemlvbmkgc2VndWVudGkgc29ubyBhcHBsaWNhYmlsaSBzb2xvIHNlIHNpIHVzYSAiQXV0ZW50aWNhemlvbmUgaW5jb3Jwb3JhdGEiLic7CiRsYW5nWydpbmZvX3N1cHBvcnRfbG9zdHVuJ10gPSAnU2VsZXppb25hbmRvIE5vIHNpIGRpc2FiaWxpdGEgbGEgcG9zc2liaWxpdMOgIHBlciB1biB1dGVudGUgZGkgcmljaGllZGVyZSBsZSBpbmZvcm1hemlvbmkgZGkgYWNjZXNzbyBwZXJzZSwgaW5kaXBlbmRlbnRlbWVudGUgZGEgYWx0cmUgaW1wb3N0YXppb25pJzsKJGxhbmdbJ2luZm9fc3VwcG9ydF9sb3N0cHcnXSA9ICdTZWxlemlvbmFuZG8gTm8gc2kgZGlzYWJpbGl0YSBsYSBwb3NzaWJpbGl0w6AgcGVyIHVuIHV0ZW50ZSBkaSByZWltcG9zdGFyZSBsYSBwYXNzd29yZCwgaW5kaXBlbmRlbnRlbWVudGUgZGEgYWx0cmUgaW1wb3N0YXppb25pJzsKJGxhbmdbJ3Byb21wdF9zdXBwb3J0X2xvc3R1biddID0gJ0NvbnNlbnRpIGFnbGkgdXRlbnRpIGRpIHJpY2hpZWRlcmUgaWwgcHJvcHJpbyBub21lIHV0ZW50ZSc7CiRsYW5nWydwcm9tcHRfc3VwcG9ydF9sb3N0cHcnXSA9ICdDb25zZW50aSBhZ2xpIHV0ZW50aSBkaSByaWNoaWVkZXJlIHVuIGNhbWJpbyBkZWxsYSBwYXNzd29yZCc7CiRsYW5nWydhdXRoX3NldHRpbmdzJ10gPSAnSW1wb3N0YXppb25pIGRpIGF1dGVudGljYXppb25lJzsKJGxhbmdbJ2F1dGhlbnRpY2F0aW9uJ10gPSAnQXV0ZW50aWNhemlvbmUgaW5jb3Jwb3JhdGEnOwokbGFuZ1snYXV0aF9idWlsdGluJ10gPSAnQXV0ZW50aWNhemlvbmUgc3RhbmRhcmQgZGkgTUFNUyc7CiRsYW5nWydhdXRoX21vZHVsZSddID0gJ01vZHVsby9tZXRvZG8gZGkgYXV0ZW50aWNhemlvbmUnOwokbGFuZ1snaW5mb19hdXRoX21vZHVsZSddID0gJ0lsIG1vZHVsbyBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUgc3VwcG9ydGEgbFwndXRpbGl6em8gZGkgbWV0b2RpIGRpIGF1dGVudGljYXppb25lIGFsdGVybmF0aXZpLCBjb24gY2FwYWNpdMOgIHZhcmlhYmlsaS4gQWxjdW5lIGZ1bnppb25hbGl0w6Agbm9uIGZ1bnppb25lcmFubm8gbyBzYXJhbm5vIGRpc2FiaWxpdGF0ZSBxdWFuZG8gbm9uIHNpIHV0aWxpenphIGlsIG1ldG9kbyBkaSBhdXRlbnRpY2F6aW9uZSBpbnRlZ3JhdG8nOwokbGFuZ1snZXJyb3JfdXNlcl9ub251bmlxdWVfZmllbGRfdmFsdWUnXSA9ICdJbCB2YWxvcmUgc3BlY2lmaWNhdG8gcGVyICVzIMOoIGdpw6AgaW4gdXNvIGRhIHBhcnRlIGRpIGFsdHJvIHV0ZW50ZSc7CiRsYW5nWyd1bmlxdWUnXSA9ICdVbml2b2NvJzsKJGxhbmdbJ2Vycm9yX25vbnVuaXF1ZV9maWVsZF92YWx1ZSddID0gJ0lsIHZhbG9yZSBzcGVjaWZpY2F0byBwZXIgJXMgKCVzKSBub24gw6ggdW5pdm9jbyc7CiRsYW5nWydwcm9tcHRfZm9yY2VfdW5pcXVlJ10gPSAnRm9yemEgaSB2YWxvcmkgZGkgcXVlc3RhIHByb3ByaWV0w6AgaW4gbW9kbyBjaGUgc2lhbm8gdW5pdm9jaSBpbiB0dXR0aSBnbGkgYWNjb3VudCB1dGVudGUnOwokbGFuZ1snaGVscF9yZXR1cm50byddID0gJ1V0aWxpenphdG8gY29uIGkgbW9kdWxpIGRpIGFjY2Vzc28gZSBkaXNjb25uZXNzaW9uZSwgcXVlc3RvIHBhcmFtZXRybyBpbmRpY2EgdW4gSUQgcGFnaW5hIG8gdW4gYWxpYXMgYSBjdWkgbFwndXRlbnRlIGRldmUgZXNzZXJlIHJlaW5kaXJpenphdG8gYWwgdGVybWluZSBkZWxsXCdvcGVyYXppb25lLiBRdWVzdG8gc292cmFzY3JpdmVyw6AgaWwgcmV0dXJubGFzdCBlIGxlIHByZWZlcmVuemUgZGkgcmVpbmRpcml6emFtZW50by4nOwokbGFuZ1snaGVscF9pbmxpbmUnXSA9ICdVdGlsaXp6YXRvIGNvbiBpIG1vZHVsaS9hemlvbmUgZGkgYWNjZXNzbywgcXVlc3RvIHBhcmFtZXRybyBpbmRpY2EgY2hlIGlsIHJpc3VsdGF0byBkZWwgbW9kdWxvIGRldmUgc29zdGl0dWlyZSBpbCBwcm9wcmlvIHRhZyBzdWxsYSBzdGVzc2EgcGFnaW5hLi4uIGNpw7Igbm9uIGF2csOgIGFsY3VuIGVmZmV0dG8gc2UgdmVuZ29ubyBpbXBvc3RhdGUgcmV0dXJudG8sIHJldHVybmxhc3QgbyBhbGN1bmUgcHJlZmVyZW56ZSBkaSByZWluZGlyaXp6YW1lbnRvIHJpc3VsdGFuZG8gaW4gdW4gcmVpbmRpcml6emFtZW50byBhIHVuYSBwYWdpbmEgZGl2ZXJzYS4nOwokbGFuZ1sndGl0bGVfcmVzZXRfc2Vzc2lvbiddID0gJ0F2dmlzbyBkaSB0aW1lb3V0IGRlbGxhIHNlc3Npb25lIGRpIGFjY2Vzc28nOwokbGFuZ1snbXNnX3Jlc2V0X3Nlc3Npb24nXSA9ICdMYSB0dWEgc2Vzc2lvbmUgZGkgYWNjZXNzbyBzdGEgcGVyIHNjYWRlcmUsIHBlciBmYXZvcmUgY2xpY2thICIiT2siIHBlciBjb25mZXJtYXJlIGxhIHR1YSBhdHRpdml0w6Agc3UgcXVlc3RvIHNpdG8uJzsKJGxhbmdbJ29rJ10gPSAnT2snOwokbGFuZ1sncmVzZXRzZXNzaW9uX3RlbXBsYXRlJ10gPSAnUmVpbXBvc3RhIG1vZGVsbG8gZGkgc2Vzc2lvbmUnOwokbGFuZ1snaW5mb19uYW1lJ10gPSAnUXVlc3RvIMOoIGlsIG5vbWUgZGVsIGNhbXBvLCBkYSB1dGlsaXp6YXJlIHBlciBsXCdpbmRpcml6emFtZW50byBpbiBzbWFydHkuIERldmUgZXNzZXJlIGNvbXBvc3RvIHNvbG8gZGEgY2FyYXR0ZXJpIGFsZmFudW1lcmljaSBlIHRyYXR0aW5pIGJhc3NpLic7CiRsYW5nWyd2aXNpdG9yc190YWInXSA9ICdWaXNpdGF0b3JpJzsKJGxhbmdbJ21hbXNfZ3JvdXBzX3Byb21wdCddID0gJ1NlbGV6aW9uYSB1bm8gbyBwacO5IGdydXBwaSBNQU1TIGF1dG9yaXp6YXRpIGEgdmlzdWFsaXp6YXJlIHF1ZXN0YSBwYWdpbmEnOwokbGFuZ1snZXJyb3JfbXVzdHNlbGVjdF9ncm91cCddID0gJ0Jpc29nbmEgc2VsZXppb25hcmUgdW4gZ3J1cHBvJzsKJGxhbmdbJ3NlbGVjdG9uZSddID0gJ1NlbGV6aW9uYSB1bm8nOwokbGFuZ1snc3RhcnRfeWVhciddID0gJ0Fubm8gZGkgaW5pemlvJzsKJGxhbmdbJ2VuZF95ZWFyJ10gPSAnQW5ubyBkaSBmaW5lJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ3Byb21wdF90aHVtYm5haWxfc2l6ZSddID0gJ0RpbWVuc2lvbmUgbWluaWF0dXJhJzsKJGxhbmdbJ09uVXBkYXRlR3JvdXAnXSA9ICdTdSBHcnVwcG8gVXRlbnRpIE1vZGlmaWNhdG8nOwokbGFuZ1snZXJyb3JfdG9vbWFueXNlbGVjdGVkJ10gPSAnVHJvcHBpIHV0ZW50aSBzZWxlemlvbmF0aSBwZXIgb3BlcmF6aW9uaSBpbiBibG9jY28uLi4gUmlkdWNpbG8gYSAyNTAgbyBtZW5vJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gPSAnU2VpIHNpY3VybyBkaSB2b2xlciBlbGltaW5hcmUgZ2xpIHV0ZW50aSBzZWxlemlvbmF0aT8nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRWxpbWluYSBzZWxlemlvbmF0aSc7CiRsYW5nWydwcm9tcHRfcmFuZG9tdXNlcm5hbWUnXSA9ICdHZW5lcmEgdW4gbm9tZSB1dGVudGUgY2FzdWFsZSBxdWFuZG8gYWdnaXVuZ2kgbnVvdmkgdXRlbnRpJzsKJGxhbmdbJ21vbnRocyddID0gJ21lc2knOwokbGFuZ1sncHJvbXB0X2V4cGlyZWFnZSddID0gJ1BlcmlvZG8gZGkgc2NhZGVuemEgdXRlbnRlIHByZWRlZmluaXRvJzsKJGxhbmdbJ25vdGlmaWNhdGlvbl9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBub3RpZmljaGUnOwokbGFuZ1sncHJvcGVydHlfc2V0dGluZ3MnXSA9ICdJbXBvc3RhemlvbmkgcHJvcHJpZXTDoCc7CiRsYW5nWydyZWRpcmVjdGlvbl9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSByZWluZGlyaXp6YW1lbnRvJzsKJGxhbmdbJ2dlbmVyYWxfc2V0dGluZ3MnXSA9ICdJbXBvc3RhemlvbmkgZ2VuZXJhbGknOwokbGFuZ1snc2Vzc2lvbl9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBzZXNzaW9uZSBlIGNvb2tpZSc7CiRsYW5nWydmaWVsZF9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBjYW1wbyc7CiRsYW5nWydwcm9wX3RleHRhcmVhX3d5c2l3eWcnXSA9ICdDb25zZW50aSBsXCd1c28gZGkgd3lzaXd5ZyBpbiBxdWVzdFwnYXJlYSBkaSB0ZXN0byc7CiRsYW5nWydlZGl0aW5nX3VzZXInXSA9ICdNb2RpZmljYSB1dGVudGUnOwokbGFuZ1snbm9pbmxpbmUnXSA9ICdOb24gbW9kdWxpIGluIGxpbmVhJzsKJGxhbmdbJ2luZm9fbG9zdHVuJ10gPSAnQ2xpY2NhIHF1aSBzZSBub24gcmljb3JkaSBpIHR1b2kgZGF0aSBkaSBhY2Nlc3NvJzsKJGxhbmdbJ2luZm9fZm9yZ290cHcnXSA9ICdDbGljY2EgcXVpIHNlIG5vbiByaWNvcmRpIGxhIHR1YSBwYXNzd29yZCc7CiRsYW5nWydpbmZvX2xvZ291dCddID0gJ0NsaWNjYSBxdWkgcGVyIHVzY2lyZSc7CiRsYW5nWydpbmZvX2NoYW5nZXNldHRpbmdzJ10gPSAnQ2xpY2NhIHF1aSBwZXIgbW9kaWZpY2FyZSBsYSB0dWEgcGFzc3dvcmQgbyBhbHRyZSBpbmZvcm1hemlvbmknOwokbGFuZ1sndmlld3VzZXJfdGVtcGxhdGUnXSA9ICdWaXN1YWxpenphIG1vZGVsbG8gdXRlbnRlJzsKJGxhbmdbJ2V2ZW50J10gPSAnRXZlbnRvJzsKJGxhbmdbJ21hbXNfZXZlbnRfbm90aWZpY2F0aW9uJ10gPSAnTm90aWZpY2EgZGkgZXZlbnRvIE1BTVMnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbl9hZGRyZXNzJ10gPSAnSW5kaXJpenpvIGUtbWFpbCBkaSBub3RpZmljYSc7CiRsYW5nWydwcm9tcHRfbm90aWZpY2F0aW9uX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBlLW1haWwgZGkgbm90aWZpY2EnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbl9zdWJqZWN0J10gPSAnT2dnZXR0byBkZWxsXCdlLW1haWwgZGkgbm90aWZpY2EnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbnMnXSA9ICdub3RpZmljaGUgZS1tYWlsJzsKJGxhbmdbJ09uTG9naW4nXSA9ICdBbCBsb2dpbic7CiRsYW5nWydPbkxvZ291dCddID0gJ0FsIGxvZ291dCc7CiRsYW5nWydPbkV4cGlyZVVzZXInXSA9ICdBbGxhIHNjYWRlbnphIGRlbGxhIHNlc3Npb25lJzsKJGxhbmdbJ09uQ3JlYXRlVXNlciddID0gJ0FsbGEgY3JlYXppb25lIGRpIHVuIG51b3ZvIHV0ZW50ZSc7CiRsYW5nWydPbkRlbGV0ZVVzZXInXSA9ICdBbGxhIGNhbmNlbGxhemlvbmUgdXRlbnRlJzsKJGxhbmdbJ09uVXBkYXRlVXNlciddID0gJ0FsbGEgbW9kaWZpY2EgZGVsbGUgaW1wb3N0YXppb25pIHV0ZW50ZSc7CiRsYW5nWydPbkNyZWF0ZUdyb3VwJ10gPSAnQWxsYSBjcmVhemlvbmUgZGkgZ3J1cHBvIHV0ZW50aSc7CiRsYW5nWydPbkRlbGV0ZUdyb3VwJ10gPSAnQWxsYSBjYW5jZWxsYXppb25lIGRpIHVuIGdydXBwbyB1dGVudGknOwokbGFuZ1snbG9zdHVuY29uZmlybV9wcmVtc2cnXSA9ICdXb290ISBUaSBhYmJpYW1vIHRyb3ZhdG8hLiBHcmF6aWUgYWkgZGV0dGFnbGkgY2hlIGhhaSBpbnNlcml0bywgc2lhbW8gc3RhdGkgaW4gZ3JhZG8gZGkgdHJvdmFyZSBpbCB0dW8gKGUgc29sbyBpbCB0dW8pIG5vbWUgZGkgYWNjZXNzby4nOwokbGFuZ1sneW91cl91c2VybmFtZV9pcyddID0gJ0lsIHR1byBub21lIHV0ZW50ZSDDqCc7CiRsYW5nWydsb3N0dW5jb25maXJtX3Bvc3Rtc2cnXSA9ICdUaSBjb25zaWdsaWFtbyBkaSByZWdpc3RyYXJlIHF1ZXN0ZSBpbmZvcm1hemlvbmkgaW4gdW4gbHVvZ28gc2ljdXJvLCBtYSByZWN1cGVyYWJpbGUuJzsKJGxhbmdbJ3Byb21wdF9hZnRlcl9jaGFuZ2Vfc2V0dGluZ3MnXSA9ICdQYWdlSUQvQWxpYXMg4oCL4oCLYSBjdWkgcGFzc2FyZSBkb3BvIGF2ZXIgbW9kaWZpY2F0byBsZSBpbXBvc3RhemlvbmknOwokbGFuZ1sncHJvbXB0X2FmdGVyX3ZlcmlmeV9jb2RlJ10gPSAnUGFnZUlEL0FsaWFzIOKAi+KAi2EgY3VpIHBhc3NhcmUgZG9wbyBsYSB2ZXJpZmljYSBkZWwgY29kaWNlIConOwokbGFuZ1snbG9zdHVuX2RldGFpbHNfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIGRldHRhZ2xpIGRlbCBub21lIHV0ZW50ZSBzbWFycml0byc7CiRsYW5nWydsb3N0dW5fY29uZmlybV90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGkgY29uZmVybWEgZGVsIG5vbWUgdXRlbnRlIHNtYXJyaXRvJzsKJGxhbmdbJ2Vycm9yX25vbnVuaXF1ZW1hdGNoJ10gPSAnRXJyb3JlOiBwacO5IGRpIHVuIGFjY291bnQgdXRlbnRlIGNvcnJpc3BvbmRlIGFsbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2F0ZSc7CiRsYW5nWydlcnJvcl9jYW50ZmluZHVzZXInXSA9ICdFcnJvcmU6IGltcG9zc2liaWxlIHRyb3ZhcmUgdW4gdXRlbnRlIGNoZSBjb3JyaXNwb25kYSc7CiRsYW5nWydlcnJvcl9ncm91cG5vdGZvdW5kJ10gPSAnRXJyb3JlOiBpbXBvc3NpYmlsZSB0cm92YXJlIHVuIGdydXBwbyBjb24gcXVlbCBub21lJzsKJGxhbmdbJ3JlYWRvbmx5J10gPSAnU29sYSBsZXR0dXJhJzsKJGxhbmdbJ3Byb21wdF91c2VybWFuaXB1bGF0b3InXSA9ICdDbGFzc2UgbWFuaXBvbGF0b3JlIHV0ZW50ZSc7CiRsYW5nWydhZG1pbl9sb2dvdXQnXSA9ICdEaXNjb25uZXNzbyBkYWxsXCdhbW1pbmlzdHJhdG9yZSc7CiRsYW5nWydwcm9tcHRfbG9nZ2VkaW5vbmx5J10gPSAnTW9zdHJhIHNvbG8gdXRlbnRpIGNoZSBoYW5ubyBlZmZldHR1YXRvIGxcJ2FjY2Vzc28nOwokbGFuZ1sncHJvbXB0X2xvZ291dCddID0gJ0Rpc2Nvbm5ldHRpIHF1ZXN0byB1dGVudGUnOwokbGFuZ1sndXNlcl9wcm9wZXJ0aWVzJ10gPSAnUHJvcHJpZXTDoCB1dGVudGUnOwokbGFuZ1sndXNlcmhpc3RvcnknXSA9ICdDcm9ub2xvZ2lhIHV0ZW50ZSc7CiRsYW5nWydleHBvcnQnXSA9ICdFc3BvcnRhJzsKJGxhbmdbJ2NsZWFyJ10gPSAnQ2FuY2VsbGEnOwokbGFuZ1sncHJvbXB0X2V4cG9ydHVzZXJoaXN0b3J5J10gPSAnRXNwb3J0YSBsYSBjcm9ub2xvZ2lhIHV0ZW50ZSBpbiBBU0NJSSBjaGUgYWJiaWEgYWxtZW5vJzsKJGxhbmdbJ3Byb21wdF9jbGVhcnVzZXJoaXN0b3J5J10gPSAnQ2FuY2VsbGEgaSByZWNvcmQgZGVsbGEgY3Jvbm9sb2dpYSB1dGVudGUgY2hlIGFiYmlhbm8gYWxtZW5vJzsKJGxhbmdbJ3RpdGxlX2xvc3R1c2VybmFtZSddID0gJ0hhaSBkaW1lbnRpY2F0byBpIHR1b2kgZGF0aSBkaSBhY2Nlc3NvPyc7CiRsYW5nWyd0aXRsZV9yc3NleHBvcnQnXSA9ICdFc3BvcnRhIGxhIGRlZmluaXppb25lIChlIGxlIHByb3ByaWV0w6ApIGRlbCBncnVwcG8gaW4gZm9ybWF0byBYTUwnOwokbGFuZ1sndGl0bGVfdXNlcmhpc3RvcnltYWludGVuYW5jZSddID0gJ01hbnV0ZW56aW9uZSBkZWxsYSBjcm9ub2xvZ2lhIHV0ZW50ZSc7CiRsYW5nWyd5ZXMnXSA9ICdTw6wnOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWydwcm9tcHRfb2YnXSA9ICdPRkYnOwokbGFuZ1snZGF0ZV9hbGxyZWNvcmRzJ10gPSAnKiogTmVzc3VuIGxpbWl0ZSAqKic7CiRsYW5nWydkYXRlX29uZWhvdXJvbGQnXSA9ICd1blwnb3JhJzsKJGxhbmdbJ2RhdGVfc2l4aG91cm9sZCddID0gJ3NlaSBvcmUnOwokbGFuZ1snZGF0ZV90d2VsdmVob3Vyb2xkJ10gPSAnZG9kaWNpIG9yZSc7CiRsYW5nWydkYXRlX29uZWRheW9sZCddID0gJ3VuIGdpb3Jubyc7CiRsYW5nWydkYXRlX29uZXdlZWtvbGQnXSA9ICd1bmEgc2V0dGltYW5hJzsKJGxhbmdbJ2RhdGVfdHdvd2Vla3NvbGQnXSA9ICdkdWUgc2V0dGltYW5lJzsKJGxhbmdbJ2RhdGVfb25lbW9udGhvbGQnXSA9ICd1biBtZXNlJzsKJGxhbmdbJ2RhdGVfdGhyZWVtb250aHNvbGQnXSA9ICd0cmUgbWVzaSc7CiRsYW5nWydkYXRlX3NpeG1vbnRoc29sZCddID0gJ3NlaSBtZXNpJzsKJGxhbmdbJ2RhdGVfb25leWVhcm9sZCddID0gJ3VuIGFubm8nOwokbGFuZ1sndGl0bGVfZ3JvdXBzb3J0J10gPSAnUmFnZ3J1cHBhcmUgZWQgb3JkaW5hcmUnOwokbGFuZ1sncHJvbXB0X3JlY29yZHNmb3VuZCddID0gJ1JlY29yZCBjaGUgY29ycmlzcG9uZG9ubyBhaSBjcml0ZXJpJzsKJGxhbmdbJ3NvcnRvcmRlcl91c2VybmFtZV9kZXNjJ10gPSAnTm9tZSB1dGVudGUgaW4gb3JkaW5lIGRlY3Jlc2NlbnRlJzsKJGxhbmdbJ3NvcnRvcmRlcl91c2VybmFtZV9hc2MnXSA9ICdOb21lIHV0ZW50ZSBpbiBvcmRpbmUgY3Jlc2NlbnRlJzsKJGxhbmdbJ3NvcnRvcmRlcl9kYXRlX2Rlc2MnXSA9ICdEYXRhIGluIG9yZGluZSBkZWNyZXNjZW50ZSc7CiRsYW5nWydzb3J0b3JkZXJfZGF0ZV9hc2MnXSA9ICdEYXRhIGluIG9yZGluZSBjcmVzY2VudGUnOwokbGFuZ1snc29ydG9yZGVyX2FjdGlvbl9kZXNjJ10gPSAnVGlwbyBkaSBldmVudG8gaW4gb3JkaW5lIGRlY3Jlc2NlbnRlJzsKJGxhbmdbJ3NvcnRvcmRlcl9hY3Rpb25fYXNjJ10gPSAnVGlwbyBkaSBldmVudG8gaW4gb3JkaW5lIGNyZXNjZW50ZSc7CiRsYW5nWydzb3J0b3JkZXJfaXBhZGRyZXNzX2Rlc2MnXSA9ICdJbmRpcml6em8gSVAgaW4gb3JkaW5lIGRlY3Jlc2NlbnRlJzsKJGxhbmdbJ3NvcnRvcmRlcl9pcGFkZHJlc3NfYXNjJ10gPSAnSW5kaXJpenpvIElQIGluIG9yZGluZSBjcmVzY2VudGUnOwokbGFuZ1snaW5mb19ub2hpc3RvcnlkZXRlY3RlZCddID0gJ05lc3N1bmEgY3Jvbm9sb2dpYSByaWxldmF0YSc7CiRsYW5nWydyZXNldCddID0gJ1JpcHJpc3RpbmEnOwokbGFuZ1sncHJvbXB0X2dyb3VwX2lwJ10gPSAnR3J1cHBvIHBlciBpbmRpcml6em8gSVAnOwokbGFuZ1sncHJvbXB0X2ZpbHRlcl9ldmVudHR5cGUnXSA9ICdGaWx0cm8gZGVsIHRpcG8gZGkgZXZlbnRvJzsKJGxhbmdbJ3Byb21wdF9maWx0ZXJfZGF0ZSddID0gJ01vc3RyYSBzb2xvIGV2ZW50aSBjaGUgYWJiaWFubyBtZW5vIGRpJzsKJGxhbmdbJ3Byb21wdF9wYWdlbGltaXQnXSA9ICdMaW1pdGUgZGVsbGEgcGFnaW5hJzsKJGxhbmdbJ2ZvciddID0gJ3Blcic7CiRsYW5nWyd0aXRsZV91c2VyaGlzdG9yeSddID0gJ1JlcG9ydCBjcm9ub2xvZ2lhIHV0ZW50ZSc7CiRsYW5nWyd1bmtub3duJ10gPSAnU2Nvbm9zY2l1dG8nOwokbGFuZ1sncHJvbXB0X2lwYWRkcmVzcyddID0gJ0luZGlyaXp6byBJUCc7CiRsYW5nWydwcm9tcHRfZXZlbnR0eXBlJ10gPSAnVGlwbyBkaSBldmVudG8nOwokbGFuZ1sncHJvbXB0X2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ3Byb21wdF9yZXR1cm4nXSA9ICdJbmRpZXRybyc7CiRsYW5nWydpbXBvcnRfY29tcGxldGVfbXNnJ10gPSAnT3BlcmF6aW9uZSBkaSBpbXBvcnRhemlvbmUgY29tcGxldGF0YSc7CiRsYW5nWydwcm9tcHRfbGluZXNwcm9jZXNzZWQnXSA9ICdSaWdoZSBwcm9jZXNzYXRlJzsKJGxhbmdbJ3Byb21wdF9lcnJvcnMnXSA9ICdFcnJvcmkgaW5jb250cmF0aSc7CiRsYW5nWydwcm9tcHRfcmVjb3Jkc2FkZGVkJ10gPSAnUmVjb3JkIGFnZ2l1bnRpJzsKJGxhbmdbJ2Vycm9yX25vZ3JvdXBwcm9wcmVsbnMnXSA9ICdOb24gw6ggc3RhdG8gcG9zc2liaWxlIHRyb3ZhcmUgbGUgcHJvcHJpZXTDoCBwZXIgaWwgZ3J1cHBvICVzJzsKJGxhbmdbJ2Vycm9yX25vcmVzcG9uc2Vmcm9tc2VydmVyJ10gPSAnTm9uIMOoIHN0YXRvIHBvc3NpYmlsZSBvdHRlbmVyZSB1bmEgcmlzcG9zdGEgZGFsIHNlcnZlciBTTVRQJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGZpbGVub3Rmb3VuZCddID0gJ0lsIGZpbGUgaW5kaWNhdG8gKCVzKSBub24gw6ggc3RhdG8gdHJvdmF0byc7CiRsYW5nWydlcnJvcl9pbXBvcnRmaWVsZHZhbHVlJ10gPSAnVmFsb3JlIG5vbiB2YWxpZG8gcGVyIGxhIGNvbG9ubmEgJXMnOwokbGFuZ1snZXJyb3JfaW1wb3J0ZmllbGRsZW5ndGgnXSA9ICdJbCBjYW1wbyAlcyBlY2NlZGUgbGEgbHVuZ2hlenphIG1hc3NpbWEnOwokbGFuZ1snZXJyb3JfaW1wb3J0aW5zZXJ0dXNlciddID0gJ1Byb2JsZW1hIG5lbGxhIGNyZWF6aW9uZSBkZWxsXCd1dGVudGU6ICVzJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydHVwZGF0ZXVzZXInXSA9ICdQcm9ibGVtYSBuZWxsXCdhZ2dpb3JuYW1lbnRvIGRlbGxcJ3V0ZW50ZTogJXMnOwokbGFuZ1snZXJyb3JfaW1wb3J0dXNlcnMnXSA9ICdFcnJvcmUgZGkgaW1wb3J0YXppb25lIChyaWdhICVzKTogJXMnOwokbGFuZ1snZXJyb3JfcHJvcGVydHlkZWZucyddID0gJ05vbiDDqCBzdGF0byBwb3NzaWJpbGUgb3R0ZW5lcmUgbGUgZGVmaW5pemlvbmkgZGVsbGUgcHJvcHJpZXTDoCAoZXJyb3JlIGludGVybm8pJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW1zZXR0aW5naW5mbyddID0gJ1Byb2JsZW1hIG5lbGxcJ2ltcG9zdGF6aW9uZSBkZWxsZSBpbmZvcm1hemlvbmkgZGVsbFwndXRlbnRlJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydHJlcXVpcmVkZmllbGQnXSA9ICdOb24gw6ggc3RhdG8gcG9zc2liaWxlIHRyb3ZhcmUgdW5hIGNvbG9ubmEgY2hlIGNvcnJpc3BvbmRhIGFsIGNhbXBvIHJpY2hpZXN0byAlcyc7CiRsYW5nWydlcnJvcl9ub2dyb3VwcHJvcGVydGllcyddID0gJ05vbiDDqCBzdGF0byBwb3NzaWJpbGUgdHJvdmFyZSBsZSBwcm9wcmlldMOgIHJlbGF0aXZlIGFsIGdydXBwbyBpbmRpY2F0byc7CiRsYW5nWydlcnJvcl9pbXBvcnRmaWxlZm9ybWF0J10gPSAnSWwgZmlsZSBpbmRpY2F0byBwZXIgbFwnaW1wb3J0YXppb25lIG5vbiDDqCBuZWwgZm9ybWF0byBjb3JyZXR0byc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdG9wZW5maWxlJ10gPSAnTm9uIMOoIHN0YXRvIHBvc3NpYmlsZSBhcHJpcmUgaWwgZmlsZSc7CiRsYW5nWydpbmZvX2ltcG9ydHVzZXJzZmlsZWZvcm1hdDInXSA9ICc8aDU+SW5mb3JtYXppb25pIHN1bCBmb3JtYXRvIGZpbGU8L2g1Pg0KPHA+SWwgZmlsZSBkaSBpbnB1dCBkZXZlIGVzc2VyZSBpbiBmb3JtYXRvIEFTQ0lJIHVzYW5kbyA8ZW0+KG5vcm1hbG1lbnRlKTwvZW0+IHZhbG9yaSBzZXBhcmF0aSBkYSB2aXJnb2xlLiAgT2duaSByaWdhIGluIHF1ZXN0byBmaWxlIGRpIGlucHV0IChjb24gbFwnZWNjZXppb25lIGRlbGxhIHJpZ2EgZGkgaW50ZXN0YXppb25lLCB0cmF0dGF0YSBxdWkgc290dG8pIHJhcHByZXNlbnRhIGlsIHJlY29yZCBkaSB1biB1dGVudGUuICBMXCdvcmRpbmUgZGVpIGNhbXBpIGluIG9nbmkgcmlnYSBkZXZlIGVzc2VyZSBpZGVudGljby4gIFF1ZXN0YSByb3V0aW5lIGRpIGltcG9ydGF6aW9uZSBhY2NldHRhIHRlcm1pbmF6aW9uaSBkaSByaWdhIE1BQyBlZCB1bml4LiAgSSB2YWxvcmkgZGVsbGUgY29sb25uZSBwb3Nzb25vIGVzc2VyZSByYWNjaGl1c2kgdHJhIGRvcHBpZSB2aXJnb2xldHRlIHNlIGlsIGRlbGltaXRhdG9yZSBwdcOyIGVzc2VyZSBjb250ZW51dG8gYWxsXCdpbnRlcm5vIGRlbCB2YWxvcmUgZGVsbGEgY29sb25uYS48L3A+DQo8aDU+UmlnYSBkaSBpbnRlc3RhemlvbmU8L2g1Pg0KPHVsPg0KPGxpPkxhIHByaW1hIHJpZ2EgZGVsIGZpbGUgZGV2ZSBpbml6aWFyZSBjb24gZHVlIGNhcmF0dGVyaSBjYW5jZWxsZXR0byAoXFwjKSBlIGRhIGlsIG5vbWUgYSBjaWFzY3VubyBkZWkgY2FtcGkgbmVsIGZpbGUuICBJIG5vbWkgZGkgcXVlc3RpIGNhbXBpIHNvbm8gc2lnbmlmaWNhdGl2aS4gIENpIHNvbm8gYWxjdW5pIG5vbWkgZGkgY2FtcGkgb2JibGlnYXRvcmkgKHZlZGkgcXVpIHNvdHRvKSwgZWQgYWx0cmkgZGV2b25vIGNvcnJpc3BvbmRlcmUgYWkgbm9taSBkZWxsZSBwcm9wcmlldMOgIGFzc29jaWF0ZSBhZ2xpIHV0ZW50aSBkZWwgZ3J1cHBvIGEgY3VpIHZlcnJhbm5vIGFnZ2l1bnRpLjwvbGk+DQo8bGk+SWwgcHJvY2Vzc28gZGkgaW1wb3J0YXppb25lIGZhbGxpcsOgIHNlIGkgY2FtcGkgbmVsIGZpbGUgZGkgaW5wdXQgbm9uIGNvcnJpc3BvbmRvbm8gYSB0dXR0ZSBsZSBwcm9wcmlldMOgIHJpY2hpZXN0ZSBhc3NvY2lhdGUgYWwgZ3J1cHBvIGluIGN1aSB2ZW5nb25vIGFnZ2l1bnRpIGdsaSB1dGVudGk8L2xpPg0KPGxpPklsIGZpbGUgZGkgaW5wdXQgcHXDsiBjb250ZW5lcmUgY2FtcGkgcmFwcHJlc2VudGFudGkgYWxjdW5lIGRlbGxlIHByb3ByaWV0w6AgZmFjb2x0YXRpdmUgbmVsIGdydXBwbyBzcGVjaWZpY2F0by48L2xpPg0KPGxpPklsIHByb2Nlc3NvIGRpIGltcG9ydGF6aW9uZSBpZ25vcmVyw6AgcXVhbHNpYXNpIGNhbXBvIG5lbCBmaWxlIGRpIGlucHV0IGNoZSBub24gc2lhIGNvbm9zY2l1dG8gbyBtYXBwYXRvIGEgcHJvcHJpZXTDoCBjaGUgc2lhbm8gPGVtPm9mZjwvZW0+IG5laSBncnVwcGkgdXRlbnRpIGluZGljYXRpLjwvbGk+DQo8L3VsPjxici8+DQo8aDY+PHN0cm9uZz5EYXRpIGNvbG9ubmFyaTwvc3Ryb25nPjwvaDY+DQo8dWw+DQo8bGk+SWwgY2FtcG8gPHN0cm9uZz51c2VybmFtZTwvc3Ryb25nPiAtIElsIG5vbWUgdXRlbnRlIGRlc2lkZXJhdG8uDQogICAgPHA+UXVlc3RvIGNhbXBvIGRldmUgZXNpc3RlcmUgbmVsbGEgcmlnYSBkZWxsXCdpbnRlc3RhemlvbmUgZSBpbiBvZ25pIHJpZ2EgZGVsIGZpbGUgZGkgaW5wdXQuIFNlIHVuIHV0ZW50ZSBjb24gbFwndXNlcm5hbWUgaW5kaWNhdG8gZXNpc3RlIGdpw6AgbmVsIGRhdGFiYXNlLCBsZSBzdWUgaW5mb3JtYXppb25pIHZlcnJhbm5vIHNvdnJhc2NyaXR0ZS48L3A+PC9saT4NCjxsaT5JbCBjYW1wbyA8c3Ryb25nPnR4dHBhc3N3b3JkPC9zdHJvbmc+IC0gPGVtPihmYWNvbHRhdGl2byk8L2VtPi4gIExhIHBhc3N3b3JkIGRhIGltcG9zdGFyZSBwZXIgbFwndXRlbnRlIGluIHRlc3RvIHNlbXBsaWNlLiBTZSBpbCBjYW1wbyBwYXNzd29yZCDDqCB2dW90byBkdXJhbnRlIGxhIGNyZWF6aW9uZSBkaSBudW92aSB1dGVudGksIGxhIHBhc3N3b3JkICJjaGFuZ2VtZSIgw6ggY29kaWZpY2F0YS4gIFNlIGlsIGNhbXBvIGRlbGxhIHBhc3N3b3JkIMOoIHZ1b3RvIGR1cmFudGUgbFwnYWdnaW9ybmFtZW50byBkaSB1biB1dGVudGUsIGxhIHN1YSBwYXNzd29yZCBub24gdmVycsOgIG1vZGlmaWNhdGEuPC9saT4NCjxsaT5JbCBjYW1wbyA8c3Ryb25nPmV4cGlyZXM8L3N0cm9uZz4gLSA8ZW0+KGZhY29sdGF0aXZvKTwvZW0+LiAgTGEgZGF0YSBkaSBzY2FkZW56YSBkZXNpZGVyYXRhIHBlciBsXCd1dGVudGUuIFNlIHF1ZXN0byBjYW1wbyDDqCBpbmRpY2F0byBlIHB1w7IgZXNzZXJlIGNvbnZhbGlkYXRvIGNvbWUgZGF0YSB2YWxpZGEsIHZlcnLDoCB1dGlsaXp6YXRhIGxhIGRhdGEgZGkgc2NhZGVuemEgZHVyYW50ZSBsYSBjcmVhemlvbmUgZGkgdW4gbnVvdm8gdXRlbnRlLCBhbHRyaW1lbnRpIHZlcnLDoCB1dGlsaXp6YXRvIHVuIHZhbG9yZSBwcmVkZWZpbml0byBkaSAxMCBkYWxsYSBkYXRhIGRpIGNyZWF6aW9uZS4gU2UgcXVlc3RvIGNhbXBvIMOoIHZ1b3RvIGR1cmFudGUgbFwnYWdnaW9ybmFtZW50byBkaSB1biB1dGVudGUsIGxhIHN1YSBzY2FkZW56YSBub24gdmVycsOgIG1vZGlmaWNhdGEuPC9saT4NCjxsaT5JbCBjYW1wbyA8c3Ryb25nPmdyb3VwbmFtZTwvc3Ryb25nPiAtIFVuIGVsZW5jbyBzZXBhcmF0byBkYSA6IGRlaSBub21pIGRlaSBncnVwcGkgZGkgY3VpIHNpIGRlc2lkZXJhIGNoZSBsXCd1dGVudGUgZmFjY2lhIHBhcnRlLiBTZSB0dXR0aSBpIGNhbXBpIG9iYmxpZ2F0b3JpIG5vbiB2ZW5nb25vIGNvbXBpbGF0aSwgbFwnaW5zZXJpbWVudG8vbFwnYWdnaW9ybmFtZW50byBkZWwgcmVjb3JkIG5vbiBhbmRyw6AgYSBidW9uIGZpbmUuPC9saT4NCjxsaT5DYW1waSBhIGRpc2Nlc2EvcmFkaW8NCiAgPHA+SWwgdmFsb3JlIGRlbGxlIHByb3ByaWV0w6AgYSBkaXNjZXNhIGluIHVuIGZpbGUgZGkgaW1wb3J0YXppb25lIMOoIHJhcHByZXNlbnRhdG8gY29tZSBsYSBzdHJpbmdhIG1vc3RyYXRhIG5lbCBjb250cm9sbG8gYSBkaXNjZXNhIG5lbCBtb2R1bG8gTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlLjwvcD4NCjwvbGk+DQo8bGk+Q2FtcGkgYSBzZWxlemlvbmUgbXVsdGlwbGENCiAgPHA+SSBjYW1waSBhIHNlbGV6aW9uZSBtdWx0aXBsYSBzb25vIGNvbnRlbnV0aSBhbGxcJ2ludGVybm8gZGVsIGZpbGUgQVNDSUkgY29tZSBlbGVuY28gZGkgc3RyaW5naGUsIHNlcGFyYXRvIGRhIDogZG92ZSBvZ25pIHN0cmluZ2EgcmFwcHJlc2VudGEgaWwgdGVzdG8gbW9zdHJhdG8gbmVsbFwnZWxlbmNvIGEgc2VsZXppb25lIG11bHRpcGxhPC9wPg0KPC9saT4NCjxsaT5DYW1waSBFbWFpbA0KICA8cD5EZXZlIGVzc2VyZSB1biBpbmRpcml6em8gZW1haWwgdmFsaWRvIGNoZSBwb3NzYSBlc3NlcmUgY29udmFsaWRhdG8gZGFsbGUgZnVuemlvbmFsaXTDoCBpbnRlZ3JhdGUgZGkgUEhQLjwvcD4NCjwvbGk+DQo8bGk+Q2FtcGkgZGF0ZQ0KICA8cD5EZXZlIGVzc2VyZSBpbiB1biBmb3JtYXRvIGNoZSBwb3NzYSBlc3NlcmUgY29udmVydGl0byBpbiB1biB0aW1lc3RhbXAgdW5peCBjb24gaWwgbWV0b2RvIHN0cnRvdGltZSgpLjwvcD4NCjwvbGk+DQo8bGk+Q2FtcGkgaW1tYWdpbmUNCiAgICA8cD5JIGNhbXBpIEltbWFnaW5lIHNvbm8gY2FtcGkgaWwgY3VpIG5vbWUgZGkgY29sb25uYSBkZXZlIGNvcnJpc3BvbmRlcmUgYSB1bmEgcHJvcHJpZXTDoCBkaSB0aXBvIEltbWFnaW5lLiBTZSBxdWVzdG8gY2FtcG8gbm9uIMOoIHZ1b3RvLCBpbCBub21lIGZpbGUgaW5kaWNhdG8gaW4gcXVlc3RlIGNvbG9ubmUgZGV2ZSBlc2lzdGVyZSBuZWwgcGVyY29yc28gZGkgZGVzdGluYXppb25lIGRlbGxcJ2ltbWFnaW5lIGNvbWUgaW5kaWNhdG8gbmVsbGUgcHJlZmVyZW56ZSBkaSBNQU1TLi4gIFNlIGxcJ2ltbWFnaW5lIG5vbiBlc2lzdGUgZSBpbCBjYW1wbyDDqCBvYmJsaWdhdG9yaW8sIGlsIHJlY29yZCBub24gYW5kcsOgIGEgYnVvbiBmaW5lLjwvcD48L2xpPg0KPC91bD4NCjxoNT5Ob3RlPC9oNT4NCjxwPklsIHByb2Nlc3NvIGRpIGltcG9ydGF6aW9uZSDDqCB1bmEgcm91dGluZSBhZCBhbHRhIGludGVuc2l0w6AgZFwndXNvIGRpIG1lbW9yaWEgZSBkYXRhYmFzZS4gw4ggc29nZ2V0dG8gYWxsZSBsaW1pdGF6aW9uaSBpbXBvc3RlIGRhbCBmb3JuaXRvcmUgZGVsbFwnaG9zdCwgY29tZSBsaW1pdGF6aW9uaSBkaSBtZW1vcmlhLCB0ZW1waSBkaSBlbGFib3JhemlvbmUsIGRpbWVuc2lvbmkgZGVsIGZpbGUgZGEgY2FyaWNhcmUgZSByZXN0cml6aW9uaSBkZWwgc2FmZSBtb2RlLiAgVW5hIHF1YWxzaWFzaSBkaSBxdWVzdGUgbGltaXRhemlvbmkgcHXDsiBjYXVzYXJlIGlsIGZhbGxpbWVudG8gZGVsbFwnaW1wb3J0YXppb25lLiBDb25zZWd1ZW50ZW1lbnRlIMOoIG9wcG9ydHVubyBhc3NpY3VyYXJzaSBjaGUgaSBmaWxlIGRpIGltcG9ydGF6aW9uZSBzaWFubyBkaSBkaW1lbnNpb25pIGluZmVyaW9yaSBlIGRpIHN0cnV0dHVyYSBwacO5IHNlbXBsaWNlLjwvcD4NCjxwPkFuY2hlIHNlIMOoIHN0YXRvIGNvbXBpdXRvIG9nbmkgc2ZvcnpvIHBlciBnYXJhbnRpcmUgY2hlIG5vbiBzaSB2ZXJpZmljaGlubyBkYW5uaSBhbCBkYXRhYmFzZSwgw6ggb3Bwb3J0dW5vIGVzZWd1aXJlIHVuIGJhY2t1cCBkZWwgZGF0YWJhc2Ugc3Rlc3NvIHByaW1hIGRpIHBhc3NhcmUgYWxsXCdpbXBvcnRhemlvbmUgZGVsbFwndXRlbnRlLjwvcD4NCjxwPkkgZGF0aSBkaSBlc3BvcnRhemlvbmUgaGFubm8gbG8gc3Rlc3NvIGZvcm1hdG8gbmVjZXNzYXJpbyBwZXIgbFwnaW1wb3J0YXppb25lLiBUdXR0YXZpYSBwb3RyZWJiZXJvIGVzc2VyZSBmb3JuaXRpIGNhbXBpIGFnZ2l1bnRpdmkgbm9uIG5lY2Vzc2FyaSBwZXIgbFwnaW1wb3J0YXppb25lLjwvcD4NCjxoNT5Fc2VtcGlvPC9oNT4NCjxwcmU+DQojI3VzZXJuYW1lLGZpcnN0X25hbWUsbGFzdF9uYW1lLGVtYWlsLGNpdHksc3RhdGUsY291bnRyeSx6aXANCnVzZXIxLHRlc3QsdXNlcix1c2VyMUBzb21lZG9tYWluLmNvbSxzb21ld2hlcmUsVFgsVVMsMTIzNDUNCjwvcHJlPic7CiRsYW5nWydwcm9tcHRfaW1wb3J0ZGVzdGdyb3VwJ10gPSAnSW1wb3J0YSBnbGkgdXRlbnRpIGluIHF1ZXN0byBncnVwcG8nOwokbGFuZ1sncHJvbXB0X2ltcG9ydGZpbGVuYW1lJ10gPSAnRmlsZSBDU1YgZGkgaW5wdXQnOwokbGFuZ1sncHJvbXB0X2ltcG9ydHhtbGZpbGUnXSA9ICdGaWxlIFhNTCBkaSBpbnB1dCc7CiRsYW5nWydwcm9tcHRfZXhwb3J0dXNlcnMnXSA9ICdFc3BvcnRhIHV0ZW50aSc7CiRsYW5nWydwcm9tcHRfaW1wb3J0dXNlcnMnXSA9ICdJbXBvcnRhIHV0ZW50aSc7CiRsYW5nWydwcm9tcHRfY2xlYXInXSA9ICdDYW5jZWxsYSc7CiRsYW5nWydwcm9tcHRfaW1hZ2VfZGVzdGluYXRpb25fcGF0aCddID0gJ1BlcmNvcnNvIGRpIGRlc3RpbmF6aW9uZSBpbW1hZ2luZSc7CiRsYW5nWydlcnJvcl9taXNzaW5nX3VwbG9hZCddID0gJ1NpIMOoIHZlcmlmaWNhdG8gdW4gcHJvYmxlbWEgY29uIHVuIGNhcmljYW1lbnRvIG1hbmNhbnRlIChtYSBvYmJsaWdhdG9yaW8pLic7CiRsYW5nWydlcnJvcl9iYWRfeG1sJ10gPSAnTm9uIMOoIHN0YXRvIHBvc3NpYmlsZSBhbmFsaXp6YXJlIGlsIGZpbGUgWE1MIGZvcm5pdG8nOwokbGFuZ1snZXJyb3Jfbm90ZW1wdHlncm91cCddID0gJ05vbiBwb3NzbyBlbGltaW5hcmUgdW4gZ3J1cHBvIGNoZSBjb250ZW5nYSBhbmNvcmEgZGVnbGkgdXRlbnRpJzsKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdRdWVzdG8gdXRlbnRlIMOoIGdpw6AgY29sbGVnYXRvJzsKJGxhbmdbJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCddID0gJ1NzcGlhY2VudGUsIG1hIGxhIHZlcmlmaWNhIGNhcHRjaGEgbm9uIMOoIGFuZGF0YSBhIGJ1b24gZmluZS4gUGVyIGZhdm9yZSByaXByb3ZhLic7CiRsYW5nWydwcm9tcHRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJ10gPSAnUGVybWV0dGkgYWdsaSB1dGVudGkgZGkgZWZmZXR0dWFyZSBpbCBsb2dpbiBwacO5IGRpIHVuYSB2b2x0YSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJ10gPSAnRXN0ZW5zaW9uZSBkZWkgZmlsZSBpbW1hZ2luZSBpbCBjdWkgY2FyaWNhbWVudG8gw6ggY29uc2VudGl0byBhZ2xpIHV0ZW50aSc7CiRsYW5nWydldmVudF9oZWxwX09uUmVmcmVzaFVzZXInXSA9ICc8aDM+T25SZWZyZXNoVXNlcjwvaDM+DQo8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIGxhIHNlc3Npb25lIGRlbGxcJ3V0ZW50ZSB2aWVuZSBhZ2dpb3JuYXRhLjwvcD4NCjxoND5QYXJhbWV0cmk6PC9oND4NCjx1bD4NCiAgPGxpPjxlbT5pZDwvZW0+IC0gTFwnSUQgZGVsbFwndXRlbnRlPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVVc2VyJ10gPSAnPGgzPk9uRGVsZXRlVXNlcjwvaDM+DQo8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHVuIHV0ZW50ZSB2aWVuZSBlbGltaW5hdG88L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIElsIG5vbWUgdXRlbnRlPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIExcJ0lEIGRlbGxcJ3V0ZW50ZTwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlVXNlciddID0gJzxoMz5PbkNyZWF0ZVVzZXI8L2gzPg0KPHA+VW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyBzaSBjcmVhIHVuIHV0ZW50ZTwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBJbCBub21lIHV0ZW50ZTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBMXCdpZCB1dGVudGU8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRfaGVscF9PblVwZGF0ZVVzZXInXSA9ICc8aDM+T25VcGRhdGVVc2VyPC9oMz4NCjxwPlVuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdW4gdXRlbnRlIHZpZW5lIGFnZ2lvcm5hdG8gKHNpYSBkYWxsXCdhbW1pbmlzdHJhdG9yZSBjaGUgZGFsbFwndXRlbnRlIHN0ZXNzbyk8L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gSWwgbm9tZSB1dGVudGU8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gTFwnaWQgdXRlbnRlPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVHcm91cCddID0gJzxoMz5PbkNyZWF0ZUdyb3VwPC9oMz4NCjxwPlVuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gc2kgY3JlYSB1biBncnVwcG88L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gSWwgbm9tZSBkZWwgZ3J1cHBvPC9saT4NCjxsaT48ZW0+ZGVzY3JpcHRpb248L2VtPiAtIExhIGRlc2NyaXppb25lIGRlbCBncnVwcG88L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gTFwnaWQgZGVsIGdydXBwbzwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlR3JvdXAnXSA9ICc8aDM+T25EZWxldGVHcm91cDwvaDM+DQo8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHNpIGVsaW1pbmEgdW4gZ3J1cHBvPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIElsIG5vbWUgZGVsIGdydXBwbzwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBMXCdpZCBkZWwgZ3J1cHBvPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50X2hlbHBfQWZ0ZXJMb2dpbkF1dGgnXSA9ICc8aDM+T25Mb2dpbjwvaDM+DQo8cD5VbiBldmVudG8gaW52aWF0byBxdWFuZG8gdW4gdXRlbnRlIGVmZmV0dHVhIGlsIGxvZyBpbiwgZG9wbyBsXCdhdXRlbnRpY2F6aW9uZSwgbWEgcHJpbWEgY2hlIGxlIGluZm9ybWF6aW9uaSBzdWxsYSBzZXNzaW9uZSB2ZW5nYW5vIGNyZWF0ZSBlIGlsIHNpc3RlbWEgbG8gcmljb25vc2NhIGNvbWUgY29ubmVzc28uDQpRdWVzdG8gZXZlbnRvIHB1w7IgZXNzZXJlIHV0aWxpenphdG8gZGEgbW9kdWxpIGRpIHRlcnplIHBhcnRpIHBlciBhaXV0YXJlIG5lbGxhIHNpY3VyZXp6YSBwZXIgTUFNUy48L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+aWQ8L2VtPiAtIExcJ2lkIGRlbGxcJ3V0ZW50ZSBjb25uZXNzbzwvbGk+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBJbCBub21lIHV0ZW50ZSBkZWxsXCd1dGVudGUgY29ubmVzc288L2xpPg0KPGxpPjxlbT5pcDwvZW0+IC0gTFwnaW5kaXJpenpvIGlwIGRlbCBjbGllbnQ8L2xpPg0KPGxpPjxlbT5hbGxvdzwvZW0+IC0gcmlmZXJpbWVudG8gYm9vbGVhbm8gY2hlIGluZGljYSBzZSBsXCd1dGVudGUgZGV2ZSBlc3NlcmUgYXV0b3JpenphdG8gYWQgYWNjZWRlcmUuIEkgbW9kdWxpIHBvc3Nvbm8gaW1wb3N0YXJsbyBzdSBmYWxzZSBwZXIgbm9uIGNvbnNlbnRpcmUgbFwnYWNjZXNzby48L2xpPg0KPGxpPjxlbT5tc2c8L2VtPiAtIG1lc3NhZ2dpbyBpbiBzdHJpbmdhIHBlciBpbmRpY2FyZSBsYSBuYXR1cmEgZGVsIHByb2JsZW1hIHNlIHVuIG1vZHVsbyBoYSBpbXBvc3RhdG8gYWxsb3cgc3UgZmFsc2UuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50X2hlbHBfQmVmb3JlTG9naW4nXSA9ICc8aDM+T25Mb2dpbjwvaDM+DQo8cD5VbiBldmVudG8gaW52aWF0byBxdWFuZG8gdW4gdXRlbnRlIGVmZmV0dHVhIGxcJ2FjY2Vzc28sIGRvcG8gbFwnaW52aW8gZGVsIG1vZHVsbyBkaSBsb2cgaW4sIG1hIHByaW1hIGNoZSB2ZW5nYSBhdXRlbnRpY2F0by4uLg0KUXVlc3RvIGV2ZW50byBwdcOyIGVzc2VyZSB1dGlsaXp6YXRvIGRhIG1vZHVsaSBkaSB0ZXJ6ZSBwYXJ0aSBwZXIgYWl1dGFyZSBuZWxsYSBzaWN1cmV6emEgcGVyIE1BTVMuPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPmlkPC9lbT4gLSBMaWQgZGVsbFwndXRlbnRlIGNvbm5lc3NvPC9saT4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIElsIG5vbWUgZGVsbFwndXRlbnRlIGNvbm5lc3NvdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4NCjxsaT48ZW0+aXA8L2VtPiAtIExcJ2luZGlyaXp6byBpcCBkZWwgY2xpZW50PC9saT4NCjxsaT48ZW0+YWxsb3c8L2VtPiAtIHJpZmVyaW1lbnRvIGJvb2xlYW5vIGNoZSBpbmRpY2Egc2UgbFwndXRlbnRlIGRldmUgZXNzZXJlIGF1dG9yaXp6YXRvIGFkIGFjY2VkZXJlLiBJIG1vZHVsaSBwb3Nzb25vIGltcG9zdGFybG8gc3UgZmFsc2UgcGVyIG5vbiBjb25zZW50aXJlIGxcJ2FjY2Vzc28uPC9saT4NCjxsaT48ZW0+bXNnPC9lbT4gLSBtZXNzYWdnaW8gaW4gc3RyaW5nYSBwZXIgaW5kaWNhcmUgbGEgbmF0dXJhIGRlbCBwcm9ibGVtYSBzZSB1biBtb2R1bG8gaGEgaW1wb3N0YXRvIGFsbG93IHN1IGZhbHNlLjwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW4nXSA9ICc8aDM+T25Mb2dpbjwvaDM+DQo8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHVuIHV0ZW50ZSBlZmZldHR1YSBpbCBsb2cgaW48L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+aWQ8L2VtPiAtIExcJ0lEIGRlbGxcJ3V0ZW50ZSBjaGUgaGEgZWZmZXR0dWF0byBsXCdhY2Nlc3NvPC9saT4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIElsIG5vbWUgZGVsbFwndXRlbnRlIGNoZSBoYSBlZmZldHR1YXRvIGxcJ2FjY2Vzc288L2xpPg0KPGxpPjxlbT5pcDwvZW0+IC0gTFwnaW5kaXJpenpvIElQIGRlbCBjbGllbnQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ2luRmFpbGVkJ10gPSAnPGgzPk9uTG9naW5GYWlsZWQ8L2gzPg0KPHA+VW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyBmYWxsaXNjZSBsXCdhY2Nlc3NvIGRpIHVuIHV0ZW50ZTwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gSWwgbm9tZSBkZWxsXCd1dGVudGUgY2hlIGhhIGVmZmV0dHVhdG8gbFwnYWNjZXNzbzwvbGk+DQo8bGk+PGVtPm1zZzwvZW0+IC0gVW4gbWVzc2FnZ2lvIGluZGljYW50ZSBpbCBwZXJjaMOpIGRlbCBmYWxsaW1lbnRvIGRlbGxcJ2FjY2Vzc28uL2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ291dCddID0gJzxwPlVuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdW4gdXRlbnRlIHNpIGRpc2Nvbm5ldHRlPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPmlkPC9lbT4gLSBMXCdpZCBkZWxsXCd1dGVudGU8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRfaGVscF9PbkV4cGlyZVVzZXInXSA9ICc8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHNjYWRlIGxhIHNlc3Npb25lIGRpIHVuIHV0ZW50ZTwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gSWwgbm9tZSBkZWxsXCd1dGVudGUgc2NhZHV0bzwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBMXCdpZCBkZWxsXCd1dGVudGUgc2NhZHV0bzwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudF9pbmZvX0FmdGVyTG9naW5BdXRoJ10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIGRvcG8gbFwnYXV0ZW50aWNhemlvbmUsIG1hIHByaW1hIGRlbGxcJ2VmZmV0dGl2byBsb2cgaW4gZGVsbFwndXRlbnRlLic7CiRsYW5nWydldmVudF9pbmZvX0JlZm9yZUxvZ2luJ10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB1biB1dGVudGUgYWNjZWRlIGFsIHNpc3RlbWEsIGRvcG8gYXZlciBpbnZpYXRvIGlsIG1vZHVsbyBkaSBhY2Nlc3NvLCBtYSBwcmltYSBjaGUgdmVuZ2EgdmVyaWZpY2F0YSBxdWFsc2lhc2kgYXV0ZW50aWNhemlvbmUuJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dpbiddID0gJ1VuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdW4gdXRlbnRlIGFjY2VkZSBhbCBzaXN0ZW1hJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dpbkZhaWxlZCddID0gJ1VuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gZmFsbGlzY2UgbFwnYWNjZXNzbyBhbCBzaXN0ZW1hIGRhIHBhcnRlIGRpIHVuIHV0ZW50ZSc7CiRsYW5nWydldmVudF9pbmZvX09uTG9nb3V0J10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB1biB1dGVudGUgc2kgZGlzY29ubmV0dGUgZGFsIHNpc3RlbWEnOwokbGFuZ1snZXZlbnRfaW5mb19PbkV4cGlyZVVzZXInXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHVuYSBzZXNzaW9uZSB1dGVudGUgw6ggc2NhZHV0YSc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlVXNlciddID0gJ1VuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdmllbmUgY3JlYXRvIHVuIG51b3ZvIHV0ZW50ZSc7CiRsYW5nWydldmVudF9pbmZvX09uUmVmcmVzaFVzZXInXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHZpZW5lIGVmZmV0dHVhdG8gaWwgcmVmcmVzaCBkZWxsYSBzZXNzaW9uZSB1dGVudGUnOwokbGFuZ1snZXZlbnRfaW5mb19PblVwZGF0ZVVzZXInXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIGxlIGluZm9ybWF6aW9uaSBkaSB1biB1dGVudGUgdmVuZ29ubyBhZ2dpb3JuYXRlJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVVc2VyJ10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB1biBhY2NvdW50IHV0ZW50ZSB2aWVuZSBlbGltaW5hdG8nOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZUdyb3VwJ10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB2aWVuZSBjcmVhdG8gdW4gZ3J1cHBvIGRpIHV0ZW50aSc7CiRsYW5nWydldmVudF9pbmZvX09uVXBkYXRlR3JvdXAnXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHVuIGdydXBwbyBkaSB1dGVudGkgdmllbmUgYWdnaW9ybmF0byc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlR3JvdXAnXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHVuIGdydXBwbyBkaSB1dGVudGkgdmllbmUgZWxpbWluYXRvJzsKJGxhbmdbJ2JhY2tlbmRfZ3JvdXAnXSA9ICdHcnVwcG8gZGkgYmFja2VuZCc7CiRsYW5nWydpbmZvX3N0YXInXSA9ICcqIEkgc2VndWVudGkgY2FtcGkgc29ubyBtb2RlbGxpIHNtYXJ0eSBjb21wbGV0aS48YnIvPkFzc2llbWUgYSBhbHRyZSB2YXJpYWJpbGkgc21hcnR5IGUgcGx1Z2luIHByZWVzaXN0ZW50aSwgbGUgdmFyaWFiaWxpIHskdXNlcm5hbWV9IGUgeyRncm91cH0gc29ubyBkaXNwb25pYmlsaS4gIDxlbT4oTGEgdmFyaWFiaWxlIHskZ3JvdXB9IGNvcnJpc3BvbmRlIGFsIHByaW1vIGdydXBwbyBhIGN1aSBhcHBhcnRpZW5lIGxcJ3V0ZW50ZS4pPC9lbT4uJzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdNb2RpZmljYSBxdWVzdG8gY2FtcG8gcGVyIHJlaW1wb3N0YXJlIGxhIHBhc3N3b3JkIGRlZ2xpIHV0ZW50aSc7CiRsYW5nWydpbmZvX2FkbWluX3JlcGVhdHBhc3N3b3JkJ10gPSAnTW9kaWZpY2EgcXVlc3RvIGNhbXBvIHBlciByZWltcG9zdGFyZSBsYSBwYXNzd29yZCBkZWdsaSB1dGVudGknOwokbGFuZ1snZXJyb3JfdXNlcm5hbWVfZXhpc3RzJ10gPSAnRXNpc3RlIGdpw6AgdW4gdXRlbnRlIGNvbiBxdWVsIG5vbWUgdXRlbnRlJzsKJGxhbmdbJ25vY3N2cmVzdWx0cyddID0gJ05vbiDDqCBzdGF0byByZXN0aXR1aXRvIGFsY3VuIHJpc3VsdGF0byBkYWxsXCdlc3BvcnRhemlvbmUgY3N2JzsKJGxhbmdbJ3Byb21wdF91bmZsZGxlbiddID0gJ0x1bmdoZXp6YSBkZWwgY2FtcG8gdXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X3B3ZmxkbGVuJ10gPSAnTHVuZ2hlenphIGRlbCBjYW1wbyBwYXNzd29yZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmRsZW5ndGhzJ10gPSAnTGUgbHVuZ2hlenplIG1pbmltYS9tYXNzaW1hIGRlbGxhIHBhc3N3b3JkIG5vbiBzb25vIHZhbGlkZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWVsZW5ndGhzJ10gPSAnTGUgbHVuZ2hlenplIG1pbmltYS9tYXNzaW1hIGRlbCBub21lIHV0ZW50ZSBub24gc29ubyB2YWxpZGUnOwokbGFuZ1snZXJyb3JfaW52YWxpZGVtYWlsYWRkcmVzcyddID0gJ0luZGlyaXp6byBlLW1haWwgbm9uIHZhbGlkbyc7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ05vbiDDqCBzdGF0byBwb3NzaWJpbGUgdHJvdmFyZSB1biBpbmRpcml6em8gZS1tYWlsIHBlciBxdWVzdG8gYWNjb3VudCc7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2VldHRpbmdpbmZvJ10gPSAnUHJvYmxlbWEgbmVsbFwnaW1wb3N0YXppb25lIGRlbGxlIGluZm9ybWF6aW9uaSBkZWxsXCd1dGVudGUnOwokbGFuZ1snZXJyb3Jfc2V0dGluZ3Byb3BlcnR5J10gPSAnUHJvYmxlbWEgbmVsbFwnaW1wb3N0YXppb25lIGRlbGxlIHByb3ByaWV0w6AnOwokbGFuZ1sndXNlcl9hZGRlZCddID0gJ0FnZ2l1bnRvIGxcJ3V0ZW50ZSAlcyA9ICVzJzsKJGxhbmdbJ3VzZXJfZGVsZXRlZCddID0gJ0VsaW1pbmF0byB1dGVudGUgdWlkPSVzJzsKJGxhbmdbJ3Byb3BlcnR5ZmlsdGVyJ10gPSAnUHJvcHJpZXTDoCc7CiRsYW5nWyd2YWx1ZXJlZ2V4J10gPSAnVmFsb3JlIChlc3ByZXNzaW9uZSByZWdvbGFyZSknOwokbGFuZ1snd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnXSA9ICdBdnZpc286IHF1ZXN0aSBjYW1waSBpbmZsdWlzY29ubyBzdWxsYSBkaW1lbnNpb25lIGRlaSBjYW1waSBkaSBpbnB1dCBwZXIgaSBtb2R1bGkuIERpbWludWlyZSBxdWVzdG8gbnVtZXJvIHN1IHVuIHNpdG8gZXNpc3RlbnRlIHBvdHJlYmJlIG5vbiBlc3NlcmUgY29uc2lnbGlhYmlsZSc7CiRsYW5nWydjb25maXJtX3N1Ym1pdHByZWZzJ10gPSAnU2VpIHNpY3VybyBkaSB2b2xlciBtb2RpZmljYXJlIGxlIHByZWZlcmVuemUgZGVsIG1vZHVsbz8nOwokbGFuZ1snZXJyb3JfZW1haWxhbHJlYWR5dXNlZCddID0gJ0luZGlyaXp6byBlLW1haWwgZ2nDoCB1dGlsaXp6YXRvJzsKJGxhbmdbJ3Byb21wdF91c2Vjb29raWVzdG9yZW1lbWJlciddID0gJ1VzYSBpIGNvb2tpZSBwZXIgcmljb3JkYXJlIGkgZGF0aSBkaSBhY2Nlc3NvJzsKJGxhbmdbJ3Byb21wdF9jb29raWVuYW1lJ10gPSAnSWwgbm9tZSBkZWwgY29va2llICJSZW1lbWJlciBNZSInOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICdDb25zZW50aSBlLW1haWwgZHVwbGljYXRlJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZV9pc19lbWFpbCddID0gJ0xcJ2luZGlyaXp6byBlLW1haWwgw6ggaWwgbm9tZSB1dGVudGUnOwokbGFuZ1snaW5mb19jb29raWVfa2VlcGFsaXZlJ10gPSAnU2UgYXR0aXZhdG8sIHZlcnLDoCBpbXBvc3RhdG8gdW4gY29va2llIGNvbiB1bmEgc2NhZGVuemEgZGkgMjQgb3JlIHBlciBtYW50ZW5lcmUgYXR0aXZlIGxlIHNlc3Npb25pLiBRdWVzdGEgZnVuemlvbmFsaXTDoCDDqCBkaXZlcnNhIGRhIHF1ZWxsYSBkaSByZW1lbWJlciBtZSBlIHB1w7IgZXNzZXJlIHV0aWxpenphdGEgcGVyIGVzdGVuZGVyZSBsXCdhY2Nlc3NvIGRpIHVuIHV0ZW50ZSBhbCBzaXN0ZW1hIHNlIGkgZGF0aSBkZWxsYSBzZXNzaW9uZSB2ZW5nb25vIGNhbmNlbGxhdGkgdHJvcHBvIGZyZXF1ZW50ZW1lbnRlLic7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcoQ29uc2VudGkgcGnDuSB1dGVudGkgY29uIGxvIHN0ZXNzbyBpbmRpcml6em8gZS1tYWlsKSc7CiRsYW5nWydpbmZvX3VzZXJuYW1lX2lzX2VtYWlsJ10gPSAnKGxcJ2luZGlyaXp6byBlLW1haWwgZGVsbFwndXRlbnRlIMOoIGlsIHN1byBub21lIHV0ZW50ZSAtLSBub24gaW1wb3N0YXJsbyBjb24gImNvbnNlbnRpIGluZGlyaXp6aSBlbWFpbCBkdXBsaWNhdGkiISknOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSA9ICdDb25zZW50aSBwcm9tZW1vcmlhIGR1cGxpY2F0aSBwZXIgInBhc3N3b3JkIGRpbWVudGljYXRhIj8nOwokbGFuZ1snaW5mb19hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJ10gPSAnKENvbnNlbnRpIGFkIHVuIHV0ZW50ZSBkaSByaWNoaWVkZXJlIGxhIHJlaW1wb3N0YXppb25lIGRlbGxhIHBhc3N3b3JkLCBhbmNoZSBzZSBub24gaGEgb3BlcmF0byBzdSB1bmEgcHJlY2VkZW50ZSknOwokbGFuZ1sncHJvbXB0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSA9ICdVdGlsaXp6YXJlIGkgcGVybWVzc2kgc3BlY2lmaWNpIHBlciBsXCd1dGVudGUgRnJvbnQtZW5kPyc7CiRsYW5nWydpbmZvX21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSA9ICcoTm9ybWFsbWVudGUsIGxlIGF1dG9yaXp6YXppb25pIGRlZ2xpIG9wZXJhdG9yaSBNQU1TIHNvbm8gbGUgc3Rlc3NlIGRlbGxlIGF1dG9yaXp6YXppb25pIGVxdWl2YWxlbnRpIGRlbGxcJ0FyZWEgZGkgYW1taW5pc3RyYXppb25lIGNvbWUgQWdnaXVuZ2kgdXRlbnRlLCBBZ2dpdW5naSBncnVwcG8sIGVjYy4gU2Ugc2kgc2VsZXppb25hIHF1ZXN0YSBvcHppb25lLCBjaSBzYXJhbm5vIGF1dG9yaXp6YXppb25pIHNlcGFyYXRlIHBlciBnbGkgb3BlcmF0b3JpIE1BTVMuKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXBsb2FkJ10gPSAnTm9uIMOoIHN0YXRvIHBvc3NpYmlsZSB0cm92YXJlIGlsIGZpbGUgY2FyaWNhdG8gKGVycm9yZSBpbnRlcm5vKSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtX3VwbG9hZCddID0gJ1NpIMOoIHZlcmlmaWNhdG8gdW4gcHJvYmxlbWEgY29uIGlsIGZpbGUgY2hlIGhhaSBjYXJpY2F0by4gUGVyIGZhdm9yZSByaXByb3ZhJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VybmFtZSddID0gJ05vbiBoYWkgaW5zZXJpdG8gdW4gbm9tZSB1dGVudGUnOwokbGFuZ1snZXJyb3JfbWlzc2luZ2VtYWlsJ10gPSAnTm9uIGhhaSBpbnNlcml0byBsYSB0dWEgZS1tYWlsJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdwYXNzd29yZCddID0gJ05vbiBoYWkgaW5zZXJpdG8gdW5hIHBhc3N3b3JkJzsKJGxhbmdbJ21hbXN1c2VyX2xvZ291dCddID0gJ0Rpc2Nvbm5lc3Npb25lIHV0ZW50ZSBNQU1TJzsKJGxhbmdbJ21hbXN1c2VyX2xvZ2dlZGluJ10gPSAnTG9naW4gdXRlbnRlIE1BTVMnOwokbGFuZ1snZWRpdHByb3BfaW5mb21zZyddID0gJzxmb250IGNvbG9yPSJyZWQiPjxiPkZBUkUgQVRURU5aSU9ORTwvYj4gcXVhbmRvIHNpIG1vZGlmaWNhbm8gbGUgcHJvcHJpZXTDoCBlc2lzdGVudGkgYXNzb2NpYXRlIGFpIGdydXBwaSwgcG90cmViYmVybyB2ZXJpZmljYXJzaSBkYW5uaSBlIGJsb2NjYXJlIHVuIHNpdG8gZXNpc3RlbnRlIDxpPihpbiBwYXJ0aWNvbGFyIG1vZG8gc2Ugc2kgcmlkdWNvbm8gbGUgbHVuZ2hlenplIGRlaSBjYW1waSwgZWNjKTwvaT48L2ZvbnQ+JzsKJGxhbmdbJ2luZm9fc210cHZhbGlkYXRlJ10gPSAnUXVlc3RhIGZ1bnppb25lIG5vbiB2YSBzdSBXaW5kb3dzJzsKJGxhbmdbJ21zZ19kb250Y3JlYXRldXNlcm5hbWUnXSA9ICdOb24gY3JlYXJlIHVuYSBwcm9wcmlldMOgIHBlciBpbCBub21lIHV0ZW50ZSBvIGxhIHBhc3N3b3JkIHBvaWNow6kgcXVlc3RlIHByb3ByaWV0w6Agc29ubyBpbnRlZ3JhdGUgbmVsIG1vZHVsbyBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUnOwokbGFuZ1sncHJvbXB0X2V4cG9ydGNzdiddID0gJ0VzcG9ydGEgZ2xpIHV0ZW50aSBpbiBDU1YnOwokbGFuZ1snZXhwb3J0Y3N2J10gPSAnRXNwb3J0YSc7CiRsYW5nWydpbXBvcnRjc3YnXSA9ICdJbXBvcnRhJzsKJGxhbmdbJ2FkbWluJ10gPSAnQW1taW5pc3RyYXppb25lJzsKJGxhbmdbJ2VkaXRwcm9wJ10gPSAnTW9kaWZpY2EgcHJvcHJpZXTDoDogPGVtPiVzPC9lbT4nOwokbGFuZ1snbWF4bGVuZ3RoJ10gPSAnTHVuZ2hlenphIG1hc3NpbWEnOwokbGFuZ1snY3JlYXRlZCddID0gJ0NyZWF0byc7CiRsYW5nWydzb3J0YnknXSA9ICdPcmRpbmEgcGVyJzsKJGxhbmdbJ3NvcnQnXSA9ICdPcmRpbmFtZW50byc7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICdVdGVudGkgbmVsIGdydXBwby9pIHNlbGV6aW9uYXRvL2knOwokbGFuZ1sndXNlcmxpbWl0J10gPSAnTGltaXRhIGkgcmlzdWx0YXRpIGEnOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnTm9uIMOoIHN0YXRvIHBvc3NpYmlsZSB0cm92YXJlIHVuIGNhbXBvIGUtbWFpbCBwZXIgcXVlc3RvIHV0ZW50ZS4gUG90cmViYmUgZXNzZXJlIG5lY2Vzc2FyaW8gY29udGF0dGFyZSBsXCdhbW1pbmlzdHJhdG9yZSBkZWwgc2lzdGVtYSc7CiRsYW5nWydwcm9tcHRfZm9yZ290cHdfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBwZXIgaWwgbW9kdWxvIGRlbGxhIHBhc3N3b3JkIGRpbWVudGljYXRhJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5nc19wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIHBlciBpbCBtb2R1bG8gY2FtYmlvIGltcG9zdGF6aW9uaSc7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBhIGN1aSBwYXNzYXJlIGRvcG8gaWwgbG9naW4gKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgYSBjdWkgcGFzc2FyZSBkb3BvIGxhIGRpc2Nvbm5lc3Npb25lIConOwokbGFuZ1snc29ydG9yZGVyJ10gPSAnT3JkaW5lIGRpIHZpc3VhbGl6emF6aW9uZSc7CiRsYW5nWydwcm9tcHRfbnVtcmVzZXRyZWNvcmQnXSA9ICdVbiBjZXJ0byBudW1lcm8gZGkgdXRlbnRpIMOoIGluIGZhc2UgZGkgcmlwcmlzdGlubyBkZWxsZSBwYXNzd29yZCBzbWFycml0ZS4gQWwgbW9tZW50byBxdWVzdG8gY29udGVnZ2lvIMOoIGE6JzsKJGxhbmdbJ3JlbW92ZTF3ZWVrJ10gPSAnUmltdW92aSB0dXR0aSBnbGkgaW5zZXJpbWVudGkgcGnDuSB2ZWNjaGkgZGkgdW5hIHNldHRpbWFuYSc7CiRsYW5nWydyZW1vdmUxbW9udGgnXSA9ICdSaW11b3ZpIHR1dHRpIGdsaSBpbnNlcmltZW50aSBwacO5IHZlY2NoaSBkaSB1biBtZXNlJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ1JpbXVvdmkgdHV0dGkgZ2xpIGluc2VyaW1lbnRpJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdTZWkgc2ljdXJvPyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY29kZSddID0gJ8OIIHN0YXRvIGluc2VyaXRvIHVuIGNvZGljZSBub24gdmFsaWRvLCByaXByb3ZhJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdTcGlhY2VudGUsIHNlbWJyYSBjaGUgaWwgY29kaWNlIHRlbXBvcmFuZW8gY2hlIGhhaSByaWNldnV0byBwZXIgcmVpbXBvc3RhcmUgbGEgcGFzc3dvcmQgYWwgbW9tZW50byBub24gc2lhIHZhbGlkbyAoaSBjb2RpY2kgdGVtcG9yYW5laSBwb3Nzb25vIGVzc2VyZSB1dGlsaXp6YXRpIHNvbG8gdW5hIHZvbHRhKS4gUGVyIGZhdm9yZSByaXByb3ZhLic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF92ZXJpZnl0ZW1wbGF0ZSddID0gJ01vZGVsbG8gdXRpbGl6emF0byBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGRlbCBtb2R1bG8gZGkgdmVyaWZpY2EnOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfZW1haWx0ZW1wbGF0ZSddID0gJ01vZGVsbG8gdXRpbGl6emF0byBwZXIgbFwnZS1tYWlsIGRlbGxhIHBhc3N3b3JkIGRpbWVudGljYXRhJzsKJGxhbmdbJ2Vycm9yX3Jlc2V0YWxyZWFkeXNlbnQnXSA9ICdUdSBvIHF1YWxjdW4gYWx0cm8gaGEgZ2nDoCBhdHRpdmF0byBsXCdvcGVyYXppb25lIHBlciByZWltcG9zdGFyZSBsYSBwYXNzd29yZCBkaSBxdWVzdG8gYWNjb3VudC4gQ29udHJvbGxhIGxhIHR1YSBlbWFpbCwgcG90cmVzdGkgYXZlcmUgdWx0ZXJpb3JpIGlzdHJ1emlvbmkgc3UgY29tZSByZWltcG9zdGFyZSBsYSBwYXNzd29yZCBuZWxsYSB0dWEgY2FzZWxsYSBkaSBwb3N0YSBpbiBhcnJpdm8nOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0Vycm9yZSBkaSBkYXRhYmFzZSc7CiRsYW5nWydtZXNzYWdlX2ZvcmdvdHB3ZW1haWwnXSA9ICdSaWNldmkgcXVlc3RvIG1lc3NhZ2dpbyBwZXJjaMOpIHF1YWxjdW5vIGhhIGNvbXVuaWNhdG8gYWwgbm9zdHJvIHNpdG8gY2hlIGF2ZXZpIHBlcnNvIGxhIHR1YSBwYXNzd29yZC4gU2Ugw6ggY29zw6wsIGxlZ2dpIGxlIGlzdHJ1emlvbmkgc2VndWVudGkuIFNlIG5vbiBzYWkgZGkgY29zYSBzaSB0cmF0dGEsIGFsbG9yYSBwdW9pIHRyYW5xdWlsbGFtZW50ZSBjYW5jZWxsYXJlIHF1ZXN0byBtZXNzYWdnaW8gZSB0aSByaW5ncmF6aWFtbyBwZXIgaWwgdGVtcG8gY2hlIGNpIGhhaSBkZWRpY2F0by4nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb2RpY2UnOwokbGFuZ1snbWVzc2FnZV9jb2RlJ10gPSAnSWwgY29kaWNlIHNlZ3VlbnRlIMOoIHN0YXRvIGdlbmVyYXRvIGNhc3VhbG1lbnRlIHBlciB2ZXJpZmljYXJlIGxcJ2FjY291bnQgdXRlbnRlLiBGYWNlbmRvIGNsaWMgc3VsIGxpbmsgcXVpIHNvdHRvIHRpIHZlcnLDoCBwcm9wb3N0byB1biBjYW1wbyBwZXIgaW5zZXJpcmUgcXVlc3RvIGNvZGljZS4gTm9ybWFsbWVudGUgaWwgY2FtcG8gZG92cmViYmUgZXNzZXJlIHByZWNvbXBpbGF0bywgbWEgbmVsIGNhc28gbm9uIGxvIGZvc3NlIGlsIGNvZGljZSDDqDonOwokbGFuZ1sncHJvbXB0X2xpbmsnXSA9ICdDbGlja2FuZG8gc3VsIGNvbGxlZ2FtZW50byBzZWd1ZW50ZSBzaSBhY2NlZGUgYWwgc2l0byBXZWIgaW4gY3VpIMOoIHBvc3NpYmlsZSBpbnNlcmlyZSBpbCBjb2RpY2UgcXVpIHNvcHJhIGUgcmVpbXBvc3RhcmUgbGEgcGFzc3dvcmQ6JzsKJGxhbmdbJ2xvc3RwYXNzd29yZF9lbWFpbHN1YmplY3QnXSA9ICdQYXNzd29yZCBzbWFycml0YSc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ05vbiDDqCBzdGF0byBwb3NzaWJpbGUgdHJvdmFyZSBpbCBtb2R1bG8gQ01TTWFpbGVyJzsKJGxhbmdbJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCddID0gJ0VcJyBzdGF0YSBpbnZpYXRhIHVuXCdlLW1haWwgYSAlcyBjb24gbGUgaXN0cnV6aW9uaSAgc3UgY29tZSByZWltcG9zdGFyZSBsYSB0dWEgcGFzc3dvcmQuICBHcmF6aWUnOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdEdW5xdWUgaGFpIGRpbWVudGljYXRvIG8gc21hcnJpdG8gbGEgdHVhIHBhc3N3b3JkLiBCZW5lLCBpbnNlcmlzY2kgbGUgaW5mb3JtYXppb25pIHJpY2hpZXN0ZSBpbiBxdWVzdG8gbW9kdWxvIGUsIHNlIHNhcsOgIHBvc3NpYmlsZSB0cm92YXJ0aSwgdGkgaW52aWVyZW1vIHVuXCdlLW1haWwgY29uIGxlIGlzdHJ1emlvbmkgcGVyIHJpcHJpc3RpbmFybGEuJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJ10gPSAnTW9kZWxsaSBwZXIgcGFzc3dvcmQgZGltZW50aWNhdGEnOwokbGFuZ1snbG9zdHVzZXJuYW1lX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBwZXIgbm9tZSB1dGVudGUgc21hcnJpdG8nOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnUHJvcHJpZXTDoCAlcyBub24gdHJvdmF0YSc7CiRsYW5nWydwcm9wc2ZvdW5kJ10gPSAnUHJvcHJpZXTDoCB0cm92YXRlJzsKJGxhbmdbJ2FkZHByb3AnXSA9ICdBZ2dpdW5naSBwcm9wcmlldMOgJzsKJGxhbmdbJ2Vycm9yX3JlcXVpcmVkZmllbGQnXSA9ICdVbiBjYW1wbyBvYmJsaWdhdG9yaW8gKCVzKSBlcmEgdnVvdG8nOwokbGFuZ1snaW5mb19lbXB0eXBhc3N3b3JkZmllbGQnXSA9ICdJbnNlcmlzY2kgcXVpIHVuYSBudW92YSBwYXNzd29yZCBwZXIgY2FtYmlhcmUgbGEgdHVhIHBhc3N3b3JkJzsKJGxhbmdbJ2Vycm9yX25vdGxvZ2dlZGluJ10gPSAnU2VtYnJhIGNoZSB0dSBub24gYWJiaWEgZWZmZXR0dWF0byBpbCBsb2dpbic7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnSW1wb3N0YXppb25pJzsKJGxhbmdbJ3VzZXJfcmVnaXN0cmF0aW9uJ10gPSAnUmVnaXN0cmF6aW9uZSc7CiRsYW5nWydlcnJvcl9hY2NvdW50ZXhwaXJlZCddID0gJ1F1ZXN0byBhY2NvdW50IMOoIHNjYWR1dG8nOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJ0Zvcm1hdHRhemlvbmUgZXJyYXRhIGRlbGxcJ2luZGlyaXp6byBlbWFpbCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZSddID0gJ0xhIGRhdGEgZGkgc2NhZGVuemEgbm9uIMOoIHZhbGlkYS4gQ2nDsiBwb3RyZWJiZSBlc3NlcmUgY29ycmVsYXRvIGFsIHNpc3RlbWEuIFByb3ZhIGEgaW1wb3N0YXJlIHVuIGFubm8gcHJlY2VkZW50ZS4nOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdwcm9wZXJ0eSddID0gJ0Vycm9yZSBuZWxsXCdpbXBvc3RhemlvbmUgZGVsbGEgcHJvcHJpZXTDoCAlcyBwZXIgbFwndXRlbnRlICRzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRncm91cGlkJ10gPSAnSUQgZGVsIGdydXBwbyBub24gdmFsaWRvICVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnTWFyY2F0b3JlIGRlbCBjYW1wbyBuYXNjb3N0byc7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnQ29sb3JlIGRlbCBjYW1wbyBuYXNjb3N0byc7CiRsYW5nWydoaWRkZW4nXSA9ICdOYXNjb3N0byc7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnVW5hIHByb3ByaWV0w6AgY29uIHF1ZWwgbm9tZSDDqCBnacOgIHN0YXRhIGRlZmluaXRhJzsKJGxhbmdbJ2Vycm9yX25vcHJvcGVydGllcyddID0gJ05lc3N1bmEgcHJvcHJpZXTDoCBkZWZpbml0YSc7CiRsYW5nWydlcnJvcl9ub3JlbGF0aW9ucyddID0gJ05vbiDDqCBzdGF0YSBzZWxlemlvbmF0YSBuZXNzdW5hIHByb3ByaWV0w6AgcGVyIHF1ZXN0byBncnVwcG8uIFVuIGdydXBwbyBkZXZlIGF2ZXJlIGFsbWVubyB1bmEgcHJvcHJpZXTDoCBzZWxlemlvbmF0YSAob2JibGlnYXRvcmlhLCBmYWNvbHRhdGl2YSBvIG5hc2Nvc3RhKSc7CiRsYW5nWydub2dyb3VwcyddID0gJ05lc3N1biBncnVwcG8gZGVmaW5pdG8nOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcnVwcGkgdHJvdmF0aSc7CiRsYW5nWydlcnJvcl9vbmVncm91cHJlcXVpcmVkJ10gPSAnTFwnYXBwYXJ0ZW5lbnphIGFkIGFsbWVubyB1biBncnVwcG8gw6ggb2JibGlnYXRvcmlhJzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICdSaWNoaWVkaSBsXCdhcHBhcnRlbmVuemEgYWQgYWxtZW5vIHVuIGdydXBwbyc7CiRsYW5nWydiYWNrJ10gPSAnSW5kaWV0cm8nOwokbGFuZ1snZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbSddID0gJyVzIMOoIHVuIGNhbXBvIG9iYmxpZ2F0b3Jpbyc7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnQ29udHJhc3NlZ25hIGkgY2FtcGkgb2JibGlnYXRvcmkgY29uJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRjb2xvciddID0gJ0V2aWRlbnppYSBpIGNhbXBpIG9iYmxpZ2F0b3JpIGluJzsKJGxhbmdbJ25leHQnXSA9ICdTdWNjZXNzaXZvJzsKJGxhbmdbJ2Vycm9yX2dyb3VwZXhpc3RzJ10gPSAnRXNpc3RlIGdpw6AgdW4gZ3J1cHBvIGNvbiBxdWVsIG5vbWUnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdPYmJsaWdhdG9yaW8nOwokbGFuZ1snb3B0aW9uYWwnXSA9ICdGYWNvbHRhdGl2byc7CiRsYW5nWydvZmYnXSA9ICdPZmYnOwokbGFuZ1snc2l6ZSddID0gJ0RpbWVuc2lvbmUnOwokbGFuZ1snc2l6ZWNvbW1lbnQnXSA9ICc8YnIvPihEaW1lbnNpb25lIG1hc3NpbWEgZGkgcXVhbHNpYXNpIGRpbWVuc2lvbmUgZGVsbFwnaW1tYWdpbmUgaW4gcGl4ZWwpJzsKJGxhbmdbJ2xlbmd0aCddID0gJ0x1bmdoZXp6YSc7CiRsYW5nWydsZW5ndGhjb21tZW50J10gPSAnPGJyPihDYXJhdHRlcmkgbmVsbFwnaW5wdXQgZGVsIHRlc3RvKSc7CiRsYW5nWydzZWxvcHRpb25zJ10gPSAnT3B6aW9uaSBpbiBtZW51IGEgZGlzY2VzYSwgc2VwYXJhdGUgZGEgaW50ZXJydXppb25pIGRpIHJpZ2EuIEkgdmFsb3JpIHBvc3Nvbm8gZXNzZXJlIHNlcGFyYXRpIGRhbCB0ZXN0byBjb24gdW4gY2FyYXR0ZXJlID0uIGNpb8OoOiBGZW1taW5hPWYnOwokbGFuZ1sncmFkaW9vcHRpb25zJ10gPSAnRXRpY2hldHRlIGRlaSBwdWxzYW50aSByYWRpbywgc2VwYXJhdGUgZGEgaW50ZXJydXppb25pIGRpIHJpZ2EuIEkgdmFsb3JpIHBvc3Nvbm8gZXNzZXJlIHNlcGFyYXRpIGRhbCB0ZXN0byBjb24gdW4gY2FyYXR0ZXJlID0uIGNpb8OoOiBGZW1taW5hPWYnOwokbGFuZ1sncHJvbXB0J10gPSAnUHJvbXB0JzsKJGxhbmdbJ3Byb21wdF90eXBlJ10gPSAnVGlwbyc7CiRsYW5nWyd0eXBlJ10gPSAnVGlwbyc7CiRsYW5nWydmaWVsZHN0YXR1cyddID0gJ1N0YXRvIGRlbCBjYW1wbyc7CiRsYW5nWyd1c2VkaW5sb3N0dW4nXSA9ICdDaGllZGkgaW4gTG9zdDxici8+VXNlcm5hbWUnOwokbGFuZ1sndGV4dCddID0gJ1Rlc3RvJzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2FzZWxsYSBkaSBjb250cm9sbG8nOwokbGFuZ1snbXVsdGlzZWxlY3QnXSA9ICdFbGVuY28gYSBzZWxlemlvbmUgbXVsdGlwbGEnOwokbGFuZ1sncmFkaW9idXR0b25zJ10gPSAnUHVsc2FudGkgcmFkaW8nOwokbGFuZ1snaW1hZ2UnXSA9ICdJbW1hZ2luZSc7CiRsYW5nWydlbWFpbCddID0gJ0luZGlyaXp6byBlLW1haWwnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdBcmVhIGRpIHRlc3RvJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnTWVudSBhIGRpc2Nlc2EnOwokbGFuZ1snbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnXSA9ICdCZW52ZW51dG8nOwokbGFuZ1snbG9nb3V0J10gPSAnRGlzY29ubmVzc2lvbmUnOwokbGFuZ1sncHJvbXB0X25ld2dyb3VwbmFtZSddID0gJ1VzYSBxdWVzdG8gbm9tZSBkaSBncnVwcG8nOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzJ10gPSAnQ2FtYmlhIGxlIG1pZSBpbXBvc3RhemlvbmknOwokbGFuZ1snZXJyb3JfbG9naW5mYWlsZWQnXSA9ICdBY2Nlc3NvIGZhbGxpdG8uIFF1ZXN0byBwb3RyZWJiZSBzaWduaWZpY2FyZSBjaGUgaGFpIGluc2VyaXRvIHVuIG5vbWUgdXRlbnRlIG8gdW5hIHBhc3N3b3JkIG5vbiB2YWxpZGkuIElsIHR1byBhY2NvdW50IHBvdHJlYmJlIHBlcsOyIGFuY2hlIGVzc2VyZSBzY2FkdXRvIG8gZXNzZXJlIHN0YXRvIGRpc2FiaWxpdGF0byBkYSB1biBhbW1pbmlzdHJhdG9yZS4gVmVyaWZpY2EgbnVvdmFtZW50ZSBsZSB0dWUgY3JlZGVuemlhbGkgZGkgYWNjZXNzbyBlLCBzZSBzb25vIGNvcnJldHRlLCBwb3RyZXN0aSBkb3ZlciBjb250YXR0YXJlIGxcJ2FtbWluaXN0cmF0b3JlIGRlbCBzaXRvLic7CiRsYW5nWydsb2dpbiddID0gJ1JlZ2lzdHJhdGknOwokbGFuZ1sncHJvbXB0X3NpZ25pbl9idXR0b24nXSA9ICdFdGljaGV0dGEgZGVsIHB1bHNhbnRlIHBlciBsYSByZWdpc3RyYXppb25lJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZSddID0gJ05vbWUgdXRlbnRlJzsKJGxhbmdbJ3Byb21wdF9lbWFpbCddID0gJ0luZGlyaXp6byBlLW1haWwnOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1sncHJvbXB0X3JlbWVtYmVybWUnXSA9ICdSaWNvcmRhbWkgc3UgcXVlc3RvIGNvbXB1dGVyJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0cmF0aSc7CiRsYW5nWydmb3Jnb3RwdyddID0gJ1Bhc3N3b3JkIGRpbWVudGljYXRhPyc7CiRsYW5nWydsb3N0dXNlcm5hbWUnXSA9ICdEYXRpIGRpIGFjY2Vzc28gZGltZW50aWNhdGk/JzsKJGxhbmdbJ2RlZmF1bHRzJ10gPSAnUHJlZGVmaW5pdGknOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNb2RlbGxvJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdRdWVsIG5vbWUgdXRlbnRlICglcykgw6ggZ2nDoCBpbiB1c28nOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ1VzYXJlIFNNVFAgcGVyIGxhIHZhbGlkYXppb25lIGRlZ2xpIGluZGlyaXp6aSBlLW1haWw/JzsKJGxhbmdbJ3Byb21wdF9taW5wd2xlbiddID0gJ0x1bmdoZXp6YSBtaW5pbWEgZGVsbGEgcGFzc3dvcmQnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTHVuZ2hlenphIG1hc3NpbWEgZGVsbGEgcGFzc3dvcmQnOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnTHVuZ2hlenphIG1pbmltYSBkZWwgbm9tZSB1dGVudGUnOwokbGFuZ1sncHJvbXB0X21heHVubGVuJ10gPSAnTHVuZ2hlenphIG1hc3NpbWEgZGVsIG5vbWUgdXRlbnRlJzsKJGxhbmdbJ3Byb21wdF9zZXNzaW9udGltZW91dCddID0gJ1RpbWVvdXQgZGVsbGEgc2Vzc2lvbmUgKHNlY29uZGkpJzsKJGxhbmdbJ3Byb21wdF9jb29raWVrZWVwYWxpdmUnXSA9ICdVc2EgaSBjb29raWUgcGVyIG1hbnRlbmVyZSBhdHRpdmEgbGEgc2Vzc2lvbmUnOwokbGFuZ1sncHJvbXB0X2FsbG93ZW1haWxyZWcnXSA9ICdDb25zZW50aSByZWdpc3RyYXppb25lIGUtbWFpbCc7CiRsYW5nWydwcm9tcHRfZGZsdGdyb3VwJ10gPSAnR3J1cHBvIHByZWRlZmluaXRvIHBlciBpIG51b3ZpIHV0ZW50aSc7CiRsYW5nWydjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZSddID0gJ01vZGVsbG8gbW9kaWZpY2EgaW1wb3N0YXppb25pJzsKJGxhbmdbJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnXSA9ICdMZSBwYXNzd29yZCBub24gY29pbmNpZG9ubyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWUnXSA9ICdOb21lIHV0ZW50ZSBub24gdmFsaWRvJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZCddID0gJ0xhIHBhc3N3b3JkIG5vbiDDqCB2YWxpZGEuIExhIHR1YSBwYXNzd29yZCBwb3RyZWJiZSBlc3NlcmUgdHJvcHBvIGJyZXZlLCB0cm9wcG8gbHVuZ2EgbyBub24gYWJiYXN0YW56YSByb2J1c3RhIHBlciBxdWVzdG8gc2lzdGVtYS4gUGVyIHVsdGVyaW9yaSBpbmZvcm1hemlvbmksIHZlZGVyZSBsYSBwb2xpY3kgc3VsbGEgcGFzc3dvcmQgZGVpIHNpdGkgV2ViLic7CiRsYW5nWydlcnJvcl91c2Vybm90Zm91bmQnXSA9ICdTcGlhY2VudGUsIHF1YWxjb3NhIG5vbiBoYSBmdW56aW9uYXRvLiBOb24gw6ggc3RhdG8gcG9zc2liaWxlIHRyb3ZhcmUgYWxjdW5hIGluZm9ybWF6aW9uZSBwZXIgbFwndXRlbnRlIGluZGljYXRvJzsKJGxhbmdbJ2VkaXR1c2VyJ10gPSAnTW9kaWZpY2EgdXRlbnRlJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnVmFsaWRvJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnTm9tZSB1dGVudGUnOwokbGFuZ1snc3RhdHVzJ10gPSAnU3RhdG8nOwokbGFuZ1snZXJyb3JfbWVtYmVyZ3JvdXBzJ10gPSAnUXVlc3RvIHV0ZW50ZSBub24gYXBwYXJ0aWVuZSBhZCBhbGN1biBncnVwcG8nOwokbGFuZ1snZXJyb3JfcHJvcGVydGllcyddID0gJ05lc3N1bmEgcHJvcHJpZXTDoCc7CiRsYW5nWydlcnJvcl9kdXBfcHJvcGVydGllcyddID0gJ1RlbnRhdGl2byBkaSBpbXBvcnRhemlvbmUgZGkgcHJvcHJpZXTDoCBkdXBsaWNhdGUnOwokbGFuZ1sndmFsdWUnXSA9ICdWYWxvcmUnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3J1cHBpJzsKJGxhbmdbJ3Byb3BlcnRpZXMnXSA9ICdQcm9wcmlldMOgJzsKJGxhbmdbJ3Byb3BuYW1lJ10gPSAnTm9tZSBwcm9wcmlldMOgJzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ1ZhbG9yZSBwcm9wcmlldMOgJzsKJGxhbmdbJ2FkZCddID0gJ0FnZ2l1bmdpJzsKJGxhbmdbJ2hpc3RvcnknXSA9ICdDcm9ub2xvZ2lhJzsKJGxhbmdbJ2VkaXQnXSA9ICdNb2RpZmljYSc7CiRsYW5nWydleHBpcmVzJ10gPSAnU2NhZGUnOwokbGFuZ1snc3BlY2lmeV9kYXRlJ10gPSAnU3BlY2lmaWNhcmUgbGEgZGF0YSc7CiRsYW5nWycxMmhycyddID0gJzEyIG9yZSc7CiRsYW5nWycyNGhycyddID0gJzI0IG9yZSc7CiRsYW5nWyc0OGhycyddID0gJzQ4IG9yZSc7CiRsYW5nWycxd2VlayddID0gJzEgc2V0dGltYW5hJzsKJGxhbmdbJzJ3ZWVrcyddID0gJzIgc2V0dGltYW5lJzsKJGxhbmdbJzFtb250aCddID0gJzEgbWVzZSc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBtZXNpJzsKJGxhbmdbJzZtb250aHMnXSA9ICc2IG1lc2knOwokbGFuZ1snMXllYXInXSA9ICcxIGFubm8nOwokbGFuZ1snbmV2ZXInXSA9ICdNYWknOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnTW9kdWxvIGluc3RhbGxhdG8gY29uIHN1Y2Nlc3NvLjxici8+QXNzaWN1cmFyc2kgZGkgaW1wb3N0YXJlIGkgcGVybWVzc2kgIk1vZGlmaWNhIHByb3ByaWV0w6AgTUFNUyIuICBFXCcgaW5vbHRyZSBjb25zaWdsaWF0byBkaSBpbnN0YWxsYXJlIGlsIG1vZHVsbyBDYXB0Y2hhLiBOZWwgY2FzbyBzaWEgaW5zdGFsbGF0bywgc2Fyw6AgcmljaGllc3RhIGxhIGNvbnZhbGlkYSBkaSB1blwnaW1tYWdpbmUgY2FwdGNoYSBvbHRyZSBhbCBub21lIHV0ZW50ZSBlIGFsbGEgcGFzc3dvcmQgcGVyIGFjY2VkZXJlLiBDacOyIGhhIGxvIHNjb3BvIGRpIHByZXZlbmlyZSBhdHRhY2NoaSBtYWxldm9saS4gIDxzdHJvbmc+Tm90YTo8L3N0cm9uZz4gSWwgcGFyYW1ldHJvIG5vY2FwdGNoYSBwdcOyIGVzc2VyZSB1dGlsaXp6YXRvIHBlciBkaXNhYmlsaXRhcmUgcXVlc3RhIGZ1bnppb25hbGl0w6AgYW5jaGUgcXVhbG9yYSBzaWEgaW5zdGFsbGF0byBpbCBtb2R1bG8gQ2FwdGNoYS4iJzsKJGxhbmdbJ3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1sncmVwZWF0cGFzc3dvcmQnXSA9ICdBbmNvcmEnOwokbGFuZ1snZXJyb3JfZ3JvdXBuYW1lX2V4aXN0cyddID0gJ0lsIGdydXBwbyBjb24gcXVlbCBub21lIGVzaXN0ZSBnacOgJzsKJGxhbmdbJ2VkaXRncm91cCddID0gJ01vZGlmaWNhIGdydXBwbyc7CiRsYW5nWydzdWJtaXQnXSA9ICdJbnZpYSc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGxhJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0VsaW1pbmEnOwokbGFuZ1snY29uZmlybV9lZGl0Z3JvdXAnXSA9ICdTZWkgc2ljdXJvIGNoZSBxdWVzdGUgc2lhbm8gbGUgaW1wb3N0YXppb25pIGNvcnJldHRlIHBlciBxdWVzdG8gZ3J1cHBvP1xcbkxhIGRpc2F0dGl2YXppb25lIGRpIHVuYSBwcm9wcmlldMOgIG5vbiBlbGltaW5lcsOgIGFsY3VuYSB2b2NlIG5lbGxhIHRhYmVsbGEgZGVsbGUgcHJvcHJpZXTDoCBwZXIgcXVlc3RvIGdydXBwby91dGVudGUuIFNlbXBsaWNlbWVudGUgbm9uIHNhcmFubm8gZGlzcG9uaWJpbGkuJzsKJGxhbmdbJ2FyZXlvdXN1cmVfZGVsZXRlZ3JvdXAnXSA9ICdTZWkgc2ljdXJvIGRpIHZvbGVyIGVsaW1pbmFyZSBxdWVzdG8gZ3J1cHBvPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnU2VpIHNpY3VybyBkaSB2b2xlciBlbGltaW5hcmUgY29tcGxldGFtZW50ZSBxdWVzdGEgcHJvcHJpZXTDoD9cXG5JbiBxdWVzdG8gbW9kbyB2ZXJyYW5ubyBjYW5jZWxsYXRlIGFuY2hlIHR1dHRlIGxlIHZvY2kgdXRlbnRlIHBlciBxdWVzdGEgcHJvcHJpZXTDoC4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnUGFyYW1ldHJpIGluc3VmZmljaWVudGknOwokbGFuZ1snaWQnXSA9ICdJRCc7CiRsYW5nWyduYW1lJ10gPSAnTm9tZSc7CiRsYW5nWydlcnJvcl9jYW50YWRkcHJvcCddID0gJ1Byb2JsZW1hIGR1cmFudGUgbFwnYWdnaXVudGEgZGVsbGEgcHJvcHJpZXTDoCc7CiRsYW5nWydlcnJvcl9jYW50YWRkZ3JvdXByZWxuJ10gPSAnUHJvYmxlbWEgZHVyYW50ZSBsXCdhZ2dpdW50YSBkZWxsYSByZWxhemlvbmUgZGkgZ3J1cHBvJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRncm91cCddID0gJ1Byb2JsZW1hIGR1cmFudGUgbFwnYWdnaXVudGEgZGVsIGdydXBwbyc7CiRsYW5nWydlcnJvcl9jYW50YXNzaWdudXNlciddID0gJ1Byb2JsZW1hIGR1cmFudGUgbFwnYWdnaXVudGEgZGkgdW4gdXRlbnRlIGFkIHVuIGdydXBwbyc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdGRlbGV0ZXByb3BlcnR5J10gPSAnUHJvYmxlbWEgZHVyYW50ZSBsXCdlbGltaW5hemlvbmUgZGkgdW5hIHByb3ByaWV0w6AnOwokbGFuZ1snZXJyb3JfY291bGRub3RmaW5kZW1haWwnXSA9ICdOb24gw6ggc3RhdG8gcG9zc2liaWxlIHRyb3ZhcmUgdW4gaW5kaXJpenpvIGUtbWFpbCc7CiRsYW5nWydlcnJvcl9kZXN0aW5hdGlvbm5vdHdyaXRhYmxlJ10gPSAnTmVzc3VuIHBlcm1lc3NvIGRpIHNjcml0dHVyYSBuZWxsYSBkaXJlY3RvcnkgZGkgZGVzdGluYXppb25lJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXJhbXMnXSA9ICdQYXJhbWV0cmkgbm9uIHZhbGlkaSc7CiRsYW5nWydlcnJvcl9ub2dyb3VwcyddID0gJ05vbiDDqCBzdGF0byBwb3NzaWJpbGUgdHJvdmFyZSBhbGN1biBncnVwcG8nOwokbGFuZ1snYXBwbHlmaWx0ZXInXSA9ICdBcHBsaWNhJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRyYSc7CiRsYW5nWyd1c2VyZmlsdGVyJ10gPSAnTm9tZSB1dGVudGUgRXNwcmVzc2lvbmUgcmVnb2xhcmUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcml6aW9uZSc7CiRsYW5nWydncm91cG5hbWUnXSA9ICdOb21lIGdydXBwbyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3NvIG5lZ2F0byc7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yZSc7CiRsYW5nWydhZGRncm91cCddID0gJ0FnZ2l1bmdpIGdydXBwbyc7CiRsYW5nWydpbXBvcnRncm91cCddID0gJ0ltcG9ydGEgZ3J1cHBvJzsKJGxhbmdbJ2FkZHVzZXInXSA9ICdBZ2dpdW5naSB1dGVudGUnOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ1V0ZW50aSB0cm92YXRpIGNoZSBjb3JyaXNwb25kb25vIGFpIGNyaXRlcmknOwokbGFuZ1snZ3JvdXAnXSA9ICdHcnVwcG8nOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdTZWxlemlvbmEgZ3J1cHBvJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ01vZGVsbG8gcmVnaXN0cmF6aW9uZSc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIGRpc2Nvbm5lc3Npb25lJzsKJGxhbmdbJ2xvZ2luX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBkaSBsb2cgaW4nOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJlbnplJzsKJGxhbmdbJ3VzZXJzJ10gPSAnVXRlbnRpJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01lbWJlcnMgQXJlYSAoTUFNUyknOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGU6IGNvbnNlbnRlIGFnbGkgdXRlbnRpIGRpIGFjY2VkZXJlIGFsIGZyb250ZW5kIGRlbCB0dW8gc2l0byc7CiRsYW5nWydkZWZhdWx0ZnJvbnRwYWdlJ10gPSAnUGFnaW5hIGluaXppYWxlIHByZWRlZmluaXRhJzsKJGxhbmdbJ2xhc3RhY2Nlc3NlZHBhZ2UnXSA9ICdVbHRpbWEgcGFnaW5hIHZpc2l0YXRhJzsKJGxhbmdbJ290aGVycGFnZSddID0gJ0FsdHJhIHBhZ2luYTonOwokbGFuZ1snY2FwdGNoYV90aXRsZSddID0gJ0NvbmZlcm1hIGRpIG5vbiBlc3NlcmUgdW4gcm9ib3QuJzsKJGxhbmdbJ2ZpZWxkZGVmX01BTVNTaW5nbGVTZWxlY3QnXSA9ICdVdGVudGkgTUFNUyBTZWxlemlvbmUgc2luZ29sYSc7CiRsYW5nWydmaWVsZGRlZl9NQU1TTXVsdGlTZWxlY3QnXSA9ICdVdGVudGkgTUFNUyBTZWxlemlvbmUgbXVsdGlwbGEnOwokbGFuZ1snZmllbGRkZWZfTUFNU0dyb3Vwc1NpbmdsZVNlbGVjdCddID0gJ0dydXBwaSBNQU1TIFNlbGV6aW9uZSBzaW5nb2xhJzsKJGxhbmdbJ2ZpZWxkZGVmX01BTVNHcm91cHNNdWx0aVNlbGVjdCddID0gJ0dydXBwaSBNQU1TIHNlbGV6aW9uZSBtdWx0aXBsYSc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX29wdGlvbnMnXSA9ICdHcnVwcGkgTUFNUyc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX211bHRpc2VsZWN0X2hlbHAnXSA9ICdQZXIgZmF2b3JlLCBzZWxlemlvbmEgdW5vIG8gcGnDuSBkZWkgZ3J1cHBpIE1BTVMgZGlzcG9uaWJpbGknOwokbGFuZ1snZmllbGRkZWZfbWFtc19maWVsZHNfaGVscCddID0gJ1BlciBmYXZvcmUsIHNlbGV6aW9uYSBpbCBjYW1wbyBwZXJzb25hbGl6emF0byBkYSBNQU1TIGRhbCBxdWFsZSBlc3RyYXJyZSBpIHZhbG9yaSBjaGUgdmVycmFubm8gbW9zdHJhdGkgbmVsIGNhbXBvIGRpIHNlbGV6aW9uZS48YnI+Tm90YSBjaGUgaWwgY2FtcG8gc2VsZXppb25hdG8gZG92cmViYmUgYXZlcmUgdmFsb3JpIHVuaXZvY2kgaW4gdHV0dGUgbGUgdm9jaSBkZWdsaSB1dGVudGkgRkVVLic7CiRsYW5nWydmaWVsZGRlZl9tYW1zX2ZpZWxkcyddID0gJ1NlbGV6aW9uYSBpbCBwcmltbyBjYW1wbyBNQU1TJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfZmllbGRzMiddID0gJ1NlbGV6aW9uYSBpbCBzZWNvbmRvIGNhbXBvIE1BTVMnOwokbGFuZ1snZmllbGRkZWZfdXNlcnMnXSA9ICdVdGVudGknOwokbGFuZ1snZmllbGRkZWZfdXNlX3VzZXJuYW1lJ10gPSAnVXNhIGlsIGNhbXBvIG5vbWUgdXRlbnRlJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZV91aWQnXSA9ICdBbnRlcG9uaSBJRCBVdGVudGUnOwokbGFuZ1snZmllbGRkZWZfdXNlX3VpZF9oZWxwJ10gPSAnQW50ZXBvbmkgbFwnSUQgdXRlbnRlIGFsbGUgb3B6aW9uaSBpbiBmb3JtYXRvICBbbl0gLic7CiRsYW5nWydmaWVsZGRlZl91c2VfdXNlcm5hbWVfaGVscCddID0gJ1NlIGF0dGl2aSBxdWVzdGEgb3B6aW9uZSwgaSBjYW1waSBwZXJzb25hbGl6emF0aSBzb3R0b3N0YW50aSBub24gdmVycmFubm8gdXRpbGl6emF0aS4nOwokbGFuZ1snZmllbGRkZWZfc2VwYXJhdG9yX2NociddID0gJ0NhcmF0dGVyZSBzZXBhcmF0b3JlJzsKJGxhbmdbJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHJfaGVscCddID0gJ0NhcmF0dGVyZSB1dGlsaXp6YXRvIHBlciBzZXBhcmFyZSBjYW1wbyAxIGUgY2FtcG8gMiBzdWwgdGVzdG8gZGVsbGUgb3B6aW9uaS4gSWwgcHJlZGVmaW5pdG8gw6ggdW5vIHNwYXppby4nOwokbGFuZ1snZ2EnXSA9ICdHQTEuMi4xODUxMzgxMDY2LjE2NTc1NDk1NzAnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZpbmQnXSA9ICdFZGl0YXIgVXRpbGl6YWRvcic7Cj8+]]></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.ajax_handler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmZpbmFsIGNsYXNzIGFqYXhfaGFuZGxlcg0Kew0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYXBpKCkNCiAgew0KICAgIHN0YXRpYyAgJGFwaTsNCiAgICANCiAgICBpZighaXNzZXQoJGFwaSkpDQogICAgew0KICAgICAgJGFwaSA9IGFwaTo6Z2V0SW5zdGFuY2UoKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRhcGk7DQogIH0NCg0KICAvKioNCiAgICogYmFja2VuZCBmdW5jdGlvbnMNCiAgICovDQogIA0KICAvKioNCiAgICogZnJvbnRlbmQgZnVuY3Rpb25zDQogICAqLw0KICANCiAgLyoqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmZV9pc19sb2dnZWRfaW4oKQ0KICB7DQogICAgcmV0dXJuIChib29sKXNlbGY6OmFwaSgpLT5Mb2dnZWRJbigpOw0KICB9DQogIA0KICANCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.api.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogTUFNUyBBUEkNCiAqDQogKiBBIGNsYXNzIHRvIGV4cG9zZSB0aGUgTUFNUyBBUEkgbWV0aG9kcyBhdmFpbGFibGUNCiAqIHRvIGFsbCBvdGhlciBtb2R1bGVzLg0KICoNCiAqIEBzaW5jZSAxLjENCiAqIEBhdXRob3IgRmVybmFuZG8gTW9yZ2FkbyAgYWthIEpvIE1vcmcNCiAqDQogKiBAcGFja2FnZSBNQU1TDQogKi8NCg0KbmFtZXNwYWNlIE1BTVM7DQoNCmNsYXNzIGFwaQ0Kew0KICAvKioNCiAgICogdGhlIGVycm9yIG1vZGVzIHdpbGwgYmUgdXNlZCBvbmx5IG9uIG1ldGhvZHMgdGhhdCBjYW4gdGhyb3cgZXhjZXB0aW9ucw0KICAgKiBUaGF0IHdvbid0IGJlIHRoZSBjYXNlIGZvciBhbGwgbWV0aG9kcw0KICAgKi8NCiAgLyoqDQogICAqIEBjb25zdCBpbnQgTk9ORSB0aGUgYXBpIHdvbid0IHRocm93IGV4Y2VwdGlvbnMNCiAgICovDQogIHB1YmxpYyBjb25zdCBFUlJPUl9NT0RFX05PTkUgPSAwOw0KICAvKioKICAgKiBAY29uc3QgaW50IEVYQ0VQVElPTiB0aGUgYXBpIHdpbGwgdGhyb3cgZXhjZXB0aW9ucwogICAqLwogIHB1YmxpYyBjb25zdCBFUlJPUl9NT0RFX0VYQ0VQVElPTiA9IDE7CiAgcHJpdmF0ZSBpbnQgJF9lcnJvcl9tb2RlID0gc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT047CiAgDQogIHByaXZhdGUgc3RhdGljIGFycmF5ICRfZXJyb3JfbW9kZXMgPSBbDQogICAgc2VsZjo6RVJST1JfTU9ERV9OT05FLA0KICAgIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9ODQogIF07DQogIA0KICB1c2UgXENNU01TRXh0XGNvcmVcVFNpbmdsZXRvbjsNCiAgDQogIC8qKg0KICAgKiBUaGUgZXJyb3IgbW9kZXMgd2lsbCBiZSB1c2VkIG9ubHkgb24gbWV0aG9kcw0KICAgKiB0aGF0IGNhbiB0aHJvdyBleGNlcHRpb25zLg0KICAgKiBUaGF0IHdvbid0IGJlIHRoZSBjYXNlIGZvciBhbGwgbWV0aG9kcw0KICAgKg0KICAgKiBAcGFyYW0gJG1vZGUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRFcnJvck1vZGUoJG1vZGUpCiAgewogICAgaWYoICFcaW5fYXJyYXkoJG1vZGUsIHNlbGY6OiRfZXJyb3JfbW9kZXMsIFRSVUUpICkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZXJyb3IgbW9kZScpOwogICAgfQogICAgCiAgICAkdGhpcy0+X2Vycm9yX21vZGUgPSAkbW9kZTsKICAgIAogICAgcmV0dXJuICR0aGlzOwogIH0KICANCiAgLyoqDQogICAqIEByZXR1cm4gaW50DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0RXJyb3JNb2RlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9lcnJvcl9tb2RlOwogIH0KICANCiAgLyoqDQogICAqIEByZXR1cm4gXENtc01vZHVsZSBNQU1TDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0TWFtcygpDQogIHsNCiAgICByZXR1cm4gdXRpbHM6OmdldF9tb2QoKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIFJldHJpZXZlcyB0aGUgVXNlciBNYW5pcHVsYXRvciBmcm9tIE1BTVMuDQogICAqDQogICAqIEdpdmVuIHRoZSB3YXkgTUFNUyB3b3JrcywgdGhlIE1hbmlwdWxhdG9yIGNhbiBiZSBleHRlbmRlZA0KICAgKiBieSBleHRlcm5hbCBtb2R1bGVzLg0KICAgKiBUaGlzIHJldHVybnMgdGhlIE1BTVMgTWFuaXB1bGF0b3IgY3VycmVudGx5IGluIHVzZS4NCiAgICoNCiAgICogQHJldHVybiBcTUFNU01hbmlwdWxhdG9yDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0TWFuaXB1bGF0b3IoKQogIHsKICAgIHJldHVybiAkdGhpcy0+R2V0TWFtcygpLT5HZXRNYW5pcHVsYXRvcigpOwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGlzX2ZhaWx1cmVfdHVwbGUoJHJlc3VsdCkKICB7CiAgICByZXR1cm4gXGlzX2FycmF5KCRyZXN1bHQpICYmIFxhcnJheV9rZXlfZXhpc3RzKDAsICRyZXN1bHQpICYmIEZBTFNFID09PSAkcmVzdWx0WzBdOwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGlzX3N1Y2Nlc3NfdHVwbGUoJHJlc3VsdCkKICB7CiAgICByZXR1cm4gXGlzX2FycmF5KCRyZXN1bHQpICYmIFxhcnJheV9rZXlfZXhpc3RzKDAsICRyZXN1bHQpICYmIFRSVUUgPT09ICRyZXN1bHRbMF07CiAgfQogIAogIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2ZhaWx1cmVfbWVzc2FnZSgkcmVzdWx0LCAkZmFsbGJhY2sgPSAnT3BlcmF0aW9uIGZhaWxlZCcpCiAgewogICAgaWYoIFxpc19hcnJheSgkcmVzdWx0KSAmJiBpc3NldCgkcmVzdWx0WzFdKSAmJiBcaXNfc3RyaW5nKCRyZXN1bHRbMV0pICYmICcnICE9PSAkcmVzdWx0WzFdICkKICAgIHsKICAgICAgcmV0dXJuICRyZXN1bHRbMV07CiAgICB9CiAgICAKICAgIHJldHVybiAkZmFsbGJhY2s7CiAgfQogIA0KICANCiAgLyoqDQogICAqIGZyb20gdGhlIGFic3RyYWN0IGNsYXNzDQogICAqLw0KICANCiAgDQogIC8qKg0KICAgKiBlbmQgb2YgZnJvbSB0aGUgYWJzdHJhY3QgY2xhc3MNCiAgICovDQogIA0KICAvKioNCiAgICogZnJvbSB1c2VycyBtYW5pcHVsYXRvcg0KICAgKi8NCiAgDQogIA0KICAvKioNCiAgICogQHBhcmFtICR1aWQNCiAgICoNCiAgICogQHJldHVybiBmYWxzZXxzdHJpbmcNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRFbmNyeXB0aW9uS2V5KCR1aWQgPSAtMSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0RW5jcnlwdGlvbktleSgkdWlkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkZGF0YQ0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIERlY3J5cHRVc2VyRGF0YSgkdWlkLCAkZGF0YSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVjcnlwdFVzZXJEYXRhKCR1aWQsICRkYXRhKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiBAcmV0dXJuIG1peGVkDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQ291bnRUZW1wQ29kZVJlY29yZHMoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Db3VudFRlbXBDb2RlUmVjb3JkcygpOw0KICB9DQogIA0KICAvKioKICAgKiBAcGFyYW0gJGV4cGlyeWNvZGUKICAgKgogICAqIEByZXR1cm4gXE1BTVNcYXBpCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEV4cGlyZVRlbXBDb2RlcygkZXhwaXJ5Y29kZSkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkV4cGlyZVRlbXBDb2RlcygkZXhwaXJ5Y29kZSk7CiAgICAKICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSAkdGhpcy0+X2Vycm9yX21vZGUpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGV4cGlyZSB0ZW1wIGNvZGVzJyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIC8qKgogICAqIEBwYXJhbSAkdWlkCiAgICoKICAgKiBAcmV0dXJuIFxNQU1TXGFwaQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyVGVtcENvZGUoJHVpZCkKICB7CiAgICAkcmVzdWx0ID0gICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5SZW1vdmVVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAKICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSAkdGhpcy0+X2Vycm9yX21vZGUpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IHJlbW92ZSB0ZW1wIGNvZGVzJyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGludA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJUZW1wQ29kZSgkdWlkKQ0KICB7DQogICAgcmV0dXJuIChpbnQpJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJUZW1wQ29kZSgkdWlkKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKiBAcGFyYW0gJGNvZGUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyVGVtcENvZGUoJHVpZCwgJGNvZGUpCiAgewogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyVGVtcENvZGUoJHVpZCwgJGNvZGUpOwogICAgCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBzZXQgdGVtcCBjb2RlJyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICogQHBhcmFtICRuZXduYW1lDQogICAqIEBwYXJhbSAkcHJvbXB0DQogICAqIEBwYXJhbSAkbGVuZ3RoDQogICAqIEBwYXJhbSAkdHlwZQ0KICAgKiBAcGFyYW0gJG1heGxlbmd0aA0KICAgKiBAcGFyYW0gJGF0dHJpYnMNCiAgICogQHBhcmFtICRmb3JjZV91bmlxdWUNCiAgICogQHBhcmFtICRlbmNyeXB0DQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydHlEZWZuKAogICAgJG5hbWUsCiAgICAkbmV3bmFtZSwNCiAgICAkcHJvbXB0LA0KICAgICRsZW5ndGgsDQogICAgJHR5cGUsDQogICAgJG1heGxlbmd0aCA9IDAsDQogICAgJGF0dHJpYnMgPSAnJywNCiAgICAkZm9yY2VfdW5pcXVlID0gMCwNCiAgICAkZW5jcnlwdCA9IDANCiAgKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+U2V0UHJvcGVydHlEZWZuKAogICAgICAkbmFtZSwKICAgICAgJG5ld25hbWUsCiAgICAgICRwcm9tcHQsCiAgICAgICRsZW5ndGgsCiAgICAgICR0eXBlLAogICAgICAkbWF4bGVuZ3RoLAogICAgICAkYXR0cmlicywKICAgICAgJGZvcmNlX3VuaXF1ZSwKICAgICAgJGVuY3J5cHQKICAgICk7CiAgICAKICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSAkdGhpcy0+X2Vycm9yX21vZGUpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IHNldCBwcm9wZXJ0eSBkZWZpbml0aW9uJyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm4oJG5hbWUpCiAgewogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVQcm9wZXJ0eURlZm4oJG5hbWUpOwogICAgCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkgJyAuICRuYW1lKTsKICAgIH0KICAgIAogICAgcmV0dXJuICR0aGlzOwogIH0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdGl0bGUNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoJHRpdGxlKQogIHsKICAgICRyZXN1bHQgPSAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoJHRpdGxlKTsKICAgIAogICAgaWYoJHRoaXMtPmlzX2ZhaWx1cmVfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgIGlmKHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSAkdGhpcy0+X2Vycm9yX21vZGUpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPmdldF9mYWlsdXJlX21lc3NhZ2UoJHJlc3VsdCwgJ0NvdWxkIG5vdCBnZXQgcHJvcGVydHkgZ3JvdXAgcmVsYXRpb25zJykpOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIAogICAgcmV0dXJuIFxpc19hcnJheSgkcmVzdWx0KSA/ICRyZXN1bHQgOiBbXTsKICB9CiAgDQogIA0KICAvKioNCiAgICogUmV0dXJuIHRoZSB1bml4IHRpbWVzdGFtcCBvZiB0aGUgdXNlcidzIGV4cGlyeSBkYXRlDQogICAqIG9yIGZhbHNlOw0KICAgKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGZhbHNlfGludA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEV4cGlyeURhdGUoJHVpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0RXhwaXJ5RGF0ZSgkdWlkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGV4cGlyeSBkYXRlJyk7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICR1aWQNCiAgICoNCiAgICogQHJldHVybiBib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQ2FuVXNlckxvZ2luKCR1aWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkNhblVzZXJMb2dpbigkdWlkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIElzQWNjb3VudEV4cGlyZWQoJHVpZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+SXNBY2NvdW50RXhwaXJlZCgkdWlkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHlSZWxhdGlvbnMoJHVpZCkNCiAgew0KICAgIHJldHVybiAoYXJyYXkpJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJQcm9wZXJ0eVJlbGF0aW9ucygkdWlkKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJGdycGlkDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRncnBpZCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdycGlkKTsKICAgIAogICAgaWYoJHRoaXMtPmlzX2ZhaWx1cmVfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgICRtZXNzYWdlID0gJHRoaXMtPmdldF9mYWlsdXJlX21lc3NhZ2UoJHJlc3VsdCwgJ0NvdWxkIG5vdCBnZXQgZ3JvdXAgcHJvcGVydHkgcmVsYXRpb25zJyk7CiAgICAgIAogICAgICBpZignbm90Zm91bmQnID09PSAkbWVzc2FnZSkKICAgICAgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICAKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtZXNzYWdlKTsKICAgIH0KICAgIAogICAgcmV0dXJuIFxpc19hcnJheSgkcmVzdWx0KSA/ICRyZXN1bHQgOiBbXTsKICB9CiAgDQogIC8qKg0KICAgKiBAcGFyYW0gICAgICAkZ3JwaWQNCiAgICogQHBhcmFtICAgICAgJHByb3BuYW1lDQogICAqIEBwYXJhbSAgICAgICRzb3J0a2V5DQogICAqIEBwYXJhbSAgICAgICRsb3N0dW4NCiAgICogQHBhcmFtICAgICAgJHZhbA0KICAgKiBAcGFyYW0gbnVsbCAkcmV0dXJuDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCRncnBpZCwgJHByb3BuYW1lLCAkc29ydGtleSwgJGxvc3R1biwgJHZhbCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkFkZEdyb3VwUHJvcGVydHlSZWxhdGlvbigkZ3JwaWQsICRwcm9wbmFtZSwgJHNvcnRrZXksICRsb3N0dW4sICR2YWwpOwogICAgCiAgICBpZighJHJlc3VsdFswXSAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc3VsdFsxXSk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJGdycGlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ3JwaWQpCiAgewogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVBbGxHcm91cFByb3BlcnR5UmVsYXRpb25zKCRncnBpZCk7CiAgICAKICAgIGlmKCEkcmVzdWx0WzBdICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSAkdGhpcy0+X2Vycm9yX21vZGUpCiAgICB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIA0KICAvKioNCiAgICogQHBhcmFtICRncnBpZA0KICAgKiBAcGFyYW0gJHByb3BuYW1lDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCRncnBpZCwgJHByb3BuYW1lKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCRncnBpZCwgJHByb3BuYW1lKTsKICAgIAogICAgaWYoISRyZXN1bHRbMF0gJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09ICR0aGlzLT5fZXJyb3JfbW9kZSkKICAgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIA0KICAvKioNCiAgICogQWRkIGEgc2luZ2xlIHByb3BlcnR5IGRlZmluaXRpb24NCiAgICoNCiAgICogQHBhcmFtICRuYW1lDQogICAqICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5DQogICAqIEBwYXJhbSAkcHJvbXB0DQogICAqICAgICAgICAgICAgICAgICAgVGhlIHByb21wdCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyDQogICAqICAgICAgICAgICAgICAgICAgbm90ZSwgdGhpcyB3aWxsIGJlIExhbmdpZmllZA0KICAgKiBAcGFyYW0gJHR5cGUNCiAgICogICAgICAgICAgICAgICAgICBUaGUgdHlwZSBvZiB0aGUgcHJvcGVydHkNCiAgICogICAgICAgICAgICAgICAgICAwID0gdGV4dCwgMSA9IGNoZWNrYm94LCAyID0gZW1haWwNCiAgICogQHBhcmFtICRsZW5ndGgNCiAgICogQHBhcmFtICRtYXhsZW5ndGgNCiAgICogQHBhcmFtICRhdHRyaWJzDQogICAqIEBwYXJhbSAkZm9yY2VfdW5pcXVlDQogICAqIEBwYXJhbSAkZW5jcnlwdA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEFkZFByb3BlcnR5RGVmbigKICAgICRuYW1lLAogICAgJHByb21wdCwKICAgICR0eXBlLAogICAgJGxlbmd0aCwKICAgICRtYXhsZW5ndGggPSAwLAogICAgJGF0dHJpYnMgPSAnJywKICAgICRmb3JjZV91bmlxdWUgPSAwLAogICAgJGVuY3J5cHQgPSAwCiAgKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+QWRkUHJvcGVydHlEZWZuKCRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCwgJGF0dHJpYnMsICRmb3JjZV91bmlxdWUsICRlbmNyeXB0KTsKICAgIAogICAgaWYoISRyZXN1bHRbMF0gJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09ICR0aGlzLT5fZXJyb3JfbW9kZSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOwogICAgfQogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIA0KICAvKioNCiAgICogQHBhcmFtICRuYW1lDQogICAqIEBwYXJhbSAkZXh0cmENCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm5FeHRyYSgkbmFtZSwgJGV4dHJhKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFByb3BlcnR5RGVmbkV4dHJhKCRuYW1lLCAkZXh0cmEpOw0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEFkZCBhIHNpbmdsZSBwcm9wZXJ0eSBkZWZpbml0aW9uDQogICAqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKiBAcGFyYW0gJG9wdGlvbnMNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRTZWxlY3RPcHRpb25zKCRuYW1lLCAkb3B0aW9ucykKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkFkZFNlbGVjdE9wdGlvbnMoJG5hbWUsICRvcHRpb25zKTsKICAgIAogICAgaWYoISRyZXN1bHRbMF0gJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09ICR0aGlzLT5fZXJyb3JfbW9kZSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5nZXRfZmFpbHVyZV9tZXNzYWdlKCRyZXN1bHQsICdDb3VsZCBub3QgYWRkIHNlbGVjdCBvcHRpb25zJykpOwogICAgfQogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIA0KICAvKioNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm5zKCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkRlbGV0ZVByb3BlcnR5RGVmbnMoKTsKICAgIAogICAgaWYoISRyZXN1bHRbMF0gJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09ICR0aGlzLT5fZXJyb3JfbW9kZSkKICAgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVTZWxlY3RPcHRpb25zKCRuYW1lKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlU2VsZWN0T3B0aW9ucygkbmFtZSk7CiAgICAKICAgIGlmKCEkcmVzdWx0WzBdICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSAkdGhpcy0+X2Vycm9yX21vZGUpCiAgICB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIA0KICAvKioNCiAgICogQHBhcmFtICRwcmVmaXgNCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCRwcmVmaXggPSAndXNlcicpCiAgewogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCRwcmVmaXgpOwogICAgCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZW5lcmF0ZSByYW5kb20gdXNlcm5hbWUnKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIA0KICAvKioNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBDbGVhclByb3BlcnR5Q2FjaGUoKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkNsZWFyUHJvcGVydHlDYWNoZSgpOw0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZuKCRuYW1lKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0UHJvcGVydHlEZWZuKCRuYW1lKTsKICAgIAogICAgaWYoISRyZXN1bHQgJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09ICR0aGlzLT5fZXJyb3JfbW9kZSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IHByb3BlcnR5IGRlZmluaXRpb24nKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm5zKCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFByb3BlcnR5RGVmbnMoKTsKICAgIAogICAgaWYoISRyZXN1bHQgJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09ICR0aGlzLT5fZXJyb3JfbW9kZSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IHByb3BlcnR5IGRlZmluaXRpb25zJyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0OwogIH0KICANCiAgLyoqDQogICAqIFJldHVybnMgc2VsZWN0IG9wdGlvbnMgYXMgb25lIHNpbXBsZSBvciAyIGRpbWVuc2lvbmFsIGFycmF5DQogICAqDQogICAqIEBwYXJhbSBTdHJpbmcgJGNvbnRyb2xuYW1lIC0gbmFtZSBvZiB0aGUgZHJvcGRvd24gYXMgaW4gdGhlIHByb3BkZWZuIHRhYmxlDQogICAqIEBwYXJhbSBpbnQgICAgJGRpbSAgICAgICAgIC0gZGltZW5zaW9uIG9mIHRoZSBhcnJheQ0KICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkZGltID09IDEsIHJldHVybnMgYSAxIGRpbWVuc2lvbmFsIGFycmF5IHRleHQ9Pm5hbWUNCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJGRpbSA9PSAyLCByZXR1cm5zIGEgMiBkaW1lbnNpb25hbCBhcnJheSwgZWFjaCBpdGVtIGJlaW5nIGFuDQogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IHdpdGggcHJvcGVydGllcyAnb3B0aW9uX25hbWUnLCAnb3B0aW9uX3RleHQnLCAnY29udHJvbF9uYW1lJy4NCiAgICoNCiAgICogQHJldHVybiBhcnJheXxib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0U2VsZWN0T3B0aW9ucygkY29udHJvbG5hbWUsICRkaW0gPSAxKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0U2VsZWN0T3B0aW9ucygkY29udHJvbG5hbWUsICRkaW0pOwogICAgCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgc2VsZWN0IG9wdGlvbnMnKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIA0KICAvKioNCiAgICogTG9nIHRoZSB1c2VyIGludG8gdGhlIHNpdGUuDQogICAqIFRoaXMgY2hlY2tzIHRoZSB1c2VyIHBhc3N3b3JkLCBhbmQgcHJlZmVyZW5jZXMgYWJvdXQgZHVwbGljYXRlIGxvZ2lucyBhbmQgb3RoZXIgdGhpbmdzIHRoZW4gbWFya3MgdGhlIHVzZXINCiAgICogYXMgbG9nZ2VkIGluIHdpdGggdGhlIGFwcHJvcHJpYXRlIGRhdGFiYXNlIGNoYW5nZS4gIEl0IGRvZXMgbm90IHNlbmQgZXZlbnRzLg0KICAgKg0KICAgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZQ0KICAgKiBAcGFyYW0gc3RyaW5nICRwYXNzd29yZCAgICAgVGhlIHBsYWludGV4dCBwYXNzd29yZA0KICAgKiBAcGFyYW0gc3RyaW5nICRncm91cHMgICAgICAgQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IHRoZSB1c2VyIG11c3QgYmUgYSBtZW1iZXIgb2YuDQogICAqIEBwYXJhbSBzdHJpbmcgJGlnbm9yZWQNCiAgICogQHBhcmFtIGJvb2wgICAkZm9yY2VfbG9nb3V0IE9wdGlvbmFsbHkgZm9yY2UgdGhlIHVzZXIgdG8gbG9nb3V0IGJlZm9yZSBsb2dnaW5nIGhpbSBpbiBhZ2Fpbi4NCiAgICoNCiAgICogQHJldHVybiBpbnQNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBMb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3VwcyA9ICcnLCAkaWdub3JlZCA9IEZBTFNFLCAkZm9yY2VfbG9nb3V0ID0gRkFMU0UpCiAgewogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Mb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3VwcywgJGlnbm9yZWQsICRmb3JjZV9sb2dvdXQpOwogICAgCiAgICBpZighJHJlc3VsdFswXSAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gJHRoaXMtPl9lcnJvcl9tb2RlKQogICAgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc3VsdFsxXSk7IH0KICAgIAogICAgcmV0dXJuICRyZXN1bHRbMF07CiAgfQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICRnaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBc3NpZ25Vc2VyVG9Hcm91cCgkdWlkLCAkZ2lkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Bc3NpZ25Vc2VyVG9Hcm91cCgkdWlkLCAkZ2lkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgYXNzaWduIHVzZXIgdG8gZ3JvdXAnKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkcGFzc3dvcmQNCiAgICoNCiAgICogQHJldHVybiBib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gSXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJGlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlckZ1bGwoJGlkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVVc2VyRnVsbCgkaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqIEBwYXJhbSAkZ2lkDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cEluZm8oJGdpZCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwSW5mbygkZ2lkKTsKICAgIAogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGdyb3VwIGluZm8nKTsgfQogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtIGFycmF5ICR1aWRzCiAgICogQHBhcmFtIGJvb2wgICRkZWVwCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEJ1bGtVc2VySW5mbygkdWlkcywgJGRlZXAgPSBUUlVFKQogIHsKICAgIGlmKCFcaXNfYXJyYXkoJHVpZHMpKQogICAgewogICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB1aWRzIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICB9CiAgICAKICAgICR1aWRzID0gXGFycmF5X3ZhbHVlcyhcYXJyYXlfZmlsdGVyKFxhcnJheV9tYXAoJ2ludHZhbCcsICR1aWRzKSkpOwogICAgaWYoIVxjb3VudCgkdWlkcykpCiAgICB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KICAgIAogICAgJG1hbmlwID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCk7CiAgICBpZihcbWV0aG9kX2V4aXN0cygkbWFuaXAsICdHZXRCdWxrVXNlckluZm8nKSkKICAgIHsKICAgICAgJHJlc3VsdCA9ICRtYW5pcC0+R2V0QnVsa1VzZXJJbmZvKCR1aWRzLCAkZGVlcCk7CiAgICAgIAogICAgICByZXR1cm4gXGlzX2FycmF5KCRyZXN1bHQpID8gJHJlc3VsdCA6IFtdOwogICAgfQogICAgCiAgICAkcmVzdWx0ID0gW107CiAgICBmb3JlYWNoKCR1aWRzIGFzICR1aWQpCiAgICB7CiAgICAgIGlmKCR1aWQgPCAxKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgCiAgICAgIHRyeQogICAgICB7CiAgICAgICAgJHJlc3VsdFtdID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQsICRkZWVwKTsKICAgICAgfQogICAgICBjYXRjaChcUnVudGltZUV4Y2VwdGlvbiAkZSkKICAgICAgewogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0OwogIH0KICAKICAvKioKICAgKiAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICAgICAgJHVpZAogICAqIEBwYXJhbSBib29sICRkZWVwDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySW5mbygkdWlkLCAkZGVlcCA9IEZBTFNFKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlckluZm8oJHVpZCwgJGRlZXApOwogICAgCiAgICBpZigkdGhpcy0+aXNfZmFpbHVyZV90dXBsZSgkcmVzdWx0KSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5nZXRfZmFpbHVyZV9tZXNzYWdlKCRyZXN1bHQsICdDb3VsZCBub3QgZ2V0IHVzZXIgaW5mbycpKTsKICAgIH0KICAgIAogICAgaWYoJHRoaXMtPmlzX3N1Y2Nlc3NfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgIHJldHVybiAkcmVzdWx0WzFdOwogICAgfQogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CiAgDQogIC8qKg0KICAgKiAvLyB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKiBAcGFyYW0gJHVzZXJuYW1lDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIA0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm9CeU5hbWUoJHVzZXJuYW1lKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlckluZm9CeU5hbWUoJHVzZXJuYW1lKTsKICAgIAogICAgaWYoJHRoaXMtPmlzX2ZhaWx1cmVfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+Z2V0X2ZhaWx1cmVfbWVzc2FnZSgkcmVzdWx0LCAnQ291bGQgbm90IGdldCB1c2VyIGluZm8nKSk7CiAgICB9CiAgICAKICAgIGlmKCR0aGlzLT5pc19zdWNjZXNzX3R1cGxlKCRyZXN1bHQpKQogICAgewogICAgICByZXR1cm4gJHJlc3VsdFsxXTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSBpbnQgICAgJHVpZAogICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UKICAgKgogICAqIEByZXR1cm4gXE1BTVNcYXBpCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFkZEhpc3RvcnkoJHVpZCwgJG1lc3NhZ2UpCiAgewogICAgJG1hbmlwID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCk7CiAgICBpZighXG1ldGhvZF9leGlzdHMoJG1hbmlwLCAnYWRkX2hpc3RvcnknKSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDdXJyZW50IG1hbmlwdWxhdG9yIGRvZXMgbm90IHN1cHBvcnQgQWRkSGlzdG9yeScpOwogICAgfQogICAgCiAgICBpZighJG1hbmlwLT5hZGRfaGlzdG9yeSgkdWlkLCAkbWVzc2FnZSkpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGFkZCBoaXN0b3J5IGVudHJ5Jyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgICAkdWlkCiAgICogQHBhcmFtIHN0cmluZyAkYWN0aW9uCiAgICogQHBhcmFtIGludCAgICAkY291bnQKICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckhpc3RvcnkoJHVpZCwgJGFjdGlvbiA9ICcnLCAkY291bnQgPSAtMSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlckhpc3RvcnkoJHVpZCwgJGFjdGlvbiwgJGNvdW50KTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSBzdHJpbmcgJG5vdF9hY3RpdmVfc2luY2UNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldExvZ2dlZEluVXNlcnMoJG5vdF9hY3RpdmVfc2luY2UgPSAnJykNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0TG9nZ2VkSW5Vc2Vycygkbm90X2FjdGl2ZV9zaW5jZSk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKiByZXR1cm5zIGFuIGFycmF5IG9yIGZhbHNlDQogICAqDQogICAqIEBwYXJhbSAkZ3JvdXBpZA0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2x8YXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBDb3VudFVzZXJzSW5Hcm91cCgkZ3JvdXBpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+Q291bnRVc2Vyc0luR3JvdXAoJGdyb3VwaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGNvdW50IHVzZXJzIGluIGdyb3VwJyk7IH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkZ2lkDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbnxcQ21zRXhjZXB0aW9uDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0RnVsbFVzZXJzSW5Hcm91cCgkZ2lkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRGdWxsVXNlcnNJbkdyb3VwKCRnaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGdldCB1c2VycyBpbiBncm91cCcpOyB9DQogICAgDQogICAgcmV0dXJuICRyZXN1bHQ7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICogQHBhcmFtICRnaWQNCiAgICoNCiAgICogQHJldHVybiBib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR3JvdXBFeGlzdHNCeUlEKCRnaWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdyb3VwRXhpc3RzQnlJRCgkZ2lkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2wNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5TmFtZSgkbmFtZSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R3JvdXBFeGlzdHNCeU5hbWUoJG5hbWUpOw0KICB9DQogIA0KICAvKioNCiAgICogQHJldHVybiBzdHJpbmcNCiAgICovDQogIGZ1bmN0aW9uIExvZ2dlZEluRW1haWwoKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Mb2dnZWRJbkVtYWlsKCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGxvZ2dlZCBpbiBlbWFpbCcpOyB9DQogICAgDQogICAgcmV0dXJuICRyZXN1bHQ7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2x8c3RyaW5nDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0RW1haWwoJHVpZCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEVtYWlsKCR1aWQpOwogICAgCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgZW1haWwgZnJvbSAnIC4gJHVpZCk7IH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSBzdHJpbmcgJGVtYWlsCiAgICogQHBhcmFtIGludCAgICAkdWlkCiAgICogQHBhcmFtIGJvb2wgICAkY2hlY2tfZXhpc3RpbmcKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gSXNWYWxpZEVtYWlsQWRkcmVzcygkZW1haWwsICR1aWQgPSAtMSwgJGNoZWNrX2V4aXN0aW5nID0gRkFMU0UpCiAgewogICAgJG1hbmlwID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCk7CiAgICAKICAgIGlmKFxtZXRob2RfZXhpc3RzKCRtYW5pcCwgJ0lzVmFsaWRFbWFpbEFkZHJlc3MnKSkKICAgIHsKICAgICAgJHJlc3VsdCA9ICRtYW5pcC0+SXNWYWxpZEVtYWlsQWRkcmVzcygkZW1haWwsICR1aWQsICRjaGVja19leGlzdGluZyk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRyZXN1bHQgPSB1dGlsczo6aXNfdmFsaWRfZW1haWxfYWRkcmVzcygkZW1haWwsICR1aWQsICRjaGVja19leGlzdGluZyk7CiAgICB9CiAgICAKICAgIGlmKCFcaXNfYXJyYXkoJHJlc3VsdCkgfHwgIVxhcnJheV9rZXlfZXhpc3RzKDAsICRyZXN1bHQpKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCB2YWxpZGF0ZSBlbWFpbCBhZGRyZXNzJyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0OwogIH0KICAKICAKICAvKioKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VybmFtZVByb21wdCgpDQogIHsNCiAgICAkY29uc3VtZXIgPSB1dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsNCiAgICANCiAgICBpZighXGlzX29iamVjdCgkY29uc3VtZXIpICkNCiAgICB7DQogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgYW4gYXV0aGVudGljYXRpb24gY29uc3VtZXIgb2JqZWN0Jyk7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkY29uc3VtZXItPmdldF91c2VybmFtZV9wcm9tcHQoKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gICAgICAkdXNlcm5hbWUNCiAgICogQHBhcmFtIGJvb2wgJGNoZWNrX2VtYWlsDQogICAqIEBwYXJhbSBpbnQgICR1aWQNCiAgICoNCiAgICogQHJldHVybiBib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gSXNWYWxpZFVzZXJuYW1lKCR1c2VybmFtZSwgJGNoZWNrX2VtYWlsID0gVFJVRSwgJHVpZCA9IC0xKQ0KICB7DQogICAgJGNvbnN1bWVyID0gdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7DQogICAgDQogICAgaWYoIVxpc19vYmplY3QoJGNvbnN1bWVyKSApDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGFuIGF1dGhlbnRpY2F0aW9uIGNvbnN1bWVyIG9iamVjdCcpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJGNvbnN1bWVyLT52YWxpZGF0ZV91c2VybmFtZSgkdXNlcm5hbWUsICRjaGVja19lbWFpbCwgJHVpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKiBAcGFyYW0gJGdpZA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoJHVpZCwgJGdpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+UmVtb3ZlVXNlckZyb21Hcm91cCgkdWlkLCAkZ2lkKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24gKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICAgICAgJGlkDQogICAqIEBwYXJhbSAgICAgICRuYW1lDQogICAqIEBwYXJhbSBudWxsICRkZXNjDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0R3JvdXAoJGlkLCAkbmFtZSwgJGRlc2MgPSBOVUxMKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRHcm91cCgkaWQsICRuYW1lLCAkZGVzYyk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICRwbGFpbl9wYXNzd29yZA0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEVuY3J5cHRQYXNzd29yZCgkdWlkLCAkcGxhaW5fcGFzc3dvcmQpDQogIHsNCiAgICB0cnkNCiAgICB7DQogICAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkVuY3J5cHRQYXNzd29yZCgkdWlkLCAkcGxhaW5fcGFzc3dvcmQpOw0KICAgICAgDQogICAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBlbmNyeXB0IHBhc3N3b3JkJyk7IH0NCiAgICB9DQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkNCiAgICB7DQogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICRwYXNzd29yZA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJQYXNzd29yZCgkdWlkLCAkcGFzc3dvcmQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFVzZXJQYXNzd29yZCgkdWlkLCAkcGFzc3dvcmQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAgICAgICR1aWQNCiAgICogQHBhcmFtIGJvb2wgJGZsYWcNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyRGlzYWJsZWQoJHVpZCwgJGZsYWcgPSBUUlVFKQ0KICB7DQogICAgdHJ5DQogICAgew0KICAgICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFVzZXJEaXNhYmxlZCgkdWlkLCAkZmxhZyk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCkpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gICAgICAkdWlkDQogICAqIEBwYXJhbSBib29sICRmbGFnDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCAkZmxhZyA9IFRSVUUpDQogIHsNCiAgICB0cnkNCiAgICB7DQogICAgICAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCAkZmxhZyk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCkpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gICAgICAkdWlkDQogICAqIEBwYXJhbSBib29sICRmbGFnDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCAkZmxhZyA9IFRSVUUpDQogIHsNCiAgICB0cnkNCiAgICB7DQogICAgICAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+Rm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCAkZmxhZyk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCkpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gICAgICAkdWlkDQogICAqIEBwYXJhbSBib29sICRmbGFnDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRm9yY2VWZXJpZnkoJHVpZCwgJGZsYWcgPSBUUlVFKQ0KICB7DQogICAgdHJ5DQogICAgew0KICAgICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkZvcmNlVmVyaWZ5KCR1aWQsICRmbGFnKTsNCiAgICB9DQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkNCiAgICB7DQogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gICAgICAkdWlkDQogICAqIEBwYXJhbSAgICAgICR1c2VybmFtZQ0KICAgKiBAcGFyYW0gICAgICAkcGFzc3dvcmQNCiAgICogQHBhcmFtIGJvb2wgJGV4cGlyZXMNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyKCR1aWQsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyA9IEZBTFNFKQ0KICB7DQogICAgDQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyKCR1aWQsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogU2V0IHRoZSB1c2VyIGdyb3VwIG1lbWJlcnNoaXBzDQogICAqIGRvZXMgbm90IGFsdGVyIGFueSB1c2VyIHByb3BlcnRpZXMuDQogICAqIGRvZXMgbm90IHZhbGlkYXRlIGdyb3VwIGlkcywgYnV0IGRvZXMgdmFsaWRhdGUgdWlkDQogICAqDQogICAqIEBwYXJhbSBpbnQgdXNlcmlkDQogICAqIEBwYXJhbSBhcnJheSBhcnJheSBvZiBpbnRlZ2VyIGdyb3VwIGlkcw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaSAoc3RhdHVzLG1zZykNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyR3JvdXBzKCR1aWQsICRncnBpZHMpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFVzZXJHcm91cHMoJHVpZCwgJGdycGlkcyk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICRnaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRVc2VyVG9Hcm91cCgkdWlkLCAkZ2lkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5Bc3NpZ25Vc2VyVG9Hcm91cCgkdWlkLCAkZ2lkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkcHJvcHMNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydGllcygkdWlkLCAkcHJvcHMpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFVzZXJQcm9wZXJ0aWVzKCR1aWQsICRwcm9wcyk7DQogICAgDQogICAgIyB0b2RvOiByZXZpc2l0IGlmIG5lZWRlZCAtIG5vdCBzdXJlIGlmIGpzb25fZW5jb2RlIGlzIHRoZSBiZXN0IG9wdGlvbiBoZXJlIChKTSkNCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBzZXQgdXNlciAnLiAkdWlkIC4nIHByb3BlcnRpZXMgJyAuIFxqc29uX2VuY29kZSgkcHJvcHMpKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqIEBwYXJhbSAkdWlkDQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFVzZXJFeGlzdHNCeUlEKCR1aWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlVzZXJFeGlzdHNCeUlEKCR1aWQpOw0KICB9DQogIA0KDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnRpZXMoJHVpZCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpOwogICAgCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJyBDb3VsZCBub3QgZ2V0IHVzZXIgJy4gJHVpZCAuJyBwcm9wZXJ0aWVzJyk7IH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqIHJldHVybnMgYW4gYXJyYXkgb2YgcmVjb3JkcyBvciBmYWxzZQ0KICAgKg0KICAgKiBAcGFyYW0gJHVzZXJpZA0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCcgQ291bGQgbm90IGdldCB1c2VyICcuICR1c2VyaWQgLicgZ3JvdXBzJyk7IH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLy8NCiAgLy8gZW5kIG9mIHJjIGZ1bmN0aW9ucw0KICAvLw0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAgICAgICR0aXRsZQ0KICAgKiBAcGFyYW0gYm9vbCAkZGVmYXVsdHZhbHVlDQogICAqDQogICAqIEByZXR1cm4gbWl4ZWQNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHkoJHRpdGxlLCAkZGVmYXVsdHZhbHVlID0gRkFMU0UpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJQcm9wZXJ0eSgkdGl0bGUsICRkZWZhdWx0dmFsdWUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignIENvdWxkIG5vdCBnZXQgcHJvcGVydHkgJy4gJHRpdGxlIC4gJyBmb3IgY3VycmVudCB1c2VyJyk7IH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gICAgICAkdGl0bGUNCiAgICogQHBhcmFtICAgICAgJHVzZXJpZA0KICAgKiBAcGFyYW0gYm9vbCAkZGVmYXVsdHZhbHVlDQogICAqDQogICAqIEByZXR1cm4gYm9vbHxtaXhlZA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkdXNlcmlkLCAkZGVmYXVsdHZhbHVlID0gRkFMU0UpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkdXNlcmlkLCAkZGVmYXVsdHZhbHVlKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJyBDb3VsZCBub3QgZ2V0IHByb3BlcnR5ICcuICR0aXRsZSAuICcgZm9yIHVzZXIgJy4gJHVzZXJpZCk7IH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkdGl0bGUNCiAgICogQHBhcmFtICRkYXRhDQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIElzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVpZCwgJHRpdGxlLCAkZGF0YSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+SXNVc2VyUHJvcGVydHlWYWx1ZVVuaXF1ZSgkdWlkLCAkdGl0bGUsICRkYXRhKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHRpdGxlDQogICAqIEBwYXJhbSAkZGF0YQ0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eSgkdGl0bGUsICRkYXRhKQ0KICB7DQogICAgDQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyUHJvcGVydHkoJHRpdGxlLCAkZGF0YSk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCcgQ291bGQgbm90IHNldCBwcm9wZXJ0eSAnLiAkdGl0bGUgLiAnIGZvciBjdXJyZW50IHVzZXInKTsgfQ0KDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkdGl0bGUNCiAgICogQHBhcmFtICRkYXRhDQogICAqIEBwYXJhbSAkdXNlcmlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsICRkYXRhLCAkdXNlcmlkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJGRhdGEsICR1c2VyaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignIENvdWxkIG5vdCBzZXQgcHJvcGVydHkgJy4gJHRpdGxlIC4gJyBmb3IgdXNlciAnLiAkdXNlcmlkKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSB1c2VycHJvcGVydHkgYnkgbmFtZQ0KICAgKg0KICAgKiBAcGFyYW0gJHRpdGxlDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5QnlOYW1lKCR0aXRsZSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlVXNlclByb3BlcnR5QnlOYW1lKCR0aXRsZSk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCcgQ291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eSAnLiAkdGl0bGUgLiAnIGZvciBjdXJyZW50IHVzZXInKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gICAgICAkdGl0bGUNCiAgICogQHBhcmFtIGJvb2wgJGFsbA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eSgkdGl0bGUsICRhbGwgPSBGQUxTRSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlVXNlclByb3BlcnR5KCR0aXRsZSwgJGFsbCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCcgQ291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eSAnLiAkdGl0bGUgLiAnIGZvciBjdXJyZW50IHVzZXInKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAgICAgICR0aXRsZQ0KICAgKiBAcGFyYW0gICAgICAkdXNlcmlkDQogICAqIEBwYXJhbSBib29sICRhbGwNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJHVzZXJpZCwgJGFsbCA9IEZBTFNFKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJHVzZXJpZCwgJGFsbCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5ICcuICR0aXRsZSAuICcgZm9yIHVzZXIgJy4gJHVzZXJpZCk7IH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzKCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlQWxsVXNlclByb3BlcnRpZXMoKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBkZWxldGUgYWxsIHVzZXIgcHJvcGVydGllcycpOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR1c2VyaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoJHVzZXJpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlQWxsVXNlclByb3BlcnRpZXNGdWxsKCR1c2VyaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGRlbGV0ZSBhbGwgdXNlciBwcm9wZXJ0aWVzJyk7IH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBUT0RPOiByZXZpc2l0IC0gdGhlIG1hbmlwdWxhdG9yIENoZWNrUGFzc3dvcmQgaXMgd2F5IHRvbyBjb252b2x1dGVkIGFuZCBzaG91bGQgYmUgc2ltcGxpZmllZCAoSk0pDQogICAqDQogICAqIEBwYXJhbSAgICAgICAgJHVzZXJuYW1lDQogICAqIEBwYXJhbSAgICAgICAgJHBhc3N3b3JkDQogICAqIEBwYXJhbSBzdHJpbmcgJGdyb3Vwcw0KICAgKg0KICAgKiBAcmV0dXJuIGludHxtaXhlZA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIENoZWNrUGFzc3dvcmQoJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgPSAnJykNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+Q2hlY2tQYXNzd29yZCgkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3Vwcyk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluTmFtZSgpDQogIHsNCiAgICByZXR1cm4gKHN0cmluZykkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9nZ2VkSW5OYW1lKCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKiBAcGFyYW0gJG1lc3NhZ2UNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXQoJHVpZCA9ICcnLCAkbWVzc2FnZSA9ICdsb2dvdXQnKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkxvZ291dCgkdWlkLCAkbWVzc2FnZSk7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdGhpcyBkZWxldGVzIHRoZSBlbnRyeSBmcm9tIHRoZSBsb2dnZWRpbiB0YWJsZSwgYW5kIGFkZHMgYSBoaXN0b3J5IGVudHJ5Lg0KICAgKiBpdCBhbHNvIHNldHMgc29tZSBjYWNoZSBkYXRhIHVzZWQgdG8gZm9yY2UgbG9nb3V0IHRoZSB1c2VyDQogICAqIGRlc2lnbmVkIHRvIHByb2dyYW1tYXRpY2FsbHkgbG9nIG91dCBhIHVzZXIgZnJvbSB0aGUgYWRtaW4gcGFuZWwuDQogICAqIHNvIHRoYXQgdGhlIG5leHQgdGltZSBhIHVzZXIgZG9lcyBhbnl0aGluZyBvbiB0aGlzIHNpdGUsIGFuZCBhcyBsb25nIGFzIGNhY2hlIGlzIG5vdCBjbGVhcmVkDQogICAqIHRoZSBuZXh0IHRpbWUgaGUgZG9lcyBhIHJlcXVlc3Qgb24gdGhlIHdlYnNpdGUsIGhpcyBjb29raWVzIGFuZCBzZXNzaW9uIGRhdGEgd2lsbCBiZSBjbGVhcmVkDQogICAqIGFub3RoZXIgb3B0aW9uIGhlcmUgd291bGQgYmUgdG8gdXNlIGEgZmxhZyBpbiB0aGUgZGF0YWJhc2UgdGhhdCBpbmRpY2F0ZXMgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBvdXQuDQogICAqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkZXZlbnRtc2cNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXRVc2VyKCR1aWQsICRldmVudG1zZyA9ICdsb2dvdXQnKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkxvZ291dFVzZXIoJHVpZCwgJGV2ZW50bXNnKTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8vIHVzZXJpZCBhcGkgbWV0aG9kDQogIA0KICAvKioNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBFeHBpcmVVc2VycygpDQogIHsNCiAgICAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RXhwaXJlVXNlcnMoKTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8vIHVzZXJpZCBhcGkgbWV0aG9kDQogIA0KICAvKioNCiAgICogQHJldHVybiBpbnR8RkFMU0UNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbklkKCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9nZ2VkSW5JZCgpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigndXNlciBub3QgbG9nZ2VkIGluJyk7IH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLy8gdXNlcmlkIGFwaSBtZXRob2QNCiAgDQogIC8qKg0KICAgKiBUZXN0cyB3aGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgbG9nZ2VkIGluIG9yIG5vdA0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2wNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkxvZ2dlZEluKCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBEZXRlcm1pbmUgaWYgdGhlIHVzZXIgaWQgaXMgYSBtZW1iZXIgb2YgdGhlIGdyb3VwKHMpIHNwZWNpZmllZC4NCiAgICoNCiAgICogQHBhcmFtIGludGVnZXIgJHVzZXJpZCAgdXNlcmlkDQogICAqIEBwYXJhbSBtaXhlZCAgICRncm91cGlkIGludGVnZXIgKHBvc2l0aXZlKSBncm91cCBpZCwgb3IgYW4gYXJyYXkgb2YgcG9zaXRpdmUgaW50ZWdlciBncm91cCBpZHMuDQogICAqDQogICAqIEByZXR1cm4gYm9vbGVhbg0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIE1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR1c2VyaWQNCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyTmFtZSgkdXNlcmlkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRVc2VyTmFtZSgkdXNlcmlkKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBldmVuIHRob3VnaCBwcmV2aW91cyBtZXRob2RzIHJldHVybiAtMSBpZiB1c2VyIGRvZXNuJ3QgZXhpc3QNCiAgICogdGhlIHN5c3RlbSB3aWxsIG5ldmVyIGFsbG93IGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgdXNlciAwLA0KICAgKiBzbyB3ZSByZXR1cm4gemVybyBhcyBhIHVzZXIgbm90IGZvdW5kIHJlc3VsdA0KICAgKg0KICAgKiBAcGFyYW0gJHVzZXJuYW1lDQogICAqDQogICAqIEByZXR1cm4gaW50DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlcklEKCR1c2VybmFtZSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlcklEKCR1c2VybmFtZSk7DQogICAgDQogICAgcmV0dXJuIFxtYXgoJHJlc3VsdCwgMCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBBZGRzIGEgbmV3IGdyb3VwIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUgYW5kIGRlc2NyaXB0aW9uDQogICAqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKiAgICAgICAgICAgICAgVGhlIG5ldyBncm91cCBuYW1lDQogICAqIEBwYXJhbSAkZGVzY3JpcHRpb24NCiAgICogICAgICAgICAgICAgICAgICAgICAgdGhlIGdyb3VwIGRlc2NyaXB0aW9uDQogICAqDQogICAqIEByZXR1cm4gaW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFkZEdyb3VwKCRuYW1lLCAkZGVzY3JpcHRpb24pCiAgewogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5BZGRHcm91cCgkbmFtZSwgJGRlc2NyaXB0aW9uKTsKICAgIAogICAgaWYoJHRoaXMtPmlzX2ZhaWx1cmVfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+Z2V0X2ZhaWx1cmVfbWVzc2FnZSgkcmVzdWx0LCAnQ291bGQgbm90IGFkZCBncm91cCcpKTsKICAgIH0KICAgIAogICAgaWYoJHRoaXMtPmlzX3N1Y2Nlc3NfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgIHJldHVybiAkcmVzdWx0WzFdOwogICAgfQogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CiAgDQogIC8qKg0KICAgKiBBZGQgdGhlIHNwZWNpZmllZCB1c2VyIHRvIHRoZSBkYXRhYmFzZQ0KICAgKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICogICAgICAgICAgICAgICAgICBUaGUgZGVzaXJlZCB1c2VybmFtZQ0KICAgKiBAcGFyYW0gJHBhc3N3b3JkDQogICAqICAgICAgICAgICAgICAgICAgVGhlIGRlc2lyZWQgcGFzc3dvcmQgKHVuZW5jcnlwdGVkKQ0KICAgKiBAcGFyYW0gJGV4cGlyZXMNCiAgICogICAgICAgICAgICAgICAgICBUaGUgZXhwaXJ5IGRhdGUNCiAgICogQHBhcmFtIGJvb2wgJG5vbnN0ZA0KICAgKiBAcGFyYW0gbnVsbCAkY3JlYXRlZGF0ZQ0KICAgKiBAcmV0dXJuIGludAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBBZGRVc2VyKCRuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzLCAkbm9uc3RkID0gRkFMU0UsICRjcmVhdGVkYXRlID0gTlVMTCkKICB7CiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkFkZFVzZXIoJG5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMsICRub25zdGQsICRjcmVhdGVkYXRlKTsKICAgIAogICAgaWYoJHRoaXMtPmlzX2ZhaWx1cmVfdHVwbGUoJHJlc3VsdCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+Z2V0X2ZhaWx1cmVfbWVzc2FnZSgkcmVzdWx0LCAnQ291bGQgbm90IGFkZCB1c2VyJykpOwogICAgfQogICAgCiAgICBpZigkdGhpcy0+aXNfc3VjY2Vzc190dXBsZSgkcmVzdWx0KSkKICAgIHsKICAgICAgcmV0dXJuICRyZXN1bHRbMV07CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0OwogIH0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkZ2lkDQogICAqDQogICAqIEByZXR1cm4gc3RyaW5nDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBOYW1lKCRnaWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwTmFtZSgkZ2lkKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJGdpZA0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwRGVzYygkZ2lkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRHcm91cERlc2MoJGdpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJGlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlR3JvdXBGdWxsKCRpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlR3JvdXBGdWxsKCRpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdCgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwTGlzdCgpOw0KICB9DQogIA0KICAvLyB1c2VyaWQgYXBpIG1ldGhvZA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtIGJvb2wgJHdpdGhfY291bnQNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdEZ1bGwoJHdpdGhfY291bnQgPSBGQUxTRSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0R3JvdXBMaXN0RnVsbCgkd2l0aF9jb3VudCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBvbGQgdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogZXZlbiB0aG91Z2ggcHJldmlvdXMgbWV0aG9kcyByZXR1cm4gLTEgaWYgdGhlIGdyb3VwIGRvZXNuJ3QgZXhpc3QNCiAgICogdGhlIHN5c3RlbSB3aWxsIG5ldmVyIGFsbG93IGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgZ3JvdXAgMCwNCiAgICogc28gd2UgcmV0dXJuIHplcm8gYXMgYSBncm91cCBub3QgZm91bmQgcmVzdWx0DQogICAqDQogICAqIEBwYXJhbSAkZ3JvdXBuYW1lDQogICAqDQogICAqIEByZXR1cm4gaW50DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRHcm91cElEKCRncm91cG5hbWUpOw0KICAgIA0KICAgIHJldHVybiBcbWF4KCRyZXN1bHQsIDApOw0KICB9DQogIA0KICAvKioNCiAgICogUmV0dXJuIGEgbGlzdCBvZiBncm91cHMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZg0KICAgKg0KICAgKiBAcGFyYW0gaW50ZWdlciAkdXNlcmlkIFRoZSB1c2VyIGlkZW50aWZpZXINCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcgQSBjb21tYSBkZWxpbWl0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgbWVtYmVyIGdyb3VwIG5hbWVzLiAgb3IgJ25vbmUnDQogICAqLw0KICBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHMoJHVzZXJpZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0TWVtYmVyR3JvdXBzKCR1c2VyaWQpOw0KICB9DQogIA0KICAvKioNCiAgICogb2xkIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyKCRpZCkNCiAgew0KICAgICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVVc2VyKCRpZCk7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtIGludCAkdWlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0UGVybWFuZW50Q29va2llKGludCAkdWlkKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFBlcm1hbmVudENvb2tpZSgkdWlkKTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBlbmQgb2YgYXBpIG1ldGhvZHMgZnJvbSB1c2VycyBtYW5pcHVsYXRvcg0KICAgKi8NCn0NCg0KPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/class.ClearUserHistoryTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBDbGVhclVzZXJIaXN0b3J5VGFzayBpbXBsZW1lbnRzIFxDbXNSZWd1bGFyVGFzawp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICAgewogICAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Rlc2NyaXB0aW9uKCkge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCggJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoIE1PRF9NQU1TICk7CiAgICAgICAgJHRtcCA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ2NsZWFyaGlzdG9yeV9hZ2UnKTsKICAgICAgICBpZiggJHRtcCA8IDEgKSByZXR1cm47CiAgICAgICAgJGxhc3RydW4gPSAoaW50KSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfbGFzdHJ1bicsMCk7CiAgICAgICAgaWYoICRsYXN0cnVuID4gdGltZSgpIC0gMjQgKiAzNjAwICkgcmV0dXJuOwoKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSggJHRpbWUgPSAnJyApCiAgICB7CiAgICAgICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCBNT0RfTUFNUyApOwogICAgICAgICRtYXhfYWdlX2RheXMgPSAoaW50KSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfYWdlJyk7CiAgICAgICAgLy8gZGVsZXRlIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgaGlzdG9yeSB0aGF0IGlzIG9sZGVyIHRoYW4gJG1heF9hZ2VfZGF5cwoKICAgICAgICAkb2xkZXJfdGhhbiA9IHRpbWUoKSAtICRtYXhfYWdlX2RheXMgKiAyNCAqIDM2MDA7CiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCAnTUFNUzo6Q2xlYXJVc2VySGlzdG9yeScsICRvbGRlcl90aGFuICk7CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfaGlzdG9yeSBXSEVSRSByZWZkYXRlIDwgPyc7CiAgICAgICAgJGRiID0gJG1vZC0+R2V0RGIoKTsKICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsICRkYi0+RGJUaW1lU3RhbXAoICRvbGRlcl90aGFuICkgKTsKCiAgICAgICAgXGF1ZGl0KCcnLCAnTUFNUycsICdSZW1vdmVkIGhpc3RvcnkgZW50cmllcyBvbGRlciB0aGFuICcgLiBcZGF0ZSgnWS1tLWQgSDppOnMnLCAkb2xkZXJfdGhhbikpOwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgICB7CiAgICAgICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSggTU9EX01BTVMgKTsKICAgICAgICAkbWFtcy0+U2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2xhc3RydW4nLCR0aW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgIH0KCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.email_verify_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBlbWFpbF92ZXJpZnlfYXNzaXN0YW50IGV4dGVuZHMgdmVyaWZpY2F0aW9uX2Fzc2lzdGFudAp7CiAgcHJpdmF0ZSAkX3RlbXBsYXRlOwogIHByaXZhdGUgJF9zdWJqZWN0OwogIHByaXZhdGUgJF90aXRsZTsKICBwcml2YXRlICRfbXNnOwogIHByaXZhdGUgJF9jb2RlX3Byb21wdDsKICBwcml2YXRlICRfbGlua19wcm9tcHQ7CgogIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2RlZmF1bHRfdGVtcGxhdGUoKQogIHsKICAgICR0eXBlbmFtZSA9ICdNQU1TOjpmb3Jnb3QgcGFzc3dvcmQgZW1haWwnOwogICAgJHRwbCA9IFxDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJHR5cGVuYW1lKTsKICAgIGlmKCAhJHRwbCApCiAgICB7CiAgICAgIFxhdWRpdCgnJywgJ01BTVMnLCAnTm8gZGVmYXVsdCB0ZW1wbGF0ZSBvZiB0eXBlICcgLiAkdHlwZW5hbWUgLiAnIGZvdW5kJyk7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignTm8gZGVmYXVsdCB0ZW1wbGF0ZSBvZiB0eXBlICcgLiAkdHlwZW5hbWUpOwogICAgfQogICAgcmV0dXJuICR0cGwtPmdldF9uYW1lKCk7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIFxNQU1TICRtYW1zICkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYW1zKTsKCiAgICAkdGhpcy0+X3RlbXBsYXRlID0gJHRoaXMtPmdldF9kZWZhdWx0X3RlbXBsYXRlKCk7CiAgICAkdGhpcy0+X3N1YmplY3QgPSAnUGxlYXNlIHZlcmlmeSB5b3VyIGFjY291bnQgZm9yIHtzaXRlbmFtZX0nOwogICAgJHRoaXMtPl90aXRsZSA9ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudCc7CiAgICAkdGhpcy0+X21zZyA9ICc8cD5Gb3Igc2VjdXJpdHkgcHVycG9zZXMgd2UgbmVlZCB0byB2YWxpZGF0ZSB5b3VyIGlkZW50aXR5LiAgVGhpcyBpcyBkb25lIGJ5IHZlcmlmeWluZyB0aGF0IHlvdSByZWNlaXZlZCB0aGlzIGVtYWlsIGNvcnJlY3RseSwgYW5kIGNhbiBmb2xsb3cgdGhlc2UgaW5zdHJ1Y3Rpb25zLjwvcD4KPHA+QmVsb3csIFdlIGhhdmUgcHJvdmlkZWQgYSB1bmlxdWUgc2VjdXJpdHkgY29kZSB0byB1c2UgdG8gdmFsaWRhdGUgeW91ciBjcmVkZW50aWFscy4gUGxlYXNlIGNsaWNrIG9uIHRoZSBsaW5rIHByb3ZpZGVkIGFuZCBlbnRlciB0aGUgc2VjdXJpdHkgY29kZS4gPGVtPkl0IG1heSBhbHJlYWR5IGJlIGZpbGxlZCBpbiBvbiB0aGUgZm9ybTwvZW0+LiAgVGhpcyB3aWxsIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gYW5kIGFsbG93IHlvdSB0byBsb2dpbiB0byB0aGUgc2VydmljZS48L3A+JzsKICAgICR0aGlzLT5fY29kZV9wcm9tcHQgPSAnWW91ciBzZWN1cml0eSBjb2RlIGlzOic7CiAgICAkdGhpcy0+X2xpbmtfcHJvbXB0ID0gJ1BsZWFzZSBjbGljayBvbiB0aGlzIGxpbmsnOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIFNldFRlbXBsYXRlKCRzdHIpCiAgewogICAgaWYoICRzdHIgKSAkdGhpcy0+X3RlbXBsYXRlID0gJHN0cjsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBTZXRUaXRsZSgkc3RyKQogIHsKICAgIGlmKCAkc3RyICkgJHRoaXMtPl90aXRsZSA9ICRzdHI7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gU2V0U3ViamVjdCgkc3RyKQogIHsKICAgIGlmKCAkc3RyICkgJHRoaXMtPl9zdWJqZWN0ID0gJHN0cjsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBTZXRNZXNzYWdlKCRzdHIpCiAgewogICAgaWYoICRzdHIgKSAkdGhpcy0+X21zZyA9ICRzdHI7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gU2V0Q29kZVByb21wdCgkc3RyKQogIHsKICAgIGlmKCAkc3RyICkgJHRoaXMtPl9jb2RlX3Byb21wdCA9ICRzdHI7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gU2V0TGlua1Byb21wdCgkc3RyKQogIHsKICAgIGlmKCAkc3RyICkgJHRoaXMtPl9saW5rX3Byb21wdCA9ICRzdHI7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2VuZCggJHVpZCwgJGNvZGUgKQogIHsKICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgJGNvZGUgPSBcdHJpbSgoc3RyaW5nKSAkY29kZSk7CiAgICAkZGVzdHBhZ2UgPSAkdGhpcy0+Z2V0X2Rlc3RwYWdlKCk7CiAgICBpZiggJHVpZCA8IDEgfHwgZW1wdHkoJGNvZGUpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0JhZCBkYXRhIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICAkZW1haWwgPSAkdGhpcy0+bWFtcy0+R2V0RW1haWwoJHVpZCk7CiAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0F0dGVtcHQgdG8gY3JlYXRlIGEgJyAuIF9fQ0xBU1NfXyAuICcgZm9yIGEgdXNlciB3aXRob3V0IGEgdmFsaWQgZW1haWwgYWRkcmVzcycpOwoKICAgIC8vIGNvZGUgd2lsbCBiZSBzZW50IGluIHRoZSBVUkwKICAgICR1cmwgPSAkdGhpcy0+Z2V0X3ZlcmlmeV9mb3JtX3VybCggJHVpZCwgJGNvZGUgKTsKCiAgICAkdHBsID0gJHRoaXMtPm1hbXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGlzLT5fdGVtcGxhdGUpOwogICAgJHRwbC0+YXNzaWduKCd0aXRsZScsJHRoaXMtPl90aXRsZSk7CiAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdtYWlsJywkdGhpcy0+X21zZyk7CiAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcsJHRoaXMtPl9tc2cpOwogICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+X21zZyk7CiAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF9jb2RlJywkdGhpcy0+X2NvZGVfcHJvbXB0KTsKICAgICR0cGwtPmFzc2lnbigncHJvbXB0X2xpbmsnLCR0aGlzLT5fbGlua19wcm9tcHQpOwogICAgJHRwbC0+YXNzaWduKCdkZXN0cGFnZScsJGRlc3RwYWdlKTsKICAgICR0cGwtPmFzc2lnbignZGF0YV9jb2RlJywkY29kZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3N1YmplY3QnLCR0aGlzLT5fc3ViamVjdCk7CiAgICAkdHBsLT5hc3NpZ24oJ2RhdGFfdXJsJywkdXJsKTsKICAgICRib2R5ID0gJHRwbC0+ZmV0Y2goKTsKCiAgICAvLyBkdXBsaWNhdGVkIGNvZGUuLi4gSSBrbm93LCBJIGtub3cuLi4gc2hhZGRhcAogICAgJHNtYXJ0eSA9ICR0aGlzLT5tYW1zLT5jbXMtPkdldFNtYXJ0eSgpOwogICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6JyAuICR0aGlzLT5fc3ViamVjdCk7CiAgICAkdHBsLT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+X3RpdGxlKTsKICAgICR0cGwtPmFzc2lnbignbWVzc2FnZV9mb3Jnb3Rwd21haWwnLCR0aGlzLT5fbXNnKTsKICAgICR0cGwtPmFzc2lnbignbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJywkdGhpcy0+X21zZyk7CiAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5fbXNnKTsKICAgICR0cGwtPmFzc2lnbigncHJvbXB0X2NvZGUnLCR0aGlzLT5fY29kZV9wcm9tcHQpOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfbGluaycsJHRoaXMtPl9saW5rX3Byb21wdCk7CiAgICAkdHBsLT5hc3NpZ24oJ2Rlc3RwYWdlJywkZGVzdHBhZ2UpOwogICAgJHRwbC0+YXNzaWduKCdkYXRhX2NvZGUnLCRjb2RlKTsKICAgICR0cGwtPmFzc2lnbignc3ViamVjdCcsJHRoaXMtPl9zdWJqZWN0KTsKICAgICR0cGwtPmFzc2lnbignZGF0YV91cmwnLCR1cmwpOwogICAgJHN1YmplY3QgPSAkdHBsLT5mZXRjaCgpOwoKICAgICRtYWlsZXIgPSBuZXcgXGNtc19tYWlsZXIoKTsKICAgICRtYWlsZXItPkFkZEFkZHJlc3MoJGVtYWlsKTsKICAgICRtYWlsZXItPlNldEJvZHkoJGJvZHkpOwogICAgJG1haWxlci0+U2V0U3ViamVjdCgkc3ViamVjdCk7CiAgICAkbWFpbGVyLT5Jc0hUTUwoVFJVRSk7CiAgICAkbWFpbGVyLT5TZXRQcmlvcml0eSgxKTsKICAgICRtYWlsZXItPlNlbmQoKTsKCiAgICBcYXVkaXQoJHVpZCwgJHRoaXMtPm1hbXMtPkdldE5hbWUoKSwgJ1ZlcmlmaWNhdGlvbiBlbWFpbCBzZW50Jyk7CiAgICAkdGhpcy0+bWFtcy0+YWRkX2hpc3RvcnkoJHVpZCwnaW5pdF92ZXJpZnknKTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.feu_importer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmNsYXNzIERiRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7fQ0KY2xhc3MgRGJEcm9wRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7fQ0KY2xhc3MgRGJSb2xsQmFja0V4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24ge30NCg0KY2xhc3MgZmV1X2ltcG9ydGVyDQp7DQogIHByaXZhdGUgc3RhdGljICRfaW5pdGlhbGl6ZWQgICA9IEZBTFNFOw0KICBwcml2YXRlIHN0YXRpYyAkX2ZldSAgICAgICAgICAgPSBGQUxTRTsNCiAgcHJpdmF0ZSBzdGF0aWMgJF9mZXVfaW5zdGFsbGVkID0gRkFMU0U7DQogIHByaXZhdGUgc3RhdGljICRfbW9kICAgICAgICAgICA9IEZBTFNFOw0KICBwcml2YXRlIHN0YXRpYyAkX2RiICAgICAgICAgICAgPSBGQUxTRTsNCiAgDQogIHByaXZhdGUgc3RhdGljICRfdGFibGVzICAgICAgICA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnZWRpbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZWxvbmdzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3ducycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cHByb3BtYXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZGVmbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wY29kZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaXN0b3J5Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgDQogIHByaXZhdGUgc3RhdGljICRfaW5kZXhlc190YWJsZXMgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYmVsb25ncycsICdpZHhfYmVsb25ncyddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3VzZXJzJywgJ2lkeF91c2VybmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3VzZXJzJywgJ2lkeF9leHBpcmVzJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaGlzdG9yeScsICdpZHhfcmVmZGF0ZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Byb3BlcnRpZXMnLCAnaWR4X3Byb3B1c2VydGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwcm9wZXJ0aWVzJywgJ2lkeF9wcm9wdGl0bGUnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBwcml2YXRlIHN0YXRpYyAkX2luZGV4ZXMgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfYmVsb25ncycgICAgICAgPT4gWydncm91cGlkJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfdXNlcm5hbWUnICAgICAgPT4gWyd1c2VybmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWR4X2V4cGlyZXMnICAgICAgID0+IFsnZXhwaXJlcyddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWR4X3JlZmRhdGUnICAgICAgID0+IFsndXNlcmlkJywgJ3JlZmRhdGUnLCAnYWN0aW9uJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfcHJvcHVzZXJ0aXRsZScgPT4gWyd1c2VyaWQnLCAndGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkeF9wcm9wdGl0bGUnICAgICA9PiBbJ3RpdGxlJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07DQogIA0KICBwcml2YXRlIHN0YXRpYyAkX3ByZWZzICAgICAgICAgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN1cmVfZmllbGRfY29sb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdXJlX2ZpZWxkX21hcmtlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dpbl9hZnRlcl92ZXJpZnknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2lnbmluX2J1dHRvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRfbG9zdHB3JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkX3JlcXVpcmVkY2hhcnMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dfY2hhbmdldXNlcm5hbWUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydF9sb3N0dW4nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX3VzZXJzYWx0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZWFnZV9tb250aHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90aWZpY2F0aW9uX3N1YmplY3QnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dfcmVwZWF0ZWRfbG9naW5zJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkZmxkbGVuZ3RoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lZmxkbGVuZ3RoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lX2lzX2VtYWlsJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2FmdGVydmVyaWZ5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9sb2dvdXQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2xvZ2luJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW5fZmllbGRfY29sb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW5fZmllbGRfbWFya2VyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVfb25lZ3JvdXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9ncm91cCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlZF9maWVsZF9tYXJrZXInLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llbmFtZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWVfa2VlcGFsaXZlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJfc2Vzc2lvbl9leHBpcmVzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF91c2VybmFtZWxlbmd0aCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5fdXNlcm5hbWVsZW5ndGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHdyZXF1aXJlZGNoYXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuaGFuY2VkX3Bhc3N3b3JkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbl9wYXNzd29yZGxlbmd0aCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfcGFzc3dvcmRsZW5ndGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkZm9yZ290cGFzc3dkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9vbnZlcmlmeScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWdlaWRfYWZ0ZXJjaGFuZ2VzZXR0aW5ncycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvX2NyZWF0ZV91bmtub3duJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhfbW9kdWxlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsZWFyaGlzdG9yeV9hZ2UnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX3JhbmRvbXVzZXJuYW1lJywNCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjZWxvZ291dF90aW1lcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZXVzZXJzX2ludGVydmFsJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B3c2FsdCcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07DQogIA0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2luaXRpYWxpemUoKQ0KICB7DQogICAgaWYoIXNlbGY6OiRfaW5pdGlhbGl6ZWQpDQogICAgew0KICAgICAgc2VsZjo6JF9mZXUgICAgICAgICAgID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOw0KICAgICAgc2VsZjo6JF9tb2QgICAgICAgICAgID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOw0KICAgICAgc2VsZjo6JF9kYiAgICAgICAgICAgID0gXGNtc191dGlsczo6Z2V0X2RiKCk7DQogICAgICAkbW9kcyAgICAgICAgICAgICAgICAgPSBcTW9kdWxlT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldEluc3RhbGxlZE1vZHVsZXMoKTsNCiAgICAgIHNlbGY6OiRfZmV1X2luc3RhbGxlZCA9IGluX2FycmF5KCdGcm9udEVuZFVzZXJzJywgJG1vZHMpOw0KICAgICAgc2VsZjo6JF9pbml0aWFsaXplZCAgID0gVFJVRTsNCiAgICB9DQogIH0NCiAgDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9pc19mZXVfYWN0aXZlKCkNCiAgew0KICAgIHJldHVybiBcTW9kdWxlT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPklzTW9kdWxlQWN0aXZlKCdGcm9udEVuZFVzZXJzJyk7DQogIH0NCiAgDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9pc19mZXVfaW5zdGFsbGVkKCkNCiAgew0KICAgIHNlbGY6Ol9pbml0aWFsaXplKCk7DQogICAgcmV0dXJuIHNlbGY6OiRfZmV1X2luc3RhbGxlZDsNCiAgfQ0KICANCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX2hhdmVfZmV1KCkNCiAgew0KICAgIHJldHVybiAoc2VsZjo6X2lzX2ZldV9pbnN0YWxsZWQoKSAmJiBzZWxmOjpfaXNfZmV1X2FjdGl2ZSgpICYmIGlzX29iamVjdChzZWxmOjokX2ZldSkgKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIGJhY2tzIHVwIE1BTVMgdGFibGVzDQogICAqIEB0aHJvd3MgXE1BTVNcRGJFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9Db3B5TWFtc1RhYmxlczJia3VwKCkNCiAgew0KICAgICRwcmVmaXhfZiA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfJzsNCiAgICAkcHJlZml4X3QgPSBcY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX190bXBfXyc7DQogIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7DQogICAgICAkZiA9ICRwcmVmaXhfZiAuICRvbmU7DQogICAgICAkdCA9ICRwcmVmaXhfdCAuICRvbmU7DQogICAgDQogICAgICBcYXVkaXQoODAwODUsICdmZXUybWFtcycsICdwcm9jZXNzaW5nIHRhYmxlICcgLiAkdCk7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnY3JlYXRpbmcgdGFibGUgJyAuICR0KTsNCiAgDQogICAgICAkcSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAnIC4gJHQgLiAnIExJS0UgJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogICAgICANCiAgICAgIFxhdWRpdCg4MDA4NSwgJ2ZldTJtYW1zJywgJ2NyZWF0ZWQgLCBjb3B5aW5nLi4uJyk7DQogICAgICANCiAgICAgICRxID0gJ0lOU0VSVCAnIC4gJHQgLiAnIFNFTEVDVCAqIEZST00gJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnY29weWVkIScpOw0KICAgIH0NCiAgfQ0KICANCiAgLyoqDQogICAqIGNvcGllcyB0YWJsZXMgZnJvbSBGRVUgMiBNQU1TDQogICAqIEB0aHJvd3MgXE1BTVNcRGJFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9Db3B5RmV1VGFibGVzMk1hbXMoKQ0KICB7DQogICAgJHByZWZpeF9mID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZmV1c2Vyc18nOw0KICAgICRwcmVmaXhfdCA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfJzsNCiAgDQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDAnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7DQogICAgICAkZiA9ICRwcmVmaXhfZiAuICRvbmU7DQogICAgICAkdCA9ICRwcmVmaXhfdCAuICRvbmU7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgDQogICAgICAkcSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAnIC4gJHQgLiAnIExJS0UgJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgJHEgPSAnSU5TRVJUICcgLiAkdCAuICcgU0VMRUNUICogRlJPTSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICB9DQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDEnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICB9DQogIA0KICAvKioNCiAgICogUm9sbHMgYmFjayBpLmUuIGdldHMgb3JpZ2luYWwgdGFibGVzIGZyb20gYmFja3VwDQogICAqIEB0aHJvd3MgXE1BTVNcRGJSb2xsQmFja0V4Y2VwdGlvbg0KICAgKi8NCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX1JvbGxCYWNrKCkNCiAgew0KICAgICRwcmVmaXhfZiA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfX3RtcF9fJzsNCiAgICAkcHJlZml4X3QgPSBcY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zXyc7DQogIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAwJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYlJvbGxCYWNrRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7ICAgICAgJGYgPSAkcHJlZml4X2YgLiAkb25lOw0KICAgICAgDQogICAgICAkdCA9ICRwcmVmaXhfdCAuICRvbmU7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICANCiAgICAgICRxID0gJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICcgLiAkdCAuICcgTElLRSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICANCiAgICAgICRxID0gJ0lOU0VSVCAnIC4gJHQgLiAnIFNFTEVDVCAqIEZST00gJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYlJvbGxCYWNrRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICB9DQogIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAxJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYlJvbGxCYWNrRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICB9DQogIA0KICAvKioNCiAgICogZHJvcHMgdGVtcG9yYXJ5IGJhY2t1cCB0YWJsZXMNCiAgICogQHRocm93cyBcTUFNU1xEYkRyb3BFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9Ecm9wVGVtcHMoKQ0KICB7DQogICAgJHByZWZpeCA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfX3RtcF9fJzsNCiAgICANCiAgICAjIHRyeSByZXZlcnNpbmcgdGhlIG9yZGVyIHRvIHByZXZlbnQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgZmFpbHMNCiAgICAjICR0YWJsZXMgPSBhcnJheV9yZXZlcnNlKHNlbGY6OiRfdGFibGVzKTsNCiAgICANCiAgICAkcSA9ICdTRVQgZm9yZWlnbl9rZXlfY2hlY2tzID0gMCc7DQogICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgaWYoISRyKSB0aHJvdyBuZXcgRGJEcm9wRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7DQogICAgICAkdCA9ICRwcmVmaXggLiAkb25lOw0KICANCiAgICAgIFxhdWRpdCg4MDA4NSwgJ2ZldTJtYW1zJywgJ2Ryb3BwaW5nIHRhYmxlICcgLiAkdCk7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRHJvcEV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnZHJvcHBlZCEnKTsNCiAgICB9DQogIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAxJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYkRyb3BFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAdGhyb3dzIFxNQU1TXERiRXhjZXB0aW9uDQogICAqLw0KICBzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiBfUmVuYW1lSW5kZXhlcygpDQogIHsNCiAgICAkcHJlZml4ID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc18nOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF9pbmRleGVzX3RhYmxlcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgIGxpc3QoJHRhYmxlLCAkaW5kZXhfbmFtZSkgPSAkb25lOw0KICAgICAgJHRhYmxlbmFtZSA9ICRwcmVmaXggLiAkdGFibGU7DQogICAgICAkZHJvcCAgICAgID0gJ2Ntc19mZXVfJyAuICRpbmRleF9uYW1lOw0KICAgICAgJGFkZCAgICAgICA9ICdjbXNfbWFtc18nIC4gJGluZGV4X25hbWU7DQogICAgICAkZmllbGRzICAgID0gaW1wbG9kZSgnLCcsIHNlbGY6OiRfaW5kZXhlc1skaW5kZXhfbmFtZV0pOw0KICAgICAgDQogICAgICAkcSA9ICdBTFRFUiBUQUJMRSAnIC4gJHRhYmxlbmFtZQ0KICAgICAgICAgICAuICcgRFJPUCBJTkRFWCAnIC4gJGRyb3ANCiAgICAgICAgICAgLiAnLCBBREQgSU5ERVggJyAuICRhZGQgLiAnICgnIC4gJGZpZWxkcyAuICcpIFVTSU5HIEJUUkVFJzsNCiAgDQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICB9DQogICAgDQogIH0NCiAgDQoNCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX0NvcHlQcmVmZXJlbmNlcygpDQogIHsNCiAgICBmb3JlYWNoKHNlbGY6OiRfcHJlZnMgYXMgJG9uZSkNCiAgICB7DQogICAgICBzZWxmOjokX21vZC0+U2V0UHJlZmVyZW5jZSggJG9uZSwgc2VsZjo6JF9mZXUtPkdldFByZWZlcmVuY2UoJG9uZSkgKTsNCiAgICB9DQogICAgDQogICAgIyBvbmx5IGV4Y2VwdGlvbiBmb3VuZCBpcyB0aGlzIG9uZQ0KICANCiAgICBzZWxmOjokX21vZC0+U2V0UHJlZmVyZW5jZSggJ21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLCBzZWxmOjokX2ZldS0+R2V0UHJlZmVyZW5jZSgnZmV1X3NwZWNpZmljX3Blcm1pc3Npb25zJykgKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIHB1YmxpYyBtZXRob2RzDQogICAqLw0KICANCiAgc3RhdGljIGZ1bmN0aW9uIHJ1bigpDQogIHsNCiAgICBzZWxmOjpfaW5pdGlhbGl6ZSgpOw0KICAgICRjb2RlID0gMDsNCiAgICAkbXNnID0gJ09LJzsNCiAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAkZmFpbCA9IEZBTFNFOw0KICAgIA0KICAgIGlmKCAhc2VsZjo6X2lzX2ZldV9pbnN0YWxsZWQoKSApDQogICAgew0KICAgICAgJGNvZGUgPSAxOw0KICAgICAgJG1zZyA9ICdub19mZXVfaW5zdGFsbCc7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIH0NCiAgICANCiAgICANCiAgICAjIGJhY2t1cCBNQU1TIHRhYmxlcw0KICAgIHRyeQ0KICAgIHsNCiAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdTdGFydCBtYWtpbmcgYmFja3VwcycpOw0KICAgICAgc2VsZjo6X0NvcHlNYW1zVGFibGVzMmJrdXAoKTsNCiAgICB9DQogICAgY2F0Y2goIERiRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgDQogICAgICB0cnkNCiAgICAgIHsNCiAgICAgICAgIyBzb21ldGhpbmcgd2VudCB3cm9uZyByZW1vdmUgdGhlIGJhY2t1cHMgYW55d2F5DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdTb21ldGhpbmcgd2VudCB3cm9uZyBjcmVhdGluZyBiYWNrdXBzIG9mIE1BTVMgdGFibGVzLi4uIGdvaW5nIHRvIGRyb3AgdGVtcCB0YWJsZXMhJyk7DQogICAgICAgIHNlbGY6Ol9Ecm9wVGVtcHMoKTsNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0JhY2t1cCB0YWJsZXMgZHJvcHBlZCBzdWNjZXNzZnVsbHkhJyk7DQogICAgICB9DQogICAgICBjYXRjaCggRGJEcm9wRXhjZXB0aW9uICRlKQ0KICAgICAgew0KICAgICAgICAkY29kZSA9ICRlLT5nZXRDb2RlKCk7DQogICAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnRXJyb3IgZHJvcHBpbmcgTUFNUyB0ZW1wIHRhYmxlcy4uLicpOw0KICAgICAgfQ0KICAgICAgZmluYWxseQ0KICAgICAgew0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQ29weWluZyB0YWJsZXMgZnJvbSBGRVUgZmFpbGVkISBJbXBvcnQgYWJvcnRlZCBhbmQgc29tZSBjbGVhbmluZyB1cCB3YXMgYXR0ZW1wdGVkLicpOw0KICAgICAgICAjIHdoZXRoZXIgYmFja3VwIGZhaWxlZCBvciBib3RoIGJhY2t1cCBhbmQgZHJvcCB0ZW1wcw0KICAgICAgICAjIHdlIHJldHVybiB0aGUgZXJyb3IgY29kZSAtLSB0aGVyZSBpcyBvbmx5IHNvIG11Y2ggd2UgY2FuIGRvDQogICAgICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZXJyXTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgIyBjb3B5IEZFVSAyIE1BTVMNCiAgICB0cnkNCiAgICB7DQogICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnU3RhcnQgY29weWluZyB0YWJsZXMgZnJvbSBGRVUnKTsNCiAgICAgIHNlbGY6Ol9Db3B5RmV1VGFibGVzMk1hbXMoKTsNCiAgICB9DQogICAgY2F0Y2goIERiRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgDQogICAgICB0cnkNCiAgICAgIHsNCiAgICAgICAgIyBzb21ldGhpbmcgd2VudCB3cm9uZw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnU29tZXRoaW5nIHdlbnQgd3JvbmcgY29weWluZyB0YWJsZXMgZnJvbSBGRVUuLi4gZ29pbmcgdG8gcm9sbGJhY2shJyk7DQogICAgICAgICMgcm9sbCBiYWNrDQogICAgICAgIHNlbGY6Ol9Sb2xsQmFjaygpOw0KICAgICAgICAjIHJlbW92ZSB0aGUgYmFja3VwcyBhbnl3YXkNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ1JvbGxlZCBiYWNrLi4uIHJlbW92aW5nIHRlbXAgYmFja3VwIHRhYmxlcycpOw0KICAgICAgICBzZWxmOjpfRHJvcFRlbXBzKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdCYWNrdXAgdGFibGVzIGRyb3BwZWQgc3VjY2Vzc2Z1bGx5IScpOw0KICAgICAgfQ0KICAgICAgY2F0Y2goIERiUm9sbEJhY2tFeGNlcHRpb24gJGUpDQogICAgICB7DQogICAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciByb2xsaW5nIGJhY2suLi4nKTsNCiAgICAgIH0NCiAgICAgIGNhdGNoKCBEYkRyb3BFeGNlcHRpb24gJGUpDQogICAgICB7DQogICAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciBkcm9wcGluZyBNQU1TIHRlbXAgdGFibGVzLi4uJyk7DQogICAgICB9DQogICAgICBmaW5hbGx5DQogICAgICB7DQogICAgICAgICMgd2hldGhlciBiYWNrdXAgZmFpbGVkIG9yIGJvdGggYmFja3VwIGFuZCBkcm9wIHRlbXBzDQogICAgICAgICMgd2UgcmV0dXJuIHRoZSBlcnJvciBjb2RlIC0tIHRoZXJlIGlzIG9ubHkgc28gbXVjaCB3ZSBjYW4gZG8NCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0NvcHlpbmcgdGFibGVzIGZyb20gRkVVIGZhaWxlZCEgSW1wb3J0IGFib3J0ZWQgYW5kIHNvbWUgY2xlYW5pbmcgdXAgd2FzIGF0dGVtcHRlZC4nKTsNCiAgICAgICAgJGVyciA9IFskY29kZSwgJG1zZ107DQogICAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB0cnkNCiAgICB7DQogICAgICBzZWxmOjpfRHJvcFRlbXBzKCk7DQogICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQmFja3VwIHRhYmxlcyBkcm9wcGVkIHN1Y2Nlc3NmdWxseSEnKTsNCiAgICB9DQogICAgY2F0Y2goIERiRHJvcEV4Y2VwdGlvbiAkZSkNCiAgICB7DQogICAgICAkY29kZSA9ICRlLT5nZXRDb2RlKCk7DQogICAgICAkbXNnID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAgICRmYWlsID0gVFJVRTsNCiAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciBkcm9wcGluZyBNQU1TIHRlbXAgdGFibGVzLi4uJyk7DQogICAgfQ0KICAgIGZpbmFsbHkNCiAgICB7DQogICAgICBpZigkZmFpbCkNCiAgICAgIHsNCiAgICAgICAgIyB3aGV0aGVyIGJhY2t1cCBmYWlsZWQgb3IgYm90aCBiYWNrdXAgYW5kIGRyb3AgdGVtcHMNCiAgICAgICAgIyB3ZSByZXR1cm4gdGhlIGVycm9yIGNvZGUgLS0gdGhlcmUgaXMgb25seSBzbyBtdWNoIHdlIGNhbiBkbw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQ29weWluZyB0YWJsZXMgZnJvbSBGRVUgc2VlbXMgdG8gaGF2ZSB3b3JrZWQhQnV0IGFwcGFyZW50bHkgdGhlcmUgYXJlIHNvbWUgbGVmdG92ZXIgdGVtcCB0YWJsZXMuJyk7DQogICAgICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZXJyXTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgdHJ5DQogICAgew0KICAgICAgc2VsZjo6X1JlbmFtZUluZGV4ZXMoKTsNCiAgICB9DQogICAgY2F0Y2goRGJFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIC8vcmV0dXJuIFtGQUxTRSwgJGVycl07IGl0IGRvZXNuJ3Qgd2FycmFudCBhIHJvbGxiYWNrDQogICAgfQ0KICAgIA0KICAgIC8vICAgIHRyeQ0KICAgIC8vICAgIHsNCiAgICAvLyAgICAgIHNlbGY6Ol9Db3B5VGVtcGxhdGVzKCk7DQogICAgLy8gICAgfQ0KICAgIC8vICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgLy8gICAgew0KICAgIC8vICAgICAgJGVyciA9IFskZS0+Z2V0Q29kZSgpLCAkZS0+Z2V0TWVzc2FnZSgpXTsNCiAgICAvLyAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIC8vICAgIH0NCiAgICANCiAgICB0cnkNCiAgICB7DQogICAgICBzZWxmOjpfQ29weVByZWZlcmVuY2VzKCk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gW1RSVUUsICRlcnJdOw0KICB9DQogIA0KICANCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSForcedLogoutTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgTUFNU0ZvcmNlZExvZ291dFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CiAgcHVibGljIGZ1bmN0aW9uIGdldF9uYW1lKCkgIHsgcmV0dXJuIF9fQ0xBU1NfXzsgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oKQogIHsKICAgIHJldHVybiBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKS0+TGFuZygnZm9yY2VkbG9nb3V0dGFza19kZXNjJyk7CiAgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCR0aW1lID0gMCkKICB7CiAgICBpZiggISR0aW1lICkKICAgIHsKICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICB9CiAgICAKICAgICRtb2QgICAgID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkbGFzdHJ1biA9IChpbnQpJG1vZC0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfbGFzdHJ1bicpOwogICAgCiAgICAkdGltZXMgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF90aW1lcycpOyAvLyBsaWtlOiAxODozMCwyMDozMCwwODowMCwgZXRjLgogICAgCiAgICBpZiggJycgPT0gJHRpbWVzICkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICAkdG1wICAgPSBbXTsKICAgICR0aW1lcyA9IGV4cGxvZGUoJywnLCAkdGltZXMpOwogICAgCiAgICBmb3JlYWNoKCAkdGltZXMgYXMgJGlWYWx1ZSApCiAgICB7CiAgICAgICRpVmFsdWUgPSB0cmltKCRpVmFsdWUpOwogICAgICBpZiggJycgPT0gJGlWYWx1ZSApCiAgICAgIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICAKICAgICAgJHRfaCA9ICcnOwogICAgICAkdF9tID0gJyc7CiAgICAgIAogICAgICAvL2lmKHN0YXJ0c3dpdGgoJHRpbWVzWyRpXSwgJyonKSkKICAgICAgaWYoIHN0YXJ0c3dpdGgoJGlWYWx1ZSwgJyonKSApCiAgICAgIHsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcvJywgJGlWYWx1ZSwgMik7CiAgICAgICAgaWYoIDIgIT0gY291bnQoJHBhcnRzKSApCiAgICAgICAgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIFskanVuaywgJG1pbnV0ZXNdID0gJHBhcnRzOwogICAgICAgICRtaW51dGVzID0gKGludCkkbWludXRlczsKICAgICAgICAkbWludXRlcyA9IG1heCgkbWludXRlcywgMSk7ICAgLy8gbWluaW11bSAxIG1pbnV0ZQogICAgICAgICRtaW51dGVzID0gbWluKCRtaW51dGVzLCAxODApOyAvLyBtYXhpbXVtIDE4MCBtaW51dGVzLgogICAgICAgIAogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IDYwICogMjQ7ICRpICs9ICRtaW51dGVzICkKICAgICAgICB7CiAgICAgICAgICAkdF9oICAgPSAoaW50KSgkaSAvIDYwKTsKICAgICAgICAgICR0X20gICA9IChpbnQpKCRpICUgNjApOwogICAgICAgICAgJHRtcFtdID0gbWt0aW1lKChpbnQpJHRfaCwgKGludCkkdF9tLCAwLCAoaW50KWRhdGUoJ20nLCAkdGltZSksIChpbnQpZGF0ZSgnZCcsICR0aW1lKSwgKGludClkYXRlKCdZJywgJHRpbWUpKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnOicsIHRyaW0oJGlWYWx1ZSksIDIpOwogICAgICAgIGlmKCAyICE9IGNvdW50KCRwYXJ0cykgKQogICAgICAgIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBbJHRfaCwgJHRfbV0gPSAkcGFydHM7CiAgICAgICAgJHRfaCA9IChpbnQpJHRfaDsKICAgICAgICAkdF9tID0gKGludCkkdF9tOwogICAgICAgIGlmKCAkdF9oIDwgMCB8fCAkdF9oID4gMjMgfHwgJHRfbSA8IDAgfHwgJHRfbSA+IDU5ICkKICAgICAgICB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgJHRtcFtdID0gbWt0aW1lKCR0X2gsICR0X20sIDAsIChpbnQpZGF0ZSgnbScsICR0aW1lKSwgKGludClkYXRlKCdkJywgJHRpbWUpLCAoaW50KWRhdGUoJ1knLCAkdGltZSkpOwogICAgICB9CiAgICB9CiAgICAKICAgIGlmKCAhY291bnQoJHRtcCkgKQogICAgewogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICAgICR0bXAgPSBhcnJheV92YWx1ZXMoYXJyYXlfdW5pcXVlKCR0bXApKTsKICAgIHNvcnQoJHRtcCk7CiAgICAKICAgIC8vIGZpbmQgdGhlIG1vc3QgcmVjZW50IG1hdGNoaW5nIHNjaGVkdWxlIHRoYXQgaGFzIG5vdCBhbHJlYWR5IHJ1bi4KICAgIGZvcmVhY2goICR0bXAgYXMgJGlWYWx1ZSApCiAgICB7CiAgICAgIGlmKCAkdGltZSA+PSAkaVZhbHVlICYmICgkdGltZSAtICRpVmFsdWUpIDwgNjAgJiYgJGxhc3RydW4gPCAkaVZhbHVlICkKICAgICAgewogICAgICAgICRfU0VTU0lPTltnZXRfY2xhc3MoKSAuICdfcnVudGltZSddID0gJGlWYWx1ZTsKICAgICAgICAKICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCR0aW1lID0gMCkKICB7CiAgICBpZiggISR0aW1lICkgeyAkdGltZSA9IHRpbWUoKTsgfQogICAgCiAgICAkaW5kZXggPSBfX0NMQVNTX18gLiAnX3J1bnRpbWUnOwogICAgCiAgICBpZiggIWlzc2V0KCRfU0VTU0lPTlskaW5kZXhdKSApIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICR0aGVfdGltZSA9ICRfU0VTU0lPTlskaW5kZXhdOwogICAgdW5zZXQoJF9TRVNTSU9OWyRpbmRleF0pOwogICAgCiAgICAvLyBub3cgZmluZCBhbGwgdGhlIHVpZCdzIHRoYXQgYXJlIGxvZ2dlZCBpbiBidXQgbm90IGFjdGl2ZSBzaW5jZSAkdGhlX3RpbWUKICAgICRtYW1zICAgICAgICA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgJGZvcmdpdmVuZXNzID0gKGludCkkbWFtcy0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZScpOwogICAgJGZvcmdpdmVuZXNzID0gbWF4KDAsICRmb3JnaXZlbmVzcykgKiA2MDsKICAgICR0aGVfdGltZSAgICAtPSAkZm9yZ2l2ZW5lc3M7CiAgICAkdWlkcyAgICAgICAgPSAkbWFtcy0+R2V0TG9nZ2VkSW5Vc2VycygkdGhlX3RpbWUpOwogICAgCiAgICBpZiggIWlzX2FycmF5KCR1aWRzKSB8fCAwID09IGNvdW50KCR1aWRzKSApCiAgICB7CiAgICAgIHJldHVybiBUUlVFOyAvLyBub3RoaW5nIHRvIGRvLgogICAgfQogICAgCiAgICBmb3JlYWNoKCAkdWlkcyBhcyAkaSA9PiAkaVZhbHVlICkKICAgIHsKICAgICAgJG1hbXMtPkxvZ291dCgkdWlkc1skaV0sICdmb3JjZWQgbG9nb3V0Jyk7CiAgICB9CiAgICAKICAgICRtYW1zLT5BdWRpdCgKICAgICAgJycsICRtYW1zLT5HZXROYW1lKCksICdGb3JjZWQgbG9nb3V0IG9mICcgLiBjb3VudCgkdWlkcykgLiAnIHVzZXJzIGF0ICcgLiBkYXRlKCdIOmknLCAkdGhlX3RpbWUpCiAgICApOwogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgCiAgcHVibGljIGZ1bmN0aW9uIG9uX3N1Y2Nlc3MoJHRpbWUgPSAwKQogIHsKICAgIGlmKCAhJHRpbWUgKSB7ICR0aW1lID0gdGltZSgpOyB9CiAgICAKICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkbWFtcy0+U2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfbGFzdHJ1bicsICR0aW1lKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAwKQogIHsKICAgIGlmKCAhJHRpbWUgKSB7ICR0aW1lID0gdGltZSgpOyB9CiAgfQogIAp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSManipulator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgbWFuYWdlbWVudCBvZiBmcm9udGVuZAojICB1c2VycywgYW5kIHRoZWlyIGxvZ2luIHByb2Nlc3Mgd2l0aGluIGEgQ01TIE1hZGUgU2ltcGxlIHBvd2VyZWQKIyAgd2Vic2l0ZS4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0cyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIE1BTVNNYW5pcHVsYXRvciBleHRlbmRzIE1BTVNVc2VyTWFuaXB1bGF0b3IKewogIHByaXZhdGUgJF9jYWNoZWRfcHJvcGRlZm5zOwogIHByaXZhdGUgJF9ncm91cGluZm9fY2FjaGU7CiAgcHJpdmF0ZSAkX211bHRpc2VsZWN0X29wdGlvbnM7CiAgcHJpdmF0ZSAkX3VzZXJpZGJ5bmFtZTsKICBwcml2YXRlICRfZ3JvdXBwcm9wbWFwOwogIC8qKgogICAqIEB2YXIgfG51bGwKICAgKi8KICBwcml2YXRlICRfY2FjaGVkX3Byb3BkZWZuOwogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBrZWVwYWxpdmVfY29va2llKCkKICB7CiAgICByZXR1cm4gJ2thJyAuIHNoYTEoX19GSUxFX18pOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gZW5jb2RlX3VzZXJkYXRhKGFycmF5ICRkYXRhKQogIHsKICAgICRzdHIgPSBqc29uX2VuY29kZSgkZGF0YSk7CiAgICAkc3RyIC49ICc6OicgLiBzaGExKCRzdHIgLiBfX0ZJTEVfXyk7CiAgICAKICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKCRzdHIpOwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGRlY29kZV91c2VyZGF0YShzdHJpbmcgJHN0cikKICB7CiAgICAkZW5jb2RlZCA9IGJhc2U2NF9kZWNvZGUoJHN0cik7CiAgICAKICAgIGlmKCEkZW5jb2RlZCkgeyByZXR1cm4gW107IH0KICAgIAogICAgWyRqc29uLCAkc2lnXSA9IGV4cGxvZGUoJzo6JywgJGVuY29kZWQsIDIpOwogICAgCiAgICBpZighJGpzb24gfHwgISRzaWcpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgIGlmKHNoYTEoJGpzb24gLiBfX0ZJTEVfXykgIT09ICRzaWcpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgIHJldHVybiBqc29uX2RlY29kZSgkanNvbiwgVFJVRSk7IC8vIFRPRE8gaGFyZGVuIGVycm9yIGhhbmRsaW5nCiAgfQogIAogIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2JhZF9zYWx0KCkKICB7CiAgICAvLyB0aGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBzaXRlcyB0aGF0IGhhdmUgYmVlbiB1cGdyYWRlZCBmb3JldmVyCiAgICAvLyBhbmQgaXRzIHVzZSBpcyB2ZXJ5IGJhZCBmb3Igc2VjdXJpdHksIGFzIGl0IGltcGxpZXMgYSBzaGFyZWQgc2FsdCBvbiB1c2VyIHBhc3N3b3Jkcy4KICAgICRtb2QgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgJHNhbHQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdwd3NhbHQnLCAnJyk7CiAgICAKICAgIGlmKCEkc2FsdCkKICAgIHsKICAgICAgYXVkaXQoJycsICdNQU1TJywgJ0lNUE9SVEFOVCBXZSBhcmUgdXNpbmcgYmFkIHBhc3N3b3JkIGhhc2hpbmcuLi4gYW5kIGV2ZW4gd29yc2UgdGhlIHNhbHQgaXMgZW1wdHknKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRzYWx0OwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGdldF9leHBpcmV1c2Vyc19sYXN0cnVuKCkKICB7CiAgICByZXR1cm4gY21zX2NhY2hlX2hhbmRsZXI6OmdldF9pbnN0YW5jZSgpLT5nZXQoJ2V4cGlyZV9sYXN0cnVuJywgX19DTEFTU19fKTsKICB9CiAgCiAgcHJpdmF0ZSBmdW5jdGlvbiB0b3VjaF9leHBpcmV1c2Vyc19sYXN0cnVuKCkKICB7CiAgICBjbXNfY2FjaGVfaGFuZGxlcjo6Z2V0X2luc3RhbmNlKCktPnNldCgnZXhwaXJlX2xhc3RydW4nLCB0aW1lKCksIF9fQ0xBU1NfXyk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBhZGRfaGlzdG9yeSgkdWlkLCAkbWVzc2FnZSkKICB7CiAgICBpZigkdWlkIDw9IDAgfHwgIWlzX3N0cmluZygkbWVzc2FnZSkgfHwgJG1lc3NhZ2UgPT0gJycpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJG5vdyAgID0gJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpOwogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBDTVNfREJfUFJFRklYIC4KICAgICAgICAgICAgICJtb2R1bGVfbWFtc19oaXN0b3J5ICh1c2VyaWQsc2Vzc2lvbmlkLGFjdGlvbixyZWZkYXRlLGlwYWRkcmVzcykgVkFMVUVTICg/LD8sPywkbm93LD8pIjsKICAgICRpcCAgICA9IHh0X3V0aWxzOjpnZXRfcmVhbF9pcCgpOwogICAgJGRiciAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyR1aWQsIHNlc3Npb25faWQoKSwgc3Vic3RyKCRtZXNzYWdlLCAwLCAyNTUpLCAkaXBdKTsKICAgIAogICAgcmV0dXJuIFRSVUU7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRFbmNyeXB0aW9uS2V5KCR1aWQgPSAtMSkKICB7CiAgICBnbG9iYWwgJENNU19BRE1JTl9QQUdFOwogICAgJGdDbXMgPSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpOwogICAgCiAgICBpZigkQ01TX0FETUlOX1BBR0UpCiAgICB7CiAgICAgIC8vIGFuIGFkbWluaXN0cmF0b3IgY2FuIHNlZSBlbmNyeXB0ZWQgZGF0YS4KICAgICAgJHJlcyA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgICAgCiAgICAgIGlmKCFpc19hcnJheSgkcmVzKSB8fCAkcmVzWzBdID09PSBGQUxTRSkgeyByZXR1cm4gRkFMU0U7IH0KICAgICAgCiAgICAgICRrZXkgPSBtZDUoJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXSAuICR1aWQgLiAkcmVzWzFdWydjcmVhdGVkYXRlJ10gLiAkdGhpcy0+Z2V0X2JhZF9zYWx0KCkpOwogICAgICAKICAgICAgcmV0dXJuICRrZXk7CiAgICB9CiAgICAKICAgIC8vIGZyb250ZW5kIHJlcXVlc3QuLi4gdXNlIGxvZ2dlZCBpbiBpZC4KICAgICR0dWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIAogICAgaWYoJHR1aWQgPCAxKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkcmVzID0gJHRoaXMtPkdldFVzZXJJbmZvKCR0dWlkKTsKICAgIAogICAgaWYoIWlzX2FycmF5KCRyZXMpIHx8ICRyZXNbMF0gPT09IEZBTFNFKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAka2V5ID0gbWQ1KCRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10gLiAkdHVpZCAuICRyZXNbMV1bJ2NyZWF0ZWRhdGUnXSAuICR0aGlzLT5nZXRfYmFkX3NhbHQoKSk7CiAgICAKICAgIHJldHVybiAka2V5OwogICAgCiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWNyeXB0VXNlckRhdGEoJHVpZCwgJGRhdGEpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgIAogICAgaWYoJHVpZCA8IDEpIHsgcmV0dXJuICcnOyB9CiAgICAKICAgICRrZXkgPSAkdGhpcy0+R2V0RW5jcnlwdGlvbktleSgkdWlkKTsKICAgIAogICAgcmV0dXJuIHRyaW0oIHh0X2VuY3J5cHQ6OmRlY3J5cHQoICRrZXksIGJhc2U2NF9kZWNvZGUoJGRhdGEpICkgKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIENvdW50VGVtcENvZGVSZWNvcmRzKCkKICB7CiAgICAkZGIgICAgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRxICAgICAgICA9ICdTRUxFQ1QgQ09VTlQoKikgQVMgY291bnQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc190ZW1wY29kZSc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEpOwogICAgCiAgICBpZighJGRicmVzdWx0KSB7IHJldHVybiAwOyB9CiAgICAKICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAKICAgIC8qKiBAdmFyIGFycmF5ICRyb3cgKi8KICAgIHJldHVybiAkcm93Wydjb3VudCddOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVGVtcENvZGVzKCRleHBpcnljb2RlKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICRleHBpcmVzID0gc3RydG90aW1lKCRleHBpcnljb2RlKTsKICAgICAgJHEgICAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgV0hFUkUgY3JlYXRlZCA+ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskZXhwaXJlc10pOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICByZXR1cm4gVFJVRTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICBhdWRpdCgnJywgJG1vZC0+R2V0TmFtZSgpLCAnQ291bGQgbm90IGV4cGlyZSB0ZW1wIGNvZGVzICcpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVtb3ZlVXNlclRlbXBDb2RlKCR1aWQpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIHRyeQogICAgewogICAgICAkdWlkID0gKGludCkkdWlkOwogICAgICAKICAgICAgaWYoJHVpZCA8IDEpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcSwgWyR1aWRdKTsKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAKICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJHVpZCwgJG1vZC0+R2V0TmFtZSgpLCAnQ291bGQgbm90IHJlbW92ZSB0ZW1wIGNvZGUnKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJUZW1wQ29kZSgkdWlkKQogIHsKICAgIGlmKCEkdWlkKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkZGIgICAgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRxICAgICAgICA9ICdTRUxFQ1QgKiBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIHVzZXJpZCA9ID8gT1JERVIgQlkgY3JlYXRlZCBERVNDJzsKICAgICRkYnJlc3VsdCA9ICRkYi0+R2V0Um93KCRxLCBbJHVpZF0pOwogICAgCiAgICBpZihpc19hcnJheSgkZGJyZXN1bHQpICYmIGNvdW50KCRkYnJlc3VsdCkpIHsgcmV0dXJuICRkYnJlc3VsdFsnY29kZSddOyB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyVGVtcENvZGUoJHVpZCwgJGNvZGUpCiAgewogICAgJHVpZCAgPSAoaW50KSR1aWQ7CiAgICAkY29kZSA9IHRyaW0oJGNvZGUpOwogICAgCiAgICBpZigkdWlkIDwgMSB8fCAhJGNvZGUpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIHVzZXJpZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskdWlkXSk7CiAgICAgIAogICAgICAkcSA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc190ZW1wY29kZSBWQUxVRVMoPyw/LE5PVygpKSc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcSwgWyR1aWQsICRjb2RlXSk7CiAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgCiAgICAgIHJldHVybiBUUlVFOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCR1aWQsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCBzZXQgdGVtcCBjb2RlJyk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm4oCiAgICAkbmFtZSwgJG5ld25hbWUsICRwcm9tcHQsICRsZW5ndGgsICR0eXBlLCAkbWF4bGVuZ3RoID0gMCwgJGF0dHJpYnMgPSAnJywgJGZvcmNlX3VuaXF1ZSA9IDAsICRlbmNyeXB0ID0gMAogICkKICB7CiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgaWYoMCA9PT0gJG1heGxlbmd0aCkgeyAkbWF4bGVuZ3RoID0gJGxlbmd0aDsgfQogICAgCiAgICAkcSAgICAgICAgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuCiAgICAgICAgICAgIFNFVCBuYW1lID0gPywgcHJvbXB0ID0gPywgdHlwZSA9ID8sIGxlbmd0aCA9ID8sIG1heGxlbmd0aCA9ID8sIGF0dHJpYnMgPSA/LCBmb3JjZV91bmlxdWUgPSA/LCBlbmNyeXB0ID0gPwogICAgICAgICAgICBXSEVSRSBuYW1lID0gPyc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoCiAgICAgICRxLCBbJG5ld25hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoLCAkYXR0cmlicywgJGZvcmNlX3VuaXF1ZSwgJGVuY3J5cHQsICRuYW1lXQogICAgKTsKICAgIAogICAgaWYoISRkYnJlc3VsdCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuIFRSVUU7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm4oJG5hbWUpCiAgewogICAgaWYoICFpc19zY2FsYXIoJG5hbWUpIHx8ICcnID09PSB0cmltKChzdHJpbmcpICRuYW1lKSApCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgICRuYW1lID0gdHJpbSgoc3RyaW5nKSAkbmFtZSk7CgogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAkaW5fdHJhbnNhY3Rpb24gPSBGQUxTRTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgIGlmKCBGQUxTRSA9PT0gJGRiLT5CZWdpblRyYW5zKCkgKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgICAgJGluX3RyYW5zYWN0aW9uID0gVFJVRTsKICAgICAgCiAgICAgICRyZXN1bHQgPSAkdGhpcy0+RGVsZXRlU2VsZWN0T3B0aW9ucygkbmFtZSk7CiAgICAgIGlmKCAhaXNfYXJyYXkoJHJlc3VsdCkgfHwgIWlzc2V0KCRyZXN1bHRbMF0pIHx8IFRSVUUgIT09ICRyZXN1bHRbMF0gKQogICAgICB7CiAgICAgICAgJG1lc3NhZ2UgPSBpc19hcnJheSgkcmVzdWx0KSAmJiBpc3NldCgkcmVzdWx0WzFdKSA/ICRyZXN1bHRbMV0gOiAkZGItPkVycm9yTXNnKCk7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtZXNzYWdlKTsKICAgICAgfQoKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB0aXRsZSA9ID8nOwogICAgICBpZiggRkFMU0UgPT09ICRkYi0+RXhlY3V0ZSgkcSwgWyRuYW1lXSkgKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgICAgCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZ3JvdXBfaWQsc29ydF9rZXkgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgV0hFUkUgbmFtZSA9ID8nOwogICAgICAkZGJyID0gJGRiLT5HZXRBcnJheSgkcXVlcnksIFskbmFtZV0pOwogICAgICBpZiggIWlzX2FycmF5KCRkYnIpICkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAgIAogICAgICBpZiggMCA8IGNvdW50KCRkYnIpICkKICAgICAgewogICAgICAgICRxID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAKICAgICAgICAgICAgICAgICAgICAgICAgU0VUIHNvcnRfa2V5ID0gc29ydF9rZXkgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGdyb3VwX2lkID0gPyBBTkQgc29ydF9rZXkgPiA/JzsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCAkZGJyIGFzICRyb3cgKQogICAgICAgIHsKICAgICAgICAgIGlmKCBGQUxTRSA9PT0gJGRiLT5FeGVjdXRlKCRxLCBbJHJvd1snZ3JvdXBfaWQnXSwgJHJvd1snc29ydF9rZXknXV0pICkKICAgICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAkcSA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgV0hFUkUgbmFtZSA9ID8nOwogICAgICBpZiggRkFMU0UgPT09ICRkYi0+RXhlY3V0ZSgkcSwgWyRuYW1lXSkgKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgICAgCiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuIFdIRVJFIG5hbWUgPSA/JzsKICAgICAgaWYoIEZBTFNFID09PSAkZGItPkV4ZWN1dGUoJHEsIFskbmFtZV0pICkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAgIAogICAgICBpZiggRkFMU0UgPT09ICRkYi0+Q29tbWl0VHJhbnMoKSApCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgICAkaW5fdHJhbnNhY3Rpb24gPSBGQUxTRTsKICAgICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zID0gTlVMTDsKICAgICAgJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zID0gTlVMTDsKICAgICAgJHRoaXMtPl9ncm91cHByb3BtYXAgPSBOVUxMOwogICAgICAKICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CiAgICBjYXRjaCggXFRocm93YWJsZSAkZSApCiAgICB7CiAgICAgIGlmKCAkaW5fdHJhbnNhY3Rpb24gKQogICAgICB7CiAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgIH0KICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJycsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkgJyAuICRuYW1lKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgIAogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucygkdGl0bGUpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRxICAgICAgICA9ICdTRUxFQ1QgKiBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBXSEVSRSBuYW1lID0gPyBPUkRFUiBCWSBzb3J0X2tleSBERVNDJzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyR0aXRsZV0pOwogICAgCiAgICBpZighJGRicmVzdWx0KSB7IHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07IH0KICAgIAogICAgJHJlc3VsdCA9IFtdOwogICAgCiAgICB3aGlsZSggJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApIHsgJHJlc3VsdFtdID0gJHJvdzsgfQogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CiAgCiAgCiAgLyoqCiAgICogUmV0dXJuIHRoZSB1bml4IHRpbWVzdGFtcCBvZiB0aGUgdXNlcidzIGV4cGlyeSBkYXRlCiAgICogb3IgZmFsc2U7CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEV4cGlyeURhdGUoJHVpZCkKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHJlcyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCk7CiAgICAKICAgIGlmKGlzX2FycmF5KCRyZXMpICYmICcnICE9PSAkcmVzWydleHBpcmVzJ10pCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+R2V0RGIoKS0+VW5peFRpbWVTdGFtcCgkcmVzWydleHBpcmVzJ10pOwogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBDYW5Vc2VyTG9naW4oJHVpZCkKICB7CiAgICAkdWlkID0gKGludCkkdWlkOwogICAgCiAgICBpZigkdWlkIDwgMSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHJlcyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCk7CiAgICAKICAgIGlmKCAhaXNfYXJyYXkoJHJlcykgKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICBpZigkcmVzWydkaXNhYmxlZCddKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICBpZighJHJlc1sncGFzc3dvcmQnXSl7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkZXhwaXJlcyA9IHN0cnRvdGltZSgkcmVzWydleHBpcmVzJ10pOwogICAgCiAgICByZXR1cm4gdGltZSgpIDwgJGV4cGlyZXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBJc0FjY291bnRFeHBpcmVkKCR1aWQpCiAgewogICAgaWYoISR1aWQpIHsgcmV0dXJuIFRSVUU7IH0gLy8gZHVubm8gYWJvdXQgdGhpcwogICAgCiAgICAkZXhwaXJ5ID0gJHRoaXMtPkdldEV4cGlyeURhdGUoJHVpZCk7CiAgICAKICAgIGlmKCEkZXhwaXJ5KSB7IHJldHVybiBUUlVFOyB9CiAgICAKICAgIGlmKCRleHBpcnkgPCB0aW1lKCkpIHsgcmV0dXJuIFRSVUU7IH0KICAgIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5UmVsYXRpb25zKCR1aWQpCiAgewogICAgJHVwcm9wcyA9IFtdOwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAgIAogICAgaWYoIWlzX2FycmF5KCRncm91cHMpIHx8IDAgPT09IGNvdW50KCRncm91cHMpKSB7IHJldHVybiAkdXByb3BzOyB9CiAgICAKICAgIGZvcigkYSA9IDAsICRhTWF4ID0gY291bnQoJGdyb3Vwcyk7ICRhIDwgJGFNYXg7ICRhKyspCiAgICB7CiAgICAgICRnaWQgICAgPSAkZ3JvdXBzWyRhXVsnZ3JvdXBpZCddOwogICAgICAkcmVsbnMgID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICAgICR1cHJvcHMgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCR1cHJvcHMsICRyZWxucyk7CiAgICAgIHVzb3J0KCR1cHJvcHMsIFsneHRfYXJyYXknLCAnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5J10pOwogICAgfQogICAgCiAgICByZXR1cm4gJHVwcm9wczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdycGlkKQogIHsKICAgIGlmKCFpc19hcnJheSgkdGhpcy0+X2dyb3VwcHJvcG1hcCkpCiAgICB7CiAgICAgICRkYiAgICAgICAgICAgICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRxICAgICAgICAgICAgICAgICAgID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgT1JERVIgQlkgZ3JvdXBfaWQsc29ydF9rZXkgREVTQyc7CiAgICAgICR0aGlzLT5fZ3JvdXBwcm9wbWFwID0gJGRiLT5HZXRBcnJheSgkcSk7CiAgICAgIAogICAgICBpZighJHRoaXMtPl9ncm91cHByb3BtYXApCiAgICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgICB9CiAgICB9CiAgICAKICAgICRyZXMgPSBbXTsKICAgIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHRoaXMtPl9ncm91cHByb3BtYXApOyAkaSA8ICRpTWF4OyAkaSsrKQogICAgewogICAgICAkcm93ID0gJHRoaXMtPl9ncm91cHByb3BtYXBbJGldOwogICAgICAKICAgICAgaWYoJHJvd1snZ3JvdXBfaWQnXSA8ICRncnBpZCkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgaWYoJHJvd1snZ3JvdXBfaWQnXSA+ICRncnBpZCkgeyBicmVhazsgfQogICAgICAKICAgICAgJHJlc1tdID0gJHJvdzsKICAgIH0KICAgIAogICAgaWYoIWNvdW50KCRyZXMpKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAnbm90Zm91bmQnXTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oJGdycGlkLCAkcHJvcG5hbWUsICRzb3J0a2V5LCAkbG9zdHVuLCAkdmFsKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcSAgICAgICAgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFZBTFVFUyg/LD8sPyw/LD8pJzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRwcm9wbmFtZSwgJGdycGlkLCAkc29ydGtleSwgJHZhbCwgJGxvc3R1bl0pOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICByZXR1cm4gW1RSVUUsICcnXTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdycGlkKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBXSEVSRSBncm91cF9pZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskZ3JwaWRdKTsKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJycsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCBkZWxldGUgYWxsIGdyb3VwIHByb3BlcnR5IHJlbGF0aW9ucycpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRSwgJGUtPmdldE1lc3NhZ2UoKV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cFByb3BlcnR5UmVsYXRpb24oJGdycGlkLCAkcHJvcG5hbWUpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIHRyeQogICAgewogICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFdIRVJFIG5hbWUgPSA/IEFORCBncm91cF9pZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskcHJvcG5hbWUsICRncnBpZF0pOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICByZXR1cm4gW1RSVUVdOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCcnLCAkbW9kLT5HZXROYW1lKCksICdDb3VsZCBub3QgZGVsZXRlIGdyb3VwIHByb3BlcnR5IHJlbGF0aW9uJyk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gW0ZBTFNFLCAkZS0+Z2V0TWVzc2FnZSgpXTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEFkZFByb3BlcnR5RGVmbigKICAgICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCA9IDAsICRhdHRyaWJzID0gJycsICRmb3JjZV91bmlxdWUgPSAwLCAkZW5jcnlwdCA9IDAKICApCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIGlmKDAgPT09ICRtYXhsZW5ndGgpCiAgICB7CiAgICAgICRtYXhsZW5ndGggPSAkbGVuZ3RoOwogICAgfQogICAgCiAgICAkcCAgICAgICAgPSBbJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoLCAkYXR0cmlicywgJGZvcmNlX3VuaXF1ZSwgJGVuY3J5cHRdOwogICAgJHEgICAgICAgID0gJ0lOU0VSVCBJTlRPICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuCiAgICAgICAgKG5hbWUscHJvbXB0LHR5cGUsbGVuZ3RoLG1heGxlbmd0aCxhdHRyaWJzLGZvcmNlX3VuaXF1ZSxlbmNyeXB0KQogICAgICAgIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/KSc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwKTsKICAgIAogICAgaWYoRkFMU0UgPT09ICRkYnJlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJGRiLT5zcWwgLiAnPGJyLz4nIC4gJGRiLT5FcnJvck1zZygpXTsKICAgIH0KICAgIAogICAgJGRiLT5JbnNlcnRfSUQoKTsKICAgIAogICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm4gPSBOVUxMOwogICAgCiAgICByZXR1cm4gW1RSVUUsICcnXTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIFNldFByb3BlcnR5RGVmbkV4dHJhKCRuYW1lLCAkZXh0cmEpCiAgewogICAgaWYoaXNfYXJyYXkoJGV4dHJhKSkKICAgIHsKICAgICAgJGV4dHJhID0gc2VyaWFsaXplKCRleHRyYSk7CiAgICB9CiAgICAKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZGVmbiBTRVQgZXh0cmEgPSA/IFdIRVJFIG5hbWUgPSA/JzsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZXh0cmEsICRuYW1lXSk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBBZGRTZWxlY3RPcHRpb25zKCRuYW1lLCAkb3B0aW9ucykKICB7CiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgICRvcmRlcl9pZCAgICA9IDA7CiAgICAgICRzcWwgICAgICAgICA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuCiAgICAgICAgICAgICAgICAgICAgICdtb2R1bGVfbWFtc19kcm9wZG93bnMgKG9yZGVyX2lkLCBvcHRpb25fbmFtZSwgb3B0aW9uX3RleHQsIGNvbnRyb2xfbmFtZSkgVkFMVUVTICg/LD8sPyw/KSc7CiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAKICAgICAgZm9yZWFjaCgkb3B0aW9ucyBhcyAkb3B0dGV4dCkKICAgICAgewogICAgICAgIC8vIGlmIG5vIGFjdHVhbCB0ZXh0IGluIHRoZSBsaW5lLCBtYWtlIHN1cmUgaXQgZXF1YWxzICcnLAogICAgICAgIC8vIGluIG9yZGVyIG5vdCB0byBhZGQgaXQgdG8gdGhlIGRiCiAgICAgICAgJG9wdHRleHQgPSB0cmltKCRvcHR0ZXh0KTsKICAgICAgICAKICAgICAgICBpZignJyA9PT0gJG9wdHRleHQgfHwgJ19fJyA9PT0gJG9wdHRleHQpIHsgY29udGludWU7IH0KICAgICAgICAKICAgICAgICAkb3B0bmFtZSA9IHRyaW0oJG9wdHRleHQpOwogICAgICAgIAogICAgICAgIGlmKCBGQUxTRSAhPT0gc3RycG9zKCRvcHR0ZXh0LCAnPScpICkKICAgICAgICB7CiAgICAgICAgICAkdG1wICAgICA9IGV4cGxvZGUoJz0nLCAkb3B0dGV4dCwgMik7CiAgICAgICAgICAkb3B0bmFtZSA9IHRyaW0oJHRtcFsxXSk7CiAgICAgICAgICAkb3B0dGV4dCA9IHRyaW0oJHRtcFswXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRvcmRlcl9pZCsrOwogICAgICAgICRyZXMgPSAkZGItPkV4ZWN1dGUoJHNxbCwgWyRvcmRlcl9pZCwgJG9wdG5hbWUsICRvcHR0ZXh0LCAkbmFtZV0pOwogICAgICAgIAogICAgICAgIGlmKCEkcmVzKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJ1NRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSApOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMgPSBOVUxMOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFXTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICBhdWRpdCgnJywgJG1vZC0+R2V0TmFtZSgpLCAnQ291bGQgbm90IGV4cGlyZSB0ZW1wIGNvZGVzICcpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm5zKCkKICB7CiAgICB0cnkKICAgIHsKICAgICAgJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgaWYoICFpc19hcnJheSgkZGVmbnMpICkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGxvYWQgcHJvcGVydHkgZGVmaW5pdGlvbnMnKTsKICAgICAgfQogICAgICAKICAgICAgZm9yZWFjaCggJGRlZm5zIGFzICRuYW1lID0+ICRyZWMgKQogICAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+RGVsZXRlUHJvcGVydHlEZWZuKCRuYW1lKSApCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5ICcgLiAkbmFtZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgICR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucyA9IE5VTEw7CgogICAgICByZXR1cm4gW1RSVUUsICcnXTsKICAgIH0KICAgIGNhdGNoKCBcVGhyb3dhYmxlICRlICkKICAgIHsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJycsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCBkZWxldGUgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zJyk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gW0ZBTFNFLCAkZS0+R2V0TWVzc2FnZSgpXTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVNlbGVjdE9wdGlvbnMoJG5hbWUpCiAgewogICAgJGRiICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcSAgICAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZHJvcGRvd25zIFdIRVJFIGNvbnRyb2xfbmFtZSA9ID8nOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJG5hbWVdKTsKICAgIAogICAgaWYoRkFMU0UgPT09ICRkYnJlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJGRiLT5FcnJvck1zZygpXTsKICAgIH0KICAgIAogICAgJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zID0gTlVMTDsKICAgIAogICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCRwcmVmaXggPSAndXNlcicpCiAgewogICAgbXRfc3JhbmQoIHRpbWUoKSApOwogICAgJGRiICA9ICR0aGlzLT5HZXREYigpOwogICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgICRudW0gPSByYW5kb21faW50KDEwMCwgOTk5OTkpOwogICAgfQogICAgY2F0Y2goRXhjZXB0aW9uICRlKQogICAgewogICAgICAkbnVtID0gcmFuZCgxMDAsIDk5OTk5KTsKICAgIH0KICAgIAogICAgJGNvdW50ICA9IDA7CiAgICAkc3VmZml4ID0gJyc7CiAgICAKICAgIGlmKCRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpCiAgICB7CiAgICAgICRzdWZmaXggPSAnQHNhbXBsZS5jb20nOwogICAgfQogICAgCiAgICB3aGlsZSgkY291bnQgPCAxMDApCiAgICB7CiAgICAgIC8vIHRvZG8sIDEwMCBzaG91bGQgYmUgY29uZmlndXJhYmxlPwogICAgICAkcSAgID0gJ1NFTEVDVCBpZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFdIRVJFIHVzZXJuYW1lID0gPyc7CiAgICAgICR0bXAgPSAkZGItPkdldE9uZSgkcSwgWyRwcmVmaXggLiAkbnVtIC4gJHN1ZmZpeF0pOwogICAgICAKICAgICAgaWYoISR0bXApCiAgICAgIHsKICAgICAgICByZXR1cm4gJHByZWZpeCAuICRudW0gLiAkc3VmZml4OwogICAgICB9CiAgICAgIAogICAgICB0cnkKICAgICAgewogICAgICAgICRudW0gPSByYW5kb21faW50KDEwMCwgOTk5OTkpOwogICAgICB9CiAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkKICAgICAgewogICAgICAgICRudW0gPSByYW5kKDEwMCwgOTk5OTkpOwogICAgICB9CiAgICAgIAogICAgICArKyRjb3VudDsKICAgIH0KICAgIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gQ2xlYXJQcm9wZXJ0eUNhY2hlKCkKICB7CiAgICAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnMgPSBOVUxMOwogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2NhY2hlX3Byb3BlcnR5ZGVmbnMoKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zKSApCiAgICB7CiAgICAgICRkYiAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5HZXREYigpOwogICAgICAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnMgPSBbXTsKICAgICAgCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuJzsKICAgICAgJGRhdGEgID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAKICAgICAgaWYoISRkYXRhKSB7IHJldHVybjsgfQogICAgICAKICAgICAgZm9yKCRpID0gMCwgJGlNYXggPSBjb3VudCgkZGF0YSk7ICRpIDwgJGlNYXg7ICRpKyspCiAgICAgIHsKICAgICAgICBpZighZW1wdHkoJGRhdGFbJGldWydleHRyYSddKSAmJiBOVUxMICE9PSAkZGF0YVskaV1bJ2V4dHJhJ10pCiAgICAgICAgewogICAgICAgICAgJGRhdGFbJGldWydleHRyYSddID0gQHVuc2VyaWFsaXplKCRkYXRhWyRpXVsnZXh0cmEnXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKCFlbXB0eSgkZGF0YVskaV1bJ2F0dHJpYnMnXSkpCiAgICAgICAgewogICAgICAgICAgJGRhdGFbJGldWydleHRyYSddID0gQHVuc2VyaWFsaXplKCRkYXRhWyRpXVsnYXR0cmlicyddKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zWyRkYXRhWyRpXVsnbmFtZSddXSA9ICRkYXRhWyRpXTsKICAgICAgfQogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZuKCRuYW1lKQogIHsKICAgICR0aGlzLT5fY2FjaGVfcHJvcGVydHlkZWZucygpOwogICAgCiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucykgKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zWyRuYW1lXSA/PyBGQUxTRTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5RGVmbnMoKQogIHsKICAgICR0aGlzLT5fY2FjaGVfcHJvcGVydHlkZWZucygpOwogICAgCiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucykgKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zOwogIH0KICAKICAvKioKICAgKiBSZXR1cm5zIHNlbGVjdCBvcHRpb25zIGFzIG9uZSBzaW1wbGUgb3IgMi1kaW1lbnNpb25hbCBhcnJheQogICAqCiAgICogQHBhcmFtIFN0cmluZyAkY29udHJvbG5hbWUgLSBuYW1lIG9mIHRoZSBkcm9wZG93biBhcyBpbiB0aGUgcHJvcGRlZm4gdGFibGUKICAgKiBAcGFyYW0gaW50ICAgICRkaW0gICAgICAgICAtIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkZGltID09IDEsIHJldHVybnMgYSAxIGRpbWVuc2lvbmFsIGFycmF5IHRleHQ9Pm5hbWUKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkZGltID09IDIsIHJldHVybnMgYSAyIGRpbWVuc2lvbmFsIGFycmF5LCBlYWNoIGl0ZW0gYmVpbmcgYW4KICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSB3aXRoIHByb3BlcnRpZXMgJ29wdGlvbl9uYW1lJywgJ29wdGlvbl90ZXh0JywgJ2NvbnRyb2xfbmFtZScuCiAgICoKICAgKiBAcmV0dXJuIGFycmF5fGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0U2VsZWN0T3B0aW9ucygkY29udHJvbG5hbWUsICRkaW0gPSAxKQogIHsKICAgIGlmKCEkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMpCiAgICB7CiAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgICAKICAgICAgJHEgICA9ICdTRUxFQ1QgKiBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2Ryb3Bkb3ducyBPUkRFUiBCWSBvcmRlcl9pZCc7CiAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxKTsKICAgICAgCiAgICAgIGlmKGlzX2FycmF5KCRkYnIpKQogICAgICB7CiAgICAgICAgJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zID0gJGRicjsKICAgICAgfQogICAgfQogICAgCiAgICBpZighY291bnQoJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHJldCA9IFtdOwogICAgCiAgICAvL2ZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zKTsgJGkgPCAkaU1heDsgJGkrKykKICAgIGZvcmVhY2goJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zIGFzICRpVmFsdWUpCiAgICB7CiAgICAgIC8vJHJvdyA9ICR0aGlzLT5fbXVsdGlzZWxlY3Rfb3B0aW9uc1skaV07CiAgICAgICRyb3cgPSAkaVZhbHVlOwogICAgICAKICAgICAgaWYoJHJvd1snY29udHJvbF9uYW1lJ10gPT09ICRjb250cm9sbmFtZSkKICAgICAgewogICAgICAgIGlmKDIgPT09ICRkaW0pCiAgICAgICAgewogICAgICAgICAgJHJldFtdID0gJHJvdzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRyZXRbdHJpbSgkcm93WydvcHRpb25fdGV4dCddKV0gPSB0cmltKCRyb3dbJ29wdGlvbl9uYW1lJ10pOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICBpZiggIWNvdW50KCRyZXQpICkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuICRyZXQ7CiAgfQogIAogIC8qKgogICAqIExvZyB0aGUgdXNlciBpbnRvIHRoZSBzaXRlLgogICAqIFRoaXMgY2hlY2tzIHRoZSB1c2VyIHBhc3N3b3JkLCBhbmQgcHJlZmVyZW5jZXMgYWJvdXQgZHVwbGljYXRlIGxvZ2lucyBhbmQgb3RoZXIgdGhpbmdzIHRoZW4gbWFya3MgdGhlIHVzZXIKICAgKiBhcyBsb2dnZWQgaW4gd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGF0YWJhc2UgY2hhbmdlLiAgSXQgZG9lcyBub3Qgc2VuZCBldmVudHMuCiAgICoKICAgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZQogICAqIEBwYXJhbSBzdHJpbmcgJHBhc3N3b3JkICAgICBUaGUgcGxhaW50ZXh0IHBhc3N3b3JkCiAgICogQHBhcmFtIHN0cmluZyAkZ3JvdXBzICAgICAgIEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCB0aGUgdXNlciBtdXN0IGJlIGEgbWVtYmVyIG9mLgogICAqIEBwYXJhbSBzdHJpbmcgJGlnbm9yZWQKICAgKiBAcGFyYW0gYm9vbCAgICRmb3JjZV9sb2dvdXQgT3B0aW9uYWxseSBmb3JjZSB0aGUgdXNlciB0byBsb2dvdXQgYmVmb3JlIGxvZ2dpbmcgaGltIGluIGFnYWluLgogICAqCiAgICogQHJldHVybiBhcnJheXxpbnRbXXx2b2lkW10KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gTG9naW4oJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgPSAnJywgJGlnbm9yZWQgPSBGQUxTRSwgJGZvcmNlX2xvZ291dCA9IEZBTFNFKQogIHsKICAgIAogICAgJGRiICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRtb2QgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgCiAgICBpZighJHRoaXMtPkNoZWNrUGFzc3dvcmQoJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMpKQogICAgewogICAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAKICAgICAgaWYoISR1aWQpIHsgJHVpZCA9IC0xOyB9CiAgICAgIAogICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2ZhaWwnKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2xvZ2luZmFpbGVkJyldOwogICAgfQogICAgCiAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgCiAgICBpZighJHVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJyldOwogICAgfQogICAgCiAgICBpZigkZm9yY2VfbG9nb3V0KQogICAgewogICAgICAkdGhpcy0+TG9nb3V0VXNlcigkdWlkKTsKICAgIH0KICAgIAogICAgaWYoISR0aGlzLT5DYW5Vc2VyTG9naW4oJHVpZCkpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2FjY291bnRleHBpcmVkJyldOwogICAgfQogICAgCiAgICBpZigwID09PSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19yZXBlYXRlZF9sb2dpbnMnKSkKICAgIHsKICAgICAgLy8gbWFrZSBzdXJlIHRoaXMgdXNlciBpc24ndCBhbHJlYWR5IGxvZ2dlZCBpbgogICAgICAkcSAgICAgICAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSBVU0VSSUQgPSA/JzsKICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJHVpZF0pOwogICAgICAKICAgICAgaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSkKICAgICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnKV07CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gYWN0dWFsbHkgZG9lcyB0aGUgbG9nZ2luZyBpbi4KICAgICR0aGlzLT5fc2V0X3NhdmVkX2xvZ2luZGV0YWlscyhbJ3VpZCcgPT4gJHVpZCwgJ3RpbWUnID0+IHRpbWUoKV0sIFRSVUUpOwogICAgCiAgICAvLyBhbmQgYWRkIGhpc3RvcnkgaW5mbwogICAgYXVkaXQoJHVpZCwgJG1vZC0+R2V0TmFtZSgpLCAiJHVzZXJuYW1lIGxvZ2dlZCBpbiIpOwogICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsICdsb2dpbicpOwogICAgCiAgICAvLyBzZW5kIHRoZSBldmVudC4KICAgICRpcCA9IFx4dF91dGlsczo6Z2V0X3JlYWxfaXAoKTsKICAgIFxDTVNNU1xIb29rbWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dpbicsIFsnaWQnID0+ICR1aWQsICd1c2VybmFtZScgPT4gJHVzZXJuYW1lLCAnaXAnID0+ICRpcF0pOwogICAgCiAgICByZXR1cm4gWyR1aWRdOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJGdpZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFzc2lnblVzZXJUb0dyb3VwKCR1aWQsICRnaWQpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgICRnaWQgPSAoaW50KSRnaWQ7CiAgICAKICAgIGlmKCR1aWQgPCAxIHx8ICRnaWQgPCAxKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAvLyB2YWxpZGF0ZSB0aGUgdXNlciBpZAogICAgaWYoISR0aGlzLT5Vc2VyRXhpc3RzQnlJRCgkdWlkKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgLy8gdmFsaWRhdGUgdGhlIGdyb3VwIGlkCiAgICBpZighJHRoaXMtPkdyb3VwRXhpc3RzQnlJRCgkZ2lkKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAvLyBtYWtlIHN1cmUgaXQgYWxyZWFkeSBkb2Vzbid0IGV4aXN0CiAgICAkcSAgID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQgPSA/IEFORCBncm91cGlkID0gPyc7CiAgICAkdG1wID0gJGRiLT5HZXRSb3coJHEsIFskdWlkLCAkZ2lkXSk7CiAgICAKICAgIGlmKCR0bXApIHsgcmV0dXJuIFRSVUU7IH0KICAgIAogICAgLy8gYWRkIHRoZSByZWNvcmQgdG8gdGhlIHRhYmxlIHRvIG1ha2UgdGhpcwogICAgLy8gdXNlciBhIG1lbWJlciBvZiB0aGlzIGdyb3VwCiAgICAkcSAgICAgICAgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyAodXNlcmlkLCBncm91cGlkKSBWQUxVRVMgKD8sPyknOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJHVpZCwgJGdpZF0pOwogICAgCiAgICByZXR1cm4gKEZBTFNFICE9PSAkZGJyZXN1bHQpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRwYXNzd29yZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCgkcGFzc3dvcmQpCiAgewogICAgLy8gYSBwYXNzd29yZCBpcyB2YWxpZCwgaWYgaXQncyBsZW5ndGggaXMKICAgIC8vIHdpdGhpbiBjZXJ0YWluIHJhbmdlcwogICAgJG1vZHVsZSAgICAgICAgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAkbWlubGVuICAgICAgICA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21pbl9wYXNzd29yZGxlbmd0aCcsIDYpOwogICAgJG1heGxlbiAgICAgICAgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnLCAyMCk7CiAgICAkZW5oYW5jZWRwdyAgICA9IChpbnQpJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZW5oYW5jZWRfcGFzc3dvcmQnLCAwKTsKICAgICRyZXF1aXJlZGNoYXJzID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRfcmVxdWlyZWRjaGFycycpOwogICAgJGxlbiAgICAgICAgICAgPSBzdHJsZW4oJHBhc3N3b3JkKTsKICAgIAogICAgaWYoJGxlbiA8ICRtaW5sZW4gfHwgJGxlbiA+ICRtYXhsZW4pIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIGlmKCRlbmhhbmNlZHB3KQogICAgewogICAgICBpZighcHJlZ19tYXRjaCgnI1tBLVpdIycsICRwYXNzd29yZCkpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICBpZighcHJlZ19tYXRjaCgnI1swLTldIycsICRwYXNzd29yZCkpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICAvLyAgJHRtcCA9IHN0cnBicmsoJHBhc3N3b3JkLCAnIWYnKTsgPz8/PyBKTSBUT0RPIHdoeSB3YXMgdGhpcyBoZXJlIGF0IGFsbAogICAgICAKICAgICAgaWYoJHJlcXVpcmVkY2hhcnMgJiYgRkFMU0UgPT09IHN0cnBicmsoJHBhc3N3b3JkLCAkcmVxdWlyZWRjaGFycykpICB7IHJldHVybiBGQUxTRTsgfQogICAgfQogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkaWQKICAgKgogICAqIEByZXR1cm4gYXJyYXl8Ym9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyRnVsbCgkaWQpCiAgewogICAgJGRiICAgICAgID0gJHRoaXMtPmdldERiKCk7CiAgICAkaW5fdHJhbnMgPSBOVUxMOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJGlkID0gKGludCkkaWQ7CiAgICAgIAogICAgICBpZigkaWQgPCAxKQogICAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0ludmFsaWQgVUlEJ107CiAgICAgIH0KICAgICAgCiAgICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJGlkKTsKICAgICAgCiAgICAgIGlmKCFpc19hcnJheSgkcmVzKSB8fCBGQUxTRSA9PT0gJHJlc1swXSkKICAgICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdJbnZhbGlkIFVJRCddOwogICAgICB9CiAgICAgIAogICAgICAkdXNlcm5hbWUgPSAkcmVzWzFdWyd1c2VybmFtZSddOwogICAgICAKICAgICAgLy8gc2VuZCB0aGUgZXZlbnQuLi4gYmVmb3JlIHdlIGFjdHVhbGx5IGRlbGV0ZSBzdHVmZi4KICAgICAgJHBhcm1zICAgICAgICAgICAgID0gW107CiAgICAgICRwYXJtc1snaWQnXSAgICAgICA9ICRpZDsKICAgICAgJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOwogICAgICBDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25EZWxldGVVc2VyJywgJHBhcm1zKTsKICAgICAgCiAgICAgIC8vIGxvZyB0aGUgdXNlciBvdXQKICAgICAgJHRoaXMtPkxvZ291dFVzZXIoJGlkKTsKICAgICAgCiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAkaW5fdHJhbnMgPSBUUlVFOwogICAgICAKICAgICAgLy8gZGVsZXRlIHVzZXIgcHJvcGVydGllcwogICAgICAkdGhpcy0+RGVsZXRlQWxsVXNlclByb3BlcnRpZXNGdWxsKCRpZCk7CiAgICAgIAogICAgICAvLyBkZWxldGUgdXNlciBmcm9tIGdyb3VwcwogICAgICAkcmV0ID0gJHRoaXMtPlJlbW92ZVVzZXJGcm9tR3JvdXAoJGlkLCAnJyk7CiAgICAgIAogICAgICBpZihGQUxTRSA9PT0gJHJldFswXSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUHJvYmxlbSByZW1vdmluZyB1c2VyIGZyb20gZ3JvdXAnKTsKICAgICAgfQogICAgICAKICAgICAgLy8gZGVsZXRlIHRoZSB1c2VyIGhpc3RvcnkKICAgICAgJHEgICAgICAgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2hpc3RvcnkgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRpZF0pOwogICAgICAKICAgICAgLy8gZGVsZXRlIHVzZXIgcmVjb3JkCiAgICAgICRxICAgICAgICA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBXSEVSRSBpZCA9ID8nOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskaWRdKTsKICAgICAgCiAgICAgIC8vIGFuZCBkZWxldGUgYW55dGhpbmcgZnJvbSB0aGUgdGVtcGNvZGVzIHRhYmxlIHRvbwogICAgICAkcSAgICAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRpZF0pOwogICAgICAKICAgICAgJHRoaXMtPl91c2VyaWRieW5hbWUgPSBbXTsKICAgICAgbWFtc191c2VyX2NhY2hlOjpkZWxfdXNlcigkaWQpOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICAkcGFybXMgICAgICAgICAgICAgPSBbXTsKICAgICAgJHBhcm1zWydpZCddICAgICAgID0gJGlkOwogICAgICAkcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiAgICAgIENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpBZnRlckRlbGV0ZVVzZXInLCAkcGFybXMpOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICBpZigkaW5fdHJhbnMpCiAgICAgIHsKICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgfQogICAgICAKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJGlkLCAkbW9kLT5HZXROYW1lKCksICdQcm9ibGVtIGRlbGV0aW5nIHVzZXI6ICcgLiAkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRlLT5nZXRNZXNzYWdlKCldOwogICAgfQogIH0KICAKICAvKioKICAgKiBAcGFyYW0gYm9vbCAkd2l0aF9jb3VudAogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gX2dldF9ncm91cGluZm8oJHdpdGhfY291bnQgPSBGQUxTRSkKICB7CiAgICAkbmVlZF9yZWZyZXNoID0gIWlzX2FycmF5KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlKTsKICAgIGlmKCAhJG5lZWRfcmVmcmVzaCAmJiAkd2l0aF9jb3VudCApCiAgICB7CiAgICAgIGZvcmVhY2goICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlIGFzICRyZWMgKQogICAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkcmVjKSB8fCAhYXJyYXlfa2V5X2V4aXN0cygnY291bnQnLCAkcmVjKSApCiAgICAgICAgewogICAgICAgICAgJG5lZWRfcmVmcmVzaCA9IFRSVUU7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBpZiggJG5lZWRfcmVmcmVzaCApCiAgICB7CiAgICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICAgCiAgICAgIGlmKCRhdXRoX2NvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9MSVNUR1JPVVBTKSkKICAgICAgewogICAgICAgICR0bXAgICAgICAgICAgICAgICAgICAgID0gJGF1dGhfY29uc3VtZXItPmdldF9ncm91cF9saXN0KFRSVUUpOwogICAgICAgICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlID0gW107CiAgICAgICAgCiAgICAgICAgaWYoICFpc19hcnJheSgkdG1wKSB8fCAhY291bnQoJHRtcCkgKSB7IHJldHVybjsgfQogICAgICAgIAogICAgICAgICRvdXQgPSBbXTsKICAgICAgICBmb3JlYWNoKCR0bXAgYXMgJGdpZCA9PiAkcmVjKQogICAgICAgIHsKICAgICAgICAgICR0bXAyID0gWydpZCcgPT4gJGdpZCwgJ2dyb3VwZGVzYycgPT4gJyddOwogICAgICAgICAgCiAgICAgICAgICBpZihpc19zdHJpbmcoJHJlYykgJiYgIWlzX2FycmF5KCRyZWMpKQogICAgICAgICAgewogICAgICAgICAgICAkdG1wMlsnZ3JvdXBuYW1lJ10gPSAkcmVjOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZihpc3NldCgkcmVjWyduYW1lJ10pKQogICAgICAgICAgewogICAgICAgICAgICAkdG1wMlsnZ3JvdXBuYW1lJ10gPSAkcmVjWyduYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmKGlzc2V0KCRyZWNbJ2dyb3VwbmFtZSddKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHRtcDJbJ2dyb3VwbmFtZSddID0gJHJlY1snZ3JvdXBuYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICBpZihpc19hcnJheSgkcmVjKSkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYoaXNzZXQoJHJlY1snZGVzYyddKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0bXAyWydncm91cGRlc2MnXSA9ICRyZWNbJ2Rlc2MnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGlzc2V0KCRyZWNbJ2Rlc2NyaXB0aW9uJ10pKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHRtcDJbJ2dyb3VwZGVzYyddID0gJHJlY1snZGVzY3JpcHRpb24nXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGlzc2V0KCRyZWNbJ2dyb3VwZGVzYyddKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0bXAyWydncm91cGRlc2MnXSA9ICRyZWNbJ2dyb3VwZGVzYyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZihpc3NldCgkcmVjWydjb3VudCddKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0bXAyWydjb3VudCddID0gJHJlY1snY291bnQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAkb3V0WyRnaWRdID0gJHRtcDI7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlID0gJG91dDsKICAgICAgICAKICAgICAgICByZXR1cm4gJG91dDsKICAgICAgfQogICAgICAKICAgICAgLy8gdGhlIGNvbnN1bWVyIGRvZXMgbm90IHByb3ZpZGUgZ3JvdXAgaW5mby4uLi4gc28gd2UgZ290dGEgbGlzdCBlbS4KICAgICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3Vwcyc7CiAgICAgIGlmKCR3aXRoX2NvdW50KQogICAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBnLiosY291bnQoYi51c2VyaWQpIEFTIGNvdW50IEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBzIGcKICAgICAgICAgICAgICAgIExFRlQgSk9JTiAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIGIKICAgICAgICAgICAgICAgIE9OIGcuaWQgPSBiLmdyb3VwaWQgR1JPVVAgQlkgZy5pZCwgZy5ncm91cG5hbWUsIGcuZ3JvdXBkZXNjJzsKICAgICAgfQogICAgICAkZGJyID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAKICAgICAgaWYoaXNfYXJyYXkoJGRicikpCiAgICAgIHsKICAgICAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9IHh0X2FycmF5Ojp0b19oYXNoKCRkYnIsICdpZCcpOwogICAgICB9CiAgICB9CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICogQHBhcmFtICRnaWQKICAgKiByZXR1cm5zIGFuIGFycmF5ID8/PwogICAqIEByZXR1cm4gYm9vbHxtaXhlZAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cEluZm8oJGdpZCkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpICYmIGlzc2V0KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdKSkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdOwogICAgfQogIH0KICAKICAvKioKICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgdXNlciBpbmZvcm1hdGlvbgogICAqCiAgICogQHBhcmFtIGFycmF5IEFuIGFycmF5IG9mIGludGVnZXIgdXNlciBpZHMKICAgKiBAcGFyYW0gYm9vbGVhbiBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0byByZXR1cm4gcHJvcGVydHkgaW5mb3JtYXRpb24KICAgKgogICAqIEByZXR1cm4gYXJyYXkgb2YgdXNlciBpbmZvLiAgb3IgbnVsbC4KICAgKiBAdGhyb3dzIFxDbXNFeGNlcHRpb24KICAgKiBAZGVwcmVjYXRlZAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRCdWxrVXNlckluZm8oJHVpZHMsICRkZWVwID0gVFJVRSkKICB7CiAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHVpZHMsICRkZWVwKTsKICAgIAogICAgJG91dCA9IFtdOwogICAgCiAgICBmb3JlYWNoKCR1aWRzIGFzICRvbmUpCiAgICB7CiAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgIAogICAgICBpZigkb25lIDwgMSkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgJHQgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyX25vbG9hZCgkb25lKTsKICAgICAgCiAgICAgIGlmKGlzX2FycmF5KCR0KSkgeyAkb3V0W10gPSAkdDsgfQogICAgfQogICAgCiAgICByZXR1cm4gJG91dDsKICB9CiAgCiAgCiAgLyoqCiAgICogLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgKiAvL3JldHVybnMgYW4gYXJyYXkKICAgKiAvLyBzZWNvbmQgZWxlbWVudCBvZiBhcnJheSBtYXkgYmUgYW4gYXJyYXkgPz8/CiAgICoKICAgKiBAcGFyYW0gICAgICAkdWlkCiAgICogQHBhcmFtIGJvb2wgJGRlZXAKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm8oJHVpZCwgJGRlZXAgPSBGQUxTRSkKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gW0ZBTFNFLCAnQ291bGQgbm90IGZpbmQgdXNlciAnIC4gJHVpZCBdOyB9CiAgICAKICAgICRyb3cgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1aWQsICRkZWVwKTsKICAgIAogICAgaWYoIWlzX2FycmF5KCRyb3cpKSB7IHJldHVybiBbRkFMU0UsICdDb3VsZCBub3QgZmluZCB1c2VyIGluZm8gZm9yIHVzZXInIC4gJHVpZCBdOyB9CiAgICAKICAgIHJldHVybiBbVFJVRSwgJHJvd107CiAgfQogIC8qKgogICAqIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgICogLy8gcmV0dXJucyBhbiBhcnJheQogICAqIC8vIHNlY29uZCBlbGVtZW50IG9mIGFycmF5IG1heSBiZSBhbiBhcnJheQogICAqIEBwYXJhbSAkdXNlcm5hbWUKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm9CeU5hbWUoJHVzZXJuYW1lKQogIHsKICAgIGlmKCEkdXNlcm5hbWUpIHsgcmV0dXJuIFtGQUxTRSwgJ0ludmFsaWQgdXNlcm5hbWUgJyAuICR1c2VybmFtZV07IH0KICAgIAogICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoJHVzZXJuYW1lKTsKICAgIAogICAgcmV0dXJuICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgJHByb3BuYW1lCiAgICogQHBhcmFtIG51bGwgJHByb3B2YWx1ZQogICAqIEBub3RlIGNhbm5vdCB3b3JrIG9uIGVuY3J5cHRlZCBwcm9wZXJ0aWVzLgogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBHZXRVc2VySW5mb0J5UHJvcGVydHkoJHByb3BuYW1lLCAkcHJvcHZhbHVlID0gTlVMTCkKICB7CiAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgCiAgICAvKiogQHZhciBhcnJheSAkZGVmbnMgKi8KICAgICRkZWZucyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkZGVmbnMpKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJyldOwogICAgfQogICAgCiAgICBpZighaXNzZXQoJGRlZm5zWyRwcm9wbmFtZV0pKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJyldOwogICAgfQogICAgCiAgICBpZigkZGVmbnNbJHByb3BuYW1lXVsnZW5jcnlwdCddKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJyldOwogICAgfQogICAgCiAgICAkZGIgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRwYXJtcyA9IFskcHJvcG5hbWVdOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCB1c2VyaWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIHVwIFdIRVJFIHVwLnRpdGxlID0gPyc7CiAgICAKICAgIGlmKE5VTEwgIT09ICRwcm9wdmFsdWUpCiAgICB7CiAgICAgICRxdWVyeSAgIC49ICcgQU5EIGRhdGEgPSA/JzsKICAgICAgJHBhcm1zW10gPSAkcHJvcHZhbHVlOwogICAgfQogICAgCiAgICAkdWlkID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCAkcGFybXMpOwogICAgCiAgICBpZighJHVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJyldOwogICAgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAgICR1aWQKICAgKiBAcGFyYW0gc3RyaW5nICRhY3Rpb24KICAgKiBAcGFyYW0gaW50ICAgICRjb3VudAogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySGlzdG9yeSgkdWlkLCAkYWN0aW9uID0gJycsICRjb3VudCA9IC0xKQogIHsKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHBhcm1zID0gWyR1aWRdOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfaGlzdG9yeSBXSEVSRSB1c2VyaWQgPSA/JzsKICAgIAogICAgaWYoIWVtcHR5KCRhY3Rpb24pKQogICAgewogICAgICAkcXVlcnkgICAuPSAnIEFORCBhY3Rpb24gPSA/JzsKICAgICAgJHBhcm1zW10gPSAkYWN0aW9uOwogICAgfQogICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgcmVmZGF0ZSBERVNDJzsKICAgIAogICAgJHJlc3VsdHMgPSBbXTsKICAgIAogICAgaWYoJGNvdW50IDw9IDApCiAgICB7CiAgICAgICRyZXN1bHRzID0gJGRiLT5HZXRBcnJheSgkcXVlcnksICRwYXJtcyk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRkYnIgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeSwgKGludCkkY291bnQpOwogICAgICAKICAgICAgd2hpbGUoJGRiciAmJiAoJHJvdyA9ICRkYnItPkZldGNoUm93KCkpKQogICAgICB7CiAgICAgICAgJHJlc3VsdHNbXSA9ICRyb3c7CiAgICAgIH0KICAgICAgCiAgICAgIGlmKDEgPT09IGNvdW50KCRyZXN1bHRzKSkKICAgICAgewogICAgICAgICR0bXAgICAgID0gJHJlc3VsdHNbMF07CiAgICAgICAgJHJlc3VsdHMgPSAkdG1wOwogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0czsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtIHN0cmluZyAkbm90X2FjdGl2ZV9zaW5jZQogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRMb2dnZWRJblVzZXJzKCRub3RfYWN0aXZlX3NpbmNlID0gJycpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRxICAgICAgPSAnU0VMRUNUIHVzZXJpZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2xvZ2dlZGluJzsKICAgICRxcGFybXMgPSBbXTsKICAgIAogICAgaWYoJG5vdF9hY3RpdmVfc2luY2UpCiAgICB7CiAgICAgICRxICAgICAgICAuPSAnIFdIRVJFIGxhc3R1c2VkIDwgPyc7CiAgICAgICRxcGFybXNbXSA9ICRub3RfYWN0aXZlX3NpbmNlOwogICAgfQogICAgCiAgICByZXR1cm4gJGRiLT5HZXRDb2woJHEsICRxcGFybXMpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqIHJldHVybnMgYW4gaW50IG9yIGZhbHNlCiAgICoKICAgKiBAcGFyYW0gJGdyb3VwaWQKICAgKgogICAqIEByZXR1cm4gYm9vbHxpbnQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gQ291bnRVc2Vyc0luR3JvdXAoJGdyb3VwaWQpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRwYXJtcyA9IFtdOwogICAgCiAgICBpZigkZ3JvdXBpZCA9PSAnJyB8fCAkZ3JvdXBpZCA8IDApCiAgICB7CiAgICAgICRxID0gJ1NFTEVDVCBjb3VudChpZCkgYXMgbnVtIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgY29hbGVzY2UoZGlzYWJsZWQsMCkgPSAwJzsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHEgICAgICAgPSAnU0VMRUNUIGNvdW50KGlkKSBhcyBudW0gRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycywnIC4KICAgICAgICAgICAgICAgICBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgV0hFUkUgaWQ9dXNlcmlkIEFORCBncm91cGlkID0gPyBBTkQgY29hbGVzY2UoZGlzYWJsZWQsMCkgPSAwJzsKICAgICAgJHBhcm1zW10gPSAkZ3JvdXBpZDsKICAgIH0KICAgIAogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCAkcGFybXMpOwogICAgCiAgICBpZighJGRicmVzdWx0KSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAvKiogQHZhciBhcnJheSAkcm93ICovCiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgCiAgICByZXR1cm4gJHJvd1snbnVtJ107CiAgfQogIAogIC8qKgogICAqIFRPRE8gUmVwbGFjZSB0aGlzIGNvZGUgd2l0aCBhIHVzZXIgcXVlcnkKICAgKgogICAqIEBwYXJhbSAkZ2lkCiAgICoKICAgKiBAcmV0dXJuIGFycmF5fGJvb2wKICAgKiBAdGhyb3dzIFxDbXNFeGNlcHRpb24KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0RnVsbFVzZXJzSW5Hcm91cCgkZ2lkKQogIHsKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCB1c2VyaWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIGdyb3VwaWQgPSA/JzsKICAgICR0bXAgICA9ICRkYi0+R2V0Q29sKCRxdWVyeSwgWyRnaWRdKTsKICAgIAogICAgaWYoISR0bXApIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIG1hbXNfdXNlcl9jYWNoZTo6bG9hZF91c2VycygkdG1wLCBUUlVFKTsKICAgICRvdXQgPSBbXTsKICAgIAogICAgZm9yZWFjaCgkdG1wIGFzICRvbmUpCiAgICB7CiAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgIAogICAgICBpZigkb25lIDwgMSkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgJHJlYyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXJfbm9sb2FkKCRvbmUsIFRSVUUpOwogICAgICAKICAgICAgaWYoaXNfYXJyYXkoJHJlYykgJiYgaXNzZXQoJHJlY1snZnByb3BzJ10pKQogICAgICB7CiAgICAgICAgJHRtcDIgPSBbXTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRyZWNbJ2Zwcm9wcyddIGFzICRvbmVfcHJvcCkKICAgICAgICB7CiAgICAgICAgICAkdG1wMlskb25lX3Byb3BbJ3RpdGxlJ11dID0gJG9uZV9wcm9wWydkYXRhJ107CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRyZWNbJ3Byb3BzJ10gPSAkdG1wMjsKICAgICAgfQogICAgICAKICAgICAgJG91dFtdID0gJHJlYzsKICAgIH0KICAgIAogICAgaWYoIGNvdW50KCRvdXQpICkgeyByZXR1cm4gJG91dDsgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICogQHBhcmFtICRnaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5SUQoJGdpZCkKICB7CiAgICAkZGF0YSA9ICR0aGlzLT5HZXRHcm91cEluZm8oJGdpZCk7CiAgICAKICAgIHJldHVybiAoRkFMU0UgIT09ICRkYXRhKTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkbmFtZQogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlOYW1lKCRuYW1lKQogIHsKICAgICRnaWQgPSAkdGhpcy0+R2V0R3JvdXBJRCgkbmFtZSk7CiAgICAKICAgIHJldHVybiAoRkFMU0UgIT09ICRnaWQpOwogIH0KICAKICAvKioKICAgKiBAcmV0dXJuIGJvb2x8c3RyaW5nCiAgICovCiAgZnVuY3Rpb24gTG9nZ2VkSW5FbWFpbCgpCiAgewogICAgJHVzZXJpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAKICAgIHJldHVybiAkdGhpcy0+R2V0RW1haWwoJHVzZXJpZCk7CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAkdWlkCiAgICoKICAgKiBAcmV0dXJuIGJvb2x8c3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEVtYWlsKCR1aWQpCiAgewogICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRkYiAgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgaWYoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkKICAgIHsKICAgICAgJHRtcCA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCk7CiAgICAgIAogICAgICBpZiggIWlzX2FycmF5KCR0bXApICkgeyByZXR1cm4gRkFMU0U7IH0KICAgICAgCiAgICAgICRyZXN1bHQgPSAkdG1wWyd1c2VybmFtZSddOwogICAgfQogICAgZWxzZQogICAgewogICAgICAvLyBnZXQgdGhlIHVzZXJzIGZpcnN0IGVtYWlsIGFkZHJlc3MuCiAgICAgICRxICAgICAgPSAnU0VMRUNUIGRhdGEgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZGVmbiwnIC4KICAgICAgICAgICAgICAgIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSBuYW1lPXRpdGxlIEFORCB0eXBlPTIgQU5EIHVzZXJpZCA9ID8nOwogICAgICAkcmVzdWx0ID0gJGRiLT5HZXRPbmUoJHEsIFskdWlkXSk7CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0OwogIH0KICAKICAKICAvKioKICAgKiBAcGFyYW0gICAgICAkZW1haWwKICAgKiBAcGFyYW0gaW50ICAkdWlkCiAgICogQHBhcmFtIGJvb2wgJGNoZWNrX2V4aXN0aW5nCiAgICogQGRlcHJlY2F0ZWQgdXNlIFxNQU1TXHV0aWxzOjppc192YWxpZF9lbWFpbF9hZGRyZXNzCiAgICogQHNlZSAgICAgICBcTUFNU1x1dGlsczo6aXNfdmFsaWRfZW1haWxfYWRkcmVzcwogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkRW1haWxBZGRyZXNzKCRlbWFpbCwgJHVpZCA9IC0xLCAkY2hlY2tfZXhpc3RpbmcgPSBGQUxTRSkKICB7CiAgICByZXR1cm4gTUFNU1x1dGlsczo6aXNfdmFsaWRfZW1haWxfYWRkcmVzcygkZW1haWwsICR1aWQsICRjaGVja19leGlzdGluZyk7CiAgfQogIAogIC8qKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJuYW1lUHJvbXB0KCkKICB7CiAgICAkY29uc3VtZXIgPSBNQU1TXHV0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICByZXR1cm4gJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCk7CiAgfQogIAogIAogIC8qKgogICAqIHRvZG86IG1vdmUgdGhpcyB0byB1dGlscy4KICAgKiBAcGFyYW0gICAgICAkdXNlcm5hbWUKICAgKiBAcGFyYW0gYm9vbCAkY2hlY2tfZW1haWwKICAgKiBAcGFyYW0gaW50ICAkdWlkCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gSXNWYWxpZFVzZXJuYW1lKCR1c2VybmFtZSwgJGNoZWNrX2VtYWlsID0gVFJVRSwgJHVpZCA9IC0xKQogIHsKICAgICRjb25zdW1lciA9IE1BTVNcdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICAKICAgIHJldHVybiAkY29uc3VtZXItPnZhbGlkYXRlX3VzZXJuYW1lKCR1c2VybmFtZSwgJGNoZWNrX2VtYWlsLCAkdWlkKTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkdWlkCiAgICogQHBhcmFtICRnaWQKICAgKgogICAqIEByZXR1cm4gYXJyYXl8Ym9vbFtdCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoJHVpZCwgJGdpZCkKICB7CiAgICAkdWlkID0gKGludCkkdWlkOwogICAgJGdpZCA9IChpbnQpJGdpZDsKICAgICRkYiAgPSBcY21zX3V0aWxzOjpnZXRfZGIoKTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgIGlmKCR1aWQgPCAxKSB7IHJldHVybiBbRkFMU0UsICdJbnZhbGlkIFVJRCddOyB9CiAgICAgIAogICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgJHBhcm1zID0gWyR1aWRdOwogICAgICAkcSAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQgPSA/JzsKICAgICAgCiAgICAgIGlmKCRnaWQgPiAwKQogICAgICB7CiAgICAgICAgJHEgICAgICAgLj0gJyBBTkQgZ3JvdXBpZCA9ID8nOwogICAgICAgICRwYXJtc1tdID0gJGdpZDsKICAgICAgfQogICAgICAkZGItPkV4ZWN1dGUoJHEsICRwYXJtcyk7CiAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgCiAgICAgIHJldHVybiBbVFJVRSwgJ1VzZXIgcmVtb3ZlZCBmcm9tIGdyb3VwJ107CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJHVpZCwgJG1vZC0+R2V0TmFtZSgpLCAnQ291bGQgbm90IHJlbW92ZSB1c2VyIGZyb20gZ3JvdXAgJyAuICRnaWQpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRSwgJGUtPmdldE1lc3NhZ2UoKV07CiAgICB9CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gICAgICAkaWQKICAgKiBAcGFyYW0gICAgICAkbmFtZQogICAqIEBwYXJhbSBudWxsICRkZXNjCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFNldEdyb3VwKCRpZCwgJG5hbWUsICRkZXNjID0gTlVMTCkKICB7CiAgICAkaWQgICA9IChpbnQpJGlkOwogICAgJG5hbWUgPSB0cmltKCRuYW1lKTsKICAgICRkZXNjID0gdHJpbSgkZGVzYyk7CiAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgJHRoaXMtPl9ncm91cGluZm9fY2FjaGUgPSBOVUxMOwogICAgCiAgICBpZigkaWQgPCAxIHx8ICEkbmFtZSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyldOwogICAgfQogICAgCiAgICAkZGIgID0gJHRoaXMtPkdldERiKCk7CiAgICAkZWlkID0gJHRoaXMtPkdldEdyb3VwSUQoJG5hbWUpOwogICAgCiAgICBpZihGQUxTRSAhPT0gJGVpZCAmJiAkaWQgIT09ICRlaWQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnKV07CiAgICB9CiAgICAKICAgICRxICAgICAgICA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBzIFNFVCBncm91cG5hbWUgPSA/LCBncm91cGRlc2MgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskbmFtZSwgJGRlc2MsICRpZF0pOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9IE5VTEw7CiAgICAKICAgIHJldHVybiBbVFJVRSwgJyddOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gJHVpZAogICAqIEBwYXJhbSAkcGxhaW5fcGFzc3dvcmQKICAgKgogICAqIEByZXR1cm4gZmFsc2V8c3RyaW5nfG51bGwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRW5jcnlwdFBhc3N3b3JkKCR1aWQsICRwbGFpbl9wYXNzd29yZCkKICB7CiAgICAvKiBzaG91bGQgYmUgcHJvdGVjdGVkICovCiAgICAkdXNlX3VzZXJzYWx0ID0gJHRoaXMtPnVzZV91c2Vyc2FsdCgpOwogICAgCiAgICBpZighJHVzZV91c2Vyc2FsdCkKICAgIHsKICAgICAgLy8gdGhpcyBpcyByZWFsbHksIHJlYWxseSBiYWQuLiBidXQga2VwdCBmb3Igb2xkIGluc3RhbGxzLgogICAgICBhdWRpdCgnJywgJ01BTVMnLCAnVXNlciBpcyB1c2luZyB1bnNhZmUgcGFzc3dvcmQgZW5jcnlwdGlvbicpOwogICAgICAKICAgICAgcmV0dXJuIG1kNSggJHBsYWluX3Bhc3N3b3JkIC4gJHRoaXMtPmdldF9iYWRfc2FsdCgpICk7CiAgICB9CiAgICAKICAgIGlmKDEgPT09ICR1c2VfdXNlcnNhbHQpCiAgICB7CiAgICAgICRkYiAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRzYWx0ID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBzYWx0IEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgaWQgPSA/JywgWyR1aWRdKTsKICAgICAgCiAgICAgIGlmKCEkc2FsdCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oCiAgICAgICAgICAnVXNpbmcgdXNlciBzYWx0ZWQgcGFzc3dvcmRzLCBidXQgbm8gc2FsdCBzZXQgZm9yIHRoaXMgdXNlciAob3IgdGhlIHVzZXIgY291bGQgbm90IGJlIGZvdW5kKScKICAgICAgICApOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gc2hhMSgkcGxhaW5fcGFzc3dvcmQgLiAkc2FsdCk7CiAgICB9CiAgICAKICAgIC8vIHVzZV91c2Vyc2FsdCA9PSAyCiAgICByZXR1cm4gcGFzc3dvcmRfaGFzaCgkcGxhaW5fcGFzc3dvcmQsIFBBU1NXT1JEX0JDUllQVCk7CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAkdWlkCiAgICogQHBhcmFtICRwYXNzd29yZAogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKQogIHsKICAgICR1aWQgICAgICA9IChpbnQpJHVpZDsKICAgICRwYXNzd29yZCA9IHRyaW0oKHN0cmluZykkcGFzc3dvcmQpOwogICAgJG1vZCAgICAgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgCiAgICBpZigkdWlkIDwgMSB8fCAhJHBhc3N3b3JkKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJyldOwogICAgfQogICAgCiAgICBpZighJHVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpXTsKICAgIH0KICAgIAogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIC8vIGdvaW5nIGZvcndhcmQsIHdlIHVzZSBubyBzYWx0IGNvbHVtbi4KICAgICRwdyAgICAgICA9ICR0aGlzLT5FbmNyeXB0UGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKTsKICAgICRxICAgICAgICA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgU0VUIHNhbHQgPSBOVUxMLCBwYXNzd29yZCA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRwdywgJHVpZF0pOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1aWQpOwogICAgCiAgICByZXR1cm4gW1RSVUUsICcnXTsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgJHVpZAogICAqIEBwYXJhbSBib29sICRmbGFnCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJEaXNhYmxlZCgkdWlkLCAkZmxhZyA9IFRSVUUpCiAgewogICAgJHVpZCAgPSAoaW50KSR1aWQ7CiAgICAkZmxhZyA9IChib29sKSRmbGFnOwogICAgCiAgICBpZigkdWlkIDwgMSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBkaXNhYmxlZCA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICRkYnIgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZmxhZywgJHVpZF0pOwogICAgCiAgICBpZighJGRicikKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigncHJvYmxlbSBzZXR0aW5nIHVpZCAnIC4gJHVpZCAuICcgdG8gZGlzYWJsZWQnKTsKICAgIH0KICAgIAogICAgaWYoJGZsYWcpCiAgICB7CiAgICAgICR0aGlzLT5Mb2dvdXRVc2VyKCR1aWQsICd1c2VyIGRpc2FibGVkJyk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCAndXNlciBlbmFibGVkJyk7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAgICAgICR1aWQKICAgKiBAcGFyYW0gYm9vbCAkZmxhZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBGb3JjZVBhc3N3b3JkQ2hhbmdlKCR1aWQsICRmbGFnID0gVFJVRSkKICB7CiAgICAkdWlkICA9IChpbnQpJHVpZDsKICAgICRmbGFnID0gKGJvb2wpJGZsYWc7CiAgICAKICAgIGlmKCR1aWQgPCAxKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIHVpZCBwYXNzZWQgdG8gJyAuIF9fTUVUSE9EX18pOwogICAgfQogICAgCiAgICAkZGIgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgU0VUIGZvcmNlX25ld3B3ID0gPyBXSEVSRSBpZCA9ID8nOwogICAgJGRiciAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyRmbGFnLCAkdWlkXSk7CiAgICAKICAgIGlmKCEkZGJyKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdwcm9ibGVtIHNldHRpbmcgZm9yY2VfbmV3cHcgZmxhZyBmb3IgdXNlciAnIC4gJHVpZCk7CiAgICB9CiAgICAKICAgIGlmKCRmbGFnKQogICAgewogICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2ZvcmNlcHdyZXNldCcpOwogICAgfQogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAkdWlkCiAgICogQHBhcmFtIGJvb2wgJGZsYWcKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCAkZmxhZyA9IFRSVUUpCiAgewogICAgJHVpZCAgPSAoaW50KSR1aWQ7CiAgICAkZmxhZyA9IChib29sKSRmbGFnOwogICAgCiAgICBpZigkdWlkIDwgMSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBmb3JjZV9jaHNldHRpbmdzID0gPyBXSEVSRSBpZCA9ID8nOwogICAgJGRiciAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyRmbGFnLCAkdWlkXSk7CiAgICAKICAgIGlmKCEkZGJyKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdwcm9ibGVtIHNldHRpbmcgZm9yY2VfY2hzZXR0aW5ncyBmbGFnIGZvciB1c2VyICcgLiAkdWlkKTsKICAgIH0KICAgIAogICAgaWYoJGZsYWcpCiAgICB7CiAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCAnZm9yY2VjaHNldHRpbmdzJyk7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAgICAgICR1aWQKICAgKiBAcGFyYW0gYm9vbCAkZmxhZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBGb3JjZVZlcmlmeSgkdWlkLCAkZmxhZyA9IFRSVUUpCiAgewogICAgJHVpZCAgPSAoaW50KSR1aWQ7CiAgICAkZmxhZyA9IChib29sKSRmbGFnOwogICAgCiAgICBpZigkdWlkIDwgMSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBtdXN0X3ZhbGlkYXRlID0gPyBXSEVSRSBpZCA9ID8nOwogICAgJGRiciAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyRmbGFnLCAkdWlkXSk7CiAgICAvL2lmKCAhJGRiciApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ3Byb2JsZW0gc2V0dGluZyBmb3JjZSB2ZXJpZnkgZmxhZyBmb3IgdXNlciAnLiR1aWQpOyBUT0RPIHJldmlzaXQgdGhpcyBsaW5lCiAgICAKICAgIGlmKCRmbGFnKQogICAgewogICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2luaXRfdmVyaWZ5Jyk7CiAgICB9CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gICAgICAkdWlkCiAgICogQHBhcmFtICAgICAgJHVzZXJuYW1lCiAgICogQHBhcmFtICAgICAgJHBhc3N3b3JkCiAgICogQHBhcmFtIGJvb2wgJGV4cGlyZXMKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlcigkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgPSBGQUxTRSkKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gW0ZBTFNFLCAnJ107IH0KICAgICRkYiAgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAKICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoaXMgdXNlciBleGlzdHMKICAgICRyZXQgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAKICAgIGlmKCRyZXRbMF0gPT0gRkFMU0UpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2R1bGUtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpXTsKICAgIH0KICAgIAogICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhpcyB1c2VybmFtZSBpcyBub3QgdGFrZW4gYnkgc29tZSBvdGhlciBpZAogICAgJG51aWQgPSAkdGhpcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAKICAgIGlmKCctMScgIT0gJG51aWQgJiYgJG51aWQgIT0gJHVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5hbWV0YWtlbicsICR1aWQpXTsKICAgIH0KICAgIAogICAgJGRicmVzdWx0ID0gJyc7CiAgICAkcGFybXMgICAgPSBbXTsKICAgICRxICAgICAgICA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgU0VUIHVzZXJuYW1lID0gPyc7CiAgICAkcGFybXNbXSAgPSAkdXNlcm5hbWU7CiAgICAKICAgIGlmKEZBTFNFICE9PSAkZXhwaXJlcykKICAgIHsKICAgICAgJHEgICAgICAgLj0gJywgZXhwaXJlcyA9ID8nOwogICAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZXhwaXJlcyksICInIik7CiAgICB9CiAgICAKICAgICRxICAgICAgICAuPSAnIFdIRVJFIGlkID0gPyc7CiAgICAkcGFybXNbXSAgPSAkdWlkOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCAkcGFybXMpOwogICAgCiAgICBpZihGQUxTRSA9PT0gJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICBpZigkcGFzc3dvcmQpCiAgICB7CiAgICAgICRyZXMgPSAkdGhpcy0+U2V0VXNlclBhc3N3b3JkKCR1aWQsICRwYXNzd29yZCk7CiAgICAgIAogICAgICBpZighJHJlc1swXSkKICAgICAgewogICAgICAgIHJldHVybiAkcmVzOwogICAgICB9CiAgICB9CiAgICAKICAgICR0aGlzLT5fdXNlcmlkYnluYW1lID0gW107CiAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1aWQpOwogICAgCiAgICAvLyBDaGFuZ2VkIHRvIHBhc3MgJHVpZCBiYWNrIHNvIGl0IG1hdGNoZXMgQWRkVXNlcigpCiAgICByZXR1cm4gW1RSVUUsICR1aWRdOwogIH0KICAKICAvKioKICAgKiBTZXQgdGhlIHVzZXIgZ3JvdXAgbWVtYmVyc2hpcHMKICAgKiBkb2VzIG5vdCBhbHRlciBhbnkgdXNlciBwcm9wZXJ0aWVzLgogICAqIGRvZXMgbm90IHZhbGlkYXRlIGdyb3VwIGlkcywgYnV0IGRvZXMgdmFsaWRhdGUgdWlkCiAgICoKICAgKiBAcGFyYW0gaW50IHVzZXJpZAogICAqIEBwYXJhbSBhcnJheSBhcnJheSBvZiBpbnRlZ2VyIGdyb3VwIGlkcwogICAqCiAgICogQHJldHVybiBhcnJheSAoc3RhdHVzLG1zZykKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlckdyb3VwcygkdWlkLCAkZ3JwaWRzKQogIHsKICAgIGlmKCEkdWlkKSB7ICByZXR1cm4gW0ZBTFNFLCAnJ107IH0KICAgIAogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIC8vIGZpcnN0IG1ha2Ugc3VyZSB0aGlzIHVzZXIgZXhpc3RzCiAgICAkcmV0ID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgCiAgICBpZihGQUxTRSA9PT0gJHJldFswXSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJ1VzZXIgZG9lcyBub3QgZXhpc3QnXTsKICAgIH0KICAgIAogICAgLy8gdGhlbiByZW1vdmUgYWxsIGhpcyBjdXJyZW50IGFzc2lnbm1lbnRzCiAgICAkcSAgICAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQgPSA/JzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyR1aWRdKTsKICAgIAogICAgaWYoISRkYnJlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJGRiLT5FcnJvck1zZygpXTsKICAgIH0KICAgIAogICAgaWYoaXNfYXJyYXkoJGdycGlkcykgJiYgY291bnQoJGdycGlkcykpCiAgICB7CiAgICAgIC8vIGFuZCBhZGQgYWxsIG9mIHRoZW0gaW4KICAgICAgJHEgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyBWQUxVRVMgKD8sPyknOwogICAgICBmb3JlYWNoKCRncnBpZHMgYXMgJGdycGlkKQogICAgICB7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJHVpZCwgJGdycGlkXSk7CiAgICAgICAgCiAgICAgICAgaWYoISRkYnJlc3VsdCkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gW1RSVUUsICcnXTsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJGdpZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFkZFVzZXJUb0dyb3VwKCR1aWQsICRnaWQpCiAgewogICAgcmV0dXJuICR0aGlzLT5Bc3NpZ25Vc2VyVG9Hcm91cCgkdWlkLCAkZ2lkKTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkdWlkCiAgICogQHBhcmFtICRwcm9wcwogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0aWVzKCR1aWQsICRwcm9wcykKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgLy8gRGVsZXRlIGFsbCB0aGUgdXNlciBwcm9wZXJ0aWVzCiAgICAvLyBhbmQgc2V0IG5ldyBvbmVzCiAgICAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgnJywgJHVpZCwgVFJVRSk7CiAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1aWQpOwogICAgCiAgICBpZiggaXNfYXJyYXkoJHByb3BzKSAmJiBjb3VudCgkcHJvcHMpICkKICAgIHsKICAgICAgaWYoeHRfYXJyYXk6OmlzX2hhc2goJHByb3BzKSkKICAgICAgewogICAgICAgIGZvcmVhY2goJHByb3BzIGFzICRrZXkgPT4gJHZhbCkKICAgICAgICB7CiAgICAgICAgICBpZiggRkFMU0UgPT09ICggJHIgPSAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCgka2V5LCAkdmFsLCAkdWlkKSApICkKICAgICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICBmb3JlYWNoKCRwcm9wcyBhcyAkcHJvcCkKICAgICAgICB7CiAgICAgICAgICBbJGtleSwgJHZhbF0gPSBleHBsb2RlKCc9JywgJHByb3AsIDIpOwogICAgICAgICAgCiAgICAgICAgICBpZiggRkFMU0UgPT09ICggJHIgPSAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCgka2V5LCAkdmFsLCAkdWlkKSApICkKICAgICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKiBAcGFyYW0gJHVpZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFVzZXJFeGlzdHNCeUlEKCR1aWQpCiAgewogICAgaWYoISR1aWQpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICRkYXRhID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgCiAgICByZXR1cm4gKEZBTFNFICE9PSAkZGF0YVswXSk7CiAgfQogIAogIC8vCiAgLy8gcmV0dXJucyBhbiBhcnJheSBvciBmYWxzZQogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHVpZAogICAqCiAgICogQHJldHVybiBhcnJheXxib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpCiAgewogICAgaWYoISR1aWQpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICR1aW5mbyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCwgVFJVRSk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkdWluZm8pIHx8ICFpc3NldCgkdWluZm9bJ2Zwcm9wcyddKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuICR1aW5mb1snZnByb3BzJ107CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICogcmV0dXJucyBhbiBhcnJheSBvZiByZWNvcmRzIG9yIGZhbHNlCiAgICoKICAgKiBAcGFyYW0gJHVzZXJpZAogICAqCiAgICogQHJldHVybiBhcnJheXxib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpCiAgewogICAgJGF1dGhfY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICBpZigkYXV0aF9jb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGF1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfR1JPVVBNRU1CRVJTSElQKSkKICAgIHsKICAgICAgJG91dCA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfZ3JvdXBfbWVtYmVyc2hpcCgkdXNlcmlkKTsKICAgICAgCiAgICAgIGlmKCFpc19hcnJheSgkb3V0KSB8fCAwID09PSBjb3VudCgkb3V0KSkgeyByZXR1cm4gRkFMU0U7IH0KICAgICAgCiAgICAgICRyZXMgPSBbXTsKICAgICAgCiAgICAgIGZvcmVhY2goJG91dCBhcyAkb25lKQogICAgICB7CiAgICAgICAgJHJlc1tdID0gWyd1c2VyaWQnID0+ICR1c2VyaWQsICdncm91cGlkJyA9PiAkb25lXTsKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuICRyZXM7CiAgICB9CiAgICAKICAgIC8vIHNob3VsZG4ndCBiZSB1c2VkIGFueW1vcmUuLi4gYnV0IGp1c3QgaW4gY2FzZS4KICAgIC8vJGRiICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcSAgICAgICAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIHVzZXJpZD0/JzsKICAgICRkYnJlc3VsdCA9ICR0aGlzLT5HZXREYigpLT5FeGVjdXRlKCRxLCBbJHVzZXJpZF0pOwogICAgCiAgICBpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpKQogICAgewogICAgICAkcmVzdWx0ID0gW107CiAgICAgIAogICAgICB3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7ICRyZXN1bHRbXSA9ICRyb3c7IH0KICAgICAgCiAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIC8vCiAgLy8gZW5kIG9mIHJjIGZ1bmN0aW9ucwogIC8vCiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAgICAgICR0aXRsZQogICAqIEBwYXJhbSBib29sICRkZWZhdWx0dmFsdWUKICAgKgogICAqIEByZXR1cm4gYm9vbHxtaXhlZAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHkoJHRpdGxlLCAkZGVmYXVsdHZhbHVlID0gRkFMU0UpCiAgewogICAgJHVzZXJpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkdXNlcmlkKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkdXNlcmlkLCAkZGVmYXVsdHZhbHVlKTsKICB9CiAgCiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAgICAgICR0aXRsZQogICAqIEBwYXJhbSAgICAgICR1c2VyaWQKICAgKiBAcGFyYW0gYm9vbCAkZGVmYXVsdHZhbHVlCiAgICoKICAgKiBAcmV0dXJuIGJvb2x8bWl4ZWQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsICR1c2VyaWQsICRkZWZhdWx0dmFsdWUgPSBGQUxTRSkKICB7CiAgICBpZihGQUxTRSA9PT0gJHVzZXJpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHVpbmZvID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkdXNlcmlkLCBUUlVFKTsKICAgIAogICAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCR0aXRsZSk7CiAgICAKICAgIGlmKCEkZGVmbikgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgaWYoaXNzZXQoJHVpbmZvWydmcHJvcHMnXSkpCiAgICB7CiAgICAgIGZvcmVhY2goJHVpbmZvWydmcHJvcHMnXSBhcyAkb25lcHJvcCkKICAgICAgewogICAgICAgIGlmKCRvbmVwcm9wWyd0aXRsZSddID09PSAkdGl0bGUpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICRvbmVwcm9wWydkYXRhJ107CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAkZGVmYXVsdHZhbHVlOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJHRpdGxlCiAgICogQHBhcmFtICRkYXRhCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gSXNVc2VyUHJvcGVydHlWYWx1ZVVuaXF1ZSgkdWlkLCAkdGl0bGUsICRkYXRhKQogIHsKICAgICRkYiAgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgaWYoJHVpZCA+IDApCiAgICB7CiAgICAgICRxICAgPSAnU0VMRUNUIGlkIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcwogICAgICAgICAgV0hFUkUgdGl0bGUgPSA/IEFORCB1c2VyaWQgIT0gPyBBTkQgZGF0YSA9ID8nOwogICAgICAkZGJyID0gJGRiLT5HZXRPbmUoJHEsIFskdGl0bGUsICR1aWQsICRkYXRhXSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRxICAgPSAnU0VMRUNUIGlkIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcwogICAgICAgICAgV0hFUkUgdGl0bGUgPSA/IEFORCBkYXRhID0gPyc7CiAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcSwgWyR0aXRsZSwgJGRhdGFdKTsKICAgIH0KICAgIAogICAgaWYoJGRicikgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuIFRSVUU7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHRpdGxlCiAgICogQHBhcmFtICRkYXRhCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5KCR0aXRsZSwgJGRhdGEpCiAgewogICAgJHVzZXJpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkdXNlcmlkKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkZGF0YSwgJHVzZXJpZCk7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHRpdGxlCiAgICogQHBhcmFtICRkYXRhCiAgICogQHBhcmFtICR1c2VyaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJGRhdGEsICR1c2VyaWQpCiAgewogICAgaWYoRkFMU0UgPT09ICR1c2VyaWQpeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCR0aXRsZSk7CiAgICAKICAgIGlmKCEkZGVmbil7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICBpZigkZGVmblsnZW5jcnlwdCddKQogICAgewogICAgICAvLyBnb3R0YSBlbmNyeXB0LgogICAgICAka2V5ICA9ICR0aGlzLT5HZXRFbmNyeXB0aW9uS2V5KCR1c2VyaWQpOwogICAgICAkZGF0YSA9IGJhc2U2NF9lbmNvZGUoeHRfZW5jcnlwdDo6ZW5jcnlwdCgka2V5LCAkZGF0YSkpOwogICAgfQogICAgCiAgICBpZigkZGVmblsnZm9yY2VfdW5pcXVlJ10gJiYgISR0aGlzLT5Jc1VzZXJQcm9wZXJ0eVZhbHVlVW5pcXVlKCR1c2VyaWQsICR0aXRsZSwgJGRhdGEpKQogICAgewogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgJHEgID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB0aXRsZT0/IEFORCB1c2VyaWQ9Pyc7CiAgICAkcCAgPSBbJHRpdGxlLCAkdXNlcmlkXTsKICAgICRyICA9ICRkYi0+RXhlY3V0ZSgkcSwgJHApOwogICAgCiAgICBpZighJHIgfHwgKDAgPT09ICRyLT5OdW1Sb3dzKCkpKQogICAgewogICAgICAkcSA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICh1c2VyaWQsdGl0bGUsZGF0YSkgVkFMVUVTICg/LD8sPyknOwogICAgICAkcCA9IFskdXNlcmlkLCAkdGl0bGUsICRkYXRhXTsKICAgICAgJHIgPSAkZGItPkV4ZWN1dGUoJHEsICRwKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgLyoqIEB2YXIgYXJyYXkgJHJvdyAqLwogICAgICAkcm93ID0gJHItPkZldGNoUm93KCk7CiAgICAgICRxICAgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgU0VUIGRhdGE9PyBXSEVSRSBpZD0/JzsKICAgICAgJHAgICA9IFskZGF0YSwgKGludCkkcm93WydpZCddXTsKICAgICAgJHIgICA9ICRkYi0+RXhlY3V0ZSgkcSwgJHApOwogICAgfQogICAgCiAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1c2VyaWQpOwogICAgCiAgICByZXR1cm4gKEZBTFNFICE9PSAkcik7CiAgfQogIAogIAogIC8qKgogICAqIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHVzZXJwcm9wZXJ0eSBieSBuYW1lCiAgICoKICAgKiBAcGFyYW0gJHRpdGxlCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5QnlOYW1lKCR0aXRsZSkKICB7CiAgICAkZGIgICAgID0gJHRoaXMtPkdldERCKCk7CiAgICAkcSAgICAgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdGl0bGU9Pyc7CiAgICAkcCAgICAgID0gWyR0aXRsZV07CiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCAkcCk7CiAgICAKICAgIG1hbXNfdXNlcl9jYWNoZTo6Y2xlYXJfYWxsKCk7CiAgICAKICAgIHJldHVybiAoRkFMU0UgIT09ICRyZXN1bHQpOwogIH0KICAKICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICAgICAgJHRpdGxlCiAgICogQHBhcmFtIGJvb2wgJGFsbAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eSgkdGl0bGUsICRhbGwgPSBGQUxTRSkKICB7CiAgICAkdXNlcmlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIAogICAgaWYoRkFMU0UgPT09ICR1c2VyaWQpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkdGl0bGUsICR1c2VyaWQsICRhbGwpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICAgICAgJHRpdGxlCiAgICogQHBhcmFtICAgICAgJHVzZXJpZAogICAqIEBwYXJhbSBib29sICRhbGwKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJHVzZXJpZCwgJGFsbCA9IEZBTFNFKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgJHEgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdXNlcmlkPT8nOwogICAgaWYoISRhbGwpCiAgICB7CiAgICAgICRxIC49ICcgQU5EIHRpdGxlPT8nOwogICAgfQogICAgCiAgICBpZigkYWxsKQogICAgewogICAgICAkcCA9IFskdXNlcmlkXTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHAgPSBbJHVzZXJpZCwgJHRpdGxlXTsKICAgIH0KICAgIAogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgJHApOwogICAgCiAgICBtYW1zX3VzZXJfY2FjaGU6OmRlbF91c2VyKCR1c2VyaWQpOwogICAgCiAgICByZXR1cm4gKEZBTFNFICE9PSAkcmVzdWx0KTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllcygpCiAgewogICAgcmV0dXJuICR0aGlzLT5EZWxldGVVc2VyUHJvcGVydHkoJycsIFRSVUUpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1c2VyaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoJHVzZXJpZCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkRlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoJycsICR1c2VyaWQsIFRSVUUpOwogIH0KICAKICAvKioKICAgKiBAcmV0dXJuIGludAogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiB1c2VfdXNlcnNhbHQoKQogIHsKICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAKICAgIHJldHVybiAoaW50KSRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZV91c2Vyc2FsdCcsIDIpOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAgICR1c2VybmFtZQogICAqIEBwYXJhbSAgICAgICAgJHBhc3N3b3JkCiAgICogQHBhcmFtIHN0cmluZyAkZ3JvdXBzCiAgICoKICAgKiBAcmV0dXJuIGludHxtaXhlZAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBDaGVja1Bhc3N3b3JkKCR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZ3JvdXBzID0gJycpCiAgewogICAgJHRtcCA9ICR0aGlzLT5HZXRVc2VySW5mb0J5TmFtZSgkdXNlcm5hbWUpOwogICAgCiAgICBpZighaXNfYXJyYXkoJHRtcCkgfHwgIWlzc2V0KCR0bXBbMF0pIHx8ICEkdG1wWzBdIHx8ICFpc19hcnJheSgkdG1wWzFdKSkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICAkdWluZm8gPSAkdG1wWzFdOwogICAgCiAgICBpZighaXNzZXQoJHVpbmZvWydpZCddKSAmJiAhaXNzZXQoJHVpbmZvWydwYXNzd29yZCddKSkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICBpZigkZ3JvdXBzKQogICAgewogICAgICAkZ2luZm8gPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoKGludCkkdWluZm9bJ2lkJ10pOwogICAgICAKICAgICAgaWYoISRnaW5mbykgeyByZXR1cm4gRkFMU0U7IH0gLy8gdXNlciBub3QgYSBtZW1iZXIgb2YgYW55IGdyb3VwcwogICAgICAKICAgICAgJG1lbWJlcl9naWRzID0gYXJyYXlfbWFwKAogICAgICAgIHN0YXRpYyBmdW5jdGlvbigkcm93KSB7CiAgICAgICAgICByZXR1cm4gKGludCkkcm93Wydncm91cGlkJ107CiAgICAgICAgfSwgJGdpbmZvCiAgICAgICk7CiAgICAgIAogICAgICB1bnNldCgkZ2luZm8pOwogICAgICAkZ3JvdXBzID0gZXhwbG9kZSgnLCcsICRncm91cHMpOwogICAgICAKICAgICAgLy8gY29udmVydCB0aGVzZSBncm91cCBuYW1lcyB0byBnaWRzLgogICAgICAkZ2lkcyAgICAgID0gW107CiAgICAgICRhbGxncm91cHMgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiAgICAgIAogICAgICBpZighJGFsbGdyb3VwcykgeyByZXR1cm4gMDsgfSAvLyBubyBncm91cHMgZGVmaW5lZAogICAgICAKICAgICAgJGFsbGdyb3VwcyA9IGFycmF5X2ZsaXAoJGFsbGdyb3Vwcyk7CiAgICAgIAogICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG9uZSkKICAgICAgewogICAgICAgICRvbmUgPSB0cmltKCRvbmUpOwogICAgICAgIAogICAgICAgIGlmKCEkb25lKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgCiAgICAgICAgJGdpZCA9IGFycmF5X3NlYXJjaCgkb25lLCAkYWxsZ3JvdXBzKTsgLy8gVE9ETyBzZWUgaWYgM3JkIHBhcmFtZXRlciBjYW4vc2hvdWxkIGJlIHVzZWQgSk0KICAgICAgICAKICAgICAgICBpZihGQUxTRSA9PT0gJGdpZCkgeyBjb250aW51ZTsgfSAvLyBncm91cCBkb2VzIG5vdCBleGlzdAogICAgICAgIAogICAgICAgICRnaWRzW10gPSAkZ2lkOwogICAgICB9CiAgICAgIAogICAgICB1bnNldCgkYWxsZ3JvdXBzLCAkZ3JvdXBzKTsKICAgICAgJGdpZHMgPSBhcnJheV91bmlxdWUoJGdpZHMpOwogICAgICAKICAgICAgaWYoZW1wdHkoJGdpZHMpKSB7IHJldHVybiAwOyB9IC8vIG5vIGdyb3VwcyBzcGVjaWZpZWQgYWN0dWFsbHkgZXhpc3QuCiAgICAgIAogICAgICAkdG1wID0gYXJyYXlfaW50ZXJzZWN0KCRnaWRzLCAkbWVtYmVyX2dpZHMpOwogICAgICAKICAgICAgaWYoZW1wdHkoJHRtcCkpIHsgcmV0dXJuIDA7IH0KICAgIH0KICAgIAogICAgLy8gbm93IHZlcmlmeSB0aGUgaGFzaAogICAgaWYoMzIgPT09IHN0cmxlbigkdWluZm9bJ3Bhc3N3b3JkJ10pKQogICAgewogICAgICAvLyB0aGlzIGlzIHRoZSBvbGQsIG5vdCByZWFsbHkgZ29vZCBoYXNoaW5nLgogICAgICAvLyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAgaWYoIWVtcHR5KCR1aW5mb1snc2FsdCddKSkKICAgICAgewogICAgICAgICR0bXBiID0gbWQ1KHRyaW0oJHBhc3N3b3JkKSAuICR1aW5mb1snc2FsdCddKTsKICAgICAgICAKICAgICAgICBhdWRpdCgkdWluZm9bJ2lkJ10sICdNQU1TJywgJ1VzZXIgaGFzIGEgc2FsdCwgYnV0IGFuIG1kNSBlbmNvZGVkIHBhc3N3b3JkJyk7CiAgICAgICAgCiAgICAgICAgaWYoJHVpbmZvWydwYXNzd29yZCddID09PSAkdG1wYikgeyByZXR1cm4gJHVpbmZvWydpZCddOyB9CiAgICAgIH0KICAgICAgCiAgICAgICR0bXBhID0gbWQ1KHRyaW0oJHBhc3N3b3JkKSAuICR0aGlzLT5nZXRfYmFkX3NhbHQoKSk7CiAgICAgIAogICAgICBpZigkdWluZm9bJ3Bhc3N3b3JkJ10gPT09ICR0bXBhKSB7IHJldHVybiAkdWluZm9bJ2lkJ107IH0KICAgIH0KICAgIGVsc2UgaWYoJHVpbmZvWydzYWx0J10pCiAgICB7CiAgICAgIC8vIHVzZXIgaGFzIGEgc2FsdC4uLiBzbyBpdCBpcyB1c2luZyBvbGQgc2hhMSBoYXNoaW5nCiAgICAgICR0bXAgPSBzaGExKCRwYXNzd29yZCAuICR1aW5mb1snc2FsdCddKTsKICAgICAgCiAgICAgIGlmKCR1aW5mb1sncGFzc3dvcmQnXSA9PT0gJHRtcCkgeyByZXR1cm4gJHVpbmZvWydpZCddOyB9CiAgICB9CiAgICAKICAgIC8vIHVzZXJzYWx0ID09IDIsIG5ldyBwYXNzd29yZCBoYXNoZXMuCiAgICByZXR1cm4gcGFzc3dvcmRfdmVyaWZ5KCRwYXNzd29yZCwgJHVpbmZvWydwYXNzd29yZCddKSA/ICR1aW5mb1snaWQnXSA6IDA7CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbk5hbWUoKQogIHsKICAgICR1c2VyaWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgCiAgICBpZigkdXNlcmlkKSB7IHJldHVybiAkdGhpcy0+R2V0VXNlck5hbWUoJHVzZXJpZCk7IH0KICAgIAogICAgcmV0dXJuICcnOwogIH0KICAKICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqIHRoaXMgaXMgZm9yIGZyb250ZW5kIGNvZGUKICAgKiBAcGFyYW0gJHVpZAogICAqIEBwYXJhbSAkbWVzc2FnZQogICAqCiAgICogQHJldHVybiB2b2lkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIExvZ291dCgkdWlkID0gJycsICRtZXNzYWdlID0gJ2xvZ291dCcpCiAgewogICAgaWYoJHVpZCAhPSAnJykKICAgIHsKICAgICAgJHRoaXMtPkxvZ291dFVzZXIoJHVpZCwgJG1lc3NhZ2UpOwogICAgICByZXR1cm47CiAgICB9CiAgICAKICAgICR1aWQgPSAoaW50KSR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZigkdWlkIDwgMSkgeyByZXR1cm47IH0KICAgIAogICAgLy8gbG9nb3V0IHRoZSBjdXJyZW50IHVzZXIgKGNsZWFycyBzZXNzaW9uIGFuZCBjb29raWVzKS4KICAgICR0aGlzLT5fY2xlYXJfbG9naW5kZXRhaWxzKCR1aWQpOwogICAgCiAgICAvLyBhbmQgYWRkIGhpc3RvcnkgaW5mbwogICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsICRtZXNzYWdlKTsKICAgIAogICAgLy8gc2VuZCB0aGUgZXZlbnQuCiAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPbkxvZ291dCcsIFsnaWQnID0+ICR1aWRdKTsKICB9CiAgCiAgCiAgLyoqCiAgICogdGhpcyBkZWxldGVzIHRoZSBlbnRyeSBmcm9tIHRoZSBsb2dnZWRpbiB0YWJsZSwgYW5kIGFkZHMgYSBoaXN0b3J5IGVudHJ5LgogICAqIGl0IGFsc28gc2V0cyBzb21lIGNhY2hlIGRhdGEgdXNlZCB0byBmb3JjZSBsb2dvdXQgdGhlIHVzZXIKICAgKiBkZXNpZ25lZCB0byBwcm9ncmFtbWF0aWNhbGx5IGxvZyBvdXQgYSB1c2VyIGZyb20gdGhlIGFkbWluIHBhbmVsIG9mIHRoZSBtb2R1bGUuCiAgICogc28gdGhhdCB0aGUgbmV4dCB0aW1lIGEgdXNlciBkb2VzIGFueXRoaW5nIG9uIHRoaXMgc2l0ZSwgYW5kIGFzIGxvbmcgYXMgY2FjaGUgaXMgbm90IGNsZWFyZWQKICAgKiB0aGUgbmV4dCB0aW1lIGhlIGRvZXMgYSByZXF1ZXN0IG9uIHRoZSB3ZWJzaXRlLCBoaXMgY29va2llcyBhbmQgc2Vzc2lvbiBkYXRhIHdpbGwgYmUgY2xlYXJlZAogICAqIGFub3RoZXIgb3B0aW9uIGhlcmUgd291bGQgYmUgdG8gdXNlIGEgZmxhZyBpbiB0aGUgZGF0YWJhc2UgdGhhdCBpbmRpY2F0ZXMgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBvdXQuCiAgICoKICAgKiBAcGFyYW0gJHVpZAogICAqIEBwYXJhbSAkZXZlbnRtc2cKICAgKgogICAqIEByZXR1cm4gdm9pZAogICAqLwogIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgcHVibGljIGZ1bmN0aW9uIExvZ291dFVzZXIoJHVpZCwgJGV2ZW50bXNnID0gJ2xvZ291dCcpCiAgewogICAgCiAgICBjbXNfY2FjaGVfaGFuZGxlcjo6Z2V0X2luc3RhbmNlKCktPnNldCgnbWFtc19sb2dvdXRfJyAuICR1aWQsIDEsIF9fQ0xBU1NfXyk7CiAgICAKICAgIGlmKCEkdWlkKSB7IHJldHVybjsgfQogICAgCiAgICAkZGIgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcSAgICAgID0gIkRFTEVURSBGUk9NICIgLiBDTVNfREJfUFJFRklYIC4gIm1vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIHVzZXJpZD0/IjsKICAgICRwICAgICAgPSBbJHVpZF07CiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCAkcCk7CiAgICAKICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCAkZXZlbnRtc2cpOwogIH0KICAKICAvKioKICAgKiBAcmV0dXJuIHZvaWQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVXNlcnMoKQogIHsKICAgIHN0YXRpYyAkX2hhc3J1bjsKICAgIAogICAgaWYoJF9oYXNydW4pIHsgcmV0dXJuOyB9CiAgICAKICAgICRfaGFzcnVuID0gVFJVRTsKICAgIAogICAgLy8gZXhwaXJlcyB1c2VycyB3aG8gaGF2ZSBub3QgYmVlbiAndG91Y2hlZCcgd2l0aGluIHRoZSBsYXN0IE4gc2Vjb25kcy4KICAgICRtb2R1bGUgICAgICAgICAgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAkZXhwaXJlX2ludGVydmFsID0gKGludCkkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdleHBpcmV1c2Vyc19pbnRlcnZhbCcsIDE4MCk7CiAgICAkZXhwaXJlX2xhc3RydW4gID0gJHRoaXMtPmdldF9leHBpcmV1c2Vyc19sYXN0cnVuKCk7CiAgICAKICAgIGlmKHRpbWUoKSAtICRleHBpcmVfbGFzdHJ1biA+PSAkZXhwaXJlX2ludGVydmFsKQogICAgewogICAgICAkZXhwaXJ5dGltZSA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ3VzZXJfc2Vzc2lvbl9leHBpcmVzJyk7CiAgICAgICRkYiAgICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgIAogICAgICAvLyB0b2RvOiBiZWdpbiB0cmFuc2FjdGlvbgogICAgICAkcSAgICAgICAgPSAiU0VMRUNUICogRlJPTSAiIC4gQ01TX0RCX1BSRUZJWCAuICJtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSBsYXN0dXNlZCA8ID8iOwogICAgICAkcCAgICAgICAgPSBbdGltZSgpIC0gJGV4cGlyeXRpbWVdOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwKTsKICAgICAgCiAgICAgIHdoaWxlKCRkYnJlc3VsdCAmJiAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkpCiAgICAgIHsKICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHJvd1sndXNlcmlkJ10sICdleHBpcmUnKTsKICAgICAgICAka2V5ID0gJHRoaXMtPmtlZXBhbGl2ZV9jb29raWUoKTsKICAgICAgICAKICAgICAgICBpZihpc3NldCgkX1NFU1NJT05bJGtleV0pICYmICcnICE9ICRfU0VTU0lPTlska2V5XSkKICAgICAgICB7CiAgICAgICAgICAvLyB0aGlzIGxvZ3MgdGhlIGN1cnJlbnQgdXNlciBvdXQuCiAgICAgICAgICAkZGF0YSA9ICR0aGlzLT5kZWNvZGVfdXNlcmRhdGEoJF9TRVNTSU9OWyRrZXldKTsKICAgICAgICAgIAogICAgICAgICAgaWYoaXNzZXQoJGRhdGFbJ3VpZCddKSAmJiAkZGF0YVsndWlkJ10gPT0gJHJvd1sndXNlcmlkJ10pCiAgICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5fY2xlYXJfbG9naW5kZXRhaWxzKCRyb3dbJ3VzZXJpZCddLCBUUlVFKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHRoaXMtPk5vdGlmeUV4cGlyZWRVc2VyKCRyb3dbJ3VzZXJpZCddKTsKICAgICAgfQogICAgICAKICAgICAgJHEgICAgICA9ICJERUxFVEUgRlJPTSAiIC4gQ01TX0RCX1BSRUZJWCAuICJtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSBsYXN0dXNlZDw/IjsKICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgJHApOwogICAgICAKICAgICAgLy8gdG9kbzogY29tbWl0IHRyYW5zYWN0aW9uCiAgICAgIAogICAgICAkdGhpcy0+dG91Y2hfZXhwaXJldXNlcnNfbGFzdHJ1bigpOwogICAgfQogIH0KICAKICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogIAogIC8qKgogICAqIEByZXR1cm4gZmFsc2V8aW50fG1peGVkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluSWQoKQogIHsKICAgIC8vIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgdXNpbmcgdGhlIGF1dGggbW9kdWxlCiAgICAkbW9kdWxlICAgICAgICA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgIAogICAgaWYoISRhdXRoX2NvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9MT0dJTikpCiAgICB7CiAgICAgIC8vIGl0J3MgdGhlIGJ1aWx0LWluIHN0dWZmLgogICAgICByZXR1cm4gJHRoaXMtPl9zdGRfTG9nZ2VkSW5JZCgpOwogICAgfQogICAgCiAgICAvLyBlaXRoZXIgdGhlIGNvbnN1bWVyIGRvZXNuJ3QgcHJvdmlkZSBhYnNvbHV0ZSBsb2dpbiAoQ0FQQUJJTElUWV9MT0dJTikKICAgIC8vIE9SIHRoZSB1c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkIHZpYSB0aGUgb2xkIHN0dWZmLgogICAgaWYoJGF1dGhfY29uc3VtZXItPmlzX2F1dGhlbnRpY2F0ZWQoKSkKICAgIHsKICAgICAgLy8gYXV0aGVudGljYXRlZCB2aWEgc29tZSBleHRlcm5hbCBtZWNoYW5pc20uLi4gc3RpbGwgbmVlZCB0byB0aWUgdGhpcyB0byBhbgogICAgICAvLyBpbnRlcm5hbCB1c2VyIHJlY29yZCBmb3IgcHJvcGVydGllcyBhbmQgZ3JvdXBzIGFuZCBjcnVmdC4KICAgICAgCiAgICAgIC8vIHNlYXJjaCBmb3IgYSB1c2VyaWQgYmFzZWQgb24gYSBwcm9wZXJ0eQogICAgICAkcHJvcCA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfY29ubmVjdGluZ19wcm9wZXJ0eV9uYW1lKCk7CiAgICAgICR2YWwgID0gJGF1dGhfY29uc3VtZXItPmdldF91bmlxdWVfaWRlbnRpZmllcigpOwogICAgICAKICAgICAgaWYoISR2YWwpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICAkdWluZm8gICA9ICcnOwogICAgICAkdXNlcHJvcCA9IEZBTFNFOwogICAgICAKICAgICAgaWYoJycgPT0gJHByb3AgfHwgbWFtc19hdXRoX2NvbnN1bWVyOjpQUk9QRVJUWV9VU0VSTkFNRSA9PSAkcHJvcCkKICAgICAgewogICAgICAgIC8vIGdldCB1c2VyIGJ5IG5hbWUKICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm9CeU5hbWUoJGF1dGhfY29uc3VtZXItPmdldF91c2VybmFtZSgkdmFsKSk7CiAgICAgIH0KICAgICAgZWxzZSBpZigkcHJvcCA9PSBtYW1zX2F1dGhfY29uc3VtZXI6OlBST1BFUlRZX1VJRCkKICAgICAgewogICAgICAgIC8vIHNlZSBpZiB0aGUgdWlkIGV4aXN0cy4KICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm8oJHZhbCk7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgLy8gaXQncyBhIHByb3BlcnR5IG9mIHNvbWUgdHlwZS4KICAgICAgICAkdWluZm8gICA9ICR0aGlzLT5HZXRVc2VySW5mb0J5UHJvcGVydHkoJHByb3AsICR2YWwpOwogICAgICAgICR1c2Vwcm9wID0gVFJVRTsKICAgICAgfQogICAgICAKICAgICAgIyAgICAgICAgICAgICAgICAgICAgICB8fCA8LSBhdCB0aGlzIHBvaW50ICR1aW5mbyBpcyBhbiBhcnJheSAoSk0pCiAgICAgIC8vaWYoIWlzX2FycmF5KCR1aW5mbykgfHwgKGlzX2FycmF5KCR1aW5mbykgJiYgRkFMU0UgPT0gJHVpbmZvWzBdKSApICMjIG1heWJlIHRoZSBuZXh0IGxpbmUgd29ya3MgYmV0dGVyPwogICAgICBpZighaXNfYXJyYXkoJHVpbmZvKSB8fCAhJHVpbmZvWzBdKQogICAgICB7CiAgICAgICAgLy8gdXNlciBhdXRoZW50aWNhdGVkIGJ1dCBub3QgZm91bmQsIGRvIHdlIG5lZWQgdG8gY3JlYXRlIG9uZT8KICAgICAgICBpZigkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdhdXRvX2NyZWF0ZV91bmtub3duJykpCiAgICAgICAgewogICAgICAgICAgLy8gd2UncmUgZ29pbmcgdG8gY3JlYXRlIGEgbmV3IHVzZXIuCiAgICAgICAgICAkdXNlcm5hbWUgPSAnJzsKICAgICAgICAgIAogICAgICAgICAgaWYoJGF1dGhfY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRhdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVJOQU1FKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHVzZXJuYW1lID0gJGF1dGhfY29uc3VtZXItPmdldF91c2VybmFtZSgpOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICBpZighJHVzZXJuYW1lKQogICAgICAgICAgewogICAgICAgICAgICAkdXNlcm5hbWUgPSAkdmFsOwogICAgICAgICAgICBpZigKICAgICAgICAgICAgICAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1c2VfcmFuZG9tdXNlcm5hbWUnKSAmJgogICAgICAgICAgICAgICRwcm9wICE9IG1hbXNfYXV0aF9jb25zdW1lcjo6UFJPUEVSVFlfVVNFUk5BTUUgJiYKICAgICAgICAgICAgICAkcHJvcCAhPSBtYW1zX2F1dGhfY29uc3VtZXI6OlBST1BFUlRZX1VJRCAmJgogICAgICAgICAgICAgICcnICE9ICRwcm9wCiAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2VybmFtZSA9ICRtb2R1bGUtPkdlbmVyYXRlUmFuZG9tVXNlcm5hbWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAkdG1wICAgICA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2V4cGlyZWFnZV9tb250aHMnLCA1MjApOwogICAgICAgICAgJGV4cGlyZXMgPSBzdHJ0b3RpbWUoc3ByaW50ZignKyVkIG1vbnRocycsICR0bXApKTsKICAgICAgICAgIAogICAgICAgICAgJHJldCA9ICR0aGlzLT5BZGRVc2VyKAogICAgICAgICAgICAkdXNlcm5hbWUsCiAgICAgICAgICAgIG1hbXNfdXRpbHM6OmdlbmVyYXRlX3JhbmRvbV9wcmludGFibGVfc3RyaW5nKCksCiAgICAgICAgICAgICRleHBpcmVzLCBUUlVFLCBUUlVFCiAgICAgICAgICApOwogICAgICAgICAgCiAgICAgICAgICBpZighJHJldFswXSkKICAgICAgICAgIHsKICAgICAgICAgICAgJG1vZHVsZS0+QXVkaXQoJycsICRtb2R1bGUtPkdldE5hbWUoKSwgJHJldFsxXSk7CiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICB9CiAgICAgICAgICAKICAgICAgICAgICR1aWQgPSAkcmV0WzFdOwogICAgICAgICAgCiAgICAgICAgICAvLyBzZXQgaGlzIGdyb3Vwcy4KICAgICAgICAgICRkZmx0X2dyb3VwcyA9ICR0aGlzLT5HZXREZmx0R3JvdXBzKCk7CiAgICAgICAgICAKICAgICAgICAgIGlmKGlzX2FycmF5KCRkZmx0X2dyb3VwcykgJiYgY291bnQoJGRmbHRfZ3JvdXBzKSkKICAgICAgICAgIHsKICAgICAgICAgICAgIyB3YXMgJHJlcyBidXQgc21lbGxlZCBsaWtlIGFuIGVycm9yCiAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+U2V0VXNlckdyb3VwcygkdWlkLCAkZGZsdF9ncm91cHMpOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAvLyBub3cgc2V0IGEgcHJvcGVydHkuCiAgICAgICAgICBpZigkdXNlcHJvcCkKICAgICAgICAgIHsKICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wLCAkdmFsLCAkdWlkKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCEkcmV0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgLy8gc2hvdWxkIHJlbW92ZSB0aGUgdXNlci4uLgogICAgICAgICAgICAgICRtb2R1bGUtPkF1ZGl0KCcnLCAkbW9kdWxlLT5HZXROYW1lKCksICRtb2R1bGUtPkxhbmcoJ2Vycm9yX3Byb2JsZW1zZXR0aW5naW5mbycpKTsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgJG1vZHVsZS0+QXVkaXQoJHVpZCwgJG1vZHVsZS0+R2V0TmFtZSgpLCAkbW9kdWxlLT5MYW5nKCdhdWRpdF91c2VyX2NyZWF0ZWQnKSk7CiAgICAgICAgICAKICAgICAgICAgIHJldHVybiAkdWlkOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gJHVpbmZvWzFdWydpZCddOwogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBGQUxTRTsKICB9CiAgCiAgLyoqCiAgICogTk9UIEZPUiBFWFRFUk5BTCBVU0UKICAgKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBfc3RkX0xvZ2dlZEluSWQoKQogIHsKICAgICRzZXNzaW9uaWQgPSBzZXNzaW9uX2lkKCk7CiAgICBpZighJHNlc3Npb25pZCkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICAvLyBpZiB3ZSBhcmUgZXhwaXJlZCB0aGlzIHdpbGwgbG9nIHVzIG91dC4gY2FsbHMgX2NsZWFyX2xvZ2luZGV0YWlscwogICAgJHRoaXMtPkV4cGlyZVVzZXJzKCk7CiAgICAKICAgIC8vIGdldCB0aGUgbG9naW4gZGV0YWlscyBmcm9tIHNlc3Npb24sIGNvb2tpZXMgb3IgZnJvbSB0aGUgZGF0YWJhc2UKICAgICRkYXRhID0gJHRoaXMtPl9nZXRfc2F2ZWRfbG9naW5kZXRhaWxzKCk7CiAgICBpZighJGRhdGEgfHwgIWlzc2V0KCRkYXRhWyd1aWQnXSkpCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgICR1aWQgPSAoaW50KSRkYXRhWyd1aWQnXTsKICAgIAogICAgLy8gaWYgd2UgYXJlIGZvcmNlIGxvZ2dlZCBvdXQKICAgIGlmKGNtc19jYWNoZV9oYW5kbGVyOjpnZXRfaW5zdGFuY2UoKS0+ZXhpc3RzKCdtYW1zX2xvZ291dF8nIC4gJHVpZCwgX19DTEFTU19fKSkKICAgIHsKICAgICAgY21zX2NhY2hlX2hhbmRsZXI6OmdldF9pbnN0YW5jZSgpLT5lcmFzZSgnbWFtc19sb2dvdXRfJyAuICR1aWQsIF9fQ0xBU1NfXyk7CiAgICAgIC8vIGNsZWFycyBjb29raWVzIGFuZCBzZXNzaW9uIGRhdGEKICAgICAgJHRoaXMtPl9jbGVhcl9sb2dpbmRldGFpbHMoJHVpZCk7CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICAgIC8vIGFjdHVhbGx5IGRvZXMgdGhlIGxvZ2dpbmcgaW4gdG8gdGhlIGRhdGFiYXNlLCBhbmQgc2V0cyBjb29raWVzIGFuZCBzZXNzaW9uIGRhdGEuCiAgICAkdGhpcy0+X3NldF9zYXZlZF9sb2dpbmRldGFpbHMoJGRhdGEpOwogICAgCiAgICByZXR1cm4gJHVpZDsKICB9CiAgCiAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICBwdWJsaWMgZnVuY3Rpb24gTG9nZ2VkSW4oKQogIHsKICAgIGlmKCEkdGhpcy0+TG9nZ2VkSW5JZCgpKQogICAgewogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICAgIHJldHVybiBUUlVFOwogIH0KICAKICAvKioKICAgKiBEZXRlcm1pbmUgaWYgdGhlIHVzZXIgaWQgaXMgYSBtZW1iZXIgb2YgdGhlIGdyb3VwKHMpIHNwZWNpZmllZC4KICAgKgogICAqIEBwYXJhbSBpbnRlZ2VyIHVzZXJpZAogICAqIEBwYXJhbSBtaXhlZCBpbnRlZ2VyIChwb3NpdGl2ZSkgZ3JvdXAgaWQsIG9yIGFuIGFycmF5IG9mIHBvc2l0aXZlIGludGVnZXIgZ3JvdXAgaWRzLgogICAqCiAgICogQHJldHVybiBib29sZWFuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIE1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpCiAgewogICAgaWYoJHVzZXJpZCA8IDEpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIC8vIGNsZWFudXAgdGhlIGlucHV0IGdyb3VwaWQgbGlzdC4KICAgIGlmKCFpc19hcnJheSgkZ3JvdXBpZCkpCiAgICB7CiAgICAgICRncm91cGlkID0gWyhpbnQpJGdyb3VwaWRdOwogICAgfQogICAgCiAgICAkZ3JvdXBpZCA9IGFycmF5X3ZhbHVlcygkZ3JvdXBpZCk7CiAgICAKICAgIGZvcmVhY2goJGdyb3VwaWQgYXMgJGkgPT4gJGlWYWx1ZSkKICAgIHsKICAgICAgaWYoJGlWYWx1ZSA8IDEpIHsgdW5zZXQoJGdyb3VwaWRbJGldKTsgfQogICAgfQogICAgCiAgICBpZighaXNfYXJyYXkoJGdyb3VwaWQpIHx8IDAgPT09IGNvdW50KCRncm91cGlkKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHRtcCA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdXNlcmlkKTsKICAgIAogICAgaWYoIWlzX2FycmF5KCR0bXApIHx8IDAgPT09IGNvdW50KCR0bXApKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkbWVtYmVyc2hpcCA9IHh0X2FycmF5OjpleHRyYWN0X2ZpZWxkKCR0bXAsICdncm91cGlkJyk7CiAgICAkdG1wICAgICAgICA9IGFycmF5X2ludGVyc2VjdCgkbWVtYmVyc2hpcCwgJGdyb3VwaWQpOwogICAgCiAgICBpZihjb3VudCgkdG1wKSkgeyByZXR1cm4gVFJVRTsgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHVzZXJpZAogICAqCiAgICogQHJldHVybiBzdHJpbmcKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlck5hbWUoJHVzZXJpZCkKICB7CiAgICAkcm93ID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkdXNlcmlkKTsKICAgIAogICAgaWYoISRyb3cpIHsgcmV0dXJuICcnOyB9CiAgICAKICAgIHJldHVybiAkcm93Wyd1c2VybmFtZSddOwogIH0KICAKICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1c2VybmFtZQogICAqCiAgICogQHJldHVybiBpbnQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlcklEKCR1c2VybmFtZSkKICB7CiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fdXNlcmlkYnluYW1lKSApCiAgICB7CiAgICAgICR0aGlzLT5fdXNlcmlkYnluYW1lID0gW107CiAgICB9CiAgICAKICAgIGlmKCFpc3NldCgkdGhpcy0+X3VzZXJpZGJ5bmFtZVskdXNlcm5hbWVdKSkKICAgIHsKICAgICAgJGRiICA9ICR0aGlzLT5HZXREYigpOwogICAgICAkcSAgID0gJ1NFTEVDVCBpZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFdIRVJFIHVzZXJuYW1lID0gPyc7CiAgICAgICR1aWQgPSAoaW50KSRkYi0+R2V0T25lKCRxLCBbJHVzZXJuYW1lXSk7CiAgICAgIAogICAgICBpZigkdWlkIDwgMSkgeyByZXR1cm4gLTE7IH0KICAgICAgCiAgICAgICR0aGlzLT5fdXNlcmlkYnluYW1lWyR1c2VybmFtZV0gPSAkdWlkOwogICAgICAKICAgICAgcmV0dXJuICR1aWQ7CiAgICB9CiAgICAKICAgIHJldHVybiAoaW50KSR0aGlzLT5fdXNlcmlkYnluYW1lWyR1c2VybmFtZV07CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJG5hbWUKICAgKiBAcGFyYW0gJGRlc2NyaXB0aW9uCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFkZEdyb3VwKCRuYW1lLCAkZGVzY3JpcHRpb24pCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIC8vIHNlZSBpZiBpdCBleGlzdHMgYWxyZWFkeSBvciBub3QgKGJ5IG5hbWUpCiAgICAkcSAgICAgICAgPSAiU0VMRUNUICogRlJPTSAiIC4gQ01TX0RCX1BSRUZJWCAuICJtb2R1bGVfbWFtc19ncm91cHMgV0hFUkUgZ3JvdXBuYW1lID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskbmFtZV0pOwogICAgaWYoISRkYnJlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJGRiLT5FcnJvck1zZygpXTsKICAgIH0KICAgIAogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIAogICAgaWYoJHJvdykKICAgIHsKICAgICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnKV07CiAgICB9CiAgICAKICAgICRxICAgICAgICA9ICJJTlNFUlQgSU5UTyAiIC4gQ01TX0RCX1BSRUZJWCAuICJtb2R1bGVfbWFtc19ncm91cHMgKGdyb3VwbmFtZSxncm91cGRlc2MpIFZBTFVFUyAoPyw/KSI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskbmFtZSwgJGRlc2NyaXB0aW9uXSk7CiAgICAKICAgIGlmKCEkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgICRncnBpZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICB1bnNldCgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSk7CiAgICAKICAgIHJldHVybiBbVFJVRSwgJGdycGlkXTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAgICAgICRuYW1lCiAgICogQHBhcmFtICAgICAgJHBhc3N3b3JkCiAgICogQHBhcmFtICAgICAgJGV4cGlyZXMKICAgKiBAcGFyYW0gYm9vbCAkbm9uc3RkCiAgICogQHBhcmFtIG51bGwgJGNyZWF0ZWRhdGUKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gQWRkVXNlcigkbmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcywgJG5vbnN0ZCA9IEZBTFNFLCAkY3JlYXRlZGF0ZSA9IE5VTEwpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIC8vIHNlZSBpZiBpdCBleGlzdHMgYWxyZWFkeSBvciBub3QgKGJ5IG5hbWUpCiAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCgkbmFtZSk7CiAgICAKICAgIGlmKCR1aWQgPiAwKQogICAgewogICAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5hbWVfZXhpc3RzJyldOwogICAgfQogICAgCiAgICAvLyBnZW5lcmF0ZSB0aGUgc2FsdC4KICAgICRzYWx0ID0gTlVMTDsKICAgIAogICAgaWYoMSA9PT0gJHRoaXMtPnVzZV91c2Vyc2FsdCgpKQogICAgewogICAgICAkc2FsdCA9IHNoYTEodGltZSgpIC4gJG5hbWUgLiByYW5kKCkgLiAkZXhwaXJlcyAuIF9fRklMRV9fKTsKICAgIH0KICAgIAogICAgLy8gaW5zZXJ0IHRoZSByZWNvcmQKICAgICRjcmVhdGVkYXRlID0gKGludCkkY3JlYXRlZGF0ZTsKICAgIAogICAgaWYoJGNyZWF0ZWRhdGUgPCAxKSB7ICRjcmVhdGVkYXRlID0gdGltZSgpOyB9CiAgICAKICAgICRxICAgICAgICA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuCiAgICAgICAgICAgICAgICAnbW9kdWxlX21hbXNfdXNlcnMgKHVzZXJuYW1lLHBhc3N3b3JkLGNyZWF0ZWRhdGUsZXhwaXJlcyxub25zdGQsc2FsdCkgVkFMVUVTICg/LD8sPyw/LD8sPyknOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKAogICAgICAkcSwKICAgICAgWwogICAgICAgICRuYW1lLCAnICcsCiAgICAgICAgdHJpbSgkZGItPkRiVGltZVN0YW1wKCRjcmVhdGVkYXRlKSwgIiciKSwKICAgICAgICB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJGV4cGlyZXMpLCAiJyIpLAogICAgICAgIChib29sKSRub25zdGQsICRzYWx0CiAgICAgIF0KICAgICk7CiAgICAKICAgIGlmKCEkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgICR1aWQgPSAkZGItPkluc2VydF9JRCgpOwogICAgCiAgICAvLyBzZXQgdGhlIHBhc3N3b3JkCiAgICAkcmVzID0gJHRoaXMtPlNldFVzZXJQYXNzd29yZCgkdWlkLCAkcGFzc3dvcmQpOwogICAgCiAgICBpZighJHJlc1swXSkgeyByZXR1cm4gJHJlczsgfQogICAgCiAgICAkdGhpcy0+X3VzZXJpZGJ5bmFtZSA9IFtdOwogICAgCiAgICByZXR1cm4gW1RSVUUsICR1aWRdOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRnaWQKICAgKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTmFtZSgkZ2lkKQogIHsKICAgICR0aGlzLT5fZ2V0X2dyb3VwaW5mbygpOwogICAgCiAgICBpZihpc19hcnJheSgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSkgJiYgaXNzZXQoJHRoaXMtPl9ncm91cGluZm9fY2FjaGVbJGdpZF0pKQogICAgewogICAgICByZXR1cm4gKHN0cmluZykkdGhpcy0+X2dyb3VwaW5mb19jYWNoZVskZ2lkXVsnZ3JvdXBuYW1lJ107CiAgICB9CiAgICAKICAgIHJldHVybiAnJzsKICB9CiAgCiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkZ2lkCiAgICoKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cERlc2MoJGdpZCkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpICYmIGlzc2V0KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdKSkKICAgIHsKICAgICAgcmV0dXJuIChzdHJpbmcpICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdWydncm91cGRlc2MnXTsKICAgIH0KICAgIAogICAgcmV0dXJuICcnOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRpZAogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cEZ1bGwoJGlkKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgdHJ5CiAgICB7CiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAKICAgICAgLy8gZGVsZXRlIGFsbCBwcm9wZXJ0eSByZWxhdGlvbnMgZnJvbSB0aGlzIGdyb3VwCiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBXSEVSRSBncm91cF9pZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskaWRdKTsKICAgICAgCiAgICAgIC8vIGRlbGV0ZSBhbGwgaW5kaWNhdGlvbiB0aGF0IGFueWJvZHkgaXMgYSBtZW1iZXIKICAgICAgLy8gb2YgdGhpcyBncm91cAogICAgICAkcSA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIGdyb3VwaWQgPSA/JzsKICAgICAgJGRiLT5FeGVjdXRlKCRxLCBbJGlkXSk7CiAgICAgIAogICAgICAvLyBhbmQgdGhlbiBkZWxldGUgdGhlIGdyb3VwCiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyBXSEVSRSBpZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskaWRdKTsKICAgICAgCiAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgJHRoaXMtPl9ncm91cGluZm9fY2FjaGUgPSBOVUxMOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJGlkLCAkbW9kLT5HZXROYW1lKCksICdQcm9ibGVtIERlbGV0aW5nIEdyb3VwOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gW0ZBTFNFLCAkZS0+Z2V0TWVzc2FnZSgpXTsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBMaXN0KCkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgICRyZXN1bHQgPSBbXTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpKQogICAgewogICAgICBmb3JlYWNoKCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlIGFzICRnaWQgPT4gJGluZm8pCiAgICAgIHsKICAgICAgICAkcmVzdWx0WyRpbmZvWydncm91cG5hbWUnXV0gPSAoaW50KSRnaWQ7CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSBib29sICR3aXRoX2NvdW50CiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdEZ1bGwoJHdpdGhfY291bnQgPSBGQUxTRSkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oJHdpdGhfY291bnQpOwogICAgJHJlc3VsdCA9IFtdOwogICAgCiAgICBpZihpc19hcnJheSgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSkpCiAgICB7CiAgICAgICRyZXN1bHQgPSAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8qKgogICAqIG9sZCB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRncm91cG5hbWUKICAgKgogICAqIEByZXR1cm4gaW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwSUQoJGdyb3VwbmFtZSkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpKQogICAgewogICAgICBmb3JlYWNoKCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlIGFzICRnaWQgPT4gJGluZm8pCiAgICAgIHsKICAgICAgICBpZigkaW5mb1snZ3JvdXBuYW1lJ10gPT09ICRncm91cG5hbWUpIHsgcmV0dXJuIChpbnQpJGdpZDsgfQogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAtMTsKICB9CiAgCiAgLyoqCiAgICogUmV0dXJuIGEgbGlzdCBvZiBncm91cHMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZgogICAqCiAgICogQHBhcmFtIGludGVnZXIgVGhlIHVzZXIgaWRlbnRpZmllcgogICAqCiAgICogQHJldHVybiBzdHJpbmcgQSBjb21tYSBkZWxpbWl0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgbWVtYmVyIGdyb3VwIG5hbWVzLiAgb3IgJ25vbmUnCiAgICovCiAgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzKCR1c2VyaWQpCiAgewogICAgJGF1dGhfY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICBpZighJGF1dGhfY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRhdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUCkpCiAgICB7CiAgICAgIHJldHVybiAnbm9uZSc7CiAgICB9CiAgICAKICAgICRvdXQgPSAkYXV0aF9jb25zdW1lci0+Z2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkb3V0KSB8fCAwID09PSBjb3VudCgkb3V0KSkgeyByZXR1cm4gJ25vbmUnOyB9CiAgICAKICAgICRpbmZvID0gJHRoaXMtPl9nZXRfZ3JvdXBpbmZvKCk7CiAgICAkdG1wICA9IFtdOwogICAgCiAgICBmb3JlYWNoKCRvdXQgYXMgJG9uZSkKICAgIHsKICAgICAgaWYoaXNzZXQoJGluZm9bJG9uZV0pKQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJGluZm9bJG9uZV1bJ2dyb3VwbmFtZSddOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIHRoaXMgbWF5IGJlIGFscmVhZHkgZmFsc2UgYXQgdGhpcyBwb2ludCBzbyB0aGUgZm9sbG93aW5nIGxpbmUgbWF5IG5vdCBiZSBuZWVkZWQgKEpNKQogICAgLy8gaWYoMCA9PT0gY291bnQoJG91dCkpIHsgcmV0dXJuICdub25lJzsgfQogICAgCiAgICByZXR1cm4gaW1wbG9kZSgnLCcsICR0bXApOwogIH0KICAKICAvKioKICAgKiBvbGQgdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyKCRpZCkKICB7CiAgICAvKiogQHZhciBhcnJheSAkcmVzICovCiAgICAkcmVzID0gJHRoaXMtPkRlbGV0ZVVzZXJGdWxsKCRpZCk7CiAgICBpZigkcmVzWzBdKSB7IHJldHVybiBUUlVFOyB9CiAgICAKICAgIHJldHVybiBGQUxTRTsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqIEByZXR1cm4gYXJyYXl8aW50W118bWl4ZWR8dm9pZAogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBHZXREZmx0R3JvdXBzKCkKICB7CiAgICAkY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICBpZigkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9ERUZBVUxUR1JPVVBTKSkKICAgIHsKICAgICAgcmV0dXJuICRjb25zdW1lci0+Z2V0X2RlZmF1bHRfZ3JvdXBzKCk7CiAgICB9CiAgICAKICAgICRtYW1zICAgICAgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgJGRmbHRfZ3JvdXAgPSAkbWFtcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwogICAgCiAgICByZXR1cm4gWyhpbnQpJGRmbHRfZ3JvdXBdOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICogQHBhcmFtIGludCAkdWlkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFNldFBlcm1hbmVudENvb2tpZShpbnQgJHVpZCkKICB7CiAgICAkbWFtcyA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRuYW1lID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnKTsKICAgIAogICAgaWYoISRuYW1lKSB7IHJldHVybjsgfQogICAgCiAgICAkZGF0YSA9IFsndWlkJyA9PiAkdWlkLCAndGltZScgPT4gdGltZSgpXTsKICAgICRkYXRhID0gJHRoaXMtPmVuY29kZV91c2VyZGF0YSgkZGF0YSk7CiAgICBcY21zX2Nvb2tpZXM6OnNldCgkbmFtZSwgJGRhdGEsIHRpbWUoKSArIDYwICogMjQgKiAzNjAwKTsKICB9CiAgCiAgLyoqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gX2dldF9zYXZlZF9sb2dpbmRldGFpbHMoKQogIHsKICAgICRrZXkgICAgICAgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgJHNlc3Npb25pZCA9IHNlc3Npb25faWQoKTsKICAgIAogICAgaWYoISRzZXNzaW9uaWQpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgICRkYXRhICAgPSBbXTsKICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAKICAgIGlmKCFlbXB0eSgkX1NFU1NJT05bJGtleV0pKQogICAgewogICAgICAkZGF0YSA9IChhcnJheSkkdGhpcy0+ZGVjb2RlX3VzZXJkYXRhKCRfU0VTU0lPTlska2V5XSk7CiAgICB9CiAgICAKICAgIC8vIHNlZSBpZiB3ZSBjYW4gZ2V0IHRoZSBkYXRhIGZyb20gYSBzZXNzaW9uIGNvb2tpZQogICAgaWYoISRkYXRhICYmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLCAwKSAmJiAhZW1wdHkoXGNtc19jb29raWVzOjpleGlzdHMoJGtleSkpKQogICAgewogICAgICAkZGF0YSA9IChhcnJheSkkdGhpcy0+ZGVjb2RlX3VzZXJkYXRhKFxjbXNfY29va2llczo6Z2V0KCRrZXkpKTsKICAgIH0KICAgIAogICAgaWYoISRkYXRhKQogICAgewogICAgICAvLyBzZWUgaWYgd2UgY2FuIGdldCB0aGUgZGF0YSBmcm9tIGEgcGVybWFuZW50IGNvb2tpZS4KICAgICAgaWYoJycgIT09ICgkY24gPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdjb29raWVuYW1lJykpKQogICAgICB7CiAgICAgICAgLy8gdGhpcyBpcyByZW1lbWJlciBtZSBmdW5jdGlvbmFsaXR5LiBhcyBvcHBvc2VkIHRvIGEgc2Vzc2lvbiBjb29raWUuCiAgICAgICAgJHRtcCA9IFxjbXNfY29va2llczo6Z2V0KCRjbik7CiAgICAgICAgCiAgICAgICAgaWYoJHRtcCkKICAgICAgICB7CiAgICAgICAgICAkZGF0YSA9IChhcnJheSkkdGhpcy0+ZGVjb2RlX3VzZXJkYXRhKCR0bXApOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICBpZigkZGF0YSkgeyByZXR1cm4gJGRhdGE7IH0KICAgIAogICAgLy8gcmVhZCBsb2dnZWQgaW4gZGF0YSBmcm9tIGRhdGFiYXNlIGZvciB0aGlzIHNlc3Npb24uCiAgICAkZGIgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHNxbCAgPSAnU0VMRUNUIHVzZXJpZCBBUyB1aWQsbGFzdHVzZWQgQVMgdGltZSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIHNlc3Npb25pZCA9ID8nOwogICAgJGRhdGEgPSAkZGItPkdldFJvdygkc3FsLCBbJHNlc3Npb25pZF0pOwogICAgCiAgICBpZihpc19hcnJheSgkZGF0YSkgJiYgY291bnQoJGRhdGEpKSB7IHJldHVybiAkZGF0YTsgfQogICAgCiAgICByZXR1cm4gW107CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAqIEBwYXJhbSBib29sICAkZm9yY2UKICAgKgogICAqIEByZXR1cm4gdm9pZAogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gX3NldF9zYXZlZF9sb2dpbmRldGFpbHMoYXJyYXkgJGRhdGEsIGJvb2wgJGZvcmNlID0gRkFMU0UpCiAgewogICAgaWYoIWlzc2V0KCRkYXRhWyd1aWQnXSkgfHwgIWlzc2V0KCRkYXRhWyd0aW1lJ10pKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIGRhdGEgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgaWYoIWlzc2V0KCRkYXRhWydzZXNzaW9uaWQnXSkpCiAgICB7CiAgICAgICRkYXRhWydzZXNzaW9uaWQnXSA9IHNlc3Npb25faWQoKTsKICAgIH0KICAgIAogICAgLy8kdWlkICA9IChpbnQpJGRhdGFbJ3VpZCddOwogICAgJHRpbWUgPSAoaW50KSRkYXRhWyd0aW1lJ107CiAgICAKICAgIHN0YXRpYyAkX2RvbmUgPSBGQUxTRTsKICAgIAogICAgaWYoJF9kb25lKSB7IHJldHVybjsgfQogICAgCiAgICAkX2RvbmUgICAgICAgICAgPSBUUlVFOwogICAgJGtleSAgICAgICAgICAgID0gJHRoaXMtPmtlZXBhbGl2ZV9jb29raWUoKTsKICAgICRlbmNvZGVkICAgICAgICA9ICR0aGlzLT5lbmNvZGVfdXNlcmRhdGEoJGRhdGEpOwogICAgJF9TRVNTSU9OWyRrZXldID0gJGVuY29kZWQ7CiAgICAKICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAKICAgIGlmKCRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLCAwKSkKICAgIHsKICAgICAgLy8gdGhpcywgaWYgZW5hYmxlZCB3aWxsIGVzc2VudGlhbGx5IGtlZXAgdGhlIHVzZXIgbG9nZ2VkIGluLCBJRiBoZSBjb21lcyBpbiBvbmNlIGV2ZXJ5LCBzYXksIDI0aHJzCiAgICAgIFxjbXNfY29va2llczo6c2V0KCRrZXksICRlbmNvZGVkLCB0aW1lKCkgKyAyNCAqIDM2MDApOyAvLyBleHBpcnkgdG8gMjQgaG91cnMuCiAgICB9CiAgICAKICAgIC8vIG5vdGU6IHdlIG5ldmVyIHRvdWNoIHRoZSBwZXJtYWNvb2tpZS4KICAgIAogICAgLy8gaGVyZSwgd2UgdG91Y2ggdGhlIHVzZXIgbG9naW4gZGF0YS4uLiBidXQgaW5mcmVxdWVudGx5LiAgIG11c3QgYmUgbW9yZSBmcmVxdWVudCB0aGFuIHRoZSBleHBpcmV1c2VycyBpbnRlcnZhbCB0aG91Z2guCiAgICBpZihpc3NldCgkX1NFU1NJT05bX19NRVRIT0RfX10pKQogICAgewogICAgICAkdGltZSA9IG1heCgkX1NFU1NJT05bX19NRVRIT0RfX10sICR0aW1lKTsKICAgIH0KICAgIAogICAgJGV4cGlyZV9pbnRlcnZhbCA9IChpbnQpJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZXhwaXJldXNlcnNfaW50ZXJ2YWwnLCAxODApIC0gMTsKICAgIAogICAgaWYoJGZvcmNlIHx8ICR0aW1lIDwgdGltZSgpIC0gbWF4KDAsICRleHBpcmVfaW50ZXJ2YWwpKQogICAgewogICAgICAvLyB0b3VjaCB0aGUgbG9nZ2VkaW4gdGFibGUuCiAgICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2xvZ2dlZGluIFNFVCBsYXN0dXNlZCA9ID8gV0hFUkUgdXNlcmlkID0gPyBBTkQgc2Vzc2lvbmlkID0gPyc7CiAgICAgICRkYnIgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZGF0YVsndGltZSddLCAkZGF0YVsndWlkJ10sICRkYXRhWydzZXNzaW9uaWQnXV0pOwogICAgICAKICAgICAgaWYoICEkZGJyIHx8IDAgPT09ICRkYi0+QWZmZWN0ZWRfUm93cygpICkKICAgICAgewogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19sb2dnZWRpbiAoc2Vzc2lvbmlkLGxhc3R1c2VkLHVzZXJpZCkgVkFMVUVTICg/LD8sPyknOwogICAgICAgICRkYnIgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZGF0YVsnc2Vzc2lvbmlkJ10sICRkYXRhWyd0aW1lJ10sICRkYXRhWyd1aWQnXV0pOwogICAgICB9CiAgICAgIAogICAgICAkX1NFU1NJT05bX19NRVRIT0RfX10gPSB0aW1lKCk7CiAgICB9CiAgICAKICAgIHJldHVybjsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgJHVpZAogICAqIEBwYXJhbSBib29sICRzZXNzaW9uX29ubHkKICAgKi8KICBwcml2YXRlIGZ1bmN0aW9uIF9jbGVhcl9sb2dpbmRldGFpbHMoJHVpZCwgJHNlc3Npb25fb25seSA9IEZBTFNFKQogIHsKICAgIC8vIHdlIG51a2Ugc29tZSBjb29raWVzLCBhbmQgbnVrZSBzb21lIHNlc3Npb24gdmFyaWFibGVzLgogICAgLy8gYW5kIGRlbGV0ZSB0aGUgbG9nZ2VkaW4gZW50cnkgZnJvbSB0aGUgZGF0YWJhc2UKICAgICRrZXkgICAgICAgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgJHNlc3Npb25pZCA9IHNlc3Npb25faWQoKTsKICAgIAogICAgaWYoISRzZXNzaW9uaWQpIHsgcmV0dXJuOyB9CiAgICAKICAgIGZvcmVhY2goJF9TRVNTSU9OIGFzICRrID0+ICR2KQogICAgewogICAgICBpZihzdGFydHN3aXRoKCRrLCAka2V5KSkgeyB1bnNldCgkX1NFU1NJT05bJGtdKTsgfQogICAgfQogICAgCiAgICBpZihUUlVFID09PSAoYm9vbCkkc2Vzc2lvbl9vbmx5KSB7IHJldHVybjsgfQogICAgCiAgICBcY21zX2Nvb2tpZXM6OmVyYXNlKCRrZXkpOwogICAgJG1hbXMgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAKICAgIGlmKCcnICE9PSAoJGNuID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnKSkpCiAgICB7CiAgICAgIFxjbXNfY29va2llczo6ZXJhc2UoJGNuKTsKICAgIH0KICAgIAogICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2xvZ2dlZGluIFdIRVJFIHVzZXJpZCA9ID8nOwogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBbJHVpZF0pOwogIH0KICAKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSUserManipulator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKYWJzdHJhY3QgY2xhc3MgTUFNU1VzZXJNYW5pcHVsYXRvcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRfZXhwaXJlX25vdGlmaWVyX2NhbGxiYWNrOwoKICAgIC8vCiAgICAvLyBJbnRlcm5hbHMKICAgIC8vCgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBcTUFNUyAkdGhlX21vZHVsZSApCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICR0aGVfbW9kdWxlOwogICAgfQoKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gR2V0RGIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kLT5HZXREYigpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBHZXRNb2R1bGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRFeHBpcmVOb3RpZmllcigkY2FsbGJhY2spCiAgICB7CiAgICAgICAgaWYoIGlzX2NhbGxhYmxlKCRjYWxsYmFjaykgKSAkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjayA9ICRjYWxsYmFjazsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gTm90aWZ5RXhwaXJlZFVzZXIoJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkcGFyYW1zKSAmJiAoaXNfc3RyaW5nKCRwYXJhbXMpIHx8IGlzX2ludCgkcGFyYW1zKSkgJiYgJycgIT09ICRwYXJhbXMpCiAgICAgICAgewogICAgICAgICAgJHBhcmFtcyA9IFskcGFyYW1zXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIGlmKCAkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjayApCiAgICAgIHsKICAgICAgICBjYWxsX3VzZXJfZnVuY19hcnJheSgkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjaywgJHBhcmFtcyk7CiAgICAgIH0KICAgIH0KCiAgICAvLwogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8KCiAgICBwdWJsaWMgZnVuY3Rpb24gQWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSwgJHNvcnRrZXksICRsb3N0dW4sICR2YWwgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICAvLyEgQWRkIGEgc2luZ2xlIHByb3BlcnR5IGRlZmluaXRpb24KICAgIC8vISBccGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkKICAgIC8vISBccGFyYW0gcHJvbXB0IFRoZSBwcm9tcHQgdG8gZGlzcGxheSB0byB0aGUgdXNlcgogICAgLy8hICAgICAgIG5vdGUsIHRoaXMgd2lsbCBiZSBMYW5naWZpZWQKICAgIC8vISBccGFyYW0gdHlwZSAgVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5CiAgICAvLyEgICAgICAgMCA9IHRleHQsIDEgPSBjaGVja2JveCwgMiA9IGVtYWlsCiAgICAvLyEgXHBhcmFtIHJlcXVpcmVkIHdldGhlciBvciBub3QgdGhlIHByb3BlcnR5IGlzIHJlcXVpcmVkCiAgICAvLyEgXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogICAgLy8hICAgIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgY29udGFpbnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRQcm9wZXJ0eURlZm4oICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ05vdCBJbXBsZW1lbnRlZCddOwogICAgfQoKICAgIC8vISBBZGQgYSBuZXcgZ3JvdXAKICAgIC8vIQogICAgLy8hIEFkZHMgYSBuZXcgZ3JvdXAgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZSBhbmQgZGVzY3JpcHRpb24KICAgIC8vIQogICAgLy8hIFxwYXJhbSBuYW1lIFRoZSBuZXcgZ3JvdXAgbmFtZQogICAgLy8hIFxwYXJhbSBkZXNjcmlwdGlvbiB0aGUgZ3JvdXAgZGVzY3JpcHRpb24KICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGRlc2NyaXB0aW9uIGRlc2NyaWJpbmcgdGhlIHJldHVybiBzdGF0dXMKICAgIC8vISAgICAodHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBlcnJvcikuICBUaGUgc2Vjb25kIGVsZW1lbnQgKG9wdGlvbmFsKSBpcyBhbiBlcnJvciBzdHJpbmcgaW4gdGhlCiAgICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cCggJG5hbWUsICRkZXNjcmlwdGlvbiApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgLy8hIEFkZCBhIG5ldyB1c2VyCiAgICAvLyEKICAgIC8vISBBZGQgdGhlIHNwZWNpZmllZCB1c2VyIHRvIHRoZSBkYXRhYmFzZQogICAgLy8hCiAgICAvLyEgXHBhcmFtIG5hbWUgVGhlIGRlc2lyZWQgdXNlcm5hbWUKICAgIC8vISBccGFyYW0gcGFzc3dvcmQgVGhlIGRlc2lyZWQgcGFzc3dvcmQgKHVuZW5jcnlwdGVkKQogICAgLy8hIFxwYXJhbSBleHBpcmVzIFRoZSBleHBpcnkgZGF0ZQogICAgLy8hIFxyZXR1cm4gYW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgZGVzY3JpcHRpb24gZGVzY3JpYmluZyB0aGUgcmV0dXJuIHN0YXR1cwogICAgLy8hICAgICh0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGVycm9yKS4gIFRoZSBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGlzIGFuIGVycm9yIHN0cmluZyBpbiB0aGUKICAgIC8vISAgICBldmVudCBvZiBhbiBlcnJvciwgb3IgdGhlIHVzZXJpZCBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEFkZFVzZXIoICRuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzICkKICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAnRnVuY3Rpb24gbm90IGRlZmluZWQnXTsKICAgIH0KCiAgICAvLyEgQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIHBlcm1pc3Npb24KICAgIC8vISBBc3NpZ24gdGhlIHVzZXIgc3BlY2lmaWVkIChieSBpZCkgdG8gdGhlIGdyb3VwIHNwZWNpZmllZCAoYnkgaWQpCiAgICAvLyEKICAgIC8vIVxwYXJhbSAgdWlkICBUaGUgdXNlcmlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgICAvLyFccGFyYW0gIGdpZCAgVGhlIGdyb3VwIGlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgICAvLyFccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDaGVjayBpZiB0aGUgZ3JvdXAgc3BlY2lmaWVkIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbgogICAgcHVibGljIGZ1bmN0aW9uIENoZWNrR3JvdXBQZXJtaXNzaW9uKCAkZ2lkLCAkcGVybSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDaGVjayBpZiB0aGUgdXNlciBoYXMgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbiggJHBlcm0gKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbkJ5VWlkKCAkdWlkLCAkcGVybSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBDb3VudFRlbXBDb2RlUmVjb3JkcygpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIGFsbCBvZiB0aGUgY3VycmVudCB1c2VycyBwcm9wZXJ0aWVzCiAgICAvLyEKICAgIC8vISBccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgQWxsIHByb3BlcnRpZXMgZm9yIGEgc3BlY2lmaWVkIHVzZXIgaWQKICAgIC8vIQogICAgLy8hIFxwYXJhbSB1c2VyaWQKICAgIC8vISBccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGdyb3VwCiAgICAvLyEKICAgIC8vISBEZWxldGUgdGhlIGdyb3VwIHJlY29yZCBmb3IgdGhlIG1hdGNoaW5kIGlkCiAgICAvLyEKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGRlc2NyaXB0aW9uIGRlc2NyaWJpbmcgdGhlIHJldHVybiBzdGF0dXMKICAgIC8vISAgICAodHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBlcnJvcikuICBUaGUgc2Vjb25kIGVsZW1lbnQgKG9wdGlvbmFsKSBpcyBhbiBlcnJvciBzdHJpbmcgaW4gdGhlCiAgICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cEZ1bGwoICRpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUdyb3VwUHJvcGVydHlSZWxhdGlvbiggJGdycGlkLCAkcHJvcG5hbWUgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHlEZWZuKCAkbmFtZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zICh1c2Ugd2l0aCBjYXV0aW9uKQogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbnMoKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdOb3QgSW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCBpZAogICAgLy8hIFxub3RlIFRoaXMgaXMgYSBkZXByZWNhdGVkIGZ1bmN0aW9uIGFzIGl0IHJlbGllcyBvbiB0aGUgdXNlcmlkIGJlaW5nIHNldCBpbiB0aGUgX0dFVAogICAgLy8hIHZhcmlhYmxlLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlcigkaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDb21wbGV0ZWx5IGRlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc3VwcGxpZWQgdXNlciBpZAogICAgLy8hCiAgICAvLyFUaGlzIG1ldGhvZCBjb21wbGV0ZWx5IGRlbGV0ZXMgYW55dGhpbmcgZnJvbSB0aGUgZGF0YWJhc2UgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWVkIHVzZXIgaWQuCiAgICAvLyFzcGVjaWZpY2FsbHksIGdyb3VwIGFzc29jaWF0aW9ucywgcHJvcGVydGllcywgYW5kIHRoZSB1c2VyIHJlY29yZCBpdHNlbGYuCiAgICAvLyEKICAgIC8vIVxwYXJhbSB1aWQgdGhlIHVzZXJpZCB0byBkZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8KICAgIC8vIVxyZXR1cm4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUuCiAgICAvLyEgICBpZiB0aGUgZmlyc3QgZWxlbWVudCBpcyBmYWxzZSwgdGhlbiB0aGUgc2Vjb25kIGVsZW1lbnQgd2lsbCBjb250YWluIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyRnVsbCggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ05vIGZ1bmN0aW9uIGRlZmluZWQnXTsKICAgIH0KCgogICAgLy8hIERlbGV0ZSBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB1c2VyCiAgICAvLyEKICAgIC8vISBSZW1vdmUgYSBwcm9wZXJ0eSBmcm9tIHRoZSBkYXRhYmFzZSBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUKICAgIC8vISBccGFyYW0gYWxsICAgT3B0aW9uYWxseSBkZWxldGUgYWxsIHByb3BlcnRpZXMgZm9yIHRoaXMgdXNlcgogICAgLy8hIFxyZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3Rod2VyaXNlbgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5KCR0aXRsZSwkYWxsPWZhbHNlKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIGEgcHJvcGVydHkgZm9yIGEgc3BlY2lmaWVkIHVzZXIKICAgIC8vIQogICAgLy8hXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUKICAgIC8vIVxwYXJhbSB1c2VyaWQgVGhlIGlkIHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZm9yCiAgICAvLyFccGFyYW0gYWxsIChvcHRpb25hbCkgRGVsZXRlIGFsbCBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXJpZC4KICAgIC8vIVxyZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCRhbGw9ZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qIGV4cGlyeWNvZGUgaXMgYSBzdHJ0b3RpbWUgc3RyaW5nICovCiAgICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVGVtcENvZGVzKCRleHBpcnljb2RlKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgRXhwaXJlIGFueSBhbmQgYWxsIHVzZXJzIHRoYXQgaGF2ZSBiZWVuIGF3YXkgZm9yIHRvbyBsb25nCiAgICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVXNlcnMoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCBpZAogICAgLy8hCiAgICAvLyFccmV0dXJuIEVtYWlsIGFkZHJlc3MsIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRFbWFpbCgkdXNlcmlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2VuZXJhdGUgYSByYW5kb20gKGJ1dCBub3QgdXNlZCkgdXNlcm5hbWUKICAgIC8vIQogICAgLy8hXCByZXR1cm4gdXNlcm5hbWUsIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCAkcHJlZml4ID0gJ3VzZXInICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCB0aGUgZ3JvdXBpZCBnaXZlbiBhIGdyb3VwIG5hbWUKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gZ3JvdXBpZCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBncm91cAogICAgLy8hCiAgICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZAogICAgLy8hIGdyb3VwIGlkCiAgICAvLyEgICAgaWQgPT4gVGhlIHJlcXVlc3RlZCBncm91cCBpZAogICAgLy8hICAgIGdyb3VwbmFtZSA9PiBUaGUgbmFtZSBvZiB0aGUgZ3JvdXAKICAgIC8vISAgICBncm91cGRlc2MgPT4gVGhlIGdyb3VwIGRlc2NyaXB0aW9uCiAgICAvLyEKICAgIC8vISBccGFyYW0gZ2lkIFRoZSBncm91cCBpZAogICAgLy8hIFxwYXJhbSBhc3NvY2lhdGl2ZSBhcnJheSwgb3IgYXJyYXkgd2l0aCBmaXJzdCBlbGVtZW50IG9mIGZhbHNlLCBzZWNvbmQgZWxlbWVudCBjb250YWlucyBlcnJvciBtZXNzYWdlCiAgICAvLyEgXHJldHVybiBhbiBhc3NvY2lhdGl2ZSBhcnJheSB3aXRoIGdyb3VwIGluZm8sIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cEluZm8oICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IGEgbGlzdCBvZiBhbGwgb2YgdGhlIGdyb3VwcywgYW5kIHRoZWlyIGlkJ3MKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBncm91cCBuYW1lcyBhcyBrZXlzLCBhbmQgaWQncyBhcyB2YWx1ZXMKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIC8vISBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgZ3JvdXBzCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGFycmF5IG9mIGdyb3VwaW5mbyBhc3NvY2lhdGlvbnMsIHJlcHJlc2VudGluZyBhbGwgb2YgdGhlCiAgICAvLyEgZ3JvdXBzIGluIHRoZSB0YWJsZS4KICAgIC8vIQogICAgLy8hIFxyZXR1cm5zIGFuIGFycmF5IG9mIGdyb3VwaW5mbyBhc3NvY2lhdGlvbnMKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdEZ1bGwoKQogICAgewogICAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICAvLyEgR2V0IHRoZSBncm91cCBuYW1lIGdpdmVuIGEgZ3JvdXAgaWQKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gZ3JvdXAgbmFtZSwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTmFtZSgkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCB0aGUgZ3JvdXAgZGVzY3JpcHRpb24gZ2l2ZW4gYSBncm91cCBpZAogICAgLy8hCiAgICAvLyEgXHJldHVybiBncm91cCBkZXNjcmlwdGlvbiwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwRGVzYygkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncnBpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCddOwogICAgfQoKICAgIC8vISBHZXQgYSBsaXN0IG9mIHRoZSBncm91cHMgdGhhdCB0aGUgc3BlY2lmaWVkIHVzZXIgYmVsb25ncyB0bwogICAgLy8hCiAgICAvLyEgUmV0dXJuIGEgc3RyaW5nIG9mIGNvbW1hIGRlbGltaXRlZCBncm91cCBuYW1lcywgY29ycmVzcG9uZGluZyB0byB0aGUKICAgIC8vISBncm91cHMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZgogICAgLy8hCiAgICAvLyEgXHJldHVybiBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIGdyb3VwIG5hbWVzLCBvciAibm9uZSIKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldE1lbWJlckdyb3VwcygkdXNlcmlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgUmV0dXJuIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgZ3JvdXBzIHRoYXQgdGhpcyB1c2VyIGJlbG9uZ3MgdG8KICAgIC8vIQogICAgLy8hIFJldHVybnMgYW4gYXJyYXkgb2YgZ3JvdXBpbmZvIHJlY29yZHMgY29ycmVzcG9uZGluZyB0byB0aGUgZ3JvdXBzIHRoYXQKICAgIC8vISB0aGlzIHVzZXIgaXMgYXNzb2NpYXRlZCB3aXRoLgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGZhbHNlIG9uIGVycm9yLCBvdGhlcndpc2UsIGFuIGFycmF5IG9mIGdyb3VwaW5mbyByZWNvcmRzLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBhIHNpbmdsZSBwcm9wZXJ0eSBkZWZpbml0aW9uIGJ5IG5hbWUKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm4oICRuYW1lICkKICAgIHsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLy8hIEdldCBhbiBhcnJheSBvZiBwcm9wZXJ0eSBkZWZpbml0aW9ucwogICAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5RGVmbnMoKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdOb3QgSW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucyggJHRpdGxlICkKICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAnRnVuY3Rpb24gbm90IGltcGxlbWVudGVkJ107CiAgICB9CgogICAgLy8hIEdldCB0aGUgdXNlcmlkIG9mIHRoZSB1c2VyIHdpdGggdGhlIG1hdGNoaW5nIG5hbWUKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gVXNlcklELCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlcklEKCR1c2VybmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIKICAgIC8vIQogICAgLy8hIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQKICAgIC8vISB1c2VyIGlkCiAgICAvLyEgICBpZCA9IHRoZSByZXF1ZXN0ZWQgdXNlciBpZAogICAgLy8hICAgdXNlcm5hbWUgPSB0aGUgdXNlcnMgbmFtZQogICAgLy8hICAgcGFzc3dvcmQgPSB0aGUgKGVuY3J5cHRlZCkgdXNlciBwYXNzd29yZAogICAgLy8hICAgZW1haWwgICAgPSB0aGUgdXNlcnMgZW1haWwgYWRkcmVzcwogICAgLy8hICAgZXhwaXJlcyAgPSB0aGUgdXNlcnMgZXhwaXJ5IGRhdGUKICAgIC8vISAgIHN0YXR1cyAgID0gdGhlIHVzZXJzIHN0YXR1cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlcmlkIHRvIGlucXVpcmUgYWJvdXQKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBjb250YWlucyByZXR1cm4gc3RhdHVzICh0cnVlL2ZhbHNlKSwgdGhlIHNlY29uZCBlbGVtZW50CiAgICAvLyEgICAgaXMgZWl0aGVyIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgYWJvdmUsIG9yIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySW5mbyggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgLy8hIFJldHVybiB0aGUgdXNlcm5hbWUgdGhhdCBtYWNoZXMgdGhlIHNwZWNpZmllZCB1c2VyIGlkCiAgICAvLyEKICAgIC8vIVxyZXR1cm4gVGhlIG1hdGNoaW5nIHVzZXJuYW1lLCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlck5hbWUoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBhIHNpbmdsZSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdXNlcgogICAgLy8hCiAgICAvLyEgR2V0IGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gcmV0dXJuCiAgICAvLyEgXHBhcmFtIGRlZmF1bHR2YWx1ZSBBIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QgZm9yIHRoYXQgdXNlcgogICAgLy8hIFxyZXR1cm4gVGhlIHByb3BlcnR5IHZhbHVlLCBvciBmYWxzZS4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eSgkdGl0bGUsJGRlZmF1bHR2YWx1ZT1mYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBwcm9wZXJ0eSBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2VyIGlkCiAgICAvLyEKICAgIC8vISBccGFyYW0gdGl0bGUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBzZWFyY2hpbmcgZm9yCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIGZvciB3aG8ncyBwcm9wZXJ0eSB3ZSBhcmUgc2VhcmNoaW5nCiAgICAvLyEgXHBhcmFtIGRlZmF1bHR2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoaXMgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QgZm9yIHRoaXMgdXNlcgogICAgLy8hIFxyZXR1cm4gVGhlIHByb3BlcnR5IHZhbHVlLCBvciBmYWxzZS4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsICRkZWZhdWx0dmFsdWU9ZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgYSBsaXN0IG9mIGFsbCBvZiB0aGUgdXNlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNwZWNpZmllZCBncm91cAogICAgLy8hIGluY2x1ZGluZyBhbGwgb2YgdGhlaXIgcHJvcGVydGllcwogICAgLy8hCiAgICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSAod2l0aCB1c2VyaWQgYXMgdGhlIGtleSkKICAgIC8vIQogICAgLy8hIFxwYXJhbSBncm91cGlkIHRoZSBkZXNpcmVkIGdyb3VwIGlkCiAgICAvLyEgXHJldHVybiBhbiBhcnJheSBvZiB1c2VyIGluZm9ybWF0aW9uIChzZWUgR2V0VXNlckluZm8pLCBvciBmYWxzZQogICAgLy8hIFxzYSBHZXRVc2VySW5mbwogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnVsbFVzZXJzSW5Hcm91cCgkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFJldHVybiBhbiBhcnJheSBvZiB0aGUgdXNlcidzIHByb3BlcnRpZXMKICAgIC8vIQogICAgLy8hIFJldHVybnMgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSB1c2VycyBwcm9wZXJ0aWVzCiAgICAvLyEKICAgIC8vISBccGFyYW0gdWlkIFRoZSB1aWQgdG8gdGVzdAogICAgLy8hIFxyZXR1cm4gZmFsc2Ugb24gZXJyb3IsIG90aGVyd2lzZSBhbiBhcnJheSBvZiBhc3NvY2lhdGlvbnMsIGVhY2ggYXNzb2NpYXRpb24KICAgIC8vISAgIGhhcyB0aGUgZm9sbG93aW5nIGtleXM6CiAgICAvLyEgICAgICBpZCAgICAgPSBUaGUgcHJvcGVydHkgaWQKICAgIC8vISAgICAgIHVzZXJpZCA9IFRoZSBtYXRjaGluZyB1c2VyIGlkCiAgICAvLyEgICAgICB0aXRsZSAgPSBUaGUgcHJvcGVydHkgdGl0bGUKICAgIC8vISAgICAgIGRhdGEgICA9IFRoZSBwcm9wZXJ0eSBkYXRhCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydGllcygkdWlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclRlbXBDb2RlKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAnRnVuY3Rpb24gbm90IGltcGxlbWVudGVkJ107CiAgICB9CgogICAgLy8hIEEgZnVuY3Rpb24gdGhhdCB0ZXN0cyB3ZXRoZXIgYSBncm91cCB3aXRoIHRoZSBzcGVmaWZpZWQgaWQgZXhpc3RzCiAgICAvLyEKICAgIC8vISBccGFyYW0gZ2lkIFRoZSBkZXNpcmVkIGdyb3VwIGlkCiAgICAvLyEgXHJldHVybiBib29sZWFuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5SUQoICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgQSBwdWJsaWMgZnVuY3Rpb24gdGhhdCB0ZXN0cyB3ZXRoZXIgYSBncm91cCB3aXRoIHRoZSBuYW1lIGV4aXN0cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIGdpZCBUaGUgZGVzaXJlZCBncm91cCBuYW1lCiAgICAvLyEgXHJldHVybiBib29sZWFuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5TmFtZSggJG5hbWUgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXhwaXJ5RGF0ZSggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJc0FjY291bnRFeHBpcmVkKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvLyEgVGVzdCB3ZXRoZXIgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzIHBhc3NlcyB0aGUgcnVsZXMuCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCB3aWxsIHRlc3QgaWYgdGhlIGVtYWlsIGFkZHJlc3Mgc3VwcGxpZWQgbWF0Y2hlcyB0aGUKICAgIC8vISBzZXQgcnVsZXMuICBPcHRpb25hbGx5LCB0aGUgZW1haWwgYWRkcmVzcyBjYW4gYmUgdmFsaWRhdGVkIHZpYQogICAgLy8hIHNtdHAuCiAgICAvLyEKICAgIC8vISBccGFyYW0gIGVtYWlsIFRoZSBhZGRyZXNzIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgaW5kaWN1YXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUKICAgIC8vISAgICB0aGUgc2Vjb25kIGVsZW1lbnQgaXMgdGhlIGVycm9yIG1lc3NhZ2UsIGlmIGFuIGVycm9yIG9jY3VycmVkCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkRW1haWxBZGRyZXNzKCAkZW1haWwgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIC8vISBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIHN1cHBsaWVkIHBhc3N3b3JkCiAgICAvLyEKICAgIC8vIVxwYXJhbSAgcGFzc3dvcmQgVGhlIHBhc3N3b3JkIHRvIHRlc3QuCiAgICAvLyFccmV0dXJuIHRydWUgaWYgdGhlIHBhc3N3b3JkIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCggJHBhc3N3b3JkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIENoZWNrIHdldGhlciB0aGUgdXNlcm5hbWUgc3VwcGxpZWQgcGFzc2VzIHRoZSBydWxlcwogICAgLy8hCiAgICAvLyFccGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lIHRvIGJlIHRlc3RlZAogICAgLy8hXHJldHVybiBib29sZWFuIHRydWUvZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSggJHVzZXJuYW1lICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFRlc3RzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBsb2dnZWQgaW4gb3Igbm90LgogICAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPkxvZ2dlZEluSWQoKT09PSBGQUxTRSkgeyByZXR1cm4gRkFMU0U7IH0KICAgICAgICBlbHNlIHsgcmV0dXJuIFRSVUU7IH0KICAgIH0KCiAgICAvLyEgUmV0dXJuIHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBjdXJyZW50IHVzZXIKICAgIC8vIQogICAgLy8hIFxyZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgICAvLyEgICBpZiBub29uZSBpcyBsb2dnZWQgaW4sIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbkVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLy8hIFJldHVybiB0aGUgdXNlcmlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbklkKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFJldHVybiB0aGUgdXNlcm5hbWUgb2YgdGhlIGN1cnJlbnQgdXNlcgogICAgLy8hCiAgICAvLyEgXHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB1c2VybmFtZSBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgICAvLyEgICBpZiBub29uZSBpcyBsb2dnZWQgaW4sIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbk5hbWUoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTG9naW4oICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZ3JvdXBzID0gJycsICRtZDVwdyA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAkZm9yY2VfbG9nb3V0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCddOwogICAgfQoKCiAgICAvLyEgTG9nb3V0IHRoZSBjdXJyZW50IHVzZXIKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXQoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgVGVzdCB3ZXRoZXIgYW4gYXNzb2NpYXRpb24gZXhpc3RzIGJldHdlZW4gdGhlIHNwZWNpZmllZCB1c2VyIGFuZCBncm91cAogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccGFyYW0gZ3JvdXBpZCBUaGUgZ3JvdXBpZCB0byB0ZXN0CiAgICAvLyEgXHJldHVybiB0cnVlIGlmIGFuIGFzc29jaWF0aW9uIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBSZW1vdmUgdGhlIHNwZWNpZmllZCB1c2VyIGZyb20gdGhlIHNwZWNpZmllZCBncm91cAogICAgLy8hCiAgICAvLyFUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBtZW1iZXJzaGlwIG9mIHVzZXIgJHVpZCBmcm9tIGdyb3VwICRnaWQKICAgIC8vIQogICAgLy8hXHBhcmFtIHVpZAogICAgLy8hXHBhcmFtIGdpZAogICAgLy8hXHJldHVybiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgY29udGFpbnMgZXhpdCBzdGF0dXMgKGJvb2xlYW4pLCB0aGUgc2Vjb25kIGVsZW1lbnQKICAgIC8vISAgIChvcHRpb25hbCkgcmV0dXJucyBhbiBlcnJvciBtZXNzYWdlLCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoICR1aWQsICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyVGVtcENvZGUoICR1aWQgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgQSBtZXRob2QgdG8gbW9kaWZ5IGFuIGV4aXN0aW5nIGdyb3VwCiAgICAvLyEKICAgIC8vIVxwYXJhbSBnaWQgQW4gZXhpc3RpbmcgZ3JvdXAgaWQKICAgIC8vIVxwYXJhbSBuYW1lIFRoZSBuZXcgZ3JvdXAgbmFtZQogICAgLy8hXHBhcmFtIGRlc2MgVGhlIG5ldyBncm91cCBkZXNjcmlwdGlvbgogICAgLy8hXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogICAgLy8hICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0R3JvdXAoICRnaWQsICRuYW1lLCAkZGVzYyApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFByb3BlcnR5RGVmbiggJG5hbWUsICRuZXduYW1lLCAkcHJvbXB0LCAkbGVuZ3RoLCAkdHlwZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBNb2RpZnkgYW4gZXhpc3RpbmcgZ3JvdXAKICAgIC8vIQogICAgLy8hIFxwYXJhbSB1aWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyB1c2VyCiAgICAvLyEgXHBhcmFtIHVzZXJuYW1lIFRoZSBuZXcgdXNlciBuYW1lCiAgICAvLyEgXHBhcmFtIGVtYWlsIFRoZSBuZXcgZW1haWwgYWRkcmVzcwogICAgLy8hIFxwYXJhbSBwYXNzd29yZCBUaGUgbmV3ICh1bmVuY3J5cHRlZCkgcGFzc3dvcmQKICAgIC8vISBccGFyYW0gZXhwaXJlcyBUaGUgbmV3IGV4cGlyeSBkYXRlCiAgICAvLyEgXHBhcmFtIHN0YXR1cyB0aGUgbmV3IHN0YXR1cwogICAgLy8hIFxyZXR1cm4gQW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgYm9vbGVhbiB3aGljaCBpbmRpY2F0ZXMgc3VjY2VzcyBvciBmYWlsdXJlLCB0aGUKICAgIC8vISAgICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlciggJHVpZCwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzID0gZmFsc2UgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIC8vISBTZXQgdGhlIHVzZXIncyBncm91cCBtZW1iZXJzaGlwcyBhYnNvbHV0ZWx5CiAgICAvLyEKICAgIC8vIVRoaXMgbWV0aG9kIHJlbW92ZXMgYWxsIHByZXZpb3VzIGdyb3VwIGFzc29jaWF0aW9ucywgYW5kIHNldHMgbmV3IG9uZXMKICAgIC8vIXRvIG1hdGNoIHRob3NlIGluIHRoZSBncnBpZHMgYXJyYXkuCiAgICAvLyEKICAgIC8vIVxwYXJhbSB1aWQgVGhlIHVzZXIgaWQgdG8gZWRpdAogICAgLy8hXHBhcmFtIGdycGlkcyBBbiBhcnJheSBvZiB1c2VyIGlkcyB0byBhc3NvY2lhdGUgd2l0aAogICAgLy8hXHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJHcm91cHMoICR1aWQsICRncnBpZHMgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCAkdWlkLCAkcGFzc3dvcmQgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIC8vISBTZXQgdGhlIHVzZXIncyBwcm9wZXJ0aWVzIGFic29sdXRlbHkuCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCBkZWxldGVzIGFueSBleGlzdGluZyB1c2VyIHByb3BlcnRpZXMgYW5kIHNldHMgdGhlbSBhY2NvcmRpbmcgdG8gdGhlIHByb3BlcnRpZXMKICAgIC8vISBzdXBwbGllZC4KICAgIC8vIQogICAgLy8hIFxwYXJhbSB1aWQgVGhlIHVzZXIgaWQgdG8gYmUgZWRpdGVkCiAgICAvLyEgXHBhcmFtIHByb3BzIEFuIGFycmF5IG9mIEtleT1WYWx1ZSBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgdGhlIHVzZXIgcHJvcGVydGllcy4KICAgIC8vISBccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydGllcyggJHVpZCwgJHByb3BzICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFNldCBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB1c2VyCiAgICAvLyEKICAgIC8vISBTZXRzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgIC8vIQogICAgLy8hIFxwYXJhbSB0aXRsZSBUaGUgcHJvcGVydHkgbmFtZQogICAgLy8hIFxwYXJhbSBkYXRhICBUaGUgcHJvcGVydHkgdmFsdWUKICAgIC8vISBccmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5KCR0aXRsZSwkZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgoKICAgIC8vISBTZXQgYSBwcm9wZXJ0eSBmb3IgdGhlIHByb3ZpZGVkIHVzZXJpZAogICAgLy8hCiAgICAvLyEgU2V0cyBhIHByb3BlcnR5IGV4Y2x1c2l2ZWx5IGZvciBhIGNlcnRhaW4gdXNlcgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBwcm9wZXJ0eSBuYW1lCiAgICAvLyEgXHBhcmFtIGRhdGEgIFRoZSBwcm9wZXJ0eSB2YWx1ZQogICAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIGRlc2lyZWQgdXNlciBpZAogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJGRhdGEsJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJUZW1wQ29kZSggJHVpZCwgJGNvZGUgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgVGVzdCBpZiB0aGUgdXNlciBpZCBpcyBhbHJlYWR5IHRha2VuCiAgICAvLyEKICAgIC8vISBUZXN0cyBpZiBhIHVzZXIgYnkgdGhhdCBpZCBhbHJlYWR5IGV4aXN0cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGJvb2xlYW4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFVzZXJFeGlzdHNCeUlEKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vCgp9IC8vIGNsYXNzCj8+]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIENvbnRlbnQ7CnVzZSBjbXNfdXRpbHM7CgphYnN0cmFjdCBjbGFzcyBiYXNlX3Byb3RlY3RlZF9wYWdlIGV4dGVuZHMgQ29udGVudAp7CiAgICBwcm90ZWN0ZWQgJF9kYXRhOwogICAgY29uc3QgTUFNU19QUk9QTkFNRSA9ICdfX21hbXNfZGF0YV9fJzsKICAgIGNvbnN0IFRBQl9NQU1TID0gJ2NjX21hbXMnOwoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfZ2V0RGF0YSgpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2RhdGEpICkgewogICAgICAgICAgICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoc2VsZjo6TUFNU19QUk9QTkFNRSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YSA9IGFycmF5KCk7CiAgICAgICAgICAgIGlmKCAkdG1wICkgJHRoaXMtPl9kYXRhID0gdW5zZXJpYWxpemUoJHRtcCk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfc2V0RGF0YSgpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fZGF0YSkgJiYgY291bnQoJHRoaXMtPl9kYXRhKSApIHsKICAgICAgICAgICAgJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoc2VsZjo6TUFNU19QUk9QTkFNRSxzZXJpYWxpemUoJHRoaXMtPl9kYXRhKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZShzZWxmOjpNQU1TX1BST1BOQU1FLCcnKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9pc0F1dGhvcml6ZWQoKQogICAgewogICAgICAgIC8vIGRvIHdlIGhhdmUgYWNjZXNzIHRvIGl0PwogICAgICAgICR0aGlzLT5fZ2V0RGF0YSgpOwoKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICRtYW1zICkgewogICAgICAgICAgICAkdWlkID0gJG1hbXMtPkxvZ2dlZEluSWQoKTsKICAgICAgICAgICAgaWYoICR1aWQgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pIHx8IGNvdW50KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbm8gbWVtYmVyIGdyb3VwcyBzZWxlY3RlZCwgYnV0IHN0aWxsIGxvZ2dlZCBpbiwgd2UgY2FuIGRpc3BsYXkgdGhpcy4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIGdldCBtZW1iZXIgZ3JvdXBzIGFuZCBkbyBhIGNyb3NzIHJlZmVyZW5jZS4KICAgICAgICAgICAgICAgICAgICAkZ3JvdXBzID0gJG1hbXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJGdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICAkbWVtYmVyZ3JvdXBzID0gXHh0X2FycmF5OjpleHRyYWN0X2ZpZWxkKCRncm91cHMsJ2dyb3VwaWQnKTsKICAgICAgICAgICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGluX2FycmF5KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ11bJGldLCRtZW1iZXJncm91cHMpICkgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gVHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdtYW1zX3Byb3RlY3RlZF9wYWdlJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZyhnZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kaWZpZWREYXRlKCkKICAgIHsKICAgICAgICAvLyBvbiBmcm9udGVuZCByZXF1ZXN0cyB0aGlzIHdpbGwgZm9yY2UgdGhlIHRlbXBsYXRlIHRvIGJlIHJlY29tcGlsZWQKICAgICAgICAvLyBhbmQgdGhlcmVmb3JlIGV2YWx1YXRpb24gdG8gYmUgZG9uZSBmb3IgZWFjaCByZXF1ZXN0LgogICAgICAgIGlmKCBjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSByZXR1cm4gdGltZSgpOwogICAgICAgIHJldHVybiBwYXJlbnQ6OkdldE1vZGlmaWVkRGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2NhY2hhYmxlJyxmYWxzZSk7CiAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS45OCcpIDwgMCApIHsKICAgICAgICAgICAgJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5BZGRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxLHNlbGY6OlRBQl9NQU1TKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGVybWl0dGVkKCkKICAgIHsKICAgICAgICAkciA9ICR0aGlzLT5faXNBdXRob3JpemVkKCk7CiAgICAgICAgaWYoICEkciApIHsKICAgICAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICAgICBpZiggXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSAmJiAkbWFtcyApICRtYW1zLT5TZXRQb3N0TG9naW5VcmwoXHh0X3VybDo6Y3VycmVudF91cmwoKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcjsKICAgIH0KCiAgICAvLyBDTVNNUyAxLjExLnggYW5kIHByZXZpb3VzIG9ubHkKICAgIHB1YmxpYyBmdW5jdGlvbiBUYWJOYW1lcygpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6VGFiTmFtZXMoKTsKICAgICAgICBpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICAkcmVzW10gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLy8gQ01TTVMgMS4xMS54IGFuZCBwcmV2aW91cyBvbmx5CiAgICBwdWJsaWMgZnVuY3Rpb24gRWRpdEFzQXJyYXkoJGFkZGluZyA9IGZhbHNlLCAkdGFiID0gMCwgJHNob3dhZG1pbiA9IGZhbHNlKQogICAgewogICAgICAgICRuYW1lcyA9ICR0aGlzLT5UYWJOYW1lcygpOwogICAgICAgICRzdHIgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICBpZiggIWlzc2V0KCRuYW1lc1skdGFiXSkgfHwgJG5hbWVzWyR0YWJdICE9ICRzdHIgKSByZXR1cm4gcGFyZW50OjpFZGl0QXNBcnJheSgkYWRkaW5nLCR0YWIsJHNob3dhZG1pbik7CgogICAgICAgICRyZXQgPSBhcnJheSgpOwogICAgICAgIC8vIHRoZSBwZXJtaXNzaW9ucyB0YWIuCiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICAgICAkZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkbWFtcy0+R2V0R3JvdXBMaXN0KCkpOwoKICAgICAgICAkdGhpcy0+X2dldERhdGEoKTsKICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgewogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsJG1hbXMtPkdldFByZWZlcmVuY2UoJ3BhZ2V0eXBlX2dyb3VwcycpKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0bXApICYmIGNvdW50KCR0bXApICkgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICR0bXA7CiAgICAgICAgfQogICAgICAgICRzaXplID0gbWluKGNvdW50KCRncm91cGxpc3QpLDEwKTsKICAgICAgICAkdG1wID0gYXJyYXkoJG1hbXMtPkxhbmcoJ2dyb3VwcycpLic6Jyk7CiAgICAgICAgJG9wdCA9ICc8c2VsZWN0IG5hbWU9Il9fbWFtc19ncm91cHNfX1tdIiBtdWx0aXBsZT0ibXVsdGlwbGUiIHNpemU9IicuJHNpemUuJyI+JzsKICAgICAgICBmb3JlYWNoKCAkZ3JvdXBsaXN0IGFzICRnaWQgPT4gJGduYW1lICkgewogICAgICAgICAgICAkc2VsZWN0ZWQgPSAnJzsKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICYmIGluX2FycmF5KCRnaWQsJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSAkc2VsZWN0ZWQ9J3NlbGVjdGVkPSJzZWxlY3RlZCIgJzsKICAgICAgICAgICAgJG9wdCAuPSAnPG9wdGlvbiAnLiRzZWxlY3RlZC4ndmFsdWU9IicuJGdpZC4nIj4nLiRnbmFtZS4nPC9vcHRpb24+JzsKICAgICAgICB9CiAgICAgICAgJG9wdCAuPSAnPC9zZWxlY3Q+PGJyLz4nLiRtYW1zLT5MYW5nKCdpbmZvX2NvbnRlbnRwYWdlX2dyb3VwbGlzdCcpOwogICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgJHJldFtdID0gJHRtcDsKCiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgLy8gQ01TTVMgMi4wCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VGFiTmFtZXMoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OkdldFRhYk5hbWVzKCk7CiAgICAgICAgaWYoICFjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwnTWFuYWdlIEFsbCBDb250ZW50JykgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkb3V0W3NlbGY6OlRBQl9NQU1TXSkgKSB1bnNldCgkb3V0W3NlbGY6OlRBQl9NQU1TXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiggaXNzZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pICkgewogICAgICAgICAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICAgICAgICAgICAkb3V0W3NlbGY6OlRBQl9NQU1TXSA9ICctLXZpZXdlcnMtLSc7CiAgICAgICAgICAgICAgICBpZiggJG1hbXMgKSAkb3V0W3NlbGY6OlRBQl9NQU1TXSA9ICRtYW1zLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2hvd0luTWVudSgpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6U2hvd0luTWVudSgpOwogICAgICAgIGlmKCAhJHJlcyApIHJldHVybiAkcmVzOwogICAgICAgIHJldHVybiAkdGhpcy0+X2lzQXV0aG9yaXplZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTYXZlKCkKICAgIHsKICAgICAgICAkdGhpcy0+X3NldERhdGEoKTsKICAgICAgICByZXR1cm4gcGFyZW50OjpTYXZlKCk7CiAgICB9CgogICAgLy8gcG9zc2libGUgZm9yIDEuMTEueCwgcmVxdWlyZWQgZm9yIENNU01TIDIuMAogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9kaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZykKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICEkbWFtcyApIHJldHVybjsKCiAgICAgICAgc3dpdGNoKCAkb25lICkgewogICAgICAgIGNhc2UgJ19fbWFtc19ncm91cHNfXyc6CiAgICAgICAgICAgICRyZXQgPSBhcnJheSgpOwogICAgICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICAgICAkZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkbWFtcy0+R2V0R3JvdXBMaXN0KCkpOwoKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsJG1hbXMtPkdldFByZWZlcmVuY2UoJ3BhZ2V0eXBlX2dyb3VwcycpKTsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaXplID0gbWluKGNvdW50KCRncm91cGxpc3QpLDEwKTsKICAgICAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICAgICAkb3B0ID0gJzxzZWxlY3QgbmFtZT0iX19tYW1zX2dyb3Vwc19fW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iJy4kc2l6ZS4nIj4nOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBsaXN0IGFzICRnaWQgPT4gJGduYW1lICkgewogICAgICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgJiYgaW5fYXJyYXkoJGdpZCwkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApICRzZWxlY3RlZD0nc2VsZWN0ZWQ9InNlbGVjdGVkIiAnOwogICAgICAgICAgICAgICAgJG9wdCAuPSAnPG9wdGlvbiAnLiRzZWxlY3RlZC4ndmFsdWU9IicuJGdpZC4nIj4nLiRnbmFtZS4nPC9vcHRpb24+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3B0IC49ICc8L3NlbGVjdD48YnIvPicuJG1hbXMtPkxhbmcoJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0Jyk7CiAgICAgICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgICAgIHJldHVybiAkdG1wOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiAgICBjbGFzcyBQcm90ZWN0ZWRQYWdlIGV4dGVuZHMgYmFzZV9wcm90ZWN0ZWRfcGFnZSB7CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyA9IGZhbHNlKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydfX21hbXNfZ3JvdXBzX18nXSkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2dyb3VwcyddID0gJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRDYWNoYWJsZShmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X2Rpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKTsKICAgICAgICB9CiAgICB9IC8vIGNsYXNzCg==]]></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+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3B0IC49ICc8L3NlbGVjdD48YnIvPicuJG1hbXMtPkxhbmcoJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0Jyk7CiAgICAgICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgICAgIHJldHVybiAkdG1wOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCi8vaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMi4yLjkwMCcpIDwgMSkgewogICAgY2xhc3MgUHJvdGVjdGVkU2VjdGlvbkhlYWQgZXh0ZW5kcyBCYXNlUHJvdGVjdGVkU2VjdGlvbkhlYWQgewogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBGaWxsUGFyYW1zKCRwYXJhbXMsJGVkaXRpbmcgPSBmYWxzZSkKICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5fZ2V0RGF0YSgpOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ10pICkgewogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGFyZW50OjpGaWxsUGFyYW1zKCRwYXJhbXMsJGVkaXRpbmcpOwogICAgICAgICAgICAkdGhpcy0+U2V0Q2FjaGFibGUoZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwgJGFkZGluZykKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6Ol9kaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfSAvLyBjbGFzcwovL30gZWxzZSB7Ci8vICAgIGNsYXNzIFByb3RlY3RlZFNlY3Rpb25IZWFkIGV4dGVuZHMgQmFzZVByb3RlY3RlZFNlY3Rpb25IZWFkIHsKLy8gICAgICAgIHB1YmxpYyBmdW5jdGlvbiBGaWxsUGFyYW1zKGFycmF5ICRwYXJhbXMsYm9vbCAkZWRpdGluZyA9IG51bGwpCi8vICAgICAgICB7Ci8vICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7Ci8vICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddKSApIHsKLy8gICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddOwovLyAgICAgICAgICAgIH0KLy8gICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApIHsKLy8gICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSk7Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgICAgIHBhcmVudDo6RmlsbFBhcmFtcygkcGFyYW1zLCRlZGl0aW5nKTsKLy8gICAgICAgICAgICAkdGhpcy0+U2V0Q2FjaGFibGUoZmFsc2UpOwovLyAgICAgICAgfQovLwovLyAgICAgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoc3RyaW5nICRvbmUsIGJvb2wgJGFkZGluZykKLy8gICAgICAgIHsKLy8gICAgICAgICAgICByZXR1cm4gcGFyZW50OjpfZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCRhZGRpbmcpOwovLyAgICAgICAgfQovLyAgICB9IC8vIGNsYXNzCi8vfQo=]]></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+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYW1zX3Byb3RlY3QoJHBhcmFtcywkY29udGVudCwmJHNtYXJ0eSwkcmVwZWF0KQogICAgewogICAgICAgIGlmKCAhJGNvbnRlbnQgKSByZXR1cm47CgogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICEkbWFtcyApIHJldHVybjsKICAgICAgICBpZiggISgkdWlkID0gJG1hbXMtPkxvZ2dlZEluSWQoKSkgKSByZXR1cm47CgogICAgICAgICRncm91cHMgPSBudWxsOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydncm91cCddKSApIHsKICAgICAgICAgICAgJGdyb3VwcyA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2dyb3VwJ10pOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICYkZ3JwICkgewogICAgICAgICAgICAgICAgJGdycCA9IHRyaW0oJGdycCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snZ3JvdXBzJ10pICkgewogICAgICAgICAgICAkZ3JvdXBzID0gZXhwbG9kZSgnLCcsJHBhcmFtc1snZ3JvdXBzJ10pOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICYkZ3JwICkgewogICAgICAgICAgICAgICAgJGdycCA9IHRyaW0oJGdycCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAhaXNfYXJyYXkoJGdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHsKICAgICAgICAgICAgLy8gZW1wdHkgZ3JvdXBzIGFycmF5IHNwZWNpZmllZC4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gY29udmVydCBncm91cCBuYW1lcyB0byBpZHMKICAgICAgICAkZ3JvdXBsaXN0ID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwogICAgICAgICRnaWRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG5hbWUpIHsKICAgICAgICAgICAgaWYoIChpbnQpJG5hbWUgPiAwICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9IChpbnQpJG5hbWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGdyb3VwbGlzdFskbmFtZV0pICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9ICRncm91cGxpc3RbJG5hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAhY291bnQoJGdpZHMpICkgcmV0dXJuOwoKICAgICAgICAkbWVtYmVyZ3JvdXBzID0gJG1hbXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJG1lbWJlcmdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHsKICAgICAgICAgICAgLy8gZ3JvdXBzIHNwZWNpZmllZCwgYnV0IHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncm91cHMuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEZJTkFMIHRlc3QsIGlmIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mIGFueSBvZiB0aGVzZSBncm91cHMsIG91dHB1dCB0aGUgY29udGVudC4KICAgICAgICBmb3IoJGkgPSAwLCAkaU1heCA9IGNvdW50KCRtZW1iZXJncm91cHMpOyAkaSA8ICRpTWF4OyAkaSsrICkgewogICAgICAgICAgICAkZ2lkID0gJG1lbWJlcmdyb3Vwc1skaV1bJ2dyb3VwaWQnXTsKICAgICAgICAgICAgaWYoIGluX2FycmF5KCRnaWQsJGdpZHMpICkgcmV0dXJuICRjb250ZW50OwogICAgICAgIH0KCiAgICAgICAgLy8gdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzLgogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_std_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19zdGRfY29uc3VtZXIgZXh0ZW5kcyBtYW1zX3B1cmVfY29uc3VtZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGlzX2F1dGhlbnRpY2F0ZWQoKQogICAgewogICAgICAgICRyZXMgPSAkdGhpcy0+Z2V0X3VuaXF1ZV9pZGVudGlmaWVyKCk7CiAgICAgICAgaWYoICRyZXMgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXBhYmlsaXRpZXMoKQogICAgewogICAgICAgICRyZXMgPSBhcnJheSgpOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfVVNFU1REQ0hBTkdFU0VUVElOR1M7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9DSEFOR0VQQVNTV0Q7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9MSVNUR1JPVVBTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfRURJVEdST1VQUzsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfTElTVFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfRURJVFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfTElTVEdST1VQUzsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUDsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0RFRkFVTFRHUk9VUFM7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9VU0VSTkFNRTsKICAgICAgICAkbW9kID0geHRfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgIGlmKCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19jaGFuZ2V1c2VybmFtZScpICkgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9DSEFOR0VVU0VSTkFNRTsKCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb2dpbl9kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcykKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIC8vIHRvZG8KICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jaGFuZ2VzZXR0aW5nc19kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcykKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgcmV0dXJuOwogICAgfQoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJfaW5mbygpCiAgewogICAgJHVpZCA9ICR0aGlzLT5nZXRfdW5pcXVlX2lkZW50aWZpZXIoKTsKICAgIGlmKCAhJHVpZCApIHsgcmV0dXJuIEZBTFNFOyB9CgogICAgcmV0dXJuIG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCwgVFJVRSk7CiAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdW5pcXVlX2lkZW50aWZpZXIoKQogICAgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRtYW5pcCA9ICRtb2R1bGUtPkdldE1hbmlwdWxhdG9yKCk7CiAgICAgICAgcmV0dXJuICRtYW5pcC0+X3N0ZF9Mb2dnZWRpbklkKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cF9saXN0KCR3aXRoX2NvdW50ID0gRkFMU0UpCiAgICB7CiAgICAgICAgLy8gdGhpcyBtZXRob2QgZG9lc24ndCBleGFjdGx5IGxpc3RlbiB0byB0aGUgZG9jcy4KICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19ncm91cHMnOwogICAgICAgIGlmKCAkd2l0aF9jb3VudCApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBnLiosY291bnQoYi51c2VyaWQpIEFTIGNvdW50IEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2dyb3VwcyBnCiAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2JlbG9uZ3MgYgogICAgICAgICAgICAgICAgT04gZy5pZCA9IGIuZ3JvdXBpZAogICAgICAgICAgICAgICAgR1JPVVAgQlkgZy5pZCc7CiAgICAgICAgfQogICAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgaWYoIGlzX2FycmF5KCRkYnIpICYmIGNvdW50KCRkYnIpICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGRiciBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJHRtcFskb25lWydpZCddXSA9ICRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICR0bXA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZGJyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3JvdXBfbWVtYmVyc2hpcCgkdXNlcmlkKQogICAgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJHEgPSAiU0VMRUNUIGdyb3VwaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQ9PyI7CiAgICAgICAgJGRiciA9ICRkYi0+R2V0Q29sKCRxLGFycmF5KCR1c2VyaWQpKTsKICAgICAgICByZXR1cm4gJGRicjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RlZmF1bHRfZ3JvdXBzKCkKICAgIHsKICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdG1wID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwogICAgICAgIGlmKCAoaW50KSR0bXAgPiAwICkgcmV0dXJuIGFycmF5KCR0bXApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJGlkZW50aWZpZXIgPSBudWxsKQogICAgewogICAgICAgIGlmKCAhJGlkZW50aWZpZXIgKSAkaWRlbnRpZmllciA9ICR0aGlzLT5nZXRfdW5pcXVlX2lkZW50aWZpZXIoKTsKICAgICAgICAkcm93ID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkaWRlbnRpZmllcik7CiAgICAgICAgaWYoICEkcm93ICkgcmV0dXJuIEZBTFNFOwogICAgICAgIHJldHVybiAkcm93Wyd1c2VybmFtZSddOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWVfcHJvbXB0KCkKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICkgcmV0dXJuICRtYW1zLT5MYW5nKCdwcm9tcHRfZW1haWwnKTsKICAgICAgICByZXR1cm4gJG1hbXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpOwogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfdXNlcm5hbWUoJHVzZXJuYW1lLCRjaGVja19lbWFpbF9hZGRyID0gRkFMU0UsJHVpZCA9IC0xKQogICAgewogICAgICAgIC8vIGEgdXNlcm5hbWUgaXMgdmFsaWQsIGlmIGl0J3MgbGVuZ3RoIGlzCiAgICAgICAgLy8gd2l0aGluIGNlcnRhaW4gcmFuZ2VzLCBhbmQgaXQgY29udGFpbnMKICAgICAgICAvLyBvbmx5IGFscGhhbnVtZXJpY3MKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkbWlubGVuID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywgNCApOwogICAgICAgICRtYXhsZW4gPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLCAyMCApOwogICAgICAgIGlmKCBzdHJsZW4oICR1c2VybmFtZSApIDwgJG1pbmxlbiB8fCBzdHJsZW4oICR1c2VybmFtZSApID4gJG1heGxlbiApIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkgewogICAgICAgICAgICAkdGVzdCA9ICRtb2R1bGUtPklzVmFsaWRFbWFpbEFkZHJlc3MoJHVzZXJuYW1lLCR1aWQsJGNoZWNrX2VtYWlsX2FkZHIpOwogICAgICAgICAgICBpZiAoJHRlc3RbMF0gPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICFwcmVnX21hdGNoKCAnL15bYS16QS1aMC05XF9cLVxzXC5cQFwrXSokLycsICR1c2VybmFtZSApICkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLyoqCiAqIHRoaXMgaXMgYW4gaW50ZXJuYWwgY2xhc3MgLi4uZG8gbm8gdXNlCiAqLwoKZmluYWwgY2xhc3MgbWFtc191c2VyX2NhY2hlCnsKICBwcml2YXRlIHN0YXRpYyAkX3VzZXJzID0gYXJyYXkoKTsKICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgLyoqCiAgICogR2V0IHVzZXIgaW5mb3JtYXRpb24gZm9yIGEgdWlkCiAgICogd2lsbCByZXR1cm4gZGVlcCBpbmZvcm1hdGlvbiBpZiBhbHJlYWR5IGxvYWRlZAogICAqIHdpbGwgbm90IGxvYWQgYW55IGluZm8KICAgKiovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcl9ub2xvYWQoJHVpZCkKICB7CiAgICAkdWlkID0gKGludCkkdWlkOwogICAgaWYoICR1aWQgPD0gMCApIHJldHVybjsKICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skdWlkXSkgKSByZXR1cm47CgogICAgcmV0dXJuIHNlbGY6OiRfdXNlcnNbJHVpZF07CiAgfQoKICAvKioKICAgKiBHZXQgdXNlciBpbmZvcm1hdGlvbiBmb3IgYSB1aWQKICAgKiB3aWxsIHJldHVybiBkZWVwIGluZm8gaWYgaXQgaXMgYWxyZWFkeSBsb2FkZWQsIGV2ZW4gaWYgJGRlZXAgPSBGQUxTRQogICAqIHdpbGwgbG9hZCB0aGUgdXNlciBpZiBub3QgaW4gbWVtb3J5CiAgICoqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXIoJHVpZCwkZGVlcCA9IEZBTFNFKQogIHsKICAgICR1aWQgPSAoaW50KSR1aWQ7CiAgICBpZiggJHVpZCA8PSAwICkgcmV0dXJuOwogICAgaWYoICFpc3NldChzZWxmOjokX3VzZXJzWyR1aWRdKSB8fCAoJGRlZXAgJiYgIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF1bJ2Zwcm9wcyddKSkgKSB7CiAgICAgICAgc2VsZjo6bG9hZF91c2VycyggWyAkdWlkIF0sJGRlZXApOwogICAgfQogICAgcmV0dXJuIHNlbGY6OmdldF91c2VyX25vbG9hZCgkdWlkKTsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2V0X3VzZXIoJHVpbmZvKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoJHVpbmZvWydpZCddKSApIHJldHVybiBGQUxTRTsKICAgICR1aWQgPSAoaW50KSR1aW5mb1snaWQnXTsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggIWlzc2V0KCR1aW5mb1sndXNlcm5hbWUnXSkgKSByZXR1cm4gRkFMU0U7CgogICAgc2VsZjo6JF91c2Vyc1skdWlkXSA9ICR1aW5mbzsKICAgIHJldHVybiBUUlVFOwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXRfbmV3X3VzZXIoJHVpbmZvKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoJHVpbmZvWydpZCddKSApIHJldHVybiBGQUxTRTsKICAgICR1aWQgPSAoaW50KSR1aW5mb1snaWQnXTsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggIWlzc2V0KCR1aW5mb1sndXNlcm5hbWUnXSkgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggaXNzZXQoc2VsZjo6JF91c2Vyc1skdWlkXSkgKSByZXR1cm4gRkFMU0U7CgogICAgc2VsZjo6JF91c2Vyc1skdWluZm9bJ2lkJ11dID0gJHVpbmZvOwogICAgcmV0dXJuIFRSVUU7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbF91c2VyKCR1aWQpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF0pICkgcmV0dXJuIEZBTFNFOwoKICAgIHVuc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF0pOwogICAgcmV0dXJuIFRSVUU7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsZWFyX2FsbCgpCiAgewogICAgc2VsZjo6JF91c2VycyA9IGFycmF5KCk7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRfdXNlcnMoJHVpZF9saXN0LCRkZWVwID0gRkFMU0UpCiAgewogICAgICBpZiggIWlzX2FycmF5KCR1aWRfbGlzdCkgfHwgY291bnQoJHVpZF9saXN0KSA9PSAwICkgcmV0dXJuOwoKICAgICAgJG5lZWQgPSBhcnJheSgpOwogICAgICAkbmVlZF9wcm9wcyA9IGFycmF5KCk7CiAgICAgIGZvcmVhY2goICR1aWRfbGlzdCBhcyAkb25lICkgewogICAgICAgICAgJG9uZSA9IChpbnQpJG9uZTsKICAgICAgICAgIGlmKCAkb25lIDw9IDAgKSBjb250aW51ZTsKCiAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJG9uZV0pICkgJG5lZWRbXSA9ICRvbmU7CiAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJG9uZV1bJ2Zwcm9wcyddKSApICRuZWVkX3Byb3BzW10gPSAkb25lOwogICAgICB9CgogICAgICAkbmVlZCA9IGFycmF5X3VuaXF1ZSgkbmVlZCk7CiAgICAgICRuZWVkX3Byb3BzID0gYXJyYXlfdW5pcXVlKCRuZWVkX3Byb3BzKTsKICAgICAgYXNvcnQoJG5lZWQpOwogICAgICBhc29ydCgkbmVlZF9wcm9wcyk7CgogICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICBpZiggY291bnQoJG5lZWQpICkgewogICAgICAgICAgLy8gZ2V0IHRoZSB1c2VyIGluZm8KICAgICAgICAgICR1cXVlcnkgPSAnU0VMRUNUIHUuKixjb3VudChsaS51c2VyaWQpIEFTIGxvZ2dlZGluIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIHUKICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2xvZ2dlZGluIGxpIE9OIHUuaWQgPSBsaS51c2VyaWQKICAgICAgICAgICAgICAgICBXSEVSRSB1LmlkIElOICgnOwogICAgICAgICAgJHVxdWVyeSAuPSBpbXBsb2RlKCcsJywkbmVlZCkuJykgR1JPVVAgQlkgdS5pZCBPUkRFUiBCWSB1LmlkJzsKICAgICAgICAgICR1aW5mbyA9ICRkYi0+R2V0QXJyYXkoJHVxdWVyeSk7CiAgICAgICAgICBpZiggaXNfYXJyYXkoJHVpbmZvKSApCiAgICAgICAgICB7CiAgICAgICAgICAgICAgZm9yZWFjaCgkdWluZm8gYXMgJHJlYykKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHNlbGY6OiRfdXNlcnNbJHJlY1snaWQnXV0gPSAkcmVjOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICAkbmVlZF9wcm9wcyA9IGFycmF5X2ludGVyc2VjdCgkbmVlZF9wcm9wcywgYXJyYXlfa2V5cyhzZWxmOjokX3VzZXJzKSk7CgogICAgaWYoICRkZWVwICYmIGNvdW50KCRuZWVkX3Byb3BzKSApIHsKICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICAgJGRlZm5zID0gJG1vZC0+R2V0UHJvcGVydHlEZWZucygpOwoKICAgICAgICAkcHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdXNlcmlkIElOICgnOwogICAgICAgICRwcXVlcnkgLj0gaW1wbG9kZSgnLCcsJG5lZWRfcHJvcHMpLicpIE9SREVSIEJZIHVzZXJpZCx0aXRsZSc7CiAgICAgICAgJHBpbmZvID0gJGRiLT5HZXRBcnJheSgkcHF1ZXJ5KTsKICAgICAgICBpZiggIWlzX2FycmF5KCRwaW5mbykgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoKCAkbmVlZF9wcm9wcyBhcyAkb25lICkKICAgICAgICB7CiAgICAgICAgICAgIGlmKCBpc3NldChzZWxmOjokX3VzZXJzWyRvbmVdKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNlbGY6OiRfdXNlcnNbJG9uZV1bJ2Zwcm9wcyddID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwcmV2X3VpZCA9IG51bGw7CiAgICAgICAgJGZwcm9wcyA9IG51bGw7CiAgICAgICAgZm9yZWFjaCgkcGluZm8gYXMgJHJlYykKICAgICAgICB7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skcmVjWyd1c2VyaWQnXV0pICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICFpc19hcnJheSgkZGVmbnMpIHx8ICFpc3NldCgkZGVmbnNbJHJlY1sndGl0bGUnXV0pICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICFlbXB0eSgkZnByb3BzKSAmJiAkcmVjWyd1c2VyaWQnXSAhPSAkcHJldl91aWQgJiYgJHByZXZfdWlkICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0dWlkID0gJGZwcm9wc1swXVsndXNlcmlkJ107CiAgICAgICAgICAgICAgICBzZWxmOjokX3VzZXJzWyR0dWlkXVsnZnByb3BzJ10gPSAkZnByb3BzOwogICAgICAgICAgICAgICAgJGZwcm9wcyA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCAkZGVmbnNbJHJlY1sndGl0bGUnXV1bJ2VuY3J5cHQnXSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRyZWNbJ2RhdGEnXSA9ICRtb2QtPkRlY3J5cHRVc2VyRGF0YSgkcmVjWyd1c2VyaWQnXSwkcmVjWydkYXRhJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmcHJvcHNbXSA9ICRyZWM7CiAgICAgICAgICAgICRwcmV2X3VpZCA9ICRyZWNbJ3VzZXJpZCddOwogICAgICAgIH0KCiAgICAgICAgaWYoICFlbXB0eSgkZnByb3BzKSApCiAgICAgICAgewogICAgICAgICAgICAkdHVpZCA9ICRmcHJvcHNbMF1bJ3VzZXJpZCddOwogICAgICAgICAgICBpZiggaXNzZXQoc2VsZjo6JF91c2Vyc1skdHVpZF0pICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2VsZjo6JF91c2Vyc1skdHVpZF1bJ2Zwcm9wcyddID0gJGZwcm9wczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc191c2VyX3F1ZXJ5X29wdAp7CiAgY29uc3QgTUFUQ0hfVVNFUklEICAgICAgICAgPSAnKnVzZXJpZConOwogIGNvbnN0IE1BVENIX1VTRVJOQU1FICAgICAgID0gJyp1c2VybmFtZSonOwogIGNvbnN0IE1BVENIX1VTRVJOQU1FX1JFICAgID0gJyp1c2VybmFtZS1yZSonOwogIGNvbnN0IE1BVENIX1BBU1NXT1JEICAgICAgID0gJypwYXNzd29yZConOwogIGNvbnN0IE1BVENIX0VYUElSRVNfTFQgICAgID0gJypleHBpcmVzLWx0Kic7CiAgY29uc3QgTUFUQ0hfTk9URVhQSVJFRCAgICAgPSAnKm5vdGV4cGlyZWQqJzsKICBjb25zdCBNQVRDSF9OT1RESVNBQkxFRCAgICA9ICcqbm90ZGlzYWJsZWQqJzsKICBjb25zdCBNQVRDSF9ESVNBQkxFRCAgICAgICA9ICcqZGlzYWJsZWQqJzsKICBjb25zdCBNQVRDSF9NVVNUVkFMSURBVEUgICA9ICcqbXVzdF92YWxpZGF0ZSonOwogIGNvbnN0IE1BVENIX0dST1VQICAgICAgICAgID0gJypncm91cConOwogIGNvbnN0IE1BVENIX0dST1VQSUQgICAgICAgID0gJypnaWQqJzsKICBjb25zdCBNQVRDSF9QUk9QRVJUWSAgICAgICA9ICcqcHJvcGVydHkqJzsKICBjb25zdCBNQVRDSF9QUk9QRVJUWV9SRSAgICA9ICcqcHJvcGVydHktcmUqJzsKICBjb25zdCBNQVRDSF9VU0VSTElTVCAgICAgICA9ICcqdXNlcmxpc3QqJzsKICBjb25zdCBNQVRDSF9VU0VSTkFNRUxJU1QgICA9ICcqdXNlcm5hbWVsaXN0Kic7CiAgY29uc3QgTUFUQ0hfTE9HR0VESU4gICAgICAgPSAnKmxvZ2dlZGluKic7CiAgY29uc3QgTUFUQ0hfQ1JFQVRFRF9HRSAgICAgPSAnKmNyZWF0ZWRfZ2UqJzsKICBjb25zdCBNQVRDSF9DUkVBVEVEX0xUICAgICA9ICcqY3JlYXRlZF9sdConOwogIGNvbnN0IE1BVENIX05PVEhBU1BST1BFUlRZID0gJypub3RoYXNwcm9wZXJ0eSonOwoKICAgIHByaXZhdGUgJF90eXBlOwogICAgcHJpdmF0ZSAkX2V4cHI7CiAgICBwcml2YXRlICRfb3B0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdHlwZSwkZXhwciA9IG51bGwsJG9wdCA9IG51bGwpCiAgICB7CiAgICAgICAgc3dpdGNoKCR0eXBlKSB7CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSSUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSTkFNRToKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX1VTRVJOQU1FX1JFOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfUEFTU1dPUkQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9FWFBJUkVTX0xUOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfQ1JFQVRFRF9HRToKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0NSRUFURURfTFQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9HUk9VUDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0dST1VQSUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSTElTVDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX1VTRVJOQU1FTElTVDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX05PVEhBU1BST1BFUlRZOgogICAgICAgICAgICBpZiggZW1wdHkoJGV4cHIpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbignaW52YWxpZCB2YWx1ZSBmb3IgZXhwcicpOwogICAgICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgJHRoaXMtPl9leHByID0gJGV4cHI7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX01VU1RWQUxJREFURToKICAgICAgICAgICAgLy8gYWxsb3dzIGFuIG9wdGlvbmFsIGV4cHJlc3Npb24gKGVpdGhlciAwIG9yIDEpCiAgICAgICAgICAgICR0aGlzLT5fdHlwZSA9ICR0eXBlOwogICAgICAgICAgICBpZiggIWVtcHR5KCRleHByKSApICR0aGlzLT5fZXhwciA9IChpbnQpICRleHByOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9MT0dHRURJTjoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX05PVEVYUElSRUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9OT1RESVNBQkxFRDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0RJU0FCTEVEOgogICAgICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfUFJPUEVSVFlfUkU6CiAgICAgICAgICAgIGlmKCBlbXB0eSgkZXhwcikgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdpbnZhbGlkIHZhbHVlIGZvciBleHByJyk7CiAgICAgICAgICAgIGlmKCBlbXB0eSgkb3B0KSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgb3B0IHZhbHVlJyk7CiAgICAgICAgICAgICR0aGlzLT5fdHlwZSA9ICR0eXBlOwogICAgICAgICAgICAkdGhpcy0+X2V4cHIgPSAkZXhwcjsKICAgICAgICAgICAgJHRoaXMtPl9vcHQgPSAkb3B0OwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9QUk9QRVJUWToKICAgICAgICAgICAgaWYoIGVtcHR5KCRleHByKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUgZm9yIGV4cHInKTsKICAgICAgICAgICAgJHRoaXMtPl90eXBlID0gJHR5cGU7CiAgICAgICAgICAgICR0aGlzLT5fZXhwciA9ICRleHByOwogICAgICAgICAgICAkdGhpcy0+X29wdCA9ICRvcHQ7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdpbnZhbGlkIG1hdGNoIG9wdGlvbicpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3R5cGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X3R5cGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9leHByKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9leHByOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfb3B0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9vcHQ7CiAgICB9Cn0gLy8gY2xhc3MKCgpjbGFzcyBtYW1zX3VzZXJfcXVlcnkKewogIGNvbnN0IFJFU1VMVF9UWVBFX0lEICAgICAgICAgPSAnKmlkKic7CiAgY29uc3QgUkVTVUxUX1RZUEVfQ09VTlQgICAgICA9ICcqY291bnQqJzsKICBjb25zdCBSRVNVTFRfVFlQRV9MSVNUICAgICAgID0gJypsaXN0Kic7CiAgY29uc3QgUkVTVUxUX1RZUEVfRlVMTCAgICAgICA9ICcqZnVsbConOwogIGNvbnN0IFJFU1VMVF9TT1JUT1JERVJfQVNDICAgPSAnKmFzYyonOwogIGNvbnN0IFJFU1VMVF9TT1JUT1JERVJfREVTQyAgPSAnKmRlc2MqJzsKICBjb25zdCBSRVNVTFRfU09SVEJZX1VTRVJOQU1FID0gJyp1c2VybmFtZSonOwogIGNvbnN0IFJFU1VMVF9TT1JUQllfQ1JFQVRFRCAgPSAnKmNyZWF0ZWRhdGUqJzsKICBjb25zdCBSRVNVTFRfU09SVEJZX0VYUElSRVMgID0gJypleHBpcmVzKic7CgogICAgcHJpdmF0ZSAkX2FuZF9vcHRzICAgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkX2dyb3VwcyA9ICcnOwogICAgcHJpdmF0ZSAkX3BhZ2VsaW1pdCA9IDEwMDAwMDsKICAgIHByaXZhdGUgJF9vZmZzZXQgPSAwOwogICAgcHJpdmF0ZSAkX3Jlc3VsdF90eXBlID0gc2VsZjo6UkVTVUxUX1RZUEVfSUQ7CiAgICBwcml2YXRlICRfc29ydGJ5ID0gc2VsZjo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRTsKICAgIHByaXZhdGUgJF9zb3J0b3JkZXIgPSBzZWxmOjpSRVNVTFRfU09SVE9SREVSX0FTQzsKICAgIHByaXZhdGUgJF9kZWVwID0gRkFMU0U7CiAgICBwcml2YXRlICRfd2VicmVhZHkgPSBGQUxTRTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIC8vIG5vdGhpbmcgaGVyZS4KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3BhZ2VsaW1pdCgkcGFnZWxpbWl0KQogICAgewogICAgICAgICRwYWdlbGltaXQgPSAoaW50KSRwYWdlbGltaXQ7CiAgICAgICAgJHBhZ2VsaW1pdCA9IG1heCgxLCRwYWdlbGltaXQpOwogICAgICAgICR0aGlzLT5fcGFnZWxpbWl0ID0gJHBhZ2VsaW1pdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BhZ2VsaW1pdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcGFnZWxpbWl0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfb2Zmc2V0KCRuKQogICAgewogICAgICAgICR0aGlzLT5fb2Zmc2V0ID0gbWF4KDAsKGludCkkbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9vZmZzZXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X29mZnNldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2RlZXAoJGZsYWcgPSBUUlVFKQogICAgewogICAgICAgICR0aGlzLT5fZGVlcCA9IChib29sKSRmbGFnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGVlcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZGVlcDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3dlYnJlYWR5KCRmbGFnID0gVFJVRSkKICAgIHsKICAgICAgICAkdGhpcy0+X3dlYnJlYWR5ID0gKGJvb2wpJGZsYWc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF93ZWJyZWFkeSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fd2VicmVhZHk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9yZXN1bHRfdHlwZSgkdHlwZSkKICAgIHsKICAgICAgICAvLyBjdXJyZW50bHkgbm90IHVzZWQgaW4gdGhlIHJlc3VsdHNldCwgbWF5IHJlbW92ZQogICAgICAgIHN3aXRjaCggJHR5cGUgKSB7CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfVFlQRV9JRDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9UWVBFX0NPVU5UOgogICAgICAgIGNhc2Ugc2VsZjo6UkVTVUxUX1RZUEVfTElTVDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9UWVBFX0ZVTEw6CiAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJ0ludmFsaWQgcmVzdWx0IHR5cGUgJy4kdHlwZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmVzdWx0X3R5cGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc3VsdF90eXBlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfc29ydGJ5KCR2YWwpCiAgICB7CiAgICAgICAgc3dpdGNoKCAkdmFsICkgewogICAgICAgIGNhc2Ugc2VsZjo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRToKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUQllfQ1JFQVRFRDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUQllfRVhQSVJFUzoKICAgICAgICAgICAgJHRoaXMtPl9zb3J0YnkgPSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbignSW52YWxpZCBzb3J0YnkgdmFsdWU6ICcuJHZhbCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfc29ydGJ5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9zb3J0Ynk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9zb3J0b3JkZXIoJHZhbCkKICAgIHsKICAgICAgICBzd2l0Y2goICR2YWwgKSB7CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfU09SVE9SREVSX0FTQzoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUT1JERVJfREVTQzoKICAgICAgICAgICAgJHRoaXMtPl9zb3J0b3JkZXIgPSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbignSW52YWxpZCBzb3J0b3JkZXIgdmFsdWU6ICcuJHZhbCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfc29ydG9yZGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9zb3J0b3JkZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9hbmRfb3B0KCR0eXBlLCR2YWx1ZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9hbmRfb3B0c1tdID0gbmV3IG1hbXNfdXNlcl9xdWVyeV9vcHQoJHR5cGUsJHZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2FuZF9vcHRfb2JqKG1hbXNfdXNlcl9xdWVyeV9vcHQmICRvcHQpCiAgICB7CiAgICAgICAgJHRoaXMtPl9hbmRfb3B0c1tdID0gJG9wdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRfb3B0cygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5fYW5kX29wdHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfb3B0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fYW5kX29wdHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uICZleGVjdXRlKCkKICAgIHsKICAgICAgICAkcnMgPSBuZXcgbWFtc191c2VyX3F1ZXJ5X3Jlc3VsdHNldCgkdGhpcyk7CiAgICAgICAgcmV0dXJuICRyczsKICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCg==]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKCi8qKgogKiBAZGVwcmVjYXRlZAogKi8KZmluYWwgY2xhc3MgbWFtc191dGlscwp7CiAgICBwcml2YXRlIHN0YXRpYyAkX21vZDsKICAgIHByaXZhdGUgc3RhdGljICRfdXNlcmZpbGVzOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQogIAogIC8qKgogICAqIEBwYXJhbSAkbWV0aG9kCiAgICogQHBhcmFtICRhcmdzCiAgICoKICAgKiBAcmV0dXJuIG1peGVkfHZvaWQKICAgKiBAdGhyb3dzIFxNQU1TXERlcHJlY2F0ZWRNZXRob2RFeGNlcHRpb24KICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fY2FsbFN0YXRpYygkbWV0aG9kLCAkYXJncykKICB7CiAgICBpZihtZXRob2RfZXhpc3RzKFxNQU1TXHV0aWxzOjpjbGFzcywgJG1ldGhvZCkpCiAgICB7CiAgICAgIHJldHVybiBmb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5KFtcTUFNU1x1dGlsczo6Y2xhc3MsICRtZXRob2RdLCAkYXJncyk7CiAgICB9CiAgICAvLyBUcmlnZ2VyIGEgY3VzdG9tIGV4Y2VwdGlvbiBmb3IgZGVwcmVjYXRlZCBtZXRob2RzCiAgICB0aHJvdyBuZXcgXE1BTVNcRGVwcmVjYXRlZE1ldGhvZEV4Y2VwdGlvbigkbWV0aG9kKTsKICB9CiAgCiAgCiAgLyoqCiAgICogV2Uga2VlcCB0aGlzIHVudGlsIHdlIGNhbiBnZXQgcmlkIG9mIGl0LgogICAqIF9fY2FsbFN0YXRpYyBkb2Vzbid0IHN1cHBvcnQgcGFzc2luZyBhcmd1bWVudHMgYnkgcmVmZXJlbmNlCiAgICogdGhpcyB3aWxsIGJlIHJlbW92ZWQgYXMgc29vbiBhcyBwb3NzaWJsZQogICAqCiAgICogQHBhcmFtICRmaWx0ZXIKICAgKiBAcGFyYW0gJG9mZnNldAogICAqIEBwYXJhbSAkdG90YWxfbWF0Y2hlcwogICAqIEBkZXByZWNhdGVkCiAgICogQHNlZSBcTUFNU1x1dGlsczo6Z2V0X3VzZXJzX2Zyb21fZmlsdGVyCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICogQHRocm93cyBcQ21zRXhjZXB0aW9uCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcnNfZnJvbV9maWx0ZXIoJGZpbHRlciwgJG9mZnNldCwgJiR0b3RhbF9tYXRjaGVzKQogIHsKICAgICRsaW1pdCAgICAgICAgICA9ICRmaWx0ZXJbJ2xpbWl0J107CiAgICAkZ3JvdXBpZCAgICAgICAgPSAkZmlsdGVyWydncm91cCddOwogICAgJHVzZXJyZWdleCAgICAgID0gJGZpbHRlclsncmVnZXgnXTsKICAgICRwcm9wZXJ0eSAgICAgICA9ICRmaWx0ZXJbJ3Byb3BzZWwnXTsKICAgICRwcm9wcmVnZXggICAgICA9ICRmaWx0ZXJbJ3Byb3B2YWwnXTsKICAgICRsb2dnZWRpbm9ubHkgICA9ICRmaWx0ZXJbJ2xvZ2dlZGlub25seSddOwogICAgJHNvcnQgICAgICAgICAgID0gJGZpbHRlclsnc29ydGJ5J107CiAgICAkZGlzYWJsZWRzdGF0dXMgPSAkZmlsdGVyWydkaXNhYmxlZHN0YXR1cyddID8/IE5VTEw7CiAgICAKICAgIC8vIHRvZG86IHRoaXMgc2hvdWxkIGdvIGludG8gdGhlIGNvbnN1bWVyLgogICAgJHF1ZXJ5ID0gbmV3IFxtYW1zX3VzZXJfcXVlcnkoKTsKICAgICRxdWVyeS0+c2V0X3Jlc3VsdF90eXBlKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9UWVBFX0ZVTEwpOwogICAgCiAgICBpZigoaW50KSRsaW1pdCA+IDApIHsgJHF1ZXJ5LT5zZXRfcGFnZWxpbWl0KCRsaW1pdCk7IH0KICAgIAogICAgaWYoKGludCkkb2Zmc2V0ID4gMCkgeyAkcXVlcnktPnNldF9vZmZzZXQoJG9mZnNldCk7IH0KICAgIAogICAgaWYoJGdyb3VwaWQgPiAwKQogICAgewogICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUElELCAkZ3JvdXBpZCk7CiAgICB9CiAgICAKICAgIGlmKCR1c2VycmVnZXgpCiAgICB7CiAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1VTRVJOQU1FX1JFLCAkdXNlcnJlZ2V4KTsKICAgIH0KICAgIAogICAgaWYoJHByb3BlcnR5KQogICAgewogICAgICAkZGVmbiA9IHNlbGY6OmdldF9tb2QoKS0+R2V0UHJvcGVydHlEZWZuKCRwcm9wZXJ0eSk7CiAgICAgICRvYmogID0gTlVMTDsKICAgICAgCiAgICAgICMgY2hhbmdlZCByZWNlbnRseSBrZWVwIGFuIGV5ZSBvbiB0aGlzCiAgICAgIGlmKCgkZGVmblsndHlwZSddID09IFxNQU1TOjpGSUVMRFRZUEVfQ0hFQ0tCT1gpICYmICcwJyA9PT0gXHRyaW0oJHByb3ByZWdleCkpCiAgICAgIHsKICAgICAgICAvLyBuZWVkIHRvIHRlc3QgaWYgdGhlIHByb3BlcnR5IGlzIE5PVCBzZXQKICAgICAgICAkb2JqID0gbmV3IFxtYW1zX3VzZXJfcXVlcnlfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RIQVNQUk9QRVJUWSwgJHByb3BlcnR5KTsKICAgICAgfQogICAgICAKICAgICAgaWYoISRvYmogJiYgJHByb3ByZWdleCkKICAgICAgewogICAgICAgICRvYmogPSBuZXcgXG1hbXNfdXNlcl9xdWVyeV9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1BST1BFUlRZX1JFLCAkcHJvcGVydHksICRwcm9wcmVnZXgpOwogICAgICB9CiAgICAgIAogICAgICBpZigkb2JqKSB7ICRxdWVyeS0+YWRkX2FuZF9vcHRfb2JqKCRvYmopOyB9CiAgICB9CiAgICAKICAgIGlmKCRsb2dnZWRpbm9ubHkpCiAgICB7CiAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0xPR0dFRElOLCAxKTsKICAgIH0KICAgIAogICAgc3dpdGNoKCRkaXNhYmxlZHN0YXR1cykKICAgIHsKICAgICAgY2FzZSAnZW4nOgogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVERJU0FCTEVEKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2Rpcyc6CiAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfRElTQUJMRUQpOwogICAgICBicmVhazsKICAgIH0KICAgIAogICAgc3dpdGNoKCRzb3J0KQogICAgewogICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgIGNhc2UgJ3VzZXJuYW1lIGFzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUUpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICd1c2VybmFtZSBkZXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRSk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdjcmVhdGVkYXRlJzoKICAgICAgY2FzZSAnY3JlYXRlZGF0ZSBhc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdjcmVhdGVkYXRlIGRlc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZXhwaXJlcyc6CiAgICAgIGNhc2UgJ2V4cGlyZXMgYXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZXhwaXJlcyBkZXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9ERVNDKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICAKICAgICRycyAgICAgICAgICAgID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAkdG90YWxfbWF0Y2hlcyA9ICRycy0+Z2V0X2ZvdW5kX3Jvd3MoKTsKICAgICRkYXRhICAgICAgICAgID0gW107CiAgICB3aGlsZSghJHJzLT5FT0YpCiAgICB7CiAgICAgICRkYXRhW10gPSAkcnMtPmZpZWxkczsKICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgfQogICAgCiAgICByZXR1cm4gJGRhdGE7CiAgfQogIAogIAogICAgLyoqKgogICAgICogdGVtcG9yYXJ5IGZ1bmN0aW9ucwogICAgICovCiAgCiAgCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHhodG1sIGVxdWl2YWxlbnQgb2YgYSB0ZXh0YXJlYS4JQWxzbyB0YWtlcyBXWVNJV1lHIHByZWZlcmVuY2UgaW50byBjb25zaWRlcmF0aW9uIGlmIGl0J3MgY2FsbGVkIGZyb20gdGhlIGFkbWluIHNpZGUuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgICAkZW5hYmxld3lzaXd5ZyBTaG91bGQgd2UgdHJ5IHRvIGNyZWF0ZSBhIFdZU0lXWUcgZm9yIHRoaXMgdGV4dGFyZWE/CiAgICAgKiBAcGFyYW0gc3RyaW5nICRpZCBUaGUgaWQgZ2l2ZW4gdG8gdGhlIG1vZHVsZSBvbiBleGVjdXRpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHQgVGhlIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgdGV4dGFyZWEncyBjb250ZW50CiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBodG1sIG5hbWUgb2YgdGhlIHRleHRhcmVhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc25hbWUgVGhlIENTUyBjbGFzcyB0byBhc3NvY2lhdGUgdGhpcyB0ZXh0YXJlYSB0bwogICAgICogQHBhcmFtIHN0cmluZyAkaHRtbGlkIFRoZSBodG1sIGlkIHRvIGdpdmUgdG8gdGhpcyB0ZXh0YXJlYQogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RpbmcgVGhlIGVuY29kaW5nIHRvIHVzZSBmb3IgdGhlIGNvbnRlbnQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0eWxlc2hlZXQgVGhlIHRleHQgb2YgdGhlIHN0eWxlc2hlZXQgYXNzb2NpYXRlZCB0byB0aGlzIGNvbnRlbnQuCSBPbmx5IHVzZWQgZm9yIGNlcnRhaW4gV1lTSVdZR3MKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbHMgVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdpZGUgKGNvbHVtbnMpIHRoZSByZXN1bHRpbmcgdGV4dGFyZWEgc2hvdWxkIGJlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyb3dzIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBoaWdoIChyb3dzKSB0aGUgcmVzdWx0aW5nIHRleHRhcmVhIHNob3VsZCBiZQogICAgICogQHBhcmFtIHN0cmluZyAkZm9yY2V3eXNpd3lnIFRoZSB3eXNpd3lnLXN5c3RlbSB0byBiZSBmb3JjZWQgZXZlbiBpZiB0aGUgdXNlciBoYXMgY2hvc2VuIGFub3RoZXIgb25lCiAgICAgKiBAcGFyYW0gc3RyaW5nICR3YW50ZWRzeW50YXggVGhlIGxhbmd1YWdlIHRoZSBjb250ZW50IHNob3VsZCBiZSBzeW50YXhoaWdodGxpZ2h0ZWQgYXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFkZHRleHQgQW55IGFkZGl0aW9uYWwgdGV4dCB0byBpbmNsdWRlIHdpdGggdGhlIHRleHRhcmVhIGZpZWxkLgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAc2VlIENtc0Zvcm1VdGlsczo6Y3JlYXRlX3RleHRhcmVhCiAgICAgKi8KICAgIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVUZXh0QXJlYSgkZW5hYmxld3lzaXd5ZywgJGlkLCAkdGV4dCwgJG5hbWUsICRjbGFzc25hbWU9JycsICRodG1saWQ9JycsICRlbmNvZGluZz0nJywgJHN0eWxlc2hlZXQ9JycsICRjb2xzPScnLCAkcm93cz0nJywkZm9yY2V3eXNpd3lnPScnLCR3YW50ZWRzeW50YXg9JycsJGFkZHRleHQ9JycpCiAgICB7CiAgICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAgICRwYXJtc1snZW5hYmxld3lzaXd5ZyddID0gJGVuYWJsZXd5c2l3eWc7CiAgICAgICRwYXJtc1snbmFtZSddID0gJGlkLiRuYW1lOwogICAgICBpZiggJGNsYXNzbmFtZSApICRwYXJtc1snY2xhc3MnXSA9ICRjbGFzc25hbWU7CiAgICAgIGlmKCAkaHRtbGlkICkgJHBhcm1zWydpZCddID0gJGh0bWxpZDsKICAgICAgaWYoICRlbmNvZGluZyApICRwYXJtc1snZW5jb2RpbmcnXSA9ICRlbmNvZGluZzsKICAgICAgaWYoICRzdHlsZXNoZWV0ICkgJHBhcm1zWydzdHlsZXNoZWV0J10gPSAkc3R5bGVzaGVldDsKICAgICAgaWYoICRjb2xzICkgJHBhcm1zWydjb2xzJ10gPSAkY29sczsKICAgICAgaWYoICRyb3dzICkgJHBhcm1zWydyb3dzJ10gPSAkcm93czsKICAgICAgaWYoICR0ZXh0ICkgJHBhcm1zWyd0ZXh0J10gPSAkdGV4dDsKICAgICAgaWYoICRmb3JjZXd5c2l3eWcgKSAkcGFybXNbJ2ZvcmNlbW9kdWxlJ10gPSAkZm9yY2V3eXNpd3lnOwogICAgICBpZiggJHdhbnRlZHN5bnRheCApICRwYXJtc1snd2FudGVkc3ludGF4J10gPSAkd2FudGVkc3ludGF4OwogICAgICBpZiggJGFkZHRleHQgKSAkcGFybXNbJ2FkZHRleHQnXSA9ICRhZGR0ZXh0OwogIAogICAgICB0cnkgewogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVfdGV4dGFyZWEoJHBhcm1zKTsKICAgICAgfQogICAgICBjYXRjaCggQ21zRXhjZXB0aW9uICRlICkgewogICAgICAgIHJldHVybiAnJzsKICAgICAgfQogICAgfQogIAogICAgLyoqCiAgICAgKiBBIG1ldGhvZCB0byBjcmVhdGUgYSB0ZXh0IGFyZWEgY29udHJvbC4KICAgICAqIHBhcmFtZXRlcnM6CiAgICAgKiAgIG5hbWUgICAgICAgICAgPSAocmVxdWlyZWQgc3RyaW5nKSBuYW1lIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgYXJlYSBlbGVtZW50LgogICAgICogICBpZCAgICAgICAgICAgID0gKG9wdGlvbmFsIHN0cmluZykgaWQgYXR0cmlidXRlIGZvciB0aGUgdGV4dCBhcmVhIGVsZW1lbnQuICBJZiBub3Qgc3BlY2lmaWVkLCBuYW1lIGlzIHVzZWQuCiAgICAgKiAgIGNsYXNzL2NsYXNzbmFtZSA9IChvcHRpb25hbCBzdHJpbmcpIGNsYXNzIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgYXJlYSBlbGVtZW50LiAgU29tZSB2YWx1ZXMgd2lsbCBiZSBhZGRlZCB0byB0aGlzIHN0cmluZy4KICAgICAqICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgY21zX3RleHRhcmVhCiAgICAgKiAgIGZvcmNlbW9kdWxlICAgPSAob3B0aW9uYWwgc3RyaW5nKSB1c2VkIHRvIHNwZWNpZnkgdGhlIG1vZHVsZSB0byBlbmFibGUuICBJZiBzcGVjaWZpZWQsIHRoZSBtb2R1bGUgbmFtZSB3aWxsIGJlIGFkZGVkIHRvIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgY2xhc3MgYXR0cmlidXRlLgogICAgICogICBlbmFibGV3eXNpd3lnID0gKG9wdGlvbmFsIGJvb2xhbikgdXNlZCB0byBzcGVjaWZ5IHdldGhlciBhIHd5c2l3eWcgdGV4dGFyZWEgaXMgcmVxdWlyZWQuICBzZXRzIHRoZSBsYW5ndWFnZSB0byBodG1sLgogICAgICogICB3YW50ZWRzeW50YXggID0gKG9wdGlvbmFsIHN0cmluZykgdXNlZCB0byBzcGVjaWZ5IHRoZSBsYW5ndWFnZSAoaHRtbCxjc3MscGhwLHNtYXJ0eSkgdG8gdXNlLiAgSWYgbm9uIGVtcHR5IGluZGljYXRlcyB0aGF0IGEKICAgICAqICAgICAgICAgICAgICAgICAgIHN5bnRheCBoaWxpZ2h0ZXIgbW9kdWxlIGlzIHJlcXVlc3RlZC4KICAgICAqICAgY29scy93aWR0aCAgICA9IChvcHRpb25hbCBpbnRlZ2VyKSBjb2x1bW5zIG9mIHRoZSB0ZXh0IGFyZWEgKGNzcyBvciB0aGUgc3ludGF4L3d5c2l3eWcgbW9kdWxlIG1heSBvdmVycmlkZSB0aGlzKQogICAgICogICByb3dzL2hlaWdodCAgID0gKG9wdGlvbmFsIGludGVnZXIpIHJvd3Mgb2YgdGhlIHRleHQgYXJlYSAoY3NzIG9yIHRoZSBzeW50YXgvd3lzaXd5ZyBtb2R1bGUgbWF5IG92ZXJyaWRlIHRoaXMpCiAgICAgKiAgIG1heGxlbmd0aCAgICAgPSAob3B0aW9uYWwgaW50ZWdlcikgbWF4bGVuZ3RoIGF0dHJpYnV0ZSBvZiB0aGUgdGV4dCBhcmVhIChzeW50YXgvd3lzaXd5ZyBtb2R1bGUgbWF5IGlnbm9yZSB0aGlzKQogICAgICogICByZXF1aXJlZCAgICAgID0gKG9wdGlvbmFsIGJvb2xlYW4pIGluZGljYXRlcyBhIHJlcXVpcmVkIGZpZWxkLgogICAgICogICBwbGFjZWhvbGRlciAgID0gKG9wdGlvbmFsIHN0cmluZykgcGxhY2Vob2xkZXIgYXR0cmlidXRlIG9mIHRoZSB0ZXh0IGFyZWEgKHN5bnRheC93eXNpd3lnIG1vZHVsZSBtYXkgaWdub3JlIHRoaXMpCiAgICAgKiAgIHZhbHVlL3RleHQgICAgPSAob3B0aW9uYWwgc3RyaW5nKSBkZWZhdWx0IHRleHQgZm9yIHRoZSB0ZXh0IGFyZWEsIHdpbGwgdW5kZXJnbyBlbnRpdHkgY29udmVyc2lvbi4KICAgICAqICAgZW5jb2RpbmcgICAgICA9IChvcHRpb25hbCBzdHJpbmcpIGRlZmF1bHQgdXRmLTggZW5jb2RpbmcgZm9yIGVudGl0eSBjb252ZXJzaW9uLgogICAgICogICBhZGR0ZXh0ICAgICAgID0gKG9wdGlvbmFsIHN0cmluZykgYWRkaXRpb25hbCB0ZXh0IHRvIGFkZCB0byB0aGUgdGV4dGFyZWEgdGFnLgogICAgICogICBjc3NuYW1lICAgICAgID0gKG9wdGlvbmFsIHN0cmluZykgUGFzcyB0aGlzIHN0eWxlc2hlZXQgbmFtZSB0byB0aGUgV1lTSVdZRyBhcmVhIGlmIGFueS4KICAgICAqCiAgICAgKiBub3RlOiBpZiB3YW50ZWRzeW50YXggaXMgZW1wdHksIEFORCBlbmFibGV3eXNpd3lnIGlzIGZhbHNlLCB0aGVuIGp1c3QgYSBwbGFpbiB0ZXh0IGFyZWEgaXMgY3JlZWF0ZWQuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJtcyBBbiBhc3NvY2lhdGl2ZSBhcnJheSB3aXRoIHBhcmFtZXRlcnMuCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZV90ZXh0YXJlYSgkcGFybXMpCiAgICB7CiAgICAgIC8vIHRvZG86IHJld3JpdGUgbWUgd2l0aCB2YXIgYXJncy4uLiB0byBhY2NlcHQgYSBudW1lcmljIGFycmF5IG9mIGFyZ3VtZW50cywgb3IgYSBoYXNoLgogICAgICAkaGF2ZWl0ID0gRkFMU0U7CiAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgJHVpZCA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgICAkYXR0cmlicyA9IGFycmF5KCk7CiAgICAgICRtb2R1bGUgPSBudWxsOwogICAgICAkYXR0cmlic1snbmFtZSddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ25hbWUnKTsKICAgICAgaWYoICEkYXR0cmlic1snbmFtZSddICkgdGhyb3cgbmV3IENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCcibmFtZSIgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIiJyk7CiAgICAgICRhdHRyaWJzWydpZCddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ2lkJywkYXR0cmlic1snbmFtZSddKTsKICAgICAgJGF0dHJpYnNbJ2NsYXNzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnY2xhc3MnLCdjbXNfdGV4dGFyZWEnKTsKICAgICAgJGF0dHJpYnNbJ2NsYXNzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnY2xhc3NuYW1lJywkYXR0cmlic1snY2xhc3MnXSk7IC8vIGNsYXNzbmFtZSBwYXJhbSBjYW4gb3ZlcnJpZGUgY2xhc3MuCiAgCiAgICAgICRmb3JjZW1vZHVsZSA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdmb3JjZW1vZHVsZScpOwogICAgICAkZW5hYmxld3lzaXd5ZyA9IGNtc190b19ib29sKGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdlbmFibGV3eXNpd3lnJyxmYWxzZSkpOyAvLyBpZiB0cnVlLCB3ZSB3YW50IGEgd3lzaXd5ZyBhcmVhCiAgICAgICR3YW50ZWRzeW50YXggPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnd2FudGVkc3ludGF4Jyk7IC8vIGlmIG5vdCBudWxsLCBhbmQgbm8gd3lzaXd5ZyBmb3VuZCwgdXNlIGEgc3ludGF4IGFyZWEuCiAgICAgICR3YW50ZWRzeW50YXggPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywndHlwZScsJHdhbnRlZHN5bnRheCk7CiAgICAgICRhdHRyaWJzWydjbGFzcyddIC49ICcgJy4kYXR0cmlic1snbmFtZSddOyAvLyBtYWtlIHN1cmUgdGhlIG5hbWUgaXMgb25lIG9mIHRoZSBjbGFzc2VzLgogICAgICBmb3JlYWNoKCAkcGFybXMgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgIGlmKCBzdGFydHN3aXRoKCAka2V5LCAnZGF0YS0nKSApICRhdHRyaWJzWyRrZXldID0gJHZhbDsKICAgICAgfQogIAogICAgICBpZiggJGVuYWJsZXd5c2l3eWcgKSB7CiAgICAgICAgLy8gd2Ugd2FudCBhIHd5c2l3eWcKICAgICAgICAkYXBwZW5kY2xhc3MgPSAnY21zbXNfd3lzaXd5Zyc7CiAgICAgICAgJG1vZHVsZSA9IE1vZHVsZU9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXRXWVNJV1lHTW9kdWxlKCRmb3JjZW1vZHVsZSk7CiAgICAgICAgaWYoICRtb2R1bGUgJiYgJG1vZHVsZS0+SGFzQ2FwYWJpbGl0eShDbXNDb3JlQ2FwYWJpbGl0aWVzOjpXWVNJV1lHX01PRFVMRSkgKSB7CiAgICAgICAgICAkYXBwZW5kY2xhc3MgPSAkbW9kdWxlLT5HZXROYW1lKCk7CiAgICAgICAgICAkYXR0cmlic1snZGF0YS1jbXMtbGFuZyddID0gJ2h0bWwnOwogICAgICAgICAgJGNzc19uYW1lID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ2Nzc25hbWUnLHNlbGY6Ok5PTkUpOwogICAgICAgICAgc2VsZjo6X2FkZF93eXNpd3lnKCRtb2R1bGUtPkdldE5hbWUoKSwkYXR0cmlic1snaWQnXSwkY3NzX25hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBqdXN0IGluY2FzZSBmb3JjZWQgbW9kdWxlIGlzIG5vdCBhIHd5c2l3eWcgbW9kdWxlLgogICAgICAgICAgJG1vZHVsZSA9IG51bGw7CiAgICAgICAgfQogICAgICAgICRhdHRyaWJzWydjbGFzcyddIC49ICcgJy4kYXBwZW5kY2xhc3M7CiAgICAgIH0KICAKICAgICAgaWYoICEkbW9kdWxlICYmICR3YW50ZWRzeW50YXggKSB7CiAgICAgICAgJGF0dHJpYnNbJ2RhdGEtY21zLWxhbmcnXSA9IHRyaW0oJHdhbnRlZHN5bnRheCk7CiAgICAgICAgJG1vZHVsZSA9IE1vZHVsZU9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXRTeW50YXhIaWdobGlnaHRlcigkZm9yY2Vtb2R1bGUpOwogICAgICAgIGlmKCAkbW9kdWxlICYmICRtb2R1bGUtPkhhc0NhcGFiaWxpdHkoQ21zQ29yZUNhcGFiaWxpdGllczo6U1lOVEFYX01PRFVMRSkgKSB7CiAgICAgICAgICAkYXR0cmlic1snY2xhc3MnXSAuPSAnICcuJG1vZHVsZS0+R2V0TmFtZSgpOwogICAgICAgICAgc2VsZjo6X2FkZF9zeW50YXgoJG1vZHVsZS0+R2V0TmFtZSgpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gd2FudGVkIGEgc3ludGF4IG1vZHVsZSwgYnV0IGNvdWxkbid0IGZpbmQgb25lLi4uCiAgICAgICAgICAkbW9kdWxlID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAKICAgICAgJHJlcXVpcmVkID0gY21zX3RvX2Jvb2woZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3JlcXVpcmVkJywnZmFsc2UnKSk7CiAgICAgIGlmKCAkcmVxdWlyZWQgKSAkYXR0cmlic1sncmVxdWlyZWQnXSA9ICdyZXF1aXJlZCc7CiAgICAgICRhdHRyaWJzWydjb2xzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnY29scycpOwogICAgICAkYXR0cmlic1snY29scyddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3dpZHRoJywkYXR0cmlic1snY29scyddKTsKICAgICAgaWYoICRhdHRyaWJzWydjb2xzJ10gPD0gMCB8fCAkYXR0cmlic1snY29scyddID09ICcnKSAkYXR0cmlic1snY29scyddID0gMjA7CiAgICAgICRhdHRyaWJzWydyb3dzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywncm93cycpOwogICAgICAkYXR0cmlic1sncm93cyddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ2hlaWdodCcsJGF0dHJpYnNbJ3Jvd3MnXSk7CiAgICAgIGlmKCAkYXR0cmlic1sncm93cyddIDw9IDAgfHwgJGF0dHJpYnNbJ2NvbHMnXSA9PSAnJyApICRhdHRyaWJzWydyb3dzJ10gPSA1OwogICAgICAkYXR0cmlic1snbWF4bGVuZ3RoJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnbWF4bGVuZ3RoJyk7CiAgICAgIGlmKCAkYXR0cmlic1snbWF4bGVuZ3RoJ10gPD0gMCApICRhdHRyaWJzWydtYXhsZW5ndGgnXSA9ICcnOwogICAgICAkYXR0cmlic1sncGxhY2Vob2xkZXInXSA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdwbGFjZWhvbGRlcicpOwogIAogICAgICAkYWRkdGV4dCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdhZGR0ZXh0Jyk7CiAgICAgICR0ZXh0ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3ZhbHVlJyk7CiAgICAgICR0ZXh0ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3RleHQnLCR0ZXh0KTsKICAKICAgICAgJHJlc3VsdCA9ICc8dGV4dGFyZWEnOwogICAgICBmb3JlYWNoKCAkYXR0cmlicyBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgaWYoICR2YWwgIT0gJycgJiYgJGtleSAhPSAnJyApIHsKICAgICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAkcmVzdWx0IC49ICIgeyRrZXl9PVwieyR2YWx9XCIiOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiggIWVtcHR5KCAkYWRkdGV4dCApICkgJHJlc3VsdCAuPSAnICcuJGFkZHRleHQ7CiAgICAgIC8vJHJlc3VsdCAuPSAnPicuY21zX2h0bWxlbnRpdGllcygkdGV4dCxFTlRfTk9RVU9URVMsQ21zTmxzT3BlcmF0aW9uczo6Z2V0X2VuY29kaW5nKCkpLic8L3RleHRhcmVhPic7CiAgICAgICRyZXN1bHQgLj0gJz4nLiAkdGV4dCAuJzwvdGV4dGFyZWE+JzsKICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CiAgCn0gLy8gY2xhc3MKCiMKIyBFT0YKIwo=]]></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[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCi8qKg0KICogR2VuZXJhdGUgcmFuZG9tIGNoYXJhY3RlcnMuDQogKg0KICogQGF1dGhvciAgICBMYXVyZW50aXUgVGFuYXNlIDxleHBlcnRwaHBAeWFob28uY29tPg0KICogQHZlcnNpb24gICAxLjENCiAqLw0KDQpjbGFzcyBSYW5kb20KewogIC8qKgogICAqIFNldCBkZWZhdWx0IGNoYXJhY3RlcnMuCiAgICoKICAgKiBAdmFyICAgICAgc3RyaW5nCiAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgKi8KICB2YXIgJF92Y3JzOwoKICAvKioKICAgKiBJZiBoYXZlIG51bWJlcgogICAqCiAgICogQHZhciAgICAgIGJvb2wKICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAqLwogIHZhciAkX3ZudW07CgogIC8qKgogICAqIElmIGRvZXNuJ3QgaGF2ZSBudW1iZXIKICAgKgogICAqIEB2YXIgICAgICBib29sCiAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgKi8KICB2YXIgJF92bm90OwoKICAvKioKICAgKiBDb25zdHJ1Y3RvcgogICAqCiAgICogU2V0IGRlZmF1bHQgdmFsdWVzCiAgICoKICAgKiBAcGFyYW0gIHN0cmluZyAgJGNycyAgIENoYXJhY3RlcnMgb3V0cHV0CiAgICogQHBhcmFtICBib29sICAgICRudW0gICBXaXRoIG51bWJlcgogICAqIEBwYXJhbSAgYm9vbCAgICAkbm90ICAgV2l0aCBub3QgbnVtYmVyCiAgICovCiAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNycyA9IGZhbHNlLCAkbnVtID0gZmFsc2UsICRub3QgPSBmYWxzZSkKICB7CiAgICAkdGhpcy0+X3ZudW0gPSAkbnVtOwogICAgJHRoaXMtPl92bm90ID0gJG5vdDsKICAgIGlmKCEkY3JzKQogICAgewogICAgICAkdGhpcy0+X3ZjcnMgPSAiMDEyMzQ1Njc4OSIgLgogICAgICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIgLgogICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICR0aGlzLT5fdmNycyA9ICRjcnM7CiAgICAgIGlmKCgkbnVtIHx8ICRub3QpICYmICEkdGhpcy0+X3JlYygkY3JzLCAkbnVtLCAkbm90KSkKICAgICAgewogICAgICAgIGlmKCRudW0gJiYgJG5vdCkKICAgICAgICB7CiAgICAgICAgICAkZXJyID0gIm51bWJlciBvciBub3QgbnVtYmVyIjsKICAgICAgICB9CiAgICAgICAgZWxzZWlmKCRudW0pCiAgICAgICAgewogICAgICAgICAgJGVyciA9ICJudW1iZXIiOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoJG5vdCkKICAgICAgICB7CiAgICAgICAgICAkZXJyID0gIm5vdCBudW1iZXIiOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJGVyciA9ICJjb21wYXJhdGlvbiI7CiAgICAgICAgfQogICAgICAgIHRyaWdnZXJfZXJyb3IoIkNsYXNzIFJhbmRvbSAtIFN0cmluZyBpbnB1dCBbICIgLiAkY3JzIC4gIiBdIGRvZXNuJ3QgaGF2ZSAiIC4gJGVyciwgRV9VU0VSX0VSUk9SKTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gUmFuZG9tKCRjcnMgPSBmYWxzZSwgJG51bSA9IGZhbHNlLCAkbm90ID0gZmFsc2UpCiAgewogICAgJHRoaXMtPl9fY29uc3RydWN0KCRjcnMsICRudW0sICRub3QpOwogIH0KCiAgLyoqCiAgICogQ29tcGFyZSBpbnB1dCBzdHJpbmcKICAgKgogICAqIEBhY2Nlc3MgIHByaXZhdGUKICAgKiBAcGFyYW0gICBzdHJpbmcgICAkc3RyICAgICAgQ2hhcmFjdGVycyBpbnB1dAogICAqIEBwYXJhbSAgIGJvb2wgICAgICRudW1iZXIgICBIYXZlIG51bWJlcgogICAqIEBwYXJhbSAgIGJvb2wgICAgICRub3RudW0gICBIYXZlIG5vdCBudW1iZXIKICAgKiBAcmV0dXJuICBib29sICAgICBJZiBoYXZlIG51bWJlciBvci9hbmQgbm90IG51bWJlcgogICAqLwogIGZ1bmN0aW9uIF9yZWMoJHN0ciwgJG51bWJlciA9IHRydWUsICRub3RudW0gPSB0cnVlKQogIHsKICAgICRjbnQgPSBzdHJsZW4oJHN0cik7CiAgICAkc2V0MSA9ICRzZXQyID0gZmFsc2U7CiAgICBpZigkbnVtYmVyIHx8ICRub3RudW0pCiAgICB7CiAgICAgIGZvcigkaSA9IDA7ICRpIDwgJGNudDsgJGkrKykKICAgICAgewogICAgICAgIGlmKCRzdHJbJGldID09PSBzdHJ2YWwoaW50dmFsKCRzdHJbJGldKSkpCiAgICAgICAgewogICAgICAgICAgJHNldDEgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHNldDIgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYoJHNldDEgJiYgJHNldDIpCiAgICAgICAgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZigkbnVtYmVyICYmICRub3RudW0pCiAgICAgIHsKICAgICAgICByZXR1cm4gKCRzZXQxICYmICRzZXQyKTsKICAgICAgfQogICAgICBlbHNlaWYoJG51bWJlcikKICAgICAgewogICAgICAgIHJldHVybiAkc2V0MTsKICAgICAgfQogICAgICBlbHNlaWYoJG5vdG51bSkKICAgICAgewogICAgICAgIHJldHVybiAkc2V0MjsKICAgICAgfQoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvKioKICAgKiBHZW5lcmF0ZSByYW5kb20gY2hhcmFjdGVycwogICAqCiAgICogQGFjY2VzcyAgcHVibGljCiAgICogQHBhcmFtICAgaW50ICAgICAgJGxlbiAgIExlbmd0aCBvZiB0aGUgc3RyaW5nIHlvdSB3YW50IGdlbmVyYXRlZAogICAqIEByZXR1cm4gIHN0cmluZyAgIFJhbmRvbSBjaGFyYWN0ZXJzCiAgICovCiAgZnVuY3Rpb24gZ2V0KCRsZW4pCiAgewogICAgaWYoIShpc19pbnQoJGxlbikgJiYgJGxlbiA+IDApKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPl92Y3JzOwogICAgfQoKICAgICRyZXF1aXJlZF9sZW5ndGggPSAoaW50KSAkdGhpcy0+X3ZudW0gKyAoaW50KSAkdGhpcy0+X3Zub3Q7CiAgICBpZigkbGVuIDwgJHJlcXVpcmVkX2xlbmd0aCkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSByZXF1ZXN0ZWQgbGVuZ3RoIGNhbm5vdCBzYXRpc2Z5IHRoZSBjaGFyYWN0ZXIgcmVxdWlyZW1lbnRzJyk7CiAgICB9CgogICAgJHJldCA9ICcnOwogICAgaWYoJHRoaXMtPl92bnVtKQogICAgewogICAgICAkbnVtYmVycyA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRoaXMtPl92Y3JzKTsKICAgICAgJHJldCAuPSAkbnVtYmVyc1tyYW5kb21faW50KDAsIHN0cmxlbigkbnVtYmVycykgLSAxKV07CiAgICB9CiAgICBpZigkdGhpcy0+X3Zub3QpCiAgICB7CiAgICAgICRjaGFyYWN0ZXJzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICR0aGlzLT5fdmNycyk7CiAgICAgICRyZXQgLj0gJGNoYXJhY3RlcnNbcmFuZG9tX2ludCgwLCBzdHJsZW4oJGNoYXJhY3RlcnMpIC0gMSldOwogICAgfQoKICAgICRjbnQgPSBzdHJsZW4oJHRoaXMtPl92Y3JzKSAtIDE7CiAgICB3aGlsZShzdHJsZW4oJHJldCkgPCAkbGVuKQogICAgewogICAgICAkcmV0IC49ICR0aGlzLT5fdmNyc1tyYW5kb21faW50KDAsICRjbnQpXTsKICAgIH0KCiAgICAkY2hhcmFjdGVycyA9IHN0cl9zcGxpdCgkcmV0KTsKICAgIGZvcigkaSA9IGNvdW50KCRjaGFyYWN0ZXJzKSAtIDE7ICRpID4gMDsgJGktLSkKICAgIHsKICAgICAgJGogPSByYW5kb21faW50KDAsICRpKTsKICAgICAgWyRjaGFyYWN0ZXJzWyRpXSwgJGNoYXJhY3RlcnNbJGpdXSA9IFskY2hhcmFjdGVyc1skal0sICRjaGFyYWN0ZXJzWyRpXV07CiAgICB9CgogICAgcmV0dXJuIGltcGxvZGUoJycsICRjaGFyYWN0ZXJzKTsKICB9Cgp9Cg0KPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/class.RRUtils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBSUlV0aWxzCnsKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIGFycmF5X21lcmdlX2J5X25hbWVfcmVxdWlyZWQoJGFycjEsICRhcnIyKQogIHsKICAgICR4eHJlc3VsdCA9IFtdOwogICAgLy8gYWRkIGl0ZW1zIGNvbW1vbiB0byBhcnIxIGFuZCBhcnIyCiAgICAvLyBidXQgZmF2b3IgcmVxdWlyZWQgaXRlbXMKICAgIGlmKCFcaXNfYXJyYXkoJGFycjEpIHx8ICFcaXNfYXJyYXkoJGFycjIpKXtyZXR1cm47fQogICAgCiAgICBmb3JlYWNoKCRhcnIxIGFzICRhMSkKICAgIHsKICAgICAgZm9yZWFjaCgkYXJyMiBhcyAkYTIpCiAgICAgIHsKICAgICAgICBpZiggIWlzc2V0KCRhMVsnbmFtZSddKSB8fCAhaXNzZXQoJGEyWyduYW1lJ10pICl7Y29udGludWU7fQogICAgICAgIAogICAgICAgIGlmKCRhMVsnbmFtZSddID09ICRhMlsnbmFtZSddKQogICAgICAgIHsKICAgICAgICAgIGlmKCRhMVsncmVxdWlyZWQnXSA9PSAyKQogICAgICAgICAgewogICAgICAgICAgICAkeHhyZXN1bHRbXSA9ICRhMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICR4eHJlc3VsdFtdID0gJGEyOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gYWRkIGl0ZW1zIGluIGFycjEgbm90IGluIHJlc3VsdAogICAgZm9yZWFjaCgkYXJyMSBhcyAkYTEpCiAgICB7CiAgICAgIGlmKCAhaXNzZXQoJGExWyduYW1lJ10pICl7Y29udGludWU7fQogICAgICAKICAgICAgJGZvdW5kID0gRkFMU0U7CiAgICAgIGZvcmVhY2goJHh4cmVzdWx0IGFzICRyZXMpCiAgICAgIHsKICAgICAgICBpZigkYTFbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10pCiAgICAgICAgewogICAgICAgICAgJGZvdW5kID0gVFJVRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgaWYoISRmb3VuZCkKICAgICAgewogICAgICAgICR4eHJlc3VsdFtdID0gJGExOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIGFkZCBpdGVtcyBpbiBhcnIyIG5vdCBpbiByZXN1bHQKICAgIGZvcmVhY2goJGFycjIgYXMgJGEyKQogICAgewogICAgICBpZiggIWlzc2V0KCRhMlsnbmFtZSddKSApe2NvbnRpbnVlO30KICAgICAgJGZvdW5kID0gRkFMU0U7CiAgICAgIGZvcmVhY2goJHh4cmVzdWx0IGFzICRyZXMpCiAgICAgIHsKICAgICAgICBpZigkYTJbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10pCiAgICAgICAgewogICAgICAgICAgJGZvdW5kID0gVFJVRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICBpZighJGZvdW5kKQogICAgICB7CiAgICAgICAgJHh4cmVzdWx0W10gPSAkYTI7CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICR4eHJlc3VsdDsKICB9CiAgCiAgZnVuY3Rpb24gY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5KCRlMSwgJGUyKQogIHsKICAgIGlmKCRlMVsnc29ydF9rZXknXSA8ICRlMlsnc29ydF9rZXknXSkKICAgIHsKICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgZWxzZSBpZigkZTFbJ3NvcnRfa2V5J10gPiAkZTJbJ3NvcnRfa2V5J10pCiAgICB7CiAgICAgIHJldHVybiAxOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBpbXBsb2RlX3dpdGhfa2V5KCRhc3NvYywgJGluZ2x1ZSA9ICc9JywgJG91dGdsdWUgPSAnJicpCiAgewogICAgJHJldHVybiA9IE5VTEw7CiAgICBmb3JlYWNoKCRhc3NvYyBhcyAkdGsgPT4gJHR2KQogICAgewogICAgICAkcmV0dXJuIC49ICRvdXRnbHVlIC4gJHRrIC4gJGluZ2x1ZSAuICR0djsKICAgIH0KICAgIAogICAgcmV0dXJuIHN1YnN0cigkcmV0dXJuLCBzdHJsZW4oJG91dGdsdWUpKTsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBteUNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkbmFtZSwgJHZhbHVlID0gJycsICRzZWxlY3RlZHZhbHVlID0gJycsICRhZGR0dGV4dCA9ICcnKQogIHsKICAgICR0ZXh0ID0gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyIgdmFsdWU9IicgLiAkdmFsdWUgLiAnIic7CiAgICAkYXJyICA9IGV4cGxvZGUoIiwiLCAkc2VsZWN0ZWR2YWx1ZSk7CiAgICBmb3JlYWNoKCRhcnIgYXMgJGEpCiAgICB7CiAgICAgIGlmKCRhID09ICR2YWx1ZSkKICAgICAgewogICAgICAgICR0ZXh0IC49ICcgJyAuICdjaGVja2VkPSJjaGVja2VkIic7CiAgICAgIH0KICAgIH0KICAgIGlmKCRhZGR0dGV4dCAhPSAnJykKICAgIHsKICAgICAgJHRleHQgLj0gJyAnIC4gJGFkZHR0ZXh0OwogICAgfQogICAgJHRleHQgLj0gIiAvPlxuIjsKICAgIAogICAgcmV0dXJuICR0ZXh0OwogIH0KICAKfSAvLyBFbmQgb2YgY2xhc3M=]]></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+IE5VTEwKICBdOwogICAgcHJpdmF0ZSAkX25ld19wYXNzd29yZDsKICAgIHByaXZhdGUgJF9wcm9wczsKICAgIHByaXZhdGUgJF9ncm91cHM7IC8vIGxhenkgbG9hZGVkLgogICAgcHJpdmF0ZSAkX2RpcnR5OwogIAogICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCgka2V5KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X19nZXQoJGtleSk7CiAgICB9CiAgCiAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0U2V0KCRrZXksJHZhbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9fc2V0KCRrZXksJHZhbCk7CiAgICB9CiAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0VW5zZXQoJGtleSkgeyAvKiBkbyBub3RoaW5nICovIH0KICAKICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRFeGlzdHMoJGtleSkgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ3VzZXJuYW1lJzoKICAgICAgICAgICAgcmV0dXJuIFx0cmltKChzdHJpbmcpJHRoaXMtPl9kYXRhWyRrZXldKTsKCiAgICAgICAgY2FzZSAnY3JlYXRlZGF0ZV90cyc6CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9kYXRhWydjcmVhdGVkYXRlJ10gKSByZXR1cm4gMDsKICAgICAgICAgICAgJGRiID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldERiKCk7CiAgICAgICAgICAgIHJldHVybiAkZGItPlVuaXhUaW1lU3RhbXAoJHRoaXMtPl9kYXRhWydjcmVhdGVkYXRlJ10pOwoKICAgICAgICBjYXNlICdjcmVhdGVkYXRlX3N0cic6IC8vIGRiIGRhdGUKICAgICAgICAgICAgcmV0dXJuIHRyaW0oKHN0cmluZykkdGhpcy0+X2RhdGFbJ2NyZWF0ZWRhdGUnXSk7CgogICAgICAgIGNhc2UgJ2V4cGlyZXNfdHMnOgogICAgICAgICAgICBpZiggISR0aGlzLT5fZGF0YVsnZXhwaXJlcyddICkgcmV0dXJuIDA7CiAgICAgICAgICAgICRkYiA9IFxDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXREYigpOwogICAgICAgICAgICByZXR1cm4gJGRiLT5Vbml4VGltZVN0YW1wKCR0aGlzLT5fZGF0YVsnZXhwaXJlcyddKTsKCiAgICAgICAgY2FzZSAnZXhwaXJlc19zdHInOiAvLyBkYiBkYXRlCiAgICAgICAgICAgIHJldHVybiB0cmltKChzdHJpbmcpJHRoaXMtPl9kYXRhWydleHBpcmVzJ10pOwoKICAgICAgICBjYXNlICdub25zdGQnOgogICAgICAgIGNhc2UgJ2Rpc2FibGVkJzoKICAgICAgICBjYXNlICdmb3JjZV9uZXdwdyc6CiAgICAgICAgY2FzZSAnZm9yY2VfY2hzZXR0aW5ncyc6CiAgICAgICAgY2FzZSAnbXVzdF92YWxpZGF0ZSc6CiAgICAgICAgY2FzZSAnbG9nZ2VkaW4nOgogICAgICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBtZW1iZXIgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfZXhwaXJlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgovLyB0aGlzIGNsYXNzIGFpZHMgaW4gYWRkaW5nIG9yIGVkaXRpbmcgYSB1c2VyCi8vIGl0IGVuY2Fwc3VsYXRlcyB0aGUgcmVhZCBvbmx5IHVzZXIgb2JqZWN0LgovLyBhbmQgcHJvdmlkZXMgZWRpdGluZyBhbmQgc2F2aW5nIGZ1bmN0aW9uYWxpdHkuCmNsYXNzIHVzZXJfZWRpdF9hc3Npc3RhbnQKewogIHByaXZhdGUgJF91c2VyOwogIHByaXZhdGUgJF9uZXdfdWlkOwogIHByaXZhdGUgJF9uZXdfdXNlcm5hbWU7CiAgcHJpdmF0ZSAkX25ld19wYXNzd29yZDsKICBwcml2YXRlICRfcmVwZWF0X3Bhc3N3b3JkOwogIHByaXZhdGUgJF9kcmFmdF9ncm91cHM7CiAgcHJpdmF0ZSAkX2RyYWZ0X3Byb3BzOwogIHByaXZhdGUgJF9leHBpcmVzOwogIHByaXZhdGUgJF9jcmVhdGVkYXRlOwogIHByaXZhdGUgJF9pc19kaXNhYmxlZDsKICBwcml2YXRlICRfZm9yY2VfcGFzc3dvcmRfY2hhbmdlOwogIHByaXZhdGUgJF9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3M7CiAgcHJpdmF0ZSAkX211c3RfdmFsaWRhdGU7CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR1c2VyX2lkKQogIHsKICAgICRtb2QgICAgID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgICR1c2VyX2lkID0gKGludCkkdXNlcl9pZDsKICAgIAogICAgaWYoJHVzZXJfaWQgPCAxKQogICAgewogICAgICAvLyBhIGJyYW5kIG5ldyB1c2VyLi4uIHNldCBzb21lIGRlZmFsdCB2YWx1ZXMuCiAgICAgICR1c2VyID0gbmV3IHVzZXI7CiAgICAgIAogICAgICBpZigkbW9kLT5HZXRQcmVmZXJlbmNlKCd1c2VfcmFuZG9tdXNlcm5hbWUnKSkKICAgICAgewogICAgICAgICR0aGlzLT5uZXdfdXNlcm5hbWUgPSAkbW9kLT5HZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRkZmx0X2dyb3VwID0gKGludCkkbW9kLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJyk7CiAgICAgICRvbmVfZ3JvdXAgID0gKGJvb2wpJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpOwogICAgICAkZ3JvdXBzICAgICA9ICRtb2QtPkdldEdyb3VwTGlzdCgpOwogICAgICAKICAgICAgJGdyb3VwcyA9IFxhcnJheV9mbGlwKCRncm91cHMpOyAvLyBpdCdzIGJhY2t3YXJkcyBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgogICAgICAKICAgICAgaWYoJGRmbHRfZ3JvdXApCiAgICAgIHsKICAgICAgICBpZihpc3NldCgkZ3JvdXBzWyRkZmx0X2dyb3VwXSkpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHNbXSA9ICRkZmx0X2dyb3VwOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmKCRvbmVfZ3JvdXApCiAgICAgIHsKICAgICAgICAka2V5cyAgICAgICAgICAgICAgICAgID0gYXJyYXlfa2V5cygkZ3JvdXBzKTsKICAgICAgICAkdGhpcy0+X2RyYWZ0X2dyb3Vwc1tdID0gJGtleXNbMF07CiAgICAgIH0KICAgICAgCiAgICAgICR0bXAgICAgICAgICAgICA9IChpbnQpJG1vZC0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlYWdlX21vbnRocycsIDUyMCk7CiAgICAgICR0aGlzLT5fZXhwaXJlcyA9IHN0cnRvdGltZSgiK3skdG1wfSBtb250aHMgMDA6MDAiKTsKICAgICAgCiAgICAgIGlmKCEkdGhpcy0+X2V4cGlyZXMgfHwgJHRtcCA9PSAwKQogICAgICB7CiAgICAgICAgJHRoaXMtPl9leHBpcmVzID0gUEhQX0lOVF9NQVg7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHVzZXIgICAgICAgICAgICAgICAgPSB1c2VyOjpsb2FkKCR1c2VyX2lkKTsKICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHMgPSAkdXNlci0+Z2V0X2dyb3VwcygpOwogICAgICAkdGhpcy0+X2NyZWF0ZWRhdGUgICA9ICR1c2VyLT5jcmVhdGVkYXRlX3RzOwogICAgICAkdGhpcy0+X2V4cGlyZXMgICAgICA9ICR1c2VyLT5leHBpcmVzX3RzOwogICAgfQogICAgJHRoaXMtPl9kcmFmdF9wcm9wcyA9ICR1c2VyLT5nZXRfcHJvcGVydGllcygpOwogICAgJHRoaXMtPl91c2VyICAgICAgICA9ICR1c2VyOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkKICB7CiAgICBzd2l0Y2goJGtleSkKICAgIHsKICAgICAgY2FzZSAnaWQnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9uZXdfdWlkKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPl91c2VyLT5pZDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbmV3X3VpZDsKICAgICAgCiAgICAgIGNhc2UgJ25ld191c2VybmFtZSc6CiAgICAgICAgaWYoISR0aGlzLT5fbmV3X3VzZXJuYW1lKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VzZXItPnVzZXJuYW1lOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHRoaXMtPl9uZXdfdXNlcm5hbWU7CiAgICAgIAogICAgICBjYXNlICduZXdfcGFzc3dvcmQnOgogICAgICAgIHJldHVybiAkdGhpcy0+X25ld19wYXNzd29yZDsKICAgICAgCiAgICAgIGNhc2UgJ3JlcGVhdF9wYXNzd29yZCc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVwZWF0X3Bhc3N3b3JkOwogICAgICAKICAgICAgY2FzZSAnY3JlYXRlZGF0ZSc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5fY3JlYXRlZGF0ZTsKICAgICAgCiAgICAgIGNhc2UgJ2V4cGlyZXMnOgogICAgICAgIHJldHVybiAkdGhpcy0+X2V4cGlyZXM7CiAgICAgIAogICAgICBjYXNlICdmb3JjZV9wYXNzd29yZF9jaGFuZ2UnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2UpKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VzZXItPmZvcmNlX25ld3B3OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2U7CiAgICAgIAogICAgICBjYXNlICdmb3JjZV9jaGFuZ2Vfc2V0dGluZ3MnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3MpKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VzZXItPmZvcmNlX2Noc2V0dGluZ3M7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkdGhpcy0+X2ZvcmNlX2NoYW5nZV9zZXR0aW5nczsKICAgICAgCiAgICAgIGNhc2UgJ211c3RfdmFsaWRhdGUnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9tdXN0X3ZhbGlkYXRlKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPl91c2VyLT5tdXN0X3ZhbGlkYXRlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHRoaXMtPl9tdXN0X3ZhbGlkYXRlOwogICAgICAKICAgICAgY2FzZSAnaXNfZGlzYWJsZWQnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9pc19kaXNhYmxlZCkpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICR0aGlzLT5fdXNlci0+ZGlzYWJsZWQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkdGhpcy0+X2lzX2Rpc2FibGVkOwogICAgICAKICAgICAgY2FzZSAndmVyaWZ5Y29kZSc6CiAgICAgICAgLy8gZ2V0dGFibGUgb25seQogICAgICAgIGlmKCR0aGlzLT5pZCA+IDEpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICRtYW1zLT5HZXRVc2VyVGVtcENvZGUoJHRoaXMtPmlkKTsKICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gJHRoaXMtPl91c2VyLT5fX2dldCgka2V5KTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRrZXksICR2YWwpCiAgewogICAgc3dpdGNoKCRrZXkpCiAgICB7CiAgICAgIGNhc2UgJ25ld191c2VybmFtZSc6CiAgICAgICAgJHRoaXMtPl9uZXdfdXNlcm5hbWUgPSB0cmltKCR2YWwpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ25ld19wYXNzd29yZCc6CiAgICAgICAgJHRoaXMtPl9uZXdfcGFzc3dvcmQgPSAkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3JlcGVhdF9wYXNzd29yZCc6CiAgICAgICAgJHRoaXMtPl9yZXBlYXRfcGFzc3dvcmQgPSAkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICAgICR0aGlzLT5fY3JlYXRlZGF0ZSA9IChpbnQpJHZhbDsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdleHBpcmVzJzoKICAgICAgICAkdGhpcy0+X2V4cGlyZXMgPSAoaW50KSR2YWw7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnaXNfZGlzYWJsZWQnOgogICAgICAgICR0aGlzLT5faXNfZGlzYWJsZWQgPSAoYm9vbCkkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2ZvcmNlX3Bhc3N3b3JkX2NoYW5nZSc6CiAgICAgICAgJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2UgPSAoYm9vbCkkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2ZvcmNlX2NoYW5nZV9zZXR0aW5ncyc6CiAgICAgICAgJHRoaXMtPl9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3MgPSAoYm9vbCkkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ211c3RfdmFsaWRhdGUnOgogICAgICAgICR0aGlzLT5fbXVzdF92YWxpZGF0ZSA9IChib29sKSR2YWw7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICAkdGhpcy0+X3VzZXItPl9fc2V0KCRrZXksICR2YWwpOwogICAgICBicmVhazsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICB7CiAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgIGlmKCR0aGlzLT5fdXNlci0+aWQgPCAxKQogICAgewogICAgICAvLyBuZXcgdXNlcgogICAgICAvLyBtdXN0IGhhdmUgYSB1c2VybmFtZSwgYW5kIGl0IG11c3QgYmUgdmFsaWQKICAgICAgaWYoISRtb2QtPklzVmFsaWRVc2VybmFtZSgkdGhpcy0+bmV3X3VzZXJuYW1lKSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXNlcm5hbWUnKSk7CiAgICAgIH0KICAgICAgJHRfdWlkID0gJG1vZC0+R2V0VXNlcklEKCR0aGlzLT5uZXdfdXNlcm5hbWUpOwogICAgICAKICAgICAgaWYoJHRfdWlkID4gMCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIG11c3QgaGF2ZSBhIHBhc3N3b3JkLCBhbmQgaXQgbXVzdCBiZSB2YWxpZAogICAgICBpZighJHRoaXMtPm5ld19wYXNzd29yZCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgIH0KICAgICAgCiAgICAgIGlmKCEkbW9kLT5pc1ZhbGlkUGFzc3dvcmQoJHRoaXMtPm5ld19wYXNzd29yZCkpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgICB9CiAgICAgIAogICAgICAvLyByZXBlYXQgcGFzc3dvcmQgbXVzdCBiZSB2YWxpZC4KICAgICAgaWYoJHRoaXMtPm5ld19wYXNzd29yZCAhPSAkdGhpcy0+cmVwZWF0X3Bhc3N3b3JkKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnKSk7CiAgICAgIH0KICAgICAgCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIC8vIGVkaXRpbmcgYSB1c2VyLgogICAgICAvLyBpZiB3ZSBoYXZlIGEgdXNlcm5hbWUsIGl0IG11c3QgYmUgdmFsaWQgKGNoYW5naW5nIHVzZXJuYW1lKQogICAgICBpZigkdGhpcy0+X25ld191c2VybmFtZSAmJiAhJG1vZC0+SXNWYWxpZFVzZXJuYW1lKCR0aGlzLT5fbmV3X3VzZXJuYW1lLCBGQUxTRSkpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHVzZXJuYW1lJykpOwogICAgICB9CiAgICAgICR0X3VpZCA9ICRtb2QtPkdldFVzZXJJRCgkdGhpcy0+bmV3X3VzZXJuYW1lKTsKICAgICAgaWYoJHRfdWlkID4gMCAmJiAkdF91aWQgIT0gJHRoaXMtPl91c2VyLT5pZCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIGlmIHdlIGhhdmUgYSBwYXNzd29yZCwgaXQgbXVzdCBiZSB2YWxpZCwgYW5kIHJlcGVhdCBtdXN0IG1hdGNoCiAgICAgIGlmKCR0aGlzLT5uZXdfcGFzc3dvcmQpCiAgICAgIHsKICAgICAgICBpZighJG1vZC0+aXNWYWxpZFBhc3N3b3JkKCR0aGlzLT5uZXdfcGFzc3dvcmQpKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHJlcGVhdCBwYXNzd29yZCBtdXN0IGJlIHZhbGlkLgogICAgICAgIGlmKCR0aGlzLT5uZXdfcGFzc3dvcmQgIT0gJHRoaXMtPnJlcGVhdF9wYXNzd29yZCkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gbmVlZCBhIHZhbGlkIGV4cGlyeSBkYXRlIHdoZW4gYWRkaW5nL2VkaXRpbmcgYSB1c2VyLgogICAgaWYoISR0aGlzLT5leHBpcmVzKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnKSk7CiAgICB9CiAgICAKICAgIC8vIGlmIHJlcXVpcmUgbWVtYmVyc2hpcCBpbiBvbmUgZ3J1b3AsIG1ha2Ugc3VyZSB3ZSBoYXZlIG9uZS4KLy8gICAgaWYoJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpICYmIGNvdW50KCR0aGlzLT5fZHJhZnRfZ3JvdXBzKSA8IDEpCi8vICAgIHsKLy8gICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVleGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCcpKTsKLy8gICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0X2dyb3VwcygkZ3JvdXBzID0gTlVMTCkKICB7CiAgICBpZihpc19udWxsKCRncm91cHMpKQogICAgewogICAgICAkdGhpcy0+X2RyYWZ0X2dyb3VwcyA9IFtdOwogICAgICAKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYoIWlzX2FycmF5KCRncm91cHMpIHx8ICFjb3VudCgkZ3JvdXBzKSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBncm91cCBhcnJheSBwYXNzZWQgdG8gJyAuIF9fTUVUSE9EX18pOwogICAgfQogICAgJHRtcCA9IFtdOwogICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvbmUpCiAgICB7CiAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgIGlmKCRvbmUgPCAxKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYoIWluX2FycmF5KCRvbmUsICR0bXApKQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJG9uZTsKICAgICAgfQogICAgfQogICAgJHRtcCAgICAgICAgICAgICAgICAgPSBhcnJheV91bmlxdWUoJHRtcCk7CiAgICAkdGhpcy0+X2RyYWZ0X2dyb3VwcyA9ICR0bXA7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBtZW1iZXJvZigkZ2lkKQogIHsKICAgICRnaWQgPSAoaW50KSRnaWQ7CiAgICBpZigkZ2lkIDwgMSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBnaWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgcmV0dXJuIChpc19hcnJheSgkdGhpcy0+X2RyYWZ0X2dyb3VwcykgJiYgaW5fYXJyYXkoJGdpZCwgJHRoaXMtPl9kcmFmdF9ncm91cHMpKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cHMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2RyYWZ0X2dyb3VwczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldF9wcm9wZXJ0eSgkbmFtZSwgJHZhbCkKICB7CiAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgaWYoISRuYW1lKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgICR0aGlzLT5fZHJhZnRfcHJvcHNbJG5hbWVdID0gKHN0cmluZykkdmFsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Byb3BlcnR5KCRuYW1lKQogIHsKICAgICRuYW1lID0gdHJpbSgkbmFtZSk7CiAgICBpZighJG5hbWUpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgbmFtZSBwYXNzZWQgdG8gJyAuIF9fTUVUSE9EX18pOwogICAgfQogICAgaWYoaXNzZXQoJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBlcmFzZV9wcm9wZXJ0eSgkbmFtZSkKICB7CiAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgaWYoISRuYW1lKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIGlmKGlzc2V0KCR0aGlzLT5fZHJhZnRfcHJvcHNbJG5hbWVdKSkKICAgIHsKICAgICAgdW5zZXQoJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0pOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gY2FuX3ZhbGlkYXRlKCkKICB7CiAgICAvLyB0ZXN0IGlmIHRoZXJlIGlzIGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgdGhpcyB1c2VyIHRvIGJlIGFibGUgdG8gcmUtdmFsaWRhdGUgaGltc2VsZgogICAgaWYoJHRoaXMtPmlkIDwgMSkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICAkbWFtcyA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCk7CiAgICBpZigkbWFtcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkKICAgIHsKICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CiAgICAKICAgICRwcm9wcyA9IFxtYW1zX3V0aWxzOjpnZXRfcHJvcGVydGllc19mb3JfZ3JvdXBzKCR0aGlzLT5nZXRfZ3JvdXBzKCkpOwogICAgaWYoIWNvdW50KCRwcm9wcykpCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgICRhbGxkZWZucyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAkZm5kICAgICAgPSBOVUxMOwogICAgZm9yZWFjaCgkcHJvcHMgYXMgJHByb3ApCiAgICB7CiAgICAgICRwcm9wX25hbWUgPSAkcHJvcFsnbmFtZSddOwogICAgICBpZihpc3NldCgkYWxsZGVmbnNbJHByb3BfbmFtZV0pICYmICRhbGxkZWZuc1skcHJvcF9uYW1lXVsndHlwZSddID09IDIpCiAgICAgIHsKICAgICAgICAkdmFsID0gJHRoaXMtPmdldF9wcm9wZXJ0eSgkcHJvcF9uYW1lKTsKICAgICAgICBpZigkdmFsKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzdG9yZSgpCiAgewogICAgJGtleSAgICAgICAgICAgID0gXG1kNShfX0ZJTEVfXyk7CiAgICAkX1NFU1NJT05bJGtleV0gPSBcc2VyaWFsaXplKCR0aGlzKTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZSgpCiAgewogICAgJGtleSA9IFxtZDUoX19GSUxFX18pOwogICAgCiAgICBpZighaXNzZXQoJF9TRVNTSU9OWyRrZXldKSkKICAgIHsKICAgICAgcmV0dXJuIE5VTEw7CiAgICB9CiAgICAkb2JqID0gXHVuc2VyaWFsaXplKCRfU0VTU0lPTlska2V5XSk7CiAgICB1bnNldCgkX1NFU1NJT05bJGtleV0pOwogICAgCiAgICByZXR1cm4gJG9iajsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogIHsKICAgICR1aWQgPSAkdGhpcy0+aWQ7CiAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgIAogICAgaWYoJHVpZCA8IDEpCiAgICB7CiAgICAgIC8vIGFkZGluZyBhIG5ldyB1c2VyCiAgICAgICRyZXQgPSAkbW9kLT5BZGRVc2VyKCR0aGlzLT5uZXdfdXNlcm5hbWUsICR0aGlzLT5uZXdfcGFzc3dvcmQsICR0aGlzLT5leHBpcmVzLCBGQUxTRSwgJHRoaXMtPmNyZWF0ZWRhdGUpOwogICAgICAKICAgICAgaWYoIWlzX2FycmF5KCRyZXQpIHx8ICRyZXRbMF0gPT0gRkFMU0UpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJldFsxXSk7CiAgICAgIH0KICAgICAgCiAgICAgICR1aWQgPSAkdGhpcy0+X25ld191aWQgPSAoaW50KSRyZXRbMV07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIC8vIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHVzZXIKICAgICAgJHJlcyA9ICRtb2QtPlNldFVzZXIoJHVpZCwgJHRoaXMtPm5ld191c2VybmFtZSwgJHRoaXMtPm5ld19wYXNzd29yZCwgJHRoaXMtPmV4cGlyZXMpOwogICAgICAKICAgICAgaWYoIWlzX2FycmF5KCRyZXMpIHx8ICRyZXNbMF0gPT0gRkFMU0UpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Vycm9yIHNldHRpbmcgdXNlciAnIC4gJHJlc1sxXSk7CiAgICAgIH0KICAgIH0KICAgIAogICAgJG1vZC0+U2V0VXNlckRpc2FibGVkKCR1aWQsICR0aGlzLT5pc19kaXNhYmxlZCk7CiAgICAkbW9kLT5Gb3JjZVBhc3N3b3JkQ2hhbmdlKCR1aWQsICR0aGlzLT5mb3JjZV9wYXNzd29yZF9jaGFuZ2UpOwogICAgJG1vZC0+Rm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCAkdGhpcy0+Zm9yY2VfY2hhbmdlX3NldHRpbmdzKTsKICAgICRtb2QtPkZvcmNlVmVyaWZ5KCR1aWQsICR0aGlzLT5tdXN0X3ZhbGlkYXRlKTsKICAgIAogICAgLy8gZG8gdGhpcywganVzdCBpIG4gY2FzZS4KICAgICRtb2QtPlJlbW92ZVVzZXJUZW1wQ29kZSgkdWlkKTsKICAgIAogICAgLy8gYWRkIHRoZSB1c2VyIHRvIGhpcyBncm91cHMKICAgICRyZXQgPSAkbW9kLT5TZXRVc2VyR3JvdXBzKCR1aWQsICR0aGlzLT5fZHJhZnRfZ3JvdXBzKTsKICAgIGlmKCFpc19hcnJheSgkcmV0KSB8fCAkcmV0WzBdID09IEZBTFNFKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfY2FudGFzc2lnbnVzZXInKSk7CiAgICB9CiAgICAKICAgIC8vIGFuZCB0aGVuIGFkZCBoaXMgcHJvcGVydGllcy4KICAgIC8vJG1vZC0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCggJycsICR1aWQsIFRSVUUgKTsgLy8gREVMRVRFIEFMTCBQUk9QRVJUSUVTCiAgICBpZihjb3VudCgkdGhpcy0+X2RyYWZ0X3Byb3BzKSkKICAgIHsKICAgICAgZm9yZWFjaCgkdGhpcy0+X2RyYWZ0X3Byb3BzIGFzICRwcm9wX25hbWUgPT4gJHZhbCkKICAgICAgewogICAgICAgICRyZXQgPSAkbW9kLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wX25hbWUsICR2YWwsICR1aWQpOwogICAgICAgIGlmKCEkcmV0KQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignRXJyb3IgU2V0dGluZyBwcm9wZXJ0eSAnIC4gJHByb3BfbmFtZSAuICcgdG8gJyAuICR2YWwgLiAnIGZvciB1c2VyICcgLiAkdWlkKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIENtc0V4Y2VwdGlvbjsKdXNlIHh0X3V0aWxzOwoKZmluYWwgY2xhc3MgdXRpbHMKewogICAgcHJpdmF0ZSBzdGF0aWMgJF9tb2Q7CiAgICBwcml2YXRlIHN0YXRpYyAkX3VzZXJmaWxlczsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tb2QoKQogICAgewogICAgICAgIGlmKCAhc2VsZjo6JF9tb2QgKQogICAgICAgIHsKICAgICAgICAgIHNlbGY6OiRfbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShcTU9EX01BTVMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gc2VsZjo6JF9tb2Q7CiAgICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZV9yYW5kb21fcHJpbnRhYmxlX3N0cmluZygpCiAgewogICAgJGNvZGUgPSBcc3RydG91cHBlcihcc3Vic3RyKFxtZDUoX19GSUxFX18gLiBcc2Vzc2lvbl9pZCgpIC4gXHJhbmQoKSAuIFxtaWNyb3RpbWUoVFJVRSkpLCAwLCAyNSkpOwogICAgCiAgICByZXR1cm4gJGNvZGU7CiAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXNpbmdfc3RkX2NvbnN1bWVyKCkKICAgIHsKICAgICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgICAkbmFtZSA9ICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsJycpOwogICAgICAgIGlmKCcnID09ICRuYW1lIHx8ICdfX0JVSUxUSU5fXycgPT0gJG5hbWUpIHsgcmV0dXJuIFRSVUU7IH0KICAgICAgICAKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAmZ2V0X3N0ZF9jb25zdW1lcigpCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBcbWFtc19zdGRfY29uc3VtZXIoKTsKICAgICAgICByZXR1cm4gJG9iajsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9hdXRoX2NvbnN1bWVyKCkKICAgIHsKICAgICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgICAkbmFtZSA9ICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsJycpOwogICAgICAgIAogICAgICAgIGlmKCcnID09ICRuYW1lIHx8ICdfX0JVSUxUSU5fXycgPT0gJG5hbWUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6Z2V0X3N0ZF9jb25zdW1lcigpOwogICAgICAgIH0KCiAgICAgICAgJG1vZHVsZSA9IHh0X3V0aWxzOjpnZXRfbW9kdWxlKCRuYW1lKTsKICAgICAgICAkcmVzID0gbnVsbDsKICAgICAgICBpZiggXGlzX29iamVjdCgkbW9kdWxlKSApCiAgICAgICAgewogICAgICAgICAgICAkb2JqID0gJG1vZHVsZS0+R2V0TUFNU0F1dGhDb25zdW1lcigpOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICRvYmo7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0X3N0ZF9jb25zdW1lcigpOwogICAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJsaXN0KCRub25lID0gTlVMTCkKICB7CiAgICBzdGF0aWMgJGxpc3Q7CiAgICBpZighXGlzX2FycmF5KCRsaXN0KSkKICAgIHsKICAgICAgJGxpc3QgPSBbXTsKICAgICAgCiAgICAgIC8vIG5vdyBhZGQgaW4gbWFtcyB1c2VycwogICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgaWYoXGlzX29iamVjdCgkbWFtcykpCiAgICAgIHsKICAgICAgICAkcXVlcnkgPSBuZXcgXG1hbXNfdXNlcl9xdWVyeTsKICAgICAgICAKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfT1BUOjpNQVRDSF9OT1RFWFBJUkVEKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfT1BUOjpNQVRDSF9OT1RESVNBQkxFRCk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUUpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgICAgCiAgICAgICAgJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAgICAgCiAgICAgICAgaWYoJHJzLT5nZXRfZm91bmRfcm93cygpID4gMCAmJiAkbm9uZSkKICAgICAgICB7CiAgICAgICAgICAkbGlzdFsnJ10gPSAkbWFtcy0+TGFuZygnbm9uZScpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB3aGlsZSghJHJzLT5FT0YoKSkKICAgICAgICB7CiAgICAgICAgICAkbGlzdFskcnMtPmZpZWxkc1snaWQnXV0gPSAkcnMtPmZpZWxkc1sndXNlcm5hbWUnXTsKICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICRsaXN0OwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF90ZW1wbGF0ZSgkcGFyYW1zLCAka2V5LCAkdHlwZW5hbWUpCiAgewogICAgaWYoJGtleSkKICAgIHsKICAgICAgJHRwbCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAka2V5KTsKICAgICAgaWYoJHRwbCkgeyByZXR1cm4gJHRwbDsgfQogICAgfQogICAgCiAgICAkdHBsID0gXENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgkdHlwZW5hbWUpOwogICAgCiAgICBpZigkdHBsKSB7IHJldHVybiAkdHBsLT5nZXRfbmFtZSgpOyB9CiAgICAKICAgIFxhdWRpdCgnJywgJ01BTVMnLCAnTm8gZGVmYXVsdCB0ZW1wbGF0ZSBvZiB0eXBlICcgLiAkdHlwZW5hbWUgLiAnIGZvdW5kJyk7CiAgICAKICAgIHJldHVybiAnJzsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja1VwbG9hZCgka2V5KQogIHsKICAgICRtb2QgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAKICAgIGlmKCFpc3NldCgkX0ZJTEVTWyRrZXldKSB8fCAhaXNzZXQoJF9GSUxFUykpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX21pc3NpbmdfdXBsb2FkJyldOwogICAgfQogICAgCiAgICAkZmlsZSA9ICRfRklMRVNbJGtleV07CiAgICAKICAgIGlmKCFpc3NldCgkZmlsZVsnbmFtZSddLCAkZmlsZVsnc2l6ZSddKSB8fCAwID09PSAkZmlsZVsnc2l6ZSddKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kLT5MYW5nKCdlcnJvcl9wcm9ibGVtX3VwbG9hZCcpXTsKICAgIH0KICAgIAogICAgaWYoIWlzc2V0ICgkZmlsZVsndHlwZSddKSkgeyAkZmlsZVsndHlwZSddID0gJyc7IH0KICAgIAogICAvLyBpZighaXNzZXQgKCRmaWxlWydzaXplJ10pKSB7ICRmaWxlWydzaXplJ10gPSAnJzsgfSAjIHJlZHVuZGFudD8KICAgIAogICAgaWYoIWlzc2V0ICgkZmlsZVsndG1wX25hbWUnXSkpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJyldOwogICAgfQogICAgCiAgICAjIHJlY2VudGx5IGNoYW5nZWQ6IGtlZXAgYW4gZXllIG9uIHRoZSBuZXh0IHR3byBsaW5lcyAoSk0pCiAgICAkYWxsb3dlZENoYXJzID0gJ2EtekEtWjAtOS4kJVwnYFwtQHt9fiEjKCkmX14rPSonOwogICAgJGZpbGVbJ25hbWUnXSA9IFxwcmVnX3JlcGxhY2UoJy9bXicgLiAkYWxsb3dlZENoYXJzIC4gJ10vJywgJ18nLCBcc3RyX3JlcGxhY2UoWycgJywgJyUyMCddLCAnXycsICRmaWxlWyduYW1lJ10pKTsKCiAgICAvLyBjaGVjayB0aGUgZmlsZW5hbWUKICAgIGlmKCEkbW9kLT5pc19hbGxvd2VkX3VwbG9hZCgkZmlsZVsnbmFtZSddKSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGZpbGVleHRlbnNpb24nKV07CiAgICB9CiAgICAKICAgIHJldHVybiBbVFJVRV07CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3Byb3BlcnRpZXNfZm9yX2dyb3VwcygkZ3JvdXBsaXN0KQogIHsKICAgICRvdXQgPSBbXTsKICAgIGZvcmVhY2goJGdyb3VwbGlzdCBhcyAkZ2lkKQogICAgewogICAgICAkZ2lkID0gKGludCkkZ2lkOwogICAgICBpZigkZ2lkIDwgMSkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgJHJlbGF0aW9ucyA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICAgICRvdXQgICAgICAgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCRvdXQsICRyZWxhdGlvbnMpOwogICAgfQogICAgCiAgICAvL1x1YXNvcnQoJG91dCwgWyd4dF9hcnJheScsICdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknXSk7CiAgICAKICAgIFx1c29ydCgKICAgICAgJG91dCwgZnVuY3Rpb24oJGEsICRiKQogICAgewogICAgICAkY21wID0gKCRhWydzb3J0X2tleSddID8/IDApIDw9PiAoJGJbJ3NvcnRfa2V5J10gPz8gMCk7CiAgICAgIGlmKCRjbXAgIT09IDApIHsgcmV0dXJuICRjbXA7IH0KICAgICAgCiAgICAgICRjbXAgPSAoJGFbJ2dyb3VwX2lkJ10gPz8gMCkgPD0+ICgkYlsnZ3JvdXBfaWQnXSA/PyAwKTsKICAgICAgaWYoJGNtcCAhPT0gMCkgeyByZXR1cm4gJGNtcDsgfQogICAgICAKICAgICAgcmV0dXJuIFxzdHJjbXAoJGFbJ25hbWUnXSwgJGJbJ25hbWUnXSk7IC8vIHN0YWJsZSBmYWxsYmFjawogICAgfQogICAgKTsKICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJzX2Zyb21fZmlsdGVyKCRmaWx0ZXIsICRvZmZzZXQsICYkdG90YWxfbWF0Y2hlcykKICB7CiAgICAkbGltaXQgICAgICAgICAgPSAkZmlsdGVyWydsaW1pdCddOwogICAgJGdyb3VwaWQgICAgICAgID0gJGZpbHRlclsnZ3JvdXAnXTsKICAgICR1c2VycmVnZXggICAgICA9ICRmaWx0ZXJbJ3JlZ2V4J107CiAgICAkcHJvcGVydHkgICAgICAgPSAkZmlsdGVyWydwcm9wc2VsJ107CiAgICAkcHJvcHJlZ2V4ICAgICAgPSAkZmlsdGVyWydwcm9wdmFsJ107CiAgICAkbG9nZ2VkaW5vbmx5ICAgPSAkZmlsdGVyWydsb2dnZWRpbm9ubHknXTsKICAgICRzb3J0ICAgICAgICAgICA9ICRmaWx0ZXJbJ3NvcnRieSddOwogICAgJGRpc2FibGVkc3RhdHVzID0gJGZpbHRlclsnZGlzYWJsZWRzdGF0dXMnXSA/PyBOVUxMOwogICAgCiAgICAvLyB0b2RvOiB0aGlzIHNob3VsZCBnbyBpbnRvIHRoZSBjb25zdW1lci4KICAgICRxdWVyeSA9IG5ldyBcbWFtc191c2VyX3F1ZXJ5KCk7CiAgICAkcXVlcnktPnNldF9yZXN1bHRfdHlwZShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfVFlQRV9GVUxMKTsKICAgIAogICAgaWYoKGludCkkbGltaXQgPiAwKSB7ICRxdWVyeS0+c2V0X3BhZ2VsaW1pdCgkbGltaXQpOyB9CiAgICAKICAgIGlmKChpbnQpJG9mZnNldCA+IDApIHsgJHF1ZXJ5LT5zZXRfb2Zmc2V0KCRvZmZzZXQpOyB9CiAgICAKICAgIGlmKCRncm91cGlkID4gMCkKICAgIHsKICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwgJGdyb3VwaWQpOwogICAgfQogICAgCiAgICBpZigkdXNlcnJlZ2V4KQogICAgewogICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRV9SRSwgJHVzZXJyZWdleCk7CiAgICB9CiAgICAKICAgIGlmKCRwcm9wZXJ0eSkKICAgIHsKICAgICAgJGRlZm4gPSBzZWxmOjpnZXRfbW9kKCktPkdldFByb3BlcnR5RGVmbigkcHJvcGVydHkpOwogICAgICAkb2JqICA9IE5VTEw7CiAgICAgIAogICAgICAjIGNoYW5nZWQgcmVjZW50bHkga2VlcCBhbiBleWUgb24gdGhpcwogICAgICBpZigoJGRlZm5bJ3R5cGUnXSA9PSBcTUFNUzo6RklFTERUWVBFX0NIRUNLQk9YKSAmJiAnMCcgPT09IFx0cmltKCRwcm9wcmVnZXgpKQogICAgICB7CiAgICAgICAgLy8gbmVlZCB0byB0ZXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBOT1Qgc2V0CiAgICAgICAgJG9iaiA9IG5ldyBcbWFtc191c2VyX3F1ZXJ5X29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTk9USEFTUFJPUEVSVFksICRwcm9wZXJ0eSk7CiAgICAgIH0KICAgICAgCiAgICAgIGlmKCEkb2JqICYmICRwcm9wcmVnZXgpCiAgICAgIHsKICAgICAgICAkb2JqID0gbmV3IFxtYW1zX3VzZXJfcXVlcnlfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9QUk9QRVJUWV9SRSwgJHByb3BlcnR5LCAkcHJvcHJlZ2V4KTsKICAgICAgfQogICAgICAKICAgICAgaWYoJG9iaikgeyAkcXVlcnktPmFkZF9hbmRfb3B0X29iaigkb2JqKTsgfQogICAgfQogICAgCiAgICBpZigkbG9nZ2VkaW5vbmx5KQogICAgewogICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9MT0dHRURJTiwgMSk7CiAgICB9CiAgICAKICAgIHN3aXRjaCgkZGlzYWJsZWRzdGF0dXMpCiAgICB7CiAgICAgIGNhc2UgJ2VuJzoKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RESVNBQkxFRCk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdkaXMnOgogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0RJU0FCTEVEKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICAKICAgIHN3aXRjaCgkc29ydCkKICAgIHsKICAgICAgY2FzZSAndXNlcm5hbWUnOgogICAgICBjYXNlICd1c2VybmFtZSBhc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAndXNlcm5hbWUgZGVzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUUpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnY3JlYXRlZGF0ZSc6CiAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUgYXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9DUkVBVEVEKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnY3JlYXRlZGF0ZSBkZXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9DUkVBVEVEKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9ERVNDKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2V4cGlyZXMnOgogICAgICBjYXNlICdleHBpcmVzIGFzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfRVhQSVJFUyk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfQVNDKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2V4cGlyZXMgZGVzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfRVhQSVJFUyk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyk7CiAgICAgIGJyZWFrOwogICAgfQogICAgCiAgICAkcnMgICAgICAgICAgICA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgJHRvdGFsX21hdGNoZXMgPSAkcnMtPmdldF9mb3VuZF9yb3dzKCk7CiAgICAkZGF0YSAgICAgICAgICA9IFtdOwogICAgd2hpbGUoISRycy0+RU9GKQogICAgewogICAgICAkZGF0YVtdID0gJHJzLT5maWVsZHM7CiAgICAgICRycy0+TW92ZU5leHQoKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRkYXRhOwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVfcHJlZnRwbF90b19wYWdlKCRwcmVmbmFtZSwgJHVpZCwgJGRmbHQgPSBOVUxMKQogIHsKICAgICRwcmVmbmFtZSA9IFx0cmltKCRwcmVmbmFtZSk7CiAgICAkdWlkICAgICAgPSAoaW50KSR1aWQ7CiAgICAKICAgIGlmKCEkcHJlZm5hbWUgfHwgJHVpZCA8IDEpIHsgcmV0dXJuICRkZmx0OyB9CiAgICAKICAgIC8vIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24gbWF5YmUuCiAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICRyZXMgID0gJG1hbXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgCiAgICBpZighXGlzX2FycmF5KCRyZXMpIHx8IEZBTFNFID09ICRyZXNbMF0pIHsgcmV0dXJuICRkZmx0OyB9CiAgICAKICAgICR1aW5mbyAgID0gJHJlc1sxXTsKICAgICR0cGxkYXRhID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJHByZWZuYW1lKTsKICAgIAogICAgaWYoISR0cGxkYXRhKSB7IHJldHVybiAkZGZsdDsgfQogICAgCiAgICAkc21hcnR5ICA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgJHRtcF90cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicgLiAkdHBsZGF0YSk7CiAgICAKICAgICR0bXBfdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywgJHVpbmZvWyd1c2VybmFtZSddKTsKICAgICR0bXBfdHBsLT5hc3NpZ24oJ3VpZCcsICR1aWQpOwogICAgCiAgICAkZ3JvdXBzICAgID0gJG1hbXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwogICAgJGdyb3VwbmFtZSA9IE5VTEw7CiAgICAKICAgIGlmKFxjb3VudCgkZ3JvdXBzKSkKICAgIHsKICAgICAgJGdyb3VwbmFtZSA9ICRtYW1zLT5HZXRHcm91cE5hbWUoJGdyb3Vwc1swXVsnZ3JvdXBpZCddKTsKICAgIH0KICAgIAogICAgJHRtcF90cGwtPmFzc2lnbignZ3JvdXBuYW1lJywgJGdyb3VwbmFtZSk7CiAgICAkcGFnZSA9ICR0bXBfdHBsLT5mZXRjaCgpOwogICAgJGRlc3QgPSAkbWFtcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcGFnZSk7CiAgICAKICAgIGlmKCRkZXN0KSB7IHJldHVybiAkZGVzdDsgfQogICAgCiAgICByZXR1cm4gJGRmbHQ7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F2ZV90ZW1wX2xvZ2luZGF0YSgkdXNlcm5hbWUsICRwYXNzd29yZCwgJG9ubHlncm91cHMpCiAgewogICAgJG9iaiAgICAgICAgICAgICA9IG5ldyBcU3RkQ2xhc3M7CiAgICAkb2JqLT51c2VybmFtZSAgID0gJHVzZXJuYW1lOwogICAgJG9iai0+cGFzc3dvcmQgICA9ICRwYXNzd29yZDsgLy8gcGxhaW4gdGV4dAogICAgJG9iai0+b25seWdyb3VwcyA9ICRvbmx5Z3JvdXBzOwogICAgJGtleSAgICAgICAgICAgICA9IFxtZDUoX19DTEFTU19fIC4gX19GSUxFX18pOwogICAgJGRhdGEgICAgICAgICAgICA9IFx4dF9lbmNyeXB0OjplbmNyeXB0KCRrZXksIFxzZXJpYWxpemUoJG9iaikpOwogICAgJG1hbXMgICAgICAgICAgICA9IHNlbGY6OmdldF9tb2QoKTsKICAgICRtYW1zLT5zZXNzaW9uX3B1dCgka2V5LCAkZGF0YSk7CiAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmV0cmlldmVfdGVtcF9sb2dpbmRhdGEoKQogICAgewogICAgICAgICRrZXkgPSBcbWQ1KF9fQ0xBU1NfXyAuIF9fRklMRV9fKTsKICAgICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgICAkZGF0YSA9ICRtYW1zLT5zZXNzaW9uX2dldCggJGtleSApOwogICAgICAgIAogICAgICAgIGlmKCAhJGRhdGEgKSB7IHJldHVybiBbXTsgfQogICAgICAgIAogICAgICAgICRtYW1zLT5zZXNzaW9uX2NsZWFyKCAka2V5ICk7CiAgICAgICAgJGRhdGEgPSBcdW5zZXJpYWxpemUoXHh0X2VuY3J5cHQ6OmRlY3J5cHQoJGtleSwgJGRhdGEgKSApOwogICAgICAgIAogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KICAgIAogIC8qKgogICAqIEEgaG9vayB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIGEgdXNlciBpcyBkZWxldGVkLgogICAqCiAgICogVGhpcyBob29rIGNoZWNrcyBpZiB0aGVyZSBhcmUgZmlsZXMgdG8gZGVsZXRlIGZvciB0aGlzIHVzZXIgYW5kIHRoYXQgdGhleSBjYW4gYmUgZGVsZXRlZC4KICAgKiBJZiB0aGVyZSBpcyBhbiBlcnJvciwgaXQgdGhyb3dzIGEgUnVudGltZUV4Y2VwdGlvbi4KICAgKgogICAqIEBwYXJhbSBhcnJheSAkcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgaG9vay4KICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIElmIHRoZXJlIGlzIGFuIGluc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJlbW92ZSBhIHVzZXIgZmlsZSBvciB0aHVtYm5haWwuCiAgICogQHJldHVybiBhcnJheSBUaGUgbW9kaWZpZWQgcGFyYW1ldGVycy4KICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhvb2tfb25kZWxldGV1c2VyKCRwYXJhbXMpCiAgewogICAgc2VsZjo6JF91c2VyZmlsZXMgPSBOVUxMOwogICAgJHVpZCAgICAgICAgICAgICAgPSAoaW50KSRwYXJhbXNbJ2lkJ107CiAgICAKICAgIGlmKCR1aWQgPCAxKSB7IHJldHVybiAkcGFyYW1zOyB9CiAgICAKICAgICRmaWxlcyA9IHNlbGY6OmdldF9tb2QoKS0+R2V0VXNlckZpbGVzRnVsbCgkdWlkLCBUUlVFKTsKICAgIAogICAgaWYoISRmaWxlcykgeyByZXR1cm4gJHBhcmFtczsgfQogICAgCiAgICAkcGF0aCA9IHNlbGY6OmdldF9tb2QoKS0+Z2V0X3VwbG9hZF9kaXJuYW1lKCk7CiAgICAKICAgIGZvcmVhY2goJGZpbGVzIGFzICRmaWxlKQogICAgewogICAgICAkZm4gPSAiJHBhdGgvJGZpbGUiOwogICAgICAkdG4gPSAiJHBhdGgvdGh1bWJfeyRmaWxlfSI7CiAgICAgIAogICAgICBpZihcaXNfZmlsZSgkZm4pICYmICFcaXNfd3JpdGFibGUoJGZuKSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW5zdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gcmVtb3ZlIHVzZXIgZmlsZSAkZmlsZSIpOwogICAgICB9CiAgICAgIAogICAgICBpZihcaXNfZmlsZSgkdG4pICYmICFcaXNfd3JpdGFibGUoJHRuKSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW5zdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gcmVtb3ZlIHVzZXIgdGh1bWJuYWlsIGZvciAkZmlsZSIpOwogICAgICB9CiAgICB9CiAgICAKICAgIHNlbGY6OiRfdXNlcmZpbGVzID0gJGZpbGVzOwogICAgCiAgICByZXR1cm4gJHBhcmFtczsKICB9CiAgCiAgLyoqCiAgICogQSBob29rIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gYSB1c2VyIGlzIGRlbGV0ZWQuCiAgICoKICAgKiBUaGlzIGhvb2sgY2hlY2tzIGlmIHRoZXJlIGFyZSBmaWxlcyB0byBkZWxldGUgZm9yIHRoaXMgdXNlciBhbmQgdGhhdCB0aGV5IGNhbiBiZSBkZWxldGVkLgogICAqCiAgICogQHBhcmFtIGFycmF5ICRwYXJhbXMgVGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSBob29rLgogICAqIEByZXR1cm4gYXJyYXkgVGhlIG1vZGlmaWVkIHBhcmFtZXRlcnMuCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBob29rX2FmdGVyZGVsZXRldXNlcigkcGFyYW1zKQogIHsKICAgICR1aWQgPSAoaW50KSRwYXJhbXNbJ2lkJ107CiAgICAKICAgIGlmKCR1aWQgPCAxKSB7IHJldHVybiAkcGFyYW1zOyB9CiAgICBpZighc2VsZjo6JF91c2VyZmlsZXMpIHsgcmV0dXJuICRwYXJhbXM7IH0KICAgIAogICAgJGZpbGVzID0gc2VsZjo6JF91c2VyZmlsZXM7CiAgICAkcGF0aCAgPSBzZWxmOjpnZXRfbW9kKCktPmdldF91cGxvYWRfZGlybmFtZSgpOwogICAgCiAgICBmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZSkKICAgIHsKICAgICAgJGZuID0gIiRwYXRoLyRmaWxlIjsKICAgICAgJHRuID0gIiRwYXRoL3RodW1iX3skZmlsZX0iOwogICAgICAKICAgICAgaWYoXGlzX2ZpbGUoJGZuKSkgeyBAXHVubGluaygkZm4pOyB9CiAgICAgIAogICAgICBpZihcaXNfZmlsZSgkdG4pKSB7IEBcdW5saW5rKCR0bik7IH0KICAgIH0KICAgIAogICAgc2VsZjo6JF91c2VyZmlsZXMgPSBOVUxMOwogICAgCiAgICByZXR1cm4gJHBhcmFtczsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2coJG1lc3NhZ2UgPSAnJykKICB7CiAgICAkbWVzc2FnZSA9IGVtcHR5KCRtZXNzYWdlKSA/ICdbZW1wdHkgbWVzc2FnZV0nIDogJG1lc3NhZ2U7CiAgICAkcm9vdCA9IFxkaXJuYW1lKF9fRklMRV9fLCA0KTsKICAgICRwYXRoID0gJHJvb3Q7CiAgICAkZmlsZV9uYW1lID0gJ01BTVMubG9nJzsKICAgICRmbiA9IGNtc19qb2luX3BhdGgoJHBhdGgsICRmaWxlX25hbWUpOwogICAgCiAgICAkZGF0ZXRpbWUgPSBcZGF0ZSgnWS1tLWQgSDppOnMnKTsKICAgICR0ZXh0ICAgICA9ICRkYXRldGltZSAuICcgOjogJzsKICAgICR0ZXh0ICAgICAuPSAkbWVzc2FnZSAuIFBIUF9FT0w7CiAgICAkdG1wX21heCAgPSBcaW5pX3NldCgnbG9nX2Vycm9yc19tYXhfbGVuJywgMjA0OCk7CiAgICBcZXJyb3JfbG9nKCR0ZXh0LCAzLCAkZm4pOwogICAgLy8gcmVzZXQgdG8gdGhlIG9sZCB2YWx1ZTsKICAgIFxpbmlfc2V0KCdsb2dfZXJyb3JzX21heF9sZW4nLCAkdG1wX21heCk7CiAgfQogIAogIC8qKgogICAqCiAgICogQHBhcmFtICAgICAgJGVtYWlsCiAgICogQHBhcmFtIGludCAgJHVpZAogICAqIEBwYXJhbSBib29sICRjaGVja19leGlzdGluZwogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfdmFsaWRfZW1haWxfYWRkcmVzcygkZW1haWwsICR1aWQgPSAtMSwgJGNoZWNrX2V4aXN0aW5nID0gRkFMU0UpCiAgewogICAgJG1vZHVsZSA9IHNlbGY6OmdldF9tb2QoKTsKICAgICRyZXN1bHQgPSBbXTsKICAgIAogICAgaWYoIVxpc19lbWFpbCgkZW1haWwpKQogICAgewogICAgICAkcmVzdWx0WzBdID0gRkFMU0U7CiAgICAgICRyZXN1bHRbMV0gPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9pbXByb3BlcmVtYWlsZm9ybWF0Jyk7CiAgICAgIAogICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIAogICAgJGRiID0gXGNtc21zKCktPkdldERiKCk7CiAgICAKICAgIGlmKCRjaGVja19leGlzdGluZykKICAgIHsKICAgICAgaWYoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkKICAgICAgewogICAgICAgICRxICAgID0gJ1NFTEVDVCB1c2VybmFtZSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFdIRVJFIHVzZXJuYW1lID0gPyc7CiAgICAgICAgJHBhcm0gPSBbJGVtYWlsXTsKICAgICAgICAKICAgICAgICBpZigkdWlkID4gLTEpCiAgICAgICAgewogICAgICAgICAgJHEgICAgICAuPSAnIEFORCBpZCAhPSA/JzsKICAgICAgICAgICRwYXJtW10gPSAkdWlkOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwYXJtKTsKCiAgICAgICAgaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSkKICAgICAgICB7CiAgICAgICAgICAkcmVzdWx0WzBdID0gRkFMU0U7CiAgICAgICAgICAkcmVzdWx0WzFdID0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZW1haWxhbHJlYWR5dXNlZCcpOwogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZighJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX2VtYWlscycpKQogICAgICB7CiAgICAgICAgJHEgICAgID0gIlNFTEVDVCBkYXRhIEZST00gIiAuIENNU19EQl9QUkVGSVggLiAibW9kdWxlX21hbXNfcHJvcGRlZm4sIiAuCiAgICAgICAgICAgICAgICAgQ01TX0RCX1BSRUZJWCAuICJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIFdIRVJFIG5hbWU9dGl0bGUgQU5EIHR5cGU9MiBBTkQgZGF0YSBMSUtFID8iOwogICAgICAgICRwYXJtcyA9IFskZW1haWxdOwogICAgICAgIAogICAgICAgIGlmKCR1aWQgPiAtMSkKICAgICAgICB7CiAgICAgICAgICAkcSAgICAgICAuPSAnIEFORCB1c2VyaWQgIT0gPyc7CiAgICAgICAgICAkcGFybXNbXSA9ICR1aWQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRlbWFpbF0pOwogICAgICAgIAogICAgICAgIGlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpCiAgICAgICAgewogICAgICAgICAgJHJlc3VsdFswXSA9IEZBTFNFOwogICAgICAgICAgJHJlc3VsdFsxXSA9ICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnKTsKICAgICAgICAgIAogICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgICRyZXN1bHRbMF0gPSBUUlVFOwogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CiAgCiAgLyoqCiAgICogQ29udmVydCBhIHN0cmluZyBvZiBwYXJhbWV0ZXJzIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCiAgICogVXNlZCBtYWlubHkgdG8gY29udmVydCBhIHByZXR0eSB1cmwKICAgKiB3aXRoIGEgZm9ybWF0IG9mIC9wYXJhbTEvdmFsdWUxL3BhcmFtMi92YWx1ZTIvKC4uLikKICAgKiBpbnRvIGFuIGFycmF5IG9mIHBhcmFtZXRlcnMuCiAgICogVGhlICRwYXJhbXMgYXJyYXkgc2hvdWxkIGNvbnRhaW4gdGhlIGtleSAncHJtcycKICAgKiB3aXRoIHRoZSB2YWx1ZSBiZWluZyB0aGUgc3RyaW5nIHRvIGNvbnZlcnQuCiAgICogVGhlIGtleSAncHJtcycgd2lsbCB0aGVuIGJlIHVuc2V0IGJlZm9yZSB0aGUgJHBhcmFtcyBhcmUgcmV0dXJuZWQKICAgKgogICAqIEBwYXJhbSBhcnJheXxudWxsICRwYXJhbXMgLSBUaGUgYXJyYXkgb2YgZXhpc3RpbmcgcGFyYW1ldGVycy4KICAgKiBAcGFyYW0gYm9vbHxudWxsICRvdmVycmlkZSAtIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIG92ZXJyaWRlIGV4aXN0aW5nIHBhcmFtZXRlcnMuCiAgICoKICAgKiBAcmV0dXJuIGFycmF5IC0gVGhlIHVwZGF0ZWQgYXJyYXkgb2YgcGFyYW1ldGVycy4KICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBybXNfdG9fcGFyYW1zKCRwYXJhbXMgPSBOVUxMLCAkb3ZlcnJpZGUgPSBOVUxMKQogIHsKICAgICRwcm1zICAgICA9ICRwYXJhbXNbJ3BybXMnXSA/PyBbXTsKICAgICRwYXJhbXMgICA9IGVtcHR5KCRwYXJhbXMpID8gW10gOiAkcGFyYW1zOwogICAgJG92ZXJyaWRlID0gJG92ZXJyaWRlID8/IEZBTFNFOwogICAgJHBhaXJzICAgID0gXGV4cGxvZGUoJy8nLCAkcHJtcyk7CiAgICAKICAgIHVuc2V0KCRwYXJhbXNbJ3BybXMnXSk7CiAgICAKICAgIGZvciAoJGkgPSAwLCAkaU1heCA9IFxjb3VudCgkcGFpcnMpOyAkaSA8ICRpTWF4OyAkaSArPSAyKQogICAgewogICAgICAka2V5ID0gJHBhaXJzWyRpXTsKICAgICAgJHZhbHVlID0gJHBhaXJzWyRpICsgMV0gPz8gTlVMTDsKICAgICAgCiAgICAgIGlmKCEkb3ZlcnJpZGUgJiYgaXNzZXQoJHBhcmFtc1ska2V5XSkpIHsgY29udGludWU7IH0KICAgICAgCiAgICAgICRwYXJhbXNbJGtleV0gPSAkdmFsdWU7CiAgICB9CiAgICAKICAgIHJldHVybiAkcGFyYW1zOwogIH0KICAKICAKICAKICAvKioqCiAgICogdGVtcG9yYXJ5IGZ1bmN0aW9ucwogICAqLwogIAp9IC8vIGNsYXNzCgojCiMgRU9GCiMK]]></data>
	</file>
	<file>
	  <filename>/lib/class.verification_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CnVzZSBcbWFtc191dGlsczsKCmFic3RyYWN0IGNsYXNzIHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQKewogIHByb3RlY3RlZCAkbWFtczsKICBwcml2YXRlICRfZGVzdHBhZ2U7CgogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggXE1BTVMgJG1vZCApCiAgewogICAgJHRoaXMtPm1hbXMgPSAkbW9kOwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGdlbmVyYXRlX2Rlc3RwYWdlKCR1aWQpCiAgewogICAgJGRmbHQgPSBcQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgJHBhZ2UgPSBtYW1zX3V0aWxzOjpyZXNvbHZlX3ByZWZ0cGxfdG9fcGFnZSgncGFnZWlkX29udmVyaWZ5JywkdWlkKTsKICAgIGlmKCAhJHBhZ2UgKSAkcGFnZSA9ICRkZmx0OwogICAgcmV0dXJuICRwYWdlOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXN0cGFnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5fZGVzdHBhZ2U7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gc2V0X2Rlc3RwYWdlKCRzdHIpCiAgewogICAgaWYoICRzdHIgKQogICAgewogICAgICAkdGhpcy0+X2Rlc3RwYWdlID0gJHRoaXMtPm1hbXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHN0ciwkdGhpcy0+X2Rlc3RwYWdlKTsKICAgIH0KICB9CgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfZm9yY2VfdmVyaWZ5KCAkdWlkLCAkZmxhZyA9IHRydWUgKQogIHsKICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgdWlkIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICAKICAgIGlmKCAkZmxhZyApCiAgICB7CiAgICAgICRjb2RlID0gbWFtc191dGlsczo6Z2VuZXJhdGVfcmFuZG9tX3ByaW50YWJsZV9zdHJpbmcoKTsKICAgICAgJHRoaXMtPm1hbXMtPlNldFVzZXJUZW1wQ29kZSggJHVpZCwgJGNvZGUgKTsKICAgICAgJHRoaXMtPm1hbXMtPkZvcmNlVmVyaWZ5KCAkdWlkLCBUUlVFICk7CiAgICAgIHJldHVybiAkY29kZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHRoaXMtPm1hbXMtPlJlbW92ZVVzZXJUZW1wQ29kZSggJHVpZCApOwogICAgICAkdGhpcy0+bWFtcy0+Rm9yY2VWZXJpZnkoICR1aWQsIEZBTFNFICk7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRfdmVyaWZ5X2Zvcm1fdXJsKCR1aWQsICRjb2RlID0gbnVsbCApCiAgewogICAgJHVpZCA9IChpbnQpICR1aWQ7CiAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgICRjb2RlID0gXHRyaW0oKHN0cmluZykgJGNvZGUpOwogICAgaWYoICEkY29kZSApICRjb2RlID0gJ3h4eHgnOwogICAgCiAgICAkZGVzdHBhZ2UgPSAkdGhpcy0+X2Rlc3RwYWdlOwogICAgaWYoICEkZGVzdHBhZ2UgKSAkZGVzdHBhZ2UgPSAkdGhpcy0+Z2VuZXJhdGVfZGVzdHBhZ2UoJHVpZCk7CiAgICAkdXJsID0gJHRoaXMtPm1hbXMtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCAndmVyaWZ5b25seScsICRkZXN0cGFnZSwgWyAndWlkJyA9PiAkdWlkLCAnY29kZScgPT4gJGNvZGUgXSk7CiAgICAkdXJsID0gXHN0cl9yZXBsYWNlKCdhbXA7JywgJycsICR1cmwpOwogICAgcmV0dXJuICR1cmw7CiAgfQoKICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gc2VuZCggJHVpZCwgJGNvZGUgKTsKfQo=]]></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>/lib/internal_plugins</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/internal_plugins/function.mams_check_logged_in_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBBIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHRoZSB1c2VyIGxvZ2dlZCBpbiBzdGF0dXMgaW4gTUFNUy4NCiAqDQogKiBAcGFyYW0gYXJyYXkgJHBhcmFtcyBBbiBhcnJheSBvZiBwYXJhbWV0ZXJzLg0KICogQHBhcmFtIG9iamVjdCAkc21hcnR5IEFuIGluc3RhbmNlIG9mIHRoZSBTbWFydHkgdGVtcGxhdGUgZW5naW5lLg0KICogQHJldHVybiBzdHJpbmcgVGhlIGZ1bmN0aW9uIGNvbW1lbnQuDQogKi8NCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl9tYW1zX2NoZWNrX2xvZ2dlZF9pbl9zdGF0dXMoJHBhcmFtcywgJHNtYXJ0eSkNCnsNCiAgLyoqDQogICAqIHNob3dzdG9wcGVyDQogICAqLw0KICAjIGlmLCBmb3Igc29tZSBvZGQgcmVhc29uLCB3ZSBkb24ndCBoYXZlIE1BTVMsIGRvbid0IGRvIGFueXRoaW5nDQogICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsNCiAgDQogIGlmKCEkbW9kKSB7IHJldHVybiAnJzsgfQ0KICANCiAgLyoqDQogICAqIHBhcmFtZXRlcnMgZGVmYXVsdHMNCiAgICovDQoNCiAgJHVzZV90b2FzdCAgICAgICAgICAgICAgPSAxOw0KICAkdXNlX2N1c3RvbV9odG1sICAgICAgICA9IDA7DQogICR1c2VfY3VzdG9tX2NzcyAgICAgICAgID0gMDsNCiAgJHRvYXN0X2lkICAgICAgICAgICAgICAgPSAnc2Vzc2lvbl9zdGF0dXNfdG9hc3QnOw0KICAkdG9hc3RfY2xhc3MgICAgICAgICAgICA9ICdzZXNzaW9uX3N0YXR1c190b2FzdCc7CiAgJG5vdGlmaWNhdGlvbl9pZCAgICAgICAgPSAnc2Vzc2lvbl9zdGF0dXNfZXhwaXJlZF9hbGVydCc7CiAgJG5vdGlmaWNhdGlvbl9jbGFzcyAgICAgPSAnc2Vzc2lvbl9zdGF0dXNfYWxlcnQnOwogICRhbGVydF9tZXNzYWdlX2lkICAgICAgID0gJ2FsZXJ0X21lc3NhZ2UnOwogICRjb3VudGVyX3NwYW5faWQgICAgICAgID0gJ3Nlc3Npb25fc3RhdHVzX2NvdW50ZG93bl9jb3VudGVyJzsKICAkZW5kX3Nlc3Npb25fbWVzc2FnZSAgICA9ICdZb3VyIHNlc3Npb24gaGFzIGV4cGlyZWQuIFBsZWFzZSBsb2dpbiB0byBjb250aW51ZS4nOwogICRjdXN0b21fY2FsbGJhY2sgICAgICAgID0gJyc7CiAgJGR1cmF0aW9uICAgICAgICAgICAgICAgPSAoaW50KWluaV9nZXQoJ3Nlc3Npb24uZ2NfbWF4bGlmZXRpbWUnKTsKICAKICBpZigkZHVyYXRpb24gPCAxKQogIHsKICAgICRkdXJhdGlvbiA9IDE0NDA7CiAgfQogIA0KICAkdG9hc3RfY3NzX2RlZmF1bHQgPSAiDQo8c3R5bGU+DQogIC4kdG9hc3RfY2xhc3Mgew0KICAgIHBvc2l0aW9uOiBmaXhlZDsNCiAgICBib3R0b206IDIwcHg7DQogICAgcmlnaHQ6IDIwcHg7DQogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsNCiAgICBjb2xvcjogI2ZmZjsNCiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7DQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgIGRpc3BsYXk6IG5vbmU7DQogIH0NCjwvc3R5bGU+DQogICI7DQogIA0KICAkdG9hc3RfaHRtbF9kZWZhdWx0ID0gIg0KPGRpdiBpZD0nJHRvYXN0X2lkJyBjbGFzcz0nJHRvYXN0X2NsYXNzJz48L2Rpdj4NCiI7DQogIA0KICAkbm90aWZpY2F0aW9uX2Nzc19kZWZhdWx0ID0gIg0KPHN0eWxlPg0KICAuJG5vdGlmaWNhdGlvbl9jbGFzcyB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjsgLyogUmVkIGNvbG9yIGZvciBlcnJvciAqLw0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMDM2Mjc7IC8qIEJvcmRlciBzdHlsZSAqLw0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsgLyogUm91bmRlZCBjb3JuZXJzICovDQogICAgcGFkZGluZzogMTBweDsgLyogUGFkZGluZyBpbnNpZGUgdGhlIGJveCAqLw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsgLyogQ2VudGVyIHRoZSB0ZXh0IGhvcml6b250YWxseSAqLw0KICAgIGJveC1zaGFkb3c6IDBweCAwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTsgLyogQm94IHNoYWRvdyBmb3IgYSBzdWJ0bGUgZWxldmF0aW9uIGVmZmVjdCAqLw0KICAgIGNvbG9yOiB3aGl0ZTsNCiAgICBtYXJnaW4tdG9wOiA1cHg7DQogICAgei1pbmRleDogOTk5OTsgLyogRW5zdXJlIGl0J3Mgb24gdG9wIG9mIG90aGVyIGNvbnRlbnQgKi8NCn0NCg0KLmNsb3NlLWJ1dHRvbiB7DQogICAgY29sb3I6ICNjMDM2Mjc7DQogICAgZmxvYXQ6IGxlZnQ7IC8qIEFsaWduIHRvIHRoZSBsZWZ0ICovDQogICAgY3Vyc29yOiBwb2ludGVyOyAvKiBDaGFuZ2UgY3Vyc29yIHRvIHBvaW50ZXIgb24gaG92ZXIgKi8NCiAgICBtYXJnaW4tcmlnaHQ6IDVweDsgLyogQWRkIHNvbWUgc3BhY2luZyB0byB0aGUgcmlnaHQgb2YgdGhlIGJ1dHRvbiAqLw0KfQ0KDQovKiBTdHlsZSBmb3IgaG92ZXIgc3RhdGUgKi8NCi5jbG9zZS1idXR0b246aG92ZXIgew0KICAgIGNvbG9yOiBncmV5OyAvKiBDaGFuZ2UgdGV4dCBjb2xvciBvbiBob3ZlciAob3B0aW9uYWwpICovDQp9DQo8L3N0eWxlPg0KIjsNCiAgDQogICRub3RpZmljYXRpb25faHRtbF9kZWZhdWx0ID0gIg0KPGRpdiBpZD0nJG5vdGlmaWNhdGlvbl9pZCcgY2xhc3M9JyRub3RpZmljYXRpb25fY2xhc3MnIHN0eWxlPSdkaXNwbGF5OiBub25lOyc+DQogPHNwYW4gaWQ9J2Rpc21pc3MtYnV0dG9uJyBjbGFzcz0nY2xvc2UtYnV0dG9uJyBvbmNsaWNrPSdkaXNtaXNzQWxlcnQoKSc+w5c8L3NwYW4+DQogIDxzcGFuIGlkPSckYWxlcnRfbWVzc2FnZV9pZCc+PC9zcGFuPgo8L2Rpdj4KIjsKICAKICAkY291bnRkb3duX2Nzc19kZWZhdWx0ID0gIgo8c3R5bGU+CiAgLnNlc3Npb25fc3RhdHVzX2NvdW50ZG93biB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgfQo8L3N0eWxlPgoiOwogIAogICRjb3VudGRvd25faHRtbF9kZWZhdWx0ID0gIgo8ZGl2IGNsYXNzPSdzZXNzaW9uX3N0YXR1c19jb3VudGRvd24nPgogIDxzcGFuIGlkPSckY291bnRlcl9zcGFuX2lkJz48L3NwYW4+CjwvZGl2PgoiOwogIA0KICAvKioNCiAgICogaW5pdGlhbGl6ZSBhIGZldyB2YXJpYWJsZXMNCiAgICovDQogICMgZ2V0IHRoZSBzZXNzaW9uIGNoZWNrIGludGVydmFsDQogICRzZXNzaW9uX2NoZWNrX2ludGVydmFsID0gKGludCkoJHBhcmFtc1snc2Vzc2lvbl9jaGVja19pbnRlcnZhbCddID8/IDEpICogMTAwMDsKICAjIGdldCB0aGUgdG9hc3QgZGlzcGxheSBpbnRlcnZhbAogICR0b2FzdF9kaXNwbGF5X2ludGVydmFsID0gKGludCkoJHBhcmFtc1sndG9hc3RfZGlzcGxheV9pbnRlcnZhbCddID8/IDEwKSAqIDEwMDA7CiAgDQogIC8qKg0KICAgKiBncmFiIHRoZSBwYXJhbWV0ZXJzDQogICAqLw0KICAkdXNlX3RvYXN0ICAgICAgICAgICA9ICRwYXJhbXNbJ3VzZV90b2FzdCddID8/ICR1c2VfdG9hc3Q7DQogICR1c2VfY3VzdG9tX2h0bWwgICAgID0gJHBhcmFtc1sndXNlX2N1c3RvbV9odG1sJ10gPz8gJHVzZV9jdXN0b21faHRtbDsNCiAgJHVzZV9jdXN0b21fY3NzICAgICAgPSAkcGFyYW1zWyd1c2VfY3VzdG9tX2NzcyddID8/ICR1c2VfY3VzdG9tX2NzczsNCiAgJHRvYXN0X2lkICAgICAgICAgICAgPSAkcGFyYW1zWyd0b2FzdF9pZCddID8/ICR0b2FzdF9pZDsNCiAgJHRvYXN0X2NsYXNzICAgICAgICAgPSAkcGFyYW1zWyd0b2FzdF9jbGFzcyddID8/ICR0b2FzdF9jbGFzczsNCiAgJG5vdGlmaWNhdGlvbl9pZCAgICAgPSAkcGFyYW1zWydub3RpZmljYXRpb25faWQnXSA/PyAkbm90aWZpY2F0aW9uX2lkOwogICRub3RpZmljYXRpb25fY2xhc3MgID0gJHBhcmFtc1snbm90aWZpY2F0aW9uX2NsYXNzJ10gPz8gJG5vdGlmaWNhdGlvbl9jbGFzczsKICAkYWxlcnRfbWVzc2FnZV9pZCAgICA9ICRwYXJhbXNbJ2FsZXJ0X21lc3NhZ2VfaWQnXSA/PyAkYWxlcnRfbWVzc2FnZV9pZDsKICAkY291bnRlcl9zcGFuX2lkICAgICA9ICRwYXJhbXNbJ2NvdW50ZXJfc3Bhbl9pZCddID8/ICRjb3VudGVyX3NwYW5faWQ7CiAgJGR1cmF0aW9uICAgICAgICAgICAgPSAoaW50KSgkcGFyYW1zWydkdXJhdGlvbiddID8/ICRkdXJhdGlvbik7CiAgJHRvYXN0X2NzcyAgICAgICAgICAgPSAkcGFyYW1zWyd0b2FzdF9jc3MnXSA/PyAkdG9hc3RfY3NzX2RlZmF1bHQ7CiAgJHRvYXN0X2h0bWwgICAgICAgICAgPSAkcGFyYW1zWyd0b2FzdF9odG1sJ10gPz8gJHRvYXN0X2h0bWxfZGVmYXVsdDsNCiAgJG5vdGlmaWNhdGlvbl9jc3MgICAgPSAkcGFyYW1zWydub3RpZmljYXRpb25fY3NzJ10gPz8gJG5vdGlmaWNhdGlvbl9jc3NfZGVmYXVsdDsNCiAgJG5vdGlmaWNhdGlvbl9odG1sICAgPSAkcGFyYW1zWydub3RpZmljYXRpb25faHRtbCddID8/ICRub3RpZmljYXRpb25faHRtbF9kZWZhdWx0Ow0KICAkY291bnRkb3duX2NzcyAgICAgICA9ICRwYXJhbXNbJ2NvdW50ZG93bl9jc3MnXSA/PyAkY291bnRkb3duX2Nzc19kZWZhdWx0Ow0KICAkY291bnRkb3duX2h0bWwgICAgICA9ICRwYXJhbXNbJ2NvdW50ZG93bl9odG1sJ10gPz8gJGNvdW50ZG93bl9odG1sX2RlZmF1bHQ7CiAgJGVuZF9zZXNzaW9uX21lc3NhZ2UgPSAkcGFyYW1zWydlbmRfc2Vzc2lvbl9tZXNzYWdlJ10gPz8gJGVuZF9zZXNzaW9uX21lc3NhZ2U7CiAgJGN1c3RvbV9jYWxsYmFjayAgICAgPSAkcGFyYW1zWydjdXN0b21fY2FsbGJhY2snXSA/PyAkY3VzdG9tX2NhbGxiYWNrOwogIAogIGlmKCRkdXJhdGlvbiA8IDEpCiAgewogICAgJGR1cmF0aW9uID0gMTQ0MDsKICB9CiAgDQogICMgbm9uIHBhcmFtZXRlcnMNCiAgaWYoICFjbGFzc19leGlzdHMoJ1xDTVNNU0V4dFxzZXNzaW9uXE1hbmFnZXInKSApCiAgewogICAgcmV0dXJuICcnOwogIH0KICAKICAkc21hbmFnZXIgICAgICAgICAgPSBcQ01TTVNFeHRcc2Vzc2lvblxNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpOwogICRhamF4X3VybCAgICAgICAgICA9ICRzbWFuYWdlci0+Z2V0RmlsZVVybCgpOwogIAogICRodG1sICAgICAgICAgICAgICAgPSAkdXNlX2N1c3RvbV9jc3MgPyAnJyA6ICR0b2FzdF9jc3MgLiAkY291bnRkb3duX2NzcyAuICRub3RpZmljYXRpb25fY3NzOwogICRqc29uX2ZsYWdzICAgICAgICAgPSBKU09OX0hFWF9UQUcgfCBKU09OX0hFWF9BUE9TIHwgSlNPTl9IRVhfQU1QIHwgSlNPTl9IRVhfUVVPVDsKICAkanNfYWpheF91cmwgICAgICAgID0ganNvbl9lbmNvZGUoJGFqYXhfdXJsLCAkanNvbl9mbGFncyk7CiAgJGpzX2NvdW50ZXJfc3Bhbl9pZCA9IGpzb25fZW5jb2RlKCRjb3VudGVyX3NwYW5faWQsICRqc29uX2ZsYWdzKTsKICAkanNfbm90aWZpY2F0aW9uX2lkID0ganNvbl9lbmNvZGUoJG5vdGlmaWNhdGlvbl9pZCwgJGpzb25fZmxhZ3MpOwogICRqc19hbGVydF9tZXNzYWdlX2lkID0ganNvbl9lbmNvZGUoJGFsZXJ0X21lc3NhZ2VfaWQsICRqc29uX2ZsYWdzKTsKICAkanNfdG9hc3RfaWQgICAgICAgID0ganNvbl9lbmNvZGUoJHRvYXN0X2lkLCAkanNvbl9mbGFncyk7CiAgJGpzX2VuZF9tZXNzYWdlICAgICA9IGpzb25fZW5jb2RlKCRlbmRfc2Vzc2lvbl9tZXNzYWdlLCAkanNvbl9mbGFncyk7CiAgJGpzX2N1c3RvbV9jYWxsYmFjayA9IGpzb25fZW5jb2RlKCRjdXN0b21fY2FsbGJhY2ssICRqc29uX2ZsYWdzKTsKICAKICAkc2NyaXB0X2h0bWwgPSAiCjxzY3JpcHQ+CnZhciBzZXNzaW9uRHVyYXRpb24gPSAkZHVyYXRpb247CnZhciByZW1haW5pbmdUaW1lID0gMDsKdmFyIHVzZVRvYXN0ID0gJHVzZV90b2FzdDsKdmFyIGFqYXhVcmwgPSAkanNfYWpheF91cmw7CnZhciBjb3VudGVyU3BhbklkID0gJGpzX2NvdW50ZXJfc3Bhbl9pZDsKdmFyIG5vdGlmaWNhdGlvbklkID0gJGpzX25vdGlmaWNhdGlvbl9pZDsKdmFyIGFsZXJ0TWVzc2FnZUlkID0gJGpzX2FsZXJ0X21lc3NhZ2VfaWQ7CnZhciB0b2FzdElkID0gJGpzX3RvYXN0X2lkOwp2YXIgc2Vzc2lvbl9jaGVja19pbnRlcnZhbCA9ICRzZXNzaW9uX2NoZWNrX2ludGVydmFsOwp2YXIgdG9hc3RfZGlzcGxheV9pbnRlcnZhbCA9ICR0b2FzdF9kaXNwbGF5X2ludGVydmFsOwp2YXIgZW5kX3Nlc3Npb25fbWVzc2FnZSA9ICRqc19lbmRfbWVzc2FnZTsKdmFyIGN1c3RvbUNhbGxiYWNrID0gJGpzX2N1c3RvbV9jYWxsYmFjazsKDQpmdW5jdGlvbiBnZXRTZXNzaW9uU3RhcnRUaW1lKGNhbGxiYWNrKQ0Kew0KICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7DQogIC8vIEFwcGVuZCB0aGUgY2FjaGUtYnVzdGVyIHRvIHRoZSBVUkwNCiAgdmFyIHVybFdpdGhDYWNoZUJ1c3RlciA9IGFqYXhVcmwgKyAoYWpheFVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArICdjYWNoZT0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7DQogIA0KICB4aHIub3BlbignR0VUJywgdXJsV2l0aENhY2hlQnVzdGVyLCB0cnVlKTsNCiAgeGhyLnJlc3BvbnNlVHlwZSA9ICd0ZXh0JzsNCg0KICB4aHIub25sb2FkID0gZnVuY3Rpb24oKQ0KICB7DQogICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCkKICAgIHsKICAgICAgdmFyIHNlc3Npb25TdGFydFRpbWUgPSBwYXJzZUludCh4aHIucmVzcG9uc2VUZXh0LCAxMCk7CiAgICAgIGlmICghaXNOYU4oc2Vzc2lvblN0YXJ0VGltZSkpCiAgICAgIHsKICAgICAgICBjYWxsYmFjayhzZXNzaW9uU3RhcnRUaW1lKTsKICAgICAgfQogICAgfQogIH07DQoNCiAgeGhyLnNlbmQoKTsNCn0NCg0KZnVuY3Rpb24gY2FsY3VsYXRlUmVtYWluaW5nVGltZShzZXNzaW9uU3RhcnRUaW1lLCBzZXNzaW9uRHVyYXRpb24pCnsKICB2YXIgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTsgLy8gQ29udmVydCB0byBzZWNvbmRzDQogIHZhciBlbGFwc2VkVGltZSA9IGN1cnJlbnRUaW1lIC0gc2Vzc2lvblN0YXJ0VGltZTsNCiAgdmFyIHJlbWFpbmluZ1RpbWUgPSBzZXNzaW9uRHVyYXRpb24gLSBlbGFwc2VkVGltZTsNCiANCiAgcmV0dXJuIHJlbWFpbmluZ1RpbWUgPiAwID8gcmVtYWluaW5nVGltZSA6IDA7DQp9DQoNCmZ1bmN0aW9uIHVwZGF0ZVRpbWVyRGlzcGxheSh0aW1lTGVmdCkKewogIHZhciB0aW1lckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb3VudGVyU3BhbklkKTsKICBpZiAoIXRpbWVyRWxlbWVudCkKICB7CiAgICByZXR1cm47CiAgfQogIHRpbWVyRWxlbWVudC50ZXh0Q29udGVudCA9IHRpbWVMZWZ0Owp9CgpmdW5jdGlvbiBkaXNwbGF5U2Vzc2lvbkV4cGlyZWRBbGVydChtZXNzYWdlKQp7CiAgdmFyIHNlc3Npb25FeHBpcmVkQWxlcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChub3RpZmljYXRpb25JZCk7CiAgdmFyIHNlc3Npb25FeHBpcmVkQWxlcnRNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWxlcnRNZXNzYWdlSWQpOwogIGlmICghc2Vzc2lvbkV4cGlyZWRBbGVydCB8fCAhc2Vzc2lvbkV4cGlyZWRBbGVydE1lc3NhZ2UpCiAgewogICAgcmV0dXJuOwogIH0KICBzZXNzaW9uRXhwaXJlZEFsZXJ0TWVzc2FnZS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgc2Vzc2lvbkV4cGlyZWRBbGVydC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKfQoNCmZ1bmN0aW9uIGRpc21pc3NBbGVydCgpCnsKICB2YXIgYWxlcnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobm90aWZpY2F0aW9uSWQpOwogIGlmICghYWxlcnRFbGVtZW50KQogIHsKICAgIHJldHVybjsKICB9CiAgYWxlcnRFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Cn0KDQpmdW5jdGlvbiBkaXNwbGF5U2Vzc2lvbkV4cGlyZWRUb2FzdChtZXNzYWdlKQp7CiAgICB2YXIgdG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0b2FzdElkKTsKICAgIGlmICghdG9hc3QpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdG9hc3QudGV4dENvbnRlbnQgPSBtZXNzYWdlOwogICAgdG9hc3Quc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgDQogICAgc2V0VGltZW91dChmdW5jdGlvbigpDQogICAgew0KICAgICAgICB0b2FzdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgIH0sIHRvYXN0X2Rpc3BsYXlfaW50ZXJ2YWwpOyAvLyBEaXNwbGF5IGZvciAkdG9hc3RfZGlzcGxheV9pbnRlcnZhbCBzZWNvbmRzLCBhZGp1c3QgYXMgbmVlZGVkDQp9DQoNCmZ1bmN0aW9uIHN0YXJ0Q291bnRkb3duKHJlbWFpbmluZ1RpbWUpCnsKICAgIHZhciBzdGVwU2Vjb25kcyA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQoc2Vzc2lvbl9jaGVja19pbnRlcnZhbCAvIDEwMDApKTsKICAgIHZhciByZWZyZXNoRWxhcHNlZCA9IDA7CiAgICB2YXIgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICBpZiAocmVtYWluaW5nVGltZSA+IDApCiAgICAgICAgewogICAgICAgICAgICB1cGRhdGVUaW1lckRpc3BsYXkocmVtYWluaW5nVGltZSk7CiAgICAgICAgICAgIHJlbWFpbmluZ1RpbWUgLT0gc3RlcFNlY29uZHM7CiAgICAgICAgICAgIHJlZnJlc2hFbGFwc2VkICs9IHN0ZXBTZWNvbmRzOwoKICAgICAgICAgICAgaWYgKHJlZnJlc2hFbGFwc2VkID49IDYwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcmVmcmVzaEVsYXBzZWQgPSAwOwogICAgICAgICAgICAgIGdldFNlc3Npb25TdGFydFRpbWUoZnVuY3Rpb24oc2Vzc2lvblN0YXJ0VGltZSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZW1haW5pbmdUaW1lID0gY2FsY3VsYXRlUmVtYWluaW5nVGltZShzZXNzaW9uU3RhcnRUaW1lLCBzZXNzaW9uRHVyYXRpb24pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsNCiAgICAgICAgICAgIHVwZGF0ZVRpbWVyRGlzcGxheSgwKTsNCiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZW5kX3Nlc3Npb25fbWVzc2FnZTsNCiAgDQogICAgICAgICAgICBpZiAodXNlVG9hc3QpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGRpc3BsYXlTZXNzaW9uRXhwaXJlZFRvYXN0KG1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBkaXNwbGF5U2Vzc2lvbkV4cGlyZWRBbGVydChtZXNzYWdlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3dbY3VzdG9tQ2FsbGJhY2tdID09PSAnZnVuY3Rpb24nKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBjdXN0b20gY2FsbGJhY2sgZnVuY3Rpb24gYnkgaXRzIG5hbWUNCiAgICAgICAgICAgICAgd2luZG93W2N1c3RvbUNhbGxiYWNrXSgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgIH0NCiAgICB9LCBzZXNzaW9uX2NoZWNrX2ludGVydmFsKTsgLy8gVXBkYXRlIGV2ZXJ5ICRzZXNzaW9uX2NoZWNrX2ludGVydmFsIG1pbGxpc2Vjb25kcw0KfQ0KDQovLyBHZXQgc2Vzc2lvbiBzdGFydCB0aW1lIGFuZCBzdGFydCB0aGUgY291bnRkb3duDQpnZXRTZXNzaW9uU3RhcnRUaW1lKGZ1bmN0aW9uKHNlc3Npb25TdGFydFRpbWUpDQp7DQogIHJlbWFpbmluZ1RpbWUgPSBjYWxjdWxhdGVSZW1haW5pbmdUaW1lKHNlc3Npb25TdGFydFRpbWUsIHNlc3Npb25EdXJhdGlvbik7DQogIHVwZGF0ZVRpbWVyRGlzcGxheShyZW1haW5pbmdUaW1lKTsNCiAgc3RhcnRDb3VudGRvd24ocmVtYWluaW5nVGltZSk7DQp9KTsNCg0KPC9zY3JpcHQ+DQoiOw0KICANCiAgJGh0bWwgLj0gICR1c2VfY3VzdG9tX2h0bWwgPyAkc2NyaXB0X2h0bWwgOiAkY291bnRkb3duX2h0bWwgLiAkdG9hc3RfaHRtbCAuICRub3RpZmljYXRpb25faHRtbCAuICAkc2NyaXB0X2h0bWw7DQoNCiAgcmV0dXJuICRodG1sOw0KfQ0KPz4K]]></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+e2xhbmcoJ19vcHRpb25zJyl9PC9sZWdlbmQ+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt0eXBlXSIgc3R5bGU9Im1heC13aWR0aDogOTglOyI+CiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMudHlwZXMgc2VsZWN0ZWQ9JGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpfQogICAgICAgIDwvc2VsZWN0PgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfdHlwZV9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PiAKICAKPC9maWVsZHNldD4=]]></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+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU0dyb3Vwc011bHRpU2VsZWN0IGV4dGVuZHMgTElTRUZpZWxkZGVmQmFzZQp7CiAgcHJpdmF0ZSAkX29wdHMgPSBhcnJheSgpOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGRiX2luZm8sICRjYWxsZXJfb2JqID0gTlVMTCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRkYl9pbmZvLCAkY2FsbGVyX29iaik7CiAgICAKICAgICR0aGlzLT5TZXRGcmllbmRseVR5cGUoICR0aGlzLT5Nb2RMYW5nKCdmaWVsZGRlZl8nIC4gJHRoaXMtPkdldFR5cGUoKSApICk7CiAgICBcY21zX3V0aWxzOjpnZXRfc21hcnR5KCktPmFzc2lnbignbGlzZScsIFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKSk7CiAgfQogICAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2R1bGVEZXBzKCkKICB7CiAgICAKICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgICAgICAgJ01BTVMnID0+ICcxLjAuYicKICAgICAgICAgICAgICAgICk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICB7CiAgICAkdG1wbCA9ICcnOwogICAgaWYoICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpID09ICdNdWx0aVNlbGVjdCcgKQogICAgewogICAgICAgICR0bXBsID0gPDw8RU9UCjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuanMiPjwvc2NyaXB0PgpFT1Q7CiAgICB9CiAgICByZXR1cm4gJHRtcGw7CiAgfQogICAgCiAgLy8gZ2V0IGF2YWlsYWJsZSBncm91cHMgZnJvbSBNQU1TIG1vZHVsZQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TR3JvdXBzKCkKICB7ICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJGdyb3VwcyA9ICRtYW1zLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAgICAKICAgICAgaWYoJGdyb3VwcykKICAgICAgewogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG9wdGlvbikgCiAgICAgICAgewogICAgICAgICAgJG9wdGlvbnNbJG9wdGlvblsnaWQnXV0gPSAkb3B0aW9uWydncm91cG5hbWUnXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KICB9CiAgCiAgICAgCiAgcHVibGljIGZ1bmN0aW9uIEdldE9wdGlvbnMoKSAKICB7CiAgICAkbGlzZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKTsKICAgIAogICAgJHRoaXMtPl9vcHRzWyd0eXBlJ10gPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3R5cGUnLCAnTXVsdGlTZWxlY3QnKTsKICAgICR0aGlzLT5fb3B0c1sndHlwZXMnXSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGlTZWxlY3QnICAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX011bHRpU2VsZWN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVja2JveEdyb3VwJyAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfQ2hlY2tib3hHcm91cCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSlF1ZXJ5TXVsdGlTZWxlY3QnICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0pRdWVyeU11bHRpU2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICByZXR1cm4gJHRoaXMtPl9vcHRzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICRncm91cHMgPSAoYXJyYXkpJHRoaXMtPkdldFZhbHVlKCk7CiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2dyb3VwcycsICRncm91cHMpOwogICAgcmV0dXJuIHBhcmVudDo6UmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKTsKICB9Cn0vLyBlbmQgb2YgY2xhc3MKPz4=]]></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+CjwvZmllbGRzZXQ+]]></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+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU0dyb3Vwc1NpbmdsZVNlbGVjdCBleHRlbmRzIExJU0VGaWVsZGRlZkJhc2UKewogIHByaXZhdGUgJF9vcHRzID0gW107CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCYkZGJfaW5mbywgJGNhbGxlcl9vYmogPSBOVUxMKQogIHsKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRiX2luZm8sICRjYWxsZXJfb2JqKTsKICAgICR0aGlzLT5TZXRGcmllbmRseVR5cGUoICR0aGlzLT5Nb2RMYW5nKCAnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIEdldE1vZHVsZURlcHMoKSAKICB7IAogICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgJ01BTVMnID0+ICcxLjAuYicKICAgIF07CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICB7CiAgICAkdG1wbCA9ICcnOwogICAgaWYoICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdEcm9wZG93bicpID09ICdNdWx0aVNlbGVjdCcgKQogICAgewogICAgICAgICR0bXBsID0gPDw8RU9UCjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskdGhpcy0+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+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU011bHRpU2VsZWN0IGV4dGVuZHMgTElTRUZpZWxkZGVmQmFzZQp7CiAgcHJpdmF0ZSAkX29wdHMgPSBbXTsKICAKICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJiRkYl9pbmZvLCAkY2FsbGVyX29iaiA9IE5VTEwpCiAgewogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkZGJfaW5mbywgJGNhbGxlcl9vYmopOwogICAgCiAgICAkdGhpcy0+U2V0RnJpZW5kbHlUeXBlKCAkdGhpcy0+TW9kTGFuZygnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAgIAogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kdWxlRGVwcygpCiAgewogICAgCiAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAnTUFNUycgPT4gJzEuMC5iJwogICAgXTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogIHsKICAgICR0bXBsID0gJyc7CiAgICBpZiggJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0JykgPT0gJ011bHRpU2VsZWN0JyApCiAgICB7CiAgICAgICAgJHRtcGwgPSA8PDxFT1QKPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuY3NzIiAvPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JHRoaXMtPkdldFVSTFBhdGgoKX0vanF1ZXJ5Lm11bHRpLXNlbGVjdC5qcyI+PC9zY3JpcHQ+CkVPVDsKICAgIH0KICAgIHJldHVybiAkdG1wbDsKICB9CiAgICAKICAvLyBnZXQgYXZhaWxhYmxlIGdyb3VwcyBmcm9tIE1BTVMgbW9kdWxlCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNHcm91cHMoKQogIHsgICAKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgewogICAgICAkZ3JvdXBzID0gJG1hbXMtPkdldEdyb3VwTGlzdEZ1bGwoKTsKICAgICAgIAogICAgICBpZigkZ3JvdXBzKQogICAgICB7CiAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIGZvcmVhY2goJGdyb3VwcyBhcyAkb3B0aW9uKSAKICAgICAgICB7CiAgICAgICAgICAkb3B0aW9uc1skb3B0aW9uWydpZCddXSA9ICRvcHRpb25bJ2dyb3VwbmFtZSddOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU1Byb3BlcnRpZXMoKQogIHsKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgJG1hbXNfcHJvcHMgPSAkbWFtcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgCiAgICAvLyByZW1vdmUgc2VsZnJlZyBwcm9wCiAgICBpZiggaXNzZXQoJG1hbXNfcHJvcHNbJ19fTUFNU1JFRyddKSApIHVuc2V0KCRtYW1zX3Byb3BzWydfX01BTVNSRUcnXSk7CiAgICAKICAgICRtYW1zX29wdGlvbnMgPSBhcnJheSgpOwogICAgJG1hbXNfb3B0aW9uc2IgPSBhcnJheSgpOwogICAgZm9yZWFjaCgkbWFtc19wcm9wcyBhcyAkb25lKSRtYW1zX29wdGlvbnNbICRvbmVbJ25hbWUnXSBdID0gJG9uZVsncHJvbXB0J107CiAgICBhc29ydCgkbWFtc19vcHRpb25zKTsKICAgICRtYW1zX29wdGlvbnNiWy0xXSA9IGxhbmcoJ25vbmUnKTsKICAgICRtYW1zX29wdGlvbnNiWzBdID0gJG1hbXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpOwogICAgJG1hbXNfb3B0aW9ucyA9IGFycmF5X21lcmdlKCRtYW1zX29wdGlvbnNiLCAkbWFtc19vcHRpb25zKTsKICAgIAogICAgcmV0dXJuICRtYW1zX29wdGlvbnM7CiAgfSAKICAgICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0T3B0aW9ucygpIAogIHsKICAgICRsaXNlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTElTRScpOwogICAgCiAgICAkdGhpcy0+X29wdHNbJ3R5cGUnXSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpOwogICAgJHRoaXMtPl9vcHRzWyd0eXBlcyddID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aVNlbGVjdCcgICAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfTXVsdGlTZWxlY3QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrYm94R3JvdXAnICAgICAgID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9DaGVja2JveEdyb3VwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdKUXVlcnlNdWx0aVNlbGVjdCcgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfSlF1ZXJ5TXVsdGlTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHJldHVybiAkdGhpcy0+X29wdHM7CiAgfQogICAgCiAgLy8gZ2V0IGxpc3Qgb2YgdXNlcnMgZnJvbSBNQU1TIG1vZHVsZSBiYXNlZCBvbiBzZWxlY3RlZCBncm91cAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TVXNlckxpc3QoKQogIHsgICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsgICAgCiAgICAgIC8vIEdldFVzZXJzSW5Hcm91cCgpIGlzIGRlcHJlY2F0ZWQgYnV0IEdldEZ1bGxVc2Vyc0luR3JvdXAoKSBzZWVtcyB0byBoYXZlIGEgYnVnLCAKICAgICAgLy8gY2hhbmdlIHRoaXMgYWZ0ZXIgTUFNUyBCUiAjODc1MyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy92aWV3Lzg3NTMgaXMgY29uZmlybWVkIGFuZCBmaXhlZAogICAgICAkZ3JvdXBzID0gIGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfb3B0aW9ucycpICk7CiAgICAgICRtYW1zX3Byb3AgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQnKTsKICAgICAgJG1hbXNfcHJvcDIgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQyJyk7CiAgICAgICR1c2VfdXNlcm5hbWUgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91c2VybmFtZScpOwogICAgICAkdXNlX3VpZCA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VpZCcpOwogICAgICAkc2VwYXJhdG9yID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdzZXBhcmF0b3InKTsKICAgICAgJHVzZXJzID0gYXJyYXkoKTsKICAgICAgCiAgICAgIGZvcmVhY2goJGdyb3VwcyBhcyAkZ3JvdXApCiAgICAgIHsKICAgICAgICAkdG1wdXNlcnMgPSAkbWFtcy0+R2V0RnVsbFVzZXJzSW5Hcm91cCgkZ3JvdXApOwogICAgICAgIGZvcmVhY2goJHRtcHVzZXJzIGFzICRvbmUpCiAgICAgICAgewogICAgICAgICAgaWYoIGFycmF5X2tleV9leGlzdHMoJG9uZVsnaWQnXSwgJHVzZXJzKSApIGNvbnRpbnVlOwogICAgICAgICAgCiAgICAgICAgICAkdWlkID0gKGJvb2wpJHVzZV91aWQgPyAnWycgLiAkb25lWydpZCddIC4gJ10gJyA6ICcnOyAKICAgICAgICAgICNub3cgbGV0cyBidWlsZCB0aGUgbXVsdGlzZWxlY3QKICAgICAgICAgIGlmKCR1c2VfdXNlcm5hbWUpCiAgICAgICAgICB7CiAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICBpZiggJG1hbXNfcHJvcCA9PSBOVUxMIHx8IChpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gLTEpICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQ7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgaWYoaXNfbnVtZXJpYygkbWFtc19wcm9wKSAmJiAkbWFtc19wcm9wID09IDApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcCwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgIGlmKCBpc19udW1lcmljKCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAwICYmICEoaXNfaW50KCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPCAxKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlaWYoICEoaXNfaW50KCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAtMSkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkc2VwYXJhdG9yIC4gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcDIsICRvbmVbJ2lkJ10pOwogICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAgCiAgICAgIGFzb3J0KCR1c2Vycyk7CiAgICAgIAogICAgICByZXR1cm4gJHVzZXJzOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICR1c2VycyA9IChhcnJheSkkdGhpcy0+R2V0VmFsdWUoKTsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbigndXNlcnMnLCAkdXNlcnMpOwogICAgcmV0dXJuIHBhcmVudDo6UmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKTsKICB9Cn0vLyBlbmQgb2YgY2xhc3MKPz4=]]></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+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU1NpbmdsZVNlbGVjdCBleHRlbmRzIExJU0VGaWVsZGRlZkJhc2UKewogIHByaXZhdGUgJF9vcHRzID0gW107CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCYkZGJfaW5mbywgJGNhbGxlcl9vYmogPSBOVUxMKQogIHsKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRiX2luZm8sICRjYWxsZXJfb2JqKTsKICAgICR0aGlzLT5TZXRGcmllbmRseVR5cGUoICR0aGlzLT5Nb2RMYW5nKCAnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIEdldE1vZHVsZURlcHMoKSAKICB7IAogICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAgICAgICAnTUFNUycgPT4gJzEuMC5iJwogICAgICAgICAgICAgICAgKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogIHsKICAgICR0bXBsID0gJyc7CiAgICBpZiggJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ0Ryb3Bkb3duJykgPT0gJ011bHRpU2VsZWN0JyApCiAgICB7CiAgICAgICAgJHRtcGwgPSA8PDxFT1QKPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuY3NzIiAvPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JHRoaXMtPkdldFVSTFBhdGgoKX0vanF1ZXJ5Lm11bHRpLXNlbGVjdC5qcyI+PC9zY3JpcHQ+CkVPVDsKICAgIH0KICAgIHJldHVybiAkdG1wbDsKICB9CiAgCiAgLy8gZ2V0IGF2YWlsYWJsZSBncm91cHMgZnJvbSBNQU1TIG1vZHVsZQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TR3JvdXBzKCkKICB7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJGdyb3VwcyA9ICRtYW1zLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAgIAogICAgICBpZigkZ3JvdXBzKSAKICAgICAgewogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG9wdGlvbikgCiAgICAgICAgewogICAgICAgICAgJG9wdGlvbnNbJG9wdGlvblsnaWQnXV0gPSAkb3B0aW9uWydncm91cG5hbWUnXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNQcm9wZXJ0aWVzKCkKICB7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICRtYW1zX3Byb3BzID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgIAogICAgLy8gcmVtb3ZlIHNlbGZyZWcgcHJvcAogICAgaWYoIGlzc2V0KCRtYW1zX3Byb3BzWydfX01BTVNSRUcnXSkgKSB1bnNldCgkbWFtc19wcm9wc1snX19NQU1TUkVHJ10pOwogICAgCiAgICAkbWFtc19vcHRpb25zID0gYXJyYXkoKTsKICAgICRtYW1zX29wdGlvbnNiID0gYXJyYXkoKTsKICAgIGZvcmVhY2goJG1hbXNfcHJvcHMgYXMgJG9uZSkkbWFtc19vcHRpb25zWyAkb25lWyduYW1lJ10gXSA9ICRvbmVbJ3Byb21wdCddOwogICAgYXNvcnQoJG1hbXNfb3B0aW9ucyk7CiAgICAkbWFtc19vcHRpb25zYlstMV0gPSBsYW5nKCdub25lJyk7CiAgICAkbWFtc19vcHRpb25zYlswXSA9ICRtYW1zLT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKTsKICAgICRtYW1zX29wdGlvbnMgPSBhcnJheV9tZXJnZSgkbWFtc19vcHRpb25zYiwgJG1hbXNfb3B0aW9ucyk7CiAgICAKICAgIHJldHVybiAkbWFtc19vcHRpb25zOwogIH0gCiAgICAgCiAgcHVibGljIGZ1bmN0aW9uIEdldE9wdGlvbnMoKSAKICB7CiAgICAkbGlzZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKTsKICAKICAgICR0aGlzLT5fb3B0c1sndHlwZSddID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0Jyk7CiAgICAkdGhpcy0+X29wdHNbJ3R5cGVzJ10gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Ryb3Bkb3duJyAgICAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfRHJvcGRvd24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JhZGlvR3JvdXAnICAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfUmFkaW9Hcm91cCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSlF1ZXJ5TXVsdGlTZWxlY3QnID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9KUXVlcnlNdWx0aVNlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgCiAgICByZXR1cm4gJHRoaXMtPl9vcHRzOwogIH0KICAKICAvLyBnZXQgbGlzdCBvZiB1c2VycyBmcm9tIE1BTVMgbW9kdWxlIGJhc2VkIG9uIHNlbGVjdGVkIGdyb3VwCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNVc2VyTGlzdCgpCiAgeyAgICAKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgewogICAgICAvLyBHZXRVc2Vyc0luR3JvdXAoKSBpcyBkZXByZWNhdGVkIGJ1dCBHZXRGdWxsVXNlcnNJbkdyb3VwKCkgc2VlbXMgdG8gaGF2ZSBhIGJ1ZywgCiAgICAgIC8vIGNoYW5nZSB0aGlzIGFmdGVyIE1BTVMgQlIgIzg3NTMgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvdmlldy84NzUzIGlzIGNvbmZpcm1lZCBhbmQgZml4ZWQKICAgICAgJGdyb3VwcyAgICAgICA9IGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfb3B0aW9ucycpKTsKICAgICAgJG1hbXNfcHJvcCAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZCcpOwogICAgICAkbWFtc19wcm9wMiAgID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdtYW1zX2ZpZWxkMicpOwogICAgICAkdXNlX3VzZXJuYW1lID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd1c2VfdXNlcm5hbWUnKTsKICAgICAgJHVzZV91aWQgICAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VpZCcpOwogICAgICAkc2VwYXJhdG9yICAgID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdzZXBhcmF0b3InKTsKICAgICAgJHVzZXJzICAgICAgICA9IGFycmF5KCk7CiAgICAgIAogICAgICBmb3JlYWNoKCRncm91cHMgYXMgJGdyb3VwKQogICAgICB7CiAgICAgICAgJHRtcHVzZXJzID0gJG1hbXMtPkdldEZ1bGxVc2Vyc0luR3JvdXAoJGdyb3VwKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCR0bXB1c2VycyBhcyAkb25lKQogICAgICAgIHsKICAgICAgICAgIGlmKCBhcnJheV9rZXlfZXhpc3RzKCRvbmVbJ2lkJ10sICR1c2VycykgKSBjb250aW51ZTsKICAgICAgICAgIAogICAgICAgICAgJHVpZCA9IChib29sKSR1c2VfdWlkID8gJ1snIC4gJG9uZVsnaWQnXSAuICddICcgOiAnJzsgCiAgICAgICAgICAKICAgICAgICAgICNub3cgbGV0cyBidWlsZCB0aGUgc2VsZWN0ICAgICAgICAgIAogICAgICAgICAgaWYoJHVzZV91c2VybmFtZSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZCAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmKCAkbWFtc19wcm9wID09IE5VTEwgfHwgKGlzX251bWVyaWMoJG1hbXNfcHJvcCkgJiYgJG1hbXNfcHJvcCA9PSAtMSkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZCAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZDsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICBpZihpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gMCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG9uZVsndXNlcm5hbWUnXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkbWFtcy0+R2V0VXNlclByb3BlcnR5RnVsbCgkbWFtc19wcm9wLCAkb25lWydpZCddKTsKICAgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICAgaWYoIGlzX251bWVyaWMoJG1hbXNfcHJvcDIpICYmICRtYW1zX3Byb3AyID09IDAgJiYgIShpc19pbnQoJG1hbXNfcHJvcCkgJiYgJG1hbXNfcHJvcCA8IDEpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJHNlcGFyYXRvciAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2VpZiggIShpc19pbnQoJG1hbXNfcHJvcDIpICYmICRtYW1zX3Byb3AyID09IC0xKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkbWFtcy0+R2V0VXNlclByb3BlcnR5RnVsbCgkbWFtc19wcm9wMiwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgfQogICAgICAKICAgICAgYXNvcnQoJHVzZXJzKTsKICAgICAgCiAgICAgIHJldHVybiAkdXNlcnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBSZW5kZXJGb3JBZG1pbkxpc3RpbmcoJGlkLCAkcmV0dXJuaWQpCiAgewogICAgJHVzZXIgPSAnJzsKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgewogICAgICAkdmFsdWUgPSAkdGhpcy0+R2V0VmFsdWUoKTsKICAgICAgJHVzZXIgPSAkbWFtcy0+R2V0VXNlck5hbWUoJHZhbHVlWzBdKTsKICAgIH0KICAgIAogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgJHNtYXJ0eS0+YXNzaWduKCd1c2VyJywgJHVzZXIpOwogICAgcmV0dXJuIHBhcmVudDo6UmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKTsKICB9CiAgCn0vLyBlbmQgb2YgY2xhc3MKPz4=]]></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[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQp1c2UgXE1BTVNcdmVyaWZpY2F0aW9uX2Fzc2lzdGFudDsKdXNlIFxNQU1TXGVtYWlsX3ZlcmlmeV9hc3Npc3RhbnQ7CnVzZSBcQ01TTVNcSG9va01hbmFnZXI7CgovKioKICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIE1BTVMgbW9kdWxlIGNsYXNzLgogKgogKiBAcGFja2FnZSBNQU1TCiAqLwoKLyoqCiAqIFRoZSBNQU1TIG1vZHVsZSwgYmVzaWRlcyBiZWluZyBhIG1vZHVsZSB0byBwcm92aWRlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2VzIHRvIHRoZSBmcm9udGVuZCBvZiBhIENNU01TCiAqIHdlYnNpdGUgYWxzbyBoYXMgYSBjb21wbGV0ZSBhbmQgZmxleGlibGUgQVBJLgogKgogKiBAcGFja2FnZSBNQU1TCiAqLwpmaW5hbCBjbGFzcyBNQU1TIGV4dGVuZHMgXENNU01TRXh0XFhUTW9kdWxlCnsKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhIHRleHQgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1RFWFQgPSAwOwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgY2hlY2tib3ggcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX0NIRUNLQk9YID0gMTsKICAKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhbiBlbWFpbCBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfRU1BSUwgPSAyOwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgdGV4dGFyZWEgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1RFWFRBUkVBID0gMzsKICAKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhIGRyb3Bkb3duIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9EUk9QRE9XTiA9IDQ7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSBtdWx0aXNlbGVjdCBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfTVVMVElTRUxFQ1QgPSA1OwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGFuIGltYWdlIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9JTUFHRSA9IDY7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSByYWRpbyBidXR0b24gZ3JvdXAgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1JBRElPQlVUTlMgPSA3OwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgZGF0ZSBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfREFURSA9IDg7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSBkYXRhIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9EQVRBID0gOTsKICAKICAvKioKICAgKiBIb3cgbWFueSBzZWNvbmRzIG9mIGluYWN0aXZpdHkgYmVmb3JlIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvdXQuCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRleHBpcnl0aW1lOwogIAogIC8qKgogICAqIFNldCB0aGlzIHRvIHRydWUgaWYgdXNlciBzaG91bGQgYmUgcmVkaXJlY3RlZCB0byBkZWZhdWx0IHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpbi9vdXQuCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRsb2dpbnRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRvdGhlcmludGFyZ2V0OwogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgJGxvZ291dHRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRvdGhlcm91dHRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRhbGxvd3VzZXJhZG1pbjsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRlbmFibGVlbWFpbHB3OwogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgJGxhbmcgPSAnJzsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJpdmF0ZSAkdXNlcm1hbmlwID0gRkFMU0U7CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHByaXZhdGUgJHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSBOVUxMOwogIAogIC8qKgogICAqIENvbnN0cnVjdG9yCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICAjIHdvcmsgYXJvdW5kIGNvbnN0cnVjdG9yIGNhbGxlZCB0d2ljZSBpc3N1ZSAocmV2aXNpdCkKICAgIHN0YXRpYyAkb25jZSA9IEZBTFNFOwogICAgaWYoJG9uY2UpIHsgcmV0dXJuOyB9CiAgICAkb25jZSA9IFRSVUU7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICBpZighJHNtYXJ0eSl7cmV0dXJuO30KICAgIAogICAgJHNtYXJ0eS0+cmVnaXN0ZXJDbGFzcygnbWFtc19zbWFydHknLCAnbWFtc19zbWFydHknKTsKICAgICRzbWFydHktPnJlZ2lzdGVyUGx1Z2luKCdibG9jaycsICdtYW1zX3Byb3RlY3QnLCAnXFxtYW1zX3NtYXJ0eV9wbHVnaW5zOjptYW1zX3Byb3RlY3QnKTsKICAgICRzbWFydHktPnJlZ2lzdGVyUGx1Z2luKCdmdW5jdGlvbicsICdtYW1zX3VzZXJfb3B0aW9ucycsICdcXG1hbXNfc21hcnR5X3BsdWdpbnM6Om1hbXNfdXNlcl9vcHRpb25zJyk7CiAgICAkdGhpcy0+QWRkSW1hZ2VEaXIoJ2ljb25zJyk7CiAgICAKICAgICRwbHVnaW5zX2RpciA9IGNtc19qb2luX3BhdGgoICR0aGlzLT5HZXRNb2R1bGVQYXRoKCksICdsaWInLCAnaW50ZXJuYWxfcGx1Z2lucycgKTsKICAgIAogICAgJHNtYXJ0eS0+YWRkUGx1Z2luc0RpcigkcGx1Z2luc19kaXIpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJpdmF0ZSBmdW5jdGlvbiBfbG9hZCgpCiAgewogICAgJHRlc3QgPSAkdGhpcy0+dXNlcm1hbmlwOwogICAgCiAgICBpZighJHRoaXMtPnVzZXJtYW5pcCkKICAgIHsKICAgICAgLyoqCiAgICAgICAqIGNoZWNrIGEgcHJlZmVyZW5jZSB0byBzZWUKICAgICAgICogd2hpY2ggdXNlciBtYW5pcHVsYXRvciBjbGFzcyB3ZSBzaG91bGQgdXNlLgogICAgICAgKi8KICAgICAgJHRoaXMtPnVzZXJtYW5pcCA9IG5ldyBNQU1TTWFuaXB1bGF0b3IoJHRoaXMpOwogICAgICAKICAgICAgJHRlc3QgPSAkdGhpcy0+dXNlcm1hbmlwOwogICAgICAKICAgICAgaWYoIWlzX29iamVjdCgkdGhpcy0+dXNlcm1hbmlwKSkKICAgICAgewogICAgICAgIGRpZSgnRXJyb3IgaW5zdGFudGlhdGluZyBtYW5pcHVsYXRvciBvYmplY3QnKTsKICAgICAgfQoKICAgICAgJHRoaXMtPnVzZXJtYW5pcC0+U2V0RXhwaXJlTm90aWZpZXIoWyR0aGlzLCAnTm90aWZ5RXhwaXJlZFVzZXInXSk7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldE1pbmltdW1QaHBWZXJzaW9uKCkgeyByZXR1cm4gJzcuNC4wJzsgfQogIAogIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBHZXRGaWVsZFR5cGVzKCkgOiBhcnJheQogIHsKICAgIHJldHVybiBbCiAgICAgICd0ZXh0JyAgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9URVhULAogICAgICAnY2hlY2tib3gnICAgICA9PiBzZWxmOjpGSUVMRFRZUEVfQ0hFQ0tCT1gsCiAgICAgICdlbWFpbCcgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9FTUFJTCwKICAgICAgJ3RleHRhcmVhJyAgICAgPT4gc2VsZjo6RklFTERUWVBFX1RFWFRBUkVBLAogICAgICAnZHJvcGRvd24nICAgICA9PiBzZWxmOjpGSUVMRFRZUEVfRFJPUERPV04sCiAgICAgICdtdWx0aXNlbGVjdCcgID0+IHNlbGY6OkZJRUxEVFlQRV9NVUxUSVNFTEVDVCwKICAgICAgJ2ltYWdlJyAgICAgICAgPT4gc2VsZjo6RklFTERUWVBFX0lNQUdFLAogICAgICAncmFkaW9idXR0b25zJyA9PiBzZWxmOjpGSUVMRFRZUEVfUkFESU9CVVROUywKICAgICAgJ2RhdGUnICAgICAgICAgPT4gc2VsZjo6RklFTERUWVBFX0RBVEUsCiAgICAgICdkYXRhJyAgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9EQVRBCiAgICBdOwogICAgCiAgfQogIAogIC8qKgogICAqIEdldCB0aGUgVXNlciBNYW5pcHVsYXRvciBPYmplY3QKICAgKiBOT1QgRk9SIEVYVEVSTkFMIFVTRQogICAqCiAgICogQHJldHVybiBvYmplY3QKICAgKiBAaW50ZXJuYWwKICAgKi8KICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gR2V0TWFuaXB1bGF0b3IoKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgCiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcDsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKXsgcmV0dXJuICcxLjIuMCc7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSGFzQ29udGVudFR5cGUoKXsgcmV0dXJuIFRSVUU7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKXsgcmV0dXJuIFRSVUU7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gQWxsb3dBdXRvSW5zdGFsbCgpeyByZXR1cm4gRkFMU0U7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpeyByZXR1cm4gRkFMU0U7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpeyByZXR1cm4gRkFMU0U7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKXsgcmV0dXJuICcyLjIuMTYnOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpeyByZXR1cm4gJ3VzZXJzZ3JvdXBzJzsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKXsgcmV0dXJuIFsnQ01TTVNFeHQnID0+ICcxLjUuMycsICdTbWFydHlFeHQnID0+ICcxLjAnXTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uKCRldmVudG5hbWUpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2luZm9fJyAuICRldmVudG5hbWUpOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCgkZXZlbnRuYW1lKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycgLiAkZXZlbnRuYW1lKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBIYXNBZG1pbigpeyByZXR1cm4gVFJVRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbG1lc3NhZ2UnKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRBdXRob3IoKXsgcmV0dXJuICdKbyBNb3JnJzsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpeyByZXR1cm4gJ2pvbW9yZ0BjbXNtYWRlc2ltcGxlLm9yZyc7IH0KICAKICBmdW5jdGlvbiBHZXRIZWxwKCkKICB7CiAgICAkbW9kcyAgICAgPSBcTW9kdWxlT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldEluc3RhbGxlZE1vZHVsZXMoKTsKICAgICRoYXZlX2ZldSA9IGluX2FycmF5KCdGcm9udEVuZFVzZXJzJywgJG1vZHMpOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2hhdmVfZmV1JywgJGhhdmVfZmV1KTsKICAgIAogICAgcmV0dXJuIHBhcmVudDo6R2V0SGVscCgpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICogQGRlcHJlY2F0ZWQKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGFuZ2lmeUtleXMoJGFycikgOiBhcnJheQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJGFycikgKSAkYXJyID0gWyRhcnJdOwogICAgJG91dCA9IFtdOwogICAgZm9yZWFjaCgkYXJyIGFzICRrID0+ICR2KQogICAgewogICAgICAkayAgICAgICA9ICR0aGlzLT5MYW5nKCRrKTsKICAgICAgJG91dFska10gPSAkdjsKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsKLy8gICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwovLyAgICBpZighJHNtYXJ0eSl7cmV0dXJuO30KLy8KLy8gICAgJHNtYXJ0eS0+cmVnaXN0ZXJDbGFzcygnbWFtc19zbWFydHknLCAnbWFtc19zbWFydHknKTsKLy8gICAgJHNtYXJ0eS0+cmVnaXN0ZXJQbHVnaW4oJ2Jsb2NrJywgJ21hbXNfcHJvdGVjdCcsICdcXG1hbXNfc21hcnR5X3BsdWdpbnM6Om1hbXNfcHJvdGVjdCcpOwovLyAgICAkc21hcnR5LT5yZWdpc3RlclBsdWdpbignZnVuY3Rpb24nLCAnbWFtc191c2VyX29wdGlvbnMnLCAnXFxtYW1zX3NtYXJ0eV9wbHVnaW5zOjptYW1zX3VzZXJfb3B0aW9ucycpOwovLyAgICAkdGhpcy0+QWRkSW1hZ2VEaXIoJ2ljb25zJyk7CiAgICAKICAgICRjb250ZW50b3BzID0gQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpOwogICAgCiAgICAkb2JqICAgICAgICAgICAgICAgPSBuZXcgQ21zQ29udGVudFR5cGVQbGFjZWhvbGRlcigpOwogICAgJG9iai0+Y2xhc3MgICAgICAgID0gJ01BTVNcUHJvdGVjdGVkUGFnZSc7CiAgICAkb2JqLT50eXBlICAgICAgICAgPSAnbWFtc19wcm90ZWN0ZWRfcGFnZSc7ICAvLyBtdXN0IGJlIGxvd2VyY2FzZSwgYW5kIHNob3J0LCB0aGlzIGlzIHdoYXQgaXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4KICAgICRvYmotPmZpbGVuYW1lICAgICA9IF9fRElSX18gLiAnL2xpYi9jbGFzcy5tYW1zX3Byb3RlY3RlZF9wYWdlLnBocCc7CiAgICAkb2JqLT5sb2FkZWQgICAgICAgPSBGQUxTRTsKICAgICRvYmotPmZyaWVuZGx5bmFtZSA9ICR0aGlzLT5MYW5nKCdtYW1zX3Byb3RlY3RlZF9wYWdlJyk7CiAgICAkY29udGVudG9wcy0+cmVnaXN0ZXJfY29udGVudF90eXBlKCRvYmopOwogICAgCiAgICAkb2JqICAgICAgICAgICAgICAgPSBuZXcgQ21zQ29udGVudFR5cGVQbGFjZWhvbGRlcigpOwogICAgJG9iai0+Y2xhc3MgICAgICAgID0gJ01BTVNcUHJvdGVjdGVkU2VjdGlvbkhlYWQnOwogICAgJG9iai0+dHlwZSAgICAgICAgID0gJ21hbXNfcHJvdGVjdGVkX3NlY19oZWFkJzsKICAgICRvYmotPmZpbGVuYW1lICAgICA9IF9fRElSX18gLiAnL2xpYi9jbGFzcy5tYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhZC5waHAnOwogICAgJG9iai0+bG9hZGVkICAgICAgID0gRkFMU0U7CiAgICAkb2JqLT5mcmllbmRseW5hbWUgPSAkdGhpcy0+TGFuZygnbWFtc19wcm90ZWN0ZWRfc2VjdGlvbmhlYWQnKTsKICAgICRjb250ZW50b3BzLT5yZWdpc3Rlcl9jb250ZW50X3R5cGUoJG9iaik7CiAgICAKICAgICRvYmogICAgICAgICAgICAgICA9IG5ldyBDbXNDb250ZW50VHlwZVBsYWNlaG9sZGVyKCk7CiAgICAkb2JqLT5jbGFzcyAgICAgICAgPSAnbWFtc19wcm90ZWN0ZWRfbG9nb3V0bGluayc7CiAgICAkb2JqLT50eXBlICAgICAgICAgPSBzdHJ0b2xvd2VyKCRvYmotPmNsYXNzKTsKICAgICRvYmotPmZpbGVuYW1lICAgICA9IF9fRElSX18gLiAnL2xpYi9jbGFzcy5tYW1zX3Byb3RlY3RlZF9sb2dvdXRsaW5rLnBocCc7CiAgICAkb2JqLT5sb2FkZWQgICAgICAgPSBGQUxTRTsKICAgICRvYmotPmZyaWVuZGx5bmFtZSA9ICR0aGlzLT5MYW5nKCdtYW1zX3Byb3RlY3RlZF9sb2dvdXRsaW5rJyk7CiAgICAkY29udGVudG9wcy0+cmVnaXN0ZXJfY29udGVudF90eXBlKCRvYmopOwogICAgCiAgICBIb29rTWFuYWdlcjo6YWRkX2hvb2soJ01BTVM6Ok9uRGVsZXRlVXNlcicsICdtYW1zX3V0aWxzOjpob29rX29uZGVsZXRldXNlcicpOwogICAgSG9va01hbmFnZXI6OmFkZF9ob29rKCdNQU1TOjpBZnRlckRlbGV0ZVVzZXInLCAnbWFtc191dGlsczo6aG9va19hZnRlcmRlbGV0ZXVzZXInKTsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgewogICAgcGFyZW50OjpJbml0aWFsaXplRnJvbnRlbmQoKTsKICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvZGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Zvcm0nLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmV0dXJudG8nLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ29ubHlfZ3JvdXBzJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdub2NhcHRjaGEnLCBDTEVBTl9JTlQpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X3VzZXJuYW1lJywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X3Bhc3N3b3JkJywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X3JlcGVhdHBhc3N3b3JkJywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Vycm9yJywgQ0xFQU5fSU5UKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21lc3NhZ2UnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbG9zdHVuX2dyb3VwJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbnB1dF9jYXB0Y2hhJywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYW5jZWwnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfY29kZScsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd1aWQnLCBDTEVBTl9JTlQpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NoZWNrb25seScsIENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5saW5lJywgQ0xFQU5fSU5UKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb2dvdXR0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbG9naW50ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZm9yZ290cHd0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZm9yZ290cHdlbWFpbHRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb3N0dW50ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbG9zdHVuY29uZmlybXRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmb3JjZW5ld3B3dGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3ZpZXd1c2VydGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FmdGVydmVyaWZ5dGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Jlc2V0c2Vzc2lvbnRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd2ZXJpZnlmb3JtdGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQIC4gJy9tYW1zXy4qLycsIENMRUFOX1NUUklORyk7CiAgICAKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKAogICAgICAnL21hbXNcL3ZlcmlmeWNvZGVcLyg/UDxyZXR1cm5pZD5bMC05XSspXC8oP1A8dWlkPlswLTldKylcLyg/UDxjb2RlPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICd2ZXJpZnljb2RlJykKICAgICk7CiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgKICAgICAgJy9tYW1zXC92ZXJpZnlcLyg/UDxyZXR1cm5pZD5bMC05XSspXC8oP1A8dWlkPlswLTldKylcLyg/UDxjb2RlPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICd2ZXJpZnlvbmx5JykKICAgICk7CiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgKICAgICAgJy9tYW1zXC9yZXNldFwvKD9QPHVpZD5bMC05XSspJC8nLAogICAgICBhcnJheSgnYWN0aW9uJyA9PiAncmVzZXRfc2Vzc2lvbicsICdzaG93dGVtcGxhdGUnID0+ICdmYWxzZScsICdjaGVja29ubHknID0+ICcxJykKICAgICk7CiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL21hbXNcL2VkaXRcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnY2hhbmdlc2V0dGluZ3MnKSk7CiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL21hbXNcL2xvZ291dFwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdsb2dvdXQnKSk7CiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL21hbXNcL2ZvcmdvdFwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdmb3Jnb3RwdycpKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvbG9zdHVzZXJuYW1lXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2xvc3R1c2VybmFtZScpKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvYWpheFwvKD9QPHBybXM+LispJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnYWpheCcpKTsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIGdldF90YXNrcygpCiAgewogICAgJG91dCA9IE5VTEw7CiAgICAKICAgIC8vIGNsZWFyIGhpc3RvcnkgdGFzawogICAgJHRtcCA9IChpbnQpJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NsZWFyaGlzdG9yeV9hZ2UnKTsKICAgIAogICAgaWYoJHRtcCA+IDApCiAgICB7CiAgICAgICRvYmogICA9IG5ldyBcTUFNU1xDbGVhclVzZXJIaXN0b3J5VGFzaygpOwogICAgICAkb3V0W10gPSAkb2JqOwogICAgfQogICAgCiAgICAvLyBmb3JjZSBsb2dvdXQgYXQgc3BlY2lmaWMgc2VydmVyIHRpbWVzCiAgICAkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZvcmNlbG9nb3V0X3RpbWVzJyk7CiAgICBpZigkdG1wICE9ICcnKQogICAgewogICAgICAkb2JqICAgPSBuZXcgTUFNU0ZvcmNlZExvZ291dFRhc2soJHRoaXMpOwogICAgICAkb3V0W10gPSAkb2JqOwogICAgfQogICAgCiAgICByZXR1cm4gJG91dDsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJldHR5X3VybCgkaWQsICRhY3Rpb24sICRyZXR1cm5pZCA9ICcnLCAkcGFyYW1zID0gW10sICRpbmxpbmUgPSBGQUxTRSkKICB7CiAgICBpZigkYWN0aW9uID09ICdkZWZhdWx0JykKICAgIHsKICAgICAgJGZvcm0gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2Zvcm0nKTsKICAgICAgc3dpdGNoKCRmb3JtKQogICAgICB7CiAgICAgICAgY2FzZSAnZm9yZ290cHcnOgogICAgICAgICAgJGFjdGlvbiA9ICdmb3Jnb3Rwdyc7CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgICAgY2FzZSAnbG9naW4nOgogICAgICAgICAgJGFjdGlvbiA9ICdsb2dpbic7CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgICAgY2FzZSAnbG9zdHVzZXJuYW1lJzoKICAgICAgICAgICRhY3Rpb24gPSAnbG9zdHVzZXJuYW1lJzsKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBjYXNlICdjaGFuZ2VzZXR0aW5ncyc6CiAgICAgICAgICByZXR1cm4gIm1hbXMvZWRpdC8kcmV0dXJuaWQiOwogICAgICB9CiAgICB9CiAgICAKICAgIGlmKCRhY3Rpb24gPT0gJ3ZlcmlmeW9ubHknKQogICAgewogICAgICAkdWlkICA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAndWlkJyk7CiAgICAgICRjb2RlID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdjb2RlJyk7CiAgICAgIAogICAgICBpZigkdWlkIDwgMSB8fCAhJGNvZGUpe3JldHVybjt9CiAgICAgIAogICAgICByZXR1cm4gIm1hbXMvdmVyaWZ5LyRyZXR1cm5pZC8kdWlkLyRjb2RlIjsKICAgIH0KICAgIAogICAgaWYoJGFjdGlvbiA9PSAnZm9yZ290cHcnKQogICAgewogICAgICByZXR1cm4gIm1hbXMvZm9yZ290LyRyZXR1cm5pZCI7CiAgICB9CiAgICBlbHNlIGlmKCRhY3Rpb24gPT0gJ2xvc3R1c2VybmFtZScpCiAgICB7CiAgICAgIHJldHVybiAibWFtcy9sb3N0dXNlcm5hbWUvJHJldHVybmlkIjsKICAgIH0KICAgIGVsc2UgaWYoJGFjdGlvbiA9PSAnbG9nb3V0JykKICAgIHsKICAgICAgJHJldHVybnRvID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdyZXR1cm50bycpOwogICAgICAKICAgICAgaWYoJHJldHVybnRvKXtyZXR1cm47fQogICAgICAKICAgICAgcmV0dXJuICJtYW1zL2xvZ291dC8kcmV0dXJuaWQiOwogICAgfQogICAgZWxzZSBpZigkYWN0aW9uID09ICdjaGFuZ2VzZXR0aW5ncycpCiAgICB7CiAgICAgIHJldHVybiAibWFtcy9lZGl0LyRyZXR1cm5pZCI7CiAgICB9CiAgICAKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBfSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCRwZXJtID0gJycpCiAgewogICAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLCAnMCcpID09ICcxJykKICAgIHsKICAgICAgJHB1c2VycyAgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBVc2VycycpOwogICAgICAkcGdyb3VwcyA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01BTVMgTW9kaWZ5IEdyb3VwcycpOwogICAgICAkcHByb3AgICA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01BTVMgTW9kaWZ5IEZyb250ZW5kVXNlck1hbmFnZXJQcm9wcycpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkcHVzZXJzICA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBVc2VycycpOwogICAgICAkcGdyb3VwcyA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBHcm91cHMnKTsKICAgICAgJHBwcm9wICAgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgRnJvbnRlbmRVc2VyTWFuYWdlclByb3BzJyk7CiAgICB9CiAgICAKICAgICRjb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CgogICAgc3dpdGNoKCRwZXJtKQogICAgewogICAgICBjYXNlICcnOiAgLy8gYW55IHBlcm1pc3Npb24gZm9yIHdvcmtpbmcgd2l0aCBncm91cHMgYW5kIHVzZXJzCiAgICAgICAgJHJldCA9ICgkcHVzZXJzIHx8ICRwZ3JvdXBzIHx8ICRwcHJvcCk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnbGlzdHVzZXJzJzoKICAgICAgY2FzZSAndXNlcnMnOgogICAgICBjYXNlICdhZGR1c2VyJzoKICAgICAgY2FzZSAnZWRpdHVzZXJzJzoKICAgICAgY2FzZSAncmVtb3ZldXNlcnMnOgogICAgICAgICRyZXQgPSAkcHVzZXJzOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3Byb3BlcnRpZXMnOgogICAgICAgICRyZXQgPSAkcHByb3AgJiYgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfTElTVFBST1BTKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdhZGRwcm9wJzoKICAgICAgY2FzZSAnZWRpdHByb3AnOgogICAgICBjYXNlICdkZWxldGVwcm9wJzoKICAgICAgICAkcmV0ID0gJHBwcm9wICYmICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRQUk9QUyk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnZ3JvdXBzJzoKICAgICAgY2FzZSAnbGlzdGdyb3Vwcyc6CiAgICAgICAgJHJldCA9ICgkcGdyb3VwcyAmJgogICAgICAgICAgICAgICAgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfVVNFU1RER1JPVVBTKSkgfHwKICAgICAgICAgICAgICAgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfTElTVEdST1VQUyk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnc3RyaWN0X2VkaXRncm91cHMnOgogICAgICBjYXNlICdyZW1vdmVncm91cHMnOgogICAgICBjYXNlICdhZGRncm91cCc6CiAgICAgICAgJHJldCA9ICRwZ3JvdXBzICYmICgkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnZWRpdGdyb3Vwcyc6CiAgICAgICAgJHJldCA9ICRwZ3JvdXBzICYmICgkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfRURJVEdST1VQUFJPUFMpKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICd1c2Vyc25ncm91cHMnOgogICAgICAgICRyZXQgPSAoJHB1c2VycyB8fCAkcGdyb3Vwcyk7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnc2l0ZXByZWZzJzoKICAgICAgICAkcmV0ID0gJHBwcm9wOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgJHJldCA9IDA7CiAgICAgIGJyZWFrOwogICAgfQogICAgCiAgICByZXR1cm4gJHJldDsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCcnKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluTWVudUl0ZW1zKCkKICB7CiAgICAkb3V0ID0gW107CiAgICBpZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnJykpCiAgICB7CiAgICAgICRvdXRbXSA9IFxDbXNBZG1pbk1lbnVJdGVtOjpmcm9tX21vZHVsZSgkdGhpcyk7CiAgICB9CiAgICAKICAgIGlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykpCiAgICB7CiAgICAgICRvYmogICAgICAgICAgICAgID0gbmV3IENtc0FkbWluTWVudUl0ZW0oKTsKICAgICAgJG9iai0+bW9kdWxlICAgICAgPSAkdGhpcy0+R2V0TmFtZSgpOwogICAgICAkb2JqLT5zZWN0aW9uICAgICA9ICdzaXRlYWRtaW4nOwogICAgICAkb2JqLT50aXRsZSAgICAgICA9ICR0aGlzLT5MYW5nKCd0aXRsZV9hZG1pbm5hdl9zZXR0aW5ncycpOwogICAgICAkb2JqLT5kZXNjcmlwdGlvbiA9ICR0aGlzLT5MYW5nKCdkZXNjX2FkbWlubmF2X3NldHRpbmdzJyk7CiAgICAgICRvYmotPmFjdGlvbiAgICAgID0gJ2FkbWluX3NldHRpbmdzJzsKICAgICAgJG9iai0+dXJsICAgICAgICAgPSAkdGhpcy0+Y3JlYXRlX3VybCgnbTFfJywgJG9iai0+YWN0aW9uKTsKICAgICAgJG91dFtdICAgICAgICAgICAgPSAkb2JqOwogICAgfQogICAgCiAgICByZXR1cm4gJG91dDsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBfRGlzcGxheUVycm9yUGFnZSgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQsICRtZXNzYWdlID0gJycpCiAgewogICAgZWNobyAkdGhpcy0+RGlzcGxheUVycm9yTWVzc2FnZSgkbWVzc2FnZSk7CiAgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCA9IC0xKQogIHsKICAgIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfZW5jJ10pKQogICAgewogICAgICAvLyByZXN0b3JlIHBhcmFtZXRlcnMgc2F2ZWQgaW4gdGhlIHNlc3Npb24gb24gcmVkaXJlY3QuCiAgICAgICRzaWcgPSAkcGFyYW1zWydtYW1zX2VuYyddOwogICAgICB1bnNldCgkcGFyYW1zWydtYW1zX2VuYyddKTsKICAgICAgaWYoaXNzZXQoJF9TRVNTSU9OWyRzaWddKSkKICAgICAgewogICAgICAgICR0bXAgPSAkX1NFU1NJT05bJHNpZ107CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyRzaWddKTsKICAgICAgICAkcGFyYW1zID0gYXJyYXlfbWVyZ2UoJHRtcCwgJHBhcmFtcyk7CiAgICAgIH0KICAgIH0KICAgIAogICAgaWYoJ2RlZmF1bHQnID09PSAkYWN0aW9uKQogICAgewogICAgICAkZm9ybSA9ICdsb2dpbic7CiAgICAgIAogICAgICBpZigkdGhpcy0+TG9nZ2VkSW5JZCgpKSB7ICRmb3JtID0gJ2xvZ291dCc7IH0KICAgICAgCiAgICAgICRmb3JtID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdmb3JtJywgJGZvcm0pOwogICAgICAKICAgICAgc3dpdGNoKCRmb3JtKQogICAgICB7CiAgICAgICAgY2FzZSAnbG9naW4nOgogICAgICAgIGNhc2UgJ2ZvcmdvdHB3JzoKICAgICAgICBjYXNlICdzaWxlbnQnOgogICAgICAgIGNhc2UgJ2NoYW5nZXNldHRpbmdzJzoKICAgICAgICBjYXNlICdsb3N0dXNlcm5hbWUnOgogICAgICAgICAgJGFjdGlvbiA9ICRmb3JtOwogICAgICAgIGJyZWFrOwogICAgICAgIAogICAgICAgIGNhc2UgJ2xvZ291dCc6CiAgICAgICAgICAkYWN0aW9uID0gJ2xvZ291dGZvcm0nOwogICAgICAgIGJyZWFrOwogICAgICAgIAogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIkZm9ybSBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgZm9ybSBwYXJhbWV0ZXIiKTsKICAgICAgfQogICAgfQogICAgCiAgICBzd2l0Y2goJGFjdGlvbikKICAgIHsKICAgICAgY2FzZSAnY2hhbmdlc2V0dGluZ3NfdXJsJzoKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBkZWZhdWx0OgogICAgICAgIHBhcmVudDo6RG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwogICAgICBicmVhazsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGRlcHJlY2F0ZWQKICAgKi8KICBmdW5jdGlvbiBteVJlZGlyZWN0KCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAkcGFyYW1zID0gW10sICRpZ25vcmVfcmV0dXJudG8gPSBGQUxTRSkKICB7CiAgICAvLyBmaW5kIGFueSBwYXJhbWV0ZXIgdmFsdWVzIHRoYXQgYXJlIGFycmF5cwogICAgLy8gYXV0b21hdGljYWxseSBzdG9yZSB0aGlzIGRhdGEgaW4gdGhlIHNlc3Npb24KICAgIHVuc2V0KCRwYXJhbXNbJ2FjdGlvbiddLCAkcGFyYW1zWydyZXR1cm5pZCddKTsKICAgIAogICAgJHNpZyAgICAgICAgICAgID0gbWQ1KF9fTUVUSE9EX18gLiB0aW1lKCkgLiBzZXJpYWxpemUoJHBhcmFtcykpOwogICAgJF9TRVNTSU9OWyRzaWddID0gJHBhcmFtczsKICAgICRwYXJhbXMgICAgICAgICA9IFsnbWFtc19lbmMnID0+ICRzaWddOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAkcGFyYW1zKTsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICovCi8vICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCi8vICB7Ci8vICAgICR0eHQgID0gcGFyZW50OjpHZXRIZWFkZXJIVE1MKCk7Ci8vICAgICR0bXBsID0gPDw8RU9UCi8ve0pRdWVyeVRvb2xzIGFjdGlvbj0ncmVxdWlyZScgbGliPSd0YWJsZXNvcnRlcixKUXVlcnlUb29scyd9Ci8ve0pRdWVyeVRvb2xzIGFjdGlvbj0ncGxhY2VtYXJrZXInfQovL0VPVDsKLy8KLy8gICAgJG9iaiA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnSlF1ZXJ5VG9vbHMnLCAnMS4yJyk7Ci8vICAgIGlmKGlzX29iamVjdCgkb2JqKSkKLy8gICAgewovLyAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKLy8gICAgICAkdHh0ICAgIC49ICRzbWFydHktPmZldGNoKCdzdHJpbmc6JyAuICR0bXBsKTsKLy8gICAgfQovLwovLyAgICByZXR1cm4gJHR4dDsKLy8gIH0KICAKICAvKioKICAgKiBzZW5kIGFuIGV2ZW50IHRoYXQgdGhpcyB1c2VyIGFjY291bnQgaGFzIGJlZW4gZXhwaXJlZAogICAqCiAgICogQGludGVybmFsCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIE5vdGlmeUV4cGlyZWRVc2VyKCR1c2VyaWQpCiAgewogICAgJHVzZXIgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVzZXJpZCk7CiAgICAKICAgIGlmKEZBTFNFID09ICR1c2VyWzBdKSB7IHJldHVybjsgfSAvLyB0aGlzIHNob3VsZCBiZSBhbiBlcnJvcgogICAgCiAgICAkcGFybXMgICAgICAgICAgICAgPSBhcnJheSgpOwogICAgJHBhcm1zWydpZCddICAgICAgID0gJHVzZXJpZDsKICAgICRwYXJtc1sndXNlcm5hbWUnXSA9ICR1c2VyWzFdWyd1c2VybmFtZSddOwogICAgSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uRXhwaXJlVXNlcicsICRwYXJtcyk7CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBpc19hbGxvd2VkX3VwbG9hZCgkc3JjZmlsZSkKICB7CiAgICAkYWxsb3dlZF9leHRlbnNpb25zID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycsICcuZ2lmLC5wbmcsLmpwZycpOwogICAgJHRtcCAgICAgICAgICAgICAgICA9IGV4cGxvZGUoJywnLCBzdHJ0b2xvd2VyKCRhbGxvd2VkX2V4dGVuc2lvbnMpKTsKICAgICRzcmNmaWxlICAgICAgICAgICAgPSBzdHJ0b2xvd2VyKCRzcmNmaWxlKTsKICAgIAogICAgZm9yZWFjaCgkdG1wIGFzICRleHQpCiAgICB7CiAgICAgIGlmKGVuZHN3aXRoKCRzcmNmaWxlLCAkZXh0KSkgeyByZXR1cm4gVFJVRTsgfQogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEB0b2RvOiBtb3ZlIG1lIG91dCBvZiBoZXJlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91cGxvYWRfZGlydXJsKCkKICB7CiAgICAkY29uZmlnID0gXGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwogICAgJGRuICAgICA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc191cmwnXSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpKTsKICAgICRkbiAgICAgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRkbik7CiAgICAKICAgIHJldHVybiAkZG47CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXBsb2FkX2Rpcm5hbWUoKQogIHsKICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAkZG4gICAgID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpKTsKICAgIAogICAgcmV0dXJuICRkbjsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91cGxvYWRfZmlsZW5hbWUoJGZsZG5hbWUsICRzcmNmaWxlKQogIHsKICAgIC8vIGdldCB0aGUgZmlsZW5hbWUgb25seSwgbm90IHRoZSBkaXJlY3RvcnkKICAgIC8vIG5vdGU6IHRoaXMgbXVzdCBiZSByZXByb2R1Y2libGUgZ2l2ZW4gdGhlIHNhbWUgc3JjZmlsZSBhbmQgZmlsZW5hbWUgZm9yIHRoZSBzYW1lIHJlcXVlc3QuCiAgICAkZXh0ICA9IHN0cnJjaHIoJHNyY2ZpbGUsICcuJyk7CiAgICAkdGltZSA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkX1NFUlZFUiwgJ1JFUVVFU1RfVElNRScpOwogICAgCiAgICByZXR1cm4gc2hhMShfX0ZJTEVfXyAuIHNlc3Npb25faWQoKSAuICRmbGRuYW1lIC4gJHNyY2ZpbGUgLiAkdGltZSkgLiAkZXh0OwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gTWFuYWdlSW1hZ2VVcGxvYWQoJGtleSwgJGZsZG5hbWUpCiAgewogICAgJHJlcyA9IFxtYW1zX3V0aWxzOjpjaGVja1VwbG9hZCgka2V5KTsKICAgIAogICAgaWYoISRyZXNbMF0pIHsgcmV0dXJuICRyZXM7IH0KICAgIAogICAgJGZpbGUgPSAkX0ZJTEVTWyRrZXldOwogICAgLy8gc2V0IHRoZSBkZXN0aW5hdGlvbiBuYW1lCiAgICAkZGVzdERpciAgPSAkdGhpcy0+Z2V0X3VwbG9hZF9kaXJuYW1lKCk7CiAgICAkZGVzdG5hbWUgPSAkdGhpcy0+Z2V0X3VwbG9hZF9maWxlbmFtZSgkZmxkbmFtZSwgJGZpbGVbJ25hbWUnXSk7CiAgICAKICAgIC8vIENyZWF0ZSB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGlmIG5lY2Vzc2FyeQogICAgaWYoIW1rZGlyKCRkZXN0RGlyLCAwNzc3LCBUUlVFKSAmJiAhaXNfZGlyKCRkZXN0RGlyKSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmludGYoJ0RpcmVjdG9yeSAiJXMiIHdhcyBub3QgY3JlYXRlZCcsICRkZXN0RGlyKSk7CiAgICB9CiAgICAKICAgIEB0b3VjaCgkZGVzdERpciAuICcvaW5kZXguaHRtbCcpOwogICAgCiAgICBpZighaXNfd3JpdGFibGUoJGRlc3REaXIpKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkdGhpcy0+TGFuZygnZXJyb3JfZGVzdGluYXRpb25ub3R3cml0YWJsZScpXTsKICAgIH0KICAgIAogICAgQGNtc19tb3ZlX3VwbG9hZGVkX2ZpbGUoJGZpbGVbJ3RtcF9uYW1lJ10sIGNtc19qb2luX3BhdGgoJGRlc3REaXIsICRkZXN0bmFtZSkpOwogICAgCiAgICByZXR1cm4gW1RSVUUsICRkZXN0bmFtZV07CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRQb3N0TG9naW5VUkwoJHVybCkKICB7CiAgICBpZigkdXJsKQogICAgewogICAgICAkdGhpcy0+c2Vzc2lvbl9wdXQoJ3Bvc3Rsb2dpbl91cmwnLCAkdXJsKTsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFBvc3RMb2dpblVSTCgpCiAgewogICAgJG91dCA9ICR0aGlzLT5zZXNzaW9uX2dldCgncG9zdGxvZ2luX3VybCcpOwogICAgJHRoaXMtPnNlc3Npb25fY2xlYXIoJ3Bvc3Rsb2dpbl91cmwnKTsKICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vICBBUEkgRlVOQ1RJT05TIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgCiAgLyoqCiAgICogQGRlcHJlY2F0ZWQgdXNlIFxNQU1TXGFwaSBpbnN0ZWFkCiAgICogQGlnbm9yZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJG5hbWUsICRhcmdzKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgCiAgICBpZiggbWV0aG9kX2V4aXN0cyggJHRoaXMtPnVzZXJtYW5pcCwgJG5hbWUgKSApCiAgICB7CiAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheShbJHRoaXMtPnVzZXJtYW5pcCwgJG5hbWVdLCAkYXJncyk7CiAgICB9CgogICAgcmV0dXJuIHBhcmVudDo6X19jYWxsKCRuYW1lLCAkYXJncyk7CiAgfQogIAogIC8qKgogICAqIEdldCB0aGUgZmlsZW5hbWVzIG9mIGFsbCBmaWxlcyBhc3NvY2lhdGVkIHdpdGggaW1hZ2UgcHJvcGVydGllcyBmb3IgdGhlIHNwZWNpZmllZCB1c2VyLgogICAqIERvZXMgbm90IGNoZWNrIGlmIHRoZSBmaWxlcyBleGlzdCwgaGF2ZSB0aHVtYm5haWxzLCBvciBmb3IgcGVybWlzc2lvbnMuCiAgICoKICAgKiBAcGFyYW0gaW50ICR1aWQgVGhlIHVzZXJpZAogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIGZ1bmN0aW9uIEdldFVzZXJGaWxlc0Z1bGwoJHVzZXJpZCkKICB7CiAgICAkdXNlcmlkID0gKGludCkkdXNlcmlkOwogICAgaWYoJHVzZXJpZCA8IDEpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgICRkZWZucyAgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAkcHJvcHZhbHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoJHVzZXJpZCk7CiAgICAKICAgIGlmKCEkcHJvcHZhbHMpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgICRwcm9wdmFscyA9IFx4dF9hcnJheTo6dG9faGFzaCgkcHJvcHZhbHMsICd0aXRsZScpOwogICAgJG91dCAgICAgID0gIFtdOwogICAgCiAgICBmb3JlYWNoKCRkZWZucyBhcyAkbmFtZSA9PiAkZGVmbikKICAgIHsKICAgICAgaWYoJGRlZm5bJ3R5cGUnXSAhPSBzZWxmOjpGSUVMRFRZUEVfSU1BR0UpIHsgY29udGludWU7IH0KICAgICAgCiAgICAgIGlmKCFpc3NldCgkcHJvcHZhbHNbJG5hbWVdKSkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgaWYoISRwcm9wdmFsc1skbmFtZV1bJ2RhdGEnXSkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgJG91dFskbmFtZV0gPSAkcHJvcHZhbHNbJG5hbWVdWydkYXRhJ107CiAgICB9CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcyA9IFtdKQogIHsKICAgICRjYXBhYmlsaXRpZXMgPSBbCiAgICAgICAnY29udGVudF90eXBlcycsCiAgICAgICAnY29udGVudF9hdHRyaWJ1dGVzJywKICAgICAgICd0YXNrcycsCiAgICAgICAnY2xpY29tbWFuZHMnXTsKICAgIAogICAgcmV0dXJuIGluX2FycmF5KCRjYXBhYmlsaXR5LCAkY2FwYWJpbGl0aWVzKTsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGlnbm9yZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2xpX2NvbW1hbmRzKCRhcHApCiAgewogICAgJG91dCAgID0gTlVMTDsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXEdyb3VwRWRpdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xHcm91cExpc3RDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcR3JvdXBMaXN0UHJvcHNDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcR3JvdXBWaWV3Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFByb3BFZGl0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFByb3BMaXN0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFVzZXJBZGRDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcVXNlckRlbGV0ZUNvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xVc2VyRWRpdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xVc2VyUHJvcEVkaXRDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcVXNlckxpc3RDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcVXNlclZpZXdDb21tYW5kKCRhcHApOwogICAgCiAgICByZXR1cm4gJG91dDsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGlnbm9yZQogICAqLwovLyAgZnVuY3Rpb24gZ2V0X2NvbnRlbnRfYXR0cmlidXRlcygkY29udGVudF90eXBlKQovLyAgewovLyAgICAkdG1wICA9IFtdOwovLyAgICAkYXR0ciA9IG5ldyBDbXNDb250ZW50VHlwZVByb2ZpbGVBdHRyaWJ1dGUoJ21hbXNfZ3JvdXBzJywgJ3Zpc2l0b3JzJyk7Ci8vICAgICRhdHRyLT5zZXRfaGVscGVyKG1hbXNfY29udGVudF9hdHRyaWJ1dGVfaGVscGVyOjpnZXRfaW5zdGFuY2UoKSk7Ci8vICAgICR0bXBbXSA9ICRhdHRyOwovLwovLyAgICByZXR1cm4gJHRtcDsKLy8gIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaygkc3RyKQogIHsKICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICRzdHIgPSBzdHJfcmVwbGFjZSgnICcsICdfJywgJHN0cik7CiAgICAKICAgIGlmKCdmb3Jnb3RfcGFzc3dvcmRfZW1haWwnID09ICRzdHIpIHsgJHN0ciA9ICd2ZXJpZnlfZW1haWwnOyB9CiAgICAKICAgICRzdHIgPSAndHBsdHlwZV8nIC4gJHN0cjsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtb2QpKSB7IHJldHVybiAkbW9kLT5MYW5nKCRzdHIpOyB9CiAgICAKICAgIHJldHVybiAnJzsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICogQGlnbm9yZQogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gcmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzKENtc0xheW91dFRlbXBsYXRlVHlwZSAkdHlwZSkKICB7CiAgICBpZignTUFNUycgIT09ICR0eXBlLT5nZXRfb3JpZ2luYXRvcigpKQogICAgewogICAgICB0aHJvdyBuZXcgQ21zTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZXNldCBjb250ZW50cyBmb3IgdGhpcyB0ZW1wbGF0ZSB0eXBlJyk7CiAgICB9CiAgICAKICAgIHN3aXRjaCgkdHlwZS0+Z2V0X25hbWUoKSkKICAgIHsKICAgICAgY2FzZSAnbG9naW4gZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9naW5mb3JtLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdsb2dvdXQgZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9nb3V0Zm9ybS50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnY2hzZXR0aW5ncyBmb3JtJzoKICAgICAgICAkZm4gPSAnb3JpZ19jaGFuZ2VzZXR0aW5ncy50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yZ290IHBhc3N3b3JkIGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX2ZvcmdvdHBhc3N3b3JkMS50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yZ290IHBhc3N3b3JkIGVtYWlsJzoKICAgICAgICAkZm4gPSAnb3JpZ19mb3Jnb3RwYXNzd29yZDIudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2ZvcmdvdCBwYXNzd29yZCB2ZXJpZnknOgogICAgICAgICRmbiA9ICdvcmlnX2ZvcmdvdHBhc3N3b3JkMy50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yY2UgbmV3IHBhc3N3b3JkJzoKICAgICAgICAkZm4gPSAnb3JpZ19mb3JjZV9uZXdwd19mb3JtLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdsb3N0IHVzZXJuYW1lIGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX2xvc3R1bmZvcm1fdGVtcGxhdGUudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2xvc3QgdXNlcm5hbWUgY29uZmlybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9zdHVuZm9ybV9jb25maXJtX3RlbXBsYXRlLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICd2aWV3IHVzZXInOgogICAgICAgICRmbiA9ICdvcmlnX3ZpZXd1c2VyX3RlbXBsYXRlLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdyZXNldCBzZXNzaW9uJzoKICAgICAgICAkZm4gPSAnb3JpZ19yZXNldHNlc3Npb25fdGVtcGxhdGUudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3ZlcmlmeV9mb3JtJzoKICAgICAgY2FzZSAndmVyaWZ5IGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX3ZlcmlmeWZvcm0udHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigKICAgICAgICAgICR0eXBlLT5nZXRfbmFtZSgpIC4gJyBpcyBub3QgYSBrbm93biB0eXBlIGZvciB0aGUgJyAuICR0eXBlLT5nZXRfb3JpZ2luYXRvcigpIC4gJyBvcmlnaW5hdG9yJwogICAgICAgICk7CiAgICB9CiAgICAKICAgICRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywgJ3RlbXBsYXRlcycsICRmbik7CiAgICAKICAgIGlmKGlzX2ZpbGUoJGZuKSkgeyByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7IH0KICAgIAogICAgcmV0dXJuICcnOwogIH0KICAKICAvKioKICAgKiBFeHBvc2VzIHRoZSBNQU1TIEFQSSB0byBvdGhlciBtb2R1bGVzCiAgICoKICAgKiBAcmV0dXJuIE1BTVNcYXBpCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9hcGkoKSA6IFxNQU1TXGFwaQogIHsKICAgIHJldHVybiBcTUFNU1xhcGk6OmdldEluc3RhbmNlKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRfdmVyaWZpY2F0aW9uX2Fzc2lzdGFudCh2ZXJpZmljYXRpb25fYXNzaXN0YW50ICRvYmopCiAgewogICAgaWYoJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0EgdmVyaWZpY2F0aW9uIGFzc2lzdGFudCBvYmplY3QgYWxyZWFkeSBleGlzdHMnKTsKICAgIH0KICAgICR0aGlzLT52ZXJpZmljYXRpb25fYXNzaXN0YW50ID0gJG9iajsKICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF92ZXJpZmljYXRpb25fYXNzaXN0YW50KCkKICB7CiAgICBpZighJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQpCiAgICB7CiAgICAgICR0aGlzLT52ZXJpZmljYXRpb25fYXNzaXN0YW50ID0gbmV3IGVtYWlsX3ZlcmlmeV9hc3Npc3RhbnQoJHRoaXMpOwogICAgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQ7CiAgfQogIAp9IC8vIGNsYXNzCgovLyBFT0YK]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBhbGxvdyBtYW5hZ2VtZW50IG9mIGZyb250ZW5kCiMgIHVzZXJzLCBhbmQgdGhlaXIgbG9naW4gcHJvY2VzcyB3aXRoaW4gYSBDTVMgTWFkZSBTaW1wbGUgcG93ZXJlZAojICB3ZWJzaXRlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBWaXNpdCB0aGUgQ01TTVMgSG9tZXBhZ2UgYXQ6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQoKIyBDTVNNU0V4dCBtYXkgbm90IGJlIHVwZGF0ZWQgeWV0LiBXZSBsZXQgaXQgZmFpbCBpZiB0aGUgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUuCmlmIChtZXRob2RfZXhpc3RzKCR0aGlzLCAnSXNQaHBWZXJzaW9uU3VwcG9ydGVkJykgJiYgISR0aGlzLT5Jc1BocFZlcnNpb25TdXBwb3J0ZWQoKSkKewogICMgb3RoZXJ3aXNlLCByZXR1cm4gYW4gZXJyb3IKICByZXR1cm4gJ01pbmltdW0gUEhQIHZlcnNpb24gb2YgJyAuICR0aGlzLT5HZXRNaW5pbWFsUGhwVmVyc2lvbigpIC4gJyByZXF1aXJlZCc7Cn0KCiMgdG9kbzogY2hhbmdlIGFsbCB0aGUgc2VxdWVuY2VzIHRvIGF1dG8taW5jcmVtZW50CgokbG9nX2V4Y2VwdGlvbiA9IHN0YXRpYyBmdW5jdGlvbihcRXhjZXB0aW9uICRlKQp7CiAgJG91dCA9ICctLSBFWENFUFRJT04gRFVNUCAtLScgLiAiXG4iOwogICRvdXQgLj0gJ1RZUEU6ICcgLiBnZXRfY2xhc3MoJGUpIC4gIlxuIjsKICAkb3V0IC49ICdNRVNTQUdFOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSAuICJcbiI7CiAgJG91dCAuPSAnRklMRTogJyAuICRlLT5nZXRGaWxlKCkgLiAnOicgLiAkZS0+R2V0TGluZSgpIC4gIlxuIjsKICAkb3V0IC49ICJUUkFDRTpcbiI7CiAgJG91dCAuPSAkZS0+Z2V0VHJhY2VBc1N0cmluZygpOwogIGRlYnVnX3RvX2xvZygkb3V0LCAnLS0gJyAuIF9fTUVUSE9EX18gLiAnIC0tJyk7Cn07CgokZGIgICA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgokdGFib3B0YXJyYXkgPSBbJ215c3FsJyA9PiAnRU5HSU5FPUlubm9EQiddOwoKLy9Vc2VyIGxpc3QKJGZsZHMgICAgID0gJwogICAgICAgICBpZCBJIEtFWSBBVVRPIE5PVE5VTEwsCiAgICAgICAgIHVzZXJuYW1lIEMoMTI4KSBOT1ROVUxMLAogICAgICAgICBwYXNzd29yZCBDKDEyOCkgTk9UTlVMTCwKICAgICAgICAgY3JlYXRlZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJywKICAgICAgICAgZXhwaXJlcyAgICAnIC4gQ01TX0FET0RCX0RUIC4gJywKICAgICAgICAgbm9uc3RkICAgSTEsCiAgICAgICAgIGRpc2FibGVkIEkxLAogICAgICAgICBzYWx0ICAgICBDKDY0KSwKICAgICAgICAgZm9yY2VfbmV3cHcgSTEsCiAgICAgICAgIGZvcmNlX2Noc2V0dGluZ3MgSTEsCiAgICAgICAgIG11c3RfdmFsaWRhdGUgSTEKICAgICAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vR3JvdXAgbGlzdAokZmxkcyAgICAgPSAnCgkgICAgIGlkIEkgS0VZIEFVVE8gTk9UTlVMTCwKCSAgICAgZ3JvdXBuYW1lIEMoMzIpIE5PVE5VTEwsCgkgICAgIGdyb3VwZGVzYyBDKDEyOCkKCSAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcycsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBsb2dnZWRpbgokZmxkcyAgICAgPSAnCgkgICAgIHNlc3Npb25pZCBDKDI1NSkgTk9UTlVMTCwKCSAgICAgbGFzdHVzZWQgSSwKCSAgICAgdXNlcmlkIEkgTk9UTlVMTAoJICAgICc7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4nLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy9Db25uZWN0aW9ucyBiZXR3ZWVuIHVzZXJzIGFuZCBncm91cHMKJGZsZHMgICAgID0gJwoJICAgICB1c2VyaWQgSSBLRVkgTk9UTlVMTCwKCSAgICAgZ3JvdXBpZCBJIEtFWSBOT1ROVUxMCgkgICAgJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19iZWxvbmdzJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vcHJvcGVydHkgZGVmaW5pdGlvbgokZmxkcyAgICAgPSAnCiAgICAgICAgIG5hbWUgICAgICBDKDQwKSBLRVkgTk9UTlVMTCwKICAgICAgICAgcHJvbXB0ICAgIEMoMjU1KSBOT1ROVUxMLAogICAgICAgICB0eXBlICAgICAgQygyMCkgTk9UTlVMTCwKICAgICAgICAgbGVuZ3RoICAgIEksCiAgICAgICAgIG1heGxlbmd0aCBJLAogICAgICAgICBhdHRyaWJzICAgQygyNTUpLAogICAgICAgICBmb3JjZV91bmlxdWUgSTEsCiAgICAgICAgIGVuY3J5cHQgICBJMSwKICAgICAgICAgZXh0cmEgICAgIFgKICAgICAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTcWwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vZHJvcGRvd24gc2VsZWN0IG9wdGlvbnMKJGZsZHMgICAgID0gJwogICAgICAgICBvcmRlcl9pZAkJSSBOT1ROVUxMLAogICAgICAgICBvcHRpb25fbmFtZQlDKDQwKSBOT1ROVUxMLAogICAgICAgICBvcHRpb25fdGV4dAlDKDI1NSkgTk9UTlVMTCwKICAgICAgICAgY29udHJvbF9uYW1lCUMoNDApIE5PVE5VTEw7CiAgICAgICAgJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19kcm9wZG93bnMnLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gZ3JvdXAgcHJvcGVydHkgbWFwCi8vIHVzZWQgdG8gYXNzb2NpYXRlIGEgcHJvcGVydHkgdG8gYSBncm91cAokZmxkcyAgICAgPSAnCiAgICAgICAgIG5hbWUgICAgQyg0MCkgS0VZIE5PVE5VTEwsCiAgICAgICAgIGdyb3VwX2lkIEkgS0VZIE5PVE5VTEwsCiAgICAgICAgIHNvcnRfa2V5IEkgTk9UTlVMTCwKICAgICAgICAgcmVxdWlyZWQgSSBOT1ROVUxMLAogICAgICAgICBsb3N0dW5mbGFnIEkKICAgICAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTcWwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCcsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL3VzZXIgcHJvcGVydGllcwokZmxkcyAgICAgPSAnCgkgICAgIGlkIEkgS0VZIEFVVE8gTk9UTlVMTCwKCSAgICAgdXNlcmlkIEkgTk9UTlVMTCwKCSAgICAgdGl0bGUgQygxMDApIE5PVE5VTEwsCgkgICAgIGRhdGEgWDIKCSAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMnLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gZm9yZ290dGVuIHBhc3N3b3JkIHN0dWZmCiRmbGRzICAgICA9ICcKCSAgICAgdXNlcmlkIEkgS0VZLAogICAgICAgICBjb2RlIEMoMjUpIE5PVE5VTEwsCiAgICAgICAgIGNyZWF0ZWQgJyAuIENNU19BRE9EQl9EVDsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc190ZW1wY29kZScsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBsb2dpbiBoaXN0b3J5IHN0dWZmCiRmbGRzICAgICA9ICcKICAgICAgICAgdXNlcmlkIEkgTk9UTlVMTCwKCSAgICAgc2Vzc2lvbmlkIEMoMzIpIE5PVE5VTEwsCiAgICAgICAgIGFjdGlvbiBDKDI1NSkgTk9UTlVMTCwKICAgICAgICAgcmVmZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJywKICAgICAgICAgaXBhZGRyZXNzIEMoNjQpJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19oaXN0b3J5JywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIGluZGV4ZXMKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKAogIGNtc19kYl9wcmVmaXgoKSAuICdtYW1zX2lkeF9iZWxvbmdzJywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MnLCAnZ3JvdXBpZCcKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoCiAgY21zX2RiX3ByZWZpeCgpIC4gJ21hbXNfaWR4X3VzZXJuYW1lJywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJywgJ3VzZXJuYW1lJwopOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgKICBjbXNfZGJfcHJlZml4KCkgLiAnbWFtc19pZHhfZXhwaXJlcycsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc191c2VycycsICdleHBpcmVzJwopOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgKICBjbXNfZGJfcHJlZml4KCkgLiAnbWFtc19pZHhfcmVmZGF0ZScsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19oaXN0b3J5JywgJ3VzZXJpZCxyZWZkYXRlLGFjdGlvbicKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoCiAgY21zX2RiX3ByZWZpeCgpIC4gJ21hbXNfaWR4X3Byb3B1c2VydGl0bGUnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcycsICd1c2VyaWQsdGl0bGUnCik7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKAogIGNtc19kYl9wcmVmaXgoKSAuICdtYW1zX2lkeF9wcm9wdGl0bGUnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcycsICd0aXRsZScKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gc2V0dXAgZm9yZWlnbiBrZXkgcmVsYXRpb25zaGlwcwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfYmVsb25ncyBBREQgRk9SRUlHTiBLRVkgKHVzZXJpZCkgUkVGRVJFTkNFUyAnIC4KICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc191c2VycyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4gQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgQUREIEZPUkVJR04gS0VZIChncm91cGlkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfZHJvcGRvd25zIEFERCBGT1JFSUdOIEtFWSAoY29udHJvbF9uYW1lKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuIChuYW1lKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBBREQgRk9SRUlHTiBLRVkgKGdyb3VwX2lkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIEFERCBGT1JFSUdOIEtFWSAobmFtZSkgUkVGRVJFTkNFUyAnIC4KICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZGVmbiAobmFtZSknOwokZGItPkV4ZWN1dGUoJHNxbCk7CiRzcWwgPSAnQUxURVIgVEFCTEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFERCBGT1JFSUdOIEtFWSAodXNlcmlkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzIChpZCknOwokZGItPkV4ZWN1dGUoJHNxbCk7CiRzcWwgPSAnQUxURVIgVEFCTEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFERCBGT1JFSUdOIEtFWSAodGl0bGUpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGRlZm4gKG5hbWUpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2hpc3RvcnkgQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKCiR1aWQgICAgICAgICAgICAgICAgICAgICA9IG1heCgxLCBnZXRfdXNlcmlkKEZBTFNFKSk7CiRyZXNldHNlc3Npb25fdHBsX3R5cGUgICA9IE5VTEw7CiR2aWV3dXNlcl90cGxfdHlwZSAgICAgICA9IE5VTEw7CiRsb3N0dW5jb25maXJtX3RwbF90eXBlICA9IE5VTEw7CiRsb3N0dW5mb3JtX3RwbF90eXBlICAgICA9IE5VTEw7CiRmb3JjZW5ld3B3X3RwbF90eXBlICAgICA9IE5VTEw7CiRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZSA9IE5VTEw7CiRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUgICA9IE5VTEw7CiRjaHNldHRpbmdzX3RwbF90eXBlICAgICA9IE5VTEw7CiRsb2dvdXRfdHBsX3R5cGUgICAgICAgICA9IE5VTEw7CiRsb2dpbl90cGxfdHlwZSAgICAgICAgICA9IE5VTEw7CiRtb2QgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzOwoKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlID0gc3RhdGljIGZ1bmN0aW9uKCRuZXdfdHlwZSkgdXNlICgmJG1vZCwgJiRfZml4X25hbWUsICR1aWQpCnsKICB0cnkKICB7CiAgICAkcHJvdG90eXBlID0gJ01BTVMgJyAuICRuZXdfdHlwZS0+Z2V0X25hbWUoKTsKICAgICR0cGwgICAgICAgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGU7CiAgICAkdHBsLT5zZXRfbmFtZSgkdHBsOjpnZW5lcmF0ZV91bmlxdWVfbmFtZSgkcHJvdG90eXBlKSk7CiAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAkdHBsLT5zZXRfdHlwZSgkbmV3X3R5cGUpOwogICAgJHRwbC0+c2V0X2NvbnRlbnQoJG5ld190eXBlLT5nZXRfZGZsdF9jb250ZW50cygpKTsKICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7IC8vIE1BTVMgb25seSBoYWQgb25lIHRlbXBsYXRlIG9mIGVhY2ggdHlwZS4KICAgICR0cGwtPnNhdmUoKTsKICB9CiAgY2F0Y2goXENtc0ludmFsaWREYXRhRXhjZXB0aW9uICRlKQogIHsKICAgICRsb2dfZXhjZXB0aW9uKCRlKTsKICAgIGF1ZGl0KCcnLCAkbW9kLT5HZXROYW1lKCksICdVcGdyYWRlIFByb2JsZW0gJyAuICRlLT5HZXRNZXNzYWdlKCkpOwogIH0KfTsKCnRyeQp7CiAgJGxvZ2luX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb2dpbl90cGxfdHlwZS0+c2V0X25hbWUoJ2xvZ2luIGZvcm0nKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvZ2luX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkbG9naW5fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb2dpbl90cGxfdHlwZS0+c2F2ZSgpOwogIAogICRsb2dvdXRfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9uYW1lKCdsb2dvdXQgZm9ybScpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvZ291dF90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGxvZ291dF90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRsb2dvdXRfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkY2hzZXR0aW5nc190cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfbmFtZSgnY2hzZXR0aW5ncyBmb3JtJyk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X25hbWUoJ2ZvcmdvdCBwYXNzd29yZCBmb3JtJyk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yZ290cHdmb3JtX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkZm9yZ290cHdmb3JtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2F2ZSgpOwogIAogICRmb3Jnb3Rwd2VtYWlsX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9uYW1lKCdmb3Jnb3QgcGFzc3dvcmQgZW1haWwnKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlLT5zZXRfbmFtZSgnZm9yZ290IHBhc3N3b3JkIHZlcmlmeScpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGZvcmNlbmV3cHdfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X25hbWUoJ2ZvcmNlIG5ldyBwYXNzd29yZCcpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2F2ZSgpOwogIAogICRsb3N0dW5mb3JtX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9uYW1lKCdsb3N0IHVzZXJuYW1lIGZvcm0nKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkbG9zdHVuY29uZmlybV90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfbmFtZSgnbG9zdCB1c2VybmFtZSBjb25maXJtJyk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJHZpZXd1c2VyX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2V0X25hbWUoJ3ZpZXcgdXNlcicpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJHZpZXd1c2VyX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+c2V0X25hbWUoJ3Jlc2V0IHNlc3Npb24nKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRyZXNldHNlc3Npb25fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRyZXNldHNlc3Npb25fdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkdmVyaWZ5Zm9ybV90cGxfdHlwZS0+c2V0X25hbWUoJ3ZlcmlmeV9mb3JtJyk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zYXZlKCk7Cn0KY2F0Y2goXENtc1NRTEVycm9yRXhjZXB0aW9uICRlKQp7CiAgJGxvZ19leGNlcHRpb24oJGUpOwogIGF1ZGl0KCcnLCAkdGhpcy0+R2V0TmFtZSgpLCAnVXBncmFkZSBFcnJvcjogJyAuICRlLT5HZXRNZXNzYWdlKCkpOwp9CmNhdGNoKFxFeGNlcHRpb24gJGUpCnsKICAkbG9nX2V4Y2VwdGlvbigkZSk7CiAgYXVkaXQoJycsICR0aGlzLT5HZXROYW1lKCksICdVcGdyYWRlIEVycm9yOiAnIC4gJGUtPkdldE1lc3NhZ2UoKSk7CiAgCiAgcmV0dXJuICdFUlJPUjogJyAuICRlLT5HZXRNZXNzYWdlKCk7Cn0KCi8vIG5vdyBjcmVhdGUgdGhlIHRlbXBsYXRlcyB0aGVtc2VsdmVzLgokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGxvZ2luX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRsb2dvdXRfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGNoc2V0dGluZ3NfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGZvcmdvdHB3Zm9ybV90cGxfdHlwZSk7CiRjcmVhdGVfZGZsdF90ZW1wbGF0ZSgkZm9yZ290cHdlbWFpbF90cGxfdHlwZSk7CiRjcmVhdGVfZGZsdF90ZW1wbGF0ZSgkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGZvcmNlbmV3cHdfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGxvc3R1bmZvcm1fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJHZpZXd1c2VyX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRyZXNldHNlc3Npb25fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJHZlcmlmeWZvcm1fdHBsX3R5cGUpOwoKLy8gcHJlZmVyZW5jZXMKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21pbl9wYXNzd29yZGxlbmd0aCcsIDYpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJywgMjApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW5oYW5jZWRfcGFzc3dvcmQnLCAxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B3cmVxdWlyZWRjaGFycycsICd+QCMkJV4mKj0rXy0oKS4sIScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywgNCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLCA0MCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycsIDE4MDApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsIDApOwoKJGNvbmZpZyA9ICR0aGlzLT5HZXRFeHRlbmRlZENvbmZpZygpOwokc3RyICAgID0gJ3gnIC4gc3Vic3RyKHN0cl9zaHVmZmxlKG1kNSh0aW1lKCkgLiAkY29uZmlnWydyb290X3VybCddIC4gX19GSUxFX18pKSwgMCwgOCk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScsICRzdHIpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcsIC0xKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsICcqJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsICdibHVlJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlX29uZWdyb3VwJywgMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfbWFya2VyJywgJyEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsICdncmVlbicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dvdXQnLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfYWZ0ZXJ2ZXJpZnknLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJywgMCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcsIDEpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnLCAyMCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcsIDQwKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycsIDEpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdfbWFtcycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywgJy5naWYsLnBuZywuanBnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdub3RpZmljYXRpb25fc3ViamVjdCcsICR0aGlzLT5MYW5nKCdtYW1zX2V2ZW50X25vdGlmaWNhdGlvbicpKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2V4cGlyZWFnZV9tb250aHMnLCA1MjApOwoKIyBJZiB0aGVyZSBpcyBhIExJU0UgaW5zdGFsbGF0aW9uIHNjYW4gZmllbGRzIHRvIGFkZCBvdXJzCiRsaXNlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTElTRScpOwoKaWYoIGlzX29iamVjdCgkbGlzZSkgKQp7CiAgTElTRUZpZWxkZGVmT3BlcmF0aW9uczo6U2Nhbk1vZHVsZXMoKTsKfQoKLy8gdXNlcnNhbHQgPSAwL3Vuc2V0IDogbWQ1ICBoYXNoIHdpdGggZml4ZWQgc2FsdCBmb3IgYWxsIHVzZXJzCi8vIHVzZXJzYWx0ID0gMSA6IHNoYTEgaGFzaCB3aXRoIHVzZXIgc3BlY2lmaWMgc2FsdAovLyB1c2Vyc2FsdCA9IDMgOiB1c2UgcGhwJ3MgcGFzc3dvcmRfZW5jcnlwdCwgYW5kIHBhc3N3b3JkX3ZlcmlmeSB3aXRoIGJjcnlwdAokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX3VzZXJzYWx0JywgMik7CgovLyBFdmVudHMKJHRoaXMtPkNyZWF0ZUV2ZW50KCdBZnRlckxvZ2luQXV0aCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0JlZm9yZUxvZ2luJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25Mb2dpbicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uTG9naW5GYWlsZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkxvZ291dCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uRXhwaXJlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uQ3JlYXRlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uRGVsZXRlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uVXBkYXRlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uQ3JlYXRlR3JvdXAnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPblVwZGF0ZUdyb3VwJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25EZWxldGVHcm91cCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uUmVmcmVzaFVzZXInKTsKCi8vIHBlcm1pc3Npb25zCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNb2RpZnkgTUFNUycsICdNb2RpZnkgTUFNUyBQcm9wZXJ0aWVzJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNb2RpZnkgTUFNU1VzZXJQcm9wcycsICdNb2RpZnkgTUFNUyBQcm9wZXJ0aWVzJyk7]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfbG9nZ2VkaW4iICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19iZWxvbmdzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2Ryb3Bkb3ducyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3RlbXBjb2RlIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfaGlzdG9yeSIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZGVmbiIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2dyb3VwcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3VzZXJzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyB0ZW1wbGF0ZXMKJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7CgovLyBwcmVmZXJlbmNlcwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKLy8gcGVybWlzc2lvbnMKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01vZGlmeSBNQU1TVXNlclByb3BzJyk7CgovLyBNQU1TLXNwZWNpZmljIHBlcm1pc3Npb25zIC4uLiBtYXkgb3IgbWF5IG5vdCBleGlzdAokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgVXNlcnMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01BTVMgTW9kaWZ5IEdyb3VwcycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgTUFNU1Byb3BzJyk7CgovLyBFdmVudHMKJHRoaXMtPlJlbW92ZUV2ZW50KCAnQWZ0ZXJMb2dpbkF1dGgnICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ0JlZm9yZUxvZ2luJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luRmFpbGVkJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ291dCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25FeHBpcmVVc2VyJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkNyZWF0ZVVzZXInICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uRGVsZXRlVXNlcicgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25DcmVhdGVHcm91cCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25EZWxldGVHcm91cCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25VcGRhdGVVc2VyJyApOwoKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnRQb3N0UmVuZGVyJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NHRWNvbW1lcmNlQmFzZScsJ09yZGVyVXBkYXRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlckRlbGV0ZWQnKTs=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiMgQ01TTVNFeHQgbWF5IG5vdCBiZSB1cGRhdGVkIHlldC4gV2UgbGV0IGl0IGZhaWwgaWYgdGhlIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlLgppZiAobWV0aG9kX2V4aXN0cygkdGhpcywgJ0lzUGhwVmVyc2lvblN1cHBvcnRlZCcpICYmICEkdGhpcy0+SXNQaHBWZXJzaW9uU3VwcG9ydGVkKCkpCnsKICAjIG90aGVyd2lzZSwgcmV0dXJuIGFuIGVycm9yCiAgcmV0dXJuICdNaW5pbXVtIFBIUCB2ZXJzaW9uIG9mICcgLiAkdGhpcy0+R2V0TWluaW1hbFBocFZlcnNpb24oKSAuICcgcmVxdWlyZWQnOwp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdWlkID0gZ2V0X3VzZXJpZCgpOwokbW9kID0gJHRoaXM7CgppZigkb2xkdmVyc2lvbiA8ICcxLjAuYi41JykKewogIFxNQU1TXHVwZ3JhZGVfdXRpbHM6OmNvbnRlbnRfdHlwZV9yZXBhaXIoKTsKICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTW9kaWZ5IE1BTVNVc2VyUHJvcHMnLCAnTW9kaWZ5IE1BTVMgUHJvcGVydGllcycpOwogICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgRnJvbnRFbmRVc2VyUHJvcHMnKTsKfQoKaWYoJG9sZHZlcnNpb24gPCAnMS4wLmIuNicpCnsKICBcTUFNU1x1cGdyYWRlX3V0aWxzOjpjb250ZW50X3R5cGVfcmVwYWlyKCk7Cn0KCiMgYWx3YXlzCgojIElmIHRoZXJlIGlzIGEgTElTRSBpbnN0YWxsYXRpb24gc2NhbiBmaWVsZHMgdG8gYWRkIG91cnMKJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CgppZiggaXNfb2JqZWN0KCRsaXNlKSApCnsKICBMSVNFRmllbGRkZWZPcGVyYXRpb25zOjpTY2FuTW9kdWxlcygpOwp9]]></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+eyRwcm9tcHRfZ3JvdXBuYW1lfTogKjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2dyb3VwbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZ3JvdXBkZXNjfTogKjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2dyb3VwZGVzY308L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0id2FybmluZyI+CiAgKiA9IHskbW9kLT5MYW5nKCdyZXF1aXJlZCcpfQo8L2Rpdj4KCntpZiAkcHJvcGNvdW50ID4gMH0KPGJyLz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG5hbWV0ZXh0fTwvdGg+CiAgICAgIDx0aD57JHByb21wdHRleHR9PC90aD4KICAgICAgPHRoPnskdHlwZXRleHR9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdlbmNyeXB0ZWQnKX08L3RoPgogICAgICA8dGg+eyRmaWVsZHN0YXR1c3RleHR9PC90aD4KICAgICAgPHRoPnskdXNlZGlubG9zdHVudGV4dH08L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICB7Zm9yZWFjaCAkcHJvcHMgYXMgJHByb3BlfQogICAge2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KICAgIDx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+CiAgICAgIDx0ZD57JHByb3BlLT5oaWRkZW59eyRwcm9wZS0+bmFtZX08L3RkPgogICAgICA8dGQ+eyRwcm9wZS0+cHJvbXB0fTwvdGQ+CiAgICAgIDx0ZD57JHByb3BlLT50eXBlfTwvdGQ+CiAgICAgIDx0ZD57aWYgJHByb3BlLT5lbmNyeXB0ZWR9PHNwYW4gaW5mbz0ieyRtb2QtPkxhbmcoJ2luZm9fZW5jcnlwdGVkJyl9IiBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij57JG1vZC0+TGFuZygneWVzJyl9PC9zcGFuPnsvaWZ9PC90ZD4KICAgICAgPHRkPnskcHJvcGUtPnJlcXVpcmVkfTwvdGQ+CiAgICAgIDx0ZD57JHByb3BlLT5sb3N0dW59PC90ZD4KICAgICAgPHRkPgogICAgICAgIHtpZiBpc3NldCgkcHJvcGUtPm1vdmV1cF9pZHgpfQogICAgICAgICAgPGJ1dHRvbiBuYW1lPSJ7JGFjdGlvbmlkfW1vdmV1cCIgdGl0bGU9InskbW9kLT5MYW5nKCdtb3ZlX3VwJyl9IiB2YWx1ZT0ieyRwcm9wZS0+bW92ZXVwX2lkeH0iPnskaW1nX3VwfTwvYnV0dG9uPgogICAgICAgIHsvaWZ9CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICB7aWYgaXNzZXQoJHByb3BlLT5tb3ZlZG93bl9pZHgpfQogICAgICAgICAgPGJ1dHRvbiBuYW1lPSJ7JGFjdGlvbmlkfW1vdmVkb3duIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ21vdmVfZG93bicpfSIgdmFsdWU9InskcHJvcGUtPm1vdmVkb3duX2lkeH0iPnskaW1nX2Rvd259PC9idXR0b24+CiAgICAgICAgey9pZn0KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgey9mb3JlYWNofQogIDwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CjwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/addprop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4Ke2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9Cnskc3RhcnRmb3JtfQo8ZGl2Pnskb3JpZ190eXBlfTwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JHByb21wdF9uYW1lfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X25hbWV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRwcm9tcHRfcHJvbXB0fTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X3Byb21wdH08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JHByb21wdF90eXBlfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X3R5cGV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRmaWVsZHMpfQogIHtmb3JlYWNoIGZyb209JGZpZWxkcyBpdGVtPSdvbmVmbGQnfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG9uZWZsZFswXX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+eyRvbmVmbGRbMV19PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICB7L2ZvcmVhY2h9CiAgey9pZn0Ke2lmIGlzc2V0KCRpbnB1dF9mb3JjZV91bmlxdWUpICYmICRkZWZuLnR5cGUgIT0gNn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mb3JjZV91bmlxdWUnKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+eyRpbnB1dF9mb3JjZV91bmlxdWV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4Key9pZn0Ke2lmICRkZWZuLnR5cGUgIT0gMiAmJiAkZGVmbi50eXBlICE9IDZ9CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZW5jcnlwdCcpfTo8L3A+CiAgICA8ZGl2IGNsYXNzPSJncmlkXzgiPnskaW5wdXRfZW5jcnlwdH08cD57JG1vZC0+TGFuZygnaW5mb19lbmNyeXB0Jyl9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4Key9pZn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+eyRoaWRkZW58ZGVmYXVsdDonJ317JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2Pgp7JGVuZGZvcm19Cg==]]></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[e2lmIGlzc2V0KCRtZXNzYWdlKSB9PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbWVzc2FnZX08L2Rpdj57L2lmfQoKeyogQSBmb3JtIChzaW1wbGUgYnV0dG9uKSBmb3IgZXhwb3J0aW5nIHVzZXJzIHRvIGNzdiAqfQp7JGFkdF9zdGFydGZvcm19eyRhZHRfaW5wdXRfaGlkZGVufQoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbGVnZW5kX3VzZXJoaXN0b3J5bWFpbnRlbmFuY2V9PC9sZWdlbmQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9leHBvcnR1c2VyaGlzdG9yeX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZXhwb3J0dXNlcmhpc3Rvcnl9Jm5ic3A7eyRidXR0b25fZXhwb3J0dXNlcmhpc3Rvcnl9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NsZWFydXNlcmhpc3Rvcnl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NsZWFydXNlcmhpc3Rvcnl9Jm5ic3A7eyRidXR0b25fY2xlYXJ1c2VyaGlzdG9yeX08L3A+CjwvZGl2Pgo8L2ZpZWxkc2V0Pgp7JGVuZGZvcm19]]></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+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1kaXNhYmxlZCBzZWxlY3RlZD0oaW50KSR1c2VyLT5pc19kaXNhYmxlZH0KICAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzQgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mb3JjZV9jaHNldHRpbmdzJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1mb3JjZV9jaHNldHRpbmdzIHNlbGVjdGVkPShpbnQpJHVzZXItPmZvcmNlX2NoYW5nZV9zZXR0aW5nc30KICAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzQgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mb3JjZV9uZXdwdycpfTo8L2xhYmVsPgogICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9Zm9yY2VfbmV3cHcgc2VsZWN0ZWQ9KGludCkkdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij48c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPioqPC9zcGFuPiZuYnNwOyB7JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlX3JldmFsaWRhdGUnKX06PC9sYWJlbD4KICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPW11c3RfdmFsaWRhdGUgc2VsZWN0ZWQ9KGludCkkdXNlci0+bXVzdF92YWxpZGF0ZX0KICAgICB7JGNvZGU9JG1vZC0+R2V0VXNlclRlbXBDb2RlKCR1c2VyLT5pZCl9CiAgICAge2lmICRjb2RlfTxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+eyRtb2QtPkxhbmcoJ2luZm9fdmVyaWZ5ZW1haWxfc2VudCcpfXsvaWZ9CiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdleHBpcmVzJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHskeT1kYXRlKCdZJywkdXNlci0+ZXhwaXJlcyl9CiAgICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSJ7JGFjdGlvbmlkfWV4cGlyZXMiIHRpbWU9InskdXNlci0+ZXhwaXJlc30iIHN0YXJ0X3llYXI9MjAwMCBlbmRfeWVhcj0yMTAwfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj57JG1vZC0+TGFuZygnd2Fybl9zdHJvbmdwYXNzd29yZCcpfTwvZGl2PgoKe2lmICRncm91cHN9Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnaWQnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ25hbWUnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2Rlc2NyaXB0aW9uJyl9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggJGdyb3VwcyBhcyAkZ3JvdXB9CiAgICB7JGNoZWNrZWQ9MH0KICAgIHtpZiAkdXNlci0+aWQgPiAwICYmICR1c2VyLT5tZW1iZXJvZigkZ3JvdXAuaWQpfQogICAgICB7JGNoZWNrZWQ9MX0KICAgIHtlbHNlaWYgJHVzZXItPmlkIDwgMSAmJiAkZGVmYXVsdF9ncm91cCA9PSAkZ3JvdXAuaWR9CiAgICAgIHskY2hlY2tlZD0xfQogICAgey9pZn0KICAgIDx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0ncm93MSxyb3cyJ30iPgogICAgICAgPHRkPnskZ3JvdXAuaWR9PC90ZD4KICAgICAgIDx0ZD57JGdyb3VwLmdyb3VwbmFtZX08L3RkPgogICAgICAgPHRkPnskZ3JvdXAuZ3JvdXBkZXNjfTwvdGQ+CiAgICAgICA8dGQ+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWVtYmVyb2ZbXSIgdmFsdWU9InskZ3JvdXAuaWR9IiB7aWYgJGNoZWNrZWR9Y2hlY2tlZHsvaWZ9Lz4KICAgICAgIDwvdGQ+CiAgICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7Zm9ybV9lbmR9Cg==]]></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/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlPg0KICBzZWN0aW9uI2NoYW5nZWxvZyBzcGFuDQogIHsNCiAgICBNb25vJywgJ0x1Y2lkYSBDb25zb2xlJywgJ0x1Y2lkYSBTYW5zIFR5cGV3cml0ZXInLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICBjb2xvcjogIzIzMjMyMzsNCiAgICBoZWlnaHQ6IGF1dG87DQogICAgYm9yZGVyLXJhZGl1czogMC4zMTVlbTsNCiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KICAgIHBhZGRpbmc6IDAuM2VtOw0KICAgIGZvbnQtc2l6ZTogMC45ZW07DQogIH0NCjwvc3R5bGU+DQo8c2VjdGlvbiBpZD0iY2hhbmdlbG9nIj4KICA8aDM+PHNwYW4+VmVyc2lvbiAxLjIuMDwvc3Bhbj4gPHNtYWxsPjIwMjYtMDMtMTY8L3NtYWxsPjwvaDM+CgogIDx1bD4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gY29tcGF0aWJpbGl0eSBpc3N1ZXMgZm9yIFBIUCA3LjQgdGhyb3VnaCBQSFAgOC40OzwvbGk+CiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGFkbWluIGdyb3VwIGVkaXRpbmcsIGdyb3VwIGluZm8gY2FjaGluZywgYW5kIHBhc3N3b3JkLXJlc2V0IGF1dG8tbG9naW4gZXJyb3IgaGFuZGxpbmc7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gdXNlciBjYWNoZSBoYW5kbGluZyBmb3IgZmFpbGVkIGRhdGFiYXNlIHJlYWRzIGFuZCBpbmNvbnNpc3RlbnQgcHJvcGVydHkgcm93czs8L2xpPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiBpbXBvcnQsIGxvc3QgdXNlcm5hbWUsIGZvcmNlZCBsb2dvdXQgc2NoZWR1bGluZywgYW5kIHNlc3Npb24gc3RhdHVzIGlzc3Vlczs8L2xpPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiB1c2VyIGhpc3RvcnkgZmlsdGVyaW5nIGZvcm0gcGFyYW1ldGVyczs8L2xpPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiBzZXNzaW9uIHN0YXR1cyBjb3VudGRvd24gY2hlY2tzIHRvIHVzZSB0aGUgQ01TTVNFeHQgc2Vzc2lvbiBtYXJrZXIgZmlsZTs8L2xpPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiBiYWNrZW5kIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzIHNhdmUgYWN0aW9uIHRvIGlnbm9yZSBkaXJlY3Qgbm9uLXN1Ym1pdCByZXF1ZXN0czs8L2xpPgogICAgPGxpPjxzcGFuPmNoYW5nZWQ8L3NwYW4+IHRoZSBNQU1TIEFQSSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgYW5kIHJlbGlhYmxlOzwvbGk+CiAgICA8bGk+PHNwYW4+YWRkZWQ8L3NwYW4+IHRoZSA8Y29kZT5BZGRIaXN0b3J5KCk8L2NvZGU+LCA8Y29kZT5HZXRCdWxrVXNlckluZm8oKTwvY29kZT4sIGFuZCA8Y29kZT5Jc1ZhbGlkRW1haWxBZGRyZXNzKCk8L2NvZGU+IEFQSSBtZXRob2RzOzwvbGk+CiAgPC91bD4KCiAgPGgzPjxzcGFuPlZlcnNpb24gMS4xLjA8L3NwYW4+IDxzbWFsbD4yMDI0LTAyLTEyPC9zbWFsbD48L2gzPgoKICA8dWw+CiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGJhY2tlbmQgdGFicyBhY3RpdmUgc3RhdGU7PC9saT4NCiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGJhY2tlbmQgbGF5b3V0OzwvbGk+DQogICAgPGxpPjxzcGFuPmNoYW5nZWQ8L3NwYW4+IGZpbmFsbHkgR3JvdXBzIGFuZCBQcm9wZXJ0aWVzIGFyZSBub3QgcmVxdWlyZWQgdG8gYmUgc2V0IGZvciB1c2VycyB0byBiZSBjcmVhdGVkOzwvbGk+DQogICAgPGxpPjxzcGFuPmNoYW5nZWQ8L3NwYW4+IGEgbmV3IEFQSSBoYXMgYmVlbiBzdGFydGVkIHRvIGJlIGltcGxlbWVudGVkIHRvIGJlIG1vcmUgY29uc2lzdGVudCBhbmQgZWZmaWNpZW50OzwvbGk+DQogICAgPGxpPjxzcGFuPmRlcHJlY2F0ZWQ8L3NwYW4+IHRoZSBvbGQgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmU7PC9saT4NCiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGNvbXBhdGliaWxpdHkgd2l0aCBQSFAgOCsgKHRoZXJlIG1heSBzdGlsbCBiZSBhIGZldyBub3RpY2VzIG9yIHdhcm5pbmdzKTs8L2xpPg0KICA8L3VsPg0KDQogIDxoMz48c3Bhbj5WZXJzaW9uIDEuMDwvc3Bhbj4gPHNtYWxsPjIwMjEtMDItMjM8L3NtYWxsPjwvaDM+DQoNCiAgPHA+SW5pdGlhbCBwdWJsaWMgcmVsZWFzZTwvcD4NCjwvc2VjdGlvbj4NCg==]]></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[Cnsqe2lmICRucHJvcHMgPT0gMCAmJiAwfSAqfXsqIFdJTEwgSEFWRSBUTyBVU0UgQSBQUkVGRVJFTkNFIEZPUiBUSElTICp9CnsqICA8ZGl2IGNsYXNzPSJyZWQgY2VudGVyIj57JG1vZC0+TGFuZygnZXJyb3Jfbm9wcm9wZXJ0aWVzJyl9PC9kaXY+Kn0Keyp7ZWxzZX0qfQoKeyogIHtpZiAhaXNzZXQoJGl0ZW1jb3VudCkgfHwgJGl0ZW1jb3VudCA9PSAwfSp9CnsqICAgIDxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj4wJm5ic3A7eyRncm91cHNmb3VuZH08L2Rpdj4qfQp7KiAgey9pZn0qfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8ZGl2IGNsYXNzPSJncmlkXzgiIHN0eWxlPSJtYXJnaW4tbGVmdDogMDsiPgogICAgICB7KmlmICRwcm9wY291bnQgPiAwfXskYWRkZ3JvdXBsaW5rfGRlZmF1bHQ6Jyd9Jm5ic3A7ey9pZip9CgkJCXskYWRkZ3JvdXBsaW5rfGRlZmF1bHQ6Jyd9CiAgICAgIHtpZiBpc3NldCgkaXRlbWNvdW50KSAmJiAkaXRlbWNvdW50ID4gMCAmJiBpc3NldCgkZXhwb3J0bGluayl9eyRleHBvcnRsaW5rfSZuYnNwO3svaWZ9CiAgICAgIHskaW1wb3J0bGlua3xkZWZhdWx0OicnfQogICAgPC9kaXY+CiAgICB7aWYgaXNzZXQoJGl0ZW1jb3VudCkgJiYgJGl0ZW1jb3VudCA+IDB9CiAgICAgIDxkaXYgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij4KCSAgICAgIHskaXRlbWNvdW50fSZuYnNwO3skZ3JvdXBzZm91bmR9PC9kaXY+CiAgICB7L2lmfQogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRpdGVtcyl9CiAgICA8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGggd2lkdGg9IjUlIj57JGlkdGV4dH08L3RoPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRkZXNjdGV4dH08L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ21lbWJlcnMnKX08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkJPHRkPnskZW50cnktPmlkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZXNjfTwvdGQ+CiAgICAgIDx0ZD57JGVudHJ5LT5udXNlcnN8ZGVmYXVsdDokbW9kLT5MYW5nKCdub3RfYXZhaWxhYmxlJyl9PC90ZD4KCQkJPHRkPnskZW50cnktPmV4cG9ydGxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua3xkZWZhdWx0OicnfTwvdGQ+CgkJPC90cj4KCQl7Zm9yZWFjaGVsc2V9CgkJPHRyPgoJCQk8dGQgY29sc3Bhbj0iNyI+CgkJCQk8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+MCZuYnNwO3skZ3JvdXBzZm91bmR9PC9kaXY+CgkJCTwvdGQ+CgkJPC90cj4KICAgIHsvZm9yZWFjaH0KCTwvdGJvZHk+CiAgPC90YWJsZT4KICB7L2lmfQp7KnsvaWZ9Kn0K]]></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[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQogIDxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc2VzKTwvaT4uICBJdCBhbGxvd3MgY3JlYXRpb24gb2YgdXNlciBncm91cHMsIGFuZCB1c2VyIGFjY291bnRzIGFuZCBhbGxvd3MgdXNlcnMgdG8gbG9naW4gYW5kIGxvZ291dC48L3A+DQogIDxoND5GZWF0dXJlczo8L2g0Pg0KICA8dWw+DQogICAgPGxpPlVzZXJzIGNhbiBiZSBtZW1iZXJzIG9mIG11bHRpcGxlIGdyb3Vwcy48L2xpPg0KICAgIDxsaT5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvbGk+DQogICAgPGxpPkdyb3VwIFByb3BlcnRpZXMuICBZb3UgY2FuIGFzayBmb3IgZGlmZmVyZW50IGluZm9ybWF0aW9uIGZyb20gbWVtYmVycyBvZiBkaWZmZXJlbnQgZ3JvdXBzLjwvbGk+DQogICAgPGxpPkxvdHMgb2YgZmllbGQgdHlwZXMuPC9saT4NCiAgICA8bGk+UHJvdmlkZXMgYSBjb250ZW50IHR5cGUgdG8gbWFrZSBwcm90ZWN0aW5nIGNvbnRlbnQgc2ltcGxlLCBpZiBub3QgdHJpdmlhbC48L2xpPg0KICAgIDxsaT5DYXBhYmxlIG9mIGhhbmRsaW5nIHRob3VzYW5kcyBvZiB1c2VyczwvbGk+DQogICAgPGxpPkV4dGVuc2l2ZSBmbGV4aWJpbGl0eSBmb3IgaGFuZGxpbmcgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4sIGFuZCBzZW5kcyBldmVudHMgdG8gZXh0ZW5kIHRoZSB3b3JrZmxvdyBwcm9jZXNzLjwvbGk+DQogICAgPGxpPkZvcmdvdHRlbiBwYXNzd29yZCwgYW5kIGZvcmdvdCB1c2VybmFtZSBmdW5jdGlvbmFsaXR5Li4uIGFsbG93cyB1c2VycyB0byBzZXQgYSBuZXcgcGFzc3dvcmQsIGFuZC9vciB0byByZWNvdmVyIHRoZWlyIHVzZXJuYW1lIGlmIHRoZXkgY29tcGxldGVseSBmb3Jnb3QgbG9naW4gZGV0YWlscy48L2xpPg0KICAgIDxsaT5FeHRlbmRhYmxlIHRvIGRpZmZlcmVudCBhdXRoZW50aWNhdGlvbiB0eXBlcyAoTERBUCwgRmFjZWJvb2ssIGV0YykuPC9saT4NCiAgICA8bGk+UHJvdmlkZXMgZXh0ZW5zaXZlIGltcG9ydCBhbmQgZXhwb3J0IGNhcGFiaWxpdGllcy48L2xpPg0KICAgIDxsaT5IYXMgYW4gZXh0ZW5zaXZlIEFQSSBmb3IgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgaW50byB2YXJpb3VzIG90aGVyIENNU01TIGFkZG9uIG1vZHVsZXMuPC9saT4NCiAgICA8bGk+VGhlIGFiaWxpdHkgdG8gZW5jcnlwdCBzZW5zaXRpdmUgdXNlciBkYXRhLjwvbGk+DQogICAgPGxpPlN0cm9uZyBlbmNyeXB0aW9uIGFuZCBzZWN1cml0eS48L2xpPg0KICAgIDxsaT5FeHRlbnNpdmUgYWRtaW5pc3RyYXRpdmUgY2FwYWJpbGl0aWVzLjwvbGk+DQogICAgPGxpPkFkZGl0aW9uYWwgPGI+TElTRTwvYj4gY3VzdG9tIGZpZWxkcyBpZiB5b3UgaGF2ZSBpdCBpbnN0YWxsZWQuPC9saT4NCiAgPC91bD4NCg0KDQo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4NCjxoMz5Qcml2YWN5IFdhcm5pbmc6PC9oMz4NCjxwPkFkbWluaXN0cmF0b3JzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHNhZmV0eSBhbmQgc2VjdXJpdHkgb2YgYW55IHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbGxlY3RlZC48L3A+DQoNCjxwPlRoaXMgbW9kdWxlIGRvZXMgbG9nIHRoZSBJUCBhZGRyZXNzIG9mIHVzZXJzLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRG8tTm90LVRyYWNrIHBvbGljaWVzLCBhbmQgbWF5IGJyZWFrIHNvbWUgbGF3cy4gIDxzdHJvbmc+VXNlIEF0IFlvdXIgT3duIFJpc2suPC9zdHJvbmc+PC9wPg0KPHA+QWRkaXRpb25hbGx5LCB0aGUgYWRtaW5pc3RyYXRvciBoYXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIHRoZSBtb2R1bGUgc28gdGhhdCBjb29raWVzIGFyZSB1c2VkLiAgSG93ZXZlciBubyBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGhlIGNvb2tpZXMgKGlmIGVuYWJsZWQpLiAgT25seSBhIHN5c3RlbSBhc3NpZ25lZCB1bmlxdWUgdXNlciBpZGVudGlmaWVyLCBhbmQgYSBzZXNzaW9uIGlkZW50aWZpZXIuPC9wPg0KDQo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBzb21lIGFzc2lzdGFuY2UgaW4gbWFuYWdpbmcgdXNlciBwcml2YWN5LiAgVGhlcmUgaXMgZnVuY3Rpb25hbGl0eSB0byBhbm9ueW1pemUgYSB1c2VycyBhY2NvdW50LCBhbmQgZnVuY3Rpb25hbGl0eSB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBjbGVhciBvbGQgZGF0YSBmcm9tIHVzZXIgaGlzdG9yeSBsb2dzLjwvcD4NCg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBOT1QgcHJvdmlkZSB0aGUgYWJpbGl0eSBmb3IgdXNlcnMgdG8gcmVtb3ZlIHRoZWlyIGFjY291bnRzLiAgVGhpcyBpcyBiZWNhdXNlIG90aGVyIGZ1bmN0aW9uYWxpdHkgKHN1Y2ggYXMgRS1jb21tZXJjZSkgbWF5IHJlcXVpcmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gZm9yIHJlZmVyZW50aWFsIGludGVncml0eS4gIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGFkbWluIG9wdGlvbiB0byBhbGxvdyBhbm9ueW1pemluZyBhIHVzZXIuPC9wPg0KPC9kaXY+DQoNCjxoMz5FbmNyeXB0ZWQgRGF0YTo8L2gzPg0KPHA+VGhlIEVuY3J5cHRlZCBmaWVsZCBmdW5jdGlvbmFsaXR5IGlzIGludGVuZGVkIHRvIHN0b3JlIChpbiBhIHNlY3VyZSB3YXkpIHBlcnNvbmFsIGFuZCBwcml2YXRlIGRhdGEgdGhhdCBldmVuIHRoZSBzaXRlIGFkbWluaXN0cmF0b3Igc2hvdWxkIG5vdCBoYXZlIGFjY2VzcyB0by4gIGkuZTogaXRlbXMgc3VjaCBhcyBDcmVkaXQgQ2FyZCBpbmZvcm1hdGlvbi4gIFRoZSBvbmx5IHBlcnNvbiB0aGF0IHNob3VsZCBiZSBhYmxlIHRvIHZpZXcgYW5kIGVkaXQgdGhpcyBkYXRhIGlzIHRoZSB1c2VyIGhpbXNlbGYuICAgVGhpcyBkYXRhIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQgdG8gcGxhaW4gdGV4dCBlaXRoZXIuICBUaGUgZGF0YSBjb3VsZCBob3dldmVyIGJlIHJlYWQgYW5kIHVzZWQgYnkgb3RoZXIgbW9kdWxlcy48L3A+DQoNCjxoMz5UaXBzPC9oMz4NCjx1bD4NCiAgPGxpPkR5bmFtaWMgTmF2aWdhdGlvbnM6DQogICAgPHA+SW4gbW9zdCBjaXJjdW1zdGFuY2VzIHlvdSBjYW5ub3QgYWxsb3cgYnJvd3NlciBjYWNoaW5nIG9uIGFueSBwYWdlIHRoYXQgaGFzIGEgZHluYW1pYyBuYXZpZ2F0aW9uLi4uIHRoZSB0d28gc2hvdWxkIG5vdCBiZSBtaXhlZC48L3A+DQogIDwvbGk+DQogIDxsaT5SZWRpcmVjdCBQcmVmZXJlbmNlcyBhbmQgJmxicmFjZTskdXNlcm5hbWV9Og0KICAgIDxwPklmIHVzaW5nIHRoZSA8Y29kZT4mbGJyYWNlOyR1c2VybmFtZX08L2NvZGU+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+DQogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIGxvZ2dlZCBpbi4gSGFuZGxlcnMgY2FuIHRocm93IHRoZSA8Y29kZT5NQU1TTG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPmdyb3VwczwvY29kZT4gOiBzdHJpbmcgLSBBIGxpc3Qgb2Ygb25seWdyb3VwcyAoc2VlIHRoZSBvbmx5Z3JvdXBzIHBhcmFtKTwvbGk+DQoJICAgPGxpPjxjb2RlPmlwPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBJUCBhZGRyZXNzIGRldGVjdGVkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyTG9naW5BdXRoPC9jb2RlPg0KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkLCBidXQgYmVmb3JlIGFjdHVhbGx5IGJlaW5nIGxvZ2dlZCBpbi4gIFRoaXMgaG9vayBpcyB1c2VmdWwgdG8gYWxsb3cgb3RoZXIgbW9kdWxlcyB0byBkbyBhZGRpdGlvbmFsIHNlY3VyaXR5IGNoZWNrcy4gIEhhbmRsZXJzIGNhbiB0aHJvdyBhIDxjb2RlPk1BTVNMb2dpbkZhaWxlZEV4Y2VwdGlvbjwvY29kZT4gdG8gZ2VuZXJhdGUgYW4gZXJyb3IuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgaWQgZGV0ZWN0ZWQgZm9yIHRoaXMgdXNlcm5hbWUuPC9saT4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPmdyb3VwczwvY29kZT4gOiBzdHJpbmcgLSBBIGxpc3Qgb2Ygb25seWdyb3VwcyAoc2VlIHRoZSBvbmx5Z3JvdXBzIHBhcmFtKTwvbGk+DQoJICAgPGxpPjxjb2RlPmlwPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBJUCBhZGRyZXNzIGRldGVjdGVkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9naW5GYWlsZWQ8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgd2hlbiBhIGxvZ2luIGF0dGVtcHQgaGFzIGZhaWxlZCBmb3Igc29tZSByZWFzb24uPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgcHJvdmlkZWQgdXNlcm5hbWUuPC9saT4NCgkgICA8bGk+PGNvZGU+bXNnPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aHQgaGUgZmFpbGVkIGxvZ2luIGF0dGVtcHQuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6T25FeHBpcmVVc2VyPC9jb2RlPg0KICAgICAgICA8cD5TZW50IHdoZW4gYSB1c2VyIHNlc3Npb24gaXMgZXhwaXJlZCwgYW5kIHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgZXhwaXJlZCB1c2VyaWQuPC9saT4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIGV4cGlyZWQgdXNlcm5hbWUuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6QmVmb3JlQW5vbmltaXplVXNlcjwvY29kZT4NCiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBiZWZvcmUgYSB1c2VyIGlzIGFub25pbWl6ZWQuPC9wPg0KCTxwPlBhcmFtZXRlcnM6PC9wPg0KCTx1bD4NCgkgICAgPGxpPjxjb2RlPiR1aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZCB0byBleHBpcmUuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6QWZ0ZXJBbm9uaW1pemVVc2VyPC9jb2RlPg0KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdXNlciBpcyBhbm9uaW1pemVkLjwvcD4NCgk8cD5QYXJhbWV0ZXJzOjwvcD4NCgk8dWw+DQoJICAgIDxsaT48Y29kZT4kdWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQgdG8gZXhwaXJlLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkFmZXJWZXJpZnk8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSB1c2VyIGFjY291bnQgaXMgdmVyaWZpZWQuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgICA8bGk+PGNvZGU+dWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQgdG8gZXhwaXJlLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkNsZWFyVXNlckhpc3Rvcnk8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHVzZXIgaGlzdG9yeSBpcyBjbGVhcmVkIGZyb20gdGhlIGRhdGFiYXNlLjwvbGk+DQogICAgICAgIDxwPlBhcmFtZXRlcnM6PC9wPg0KCTx1bD4NCgkgICAgPGxpPjxjb2RlPiRvbGRlcl90aGFuPC9jb2RlPiA6IGludCAtIEEgdW5peCB0aW1lc3RhbXAgY29udGFpbmluZyB0aGUgbWF4aW11bSB0aW1lIG9mIHJlY29yZHMgdG8ga2VlcC48L2xpPg0KCTwvdWw+DQogIDwvbGk+DQoNCiAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9naW48L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luIG9wZXJhdGlvbi48L3A+DQogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4NCgk8dWw+DQoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQuPC9saT4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPmlwPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBJUCBhZGRyZXNzIGRldGVjdGVkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9nb3V0PC9jb2RlPg0KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBoYXMgYmVlbiBsb2dnZWQgb3V0IG9mIHRoZSBzeXN0ZW0uPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KPC91bD4=]]></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_simple.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPk1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSAoTUFNUyk8L2gzPg0KDQo8cD4NCk1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSAoTUFNUykgaXMgYSBDTVMgTWFkZSBTaW1wbGUgbW9kdWxlIHRoYXQgYWxsb3dzIGFkbWluaXN0cmF0b3JzDQp0byBkZWZpbmUgcHJvdGVjdGVkIGFyZWFzIG9mIGEgd2Vic2l0ZSBhbmQgY29udHJvbCBhY2Nlc3MgdG8gdGhvc2UgYXJlYXMgYmFzZWQgb24NCmF1dGhlbnRpY2F0aW9uIHN0YXRlLCBtZW1iZXJzaGlwLCBvciBwZXJtaXNzaW9ucy4NCjwvcD4NCg0KPHA+DQpUaGUgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIGJlIGVhc3kgdG8gY29uZmlndXJlIHdoaWxlIHJlbWFpbmluZyBmbGV4aWJsZSBlbm91Z2ggdG8NCmludGVncmF0ZSB3aXRoIG90aGVyIHVzZXIgYXV0aGVudGljYXRpb24gYW5kIGZyb250ZW5kIHVzZXIgbWFuYWdlbWVudCBtb2R1bGVzLg0KPC9wPg0KDQo8aDQ+TWFpbiBmZWF0dXJlczwvaDQ+DQoNCjx1bD4NCiAgPGxpPkRlZmluZSBvbmUgb3IgbW9yZSBwcm90ZWN0ZWQgbWVtYmVyIGFyZWFzPC9saT4NCiAgPGxpPlJlc3RyaWN0IGFjY2VzcyB0byBwYWdlcyBvciBzcGVjaWZpYyBjb250ZW50PC9saT4NCiAgPGxpPkludGVncmF0ZSB3aXRoIGZyb250ZW5kIGF1dGhlbnRpY2F0aW9uIG1vZHVsZXM8L2xpPg0KICA8bGk+UHJvdmlkZSBjbGVhciBleHRlbnNpb24gcG9pbnRzIGZvciBkZXZlbG9wZXJzPC9saT4NCjwvdWw+DQoNCjxwPg0KRm9yIGZ1bGwgZG9jdW1lbnRhdGlvbiwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgYWR2YW5jZWQgdXNhZ2UsIHBsZWFzZSByZWZlciB0byB0aGUNCm1vZHVsZSBoZWxwIGF2YWlsYWJsZSBpbiB0aGUgQ01TIE1hZGUgU2ltcGxlIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSBvbmNlIHRoZSBtb2R1bGUgaXMNCmluc3RhbGxlZC4NCjwvcD4NCg==]]></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+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgp7aWYgIWlzc2V0KCRtdWx0aXVzZXIpfQogIDxoND57JHRpdGxlX3VzZXJoaXN0b3J5fSZuYnNwO3skZm9yfSZuYnNwO3skdXNlcl91c2VybmFtZX08L2g0Pgp7L2lmfQoKe2lmICRhY3Rpb25wYXJhbXMuYWN0aW9uID09ICdkZWZhdWx0YWRtaW4nfQogIHskZl9wcm1zID0gWydyZXR1cm5fdG8nID0+ICdkZWZhdWx0YWRtaW4nLCAneHRfYWN0aXZldGFiJyA9Pid1c2VyaGlzdG9yeSddfQp7ZWxzZX0KICB7JGZfcHJtcyA9IFtdfQp7L2lmfQp7Zm9ybV9zdGFydCBpZD0nbXlmb3JtJyBhY3Rpb249JGFjdGlvbnBhcmFtcy5hY3Rpb24gZXh0cmFwYXJtcz0kZl9wcm1zfQo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgo8ZmllbGRzZXQgY2xhc3M9ImdyaWRfNiI+CjxsZWdlbmQ+eyR0aXRsZV9sZWdlbmRfZmlsdGVyfTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X2ZpbHRlcl9ldmVudHR5cGV9OjwvcD4KICAgICA8cCBjbGFzcz0iZ3JpZF85Ij57JGlucHV0X2ZpbHRlcl9ldmVudHR5cGV9PC9wPgogICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CiAge2lmIGlzc2V0KCRtdWx0aXVzZXIpfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfdXNlcm5hbWVfcmVnZXh9OjwvcD4KICAgICA8cCBjbGFzcz0iZ3JpZF85Ij57JGlucHV0X3VzZXJuYW1lX3JlZ2V4fTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIHsvaWZ9CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JHByb21wdF9maWx0ZXJfZGF0ZX06PC9wPgogICAgIDxwIGNsYXNzPSJncmlkXzkiPnskaW5wdXRfZmlsdGVyX2RhdGV9PC9wPgogICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JHByb21wdF9wYWdlbGltaXR9OjwvcD4KICAgICA8cCBjbGFzcz0iZ3JpZF85Ij57JGlucHV0X3BhZ2VsaW1pdH08L3A+CiAgICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxmaWVsZHNldCBjbGFzcz0iZ3JpZF82Ij4KPGxlZ2VuZD57JHRpdGxlX2xlZ2VuZF9ncm91cHNvcnR9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfZ3JvdXBfaXB9OjwvcD4KICAgICA8cCBjbGFzcz0iZ3JpZF85Ij57JGlucHV0X2dyb3VwX2lwfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfc29ydG9yZGVyfTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9zb3J0b3JkZXJ9PC9wPgogICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CjwvZmllbGRzZXQ+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICA8cCBjbGFzcz0iZ3JpZF85Ij57JHN1Ym1pdH0mbmJzcDt7JHJlc2V0fTwvcD4KICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cntmb3JtX2VuZH0KPGJyLz4KCjxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgPGRpdiBjbGFzcz0iZ3JpZF82IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDA7Ij4KICAgIHskcmVjb3JkY291bnR9Jm5ic3A7eyRwcm9tcHRfcmVjb3Jkc2ZvdW5kfQogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWRfNiB0ZXh0LXJpZ2h0Ij4KICAgIHtpZiAkaXRlbWNvdW50ID4gMH0KICAgICAge2lmICRwYWdlY291bnQgPiAxfQogICAgICAgIHtpZiAkcGFnZW51bWJlciA+IDF9eyRmaXJzdHBhZ2V9Jm5ic3A7eyRwcmV2cGFnZX0mbmJzcDt7L2lmfQogICAgICAgIHskcGFnZW51bWJlcn0mbmJzcDt7JG9mdGV4dH0mbmJzcDt7JHBhZ2Vjb3VudH0KICAgICAgICB7aWYgJHBhZ2VudW1iZXIgPCAkcGFnZWNvdW50fQogICAgICAgICAgICZuYnNwO3skbmV4dHBhZ2V9Jm5ic3A7eyRsYXN0cGFnZX0KICAgICAgICB7L2lmfQogICAgICB7L2lmfQogICAgey9pZn0KIDwvZGl2Pgo8L2Rpdj4KCjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICAgIHtpZiBpc3NldCgkbXVsdGl1c2VyKX0KCTx0aD57JHByb21wdF91c2VybmFtZX08L3RoPgogICAgICAgIHsvaWZ9Cgk8dGg+eyRwcm9tcHRfaXBhZGRyZXNzfTwvdGg+Cgk8dGg+eyRwcm9tcHRfYWN0aW9ufTwvdGg+Cgk8dGg+eyRwcm9tcHRfcmVmZGF0ZX08L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgICAgIHtpZiBpc3NldCgkbXVsdGl1c2VyKX0KICAgICAgICA8dGQ+eyRlbnRyeS0+dXNlcm5hbWV9PC90ZD4KICAgICAgICB7L2lmfQoJPHRkPnskZW50cnktPmlwYWRkcmVzc308L3RkPgoJPHRkPnskZW50cnktPmFjdGlvbn08L3RkPgoJPHRkPnskZW50cnktPnJlZmRhdGV8ZGF0ZV9mb3JtYXQ6IiViICVlLCAlWSAtICVYIn08L3RkPgogIDwvdHI+CiAgey9mb3JlYWNofQogIDwvdGJvZHk+CjwvdGFibGU+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/userlist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlPgojcXVpY2tmaW5kX2RsZyB7CiAgd2lkdGg6IDUwMHB4OwogIGhlaWdodDogMTBlbTsKfQoudW5zYWZlcGFzc3dvcmQgewogIGNvbG9yOiByZWQ7Cn0KLnVzZXJfZGlzYWJsZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiISEgIjsKICBjb2xvcjogcmVkOwp9Ci51c2VyX211c3R2YWxpZGF0ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICIqKiAiOwogIGNvbG9yOiBtYWdlbnRhOwp9Ci51c2VyX2V4cGlyZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiLS0gIjsKICBjb2xvcjogb3JhbmdlOwp9Cjwvc3R5bGU+CnsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQo8c2NyaXB0PgokKGZ1bmN0aW9uKCl7CiAgJCgnI21hbXNfZmlsdGVyYm94JykuY2xpY2soZnVuY3Rpb24oKXsKICAgIGlmKCB0aGlzLmNoZWNrZWQgKSB7CiAgICAgICQoJyNtYW1zX2ZpbHRlcmZvcm0nKS5zaG93KCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgJCgnI21hbXNfZmlsdGVyZm9ybScpLmhpZGUoKTsKICAgIH0KICB9KTsKCiAgJCgnI2RvYnVsaycpLmNsaWNrKGZ1bmN0aW9uKGV2KXsKICAgIHZhciBsZW4gPSAkKCdpbnB1dC5idWxrc2VsZWN0OmNoZWNrZWQnKS5sZW5ndGg7CiAgICBpZiggbGVuID09IDAgKSB7CiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGNtc19hbGVydCgneyRtb2QtPkxhbmcoJ2J1bGtfc2VsZWN0b25lJ3xjbXNfZXNjYXBlKX0nKTsKICAgIH0KICB9KQoKICAkKCcjcXVpY2tmaW5kX2Zvcm0nKS5zdWJtaXQoZnVuY3Rpb24oZXYpewogICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgIHZhciBpZCA9ICQoJyNxdWlja2ZpbmRfZGxnJykuZGF0YSgnc2VsX2lkJyk7CiAgICB2YXIgdXJsID0gJ3tjbXNfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fZWRpdHVzZXIgdXNlcl9pZD14eHh4IGZvcmpzPTF9JzsKICAgIHVybCA9IHVybC5yZXBsYWNlKCd4eHh4JyxpZCk7CiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKICB9KQogICQoJyNxdWlja2ZpbmRfZmxkJykuYXV0b2NvbXBsZXRlKHsKICAgIG1pbkxlbmd0aDogMiwKICAgIGFwcGVuZFRvOiAnI3F1aWNrZmluZF9kbGcnLAogICAgc291cmNlOiBmdW5jdGlvbiggcmVxdWVzdCwgcmVzcG9uc2UgKSB7CiAgICAgICQuYWpheCh7CiAgICAgICAgdXJsOiAne2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9hamF4X3F1aWNrZmluZCBmb3Jqcz0xfScsCiAgICAgICAgZGF0YTogewogICAgICAgICAgdGVybTogcmVxdWVzdC50ZXJtLAogICAgICAgIH0sCiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAgICAgICByZXNwb25zZSggZGF0YSApOwogICAgICAgIH0KICAgICAgfSkKICAgIH0sCiAgICBzZWxlY3Q6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7CiAgICAgICQoJyNxdWlja2ZpbmRfZmxkJykudmFsKCB1aS5pdGVtLmxhYmVsICk7CiAgICAgICQoJyNxdWlja2ZpbmRfZGxnJykuZGF0YSgnc2VsX2lkJywgdWkuaXRlbS52YWx1ZSk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9KTsKICAkKCcjcXVpY2tmaW5kJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNxdWlja2ZpbmRfZGxnJykuZGlhbG9nKHsKICAgICAgd2lkdGg6ICc1MDAnLAogICAgICBoZWlnaHQ6ICcxNTAnLAogICAgICBtb2RhbDogdHJ1ZSwKICAgIH0pOwogIH0pCn0pOwoKZnVuY3Rpb24gc2VsZWN0X2FsbCgpCnsKICBjYiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCd7JGFjdGlvbmlkfXNlbGVjdGVkW10nKTsKICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWxlY3RhbGwnKTsKICBzdCA9IGVsLmNoZWNrZWQ7CiAgZm9yKCBpID0gMDsgaSA8IGNiLmxlbmd0aDsgaSsrICkgewogICAgaWYoIGNiW2ldLnR5cGUgPT0gImNoZWNrYm94IiApICBjYltpXS5jaGVja2VkPXN0OwogIH0KfQoKZnVuY3Rpb24gY29uZmlybV9kZWxldGUoKQp7CiAgdmFyIGNiID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3skYWN0aW9uaWR9c2VsZWN0ZWRbXScpOwogIHZhciBjb3VudCA9IDA7CiAgZm9yKCBpID0gMDsgaSA8IGNiLmxlbmd0aDsgaSsrICkgewogICAgaWYoIGNiW2ldLmNoZWNrZWQgKSBjb3VudCsrOwogIH0KCiAgaWYoIGNvdW50ID4gMjUwICkgewogICAgYWxlcnQoJ3skbW9kLT5MYW5nKCdlcnJvcl90b29tYW55c2VsZWN0ZWQnKX0nfGNtc19lc2NhcGUpOwogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gY29uZmlybSgneyRtb2QtPkxhbmcoJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJyl9Jyk7Cn0KPC9zY3JpcHQ+CnsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQoKPGRpdiBpZD0icXVpY2tmaW5kX2RsZyIgdGl0bGU9InskbW9kLT5MYW5nKCdxdWlja2ZpbmRfdXNlcicpfSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAge2Zvcm1fc3RhcnQgaWQ9cXVpY2tmaW5kX2Zvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgIDxsYWJlbCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdxdWlja2ZpbmRfaWRuYW1lJyl9PC9sYWJlbD4KICAgICAgIDxpbnB1dCBjbGFzcz0icGFnZWlucHV0IiBpZD0icXVpY2tmaW5kX2ZsZCIgcGxhY2Vob2xkZXI9InskbW9kLT5MYW5nKCdxdWlja2ZpbmRfcGgnKX0iIHNpemU9IjYwIi8+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgPGlucHV0IGNsYXNzPSJwYWdlaW5wdXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdmaW5kJyl9Ii8+CiAgIDwvZGl2PgogICAge2Zvcm1fZW5kfQo8L2Rpdj4KCnskc3RhcnRmb3JtfQo8ZmllbGRzZXQgaWQ9Im1hbXNfZmlsdGVyZm9ybSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2ZpbHRlcicpfTo8L2xlZ2VuZD4KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZF82Ij4KICAgICAgICAgICB7aWYgaXNzZXQoJGdyb3Vwcyl9CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ2dyb3VwJyl9OjwvcD4KICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX2dyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRncm91cHMgc2VsZWN0ZWQ9JGZpbHRlci5ncm91cH0KICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgey9pZn0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCd1c2VyZmlsdGVyJyl9OjwvcD4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3JlZ2V4IiB2YWx1ZT0ieyRmaWx0ZXIucmVnZXh9Ii8+CiAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG1vZC0+TGFuZygncHJvcGVydHlmaWx0ZXInKX06PC9wPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3Byb3BlcnR5c2VsIj57aHRtbF9vcHRpb25zIG9wdGlvbnM9JGRlZm5saXN0IHNlbGVjdGVkPSRmaWx0ZXIucHJvcHNlbH08L3NlbGVjdD4KICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9wcmVnZXgnKX06PC9wPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJncmlkXzEyIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9wcm9wZXJ0eSIgdmFsdWU9InskZmlsdGVyLnByb3B2YWx9IiBzaXplPSIzMCIvPgoJCSAgIDxwIGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19wcm9wcmVnZXgnKX08L3A+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbG9nZ2VkaW5vbmx5Jyl9OjwvcD4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgICAgICAgICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9J2ZpbHRlcl9sb2dnZWRpbm9ubHknIHNlbGVjdGVkPSRmaWx0ZXIubG9nZ2VkaW5vbmx5fQogICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kaXNhYmxlZHN0YXR1cycpfTo8L3A+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgoJICAgICAgICAgICB7JG9wdHM9WycnPT4kbW9kLT5MYW5nKCdhbnknKSwgJ2Rpcyc9PiRtb2QtPkxhbmcoJ2Rpc2FibGVkJyksICdlbic9PiRtb2QtPkxhbmcoJ2VuYWJsZWQnKV0gfQogICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfZGlzYWJsZWQiPgoJCSAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JGZpbHRlci5kaXNhYmxlZHN0YXR1c30KCQkgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CgogICA8ZGl2IGNsYXNzPSJncmlkXzYiPgogICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygncHJvbXB0X3ZpZXdwcm9wcycpfTo8L3A+CiAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF85IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl92aWV3cHJvcHNbXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSI1Ij4KICAgICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRhbGxkZWZucyBzZWxlY3RlZD0kdmlld3Byb3BzfQogICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzMiPnskbW9kLT5MYW5nKCdzb3J0YnknKX06PC9wPgogICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJncmlkXzkiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3NvcnRieSI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSRzb3J0bGlzdCBzZWxlY3RlZD0kZmlsdGVyLnNvcnRieX08L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygndXNlcmxpbWl0Jyl9OjwvcD4KICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF85IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9saW1pdCI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSRsaW1pdHMgc2VsZWN0ZWQ9JGZpbHRlci5saW1pdH08L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIGdyaWRfMTIiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXIiIHZhbHVlPSJ7JG1vZC0+TGFuZygnYXBwbHlmaWx0ZXInKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3Jlc2V0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3Jlc2V0Jyl9Ii8+CjwvZGl2Pgo8L2ZpZWxkc2V0PnsqICNtYW1zX2ZpbHRlcmZvcm0gKn0KCjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgPGRpdiBjbGFzcz0iZ3JpZF8xMCI+CiAgICA8aW5wdXQgaWQ9Im1hbXNfZmlsdGVyYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiLz48bGFiZWwgZm9yPSJtYW1zX2ZpbHRlcmJveCI+eyRtb2QtPkxhbmcoJ3ZpZXdfZmlsdGVyJyl9IHtpZiAkZmlsdGVyX2FwcGxpZWR9PHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPih7JG1vZC0+TGFuZygnYXBwbGllZCcpfSl7L2lmfTwvc3Bhbj48L2xhYmVsPiZuYnNwOwogICAgPHNwYW4gdGl0bGU9InskbW9kLT5MYW5nKCd1c2Vyc21hdGNoaW5nJyl9Ij57eHRpbWFnZSBpbWFnZT0naWNvbnMvdG9wZmlsZXMvdXNlcnMuZ2lmJyBhbHQ9IiJ9ID0geyRudW11c2Vyc308L3NwYW4+Jm5ic3A7CiAgICAgIHtpZiBpc3NldCgkYWRkX3VybCl9PGEgaHJlZj0ieyRhZGRfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCd0aXRsZV9hZGRfdXNlcicpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJ30geyRtb2QtPkxhbmcoJ2FkZHVzZXInKX08L2E+ey9pZn0KICAgICAge2lmIGlzc2V0KCRpbXBvcnRfdXJsKX08YSBocmVmPSJ7JGltcG9ydF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2ltcG9ydF91c2VycycpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJ30geyRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnR1c2VycycpfTwvYT57L2lmfQogICAgICB7aWYgaXNzZXQoJGV4cG9ydF91cmwpfTxhIGhyZWY9InskZXhwb3J0X3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygndGl0bGVfZXhwb3J0X3VzZXJzJyl9Ij57eHRpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnfSB7JG1vZC0+TGFuZygncHJvbXB0X2V4cG9ydHVzZXJzJyl9PC9hPnsvaWZ9CiAgICA8YSBpZD0icXVpY2tmaW5kIj57YWRtaW5faWNvbiBpY29uPSd2aWV3LmdpZid9IHskbW9kLT5MYW5nKCdxdWlja2ZpbmRfdXNlcicpfTwvYT4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkXzIgdGV4dC1yaWdodCI+CiAge2lmICRpdGVtY291bnQgPiAwfQogICAgICB7aWYgaXNzZXQoJG5hdmlnYXRpb24uZmlyc3RwYWdlX3VybCl9CiAgICAgICAgPGEgaHJlZj0ieyRuYXZpZ2F0aW9uLmZpcnN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnZmlyc3RwYWdlJyl9PC9hPiZuYnNwOwogICAgICA8YSBocmVmPSJ7JG5hdmlnYXRpb24ucHJldnBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ3ByZXZwYWdlJyl9PC9hPiZuYnNwOwogICAgICB7L2lmfQogICAgeyRtb2QtPkxhbmcoJ3BhZ2UnKX0geyRuYXZpZ2F0aW9uLmN1cnBhZ2V9IHskbW9kLT5MYW5nKCdwcm9tcHRfb2YnKX0geyRuYXZpZ2F0aW9uLm5wYWdlc30KICAgIHtpZiBpc3NldCgkbmF2aWdhdGlvbi5sYXN0cGFnZV91cmwpfQogICAgJm5ic3A7PGEgaHJlZj0ieyRuYXZpZ2F0aW9uLm5leHRwYWdlX3VybH0iPnskbW9kLT5MYW5nKCduZXh0cGFnZScpfTwvYT4KICAgICAgJm5ic3A7PGEgaHJlZj0ieyRuYXZpZ2F0aW9uLmxhc3RwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdsYXN0cGFnZScpfTwvYT4KICB7L2lmfQogIHsvaWZ9CiAgPC9kaXY+CjwvZGl2Pgp7KntpZiAhaXNzZXQoJGdyb3Vwcyl9Kn0KeyogIDxkaXYgY2xhc3M9InJlZCBjZW50ZXIiPnskbW9kLT5MYW5nKCdub2dyb3VwcycpfTwvZGl2Pip9CntpZiAkaXRlbWNvdW50ID4gMH0KICA8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyR1c2VybmFtZXRleHR9PC90aD4KCQkJPHRoPnskY3JlYXRlZHRleHR9PC90aD4KCQkJPHRoPnskZXhwaXJlc3RleHR9PC90aD4KICAgICAgICB7aWYgaXNzZXQoJHZpZXdwcm9wcykgJiYgaXNfYXJyYXkoJHZpZXdwcm9wcyl9CiAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JHZpZXdwcm9wcyBpdGVtPSdvbmUnfQogICAgICAgICAgICAgIDx0aD57JGFsbGRlZm5zLiRvbmV9PC90aD4KICAgICAgICAgICAgey9mb3JlYWNofQogICAgICAgIHsvaWZ9CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPjxpbnB1dCBpZD0ic2VsZWN0YWxsIiB0eXBlPSJjaGVja2JveCIgbmFtZT0ianVuayIgb25jbGljaz0ic2VsZWN0X2FsbCgpOyIvPjwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSdyb3cxLHJvdzInfSI+CgkJCTx0ZD4KCQkJICB7aWYgJGVudHJ5LT51bnNhZmVwYXNzd29yZH08c3BhbiBjbGFzcz0idW5zYWZlcGFzc3dvcmQiIHRpdGxlPSJ7JG1vZC0+TGFuZygnaW5mb191bnNhZmVwYXNzd29yZCcpfSI+eyRtb2QtPkxhbmcoJ3Vuc2FmZScpfTwvc3Bhbj57L2lmfQogICAgICAgICAge2lmICRlbnRyeS0+ZGlzYWJsZWR9CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ1c2VyX2Rpc2FibGVkIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fZGlzYWJsZWQnKX0iPnskZW50cnktPnVzZXJuYW1lfTwvc3Bhbj4KCQkJICB7ZWxzZSBpZiAkZW50cnktPm11c3RfdmFsaWRhdGV9CgkJCSAgICAgPHNwYW4gY2xhc3M9InVzZXJfbXVzdHZhbGlkYXRlIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fbXVzdF92YWxpZGF0ZScpfSI+eyRlbnRyeS0+dXNlcm5hbWV9PC9zcGFuPgoJCQkgIHtlbHNlaWYgc3RydG90aW1lKCRlbnRyeS0+ZXhwaXJlcykgPCAkc21hcnR5Lm5vd30KCQkJICAgICA8c3BhbiBjbGFzcz0idXNlcl9leHBpcmVkIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fZXhwaXJlZCcpfSI+eyRlbnRyeS0+dXNlcm5hbWV9PC9zcGFuPgogICAgICAgICAge2Vsc2V9CiAgICAgICAgICAgICAgeyRlbnRyeS0+dXNlcm5hbWV9CiAgICAgICAgICB7L2lmfQoJCQk8L3RkPgoJCQk8dGQ+eyRlbnRyeS0+Y3JlYXRlZHxkYXRlX2Zvcm1hdDonJXgnfTwvdGQ+CgkJCTx0ZD4KCQkJICB7aWYgc3RydG90aW1lKCRlbnRyeS0+ZXhwaXJlcykgPCAkc21hcnR5Lm5vd30KICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyIgdGl0bGU9InskbW9kLT5MYW5nKCdpbmZvX2V4cGlyZWQnKX0iPnskZW50cnktPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4J308L3NwYW4+CiAgICAgICAge2Vsc2V9CiAgICAgICAgICAgIHskZW50cnktPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4J30KICAgICAgICB7L2lmfQoJCQk8L3RkPgogICAgICB7aWYgaXNzZXQoJHZpZXdwcm9wcykgJiYgaXNzZXQoJGVudHJ5LT5leHRyYSl9CiAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSR2aWV3cHJvcHMgaXRlbT0nb25lJ30KICAgICAgICAgICAgPHRkPgoJCQkJICAgIHtpZiAhZW1wdHkoJGVudHJ5LT5leHRyYVskb25lXSl9CiAgICAgICAgICAgICAgICB7aWYgJGVudHJ5LT5leHRyYVskb25lXS0+ZGVmbi50eXBlID09IDh9CiAgICAgICAgICAgICAgICAgICAgeyRlbnRyeS0+ZXh0cmFbJG9uZV0tPnZhbHxkYXRlX2Zvcm1hdDonJXgnfQogICAgICAgICAgICAgICAge2Vsc2V9CiAgICAgICAgICAgICAgICAgICAgeyRlbnRyeS0+ZXh0cmFbJG9uZV0tPnZhbH0KICAgICAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgICAgIHsvaWZ9CgkJCQk8L3RkPgogICAgICAgICAgey9mb3JlYWNofQogICAgICB7L2lmfQogICAgPHRkPgoJCQkgIHtpZiAkZW50cnktPmRpc2FibGVkfQogICAgICAgICAgPGEgaHJlZj0ie21vZF9hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9lbmFibGVfdXNlciB1aWQ9JGVudHJ5LT5pZCBzdGF0ZT0xfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9mYWxzZS5naWYnIGFsdD0kbW9kLT5MYW5nKCdlbmFibGVfdXNlcicpfTwvYT4KCQkJICB7ZWxzZX0KCQkJICAgIDxhIGhyZWY9Inttb2RfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fZW5hYmxlX3VzZXIgdWlkPSRlbnRyeS0+aWQgc3RhdGU9MH0iPnt4dGltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnIGFsdD0kbW9kLT5MYW5nKCdkaXNhYmxlX3VzZXInKX08L2E+CiAgICAgICAgey9pZn0KCQkJPC90ZD4KCQkJPHRkPntpZiBpc3NldCgkZW50cnktPmxvZ291dGxpbmspfXskZW50cnktPmxvZ291dGxpbmt9ey9pZn08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+aGlzdG9yeWxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+e2lmIGlzc2V0KCRlbnRyeS0+ZGVsZXRlbGluayl9eyRlbnRyeS0+ZGVsZXRlbGlua317L2lmfTwvdGQ+CgkJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJidWxrc2VsZWN0IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbGVjdGVkW10iIHZhbHVlPSJ7JGVudHJ5LT5pZH0iLz48L3RkPgoJCTwvdHI+CnsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CgoKCntpZiAkaXRlbWNvdW50ID4gMH0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgPGRpdiBjbGFzcz0iZ3JpZF8xMCI+CiAgICAgICZuYnNwOwogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJncmlkXzIgdGV4dC1yaWdodCI+CiAgICAgICAgICB7aWYgaXNzZXQoJG5hdmlnYXRpb24uZmlyc3RwYWdlX3VybCl9CiAgICAgICAgICAgIDxhIGhyZWY9InskbmF2aWdhdGlvbi5maXJzdHBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ2ZpcnN0cGFnZScpfTwvYT4mbmJzcDsKICAgICAgICAgICAgPGEgaHJlZj0ieyRuYXZpZ2F0aW9uLnByZXZwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdwcmV2cGFnZScpfTwvYT4mbmJzcDsKICAgICAgICAgIHsvaWZ9CiAgICAgICAgeyRtb2QtPkxhbmcoJ3BhZ2UnKX0geyRuYXZpZ2F0aW9uLmN1cnBhZ2V9IHskbW9kLT5MYW5nKCdwcm9tcHRfb2YnKX0geyRuYXZpZ2F0aW9uLm5wYWdlc30KICAgICAgICB7aWYgaXNzZXQoJG5hdmlnYXRpb24ubGFzdHBhZ2VfdXJsKX0KICAgICAgICAgICZuYnNwOzxhIGhyZWY9InskbmF2aWdhdGlvbi5uZXh0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbmV4dHBhZ2UnKX08L2E+CiAgICAgICAgICAgICZuYnNwOzxhIGhyZWY9InskbmF2aWdhdGlvbi5sYXN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbGFzdHBhZ2UnKX08L2E+CiAgICAgICAgey9pZn0KICAgIDwvZGl2PgogIDwvZGl2PgogIHtpZiAhZW1wdHkoJGJ1bGtfYWN0aW9ucyl9CiAgICA8aHI+CiAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXJpZ2h0Ij4KICAgICAgPGxhYmVsPnskbW9kLT5MYW5nKCd3aXRoX3NlbGVjdGVkJyl9OgogICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9YnVsa19hY3Rpb24iPgogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPnskbW9kLT5MYW5nKCdub25lJyl9PC9vcHRpb24+CiAgICAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGJ1bGtfYWN0aW9uc30KICAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvbGFiZWw+CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJkb2J1bGsiIG5hbWU9InskYWN0aW9uaWR9ZG9idWxrIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPC9kaXY+CiAgey9pZn0KICAgIHskZW5kZm9ybX0Key9pZn0KCgo=]]></data>
	</file>
</module>
