bug-global
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PHP: htags: error in html-escaping


From: Patrick Strasser
Subject: Re: PHP: htags: error in html-escaping
Date: Tue, 19 Jul 2005 11:55:24 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20050602)

Shigio Yamaguchi wrote:
>>Have found some more issues with htags and PHP:
> Can I get the original file?
> Thank you.

of course...

Patrick
-- 
Engineers motto: cheap, good, fast - choose any two
Patrick Strasser <patrick dot strasser at tugraz dot at>
Student of Telematik, Techn. University Graz, Austria
begin-base64 644 -
PD8NCg0KDQokbWF4RGlzcGxheU51bWJlciA9IDUwOw0KDQovLyBm/HIgVW1s
YXV0ZQ0KcmVxdWlyZV9vbmNlICgidXRpbHMucGhwIik7DQpyZXF1aXJlX29u
Y2UgKCJwcmljZS5waHAiKTsNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmNsYXNzIGFy
dGljbGUgew0KDQogICAgdmFyICRBcnRpa2VsX05yOw0KICAgIHZhciAkQmV6
ZWljaG51bmc7DQogICAgdmFyICRTdWNoYmV6ZWljaG51bmc7DQogICAgdmFy
ICROZXR0b2dld2ljaHQ7DQogICAgdmFyICRIYW5kZWxfUHJlaXM7DQogICAg
dmFyICRIYW5kZWxfUHJlaXNfUmFiYXR0Ow0KICAgIHZhciAkSGFuZGVsX1By
ZWlzX3ZpZXc7DQogICAgdmFyICRaZWlsZW5yYWJhdHQ7DQogICAgdmFyICRW
S19QcmVpczsNCiAgICB2YXIgJHNwZXppYWw9ZmFsc2U7DQogICAgdmFyICRT
cGV6aWFsX1ByZWlzOw0KICAgIHZhciAkTmV0dG9wcmVpczsNCiAgICB2YXIg
JGFrdGlvbj1mYWxzZTsNCiAgICB2YXIgJEFrdGlvbl9QcmVpczsNCiAgICB2
YXIgJEFrdGlvbl9NaW5kZXN0X0FuemFobDsNCiAgICB2YXIgJFNlbGVjdGVk
X1ByZWlzOw0KICAgIHZhciAkUmVjaG51bmdzcmFiYXR0PWFycmF5KCk7DQog
ICAgdmFyICRBbnphaGxfcHJvX1Bha2V0Ow0KICAgIHZhciAkRGViX0FydGlr
ZWxyYWJhdHRncjsNCiAgICB2YXIgJExpZWZlcmFudGVuX0NvZGU7DQogICAg
dmFyICRMaWVmZXJhbnRlbl9OYW1lOw0KICAgIHZhciAkQXVzbGF1ZjsNCiAg
ICB2YXIgJEdlc3BlcnJ0Ow0KICAgIHZhciAkQjJCOw0KICAgIHZhciAkQjJD
Ow0KICAgIHZhciAkTGllZmVyYmFyX2FiOw0KICAgIHZhciAkR1BQR19Db2Rl
Ow0KICAgIHZhciAkUHJvZHVrdGJ1Y2h1bmdzZ3J1cHBlOw0KICAgIHZhciAk
SVBHX0NvZGU7DQogICAgdmFyICRMYWdlcmJ1Y2h1bmdzZ3J1cHBlOw0KICAg
IHZhciAkREVCQVJUX0NvZGU7DQogICAgdmFyICRQcm9kdWt0Z3J1cHBlOw0K
ICAgIHZhciAkQmFzZV9Vbml0X29mX01lYXN1cmU7DQogICAgdmFyICRVbml0
X0Nvc3Q7DQogICAgdmFyICRQcm9maXQ7DQogICAgdmFyICRMYWdlcmJlc3Rh
bmQ9MDsNCiAgICB2YXIgJExhZ2VyYmVzdGFuZF9GRz0wOw0KCXZhciAkU2hp
cG1lbnRfRGF0ZTsNCiAgICANCgkJdmFyICRQcmVpczsNCgkJDQogICAgdmFy
ICRoYXZlX0ZHPWZhbHNlOw0KICAgIA0KICAgIHZhciAkcHJpbnRfbnVtYmVy
PXRydWU7DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KICBmdW5jdGlvbiBhcnRp
Y2xlKCRhcnRpY2xlX25yPSJub25lIiwgJGt1bmRlbl9ucj0wKSB7DQoJCWlm
ICgkYXJ0aWNsZV9uciE9Im5vbmUiKSB7DQogICAgICAkdGhpcy0+U2hpcG1l
bnRfRGF0ZT1ta3RpbWUoKTsNCgkJCWlmIChmYWxzZSA9PT0gJHRoaXMtPmZy
b21fZGIoJGFydGljbGVfbnIpKSB7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJ
fQ0KCQkJJHRoaXMtPlByZWlzID0gbmV3IFByaWNlKCRhcnRpY2xlX25yLCAk
a3VuZGVuX25yKTsNCgkJfQ0KICB9DQoNCiAgLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCiAgKiBzZXQgU2hpcG1lbnRfRGF0ZSBhcyB0aW1lc3RhbXAg
DQogICogIA0KICAqIA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAN
CiAgZnVuY3Rpb24gc2V0X1NoaXBtZW50X0RhdGUoJHRpbWVzdGFtcCkgew0K
ICAgICR0aGlzLT5TaGlwbWVudF9EYXRlPSR0aW1lc3RhbXA7DQogICAgLy9l
Y2hvICJTaGlwbWVudCBkYXRlIHNldDogIi4gJHRoaXMtPlNoaXBtZW50X0Rh
dGUgLiIgdm9uICIuICR0aW1lc3RhbXA7DQogIH0NCg0KIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQogKiBSZWFkIGEgYXJ0aWNsZSBpZGVudGlmaWVk
IGJ5IGFydF9udW1iZXIgZnJvbSBEYXRhYmFzZSANCiAqIA0KICogDQogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8gDQoJZnVuY3Rpb24gZnJvbV9kYigk
YXJ0X251bWJlcikgew0KCQlnbG9iYWwgJERFQlVHOw0KCQlkZWJ1ZygiYXJ0
aWNsZTogJGFydF9udW1iZXI8YnI+XG4iKTsNCgkJZ2xvYmFsICRjb25uZWN0
aW9uOw0KCQlpbmNsdWRlX29uY2UgKCJjb25uZWN0LnBocCIpOw0KCQkvL2lu
Y2x1ZGVfb25jZSAoImVycm9yLnBocCIpOw0KICAgICAgICANCiAgICAgICAg
Ly8kbXNzcWw9bXNzcWxfY29ubmVjdCgibWdhMDEubWdhLmNvLmF0IiwiU0hP
UCIsICJzaG9wMTUxNSIpOw0KDQogICAgICAgIC8vZWNobyAiU1FMVkFSQ0hB
UjogJFNRTFZBUkNIQVI8YnI+XG4iOw0KCQkvLyBBcnRpa2VsIGF1c3fkaGxl
bg0KCQkkc3FsX3N0cmluZz0iIFNFTEVDVCAqIEZST00gIEFydGlrZWxzdGFt
bQ0KCQkJV0hFUkUgQXJ0aWtlbF9Ocj0nJGFydF9udW1iZXInIjsNCgkJLy9w
cmludHIoIiBBcnRpa2Vsc3RyaW5nOiAkc3FsX3N0cmluZyIpOw0KCQkkcmVz
dWx0PW15c3FsX3F1ZXJ5KCRzcWxfc3RyaW5nKTsNCgkJaWYgKCEkcmVzdWx0
KSB7DQoJCQlteXNxbGVycm9yKCJiZWkgZGVyIEFydGlrZWxhdXN3YWhsOiAi
KTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkvLyBhcnRpa2VsIGJla29t
bWVuPw0KCQlpZiAoMT5teXNxbF9udW1fcm93cygkcmVzdWx0KSkgew0KCQkJ
ZWNobyAoIjxicj5mb3VuZCBubyBhcnRpY2xlczxicj4iKTsNCgkJCXJldHVy
biBmYWxzZTsNCgkJfQ0KCQkvLyBlcnN0ZW4gQXJ0aWtlbCB2ZXJ3ZW5kZW4N
CgkJJGFydGljbGU9c3RyX2NvcnIobXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3Vs
dCkpOw0KCQkvL2VjaG8gImZpZWxkczogIjsNCgkJLy9wcmludHIgKCRhcnRp
Y2xlKTsgICAgDQogICAgZm9yZWFjaCAoJGFydGljbGUgYXMgJGtleT0+JHZh
bHVlKSB7DQoJCQkkdGhpcy0+JGtleT0kdmFsdWU7DQoJCX0NCiAgICAvL2Vj
aG8gIkt1bmRlbmJlc3RlbGx1bmcgZXJsYXVidDogIi4gKCR0aGlzLT5jdXN0
b21lck9yZGVyQWxsb3dlZCgpPyJqYSI6Im5laW4iKS4gIjxicj5cbiI7DQog
ICAgLy9lY2hvICJI5G5kbGVyYmVzdGVsbHVuZyBlcmxhdWJ0OiAiLiAoJHRo
aXMtPmJ1c2luZXNzT3JkZXJBbGxvd2VkKCk/ImphIjoibmVpbiIpLiAiPGJy
PlxuIjsNCiAgICAvL2VjaG8gIkJlc3RlbGx1bmcgZXJsYXVidDogIi4gKCR0
aGlzLT5vcmRlckFsbG93ZWQoKT8iamEiOiJuZWluIikuICI8YnI+XG4iOw0K
ICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KCQkNCg0KICAgIC8v
ZWNobyAiTGFnZXJiZXN0YW5kOiAkdGhpcy0+TGFnZXJiZXN0YW5kPGJyPlxu
IjsNCgkJJHRoaXMtPmZyb21fZGJfY29ycmVjdF92YWx1ZXMoKTsJCQ0KCQkk
dGhpcy0+ZnJvbV9kYl9nZXRfdGV4dCgkYXJ0X251bWJlcik7DQoJCWlmICgh
JHRoaXMtPmZyb21fZGJfZ2V0X0xhZ2VyYmVzdGFuZCgkYXJ0X251bWJlcikp
IHsNCgkJCWlmICghJHRoaXMtPmZyb21fZGJfZ2V0X0ZHKCRhcnRfbnVtYmVy
KSkgew0KCQkJIGVjaG8gIktlaW4gTGFnZXJiZXN0YW5kIHVuZCBrZWluZSBG
YXJiL0dy9t9lbiE8YnI+IjsNCgkJCX0NCgkJfQ0KCQkkdGhpcy0+ZnJvbV9k
Yl9nZXRfZGlzY291bnQoKTsNCgkJJHRoaXMtPmZyb21fZGJfZ2V0X3ByaWNl
KCk7DQoJfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogcmVm
b3JtYXQgYW5kIHRyYW5zZm9ybW0gc29tZSBkYXRhIGZyb20gRGF0YWJhc2Ug
DQogKiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyANCglm
dW5jdGlvbiBmcm9tX2RiX2NvcnJlY3RfdmFsdWVzKCkgew0KCS8vICoqKioq
KioqKioqIENvcnJlY3QgdmFsdWVzLi4uDQoJCS8vQmFzZV9Vbml0X29mX01l
YXN1cmUNCgkJJHRoaXMtPkJhc2VfVW5pdF9vZl9NZWFzdXJlPXVjZmlyc3Qo
c3RydG9sb3dlcigkdGhpcy0+QmFzZV9Vbml0X29mX01lYXN1cmUpKTsNCgkJ
Ly8gTGllZmVyYmFyX2FiDQoJCSRsZGI9YXJyYXlfcmV2ZXJzZShwcmVnX3Nw
bGl0KCIvIHwtfDovIiwkdGhpcy0+TGllZmVyYmFyX2FiKSk7DQoJCSRsZGJb
NV09JGxkYls1XTwxOTk5PzE5OTk6JGxkYls1XTsNCgkJJExpZWZlcmJhcl90
aW1lPW1rdGltZSgwLDAsMCwkbGRiWzRdLCRsZGJbM10sJGxkYls1XSk7DQoJ
CSRub3c9dGltZSgpOw0KCQkkdGhpcy0+TGllZmVyYmFyX2FiPSgkTGllZmVy
YmFyX3RpbWU8JG5vdz8ic29mb3J0IjpzdHJmdGltZSgiJWQuICViLiAlWSIs
JExpZWZlcmJhcl90aW1lKSk7DQoJfQ0KCQkNCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KICogZXh0cmFjdCBhcnRpY2xldGV4dCBmcm9tIGRhdGFi
YXNlIA0KICogIA0KICogDQogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8g
DQoJZnVuY3Rpb24gZnJvbV9kYl9nZXRfdGV4dCgkYXJ0X251bWJlcikgew0K
CS8vIFRleHR6ZWlsZW4gYXVzd+RobGVuDQoJCSR0ZXh0X3NxbF9zdHJpbmc9
IiBTRUxFQ1QgWmVpbGVubnIsIFRleHQNCgkJCUZST00gIFRleHRiYXVzdGVp
bnplaWxlDQoJCQlXSEVSRSBBcnRpa2VsX05yPSckYXJ0X251bWJlcicNCgkJ
CU9SREVSIGJ5IFplaWxlbm5yIjsNCgkJZGVidWcoIiBUZXh0c3RyaW5nOiAk
dGV4dF9zcWxfc3RyaW5nIik7DQoJCSR0ZXh0X3Jlc3VsdD1teXNxbF9xdWVy
eSgkdGV4dF9zcWxfc3RyaW5nKTsNCgkJZWNobyBteXNxbF9lcnJvcigpOw0K
CQkvLyBaZWlsZW4gYmVrb21tZW4/DQoJCWlmICgxPm15c3FsX251bV9yb3dz
KCR0ZXh0X3Jlc3VsdCkpIHsNCgkJCWRlYnVnICgiPGJyPmZvdW5kIG5vIHRl
eHQgbGluZXM8YnI+Iik7DQoJCX0NCgkJLy8gWmVpbGVuIGF1c2xlc2VuDQoJ
CWVsc2UgeyANCgkJCXdoaWxlICgkWmVpbGU9c3RyX2NvcnIobXlzcWxfZmV0
Y2hfYXNzb2MoJHRleHRfcmVzdWx0KSkpew0KCQkJCWV4dHJhY3QoJFplaWxl
KTsNCgkJCQkkdGhpcy0+VGV4dHplaWxlWyRaZWlsZW5ucl09JFRleHQ7Ly90
cmltKCRUZXh0LCIgIikgOw0KCQkJfQ0KCQl9DQoJCW15c3FsX2ZyZWVfcmVz
dWx0KCR0ZXh0X3Jlc3VsdCk7DQoJfQ0KDQogLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCiAqIGV4dHJhY3QgZmFyYmdyIGZyb20gZGF0YWJhc2UgDQog
KiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyANCglmdW5j
dGlvbiBmcm9tX2RiX2dldF9MYWdlcmJlc3RhbmQoJGFydF9udW1iZXIpIHsN
CgkvKioqKioqKioqKioNCgkqIEZhcmJHcm9lc3NlbiBhdXN35GhsZW4NCgkq
KioqKioqKioqKiovDQogICAgICAgICRMYWdlcmJlc3RhbmRfc3FsX3N0cmlu
Zz0iIFNFTEVDVCBBcnRpa2VsX05yLCBMYWdlcmJlc3RhbmQgXG4iICANCiAg
ICAgICAgICAgIC4iRlJPTSBBcnRpa2VsbWVuZ2VuIFxuIg0KICAgICAgICAg
ICAgLiJXSEVSRSBBcnRpa2VsX05yPSckYXJ0X251bWJlcicgXG4iDQogICAg
ICAgICAgICA7DQoJCS8vZWNobyAoIiBMYWdlcmJlc3RhbmRfc3FsX3N0cmlu
ZzogPHByZT4kTGFnZXJiZXN0YW5kX3NxbF9zdHJpbmc8L3ByZT48YnI+Iik7
DQoJCSRMYWdlcmJlc3RhbmRfcmVzdWx0PW15c3FsX3F1ZXJ5KCRMYWdlcmJl
c3RhbmRfc3FsX3N0cmluZyk7DQoJCWVjaG8gbXlzcWxfZXJyb3IoKTsNCgkJ
Ly8gWmVpbGVuIGJla29tbWVuPw0KCQlpZiAoMD09PW15c3FsX251bV9yb3dz
KCRMYWdlcmJlc3RhbmRfcmVzdWx0KSkgew0KCQkJLy9lY2hvICgiPGJyPm11
c3QgYmUgRmFyYmVuIG9yIEdyb2Vzc2VuPGJyPiIpOw0KCQkJbXlzcWxfZnJl
ZV9yZXN1bHQoJExhZ2VyYmVzdGFuZF9yZXN1bHQpOw0KCQkJcmV0dXJuIGZh
bHNlOw0KCQl9DQoJCWVsc2Ugew0KCQkvLyBaZWlsZW4gYXVzbGVzZW4NCgkJ
CSRaZWlsZT1zdHJfY29ycihteXNxbF9mZXRjaF9hc3NvYygkTGFnZXJiZXN0
YW5kX3Jlc3VsdCkpOw0KCQkJZXh0cmFjdCgkWmVpbGUpOw0KCQkJcmVxdWly
ZV9vbmNlKCd1dGlscy5waHAnKTsNCgkJCS8vcHJpbnRyKCRaZWlsZSk7DQoJ
CQkkdGhpcy0+TGFnZXJiZXN0YW5kKz0kTGFnZXJiZXN0YW5kOw0KCQkJbXlz
cWxfZnJlZV9yZXN1bHQoJExhZ2VyYmVzdGFuZF9yZXN1bHQpOw0KCQkJcmV0
dXJuIHRydWU7DQoJCX0NCgl9DQoNCiAvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKg0KICogZXh0cmFjdCBmYXJiZ3IgZnJvbSBkYXRhYmFzZSANCiAqICAN
CiAqIA0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIA0KCWZ1bmN0aW9u
IGZyb21fZGJfZ2V0X0ZHKCRhcnRfbnVtYmVyKSB7DQoJLyoqKioqKioqKioq
DQoJKiBGYXJiR3JvZXNzZW4gYXVzd+RobGVuDQoJKioqKioqKioqKioqLw0K
CWdsb2JhbCAkbWF4RGlzcGxheU51bWJlcjsNCgkNCiAgICAgICAgJGZhcmJH
cl9zcWxfc3RyaW5nPSIgU0VMRUNUIEFydGlrZWxfTnIsIEZhcmJlLCBHcm9l
c3NlLCBcbiINCiAgICAgICAgICAgIC4iZ3JlYXRlc3QoTGFnZXJiZXN0YW5k
LCAwKSBhcyBMYWdlcmJlc3RhbmQsIFdlYnNob3AgXG4iICANCiAgICAgICAg
ICAgIC4iRlJPTSBBcnRpa2VsbWVuZ2VuX0ZHIFxuIg0KICAgICAgICAgICAg
LiJXSEVSRSBBcnRpa2VsX05yPSckYXJ0X251bWJlcicgXG4iDQogICAgICAg
ICAgICAvLy4iQU5EIFdlYnNob3A9JzEnIFxuIg0KICAgICAgICAgICAgLy8u
IkFORCBMYWdlcmJlc3RhbmQ+MCAiDQogICAgICAgICAgICAuIk9SREVSIEJZ
IEZhcmJlLCBHcm9lc3NlIFxuIg0KICAgICAgICAgICAgOw0KCQkvL2VjaG8g
KCIgRmFyYkdyX3NxbF9zdHJpbmc6IDxwcmU+JGZhcmJHcl9zcWxfc3RyaW5n
PC9wcmU+PGJyPiIpOw0KCQkkZmFyYkdyX3Jlc3VsdD1teXNxbF9xdWVyeSgk
ZmFyYkdyX3NxbF9zdHJpbmcpOw0KCQllY2hvIG15c3FsX2Vycm9yKCk7DQoJ
CS8vIFplaWxlbiBiZWtvbW1lbj8NCgkJaWYgKDA9PT1teXNxbF9udW1fcm93
cygkZmFyYkdyX3Jlc3VsdCkpIHsNCgkJCS8vZWNobyAoIjxicj5mb3VuZCBu
byBGYXJiZW4gb3IgR3JvZXNzZW48YnI+Iik7DQoJCQkvL3JldHVybiBmYWxz
ZTsNCgkJCSR0aGlzLT5oYXZlX0ZHPWZhbHNlOw0KCQl9DQoJCWVsc2Ugew0K
CQkvLyBaZWlsZW4gYXVzbGVzZW4NCgkJCXdoaWxlICgkWmVpbGU9c3RyX2Nv
cnIobXlzcWxfZmV0Y2hfYXNzb2MoJGZhcmJHcl9yZXN1bHQpKSl7DQoJCQkJ
ZXh0cmFjdCgkWmVpbGUpOw0KCQkJCXJlcXVpcmVfb25jZSgndXRpbHMucGhw
Jyk7DQoJCQkJLy9wcmludHIoJFplaWxlKTsNCgkJCQkkRmFyYmU9ZXNjYXBl
X2NvbG9yKCRGYXJiZSk7IA0KCQkJCWlmICh0cmltKCRGYXJiZSk9PSIiICYm
IHRyaW0oJEdyb2Vzc2UpPT0iIikgew0KCQkJCQllY2hvICJ1bmtyaXRpc2No
ZXIgRmVobGVyOiBrZWluZSBGYXJiZW4gb2RlciBHcvbfZW48YnI+biI7DQog
ICAgICAgICAgLy8kdGhpcy0+TGFnZXJiZXN0YW5kKz0kTGFnZXJiZXN0YW5k
Ow0KCQkJCX0NCgkJCQllbHNlaWYgKCRXZWJzaG9wPT0iMSIpIHsNCgkJCQkJ
Ly9lY2hvICJHcvbfZTogJEdyb2Vzc2U8YnI+XG4iOw0KCQkJCQkkRmFyYmVf
Y2FwPXVjZmlyc3Qoc3RydG9sb3dlcigkRmFyYmUpKTsNCgkJCQkJJGtleT0k
RmFyYmUuIjsiLiRHcm9lc3NlOw0KICAgICAgICAgICAgICAgICAgICAkdGhp
cy0+TGFnZXJiZXN0YW5kICs9ICRMYWdlcmJlc3RhbmQ7DQoJCQkJCWlmICgh
JHRoaXMtPkZhcmJHclska2V5XVsiZW5hYmxlZCJdPT09dHJ1ZSkgeyANCgkJ
CQkJCSRudW1iZXI9KCRMYWdlcmJlc3RhbmQ+JG1heERpc3BsYXlOdW1iZXI/
IiRtYXhEaXNwbGF5TnVtYmVyKyI6KGludCkkTGFnZXJiZXN0YW5kKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5GYXJiR3JbJGtleV09YXJy
YXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic3RyaW5nIj0+aHRtbHNwZWNpYWxjaGFycyAoDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW1wbG9kZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIsICIsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZW1vdmVfZW1wdHkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5
KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGYXJiZV9jYXAs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdyb2Vzc2UNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICksDQoJCQkJCQkiaW1hZ2UiPT4kdGhpcy0+QXJ0aWtlbF9O
ci4iXyIuc3RydG91cHBlcigkRmFyYmUpLiIuanBnIiwNCgkJCQkJCSJjb2xv
ciI9PiRGYXJiZV9jYXAsDQoJCQkJCQkiZW5hYmxlZCI9PiRlbmFibGVkLA0K
CQkJCQkJIm51bWJlciI9PiRudW1iZXIsDQoJCQkJCQkpOw0KCQkJCQl9DQog
ICAgICAgICAgJHRoaXMtPmhhdmVfRkc9dHJ1ZTsNCgkJCQl9DQoJCQl9IC8v
ZW5kIHdoaWxlDQogICAgICANCiAgICAgIC8vcHJpbnRyKCR0aGlzLT5zZWxl
Y3RlZF9GYXJiR3IpOw0KICAgICAgaWYgKCR0aGlzLT5zZWxlY3RlZF9GYXJi
R3I9PSIiICYmICR0aGlzLT5oYXZlX0ZHKSB7DQogICAgICAgICRrZXlzPWFy
cmF5X2tleXMoJHRoaXMtPkZhcmJHcik7DQogICAgICAgICR0aGlzLT5zZWxl
Y3RlZF9GYXJiR3I9JGtleXNbMF07DQogICAgICB9DQogICAgfSAvLyBlbmQg
ZWxzZQ0KCQlteXNxbF9mcmVlX3Jlc3VsdCgkZmFyYkdyX3Jlc3VsdCk7DQoJ
CXJldHVybiAkdGhpcy0+aGF2ZV9GRzsNCgl9DQoNCiAgIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQogICAqIFJldHJpdmUgdGhlIHBhcmNlcyBmb3Ig
dGhlIGFydGl0aWNsZSANCiAgICogIA0KICAgKiANCiAgICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovIA0KICBmdW5jdGlvbiBmcm9tX2RiX2dldF9kaXNj
b3VudCgpIHsNCiAgICByZXF1aXJlX29uY2UoImNvbm5lY3QucGhwIik7DQog
ICAgcmVxdWlyZV9vbmNlKCJ1dGlscy5waHAiKTsNCiAgICANCglzZXRsb2Nh
bGUoTENfQUxMLCAiQyIpOw0KDQoJLy9lY2hvICI8Yj5mcm9tX2RiX2dldF9k
aXNjb3VudDwvYj48YnI+XG4iOw0KICAgICRkaXNjb3VudF9zcWw9IlNFTEVD
VCAqIGZyb20gYEt1bmRlbnN0YW1tLUFydGlrZWxyYWJhdHR6dW9yZG51bmdg
IGFzIFJ6IFxuIg0KICAgICAgIC4gIiBXSEVSRSBcbiINCiAgICAgICAuICIg
SURHX0NvZGU9JyR0aGlzLT5EZWJfQXJ0aWtlbHJhYmF0dGdyJyBcbiINCgkg
ICAuICIgQU5EIEt1bmRlbl9Ocj0nJF9TRVNTSU9OW3VzZXJfaWRdJyBcbiIN
CgkgICAuICIgQU5EIFxuIg0KICAgICAgIC4gIiBTdGFydGluZ19EYXRlIDwg
bm93KCkgXG4iDQogICAgICAgLiAiIGFuZCBcbiINCiAgICAgICAuICIgRW5k
aW5nX0RhdGUgPiBub3coKSBcbiINCiAgICAgICAuICIgbGltaXQgMSBcbiIN
CgkgICA7DQogICAgLy9wcmludHIoJGRpc2NvdW50X3NxbCk7DQogICAgJGRp
c2NvdW50X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCRkaXNjb3VudF9zcWwpOw0K
ICAgIGVjaG8gbXlzcWxfZXJyb3IoKTsNCiAgICBpZiAoJHJvdyA9IG15c3Fs
X2ZldGNoX2Fzc29jKCRkaXNjb3VudF9yZXN1bHQpKSB7DQogICAgICBleHRy
YWN0ICgkcm93KTsgDQogICAgICAvKg0KICAgICAgZWNobyAiPHByZT4iOw0K
ICAgICAgdmFyX2R1bXAoJHJvdyk7DQogICAgICBlY2hvICI8L3ByZT4iOw0K
ICAgICAgKi8NCgkgICR0aGlzLT5aZWlsZW5yYWJhdHQ9JExpbmVfRGlzY291
bnQ7DQoJICAvL2VjaG8gIlplaWxlbnJhYmF0dDogJHRoaXMtPlplaWxlbnJh
YmF0dDxicj5cbiI7DQoJfQ0KICB9DQoNCiAgIC8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKg0KICAgKiBSZXRyaXZlIHRoZSBwYXJj
ZXMgZm9yIHRoZSBhcnRpdGljbGUgDQogICAqICANCiAgICogDQogICAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLyANCiAgZnVuY3Rpb24gZnJvbV9kYl9n
ZXRfcHJpY2UoKSB7DQogICAgcmVxdWlyZV9vbmNlKCJjb25uZWN0LnBocCIp
Ow0KICAgIHJlcXVpcmVfb25jZSgidXRpbHMucGhwIik7DQogICAgDQoJc2V0
bG9jYWxlKExDX0FMTCwgIkMiKTsNCg0KCS8vZWNobyAiPGI+ZnJvbV9kYl9n
ZXRfcHJpY2U8L2I+PGJyPlxuIjsNCiAgICAkcHJpY2Vfc3FsPSJTRUxFQ1Qg
KiBGUk9NIEFydGlrZWxzdGFtbV9QcmVpc2UgV0hFUkUgXG4iDQogICAgICAu
ICIgKCBcbiAiDQogICAgICAuICIgUHJlaXNncnVwcGU9J1ZLJyBcbiINCiAg
ICAgIC4gIiBPUiBQcmVpc2dydXBwZT0nSEFOREVMJyBcbiINCiAgICAgIC4g
IiBPUiBQcmVpc2dydXBwZT0nQUtUSU9OJyBcbiINCiAgICAgIC4gKGxvZ2dl
ZF9pbigpPw0KICAgICAgICAiIE9SIFByZWlzZ3J1cHBlPSckX1NFU1NJT05b
cHJpY2VfZ3JvdXBdJyBcbiINCiAgICAgICAgOiIiKQ0KICAgICAgLiAiICkg
XG4iDQogICAgICAuICIgQU5EIEFydGlrZWxfTnI9JyR0aGlzLT5BcnRpa2Vs
X05yJyBcbiINCiAgICAgIC4gIiBBTkQgU3RhcnRkYXR1bSA8IG5vdygpIFxu
Ig0KICAgICAgLiAiIEFuZCBFbmRkYXR1bSA+IG5vdygpIFxuIg0KICAgICAg
Ow0KICAgIC8vcHJpbnRyKCRwcmljZV9zcWwpOw0KICAgICRwcmljZV9yZXN1
bHQgPSBteXNxbF9xdWVyeSgkcHJpY2Vfc3FsKTsNCiAgICBlY2hvIG15c3Fs
X2Vycm9yKCk7DQogICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hc3Nv
YygkcHJpY2VfcmVzdWx0KSkgew0KICAgICAgZXh0cmFjdCAoJHJvdyk7IA0K
ICAgICAgLyoNCiAgICAgIGVjaG8gIjxwcmU+IjsNCiAgICAgIHZhcl9kdW1w
KCRyb3cpOw0KICAgICAgZWNobyAiPC9wcmU+IjsNCiAgICAgICovDQogICAg
ICAvLyR0aGlzLT5SZWNobnVuZ3NyYWJhdHRbJFByZWlzZ3J1cHBlXT0kUmVj
aG51bmdzcmFiYXR0Ow0KICAgICAgaWYgKCRQcmVpc2dydXBwZT09IlZLIikg
ew0KICAgICAgICAvL2VjaG8gIlZLOiAkUHJlaXMsIF8gIi5mbG9hdHZhbCgk
UHJlaXMpIC4iPGJyPiI7DQogICAgICAgICR0aGlzLT5WS19QcmVpcz0kUHJl
aXM7DQogICAgICAgIC8vZWNobyAiIGRhbm46ICR0aGlzLT5WS19QcmVpcyAo
dHlwOiAiLiBnZXR0eXBlKCR0aGlzLT5WS19QcmVpcykgLiAiPGJyPlxuIjsN
CiAgICAgICAgY29udGludWU7DQogICAgICB9DQogICAgICBpZiAoJHRoaXMt
PmJ1c2luZXNzT3JkZXJBbGxvd2VkKCkpIHsNCiAgICAgICAgc3dpdGNoICgk
UHJlaXNncnVwcGUpIHsNCiAgICAgICAgICBjYXNlICJIQU5ERUwiOiANCiAg
ICAgICAgICAgIC8vZWNobyAiSGFuZGVsOiAkUHJlaXM8YnI+IjsNCgkJCQkJ
CSR0aGlzLT5IYW5kZWxfUHJlaXM9KHN0cmluZykkUHJlaXM7DQoJCQkJCQkk
dGhpcy0+SGFuZGVsX1ByZWlzX1JhYmF0dD0kWmVpbGVucmFiYXR0Ow0KCQkJ
CQkJJHRoaXMtPkhhbmRlbF9QcmVpc192aWV3PSgNCgkJCQkJCQkJCSRQcmVp
cyANCgkJCQkJCQkJCSogJFplaWxlbnJhYmF0dA0KCQkJCQkJCQkJKiAoMSAt
ICgkdGhpcy0+WmVpbGVucmFiYXR0LzEwMCkpDQoJCQkJCQkJCSkNCgkJCQkJ
CQk7DQoJCQkJCQkvKg0KCQkJCQkJCWVjaG8gIlByZWlzX3ZpZXc9ICIuICRQ
cmVpcyANCgkJCQkJCSogJFplaWxlbnJhYmF0dCANCgkJCQkJCSogKDEgLSAo
JHRoaXMtPlplaWxlbnJhYmF0dC8xMDApKS4iPGJyPlxuIjsNCgkJCQkJKi8N
CgkJCWJyZWFrOw0KICAgICAgICAgIGNhc2UgIkFLVElPTiI6DQogICAgICAg
ICAgICAgLy9lY2hvICJBa3Rpb246ICRQcmVpczxicj4iOw0KICAgICAgICAg
ICAgJHRoaXMtPkFrdGlvbl9QcmVpcz0kUHJlaXM7DQogICAgICAgICAgICAk
dGhpcy0+QWt0aW9uX01pbmRlc3RfQW56YWhsPSRNaW5pbWFsZV9BbnphaGw7
DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBjYXNlICRfU0VTU0lP
TlsicHJpY2VfZ3JvdXAiXToNCiAgICAgICAgICAgIC8vZWNobyAiU3Blemlh
bDogJFByZWlzPGJyPiI7DQogICAgICAgICAgICAkdGhpcy0+U3BlemlhbF9Q
cmVpcz0kUHJlaXM7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBk
ZWZhdWx0Og0KICAgICAgICAgICAgZWNobyAiUHJlaXNncnVwcGUgJFByZWlz
Z3J1cHBlIG5pY2h0IHZlcndlbmRiYXIhIjsNCiAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8vcHJp
bnRyKCR0aGlzLT5SZWNobnVuZ3NyYWJhdHQpOw0KICAgIA0KICAgICR0aGlz
LT5zcGV6aWFsPSgoJHRoaXMtPlNwZXppYWxfUHJlaXMgPiAwKSAmJiAoJHRo
aXMtPlNwZXppYWxfUHJlaXMgPCAkdGhpcy0+VktfUHJlaXMpKTsNCiAgICAv
Kg0KICAgIGVjaG8gDQogICAgInNwZXppYWwxOiAiLigkdGhpcy0+U3Blemlh
bF9QcmVpcyA8ICR0aGlzLT5WS19QcmVpcz8iamEiOiJuZWluIikuDQogICAg
IihTcGV6aWFsOiAiLihmbG9hdCkkdGhpcy0+U3BlemlhbF9QcmVpcy4iICIu
IGdldHR5cGUoJHRoaXMtPlNwZXppYWxfUHJlaXMpIC4gIiwgPGJyLz4iDQog
ICAgLiJWSzoiLihmbG9hdCkkdGhpcy0+VktfUHJlaXMuIiAiLiBnZXR0eXBl
KCR0aGlzLT5WS19QcmVpcykuICIsIDxici8+Ig0KICAgIC4iSGFuZGVsOiIu
KGZsb2F0KSR0aGlzLT5IYW5kZWxfUHJlaXMuIiAiLiBnZXR0eXBlKCR0aGlz
LT5IYW5kZWxfUHJlaXMpLiAiLCA8YnIvPiINCg0KCQk7DQoJCS8vKi8NCiAg
ICAkdGhpcy0+YWt0aW9uPSggDQogICAgICAgICAgKCR0aGlzLT5Ba3Rpb25f
UHJlaXM+MCkgDQogICAgICAgICYmDQogICAgICAgICAgKA0KICAgICAgICAg
ICAgICAhKA0KICAgICAgICAgICAgICAgICAgJHRoaXMtPlNwZXppYWw+MCAN
CiAgICAgICAgICAgICAgICAmJiANCiAgICAgICAgICAgICAgICAgICgkdGhp
cy0+QWt0aW9uX1ByZWlzID4gJHRoaXMtPlNwZXppYWxfUHJlaXMpDQogICAg
ICAgICAgICAgICkgLy8gbmljaHQgKFNwZXppYWwgIGf8bnN0aWdlciBhbHMg
QWt0aW9uKQ0KICAgICAgICAgICAmJiANCiAgICAgICAgICAgICgkdGhpcy0+
QWt0aW9uX1ByZWlzIDwgJHRoaXMtPlZLX1ByZWlzKSAgLy8gQWt0aW9uIGf8
bnN0aWdlciBhbHMgVksNCiAgICAgICAgICApDQogICAgICApDQogICAgOw0K
ICAgIC8qDQogICAgZWNobyAic3RhdGU6JF9TRVNTSU9OW2xvZ2luX3N0YXRl
XTxicj4NCiAgICBzcGV6aWFsOiIuKCR0aGlzLT5zcGV6aWFsPyJqYSI6Im5l
aW4iKS4iPGJyPg0KICAgIFNwZXppYWxfUHJlaXM6JHRoaXMtPlNwZXppYWxf
UHJlaXM8YnI+DQogICAgVks6JHRoaXMtPlZLX1ByZWlzPGJyPg0KICAgIEhh
bmRlbDokdGhpcy0+SGFuZGVsX1ByZWlzPGJyPiI7DQogICAgKi8NCgkkdGhp
cy0+TmV0dG9wcmVpcz0oICR0aGlzLT5zcGV6aWFsICYmICgkdGhpcy0+U3Bl
emlhbF9QcmVpcz4wICkgKQ0KCQk/JHRoaXMtPlNwZXppYWxfUHJlaXMNCgkJ
OigoJHRoaXMtPkhhbmRlbF9QcmVpc192aWV3ID4wKQ0KCQkJPyR0aGlzLT5I
YW5kZWxfUHJlaXNfdmlldw0KCQkJOiR0aGlzLT5IYW5kZWxfUHJlaXMNCgkJ
CSkNCgkJOw0KDQogICAgJHRoaXMtPlNlbGVjdGVkX1ByZWlzPQ0KICAgICAg
KA0KICAgICAgICAobG9nZ2VkX2luKCkpID8NCiAgICAgICAgKA0KICAgICAg
ICAgICR0aGlzLT5zcGV6aWFsPw0KICAgICAgICAgICAgIlNwZXppYWxfUHJl
aXMiOg0KICAgICAgICAgICAgIkhhbmRlbF9QcmVpcyINCiAgICAgICAgKQ0K
ICAgICAgICA6IlZLX1ByZWlzIg0KICAgICAgKTsNCiAgICAvKmVjaG8gImFy
dGljbGU6c2VsZWN0ZWQgUHJlaXM9JHRoaXMtPlNlbGVjdGVkX1ByZWlzPGJy
PlxuIjsgDQogICAgDQogICAgZWNobyAic2VsZWN0ZWQ6ICR0aGlzLT5TZWxl
Y3RlZF9QcmVpczxicj4iOw0KICAgIGVjaG8gImFrdGlvbjoiLiAoJHRoaXMt
PmFrdGlvbj8iamEiOiJuZWluIikgLiAiPGJyPiI7ICANCiAgICBlY2hvICJz
cGV6aWFsOiIuICgkdGhpcy0+c3BlemlhbD8iamEiOiJuZWluIikgLiAiPGJy
PiI7ICANCiAgICANCiAgICBlY2hvICJBa3Rpb246ICR0aGlzLT5Ba3Rpb25f
UHJlaXM8YnI+U3BlemlhbDogJHRoaXMtPlNwZXppYWxfUHJlaXM8YnI+Vks6
ICAkdGhpcy0+VktfUHJlaXM8YnI+LCBIYW5kZWw6ICR0aGlzLT5IYW5kZWxf
UHJlaXM8YnI+IjsNCiAgICBlY2hvICJOZXR0b3ByZWlzOiAkdGhpcy0+TmV0
dG9wcmVpczxicj4iOw0KICAgICovDQogIH0NCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KICogb3V0cHV0IEhUTUwgcmVwcmVzZW50YXRpb24gb2Yg
YXJ0aWNsZSANCiAqICANCiAqIA0KICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovIA0KICAgIGZ1bmN0aW9uIHRvX0hUTUwoKSB7DQovLyAgICAgICAgcmVx
dWlyZV9vbmNlKCdjb2xvci5waHAnKTsNCiAgICAgICAgcmVxdWlyZV9vbmNl
KCd1dGlscy5waHAnKTsNCgkJCQlyZXF1aXJlX29uY2UgKCJsb2dpbi5waHAi
KTsNCiAgICAgICAgcmVxdWlyZV9vbmNlICgicHJpY2UucGhwIik7DQogICAg
ICAgIA0KICAgICAgIC8vcHJpbnRyKCR0aGlzKSA7DQogICAgICAgIA0KICAg
ICAgICBnbG9iYWwgJGNvbnZlcnNpb247Ly8kdGhpcy0+cHJpbnRfbnVtYmVy
Ow0KCQkJCWdsb2JhbCAkbWF4RGlzcGxheU51bWJlcjsNCiAgICAgICAgDQog
ICAgICAgIC8vc2V0bG9jYWxlKExDX0FMTCwgImRlX0FUIik7DQoJCQkJDQog
ICAgICAgICRjb2xvcj0ibm9uZSI7DQogICAgICAgICRib3JkZXI9Im5vbmUi
Ow0KICAgICAgICANCiAgICAgICAgJEIyQj1mYWxzZTsNCiAgICAgICAgJEIy
Qz1mYWxzZTsNCiAgICAgICAgJEF1c2xhdWY9ZmFsc2U7DQogICAgICAgIC8v
JGxvZ2dlZF9pbj1sb2dnZWRfaW4oKTsNCiAgICAgICAgIC8qZm9yZWFjaCAo
YXJyYXkoIlZLX1ByZWlzIiwgIkhhbmRlbHNfUHJlaXMiKSBhcyAkdmFyaWFi
bGUpIHsNCgkJCQkJCWVjaG8gInZvcmhlcjogJHZhcmlhYmxlOiAiLiR0aGlz
LT4kdmFyaWFibGUuIjxicj5cbiI7DQogICAgICAgICAgICAkdmFyPWRpc3Bs
YXlfbnVtYmVyKCR0aGlzLT4kdmFyaWFibGUsMik7DQoJCQkJCQllY2hvIGdl
dHR5cGUoJHZhcik7DQoJCQkJCQkkdGhpcy0+JHZhcmlhYmxlPWRpc3BsYXlf
bnVtYmVyKCR0aGlzLT4kdmFyaWFibGUsMik7DQoJCQkJCQllY2hvICJ2b3Jo
ZXI6ICR2YXJpYWJsZTogIi4kdGhpcy0+JHZhcmlhYmxlLiI8YnI+XG4iOw0K
ICAgICAgICB9Ki8NCiAgICAgICAgJE5ldHRvZ2V3aWNodD1jb252ZXJ0X3Np
emUoJHRoaXMtPk5ldHRvZ2V3aWNodCwgMTAwMCk7DQogICAgICAgICRkaWdp
dHM9KCRjb252ZXJzaW9uPzM6MCk7DQogICAgICAgICROZXR0b2dld2ljaHQ9
ZGlzcGxheV9udW1iZXIoJE5ldHRvZ2V3aWNodCwgJGRpZ2l0cyk7DQogICAg
ICAgICR3ZWlnaHRfbWVhc3N1cmU9ICgkY29udmVyc2lvbj8ia2ciOiJnIik7
DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqDQoqIEF1c2dhYmUNCioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLw0KICAgIC8qIEJlbvZ0aWd0ZSBGZWxk
ZXI6IEFydGlrZWxOciwgQXJ0aWtlbCBCZXplaWNobnVuZywgTmV0dG9nZXdp
Y2h0LCBSaWNodHByZWlzICBWSyBQcmVpcywgDQogICAgIEhhbmRlbHNfUHJl
aXMgaXN0IEVLLVByZWlzLCBBbnphaGwgcHJvIFBha2V0ID0gVlBFLCANCiAg
ICAgTGllZmVyYmFyIGFiIHdlbm4ga2VpbmUgRGF0ZW4gZGFubiBwcm9tcHQg
c29uc3QgRGF0dW0NCiAgICAgKi8gICAgIA0KDQogICAgICAgICRzdHlsZT0i
IHN0eWxlPVwiYm9yZGVyOiB0aGluIHNvbGlkIGJsYWNrOyB3aWR0aDogMTAw
JTtcIiAiOw0KICAgICAgICANCiAgICAgICAgJG1vZGUgPSBnZXRSZXF1ZXN0
QXJndW1lbnQoIm1vZGUiKTsNCiAgICAgICAgaWYgKCRtb2RlPT0iYmFza2V0
Iil7DQogICAgICAgICAgICA/PiANCiAgICAgICAgICAgIFp1cvxjayB6dW0g
PGEgaHJlZj0iPD89JF9TRVJWRVJbIlBIUF9TRUxGIl0/Pj9hY3Rpb249YmFz
a2V0Ij5XYXJlbmtvcmI8L2E+PGJyPg0KICAgICAgICAgICAgICA8Pw0KICAg
ICAgICB9DQogICAgICAgIA0KICAgICAgICAkSVBHX2NvZGVfZW5jb2RlZD11
cmxlbmNvZGUoJHRoaXMtPklQR19Db2RlKTsNCiAgICAgICAgLy9wcmludHIo
JHRoaXMtPlByZWlzKTsNCiAgICAkSGFuZGVsc3ByZWlzID0gJHRoaXMtPlBy
ZWlzLT5nZXRIYW5kZWxzcHJlaXMoKTsNCgk/PjwhLS0gPiAKCQkkX1ByZWlz
ID0gPD89ICRfUHJlaXMgPz4KCQkkdGhpcy0+UHJlaXMtPmdldFNwZXppYWxw
cmVpcygpID0gPD89ICR0aGlzLT5QcmVpcy0+Z2V0U3BlemlhbHByZWlzKCkg
Pz4KCSAgICAgICAgJEhhbmRlbHNwcmVpc1siSGFuZGVsc3ByZWlzX3JlZHV6
aWVydCJdID0gPD89ICRIYW5kZWxzcHJlaXNbIkhhbmRlbHNwcmVpc19yZWR1
emllcnQiXSA/PgoJICAgPC8gLS0+PD8KCQkgIAoJCQokQWt0dWVsbGVyX1By
ZWlzPSggZmFsc2UgIT09ICggJF9QcmVpcyA9ICR0aGlzLT5QcmVpcy0+Z2V0
U3BlemlhbHByZWlzKCkgKSA/ICRfUHJlaXMgOiAkSGFuZGVsc3ByZWlzWyJI
YW5kZWxzcHJlaXNfcmVkdXppZXJ0Il0gKTsNCgkJDQogICAgJFByZWlzID0g
JHRoaXMtPlByZWlzLT5nZXRQcmljZU92ZXJ2aWV3KCk7CgkJCQlpbmNsdWRl
ICgiYXJ0aWNsZS5pbmMiKTsNCiAgICAgICAgDQogICAgfQ0KDQogLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioNCiAqIGdlbmVyYXRlIHByb3BlciBmb3Jt
YXRlZCBhcnRpY2xlIHRleHQgDQogKiAgDQogKiANCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLyANCglmdW5jdGlvbiB0b19IVE1MX2dldF9hcnRpY2xl
X3RleHQoKSB7DQoJCQ0KCQkkYXJ0aWNsZV90ZXh0PSI8dGQ+PCEtLSBubyB0
ZXh0IC0tPjwvdGQ+XG4iOw0KCQlpZiAoY291bnQoJHRoaXMtPlRleHR6ZWls
ZSkpIHsNCgkJCQkkYXJ0aWNsZV90ZXh0PSANCgkJCQkJICI8dWwgc3R5bGU9
XCJsaXN0LXN0eWxlOiBub25lOyBwYWRkaW5nOiAwcHg7IG1hcmdpbjogMCUg
NSU7XCI+XG4iOw0KCQkJCQkJZm9yZWFjaCAoJHRoaXMtPlRleHR6ZWlsZSBh
cyAkTnI9PiRaZWlsZSkgew0KCQkJCQkJCQkkYXJ0aWNsZV90ZXh0Lj0gIjxs
aT4iLnByZWdfcmVwbGFjZSgiL15ccysvIiwiJm5ic3A7Jm5ic3A7IixodG1s
c3BlY2lhbGNoYXJzKCRaZWlsZSkpLiI8L2xpPlxuIjsNCgkJCQkJCX0NCgkJ
CQkkYXJ0aWNsZV90ZXh0Lj0iPC91bD5cbiI7DQoJCX0NCgkJcmV0dXJuICRh
cnRpY2xlX3RleHQ7DQoJfQ0KDQogLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioNCiAqIGdlbmVyYXRlIGEgcHJvcGVybHkgZm9ybWF0ZWQgaW1hZ2UgDQog
KiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyANCiAgZnVu
Y3Rpb24gdG9fSFRNTF9nZXRfaW1hZ2UoKSB7DQogICAgJGltZ19GYXJiR3I9
IiI7DQogICAgJGNvdW50X0ZhcmJHciA9IChpc3NldCgkdGhpcy0+RmFyYkdy
KSA/IGNvdW50KCR0aGlzLT5GYXJiR3IpIDogMCk7DQogICAgaWYgKCRjb3Vu
dF9GYXJiR3IhPTApIHsNCiAgICAgICAgJGtleXM9YXJyYXlfa2V5cygkdGhp
cy0+RmFyYkdyKTsNCiAgICAgICAgZm9yICgkaT0wOyAkaTwkY291bnRfRmFy
YkdyLTE7ICRpKyspIHsNCiAgICAgICAgICAgICRjdXJyZW50PSRrZXlzWyRp
XTsNCiAgICAgICAgICAgICRpbWdfRmFyYkdyPSIuLi9pbWFnZXMvYXJ0aWNs
ZXMvIi4kdGhpcy0+RmFyYkdyWyRjdXJyZW50XVsiaW1hZ2UiXTsNCiAgICAg
ICAgICAgIC8vcHJpbnRyKCRpbWdfRmFyYkdyKTsNCiAgICAgICAgICAgIGlm
ICghZmlsZV9leGlzdHMoJGltZ19GYXJiR3IpKSB7DQogICAgICAgICAgICAg
ICAgJGltZ19GYXJiR3I9IiI7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlbHNlIHsgDQogICAgICAgICAgICAvLyovDQogICAgICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAg
aWYgKCRpbWdfRmFyYkdyPT09IiIpIHsNCiAgICAgIC8vZWNobyAiZmFpbG92
ZXI6IDxicj5cbiI7IA0KICAgICAgICAkaW1nX0ZhcmJHcj0iLi4vaW1hZ2Vz
L2FydGljbGVzLyIuJHRoaXMtPkFydGlrZWxfTnIuIi5qcGciOw0KICAgIH0N
CiAgICAvL2VjaG8gImltZz0kaW1nPGJyPlxuIjsNCiAgICAvL2VjaG8gInNl
YXJjaGluZzogWyRpbWdfRmFyYkdyXTxicj5cbiI7DQogICAgDQogICAgJGlt
Zz0iPHRkPjwhLS0gbm8gaW1nIC0tPjwvdGQ+XG4iOw0KICAgIGlmICgkaW1n
X0ZhcmJHciANCiAgICAgICAgJiYgKGZpbGVfZXhpc3RzKCRpbWdfRmFyYkdy
KSkNCiAgICAgICAgKSB7DQogICAgICAgIC8vZWNobyAiIGZvdW5kIDxicj5c
biI7DQogICAgICAgICRzaXplPWNhbGN1bGF0ZVZpZXdEaW1lbnNpb25zKCRp
bWdfRmFyYkdyKTsNCiAgICAgICAgLy9wcmludHIgKCRzaXplKTsNCiAgICAg
ICAgJHdpZHRoPSRzaXplWyJ3aWR0aCJdOw0KICAgICAgICAkaGVpZ2h0PSRz
aXplWyJoZWlnaHQiXTsNCiAgICAgICAgLy9wcmludHIoJGhlaWdodCk7DQog
ICAgICAgIC8vcHJpbnRyKCR3aWR0aCk7DQogICAgICAgICRhbHQ9IiR0aGlz
LT5CZXplaWNobnVuZyI7Ly8gIi4kdGhpcy0+RmFyYkdyWyRmaXJzdF1bImNv
bG9yIl07DQogICAgICAgICRpbWc9PDw8SU1HDQogICAgICAgICAgICAgIDx0
ZCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxMDAlIj4NCiAgICAgICAgICAgICAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICAgICAg
ICAgICAgIDwhLS0NCiAgICAgICAgICAgICAgICAgIHZhciBpbWdfbmFtZT0n
JHRoaXMtPkJlemVpY2hudW5nJzsNCiAgICAgICAgICAgICAgICAgIC8vdmFy
IGltZ193aWR0aD0kd2lkdGg7DQogICAgICAgICAgICAgICAgICAvL3ZhciBp
bWdfaGVpZ2h0PSRoZWlnaHQ7DQogICAgICAgICAgICAgICAgICB2YXIgaW1h
Z2VMb2FkZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICBmdW5jdGlvbiB6b29t
X2FydGljbGUoKSB7DQogICAgICAgICAgICAgICAgICAgIGltYWdlPW5ldyBJ
bWFnZTsNCiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjPWRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCdhcnRpY2xlX2ltYWdlJylbMF0uc3JjOw0K
ICAgICAgICAgICAgICAgICAgICBpbWFnZV93aW5kb3c9d2luZG93Lm9wZW4o
DQogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5TmFtZSgnYXJ0aWNsZV9pbWFnZScpWzBdLnNyYywNCiAgICAgICAgICAg
ICAgICAgICAgICAgICdpbWdfbmFtZScsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICdsb2NhdGlvbj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT1ubyxt
ZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sdG9vbGJhcj1ubyx3aWR0aD0nK2lt
YWdlLndpZHRoKycsaGVpZ2h0PScraW1hZ2UuaGVpZ2h0KTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgLS0+DQogICAgICAgICAgICAg
ICAgPC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgPGEgbmFtZT0iYXJ0aWNs
ZV96b29tX2luIiBocmVmPSJqYXZhc2NyaXB0Onpvb21fYXJ0aWNsZSgpOyIN
CiAgICAgICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICA8aW1nIGFs
dD0iem9vbSIgc3JjPSIuLi9pbWFnZXMvb3RoZXIvTHVwZS0yMC5naWYiIHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiOy8+PC9hPg0KICAgICAg
ICAgICAgICAgIDxpbWcgbmFtZT0iYXJ0aWNsZV9pbWFnZSIgaWQ9ImFydGlj
bGVfaW1hZ2UiIHNyYz0iJGltZ19GYXJiR3IiIA0KICAgICAgICAgICAgICAg
ICAgICBhbHQ9IiRhbHQiIHdpZHRoPSIkd2lkdGgiIGhlaWdodD0iJGhlaWdo
dCINCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImJvcmRlcjogdGhpbiBz
b2xpZCBibGFjazsiIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgPjwhLS0gb25Mb2FkPSJpbWFnZUxvYWRlZCgpIiAtLT4N
CiAgICAgICAgICAgICAgICA8L2ltZz4NCiAgICAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJqcy9pbWFnZTIuanMiIGxhbmd1YWdlPSJKYXZhc2NyaXB0Ij4NCgkJ
CQkJCQkJCS8qDQogICAgICAgICAgICAgICAgICB2YXIgdGltZXJDb3VudGVy
ID0wOw0KICAgICAgICAgICAgICAgICAgDQoJCQkJCQkJCWZ1bmN0aW9uIGlt
YWdlTG9hZGVkKCkgew0KCQkJCQkJCQkJc2V0VGltZW91dCAoImNoZWNrX2lt
YWdlX3NpemUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGljbGVfaW1h
Z2UnKSwxNTAsIDIwMCkiLCAyMDApOw0KCQkJCQkJCQl9DQoJCQkJCQkJCQ0K
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrX2ltYWdlX3NpemUoaW1h
Z2UsIG1heF93aWR0aCwgbWF4X2hlaWdodCkgew0KICAgICAgICAgICAgICAg
ICAgICAvL2lmIChpbWFnZSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgd2lkdGhfZmFjdG9yPW1heF93aWR0aC9pbWFnZS53aWR0aDsNCiAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHRfZmFjdG9yPW1heF9oZWlnaHQv
aW1hZ2UuaGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgIGZhY3RvciA9
IE1hdGgubWluKHdpZHRoX2ZhY3RvcixoZWlnaHRfZmFjdG9yKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAvL3dpbmRvdy5zdGF0dXM9ICJ3OiIgKyBpbWFn
ZS53aWR0aCArICIgaDoiICsgaW1hZ2UuaGVpZ2h0ICsgIiB3ZjogIiArIHdp
ZHRoX2ZhY3RvcisiLCBoZjogIitoZWlnaHRfZmFjdG9yKyIsIG1pbjogIitm
YWN0b3I7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY3RvciA8IDEp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLndpZHRoICo9IGZh
Y3RvcjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLmhlaWdodCAq
PSBmYWN0b3I7DQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAvL30NCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
c3RhdHVzPSJyZXNpemVkIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgZnVuY3Rpb24gbG9hZF9pbWFn
ZSh1cmwsIG5ld1dpZHRoLCBuZXdIZWlnaHQpIHsNCiAgICAgICAgICAgICAg
ICAgICAgcG9zID0gaW5kZXhPZiAoImFydGljbGVfaW1hZ2UiKTsNCiAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGlj
bGVfaW1hZ2UnKS5zcmMgPSB1cmw7DQogICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcnRpY2xlX2ltYWdlJykud2lkdGgg
PSBuZXdXaWR0aDsNCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FydGljbGVfaW1hZ2UnKS5oZWlnaHQgPSBuZXdIZWln
aHQ7DQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQgKCJjaGVja19p
bWFnZV9zaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcnRpY2xlX2lt
YWdlJyksMTUwLCAyMDApIiwgMjAwKTsNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5k
ZXhPZiAoaWQpIHsNCiAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGRv
Y3VtZW50LmltYWdlcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAg
ICAgICBpZiAoZG9jdW1lbnQuaW1hZ2VzW2ldLmlkID09IGlkKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7DQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgLy8gaGFjayBmb3IgaW1hZ2Uud2lk
dGggYW5kIGltYWdlLmhlaWdodDogDQogICAgICAgICAgICAgICAgLy8gV2l0
aG91dCB0aW1lb3V0LCBpbWVkZWF0bHkgYWZ0ZXIgbG9kYWdpbiBkaW1lbnNp
b25zIGFyZSAwLg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
IC8vbG9hZF9pbWFnZSgiJGltZ19GYXJiR3IiLCAkd2lkdGgsICRoZWlnaHQp
Ow0KICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoImNoZWNrX2ltYWdlX3Np
emUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGljbGVfaW1hZ2UnKSwg
MTUwLCAyMDApIiwgMjAwKTsNCiAgICAgICAgICAgICAgICAqLw0KICAgICAg
ICAgICAgICAgIDwvc2NyaXB0PiANCiAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFu
Z3VhZ2U9IkphdmFzY3JpcHQiPg0KCQkJCQkJCQkNCiAgICAgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5Lm9ubG9hZD0iaW1hZ2VMb2FkZWQiOw0KICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc2NyaXB0PiANCiAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
PC90ZD4NCklNRzsNCiAgICB9DQogIHJldHVybiAkaW1nOw0KICB9DQogIA0K
IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiBnZW5lcmF0ZSBwcm9w
ZXIgZm9ybWF0ZWQgZmFyYmdyIGRhdGEgDQogKiAgDQogKiANCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLyANCmZ1bmN0aW9uIHRvX0hUTUxfRkdfc3Ry
aW5nKCkgew0KDQoJCQkJZ2xvYmFsICRtYXhEaXNwbGF5TnVtYmVyOw0KCQkJ
CS8vZWNobyAiRkcgYXVzZ2FiZSA8YnI+IjsNCiAgICAgICAgLy8gRmFyYi1H
cm9lc3NzZW4NCiAgICAgICAgaWYgKCR0aGlzLT5vcmRlckFsbG93ZWROb3co
KSkgew0KICAgICAgICAgICAgJEZhcmJHcl9zdHJpbmc9IiI7DQogICAgICAg
ICAgICBpZiAoaXNzZXQoJHRoaXMtPkZhcmJHcikpIHsNCiAgICAgICAgICAg
ICAgLy9lY2hvIF9fRlVOQ1RJT05fXyAuIigpOiIgLiBfX0xJTkVfXyAuICI6
IGNvdW50KFwkdGhpcy0+RmFyYkdyKTo8YnI+XG4iOw0KICAgICAgICAgICAg
ICAvL3ByaW50cihjb3VudCgkdGhpcy0+RmFyYkdyKSk7DQogICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICBpZiAoY291bnQoJHRoaXMtPkZhcmJHcikh
PT0wKSB7DQogICAgICAgICAgICAgICAgICAvL2VjaG8gIioxKiAiOw0KICAg
ICAgICAgICAgICAgICAgJEZhcmJHcl9zdHJpbmcuPSc8dGQgdmFsaWduPSJ0
b3AiIGlkPSJpZDEiPjxiPkZhcmJlbi9HciZvdW1sOyZzemxpZztlbjo8L2I+
PC90ZD48dGQ+PGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Jw0KICAgICAg
ICAgICAgICAgICAgICAgIC4kdGhpcy0+Z2V0X2ZhcmJncl9saXN0KA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFyYmdyIiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJhZGlvIiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3dpdGNoIj0+dHJ1ZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic2VsZWN0ZWQiPT4kdGhpcy0+c2VsZWN0ZWRfRmFyYkdyLCANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwcmludF9udW1iZXIiPT4kdGhp
cy0+cHJpbnRfbnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIndpdGhvdXRfdW5hdmFpbGFibGUiPT50cnVlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNoZWNrX2lkIj0+Im51bWJlciIsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJ0aWNsZV9uYW1lIj0+JHRo
aXMtPkJlemVpY2hudW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAp
DQogICAgICAgICAgICAgICAgICAgICAgKQ0KCQkJCQkJCQkJCQkuICJcbjwv
ZGl2PjwvdGQ+XG4iOw0KICAgICAgICAgICAgICAgICAgOw0KICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkbnVtYmVyPSgw
PGlzc2V0KCR0aGlzLT5udW1iZXIpPyR0aGlzLT5udW1iZXI6MCk7DQogICAg
ICAgICAgICAkbWF4X3ZhbHVlPSgkdGhpcy0+TGFnZXJiZXN0YW5kPiRtYXhE
aXNwbGF5TnVtYmVyPyIkbWF4RGlzcGxheU51bWJlciI6JHRoaXMtPkxhZ2Vy
YmVzdGFuZCk7DQogICAgICAgICAgICAkU2hpcG1lbnRfRGF0ZT1kYXRlKCJk
Lm0ueSIsICR0aGlzLT5TaGlwbWVudF9EYXRlKTsNCiAgICAgICAgICAgIC8v
cHJpbnRfRmFyYkdyKCRGYXJiR3Jfc3RyaW5nKQ0KICAgICAgICAgICAgLy8k
RmFyYkdyID0gPDw8RkFSQl9HUg0KICAgICAgICAgICAgPz4NCiAgICAgICAg
ICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYXJ0aWNs
ZV92YWx1ZSI+IA0KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQoJCQkJCQkJ
CTwhLS0NCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQl2YXIgbWF4X3Zh
bHVlPTw/PSRtYXhfdmFsdWU/PjsNCgkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJ
CQkJCQlmdW5jdGlvbiBzZXRtYXgobnVtYmVyLGlkKSB7DQoJCQkJCQkJCQlt
YXhfdmFsdWUgPSBudW1iZXI7DQoJCQkJCQkJCQl2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCgkJCQkJCQkJCS8vYWxlcnQg
KGlkICsgIiBpc3QgIiArIGVsZW1lbnQpOw0KCQkJCQkJCQkJaWYgKChlbGVt
ZW50ICE9IG51bGwpIC8vIElFIHJldHVybnMgbnVsbCBvbiBsb2FkLi4uDQoJ
CQkJCQkJCQkJJiYgKGVsZW1lbnQudmFsdWUgPiBtYXhfdmFsdWUpKSB7IA0K
CQkJCQkJCQkJCQllbGVtZW50LnZhbHVlID0gbWF4X3ZhbHVlOw0KCQkJCQkJ
CQkJfQ0KCQkJCQkJCQkJLyp2YXIgZWxlbWVudHM9ZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUoIm9yZGVyX2Zvcm0iKVswXS5lbGVtZW50czsNCgkJCQkJ
CQkJCXZhciBpPTA7DQoJCQkJCQkJCQlmb3IgKGk9MDsgaTxlbGVtZW50cy5s
ZW5ndGg7IGkrKykgew0KCQkJCQkJCQkJCQlpZiAoZWxlbWVudHNbaV0uY2hl
Y2tlZCkgew0KCQkJCQkJCQkJCQkJCS8vYWxlcnQgKGVsZW1lbnRzW2ldLm5h
bWUrJyAsIG5yLjogJytpKTsNCgkJCQkJCQkJCQkJCQllbGVtZW50c1tpXS5z
ZWxlY3QoKTsNCgkJCQkJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJCQkJfQ0K
CQkJCQkJCQkJCQkvL2FsZXJ0KGVsZW1lbnRzW2ldLm5hbWUrJywgJytlbGVt
ZW50c1tpXS50eXBlKycsIGNoZWNrZWQ6ICcrZWxlbWVudHNbaV0uY2hlY2tl
ZCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCQkqLw0KCQkJCQkJCQkJLy9h
bGVydCAoZWxlbWVudF9uYW1lcyk7DQoJCQkJCQkJCQkvL2FsZXJ0KGNoZWNr
ZWQpOw0KCQkJCQkJCQl9DQoJCQkJCQkJDQogICAgICAgICAgICAgICAgZnVu
Y3Rpb24gY2hlY2tudW1iZXIoaWQpIHsNCgkJCQkJCQkJCS8vYWxlcnQgKCdm
aWVsZCcpOw0KLy8JCQkJCQkJCQlhbGVydCAoJ2NoZWNrbnVtYmVyOiAnICsg
aWQpOw0KCQkJCQkJCQkJdmFyIGVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpOw0KICAgICAgICAgICAgICAgICAgdmFyIHJldHZhbD10cnVl
Ow0KCQkJCQkJCQkJaWYgIChlbGVtZW50LnZhbHVlPm1heF92YWx1ZSkgew0K
CQkJCQkJCQkJCQlpZiAgKGNvbmZpcm0gKCdEZXJ6ZWl0IHNpbmQgbnVyICcg
KyBtYXhfdmFsdWUgKyAnIFN0/GNrICcNCgkJCQkJCQkJCQkJCQkrICd2ZXJm
/Gdhci4gV29sbGVuIHNpZSB0cm90emRlbSAnICsgZWxlbWVudC52YWx1ZSAN
CgkJCQkJCQkJCQkJCQkrICcgU3T8Y2sgYmVzdGVsbGVuIHVuZCAnIA0KCQkJ
CQkJCQkJCQkJCSsgKGVsZW1lbnQudmFsdWUtbWF4X3ZhbHVlKSArICcgc3Dk
dGVyIGdlbGllZmVydCBiZWtvbW1lbj8nKQ0KCQkJCQkJCQkJCQkJCSkgew0K
CQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQkJCQkJ
ZWxlbWVudC52YWx1ZT1tYXhfdmFsdWU7DQoJCQkJCQkJCQkJCQlyZXR2YWwg
PSBmYWxzZTsNCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQkvL2FsZXJ0KCdT
aWUga/ZubmVuIG51ciAnK21heF92YWx1ZSsnIFN0/GNrIGJlc3RlbGxlbiEn
KTsNCgkJCQkJCQkJCQkJLy9lbGVtZW50LnZhbHVlPW1heF92YWx1ZTsNCgkJ
CQkJCQkJCX0NCgkJCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQkJCS8vYWxlcnQg
KCdBbGxlcyBPSycpOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJLy9hbGVydChy
ZXR2YWwpOw0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsNCgkJ
CQkJCQl9DQogICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBmdW5jdGlv
biBjaGVja2RhdGVfZmllbGQoaWQpIHsNCiAgICAgICAgICAgICAgICAvL2Fs
ZXJ0KCdjaGVja2RhdGVfZmllbGQnKTsNCiAgICAgICAgICAgICAgICB2YXIg
ZWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7DQogICAgICAg
ICAgICAgICAgdmFyIGRhdGVfcGF0dGVybiA9IC9eWzAxMjNdWzAtOV1cLlsw
MV1bMC05XVwuWzAxXVswLTldJC87DQogICAgICAgICAgICAgICAgdmFyIGRh
dGVfb2sgPSAoZWxlbWVudC52YWx1ZSA9PSBlbGVtZW50LnZhbHVlLm1hdGNo
KGRhdGVfcGF0dGVybikpOw0KICAgICAgICAgICAgICAgIC8vYWxlcnQgKCJw
YXR0ZXJuIFsiICsgZGF0ZV9wYXR0ZXJuICsgIl0gbWF0Y2hlZCB2YWx1ZSBb
IiArIGVsZW1lbnQudmFsdWUgKyAiXTogIiArIGRhdGVfb2spOw0KICAgICAg
ICAgICAgICAgIGlmICghZGF0ZV9vaykgew0KICAgICAgICAgICAgICAgICAg
YWxlcnQgKCJEYXMgTGllZmVyZGF0dW0gd3VyZCBuaWNodCBhbHMgcmljaHRp
Z2VzIERhdHVtIGVya2FubnQuIFxuQml0dGUgZ2ViZW4gc2llIGRhcyBEYXR1
bSBpbiBkZXIgRm9ybSBkZC5tbS5qaiBlaW4sIHouQi4gMTUuMDYuMDQuIik7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBk
YXRlX29rOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIA0KCQkJ
CQkJCWZ1bmN0aW9uIG9yZGVyKCkgew0KICAgICAgICAgICAgICAgIHZhciBy
ZXR2YWwgPSBjaGVja251bWJlcignbnVtYmVyJyk7DQogICAgICAgICAgICAg
ICAgYWxlcnQgKCdnb3QgcmVzdWx0OiAnICsgcmV0dmFsKTsNCiAgICAgICAg
ICAgICAgICBpZiAocmV0dmFsID09IHRydWUpIHsNCiAgICAgICAgICAgICAg
ICAgIGFsZXJ0ICgnYmluIGluIFNjaGxlaWZlIScpOw0KICAgICAgICAgICAg
ICAgICAgc3VibWl0KCk7DQoJCQkJCQkJCX0JDQoJCQkJCQkJfQ0KICAgICAg
ICAgICAgICANCiAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrX3N1Ym1pdCgp
IHsNCi8vICAgICAgICAgICAgICAgIGFsZXJ0KCJjaGVja19zdWJtaXQiKTsN
CiAgICAgICAgICAgICAgICB2YXIgbnVtYmVyX29rID0gY2hlY2tudW1iZXIo
J251bWJlcicpOw0KICAgICAgICAgICAgICAgIHZhciBkYXRlX29rID0gY2hl
Y2tkYXRlX2ZpZWxkKCdTaGlwbWVudF9EYXRlJyk7DQogICAgICAgICAgICAg
ICAgLy9hbGVydCAoIm51bWJlcjoiICsgbnVtYmVyX29rICsgIiwgZGF0ZToi
ICtkYXRlX29rKTsNCiAgICAgICAgICAgICAgICByZXR1cm4oIG51bWJlcl9v
aw0KICAgICAgICAgICAgICAgICAgJiYgZGF0ZV9vaw0KICAgICAgICAgICAg
ICAgICAgKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAvL2Fs
ZXJ0KCdqcyBlbmQnKTsNCiAgICAgICAgICAgICAgDQogICAgDQoNCg0KICAg
ICAgICAgICAgLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KICAg
ICAgICAgICAgDQogICAgICAgICAgICANCgkJCQkJCQk8PyBpZiAoJHRoaXMt
PnNlbGVjdGVkX0ZhcmJHciAhPSAiIikgeyA/Pg0KCQkJCQkJCQ0KCQkJCQkJ
CWZ1bmN0aW9uIG9uRm9ybUxvYWQoKSB7DQoJCQkJCQkJCWVsZW1lbnRUb1Nl
bGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnPD89JHRoaXMtPnNlbGVj
dGVkX0ZhcmJHcj8+Jyk7DQoJCQkJCQkJCWFsZXJ0ICgnc2VsZWN0aW5nIDw/
PSR0aGlzLT5zZWxlY3RlZF9GYXJiR3I/PicgKyBlbGVtZW50VG9TZWxlY3Qp
Ow0KCQkJCQkJCQllbGVtZW50VG9TZWxlY3Quc3lsZT0idGhpbiBzb2xpZCBy
ZWQiOw0KCQkJCQkJCQllbGVtZW50VG9TZWxlY3QuY2xpY2soKTsNCgkJCQkJ
CQkJLy9lbGVtZW50VG9TZWxlY3QuZm9jdXMoKTsNCgkJCQkJCQkJcmV0dXJu
IHRydWU7DQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJCWRvY3VtZW50LmJv
ZHkub25Mb2FkPSJvbkZvcm1Mb2FkIjsNCgkJCQkJCQk8PyB9ID8+DQoJCQkJ
CQkJCQ0KCQkJCQkJCQktLT4NCgkJCQkJCQkJPC9zY3JpcHQ+DQogICAgICAg
ICAgICAgICAgICAgIDxmb3JtIG5hbWU9Im9yZGVyX2Zvcm0iIGFjdGlvbj0i
PD89JF9TRVJWRVJbIlBIUF9TRUxGIl0/PiIgbWV0aG9kPSJnZXQiDQogICAg
ICAgICAgICAgICAgICAgIG9uU3VibWl0PSJyZXR1cm4oY2hlY2tfc3VibWl0
KCkpOyI+IDwhLS0gIC0tPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1
dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9Im9yZGVyIj4N
CiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJhcnRpY2xlIiB2YWx1ZT0iPD89JHRoaXMtPkFydGlrZWxfTnI/PiI+
DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgIDwvdGQ+
DQogICAgICAgICAgICA8L3RyPg0KCQkJCQkJPD89JEZhcmJHcl9zdHJpbmc/
Pg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICA8dGQ+DQogICAg
ICAgICAgICAgICAgPGI+QW56YWhsOjxiPg0KICAgICAgICAgICAgICA8L3Rk
Pg0KICAgICAgICAgICAgICA8dGQgY2xhc3M9ImFydGljbGVfdmFsdWUiPg0K
CQkJCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bWJlciIgbmFtZT0i
bnVtYmVyIiBzaXplPSIyIiB2YWx1ZT0iPD89JG51bWJlcj8+IiBhdXRvY29t
cGxldGU9Im9mZiI+DQoJCQkJCQkJPC90ZD4NCiAgICAgICAgICAgIDwvdHI+
DQogICAgICAgICAgICA8dHI+DQoJCQkJCQkJPHRkPg0KCQkJCQkJCQk8Yj5M
aWVmZXJkYXR1bTo8L2I+DQoJCQkJCQkJPC90ZD4NCgkJCQkJCQk8dGQgY2xh
c3M9ImFydGljbGVfdmFsdWUiPiAgIA0KCQkJCQkJCQk8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9IlNoaXBtZW50X0RhdGUiIG5hbWU9IlNoaXBtZW50X0RhdGUi
IHZhbHVlPSI8Pz0kU2hpcG1lbnRfRGF0ZT8+IiBzaXplPSI4IiBtYXhfd2lk
dGg9IjgiIGF1dG9jb21wbGV0ZT0ib2ZmIj4NCgkJCQkJCQk8L3RkPg0KICAg
ICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCgkJCQkJCQk8dGQ+
DQoJCQkJCQkJPC90ZD4NCgkJCQkJCQk8dGQgY2xhc3M9ImFydGljbGVfdmFs
dWUiPg0KCQkJCQkJCTw/IC8qDQo8IS0tICAgICAgICAgICAgICAgICAgICAg
ICAgPGlucHV0IHR5cGU9ImltYWdlIiBuYW1lPSJzdWJtaXRfYXJ0aWNsZSIg
dmFsdWU9ImJlc3RlbGxlbiIgc3JjPSIuLi9pbWFnZXMvc2hvcC93YXJlbmtv
cmJQaWMuZ2lmIiBvbmNsaWNrPSJhbGVydCAoJ3N1Ym1pdCcpOyByZXR1cm4g
ZmFsc2U7Ij4tLT4gKi8gPz4NCgkJCQkJCQkJCQkJPGlucHV0IHR5cGU9InN1
Ym1pdCIgbmFtZT0ic3VibWl0X2FydGljbGUiIHZhbHVlPSJiZXN0ZWxsZW4i
IHNyYz0iLi4vaW1hZ2VzL3Nob3Avd2FyZW5rb3JiUGljLmdpZiI+Lg0KCQkJ
CQkJCQkJPC9mb3JtPg0KCQkJCQkJCTwvdGQ+DQogICAgICAgICAgICA8L3Ry
Pg0KPD8NCiAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAk
RmFyYkdyX3N0cmluZz0iIjsNCiAgICAgICAgICAgIGlmIChjb3VudCgkdGhp
cy0+RmFyYkdyKSE9PTApIHsNCiAgICAgICAgICAgICAgICAkRmFyYkdyX3N0
cmluZy49Jzx0cj48dGQgdmFsaWduPSJ0b3AiIGlkPSJpZDEiPjxiPkZhcmJl
bi9HciZvdW1sOyZzemxpZztlbjo8L2I+PC90ZD48dGQ+PGRpdiBzdHlsZT0i
ZmxvYXQ6IHJpZ2h0OyI+Jw0KICAgICAgICAgICAgICAgIC4kdGhpcy0+Z2V0
X2ZhcmJncl9saXN0KA0KICAgICAgICAgICAgICAgICAgICAiZmFyYmdyIiwN
CiAgICAgICAgICAgICAgICAgICAgInJhZGlvIiwNCiAgICAgICAgICAgICAg
ICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAic3dpdGNo
Ij0+dHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzZWxlY3RlZCI9
PiR0aGlzLT5zZWxlY3RlZF9GYXJiR3IsDQogICAgICAgICAgICAgICAgICAg
ICAgICAicHJpbnRfbnVtYmVyIj0+ZmFsc2UsDQogICAgICAgICAgICAgICAg
ICAgICAgICAiYXJ0aWNsZV9uYW1lIj0+JHRoaXMtPkJlemVpY2hudW5nLA0K
DQogICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICApDQog
ICAgICAgICAgICAgICAgLiI8L2Rpdj48L3RkPjwvdHI+IjsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGVjaG8gJEZhcmJHcl9zdHJpbmc7DQogICAg
ICAgIH0NCgkJLy9yZXR1cm4gJEZhcmJHcjsNCgkJfQ0KDQovKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKg0KICogIHNldCB0aGUgZmFyYmdyIHByb3BlcnR5
IG9mIGFuIGFydGljbGUNCiAqICANCiAqIA0KICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovIA0KICAgIGZ1bmN0aW9uIHNldF9mYXJiZ3IoJGZhcmJncikg
ew0KCQkkdGhpcy0+c2VsZWN0ZWRfRmFyYkdyPXVybGRlY29kZSgkZmFyYmdy
KTsNCiAgICAkdGhpcy0+aWQ9JHRoaXMtPmdlbmVyYXRlX2lkKCk7DQoJfQ0K
DQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogcmV0cmlldmUgZmFy
YmdyIGZvcm1hdGVkIGFzIGxpc3QsIHNlbGVjdGJveCBvciByYWRpb2J1dHRv
bnMNCiAqICANCiAqIA0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIA0K
ICAgIGZ1bmN0aW9uIGdldF9mYXJiZ3JfbGlzdCgkbmFtZSwgJHR5cGU9InNl
bGVjdCIsICRvcHRpb25zPWFycmF5KCkpIHsNCiAgICAgICAgLy9pZiAoJG9w
dGlvbnMpICRvcHRpb25zPWFycmF5KCk7DQogICAgICAgIC8vcHJpbnRyKCRv
cHRpb25zKTsNCiAgICAgICAgLyoNCiAgICAgICAgT3B0aW9uczogDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInN3aXRjaCI9PmJvb2xlYW46IFN3
aXRjaCBpbWFnZXMgb24gQ0xpY2s/DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInNlbGVjdGVkIj0+c3RyaW5nOiBOYW1lIG9mIHRoZSBzZWxlY3Rl
ZCBmaWVsZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaW50
X251bWJlciI9PmJvb2xlYW46IHByaW50IHRoZSBzdG9jayBjb3VudD8sDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXRfdW5hdmFpbGFi
bGUiPT5ib29sZWFuOiBSZW1vdmUgZWxlbWVudHMgd2l0aCBzdG9jayBjb3Vu
dCAwPywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tfaWQi
PT4gaWQgb2YgZm9ybSBmaWVsZCB0byBjaGVjayBmb3Igc3RvY2sgZXhjZWVk
bWVudA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnRpY2xlX25h
bWUiPT4gbmFtZSBvZiB0aGUgYXJ0aWNsZSAuLi4NCiANCiAgICAgICAgKi8N
CiAgICAgICAgZ2xvYmFsICRhcnRpY2xlX25yOw0KICAgICAgICAkc2VsZWN0
ZWQ9Im5vbmUiOw0KICAgICAgICBleHRyYWN0ICgkb3B0aW9ucyk7DQogICAg
ICAgIHN3aXRjaCAoJHR5cGUpIHsNCiAgICAgICAgICAgIGNhc2UgImxpc3Qi
Og0KICAgICAgICAgICAgICAgICRzdGFydD0iPHVsPlxuIjsNCiAgICAgICAg
ICAgICAgICAkb3BlbmVyX3N0YXJ0PSI8bGkiOw0KICAgICAgICAgICAgICAg
ICRvcGVuZXJfZW5kPSI+IjsNCiAgICAgICAgICAgICAgICAkdXNlX3ZhbHVl
PWZhbHNlOw0KICAgICAgICAgICAgICAgICRzZWxlY3Q9IiI7DQogICAgICAg
ICAgICAgICAgJGxpbmVfZW5kPSI8L2xpPlxuIjsNCiAgICAgICAgICAgICAg
ICAkZW5kPSI8L3VsPlxuIjsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgIGNhc2UgInJhZGlvIjoNCiAgICAgICAgICAgICAgICAkc3Rh
cnQ9IiI7DQogICAgICAgICAgICAgICAgJG9wZW5lcl9zdGFydD0iPGlucHV0
IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCIkbmFtZVwiICI7DQogICAgICAgICAg
ICAgICAgJG9wZW5lcl9lbmQ9Ij4iOw0KICAgICAgICAgICAgICAgICR1c2Vf
dmFsdWU9dHJ1ZTsNCiAgICAgICAgICAgICAgICAkc2VsZWN0PSIgc2VsZWN0
ZWQgIjsNCiAgICAgICAgICAgICAgICAkbGluZV9lbmQ9Ijxicj48L2lucHV0
PlxuIjsNCiAgICAgICAgICAgICAgICAkZW5kPSIiOw0KICAgICAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAic2VsZWN0IjogDQogICAg
ICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICRzdGFydD0iPHNl
bGVjdCBuYW1lPVwiJG5hbWVcIiBzdHlsZT1cIndpZHRoOiAxNGV4O1wiPlxu
IjsNCiAgICAgICAgICAgICAgICAkbGluZV9zdGFydD0iPG9wdGlvbiBuYW1l
PVwiZGVhZGJlZWZcIiAiOw0KICAgICAgICAgICAgICAgICRvcGVuZXJfZW5k
PSI+IjsNCiAgICAgICAgICAgICAgICAkdXNlX3ZhbHVlPXRydWU7DQogICAg
ICAgICAgICAgICAgJHNlbGVjdD0iIHNlbGVjdGVkICI7DQogICAgICAgICAg
ICAgICAgJGxpbmVfZW5kPSI8L29wdGlvbj5cbiI7DQogICAgICAgICAgICAg
ICAgJGVuZD0iPC9zZWxlY3Q+XG4iOw0KICAgICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICB9DQogICAgICAgICRmYXJiZ3I9JHN0YXJ0Ow0KICAgICAg
ICBmb3JlYWNoICgkdGhpcy0+RmFyYkdyIGFzICR2YWx1ZT0+JGRldGFpbHMp
IHsNCiAgICAgICAgICAgIC8vcHJpbnRyKCRkZXRhaWxzKTsNCiAgICAgICAg
ICAgIGV4dHJhY3QoJGRldGFpbHMpOyANCiAgICAgICAgICAgICRmaWxlbmFt
ZT0iLi4vaW1hZ2VzL2FydGljbGVzLyRpbWFnZSI7DQogICAgICAgICAgICAv
L2VjaG8gImZpbGVuYW1lOiAkZmlsZW5hbWUsIGltYWdlOiAkaW1hZ2U8YnI+
XG4iOw0KICAgICAgICAgICAgJGltZ19hdmFpbGFibGU9ZmlsZV9leGlzdHMo
JGZpbGVuYW1lKTsNCiAgICAgICAgICAgIGlmIChpbWdfYXZhaWxhYmxlKSB7
DQogICAgICAgICAgICAgICRzaXplPWNhbGN1bGF0ZVZpZXdEaW1lbnNpb25z
KCRmaWxlbmFtZSk7DQogICAgICAgICAgICAgICR3aWR0aD0kc2l6ZVsid2lk
dGgiXTsNCiAgICAgICAgICAgICAgJGhlaWdodD0kc2l6ZVsiaGVpZ2h0Il07
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHdpdGhvdXRfdW5h
dmFpbGFibGUgJiYgJG51bWJlcj09MCkgew0KICAgICAgICAgICAgICAgIHN3
aXRjaCAoJHR5cGUpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGlz
dCI6DQogICAgICAgICAgICAgICAgICAgIGNhc2UgInJhZGlvIjoNCiAgICAg
ICAgICAgICAgICAgICAgICAgICRzdHJpbmc9IjxzcGFuIHN0eWxlPVwiY29s
b3I6Z3JheTtcIj4kc3RyaW5nPC9zcGFuPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAic2Vs
ZWN0IjoNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDM7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgJG9uQ2xpY2s9IiI7DQogICAgICAgICAgICBpZiAo
JHN3aXRjaCAmJiAoJHR5cGUhPSJsaXN0IikgJiYgKCRpbWdfYXZhaWxhYmxl
KSkgew0KICAgICAgICAgICAgICAgICRvbkNsaWNrLj0ibG9hZF9pbWFnZSgn
Li4vaW1hZ2VzL2FydGljbGVzLyRpbWFnZScsICR3aWR0aCwgJGhlaWdodCk7
IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRudW1iZXJfc3RyPSIi
Ow0KICAgICAgICAgICAgaWYgKCRwcmludF9udW1iZXIpIHsNCiAgICAgICAg
ICAgICAgICAkbnVtYmVyX3N0cj0iICgkbnVtYmVyICR0aGlzLT5CYXNlX1Vu
aXRfb2ZfTWVhc3VyZSkgIjsNCiAgICAgICAgICAgICAgICBpZiAoJHN3aXRj
aCAmJiAoJHRweWUhPSJsaXN0IikpIHsNCiAgICAgICAgICAgICAgICAgICAg
JG9uQ2xpY2suPSIgO3NldG1heCgiIC4gKGludCkkbnVtYmVyIC4gIiwgJyRj
aGVja19pZCcpOyAiOyANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICAvLyRkaXNhYmxlZD0oJG51bWJlcj09MD8iIGRp
c2FibGVkICI6IiIpOw0KICAgICAgICAgICAgJHNlbD0oJHZhbHVlPT0kc2Vs
ZWN0ZWQ/JHNlbGVjdDoiIik7DQogICAgICAgICAgICAkaWQ9IiBpZD1cIiR2
YWx1ZVwiICI7DQogICAgICAgICAgICAvL2VjaG8gImlkOiBbJGlkXTxicj5c
biI7DQogICAgICAgICAgICAkdmFsdWU9KCR1c2VfdmFsdWU/IiB2YWx1ZT1c
IiIudXJsZW5jb2RlKCR2YWx1ZSkuIlwiIjoiIik7DQogICAgICAgICAgICAk
b25DbGlja19zdHI9KCRvbkNsaWNrIT09IiI/IiBvbkNsaWNrPVwiJG9uQ2xp
Y2tcIiI6IiIpOw0KICAgICAgICAgICAgLy9lY2hvICJvbkNsaWNrOiAkb25D
bGlja19zdHI8YnI+XG4iOw0KICAgICAgICAgICAgJGZhcmJnci49JG9wZW5l
cl9zdGFydA0KICAgICAgICAgICAgICAgIC4kaWQNCiAgICAgICAgICAgICAg
ICAuJHNlbA0KICAgICAgICAgICAgICAgIC4kZGlzYWJsZWQNCiAgICAgICAg
ICAgICAgICAuJG9uQ2xpY2tfc3RyDQogICAgICAgICAgICAgICAgLiR2YWx1
ZQ0KICAgICAgICAgICAgICAgIC4kb3BlbmVyX2VuZA0KICAgICAgICAgICAg
ICAgIC4kc3RyaW5nDQogICAgICAgICAgICAgICAgLiRudW1iZXJfc3RyDQog
ICAgICAgICAgICAgICAgLiRsaW5lX2VuZA0KICAgICAgICAgICAgICAgIDsg
ICAgICAgIA0KICAgICAgICB9DQogICAgICAgICRmYXJiZ3IuPSRlbmQNCiAg
ICAgICAgLiRtYXhfbnVtYmVyX2xpbmU7DQogICAgcmV0dXJuICRmYXJiZ3I7
DQogIH0NCg0KICBmdW5jdGlvbiBjdXN0b21lck9yZGVyQWxsb3dlZCgpIHsN
CiAgICByZXF1aXJlX29uY2UoImxvZ2luLnBocCIpOw0KICAgIHJldHVybiAo
aXNfY3VzdG9tZXIoKSAmJiAkdGhpcy0+QjJDPT0iMSIpOw0KICB9DQoNCiAg
ZnVuY3Rpb24gYnVzaW5lc3NPcmRlckFsbG93ZWQoKSB7DQogICAgcmVxdWly
ZV9vbmNlKCJsb2dpbi5waHAiKTsNCiAgICByZXR1cm4gKGxvZ2dlZF9pbigp
ICYmICR0aGlzLT5CMkI9PSIxIik7DQogIH0NCg0KICBmdW5jdGlvbiBvcmRl
ckFsbG93ZWQgKCkgew0KICAgIHJldHVybiAoJHRoaXMtPmN1c3RvbWVyT3Jk
ZXJBbGxvd2VkKCkgfHwgJHRoaXMtPmJ1c2luZXNzT3JkZXJBbGxvd2VkKCkp
Ow0KICB9DQogIA0KICBmdW5jdGlvbiBvcmRlckFsbG93ZWROb3coKSB7DQog
ICAgcmV0dXJuICgkdGhpcy0+Y3VzdG9tZXJPcmRlckFsbG93ZWQoKSB8fCAo
JHRoaXMtPmJ1c2luZXNzT3JkZXJBbGxvd2VkKCkgJiYgbG9nZ2VkX2luKCkp
KTsNCiAgfQ0KDQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQog
KiByZXRyaWV2ZSBmYXJiZ3IgYXMgc3RyaW5nDQogKiAgDQogKiANCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLyANCiAgZnVuY3Rpb24gZ2V0X2ZhcmJn
cigpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RlZF9GYXJiR3I7
DQogIH0NCiAgDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIGNv
bnZlcnQgZmFyYmdyLVN0cmluZyBpbiBhIHByb3BsZXJseSBmb3JtYXRlZCBz
dHJpbmcgDQogKiAgDQogKiANCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LyANCiAgZnVuY3Rpb24gZm9ybWF0X2ZhcmJncigkZmFyYmdyKSB7DQogICAg
JGZhcmJncl9hcnJheT1zcGxpdCgiOyIsJGZhcmJncik7DQogICAgJGZhcmJl
PSRmYXJiZ3JfYXJyYXlbMF07DQogICAgJGdyb2Vzc2U9JGZhcmJncl9hcnJh
eVsxXTsNCiAgICAkZm9ybWF0ZWRfZmFyYmdyPWh0bWxzcGVjaWFsY2hhcnMg
KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW1wbG9kZSgNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbW92ZV9lbXB0eSgNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJy
YXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2ZpcnN0KHN0cnRvbG93ZXIo
JGZhcmJlKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2ZpcnN0KHN0cnRv
bG93ZXIoJGdyb2Vzc2UpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICByZXR1cm4gJGZv
cm1hdGVkX2ZhcmJncjsNCiAgfQ0KDQogIGZ1bmN0aW9uIGNhbGN1bGF0ZVZp
ZXdEaW1lbnNpb25zKCRpbWFnZSkgew0KICAgICAgICBzZXRsb2NhbGUoTENf
QUxMLCAiQyIpOw0KICAgICAgICAkbWF4X3dpZHRoID0gMTUwOw0KICAgICAg
ICAkbWF4X2hlaWdodCA9IDIwMDsNCiAgICAgICAgDQogICAgICAgICRzaXpl
PWdldGltYWdlc2l6ZSgkaW1hZ2UpOw0KICAgICAgICAkd2lkdGg9JHNpemVb
MF07DQogICAgICAgICRoZWlnaHQ9JHNpemVbMV07DQogICAgICAgIA0KICAg
ICAgICAkZmFjdG9yID0gbWluKCRtYXhfd2lkdGgvJHdpZHRoLCAkbWF4X2hl
aWdodC8kaGVpZ2h0KTsNCiAgICAgICAgaWYgKCRmYWN0b3IgPCAxKSB7DQog
ICAgICAgICAgJHdpZHRoICo9ICRmYWN0b3I7DQogICAgICAgICAgJGhlaWdo
dCAqPSAkZmFjdG9yOw0KICAgICAgICB9DQogICAgICAgICRyZXQgPSBhcnJh
eSgid2lkdGgiPT4oc3RyaW5nKSR3aWR0aCwgImhlaWdodCI9PihpbnQpJGhl
aWdodCk7DQogICAgICAgIC8vcHJpbnRyKCRyZXQpOw0KICAgICAgICByZXR1
cm4gKCRyZXQpOw0KICB9DQoNCg0KDQo/Pg0K
====

reply via email to

[Prev in Thread] Current Thread [Next in Thread]