JIRAPackage
5.0.16
5.0.x
JIRA::REST
REST::Client
Time::Piece
catWorkX GmbH
http://www.catworkx.de
Ein Modul, um Tickets in ein JIRA zu eskalieren.
A module giving the option to escalate tickets into JIRA.
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJz
aW9uPSIxLjAiIGluaXQ9IkNvbmZpZyI+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6
TW9kdWxlIyMjQWdlbnRUaWNrZXRKSVJBIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAg
IDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RnJvbnRlbmRNb2R1bGVSZWdpc3RyYXRpb24gZm9yIHRo
ZSBUaWNrZXRKSVJBIG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBM
YW5nPSJkZSI+RnJvbnRlbmRNb2R1bFJlZ2lzdHJhdGlvbiBmw7xyIGRhcyBUaWNrZXRKSVJBIE1v
ZHVsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxT
dWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAg
ICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAg
ICAgICAgIDxUaXRsZT5UaWNrZXRKSVJBPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlw
dGlvbj5UaWNrZXRKSVJBPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1l
PlRpY2tldEpJUkE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+
CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFt
ZT0iVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzkwMC1KSVJBIiBSZXF1aXJlZD0iMCIg
VmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+TW9kdWxlIHRvIHNob3dz
IGEgSklSQS1saW5rIGluIG1lbnUgb2YgdGhlIHRpY2tldCB6b29tLjwvRGVzY3JpcHRpb24+CiAg
ICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5NaXQgZGllc2VtIE1vZHVsIHdpcmQgZGVyIEpJ
UkEtTGluayBpbiBkZXIgTGlua2xlaXN0ZSBkZXIgVGlja2V0YW5zaWNodCBhbmdlemVpZ3QuPC9E
ZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3Vw
PkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8
U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1v
ZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldE1lbnU6OkpJUkE8L0l0ZW0+CiAgICAg
ICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkpJUkE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8
SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRUaWNrZXRKSVJBPC9JdGVtPgogICAgICAgICAgICAgICAg
PEl0ZW0gS2V5PSJUYXJnZXQiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwv
U2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEpJ
UkEjIyNVUkwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExh
bmc9ImVuIj5UaGUgVVJMIG9mIHRoZSBKSVJBIHNlcnZlciwgaW5jbHVkZSB0aGUgcHJvdG9jb2wg
YW5kIHRoZSBwb3J0IGlmIHJlcXVpcmVkIGEgd2VsbCBhcyB0aGUgYmFzZSBpZiBhbnkuPC9EZXNj
cmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRpZSBVUkwgZGVzIEpJUkEg
U2VydmVycywgaW5rbHVzaXZlIFByb3Rva29sbCBzb3dpZSBQb3J0IHVuZCBQZmFkLCBzb2Zlcm4g
enV0cmVmZmVuZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAg
ICAgICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAg
ICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+aHR0cDovL2NhdC1wYy0wNTAuY2F0d29ya3guZGU6
ODA4MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxD
b25maWdJdGVtIE5hbWU9IlRpY2tldEpJUkEjIyNQYXRoIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEi
PgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+VGhlIHBhdGggb2YgdGhlIFJFU1QgQVBJ
LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZXIgUGZhZCBk
ZXIgUkVTVCBBUEkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAg
ICAgICAgPFN1Ykdyb3VwPkNvcmU6OlJFU1Q8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgog
ICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPi9yZXN0L2FwaS8yLzwvU3RyaW5nPgogICAgICAg
IDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tl
dEpJUkEjIyNVc2VyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlv
biBMYW5nPSJlbiI+VGhlIHVzZXJuYW1lIHRvIHVzZSB3aGVuIGxvZ2dpbmcgaW4gaW50byBKSVJB
IGlzc3Vlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVy
IEJlbnV0emVybmFtZSBtaXQgZGVtIHNpY2ggYmVpbSBKSVJBIGFuZ2VtZWxkZXQgd2lyZC48L0Rl
c2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+
Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJp
bmcgUmVnZXg9IiI+b3RyczwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmln
SXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEpJUkEjIyNQYXNzd29yZCIgUmVxdWly
ZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlRoZSBwYXNz
d29yZCB0byB1c2Ugd2hlbiBsb2dnaW5nIGluIGludG8gSklSQSBpc3N1ZXMuPC9EZXNjcmlwdGlv
bj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRhcyBQYXNzd29ydCBtaXQgZGVtIHNp
Y2ggYmVpbSBKSVJBIGFuZ2VtZWxkZXQgd2lyZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91
cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAg
ICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+b3RyczwvU3RyaW5n
PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5h
bWU9IlRpY2tldEpJUkEjIyNSZXBvcnRlciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAg
ICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlRoZSBuYW1lIG9mIHRoZSByZXBvcnRlciB0byB1c2Ug
Zm9yIHRoZSBuZXcgSklSQSBpc3N1ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRp
b24gTGFuZz0iZGUiPkRlciBOYW1lIGRlcyBSZXBvcnRlcnMgZsO8ciBuZXVlIEpJUkEgSXNzdWVz
LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJH
cm91cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAg
PFN0cmluZyBSZWdleD0iIj5vdHJzPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9D
b25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0SklSQSMjI0Fzc2lnbmVlIiBS
ZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+VGhl
IG5hbWUgb2YgdGhlIGFzc2lnbmVlIHRvIHVzZSBmb3IgdGhlIG5ldyBKSVJBIGlzc3Vlcy48L0Rl
c2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVyIE5hbWUgZGVzIEFz
c2lnbmVlIGbDvHIgbmV1ZSBKSVJBIElzc3Vlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91
cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAg
ICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+YWRtaW48L1N0cmlu
Zz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBO
YW1lPSJKSVJBOjpOb0Fzc2lnbmVlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxE
ZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgZW5hYmxlZCwgdGhlIGFzc2lnbmVlIGlzbid0IHNlbnQg
dG8gSklSQS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAgICAg
ICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAg
ICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9
IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9
IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAg
ICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJU
aWNrZXRKSVJBIyMjSW5jb21pbmdVc2VyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAg
IDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+VGhlIHVzZXJuYW1lIHRoYXQgaXMgdXNlZCB3aGVuIEpJ
UkEgbG9ncyBpbnRvIE9UUlMgdG8gdXBkYXRlIHRpY2tldHMuPC9EZXNjcmlwdGlvbj4KICAgICAg
ICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlciBCZW51dHplcm5hbWUgbWl0IGRlbSBzaWNoIEpJ
UkEgYW0gT1RSUyBhbm1lbGRldCwgdW0gVGlja2V0cyB6dSBha3R1YWxpc2llcmVuLjwvRGVzY3Jp
cHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3Jl
OjpSRVNUPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBS
ZWdleD0iIj5qaXJhPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVt
PgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0SklSQSMjI1dvcmtmbG93Q2xvc2VBY3Rpb25O
YW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJl
biI+VGhlIG5hbWUgb2YgdGhlIGNsb3NlIGlzc3VlIHdvcmtmbG93IGFjdGlvbiAoZGVmYXVsdDog
IkNsb3NlIElzc3VlIiwgcGF5IGF0dGVudGlvbiB0byB0aGUgSklSQSBsYW5ndWFnZSBvZiB1c2Vy
IGluIFRpY2tldEpJUkEjIyNVc2VyLCBFbmdsaXNoKFVLKSB3b3JrcykuPC9EZXNjcmlwdGlvbj4K
ICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlciBOYW1lIGRlciBBa3Rpb24genVtIFNj
aGxpZcOfZW4gdm9uIElzc3VlcyAoU3RhbmRhcmQ6ICJDbG9zZSBJc3N1ZSIsIGFjaHRlbiBTaWUg
YXVmIGRpZSBKSVJBIFNwcmFjaGUgZGVzIEJlbnV0ZXJzIGluIFRpY2tldEpJUkEjIyNVc2VyLCBF
bmdsaXNoKFVLKSBpc3QgZW1wZmVobGVuc3dlcnQpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdy
b3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4K
ICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5DbG9zZSBJc3N1ZTwvU3RyaW5n
PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5h
bWU9IlRpY2tldEpJUkEjIyNPVFJTVGlja2V0QWxsb3dlZFN0YXRlczRDcmVhdGUiIFJlcXVpcmVk
PSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5UaGUgbmFtZXMg
b2YgdGhlIE9UUlMgVGlja2V0IHN0YXRlcyB0aGF0IGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhIEpJ
UkEgSXNzdWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRp
ZSBOYW1lbiBkZXIgT1RSUyBUaWNrZXQgWnVzdMOkbmRlIGRpZSBkYXMgRXJ6ZXVnZW4gZWluZXMg
SklSQSBJc3N1ZSB6dWxhc3Nlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9H
cm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNl
dHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+bmV3LG9wZW4sbWVyZ2VkLHBlbmRpbmcgcmVtaW5k
ZXI8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29u
ZmlnSXRlbSBOYW1lPSJUaWNrZXRKSVJBIyMjT1RSU1RpY2tldEFsbG93ZWRTdGF0ZXM0Q2xvc2Ui
IFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5U
aGUgbmFtZXMgb2YgdGhlIE9UUlMgVGlja2V0IHN0YXRlcyB0aGF0IGFsbG93IHRoZSBjbG9zaW5n
IG9mIGEgSklSQSBJc3N1ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5n
PSJkZSI+RGllIE5hbWVuIGRlciBPVFJTIFRpY2tldCBadXN0w6RuZGUgZGllIGRhcyBTY2hsaWXD
n2VuIGVpbmVzIEpJUkEgSXNzdWUgenVsYXNzZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3Jv
dXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlJFU1Q8L1N1Ykdyb3VwPgog
ICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPmNsb3NlZCBzdWNjZXNzZnVsLGNs
b3NlZCB1bnN1Y2Nlc3NmdWwscmVtb3ZlZDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAg
IDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEpJUkEjIyNPVFJTVGlj
a2V0QWxsb3dlZFN0YXRlczRVcGRhdGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAg
PERlc2NyaXB0aW9uIExhbmc9ImVuIj5UaGUgbmFtZXMgb2YgdGhlIE9UUlMgVGlja2V0IHN0YXRl
cyB0aGF0IGFsbG93IHVwZGF0aW5nIHRoZSBKSVJBIElzc3VlLjwvRGVzY3JpcHRpb24+CiAgICAg
ICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EaWUgTmFtZW4gZGVyIE9UUlMgVGlja2V0IFp1c3TD
pG5kZSBkaWUgZGFzIEFrdHVhbGlzaWVyZW4gZWluZXMgSklSQSBJc3N1ZSB6dWxhc3Nlbi48L0Rl
c2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+
Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJp
bmc+bmV3LG9wZW4sbWVyZ2VkLHBlbmRpbmcgcmVtaW5kZXI8L1N0cmluZz4KICAgICAgICA8L1Nl
dHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkV2
ZW50TW9kdWxlUG9zdCMjIzAwMS1UaWNrZXRDbG9zZUpJUkEiIFJlcXVpcmVkPSIwIiBWYWxpZD0i
MSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5VcGRhdGUgSklSQSBvbmNlIHRoZSB0
aWNrZXQgaXMgY2xvc2VkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9
ImRlIj5EYXMgSklSQSBuYWNoIGRlbSBTY2hsaWXDn2VuIGRlcyBUaWNrZXRzIGFrdHVhbGlzaWVy
ZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1
Ykdyb3VwPkNvcmU6OlRpY2tldDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAg
ICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lz
dGVtOjpUaWNrZXQ6OkV2ZW50OjpDbG9zZUpJUkFJc3N1ZTwvSXRlbT4KICAgICAgICAgICAgICAg
IDxJdGVtIEtleT0iRXZlbnQiPlRpY2tldFN0YXRlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICA8
L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0
ZW0gTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwMDEtVGlja2V0Q3JlYXRlSklSQSIg
UmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkNy
ZWF0ZSBKSVJBIElzc3VlIG9uY2UgdGhlIHRpY2tldCBpcyBwdXNoZWQgaW50byBhIHNwZWNpZmlj
IHN0YXRlLiBTZWUgVGlja2V0SklSQSMjI09UUlNUaWNrZXRBbGxvd2VkU3RhdGVzNENyZWF0ZSBm
b3IgZGV0YWlscy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+
RXJ6ZXVnZSBkYXMgSklSQSBJc3N1ZSBzb2JhbGQgZGFzIE9UUlMgVGlja2V0IGluIGVpbmVtIGJl
c3RpbW10ZW4gWnVzdGFuZCBhbmdla29tbWVuIGlzdC4gRsO8ciBEZXRhaWxzLCBzaWVoZSBUaWNr
ZXRKSVJBIyMjT1RSU1RpY2tldEFsbG93ZWRTdGF0ZXM0Q3JlYXRlLjwvRGVzY3JpcHRpb24+CiAg
ICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXQ8
L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAg
ICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6
Q3JlYXRlSklSQUlzc3VlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+
VGlja2V0U3RhdGVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1Nl
dHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkV2
ZW50TW9kdWxlUG9zdCMjIzAwMS1UaWNrZXRKSVJBVXBkYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9
IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+VXBkYXRlIEpJUkEgb25jZSB0aGUg
dGlja2V0IHVwZGF0ZWQgdGhlIHRpdGxlIGZpZWxkLiBEdXBsaWNhdGUgdGhpcyBlbnRyeSBmb3Ig
KmFsbCogZmllbGRzIHlvdSB3YW50IHRvIHN5bmMgaW50byBKSVJBLjwvRGVzY3JpcHRpb24+CiAg
ICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EYXMgSklSQSBiZWltIGFrdHVhbGlzaWVyZW4g
ZGVzIEZlbGRlcyAidGl0bGUiIGViZW5mYWxscyBha3R1YWxpc2llcmVuLiBEaWVzZXIgRWludHJh
ZyBtdXNzIGbDvHIgKmplZGVzKiB6dSDDvGJlcnRyYWdlbmRlIEZlbGQgZXh0cmEgYW5nZWxlZ3Qg
d2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAg
IDxTdWJHcm91cD5Db3JlOjpUaWNrZXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAg
ICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6
OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VXBkYXRlSklSQUlzc3VlPC9JdGVtPgogICAgICAgICAg
ICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+VGlja2V0VGl0bGVVcGRhdGV8VGlja2V0Q3VzdG9tZXJV
cGRhdGV8VGlja2V0RnJlZVRleHRVcGRhdGV8VGlja2V0T3duZXJVcGRhdGV8VGlja2V0RHluYW1p
Y0ZpZWxkVXBkYXRlX2ZpZWxkMDAxfFRpY2tldER5bmFtaWNGaWVsZFVwZGF0ZV9maWVsZDAwMnxU
aWNrZXREeW5hbWljRmllbGRVcGRhdGVfZmllbGQwMDN8VGlja2V0RHluYW1pY0ZpZWxkVXBkYXRl
X2ZpZWxkMDA0fFRpY2tldER5bmFtaWNGaWVsZFVwZGF0ZV9maWVsZDAwNXxUaWNrZXREeW5hbWlj
RmllbGRVcGRhdGVfZmllbGQwMTB8VGlja2V0RHluYW1pY0ZpZWxkVXBkYXRlX2ZpZWxkMDExPC9J
dGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJ
dGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwMDEt
QXJ0aWNsZVRvSklSQSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRp
b24gTGFuZz0iZW4iPkNyZWF0ZSBhIEpJUkEgQ29tbWVudCBvbmNlIGFuIGFydGljbGUgaXMgY3Jl
YXRlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RXJ6ZXVn
ZSBlaW5lbiBKSVJBIGtvbW1lbnRhciBzb2JhbGQgZWluIE9UUlMgQXJ0aWtlbCBlcnpldWd0IHd1
cmRlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxT
dWJHcm91cD5Db3JlOjpUaWNrZXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAg
ICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5
c3RlbTo6VGlja2V0OjpFdmVudDo6QWRkQXJ0aWNsZVRvSklSQUlzc3VlPC9JdGVtPgogICAgICAg
ICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+QXJ0aWNsZUNyZWF0ZXxBcnRpY2xlVXBkYXRlPC9J
dGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJ
dGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0SklSQSMjI1Byb2plY3QiIFJlcXVpcmVk
PSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5UaGUgbmFtZSBv
ZiB0aGUgcHJvamVjdCB0byB1c2UgZm9yIHRoZSBuZXcgSklSQSBpc3N1ZXMuPC9EZXNjcmlwdGlv
bj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlciBOYW1lIGRlcyBQcm9qZWt0ZXMg
ZsO8ciBuZXVlIEpJUkEgSXNzdWVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8
L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4KICAgICAgICA8
U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5PVFJTPC9TdHJpbmc+CiAgICAg
ICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlj
a2V0SklSQSMjI0lzc3VlVHlwZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVz
Y3JpcHRpb24gTGFuZz0iZW4iPlRoZSBuYW1lIG9mIHRoZSB0eXBlIHRvIHVzZSBmb3IgdGhlIG5l
dyBKSVJBIGlzc3Vlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJk
ZSI+RGVyIE5hbWUgZGVzIFR5cCBmw7xyIG5ldWUgSklSQSBJc3N1ZXMuPC9EZXNjcmlwdGlvbj4K
ICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlJFU1Q8
L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIi
PkJ1ZzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxD
b25maWdJdGVtIE5hbWU9IlRpY2tldEpJUkEjIyNKSVJBLURhdGVUaW1lRm9ybWF0IiBSZXF1aXJl
ZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGF0ZSBmb3Jt
YXQgdXNlZCBpbiBKSVJBLCBlLmcuOiBKSVJBOiBkZC9NTU0veXkgaDptbSBhID0gT1RSUyAlZC8l
Yi8leSAlSTolTSAlcDwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRl
Ij5EYXMgdm9uIEpJUkEgYWt6ZXB0aWVydGUgRGF0dW1zZm9ybWF0LCB6LkIuOiBKSVJBOiBkZC9N
TU0veXkgaDptbSBhID0gT1RSUyAlZC8lYi8leSAlSTolTSAlcDwvRGVzY3JpcHRpb24+CiAgICAg
ICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpSRVNUPC9TdWJH
cm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4lZC8l
Yi8leSAlSTolTSAlcDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRl
bT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEpJUkEjIyNKSVJBLURhdGVGb3JtYXQiIFJl
cXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EYXRl
IGZvcm1hdCB1c2VkIGluIEpJUkEsIGUuZy46IEpJUkE6IGRkL01NTS95eSA9IE9UUlMgJWQvJWIv
JXk8L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGFzIHZvbiBK
SVJBIGFremVwdGllcnRlIERhdHVtc2Zvcm1hdCwgei5CLjogSklSQTogZGQvTU1NL3l5ID0gT1RS
UyAlZC8lYi8leTwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAg
ICAgIDxTdWJHcm91cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAg
ICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4lZC8lYi8leTwvU3RyaW5nPgogICAgICAgIDwvU2V0
dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEpJUkEj
IyNPVFJTLUpJUkEtRmllbGRNYXBwaW5nIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAg
IDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+TWFwcGluZyBmcm9tIE9UUlMgZmllbGRzIHRvIEpJUkEg
RmllbGRzLiBLZXk6IE9UUlM7IENvbnRlbnQ6IEpJUkEuIFByZWZpeGVzOiAic3RkOiIgPSBzdGFu
ZGFyZCBmaWVsZDsgImR5bjoiID0gT1RSUyBkeW5hbWljIGZpZWxkOyAiY3VzdDoiID0gSklSQSBj
dXN0b20gZmllbGQ7ICJjYWxsOiIgPSBPVFJTL0pJUkEgbWFwcGluZyBjYWxsIHdpdGggZnVsbCBQ
ZXJsIG1vZHVsZXBhdGggUGtnOjpTdWIsZnVuYyAoZS5nLiBNSU1FOjpCYXNlNjQsZW5jb2RlX2Jh
c2U2NCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkFiYmls
ZHVuZyBkZXIgT1RSUyBGZWxkZXJuIHp1IGRlbiBKSVJBIEZlbGRlcm4uIFNjaGzDvHNzZWw6IE9U
UlM7IEluaGFsdDogSklSQS4gUHLDpGZpeGU6ICJzdGQ6IiA9IFN0YW5kYXJkIEZlbGQ7ICJkeW46
IiA9IE9UUlMgRHluYW1pYyBGZWxkOyAiY3VzdDoiID0gSklSQSBDdXN0b20gRmVsZDsgImNhbGw6
IiA9IE9UUlMvSklSQSBNYXBwaW5nLUZ1bmt0aW9uc2F1ZnJ1ZiBtaXQgdm9sbGVtIFBlcmwgTW9k
dWxlcGZhZCBQa2c6OlN1YixmdW5jICh6LkIuIE1JTUU6OkJhc2U2NCxlbmNvZGVfYmFzZTY0KS48
L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3Jv
dXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxI
YXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJkeW46ZHluYW1pY0ZpZWxkMSI+Y3VzdDpj
dXN0b21GaWVsZDE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImR5bjpqaXJhX3By
aW8iPnN0ZDpwcmlvcml0eTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ic3RkOlRp
dGxlIj5zdGQ6c3VtbWFyeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ic3RkOlF1
ZXVlIj5jdXN0OnF1ZXVlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJtYXA6TW9k
OjpTdWJNb2Q6OmZ1bmMiPmN1c3Q6ZmllbGQxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0g
S2V5PSJkeW46ZHluYW1pY0ZpZWxkMiI+bWFwOk1vZDo6U3ViTW9kLGZ1bmMyPC9JdGVtPgogICAg
ICAgICAgICAgICAgPEl0ZW0gS2V5PSJtYXA6TW9kOjpTdWJNb2Q6OmZ1bmMzIj5tYXA6TW9kOjpT
dWJNb2QsZnVuYzQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+
CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJKSVJBOjpPVFJTVGlja2V0
SURGaWVsZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFu
Zz0iZW4iPlRoZSBJRCBvZiB0aGUgY3VzdG9tIGZpZWxkIGluIEpJUkEgdGhhdCBzdG9yZXMgdGhl
IE9UUlMgdGlja2V0IElELjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9
ImRlIj5EaWUgSUQgZGVzIEZlbGRlcyBpbiBKSVJBLCBkYXMgZGllIE9UUlMtVGlja2V0SUQgc3Bl
aWNoZXJ0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAg
IDxTdWJHcm91cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAg
ICAgICAgPFN0cmluZyBSZWdleD0iIj4xMDAwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4K
ICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkpJUkE6OkNhY2hlVFRMIiBS
ZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+VGlt
ZVRvTGl2ZSBmb3IgQ2FjaGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFu
Zz0iZGUiPlRpbWVUb0xpdmUgZsO8ciBDYWNoZTwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3Vw
PkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4KICAg
ICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4yMDAwMDwvU3RyaW5n
PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5h
bWU9IkpJUkE6OlNTTFZlcmlmeSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVz
Y3JpcHRpb24gTGFuZz0iZW4iPlZlcmlmeSBob3N0bmFtZSBmb3IgU1NMIGNvbm5lY3Rpb25zLjwv
RGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5WZXJpZml6aWVyZSBk
ZW4gSG9zdG5hbWVuIGJlaSBTU0wtVmVyYmluZHVuZ2VuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8
R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlJFU1Q8L1N1Ykdyb3Vw
PgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgog
ICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgog
ICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4K
ICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVt
PgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iSklSQTo6RGVidWciIFJlcXVpcmVkPSIxIiBWYWxpZD0i
MSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5FbmFibGVzIERlYnVnZ2luZyBmb3Ig
SklSQSBwYWNrYWdlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRl
Ij5Ba3RpdmllcnQgZGFzIERlYnVnZ2luZyBmw7xyIGRhcyBKSVJBLVBha2V0PC9EZXNjcmlwdGlv
bj4KICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1
Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9
IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9J
dGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwv
SXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25m
aWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iSklSQTo6U2hvd0RpYWxvZyIgUmVxdWlyZWQ9
IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93
IGRpYWxvZyB3aGVuIGlzc3VlIGluIEpJUkEgaXMgYWJvdXQgdG8gYmUgY3JlYXRlZC48L0Rlc2Ny
aXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29y
ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0
ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+
Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+
WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8
L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJKSVJBOjpUcmFuc2ZlclRpY2tldEhp
c3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5z
bGF0YWJsZT0iMSI+SWYgc2V0IHRvICdvbmx5IGZpcnN0IGFydGljbGUnLCBvbmx5IHRoZSBmaXJz
dCBhcnRpY2xlIGlzIHNlbnQgdG8gSklSQSBvbiBpc3N1ZSBjcmVhdGlvbi4gSWYgc2V0IHRvICdh
bGwgYXJ0aWNsZXMnLCBhbGwgZXhpc3RpbmcgYXJ0aWNsZXMgd2lsbCBiZSBzZW50IHRvIEpJUkEu
PC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdy
b3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9u
IFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIiBUcmFuc2xhdGFi
bGU9IjEiPm9ubHkgZmlyc3QgYXJ0aWNsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtl
eT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5hbGwgYXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgIDwv
T3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJ
dGVtIE5hbWU9IkpJUkE6OlNob3dQcm9qZWN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAg
ICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgUHJvamVjdCBmaWVsZCBpbiBj
cmVhdGUgZGlhbG9nLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgog
ICAgICAgIDxTdWJHcm91cD5DcmVhdGVJc3N1ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+
CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRl
bSBLZXk9Ii0xIiBUcmFuc2xhdGFibGU9IjEiPkhpZGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8
SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+UmVhZG9ubHk8L0l0ZW0+CiAgICAgICAgICAg
ICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdGFibGU8L0l0ZW0+CiAgICAg
ICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAg
IDxDb25maWdJdGVtIE5hbWU9IkpJUkE6OlNob3dBc3NpZ25lZSIgUmVxdWlyZWQ9IjAiIFZhbGlk
PSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IEFzc2lnbmVl
IGZpZWxkIGluIGNyZWF0ZSBkaWFsb2cuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SklS
QTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNyZWF0ZUlzc3VlPC9TdWJHcm91cD4KICAgICAg
ICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAg
ICAgICAgIDxJdGVtIEtleT0iLTEiIFRyYW5zbGF0YWJsZT0iMSI+SGlkZTwvSXRlbT4KICAgICAg
ICAgICAgICAgIDxJdGVtIEtleT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5SZWFkb25seTwvSXRlbT4K
ICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0YWJsZTwv
SXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25m
aWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iSklSQTo6U2hvd0F1dG9tYXRpY1VzZXIiIFJl
cXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0i
MSI+U2hvdyBhdXRvbWF0aWMgdXNlciBpbiBBc3NpZ25lZSBmaWVsZCBpbiBjcmVhdGUgZGlhbG9n
LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJH
cm91cD5DcmVhdGVJc3N1ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAg
IDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRy
YW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRy
YW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8
L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJKSVJBOjpT
aG93SXNzdWVUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlv
biBUcmFuc2xhdGFibGU9IjEiPlNob3cgaXNzdWUgdHlwZSBmaWVsZCBpbiBjcmVhdGUgZGlhbG9n
LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJH
cm91cD5DcmVhdGVJc3N1ZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAg
IDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ii0xIiBU
cmFuc2xhdGFibGU9IjEiPkhpZGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAi
IFRyYW5zbGF0YWJsZT0iMSI+UmVhZG9ubHk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBL
ZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdGFibGU8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0
aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVt
IE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFRpY2tldEpJUkFEaWFsb2ciIFJlcXVpcmVk
PSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Gcm9udGVuZE1v
ZHVsZVJlZ2lzdHJhdGlvbiBmb3IgdGhlIFRpY2tldEpJUkEgZGlhbG9nIG1vZHVsZS48L0Rlc2Ny
aXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RnJvbnRlbmRNb2R1bFJlZ2lz
dHJhdGlvbiBmw7xyIGRhcyBUaWNrZXRKSVJBLURpYWxvZyBNb2R1bC48L0Rlc2NyaXB0aW9uPgog
ICAgICAgIDxHcm91cD5KSVJBPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFn
ZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAg
ICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+VGlja2V0
SklSQTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+VGlja2V0SklSQTwvRGVz
Y3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5UaWNrZXRKSVJBPC9OYXZCYXJO
YW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNj
cmlwdD5KSVJBLkF1dG9jb21wbGV0ZS5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwv
TG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGlu
Zz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpPdXRw
dXQ6OkZpbHRlckVsZW1lbnRQb3N0IyMjT3V0cHV0RmlsdGVyQXJ0aWNsZU1lbnVPVFJTVG9KSVJB
TGluayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNs
YXRhYmxlPSIxIj5BZGQgYSBsaW5rIGluIHRoZSBhcnRpY2xlIG1lbnUgdG8gY3JlYXRlIGlzc3Vl
IGluIEpJUkEgZm9yIHRoZSBhcnRpY2xlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJ
UkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5PdXRwdXRGaWx0ZXI8L1N1Ykdyb3VwPgogICAg
ICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtl
eT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyRWxlbWVudFBvc3Q6Ok9UUlNU
b0pJUkFMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZW1wbGF0ZXMiPgog
ICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBL
ZXk9IkFnZW50VGlja2V0Wm9vbSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+
CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1Nl
dHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJKSVJBOjpQcm9q
ZWN0V2hpdGVsaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlv
biBUcmFuc2xhdGFibGU9IjEiPkhlcmUgeW91IGNhbiBkZWZpbmUgYSBsaXN0IG9mIHJlZ3VsYXIg
ZXhwcmVzc2lvbnMuIE9ubHkgcHJvamVjdCBrZXlzIHRoYXQgbWF0Y2hlcyBhdCBsZWFzdCBvbmUg
b2YgdGhvc2UgcmVndWxhciBleHByZXNzaW9ucyBhcmUgc2hvd24gaW4gdGhlIHByb2plY3QgZHJv
cGRvd24gKEpJUkEgZGlhbG9nKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJBPC9H
cm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAgPFNl
dHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8
L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJKSVJBOjpQ
cm9qZWN0QmxhY2tsaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlw
dGlvbiBUcmFuc2xhdGFibGU9IjEiPkhlcmUgeW91IGNhbiBkZWZpbmUgYSBsaXN0IG9mIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMuIFByb2plY3Qga2V5cyB0aGF0IG1hdGNoZXMgYXQgbGVhc3Qgb25lIG9m
IHRob3NlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHByb2plY3Qg
ZHJvcGRvd24gKEpJUkEgZGlhbG9nKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5KSVJB
PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6UkVTVDwvU3ViR3JvdXA+CiAgICAgICAg
PFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAg
ICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJKSVJB
OjpJc3N1ZVNlYXJjaE1heFJlc3VsdHMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAg
PERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgaXNzdWVzIHNo
b3duIGluIHRoZSBhdXRvY29tcGxldGUgZHJvcGRvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8
R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlJFU1Q8L1N1Ykdyb3Vw
PgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPjMwMDwvU3Ry
aW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVt
IE5hbWU9IkpJUkE6Oklzc3VlU2VhcmNoU3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgog
ICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SGVyZSB5b3UgY2FuIGRlZmluZSBhIGxpc3Qg
b2Ygc3RhdGVzIHRvIHJlc3RyaWN0IHRoZSBpc3N1ZXMgdGhhdCBhcmUgc2VhcmNoZWQgZm9yLjwv
RGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91
cD5Db3JlOjpSRVNUPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFy
cmF5PgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmln
SXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjMTAx
LVNlbmRBdHRhY2htZW50cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3Jp
cHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZW5kIGF0dGFjaG1lbnRzIHRvIEpJUkEuPC9EZXNjcmlw
dGlvbj4KICAgICAgICA8R3JvdXA+SklSQTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6
OlRpY2tldDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgog
ICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6
OkV2ZW50OjpTZW5kQXR0YWNobWVudHNUb0pJUkFJc3N1ZTwvSXRlbT4KICAgICAgICAgICAgICAg
IDxJdGVtIEtleT0iRXZlbnQiPkF0dGFjaG1lbnRXcml0ZTwvSXRlbT4KICAgICAgICAgICAgPC9I
YXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVt
IE5hbWU9IlRpY2tldDo6Q3VzdG9tTW9kdWxlIyMjMDA1LUF0dGFjaG1lbnRFdmVudHMiIFJlcXVp
cmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+
T3ZlcnJpZGVzIGFuZCBzb21lIG1ldGhvZHMgd2l0aCByZWdhcmRzIHRvIGF0dGFjaG1lbnRzLjwv
RGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkpJUkE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91
cD5Db3JlOjpUaWNrZXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8
U3RyaW5nIFJlZ2V4PSIiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkN1c3RvbTo6QXR0YWNobWVu
dEV2ZW50czwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KPC9v
dHJzX2NvbmZpZz4K
IyAgLS0KIyAgS2VybmVsL0xhbmd1YWdlL2RlX0FnZW50VGlja2V0SklSQS5wbSAtIGxhbmd1YWdl
IG1vZHVsZQojICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNSBjYXRXb3JrWCBHbWJIIGh0dHA6Ly93
d3cuY2F0d29ya3guZGUKIyAgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2Vp
dmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Lgoj
IC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0FnZW50VGlja2V0SklSQTsKCnVzZSBz
dHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9
IHNoaWZ0OwoKICAgIG15ICRMYW5nID0gJFNlbGYtPntUcmFuc2xhdGlvbn07CgogICAgJExhbmct
PnsnQSBuZXcgSklSQSBJc3N1ZSBoYXMgYmVlbiBjcmVhdGVkJ30gPSAnRWluIG5ldWVzIEpJUkEg
SXNzdWUgd3VyZGUgZXJzdGVsbHQnOwogICAgJExhbmctPnsnQSBKSVJBIElzc3VlIGNvdWxkIG5v
dCBiZSBjcmVhdGVkJ30gPSAnRWluIEpJUkEgSXNzdWUga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdl
cmRlbic7CiAgICAkTGFuZy0+eydUbyB0aGUgaXNzdWUgKEpJUkEpJ30gICAgICAgICAgICAgICA9
ICdadW0gSklSQSBJc3N1ZSc7CiAgICAkTGFuZy0+eydCYWNrIHRvIHRoZSB0aWNrZXQgKE9UUlMp
J30gICAgICAgICA9ICdadXLDvGNrIHp1bSBPVFJTIFRpY2tldCc7CiAgICAkTGFuZy0+eydUaWNr
ZXQgbm90IG9wZW4uJ30gICAgICAgICAgICAgICAgICA9ICdUaWNrZXQgbmljaHQgaW0gb2ZmZW5l
biBadXN0YW5kLic7CiAgICAkTGFuZy0+eydKSVJBIHRvIE9UUlMnfSAgICAgICAgICAgICAgICAg
ICAgICA9ICdKSVJBIG5hY2ggT1RSUyc7CiAgICAkTGFuZy0+eydUYWtlIHRoaXMgdGlja2V0IGJh
Y2sgZnJvbSBKSVJBJ30gICA9ICdEaWVzZXMgVGlja2V0IGF1cyBKSVJBIHp1csO8Y2tob2xlbic7
CiAgICAkTGFuZy0+eydPVFJTIHRvIEpJUkEnfSAgICAgICAgICAgICAgICAgICAgICA9ICdPVFJT
IG5hY2ggSklSQSc7CiAgICAkTGFuZy0+eydFc2NhbGF0ZSB0aGlzIHRpY2tldCB0byBKSVJBJ30g
ICAgICA9ICdEaWVzZXMgVGlja2V0IG5hY2ggSklSQSBlc2thbGllcmVuJzsKICAgICRMYW5nLT57
J0NyZWF0ZSBpc3N1ZSBpbiBKSVJBJ30gICAgICAgICAgICAgID0gJ1ZvcmdhbmcgaW4gSklSQSBl
cnN0ZWxsZW4nOwogICAgJExhbmctPnsnUHJvamVjdCd9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAnUHJvamVrdCc7CiAgICAkTGFuZy0+eydBc3NpZ25lZSd9ICAgICAgICAgICAgICAgICAg
ICAgICAgICA9ICdCZWFyYmVpdGVyJzsKICAgICRMYW5nLT57J0lzc3VlVHlwZSd9ICAgICAgICAg
ICAgICAgICAgICAgICAgID0gJ1ZvcmdhbmdzdHlwJzsKICAgICRMYW5nLT57J0lzc3VlJ30gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1ZvcmdhbmcnOwogICAgJExhbmctPnsnQ3JlYXRl
IG5ldyBpc3N1ZSd9ICAgICAgICAgICAgICAgICAgPSAnTmV1ZW4gVm9yZ2FuZyBlcnN0ZWxsZW4n
OwogICAgJExhbmctPnsnTGluayB3aXRoIEpJUkEgaXNzdWUnfSAgICAgICAgICAgICAgPSAnTWl0
IEpJUkEtVm9yZ2FuZyB2ZXJrbsO8cGZlbic7CiAgICAkTGFuZy0+eydMaW5rIHdpdGggZXhpc3Rp
bmcgaXNzdWUnfSAgICAgICAgICA9ICdNaXQgYmVzdGVoZW5kZW0gVm9yZ2FuZyB2ZXJrbsO8cGZl
bic7CiAgICAkTGFuZy0+e0VkaXRhYmxlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICfD
hG5kZXJiYXInOwogICAgJExhbmctPntIaWRlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAnQXVzYmxlbmRlbic7CiAgICAkTGFuZy0+e1JlYWRvbmx5fSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9ICdOdXIgQW56ZWlnZSc7CiAgICAKICAgICRMYW5nLT57J2FsbCBhcnRpY2xl
cyd9ID0gJ0FsbGUgQXJ0aWtlbCc7CiAgICAkTGFuZy0+eydvbmx5IGZpcnN0IGFydGljbGUnfSA9
ICdOdXIgZXJzdGVyIEFydGlrZWwnOwoKICAgICMkTGFuZy0+eycnfSA9ICcnOwoKICAgIHJldHVy
biAxOwp9CjE7Cg==
IyAgLS0KIyAgS2VybmVsL0xhbmd1YWdlL2VuX0FnZW50VGlja2V0SklSQS5wbSAtIGxhbmd1YWdl
IG1vZHVsZQojICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNSBjYXRXb3JrWCBHbWJIIGh0dHA6Ly93
d3cuY2F0d29ya3guZGUKIyAgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2Vp
dmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Lgoj
IC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0FnZW50VGlja2V0SklSQTsKdXNlIHN0
cmljdDsKdXNlIHdhcm5pbmdzOwpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwogICAk
U2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG5ldyBKSVJBIElzc3VlIGhhcyBiZWVuIGNyZWF0ZWQn
fSA9ICdBIG5ldyBKSVJBIElzc3VlIGhhcyBiZWVuIGNyZWF0ZWQnOwogICAkU2VsZi0+e1RyYW5z
bGF0aW9ufS0+eydBIEpJUkEgSXNzdWUgY291bGQgbm90IGJlIGNyZWF0ZWQnfSA9ICdBIEpJUkEg
SXNzdWUgY291bGQgbm90IGJlIGNyZWF0ZWQnOwogICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydU
byB0aGUgaXNzdWUgKEpJUkEpJ30gPSAnVG8gdGhlIGlzc3VlIChKSVJBKSc7CiAgICRTZWxmLT57
VHJhbnNsYXRpb259LT57J0JhY2sgdG8gdGhlIHRpY2tldCAoT1RSUyknfSA9ICdCYWNrIHRvIHRo
ZSB0aWNrZXQgKE9UUlMpJzsKICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IG5vdCBv
cGVuLid9ID0gJ1RpY2tldCBub3Qgb3Blbi4nOwogICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydK
SVJBIHRvIE9UUlMnfSA9ICdKSVJBIHRvIE9UUlMnOwogICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+
eydUYWtlIHRoaXMgdGlja2V0IGJhY2sgZnJvbSBKSVJBJ30gPSAnVGFrZSB0aGlzIHRpY2tldCBi
YWNrIGZyb20gSklSQSc7CiAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09UUlMgdG8gSklSQSd9
ID0gJ09UUlMgdG8gSklSQSc7CiAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VzY2FsYXRlIHRo
aXMgdGlja2V0IHRvIEpJUkEnfSA9ICdFc2NhbGF0ZSB0aGlzIHRpY2tldCB0byBKSVJBJzsKICAg
IyRTZWxmLT57VHJhbnNsYXRpb259LT57Jyd9ID0gJyc7CiAgIHJldHVybiAxOwp9CjE7Cg==
IyAgLS0KIyAgS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRKSVJBLnBtIC0gZnJvbnRlbmQgbW9k
dWxlCiMgIENvcHlyaWdodCAoQykgMjAwOC0yMDE1IGNhdFdvcmtYIEdtYkggaHR0cDovL3d3dy5j
YXR3b3JreC5kZQojICAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBm
b3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0
aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0K
CnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFRpY2tldEpJUkE7Cgp1c2Ugc3RyaWN0Owp1
c2Ugd2FybmluZ3M7Cgp1c2UgTGlzdDo6VXRpbCBxdyhmaXJzdCk7CgpvdXIgQE9iamVjdERlcGVu
ZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpDb25maWcKICAgIEtlcm5lbDo6U3lzdGVtOjpMb2cK
ICAgIEtlcm5lbDo6U3lzdGVtOjpNYWluCiAgICBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0
CiAgICBLZXJuZWw6OlN5c3RlbTo6VGlja2V0CiAgICBLZXJuZWw6OlN5c3RlbTo6VGlja2V0SklS
QQogICAgS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdAopOwoKc3ViIG5ldyB7CiAgICBteSAo
ICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVj
dAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzICgkU2VsZiwgJFR5cGUpOwoKICAg
IG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwog
ICAgJFNlbGYtPntEZWJ1Z30gICA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6RGVidWcnKTsK
CiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycs
CiAgICAgICAgICAgIE1lc3NhZ2UgPT4gX19QQUNLQUdFX18gLiAnOjpuZXcoKTogU3ViYWN0aW9u
PScgLiAkUGFyYW17U3ViYWN0aW9ufSAuICcgVGlja2V0SUQ9JyAuICRQYXJhbXtUaWNrZXRJRH0s
CiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGlja2V0T2JqZWN0ICAgICA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRDb25maWdPYmpl
Y3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRNYWlu
T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsK
ICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0
ZW06OkxvZycpOwogICAgbXkgJFRpY2tldEpJUkFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6OlN5c3RlbTo6VGlja2V0SklSQScpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAk
S2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAk
UGFyYW1PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6
OlJlcXVlc3QnKTsKCiAgICBteSAlRGF0YSAgPSAoKTsKICAgIG15ICRCbG9jayA9ICdTdWNjZXNz
JzsKCiAgICAjIFN1YmFjdGlvbiA9IEpJUkEyT1RSUyB8fCBPVFJTMkpJUkEKICAgIG15ICVUaWNr
ZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYt
PntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsK
CiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAg
ICAgICAgICAgUHJpb3JpdHkgPT4gJ2luZm8nLAogICAgICAgICAgICBNZXNzYWdlICA9PiBfX1BB
Q0tBR0VfXyAuICI6OlJ1bigpOiBUaWNrZXRJRDogJFRpY2tldHtUaWNrZXRJRH0gVGl0bGU6ICRU
aWNrZXR7VGl0bGV9IFN0YXRlOiAkVGlja2V0e1N0YXRlfSIKICAgICAgICApOwogICAgfQoKICAg
IG15ICRKSVJBQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXRKSVJBJykgfHwge307
CgogICAgbXkgJEFsbG93ZWRTdGF0ZXNOYW1lcyA9ICRKSVJBQ29uZmlnLT57T1RSU1RpY2tldEFs
bG93ZWRTdGF0ZXM0Q3JlYXRlfTsKICAgIG15IEBBbGxvd2VkU3RhdGVzTGlzdCAgPSBzcGxpdCAv
LC8sICRBbGxvd2VkU3RhdGVzTmFtZXM7CgogICAgaWYgKCBmaXJzdCB7ICRfIGVxICRUaWNrZXR7
U3RhdGV9IH0gQEFsbG93ZWRTdGF0ZXNMaXN0ICkgewogICAgICAgIG15ICRBcnRpY2xlSUQgPSAk
UGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQXJ0aWNsZUlEJyApOwoKICAgICAgICBt
eSAkSklSQUlzc3VlID0gJFRpY2tldEpJUkFPYmplY3QtPklzc3VlQ3JlYXRlKAogICAgICAgICAg
ICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCA9
PiAkQXJ0aWNsZUlELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAog
ICAgICAgICk7CgogICAgICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgICAgICRM
b2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAg
ICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6ICIgLiAkTWFpbk9i
amVjdC0+RHVtcCgkSklSQUlzc3VlKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAg
IGlmICggJEpJUkFJc3N1ZS0+e2Vycm9yfSApIHsKICAgICAgICAgICAgJEJsb2NrICAgICAgID0g
J0Vycm9yJzsKICAgICAgICAgICAgJERhdGF7ZXJyb3J9ID0gJEpJUkFJc3N1ZS0+e2Vycm9yfTsK
ICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAkSklSQUNvbmZpZy0+e1VSTH07CgkgICAgICAK
ICAgICAgICAkRGF0YXtpZH0gID0gJEpJUkFJc3N1ZS0+e2lkfTsKICAgICAgICAkRGF0YXtrZXl9
ID0gJEpJUkFJc3N1ZS0+e2tleX07CiAgICAgICAgJERhdGF7dXJsfSA9ICIkVVJML2Jyb3dzZS8i
IC4gJEpJUkFJc3N1ZS0+e2tleX07CgogICAgICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAg
ICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdp
bmZvJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6
IFRpY2tldC0+U3RhdGUgJFRpY2tldHtTdGF0ZX0gYWxsb3dzIGZldGNoaW5nICIKICAgICAgICAg
ICAgICAgICAgICAuICJvZiB0aGUgSklSQUlzc3VlLT5rZXk6ICIgLiAkSklSQUlzc3VlLT57a2V5
fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQmxv
Y2sgICAgICAgID0gJ0Vycm9yJzsKICAgICAgICAkRGF0YXtlcnJvcn0gID0gJExheW91dE9iamVj
dC0+e0xhbmd1YWdlT2JqZWN0fS0+R2V0KAogICAgICAgICAgICAiVGlja2V0IG5vdCBpbiAkQWxs
b3dlZFN0YXRlc05hbWVzOiAiIC4gJFRpY2tldHtTdGF0ZX0gLiAiLiIKICAgICAgICApOwoKICAg
ICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2co
CiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICBNZXNz
YWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBPVFJTIFRpY2tldCBub3QgaW4gJEFsbG93
ZWRTdGF0ZXNOYW1lczogIiAuICRUaWNrZXR7U3RhdGV9CiAgICAgICAgICAgICk7CiAgICAgICAg
fQogICAgfQoKICAgICREYXRhe1RpY2tldElEfSAgICAgPSAkU2VsZi0+e1RpY2tldElEfTsKICAg
ICREYXRhe1RpY2tldE51bWJlcn0gPSAkVGlja2V0e1RpY2tldE51bWJlcn07CgogICAgJExheW91
dE9iamVjdC0+QmxvY2soCiAgICAgICAgRGF0YSA9PiBcJURhdGEsCiAgICAgICAgTmFtZSA9PiAk
QmxvY2ssCiAgICApOwoKICAgICMgYnVpbGQgb3V0cHV0CiAgICBteSAkT3V0cHV0ID0gJExheW91
dE9iamVjdC0+SGVhZGVyKFRpdGxlID0+ICJUaWNrZXRKSVJBIik7CiAgICAkT3V0cHV0ICAgLj0g
JExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgJE91dHB1dCAgIC49ICRMYXlvdXRP
YmplY3QtPk91dHB1dCgKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRl
bXBsYXRlRmlsZSA9PiAnQWdlbnRUaWNrZXRKSVJBJywKICAgICk7CiAgICAkT3V0cHV0ICAgLj0g
JExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAgLS0KIyAgS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRKSVJBRGlhbG9nLnBtIC0gZnJvbnRl
bmQgbW9kdWxlCiMgIENvcHlyaWdodCAoQykgMjAxNiBjYXRXb3JrWCBHbWJIIGh0dHA6Ly93d3cu
Y2F0d29ya3guZGUKIyAgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBO
TyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcg
Zm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUg
dGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0t
CgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRUaWNrZXRKSVJBRGlhbG9nOwoKdXNlIHN0
cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIExpc3Q6OlV0aWwgcXcoZmlyc3QpOwoKb3VyIEBPYmpl
Y3REZXBlbmRlbmNpZXMgPSBxdygKICAgIEtlcm5lbDo6Q29uZmlnCiAgICBLZXJuZWw6OlN5c3Rl
bTo6TG9nCiAgICBLZXJuZWw6OlN5c3RlbTo6SlNPTgogICAgS2VybmVsOjpTeXN0ZW06Ok1haW4K
ICAgIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQKICAgIEtlcm5lbDo6U3lzdGVtOjpUaWNr
ZXQKICAgIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXRKSVJBCiAgICBLZXJuZWw6OlN5c3RlbTo6SklS
QTo6VXRpbHMKICAgIEtlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QKKTsKCnN1YiBuZXcgewog
ICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZv
ciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyAoJFNlbGYsICRUeXBl
KTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25m
aWcnKTsKICAgICRTZWxmLT57RGVidWd9ICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6OkRl
YnVnJyk7CgogICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4g
J2luZm8nLAogICAgICAgICAgICBNZXNzYWdlID0+IF9fUEFDS0FHRV9fIC4gJzo6bmV3KCk6IFRp
Y2tldElEPScgLiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJu
ICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
bXkgJFRpY2tldE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6
VGlja2V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGFuZ3VhZ2VPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKICAgIG15ICRNYWluT2JqZWN0ICAgICAgID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRMb2dPYmplY3QgICAg
ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFRp
Y2tldEpJUkFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0
SklSQScpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkVXRpbHNPYmplY3QgICAgICA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKSVJBOjpVdGlscycpOwogICAgbXkgJFBh
cmFtT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpS
ZXF1ZXN0Jyk7CgogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbSAoIHF3L1RpY2tl
dElEIFByb2plY3QgQXNzaWduZWUgSXNzdWVUeXBlIFN0YXRlIEFydGljbGVJRCBJc3N1ZUlELyAp
IHsKICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBh
cmFtID0+ICRQYXJhbSApIHx8ICcnOwogICAgfQoKICAgIG15ICRUZW1wbGF0ZUZpbGUgPSAnQWdl
bnRUaWNrZXRKSVJBRGlhbG9nJzsKICAgIG15ICREZWZhdWx0cyAgICAgPSAkQ29uZmlnT2JqZWN0
LT5HZXQoJ1RpY2tldEpJUkEnKSB8fCB7fTsKICAgIG15ICVEYXRhICAgICAgICAgPSAlR2V0UGFy
YW07CgogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewogICAgICAgICRMYXlvdXRPYmpl
Y3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGb3JtJywKICAgICAgICAgICAgRGF0YSA9
PiB7CiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAg
ICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFByb2plY3RzICAgICAgID0gJFV0
aWxzT2JqZWN0LT5Qcm9qZWN0c0dldCgpOwogICAgICAgIG15ICREZWZhdWx0UHJvamVjdCA9ICRE
ZWZhdWx0cy0+e1Byb2plY3R9OwoKICAgICAgICBteSAkU2hvd1Byb2plY3QgPSAkQ29uZmlnT2Jq
ZWN0LT5HZXQoJ0pJUkE6OlNob3dQcm9qZWN0Jyk7CgogICAgICAgIGlmICggISRTaG93UHJvamVj
dCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBO
YW1lID0+ICdQcm9qZWN0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAg
ICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAg
ICAgICAgICAgUHJvamVjdCA9PiAkRGVmYXVsdFByb2plY3QsCiAgICAgICAgICAgICAgICB9LAog
ICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRTaG93UHJvamVjdCA9PSAx
ICkgewogICAgICAgICAgICAkUGFyYW17UHJvamVjdFNlbGVjdH0gPSAkTGF5b3V0T2JqZWN0LT5C
dWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnUHJvamVjdCcs
CiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFByb2plY3RzLAogICAgICAgICAgICAg
ICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwK
ICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGUgTW9kZXJuaXplJywKICAg
ICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17UHJvamVjdH0gfHwgJFBhcmFt
e1Byb2plY3R9IHx8ICREZWZhdWx0UHJvamVjdCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAg
ICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJvamVjdFNl
bGVjdCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlR2V0
UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVc2VycyA9ICRVdGlsc09iamVjdC0+
VXNlcnNHZXQoCiAgICAgICAgICAgIFByb2plY3QgPT4gJERlZmF1bHRQcm9qZWN0LAogICAgICAg
ICk7CgogICAgICAgIG15ICREZWZhdWx0QXNzaWduZWUgPSAkRGVmYXVsdHMtPntBc3NpZ25lZX07
CiAgICAgICAgbXkgJE5vQXNzaWduZWUgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6
Tm9Bc3NpZ25lZScpOwogICAgICAgIG15ICRTaG93QXNzaWduZWUgICAgPSAkQ29uZmlnT2JqZWN0
LT5HZXQoJ0pJUkE6OlNob3dBc3NpZ25lZScpOwoKICAgICAgICBpZiAoICEkU2hvd0Fzc2lnbmVl
ICYmICEkTm9Bc3NpZ25lZSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAg
ICAgICAgICAgICAgICBOYW1lID0+ICdBc3NpZ25lZScsCiAgICAgICAgICAgICAgICBEYXRhID0+
IHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJVBh
cmFtLAogICAgICAgICAgICAgICAgICAgIEFzc2lnbmVlID0+ICREZWZhdWx0QXNzaWduZWUsCiAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAo
ICRTaG93QXNzaWduZWUgPT0gMSAmJiAhJE5vQXNzaWduZWUgKSB7CiAgICAgICAgICAgIGlmICgg
JENvbmZpZ09iamVjdC0+R2V0KCdKSVJBOjpTaG93QXV0b21hdGljVXNlcicpICkgewogICAgICAg
ICAgICAgICAgJFVzZXJzLT57Jy0xJ30gPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgnYXV0
b21hdGljLXVzZXInKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0Fzc2lnbmVl
U2VsZWN0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAg
TmFtZSAgICAgICAgID0+ICdBc3NpZ25lZScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAg
PT4gJFVzZXJzLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAg
ICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAn
VmFsaWRhdGUgTW9kZXJuaXplJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0
UGFyYW17QXNzaWduZWV9IHx8ICRQYXJhbXtBc3NpZ25lZX0gfHwgJERlZmF1bHRBc3NpZ25lZSwK
ICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAg
ICAgICAgICAgTmFtZSA9PiAnQXNzaWduZWVTZWxlY3QnLAogICAgICAgICAgICAgICAgRGF0YSA9
PiB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICVQ
YXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAg
ICBteSAkSXNzdWVUeXBlcyA9ICRVdGlsc09iamVjdC0+SXNzdWVUeXBlc0dldCgKICAgICAgICAg
ICAgUHJvamVjdCA9PiAkRGVmYXVsdFByb2plY3QsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJERl
ZmF1bHRJc3N1ZVR5cGUgPSAkRGVmYXVsdHMtPntJc3N1ZVR5cGV9OwogICAgICAgIG15ICRTaG93
SXNzdWVUeXBlICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdKSVJBOjpTaG93SXNzdWVUeXBlJyk7
CgogICAgICAgIGlmICggISRTaG93SXNzdWVUeXBlICkgewogICAgICAgICAgICAkTGF5b3V0T2Jq
ZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0lzc3VlVHlwZScsCiAgICAgICAg
ICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAg
ICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIElzc3VlVHlwZSA9PiAkRGVm
YXVsdElzc3VlVHlwZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAg
fQogICAgICAgIGVsc2lmICggJFNob3dJc3N1ZVR5cGUgPT0gMSApIHsKICAgICAgICAgICAgJFBh
cmFte0lzc3VlVHlwZVNlbGVjdH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAg
ICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSXNzdWVUeXBlJywKICAgICAgICAgICAgICAg
IERhdGEgICAgICAgICA9PiAkSXNzdWVUeXBlcywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9u
ZSA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0ZSBNb2Rlcm5p
emUnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtJc3N1ZVR5cGV9
IHx8ICRQYXJhbXtJc3N1ZVR5cGV9IHx8ICREZWZhdWx0SXNzdWVUeXBlLAogICAgICAgICAgICAp
OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1l
ID0+ICdJc3N1ZVR5cGVTZWxlY3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAg
ICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKIyBUT0RPOiBXaGVuIHdlIGtu
b3cgaG93IHRvIGdldCBhIGxpc3Qgb2Ygc3RhdGVzLCB0aGVuIHRoaXMgc2hvdWxkIGJlIHJlZW5h
YmxlZC4uLgojICAgICAgICBteSAkRGVmYXVsdFN0YXRlID0gJERlZmF1bHRzLT57U3RhdGV9Owoj
CiMgICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnSklSQTo6U2hvd1N0YXRlJykgKSB7
CiMgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKIyAgICAgICAgICAgICAgICBOYW1l
ID0+ICdTdGF0ZScsCiMgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiMgICAgICAgICAgICAgICAg
ICAgICVHZXRQYXJhbSwKIyAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAojICAgICAgICAgICAg
ICAgICAgICBTdGF0ZSA9PiAkRGVmYXVsdFN0YXRlLAojICAgICAgICAgICAgICAgIH0sCiMgICAg
ICAgICAgICApOwojICAgICAgICB9CiMgICAgICAgIGVsc2UgewojICAgICAgICAgICAgJFBhcmFt
e1N0YXRlU2VsZWN0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAojICAgICAgICAg
ICAgICAgIE5hbWUgICAgICAgICA9PiAnU3RhdGUnLAojICAgICAgICAgICAgICAgIERhdGEgICAg
ICAgICA9PiB7fSwKIyAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKIyAgICAgICAg
ICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlJywKIyAgICAgICAgICAgICk7CiMKIyAg
ICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAojICAgICAgICAgICAgICAgIE5hbWUgPT4g
J1N0YXRlU2VsZWN0JywKIyAgICAgICAgICAgICAgICBEYXRhID0+IHsKIyAgICAgICAgICAgICAg
ICAgICAgJUdldFBhcmFtLAojICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiMgICAgICAgICAg
ICAgICAgfSwKIyAgICAgICAgICAgICkKIyAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2Vs
Zi0+e1N1YmFjdGlvbn0gZXEgJ0Fzc2lnbmVlU2VhcmNoJyApIHsKCiAgICAgICAgIyBidWlsZCBy
ZXN1bHQgbGlzdAogICAgICAgIG15IEBSZXN1bHQ7CgogICAgICAgIG15ICRUZXJtID0gJFBhcmFt
T2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rlcm0nICk7CiAgICAgICAgJFRlcm0gICAgPX4g
c3tcKn17Lip9ZzsKCiAgICAgICAgbXkgJFJFOwogICAgICAgIGV2YWwgewogICAgICAgICAgICAk
UkUgPSBxci8kVGVybS9pOwogICAgICAgIH07CgogICAgICAgIGlmICggJEdldFBhcmFte1Byb2pl
Y3R9ICYmICRSRSApIHsKICAgICAgICAgICAgbXkgJFVzZXJzID0gJFV0aWxzT2JqZWN0LT5Vc2Vy
c0dldCgKICAgICAgICAgICAgICAgIFByb2plY3QgPT4gJEdldFBhcmFte1Byb2plY3R9LAogICAg
ICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6OlNo
b3dBdXRvbWF0aWNVc2VyJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlcnMtPnsnLTEnfSA9ICRM
YW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCdhdXRvbWF0aWMtdXNlcicpOwogICAgICAgICAgICB9
CgogICAgICAgICAgICBBU1NJR05FRToKICAgICAgICAgICAgZm9yIG15ICRVc2VyICgga2V5cyAl
eyAkVXNlcnMgfHwge30gfSApIHsKICAgICAgICAgICAgICAgIGlmICggKCAkVXNlciA9fiAkUkUg
KSB8fCAoICRVc2Vycy0+eyRVc2VyfSA9fiAkUkUgKSApIHsKICAgICAgICAgICAgICAgICAgICBw
dXNoIEBSZXN1bHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gIiRVc2Vycy0+
eyRVc2VyfSAoJFVzZXIpIiwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFVzZXIs
CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAog
ICAgICAgICAgICBEYXRhID0+IFxAUmVzdWx0LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAk
TGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBw
bGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAg
ICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiB8fCAnJywKICAgICAgICAgICAgVHlwZSAgICAg
ICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsK
ICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYVXBkYXRlJyApIHsK
ICAgICAgICBteSAkSlNPTkRhdGEgPSBbXTsKCiAgICAgICAgaWYgKCAkR2V0UGFyYW17UHJvamVj
dH0gKSB7CiAgICAgICAgICAgIG15ICRVc2VycyA9ICRVdGlsc09iamVjdC0+VXNlcnNHZXQoCiAg
ICAgICAgICAgICAgICBQcm9qZWN0ID0+ICRHZXRQYXJhbXtQcm9qZWN0fSwKICAgICAgICAgICAg
KTsKCiAgICAgICAgICAgIG15ICREZWZhdWx0QXNzaWduZWUgPSAkRGVmYXVsdHMtPntBc3NpZ25l
ZX07CgogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6U2hvd0F1dG9t
YXRpY1VzZXInKSApIHsKICAgICAgICAgICAgICAgICRVc2Vycy0+eyctMSd9ID0gJExhbmd1YWdl
T2JqZWN0LT5UcmFuc2xhdGUoJ2F1dG9tYXRpYy11c2VyJyk7CiAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgIHB1c2ggQHsgJEpTT05EYXRhIH0sIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAg
ICA9PiAnQXNzaWduZWUnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRVc2VycywK
ICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3Mg
ICAgICAgID0+ICdWYWxpZGF0ZSBNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJ
RCAgID0+ICRHZXRQYXJhbXtBc3NpZ25lZX0gfHwgJFBhcmFte0Fzc2lnbmVlfSB8fCAkRGVmYXVs
dEFzc2lnbmVlLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgbXkgJElzc3VlVHlwZXMgPSAk
VXRpbHNPYmplY3QtPklzc3VlVHlwZXNHZXQoCiAgICAgICAgICAgICAgICBQcm9qZWN0ID0+ICRH
ZXRQYXJhbXtQcm9qZWN0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREZWZhdWx0
SXNzdWVUeXBlID0gJERlZmF1bHRzLT57SXNzdWVUeXBlfTsKCiAgICAgICAgICAgIHB1c2ggQHsg
JEpTT05EYXRhIH0sIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSXNzdWVUeXBl
JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSXNzdWVUeXBlcywKICAgICAgICAg
ICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+
ICdWYWxpZGF0ZSBNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRH
ZXRQYXJhbXtJc3N1ZVR5cGV9IHx8ICRQYXJhbXtJc3N1ZVR5cGV9IHx8ICREZWZhdWx0SXNzdWVU
eXBlLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgbXkgJFN0YXRlcyA9ICRVdGlsc09iamVj
dC0+U3RhdGVzR2V0KAogICAgICAgICAgICAgICAgUHJvamVjdCA9PiAkR2V0UGFyYW17UHJvamVj
dH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGVmYXVsdFN0YXRlID0gJERlZmF1
bHRzLT57U3RhdGV9OwoKICAgICAgICAgICAgcHVzaCBAeyAkSlNPTkRhdGEgfSwgewogICAgICAg
ICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhICAg
ICAgICAgPT4gJFN0YXRlcywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAg
ICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0ZSBNb2Rlcm5pemUnLAogICAgICAg
ICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtTdGF0ZX0gfHwgJFBhcmFte1N0YXRl
fSB8fCAkRGVmYXVsdFN0YXRlLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkg
JEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oICRKU09ORGF0YSApOwoK
ICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29u
dGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3Qt
PntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgICAg
IFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAog
ICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ3JlYXRl
JyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAn
Q3JlYXRlUmVzdWx0JywKICAgICAgICApOwoKICAgICAgICBteSAkQmxvY2sgPSAnU3VjY2Vzcyc7
CgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAg
ICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9
PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0RlYnVn
fSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3Jp
dHkgPT4gJ2luZm8nLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gX19QQUNLQUdFX18gLiAi
OjpSdW4oKTogVGlja2V0SUQ6ICRUaWNrZXR7VGlja2V0SUR9IFRpdGxlOiAkVGlja2V0e1RpdGxl
fSBTdGF0ZTogJFRpY2tldHtTdGF0ZX0iCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAg
ICBteSAkSklSQUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0SklSQScpIHx8IHt9
OwoKICAgICAgICBteSAkQWxsb3dlZFN0YXRlc05hbWVzID0gJEpJUkFDb25maWctPntPVFJTVGlj
a2V0QWxsb3dlZFN0YXRlczRDcmVhdGV9OwogICAgICAgIG15IEBBbGxvd2VkU3RhdGVzTGlzdCAg
PSBzcGxpdCAvLC8sICRBbGxvd2VkU3RhdGVzTmFtZXM7CgogICAgICAgIGlmICggZmlyc3QgeyAk
XyBlcSAkVGlja2V0e1N0YXRlfSB9IEBBbGxvd2VkU3RhdGVzTGlzdCApIHsKICAgICAgICAgICAg
bXkgJEpJUkFJc3N1ZSA9ICRUaWNrZXRKSVJBT2JqZWN0LT5Jc3N1ZUNyZWF0ZSgKICAgICAgICAg
ICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFy
dGljbGVJRCA9PiAkR2V0UGFyYW17QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAg
ICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBQcm9qZWN0ICAgPT4gJEdldFBh
cmFte1Byb2plY3R9LAogICAgICAgICAgICAgICAgQXNzaWduZWUgID0+ICRHZXRQYXJhbXtBc3Np
Z25lZX0sCiAgICAgICAgICAgICAgICBJc3N1ZVR5cGUgPT4gJEdldFBhcmFte0lzc3VlVHlwZX0s
CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAg
ICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5
ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAu
ICI6OlJ1bigpOiAiIC4gJE1haW5PYmplY3QtPkR1bXAoJEpJUkFJc3N1ZSksCiAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRKSVJBSXNzdWUtPntlcnJv
cn0gKSB7CiAgICAgICAgICAgICAgICAkQmxvY2sgICAgICAgPSAnRXJyb3InOwogICAgICAgICAg
ICAgICAgJERhdGF7ZXJyb3J9ID0gJEpJUkFJc3N1ZS0+e2Vycm9yfTsKCiAgICAgICAgICAgICAg
ICAkRGF0YXtUaWNrZXRJRH0gICAgID0gJEdldFBhcmFte1RpY2tldElEfTsKICAgICAgICAgICAg
ICAgICREYXRhe1RpY2tldE51bWJlcn0gPSAkVGlja2V0e1RpY2tldE51bWJlcn07CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAjIGxvYWQgbmV3IFVSTCBp
biBwYXJlbnQgd2luZG93IGFuZCBjbG9zZSBwb3B1cAogICAgICAgICAgICAgICAgbXkgJFJldHVy
blVSTCA9ICJBY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPSRHZXRQYXJhbXtUaWNrZXRJ
RH0iOwoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Qb3B1cENsb3NlKAog
ICAgICAgICAgICAgICAgICAgIFVSTCA9PiAkUmV0dXJuVVJMLAogICAgICAgICAgICAgICAgKTsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFVSTCA9ICRKSVJBQ29uZmlnLT57VVJMfTsK
CSAgICAgIAogICAgICAgICAgICAkRGF0YXtpZH0gID0gJEpJUkFJc3N1ZS0+e2lkfTsKICAgICAg
ICAgICAgJERhdGF7a2V5fSA9ICRKSVJBSXNzdWUtPntrZXl9OwogICAgICAgICAgICAkRGF0YXt1
cmx9ID0gIiRVUkwvYnJvd3NlLyIgLiAkSklSQUlzc3VlLT57a2V5fTsKCiAgICAgICAgICAgIGlm
ICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAg
ICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2luZm8nLAogICAgICAgICAgICAgICAgICAg
IE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6IFRpY2tldC0+U3RhdGUgJFRpY2tl
dHtTdGF0ZX0gYWxsb3dzIGZldGNoaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAib2Yg
dGhlIEpJUkFJc3N1ZS0+a2V5OiAiIC4gJEpJUkFJc3N1ZS0+e2tleX0sCiAgICAgICAgICAgICAg
ICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAk
QmxvY2sgICAgICAgID0gJ0Vycm9yJzsKICAgICAgICAgICAgJERhdGF7ZXJyb3J9ICA9ICRMYXlv
dXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkdldCgKICAgICAgICAgICAgICAgICJUaWNrZXQg
bm90IGluICRBbGxvd2VkU3RhdGVzTmFtZXM6ICIgLiAkVGlja2V0e1N0YXRlfSAuICIuIgogICAg
ICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAg
ICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAn
aW5mbycsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gX19QQUNLQUdFX18gLiAiOjpS
dW4oKTogT1RSUyBUaWNrZXQgbm90IGluICRBbGxvd2VkU3RhdGVzTmFtZXM6ICIgLiAkVGlja2V0
e1N0YXRlfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgJERhdGF7VGlja2V0SUR9ICAgICA9ICRTZWxmLT57VGlja2V0SUR9OwogICAgICAgICREYXRh
e1RpY2tldE51bWJlcn0gPSAkVGlja2V0e1RpY2tldE51bWJlcn07CgogICAgICAgICRMYXlvdXRP
YmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRCbG9jaywKICAgICAgICAgICAgRGF0
YSA9PiBcJURhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVzZXIgd2FudHMgdG8gbGluayB0
aWNrZXQgd2l0aCBhbiBleGlzdGluZyBpc3N1ZQogICAgIyBuZWVkcyBvbiBvdGhlciBmb3JtCiAg
ICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTGlua0V4aXN0aW5nSXNzdWUnICkgewog
ICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGb3JtJywK
ICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAg
ICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJFRlbXBs
YXRlRmlsZSA9ICdBZ2VudFRpY2tldEpJUkFEaWFsb2dFeGlzdGluZ0lzc3VlJzsKCiAgICAgICAg
bXkgJFByb2plY3RzICAgICAgID0gJFV0aWxzT2JqZWN0LT5Qcm9qZWN0c0dldCgpOwogICAgICAg
IG15ICREZWZhdWx0UHJvamVjdCA9ICREZWZhdWx0cy0+e1Byb2plY3R9OwoKICAgICAgICBpZiAo
ICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6OlNob3dQcm9qZWN0JykgKSB7CiAgICAgICAgICAg
ICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJvamVjdCcs
CiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0s
CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIFByb2plY3Qg
PT4gJERlZmF1bHRQcm9qZWN0LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAg
ICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQYXJhbXtQcm9qZWN0U2VsZWN0fSA9
ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFtZSAgICAg
ICAgID0+ICdQcm9qZWN0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkUHJvamVj
dHMsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFRy
YW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0
ZSBNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtQ
cm9qZWN0fSB8fCAkUGFyYW17UHJvamVjdH0gfHwgJERlZmF1bHRQcm9qZWN0LAogICAgICAgICAg
ICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBO
YW1lID0+ICdQcm9qZWN0U2VsZWN0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAg
ICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZXIg
d2FudHMgdG8gbGluayB0aWNrZXQgd2l0aCBhbiBleGlzdGluZyBpc3N1ZQogICAgIyAgIC0+IGNy
ZWF0ZSBsaW5rIChzZXQgZHluYW1pYyBmaWVsZCBpbiBvdHJzIGFuZCBjdXN0b20gZmllbGQgaW4g
SklSQSkKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDcmVhdGVMaW5rV2l0aElz
c3VlJyApIHsKICAgICAgICAkVGVtcGxhdGVGaWxlID0gJ0FnZW50VGlja2V0SklSQURpYWxvZ0V4
aXN0aW5nSXNzdWUnOwoKICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0
R2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAg
ICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICRMYXlv
dXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDcmVhdGVSZXN1bHQnLAogICAg
ICAgICk7CgogICAgICAgIG15ICRCbG9jayA9ICdTdWNjZXNzJzsKCiAgICAgICAgbXkgJEpJUkFJ
c3N1ZSA9ICRUaWNrZXRKSVJBT2JqZWN0LT5Jc3N1ZUxpbmtUb09UUlMoCiAgICAgICAgICAgIFRp
Y2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRT
ZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgSXNzdWVJRCAgID0+ICRHZXRQYXJhbXtJc3N1ZUlE
fSwKICAgICAgICAgICAgUHJvamVjdCAgID0+ICRHZXRQYXJhbXtQcm9qZWN0fSwKICAgICAgICAp
OwoKICAgICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0
LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAg
ICBNZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiAiIC4gJE1haW5PYmplY3QtPkR1
bXAoJEpJUkFJc3N1ZSksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRK
SVJBSXNzdWUtPntlcnJvcn0gKSB7CiAgICAgICAgICAgICRCbG9jayAgICAgICA9ICdFcnJvcic7
CiAgICAgICAgICAgICREYXRhe2Vycm9yfSA9ICRKSVJBSXNzdWUtPntlcnJvcn07CgogICAgICAg
ICAgICAkRGF0YXtUaWNrZXRJRH0gICAgID0gJEdldFBhcmFte1RpY2tldElEfTsKICAgICAgICAg
ICAgJERhdGF7VGlja2V0TnVtYmVyfSA9ICRUaWNrZXR7VGlja2V0TnVtYmVyfTsKICAgICAgICB9
CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICMgbG9hZCBuZXcgVVJMIGluIHBhcmVudCB3aW5k
b3cgYW5kIGNsb3NlIHBvcHVwCiAgICAgICAgICAgIG15ICRSZXR1cm5VUkwgPSAiQWN0aW9uPUFn
ZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0kR2V0UGFyYW17VGlja2V0SUR9IjsKCiAgICAgICAgICAg
IHJldHVybiAkTGF5b3V0T2JqZWN0LT5Qb3B1cENsb3NlKAogICAgICAgICAgICAgICAgVVJMID0+
ICRSZXR1cm5VUkwsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkSklSQUNv
bmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0SklSQScpIHx8IHt9OwogICAgICAgIG15
ICRVUkwgICAgICAgID0gJEpJUkFDb25maWctPntVUkx9OwoJICAgICAgCiAgICAgICAgJERhdGF7
aWR9ICA9ICRKSVJBSXNzdWUtPntpZH07CiAgICAgICAgJERhdGF7a2V5fSA9ICRKSVJBSXNzdWUt
PntrZXl9OwogICAgICAgICREYXRhe3VybH0gPSAiJFVSTC9icm93c2UvIiAuICRKSVJBSXNzdWUt
PntrZXl9OwogICAgfQoKICAgICMgdXNlciB3YW50cyB0byBsaW5rIHRpY2tldCB3aXRoIGFuIGV4
aXN0aW5nIGlzc3VlCiAgICAjICAgLT4gc2VhcmNoIGZvciBleGlzdGluZyBpc3N1ZXMKICAgIGVs
c2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdJc3N1ZVNlYXJjaCcgKSB7CgogICAgICAgICMg
YnVpbGQgcmVzdWx0IGxpc3QKICAgICAgICBteSAkSXNzdWVzOwoKICAgICAgICBteSAkVGVybSA9
ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUZXJtJyApOwoKICAgICAgICBpZiAo
ICRHZXRQYXJhbXtQcm9qZWN0fSAmJiAkVGVybSApIHsKICAgICAgICAgICAgJElzc3VlcyA9ICRV
dGlsc09iamVjdC0+SXNzdWVMaXN0KAogICAgICAgICAgICAgICAgUHJvamVjdCA9PiAkR2V0UGFy
YW17UHJvamVjdH0sCiAgICAgICAgICAgICAgICBUZXJtICAgID0+ICRUZXJtLAogICAgICAgICAg
ICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5j
b2RlKAogICAgICAgICAgICBEYXRhID0+ICRJc3N1ZXMsCiAgICAgICAgKTsKCiAgICAgICAgcmV0
dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+
ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0s
CiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OIHx8ICcnLAogICAgICAgICAgICBUeXBl
ICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAg
ICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0CiAgICBteSAkT3V0cHV0ID0gJExheW91dE9i
amVjdC0+SGVhZGVyKAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlD
bGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91
dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFRlbXBsYXRlRmlsZSwKICAgICAgICBEYXRh
ICAgICAgICAgPT4gewogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVEYXRhLAog
ICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAog
ICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7
Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9GaWx0ZXJFbGVtZW50UG9zdC9PVFJTVG9KSVJBTGlu
ay5wbQojIENvcHlyaWdodCAoQykgMjAxNiBjYXRXb3JrWCBHbWJIIGh0dHA6Ly93d3cuY2F0d29y
a3guZGUKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJB
TlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGlj
ZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZp
bGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2th
Z2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZpbHRlckVsZW1lbnRQb3N0OjpPVFJTVG9KSVJBTGlu
azsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0g
cXcoCiAgICBLZXJuZWw6OkNvbmZpZwogICAgS2VybmVsOjpMYW5ndWFnZQogICAgS2VybmVsOjpT
eXN0ZW06OkxvZwogICAgS2VybmVsOjpTeXN0ZW06Ok1haW4KICAgIEtlcm5lbDo6T3V0cHV0OjpI
VE1MOjpMYXlvdXQKICAgIEtlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QKKTsKCnN1YiBuZXcg
ewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNo
IGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7
CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVs
OjpMYW5ndWFnZScpOwogICAgbXkgJExheW91dE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkg
JFRpY2tldE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tl
dCcpOwoKICAgIG15ICRUaXRsZSAgICA9ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCdPVFJT
IHRvIEpJUkEnKTsKICAgIG15ICRCYXNlbGluayA9ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua307
CiAgICBteSAkVGlja2V0SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGlj
a2V0SUQnICk7CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAg
ICAgICBUaWNrZXRJRCAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBEeW5hbWljRmllbGRzID0+
IDEsCiAgICApOwoKICAgIHJldHVybiAxIGlmICRUaWNrZXR7RHluYW1pY0ZpZWxkX0pJUkFJc3N1
ZUlEfTsKCiAgICBteSBAQXJ0aWNsZUlEcyA9ICR7ICRQYXJhbXtEYXRhfSB9ID1+IG17PGEgXHMg
bmFtZT0iQXJ0aWNsZShcZCspIn14bXM7CgogICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gc3sgKCA8
YSBccyBuYW1lPSJBcnRpY2xlKFxkKykiIC4qPyA8dWwgXHMgY2xhc3M9IkFjdGlvbnMiPiApIFxz
KyA8bGk+fXskMSAuICRTZWxmLT5fX0xpbmtpZnkoICRCYXNlbGluaywgJFRpY2tldElELCAkMiwg
JFRpdGxlICkgLiAnPGxpPic7fWV4bXNnOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX19MaW5raWZ5
IHsKICAgIG15ICgkU2VsZiwgJEJhc2VsaW5rLCAkVGlja2V0SUQsICRBcnRpY2xlSUQsICRUaXRs
ZSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6Q29uZmlnJyk7CgogICAgbXkgJERpYWxvZyA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6
U2hvd0RpYWxvZycpOwoKICAgIG15ICRBY3Rpb24gPSAnQWdlbnRUaWNrZXRKSVJBJzsKICAgICRB
Y3Rpb24gICAuPSAnRGlhbG9nJyBpZiAkRGlhbG9nOwoKICAgIG15ICRMaW5rID0gcXF+CiAgICAg
ICAgPGxpIGNsYXNzPSJPVFJTVG9KSVJBTGlua0xpbmsiPgogICAgICAgICAgICA8YSBocmVmPSIk
e0Jhc2VsaW5rfUFjdGlvbj0kQWN0aW9uO1RpY2tldElEPSRUaWNrZXRJRDtBcnRpY2xlSUQ9JEFy
dGljbGVJRCIgdGl0bGU9IiRUaXRsZSIgY2xhc3M9IkFzUG9wdXAgUG9wdXBfVHlwZV9UaWNrZXRB
Y3Rpb24iPiRUaXRsZTwvYT4KICAgICAgICA8L2xpPgogICAgfjsKCiAgICByZXR1cm4gJExpbms7
Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9TdGFuZGFyZC9BZ2VudFRpY2tldEpJUkEudHQgLSBv
dmVydmlldwojIENvcHlyaWdodCAoQykgMjAxNSBjYXRXb3JrWCBHbWJoLCBodHRwOi8vd3d3LmNh
dHdvcmt4LmRlCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhp
cyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCjxk
aXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQi
PjwvZGl2PgogIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3Vj
Y2VzcyIpICVdCiAgICA8IS0tIHN0YXJ0IGZvcm0gLS0+CiAgICA8dGFibGUgYm9yZGVyPSIwIiB3
aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0icGFkZGlu
Zy1sZWZ0OiAxY207cGFkZGluZy10b3A6IDFjbTsiPgogICAgICA8dHI+CiAgICAgICAgPHRoIGNs
YXNzPSJtYWluaGVhZCI+CiAgICAgICAgICA8aDE+WyUgRW52KCJCb3gwIikgJV1bJSBUcmFuc2xh
dGUoIkEgbmV3IEpJUkEgSXNzdWUgaGFzIGJlZW4gY3JlYXRlZCIpIHwgaHRtbCAlXSFbJSBFbnYo
IkJveDAiKSAlXTwvaDE+CiAgICAgICAgPC90aD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAg
ICAgIDx0ZCBjbGFzcz0ibWFpbmJvZHkiPgogICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyB0aGUg
aXNzdWUgKEpJUkEpIikgfCBodG1sICVdOiA8YSBocmVmPSJbJSBEYXRhLnVybCB8IGh0bWwgJV0i
PlslIERhdGEua2V5IHwgaHRtbCAlXSAoWyUgRGF0YS5pZCB8IGh0bWwgJV0pPC9hPgogICAgICAg
IDwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgY2xhc3M9Im1haW5ib2R5
Ij4KICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQmFjayB0byB0aGUgdGlja2V0IChPVFJTKSIpIHwg
aHRtbCAlXTogPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0
Wm9vbSZUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSI+WyUgRGF0YS5UaWNrZXRO
dW1iZXIgfCBodG1sICVdIChbJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSk8L2E+CiAgICAgICAg
PC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+CiAgICA8IS0tIGVuZCBmb3JtIC0tPgpbJSBS
ZW5kZXJCbG9ja0VuZCgiU3VjY2VzcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFcnJvciIp
ICVdCiAgICA8IS0tIHN0YXJ0IGZvcm0gLS0+CiAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0i
MTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0icGFkZGluZy1sZWZ0
OiAxY207cGFkZGluZy10b3A6IDFjbTsiPgogICAgICA8dHI+CiAgICAgICAgPHRoIGNsYXNzPSJt
YWluaGVhZCI+CiAgICAgICAgICA8aDE+WyUgRW52KCJCb3gwIikgJV1bJSBUcmFuc2xhdGUoIkEg
SklSQSBJc3N1ZSBjb3VsZCBub3QgYmUgY3JlYXRlZCIpIHwgaHRtbCAlXSFbJSBFbnYoIkJveDAi
KSAlXTwvaDE+CiAgICAgICAgPC90aD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0
ZCBjbGFzcz0ibWFpbmJvZHkiPgogICAgICAgICAgWyUgRW52KCJCb3gwIikgJV1bJSBEYXRhLmVy
cm9yIHwgaHRtbCAlXVslIEVudigiQm94MCIpICVdCiAgICAgICAgPC90ZD4KICAgICAgPC90cj4K
ICAgICAgPHRyPgogICAgICAgIDx0ZCBjbGFzcz0ibWFpbmJvZHkiPgogICAgICAgICAgWyUgVHJh
bnNsYXRlKCJCYWNrIHRvIHRoZSB0aWNrZXQgKE9UUlMpIikgfCBodG1sICVdOiA8YSBocmVmPSJb
JSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRUaWNrZXRab29tJlRpY2tldElEPVslIERh
dGEuVGlja2V0SUQgfCBodG1sICVdIj5bJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0gKFsl
IERhdGEuVGlja2V0SUQgfCBodG1sICVdKTwvYT4KICAgICAgICA8L3RkPgogICAgICA8L3RyPgog
ICAgPC90YWJsZT4KICAgIDwhLS0gZW5kIGZvcm0gLS0+ClslIFJlbmRlckJsb2NrRW5kKCJFcnJv
ciIpICVdCgogIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9TdGFuZGFyZC9BZ2VudFRpY2tldEpJUkFEaWFsb2cu
dHQgLSBvdmVydmlldwojIENvcHlyaWdodCAoQykgMjAxNiBjYXRXb3JrWCBHbWJoLCBodHRwOi8v
d3d3LmNhdHdvcmt4LmRlCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2Vp
dmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Lgoj
IC0tCjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJQT1NUIiBp
ZD0iSklSQUlzc3VlRm9ybSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMi
PgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJB
Y3Rpb24iKSB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJh
Y3Rpb24iIHZhbHVlPSJDcmVhdGUiIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJU
aWNrZXRJRCIgdmFsdWU9IlslIERhdGEuVGlja2V0SUQgfCBodG1sICVdIiAvPgogICAgPGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0iQXJ0aWNsZUlEIiB2YWx1ZT0iWyUgRGF0YS5BcnRpY2xlSUQg
fCBodG1sICVdIiAvPgogICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4K
ICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRl
KCJDcmVhdGUgaXNzdWUgaW4gSklSQSIpIHwgaHRtbCAlXTwvaDE+CiAgICAKICAgICAgICAgICAg
PHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBt
YXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+
CiAgICAKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xv
c2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAl
XTwvYT4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAg
ICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFj
dGlvbiIpICVdO1N1YmFjdGlvbj1MaW5rRXhpc3RpbmdJc3N1ZTtUaWNrZXRJRD1bJSBEYXRhLlRp
Y2tldElEIHwgdXJpICVdO0FydGljbGVJRD1bJSBEYXRhLkFydGljbGVJRCB8IHVyaSAlXSIKICAg
ICAgICAgICAgICAgICAgICA+WyUgVHJhbnNsYXRlKCJMaW5rIHdpdGggZXhpc3RpbmcgaXNzdWUi
KSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIDwvcD4KICAgICAgICA8L2Rpdj4KClslIFJlbmRl
ckJsb2NrU3RhcnQoIkVycm9yIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAg
ICAgICAgICAgPGgyPlslIEVudigiQm94MCIpICVdWyUgVHJhbnNsYXRlKCJBIEpJUkEgSXNzdWUg
Y291bGQgbm90IGJlIGNyZWF0ZWQiKSB8IGh0bWwgJV0hWyUgRW52KCJCb3gwIikgJV08L2gyPgog
ICAgICAgICAgICBbJSBEYXRhLmVycm9yIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5k
ZXJCbG9ja0VuZCgiRXJyb3IiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRm9ybSIpICVdCiAg
ICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0i
VGFibGVMaWtlIEZpeGVkTGFiZWwiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvamVjdCIpICVd
CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQcm9qZWN0Ij5bJSBUcmFuc2xhdGUoIlByb2pl
Y3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxk
Ij4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2plY3RTZWxlY3QgJV0KICAgICAgICAg
ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgpb
JSBSZW5kZXJCbG9ja0VuZCgiUHJvamVjdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlByb2pl
Y3RTZWxlY3QiKSAlXQogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZv
cj0iUHJvamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlBy
b2plY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZp
ZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2plY3RTZWxlY3QgJV0KICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJQcm9qZWN0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JN
ZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1s
ICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlByb2plY3RTZXJ2ZXJF
cnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBm
aWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICA8
L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgV1JBUFBF
UiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ly88IVtDREFUQVsKICAgICQoJyNQcm9qZWN0JykuYmluZCggJ2NoYW5nZScsIGZ1bmN0aW9uIChF
dmVudCkgewogICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNKSVJBSXNzdWVGb3JtJyks
ICdBSkFYVXBkYXRlJywgJ1Byb2plY3QnLCBbICdBc3NpZ25lZScsICdJc3N1ZVR5cGUnLCAnU3Rh
dGUnIF0pOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0Vu
ZCgiUHJvamVjdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBc3NpZ25lZSIpICVdCiAgICAg
ICAgICAgICAgICA8bGFiZWwgZm9yPSJBc3NpZ25lZSI+WyUgVHJhbnNsYXRlKCJBc3NpZ25lZSIp
IHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgog
ICAgICAgICAgICAgICAgICAgIFslIERhdGEuQXNzaWduZWUgJV0KICAgICAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJC
bG9ja0VuZCgiQXNzaWduZWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBc3NpZ25lZVNlbGVj
dCIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJBc3Np
Z25lZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIkFzc2lnbmVl
IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+
CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkFzc2lnbmVlU2Vh
cmNoRmllbGQiIGlkPSJBc3NpZ25lZVNlYXJjaEZpZWxkIiBjbGFzcz0iVmFsaWRhdGUgVmFsaWRh
dGVfUmVxdWlyZWQiIHZhbHVlPSJbJSBEYXRhLlZhbHVlIHwgaHRtbCAlXSIgLz4KICAgICAgICAg
ICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBc3NpZ25lZSIgaWQ9IkFzc2ln
bmVlIiB2YWx1ZT0iWyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV0iIC8+ClslIFdSQVBQRVIgSlNPbkRv
Y3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RB
VEFbCiAgICBKSVJBLkF1dG9jb21wbGV0ZS5Jbml0KCAkKCcjQXNzaWduZWVTZWFyY2hGaWVsZCcp
LCAnQXNzaWduZWVTZWFyY2gnICk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQogICAgICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9IkFzc2lnbmVlU2VhcmNoRmllbGRFcnJvciIgY2xhc3M9IlRvb2x0
aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4i
KSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQXNzaWdu
ZWVTZWFyY2hGaWVsZFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+
WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rp
dj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xl
YXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXNzaWduZWVTZWxlY3QiKSAlXQoKWyUgUmVu
ZGVyQmxvY2tTdGFydCgiSXNzdWVUeXBlIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9
Iklzc3VlVHlwZSI+WyUgVHJhbnNsYXRlKCJJc3N1ZVR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4K
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBb
JSBEYXRhLklzc3VlVHlwZSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJc3N1ZVR5cGUi
KSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJc3N1ZVR5cGVTZWxlY3QiKSAlXQogICAgICAgICAg
ICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iSXNzdWVUeXBlIj48c3BhbiBjbGFz
cz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiSXNzdWVUeXBlIikgfCBodG1sICVdOjwv
bGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAg
ICAgICAgWyUgRGF0YS5Jc3N1ZVR5cGVTZWxlY3QgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJJc3N1ZVR5cGVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRy
YW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSXNzdWVUeXBlU2VydmVyRXJyb3IiIGNsYXNzPSJU
b29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWly
ZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJc3N1
ZVR5cGVTZWxlY3QiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdGUiKSAlXQogICAgICAg
ICAgICAgICAgPGxhYmVsIGZvcj0iU3RhdGUiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwg
JV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAg
ICAgICAgICAgICBbJSBEYXRhLlN0YXRlICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0
YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdGVTZWxlY3QiKSAlXQogICAgICAgICAg
ICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iU3RhdGUiPjxzcGFuIGNsYXNzPSJN
YXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgog
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFsl
IERhdGEuU3RhdGVTZWxlY3QgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTdGF0ZUVy
cm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZp
ZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJTdGF0ZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+
PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48
L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Q2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdGVTZWxlY3QiKSAlXQoKICAgICAg
ICAgICAgPC9maWVsZHNldD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGb290
ZXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlk
PSJzdWJtaXRSaWNoVGV4dCIgYWNjZXNza2V5PSJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdWJt
aXQiKSB8IGh0bWwgJV0gKGcpIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1
Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48
L2k+IFslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAg
ICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRm9ybSIpICVdCiAgICA8L2Rpdj4KPC9mb3Jt
Pgo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9TdGFuZGFyZC9BZ2VudFRpY2tldEpJUkFEaWFsb2dF
eGlzdGluZ0lzc3VlLnR0IC0gb3ZlcnZpZXcKIyBDb3B5cmlnaHQgKEMpIDIwMTYgY2F0V29ya1gg
R21iaCwgaHR0cDovL3d3dy5jYXR3b3JreC5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3
aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9z
ZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMg
ZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl
cy9hZ3BsLnR4dC4KIyAtLQo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1l
dGhvZD0iUE9TVCIgaWQ9IkpJUkFJc3N1ZUZvcm0iIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVs
dGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFs
dWU9IlslIEVudigiQWN0aW9uIikgfCBodG1sICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRl
biIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ3JlYXRlTGlua1dpdGhJc3N1ZSIgLz4KICAgIDxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpY2tldElEIiB2YWx1ZT0iWyUgRGF0YS5UaWNrZXRJ
RCB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBcnRpY2xlSUQi
IHZhbHVlPSJbJSBEYXRhLkFydGljbGVJRCB8IGh0bWwgJV0iIC8+CiAgICA8ZGl2IGNsYXNzPSJM
YXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAg
ICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkxpbmsgd2l0aCBKSVJBIGlzc3VlIikgfCBodG1s
ICVdPC9oMT4KICAgIAogICAgICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+
WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUg
bWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KICAgIAogICAgICAgICAgICA8cD4KICAgICAgICAg
ICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUo
IkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgWyUgVHJhbnNs
YXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNl
bGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07VGlja2V0SUQ9WyUgRGF0YS5UaWNr
ZXRJRCB8IHVyaSAlXTtBcnRpY2xlSUQ9WyUgRGF0YS5BcnRpY2xlSUQgfCB1cmkgJV0iCiAgICAg
ICAgICAgICAgICAgICAgPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIG5ldyBpc3N1ZSIpIHwgaHRtbCAl
XTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFy
dCgiRXJyb3IiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICA8
aDI+WyUgRW52KCJCb3gwIikgJV1bJSBUcmFuc2xhdGUoIlRoZSBKSVJBIElzc3VlIGNvdWxkIG5v
dCBiZSBsaW5rZWQiKSB8IGh0bWwgJV0hWyUgRW52KCJCb3gwIikgJV08L2gyPgogICAgICAgICAg
ICBbJSBEYXRhLmVycm9yIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0Vu
ZCgiRXJyb3IiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRm9ybSIpICVdCiAgICAgICAgPGRp
diBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtl
IEZpeGVkTGFiZWwiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHJvamVjdCIpICVdCiAgICAgICAg
ICAgICAgICA8bGFiZWwgZm9yPSJQcm9qZWN0Ij5bJSBUcmFuc2xhdGUoIlByb2plY3QiKSB8IGh0
bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAg
ICAgICAgICAgICAgICBbJSBEYXRhLlByb2plY3RTZWxlY3QgJV0KICAgICAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJC
bG9ja0VuZCgiUHJvamVjdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlByb2plY3RTZWxlY3Qi
KSAlXQogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iUHJvamVj
dCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj5bJSBUcmFuc2xhdGUoIlByb2plY3QiKSB8
IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAg
ICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2plY3RTZWxlY3QgJV0KICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJQcm9qZWN0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48
cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwv
ZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlByb2plY3RTZXJ2ZXJFcnJvciIgY2xh
c3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyBy
ZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQo
IlByb2plY3QiKSAlXQoKICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBm
b3I9Iklzc3VlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJJ
c3N1ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmll
bGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJJc3N1ZUlE
U2VhcmNoRmllbGQiIGlkPSJJc3N1ZUlEU2VhcmNoRmllbGQiIGNsYXNzPSJWYWxpZGF0ZSBWYWxp
ZGF0ZV9SZXF1aXJlZCIgdmFsdWU9IlslIERhdGEuVmFsdWUgfCBodG1sICVdIiAvPgogICAgICAg
ICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Iklzc3VlSUQiIGlkPSJJc3N1
ZUlEIiB2YWx1ZT0iWyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV0iIC8+ClslIFdSQVBQRVIgSlNPbkRv
Y3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RB
VEFbCiAgICBKSVJBLkF1dG9jb21wbGV0ZS5Jbml0KCAkKCcjSXNzdWVJRFNlYXJjaEZpZWxkJyks
ICdJc3N1ZVNlYXJjaCcsICdJc3N1ZUlEJyApOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJc3N1ZUlEU2VhcmNoRmllbGRFcnJvciIgY2xhc3M9
IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1
aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
SXNzdWVJRFNlYXJjaEZpZWxkU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdl
Ij48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9w
PjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZGl2Pgog
ICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNh
bGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9InN1Ym1pdFJpY2hUZXh0IiBhY2Nlc3NrZXk9ImciIHRp
dGxlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSAoZykiIHR5cGU9InN1Ym1pdCIg
dmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0i
ZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwg
JV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGb3Jt
IikgJV0KICAgIDwvZGl2Pgo8L2Zvcm0+Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9UaWNrZXRNZW51L0pJUkEucG0gLSBtZW51IG1vZHVs
ZQojICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNiBjYXRXb3JrWCBHbWJIIGh0dHA6Ly93d3cuY2F0
d29ya3guZGUKIyAgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhp
cyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpw
YWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51OjpKSVJBOwoKdXNlIHN0cmlj
dDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygKICAgIEtlcm5l
bDo6Q29uZmlnCiAgICBLZXJuZWw6OlN5c3RlbTo6TG9nCiAgICBLZXJuZWw6OlN5c3RlbTo6VGlj
a2V0CiAgICBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Cik7CgpzdWIgbmV3IHsKICAgIG15
ICggJFR5cGUsICVQYXJhbSApID0gQF87CiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmpl
Y3QKCiAgICBteSAkU2VsZiA9IHsgJVBhcmFtIH07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7
CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CgogICAgbXkgJFRpY2tldE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRMYXlvdXRPYmpl
Y3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcp
OwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VGlja2V0fSApIHsK
ICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3In
LAogICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVGlja2V0IScsCiAgICAgICAgKTsKICAg
ICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtDb25maWd9LT57QWN0
aW9ufTsKCiAgICBteSAkU2hvd0RpYWxvZyA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6U2hv
d0RpYWxvZycpOwogICAgaWYgKCAkU2hvd0RpYWxvZyApIHsKICAgICAgICAkQWN0aW9uID0gJ0Fn
ZW50VGlja2V0SklSQURpYWxvZyc7CgogICAgICAgICRQYXJhbXtQb3B1cFR5cGV9ICAgICAgICAg
ICA9ICdUaWNrZXRBY3Rpb24nOwogICAgICAgICRQYXJhbXtDb25maWd9LT57UG9wdXBUeXBlfSA9
ICdUaWNrZXRBY3Rpb24nOwogICAgfQoKICAgICMgY2hlY2sgaWYgZnJvbnRlbmQgbW9kdWxlIHJl
Z2lzdGVyZWQsIGlmIG5vdCwgZG8gbm90IHNob3cgYWN0aW9uCiAgICBpZiAoICRBY3Rpb24gKSB7
CiAgICAgICAgbXkgJE1vZHVsZSA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVs
ZScpLT57JEFjdGlvbn07CgogICAgICAgIHJldHVybiBpZiAhJE1vZHVsZTsKICAgIH0KCiAgICAj
IGNoZWNrIHBlcm1pc3Npb24KICAgIG15ICRBY2Nlc3NPayA9ICRUaWNrZXRPYmplY3QtPlBlcm1p
c3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJ3J3JywKICAgICAgICBUaWNrZXRJRCA9PiAkUGFy
YW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJ
RH0sCiAgICAgICAgTG9nTm8gICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkQWNjZXNz
T2s7CgogICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICBpZiAoICRUaWNrZXRPYmplY3QtPlRpY2tl
dExvY2tHZXQoIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9ICkgKSB7CiAg
ICAgICAgbXkgJEFjY2Vzc09rID0gJFRpY2tldE9iamVjdC0+T3duZXJDaGVjaygKICAgICAgICAg
ICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIE93
bmVySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYg
ISRBY2Nlc3NPazsKICAgIH0KCiAgICAjIGNoZWNrIGFjbAogICAgaWYgKCBkZWZpbmVkICRQYXJh
bXtBQ0x9LT57JEFjdGlvbn0gJiYgISRQYXJhbXtBQ0x9LT57JEFjdGlvbn0gKSB7CiAgICAgICAg
cmV0dXJuOwogICAgfQoKICAgIG15ICRKSVJBQ29uZmlnICAgICAgICAgPSAkQ29uZmlnT2JqZWN0
LT5HZXQoJ1RpY2tldEpJUkEnKTsKICAgIG15ICRBbGxvd2VkU3RhdGVzTmFtZXMgPSAkSklSQUNv
bmZpZy0+e09UUlNUaWNrZXRBbGxvd2VkU3RhdGVzNENyZWF0ZX07CiAgICBteSBAQWxsb3dlZFN0
YXRlc0xpc3QgID0gc3BsaXQgLywvLCAkQWxsb3dlZFN0YXRlc05hbWVzOwoKICAgIGlmICggIWdy
ZXB7ICRQYXJhbXtUaWNrZXR9LT57U3RhdGV9IGVxICRfIH1AQWxsb3dlZFN0YXRlc0xpc3QgKSB7
CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIEpJUkEg
aXNzdWUgZm9yIHRoYXQgdGlja2V0LCBkbyBub3Qgc2hvdyB0aGUgbWVudSBpdGVtCiAgICBpZiAo
ICRQYXJhbXtUaWNrZXR9LT57IkR5bmFtaWNGaWVsZF9KSVJBSXNzdWVJRCJ9ICkgewogICAgICAg
IHJldHVybjsKICAgIH0KCiAgICBteSAkTGFuZ3VhZ2VPYmplY3QgPSAkTGF5b3V0T2JqZWN0LT57
TGFuZ3VhZ2VPYmplY3R9OwoKICAgIHJldHVybiB7CiAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30g
fSwKICAgICAgICAleyAkUGFyYW17VGlja2V0fSB9LAogICAgICAgICVQYXJhbSwKICAgICAgICBO
YW1lICAgICAgICAgPT4gJExhbmd1YWdlT2JqZWN0LT5HZXQoJ09UUlMgdG8gSklSQScpLAogICAg
ICAgIERlc2NyaXB0aW9uICA9PiAkTGFuZ3VhZ2VPYmplY3QtPkdldCgnRXNjYWxhdGUgdGhpcyB0
aWNrZXQgdG8gSklSQScpLAogICAgICAgIExpbmsgICAgICAgICA9PiAnQWN0aW9uPScgLiAkQWN0
aW9uIC4gJztUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEICVdJywKICAgIH07Cn0KCjE7Cg==
IyAgLS0KIyAgS2VybmVsL1N5c3RlbS9KSVJBL1V0aWxzLnBtIC0gY29yZSBtb2R1bGUKIyAgQ29w
eXJpZ2h0IChDKSAyMDE2IGNhdFdvcmtYIEdtYkggaHR0cDovL3d3dy5jYXR3b3JreC5kZQojICAt
LQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3Ig
ZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZv
cm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBo
dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVs
OjpTeXN0ZW06OkpJUkE6OlV0aWxzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEpJ
UkE6OlJFU1Q7CnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0KTsKCnVzZSBjb25zdGFudCBQID0+IF9f
UEFDS0FHRV9fOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygKICAgIEtlcm5lbDo6Q29u
ZmlnCiAgICBLZXJuZWw6OlN5c3RlbTo6TG9nCiAgICBLZXJuZWw6OlN5c3RlbTo6TWFpbgogICAg
S2VybmVsOjpTeXN0ZW06OkpTT04KICAgIEtlcm5lbDo6U3lzdGVtOjpDYWNoZQopOwoKCnN1YiBu
ZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBo
YXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBl
ICk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29u
ZmlnJyk7CgogICAgJFNlbGYtPntEZWJ1Z30gICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSklS
QTo6RGVidWcnKTsKICAgICRTZWxmLT57Q29uZmlnfSAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQo
J1RpY2tldEpJUkEnKSB8fCB7fTsKICAgICRTZWxmLT57SklSQUNsaWVudH0gPSBKSVJBOjpSRVNU
LT5uZXcoCiAgICAgICAgJFNlbGYtPntDb25maWd9LT57VVJMfSwKICAgICAgICAkU2VsZi0+e0Nv
bmZpZ30tPntVc2VyfSwKICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntQYXNzd29yZH0sCiAgICAp
OwoKICAgIG15ICRWZXJpZnlTU0wgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6OlNTTFZlcmlm
eScpOwogICAgaWYgKCAhJFZlcmlmeVNTTCApIHsKICAgICAgICBteSAkTG9hZGVkID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgKICAgICAgICAgICAg
J05ldDo6U1NMZWF5JywKICAgICAgICAgICAgU2lsZW50ID0+IDEsCiAgICAgICAgKTsKICAgICAg
ICBpZiAoJExvYWRlZCkgewogICAgICAgICAgICAkU2VsZi0+e0pJUkFDbGllbnR9LT57cmVzdH0t
PmdldFVzZXJhZ2VudCgpLT5zc2xfb3B0cyggdmVyaWZ5X2hvc3RuYW1lID0+IDAgKTsKICAgICAg
ICAgICAgJFNlbGYtPntKSVJBQ2xpZW50fS0+e3Jlc3R9LT5nZXRVc2VyYWdlbnQoKS0+c3NsX29w
dHMoIFNTTF92ZXJmaXlfbW9kZSA9PiBOZXQ6OlNTTGVheTo6VkVSSUZZX05PTkUoKSApOwogICAg
ICAgIH0KICAgIH0KCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSklSQVV0aWxzJzsKICAgICRT
ZWxmLT57Q2FjaGVUVEx9ICA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6Q2FjaGVUVEwnKTsK
CiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFByb2plY3RzR2V0KCkKCj1jdXQKCnN1YiBQcm9q
ZWN0c0dldCB7CiAgICBteSAoJFNlbGYsICVQYXJhbSkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0
ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJE1h
aW5PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAg
ICBteSAkQ2FjaGVPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNh
Y2hlJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpD
b25maWcnKTsKCiAgICBteSAkUHJvamVjdHMgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBU
eXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSAuICdfUHJvamVjdHMnLAogICAgICAgIEtleSAgPT4g
J0FsbCcsCiAgICApOwoKICAgIGlmICggJFByb2plY3RzICYmICEkUGFyYW17Rm9yY2V9ICkgewoj
ICAgICAgICByZXR1cm4gJFByb2plY3RzOwogICAgfQoKICAgIG15ICRNZXRhSlNPTjsKICAgIG15
ICRFcnJvckdldDsKCiAgICBldmFsewogICAgICAgICRNZXRhSlNPTiA9ICRTZWxmLT57SklSQUNs
aWVudH0tPkdFVCggJy9pc3N1ZS9jcmVhdGVtZXRhJyApOwogICAgfSBvciAkRXJyb3JHZXQgPSAk
QDsKCiAgICBpZiAoICRFcnJvckdldCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmlu
dGYgUCAuICAiOjpQcm9qZWN0c0dldDogY2Fubm90IG1ldGFkYXRhOiAlcyIsCiAgICAgICAgICAg
ICAgICAkRXJyb3JHZXQsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICt7fTsKICAgIH0KCiAg
ICBteSBAV2hpdGVsaXN0ID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdKSVJBOjpQcm9qZWN0V2hp
dGVsaXN0JykgfHwgW10gfTsKICAgIG15IEBCbGFja2xpc3QgPSBAeyAkQ29uZmlnT2JqZWN0LT5H
ZXQoJ0pJUkE6OlByb2plY3RCbGFja2xpc3QnKSB8fCBbXSB9OwoKICAgIGlmICggJFNlbGYtPntE
ZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9
PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiBQIC4gICI6OlByb2plY3RzR2V0OiAi
CiAgICAgICAgICAgICAgICAuICRNYWluT2JqZWN0LT5EdW1wKCBbIFxAV2hpdGVsaXN0LCBcQEJs
YWNrbGlzdCwgJE1ldGFKU09OLT57cHJvamVjdHN9IF0gKSwKICAgICAgICApOwogICAgfQoKICAg
IFBST0pFQ1RJVEVNOgogICAgZm9yIG15ICRQcm9qZWN0SXRlbSAoIEB7ICRNZXRhSlNPTi0+e3By
b2plY3RzfSB8fCBbXSB9ICkgewogICAgICAgIG15ICRLZXkgID0gJFByb2plY3RJdGVtLT57a2V5
fTsKICAgICAgICBteSAkTmFtZSA9ICRQcm9qZWN0SXRlbS0+e25hbWV9OwoKICAgICAgICBpZiAo
ICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAg
ICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4g
UCAuICAiOjpQcm9qZWN0c0dldDogQ2hlY2sgUHJvamVjdCAkS2V5IC0+ICROYW1lIgogICAgICAg
ICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBAV2hpdGVsaXN0ICkgewogICAgICAgICAg
ICBuZXh0IFBST0pFQ1RJVEVNIGlmICEoZmlyc3R7ICRLZXkgPX4gbXskX314bXMgfUBXaGl0ZWxp
c3QpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBAQmxhY2tsaXN0ICkgewogICAgICAgICAgICBu
ZXh0IFBST0pFQ1RJVEVNIGlmIChmaXJzdHsgJEtleSA9fiBteyRffXhtcyB9QEJsYWNrbGlzdCk7
CiAgICAgICAgfQoKICAgICAgICAkUHJvamVjdHMtPnskS2V5fSA9ICROYW1lOwoKICAgICAgICAj
IHNhdmUgaXNzdWV0eXBlcwogICAgICAgIG15ICRJc3N1ZVR5cGVzTGlzdDsKCiAgICAgICAgbXkg
JElzc3VlVHlwZXMgPSAkUHJvamVjdEl0ZW0tPntpc3N1ZXR5cGVzfSB8fCBbXTsKCiAgICAgICAg
SVNTVUVUWVBFOgogICAgICAgIGZvciBteSAkSXNzdWVUeXBlICggQHsgJElzc3VlVHlwZXMgfSAp
IHsKCiAgICAgICAgICAgIG5leHQgSVNTVUVUWVBFIGlmICRJc3N1ZVR5cGUtPntzdWJ0YXNrfTsK
CiAgICAgICAgICAgIG15ICRJc3N1ZVR5cGVOYW1lID0gJElzc3VlVHlwZS0+e25hbWV9OwogICAg
ICAgICAgICAkSXNzdWVUeXBlc0xpc3QtPnskSXNzdWVUeXBlTmFtZX0gPSAkSXNzdWVUeXBlTmFt
ZTsKICAgICAgICB9CgogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBl
ICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0gLiAnX0lzc3VlVHlwZXMnLAogICAgICAgICAgICBLZXkg
ICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSA9PiAkSXNzdWVUeXBlc0xpc3QsCiAgICAgICAg
ICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICk7CiAgICB9CgogICAgJFBy
b2plY3RzIC8vPSB7fTsKCiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dP
YmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAg
TWVzc2FnZSAgPT4gUCAuICAiOjpQcm9qZWN0c0dldDogIgogICAgICAgICAgICAgICAgLiAkTWFp
bk9iamVjdC0+RHVtcCggJFByb2plY3RzICksCiAgICAgICAgKTsKICAgIH0KCiAgICAkQ2FjaGVP
YmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0gLiAnX1Byb2pl
Y3RzJywKICAgICAgICBLZXkgICA9PiAnQWxsJywKICAgICAgICBWYWx1ZSA9PiAkUHJvamVjdHMs
CiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICApOwoKICAgIHJldHVybiAk
UHJvamVjdHM7Cn0KCj1pdGVtIElzc3VlVHlwZXNHZXQoKQoKR2V0IGFsbCBpc3N1ZSB0eXBlcyB0
aGF0IGJlbG9uZyB0byBhIHByb2plY3QgZnJvbSBKSVJBCgogICAgbXkgJElzc3VlVHlwZXMgPSAk
T2JqZWN0LT5Jc3N1ZVR5cGVzR2V0KAogICAgICAgIFByb2plY3QgPT4gJFByb2plY3QsCiAgICAp
OwoKPWN1dAoKc3ViIElzc3VlVHlwZXNHZXQgewogICAgbXkgKCRTZWxmLCAlUGFyYW0pID0gQF87
CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06
OkxvZycpOwogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpT
eXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIGRhdGEKICAgIGZvciBteSAk
TmVlZGVkICggcXcvUHJvamVjdC8gKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkg
ewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9
PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAog
ICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBt
eSAkSXNzdWVUeXBlcyA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgID0+ICRTZWxm
LT57Q2FjaGVUeXBlfSAuICdfSXNzdWVUeXBlcycsCiAgICAgICAgS2V5ICAgPT4gJFBhcmFte1By
b2plY3R9LAogICAgKTsKCiAgICBpZiAoICRJc3N1ZVR5cGVzICkgewogICAgICAgIHJldHVybiAk
SXNzdWVUeXBlczsKICAgIH0KCiAgICAkU2VsZi0+UHJvamVjdHNHZXQoIEZvcmNlID0+IDEgKTsK
CiAgICAkSXNzdWVUeXBlcyA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgID0+ICRT
ZWxmLT57Q2FjaGVUeXBlfSAuICdfSXNzdWVUeXBlcycsCiAgICAgICAgS2V5ICAgPT4gJFBhcmFt
e1Byb2plY3R9LAogICAgKTsKCiAgICByZXR1cm4gJElzc3VlVHlwZXMgfHwge307Cn0KCj1pdGVt
IFVzZXJzR2V0KCkKCkdldCBhbGwgaXNzdWUgdHlwZXMgdGhhdCBiZWxvbmcgdG8gYSBwcm9qZWN0
IGZyb20gSklSQQoKICAgIG15ICRVc2VycyA9ICRPYmplY3QtPlVzZXJzR2V0KAogICAgICAgIFBy
b2plY3QgPT4gJFByb2plY3QsCiAgICApOwoKPWN1dAoKc3ViIFVzZXJzR2V0IHsKICAgIG15ICgk
U2VsZiwgJVBhcmFtKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRl
ZCBkYXRhCiAgICBmb3IgbXkgJE5lZWRlZCAoIHF3L1Byb2plY3QvICkgewogICAgICAgIGlmICgg
ISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAg
ICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+
ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICB9CiAgICB9CgogICAgIyBpbXBsZW1lbnQgY2FjaGluZwogICAgbXkgJFVzZXJzID0gJENh
Y2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9IC4gJ19V
c2VycycsCiAgICAgICAgS2V5ICAgPT4gJFBhcmFte1Byb2plY3R9LAogICAgKTsKCgogICAgbXkg
JFVzZXJzSlNPTjsKICAgIG15ICRFcnJvckdldDsKCiAgICAjIGdldCB1c2VycwogICAgZXZhbHsK
ICAgICAgICAkVXNlcnNKU09OID0gJFNlbGYtPntKSVJBQ2xpZW50fS0+R0VUKCAnL3VzZXIvYXNz
aWduYWJsZS9zZWFyY2g/cHJvamVjdD0nIC4gJFBhcmFte1Byb2plY3R9ICk7CiAgICB9IG9yICRF
cnJvckdldCA9ICRAOwoKICAgIGlmICggJEVycm9yR2V0ICkgewogICAgICAgICRMb2dPYmplY3Qt
PkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2Fn
ZSAgPT4gc3ByaW50ZiBQIC4gICI6OlVzZXJzR2V0OiBjYW5ub3QgYXNzaWduYWJsZSB1c2VycyBm
b3IgcHJvamVjdCAlczogJXMiLAogICAgICAgICAgICAgICAgJFBhcmFte1Byb2plY3R9LCAkRXJy
b3JHZXQsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICt7fTsKICAgIH0KCiAgICBmb3IgbXkg
JFVzZXIgKCBAeyAkVXNlcnNKU09OIHx8IFtdIH0gKSB7CiAgICAgICAgbXkgJEtleSAgID0gJFVz
ZXItPntuYW1lfTsKICAgICAgICBteSAkVmFsdWUgPSAkVXNlci0+e2Rpc3BsYXlOYW1lfTsgICAK
CiAgICAgICAgJFVzZXJzLT57JEtleX0gPSAkVmFsdWU7CiAgICB9CgogICAgJENhY2hlT2JqZWN0
LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9IC4gJ19Vc2VycycsCiAg
ICAgICAgS2V5ICAgPT4gJFBhcmFte1Byb2plY3R9LAogICAgICAgIFZhbHVlID0+ICRVc2VycywK
ICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgcmV0dXJuICRV
c2VyczsKfQoKPWl0ZW0gU3RhdGVzR2V0KCkKCkdldCBhbGwgaXNzdWUgdHlwZXMgdGhhdCBiZWxv
bmcgdG8gYSBwcm9qZWN0IGZyb20gSklSQQoKICAgIG15ICRTdGF0ZXMgPSAkT2JqZWN0LT5TdGF0
ZXNHZXQoCiAgICAgICAgUHJvamVjdCA9PiAkUHJvamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgU3Rh
dGVzR2V0IHsKICAgIG15ICgkU2VsZiwgJVBhcmFtKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3Qg
PSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBm
b3IgbmVlZGVkIGRhdGEKICAgIGZvciBteSAkTmVlZGVkICggcXcvUHJvamVjdC8gKSB7CiAgICAg
ICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2co
CiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVz
c2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIFRPRE86IGltcGxlbWVudCBjYWNoaW5nCgogICAg
bXkgJFN0YXRlcyA9IHt9OwogICAgbXkgJEVycm9yR2V0OwoKICAgICMgVE9ETzogVVJMIHRvIGdl
dCBzdGF0ZXMKICAgICNldmFsewogICAgIyAgICAkU3RhdGVzID0gJFNlbGYtPntKSVJBQ2xpZW50
fS0+R0VUKCAnL2lzc3VlLycgLiAkUGFyYW17UHJvamVjdH0gKTsKICAgICN9IG9yICRFcnJvckdl
dCA9ICRAOwogICAgIwogICAgI2lmICggJEVycm9yR2V0ICkgewogICAgIyAgICAkTG9nT2JqZWN0
LT5Mb2coCiAgICAjICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgIyAgICAgICAgTWVz
c2FnZSAgPT4gc3ByaW50ZiBQIC4gICI6OlN0YXRlc0dldDogY2Fubm90IGlzc3VlIHR5cGVzIGZv
ciBwcm9qZWN0ICVzOiAlcyIsCiAgICAjICAgICAgICAgICAgJFBhcmFte1Byb2plY3R9LCAkRXJy
b3JHZXQsCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIHJldHVybiAreyBlcnJvciA9PiAkRXJy
b3JHZXQgfTsKICAgICN9CgogICAgcmV0dXJuICRTdGF0ZXM7Cn0KCj1pdGVtIElzc3VlTGlzdCgp
Cgo9Y3V0CgpzdWIgSXNzdWVMaXN0IHsKICAgIG15ICgkU2VsZiwgJVBhcmFtKSA9IEBfOwoKICAg
IG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9n
Jyk7CiAgICBteSAkTWFpbk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0
ZW06Ok1haW4nKTsKICAgIG15ICRDYWNoZU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBkYXRhCiAgICBm
b3IgbXkgJE5lZWRlZCAoIHF3L1Byb2plY3QvICkgewogICAgICAgIGlmICggISRQYXJhbXskTmVl
ZGVkfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJp
b3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVk
ZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9
CgogICAgJFBhcmFte1Rlcm19IC8vPSAnJzsKCiAgICBteSAkVHlwZVRlcm0gPSAkUGFyYW17VGVy
bX07CiAgICAkVHlwZVRlcm0gICAgPX4gc3tbXkEtWmEtejAtOV9dfXtffWc7CgogICAgbXkgJENh
Y2hlVHlwZSA9ICAkU2VsZi0+e0NhY2hlVHlwZX0gLiAnX0lzc3Vlc18nIC4gJFBhcmFte1Byb2pl
Y3R9IC4gJ18nIC4gJFR5cGVUZXJtOwoKICAgIG15ICRJc3N1ZXMgPSAkQ2FjaGVPYmplY3QtPkdl
dCgKICAgICAgICBUeXBlID0+ICRDYWNoZVR5cGUsCiAgICAgICAgS2V5ICA9PiAnQWxsJywKICAg
ICk7CgogICAgaWYgKCAkSXNzdWVzICYmICEkUGFyYW17Rm9yY2V9ICkgewogICAgICAgIHJldHVy
biAkSXNzdWVzOwogICAgfQoKICAgIG15ICRJc3N1ZXNKU09OOwogICAgbXkgJEVycm9yR2V0OwoK
ICAgIG15IEBTdGF0ZXMgPSBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6Oklzc3VlU2VhcmNo
U3RhdGVzJykgfHwgW10gfTsKCiAgICBteSAkU3RhdGVzU3RyaW5nID0gJyc7CiAgICBpZiAoIEBT
dGF0ZXMgKSB7CiAgICAgICAgJFN0YXRlc1N0cmluZyA9ICcgQU5EIHN0YXR1cyBJTiAoJyAuIGpv
aW4oJywnLCBtYXB7IHFxfiIkXyJ+IH1AU3RhdGVzICkgLiAnKSc7CiAgICB9CgogICAgbXkgJFBh
cmFtRGVzYyA9ICcnOwogICAgaWYgKCAkUGFyYW17VGVybX0gJiYgJFBhcmFte1Rlcm19ICF+IG17
XEFcKn14bXMgKSB7CiAgICAgICAgJFBhcmFtRGVzYyA9ICcgQU5EIGRlc2NyaXB0aW9uIH4gIicg
LiAkUGFyYW17VGVybX0gLiAnIic7CiAgICB9CgogICAgbXkgJFBhcmFtcyA9IHNwcmludGYgInBy
b2plY3Q9JXMlcyVzIiwgJFBhcmFte1Byb2plY3R9LCAkU3RhdGVzU3RyaW5nLCAkUGFyYW1EZXNj
OwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAog
ICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiBQ
IC4gICI6Oklzc3VlTGlzdDogUGFyYW1zIC0+ICIgLiAkUGFyYW1zLAogICAgICAgICk7CiAgICB9
CgogICAgZXZhbHsKICAgICAgICBteSAkTWF4UmVzdWx0cyA9ICRDb25maWdPYmplY3QtPkdldCgn
SklSQTo6SXNzdWVTZWFyY2hNYXhSZXN1bHRzJykgfHwgMzAwOwogICAgICAgICRJc3N1ZXNKU09O
ICAgID0gJFNlbGYtPntKSVJBQ2xpZW50fS0+UE9TVCgKICAgICAgICAgICAgJy9zZWFyY2gnLAog
ICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAganFsICAgICAg
ICA9PiAkUGFyYW1zLAogICAgICAgICAgICAgICAgbWF4UmVzdWx0cyA9PiAkTWF4UmVzdWx0cywK
ICAgICAgICAgICAgICAgIGZpZWxkcyAgICAgPT4gW3F3L2lkIGtleSBkZXNjcmlwdGlvbi9dLAog
ICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0gb3IgJEVycm9yR2V0ID0gJEA7CgogICAgaWYg
KCAkRXJyb3JHZXQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlv
cml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiBzcHJpbnRmIFAgLiAgIjo6
SXNzdWVMaXN0OiBjYW5ub3QgZ2V0IGlzc3VlIGxpc3Q6ICVzIiwKICAgICAgICAgICAgICAgICRF
cnJvckdldCwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gK3t9OwogICAgfQoKICAgIGlmICgg
JFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQ
cmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiBQIC4gICI6Oklzc3Vl
TGlzdDogSlNPTiAtPiAiCiAgICAgICAgICAgICAgICAuICRNYWluT2JqZWN0LT5EdW1wKCAkSXNz
dWVzSlNPTiApLAogICAgICAgICk7CiAgICB9CgogICAgbXkgQElzc3VlTGlzdDsKCiAgICBteSAk
UkU7CiAgICBpZiAoICRQYXJhbXtUZXJtfSApIHsKICAgICAgICAkUGFyYW17VGVybX0gPX4gc3tc
Kn17Lip9eG1zZzsKICAgICAgICAkUkUgICAgICAgICAgPSBxci8kUGFyYW17VGVybX0vaTsKICAg
IH0KCiAgICBJU1NVRUlURU06CiAgICBmb3IgbXkgJElzc3VlSXRlbSAoIEB7ICRJc3N1ZXNKU09O
LT57aXNzdWVzfSB8fCBbXSB9ICkgewogICAgICAgIG15ICRLZXkgID0gJElzc3VlSXRlbS0+e2tl
eX07CiAgICAgICAgbXkgJERlc2MgPSAkSXNzdWVJdGVtLT57ZmllbGRzfS0+e2Rlc2NyaXB0aW9u
fTsKICAgICAgICBteSAkSUQgICA9ICRJc3N1ZUl0ZW0tPntpZH07CgogICAgICAgIGlmICggJFBh
cmFte1Rlcm19ICkgewogICAgICAgICAgICBuZXh0IElTU1VFSVRFTSBpZiAkS2V5ICF+ICRSRSBh
bmQgJERlc2MgIX4gJFJFOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBASXNzdWVMaXN0LCB7CiAg
ICAgICAgICAgIFZhbHVlID0+ICRJRCwKICAgICAgICAgICAgTGFiZWwgPT4gc3ByaW50ZiggIiVz
IC0gJXMiLCAkS2V5LCAkRGVzYyApLAogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRTZWxmLT57
RGVidWd9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkg
PT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gUCAuICAiOjpJc3N1ZUxpc3Q6ICIg
LgogICAgICAgICAgICAgICAgJE1haW5PYmplY3QtPkR1bXAoIFxASXNzdWVMaXN0ICksCiAgICAg
ICAgKTsKICAgIH0KCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkQ2Fj
aGVUeXBlLAogICAgICAgIEtleSAgID0+ICdBbGwnLAogICAgICAgIFZhbHVlID0+IFxASXNzdWVM
aXN0LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1
cm4gXEBJc3N1ZUxpc3Q7Cn0KCjE7Cgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAxNiBQZXJsLVNlcnZpY2VzLmRlLCBodHRwOi8vcGVybC1z
ZXJ2aWNlcy5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpDdXN0b206OkF0dGFjaG1lbnRFdmVudHM7
Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9
IDE7CgojIGRpc2FibGUgcmVkZWZpbmUgd2FybmluZ3MgaW4gdGhpcyBzY29wZQp7CiAgICBubyB3
YXJuaW5ncyAncmVkZWZpbmUnOwoKICAgIHN1YiBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRp
Y2xlV3JpdGVBdHRhY2htZW50IHsKICAgICAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25m
aWcnKTsKICAgIAogICAgICAgIG15ICRTdG9yYWdlTW9kdWxlID0gJENvbmZpZ09iamVjdC0+R2V0
KCdUaWNrZXQ6OlN0b3JhZ2VNb2R1bGUnKQogICAgICAgICAgICB8fCAnS2VybmVsOjpTeXN0ZW06
OlRpY2tldDo6QXJ0aWNsZVN0b3JhZ2VEQic7CgogICAgICAgIG15ICRNZXRob2QgPSAkU3RvcmFn
ZU1vZHVsZSAuICc6OkFydGljbGVXcml0ZUF0dGFjaG1lbnQnOwoKICAgICAgICBteSAkU3VjY2Vz
cyA9ICRTZWxmLT4kTWV0aG9kKCAlUGFyYW0gKTsKCiAgICAgICAgIyB0cmlnZ2VyIGV2ZW50CiAg
ICAgICAgaWYgKCAkU3VjY2VzcyApIHsKICAgICAgICAgICAgbXkgJUFydGljbGUgPSAkU2VsZi0+
QXJ0aWNsZUdldCgKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkUGFyYW17QXJ0aWNsZUlE
fSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAg
ICAgKTsKCiAgICAgICAgICAgIG15ICVBdHRhY2htZW50SW5kZXggPSAkU2VsZi0+QXJ0aWNsZUF0
dGFjaG1lbnRJbmRleFJhdygKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkUGFyYW17QXJ0
aWNsZUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICgkRmlsZUlEKSA9IGdyZXB7
CiAgICAgICAgICAgICAgICAkQXR0YWNobWVudEluZGV4eyRffS0+e0ZpbGVuYW1lfSBlcSAkUGFy
YW17RmlsZW5hbWV9CiAgICAgICAgICAgIH0ga2V5cyAlQXR0YWNobWVudEluZGV4OwoKICAgICAg
ICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRh
Y2htZW50V3JpdGUnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAg
ICAgIEFydGljbGVJRCA9PiAkUGFyYW17QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICBG
aWxlbmFtZSAgPT4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICBGaWxlSUQg
ICAgPT4gJFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRB
cnRpY2xle1RpY2tldElEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBVc2Vy
SUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBy
ZXR1cm4gJFN1Y2Nlc3M7CiAgICB9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05T
CgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRl
dGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0
aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6
Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0L0V2ZW50L0FkZEFydGljbGVUb0pJUkFJc3N1ZS5w
bSAtIGV2ZW50IG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwOC0yMDE2IGNhdFdvcmtYIEdtYkgg
aHR0cDovL3d3dy5jYXR3b3JreC5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFC
U09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmls
ZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5v
dCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3Bs
LnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6QWRkQXJ0
aWNsZVRvSklSQUlzc3VlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIExpc3Q6OlV0
aWwgcXcoZmlyc3QpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygKICAgIEtlcm5lbDo6
Q29uZmlnCiAgICBLZXJuZWw6OlN5c3RlbTo6TG9nCiAgICBLZXJuZWw6OlN5c3RlbTo6TWFpbgog
ICAgS2VybmVsOjpTeXN0ZW06OlRpY2tldAogICAgS2VybmVsOjpTeXN0ZW06OlVzZXIKICAgIEtl
cm5lbDo6U3lzdGVtOjpUaWNrZXRKSVJBCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQ
YXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAk
U2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIG15ICRDb25maWdPYmpl
Y3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJFNlbGYtPntEZWJ1
Z30gICA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6RGVidWcnKTsKCiAgICByZXR1cm4gJFNl
bGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAk
VGlja2V0T2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNr
ZXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVs
OjpDb25maWcnKTsKICAgIG15ICRNYWluT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICAgID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgIG15ICRMb2dPYmplY3QgICAg
ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFRp
Y2tldEpJUkFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0
SklSQScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXco
RGF0YSBFdmVudCBDb25maWcgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVk
fSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3Jp
dHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQh
XG4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0K
CiAgICBmb3IgbXkgJE5lZWRlZERhdGEgKHF3KFRpY2tldElEKSkgewogICAgICAgIGlmICggISRQ
YXJhbXtEYXRhfS0+eyROZWVkZWREYXRhfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9n
KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1l
c3NhZ2UgID0+ICJOZWVkICROZWVkZWREYXRhIGluIERhdGEhXG4iLAogICAgICAgICAgICApOwoK
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVXNlcklEID0gJFBh
cmFte1VzZXJJRH07CgogICAgIyBHZXQgY3VycmVudCB1c2VyIGRhdGEKICAgIG15ICVDdXJyZW50
VXNlciA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJFVzZXJJ
RCwKICAgICk7CgogICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0
LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3Nh
Z2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6IFVzZXJJRDogJFVzZXJJRCBVc2VyTG9naW46
ICRDdXJyZW50VXNlcntVc2VyTG9naW59XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRD
dXJyZW50VXNlcntVc2VyTG9naW59IGVxICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0SklSQScp
LT57SW5jb21pbmdVc2VyfSApIHsKICAgIAlyZXR1cm4gMTsKICAgIH0KCiAgICBteSAkVGlja2V0
SUQgPSAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH07CgogICAgaWYgKCAkU2VsZi0+e0RlYnVnfSAp
IHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1
ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6IFRpY2tl
dElEOiAkVGlja2V0SUQgRXZlbnQ6ICRQYXJhbXtFdmVudH1cbiIKICAgICAgICApOwogICAgfQoK
IyAgICByZXR1cm4gMSBpZiAkUGFyYW17RXZlbnR9IG5lICdBcnRpY2xlQ3JlYXRlJzsKCiAgICBt
eSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEICAg
ICAgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBEeW5h
bWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxIGlmICElVGlja2V0OwoKICAgIG15
ICRJc3N1ZUlEID0gJFRpY2tldHtEeW5hbWljRmllbGRfSklSQUlzc3VlSUR9OwogICAgcmV0dXJu
IDEgaWYgISRJc3N1ZUlEOwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExv
Z09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAg
ICBNZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBUaWNrZXRJRDogJFRpY2tldHtU
aWNrZXRJRH0gVGl0bGU6ICRUaWNrZXR7VGl0bGV9ICIKICAgICAgICAgICAgICAgIC4gIlN0YXRl
OiAkVGlja2V0e1N0YXRlfVxuIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBcnRpY2xlSW5k
ZXggPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNr
ZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhQEFy
dGljbGVJbmRleDsKCiAgICBteSAlQXJ0aWNsZSA9ICV7ICRBcnRpY2xlSW5kZXhbLTFdIH07Cgog
ICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFD
S0FHRV9fIC4gIjo6UnVuKCk6IEFydGljbGVJRDogJEFydGljbGV7QXJ0aWNsZUlEfSBUaXRsZTog
JEFydGljbGV7VGl0bGV9XG4iLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgISVB
cnRpY2xlOwoKICAgIG15ICRBbGxvd2VkU3RhdGVzTmFtZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQo
J1RpY2tldEpJUkEnKS0+e09UUlNUaWNrZXRBbGxvd2VkU3RhdGVzNFVwZGF0ZX07CiAgICBteSBA
QWxsb3dlZFN0YXRlc0xpc3QgID0gc3BsaXQgLywvLCAkQWxsb3dlZFN0YXRlc05hbWVzOwoKICAg
IGlmICggIWZpcnN0IHsgJF8gZXEgJFRpY2tldHtTdGF0ZX0gfSBAQWxsb3dlZFN0YXRlc0xpc3Qg
KSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5m
bycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6IE9UUlMg
VGlja2V0IG5vdCBpbiAkQWxsb3dlZFN0YXRlc05hbWVzOiAkVGlja2V0e1N0YXRlfVxuIiwKICAg
ICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkSklSQUlzc3VlID0gJFRp
Y2tldEpJUkFPYmplY3QtPklzc3VlQ29tbWVudCgKICAgICAgICBJc3N1ZUlEICAgPT4gJElzc3Vl
SUQsCiAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xle0FydGljbGVJRH0sCiAgICAgICAgVXNl
cklEICAgID0+ICRQYXJhbXtVc2VySUR9IC8vIDEsCiAgICAgICAgQ29tbWVudCAgID0+ICRBcnRp
Y2xle0JvZHl9LAogICAgKTsKCiAgICAjIFRPRE86IElmIGVycm9yIG9jY3VyZWQgc2hvdyBub3Rp
ZmljYXRpb24gYmFyCgogICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2Jq
ZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1l
c3NhZ2UgID0+IHNwcmludGYgX19QQUNLQUdFX18gLiAiOiBVcGRhdGUgcmVzcG9uc2UgJXNcbiIs
CiAgICAgICAgICAgICAgICAkTWFpbk9iamVjdC0+RHVtcCggJEpJUkFJc3N1ZSApLAogICAgICAg
ICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0L0V2ZW50L0Nsb3NlSklSQUlzc3VlLnBtIC0gZXZl
bnQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTYgY2F0V29ya1ggR21iSCBodHRwOi8v
d3d3LmNhdHdvcmt4LmRlCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2Vp
dmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Lgoj
IC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpDbG9zZUpJUkFJc3N1
ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0KTsK
Cm91ciAkVkVSU0lPTiA9IDQuMDAxOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygKICAg
IEtlcm5lbDo6U3lzdGVtOjpMb2cKICAgIEtlcm5lbDo6U3lzdGVtOjpDb25maWcKICAgIEtlcm5l
bDo6U3lzdGVtOjpKU09OCiAgICBLZXJuZWw6OlN5c3RlbTo6VGlja2V0CiAgICBLZXJuZWw6OlN5
c3RlbTo6VGlja2V0SklSQQopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9
IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7
fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtl
cm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57RGVidWd9ICAgPSAk
Q29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6OkRlYnVnJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgpz
dWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRpY2tldE9i
amVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAg
ICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmln
Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6
U3lzdGVtOjpMb2cnKTsKICAgIG15ICRUaWNrZXRKSVJBT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldEpJUkEnKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICAg
ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGNoZWNr
IG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnIFVz
ZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRM
b2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAg
ICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIVxuIiwKICAgICAgICAgICAgKTsK
CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICROZWVkZWRE
YXRhIChxdyhUaWNrZXRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVk
RGF0YX0gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFBy
aW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVl
ZGVkRGF0YSBpbiBEYXRhIVxuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CiAgICB9CgogICAgbXkgJFRpY2tldElEID0gJFBhcmFte0RhdGF9LT57VGlja2V0
SUR9OwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9n
KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9
PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBUaWNrZXRJRDogJFRpY2tldElEIEV2ZW50OiAkUGFy
YW17RXZlbnR9XG4iLAogICAgICAgICk7CiAgICB9CgojICAgIHJldHVybiAxIGlmICRQYXJhbXtF
dmVudH0gbmUgJ1RpY2tldFN0YXRlVXBkYXRlJzsKCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9i
amVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAg
ICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAp
OwoKICAgIHJldHVybiAxIGlmICElVGlja2V0OwoKICAgIG15ICRVc2VySUQgPSAkUGFyYW17VXNl
cklEfTsKCiAgICAjIEdldCBjdXJyZW50IHVzZXIgZGF0YQogICAgbXkgJUN1cnJlbnRVc2VyID0g
JFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAg
KTsKCiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygK
ICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4g
X19QQUNLQUdFX18gLiAiOjpSdW4oKTogVXNlcklEOiAkVXNlcklEIFVzZXJMb2dpbjogJEN1cnJl
bnRVc2Vye1VzZXJMb2dpbn1cbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRDdXJyZW50
VXNlcntVc2VyTG9naW59IGVxICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0SklSQScpLT57SW5j
b21pbmdVc2VyfSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCgogICAgbXkgJEpJUkFJc3N1
ZUlEID0gJFRpY2tldHtEeW5hbWljRmllbGRfSklSQUlzc3VlSUR9OwogICAgcmV0dXJuIDEgaWYg
ISRKSVJBSXNzdWVJRDsKCiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dP
YmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAg
TWVzc2FnZSAgPT4gX19QQUNLQUdFX18gLiAiOjpSdW4oKTogVGlja2V0SUQ6ICRUaWNrZXR7VGlj
a2V0SUR9IFRpdGxlOiAkVGlja2V0e1RpdGxlfSAiCiAgICAgICAgICAgICAgICAuICJTdGF0ZTog
JFRpY2tldHtTdGF0ZX1cbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnID0gJENv
bmZpZ09iamVjdC0+R2V0KCdUaWNrZXRKSVJBJykgfHwgIHt9OwoKICAgIG15ICRBbGxvd2VkU3Rh
dGVzTmFtZXMgPSAkQ29uZmlnLT57T1RSU1RpY2tldEFsbG93ZWRTdGF0ZXM0Q2xvc2V9OwogICAg
bXkgQEFsbG93ZWRTdGF0ZXNMaXN0ICA9IHNwbGl0IC8sLywgJEFsbG93ZWRTdGF0ZXNOYW1lczsK
CiAgICBpZiAoICFmaXJzdHsgJF8gZXEgJFRpY2tldHtTdGF0ZX0gfSBAQWxsb3dlZFN0YXRlc0xp
c3QgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAn
aW5mbycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6IE9U
UlMgVGlja2V0IG5vdCBpbiAkQWxsb3dlZFN0YXRlc05hbWVzOiAkVGlja2V0e1N0YXRlfVxuIiwK
ICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkVVJMID0gJENvbmZp
Zy0+e1VSTH07CgogICAgbXkgJFZhbGlkTGljZW5zZSA9ICRUaWNrZXRKSVJBT2JqZWN0LT5DaGVj
a1ZhbGlkTGljZW5zZSgpOwogICAgaWYgKCAkVmFsaWRMaWNlbnNlICE9IDEgKSB7CiAgICAgICAg
JExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAg
ICAgICBNZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBpbnZhbGlkIGxpY2Vuc2Ug
YXQgJFVSTCwgc3RhdHVzICRWYWxpZExpY2Vuc2UiLAogICAgICAgICk7CgogICAgICAgIHJldHVy
biAxOyAjIHNraXAgdGhlIHJlc3QKICAgIH0KCiAgICBteSAkSXNzdWUgPSAkVGlja2V0SklSQU9i
amVjdC0+SXNzdWVHZXQoIElzc3VlID0+ICRKSVJBSXNzdWVJRCApOwoKICAgIGlmICggJElzc3Vl
LT57ZXJyb3J9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3Jp
dHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gX19QQUNLQUdFX18gLiAiOjpS
dW4oKTogY2Fubm90IGZldGNoIHRoZSBKSVJBIElzc3VlICIKICAgICAgICAgICAgICAgIC4gJEpJ
UkFJc3N1ZUlEIC4gIiBmb3IgIiAuICRUaWNrZXR7VGlja2V0SUR9IC4gIjogJEAiLAogICAgICAg
ICk7CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7
CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcn
LAogICAgICAgICAgICBNZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBpc3N1ZSBl
eGlzdHNcbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXJ0aWNsZUluZGV4ID0gJFRpY2tl
dE9iamVjdC0+QXJ0aWNsZUdldCgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0e1RpY2tldElE
fSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIE9yZGVyICAgID0+ICdERVNDJywgIyBE
RVNDLEFTQyAtIGRlZmF1bHQgaXMgQVNDCiAgICAgICAgTGltaXQgICAgPT4gMSwKICAgICk7Cgog
ICAgbXkgJFJlc3VsdCA9ICRUaWNrZXRKSVJBT2JqZWN0LT5Jc3N1ZUNsb3NlKAogICAgICAgIElz
c3VlSUQgPT4gJEpJUkFJc3N1ZUlELAogICAgICAgIENvbW1lbnQgPT4gIk9UUlM6ICRUaWNrZXR7
U3RhdGV9XG5cbi0tLS0tLS0tXG4iIC4gJEFydGljbGVJbmRleFswXS0+e0JvZHl9LAogICAgKTsK
CiAgICBpZiAoICRSZXN1bHQtPntlcnJvcn0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAog
ICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiBf
X1BBQ0tBR0VfXyAuICI6IENhbm5vdCBjbG9zZSBpc3N1ZSAkSklSQUlzc3VlSUQ6ICRSZXN1bHQt
PntlcnJvcn1cbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0L0V2ZW50L0NyZWF0ZUpJUkFJc3N1ZS5wbSAtIGV2
ZW50IG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwOC0yMDE1IGNhdFdvcmtYIEdtYkggaHR0cDov
L3d3dy5jYXR3b3JreC5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRF
TFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZ
SU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNl
aXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4K
IyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6Q3JlYXRlSklSQUlz
c3VlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIExpc3Q6OlV0aWwgcXcoZmlyc3Qp
OwoKb3VyICRWRVJTSU9OID0gJzQuMDAxJzsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gcXco
CiAgICBLZXJuZWw6OkNvbmZpZwogICAgS2VybmVsOjpTeXN0ZW06OkxvZwogICAgS2VybmVsOjpT
eXN0ZW06OlRpY2tldAogICAgS2VybmVsOjpTeXN0ZW06OlRpY2tldEpJUkEKKTsKCnN1YiBuZXcg
ewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNo
IGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7
CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmln
Jyk7CiAgICAkU2VsZi0+e0RlYnVnfSAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdKSVJBOjpEZWJ1
ZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwoKICAgIG15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2Vy
bmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAg
PSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkVGlja2V0
SklSQU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXRKSVJB
Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRh
IEV2ZW50IENvbmZpZykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAg
ICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJv
cicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIVxuIiwKICAgICAg
ICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15
ICROZWVkZWREYXRhIChxdyhUaWNrZXRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0t
PnskTmVlZGVkRGF0YX0gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAi
TmVlZCAkTmVlZGVkRGF0YSBpbiBEYXRhIVxuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFRpY2tldElEID0gJFBhcmFte0RhdGF9
LT57VGlja2V0SUR9OwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09i
amVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBN
ZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBUaWNrZXRJRDogJFRpY2tldElEXG4i
LAogICAgICAgICk7CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3Jp
dHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gX19QQUNLQUdFX18gLiAiOjpS
dW4oKTogVGlja2V0SUQ6ICRUaWNrZXRJRCBFdmVudDogJFBhcmFte0V2ZW50fVxuIiwKICAgICAg
ICApOwogICAgfQoKIyAgICByZXR1cm4gMSBpZiAkUGFyYW17RXZlbnR9IG5lICdUaWNrZXRTdGF0
ZVVwZGF0ZSc7CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAg
ICAgICBUaWNrZXRJRCAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICAgICAgID0+
IDEsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAh
JVRpY2tldDsKCiAgICBteSAkSklSQUlzc3VlSUQgPSAkVGlja2V0e0R5bmFtaWNGaWVsZF9KSVJB
SXNzdWVJRH07CiAgICByZXR1cm4gMSBpZiAkSklSQUlzc3VlSUQ7CgogICAgaWYgKCAkU2VsZi0+
e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5
ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6UnVu
KCk6IFRpY2tldElEOiAkVGlja2V0e1RpY2tldElEfSBUaXRsZTogJFRpY2tldHtUaXRsZX0gIgog
ICAgICAgICAgICAgICAgLiAiU3RhdGU6ICRUaWNrZXR7U3RhdGV9XG4iLAogICAgICAgICk7CiAg
ICB9CgogICAgbXkgJEFsbG93ZWRTdGF0ZXNOYW1lcyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlj
a2V0SklSQScpLT57T1RSU1RpY2tldEFsbG93ZWRTdGF0ZXM0Q3JlYXRlfTsKICAgIG15IEBBbGxv
d2VkU3RhdGVzTGlzdCAgPSBzcGxpdCAvLC8sICRBbGxvd2VkU3RhdGVzTmFtZXM7CgogICAgaWYg
KCAhIGZpcnN0eyAkXyBlcSAkVGlja2V0e1N0YXRlfSB9IEBBbGxvd2VkU3RhdGVzTGlzdCApIHsK
ICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywK
ICAgICAgICAgICAgTWVzc2FnZSAgPT4gX19QQUNLQUdFX18gLiAiOjpSdW4oKTogT1RSUyBUaWNr
ZXQgbm90IGluICRBbGxvd2VkU3RhdGVzTmFtZXM6ICRUaWNrZXR7U3RhdGV9XG4iLAogICAgICAg
ICk7CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIG15ICRKSVJBSXNzdWUgPSAkVGlja2V0
SklSQU9iamVjdC0+SXNzdWVDcmVhdGUoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldHtUaWNr
ZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7ICMgRklYTUU6IFVzZXJJRCA/Cgog
ICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFD
S0FHRV9fIC4gIjogVXBkYXRlIHJlc3BvbnNlICRKSVJBSXNzdWVcbiIsCiAgICAgICAgKTsKICAg
IH0KCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0L0V2ZW50L1NlbmRBdHRhY2htZW50c1RvSklSQUlz
c3VlLnBtIC0gZXZlbnQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTYgY2F0V29ya1gg
R21iSCBodHRwOi8vd3d3LmNhdHdvcmt4LmRlCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdp
dGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3Nl
ZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBk
aWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz
L2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpT
ZW5kQXR0YWNobWVudHNUb0pJUkFJc3N1ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91
ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gcXcoCiAgICBLZXJuZWw6OkNvbmZpZwogICAgS2VybmVs
OjpTeXN0ZW06OkxvZwogICAgS2VybmVsOjpTeXN0ZW06Ok1haW4KICAgIEtlcm5lbDo6U3lzdGVt
OjpUaWNrZXQKICAgIEtlcm5lbDo6U3lzdGVtOjpVc2VyCiAgICBLZXJuZWw6OlN5c3RlbTo6VGlj
a2V0SklSQQopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAg
ICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJs
ZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00t
PkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57RGVidWd9ICAgPSAkQ29uZmlnT2Jq
ZWN0LT5HZXQoJ0pJUkE6OkRlYnVnJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsK
ICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRpY2tldE9iamVjdCAgICAg
PSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkQ29u
ZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBt
eSAkTWFpbk9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpN
YWluJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6U3lzdGVtOjpVc2VyJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRUaWNrZXRKSVJBT2JqZWN0ID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldEpJUkEnKTsKCiAgICAjIGNo
ZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmln
IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAg
ICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAg
ICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIVxuIiwKICAgICAgICAgICAg
KTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICROZWVk
ZWREYXRhIChxdyhUaWNrZXRJRCBBcnRpY2xlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0Rh
dGF9LT57JE5lZWRlZERhdGF9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAg
ICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAg
PT4gIk5lZWQgJE5lZWRlZERhdGEgaW4gRGF0YSFcbiIsCiAgICAgICAgICAgICk7CgogICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VySUQgPSAkUGFyYW17VXNl
cklEfTsKCiAgICAjIEdldCBjdXJyZW50IHVzZXIgZGF0YQogICAgbXkgJFRpY2tldElEID0gJFBh
cmFte0RhdGF9LT57VGlja2V0SUR9OwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAg
ICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAg
ICAgICAgICBNZXNzYWdlICA9PiBzcHJpbnRmIF9fUEFDS0FHRV9fIC4gIjo6UnVuKCk6IFRpY2tl
dElEOiAlcyBBcnRpY2xlSUQ6ICVzIEZpbGVuYW1lOiAlc1xuIiwKICAgICAgICAgICAgICAgICRU
aWNrZXRJRCwgJFBhcmFte0RhdGF9LT57QXJ0aWNsZUlEfSwgJFBhcmFte0RhdGF9LT57RmlsZW5h
bWV9CiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlQXJ0aWNsZSA9ICRUaWNrZXRPYmplY3QtPkFy
dGljbGVHZXQoCiAgICAgICAgQXJ0aWNsZUlEICAgICA9PiAkUGFyYW17RGF0YX0tPntBcnRpY2xl
SUR9LAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBEeW5hbWljRmllbGRzID0+
IDEsCiAgICApOwoKICAgIHJldHVybiAxIGlmICElQXJ0aWNsZTsKICAgIHJldHVybiAxIGlmICEk
QXJ0aWNsZXtEeW5hbWljRmllbGRfQXJ0aWNsZVNlbnRUb0pJUkF9OwoKICAgIG15ICRJc3N1ZUlE
ID0gJEFydGljbGV7RHluYW1pY0ZpZWxkX0pJUkFJc3N1ZUlEfTsKICAgIHJldHVybiAxIGlmICEk
SXNzdWVJRDsKCiAgICAkVGlja2V0SklSQU9iamVjdC0+QXR0YWNobWVudHNTZW5kKAogICAgICAg
IElzc3VlICAgICA9PiAkSXNzdWVJRCwKICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGV7QXJ0
aWNsZUlEfSwKICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0gLy8gMSwKICAgICAg
ICBGaWxlSUQgICAgPT4gJFBhcmFte0RhdGF9LT57RmlsZUlEfSwKICAgICAgICBGaWxlbmFtZSAg
PT4gJFBhcmFte0RhdGF9LT57RmlsZW5hbWV9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0L0V2ZW50L1VwZGF0ZUpJUkFJc3N1ZS5wbSAtIGV2
ZW50IG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwOC0yMDE1IGNhdFdvcmtYIEdtYkggaHR0cDov
L3d3dy5jYXR3b3JreC5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRF
TFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZ
SU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNl
aXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4K
IyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VXBkYXRlSklSQUlz
c3VlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIExpc3Q6OlV0aWwgcXcoZmlyc3Qp
OwoKb3VyICRWRVJTSU9OID0gJzQuMDAxJzsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gcXco
CiAgICBLZXJuZWw6OkNvbmZpZwogICAgS2VybmVsOjpTeXN0ZW06OkxvZwogICAgS2VybmVsOjpT
eXN0ZW06OlRpY2tldAogICAgS2VybmVsOjpTeXN0ZW06OlVzZXIKICAgIEtlcm5lbDo6U3lzdGVt
OjpUaWNrZXRKSVJBCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87
CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9Owog
ICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJFNlbGYtPntEZWJ1Z30gICA9ICRDb25m
aWdPYmplY3QtPkdldCgnSklSQTo6RGVidWcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBS
dW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGlja2V0T2JqZWN0
ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15
ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsK
ICAgIG15ICRVc2VyT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0
ZW06OlVzZXInKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFRpY2tldEpJUkFPYmplY3QgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0SklSQScpOwoKICAgICMgY2hlY2sgbmVl
ZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGF0YSBFdmVudCBDb25maWcgVXNlcklE
KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJExvZ09i
amVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhXG4iLAogICAgICAgICAgICApOwoKICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJE5lZWRlZERhdGEg
KHF3KFRpY2tldElEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+eyROZWVkZWREYXRh
fSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3Jp
dHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWRE
YXRhIGluIERhdGEhXG4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgIH0KICAgIH0KCiAgICBteSAkVXNlcklEID0gJFBhcmFte1VzZXJJRH07CgogICAgIyBHZXQg
Y3VycmVudCB1c2VyIGRhdGEKICAgIG15ICVDdXJyZW50VXNlciA9ICRVc2VyT2JqZWN0LT5HZXRV
c2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CgogICAgaWYgKCAkU2Vs
Zi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9y
aXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjo6
UnVuKCk6IFVzZXJJRDogJFVzZXJJRCBVc2VyTG9naW46ICRDdXJyZW50VXNlcntVc2VyTG9naW59
XG4iLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkQ3VycmVudFVzZXJ7VXNlckxvZ2lufSBl
cSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEpJUkEnKS0+e0luY29taW5nVXNlcn0gKSB7CiAg
ICAJcmV0dXJuIDE7CiAgICB9CgogICAgbXkgJFRpY2tldElEID0gJFBhcmFte0RhdGF9LT57VGlj
a2V0SUR9OwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+
TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdl
ICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBUaWNrZXRJRDogJFRpY2tldElEIEV2ZW50OiAk
UGFyYW17RXZlbnR9XG4iLAogICAgICAgICk7CiAgICB9CgogICAgIyMgY2Fubm90IHRvICp0aGF0
KiBlYXNpbHksIG1heWJlIHdlJ2xsIGNoZWNrIHRoZSBYTUwtUHJvcHMgbGF0ZXIgb24gIyNyZXR1
cm4gMSBpZiAkUGFyYW17RXZlbnR9IG5lICdUaWNrZXRTdGF0ZVVwZGF0ZSc7CgogICAgbXkgJVRp
Y2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+
ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgRHluYW1pY0Zp
ZWxkcyA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhJVRpY2tldDsKCiAgICBteSAkSklS
QUlzc3VlSUQgPSAkVGlja2V0e0R5bmFtaWNGaWVsZF9KSVJBSXNzdWVJRH07CiAgICByZXR1cm4g
MSBpZiAhJEpJUkFJc3N1ZUlEOwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAg
JExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAg
ICAgICBNZXNzYWdlICA9PiBfX1BBQ0tBR0VfXyAuICI6OlJ1bigpOiBUaWNrZXRJRDogJFRpY2tl
dHtUaWNrZXRJRH0gVGl0bGU6ICRUaWNrZXR7VGl0bGV9ICIKICAgICAgICAgICAgICAgIC4gIlN0
YXRlOiAkVGlja2V0e1N0YXRlfVxuIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRBbGxvd2Vk
U3RhdGVzTmFtZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldEpJUkEnKS0+e09UUlNUaWNr
ZXRBbGxvd2VkU3RhdGVzNFVwZGF0ZX07CiAgICBteSBAQWxsb3dlZFN0YXRlc0xpc3QgID0gc3Bs
aXQgLywvLCAkQWxsb3dlZFN0YXRlc05hbWVzOwoKICAgIGlmICggIWZpcnN0eyAkXyBlcSAkVGlj
a2V0e1N0YXRlfSB9IEBBbGxvd2VkU3RhdGVzTGlzdCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5M
b2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgTWVzc2FnZSAg
PT4gX19QQUNLQUdFX18gLiAiOjpSdW4oKTogT1RSUyBUaWNrZXQgbm90IGluICRBbGxvd2VkU3Rh
dGVzTmFtZXM6ICRUaWNrZXR7U3RhdGV9XG4iLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAx
OwogICAgfQoKICAgIG15ICRKSVJBSXNzdWUgPSAkVGlja2V0SklSQU9iamVjdC0+SXNzdWVVcGRh
dGUoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldHtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklE
ICAgPT4gMSwKICAgICk7ICMgRklYTUU6IFVzZXJJRCA/CgogICAgaWYgKCAkU2VsZi0+e0RlYnVn
fSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdk
ZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IF9fUEFDS0FHRV9fIC4gIjogVXBkYXRlIHJl
c3BvbnNlICRKSVJBSXNzdWVcbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoK
MTsK
IyAgLS0KIyAgS2VybmVsL1N5c3RlbS9UaWNrZXRKSVJBLnBtIC0gY29yZSBtb2R1bGUKIyAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTYgY2F0V29ya1ggR21iSCBodHRwOi8vd3d3LmNhdHdvcmt4LmRl
CiMgIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFku
IEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNl
IGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwg
c2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBL
ZXJuZWw6OlN5c3RlbTo6VGlja2V0SklSQTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVz
ZSBSRVNUOjpDbGllbnQ7CnVzZSBKSVJBOjpSRVNUOwp1c2UgVGltZTo6UGllY2U7CnVzZSBTY2Fs
YXI6OlV0aWwgcXcobG9va3NfbGlrZV9udW1iZXIpOwp1c2UgTGlzdDo6VXRpbCBxdyhmaXJzdCk7
Cgp1c2UgY29uc3RhbnQgUCA9PiBfX1BBQ0tBR0VfXzsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVz
ID0gcXcoCiAgICBLZXJuZWw6OkNvbmZpZwogICAgS2VybmVsOjpTeXN0ZW06OkxvZwogICAgS2Vy
bmVsOjpTeXN0ZW06Ok1haW4KICAgIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQKICAgIEtlcm5lbDo6
U3lzdGVtOjpVc2VyCiAgICBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkCiAgICBLZXJuZWw6
OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kCiAgICBLZXJuZWw6OlN5c3RlbTo6RHluYW1p
Y0ZpZWxkVmFsdWUKICAgIEtlcm5lbDo6U3lzdGVtOjpKU09OCiAgICBLZXJuZWw6OlN5c3RlbTo6
Q2FjaGUKKTsKCgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAg
IyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxl
c3MoICRTZWxmLCAkVHlwZSApOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9
ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAk
U2VsZi0+e0RlYnVnfSAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdKSVJBOjpEZWJ1ZycpOwog
ICAgJFNlbGYtPntDb25maWd9ICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0SklSQScp
IHx8IHt9OwogICAgJFNlbGYtPntKSVJBQ2xpZW50fSA9IEpJUkE6OlJFU1QtPm5ldygKICAgICAg
ICAkU2VsZi0+e0NvbmZpZ30tPntVUkx9LAogICAgICAgICRTZWxmLT57Q29uZmlnfS0+e1VzZXJ9
LAogICAgICAgICRTZWxmLT57Q29uZmlnfS0+e1Bhc3N3b3JkfSwKICAgICk7CgogICAgbXkgJFZl
cmlmeVNTTCA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6U1NMVmVyaWZ5Jyk7CiAgICBpZiAo
ICEkVmVyaWZ5U1NMICkgewogICAgICAgIG15ICRMb2FkZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKAogICAgICAgICAgICAnTmV0OjpTU0xlYXkn
LAogICAgICAgICAgICBTaWxlbnQgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICgkTG9hZGVk
KSB7CiAgICAgICAgICAgICRTZWxmLT57SklSQUNsaWVudH0tPntyZXN0fS0+Z2V0VXNlcmFnZW50
KCktPnNzbF9vcHRzKCB2ZXJpZnlfaG9zdG5hbWUgPT4gMCApOwogICAgICAgICAgICAkU2VsZi0+
e0pJUkFDbGllbnR9LT57cmVzdH0tPmdldFVzZXJhZ2VudCgpLT5zc2xfb3B0cyggU1NMX3ZlcmZp
eV9tb2RlID0+IE5ldDo6U1NMZWF5OjpWRVJJRllfTk9ORSgpICk7CiAgICAgICAgfQogICAgfQoK
ICAgICRTZWxmLT57SklSQUR5bmFtaWNGaWVsZH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5h
bWljRmllbGRHZXQoIE5hbWUgPT4gJ0pJUkFJc3N1ZUlEJyApOwoKICAgICRTZWxmLT57Q2FjaGVU
eXBlfSA9ICdKSVJBQVBJJzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9ICRDb25maWdPYmplY3Qt
PkdldCgnSklSQTo6Q2FjaGVUVEwnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIElzc3Vl
Q2xvc2UoKQoKQ2xvc2UgYW4gaXNzdWUgaW4gSklSQQoKPWN1dAoKc3ViIElzc3VlQ2xvc2Ugewog
ICAgbXkgKCRTZWxmLCAlUGFyYW0pID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTWFpbk9iamVjdCA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyBjaGVjayBmb3Ig
bmVlZGVkIGRhdGEKICAgIGZvciBteSAkTmVlZGVkICggcXcvSXNzdWVJRC8gKSB7CiAgICAgICAg
aWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAg
ICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2Fn
ZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2xvc2VUcmFuc2l0aW9uID0gJFNlbGYtPntDb25m
aWd9LT57V29ya2Zsb3dDbG9zZUFjdGlvbk5hbWV9IC8vICdEb25lJzsKCiAgICBteSAkVHJhbnNp
dGlvbnM7CiAgICBteSAkRXJyb3JUcmFuc2l0aW9uczsKCiAgICBldmFsewogICAgICAgICRUcmFu
c2l0aW9ucyA9ICRTZWxmLT57SklSQUNsaWVudH0tPkdFVCgKICAgICAgICAgICAgJy9pc3N1ZS8n
IC4gJFBhcmFte0lzc3VlSUR9IC4gJy90cmFuc2l0aW9ucycsCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIGV4cGFuZCA9PiAndHJhbnNpdGlvbi5maWVsZHMnLAogICAgICAgICAgICB9LAog
ICAgICAgICk7CgogICAgICAgIDE7CiAgICB9IG9yICRFcnJvclRyYW5zaXRpb25zID0gJEA7Cgog
ICAgaWYgKCAkRXJyb3JUcmFuc2l0aW9ucyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAg
ICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNw
cmludGYgUCAuICAiOjpJc3N1ZUNsb3NlOiBjYW5ub3QgZ2V0IHRyYW5zaXRpb25zIHRoZSBKSVJB
IElzc3VlIGZvciAlczogJXMiLAogICAgICAgICAgICAgICAgJFBhcmFte0lzc3VlSUR9LCAkRXJy
b3JUcmFuc2l0aW9ucywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gK3sgZXJyb3IgPT4gJEVy
cm9yVHJhbnNpdGlvbnMgfTsKICAgIH0KCiAgICBteSAoJFRyYW5zaXRpb24pID0gZ3JlcHsgJF8t
PntuYW1lfSBlcSAkQ2xvc2VUcmFuc2l0aW9uIH1AeyAkVHJhbnNpdGlvbnMtPnt0cmFuc2l0aW9u
c30gfHwgW10gfTsKCiAgICBpZiAoICEkVHJhbnNpdGlvbiApIHsKICAgICAgICByZXR1cm4gK3sg
ZXJyb3IgPT4gJ05vIHRyYW5zaXRpb24gZm91bmQgZm9yICcgLiAkQ2xvc2VUcmFuc2l0aW9uIH07
CiAgICB9CgogICAgbXkgJEVycm9yQ2xvc2U7CgogICAgbXkgJU9wdHMgPSAoCiAgICAgICAgdHJh
bnNpdGlvbiA9PiB7CiAgICAgICAgICAgIGlkID0+ICRUcmFuc2l0aW9uLT57aWR9LAogICAgICAg
IH0KICAgICk7CgogICAgaWYgKCAkUGFyYW17Q29tbWVudH0gKSB7CiAgICAgICAgJE9wdHN7dXBk
YXRlfSA9IHsKICAgICAgICAgICAgY29tbWVudCA9PiBbCiAgICAgICAgICAgICAgICB7IGFkZCA9
PiB7IGJvZHkgPT4gJFBhcmFte0NvbW1lbnR9IH0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9
OwogICAgfQoKICAgIGV2YWx7CiAgICAgICAgJFNlbGYtPntKSVJBQ2xpZW50fS0+UE9TVCgKICAg
ICAgICAgICAgJy9pc3N1ZS8nIC4gJFBhcmFte0lzc3VlSUR9IC4gJy90cmFuc2l0aW9ucycsCiAg
ICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICBcJU9wdHMsCiAgICAgICAgKTsKCiAgICAgICAg
MTsKICAgIH0gb3IgJEVycm9yQ2xvc2UgPSAkQDsKCiAgICBpZiAoICRFcnJvckNsb3NlICkgewog
ICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywK
ICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4gICI6Oklzc3VlQ2xvc2U6IGNhbm5v
dCBjbG9zZSBpc3N1ZSAlczogJXMgZm9yICVzIiwKICAgICAgICAgICAgICAgICRQYXJhbXtJc3N1
ZUlEfSwgJEVycm9yVHJhbnNpdGlvbnMsCiAgICAgICAgICAgICAgICAkTWFpbk9iamVjdC0+RHVt
cChcJU9wdHMpLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAreyBlcnJvciA9PiAkRXJyb3JD
bG9zZSB9OwogICAgfQoKICAgIHJldHVybiAre307Cn0KCj1pdGVtIElzc3VlR2V0KCkKCkdldCBh
biBpc3N1ZSBmcm9tIEpJUkEKCiAgICBteSAkSXNzdWVEYXRhID0gJE9iamVjdC0+SXNzdWVHZXQo
CiAgICAgICAgSXNzdWUgPT4gJElzc3VlS2V5LAogICAgKTsKCj1jdXQKCnN1YiBJc3N1ZUdldCB7
CiAgICBteSAoJFNlbGYsICVQYXJhbSkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRl
ZCBkYXRhCiAgICBmb3IgbXkgJE5lZWRlZCAoIHF3L0lzc3VlLyApIHsKICAgICAgICBpZiAoICEk
UGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAi
TmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQogICAgfQoKICAgIG15ICRJc3N1ZTsKICAgIG15ICRFcnJvckdldDsKCiAgICBldmFsewog
ICAgICAgICRJc3N1ZSA9ICRTZWxmLT57SklSQUNsaWVudH0tPkdFVCggJy9pc3N1ZS8nIC4gJFBh
cmFte0lzc3VlfSApOwogICAgfSBvciAkRXJyb3JHZXQgPSAkQDsKCiAgICBpZiAoICRFcnJvckdl
dCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdl
cnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYgUCAuICAiOjpJc3N1ZUNsb3Nl
OiBjYW5ub3QgY2xvc2UgaXNzdWUgJXM6ICVzIiwKICAgICAgICAgICAgICAgICRQYXJhbXtJc3N1
ZUlEfSwgJEVycm9yR2V0LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAreyBlcnJvciA9PiAk
RXJyb3JHZXQgfTsKICAgIH0KCiAgICByZXR1cm4gJElzc3VlOwp9Cgo9aXRlbSBJc3N1ZUNyZWF0
ZSgpCgpjcmVhdGVzIGFuIGlzc3VlIGluIHRoZSBjb25maWd1cmVkIEpJUkEgc3lzdGVtIHVzaW5n
IFJFU1QKCiAgICBteSAkSXNzdWUgPSAkVGlja2V0SklSQU9iamVjdC0+SXNzdWVDcmVhdGUoCiAg
ICAgICAgVGlja2V0SUQgICAgICAgPT4gJFRpY2tldElELCAgICAgICAgICAgICAgICAgICMgdGhl
IFRpY2tldElELCBtYW5kYXRvcnkKICAgICAgICBBcnRpY2xlSUQgICAgICA9PiAkQXJ0aWNsZUlE
LCAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdG8gZGVmaW5lIHdoaWNoIGFydGljbGUgaXMg
c2VudCB0byBKSVJBCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFVzZXJJRCAgICAgICAgICAg
ICAgICAgICAgICMgdGhlIFVzZXJJRCwgbWFuZGF0b3J5CiAgICApOwoKcmV0dXJuczoKCiAgICAk
SXNzdWUgPSB7CiAgICAgICAgaWQgPT4gMTAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgaXNzdWUgaWQgaW4gSklSQSwgc3RhcnRzIGZyb20gMTAwMDAKICAgICAgICBrZXkgPT4g
UFJPSi0xLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpc3N1ZSBrZXkgYXMgdXNlZCBp
biB0aGUgd2ViaW50ZXJmYWNlLCA8UHJvaj4tPE51bWJlcj4sIHN0YXJ0cyBmcm9tIDEKICAgICAg
ICBbLi4uXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwbGVudHkgb2Yg
b3RoZXIgZmllbGRzIGFzIGRlZmluZWQgaW4gdGhlIEFQSQogICAgfQoKPWN1dAoKc3ViIElzc3Vl
Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVj
dCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAk
TWFpbk9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7
CiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmln
Jyk7CiAgICBteSAkVGlja2V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpUaWNrZXQnKTsKICAgIG15ICRERlZhbHVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyk7CiAgICBteSAkQmFja2VuZE9iamVj
dCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tl
bmQnKTsKCgogICAgIyBjaGVjayBmb3IgbmVlZGVkIGRhdGEKICAgIGZvciBteSAkTmVlZGVkICgg
cXcvVGlja2V0SUQgVXNlcklELyApIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7
CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+
ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAg
ICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15
ICVBcnRpY2xlOwoKICAgIGlmICggJFBhcmFte0FydGljbGVJRH0gKSB7CiAgICAgICAgJUFydGlj
bGUgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAg
ID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgPT4gJFBhcmFt
e0FydGljbGVJRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwog
ICAgfQogICAgZWxzZSB7CiAgICAgICAgJUFydGljbGUgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xl
Rmlyc3RBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJ
RH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAg
IGlmICggISVBcnRpY2xlICkgewogICAgICAgICVBcnRpY2xlID0gJFRpY2tldE9iamVjdC0+VGlj
a2V0R2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAg
ICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgg
JFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQ
cmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYgUCAuICI6
Oklzc3VlQ3JlYXRlOiBUaWNrZXRJRDogJXMgPT0gJXMgVGl0bGU6ICVzIFRleHQ6ICVzIiwKICAg
ICAgICAgICAgICAgICRQYXJhbXtUaWNrZXRJRH0sICRBcnRpY2xle1RpY2tldElEfSwgJEFydGlj
bGV7VGl0bGV9LCAkQXJ0aWNsZXtCb2R5fSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRWYWxp
ZExpY2Vuc2UgPSAkU2VsZi0+Q2hlY2tWYWxpZExpY2Vuc2UoKTsKICAgIGlmICggJFZhbGlkTGlj
ZW5zZSAhPSAxICkgewogICAgICAgIG15ICRVUkwgPSAkU2VsZi0+e0NvbmZpZ30tPntVUkx9Owog
ICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywK
ICAgICAgICAgICAgTWVzc2FnZSAgPT4gUCAuICI6Oklzc3VlQ3JlYXRlOiBpbnZhbGlkIGxpY2Vu
c2UgYXQgJFVSTCwgc3RhdHVzICRWYWxpZExpY2Vuc2UiLAogICAgICAgICk7CgogICAgICAgIHJl
dHVybiAreyBlcnJvciA9PiAnTm8gdmFsaWQgbGljZW5zZScgfTsgIyBza2lwIHRoZSByZXN0CiAg
ICB9CgogICAgbXkgJFJlcG9ydGVyID0gJFNlbGYtPntDb25maWd9LT57UmVwb3J0ZXJ9OwogICAg
bXkgJEFzc2lnbmVlID0gJFBhcmFte0Fzc2lnbmVlfSB8fCAkU2VsZi0+e0NvbmZpZ30tPntBc3Np
Z25lZX07CgogICAgIyByZWFkICdQcm9qZWN0JyBmZWxkIGZyb20gICJTeXNDb25maWciIGluIE9U
UlMKICAgIG15ICRQcm9qZWN0ID0gJFBhcmFte1Byb2plY3R9IHx8ICRTZWxmLT57Q29uZmlnfS0+
e1Byb2plY3R9OwoKICAgICMgcmVhZCAnSXNzdWVUeXBlJyBmZWxkIGZyb20gICJTeXNDb25maWci
IGluIE9UUlMKICAgIG15ICRJc3N1ZVR5cGUgICA9ICRQYXJhbXtJc3N1ZVR5cGV9IHx8ICRTZWxm
LT57Q29uZmlnfS0+e0lzc3VlVHlwZX07CiAgICBteSAkRmllbGROYW1lICAgPSAnSklSQUlzc3Vl
SUQnOwogICAgbXkgJEpJUkFJc3N1ZUlEID0gJEFydGljbGV7IkR5bmFtaWNGaWVsZF8iIC4gJEZp
ZWxkTmFtZX07CgogICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0
LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgTWVzc2Fn
ZSAgPT4gc3ByaW50ZiBQIC4gIjo6SXNzdWVDcmVhdGU6IEpJUkFJc3N1ZUlEKHByZSk6ICclcycg
RHluYW1pY0ZpZWxkSUQ6ICVzICIsCiAgICAgICAgICAgICAgICAoICRKSVJBSXNzdWVJRCB8fCAn
JyApLCAkRmllbGROYW1lLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJElzc3VlID0ge307CiAg
ICBteSAkVXNlZEFydGljbGVJRDsKCiAgICBpZiAoJEpJUkFJc3N1ZUlEKSB7CgogICAgICAgICRJ
c3N1ZSA9ICRTZWxmLT5Jc3N1ZUdldCgKICAgICAgICAgICAgSXNzdWUgPT4gJEpJUkFJc3N1ZUlE
LAogICAgICAgICk7CgogICAgICAgIGlmICggISRJc3N1ZSAmJiAkU2VsZi0+e0RlYnVnfSApIHsK
ICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4g
J2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICBzcHJpbnRmIFAgLiAiOjpJc3N1
ZUNyZWF0ZTogY2Fubm90IGZldGNoIHRoZSBKSVJBIElzc3VlICVzIGZvciAlcyIsCiAgICAgICAg
ICAgICAgICAgICAgJEpJUkFJc3N1ZUlELCAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICAp
OwoKICAgICAgICAgICAgcmV0dXJuICt7IGVycm9yID0+ICdDYW5ub3QgZmV0Y2ggSXNzdWUnIH07
CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRDdXN0b21GaWVsZCA9ICdj
dXN0b21maWVsZF8nIC4gKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6Ok9UUlNUaWNrZXRJREZp
ZWxkJykgfHwgMTAwMDAgKTsKICAgICAgICBteSAkSklSQUNyZWF0ZVBhcmFtcyA9IHsKICAgICAg
ICAgICAgcHJvamVjdCAgICAgICA9PiB7IGtleSA9PiAkUHJvamVjdCB9LAogICAgICAgICAgICBp
c3N1ZXR5cGUgICAgID0+IHsgbmFtZSA9PiAkSXNzdWVUeXBlIH0sCiAgICAgICAgICAgIHN1bW1h
cnkgICAgICAgPT4gJEFydGljbGV7VGl0bGV9LAogICAgICAgICAgICBkZXNjcmlwdGlvbiAgID0+
ICRBcnRpY2xle0JvZHl9LAogICAgICAgICAgICByZXBvcnRlciAgICAgID0+IHsgbmFtZSA9PiAk
UmVwb3J0ZXIgfSwKICAgICAgICAgICAgYXNzaWduZWUgICAgICA9PiB7IG5hbWUgPT4gJEFzc2ln
bmVlIH0sCiAgICAgICAgICAgICRDdXN0b21GaWVsZCAgPT4gJFBhcmFte1RpY2tldElEfSwKICAg
ICAgICB9OwoKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6Tm9Bc3NpZ25l
ZScpICkgewogICAgICAgICAgICBkZWxldGUgJEpJUkFDcmVhdGVQYXJhbXMtPnthc3NpZ25lZX07
CiAgICAgICAgfQoKICAgICAgICAkSklSQUNyZWF0ZVBhcmFtcyA9ICRTZWxmLT5NYXBGaWVsZHMo
ICRKSVJBQ3JlYXRlUGFyYW1zLCAlQXJ0aWNsZSk7CgogICAgICAgIGlmICggJFNlbGYtPntEZWJ1
Z30gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9y
aXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4g
ICI6Oklzc3VlQ3JlYXRlOiBQYXJhbWV0ZXJzOiAlcyIsCiAgICAgICAgICAgICAgICAgICAgJE1h
aW5PYmplY3QtPkR1bXAoJEpJUkFDcmVhdGVQYXJhbXMpLAogICAgICAgICAgICApOwogICAgICAg
IH0KCiAgICAgICAgbXkgJEVycm9yQ3JlYXRlOwogICAgICAgIGV2YWwgewogICAgICAgICAgICAk
SXNzdWUgPSAkU2VsZi0+e0pJUkFDbGllbnR9LT5QT1NUKAogICAgICAgICAgICAgICAgJy9pc3N1
ZScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICt7IGZpZWxkcyA9PiAk
SklSQUNyZWF0ZVBhcmFtcyB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgMTsKICAgICAg
ICB9IG9yICRFcnJvckNyZWF0ZSA9ICRAOwogCiAgICAgICAgaWYgKCAkRXJyb3JDcmVhdGUgKSB7
CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+
ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBzcHJpbnRmIFAgLiAgIjo6SXNz
dWVDcmVhdGU6IGNhbm5vdCBjcmVhdGUgdGhlIEpJUkEgSXNzdWUgZm9yICVzOiAlcyIsCiAgICAg
ICAgICAgICAgICAgICAgJFBhcmFte1RpY2tldElEfSwgJEVycm9yQ3JlYXRlLAogICAgICAgICAg
ICApOwoKICAgICAgICAgICAgcmV0dXJuICt7IGVycm9yID0+ICRFcnJvckNyZWF0ZSB9OwogICAg
ICAgIH0KCiAgICAgICAgJFVzZWRBcnRpY2xlSUQgPSAkQXJ0aWNsZXtBcnRpY2xlSUR9OwoKICAg
ICAgICAkU2VsZi0+QXR0YWNobWVudHNTZW5kKAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFy
dGljbGV7QXJ0aWNsZUlEfSwKICAgICAgICAgICAgSXNzdWUgICAgID0+ICRJc3N1ZS0+e2tleX0s
CiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAg
ICAgICBteSAkU3VjY2VzcyA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAg
RHluYW1pY0ZpZWxkQ29uZmlnID0+ICRTZWxmLT57SklSQUR5bmFtaWNGaWVsZH0sCiAgICAgICAg
ICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQXJ0aWNsZXtUaWNrZXRJRH0sCiAgICAgICAgICAg
IFZhbHVlICAgICAgICAgICAgICA9PiAkSXNzdWUtPntrZXl9LAogICAgICAgICAgICBVc2VySUQg
ICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAk
U2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAg
ICAgICAgUHJpb3JpdHkgPT4gJ2luZm8nLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3By
aW50ZiBQIC4gIjo6SXNzdWVDcmVhdGU6IEpJUkFJc3N1ZUlEKHBvc3QpOiAlcyBEeW5hbWljRmll
bGRJRDogJXMiLAogICAgICAgICAgICAgICAgICAgICRJc3N1ZS0+e2tleX0sICRGaWVsZE5hbWUs
CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAg
ICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBzcHJp
bnRmIFAgLiAiOjpJc3N1ZUNyZWF0ZTogU3VjY2VzczogJXMiLCAkU3VjY2VzcywKICAgICAgICAg
ICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICREYXRhICAgPSB7CiAgICAgICAgICAgIG9iamVj
dCA9PiB7CiAgICAgICAgICAgICAgICB1cmwgICA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAg
ICAgICIlczovLyVzLyVzL2luZGV4LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9
JXMiLAogICAgICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKSwK
ICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKSwKICAgICAgICAg
ICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyksCiAgICAgICAgICAg
ICAgICAgICAgJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAg
ICAgICB0aXRsZSA9PiBzcHJpbnRmKCAiT1RSUyBUaWNrZXQjJXMgKCVzKSIsICRBcnRpY2xle1Rp
Y2tldE51bWJlcn0sICRQYXJhbXtUaWNrZXRJRH0gKSwKICAgICAgICAgICAgfSwKICAgICAgICB9
OwoKICAgICAgICBteSAkUmVzdWx0OwogICAgICAgIGV2YWwgewogICAgICAgICAgICAkUmVzdWx0
ID0gJFNlbGYtPntKSVJBQ2xpZW50fS0+UE9TVCgKICAgICAgICAgICAgICAgICcvaXNzdWUvJyAu
ICRJc3N1ZS0+e2tleX0gLiAnL3JlbW90ZWxpbmsnLAogICAgICAgICAgICAgICAgdW5kZWYsCiAg
ICAgICAgICAgICAgICAkRGF0YSwKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICBp
ZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAg
ICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9
PiBzcHJpbnRmIFAgLiAiOjpJc3N1ZUNyZWF0ZTogUmVtb3RlbGluayAoJXMvJXMpIHJlc3VsdCAl
cyIsCiAgICAgICAgICAgICAgICAgICAgJElzc3VlLT57a2V5fSwgJFBhcmFte1RpY2tldElEfSwK
ICAgICAgICAgICAgICAgICAgICAkTWFpbk9iamVjdC0+RHVtcCgkUmVzdWx0KSwKICAgICAgICAg
ICAgKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmZXIgdGlja2V0IGhpc3RvcnkgLSBpZiBj
b25maWd1cmVkIGFuZCBpc3N1ZSBpcyBub3QgY3JlYXRlZCBiYXNlZAogICAgICAgICMgb24gYSBz
aW5nbGUgYXJ0aWNsZQogICAgICAgIG15ICRTaG91bGRUcmFuc2Zlckhpc3RvcnkgPSAkQ29uZmln
T2JqZWN0LT5HZXQoJ0pJUkE6OlRyYW5zZmVyVGlja2V0SGlzdG9yeScpOwogICAgICAgIGlmICgg
JFNob3VsZFRyYW5zZmVySGlzdG9yeSAmJiAhJFBhcmFte0FydGljbGVJRH0gJiYgJFVzZWRBcnRp
Y2xlSUQgKSB7CgogICAgICAgICAgICBteSBAQXJ0aWNsZUluZGV4ID0gJFRpY2tldE9iamVjdC0+
QXJ0aWNsZUdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0s
CiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAg
ICAgQ09NTUVOVDoKICAgICAgICAgICAgZm9yIG15ICRDb21tZW50ICggQEFydGljbGVJbmRleCAp
IHsKICAgICAgICAgICAgICAgIG5leHQgQ09NTUVOVCBpZiAkQ29tbWVudC0+e0FydGljbGVJRH0g
PT0gJFVzZWRBcnRpY2xlSUQ7CgogICAgICAgICAgICAgICAgbXkgJEpJUkFJc3N1ZSA9ICRTZWxm
LT5Jc3N1ZUNvbW1lbnQoCiAgICAgICAgICAgICAgICAgICAgSXNzdWVJRCAgID0+ICRJc3N1ZS0+
e2tleX0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRDb21tZW50LT57QXJ0aWNs
ZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0gLy8g
MSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgPT4gJENvbW1lbnQtPntCb2R5fSwKICAg
ICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPkF0dGFjaG1lbnRzU2VuZCgK
ICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJENvbW1lbnQtPntBcnRpY2xlSUR9LAog
ICAgICAgICAgICAgICAgICAgIElzc3VlICAgICA9PiAkSXNzdWUtPntrZXl9LAogICAgICAgICAg
ICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRJc3N1ZTsKfQoKPWl0
ZW0gSXNzdWVVcGRhdGUoKQoKdXBkYXRlcyBhbiBpc3N1ZSBpbiB0aGUgY29uZmlndXJlZCBKSVJB
IHN5c3RlbSB1c2luZyBSRVNUCgogICAgbXkgJElzc3VlID0gJFRpY2tldEpJUkFPYmplY3QtPklz
c3VlVXBkYXRlKAogICAgICAgIFRpY2tldElEICAgICAgID0+ICRUaWNrZXRJRCwgICAgICAgICAg
ICAgICAgICAjIHRoZSBUaWNrZXRJRCwgbWFuZGF0b3J5CiAgICAgICAgVXNlcklEICAgICAgICAg
PT4gJFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICMgdGhlIFVzZXJJRCwgbWFuZGF0b3J5CiAg
ICApOwoKcmV0dXJuczoKCiAgICAkSXNzdWUgPSB7CiAgICAgICAgaWQgPT4gMTAwMDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgaXNzdWUgaWQgaW4gSklSQSwgc3RhcnRzIGZyb20g
MTAwMDAKICAgICAgICBrZXkgPT4gUFJPSi0xLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBpc3N1ZSBrZXkgYXMgdXNlZCBpbiB0aGUgd2ViaW50ZXJmYWNlLCA8UHJvaj4tPE51bWJlcj4s
IHN0YXJ0cyBmcm9tIDEKICAgICAgICBbLi4uXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBwbGVudHkgb2Ygb3RoZXIgZmllbGRzIGFzIGRlZmluZWQgaW4gdGhlIEFQSQog
ICAgfQo9Y3V0CgpzdWIgSXNzdWVVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0
ZW06OkxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6Q29uZmlnJyk7CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2Vy
bmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBkYXRhCiAgICBm
b3IgbXkgJE5lZWRlZCAoIHF3L1RpY2tldElEIFVzZXJJRC8gKSB7CiAgICAgICAgaWYgKCAhJFBh
cmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAg
ICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5l
ZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IH0KICAgIH0KCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAg
ICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmll
bGRzID0+IDEKICAgICk7CgogICAgbXkgQEluZGV4ID0gJFRpY2tldE9iamVjdC0+QXJ0aWNsZUlu
ZGV4KAogICAgICAgIFRpY2tldElEICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBTZW5k
ZXJUeXBlID0+ICdBTEwnLAogICAgKTsKCiAgICBteSAlQXJ0aWNsZTsKCiAgICBpZiAoQEluZGV4
KSB7CiAgICAgICAgJUFydGljbGUgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAg
ICAgICBBcnRpY2xlSUQgICAgID0+ICRJbmRleFstMV0sCiAgICAgICAgICAgIER5bmFtaWNGaWVs
ZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAg
ICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAg
ICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYgUCAuICI6Oklzc3VlVXBkYXRlOiBUaWNrZXRJ
RDogJXMgPT0gJXMgVGl0bGU6ICVzIiwKICAgICAgICAgICAgICAgICRQYXJhbXtUaWNrZXRJRH0s
ICRUaWNrZXR7VGlja2V0SUR9LCAkVGlja2V0e1RpdGxlfSwKICAgICAgICApOwogICAgfQoKICAg
IG15ICRVUkwgPSAkU2VsZi0+e0NvbmZpZ30tPntVUkx9OwoKICAgIG15ICRWYWxpZExpY2Vuc2Ug
PSAkU2VsZi0+Q2hlY2tWYWxpZExpY2Vuc2UoKTsKICAgIGlmICggJFZhbGlkTGljZW5zZSAhPSAx
ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vy
cm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4gIjo6SXNzdWVVcGRhdGU6
IGludmFsaWQgbGljZW5zZSBhdCAlcywgc3RhdHVzICVzIiwKICAgICAgICAgICAgICAgICRVUkws
ICRWYWxpZExpY2Vuc2UsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHt9OyAjIHNraXAgdGhl
IHJlc3QKICAgIH0KCiAgICBteSAkUmVwb3J0ZXIgPSAkU2VsZi0+e0NvbmZpZ30tPntSZXBvcnRl
cn07CiAgICBteSAkQXNzaWduZWUgPSAkU2VsZi0+e0NvbmZpZ30tPntBc3NpZ25lZX07CgogICAg
IyByZWFkICdQcm9qZWN0JyBmZWxkIGZyb20gICJTeXNDb25maWciIGluIE9UUlMKICAgIG15ICRQ
cm9qZWN0ID0gJFNlbGYtPntDb25maWd9LT57UHJvamVjdH07CgogICAgIyByZWFkICdJc3N1ZVR5
cGUnIGZlbGQgZnJvbSAgIlN5c0NvbmZpZyIgaW4gT1RSUwogICAgbXkgJElzc3VlVHlwZSA9ICRT
ZWxmLT57Q29uZmlnfS0+e0lzc3VlVHlwZX07CiAgICBteSAkRmllbGROYW1lID0gJ0pJUkFJc3N1
ZUlEJzsKCiAgICBteSAkSklSQUlzc3VlSUQgPSAkVGlja2V0eydEeW5hbWljRmllbGRfJyAuICRG
aWVsZE5hbWV9OwoKICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVj
dC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgIE1lc3Nh
Z2UgID0+IHNwcmludGYgUCAuICI6Oklzc3VlVXBkYXRlOiBKSVJBSXNzdWVJRChwcmUpOiAnJXMn
IER5bmFtaWNGaWVsZElEOiAlcyIsCiAgICAgICAgICAgICAgICAkSklSQUlzc3VlSUQsICRGaWVs
ZE5hbWUsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkSXNzdWUgPSB7fTsKCiAgICBpZiAoICRK
SVJBSXNzdWVJRCApIHsKICAgICAgICBteSAkQ3VzdG9tRmllbGQgPSAnY3VzdG9tZmllbGRfJyAu
ICggJENvbmZpZ09iamVjdC0+R2V0KCdKSVJBOjpPVFJTVGlja2V0SURGaWVsZCcpIHx8IDEwMDAw
ICk7CgogICAgICAgIG15ICRKSVJBVXBkYXRlUGFyYW1zID0gewogICAgICAgICAgICAkQ3VzdG9t
RmllbGQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICB9OwoKICAgICAgICAkSklSQVVwZGF0
ZVBhcmFtcyA9ICRTZWxmLT5NYXBGaWVsZHMoICRKSVJBVXBkYXRlUGFyYW1zLCAlVGlja2V0LCAl
QXJ0aWNsZSApOwoKICAgICAgICBteSAkVXBkYXRlRXJyb3I7CgogICAgICAgIGV2YWx7CiAgICAg
ICAgICAgICRJc3N1ZSA9ICRTZWxmLT57SklSQUNsaWVudH0tPlBVVCgKICAgICAgICAgICAgICAg
ICIvaXNzdWUvIiAuICRKSVJBSXNzdWVJRCwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAg
ICAgICAgICAgeyBmaWVsZHMgPT4gJEpJUkFVcGRhdGVQYXJhbXMgfSwKICAgICAgICAgICAgKQog
ICAgICAgIH0gb3IgJFVwZGF0ZUVycm9yID0gJEA7CgogICAgICAgIGlmICggJFVwZGF0ZUVycm9y
ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0
eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4gIjo6
SXNzdWVVcGRhdGU6IEVycm9yIG9uIHVwZGF0ZTogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAg
JFVwZGF0ZUVycm9yLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4g
JElzc3VlIHx8ICdTdWNjZXNzJzsKfQoKPWl0ZW0gSXNzdWVMaW5rVG9PVFJTKCkKCmxpbmsgYW4g
ZXhpc3RpbmcgaXNzdWUgdG8gYW4gT1RSUyB0aWNrZXQuIFRoaXMgb3BlcmF0aW9uIHVwZGF0ZXMg
dGhlIGN1c3RvbSBmaWVsZCBob2xkaW5nIHRoZSBvdHJzIHRpY2tldCBpZCBvbiB0aGUgSklSQSBz
aWRlCmFuZCB0aGUgZHluYW1pYyBmaWVsZCB3aXRoIHRoZSBpc3N1ZSBpZCBvbiB0aGUgT1RSUyBz
aWRlCgogICAgbXkgJElzc3VlID0gJFRpY2tldEpJUkFPYmplY3QtPklzc3VlTGlua1RvT1RSUygK
ICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkVGlja2V0SUQsICAgICAgICAgICAgICAgICAgIyB0
aGUgVGlja2V0SUQsIG1hbmRhdG9yeQogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRVc2VySUQg
ICAgICAgICAgICAgICAgICAgICAjIHRoZSBVc2VySUQsIG1hbmRhdG9yeQogICAgKTsKCnJldHVy
bnM6CgogICAgJElzc3VlID0gewogICAgICAgIGlkID0+IDEwMDAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIGlzc3VlIGlkIGluIEpJUkEsIHN0YXJ0cyBmcm9tIDEwMDAwCiAgICAg
ICAga2V5ID0+IFBST0otMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXNzdWUga2V5
IGFzIHVzZWQgaW4gdGhlIHdlYmludGVyZmFjZSwgPFByb2o+LTxOdW1iZXI+LCBzdGFydHMgZnJv
bSAxCiAgICAgICAgWy4uLl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
cGxlbnR5IG9mIG90aGVyIGZpZWxkcyBhcyBkZWZpbmVkIGluIHRoZSBBUEkKICAgIH0KPWN1dAoK
c3ViIElzc3VlTGlua1RvT1RSUyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAg
IG15ICRMb2dPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okxv
ZycpOwogICAgbXkgJE1haW5PYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5
c3RlbTo6TWFpbicpOwogICAgbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFRpY2tldE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0
KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAg
ICAjIGNoZWNrIGZvciBuZWVkZWQgZGF0YQogICAgZm9yIG15ICROZWVkZWQgKCBxdy9UaWNrZXRJ
RCBVc2VySUQgSXNzdWVJRCBQcm9qZWN0LyApIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRl
ZH0gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9y
aXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVk
ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoK
ICAgIG15ICRVUkwgPSAkU2VsZi0+e0NvbmZpZ30tPntVUkx9OwoKICAgIG15ICRWYWxpZExpY2Vu
c2UgPSAkU2VsZi0+Q2hlY2tWYWxpZExpY2Vuc2UoKTsKICAgIGlmICggJFZhbGlkTGljZW5zZSAh
PSAxICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4g
J2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4gIjo6SXNzdWVMaW5r
VG9PVFJTOiBpbnZhbGlkIGxpY2Vuc2UgYXQgJXMsIHN0YXR1cyAlcyIsCiAgICAgICAgICAgICAg
ICAkVVJMLCAkVmFsaWRMaWNlbnNlLAogICAgICAgICk7CgogICAgICAgIHJldHVybiB7fTsgIyBz
a2lwIHRoZSByZXN0CiAgICB9CgogICAgIyByZWFkICdQcm9qZWN0JyBmZWxkIGZyb20gICJTeXND
b25maWciIGluIE9UUlMKICAgIG15ICRQcm9qZWN0ICAgICA9ICRQYXJhbXtQcm9qZWN0fTsKICAg
IG15ICRKSVJBSXNzdWVJRCA9ICRQYXJhbXtJc3N1ZUlEfTsKCiAgICBteSAkRmllbGROYW1lID0g
J0pJUkFJc3N1ZUlEJzsKCiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dP
YmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2luZm8nLAogICAgICAgICAgICBN
ZXNzYWdlICA9PiBzcHJpbnRmIFAgLiAiOjpJc3N1ZUxpbmtUb09UUlM6IFRpY2tldElEOiAnJXMn
IER5bmFtaWNGaWVsZElEOiAlcyIsCiAgICAgICAgICAgICAgICAkUGFyYW17VGlja2V0SUR9LCAk
RmllbGROYW1lLAogICAgICAgICk7CiAgICAgfQoKICAgIG15ICRDdXN0b21GaWVsZCA9ICdjdXN0
b21maWVsZF8nIC4gKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0pJUkE6Ok9UUlNUaWNrZXRJREZpZWxk
JykgfHwgMTAwMDAgKTsKCiAgICBteSAkSklSQVVwZGF0ZVBhcmFtcyA9IHsKICAgICAgICAkQ3Vz
dG9tRmllbGQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgIH07CgogICAgJEpJUkFVcGRhdGVQYXJh
bXMgPSAkU2VsZi0+TWFwRmllbGRzKCAkSklSQVVwZGF0ZVBhcmFtcyApOwoKICAgIGlmICggJFNl
bGYtPntEZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlv
cml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYgUCAuICI6Oklz
c3VlTGlua1RvT1RSUzogVXBkYXRlUGFyYW1zIC0+ICIKICAgICAgICAgICAgICAgIC4gJE1haW5P
YmplY3QtPkR1bXAoICRKSVJBVXBkYXRlUGFyYW1zICksCiAgICAgICAgKTsKICAgIH0KCiAgICBt
eSAkVXBkYXRlRXJyb3I7CgogICAgbXkgJElzc3VlID0ge307CiAgICBldmFsewogICAgICAgICRJ
c3N1ZSA9ICRTZWxmLT57SklSQUNsaWVudH0tPlBVVCgKICAgICAgICAgICAgIi9pc3N1ZS8iIC4g
JEpJUkFJc3N1ZUlELAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgeyBmaWVsZHMgPT4g
JEpJUkFVcGRhdGVQYXJhbXMgfSwKICAgICAgICApOwogICAgfSBvciAkVXBkYXRlRXJyb3IgPSAk
QDsKCiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygK
ICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2luZm8nLAogICAgICAgICAgICBNZXNzYWdlICA9PiBz
cHJpbnRmIFAgLiAiOjpJc3N1ZUxpbmtUb09UUlM6IElzc3VlIChmcm9tIFVwZGF0ZSkgLT4gIgog
ICAgICAgICAgICAgICAgLiAkTWFpbk9iamVjdC0+RHVtcCggJElzc3VlICksCiAgICAgICAgKTsK
ICAgIH0KCiAgICBpZiAoICRVcGRhdGVFcnJvciApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2co
CiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+
IHNwcmludGYgUCAuICI6Oklzc3VlTGlua1RvT1RSUzogRXJyb3Igb24gdXBkYXRlOiAlc1xuIiwK
ICAgICAgICAgICAgICAgICRVcGRhdGVFcnJvciwKICAgICAgICApOwoKICAgICAgICByZXR1cm4g
eyBlcnJvciA9PiAkVXBkYXRlRXJyb3IgfTsKICAgIH0KCiAgICBteSAkSXNzdWVJbmZvID0gJFNl
bGYtPklzc3VlR2V0KCBJc3N1ZSA9PiAkSklSQUlzc3VlSUQgKTsKCiAgICBteSAkU3VjY2VzcyA9
ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4g
JFNlbGYtPntKSVJBRHluYW1pY0ZpZWxkfSwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4g
JFBhcmFte1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJElzc3VlSW5m
by0+e2tleX0sCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAog
ICAgKTsKCiAgICByZXR1cm4gJElzc3VlIHx8IHt9Owp9Cgo9aXRlbSBJc3N1ZUNvbW1lbnQoKQoK
Y3JlYXRlcyBhbiBpc3N1ZSBpbiB0aGUgY29uZmlndXJlZCBKSVJBIHN5c3RlbSB1c2luZyBTT0FQ
CgogICAgbXkgJElzc3VlID0gJFRpY2tldEpJUkFPYmplY3QtPklzc3VlQ29tbWVudCgKICAgICAg
ICBJc3N1ZUlEID0+ICRUaWNrZXRJRCwgIyB0aGUgSXNzdWVJRCwgbWFuZGF0b3J5CiAgICAgICAg
Q29tbWVudCA9PiAkQXJ0aWNsZUlEICMgdGhlIGNvbW1lbnQsIG1hbmRhdG9yeQogICAgKTsKCnJl
dHVybnM6CgogICAgJElzc3VlID0gewogICAgICAgIGlkID0+IDEwMDAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjIGlzc3VlIGlkIGluIEpJUkEsIHN0YXJ0cyBmcm9tIDEwMDAwCiAg
ICAgICAga2V5ID0+IFBST0otMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXNzdWUg
a2V5IGFzIHVzZWQgaW4gdGhlIHdlYmludGVyZmFjZSwgPFByb2o+LTxOdW1iZXI+LCBzdGFydHMg
ZnJvbSAxCiAgICAgICAgWy4uLl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgcGxlbnR5IG9mIG90aGVyIGZpZWxkcyBhcyBkZWZpbmVkIGluIHRoZSBBUEkKICAgIH0KCj1j
dXQKCnN1YiBJc3N1ZUNvbW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsgIyMg
RklYTUUgaW1wbGVtZW50CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3Qg
PSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBt
eSAkQmFja2VuZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06
OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBkYXRhCiAg
ICBmb3IgbXkgJE5lZWRlZCAoIHF3L0lzc3VlSUQgQ29tbWVudCBBcnRpY2xlSUQgVXNlcklELyAp
IHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRMb2dPYmpl
Y3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAg
ICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVUkwgPSAkU2VsZi0+e0NvbmZp
Z30tPntVUkx9OwoKICAgIG15ICRWYWxpZExpY2Vuc2UgPSAkU2VsZi0+Q2hlY2tWYWxpZExpY2Vu
c2UoKTsKICAgIGlmICggJFZhbGlkTGljZW5zZSAhPSAxICkgewogICAgICAgICRMb2dPYmplY3Qt
PkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2Fn
ZSAgPT4gc3ByaW50ZiBQIC4gIjo6SXNzdWVDb21tZW50OiBpbnZhbGlkIGxpY2Vuc2UgYXQgJXMs
IHN0YXR1cyAlcyIsCiAgICAgICAgICAgICAgICAkVVJMLCAkVmFsaWRMaWNlbnNlLAogICAgICAg
ICk7CgogICAgICAgIHJldHVybiB7fTsgIyBza2lwIHRoZSByZXN0CiAgICB9CgogICAgbXkgJElz
c3VlID0ge307CgogICAgaWYgKCAkUGFyYW17SXNzdWVJRH0gKSB7CiAgICAgICAgbXkgJEVycm9y
Q29tbWVudDsKICAgICAgICBldmFsIHsKICAgICAgICAgICAgJElzc3VlID0gJFNlbGYtPntKSVJB
Q2xpZW50fS0+UE9TVCgKICAgICAgICAgICAgICAgICIvaXNzdWUvIiAuICRQYXJhbXtJc3N1ZUlE
fSAuICIvY29tbWVudCIsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHsg
Ym9keSA9PiAkUGFyYW17Q29tbWVudH0gfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIDE7
CiAgICAgICAgfSBvciAkRXJyb3JDb21tZW50ID0gJEA7CgogICAgICAgIGlmICggJEVycm9yQ29t
bWVudCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJp
b3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYgUCAu
ICAiOjpJc3N1ZUNvbW1lbnQ6IGNhbm5vdCBjcmVhdGUgY29tbWVudCBmb3IgaXNzdWUgJXM6ICVz
IiwKICAgICAgICAgICAgICAgICAgICAkUGFyYW17SXNzdWVJRH0sICRFcnJvckNvbW1lbnQsCiAg
ICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gK3sgZXJyb3IgPT4gJEVycm9yQ29tbWVu
dCB9OwogICAgICAgIH0KCiAgICB9CgogICAgbXkgJFNlbnRGaWVsZCA9ICREeW5hbWljRmllbGRP
YmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAnQXJ0aWNsZVNlbnRUb0pJUkEnICk7CiAg
ICBteSAkU3VjY2VzcyAgID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgIER5bmFt
aWNGaWVsZENvbmZpZyA9PiAkU2VudEZpZWxkLAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9
PiAkUGFyYW17QXJ0aWNsZUlEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gMSwKICAg
ICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJl
dHVybiAkSXNzdWU7Cn0KCj1pdGVtIEF0dGFjaG1lbnRzU2VuZCgpCgo9Y3V0CgpzdWIgQXR0YWNo
bWVudHNTZW5kIHsKICAgIG15ICgkU2VsZiwgJVBhcmFtKSA9IEBfOwoKICAgIG15ICRUaWNrZXRP
YmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBt
eSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycp
OwogICAgbXkgJE1haW5PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVt
OjpNYWluJyk7CgogICAgZm9yIG15ICROZWVkZWQgKCBxdyhBcnRpY2xlSUQgSXNzdWUgVXNlcklE
KSApIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRMb2dP
YmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAg
ICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgbGlzdCBvZiB0
aGUgYXR0YWNobWVudHMKICAgIG15ICVJbmRleCA9ICRUaWNrZXRPYmplY3QtPkFydGljbGVBdHRh
Y2htZW50SW5kZXgoCiAgICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlSUR9LAogICAg
ICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdXNlcmFn
ZW50IHVzZWQgYnkgdGhlIEppcmEgb2JqZWN0IHRvIGRvIHRoZSBmaWxldXBsb2FkcwogICAgbXkg
JFJlc3QgPSAkU2VsZi0+e0pJUkFDbGllbnR9LT57cmVzdH07CiAgICBteSAkVUEgICA9ICRSZXN0
LT5nZXRVc2VyYWdlbnQoKTsKCiAgICAjIGdldCBJRCBvZiBlYWNoIGF0dGFjaG1lbnQgZmlsZSwg
dGhlbiB0aGUgY29ycmVzcG9uZGluZyBhdHRhY2htZW50IGZpbGUKICAgIHdoaWxlICggbXkgKCAk
RmlsZUlELCAkQXR0YWNoSCApID0gZWFjaCAlSW5kZXggKSB7CgogICAgICAgICMgcmV0cmlldmUg
dGhlIG5hbWUgYW5kIGNvbnRlbnQgb2YgZWFjaCBhdHRhY2htZW50IGZpbGUsCiAgICAgICAgIyBz
dG9yZSB0aGVtIGludG8gQGZpbGVuYW1lcyBhbmQgQGF0dGFjaG1lbnRzIHJlc3BlY3RpdmVseS4K
ICAgICAgICBteSBARmlsZW5hbWVzOwogICAgICAgIG15IEBBdHRhY2htZW50czsKCiAgICAgICAg
bXkgJUF0dGFjaG1lbnQgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlQXR0YWNobWVudCgKICAgICAg
ICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlSUR9LAogICAgICAgICAgICBGaWxlSUQg
ICAgPT4gJEZpbGVJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAog
ICAgICAgICk7CgogICAgICAgIG5leHQgaWYgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IGVxICdmaWxl
LTInOwoKICAgICAgICBpZiAoICRQYXJhbXtGaWxlbmFtZX0gJiYgJEF0dGFjaG1lbnR7RmlsZW5h
bWV9IG5lICRQYXJhbXtGaWxlbmFtZX0gKSB7CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoK
ICAgICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5M
b2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICBN
ZXNzYWdlICA9PiBzcHJpbnRmIFAgLiAiOjpBdHRhY2htZW50c1NlbmQ6IEhhbmRsaW5nIGF0dGFj
aG1lbnQ6ICVzIiwgJEF0dGFjaG1lbnR7RmlsZW5hbWV9CiAgICAgICAgICAgICk7CiAgICAgICAg
fQoKICAgICAgICBteSAkSXNzdWVLZXkgPSAkUGFyYW17SXNzdWV9OwoKICAgICAgICBteSAkUmVz
cG9uc2UgPSAkVUEtPnBvc3QoCiAgICAgICAgICAgICRSZXN0LT5nZXRIb3N0KCkgLiAiL2lzc3Vl
LyRJc3N1ZUtleS9hdHRhY2htZW50cyIsCiAgICAgICAgICAgICV7JFJlc3QtPntfaGVhZGVyc319
LAogICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nID0+ICdub2NoZWNrJywKICAgICAgICAg
ICAgJ0NvbnRlbnQtVHlwZScgICAgICA9PiAnZm9ybS1kYXRhJywKICAgICAgICAgICAgQ29udGVu
dCAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICBmaWxlID0+IFsKICAgICAgICAgICAg
ICAgICAgICB1bmRlZiwgICAgICAgICAgICAgICAgICAgIyBhcyB3ZSBoYXZlIHRoZSBjb250ZW50
IGFscmVhZCwgd2UgZG8gbm90IHBhc3MgYSBmaWxlbmFtZQogICAgICAgICAgICAgICAgICAgICRB
dHRhY2htZW50e0ZpbGVuYW1lfSwgICAjIGZpbGVuYW1lIGZvciB0aGUgc2VydmVyCiAgICAgICAg
ICAgICAgICAgICAnQ29udGVudC1UeXBlJyA9PiAkQXR0YWNobWVudHtDb250ZW50VHlwZX0sCiAg
ICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkQXR0YWNobWVudHtDb250ZW50fSwK
ICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKCiAgICAgICAgaWYg
KCAhJFJlc3BvbnNlLT5pc19zdWNjZXNzICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2co
CiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVz
c2FnZSAgPT4gc3ByaW50ZiBQIC4gIjo6QXR0YWNobWVudHNTZW5kOiBDYW5ub3QgYXR0YWNoIGZp
bGUgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IHRvIGlzc3VlICRJc3N1ZUtleSAtPiAiCiAgICAgICAg
ICAgICAgICAgICAgLiAkUmVzcG9uc2UtPnN0YXR1c19saW5lLAogICAgICAgICAgICApOwoKICAg
ICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Rl
YnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYgUCAuICI6OkF0dGFjaG1l
bnRzU2VuZDogSGVhZGVyIC0+ICIgLiAkTWFpbk9iamVjdC0+RHVtcCAoICRSZXN0LT57X2hlYWRl
cnN9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFNlbGYtPntE
ZWJ1Z30gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFBy
aW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBzcHJpbnRmIFAg
LiAiOjpBdHRhY2htZW50c1NlbmQ6IGF0dGFjaGVkIGZpbGUgJEF0dGFjaG1lbnR7RmlsZW5hbWV9
IC0+ICIKICAgICAgICAgICAgICAgICAgICAuICRSZXNwb25zZS0+c3RhdHVzX2xpbmUsCiAgICAg
ICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CgoKPWl0ZW0gRmllbGRzR2V0KCkKClJldHJpZXZl
IGZpZWxkIGRlZmluaXRpb25zIGZyb20gSklSQS4gVGhlIHJlc3VsdCBpcyBjYWNoZWQgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMuCgogICAgbXkgJEZpZWxkcyA9ICRPYmplY3QtPkZpZWxkc0dldCgp
OwoKPWN1dAoKc3ViIEZpZWxkc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpM
b2cnKTsKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZUtleSA9ICdGaWVsZHNHZXQnOwoKICAgICRQYXJh
bXtSZXR1cm59IHx8PSAnJzsKCiAgICBpZiAoICRQYXJhbXtSZXR1cm59ICYmIGxjICRQYXJhbXtS
ZXR1cm59IGVxICd0eXBlcycgKSB7CiAgICAgICAgJENhY2hlS2V5ID0gJ0ZpZWxkVHlwZXMnOwog
ICAgfQogICAgZWxzaWYgKCAkUGFyYW17UmV0dXJufSAmJiBsYyAkUGFyYW17UmV0dXJufSBlcSAn
c3RhbmRhcmQnICkgewogICAgICAgICRDYWNoZUtleSA9ICdTdGFuZGFyZEZpZWxkcyc7CiAgICB9
CgogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAkU2Vs
Zi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJl
dHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgIG15ICRGaWVsZHM7CiAgICBteSAkRmllbGRUeXBl
czsKICAgIG15ICRTdGFuZGFyZEZpZWxkczsKCiAgICBteSAkRXJyb3JGaWVsZHM7CiAgICBldmFs
IHsKICAgICAgICBteSAkRmllbGRzRGF0YSA9ICRTZWxmLT57SklSQUNsaWVudH0tPkdFVCgKICAg
ICAgICAgICAgIi9maWVsZCIKICAgICAgICApOwoKICAgICAgICBteSAlQ3VzdG9tRmllbGRzID0g
bWFwewogICAgICAgICAgICAkXy0+e25hbWV9ID0+ICRfLT57c2NoZW1hfS0+e2N1c3RvbUlkfQog
ICAgICAgIH0gZ3JlcCB7CiAgICAgICAgICAgICRfLT57c2NoZW1hfS0+e2N1c3RvbUlkfQogICAg
ICAgIH0gQHsgJEZpZWxkc0RhdGEgfHwgW10gfTsKCiAgICAgICAgJEZpZWxkcyA9IFwlQ3VzdG9t
RmllbGRzOwoKICAgICAgICBmb3IgbXkgJEZpZWxkICggQHsgJEZpZWxkc0RhdGEgfHwgW10gfSAp
IHsKICAgICAgICAgICAgJEZpZWxkVHlwZXMtPnsgJEZpZWxkLT57aWR9IH0gPSAkRmllbGQtPntz
Y2hlbWF9OwoKICAgICAgICAgICAgaWYgKCAhJEZpZWxkLT57Y3VzdG9tfSApIHsKICAgICAgICAg
ICAgICAgIHB1c2ggQHskU3RhbmRhcmRGaWVsZHN9LCAkRmllbGQtPntpZH07CiAgICAgICAgICAg
IH0KICAgICAgICB9CgogICAgICAgIDE7CiAgICB9IG9yICRFcnJvckZpZWxkcyA9ICRAOwoKICAg
IGlmICggISRFcnJvckZpZWxkcyApIHsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAg
ICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgICA9PiAn
RmllbGRzR2V0JywKICAgICAgICAgICAgVmFsdWUgPT4gJEZpZWxkcywKICAgICAgICAgICAgVFRM
ICAgPT4gJFNlbGYtPntDYWNoZVRUTH0gfHwgMSwKICAgICAgICApOwoKICAgICAgICAkQ2FjaGVP
YmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAg
ICAgICAgICBLZXkgICA9PiAnRmllbGRUeXBlcycsCiAgICAgICAgICAgIFZhbHVlID0+ICRGaWVs
ZFR5cGVzLAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSB8fCAxLAogICAg
ICAgICk7CgogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAk
U2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIEtleSAgID0+ICdTdGFuZGFyZEZpZWxkcycs
CiAgICAgICAgICAgIFZhbHVlID0+ICRTdGFuZGFyZEZpZWxkcywKICAgICAgICAgICAgVFRMICAg
PT4gJFNlbGYtPntDYWNoZVRUTH0gfHwgMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAg
ICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAog
ICAgICAgICAgICBNZXNzYWdlICA9PiBzcHJpbnRmIFAgLiAgIjo6RmllbGRzR2V0OiBjYW5ub3Qg
cmV0cmlldmUgZmllbGRzIGRlZmluaXRpb25zOiAlcyIsCiAgICAgICAgICAgICAgICAkRXJyb3JG
aWVsZHMsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggbGMgJFBh
cmFte1JldHVybn0gZXEgJ3R5cGVzJyApIHsKICAgICAgICByZXR1cm4gJEZpZWxkVHlwZXM7CiAg
ICB9CgogICAgcmV0dXJuICRGaWVsZHM7Cn0KCj1pdGVtIE1hcEZpZWxkcwoKTWFwcyB0aGUgT1RS
UyB0byB0aGUgSklSQSBjdXN0b20gZmllbGRzIGFzIGRlZmluZWQgaW4gdGhlIGNvbmZpZ3VyYXRp
b24uClJldHVybnMgYSBoYXNoIG1hcC4KCiAgbXkgJEZpZWxkcyA9ICRPYmplY3QtPk1hcEZpZWxk
cygkRmllbGRzLCAlVGlja2V0LCAlQXJ0aWNsZSkKCnJldHVybjoKCiAgJEZpZWxkcyA9IHsKICAg
IHN0YW5kYXJkRmllbGQxID0+IHZhbHVlMSwKICAgIHN0YW5kYXJkRmllbGQyID0+IHZhbHVlMiwK
ICAgIFsuLi5dCiAgICBjdXN0b21maWVsZHMgPT4gewogICAgICAgIGNmMSA9PiB2YWx1ZTMsCiAg
ICAgICAgY2YyID0+IHZhbHVlNCwKICAgICAgICBbLi4uXQogICAgfQogIH0KCj1jdXQKCnN1YiBN
YXBGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJEZpZWxkcywgJUFydGljbGUgKSA9IEBfOwoKICAg
IG15ICRMb2dPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3Rl
bTo6TG9nJyk7CiAgICBteSAkQ2FjaGVPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgID0gJEtl
cm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICREeW5hbWljRmll
bGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxk
Jyk7CiAgICBteSAkREZWYWx1ZU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVs
OjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyk7CgogICAgIyByZXRyaWV2ZXMgZHluYW1pYy1j
dXN0b20gZmllbGQgbWFwcGluZwogICAgbXkgJEN1c3RvbUZpZWxkcyAgID0ge307CiAgICBteSAk
TWFwcGluZyAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ30tPnsnT1RSUy1KSVJBLUZpZWxkTWFwcGlu
Zyd9OwogICAgbXkgJERhdGVGb3JtYXQgICAgID0gJFNlbGYtPntDb25maWd9LT57J0pJUkEtRGF0
ZUZvcm1hdCd9OwogICAgbXkgJERhdGVUaW1lRm9ybWF0ID0gJFNlbGYtPntDb25maWd9LT57J0pJ
UkEtRGF0ZVRpbWVGb3JtYXQnfTsKCiAgICBteSAkSklSQUZpZWxkcyAgICAgPSAkU2VsZi0+Rmll
bGRzR2V0KCk7CgogICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAkTG9nT2JqZWN0
LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3Nh
Z2UgID0+IHNwcmludGYgUCAuICI6Ok1hcEZpZWxkczogQXJ0aWNsZTogJXMiLAogICAgICAgICAg
ICAgICAgJE1haW5PYmplY3QtPkR1bXAoIFwlQXJ0aWNsZSApLAogICAgICAgICk7CgogICAgICAg
ICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAg
ICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4gIjo6TWFwRmllbGRzOiBtYXBwaW5nOiAlcyIs
CiAgICAgICAgICAgICAgICAkTWFpbk9iamVjdC0+RHVtcCggJE1hcHBpbmcgKSwKICAgICAgICAp
OwogICAgfQogICAgCgogICAgaWYgKCBkZWZpbmVkICRNYXBwaW5nICkgewoKICAgICAgICAjIGFs
bCBjaGFuZ2VzIHJlcXVpcmVkIE9OTFkgZm9yIFBlcmwgNS4xMCAuLi4KICAgICAgICBLRVk6CiAg
ICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICV7JE1hcHBpbmd9ICApIHsKICAgICAgICAgICAgbXkg
JFZhbHVlID0gJE1hcHBpbmctPnskS2V5fTsKCiAgICAgICAgICAgIG5leHQgS0VZIGlmICFsZW5n
dGggJEtleSB8fCAhbGVuZ3RoICRWYWx1ZTsKCiAgICAgICAgICAgIG15ICgkS1ByZWZpeCwkVlBy
ZWZpeCwkREJWYWwpID0gKCIiLCIiLHVuZGVmKTsKICAgICAgICAgICAgbXkgKCRJc0FEYXRlLCAk
SXNBRGF0ZVRpbWUpID0gKDAsMCk7CgogICAgICAgICAgICAoJEtQcmVmaXgsICRLZXkpICAgPSBz
cGxpdCAvOi8sICRLZXksIDI7CiAgICAgICAgICAgICgkVlByZWZpeCwgJFZhbHVlKSA9IHNwbGl0
IC86LywgJFZhbHVlLCAyOwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAg
ICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0
eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IFAgLiAiOjpNYXBG
aWVsZHM6IGNoZWNraW5nOiBrcHJlZml4LGtleSx2cHJlZml4LHZhbCA6ICIKICAgICAgICAgICAg
ICAgICAgICAgICAgLiAiJEtQcmVmaXgsJEtleSwkVlByZWZpeCwkVmFsdWVcbiIsCiAgICAgICAg
ICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRLUHJlZml4IGVxICdz
dGQnICkgewogICAgICAgICAgICAgICAgJERCVmFsID0gJEFydGljbGV7JEtleX07CgogICAgICAg
ICAgICAgICAgaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAkTG9n
T2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1Zycs
CiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IFAgLiAiOjpNYXBGaWVsZHM6IHN0
ZCBmaWVsZCB3aXRoICREQlZhbFxuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJEtleSBlcSAnQ3JlYXRlZCcgfHwgJEtleSBl
cSAnQ2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJElzQURhdGVUaW1lID0gMTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEtleSA9fiBte0RhdGVcen14
bXMgKSB7CiAgICAgICAgICAgICAgICAgICAgJElzQURhdGUgPSAxOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEtQcmVmaXggZXEgJ2R5bicgKSB7
CiAgICAgICAgICAgICAgICBteSAkRHluRmllbGQgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHlu
YW1pY0ZpZWxkR2V0KCBOYW1lID0+ICRLZXkgKTsKICAgICAgICAgICAgICAgIG15ICRGaWVsZFR5
cGUgPSAkRHluRmllbGQtPntGaWVsZFR5cGV9OwoKICAgICAgICAgICAgICAgICREQlZhbCA9ICRB
cnRpY2xleyJEeW5hbWljRmllbGRfJEtleSJ9OwoKICAgICAgICAgICAgICAgIGlmICggISREQlZh
bCAmJiAkRHluRmllbGQgKSB7CiAgICAgICAgICAgICAgICAgICAgJERCVmFsID0gJERGVmFsdWVP
YmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEICA9PiAkRHlu
RmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdElEID0+ICRBcnRpY2xl
e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICApIHx8IHVuZGVmOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgICAg
ICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0
eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBQIC4gIjo6
TWFwRmllbGRzOiBkeW4gZmllbGQgQXJyYXk6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC4gJE1haW5PYmplY3QtPkR1bXAoJERCVmFsIC8vICcnKSAuICJcbiIsCiAgICAgICAgICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkSXNNdWx0aXNl
bGVjdDsKCiAgICAgICAgICAgICAgICAjIG9ubHkgaGFuZGxlIERhdGUsIERhdGVUaW1lIGFuZCBD
aGVja2JveCwgZm9yIHRoZSByZXN0IHdlIGhhdmUgbm90aGluZyB0byBkbwogICAgICAgICAgICAg
ICAgaWYgKCAkRmllbGRUeXBlIGVxICdEYXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkSXNB
RGF0ZSA9IDE7CgogICAgICAgICAgICAgICAgICAgICREQlZhbCA9IHJlZiAkREJWYWwgPyAkREJW
YWwtPlswXS0+e1ZhbHVlRGF0ZVRpbWV9IDogJERCVmFsOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgZWxzaWYgKCAkRmllbGRUeXBlIGVxICdEYXRlVGltZScgKSB7CiAgICAgICAg
ICAgICAgICAgICAgJElzQURhdGVUaW1lID0gMTsKCiAgICAgICAgICAgICAgICAgICAgJERCVmFs
ID0gcmVmICREQlZhbCA/ICREQlZhbC0+WzBdLT57VmFsdWVEYXRlVGltZX0gOiAkREJWYWw7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWVsZFR5cGUgZXEgJ0No
ZWNrYm94JyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlICA9PiBQIC4gIjo6TWFwRmllbGRzOiBza2lwcGluZzogQ2hlY2tib3ggIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIkR5bmFtaWNmaWVsZCAkS2V5IHdpdGggdmFs
dWUgJERCVmFsXG4iLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJERCVmFsID0gdW5kZWY7CiAgICAgICAgICAgICAg
ICB9ICMgSWdub3JlIGJ5IGRlZmF1bHQgc2luY2UgSklSQSBkb2VzIG5vdCBoYXZlIGEgY2hlY2ti
b3ggY3VzdG9tIGZpZWxkCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWVsZFR5cGUgZXEgJ011
bHRpc2VsZWN0JyApIHsKICAgICAgICAgICAgICAgICAgICAkREJWYWwgPSByZWYgJERCVmFsID8K
ICAgICAgICAgICAgICAgICAgICAgICAgWyBtYXB7ICt7IHZhbHVlID0+ICRfIH0gfUB7JERCVmFs
fSBdIDoKICAgICAgICAgICAgICAgICAgICAgICAgW107CgogICAgICAgICAgICAgICAgICAgICRJ
c011bHRpc2VsZWN0ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lm
ICggJEZpZWxkVHlwZSBlcSAnRHJvcGRvd24nICkgewogICAgICAgICAgICAgICAgICAgICREQlZh
bCA9IHJlZiAkREJWYWwgPwogICAgICAgICAgICAgICAgICAgICAgICAreyB2YWx1ZSA9PiAkREJW
YWwtPlswXS0+e1ZhbHVlVGV4dH0gfSA6CiAgICAgICAgICAgICAgICAgICAgICAgICt7IHZhbHVl
ID0+ICREQlZhbCB9OwoKICAgICAgICAgICAgICAgICAgICAkSXNNdWx0aXNlbGVjdCA9IDE7CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJERCVmFsID0gKHJlZiAkREJWYWwgJiYg
ISRJc011bHRpc2VsZWN0KSA/CiAgICAgICAgICAgICAgICAgICAgKCAkREJWYWwtPlswXS0+e1Zh
bHVlVGV4dH0gfHwgJERCVmFsLT5bMF0tPntWYWx1ZUludH0gKSA6CiAgICAgICAgICAgICAgICAg
ICAgJERCVmFsOwoKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAg
ICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQ
cmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBQ
IC4gIjo6TWFwRmllbGRzOiBkeW4gZmllbGQgd2l0aCAkREJWYWwgYW5kIHR5cGUgJEZpZWxkVHlw
ZVxuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGlmICggJEtQcmVmaXggZXEgJ2NhbGwnICkgewoKICAgICAgICAgICAg
ICAgICMgY2FsbHMgbXVzdCBiZSBzcGVjaWZpZWQgYXMgdGhpczogZS5nLiAiTUlNRTo6QmFzZTY0
LGVuY29kZV9iYXNlNjQiCiAgICAgICAgICAgICAgICBteSAoJE1vZHVsZSwgJEZ1bmN0aW9uKSA9
IHNwbGl0IC8sLywgJEtleTsKCiAgICAgICAgICAgICAgICBpZiAoICRNYWluT2JqZWN0LT5SZXF1
aXJlKCAkTW9kdWxlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvZGUgPSAkTW9kdWxl
LT5jYW4oICRGdW5jdGlvbiApOwogICAgICAgICAgICAgICAgICAgICREQlZhbCAgID0gJENvZGUt
PiggJFNlbGYsICRNYXBwaW5nLCAlQXJ0aWNsZSApOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAg
ICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAg
ICAgICAgICBNZXNzYWdlICA9PiBQIC4gJzo6TWFwRmllbGRzOiBDb3VsZCBub3QgbG9hZCAnIC4g
JE1vZHVsZSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExv
Z09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcn
LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBQIC4gIjo6TWFwRmllbGRzOiBj
YWxsIHRvICckRnVuY3Rpb24nIHJlc3VsdGluZyBpbiAkREJWYWxcbiIsCiAgICAgICAgICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYg
KCAkREJWYWwgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRJc0FEYXRlID09IDEgKSB7CiAgICAg
ICAgICAgICAgICAgICAgJERCVmFsID0gJFNlbGYtPkRhdGVGb3JtYXRUcmFuc2Zvcm0oICREYXRl
Rm9ybWF0LCAkREJWYWwgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAo
ICRJc0FEYXRlVGltZSA9PSAxICkgewogICAgICAgICAgICAgICAgICAgICREQlZhbCA9ICRTZWxm
LT5EYXRlRm9ybWF0VHJhbnNmb3JtKCAkRGF0ZVRpbWVGb3JtYXQsICREQlZhbCApOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntEZWJ1Z30gKSB7CiAgICAg
ICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQ
cmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBQ
IC4gIjo6TWFwRmllbGRzOiBnb3QgbWFwcGVkIHZhbHVlOiBrcHJlZml4LGtleSx2cHJlZml4LHZh
bCxkYnZhbCA6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIiRLUHJlZml4LCRLZXks
JFZQcmVmaXgsJFZhbHVlLCREQlZhbFxuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJFZQcmVmaXggZXEgJ3N0ZCcgKSB7CiAg
ICAgICAgICAgICAgICAgICAgJEZpZWxkcy0+eyRWYWx1ZX0gPSAkREJWYWw7CgogICAgICAgICAg
ICAgICAgICAgIGlmICggJFZhbHVlID1+IG17On0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IG15ICgkS2V5LCAkU3Via2V5KSA9IHNwbGl0IC86LywgJFZhbHVlOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgbXkgJFJlZlR5cGUgPSByZWYgJERCVmFsOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoICRSZWZUeXBlICYmICRSZWZUeXBlIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkREJWYWwgPSAkREJWYWwtPlswXS0+e3ZhbHVlfTsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRSZWZUeXBlICYm
ICRSZWZUeXBlIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREQlZh
bCA9ICREQlZhbC0+e3ZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgJEZpZWxkcy0+eyRLZXl9ID0geyAkU3Via2V5ID0+ICREQlZhbCB9Owog
ICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEZpZWxkcy0+eyRWYWx1ZX07CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAk
VlByZWZpeCBlcSAnY3VzdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkSklSQUZpZWxk
cy0+eyRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRKSVJBRmll
bGRzLT57JFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg
ICRGaWVsZHMtPnsiY3VzdG9tZmllbGRfIiAuICRWYWx1ZX0gPSAkREJWYWw7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRWUHJlZml4IGVxICdjYWxsJyApIHsKCiAg
ICAgICAgICAgICAgICAgICAgIyBjYWxscyBtdXN0IGJlIHNwZWNpZmllZCBhcyB0aGlzOiBlLmcu
ICJNSU1FOjpCYXNlNjQsZW5jb2RlX2Jhc2U2NCIKICAgICAgICAgICAgICAgICAgICBteSAoJE1v
ZHVsZSwgJEZ1bmN0aW9uKSA9IHNwbGl0IC8sLywgJEtleTsKCiAgICAgICAgICAgICAgICAgICAg
bXkgJFJlcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWFpbk9iamVjdC0+UmVxdWly
ZSggJE1vZHVsZSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29kZSA9ICRNb2R1
bGUtPmNhbiggJEZ1bmN0aW9uICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRSZXMgICAgID0g
JENvZGUtPiggJFNlbGYsICREQlZhbCwgJEZpZWxkcywgJUFydGljbGUgKTsKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5
ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBQIC4g
Jzo6TWFwRmllbGRzOiBDb3VsZCBub3QgbG9hZCAnIC4gJE1vZHVsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9IAoKICAgICAgICAgICAgICAgICAgICBp
ZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTG9nT2JqZWN0
LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gUCAuICI6Ok1hcEZpZWxkczog
Y2FsbCB0byAnJEZ1bmN0aW9uJyByZXN1bHRpbmcgaW4gJFJlc1xuIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0RlYnVnfSApIHsKICAgICAgICAg
ICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAn
ZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IFAgLiAiOjpNYXBGaWVsZHM6
IHNraXBwaW5nOiBrcHJlZml4LGtleSx2cHJlZml4LHZhbCxkYnZhbCA6ICIKICAgICAgICAgICAg
ICAgICAgICAgICAgLiAiJEtQcmVmaXgsJEtleSwkVlByZWZpeCwkVmFsdWUsJERCVmFsXG4iLAog
ICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAo
ICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAg
UHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gUCAuICI6Ok1hcEZp
ZWxkczogZmllbGRzOiAiIC4gJE1haW5PYmplY3QtPkR1bXAoJEZpZWxkcykgLiAiXG4iLAogICAg
ICAgICk7CiAgICB9CgogICAgJEZpZWxkcyA9ICRTZWxmLT5DaGVja0ZpZWxkVHlwZXMoICRGaWVs
ZHMgKTsKCiAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxv
ZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAg
PT4gUCAuICI6Ok1hcEZpZWxkczogZmllbGRzIChhZnRlciB0eXBlIGNoZWNrKTogIiAuICRNYWlu
T2JqZWN0LT5EdW1wKCRGaWVsZHMpIC4gIlxuIiwKICAgICAgICApOwogICAgfQoKICAgIHJldHVy
biAkRmllbGRzOwp9Cgo9aXRlbSBEYXRlRm9ybWF0VHJhbnNmb3JtCgpUaGlzIGZ1bmN0aW9uIHRy
YW5zZm9ybXMgdGhlIGRhdGUgdmFsdWUgb2YgYSBvdHJzIChkeW5hbWljL3N0YW5kYXJkKSBmaWVs
ZCB0byB0aGUgSmlyYSBmb3JtYXQuCgpJdCByZWNlaXZlcyB0aGUgY3VycmVudCBmb3JtYXQgZnJv
bSB0aGUgcnVubmluZyBzeXN0ZW0uCgogIG15ICRWYWx1ZTEgPSAkU2VsZi0+RGF0ZUZvcm1hdFRy
YW5zZm9ybSgnJWQvJWIvJXkgJUk6JU0gJXAnLCAgICcyMDA0LTA4LTE0IDIyOjQ1OjAwJykKCnJl
dHVybnMgCgogIDE0L0F1Zy8wNCAxMDowNSBQTQoKb3IgQzx1bmRlZj4gdXBvbiBmYWlsdXJlCgo9
Y3V0CgpzdWIgRGF0ZUZvcm1hdFRyYW5zZm9ybSB7CiAgICBteSAoJFNlbGYsICREYXRlRm9ybWF0
LCAkRGF0ZSkgPSBAXzsKCiAgICBpZiAoICFkZWZpbmVkKCREYXRlKSB8fCAoICREYXRlIGVxICIi
ICkgKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgfQoKICAgIGlmICggbGVuZ3RoICREYXRl
IDwgMTEgKSB7CiAgICAgICAgJERhdGUgLj0gJyAwMDowMDowMCc7CiAgICB9CgogICAgbXkgJFRp
bWUgPSBUaW1lOjpQaWVjZS0+c3RycHRpbWUoICREYXRlLCAnJVktJW0tJWQgJUg6JU06JVMnICk7
CiAgICBpZiAoICEgJFRpbWUgKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgfQoKICAgIHJl
dHVybiAkVGltZS0+c3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTLjAwMCswMDAwJyk7Cn0KCj1p
dGVtIENoZWNrRmllbGRUeXBlcwoKVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIGRhdGEg
dHJhbnNmZXJlZCB0byB0aGUgSklSQSBzeXN0ZW0gaGF2ZSB0aGUgY29ycmVjdCB0eXBlLgpFLmcu
IGZpZWxkcyBvZiB0eXBlICJsYWJlbHMiIGhhdmUgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5nIGV0
Yy4KCk9uIE1hcmNoIDEwdGgsIDIwMTUgd2UgYWdyZWVkIG9uIHRob3NlIHJlc3RyaWN0aW9uczoK
Cj1vdmVyIDQKCj1pdGVtICogRm9yIGZpZWxkcyBvZiB0eXBlICJ1c2VyIiB0aGUgInVzZXJuYW1l
IiBpcyBzZXQKCj1pdGVtICogRm9yIGZpZWxkcyBvZiB0eXBlICJzZWxlY3QiIGFuZCB0aGUgbGlr
ZSB0aGUgdmFsdWUgaXMgc2V0Cgo9aXRlbSAqIEJlc2lkZSBjdXN0b21maWVsZHR5cGVzIG9ubHkg
dHlwZSAidXNlciIgaXMgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKCj1iYWNrCgo9Y3V0CgpzdWIg
Q2hlY2tGaWVsZFR5cGVzIHsKICAgIG15ICgkU2VsZiwgJEZpZWxkcykgPSBAXzsKCiAgICBteSAk
TG9nT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAg
IG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4n
KTsKCiAgICBteSAlRmllbGRzQ29weSA9ICV7JEZpZWxkc307CgogICAgbXkgJEZpZWxkc0luZm8g
PSAkU2VsZi0+RmllbGRzR2V0KAogICAgICAgIFJldHVybiA9PiAnVHlwZXMnLAogICAgKTsKCiAg
ICBteSAkU3RhbmRhcmRGaWVsZHMgPSAkU2VsZi0+RmllbGRzR2V0KAogICAgICAgIFJldHVybiA9
PiAnU3RhbmRhcmQnLAogICAgKTsKCiAgICBteSAlRGlzcGF0Y2ggPSAoCiAgICAgICAgc3RyaW5n
ICAgICAgICAgID0+IFsgXCZfU3RyaW5nLCAgICAgICAgICAgICBdLAogICAgICAgIHVybCAgICAg
ICAgICAgICA9PiBbIFwmX1N0cmluZywgICAgICAgICAgICAgXSwKICAgICAgICBhcnJheSAgICAg
ICAgICAgPT4gWyBcJl9BcnJheSwgICAgICAgICAgICAgIF0sCiAgICAgICAgbGFiZWxzICAgICAg
ICAgID0+IFsgXCZfQXJyYXksICAgICAgICAgICAgICBdLAogICAgICAgIGNhc2NhZGluZ3NlbGVj
dCA9PiBbIFwmX0FycmF5LCAgICAgICAgICAgICAgXSwKICAgICAgICBtdWx0aWNoZWNrYm94ZXMg
PT4gWyBcJl9BcnJheSwgICAgICAgICAgICAgIF0sCiAgICAgICAgdXNlciAgICAgICAgICAgID0+
IFsgXCZfR2VuZXJpYywgJ25hbWUnLCAgICBdLAogICAgICAgIHVzZXJwaWNrZXIgICAgICA9PiBb
IFwmX0dlbmVyaWMsICduYW1lJywgICAgXSwKICAgICAgICBzZWxlY3QgICAgICAgICAgPT4gWyBc
Jl9HZW5lcmljLCAndmFsdWUnICAgIF0sCiAgICAgICAgcmFkaW9idXR0b25zICAgID0+IFsgXCZf
R2VuZXJpYywgJ3ZhbHVlJyAgICBdLAogICAgICAgIG51bWJlciAgICAgICAgICA9PiBbIFwmX051
bWJlciwgICAgICAgICAgICAgXSwKICAgICAgICBmbG9hdCAgICAgICAgICAgPT4gWyBcJl9OdW1i
ZXIsICAgICAgICAgICAgIF0sCiAgICAgICAgZGF0ZXRpbWUgICAgICAgID0+IFsgXCZfRGF0ZXRp
bWUsICAgICAgICAgICBdLAogICAgICAgIGRhdGUgICAgICAgICAgICA9PiBbIFwmX0RhdGV0aW1l
LCAnc2hvcnQnLCAgXSwKICAgICAgICBkYXRlcGlja2VyICAgICAgPT4gWyBcJl9EYXRldGltZSwg
J3Nob3J0JywgIF0sCiAgICAgICAgdGV4dGFyZWEgICAgICAgID0+IFsgXCZfU3RyaW5nLCAgICAg
ICAgICAgICBdLAogICAgICAgIHRleHRmaWVsZCAgICAgICA9PiBbIFwmX1N0cmluZywgICAgICAg
ICAgICAgXSwKICAgICAgICBkZWZhdWx0ICAgICAgICAgPT4gWyBcJl9TdHJpbmcsICAgICAgICAg
ICAgIF0sCiAgICApOwoKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIGtleXMgJUZpZWxk
c0NvcHkgKSB7CgogICAgICAgIG5leHQgaWYgZmlyc3R7ICRGaWVsZCBlcSAkXyB9QHsgJFN0YW5k
YXJkRmllbGRzIHx8IFtxdyhwcm9qZWN0IGlzc3VldHlwZSByZXBvcnRlciBhc3NpZ25lZSldIH07
CgogICAgICAgIG15ICRTY2hlbWEgPSAkRmllbGRzSW5mby0+eyRGaWVsZH07CiAgICAgICAgbXkg
JFJlZiAgICA9IHJlZiAkRmllbGRzQ29weXskRmllbGR9OwogICAgICAgIG15ICRUeXBlICAgPSAk
U2NoZW1hLT57Y3VzdG9tfSB8fCAkU2NoZW1hLT57dHlwZX07CgogICAgICAgIGlmICggJFR5cGUg
JiYgaW5kZXgoICRUeXBlLCAnOicgKSAhPSAtMSApIHsKICAgICAgICAgICAgJFR5cGUgPSAoc3Bs
aXQgLzovLCAkVHlwZSlbLTFdOwogICAgICAgIH0KCiAgICAgICAgIyBzdHJpbmcgaXMgcmVxdWly
ZWQgYW5kIGl0IGlzIGFscmVhZHkgYSBzdHJpbmcgLSBubyB0cmFuc2Zvcm1hdGlvbiByZXF1aXJl
ZAogICAgICAgIG5leHQgRklFTEQgaWYgJFR5cGUgZXEgJ3N0cmluZycgJiYgISRSZWY7CgogICAg
ICAgICMgYXJyYXkgaXMgcmVxdWlyZWQgYW5kIGl0IGlzIGFscmVhZHkgYW4gYXJyYXkgLSBubyB0
cmFuc2Zvcm1hdGlvbiByZXF1aXJlZAogICAgICAgIG5leHQgRklFTEQgaWYgJFR5cGUgZXEgJ2Fy
cmF5JyAmJiAkUmVmICYmICRSZWYgZXEgJ0FSUkFZJzsKCiAgICAgICAgbXkgQFN1YlBhcmFtcyA9
IEB7ICREaXNwYXRjaHskVHlwZX0gfHwgJERpc3BhdGNoe2RlZmF1bHR9IH07CiAgICAgICAgbXkg
JFN1YiAgICAgICA9IHNoaWZ0IEBTdWJQYXJhbXM7CgogICAgICAgIGlmICggJFNlbGYtPntEZWJ1
Z30gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9y
aXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBQIC4gIjo6Q2hlY2tG
aWVsZFR5cGVzOiAiCiAgICAgICAgICAgICAgICAgICAgLiAkTWFpbk9iamVjdC0+RHVtcChbICRG
aWVsZCwgJFJlZiwgJFNjaGVtYSwgJFR5cGUsICIkU3ViIiwgXEBTdWJQYXJhbXMgXSkgLiAiXG4i
LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFN1YjsK
CiAgICAgICAgJEZpZWxkc0NvcHl7JEZpZWxkfSA9ICRTZWxmLT4kU3ViKCAkRmllbGRzQ29weXsk
RmllbGR9LCAkUmVmLCBAU3ViUGFyYW1zICk7CiAgICB9CgogICAgcmV0dXJuIFwlRmllbGRzQ29w
eTsKfQoKc3ViIF9TdHJpbmcgewogICAgbXkgKCRTZWxmLCAkVmFsdWUsICRSZWYpID0gQF87Cgog
ICAgaWYgKCAkUmVmIGVxICdIQVNIJyApIHsKICAgICAgICBteSAoJEtleSkgPSBzb3J0IGtleXMg
JXskVmFsdWV9OwogICAgICAgIHJldHVybiAkVmFsdWUtPnskS2V5fTsKICAgIH0KICAgIGVsc2lm
ICggJFJlZiBlcSAnQVJSQVknICkgewogICAgICAgIHJldHVybiBqb2luICcsICcsIEB7JFZhbHVl
fTsKICAgIH0KCiAgICByZXR1cm4gIiRWYWx1ZSI7Cn0KCnN1YiBfQXJyYXkgewogICAgbXkgKCRT
ZWxmLCAkVmFsdWUsICRSZWYpID0gQF87CgogICAgaWYgKCAkUmVmIGVxICdIQVNIJyApIHsKICAg
ICAgICBteSAoJEtleSkgPSBzb3J0IGtleXMgJXskVmFsdWV9OwogICAgICAgIHJldHVybiBbICRW
YWx1ZS0+eyRLZXl9IF07CiAgICB9CgogICAgcmV0dXJuIFsgJFZhbHVlIF07Cn0KCnN1YiBfR2Vu
ZXJpYyB7CiAgICBteSAoJFNlbGYsICRWYWx1ZSwgJFJlZiwgJEtleSkgPSBAXzsKCiAgICBpZiAo
ICRSZWYgZXEgJ0hBU0gnICYmICFleGlzdHMgJFZhbHVlLT57JEtleX0gKSB7CiAgICAgICAgbXkg
KCRFeGlzdGluZ0tleSkgPSBzb3J0IGtleXMgJXskVmFsdWV9OwogICAgICAgIHJldHVybiAreyAk
S2V5ID0+ICRWYWx1ZS0+eyRFeGlzdGluZ0tleX0gfTsKICAgIH0KICAgIGVsc2lmICggJFJlZiBl
cSAnQVJSQVknICkgewogICAgICAgIHJldHVybiAreyAkS2V5ID0+IGpvaW4gJywgJywgQHskVmFs
dWV9IH07CiAgICB9CgogICAgcmV0dXJuICt7ICRLZXkgPT4gIiRWYWx1ZSIgfTsKfQoKc3ViIF9O
dW1iZXIgewogICAgbXkgKCRTZWxmLCAkVmFsdWUsICRSZWYpID0gQF87CgogICAgbXkgJFZhbHVl
Q29weSA9ICRWYWx1ZTsKICAgIGlmICggJFJlZiBlcSAnSEFTSCcgKSB7CiAgICAgICAgbXkgKCRL
ZXkpID0gc29ydCBrZXlzICV7JFZhbHVlfTsKICAgICAgICAkVmFsdWVDb3B5ID0gJFZhbHVlLT57
JEtleX07CiAgICB9CiAgICBlbHNpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICAkVmFs
dWVDb3B5ID0gam9pbiAnLCAnLCBAeyRWYWx1ZX07CiAgICB9CgogICAgaWYgKCAhIGxvb2tzX2xp
a2VfbnVtYmVyKCAkVmFsdWVDb3B5ICkgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3In
LAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVHJ5IHRvIGNhc3QgJFZhbHVlQ29weSB0byBhIG51
bWJlciIsCiAgICAgICAgKTsKCiAgICAgICAgbm8gd2FybmluZ3MgJ251bWVyaWMnOwogICAgICAg
ICRWYWx1ZUNvcHkgKz0gMDsKICAgIH0KCiAgICByZXR1cm4gJFZhbHVlQ29weTsKfQoKc3ViIF9E
YXRldGltZSB7CiAgICBteSAoJFNlbGYsICRWYWx1ZSwgJFJlZiwgJFR5cGUpID0gQF87CgogICAg
bXkgJFZhbHVlQ29weSA9ICRWYWx1ZTsKICAgIGlmICggJFJlZiBlcSAnSEFTSCcgKSB7CiAgICAg
ICAgbXkgKCRLZXkpID0gc29ydCBrZXlzICV7JFZhbHVlfTsKICAgICAgICAkVmFsdWVDb3B5ID0g
JFZhbHVlLT57JEtleX07CiAgICB9CiAgICBlbHNpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAg
ICAgICAkVmFsdWVDb3B5ID0gam9pbiAnICcsIEB7JFZhbHVlfTsKICAgIH0KCiAgICBteSAlUmVn
ZXhlcyA9ICgKICAgICAgICAnTG9uZycgID0+IHFyL1swLTldezR9LVswLTldezJ9LVswLTldezJ9
VFswLTldezJ9OlswLTldezJ9OlswLTldezJ9XC5bMC05XStcK1swLTldKy8sCiAgICAgICAgJ1No
b3J0JyA9PiBxci9bMC05XXs0fS1bMC05XXsyfS1bMC05XXsyfS8sCiAgICApOwoKICAgICNteSAk
UmVnZXggPSAkUmVnZXhlc3skVHlwZX0gfHwgJFJlZ2V4ZXN7TG9uZ307CiAgICBteSAkUmVnZXgg
PSAkUmVnZXhlc3tMb25nfTsKCiAgICBpZiAoICRWYWx1ZUNvcHkgIX4gJFJlZ2V4ICkgewogICAg
ICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAg
ICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiJFZhbHVl
Q29weSBpcyBub3QgYSBkYXRlIiwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkVmFsdWVD
b3B5Owp9Cgo9aXRlbSBUaGlzIGZ1bmN0aW9uIGNhbGxzIEpJUkEgYW4gcXVlcmllcyB0aGUgbGlj
ZW5zZSBzdGF0dXMgZm9yIHRoaXMgaW5zdGFsbGF0aW9uLgoKbXkgJHN0YXR1cyA9ICRTZWxmLT5D
aGVja1ZhbGlkTGljZW5zZSgpOwoKcmV0dXJuczoKCjAgdXBvbiBmYWlsdXJlCjEgdXBvbiB2YWxp
ZCBsaWNlbnNlCjIgdXBvbiBleHBpcmVkIGxpY2Vuc2UKCj1jdXQKCnN1YiBDaGVja1ZhbGlkTGlj
ZW5zZSB7CiAgICBteSAoJFNlbGYpID0gQF87CgogICAgI3JldHVybiAxOwoKICAgIG15ICRMb2dP
YmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBt
eSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAg
ICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgIG15ICRVUkwgICAgICA9ICRDb25m
aWctPntVUkx9OwogICAgbXkgJFVzZXIgICAgID0gJENvbmZpZy0+e1VzZXJ9OwogICAgbXkgJFBh
c3N3b3JkID0gJENvbmZpZy0+e1Bhc3N3b3JkfTsKCiAgICAjIyBtYXliZSBtb3ZlIHRoaXMgaW50
byBhIHN1YgogICAgbXkgJEhlYWRlcnMgPSB7CiAgICAgICAgQWNjZXB0ICAgICAgICA9PiAnYXBw
bGljYXRpb24vanNvbicsCiMgVGhlIGxhdHRlciBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gT1RS
U0pJUkEtODEKIyAgICAgICAgICAgIEF1dGhvcml6YXRpb24gPT4gJ0Jhc2ljICcKIyAgICAgICAg
ICAgICAgLiBlbmNvZGVfYmFzZTY0KCAkdXNlciAuICc6JyAuICRwYXNzd29yZCApLAogICAgICAg
ICJDb250ZW50LXR5cGUiID0+ICdhcHBsaWNhdGlvbi9qc29uJywKICAgIH07CgogICAgbXkgJENs
aWVudCA9IFJFU1Q6OkNsaWVudC0+bmV3KCk7CiAgICAkQ2xpZW50LT5zZXRGb2xsb3coMSk7Cgog
ICAgbXkgJFZlcmlmeVNTTCA9ICRDb25maWdPYmplY3QtPkdldCgnSklSQTo6U1NMVmVyaWZ5Jyk7
CgogICAgaWYgKCAhJFZlcmlmeVNTTCApIHsKICAgICAgICBteSAkTG9hZGVkID0gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgKICAgICAgICAgICAgJ05l
dDo6U1NMZWF5JywKICAgICAgICAgICAgU2lsZW50ID0+IDEsCiAgICAgICAgKTsKICAgICAgICBp
ZiAoJExvYWRlZCkgewogICAgICAgICAgICAkQ2xpZW50LT5nZXRVc2VyYWdlbnQoKS0+c3NsX29w
dHMoIHZlcmlmeV9ob3N0bmFtZSA9PiAwICk7CiAgICAgICAgICAgICRDbGllbnQtPmdldFVzZXJh
Z2VudCgpLT5zc2xfb3B0cyggU1NMX3ZlcmZpeV9tb2RlID0+IE5ldDo6U1NMZWF5OjpWRVJJRllf
Tk9ORSgpICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICgkUHJvdG8sIHVuZGVmLCAkSG9zdCwg
QEJhc2VVUkwgKSA9IHNwbGl0ICcvJywgJFVSTDsKICAgIG15ICRHZXRVUkwgPSAnLycuIGpvaW4o
Jy8nLCBAQmFzZVVSTCkgLiAnL3Jlc3Qvb3RyczJqaXJhLzEuMC9pbmZvJzsKCiAgICAkR2V0VVJM
ID1+IHN7Ly99ey99ZzsKICAgICRDbGllbnQtPnNldEhvc3QoIiRQcm90by8vJEhvc3QiKTsKICAg
ICRDbGllbnQtPkdFVCggJEdldFVSTCwgJEhlYWRlcnMgKTsKCiAKICAgIGlmICggJFNlbGYtPntE
ZWJ1Z30gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9
PiAnaW5mbycsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIFAgLiAiOjpDaGVja1ZhbGlkTGljZW5z
ZTogUkVTVDogaG9zdCAkUHJvdG8vLyRIb3N0IGdldHVybCAkR2V0VVJMIiwKICAgICAgICApOwoK
ICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywK
ICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiBQIC4gIjo6Q2hlY2tWYWxpZExpY2Vuc2U6
IFJFU1Q6IHJlc3BvbnNlQ29kZSAlcywgcmVzcG9uc2VDb250ZW50ICVzIiwKICAgICAgICAgICAg
ICAgICRDbGllbnQtPnJlc3BvbnNlQ29kZSgpLAogICAgICAgICAgICAgICAgJENsaWVudC0+cmVz
cG9uc2VDb250ZW50KCksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFRPRE86IEZlaGxlcm1lbGR1
bmcgYXVzZ2ViZW4gd2VubiBGZWhsZXIgYmVpIGRlciBWZXJiaW5kdW5nIGF1ZnRyaXR0CgogICAg
cmV0dXJuIGludCgkQ2xpZW50LT5yZXNwb25zZUNvbnRlbnQoKSk7Cn0KCjE7Cgo=
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAnMCcKRGVz
Y3JpcHRpb246IFRpY2tldCBDb25uZWN0b3IgUkVTVApGcmFtZXdvcmtWZXJzaW9uOiA0LjAuNQpQ
cm92aWRlcjoKICBPcGVyYXRpb246CiAgICBTZXNzaW9uQ3JlYXRlOgogICAgICBEZXNjcmlwdGlv
bjogQ3JlYXRlcyBhIFNlc3Npb24KICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBp
bmdPdXRib3VuZDoge30KICAgICAgVHlwZTogU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZQogICAgVGlj
a2V0Q3JlYXRlOgogICAgICBEZXNjcmlwdGlvbjogQ3JlYXRlcyBhIFRpY2tldAogICAgICBNYXBw
aW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBUaWNr
ZXQ6OlRpY2tldENyZWF0ZQogICAgVGlja2V0R2V0OgogICAgICBEZXNjcmlwdGlvbjogUmV0cmll
dmVzIFRpY2tldCBkYXRhCiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0
Ym91bmQ6IHt9CiAgICAgIFR5cGU6IFRpY2tldDo6VGlja2V0R2V0CiAgICBUaWNrZXRTZWFyY2g6
CiAgICAgIERlc2NyaXB0aW9uOiBTZWFyY2ggZm9yIFRpY2tldHMKICAgICAgTWFwcGluZ0luYm91
bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogVGlja2V0OjpUaWNr
ZXRTZWFyY2gKICAgIFRpY2tldFVwZGF0ZToKICAgICAgRGVzY3JpcHRpb246IFVwZGF0ZXMgYSBU
aWNrZXQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30K
ICAgICAgVHlwZTogVGlja2V0OjpUaWNrZXRVcGRhdGUKICBUcmFuc3BvcnQ6CiAgICBDb25maWc6
CiAgICAgIEtlZXBBbGl2ZTogJycKICAgICAgTWF4TGVuZ3RoOiAnMTAwMDAwMDAwJwogICAgICBS
b3V0ZU9wZXJhdGlvbk1hcHBpbmc6CiAgICAgICAgU2Vzc2lvbkNyZWF0ZToKICAgICAgICAgIFJl
cXVlc3RNZXRob2Q6CiAgICAgICAgICAtIFBPU1QKICAgICAgICAgIFJvdXRlOiAvU2Vzc2lvbgog
ICAgICAgIFRpY2tldENyZWF0ZToKICAgICAgICAgIFJlcXVlc3RNZXRob2Q6CiAgICAgICAgICAt
IFBPU1QKICAgICAgICAgIFJvdXRlOiAvVGlja2V0CiAgICAgICAgVGlja2V0R2V0OgogICAgICAg
ICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gR0VUCiAgICAgICAgICBSb3V0ZTogL1RpY2tl
dC86VGlja2V0SUQKICAgICAgICBUaWNrZXRTZWFyY2g6CiAgICAgICAgICBSZXF1ZXN0TWV0aG9k
OgogICAgICAgICAgLSBHRVQKICAgICAgICAgIFJvdXRlOiAvVGlja2V0CiAgICAgICAgVGlja2V0
VXBkYXRlOgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gUEFUQ0gKICAgICAg
ICAgIFJvdXRlOiAvVGlja2V0LzpUaWNrZXRJRAogICAgVHlwZTogSFRUUDo6UkVTVApSZW1vdGVT
eXN0ZW06ICcnClJlcXVlc3RlcjoKICBUcmFuc3BvcnQ6CiAgICBUeXBlOiAnJwo=
Ly8gLS0KLy8gSklSQS5BdXRvY29tcGxldGUuanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBtb2R1
bGUgZnVuY3Rpb25zIGZvciB0aGUgQ3VzdG9tZXJJRCBzZWFyY2gKLy8gQ29weXJpZ2h0IChDKSAy
MDE2IFBlcmwtU2VydmljZXMuZGUsIGh0dHA6Ly9wZXJsLXNlcnZpY2VzLmRlCi8vIC0tCi8vIFRo
aXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWls
cywgc2VlCi8vIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRp
b24gKEFHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6
Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZh
ciBKSVJBID0gSklSQSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdl
dE5TIGFzIEpJUkEuQXV0b2NvbXBsZXRlCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFt
ZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBzZWFy
Y2guCiAqLwpKSVJBLkF1dG9jb21wbGV0ZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAv
KioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJbnB1dCBJ
bnB1dCBlbGVtZW50IHRvIGFkZCBhdXRvIGNvbXBsZXRlIHRvCiAgICAgKiBAcGFyYW0ge1N0cmlu
Z30gU3ViYWN0aW9uIFN1YmFjdGlvbiB0byBleGVjdXRlLCAiU2VhcmNoQ3VzdG9tZXJJRCIgb3Ig
IlNlYXJjaEN1c3RvbWVyVXNlciIKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBU
YXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCRJbnB1dCwgU3ViYWN0aW9uLCBUYXJnZXRGaWVsZCkg
ewogICAgICAgIHZhciBLZXl3b3JkID0gJ0Fzc2lnbmVlJzsKCiAgICAgICAgaWYgKCBUYXJnZXRG
aWVsZCAmJiBUYXJnZXRGaWVsZCAhPSAnJyApIHsKICAgICAgICAgICAgS2V5d29yZCA9IFRhcmdl
dEZpZWxkOwogICAgICAgIH0KCiAgICAgICAgQ29yZS5VSS5BdXRvY29tcGxldGUuSW5pdCgkSW5w
dXQsIGZ1bmN0aW9uIChSZXF1ZXN0LCBSZXNwb25zZSkgewogICAgICAgICAgICAgICAgdmFyIFVS
TCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSA9IHsKICAgICAgICAgICAgICAg
ICAgICBBY3Rpb246ICdBZ2VudFRpY2tldEpJUkFEaWFsb2cnLAogICAgICAgICAgICAgICAgICAg
IFN1YmFjdGlvbjogU3ViYWN0aW9uLAogICAgICAgICAgICAgICAgICAgIFByb2plY3Q6ICQoJyNQ
cm9qZWN0JykudmFsKCksCiAgICAgICAgICAgICAgICAgICAgVGVybTogUmVxdWVzdC50ZXJtCiAg
ICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICRJbnB1dC5kYXRhKCdBdXRvQ29tcGxl
dGVYSFInLCBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKFVSTCwgRGF0YSwgZnVuY3Rpb24gKFJlc3Vs
dCkgewogICAgICAgICAgICAgICAgICAgIHZhciBEYXRhID0gW107CiAgICAgICAgICAgICAgICAg
ICAgJElucHV0LnJlbW92ZURhdGEoJ0F1dG9Db21wbGV0ZVhIUicpOwogICAgICAgICAgICAgICAg
ICAgICQuZWFjaChSZXN1bHQsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
RGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLkxhYmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuVmFsdWUKICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg
ICAgICAgUmVzcG9uc2UoRGF0YSk7CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgfSwgZnVu
Y3Rpb24gKEV2ZW50LCBVSSkgewogICAgICAgICAgICAkKCcjJyArIEtleXdvcmQgKS52YWwoVUku
aXRlbS52YWx1ZSk7CiAgICAgICAgICAgICQoJyMnICsgS2V5d29yZCArICdTZWFyY2hGaWVsZCcp
LnZhbChVSS5pdGVtLmxhYmVsKTsKICAgICAgICB9LCBLZXl3b3JkICsgJ1NlYXJjaCcpOwogICAg
fTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cgp9KSggSklSQS5BdXRvY29tcGxldGUgfHwge30gKTsK
Cgo=
IyAtLQojIHZhci9wYWNrYWdlc2V0dXAvSklSQVBhY2thZ2UucG0gLSBjb2RlIHRvIGV4Y2VjdXRl
IGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgojIENvcHlyaWdodCAoQykgMjAxNSBjYXRXb3Jr
WCBHbWJILCBodHRwOi8vY2F0d29ya3guZGUKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2Vk
IGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRp
ZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv
YWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgdmFyOjpwYWNrYWdlc2V0dXA6OkpJUkFQYWNrYWdlOwoK
dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHV0Zjg7Cgp1c2UgTGlzdDo6VXRpbCBxdyhm
aXJzdCk7CnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVD
aGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gcXcoCiAgICBLZXJuZWw6
OkNvbmZpZwogICAgS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZwogICAgS2VybmVsOjpTeXN0ZW06
OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UKICAgIEtlcm5lbDo6U3lzdGVtOjpZQU1MCiAg
ICBLZXJuZWw6OlN5c3RlbTo6VmFsaWQKICAgIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQK
KTsKCm91ciAkVkVSU0lPTiA9IDQuMDAxOwoKPWhlYWQxIE5BTUUKCnZhcjo6cGFja2FnZXNldHVw
OjpKSVJBUGFja2FnZS5wbSAtIGNvZGUgdG8gZXhjZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFs
bGF0aW9uCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5U
RVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKPWN1
dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2Nh
dGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2Vs
ZiwgJFR5cGUgKTsKCiAgICAjIGNyZWF0ZSBuZWVkZWQgc3lzY29uZmlnIG9iamVjdAogICAgbXkg
JFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXND
b25maWcnKTsKCiAgICAjIHJlYnVpbGQgWlpaKiBmaWxlcwogICAgJFN5c0NvbmZpZ09iamVjdC0+
V3JpdGVEZWZhdWx0KCk7CgogICAgIyBkZWZpbmUgdGhlIFpaWiBmaWxlcwogICAgbXkgQFpaWkZp
bGVzID0gKAogICAgICAgICdaWlpBQXV0by5wbScsCiAgICAgICAgJ1paWkF1dG8ucG0nLAogICAg
KTsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzIChtb2RfcGVybCB3b3JrYXJvdW5kKQogICAg
Zm9yIG15ICRaWlpGaWxlIChAWlpaRmlsZXMpIHsKCiAgICAgICAgUFJFRklYOgogICAgICAgIGZv
ciBteSAkUHJlZml4IChASU5DKSB7CiAgICAgICAgICAgIG15ICRGaWxlID0gJFByZWZpeCAuICcv
S2VybmVsL0NvbmZpZy9GaWxlcy8nIC4gJFpaWkZpbGU7CiAgICAgICAgICAgIG5leHQgUFJFRklY
IGlmICEtZiAkRmlsZTsKICAgICAgICAgICAgZG8gJEZpbGU7CiAgICAgICAgICAgIGxhc3QgUFJF
RklYOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0
YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVP
YmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAk
U2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNyZWF0ZSBkeW5hbWljIGZpZWxkcyAKICAgICRT
ZWxmLT5fSW5zdGFsbFdlYnNlcnZpY2UoKTsKICAgICRTZWxmLT5fQ3JlYXRlRHluYW1pY0ZpZWxk
cygpOwogICAgJFNlbGYtPl9BY3RpdmF0ZUR5bmFtaWNGaWVsZHMoKTsKCiAgICByZXR1cm4gMTsK
fQoKPWl0ZW0gQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAg
ICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBD
b2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJu
IDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAg
ICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29k
ZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+X0lu
c3RhbGxXZWJzZXJ2aWNlKCk7CiAgICAkU2VsZi0+X0NyZWF0ZUR5bmFtaWNGaWVsZHMoKTsKICAg
ICRTZWxmLT5fQWN0aXZhdGVEeW5hbWljRmllbGRzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVt
IENvZGVVbmluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJl
c3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5z
dGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9Cgo9
aXRlbSBfSW5zdGFsbFdlYnNlcnZpY2UoKQoKPWN1dAoKc3ViIF9JbnN0YWxsV2Vic2VydmljZSB7
CiAgICBteSAoJFNlbGYsICVQYXJhbSkgPSBAXzsKCiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CiAgICBteSAkTG9jYXRpb24gICA9
IGpvaW4gJy8nLAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdl
dCgnSG9tZScpLAogICAgICAgIHF3L3ZhciBHZW5lcmljSW50ZXJmYWNlIEdlbmVyaWNUaWNrZXRD
b25uZWN0b3JSRVNULnltbC87CgogICAgbXkgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkTG9j
YXRpb24sCiAgICApOwoKICAgIG15ICRJbXBvcnRlZENvbmZpZyA9ICRZQU1MT2JqZWN0LT5Mb2Fk
KCBEYXRhID0+ICR7JENvbnRlbnR9ICk7CgogICAgIyBkaXNwbGF5IGFueSBZQU1MIGVycm9yIG1l
c3NhZ2UgYXMgYSBub3JtYWwgb3RycyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICFJc0hhc2hSZWZX
aXRoRGF0YSgkSW1wb3J0ZWRDb25maWcpICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAj
IGNoZWNrIGlmIGltcG9ydGVkIGNvbmZpZ3VyYXRpb24gaGFzIGN1cnJlbnQgZnJhbWV3b3JrIHZl
cnNpb24gb3RoZXJ3aXNlIHVwZGF0ZSBpdAogICAgI2lmICggJEltcG9ydGVkQ29uZmlnLT57RnJh
bWV3b3JrVmVyc2lvbn0gbmUgJFNlbGYtPntGcmFtZXdvcmtWZXJzaW9ufSApIHsKICAgICMgICAg
JEltcG9ydGVkQ29uZmlnID0gJFNlbGYtPl9VcGRhdGVDb25maWd1cmF0aW9uKCBDb25maWd1cmF0
aW9uID0+ICRJbXBvcnRlZENvbmZpZyApOwogICAgI30KCiAgICAjIHJlbW92ZSBmcmFtZXdvcmsg
aW5mb3JtYXRpb24gc2luY2UgaXMgbm90IG5lZWRlZCBhbnltb3JlCiAgICBkZWxldGUgJEltcG9y
dGVkQ29uZmlnLT57RnJhbWV3b3JrVmVyc2lvbn07CgogICAgIyBnZXQgd2Vic2VydmljZSBuYW1l
CiAgICBteSAkV2Vic2VydmljZU5hbWUgICA9IGJhc2VuYW1lICRMb2NhdGlvbjsKICAgIG15ICRX
ZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVy
aWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKCiAgICAjIHJlbW92ZSBmaWxlIGV4dGVuc2lvbgog
ICAgJFdlYnNlcnZpY2VOYW1lID1+IHN7XC5bXi5dKyR9e31nOwoKICAgICMgY2hlY2sgaWYgbmFt
ZSBpcyBkdXBsaWNhdGVkCiAgICBteSAlV2Vic2VydmljZUxpc3QgPSByZXZlcnNlICV7ICRXZWJz
ZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlTGlzdCgpIH07CgogICAgcmV0dXJuIGlmICRXZWJzZXJ2
aWNlTGlzdHsgJFdlYnNlcnZpY2VOYW1lIH07CgogICAgIyBvdGhlcndpc2Ugc2F2ZSBjb25maWd1
cmF0aW9uIGFuZCByZXR1cm4gdG8gb3ZlcnZpZXcgc2NyZWVuCiAgICBteSAkU3VjY2VzcyA9ICRX
ZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgICAgIE5hbWUgICAgPT4gJFdlYnNl
cnZpY2VOYW1lLAogICAgICAgIENvbmZpZyAgPT4gJEltcG9ydGVkQ29uZmlnLAogICAgICAgIFZh
bGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwp9CgpzdWIgX0NyZWF0ZUR5
bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFs
aWRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlk
Jyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVs
OjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIG15ICRWYWxpZElEID0gJFZhbGlkT2JqZWN0
LT5WYWxpZExvb2t1cCgKICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgKTsKCiAgICAjIGdl
dCBhbGwgY3VycmVudCBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAk
RHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+
IDAsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIG9yZGVyIG51bWJlcnMgKGlzIGFscmVh
ZHkgc29ydGVkKS4KICAgIG15IEBEeW5hbWljZmllbGRPcmRlckxpc3Q7CiAgICBmb3IgbXkgJER5
bmFtaWNmaWVsZCAoIEB7JER5bmFtaWNGaWVsZExpc3R9ICkgewogICAgICAgIHB1c2ggQER5bmFt
aWNmaWVsZE9yZGVyTGlzdCwgJER5bmFtaWNmaWVsZC0+e0ZpZWxkT3JkZXJ9OwogICAgfQoKICAg
ICMgZ2V0IHRoZSBsYXN0IGVsZW1lbnQgZnJvbSB0aGUgb3JkZXIgbGlzdCBhbmQgYWRkIDEKICAg
IG15ICROZXh0T3JkZXJOdW1iZXIgPSAxOwogICAgaWYgKEBEeW5hbWljZmllbGRPcmRlckxpc3Qp
IHsKICAgICAgICAkTmV4dE9yZGVyTnVtYmVyID0gJER5bmFtaWNmaWVsZE9yZGVyTGlzdFstMV0g
KyAxOwogICAgfQoKICAgICMgZ2V0IHRoZSBkZWZpbml0aW9uIGZvciBhbGwgZHluYW1pYyBmaWVs
ZHMgZm9yIElUU00KICAgIG15IEBEeW5hbWljRmllbGRzID0gJFNlbGYtPl9HZXREeW5hbWljRmll
bGRzRGVmaW5pdGlvbigpOwoKICAgICMgY3JlYXRlIGEgZHluYW1pYyBmaWVsZHMgbG9va3VwIHRh
YmxlCiAgICBteSAlRHluYW1pY0ZpZWxkTG9va3VwOwogICAgZm9yIG15ICREeW5hbWljRmllbGQg
KCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKICAgICAgICBuZXh0IGlmIHJlZiAkRHluYW1pY0Zp
ZWxkIG5lICdIQVNIJzsKICAgICAgICAkRHluYW1pY0ZpZWxkTG9va3VweyAkRHluYW1pY0ZpZWxk
LT57TmFtZX0gfSA9ICREeW5hbWljRmllbGQ7CiAgICB9CgogICAgIyBjcmVhdGUgb3IgdXBkYXRl
IGR5bmFtaWMgZmllbGRzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVs
ZCAoQER5bmFtaWNGaWVsZHMpIHsKICAgICAgICBteSAkQ3JlYXRlRHluYW1pY0ZpZWxkOwoKICAg
ICAgICAjIGNoZWNrIGlmIHRoZSBkeW5hbWljIGZpZWxkIGFscmVhZHkgZXhpc3RzCiAgICAgICAg
aWYgKCByZWYgJER5bmFtaWNGaWVsZExvb2t1cHsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gbmUg
J0hBU0gnICkgewogICAgICAgICAgICAkQ3JlYXRlRHluYW1pY0ZpZWxkID0gMTsKICAgICAgICB9
CgogICAgICAgICMgaWYgdGhlIGZpZWxkIGV4aXN0cyBjaGVjayBpZiB0aGUgdHlwZSBtYXRjaCB3
aXRoIHRoZSBuZWVkZWQgdHlwZQogICAgICAgIGVsc2lmICgKICAgICAgICAgICAgJER5bmFtaWNG
aWVsZExvb2t1cHsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0tPntGaWVsZFR5cGV9CiAgICAgICAg
ICAgIG5lICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9CiAgICAgICAgICAgICkKICAgICAgICB7
CgogICAgICAgICAgICAjIHJlbmFtZSB0aGUgZmllbGQgYW5kIGNyZWF0ZSBhIG5ldyBvbmUKICAg
ICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRV
cGRhdGUoCiAgICAgICAgICAgICAgICAleyAkRHluYW1pY0ZpZWxkTG9va3VweyAkRHluYW1pY0Zp
ZWxkLT57TmFtZX0gfSB9LAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICREeW5hbWljRmllbGRM
b29rdXB7ICREeW5hbWljRmllbGQtPntOYW1lfSB9LT57TmFtZX0gLiAnT2xkJywKICAgICAgICAg
ICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENyZWF0ZUR5
bmFtaWNGaWVsZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBpZiB0aGUgZmll
bGQgZXhpc3RzIGFuZCB0aGUgdHlwZSBtYXRjaCwgdXBkYXRlIGl0IHRvIHRoZSBJVFNNIGRlZmlu
aXRpb24KICAgICAgICBlbHNlIHsKIyAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNG
aWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAojICAgICAgICAgICAgICAgICV7JER5bmFt
aWNGaWVsZH0sCiMgICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkTG9v
a3VweyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfS0+e0lEfSwKIyAgICAgICAgICAgICAgICBGaWVs
ZE9yZGVyID0+ICREeW5hbWljRmllbGRMb29rdXB7ICREeW5hbWljRmllbGQtPntOYW1lfSB9LT57
RmllbGRPcmRlcn0sCiMgICAgICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAkVmFsaWRJRCwKIyAg
ICAgICAgICAgICAgICBSZW9yZGVyICAgID0+IDAsCiMgICAgICAgICAgICAgICAgVXNlcklEICAg
ICA9PiAxLAojICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbmV3
IGZpZWxkIGhhcyB0byBiZSBjcmVhdGVkCiAgICAgICAgaWYgKCRDcmVhdGVEeW5hbWljRmllbGQp
IHsKICAgICAgICAgICAgIyBjcmVhdGUgYSBuZXcgZmllbGQKICAgICAgICAgICAgbXkgJEZpZWxk
SUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgICAgICAg
ICBOYW1lICAgICAgID0+ICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIExh
YmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxk
T3JkZXIgPT4gJE5leHRPcmRlck51bWJlciwKICAgICAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4g
JER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+
ICREeW5hbWljRmllbGQtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgIENvbmZpZyAgICAg
PT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sCiAgICAgICAgICAgICAgICBWYWxpZElEICAgID0+
ICRWYWxpZElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICAp
OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJEZpZWxkSUQ7CgogICAgICAgICAg
ICAjIGluY3JlYXNlIHRoZSBvcmRlciBudW1iZXIKICAgICAgICAgICAgJE5leHRPcmRlck51bWJl
cisrOwogICAgICAgIH0KCiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9HZXREeW5hbWlj
RmllbGRzRGVmaW5pdGlvbigpCgpyZXR1cm5zIHRoZSBkZWZpbml0aW9uIGZvciByZXBvcnRpbmcg
cmVsYXRlZCBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dl
dER5bmFtaWNGaWVsZHNEZWZpbml0aW9uKCk7Cgo9Y3V0CgpzdWIgX0dldER5bmFtaWNGaWVsZHNE
ZWZpbml0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUg
YWxsIGR5bmFtaWMgZmllbGRzIGZvciByZXBvcnRpbmcKICAgIG15IEBEeW5hbWljRmllbGRzID0g
KAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnSklSQUlzc3VlSUQnLAogICAg
ICAgICAgICBMYWJlbCAgICAgID0+ICdKaXJhIElzc3VlIElEJywKICAgICAgICAgICAgRmllbGRU
eXBlICA9PiAnVGV4dCcsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAg
ICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICA9PiAn
JywKICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgPT4gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4
MC9icm93c2UvWyUgRGF0YS5KSVJBSXNzdWVJRCB8IHVybCAlXScsCiAgICAgICAgICAgIH0sCiAg
ICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0FydGljbGVTZW50
VG9KSVJBJywKICAgICAgICAgICAgTGFiZWwgICAgICA9PiAnQXJ0aWNsZSB3YXMgc2VudCB0byBK
SVJBJywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnQ2hlY2tib3gnLAogICAgICAgICAgICBP
YmplY3RUeXBlID0+ICdBcnRpY2xlJywKICAgICAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAg
ICAgICAgICAgICBEZWZhdWx0VmFsdWUgID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwK
ICAgICk7CgogICAgcmV0dXJuIEBEeW5hbWljRmllbGRzOwp9CgpzdWIgX0FjdGl2YXRlRHluYW1p
Y0ZpZWxkcyB7CiAgICBteSAoJFNlbGYsICVQYXJhbSkgPSBAXzsKCgogICAgbXkgJU1hcCA9ICgK
ICAgICAgICBKSVJBSXNzdWVJRCA9PiB7CiAgICAgICAgICAgICdab29tJyAgICAgPT4gMSwKICAg
ICAgICAgICAgJ0ZyZWVUZXh0JyA9PiAxLAogICAgICAgICAgICAnU2VhcmNoJyAgID0+IDEsCiAg
ICAgICAgfSwKICAgICk7CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIGZvciBteSAkRmllbGQg
KCBrZXlzICVNYXAgKSB7CiAgICAgICAgZm9yIG15ICRTY3JlZW4gKCBrZXlzICV7ICRNYXB7JEZp
ZWxkfSB9ICkgewogICAgICAgICAgICBteSAkRnVsbG5hbWUgICAgICA9ICdUaWNrZXQ6OkZyb250
ZW5kOjpBZ2VudFRpY2tldCcgLiAkU2NyZWVuOwogICAgICAgICAgICBteSAkT3B0aW9ucyAgICAg
ICA9ICRDb25maWdPYmplY3QtPkdldCggJEZ1bGxuYW1lICk7CiAgICAgICAgICAgIG15ICRNYXBw
aW5nICAgICAgID0gJE9wdGlvbnMtPntEeW5hbWljRmllbGR9IHx8IHt9OwoKICAgICAgICAgICAg
bXkgJU5ld01hcHBpbmcgPSAoCiAgICAgICAgICAgICAgICAleyAkTWFwcGluZyB9LAogICAgICAg
ICAgICAgICAgJEZpZWxkID0+ICRNYXB7JEZpZWxkfS0+eyRTY3JlZW59LAogICAgICAgICAgICAp
OwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVt
VXBkYXRlKAogICAgICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgICAgIEtleSAg
ID0+ICIkRnVsbG5hbWUjIyNEeW5hbWljRmllbGQiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4g
XCVOZXdNYXBwaW5nLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4g
MTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdh
cmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRo
ZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElm
IHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcv
bGljZW5zZXMvZ3BsLTIuMC50eHQ+LgoKPWN1dAoK
Get('var::packagesetup::' . $Param{Structure}->{Name}->{Content} )->CodeInstall();
]]>
Get('var::packagesetup::' . $Param{Structure}->{Name}->{Content} )->CodeUpgrade();
]]>
Copyright (C) 2008-2016 catWorkX GmbH http://www.catworkx.de
This is commercial software.
Please install the otrs2jira-licensing plugin into your JIRA installation and obtain a valid license.
Please contact catWorkX GmbH for a valid license.
]]>
Copyright (C) 2008-2016 catWorkX GmbH http://www.catworkx.de
Dies ist kommerzielle Software.
Bitte installieren Sie das Plugin otrs2jira-licensing in Ihre JIRA Installation und hinterlegen dort eine gültige Lizenz.
Bitte setzen Sie sich mit der catWorkX GmbH bzgl. einer gültigen Lizenz in Verbindung.
]]>
2016-09-05 10:50:07lvps87-230-13-103.dedicated.hosteurope.de