[mono/monodevelop] [55 commits] 2280ebbd: bumped version-checks for md-addins fixes

"Lluis Sanchez ([email protected])" <[email protected]> Thu, 21 Nov 2013 22:27:30 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <000001427cc67745-c7d1206c-b58e-4a01-8fed-37480ac445a8-000000@email.amazonses.com>
DQogICBCcmFuY2g6IHJlZnMvaGVhZHMvcmV0aW5hDQogICAgIEhvbWU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tb25vL21vbm9kZXZlbG9wDQogIENvbXBhcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25v
L21vbm9kZXZlbG9wL2NvbXBhcmUvZWExYmQzMGI4NDgzLi4uYmUxOTk4ZjU1YTRhDQoNCiAgIENv
bW1pdDogMjI4MGViYmQwM2U2OTMxOTgwYWE1ZDg2ZDZkMjE1NjE5YThhM2MwNQ0KICAgQXV0aG9y
OiBKZWZmcmV5IFN0ZWRmYXN0IDxmZWpqQGdub21lLm9yZz4gKGpzdGVkZmFzdCkNCiAgICAgRGF0
ZTogMjAxMy0xMS0xNCAxNToyNzozNSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29t
L21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzIyODBlYmJkMDNlNjkzMTk4MGFhNWQ4NmQ2ZDIxNTYx
OWE4YTNjMDUNCg0KYnVtcGVkIHZlcnNpb24tY2hlY2tzIGZvciBtZC1hZGRpbnMgZml4ZXMNCg0K
Q2hhbmdlZCBwYXRoczoKICBNIHZlcnNpb24tY2hlY2tzCg0KTW9kaWZpZWQ6IHZlcnNpb24tY2hl
Y2tzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtMTcsNyArMTcsNyBAQCBERVBbMF09bWQtYWRkaW5zCiBERVBf
TkFNRVswXT1NREFERElOUwogREVQX1BBVEhbMF09JHt0b3Bfc3JjZGlyfS8uLi9tZC1hZGRpbnMK
IERFUF9NT0RVTEVbMF09Z2l0QGdpdGh1Yi5jb206eGFtYXJpbi9tZC1hZGRpbnMuZ2l0Ci1ERVBf
TkVFREVEX1ZFUlNJT05bMF09MzhlMGYxNzE0NDcxNzM5YzFjNGI1MWQ1Yjk0MDMzMmJjYzNjY2Fk
NworREVQX05FRURFRF9WRVJTSU9OWzBdPTRlYTA0ZGE2YjIwN2FkYWVkNTc4YjI2OWQ5ODhmMWFl
M2Y2MDIxZmEKIERFUF9CUkFOQ0hfQU5EX1JFTU9URVswXT0ibWFzdGVyIG9yaWdpbi9tYXN0ZXIi
CiAKICMgaGVhcC1zaG90DQoNCiAgIENvbW1pdDogOWI3OGM4YzQ4MjJkYTU1MWNhNTQ5ZDQ0NDRj
MzQzNWRiMGRkMmExZg0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAo
VGhlcnpvaykNCiAgICAgRGF0ZTogMjAxMy0xMS0xNCAxNjo1NjoxNSBHTVQNCiAgICAgIFVSTDog
aHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzliNzhjOGM0ODIyZGE1
NTFjYTU0OWQ0NDQ0YzM0MzVkYjBkZDJhMWYNCg0KQnVnIDE2MjI0IC0gVXNpbmcgIlJldmlldyBh
bmQgQ29tbWl0IiBjb21tYW5kIGZyb20gU29sdXRpb24gUGFkIHZlcnNpb24gY29udHJvbCBzdWIt
bWVudSBkb3VibGVzIGNvbW1pdCBlbnRyaWVzLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9z
cmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9E
ZXZlbG9wLlZlcnNpb25Db250cm9sL0NoYW5nZVNldC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9h
ZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVs
b3AuVmVyc2lvbkNvbnRyb2wvQ2hhbmdlU2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWMgc3RyaW5nIEdlbmVyYXRlR2xvYmFsQ29tbWVudCAoQ29tbWl0TWVzc2FnZUZv
cm1hdCBmb3JtYXQsIE1vbm9EZXZlbG9wLlBybwogCQlwdWJsaWMgc3RyaW5nIEdlbmVyYXRlUGF0
aENvbW1lbnQgKHN0cmluZyBwYXRoLCBJRW51bWVyYWJsZTxDaGFuZ2VTZXRJdGVtPiBpdGVtcywg
CiAJCQlDb21taXRNZXNzYWdlRm9ybWF0IG1lc3NhZ2VGb3JtYXQsIE1vbm9EZXZlbG9wLlByb2pl
Y3RzLkF1dGhvckluZm9ybWF0aW9uIHVzZXJJbmZvKQogCQl7Ci0JCQlDaGFuZ2VMb2dXcml0ZXIg
d3JpdGVyID0gbmV3IENoYW5nZUxvZ1dyaXRlciAocGF0aCwgdXNlckluZm8pOworCQkJdmFyIHdy
aXRlciA9IG5ldyBDaGFuZ2VMb2dXcml0ZXIgKHBhdGgsIHVzZXJJbmZvKTsKIAkJCXdyaXRlci5N
ZXNzYWdlRm9ybWF0ID0gbWVzc2FnZUZvcm1hdDsKIAkJCQogCQkJZm9yZWFjaCAoQ2hhbmdlU2V0
SXRlbSBpdGVtIGluIGl0ZW1zKSB7CkBAIC04NSw4ICs4NSw4IEBAIHB1YmxpYyBzdHJpbmcgR2Vu
ZXJhdGVHbG9iYWxDb21tZW50IChDb21taXRNZXNzYWdlRm9ybWF0IGZvcm1hdCwgTW9ub0RldmVs
b3AuUHJvCiANCiAJCXB1YmxpYyBib29sIENvbnRhaW5zRmlsZSAoRmlsZVBhdGggZmlsZU5hbWUp
CiAJCXsKLQkJCWZvciAoaW50IG49MDsgbjxpdGVtcy5Db3VudDsgbisrKQotCQkJCWlmIChpdGVt
cyBbbl0uTG9jYWxQYXRoID09IGZpbGVOYW1lKQorCQkJZm9yZWFjaCAodmFyIGl0ZW0gaW4gaXRl
bXMpCisJCQkJaWYgKGl0ZW0uTG9jYWxQYXRoID09IGZpbGVOYW1lKQogCQkJCQlyZXR1cm4gdHJ1
ZTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQ0KQEAgLTk4LDcgKzk4LDExIEBAIHB1YmxpYyBDaGFu
Z2VTZXRJdGVtIEFkZEZpbGUgKEZpbGVQYXRoIGZpbGUpCiAJCQogCQlwdWJsaWMgQ2hhbmdlU2V0
SXRlbSBBZGRGaWxlIChWZXJzaW9uSW5mbyBmaWxlVmVyc2lvbkluZm8pCiAJCXsKLQkJCUNoYW5n
ZVNldEl0ZW0gaXRlbSA9IG5ldyBDaGFuZ2VTZXRJdGVtIChmaWxlVmVyc2lvbkluZm8pOworCQkJ
Q2hhbmdlU2V0SXRlbSBpdGVtID0gR2V0RmlsZUl0ZW0gKGZpbGVWZXJzaW9uSW5mby5Mb2NhbFBh
dGgpOworCQkJaWYgKGl0ZW0gIT0gbnVsbCkKKwkJCQlyZXR1cm4gaXRlbTsKKworCQkJaXRlbSA9
IG5ldyBDaGFuZ2VTZXRJdGVtIChmaWxlVmVyc2lvbkluZm8pOwogCQkJaXRlbXMuQWRkIChpdGVt
KTsKIAkJCXJldHVybiBpdGVtOwogCQl9CkBAIC0xMzQsNyArMTM4LDcgQEAgcHVibGljIHZvaWQg
UmVtb3ZlSXRlbSAoQ2hhbmdlU2V0SXRlbSBpdGVtKQogCQkKIAkJcHVibGljIENoYW5nZVNldCBD
bG9uZSAoKQogCQl7Ci0JCQlDaGFuZ2VTZXQgY3MgPSAoQ2hhbmdlU2V0KSBNZW1iZXJ3aXNlQ2xv
bmUgKCk7CisJCQl2YXIgY3MgPSAoQ2hhbmdlU2V0KSBNZW1iZXJ3aXNlQ2xvbmUgKCk7CiAJCQlj
cy5Db3B5RnJvbSAodGhpcyk7CiAJCQlyZXR1cm4gY3M7CiAJCX0KQEAgLTE4NCw3ICsxODgsNyBA
QCBpbnRlcm5hbCBDaGFuZ2VTZXRJdGVtIChWZXJzaW9uSW5mbyB2ZXJzaW9uSW5mbykKIAkJCiAJ
CXB1YmxpYyBDaGFuZ2VTZXRJdGVtIENsb25lICgpCiAJCXsKLQkJCUNoYW5nZVNldEl0ZW0gY3Mg
PSAoQ2hhbmdlU2V0SXRlbSkgTWVtYmVyd2lzZUNsb25lICgpOworCQkJdmFyIGNzID0gKENoYW5n
ZVNldEl0ZW0pIE1lbWJlcndpc2VDbG9uZSAoKTsKIAkJCWNzLkNvcHlGcm9tICh0aGlzKTsKIAkJ
CXJldHVybiBjczsKIAkJfQ0KDQogICBDb21taXQ6IDlmYzNiNTgwNWVjZWE0MDgxNDJmODViNWUy
MjBiZDk4NmZlNTE1NDQNCiAgIEF1dGhvcjogSmVmZnJleSBTdGVkZmFzdCA8amVmZkB4YW1hcmlu
LmNvbT4gKGpzdGVkZmFzdCkNCiAgICAgRGF0ZTogMjAxMy0xMS0xNCAxNzo0NzozOCBHTVQNCiAg
ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzlmYzNi
NTgwNWVjZWE0MDgxNDJmODViNWUyMjBiZDk4NmZlNTE1NDQNCg0KW0lkZV0gcmVhZG9ubHlpZmlj
YXRpb24NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRl
L01vbm9EZXZlbG9wLklkZS5HdWkuT3B0aW9uUGFuZWxzL01vbm9SdW50aW1lUGFuZWwuY3MKICBN
IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS5Qcm9qZWN0cy5P
cHRpb25QYW5lbHMvQ29tYmluZUJ1aWxkT3B0aW9ucy5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25v
RGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlByb2plY3RzLk9wdGlvblBhbmVscy9SdW50aW1l
T3B0aW9uc1BhbmVsLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRl
L01vbm9EZXZlbG9wLklkZS5HdWkuT3B0aW9uUGFuZWxzL01vbm9SdW50aW1lUGFuZWwuY3MNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCkBAIC0yNSwxMiArMjUsMTUgQEAKIC8vIFRIRSBTT0ZUV0FSRS4KIAogdXNpbmcg
U3lzdGVtOwordXNpbmcgU3lzdGVtLkxpbnE7CiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2Vu
ZXJpYzsKKwordXNpbmcgR3RrOworCiB1c2luZyBNb25vRGV2ZWxvcC5Db3JlOwogdXNpbmcgTW9u
b0RldmVsb3AuSWRlLkd1aS5EaWFsb2dzOwogdXNpbmcgTW9ub0RldmVsb3AuQ29yZS5Bc3NlbWJs
aWVzOwogdXNpbmcgTW9ub0RldmVsb3AuQ29tcG9uZW50czsKLXVzaW5nIEd0azsKIAogbmFtZXNw
YWNlIE1vbm9EZXZlbG9wLklkZS5HdWkuT3B0aW9uUGFuZWxzCiB7CkBAIC01Miw5ICs1NSw5IEBA
IHB1YmxpYyBvdmVycmlkZSB2b2lkIEFwcGx5Q2hhbmdlcyAoKQogCVtTeXN0ZW0uQ29tcG9uZW50
TW9kZWwuVG9vbGJveEl0ZW0odHJ1ZSldCiAJaW50ZXJuYWwgcGFydGlhbCBjbGFzcyBNb25vUnVu
dGltZVBhbmVsV2lkZ2V0IDogR3RrLkJpbgogCXsKLQkJTGlzdFN0b3JlIHN0b3JlOwotCQlMaXN0
PE1vbm9SdW50aW1lSW5mbz4gbmV3SW5mb3MgPSBuZXcgTGlzdDxNb25vUnVudGltZUluZm8+ICgp
OwotCQlMaXN0PFRhcmdldFJ1bnRpbWU+IHJlbW92ZWRSdW50aW1lcyA9IG5ldyBMaXN0PFRhcmdl
dFJ1bnRpbWU+ICgpOworCQlyZWFkb25seSBMaXN0PFRhcmdldFJ1bnRpbWU+IHJlbW92ZWRSdW50
aW1lcyA9IG5ldyBMaXN0PFRhcmdldFJ1bnRpbWU+ICgpOworCQlyZWFkb25seSBMaXN0PE1vbm9S
dW50aW1lSW5mbz4gbmV3SW5mb3MgPSBuZXcgTGlzdDxNb25vUnVudGltZUluZm8+ICgpOworCQly
ZWFkb25seSBMaXN0U3RvcmUgc3RvcmU7CiAJCVRyZWVJdGVyIGRlZmF1bHRJdGVyOwogCQlUcmVl
SXRlciBydW5uaW5nSXRlcjsKIAkJCkBAIC0xMDEsMTMgKzEwNCwxNCBAQCBwdWJsaWMgdm9pZCBT
dG9yZSAoKQogCQkJTW9ub1J1bnRpbWVJbmZvIG5ld0RlZmF1bHRJbmZvID0gb2IgYXMgTW9ub1J1
bnRpbWVJbmZvOwogCQkJaWYgKG9iIGlzIFRhcmdldFJ1bnRpbWUpCiAJCQkJSWRlQXBwLlByZWZl
cmVuY2VzLkRlZmF1bHRUYXJnZXRSdW50aW1lID0gKFRhcmdldFJ1bnRpbWUpb2I7Ci0JCQkKLQkJ
CWZvcmVhY2ggKE1vbm9SdW50aW1lSW5mbyByaW5mbyBpbiBuZXdJbmZvcykgeworCisJCQlmb3Jl
YWNoICh2YXIgcmluZm8gaW4gbmV3SW5mb3MpIHsKIAkJCQlUYXJnZXRSdW50aW1lIHRyID0gTW9u
b1RhcmdldFJ1bnRpbWUuUmVnaXN0ZXJSdW50aW1lIChyaW5mbyk7CiAJCQkJaWYgKHJpbmZvID09
IG5ld0RlZmF1bHRJbmZvKQogCQkJCQlJZGVBcHAuUHJlZmVyZW5jZXMuRGVmYXVsdFRhcmdldFJ1
bnRpbWUgPSB0cjsKIAkJCX0KLQkJCWZvcmVhY2ggKE1vbm9UYXJnZXRSdW50aW1lIHRyIGluIHJl
bW92ZWRSdW50aW1lcykKKworCQkJZm9yZWFjaCAodmFyIHRyIGluIHJlbW92ZWRSdW50aW1lcy5P
ZlR5cGU8TW9ub1RhcmdldFJ1bnRpbWU+ICgpKQogCQkJCU1vbm9UYXJnZXRSdW50aW1lLlVucmVn
aXN0ZXJSdW50aW1lICh0cik7CiAJCQkKIAkJfQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9N
b25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlByb2plY3RzLk9wdGlvblBhbmVscy9Db21i
aW5lQnVpbGRPcHRpb25zLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWMg
b3ZlcnJpZGUgdm9pZCBBcHBseUNoYW5nZXMgKCkKIAogCXBhcnRpYWwgY2xhc3MgQ29tYmluZUJ1
aWxkT3B0aW9uc1dpZGdldCA6IEd0ay5CaW4gCiAJewotCQlTb2x1dGlvbiBzb2x1dGlvbjsKKwkJ
cmVhZG9ubHkgU29sdXRpb24gc29sdXRpb247CiAJCQogCQlwdWJsaWMgQ29tYmluZUJ1aWxkT3B0
aW9uc1dpZGdldCAoU29sdXRpb24gc29sdXRpb24pCiAJCXsNCg0KTW9kaWZpZWQ6IG1haW4vc3Jj
L2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS5Qcm9qZWN0cy5PcHRpb25QYW5l
bHMvUnVudGltZU9wdGlvbnNQYW5lbC5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTYwLDggKzYwLDggQEAg
cHVibGljIG92ZXJyaWRlIHZvaWQgQXBwbHlDaGFuZ2VzKCkKIAogCXBhcnRpYWwgY2xhc3MgUnVu
dGltZU9wdGlvbnNQYW5lbFdpZGdldCA6IEd0ay5CaW4gCiAJewotCQlEb3ROZXRQcm9qZWN0IHBy
b2plY3Q7Ci0JCUxpc3Q8VGFyZ2V0RnJhbWV3b3JrPiBmcmFtZXdvcmtzOworCQlyZWFkb25seSBM
aXN0PFRhcmdldEZyYW1ld29yaz4gZnJhbWV3b3JrczsKKwkJcmVhZG9ubHkgRG90TmV0UHJvamVj
dCBwcm9qZWN0OwogCiAJCXB1YmxpYyBSdW50aW1lT3B0aW9uc1BhbmVsV2lkZ2V0IChEb3ROZXRQ
cm9qZWN0IHByb2plY3QsIElFbnVtZXJhYmxlPEl0ZW1Db25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9ucykKIAkJewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWMgUnVudGltZU9wdGlvbnNQYW5lbFdp
ZGdldCAoRG90TmV0UHJvamVjdCBwcm9qZWN0LCBJRW51bWVyYWJsZTxJdGVtQ29uZmlndQogCQkJ
CW5vdEluc3RhbGxlZCA9IHRydWU7CiAJCQkJZnJhbWV3b3Jrcy5BZGQgKHByb2plY3QuVGFyZ2V0
RnJhbWV3b3JrKTsKIAkJCX0KLQkJCQkKKwogCQkJLy9zb3J0IGJ5IGlkIGFzY2VuZGluZywgdmVy
c2lvbiBkZXNjZW5kaW5nLCBwcm9maWxlIGFzY2VuZGluZwogCQkJZnJhbWV3b3Jrcy5Tb3J0ICgo
eCwgeSkgPT4gewogCQkJCXZhciBjbXAgPSBzdHJpbmcuQ29tcGFyZU9yZGluYWwgKHguSWQuSWRl
bnRpZmllciwgeS5JZC5JZGVudGlmaWVyKTsNCg0KICAgQ29tbWl0OiA2YmI0YTNjMTc0OTE2MTU2
MDdiODk2MGZlY2E2NTU2MjFlODc1MzFkDQogICBBdXRob3I6IEplZmZyZXkgU3RlZGZhc3QgPGpl
ZmZAeGFtYXJpbi5jb20+IChqc3RlZGZhc3QpDQogICAgIERhdGU6IDIwMTMtMTEtMTQgMjA6NDg6
MDQgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2Nv
bW1pdC82YmI0YTNjMTc0OTE2MTU2MDdiODk2MGZlY2E2NTU2MjFlODc1MzFkDQoNCnVwZGF0ZWQg
ZGVidWdnZXItbGlicw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9kZWJ1Z2dl
ci1saWJzCg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwvZGVidWdnZXItbGlicw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KQEAgLTEgKzEgQEAKLVN1YnByb2plY3QgY29tbWl0IGU2MWEyMGUxNDUxZmYxMmVlNGIwNjcy
Y2M5NTIzYWQyYzYxMmJlYjkKK1N1YnByb2plY3QgY29tbWl0IGY3NDkxZTUzNTcwM2I4MzUyNDMy
ZmI3NjBkZGMwNDE3NDNmOTAwYzMNCg0KICAgQ29tbWl0OiA0M2MyZjcxNTBjZjQ4YWM3M2FhYzU5
ZGNiMTdmNDIxYmYxMjBkMWYxDQogICBBdXRob3I6IE1pY2hhZWwgSHV0Y2hpbnNvbiA8bWh1dGNo
QHhhbWFyaW4uY29tPiAobWh1dGNoKQ0KICAgICBEYXRlOiAyMDEzLTExLTE0IDIyOjI0OjU0IEdN
VA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQv
NDNjMmY3MTUwY2Y0OGFjNzNhYWM1OWRjYjE3ZjQyMWJmMTIwZDFmMQ0KDQpbSWRlXSBTaG93IG1l
c3NhZ2Vib3ggb24gV2luZG93cyBpZiBHVEsjIGlzIG1pc3Npbmcgb3IgdG9vIG9sZA0KDQpDaGFu
Z2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3Au
SWRlL0lkZVN0YXJ0dXAuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5J
ZGUvTW9ub0RldmVsb3AuSWRlL0lkZVN0YXJ0dXAuY3MNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC00NiwxMiAr
NDYsOSBAQAogdXNpbmcgTW9ub0RldmVsb3AuQ29yZTsKIHVzaW5nIE1vbm9EZXZlbG9wLklkZS5H
dWkuRGlhbG9nczsKIHVzaW5nIE1vbm9EZXZlbG9wLklkZS5HdWk7Ci11c2luZyBNb25vRGV2ZWxv
cC5Db3JlLkV4ZWN1dGlvbjsKIHVzaW5nIE1vbm9EZXZlbG9wLkNvcmUuSW5zdHJ1bWVudGF0aW9u
OwogdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwotdXNpbmcgTW9ub0RldmVsb3AuUHJvamVjdHM7
CiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKLXVzaW5nIE1vbm9EZXZlbG9wLkNv
cmUuTG9nUmVwb3J0aW5nOwogCiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuSWRlCiB7CkBAIC04OCw5
ICs4NSw4IEBAIGludCBSdW4gKE1vbm9EZXZlbG9wT3B0aW9ucyBvcHRpb25zKQogCQkJUGxhdGZv
cm0uSW5pdGlhbGl6ZSAoKTsKIAkJCQogCQkJQ291bnRlcnMuSW5pdGlhbGl6YXRpb24uVHJhY2Ug
KCJJbml0aWFsaXppbmcgR1RLIik7Ci0JCQlpZiAoUGxhdGZvcm0uSXNXaW5kb3dzKSB7Ci0JCQkJ
Q2hlY2tXaW5kb3dzR3RrICgpOwotCQkJfQorCQkJaWYgKFBsYXRmb3JtLklzV2luZG93cyAmJiAh
Q2hlY2tXaW5kb3dzR3RrICgpKQorCQkJCXJldHVybiAxOwogCQkJU2V0dXBFeGNlcHRpb25NYW5h
Z2VyICgpOwogCQkJCiAJCQl0cnkgewpAQCAtMzIyLDI2ICszMTgsNjEgQEAgdm9pZCBTZXR1cFRo
ZW1lICgpCiAJCVtyZXR1cm46IFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5NYXJzaGFs
QXMoU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLlVubWFuYWdlZFR5cGUuQm9vbCldCiAJ
CXN0YXRpYyBleHRlcm4gYm9vbCBTZXREbGxEaXJlY3RvcnkgKHN0cmluZyBscFBhdGhOYW1lKTsK
IAotCQlzdGF0aWMgdm9pZCBDaGVja1dpbmRvd3NHdGsgKCkKKwkJc3RhdGljIGJvb2wgQ2hlY2tX
aW5kb3dzR3RrICgpCiAJCXsKIAkJCXN0cmluZyBsb2NhdGlvbiA9IG51bGw7CisJCQlWZXJzaW9u
IHZlcnNpb24gPSBudWxsOworCQkJVmVyc2lvbiBtaW5WZXJzaW9uID0gbmV3IFZlcnNpb24gKDIs
IDEyLCAyMik7CisKIAkJCXVzaW5nICh2YXIga2V5ID0gTWljcm9zb2Z0LldpbjMyLlJlZ2lzdHJ5
LkxvY2FsTWFjaGluZS5PcGVuU3ViS2V5KEAiU09GVFdBUkVcWGFtYXJpblxHdGtTaGFycFxJbnN0
YWxsRm9sZGVyIikpIHsKLQkJCQlpZiAoa2V5ICE9IG51bGwpIHsKKwkJCQlpZiAoa2V5ICE9IG51
bGwpCiAJCQkJCWxvY2F0aW9uID0ga2V5LkdldFZhbHVlIChudWxsKSBhcyBzdHJpbmc7Ci0JCQkJ
fQogCQkJfQotCQkJaWYgKGxvY2F0aW9uID09IG51bGwgfHwgIUZpbGUuRXhpc3RzIChQYXRoLkNv
bWJpbmUgKGxvY2F0aW9uLCAiYmluIiwgImxpYmd0ay13aW4zMi0yLjAtMC5kbGwiKSkpIHsKLQkJ
CQlMb2dnaW5nU2VydmljZS5Mb2dFcnJvciAoIkRpZCBub3QgZmluZCByZWdpc3RlcmVkIEdUSyMg
aW5zdGFsbGF0aW9uIik7Ci0JCQkJcmV0dXJuOworCQkJdXNpbmcgKHZhciBrZXkgPSBNaWNyb3Nv
ZnQuV2luMzIuUmVnaXN0cnkuTG9jYWxNYWNoaW5lLk9wZW5TdWJLZXkgKEAiU09GVFdBUkVcWGFt
YXJpblxHdGtTaGFycFxWZXJzaW9uIikpIHsKKwkJCQlpZiAoa2V5ICE9IG51bGwpCisJCQkJCVZl
cnNpb24uVHJ5UGFyc2UgKGtleS5HZXRWYWx1ZSAobnVsbCkgYXMgc3RyaW5nLCBvdXQgdmVyc2lv
bik7CiAJCQl9CisKKwkJCS8vVE9ETzogY2hlY2sgYnVpbGQgdmVyc2lvbiBvZiBHVEsjIGRsbHMg
aW4gR0FDCisJCQlpZiAodmVyc2lvbiA9PSBudWxsIHx8IHZlcnNpb24gPCBtaW5WZXJzaW9uIHx8
IGxvY2F0aW9uID09IG51bGwgfHwgIUZpbGUuRXhpc3RzIChQYXRoLkNvbWJpbmUgKGxvY2F0aW9u
LCAiYmluIiwgImxpYmd0ay13aW4zMi0yLjAtMC5kbGwiKSkpIHsKKwkJCQlMb2dnaW5nU2Vydmlj
ZS5Mb2dFcnJvciAoIkRpZCBub3QgZmluZCByZXF1aXJlZCBHVEsjIGluc3RhbGxhdGlvbiIpOwor
CQkJCXN0cmluZyB1cmwgPSAiaHR0cDovL21vbm9kZXZlbG9wLmNvbS9Eb3dubG9hZCI7CisJCQkJ
c3RyaW5nIGNhcHRpb24gPSAiRmF0YWwgRXJyb3IiOworCQkJCXN0cmluZyBtZXNzYWdlID0KKwkJ
CQkJInswfSBkaWQgbm90IGZpbmQgdGhlIHJlcXVpcmVkIHZlcnNpb24gb2YgR1RLIy4gUGxlYXNl
IGNsaWNrIE9LIHRvIG9wZW4gdGhlIGRvd25sb2FkIHBhZ2UsIHdoZXJlICIgKworCQkJCQkieW91
IGNhbiBkb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24uIjsKKwkJCQlpZiAo
RGlzcGxheVdpbmRvd3NPa0NhbmNlbE1lc3NhZ2UgKAorCQkJCQlzdHJpbmcuRm9ybWF0IChtZXNz
YWdlLCBCcmFuZGluZ1NlcnZpY2UuQXBwbGljYXRpb25OYW1lLCB1cmwpLCBjYXB0aW9uKQorCQkJ
CSkgeworCQkJCQlQcm9jZXNzLlN0YXJ0ICh1cmwpOworCQkJCX0KKwkJCQlyZXR1cm4gZmFsc2U7
CisJCQl9CisKIAkJCXZhciBwYXRoID0gUGF0aC5Db21iaW5lIChsb2NhdGlvbiwgQCJiaW4iKTsK
IAkJCXRyeSB7CiAJCQkJaWYgKFNldERsbERpcmVjdG9yeSAocGF0aCkpIHsKLQkJCQkJcmV0dXJu
OworCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQl9CiAJCQl9IGNhdGNoIChFbnRyeVBvaW50Tm90Rm91
bmRFeGNlcHRpb24pIHsKIAkJCX0KLQkJCUxvZ2dpbmdTZXJ2aWNlLkxvZ0Vycm9yICgiVW5hYmxl
IHRvIHNldCBHVEsjIGRsbCBkaXJlY3RvcnkiKTsKKwkJCS8vIHRoaXMgc2hvdWxkbid0IGhhcHBl
biB1bmxlc3Mgc29tZXRoaW5nIGlzIHdlaXJkIGluIFdpbmRvd3MKKwkJCUxvZ2dpbmdTZXJ2aWNl
LkxvZ0Vycm9yICgiVW5hYmxlIHRvIHNldCBHVEsrIGRsbCBkaXJlY3RvcnkiKTsKKwkJCXJldHVy
biB0cnVlOworCQl9CisKKwkJc3RhdGljIGJvb2wgRGlzcGxheVdpbmRvd3NPa0NhbmNlbE1lc3Nh
Z2UgKHN0cmluZyBtZXNzYWdlLCBzdHJpbmcgY2FwdGlvbikKKwkJeworCQkJdmFyIG5hbWUgPSB0
eXBlb2YoaW50KS5Bc3NlbWJseS5GdWxsTmFtZS5SZXBsYWNlICgibXNjb3JsaWIiLCAiU3lzdGVt
LldpbmRvd3MuRm9ybXMiKTsKKwkJCXZhciBhc20gPSBBc3NlbWJseS5Mb2FkIChuYW1lKTsKKwkJ
CXZhciBtZCA9IGFzbS5HZXRUeXBlICgiU3lzdGVtLldpbmRvd3MuRm9ybXMuTWVzc2FnZUJveCIp
OworCQkJdmFyIG1iYiA9IGFzbS5HZXRUeXBlICgiU3lzdGVtLldpbmRvd3MuRm9ybXMuTWVzc2Fn
ZUJveEJ1dHRvbnMiKTsKKwkJCXZhciBva0NhbmNlbCA9IEVudW0uVG9PYmplY3QgKG1iYiwgMSk7
CisJCQl2YXIgZHIgPSBhc20uR2V0VHlwZSAoIlN5c3RlbS5XaW5kb3dzLkZvcm1zLkRpYWxvZ1Jl
c3VsdCIpOworCQkJdmFyIG9rID0gRW51bS5Ub09iamVjdCAoZHIsIDEpOworCisJCQljb25zdCBC
aW5kaW5nRmxhZ3MgZmxhZ3MgPSBCaW5kaW5nRmxhZ3MuSW52b2tlTWV0aG9kIHwgQmluZGluZ0Zs
YWdzLlB1YmxpYyB8IEJpbmRpbmdGbGFncy5TdGF0aWM7CisJCQlyZXR1cm4gbWQuSW52b2tlTWVt
YmVyICgiU2hvdyIsIGZsYWdzLCBudWxsLCBudWxsLCBuZXcgb2JqZWN0W10geyBtZXNzYWdlLCBj
YXB0aW9uLCBva0NhbmNlbCB9KS5FcXVhbHMgKG9rKTsKIAkJfQogCQkKIAkJcHVibGljIGJvb2wg
SW5pdGlhbGl6ZWQgewpAQCAtNTI5LDcgKzU2MCw3IEBAIHB1YmxpYyBzdGF0aWMgaW50IE1haW4g
KHN0cmluZ1tdIGFyZ3MpCiAJCQkJcmV0dXJuIG9wdGlvbnMuRXJyb3IgIT0gbnVsbD8gLTEgOiAw
OwogCQkJCiAJCQlMb2dnaW5nU2VydmljZS5Jbml0aWFsaXplIChvcHRpb25zLlJlZGlyZWN0T3V0
cHV0KTsKLQkJCQorCiAJCQlpbnQgcmV0ID0gLTE7CiAJCQlib29sIHJldHJ5ID0gZmFsc2U7CiAJ
CQlkbyB7DQoNCiAgIENvbW1pdDogZDk1ODg5YjY4YWU1ZjE4NWM1NmNjN2JjNzhjM2U1YTA5MjA5
ODg0Nw0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpvaykN
CiAgICAgRGF0ZTogMjAxMy0xMS0xNSAwMjowNDozMyBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9n
aXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2Q5NTg4OWI2OGFlNWYxODVjNTZjYzdi
Yzc4YzNlNWEwOTIwOTg4NDcNCg0KRG9jdW1lbnQgdGhlIHVzYWdlIG9mIExpc3QgaW5zdGVhZCBv
ZiBIYXNoU2V0Lg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D
b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250
cm9sL0NoYW5nZVNldC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRy
b2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wv
Q2hhbmdlU2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtOSw2ICs5LDggQEAgbmFtZXNwYWNlIE1vbm9E
ZXZlbG9wLlZlcnNpb25Db250cm9sCiAJcHVibGljIGNsYXNzIENoYW5nZVNldAogCXsKIAkJc3Ry
aW5nIGdsb2JhbENvbW1lbnQgPSBzdHJpbmcuRW1wdHk7CisJCS8vIENvbW1pdHMgc2hvdWxkIGJl
IGF0b21pYyBhbmQgc21hbGwuIFRoZXJlZm9yZSBoYXZpbmcgYSBMaXN0IGluc3RlYWQKKwkJLy8g
b2YgYSBIYXNoU2V0IHNob3VsZCBiZSBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4KIAkJTGlzdDxDaGFu
Z2VTZXRJdGVtPiBpdGVtcyA9IG5ldyBMaXN0PENoYW5nZVNldEl0ZW0+ICgpOwogCQlSZXBvc2l0
b3J5IHJlcG87DQogCQlGaWxlUGF0aCBiYXNlUGF0aDsNCg0KICAgQ29tbWl0OiAzYmIwOTZkMzY1
YzIyOGMwZjViODMzMGYwNzYwODFkOTZjZTFmMjkzDQogICBBdXRob3I6IFVuZ3VyZWFudSBNYXJp
dXMgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE1
IDAyOjA1OjU1IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2
ZWxvcC9jb21taXQvM2JiMDk2ZDM2NWMyMjhjMGY1YjgzMzBmMDc2MDgxZDk2Y2UxZjI5Mw0KDQpN
ZXJnZSBwdWxsIHJlcXVlc3QgIzQzNCBmcm9tIG1vbm8vYnVnMTYyMjQKCkJ1ZyAxNjIyNCAtIFVz
aW5nICJSZXZpZXcgYW5kIENvbW1pdCIgY29tbWFuZCBmcm9tIFNvbHV0aW9uIFBhZCB2ZXJzaW9u
IC4uLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9s
L01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL0No
YW5nZVNldC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9u
b0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvQ2hhbmdl
U2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtOSw2ICs5LDggQEAgbmFtZXNwYWNlIE1vbm9EZXZlbG9w
LlZlcnNpb25Db250cm9sCiAJcHVibGljIGNsYXNzIENoYW5nZVNldAogCXsKIAkJc3RyaW5nIGds
b2JhbENvbW1lbnQgPSBzdHJpbmcuRW1wdHk7CisJCS8vIENvbW1pdHMgc2hvdWxkIGJlIGF0b21p
YyBhbmQgc21hbGwuIFRoZXJlZm9yZSBoYXZpbmcgYSBMaXN0IGluc3RlYWQKKwkJLy8gb2YgYSBI
YXNoU2V0IHNob3VsZCBiZSBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4KIAkJTGlzdDxDaGFuZ2VTZXRJ
dGVtPiBpdGVtcyA9IG5ldyBMaXN0PENoYW5nZVNldEl0ZW0+ICgpOwogCQlSZXBvc2l0b3J5IHJl
cG87DQogCQlGaWxlUGF0aCBiYXNlUGF0aDsKQEAgLTYxLDcgKzYzLDcgQEAgcHVibGljIHN0cmlu
ZyBHZW5lcmF0ZUdsb2JhbENvbW1lbnQgKENvbW1pdE1lc3NhZ2VGb3JtYXQgZm9ybWF0LCBNb25v
RGV2ZWxvcC5Qcm8KIAkJcHVibGljIHN0cmluZyBHZW5lcmF0ZVBhdGhDb21tZW50IChzdHJpbmcg
cGF0aCwgSUVudW1lcmFibGU8Q2hhbmdlU2V0SXRlbT4gaXRlbXMsIAogCQkJQ29tbWl0TWVzc2Fn
ZUZvcm1hdCBtZXNzYWdlRm9ybWF0LCBNb25vRGV2ZWxvcC5Qcm9qZWN0cy5BdXRob3JJbmZvcm1h
dGlvbiB1c2VySW5mbykKIAkJewotCQkJQ2hhbmdlTG9nV3JpdGVyIHdyaXRlciA9IG5ldyBDaGFu
Z2VMb2dXcml0ZXIgKHBhdGgsIHVzZXJJbmZvKTsKKwkJCXZhciB3cml0ZXIgPSBuZXcgQ2hhbmdl
TG9nV3JpdGVyIChwYXRoLCB1c2VySW5mbyk7CiAJCQl3cml0ZXIuTWVzc2FnZUZvcm1hdCA9IG1l
c3NhZ2VGb3JtYXQ7CiAJCQkKIAkJCWZvcmVhY2ggKENoYW5nZVNldEl0ZW0gaXRlbSBpbiBpdGVt
cykgewpAQCAtODUsOCArODcsOCBAQCBwdWJsaWMgc3RyaW5nIEdlbmVyYXRlR2xvYmFsQ29tbWVu
dCAoQ29tbWl0TWVzc2FnZUZvcm1hdCBmb3JtYXQsIE1vbm9EZXZlbG9wLlBybwogDQogCQlwdWJs
aWMgYm9vbCBDb250YWluc0ZpbGUgKEZpbGVQYXRoIGZpbGVOYW1lKQogCQl7Ci0JCQlmb3IgKGlu
dCBuPTA7IG48aXRlbXMuQ291bnQ7IG4rKykKLQkJCQlpZiAoaXRlbXMgW25dLkxvY2FsUGF0aCA9
PSBmaWxlTmFtZSkKKwkJCWZvcmVhY2ggKHZhciBpdGVtIGluIGl0ZW1zKQorCQkJCWlmIChpdGVt
LkxvY2FsUGF0aCA9PSBmaWxlTmFtZSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQlyZXR1cm4gZmFs
c2U7CiAJCX0NCkBAIC05OCw3ICsxMDAsMTEgQEAgcHVibGljIENoYW5nZVNldEl0ZW0gQWRkRmls
ZSAoRmlsZVBhdGggZmlsZSkKIAkJCiAJCXB1YmxpYyBDaGFuZ2VTZXRJdGVtIEFkZEZpbGUgKFZl
cnNpb25JbmZvIGZpbGVWZXJzaW9uSW5mbykKIAkJewotCQkJQ2hhbmdlU2V0SXRlbSBpdGVtID0g
bmV3IENoYW5nZVNldEl0ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CisJCQlDaGFuZ2VTZXRJdGVtIGl0
ZW0gPSBHZXRGaWxlSXRlbSAoZmlsZVZlcnNpb25JbmZvLkxvY2FsUGF0aCk7CisJCQlpZiAoaXRl
bSAhPSBudWxsKQorCQkJCXJldHVybiBpdGVtOworCisJCQlpdGVtID0gbmV3IENoYW5nZVNldEl0
ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CiAJCQlpdGVtcy5BZGQgKGl0ZW0pOwogCQkJcmV0dXJuIGl0
ZW07CiAJCX0KQEAgLTEzNCw3ICsxNDAsNyBAQCBwdWJsaWMgdm9pZCBSZW1vdmVJdGVtIChDaGFu
Z2VTZXRJdGVtIGl0ZW0pCiAJCQogCQlwdWJsaWMgQ2hhbmdlU2V0IENsb25lICgpCiAJCXsKLQkJ
CUNoYW5nZVNldCBjcyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAoKTsKKwkJCXZhciBj
cyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAoKTsKIAkJCWNzLkNvcHlGcm9tICh0aGlz
KTsKIAkJCXJldHVybiBjczsKIAkJfQpAQCAtMTg0LDcgKzE5MCw3IEBAIGludGVybmFsIENoYW5n
ZVNldEl0ZW0gKFZlcnNpb25JbmZvIHZlcnNpb25JbmZvKQogCQkKIAkJcHVibGljIENoYW5nZVNl
dEl0ZW0gQ2xvbmUgKCkKIAkJewotCQkJQ2hhbmdlU2V0SXRlbSBjcyA9IChDaGFuZ2VTZXRJdGVt
KSBNZW1iZXJ3aXNlQ2xvbmUgKCk7CisJCQl2YXIgY3MgPSAoQ2hhbmdlU2V0SXRlbSkgTWVtYmVy
d2lzZUNsb25lICgpOwogCQkJY3MuQ29weUZyb20gKHRoaXMpOwogCQkJcmV0dXJuIGNzOwogCQl9
DQoNCiAgIENvbW1pdDogYjUwYzgyYjYzN2E2NmFlMGQyM2UzNzE0MWYyZDc5MzA4ZjcxZDY2OQ0K
ICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpvaykNCiAgICAg
RGF0ZTogMjAxMy0xMS0xNSAwMjo0Njo0MiBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIu
Y29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2I1MGM4MmI2MzdhNjZhZTBkMjNlMzcxNDFmMmQ3
OTMwOGY3MWQ2NjkNCg0KW1ZlcnNpb25Db250cm9sXSBFbWJlZCByZXNvdXJjZXMgZm9yIFZDUwoK
VXNlIHRoZW0gYXMgRW1iZWRkZWQgUmVzb3VyY2VzIGluc3RlYWQgb2YgQ29udGVudC4KVGhpcyB3
YXksIHdlIGhhdmUgbm8gaXNzdWUgd2hlbiB3ZSBydW4gdGVzdHMgYW5kIGNhbm5vdCBmaW5kIHRo
ZSBmaWxlcy4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u
dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv
bC5jc3Byb2oKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5W
ZXJzaW9uQ29udHJvbC9WZXJzaW9uQ29udHJvbC5hZGRpbi54bWwKICBNIG1haW4vc3JjL2FkZGlu
cy9WZXJzaW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMyL1ZlcnNpb25Db250cm9sLlN1YnZlcnNp
b24uV2luMzIuY3Nwcm9qCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv
bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5j
c3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCkBAIC0yMCw5ICsyMCw5IEBACiAgICAgPEV4ZWN1dGlvbj4KICAg
ICAgIDxFeGVjdXRpb24gY2xyLXZlcnNpb249Ik5ldF8yXzAiIC8+CiAgICAgPC9FeGVjdXRpb24+
Ci0gICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50YXRpb24+
CiAgICAgPERlZmluZUNvbnN0YW50cz5ERUJVRzwvRGVmaW5lQ29uc3RhbnRzPgogICAgIDxOb1dh
cm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4uXC4uXC4u
XGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC54
bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iICckKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJyA9PSAnUmVsZWFz
ZXxBbnlDUFUnICI+CiAgICAgPERlYnVnVHlwZT5wZGJvbmx5PC9EZWJ1Z1R5cGU+CkBAIC0zNCw4
ICszNCw4IEBACiAgICAgICA8RXhlY3V0aW9uIGNsci12ZXJzaW9uPSJOZXRfMl8wIiAvPgogICAg
IDwvRXhlY3V0aW9uPgogICAgIDxEZWJ1Z1N5bWJvbHM+dHJ1ZTwvRGVidWdTeW1ib2xzPgotICAg
IDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAg
IDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4u
XC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxNb25vRGV2ZWxvcC5WZXJzaW9uQ29u
dHJvbC54bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVt
R3JvdXA+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cLi5cLi5cY29yZVxNb25v
RGV2ZWxvcC5Db3JlXE1vbm9EZXZlbG9wLkNvcmUuY3Nwcm9qIj4KQEAgLTE1OCw2ICsxNTgsMzkg
QEAKICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJ2ZXJzaW9uLWNvbnRyb2wtMTYucG5n
Ij4KICAgICAgIDxMb2dpY2FsTmFtZT52ZXJzaW9uLWNvbnRyb2wtMTYucG5nPC9Mb2dpY2FsTmFt
ZT4KICAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVk
ZT0ibWVudV9sb2cucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X2xvZy5wbmc8L0xvZ2lj
YWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJ
bmNsdWRlPSJtZW51X2RpZmYucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X2RpZmYucG5n
PC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVz
b3VyY2UgSW5jbHVkZT0ibWVudV91cGRhdGUucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51
X3VwZGF0ZS5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8
RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3N0YXR1cy5wbmciPgorICAgICAgPExvZ2lj
YWxOYW1lPm1lbnVfc3RhdHVzLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291
cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfY29tbWl0LnBuZyI+Cisg
ICAgICA8TG9naWNhbE5hbWU+bWVudV9jb21taXQucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0Vt
YmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZW1v
dGVfc3RhdHVzLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9yZW1vdGVfc3RhdHVzLnBu
ZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJl
c291cmNlIEluY2x1ZGU9Im1lbnVfYWRkLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9h
ZGQucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVk
ZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZW1vdmUucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFt
ZT5tZW51X3JlbW92ZS5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4K
KyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3Jlc29sdmUucG5nIj4KKyAgICAg
IDxMb2dpY2FsTmFtZT5tZW51X3Jlc29sdmUucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVk
ZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iY29tbWVudC5wbmci
PgorICAgICAgPExvZ2ljYWxOYW1lPmNvbW1lbnQucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0Vt
YmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZXZl
cnQucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X3JldmVydC5wbmc8L0xvZ2ljYWxOYW1l
PgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+
CiAgICAgPENvbXBpbGUgSW5jbHVkZT0iZ3RrLWd1aVxnZW5lcmF0ZWQuY3MiIC8+CkBAIC0yNDcs
MzkgKzI4MCw0IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iTWFrZWZpbGUuYW0iIC8+CiAgIDwvSXRl
bUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoTVNCdWlsZEJpblBhdGgpXE1pY3Jvc29mdC5D
U2hhcnAudGFyZ2V0cyIgLz4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJt
ZW51X2xvZy5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2Vz
dDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJ
bmNsdWRlPSJtZW51X2RpZmYucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJl
c2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAg
PENvbnRlbnQgSW5jbHVkZT0ibWVudV91cGRhdGUucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXRE
aXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0Nv
bnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9zdGF0dXMucG5nIj4KLSAgICAgIDxD
b3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9y
eT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9jb21taXQucG5n
Ij4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091
dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVu
dV9yZW1vdGVfc3RhdHVzLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNl
cnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxD
b250ZW50IEluY2x1ZGU9Im1lbnVfYWRkLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0
b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50
PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfcmVtb3ZlLnBuZyI+Ci0gICAgICA8Q29weVRv
T3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0g
ICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfcmVzb2x2ZS5wbmciPgot
ICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0
RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJjb21tZW50
LnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5
VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9
Im1lbnVfcmV2ZXJ0LnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZl
TmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICA8L0l0ZW1H
cm91cD4KIDwvUHJvamVjdD4NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u
dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC9WZXJzaW9uQ29udHJvbC5hZGRpbi54bWwN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC04LDIwICs4LDYgQEAKICAgICAgICBjYXRlZ29yeSAgICA9ICJWZXJz
aW9uIENvbnRyb2wiCiAgICAgICAgZmxhZ3MgPSAiSGlkZGVuIgogICAgICAgIHZlcnNpb24gICA9
ICI0LjIiPgotIAotCTxSdW50aW1lPgotCQk8SW1wb3J0IGZpbGU9ImNvbW1lbnQucG5nIiAvPgot
CQk8SW1wb3J0IGZpbGU9Im1lbnVfYWRkLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X2Nv
bW1pdC5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9kaWZmLnBuZyIgLz4KLQkJPEltcG9y
dCBmaWxlPSJtZW51X2xvZy5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9yZW1vdGVfc3Rh
dHVzLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3JlbW92ZS5wbmciIC8+Ci0JCTxJbXBv
cnQgZmlsZT0ibWVudV9yZXNvbHZlLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3JldmVy
dC5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9zdGF0dXMucG5nIiAvPgotCQk8SW1wb3J0
IGZpbGU9Im1lbnVfdXBkYXRlLnBuZyIgLz4KLQk8L1J1bnRpbWU+CiAKIAk8RGVwZW5kZW5jaWVz
PgogCSAgICA8QWRkaW4gaWQ9IkNvcmUiIHZlcnNpb249IjQuMiIvPgpAQCAtMTA1LDE3ICs5MSwx
NyBAQAogCTwvRXh0ZW5zaW9uPgogCiAJPEV4dGVuc2lvbiBwYXRoID0gIi9Nb25vRGV2ZWxvcC9D
b3JlL1N0b2NrSWNvbnMiPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtYWRkLWNvbW1hbmQi
IGZpbGUgPSAibWVudV9hZGQucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2Nr
aWQgPSAidmMtcmVtb3ZlLWNvbW1hbmQiIGZpbGUgPSAibWVudV9yZW1vdmUucG5nIiBzaXplPSJN
ZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmVzb2x2ZS1jb21tYW5kIiBmaWxl
ID0gIm1lbnVfcmVzb2x2ZS5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tp
ZCA9ICJ2Yy1yZXZlcnQtY29tbWFuZCIgZmlsZSA9ICJtZW51X3JldmVydC5wbmciIHNpemU9Ik1l
bnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1kaWZmIiBmaWxlID0gIm1lbnVfZGlm
Zi5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1sb2ciIGZp
bGUgPSAibWVudV9sb2cucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQg
PSAidmMtc3RhdHVzIiBmaWxlID0gIm1lbnVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJ
PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXVwZGF0ZSIgZmlsZSA9ICJtZW51X3VwZGF0ZS5wbmci
IHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21taXQiIGZpbGUg
PSAibWVudV9jb21taXQucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQg
PSAidmMtcmVtb3RlLXN0YXR1cyIgZmlsZSA9ICJtZW51X3JlbW90ZV9zdGF0dXMucG5nIiBzaXpl
PSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWVudCIgZmlsZSA9ICJj
b21tZW50LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWFk
ZC1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51X2FkZC5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxT
dG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZW1vdmUtY29tbWFuZCIgcmVzb3VyY2UgPSAibWVudV9y
ZW1vdmUucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmVz
b2x2ZS1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51X3Jlc29sdmUucG5nIiBzaXplPSJNZW51IiAv
PgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmV2ZXJ0LWNvbW1hbmQiIHJlc291cmNlID0g
Im1lbnVfcmV2ZXJ0LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0g
InZjLWRpZmYiIHJlc291cmNlID0gIm1lbnVfZGlmZi5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxT
dG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1sb2ciIHJlc291cmNlID0gIm1lbnVfbG9nLnBuZyIgc2l6
ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXN0YXR1cyIgcmVzb3VyY2Ug
PSAibWVudV9zdGF0dXMucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQg
PSAidmMtdXBkYXRlIiByZXNvdXJjZSA9ICJtZW51X3VwZGF0ZS5wbmciIHNpemU9Ik1lbnUiIC8+
CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21taXQiIHJlc291cmNlID0gIm1lbnVfY29t
bWl0LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlbW90
ZS1zdGF0dXMiIHJlc291cmNlID0gIm1lbnVfcmVtb3RlX3N0YXR1cy5wbmciIHNpemU9Ik1lbnUi
IC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21tZW50IiByZXNvdXJjZSA9ICJjb21t
ZW50LnBuZyIgc2l6ZT0iTWVudSIgLz4KIAkJPFN0b2NrSWNvbiBzdG9ja2lkID0gIm1kLXZlcnNp
b24tY29udHJvbCIgcmVzb3VyY2UgPSAidmVyc2lvbi1jb250cm9sLTE2LnBuZyIgc2l6ZT0iTWVu
dSIgLz4KIAk8L0V4dGVuc2lvbj4KIA0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNp
b25Db250cm9sL1N1YnZlcnNpb24uV2luMzIvVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5XaW4z
Mi5jc3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCkBAIC00Miw4ICs0Miw4IEBACiAgICAgPEVycm9yUmVwb3J0
PnByb21wdDwvRXJyb3JSZXBvcnQ+CiAgICAgPFdhcm5pbmdMZXZlbD40PC9XYXJuaW5nTGV2ZWw+
CiAgICAgPENvZGVBbmFseXNpc1J1bGVTZXQ+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lz
UnVsZVNldD4KLSAgICA8R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1l
bnRhdGlvbj4KICAgICA8Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0
aW9uRmlsZT4uLlwuLlwuLlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcU3VidmVyc2lv
bkFkZGluV2luZG93cy54bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+
CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iICckKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJyA9PSAnUmVsZWFzZXxBbnlDUFUnICI+CiAgICAgPERlYnVnVHlwZT5wZGJvbmx5PC9EZWJ1
Z1R5cGU+CkBAIC01NCw4ICs1NCw4IEBACiAgICAgPFdhcm5pbmdMZXZlbD40PC9XYXJuaW5nTGV2
ZWw+CiAgICAgPENvZGVBbmFseXNpc1J1bGVTZXQ+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5
c2lzUnVsZVNldD4KICAgICA8RGVidWdTeW1ib2xzPnRydWU8L0RlYnVnU3ltYm9scz4KLSAgICA8
R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlvbj4KICAgICA8
Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0aW9uRmlsZT4uLlwuLlwu
LlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcU3VidmVyc2lvbkFkZGluV2luZG93cy54
bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtR3JvdXA+
CiAgICAgPFJlZmVyZW5jZSBJbmNsdWRlPSJTeXN0ZW0iIC8+CkBAIC02OSwxNSArNjksMTUgQEAK
ICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5j
bHVkZT0iTWFuaWZlc3QuYWRkaW4ueG1sIiAvPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1
ZGU9InN1YnZlcnNpb24tbG9nby5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPnN1YnZlcnNpb24t
bG9nby5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KICAgPC9JdGVt
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cU2hhcnBTdm5cU2hh
cnBQbGluay1XaW4zMi5zdm5FeGUiPgogICAgICAgPExpbms+U2hhcnBQbGluay1XaW4zMi5zdm5F
eGU8L0xpbms+CiAgICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9D
b3B5VG9PdXRwdXREaXJlY3Rvcnk+CiAgICAgPC9Ob25lPgotICAgIDxDb250ZW50IEluY2x1ZGU9
InN1YnZlcnNpb24tbG9nby5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVz
ZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KICAgICA8
Q29udGVudCBJbmNsdWRlPSIuLlxTaGFycFN2blxTaGFycFN2bi1EQjQ0LTIwLXdpbjMyLmRsbCI+
CiAgICAgICA8TGluaz5TaGFycFN2bi1EQjQ0LTIwLXdpbjMyLmRsbDwvTGluaz4KICAgICAgIDxD
b3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9y
eT4NCg0KICAgQ29tbWl0OiAyNzdkYjBmYjIyMTU2MjQ2Yjg0NDJlOGMzYTk4YmYyNmYxZjExNDJi
DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdl
cikNCiAgICAgRGF0ZTogMjAxMy0xMS0xNSAwNjozODoyOSBHTVQNCiAgICAgIFVSTDogaHR0cHM6
Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzI3N2RiMGZiMjIxNTYyNDZiODQ0
MmU4YzNhOThiZjI2ZjFmMTE0MmINCg0KRml4ZWQgJ0J1ZyAxNjIzMSAtIHNtYXJ0IGluZGVudCBi
cm9rZW4gaW4gNC4yLjAnDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL25yZWZh
Y3RvcnkKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5DQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA
QCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgNTA3MzNmNTAyYTJhMzhkODM2YjQ2NGMxZWI2
NzhmZjYzNmUyYWU1MAorU3VicHJvamVjdCBjb21taXQgMjA0NGVhMzZkM2NmODMxY2FjMWMwYzli
ZjZkZjBlZmRjZTAyMzBiMA0KDQogICBDb21taXQ6IDcwNzM5MmIwNDhhMWFlMWNhMjY5ZDkyOWFk
MjhjZTdiNjU5NzkzNTYNCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1hcmlu
LmNvbT4gKG1rcnVlZ2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTE1IDA2OjI5OjQ3IEdNVA0KICAg
ICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNzA3Mzky
YjA0OGExYWUxY2EyNjlkOTI5YWQyOGNlN2I2NTk3OTM1Ng0KDQpGaXhlZCAnQnVnIDE2MjM2IC0g
TmVzdGVkIGNsYXNzIEZvby5CYXIgc2hvdWxkIGhhdmUgbGVzcyBwcmlvcml0eSB0aGFuCm5vcm1h
bCBjbGFzcyBCYXInLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2
ZWxvcC5JZGUvTW9ub0RldmVsb3AuQ29tcG9uZW50cy5NYWluVG9vbGJhci9Qcm9qZWN0U2VhcmNo
Q2F0ZWdvcnkuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9u
b0RldmVsb3AuQ29tcG9uZW50cy5NYWluVG9vbGJhci9Qcm9qZWN0U2VhcmNoQ2F0ZWdvcnkuY3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC0yODcsMTIgKzI4NywxOCBAQCBpbnRlcm5hbCBTZWFyY2hSZXN1bHQg
Q2hlY2tGaWxlIChQcm9qZWN0RmlsZSBmaWxlKQogCQkJaW50ZXJuYWwgU2VhcmNoUmVzdWx0IENo
ZWNrVHlwZSAoSVR5cGVEZWZpbml0aW9uIHR5cGUpCiAJCQl7CiAJCQkJaW50IHJhbms7Ci0JCQkJ
aWYgKE1hdGNoTmFtZSAoVHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIGZhbHNl
KSwgb3V0IHJhbmspKQorCQkJCWlmIChNYXRjaE5hbWUgKFR5cGVTZWFyY2hSZXN1bHQuR2V0UGxh
aW5UZXh0ICh0eXBlLCBmYWxzZSksIG91dCByYW5rKSkgeworCQkJCQlpZiAodHlwZS5EZWNsYXJp
bmdUeXBlICE9IG51bGwpCisJCQkJCQlyYW5rLS07CiAJCQkJCXJldHVybiBuZXcgVHlwZVNlYXJj
aFJlc3VsdCAocGF0dGVybiwgVHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIGZh
bHNlKSwgcmFuaywgdHlwZSwgZmFsc2UpIHsgQW1iaWVuY2UgPSBhbWJpZW5jZSB9OworCQkJCX0K
IAkJCQlpZiAoIUZ1bGxTZWFyY2gpCiAJCQkJCXJldHVybiBudWxsOwotCQkJCWlmIChNYXRjaE5h
bWUgKFR5cGVTZWFyY2hSZXN1bHQuR2V0UGxhaW5UZXh0ICh0eXBlLCB0cnVlKSwgb3V0IHJhbmsp
KQorCQkJCWlmIChNYXRjaE5hbWUgKFR5cGVTZWFyY2hSZXN1bHQuR2V0UGxhaW5UZXh0ICh0eXBl
LCB0cnVlKSwgb3V0IHJhbmspKSB7CisJCQkJCWlmICh0eXBlLkRlY2xhcmluZ1R5cGUgIT0gbnVs
bCkKKwkJCQkJCXJhbmstLTsKIAkJCQkJcmV0dXJuIG5ldyBUeXBlU2VhcmNoUmVzdWx0IChwYXR0
ZXJuLCBUeXBlU2VhcmNoUmVzdWx0LkdldFBsYWluVGV4dCAodHlwZSwgdHJ1ZSksIHJhbmssIHR5
cGUsIHRydWUpIHsgQW1iaWVuY2UgPSBhbWJpZW5jZSB9OworCQkJCX0KIAkJCQlyZXR1cm4gbnVs
bDsKIAkJCX0KIAkJCQ0KDQogICBDb21taXQ6IGJmNWI5ZGNlOTFhMzg2YzFhMjBkNTdkODQzMTQ4
NjU1OTgyYjhiODgNCiAgIEF1dGhvcjogTGx1aXMgU2FuY2hleiA8c2xsdWlzLmRldmVsQGdtYWls
LmNvbT4gKHNsbHVpcykNCiAgICAgRGF0ZTogMjAxMy0xMS0xNSAwOToyMjoxNCBHTVQNCiAgICAg
IFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2JmNWI5ZGNl
OTFhMzg2YzFhMjBkNTdkODQzMTQ4NjU1OTgyYjhiODgNCg0KTWVyZ2UgcHVsbCByZXF1ZXN0ICM0
MzUgZnJvbSBtb25vL3Zjc1Jlc291cmNlcwoKW1ZlcnNpb25Db250cm9sXSBFbWJlZCByZXNvdXJj
ZXMgZm9yIFZDUw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D
b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250
cm9sLmNzcHJvagogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w
LlZlcnNpb25Db250cm9sL1ZlcnNpb25Db250cm9sLmFkZGluLnhtbAogIE0gbWFpbi9zcmMvYWRk
aW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIvVmVyc2lvbkNvbnRyb2wuU3VidmVy
c2lvbi5XaW4zMi5jc3Byb2oKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250
cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s
LmNzcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KQEAgLTIwLDkgKzIwLDkgQEAKICAgICA8RXhlY3V0aW9uPgog
ICAgICAgPEV4ZWN1dGlvbiBjbHItdmVyc2lvbj0iTmV0XzJfMCIgLz4KICAgICA8L0V4ZWN1dGlv
bj4KLSAgICA8R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlv
bj4KICAgICA8RGVmaW5lQ29uc3RhbnRzPkRFQlVHPC9EZWZpbmVDb25zdGFudHM+CiAgICAgPE5v
V2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KKyAgICA8RG9jdW1lbnRhdGlvbkZpbGU+Li5cLi5cLi5c
Li5cYnVpbGRcQWRkSW5zXFZlcnNpb25Db250cm9sXE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s
LnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknID09ICdSZWxl
YXNlfEFueUNQVScgIj4KICAgICA8RGVidWdUeXBlPnBkYm9ubHk8L0RlYnVnVHlwZT4KQEAgLTM0
LDggKzM0LDggQEAKICAgICAgIDxFeGVjdXRpb24gY2xyLXZlcnNpb249Ik5ldF8yXzAiIC8+CiAg
ICAgPC9FeGVjdXRpb24+CiAgICAgPERlYnVnU3ltYm9scz50cnVlPC9EZWJ1Z1N5bWJvbHM+Ci0g
ICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50YXRpb24+CiAg
ICAgPE5vV2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KKyAgICA8RG9jdW1lbnRhdGlvbkZpbGU+Li5c
Li5cLi5cLi5cYnVpbGRcQWRkSW5zXFZlcnNpb25Db250cm9sXE1vbm9EZXZlbG9wLlZlcnNpb25D
b250cm9sLnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0
ZW1Hcm91cD4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlwuLlwuLlxjb3JlXE1v
bm9EZXZlbG9wLkNvcmVcTW9ub0RldmVsb3AuQ29yZS5jc3Byb2oiPgpAQCAtMTU4LDYgKzE1OCwz
OSBAQAogICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9InZlcnNpb24tY29udHJvbC0xNi5w
bmciPgogICAgICAgPExvZ2ljYWxOYW1lPnZlcnNpb24tY29udHJvbC0xNi5wbmc8L0xvZ2ljYWxO
YW1lPgogICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNs
dWRlPSJtZW51X2xvZy5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfbG9nLnBuZzwvTG9n
aWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNl
IEluY2x1ZGU9Im1lbnVfZGlmZi5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfZGlmZi5w
bmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRS
ZXNvdXJjZSBJbmNsdWRlPSJtZW51X3VwZGF0ZS5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1l
bnVfdXBkYXRlLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAg
IDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfc3RhdHVzLnBuZyI+CisgICAgICA8TG9n
aWNhbE5hbWU+bWVudV9zdGF0dXMucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVz
b3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9jb21taXQucG5nIj4K
KyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X2NvbW1pdC5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwv
RW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3Jl
bW90ZV9zdGF0dXMucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X3JlbW90ZV9zdGF0dXMu
cG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVk
UmVzb3VyY2UgSW5jbHVkZT0ibWVudV9hZGQucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51
X2FkZC5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1i
ZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3JlbW92ZS5wbmciPgorICAgICAgPExvZ2ljYWxO
YW1lPm1lbnVfcmVtb3ZlLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNl
PgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfcmVzb2x2ZS5wbmciPgorICAg
ICAgPExvZ2ljYWxOYW1lPm1lbnVfcmVzb2x2ZS5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1i
ZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJjb21tZW50LnBu
ZyI+CisgICAgICA8TG9naWNhbE5hbWU+Y29tbWVudC5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwv
RW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3Jl
dmVydC5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfcmV2ZXJ0LnBuZzwvTG9naWNhbE5h
bWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q29tcGlsZSBJbmNsdWRlPSJndGstZ3VpXGdlbmVyYXRlZC5jcyIgLz4KQEAgLTI0
NywzOSArMjgwLDQgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSJNYWtlZmlsZS5hbSIgLz4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChNU0J1aWxkQmluUGF0aClcTWljcm9zb2Z0
LkNTaGFycC50YXJnZXRzIiAvPgotICA8SXRlbUdyb3VwPgotICAgIDxDb250ZW50IEluY2x1ZGU9
Im1lbnVfbG9nLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3
ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50
IEluY2x1ZGU9Im1lbnVfZGlmZi5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5Q
cmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAg
ICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3VwZGF0ZS5wbmciPgotICAgICAgPENvcHlUb091dHB1
dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwv
Q29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3N0YXR1cy5wbmciPgotICAgICAg
PENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0
b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X2NvbW1pdC5w
bmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRv
T3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJt
ZW51X3JlbW90ZV9zdGF0dXMucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJl
c2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAg
PENvbnRlbnQgSW5jbHVkZT0ibWVudV9hZGQucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJl
Y3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRl
bnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9yZW1vdmUucG5nIj4KLSAgICAgIDxDb3B5
VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4K
LSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9yZXNvbHZlLnBuZyI+
Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRw
dXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9ImNvbW1l
bnQucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0Nv
cHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVk
ZT0ibWVudV9yZXZlcnQucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2Vy
dmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gIDwvSXRl
bUdyb3VwPgogPC9Qcm9qZWN0Pg0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D
b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL1ZlcnNpb25Db250cm9sLmFkZGluLnht
bA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KQEAgLTgsMjAgKzgsNiBAQAogICAgICAgIGNhdGVnb3J5ICAgID0gIlZl
cnNpb24gQ29udHJvbCIKICAgICAgICBmbGFncyA9ICJIaWRkZW4iCiAgICAgICAgdmVyc2lvbiAg
ID0gIjQuMiI+Ci0gCi0JPFJ1bnRpbWU+Ci0JCTxJbXBvcnQgZmlsZT0iY29tbWVudC5wbmciIC8+
Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9hZGQucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVf
Y29tbWl0LnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X2RpZmYucG5nIiAvPgotCQk8SW1w
b3J0IGZpbGU9Im1lbnVfbG9nLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3JlbW90ZV9z
dGF0dXMucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfcmVtb3ZlLnBuZyIgLz4KLQkJPElt
cG9ydCBmaWxlPSJtZW51X3Jlc29sdmUucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfcmV2
ZXJ0LnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3N0YXR1cy5wbmciIC8+Ci0JCTxJbXBv
cnQgZmlsZT0ibWVudV91cGRhdGUucG5nIiAvPgotCTwvUnVudGltZT4KIAogCTxEZXBlbmRlbmNp
ZXM+CiAJICAgIDxBZGRpbiBpZD0iQ29yZSIgdmVyc2lvbj0iNC4yIi8+CkBAIC0xMDUsMTcgKzkx
LDE3IEBACiAJPC9FeHRlbnNpb24+CiAKIAk8RXh0ZW5zaW9uIHBhdGggPSAiL01vbm9EZXZlbG9w
L0NvcmUvU3RvY2tJY29ucyI+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1hZGQtY29tbWFu
ZCIgZmlsZSA9ICJtZW51X2FkZC5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3Rv
Y2tpZCA9ICJ2Yy1yZW1vdmUtY29tbWFuZCIgZmlsZSA9ICJtZW51X3JlbW92ZS5wbmciIHNpemU9
Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZXNvbHZlLWNvbW1hbmQiIGZp
bGUgPSAibWVudV9yZXNvbHZlLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9j
a2lkID0gInZjLXJldmVydC1jb21tYW5kIiBmaWxlID0gIm1lbnVfcmV2ZXJ0LnBuZyIgc2l6ZT0i
TWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWRpZmYiIGZpbGUgPSAibWVudV9k
aWZmLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWxvZyIg
ZmlsZSA9ICJtZW51X2xvZy5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tp
ZCA9ICJ2Yy1zdGF0dXMiIGZpbGUgPSAibWVudV9zdGF0dXMucG5nIiBzaXplPSJNZW51IiAvPgot
CQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtdXBkYXRlIiBmaWxlID0gIm1lbnVfdXBkYXRlLnBu
ZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1pdCIgZmls
ZSA9ICJtZW51X2NvbW1pdC5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tp
ZCA9ICJ2Yy1yZW1vdGUtc3RhdHVzIiBmaWxlID0gIm1lbnVfcmVtb3RlX3N0YXR1cy5wbmciIHNp
emU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21tZW50IiBmaWxlID0g
ImNvbW1lbnQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMt
YWRkLWNvbW1hbmQiIHJlc291cmNlID0gIm1lbnVfYWRkLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJ
PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlbW92ZS1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51
X3JlbW92ZS5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1y
ZXNvbHZlLWNvbW1hbmQiIHJlc291cmNlID0gIm1lbnVfcmVzb2x2ZS5wbmciIHNpemU9Ik1lbnUi
IC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZXZlcnQtY29tbWFuZCIgcmVzb3VyY2Ug
PSAibWVudV9yZXZlcnQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQg
PSAidmMtZGlmZiIgcmVzb3VyY2UgPSAibWVudV9kaWZmLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJ
PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWxvZyIgcmVzb3VyY2UgPSAibWVudV9sb2cucG5nIiBz
aXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtc3RhdHVzIiByZXNvdXJj
ZSA9ICJtZW51X3N0YXR1cy5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tp
ZCA9ICJ2Yy11cGRhdGUiIHJlc291cmNlID0gIm1lbnVfdXBkYXRlLnBuZyIgc2l6ZT0iTWVudSIg
Lz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1pdCIgcmVzb3VyY2UgPSAibWVudV9j
b21taXQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmVt
b3RlLXN0YXR1cyIgcmVzb3VyY2UgPSAibWVudV9yZW1vdGVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVu
dSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1lbnQiIHJlc291cmNlID0gImNv
bW1lbnQucG5nIiBzaXplPSJNZW51IiAvPgogCQk8U3RvY2tJY29uIHN0b2NraWQgPSAibWQtdmVy
c2lvbi1jb250cm9sIiByZXNvdXJjZSA9ICJ2ZXJzaW9uLWNvbnRyb2wtMTYucG5nIiBzaXplPSJN
ZW51IiAvPgogCTwvRXh0ZW5zaW9uPgogDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVy
c2lvbkNvbnRyb2wvU3VidmVyc2lvbi5XaW4zMi9WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLldp
bjMyLmNzcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQyLDggKzQyLDggQEAKICAgICA8RXJyb3JSZXBv
cnQ+cHJvbXB0PC9FcnJvclJlcG9ydD4KICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZl
bD4KICAgICA8Q29kZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlz
aXNSdWxlU2V0PgotICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1
bWVudGF0aW9uPgogICAgIDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50
YXRpb25GaWxlPi4uXC4uXC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJz
aW9uQWRkaW5XaW5kb3dzLnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91
cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknID09ICdSZWxlYXNlfEFueUNQVScgIj4KICAgICA8RGVidWdUeXBlPnBkYm9ubHk8L0Rl
YnVnVHlwZT4KQEAgLTU0LDggKzU0LDggQEAKICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdM
ZXZlbD4KICAgICA8Q29kZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5h
bHlzaXNSdWxlU2V0PgogICAgIDxEZWJ1Z1N5bWJvbHM+dHJ1ZTwvRGVidWdTeW1ib2xzPgotICAg
IDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAg
IDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4u
XC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJzaW9uQWRkaW5XaW5kb3dz
LnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8UmVmZXJlbmNlIEluY2x1ZGU9IlN5c3RlbSIgLz4KQEAgLTY5LDE1ICs2OSwxNSBA
QAogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJ
bmNsdWRlPSJNYW5pZmVzdC5hZGRpbi54bWwiIC8+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5j
bHVkZT0ic3VidmVyc2lvbi1sb2dvLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+c3VidmVyc2lv
bi1sb2dvLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgogICA8L0l0
ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxTaGFycFN2blxT
aGFycFBsaW5rLVdpbjMyLnN2bkV4ZSI+CiAgICAgICA8TGluaz5TaGFycFBsaW5rLVdpbjMyLnN2
bkV4ZTwvTGluaz4KICAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8
L0NvcHlUb091dHB1dERpcmVjdG9yeT4KICAgICA8L05vbmU+Ci0gICAgPENvbnRlbnQgSW5jbHVk
ZT0ic3VidmVyc2lvbi1sb2dvLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlBy
ZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgogICAg
IDxDb250ZW50IEluY2x1ZGU9Ii4uXFNoYXJwU3ZuXFNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxs
Ij4KICAgICAgIDxMaW5rPlNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxsPC9MaW5rPgogICAgICAg
PENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0
b3J5Pg0KDQogICBDb21taXQ6IGU2MjI3OWRkMzNjMGU0NGE1NWY1MDQ4ZDVmYzdjMDIwMjQ2NWI0
NjINCiAgIEF1dGhvcjogQ29keSBSdXNzZWxsIDxjb2R5QGpodS5lZHU+IChicmF0c2NoZSkNCiAg
ICAgRGF0ZTogMjAxMy0xMS0xNSAxODo1OToyOSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRo
dWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2U2MjI3OWRkMzNjMGU0NGE1NWY1MDQ4ZDVm
YzdjMDIwMjQ2NWI0NjINCg0KUmVtb3ZlIHRoZSBCVUlMRF9SRVZJU0lPTiBjaGVjayBhbmQgdGhl
IEVOQUJMRV9SQVlHVU4gY29uc3RhbnQuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9j
b3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5jc3Byb2oKICBNIG1haW4vc3Jj
L2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlL0xvZ2dpbmdTZXJ2aWNlLmNz
Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5D
b3JlLmNzcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEyLDkgKzEyLDYgQEAKICAgICA8QnVpbGRJbmZv
Pi4uXC4uXC4uXGJ1aWxkXGJpblxidWlsZGluZm88L0J1aWxkSW5mbz4KICAgICA8VmNSZXZpc2lv
bj4uLlwuLlwuLlx2Y3JldmlzaW9uPC9WY1JldmlzaW9uPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0g
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQlVJTERfUkVWSVNJT04pJyAhPSAnJyI+Ci0g
ICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtFTkFCTEVfUkFZR1VOPC9E
ZWZpbmVDb25zdGFudHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KICAgPENob29zZT4KICAgICA8V2hl
biBDb25kaXRpb249IiBFeGlzdHMoJ2M6XFByb2dyYW0gRmlsZXNcR2l0XGJpblxnaXQuZXhlJykg
Ij4KICAgICAgIDxQcm9wZXJ0eUdyb3VwPg0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25v
RGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2luZ1NlcnZpY2UuY3MNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCkBAIC0xMDEsMTIgKzEwMSwxMCBAQCBzdGF0aWMgTG9nZ2luZ1NlcnZpY2UgKCkKIAogCQkJ
dGltZXN0YW1wID0gRGF0ZVRpbWUuTm93OwogCi0jaWYgRU5BQkxFX1JBWUdVTgogCQkJc3RyaW5n
IHJheWd1bktleSA9IEJyYW5kaW5nU2VydmljZS5HZXRTdHJpbmcgKCJSYXlndW5BcGlLZXkiKTsK
IAkJCWlmIChyYXlndW5LZXkgIT0gbnVsbCkgewogCQkJCXJheWd1bkNsaWVudCA9IG5ldyBSYXln
dW5DbGllbnQgKHJheWd1bktleSk7CiAJCQl9Ci0jZW5kaWYKIAogCQkJLy9yZW1vdmUgdGhlIGRl
ZmF1bHQgdHJhY2UgbGlzdGVuZXIgb24gLk5FVCwgaXQgdGhyb3dzIHVwIGhvcnJpYmxlIGRpYWxv
ZyBib3hlcyBmb3IgYXNzZXJ0cwogCQkJU3lzdGVtLkRpYWdub3N0aWNzLkRlYnVnLkxpc3RlbmVy
cy5DbGVhciAoKTsNCg0KICAgQ29tbWl0OiAzMzY4MzljZjczMDQ5MTg2ZGU2ZWMxZDg1MDcwYjQ2
YzRjOTVjZDA2DQogICBBdXRob3I6IENvZHkgUnVzc2VsbCA8Y29keUBqaHUuZWR1PiAoYnJhdHNj
aGUpDQogICAgIERhdGU6IDIwMTMtMTEtMTUgMTk6MTQ6MTAgR01UDQogICAgICBVUkw6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8zMzY4MzljZjczMDQ5MTg2ZGU2
ZWMxZDg1MDcwYjQ2YzRjOTVjZDA2DQoNClB1dCB0aGUgQlVJTERfUkVWSVNJT04gY2hlY2tpbmcg
YmFjayBpbiwgYnV0IGluIHRoZSByaWdodCBwbGFjZS4gSXQgd2FzIGJlaW5nIG92ZXJ3cml0dGVu
IGJ5IGxhdGVyIFByb3BlcnR5R3JvdXBzIGJlZm9yZS4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h
aW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvagogIE0g
bWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2luZ1Nl
cnZpY2UuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9E
ZXZlbG9wLkNvcmUuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjgsNiArNjgsOSBAQAogICAgIDxH
ZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAgIDxO
b1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChCVUlMRF9SRVZJU0lPTiknICE9ICcnIj4KKyAgICA8RGVmaW5l
Q29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtFTkFCTEVfUkFZR1VOPC9EZWZpbmVDb25zdGFu
dHM+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UmVmZXJlbmNlIElu
Y2x1ZGU9IlN5c3RlbSIgLz4KICAgICA8UmVmZXJlbmNlIEluY2x1ZGU9Ik1vbm8uUG9zaXgiIC8+
DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3Au
Q29yZS9Mb2dnaW5nU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEwMSwxMCArMTAxLDEyIEBA
IHN0YXRpYyBMb2dnaW5nU2VydmljZSAoKQogCiAJCQl0aW1lc3RhbXAgPSBEYXRlVGltZS5Ob3c7
CiAKKyNpZiBFTkFCTEVfUkFZR1VOCiAJCQlzdHJpbmcgcmF5Z3VuS2V5ID0gQnJhbmRpbmdTZXJ2
aWNlLkdldFN0cmluZyAoIlJheWd1bkFwaUtleSIpOwogCQkJaWYgKHJheWd1bktleSAhPSBudWxs
KSB7CiAJCQkJcmF5Z3VuQ2xpZW50ID0gbmV3IFJheWd1bkNsaWVudCAocmF5Z3VuS2V5KTsKIAkJ
CX0KKyNlbmRpZgogCiAJCQkvL3JlbW92ZSB0aGUgZGVmYXVsdCB0cmFjZSBsaXN0ZW5lciBvbiAu
TkVULCBpdCB0aHJvd3MgdXAgaG9ycmlibGUgZGlhbG9nIGJveGVzIGZvciBhc3NlcnRzCiAJCQlT
eXN0ZW0uRGlhZ25vc3RpY3MuRGVidWcuTGlzdGVuZXJzLkNsZWFyICgpOw0KDQogICBDb21taXQ6
IDUwOWFhMDE5N2VhZDlkNGU0YzBkMjQzNWZjMTkzYzk2MWEzZTQzYWUNCiAgIEF1dGhvcjogSmVm
ZnJleSBTdGVkZmFzdCA8amVmZkB4YW1hcmluLmNvbT4gKGpzdGVkZmFzdCkNCiAgICAgRGF0ZTog
MjAxMy0xMS0xNSAyMDo0MzoxNCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21v
bm8vbW9ub2RldmVsb3AvY29tbWl0LzUwOWFhMDE5N2VhZDlkNGU0YzBkMjQzNWZjMTkzYzk2MWEz
ZTQzYWUNCg0KdXBkYXRlZCBkZWJ1Z2dlci1saWJzDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWlu
L2V4dGVybmFsL2RlYnVnZ2VyLWxpYnMKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9kZWJ1Z2dl
ci1saWJzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgZjc0OTFl
NTM1NzAzYjgzNTI0MzJmYjc2MGRkYzA0MTc0M2Y5MDBjMworU3VicHJvamVjdCBjb21taXQgZjA0
Y2I1MDcwZmEzOGFjZGFmZjQ2ZDE0MTZhN2Q0MWRhNWJiNTc4ZA0KDQogICBDb21taXQ6IDQ3YmMy
ZGUwNWYzYjBiY2JjZmRlMTMzMzUxYzExMTk0NmNkZDg1OGUNCiAgIEF1dGhvcjogSmVmZnJleSBT
dGVkZmFzdCA8amVmZkB4YW1hcmluLmNvbT4gKGpzdGVkZmFzdCkNCiAgICAgRGF0ZTogMjAxMy0x
MS0xNSAyMToyODozNyBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9u
b2RldmVsb3AvY29tbWl0LzQ3YmMyZGUwNWYzYjBiY2JjZmRlMTMzMzUxYzExMTk0NmNkZDg1OGUN
Cg0KZml4ZWQgdGhlIGJ1aWxkDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL2Rl
YnVnZ2VyLWxpYnMKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9kZWJ1Z2dlci1saWJzDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgZjA0Y2I1MDcwZmEzOGFjZGFm
ZjQ2ZDE0MTZhN2Q0MWRhNWJiNTc4ZAorU3VicHJvamVjdCBjb21taXQgMzQ1OTUwMjRmMDA3MmMx
Y2ZjNWIxZGRlMWQxOTRkMGRjYzVjMTFmYg0KDQogICBDb21taXQ6IDViYmNjMDM1MWRhMWY0ZjQ0
Njc1MGYzOTU3YTNjNTIxYmY0YjczZWUNCiAgIEF1dGhvcjogQ29keSBSdXNzZWxsIDxjb2R5QGpo
dS5lZHU+IChicmF0c2NoZSkNCiAgICAgRGF0ZTogMjAxMy0xMS0xNiAwMzoyMjo0NCBHTVQNCiAg
ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzViYmNj
MDM1MWRhMWY0ZjQ0Njc1MGYzOTU3YTNjNTIxYmY0YjczZWUNCg0KW0NvcmVdIFJlbW92ZSB0aGUg
b2xkLCBwcmUtUmF5Z3VuIGxvZyB1cGxvYWRpbmcuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWlu
L3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9Mb2dnaW5nU2Vydmlj
ZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVs
b3AuQ29yZS9Mb2dnaW5nU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE4MSwyMCArMTgxLDYg
QEAgaW50ZXJuYWwgc3RhdGljIHZvaWQgUmVwb3J0VW5oYW5kbGVkRXhjZXB0aW9uIChFeGNlcHRp
b24gZXgsIGJvb2wgd2lsbFNodXREb3duLAogCQkJCWlmIChSZXBvcnRDcmFzaGVzLkhhc1ZhbHVl
ICYmICFSZXBvcnRDcmFzaGVzLlZhbHVlKQogCQkJCQlyZXR1cm47CiAKLQkJCQlieXRlW10gZGF0
YTsKLQkJCQl1c2luZyAodmFyIHN0cmVhbSA9IG5ldyBNZW1vcnlTdHJlYW0gKCkpIHsKLQkJCQkJ
dXNpbmcgKHZhciB3cml0ZXIgPSBTeXN0ZW0uWG1sLlhtbFdyaXRlci5DcmVhdGUgKHN0cmVhbSkp
IHsKLQkJCQkJCXdyaXRlci5Xcml0ZVN0YXJ0RWxlbWVudCAoIkNyYXNoTG9nIik7Ci0JCQkJCQl3
cml0ZXIuV3JpdGVBdHRyaWJ1dGVTdHJpbmcgKCJ2ZXJzaW9uIiwgU2VydmljZVZlcnNpb24pOwot
Ci0JCQkJCQl3cml0ZXIuV3JpdGVFbGVtZW50U3RyaW5nICgiU3lzdGVtSW5mb3JtYXRpb24iLCBT
eXN0ZW1JbmZvcm1hdGlvbi5HZXRUZXh0RGVzY3JpcHRpb24gKCkpOwotCQkJCQkJd3JpdGVyLldy
aXRlRWxlbWVudFN0cmluZyAoIkV4Y2VwdGlvbiIsIGV4LlRvU3RyaW5nICgpKTsKLQotCQkJCQkJ
d3JpdGVyLldyaXRlRW5kRWxlbWVudCAoKTsKLQkJCQkJfQotCQkJCQlkYXRhID0gc3RyZWFtLlRv
QXJyYXkgKCk7Ci0JCQkJfQotCiAJCQkJdmFyIGN1c3RvbURhdGEgPSBuZXcgSGFzaHRhYmxlICgp
OwogCQkJCWN1c3RvbURhdGFbIlN5c3RlbUluZm9ybWF0aW9uIl0gPSBTeXN0ZW1JbmZvcm1hdGlv
bi5HZXRUZXh0RGVzY3JpcHRpb24gKCk7CiAKQEAgLTIwNCwxNyArMTkwLDYgQEAgaW50ZXJuYWwg
c3RhdGljIHZvaWQgUmVwb3J0VW5oYW5kbGVkRXhjZXB0aW9uIChFeGNlcHRpb24gZXgsIGJvb2wg
d2lsbFNodXREb3duLAogCQkJCQl9KTsKIAkJCQl9CiAKLQkJCQkvLyBMb2cgdG8gZGlzayBvbmx5
IGlmIHVwbG9hZGluZyBmYWlscy4KLQkJCQl2YXIgZmlsZW5hbWUgPSBzdHJpbmcuRm9ybWF0ICgi
ezB9LnsxfS57Mn0uY3Jhc2hsb2ciLCBEYXRlVGltZS5VdGNOb3cuVG9TdHJpbmcgKCJ5eXl5LU1N
LWRkX19ISC1tbS1zcyIpLCBTeXN0ZW1JbmZvcm1hdGlvbi5TZXNzaW9uVXVpZCwgSW50ZXJsb2Nr
ZWQuSW5jcmVtZW50IChyZWYgQ3Jhc2hJZCkpOwotCQkJCVRocmVhZFBvb2wuUXVldWVVc2VyV29y
a0l0ZW0gKGRlbGVnYXRlIHsKLQkJCQkJaWYgKCFUcnlVcGxvYWRSZXBvcnQgKGZpbGVuYW1lLCBk
YXRhKSkgewotCQkJCQkJaWYgKCFEaXJlY3RvcnkuRXhpc3RzIChDcmFzaExvZ0RpcmVjdG9yeSkp
Ci0JCQkJCQkJRGlyZWN0b3J5LkNyZWF0ZURpcmVjdG9yeSAoQ3Jhc2hMb2dEaXJlY3RvcnkpOwot
Ci0JCQkJCQlGaWxlLldyaXRlQWxsQnl0ZXMgKENyYXNoTG9nRGlyZWN0b3J5LkNvbWJpbmUgKGZp
bGVuYW1lKSwgZGF0YSk7Ci0JCQkJCX0KLQkJCQl9KTsKLQogCQkJCS8vZW5zdXJlIHdlIGRvbid0
IGxvc2UgdGhlIHNldHRpbmcKIAkJCQlpZiAoUmVwb3J0Q3Jhc2hlcyAhPSBvbGRSZXBvcnRDcmFz
aGVzKSB7CiAJCQkJCVByb3BlcnR5U2VydmljZS5TYXZlUHJvcGVydGllcyAoKTsNCg0KICAgQ29t
bWl0OiA2MmZlMGEwOWZmMWI4MmJmM2Q1ZDcwYzFlNTllOGUzY2IxNmIzMTc3DQogICBBdXRob3I6
IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0
ZTogMjAxMy0xMS0xNiAwNjowNjo0NSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29t
L21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzYyZmUwYTA5ZmYxYjgyYmYzZDVkNzBjMWU1OWU4ZTNj
YjE2YjMxNzcNCg0KRml4ZWQgJ0J1ZyAxNjI2OCAtIFR5cGUgc3lzdGVtIGV4Y2VwdGlvbnMgaW4g
dGhlIGxvZycuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9w
LklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcwoNCk1v
ZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlw
ZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTExMjgsMTkgKzEx
MjgsMjUgQEAgcHVibGljIHZvaWQgSW5mb3JtRmlsZUFkZGVkIChQYXJzZWRGaWxlRXZlbnRBcmdz
IGUpCiAKIAkJCVtOb25TZXJpYWxpemVkXQogCQkJaW50IGxvYWRPcGVyYXRpb25EZXB0aCA9IDA7
CisJCQlbTm9uU2VyaWFsaXplZF0KKwkJCXJlYWRvbmx5IG9iamVjdCBsb2FkT3BlcmF0aW9uTG9j
a2VyID0gbmV3IG9iamVjdCAoKTsKIAotCQkJaW50ZXJuYWwgaW50IExvYWRPcGVyYXRpb25EZXB0
aCB7Ci0JCQkJZ2V0IHsKLQkJCQkJcmV0dXJuIGxvYWRPcGVyYXRpb25EZXB0aDsKLQkJCQl9Ci0J
CQkJc2V0IHsKLQkJCQkJbG9hZE9wZXJhdGlvbkRlcHRoID0gdmFsdWU7Ci0JCQkJCWlmIChsb2Fk
T3BlcmF0aW9uRGVwdGggPCAwKQotCQkJCQkJdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNl
cHRpb24gKCk7Ci0JCQkJCU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKKwkJCWludGVybmFsIHZv
aWQgQmVnaW5Mb2FkT3BlcmF0aW9uICgpCisJCQl7CisJCQkJbG9jayAobG9hZE9wZXJhdGlvbkxv
Y2tlcikgeworCQkJCQlsb2FkT3BlcmF0aW9uRGVwdGgrKzsKIAkJCQl9CiAJCQl9CiAKKwkJCWlu
dGVybmFsIHZvaWQgRW5kTG9hZE9wZXJhdGlvbiAoKQorCQkJeworCQkJCWxvY2sgKGxvYWRPcGVy
YXRpb25Mb2NrZXIpIHsKKwkJCQkJaWYgKGxvYWRPcGVyYXRpb25EZXB0aCA+IDApIHsKKwkJCQkJ
CWxvYWRPcGVyYXRpb25EZXB0aC0tOworCQkJCQl9CisJCQkJfQorCQkJCU9uTG9hZCAoRXZlbnRB
cmdzLkVtcHR5KTsKKwkJCX0KIAkJCWJvb2wgaW5Mb2FkOwogCQkJcHVibGljIGJvb2wgSW5Mb2Fk
IHsKIAkJCQlnZXQgewpAQCAtMTI2OSw3ICsxMjc1LDcgQEAgcHVibGljIExhenlQcm9qZWN0TG9h
ZGVyIChQcm9qZWN0Q29udGVudFdyYXBwZXIgd3JhcHBlcikKIAkJCQkJdGhpcy53cmFwcGVyID0g
d3JhcHBlcjsKIAkJCQkJY29udGV4dFRhc2sgPSBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKGRlbGVn
YXRlIHsKIAkJCQkJCXRyeSB7Ci0JCQkJCQkJdGhpcy53cmFwcGVyLkxvYWRPcGVyYXRpb25EZXB0
aCsrOworCQkJCQkJCXRoaXMud3JhcHBlci5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQkJ
dmFyIHAgPSB0aGlzLndyYXBwZXIuUHJvamVjdDsKIAkJCQkJCQl2YXIgY29udGV4dCA9IExvYWRQ
cm9qZWN0Q2FjaGUgKHApOwogCkBAIC0xMjg4LDcgKzEyOTQsNyBAQCBwdWJsaWMgTGF6eVByb2pl
Y3RMb2FkZXIgKFByb2plY3RDb250ZW50V3JhcHBlciB3cmFwcGVyKQogCQkJCQkJCVF1ZXVlUGFy
c2VKb2IgKHRoaXMud3JhcHBlcik7CiAJCQkJCQkJcmV0dXJuIGNvbnRleHQ7CiAJCQkJCQl9IGZp
bmFsbHkgewotCQkJCQkJCXRoaXMud3JhcHBlci5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJ
CQl0aGlzLndyYXBwZXIuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJCX0KIAkJCQkJfSk7CiAJ
CQkJfQpAQCAtMjUzNyw3ICsyNTQzLDcgQEAgcHVibGljIHZvaWQgUnVuIChJUHJvZ3Jlc3NNb25p
dG9yIG1vbml0b3IpCiAJCQkJVHlwZVN5c3RlbVBhcnNlciBwYXJzZXIgPSBudWxsOwogCQkJCXZh
ciB0YWdzID0gQ29udGV4dC5HZXRFeHRlbnNpb25PYmplY3QgPFByb2plY3RDb21tZW50VGFncz4g
KCk7CiAJCQkJdHJ5IHsKLQkJCQkJQ29udGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgrKzsKKwkJCQkJ
Q29udGV4dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCWZvcmVhY2ggKHZhciBmaWxlIGlu
IChGaWxlTGlzdCA/PyBDb250ZXh0LlByb2plY3QuRmlsZXMpKSB7CiAJCQkJCQl2YXIgZmlsZU5h
bWUgPSBmaWxlLkZpbGVQYXRoOwogCQkJCQkJaWYgKGZpbGVzU2tpcHBlZEluUGFyc2VUaHJlYWQu
QW55IChmID0+IGYgPT0gZmlsZU5hbWUpKQpAQCAtMjU1OCw3ICsyNTY0LDcgQEAgcHVibGljIHZv
aWQgUnVuIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCiAJCQkJCQlDb250ZXh0LkluZm9ybUZp
bGVBZGRlZCAobmV3IFBhcnNlZEZpbGVFdmVudEFyZ3MgKHBhcnNlZERvY3VtZW50LlBhcnNlZEZp
bGUpKTsKIAkJCQkJfQogCQkJCX0gZmluYWxseSB7Ci0JCQkJCUNvbnRleHQuTG9hZE9wZXJhdGlv
bkRlcHRoLS07CisJCQkJCUNvbnRleHQuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQl9CiAJCQl9
CiAJCX0KQEAgLTI2MTQsNyArMjYyMCw3IEBAIHN0YXRpYyB2b2lkIFF1ZXVlUGFyc2VKb2IgKFBy
b2plY3RDb250ZW50V3JhcHBlciBjb250ZXh0LCBJRW51bWVyYWJsZTxQcm9qZWN0RmlsCiAJCQl9
OwogCQkJbG9jayAocGFyc2VRdWV1ZUxvY2spIHsKIAkJCQlSZW1vdmVQYXJzZUpvYiAoY29udGV4
dCk7Ci0JCQkJY29udGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgrKzsKKwkJCQljb250ZXh0LkJlZ2lu
TG9hZE9wZXJhdGlvbiAoKTsKIAkJCQlwYXJzZVF1ZXVlSW5kZXggW2NvbnRleHRdID0gam9iOwog
CQkJCXBhcnNlUXVldWUuRW5xdWV1ZSAoam9iKTsKIAkJCQlwYXJzZUV2ZW50LlNldCAoKTsKQEAg
LTI2NTIsNyArMjY1OCw3IEBAIHN0YXRpYyB2b2lkIFJlbW92ZVBhcnNlSm9iIChQcm9qZWN0Q29u
dGVudFdyYXBwZXIgcHJvamVjdCkKIAkJCQlQYXJzaW5nSm9iIGpvYjsKIAkJCQlpZiAocGFyc2VR
dWV1ZUluZGV4LlRyeUdldFZhbHVlIChwcm9qZWN0LCBvdXQgam9iKSkgewogCQkJCQlwYXJzZVF1
ZXVlSW5kZXguUmVtb3ZlIChwcm9qZWN0KTsKLQkJCQkJcHJvamVjdC5Mb2FkT3BlcmF0aW9uRGVw
dGgtLTsKKwkJCQkJcHJvamVjdC5FbmRMb2FkT3BlcmF0aW9uICgpOwogCQkJCX0KIAkJCX0KIAkJ
fQpAQCAtMjcwNSw3ICsyNzExLDcgQEAgc3RhdGljIHZvaWQgQ2hlY2tNb2RpZmllZEZpbGVzIChQ
cm9qZWN0IHByb2plY3QsIFByb2plY3RGaWxlW10gcHJvamVjdEZpbGVzLCBQcm8KIAkJewogCQkJ
Y29udGVudC5SdW5XaGVuTG9hZGVkIChkZWxlZ2F0ZShJUHJvamVjdENvbnRlbnQgY250KSB7CiAJ
CQkJdHJ5IHsKLQkJCQkJY29udGVudC5Mb2FkT3BlcmF0aW9uRGVwdGgrKzsKKwkJCQkJY29udGVu
dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCXZhciBtb2RpZmllZEZpbGVzID0gbmV3IExp
c3Q8UHJvamVjdEZpbGU+ICgpOwogCQkJCQl2YXIgb2xkRmlsZU5ld0ZpbGUgPSBuZXcgTGlzdDxU
dXBsZTxQcm9qZWN0RmlsZSwgSVVucmVzb2x2ZWRGaWxlPj4gKCk7CiAKQEAgLTI3NDcsNyArMjc1
Myw3IEBAIHN0YXRpYyB2b2lkIENoZWNrTW9kaWZpZWRGaWxlcyAoUHJvamVjdCBwcm9qZWN0LCBQ
cm9qZWN0RmlsZVtdIHByb2plY3RGaWxlcywgUHJvCiAJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUp
IHsKIAkJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJFeGNlcHRpb24gaW4gY2hlY2sgbW9k
aWZpZWQgZmlsZXMuIiwgZSk7CiAJCQkJfSBmaW5hbGx5IHsKLQkJCQkJY29udGVudC5Mb2FkT3Bl
cmF0aW9uRGVwdGgtLTsKKwkJCQkJY29udGVudC5FbmRMb2FkT3BlcmF0aW9uICgpOwogCQkJCX0K
IAogCQkJfSk7CkBAIC0yODIwLDcgKzI4MjYsNyBAQCBzdGF0aWMgdm9pZCBDb25zdW1lUGFyc2lu
Z1F1ZXVlICgpCiAJCQkJCQkJCW1vbml0b3IgPSBHZXRQYXJzZVByb2dyZXNzTW9uaXRvciAoKTsK
IAkJCQkJCQltb25pdG9yLlJlcG9ydEVycm9yIChudWxsLCBleCk7CiAJCQkJCQl9IGZpbmFsbHkg
ewotCQkJCQkJCWpvYi5Db250ZXh0LkxvYWRPcGVyYXRpb25EZXB0aC0tOworCQkJCQkJCWpvYi5D
b250ZXh0LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQl9CiAJCQkJCX0KIAkJCQkJDQoNCiAg
IENvbW1pdDogODM0NDNmNjYyZTNiMWVhNjRlOGI2YWZlODFlODI3YTA0OGMxZGZkNw0KICAgQXV0
aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIpDQogICAg
IERhdGU6IDIwMTMtMTEtMTYgMDY6MjM6MDEgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC84MzQ0M2Y2NjJlM2IxZWE2NGU4YjZhZmU4MWU4
MjdhMDQ4YzFkZmQ3DQoNCkZpeGVkICdCdWcgMTYyODMgLSBXcm9uZyBsaXRlcmFsIHN0cmluZyBh
ZGRpdGlvbicNCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQog
IE0gbWFpbi90ZXN0cy9Vbml0VGVzdHMvTW9ub0RldmVsb3AuQ1NoYXJwQmluZGluZy9PblRoZUZs
eUZvcm1hdHRlclRlc3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQ0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KQEAgLTEgKzEgQEAKLVN1YnByb2plY3QgY29tbWl0IDIwNDRlYTM2ZDNjZjgz
MWNhYzFjMGM5YmY2ZGYwZWZkY2UwMjMwYjAKK1N1YnByb2plY3QgY29tbWl0IDQ2N2RkNzQ4MDE5
ZWFmMDQwNDg1ZDdiZmIxNjNlYTAzODNkMjhhMzgNCg0KTW9kaWZpZWQ6IG1haW4vdGVzdHMvVW5p
dFRlc3RzL01vbm9EZXZlbG9wLkNTaGFycEJpbmRpbmcvT25UaGVGbHlGb3JtYXR0ZXJUZXN0cy5j
cw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KQEAgLTI3Myw2ICsyNzMsMjEgQEAgcHVibGljIHZvaWQgVGVzdEJ1ZzE2
MTc0X1ZpcnR1YWxJbmRlbnQgKCkKIAkJCQlDb25zb2xlLldyaXRlTGluZSAobmV3VGV4dCk7CiAJ
CQlBc3NlcnQuQXJlRXF1YWwgKGV4cGVjdGVkLCBuZXdUZXh0KTsKIAkJfQorCisKKwkJLy8vIDxz
dW1tYXJ5PgorCQkvLy8gQnVnIDE2MjgzIC0gV3JvbmcgbGl0ZXJhbCBzdHJpbmcgYWRkaXRpb24K
KwkJLy8vIDwvc3VtbWFyeT4KKwkJW1Rlc3RdCisJCXB1YmxpYyB2b2lkIFRlc3RCdWcxNjI4MyAo
KQorCQl7CisJCQlUZXN0Vmlld0NvbnRlbnQgY29udGVudDsKKwkJCXZhciBleHQgPSBTZXR1cCAo
IiRcIlxcZGV2XFxudWxsIHswfVwiIiwgb3V0IGNvbnRlbnQpOworCQkJY29udGVudC5HZXRUZXh0
RWRpdG9yRGF0YSAoKS5JbnNlcnQgKDAsICJAIik7CisJCQlleHQuS2V5UHJlc3MgKChHZGsuS2V5
KSdAJywgJ0AnLCBHZGsuTW9kaWZpZXJUeXBlLk5vbmUpOworCQkJdmFyIG5ld1RleHQgPSBjb250
ZW50LlRleHQ7CisJCQlBc3NlcnQuQXJlRXF1YWwgKCJAXCJcXGRldlxudWxsIHswfVwiIiwgbmV3
VGV4dCk7CisJCX0KIAl9CiB9CiANCg0KICAgQ29tbWl0OiA1Y2Y3NTUxNGY2MTE2ZmVkMWU0YWRh
ZGFjMDJkOWIyZjA5ZWUzYmE2DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFt
YXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0xNiAwNjoyNToyMyBHTVQN
CiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzVj
Zjc1NTE0ZjYxMTZmZWQxZTRhZGFkYWMwMmQ5YjJmMDllZTNiYTYNCg0KRml4ZWQgJ0J1ZyAxNjI4
MSAtIEVycm9yIGNsb3NpbmcgdGhlIE1vbm9EZXZlbG9wIHByb2plY3QgdXNpbmcgNC4yLjAnLg0K
DQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0Rl
dmVsb3AuSWRlLlR5cGVTeXN0ZW0vVHlwZVN5c3RlbVNlcnZpY2UuY3MKDQpNb2RpZmllZDogbWFp
bi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlR5cGVTeXN0ZW0vVHlw
ZVN5c3RlbVNlcnZpY2UuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNzM2LDcgKzE3MzYsOCBAQCBpbnRl
cm5hbCBzdGF0aWMgdm9pZCBVbmxvYWRQcm9qZWN0IChQcm9qZWN0IHByb2plY3QpCiAJCQkJCiAJ
CQlQcm9qZWN0Q29udGVudFdyYXBwZXIgd3JhcHBlcjsKIAkJCWxvY2sgKHByb2plY3RXcmFwcGVy
VXBkYXRlTG9jaykgewotCQkJCXdyYXBwZXIgPSBwcm9qZWN0Q29udGVudHMgW3Byb2plY3RdOwor
CQkJCWlmICghcHJvamVjdENvbnRlbnRzLlRyeUdldFZhbHVlIChwcm9qZWN0LCBvdXQgd3JhcHBl
cikpCisJCQkJCXJldHVybjsKIAkJCQlwcm9qZWN0Q29udGVudHMuUmVtb3ZlIChwcm9qZWN0KTsK
IAkJCX0KIAkJCVN0b3JlUHJvamVjdENhY2hlIChwcm9qZWN0LCB3cmFwcGVyKTsNCg0KICAgQ29t
bWl0OiBmY2VhZDU3ODllOTYyNTRjYWJjNDdjOGVjMTdjYjFkN2FjNjM1Njk4DQogICBBdXRob3I6
IFN0ZXBoZW4gR3JlYW0gPHN0ZXBoZW4uZ3JlYW1AZ21haWwuY29tPiAoVGhyZWVUb2VzKQ0KICAg
ICBEYXRlOiAyMDEzLTExLTE2IDE1OjAzOjMxIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1
Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvZmNlYWQ1Nzg5ZTk2MjU0Y2FiYzQ3YzhlYzE3
Y2IxZDdhYzYzNTY5OA0KDQpGaXhlZCBhIGJ1ZyB3aGVyZSBYU1Agd291bGQgZmFpbCB0byBsYXVu
Y2ggd2hlbiB1c2luZyAuTkVUIDQgY29uZmlndXJhdGlvbiBvbiBXaW5kb3dzLiBQYXRoIGdlbmVy
YXRvciB3b3VsZCBnZW5lcmF0ZSB0aGUgY29ycmVjdCBwYXRoLCBhbmQgdGhlbiBzd2l0Y2ggaXQg
b3V0IGZvciB0aGUgNC41IGxpYnJhcnkgcGF0aCBpbnN0ZWFkLiBYU1AgaXNuJ3QgcGFja2FnZWQg
aW50byB0aGF0IGRpcmVjdG9yeSBvbiBXaW5kb3dzLCBzbyBNb25vRGV2ZWxvcCB3b3VsZCB0aHJv
dyBhbiBleGNlcHRpb24gd2hlbiBpdCBjb3VsZG4ndCBmaW5kIGl0DQoNCkNoYW5nZWQgcGF0aHM6
CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25vRGV2ZWxv
cC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MKDQpNb2Rp
ZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRlYnVnZ2VyLlNvZnQvTW9ub0RldmVs
b3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERlYnVnZ2VyRW5naW5lLmNzDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtNTcsNyArNTcsNyBAQCBGaWxlUGF0aCBHZXRGeERpciAoTW9ub1RhcmdldFJ1
bnRpbWUgcnVudGltZSwgQ2xyVmVyc2lvbiB2ZXJzaW9uKQogCQkJCXJldHVybiBwcmVmaXguQ29t
YmluZSAoImxpYiIsICJtb25vIiwgIjIuMCIpOwogCQkJY2FzZSBDbHJWZXJzaW9uLk5ldF80XzA6
CiAJCQkJdmFyIG5ldDQ1UGF0aCA9IHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8iLCAiNC41
Iik7Ci0JCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1UGF0aCkpIHJldHVybiBuZXQ0NVBh
dGg7CisJCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1UGF0aCkgJiYgIU1vbm9EZXZlbG9w
LkNvcmUuUGxhdGZvcm0uSXNXaW5kb3dzKSByZXR1cm4gbmV0NDVQYXRoOwogCQkJCXJldHVybiBw
cmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuMCIpOwogCQkJY2FzZSBDbHJWZXJzaW9u
Lk5ldF80XzU6CiAJCQkJcmV0dXJuIHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8iLCAiNC41
Iik7DQoNCiAgIENvbW1pdDogOWI2ZDA1ZTg5YzkwNjY0OTZlMWNmYmNhYWQ3YzEzY2RmOGE1ZDYx
Yw0KICAgQXV0aG9yOiBBbGFuIE1jR292ZXJuIDxhbGFuLm1jZ292ZXJuQGdtYWlsLmNvbT4gKGFs
YW5tY2dvdmVybikNCiAgICAgRGF0ZTogMjAxMy0xMS0xNyAxODowMTowOCBHTVQNCiAgICAgIFVS
TDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzliNmQwNWU4OWM5
MDY2NDk2ZTFjZmJjYWFkN2MxM2NkZjhhNWQ2MWMNCg0KTWVyZ2UgcHVsbCByZXF1ZXN0ICM0Mzcg
ZnJvbSBUaHJlZVRvZXMvbWFzdGVyCgpGaXhlZCBhIGJ1ZyB3aGVyZSBYU1Agd291bGQgZmFpbCB0
byBsYXVuY2ggd2hlbiB1c2luZyAuTkVUIDQgY29uZmlndXJhdGlvbg0KDQpDaGFuZ2VkIHBhdGhz
OgogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRlYnVnZ2VyLlNvZnQvTW9ub0RldmVs
b3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERlYnVnZ2VyRW5naW5lLmNzCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0L01vbm9EZXZl
bG9wLkRlYnVnZ2VyLlNvZnQuQXNwTmV0L0FzcE5ldFNvZnREZWJ1Z2dlckVuZ2luZS5jcw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KQEAgLTU3LDcgKzU3LDcgQEAgRmlsZVBhdGggR2V0RnhEaXIgKE1vbm9UYXJnZXRS
dW50aW1lIHJ1bnRpbWUsIENsclZlcnNpb24gdmVyc2lvbikKIAkJCQlyZXR1cm4gcHJlZml4LkNv
bWJpbmUgKCJsaWIiLCAibW9ubyIsICIyLjAiKTsKIAkJCWNhc2UgQ2xyVmVyc2lvbi5OZXRfNF8w
OgogCQkJCXZhciBuZXQ0NVBhdGggPSBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQu
NSIpOwotCQkJCWlmIChEaXJlY3RvcnkuRXhpc3RzIChuZXQ0NVBhdGgpKSByZXR1cm4gbmV0NDVQ
YXRoOworCQkJCWlmIChEaXJlY3RvcnkuRXhpc3RzIChuZXQ0NVBhdGgpICYmICFNb25vRGV2ZWxv
cC5Db3JlLlBsYXRmb3JtLklzV2luZG93cykgcmV0dXJuIG5ldDQ1UGF0aDsKIAkJCQlyZXR1cm4g
cHJlZml4LkNvbWJpbmUgKCJsaWIiLCAibW9ubyIsICI0LjAiKTsKIAkJCWNhc2UgQ2xyVmVyc2lv
bi5OZXRfNF81OgogCQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQu
NSIpOw0KDQogICBDb21taXQ6IDA4MGExM2NlMGI4NWQ0NzI4ZDNmMjdmZjc3MjA0MGQ5YWE3NWU1
YWENCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQog
ICAgIERhdGU6IDIwMTMtMTEtMTcgMjI6NTY6MTcgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0
aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8wODBhMTNjZTBiODVkNDcyOGQzZjI3ZmY3
NzIwNDBkOWFhNzVlNWFhDQoNCltWZXJzaW9uQ29udHJvbF0gSW1wbGVtZW50ZWQgYmFja2VuZCBz
cGVjaWZpYyB0ZXN0cwoKSW5jbHVkZSBhIGZpeHVwIGZvciBHZXRQdXNoRGlmZi4NCg0KQ2hhbmdl
ZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5W
ZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFp
bi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdp
dC5UZXN0cy9CYXNlUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv
bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L01vbm9EZXZlbG9wLlZlcnNp
b25Db250cm9sLkdpdC9HaXRSZXBvc2l0b3J5LmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv
bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9CYXNl
U3ZuUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wv
TW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5VGVz
dHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMy
LlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVy
c2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRS
ZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMiwxNCArMzIsMTQgQEAKIHVzaW5n
IE5HaXQuQXBpOw0KIHVzaW5nIE5Vbml0LkZyYW1ld29yazsNCiB1c2luZyBTeXN0ZW0uSU87DQot
dXNpbmcgU3lzdGVtOw0KIHVzaW5nIE5HaXQuU3RvcmFnZS5GaWxlOw0KIHVzaW5nIE5HaXQuUmV2
d2FsazsNCit1c2luZyBTeXN0ZW0uTGlucTsNCiANCiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVy
c2lvbkNvbnRyb2wuR2l0LlRlc3RzDQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBjbGFz
cyBCYXNlR2l0VXRpbHNUZXN0IDogQmFzZVJlcG9VdGlsc1Rlc3QNCisJc2VhbGVkIGNsYXNzIEJh
c2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVzdA0KIAl7DQogCQlbU2V0VXBdDQogCQlw
dWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQ0KQEAgLTE2MSw2ICsxNjEsMTg0IEBAIHByb3Rl
Y3RlZCBvdmVycmlkZSB2b2lkIEJsYW1lRXh0cmFJbnRlcm5hbHMgKEFubm90YXRpb24gW10gYW5u
b3RhdGlvbnMpCiAJCQlBc3NlcnQuSXNUcnVlIChhbm5vdGF0aW9ucyBbMl0uSGFzRGF0ZSk7DQog
CQl9DQogDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RHaXRTdGFzaCAoKQ0KKwkJew0K
KwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUy
IiwgIm5vdGhpbmciLCB0cnVlLCB0cnVlKTsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIs
IHRydWUsIGZhbHNlKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLkNyZWF0ZSAobnVsbCk7DQor
CQkJQXNzZXJ0LklzVHJ1ZSAoIUZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwg
IlN0YXNoIGNyZWF0aW9uIGZhaWx1cmUiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAo
bnVsbCk7DQorDQorCQkJVmVyc2lvbkluZm8gdmkgPSByZXBvMi5HZXRWZXJzaW9uSW5mbyAoUm9v
dENoZWNrb3V0ICsgImZpbGUxIiwgVmVyc2lvbkluZm9RdWVyeUZsYWdzLklnbm9yZUNhY2hlKTsN
CisJCQlBc3NlcnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCB2aS5TdGF0
dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgIlN0YXNoIHBvcCBmYWlsdXJlIik7DQor
CQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RHaXRCcmFuY2hDcmVhdGlvbiAo
KQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorDQorCQkJQWRk
RmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBvMi5DcmVhdGVCcmFu
Y2ggKCJicmFuY2gxIiwgbnVsbCk7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBN
b25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgp
LCAiYnJhbmNoMSIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoImJyYW5jaDEiLCByZXBvMi5HZXRD
dXJyZW50QnJhbmNoICgpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChGaWxlLkV4aXN0cyAoUm9vdENo
ZWNrb3V0ICsgImZpbGUxIiksICJCcmFuY2ggbm90IGluaGVyaXRpbmcgZnJvbSBjdXJyZW50LiIp
Ow0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJl
cG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDIiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0Jy
YW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVz
c01vbml0b3IgKCksICJicmFuY2gyIik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoIUZpbGUuRXhpc3Rz
IChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwgIlVuY29tbWl0dGVkIGNoYW5nZXMgd2VyZSBub3Qg
c3Rhc2hlZCIpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuUG9wIChuZXcgTnVsbFByb2dyZXNz
TW9uaXRvciAoKSk7DQorDQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RDaGVj
a291dCArICJmaWxlMiIpLCAiVW5jb21taXR0ZWQgY2hhbmdlcyB3ZXJlIG5vdCBzdGFzaGVkIGNv
cnJlY3RseSIpOw0KKw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3Au
Q29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgIm1hc3RlciIp
Ow0KKwkJCXJlcG8yLlJlbW92ZUJyYW5jaCAoImJyYW5jaDEiKTsNCisJCQlBc3NlcnQuSXNGYWxz
ZSAocmVwbzIuR2V0QnJhbmNoZXMgKCkuQW55IChiID0+IGIuTmFtZSA9PSAiYnJhbmNoMSIpLCAi
RmFpbGVkIHRvIGRlbGV0ZSBicmFuY2giKTsNCisNCisJCQlyZXBvMi5SZW5hbWVCcmFuY2ggKCJi
cmFuY2gyIiwgImJyYW5jaDMiKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5HZXRCcmFuY2hl
cyAoKS5BbnkgKGIgPT4gYi5OYW1lID09ICJicmFuY2gzIikgJiYgcmVwbzIuR2V0QnJhbmNoZXMg
KCkuQWxsIChiID0+IGIuTmFtZSAhPSAiYnJhbmNoMiIpLCAiRmFpbGVkIHRvIHJlbmFtZSBicmFu
Y2giKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdFN5bmNCcmFu
Y2hlcyAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJ
QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChy
ZXBvMik7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoMyIsIG51bGwpOw0KKwkJ
CXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0
b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDMiKTsNCisJCQlBZGRGaWxlICgi
ZmlsZTIiLCAiYXNkZiIsIHRydWUsIHRydWUpOw0KKwkJCXJlcG8yLlB1c2ggKG5ldyBNb25vRGV2
ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAib3Jp
Z2luIiwgImJyYW5jaDMiKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9E
ZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJt
YXN0ZXIiKTsNCisNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2g0IiwgIm9yaWdpbi9i
cmFuY2gzIik7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3Jl
LlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoNCIpOw0K
KwkJCUFzc2VydC5Jc1RydWUgKEZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwg
IlRyYWNraW5nIHJlbW90ZSBpcyBub3QgZ3JhYmJpbmcgY29ycmVjdCBjb21taXRzIik7DQorCQl9
DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RQdXNoQ2hhbmdlc2V0ICgpDQorCQl7
DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmls
ZSIsICJtZWgiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorDQorCQkJ
QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlBZGRGaWxlICgiZmls
ZTIiLCAidGV4dDIiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlDaGFuZ2VTZXQgZGlmZiA9IHJlcG8y
LkdldFB1c2hDaGFuZ2VTZXQgKCJvcmlnaW4iLCAibWFzdGVyIik7DQorCQkJQXNzZXJ0LkFyZUVx
dWFsICgyLCBkaWZmLkl0ZW1zLkNvdW50ICgpKTsNCisNCisJCQlDaGFuZ2VTZXRJdGVtIGl0ZW0g
PSBkaWZmLkdldEZpbGVJdGVtIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKTsNCisJCQlBc3NlcnQu
SXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2No
ZWR1bGVkQWRkLCBpdGVtLlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkKTsNCisN
CisJCQlpdGVtID0gZGlmZi5HZXRGaWxlSXRlbSAoUm9vdENoZWNrb3V0ICsgImZpbGUxIik7DQor
CQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsIChWZXJzaW9u
U3RhdHVzLlNjaGVkdWxlZEFkZCwgaXRlbS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxl
ZEFkZCk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCVtJZ25vcmUgKCJHZXRQdXNoRGlmZiBjb250
ZW50IGlzIGFsd2F5cyBlbXB0eSIpXQ0KKwkJcHVibGljIHZvaWQgVGVzdFB1c2hEaWZmICgpDQor
CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgi
ZmlsZSIsICJtZWgiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorDQor
CQkJQWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlBZGRGaWxlICgi
ZmlsZTIiLCAidGV4dDIiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlEaWZmSW5mb1tdIGRpZmYgPSBy
ZXBvMi5HZXRQdXNoRGlmZiAoIm9yaWdpbiIsICJtYXN0ZXIiKTsNCisJCQlBc3NlcnQuQXJlRXF1
YWwgKDIsIGRpZmYuTGVuZ3RoKTsNCisNCisJCQlEaWZmSW5mbyBpdGVtID0gZGlmZiBbMF07DQor
CQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgiZmlsZTEi
LCBpdGVtLkZpbGVOYW1lLkZpbGVOYW1lKTsNCisJCQkvL0Fzc2VydC5BcmVFcXVhbCAoInRleHQi
LCBpdGVtLkNvbnRlbnQpOw0KKw0KKwkJCWl0ZW0gPSBkaWZmIFsxXTsNCisJCQlBc3NlcnQuSXNO
b3ROdWxsIChpdGVtKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJmaWxlMiIsIGl0ZW0uRmlsZU5h
bWUuRmlsZU5hbWUpOw0KKwkJCS8vQXNzZXJ0LkFyZUVxdWFsICgidGV4dDIiLCBpdGVtLkNvbnRl
bnQpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0R2l0VXJsICgpDQor
CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNU
cnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZ2l0QGdpdGh1Yi5jb206bW9uby9tb25vZGV2ZWxvcCIp
KTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZ2l0Oi8vZ2l0aHViLmNv
bTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5J
c1VybFZhbGlkICgic3NoOi8vdXNlckBob3N0LmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIp
KTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cDovL2dpdGh1Yi5j
b206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIu
SXNVcmxWYWxpZCAoImh0dHBzOi8vZ2l0aHViLmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIp
KTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZnRwOi8vZ2l0aHViLmNv
bTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5J
c1VybFZhbGlkICgiZnRwczovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7
DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZpbGU6Ly8vbW9uby9tb25v
ZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoInJz
eW5jOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbHBvLmdpdCIpKTsNCisJCX0NCisNCisJCVtU
ZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFJlbW90ZSAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9
IChHaXRSZXBvc2l0b3J5KVJlcG87DQorDQorCQkJQXNzZXJ0LkFyZUVxdWFsICgib3JpZ2luIiwg
cmVwbzIuR2V0Q3VycmVudFJlbW90ZSAoKSk7DQorDQorCQkJQWRkRmlsZSAoImZpbGUxIiwgInRl
eHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorCQkJcmVwbzIuQ3Jl
YXRlQnJhbmNoICgiYnJhbmNoMSIsIG51bGwpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChu
ZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRv
ciAoKSwgImJyYW5jaDEiKTsNCisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIHRy
dWUpOw0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDIsIHJl
cG8yLkdldEJyYW5jaGVzICgpLkNvdW50ICgpKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDEsIHJl
cG8yLkdldFJlbW90ZXMgKCkuQ291bnQgKCkpOw0KKw0KKwkJCXJlcG8yLlJlbmFtZVJlbW90ZSAo
Im9yaWdpbiIsICJvdGhlciIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoIm90aGVyIiwgcmVwbzIu
R2V0Q3VycmVudFJlbW90ZSAoKSk7DQorDQorCQkJcmVwbzIuUmVtb3ZlUmVtb3RlICgib3RoZXIi
KTsNCisJCQlBc3NlcnQuSXNGYWxzZSAocmVwbzIuR2V0UmVtb3RlcyAoKS5BbnkgKCkpOw0KKwkJ
fQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0SXNNZXJnZWQgKCkNCisJCXsNCisJ
CQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIs
ICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNCcmFu
Y2hNZXJnZWQgKCJtYXN0ZXIiKSk7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNo
MSIsIG51bGwpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29y
ZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDEiKTsN
CisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKw0KKwkJCXJlcG8y
LlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jpbmcu
TnVsbFByb2dyZXNzTW9uaXRvciAoKSwgIm1hc3RlciIpOw0KKwkJCUFzc2VydC5Jc0ZhbHNlIChy
ZXBvMi5Jc0JyYW5jaE1lcmdlZCAoImJyYW5jaDEiKSk7DQorCQkJcmVwbzIuTWVyZ2UgKCJicmFu
Y2gxIiwgR2l0VXBkYXRlT3B0aW9ucy5Ob3JtYWxVcGRhdGUsIG5ldyBNb25vRGV2ZWxvcC5Db3Jl
LlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpKTsNCisJCQlBc3NlcnQu
SXNUcnVlIChyZXBvMi5Jc0JyYW5jaE1lcmdlZCAoImJyYW5jaDEiKSk7DQorCQl9DQorDQorCQlb
VGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RUYWdzICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0g
KEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUs
IHRydWUpOw0KKwkJCXJlcG8yLkFkZFRhZyAoInRhZzEiLCBHZXRIZWFkUmV2aXNpb24gKCksICJt
eS10YWciKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDEsIHJlcG8yLkdldFRhZ3MgKCkuQ291bnQg
KCkpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoInRhZzEiLCByZXBvMi5HZXRUYWdzICgpLkZpcnN0
ICgpKTsNCisJCQlyZXBvMi5SZW1vdmVUYWcgKCJ0YWcxIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFs
ICgwLCByZXBvMi5HZXRUYWdzICgpLkNvdW50ICgpKTsNCisJCX0NCisNCisJCS8vIFRPRE86IFRl
c3QgcmViYXNlIGFuZCBtZXJnZSAtIFRoaXMgaXMgYnJva2VuIG9uIFdpbmRvd3MNCisNCiAJCXBy
b3RlY3RlZCBvdmVycmlkZSBSZXBvc2l0b3J5IEdldFJlcG8gKHN0cmluZyBwYXRoLCBzdHJpbmcg
dXJsKQ0KIAkJew0KIAkJCXJldHVybiBuZXcgR2l0UmVwb3NpdG9yeSAocGF0aCwgdXJsKTsNDQoN
Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVy
c2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
CkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu
VGVzdHMKIHsKIAlbVGVzdEZpeHR1cmVdCi0JcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VSZXBv
VXRpbHNUZXN0CisJYWJzdHJhY3QgY2xhc3MgQmFzZVJlcG9VdGlsc1Rlc3QKIAl7CiAJCS8vIFtH
aXRdIFNldCB1c2VyIGFuZCBlbWFpbC4KIAkJcHJvdGVjdGVkIGNvbnN0IHN0cmluZyBBdXRob3Ig
PSAiYXV0aG9yIjsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9N
b25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu
R2l0L0dpdFJlcG9zaXRvcnkuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBw
dWJsaWMgQ2hhbmdlU2V0IEdldFB1c2hDaGFuZ2VTZXQgKHN0cmluZyByZW1vdGUsIHN0cmluZyBi
cmFuY2gpCiAJCQlDaGFuZ2VTZXQgY3NldCA9IENyZWF0ZUNoYW5nZVNldCAoUm9vdFBhdGgpOwog
CQkJT2JqZWN0SWQgY2lkMSA9IFJvb3RSZXBvc2l0b3J5LlJlc29sdmUgKHJlbW90ZSArICIvIiAr
IGJyYW5jaCk7CiAJCQlPYmplY3RJZCBjaWQyID0gUm9vdFJlcG9zaXRvcnkuUmVzb2x2ZSAoUm9v
dFJlcG9zaXRvcnkuR2V0QnJhbmNoICgpKTsKLQkJCVJldldhbGsgcncgPSBuZXcgUmV2V2FsayAo
Um9vdFJlcG9zaXRvcnkpOworCQkJUmV2V2FsawlydyA9IG5ldyBSZXZXYWxrIChSb290UmVwb3Np
dG9yeSk7CiAJCQlSZXZDb21taXQgYzEgPSBydy5QYXJzZUNvbW1pdCAoY2lkMSk7CiAJCQlSZXZD
b21taXQgYzIgPSBydy5QYXJzZUNvbW1pdCAoY2lkMik7CiAJCQkKQEAgLTE1ODksNyArMTU4OSw3
IEBAIHB1YmxpYyBEaWZmSW5mb1tdIEdldFB1c2hEaWZmIChzdHJpbmcgcmVtb3RlLCBzdHJpbmcg
YnJhbmNoKQogCQkJUmV2Q29tbWl0IGMyID0gcncuUGFyc2VDb21taXQgKGNpZDIpOwogCQkJCiAJ
CQlMaXN0PERpZmZJbmZvPiBkaWZmcyA9IG5ldyBMaXN0PERpZmZJbmZvPiAoKTsKLQkJCWZvcmVh
Y2ggKHZhciBjaGFuZ2UgaW4gR2l0VXRpbC5Db21wYXJlQ29tbWl0cyAoUm9vdFJlcG9zaXRvcnks
IGMxLCBjMikpIHsKKwkJCWZvcmVhY2ggKHZhciBjaGFuZ2UgaW4gR2l0VXRpbC5Db21wYXJlQ29t
bWl0cyAoUm9vdFJlcG9zaXRvcnksIGMyLCBjMSkpIHsKIAkJCQlzdHJpbmcgZGlmZjsKIAkJCQlz
d2l0Y2ggKGNoYW5nZS5HZXRDaGFuZ2VUeXBlICgpKSB7CiAJCQkJY2FzZSBEaWZmRW50cnkuQ2hh
bmdlVHlwZS5ERUxFVEU6DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRy
b2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9CYXNlU3ZuUmVw
b3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNl
IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMNCiB7DQogCVtUZXN0
Rml4dHVyZV0NCi0JcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VTdm5VdGlsc1Rlc3QgOiBCYXNl
UmVwb1V0aWxzVGVzdA0KKwlhYnN0cmFjdCBjbGFzcyBCYXNlU3ZuVXRpbHNUZXN0IDogQmFzZVJl
cG9VdGlsc1Rlc3QNCiAJew0KLQkJcHJvdGVjdGVkIFByb2Nlc3Mgc3ZuU2VydmUgPSBudWxsOw0K
KwkJcHJvdGVjdGVkIFByb2Nlc3MgU3ZuU2VydmUgPSBudWxsOw0KIA0KIAkJW1NldFVwXQ0KIAkJ
cHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkNCkBAIC01OSwxMyArNTksMTMgQEAgcHVibGlj
IG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkKIAkJCS8vIENyZWF0ZSBob3N0IChXaW4zMikNCiAJCQkv
LyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIgZG9pbmcgdGhlIHN2bkFkbWluIGNyZWF0aW9u
Lg0KIAkJCS8vIEFuZCBiZWZvcmUgY2hlY2tvdXQuDQotCQkJaWYgKHN2blNlcnZlICE9IG51bGwp
IHsNCisJCQlpZiAoU3ZuU2VydmUgIT0gbnVsbCkgew0KIAkJCQlpbmZvID0gbmV3IFByb2Nlc3NT
dGFydEluZm8gKCk7DQogCQkJCWluZm8uRmlsZU5hbWUgPSAic3Zuc2VydmUiOw0KIAkJCQlpbmZv
LkFyZ3VtZW50cyA9ICItZHIgIiArIFJvb3RVcmw7DQogCQkJCWluZm8uV2luZG93U3R5bGUgPSBQ
cm9jZXNzV2luZG93U3R5bGUuSGlkZGVuOw0KLQkJCQlzdm5TZXJ2ZS5TdGFydEluZm8gPSBpbmZv
Ow0KLQkJCQlzdm5TZXJ2ZS5TdGFydCAoKTsNCisJCQkJU3ZuU2VydmUuU3RhcnRJbmZvID0gaW5m
bzsNCisJCQkJU3ZuU2VydmUuU3RhcnQgKCk7DQogDQogCQkJCS8vIENyZWF0ZSB1c2VyIHRvIGF1
dGguDQogCQkJCXVzaW5nICh2YXIgcGVybSA9IEZpbGUuIENyZWF0ZVRleHQgKFJvb3RVcmwgKyBQ
YXRoLkRpcmVjdG9yeVNlcGFyYXRvckNoYXIgKyAicmVwbyIgKw0NCg0KTW9kaWZpZWQ6IG1haW4v
c3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2
ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTM2LDcgKzM2
LDcgQEAKIG5hbWVzcGFjZSBWZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlVuaXguVGVzdHMKIHsK
IAlbVGVzdEZpeHR1cmVdCi0JcHVibGljIGNsYXNzIFVuaXhTdm5VdGlsc1Rlc3QgOiBNb25vRGV2
ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzLkJhc2VTdm5VdGlsc1Rlc3QKKwlz
ZWFsZWQgY2xhc3MgVW5peFN2blV0aWxzVGVzdCA6IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s
LlN1YnZlcnNpb24uVGVzdHMuQmFzZVN2blV0aWxzVGVzdAogCXsKIAkJU3VidmVyc2lvbkJhY2tl
bmQgU3ZuQ2xpZW50IHsKIAkJCWdldCB7IHJldHVybiBSZXBvLlN2bjsgfQ0KDQpNb2RpZmllZDog
bWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVw
b3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzYsMjEgKzM2LDIxIEBACiBuYW1lc3Bh
Y2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cw0KIHsNCiAJW1Rl
c3RGaXh0dXJlXQ0KLQlwdWJsaWMgY2xhc3MgU2hhcnBTdm5VdGlsc1Rlc3QgOiBCYXNlU3ZuVXRp
bHNUZXN0DQorCXNlYWxlZCBjbGFzcyBTaGFycFN2blV0aWxzVGVzdCA6IEJhc2VTdm5VdGlsc1Rl
c3QNCiAJew0KIAkJW1NldFVwXQ0KIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkNCiAJ
CXsNCiAJCQlSb290VXJsID0gbmV3IEZpbGVQYXRoIChGaWxlU2VydmljZS5DcmVhdGVUZW1wRGly
ZWN0b3J5ICgpKTsNCiAJCQlSZXBvTG9jYXRpb24gPSAic3ZuOi8vbG9jYWxob3N0OjM2OTAvcmVw
byI7DQotCQkJc3ZuU2VydmUgPSBuZXcgUHJvY2VzcyAoKTsNCisJCQlTdm5TZXJ2ZSA9IG5ldyBQ
cm9jZXNzICgpOw0KIAkJCWJhc2UuU2V0dXAgKCk7DQogCQl9DQogDQogCQlbVGVhckRvd25dDQog
CQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBUZWFyRG93biAoKQ0KIAkJew0KLQkJCXN2blNlcnZlLktp
bGwgKCk7DQorCQkJU3ZuU2VydmUuS2lsbCAoKTsNCiANCiAJCQliYXNlLlRlYXJEb3duICgpOw0K
IAkJfQ0NCg0KICAgQ29tbWl0OiA4MDllNTE3YmQ0ODE4Zjc3NjMwNThmYmY1MTU3MmQ5YjNlMTZj
MGRjDQogICBBdXRob3I6IFRoZXJ6b2sgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0K
ICAgICBEYXRlOiAyMDEzLTExLTE4IDAxOjE3OjAwIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dp
dGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvODA5ZTUxN2JkNDgxOGY3NzYzMDU4ZmJm
NTE1NzJkOWIzZTE2YzBkYw0KDQpbQ29kZSBJc3N1ZXMgUGFkXSBGaXhlZCBOUkUgb24gdXNpbmcg
Y29tYm9ib3ggYmVmb3JlIHJ1bm5pbmcgYW5hbHlzaXMNCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h
aW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9Nb25vRGV2ZWxvcC5Db2RlSXNz
dWVzL0NvZGVJc3N1ZVBhZC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVs
b3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuQ29kZUlzc3Vlcy9Db2RlSXNzdWVQYWQuY3MNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCkBAIC0yOTksNiArMjk5LDkgQEAgdm9pZCBTZXROb2RlIChUcmVlTmF2aWdhdG9y
IG5hdmlnYXRvciwgSUlzc3VlVHJlZU5vZGUgbm9kZSkKIAogCQl2b2lkIENsZWFyU2libGluZ05v
ZGVzIChUcmVlTmF2aWdhdG9yIG5hdmlnYXRvcikKIAkJeworCQkJaWYgKG5hdmlnYXRvciA9PSBu
dWxsKQorCQkJCXJldHVybjsKKwogCQkJZG8gewogCQkJCXZhciBub2RlID0gbmF2aWdhdG9yLkdl
dFZhbHVlIChub2RlRmllbGQpOwogCQkJCWlmIChub2RlICE9IG51bGwpIHsNCg0KICAgQ29tbWl0
OiA3NTgxNjQ1MWMzNzdkYjI0MDNhMDVmY2NiN2NjOTg4ZTM2ZjgwMzEzDQogICBBdXRob3I6IFRo
ZXJ6b2sgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTEx
LTE4IDAxOjI5OjExIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25v
ZGV2ZWxvcC9jb21taXQvNzU4MTY0NTFjMzc3ZGIyNDAzYTA1ZmNjYjdjYzk4OGUzNmY4MDMxMw0K
DQpGaXh1cCB0byBwcmV2aW91cyByZXZpc2lvbi4KCkRhbW4geW91IHNhdmUhDQoNCkNoYW5nZWQg
cGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0Rl
dmVsb3AuQ29kZUlzc3Vlcy9Db2RlSXNzdWVQYWQuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRk
aW5zL01vbm9EZXZlbG9wLlJlZmFjdG9yaW5nL01vbm9EZXZlbG9wLkNvZGVJc3N1ZXMvQ29kZUlz
c3VlUGFkLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgU2V0Tm9kZSAo
VHJlZU5hdmlnYXRvciBuYXZpZ2F0b3IsIElJc3N1ZVRyZWVOb2RlIG5vZGUpCiAKIAkJdm9pZCBD
bGVhclNpYmxpbmdOb2RlcyAoVHJlZU5hdmlnYXRvciBuYXZpZ2F0b3IpCiAJCXsKLQkJCWlmIChu
YXZpZ2F0b3IgPT0gbnVsbCkKKwkJCWlmIChuYXZpZ2F0b3IuQ3VycmVudFBvc2l0aW9uID09IG51
bGwpCiAJCQkJcmV0dXJuOwogCiAJCQlkbyB7DQoNCiAgIENvbW1pdDogYjMzNTE4MWNhMTU5ZGJi
NzgwOThjYzYzNGQ2ZjhmNGE1NDZiMjNlNA0KICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVl
Z2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMtMTEtMTggMDc6NTg6
MDQgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2Nv
bW1pdC9iMzM1MTgxY2ExNTlkYmI3ODA5OGNjNjM0ZDZmOGY0YTU0NmIyM2U0DQoNCkltcGxlbWVu
dGVkICdCdWcgMTYyMjggLSBOYW1lc3BhY2VzIGluIHRvb2x0aXBzJy4NCg0KQ2hhbmdlZCBwYXRo
czoKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5D
b21wbGV0aW9uL01lbWJlckNvbXBsZXRpb25EYXRhLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvQ1No
YXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAuVG9vbHRpcHMvTGFuZ3VhZ2VJdGVtVG9vbHRp
cFByb3ZpZGVyLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxv
cC5DU2hhcnAvU2lnbmF0dXJlTWFya3VwQ3JlYXRvci5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9h
ZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAuQ29tcGxldGlvbi9NZW1iZXJD
b21wbGV0aW9uRGF0YS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY4MiwzMCArNjgyLDcgQEAgcHVibGlj
IHN0YXRpYyBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uIChJQ29t
cGlsYXRpb24gY29tcGlsYXQKIAkJCQl9CiAJCQl9CiAJCQlpZiAoY3JlYXRlRm9vdGVyKSB7Ci0J
CQkJaWYgKGVudGl0eSBpcyBJVHlwZSkgewotCQkJCQl2YXIgdHlwZSA9IGVudGl0eSBhcyBJVHlw
ZTsKLQkJCQkJdmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlvbiAoKTsKLQkJCQkJaWYgKGRlZiAh
PSBudWxsKSB7Ci0JCQkJCQlpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5IChkZWYuUGFyZW50QXNz
ZW1ibHkuQXNzZW1ibHlOYW1lKSkgewotCQkJCQkJCXZhciBwcm9qZWN0ID0gZGVmLkdldFNvdXJj
ZVByb2plY3QgKCk7Ci0JCQkJCQkJaWYgKHByb2plY3QgIT0gbnVsbCkgewotCQkJCQkJCQl2YXIg
cmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGggKHByb2plY3QuQmFz
ZURpcmVjdG9yeSwgZGVmLlJlZ2lvbi5GaWxlTmFtZSk7Ci0JCQkJCQkJCXRvb2x0aXBJbmZvLkZv
b3Rlck1hcmt1cCA9ICI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIlByb2pl
Y3Q6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5
LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKwotCQkJ
CQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRmlsZTpcdFx0ezB9
IChsaW5lIHsxfSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVsUGF0aCksIGRlZi5S
ZWdpb24uQmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJ
fQotCi0JCQkJfSBlbHNlIGlmIChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24gIT0gbnVs
bCkgewotCQkJCQl2YXIgcHJvamVjdCA9IGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlvbi5H
ZXRTb3VyY2VQcm9qZWN0ICgpOwotCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7Ci0JCQkJCQl2
YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGggKHByb2plY3Qu
QmFzZURpcmVjdG9yeSwgZW50aXR5LlJlZ2lvbi5GaWxlTmFtZSk7Ci0JCQkJCQl0b29sdGlwSW5m
by5Gb290ZXJNYXJrdXAgPSAKLQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRT
dHJpbmcgKCJQcm9qZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKHByb2pl
Y3QuTmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKwotCQkJCQkJCSI8
c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb206XHR7MH0iLCBBbWJpZW5j
ZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGUuRnVsbE5hbWUpKSArICI8
L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKLQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0
ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9KSIsIEFtYmllbmNl
U2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZW50aXR5LlJlZ2lvbi5CZWdpbi5MaW5lKSAr
ICI8L3NtYWxsPiI7Ci0JCQkJCX0KLQkJCQl9CisJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3Vw
ID0gc2lnLkNyZWF0ZUZvb3RlciAoZW50aXR5KTsKIAkJCX0KIAkJCXJldHVybiB0b29sdGlwSW5m
bzsKIAkJfQpAQCAtNzMyLDggKzcwOSw4IEBAIHB1YmxpYyBzdGF0aWMgVG9vbHRpcEluZm9ybWF0
aW9uIENyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoSUNvbXBpbGF0aW9uIGNvbXBpbGF0CiAKIAkJ
CXZhciBkZWYgPSB0eXBlLkdldERlZmluaXRpb24gKCk7CiAJCQlpZiAoZGVmICE9IG51bGwpIHsK
LQkJCQlpZiAoY3JlYXRlRm9vdGVyICYmICFzdHJpbmcuSXNOdWxsT3JFbXB0eSAoZGVmLlBhcmVu
dEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpCi0JCQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1hcmt1cCA9
ICI8c21hbGw+IEZyb20gIiArIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChkZWYuUGFyZW50
QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSArICI8L3NtYWxsPiI7CisJCQkJaWYgKGNyZWF0ZUZvb3Rl
cikKKwkJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3VwID0gc2lnLkNyZWF0ZUZvb3RlciAoZGVm
KTsKIAkJCQl0b29sdGlwSW5mby5TdW1tYXJ5TWFya3VwID0gQW1iaWVuY2VTZXJ2aWNlLkdldFN1
bW1hcnlNYXJrdXAgKGRlZikgPz8gIiI7CiAJCQl9CiAJCQlyZXR1cm4gdG9vbHRpcEluZm87DQoN
Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hh
cnAuVG9vbHRpcHMvTGFuZ3VhZ2VJdGVtVG9vbHRpcFByb3ZpZGVyLmNzDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA
QCAtMTQxLDcgKzE0MSw3IEBAIHByb3RlY3RlZCBvdmVycmlkZSBHdGsuV2luZG93IENyZWF0ZVRv
b2x0aXBXaW5kb3cgKE1vbm8uVGV4dEVkaXRvci5UZXh0RWRpdG9yIGVkCiAKIAkJCXZhciB0aXRl
bSA9IChUb29sVGlwRGF0YSlpdGVtLkl0ZW07CiAKLQkJCXZhciB0b29sdGlwSW5mb3JtYXRpb24g
PSBDcmVhdGVUb29sdGlwICh0aXRlbSwgb2Zmc2V0LCBudWxsKTsKKwkJCXZhciB0b29sdGlwSW5m
b3JtYXRpb24gPSBDcmVhdGVUb29sdGlwICh0aXRlbSwgb2Zmc2V0LCBudWxsLCBtb2RpZmllclN0
YXRlKTsKIAkJCWlmICh0b29sdGlwSW5mb3JtYXRpb24gPT0gbnVsbCB8fCBzdHJpbmcuSXNOdWxs
T3JFbXB0eSAodG9vbHRpcEluZm9ybWF0aW9uLlNpZ25hdHVyZU1hcmt1cCkpCiAJCQkJcmV0dXJu
IG51bGw7CiAKQEAgLTE3OSwxMiArMTc5LDEzIEBAIHB1YmxpYyBvdmVycmlkZSBHdGsuV2luZG93
IFNob3dUb29sdGlwV2luZG93IChUZXh0RWRpdG9yIGVkaXRvciwgaW50IG9mZnNldCwgR2RrCiAJ
CQlyZXR1cm4gdGlwV2luZG93OwogCQl9CiAKLQkJVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0ZVRv
b2x0aXAgKFRvb2xUaXBEYXRhIGRhdGEsIGludCBvZmZzZXQsIEFtYmllbmNlIGFtYmllbmNlKQor
CQlUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50
IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuY2UsIEdkay5Nb2RpZmllclR5cGUgbW9kaWZpZXJTdGF0
ZSkKIAkJewogCQkJUmVzb2x2ZVJlc3VsdCByZXN1bHQgPSBkYXRhLlJlc3VsdDsKIAkJCXZhciBk
b2MgPSBJZGVBcHAuV29ya2JlbmNoLkFjdGl2ZURvY3VtZW50OwogCQkJaWYgKGRvYyA9PSBudWxs
KQogCQkJCXJldHVybiBudWxsOworCQkJYm9vbCBjcmVhdGVGb290ZXIgPSAobW9kaWZpZXJTdGF0
ZSAmIEdkay5Nb2RpZmllclR5cGUuTW9kMU1hc2spICE9IDA7CiAJCQl0cnkgewogCiAJCQkJaWYg
KHJlc3VsdCBpcyBBbGlhc05hbWVzcGFjZVJlc29sdmVSZXN1bHQpIHsKQEAgLTI3NiwxMiArMjc3
LDEzIEBAIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29sVGlwRGF0YSBkYXRh
LCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5jCiAJCQkJCXZhciBtZXRob2QgPSBhbGxNZXRo
b2RzLkZpcnN0T3JEZWZhdWx0ICgpOwogCQkJCQlpZiAobWV0aG9kICE9IG51bGwpIHsKIAkJCQkJ
CXJldHVybiBNZW1iZXJDb21wbGV0aW9uRGF0YS5DcmVhdGVUb29sdGlwSW5mb3JtYXRpb24gKAot
CQkJCQkJZG9jLkNvbXBpbGF0aW9uLAotCQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZp
bGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUsCi0JCQkJCQlkb2MuRWRpdG9yLAotCQkJCQkJZG9j
LkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCi0JCQkJCQltZXRob2QsIAotCQkJCQkJZmFsc2UpOwor
CQkJCQkJCWRvYy5Db21waWxhdGlvbiwKKwkJCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2Vk
RmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwKKwkJCQkJCQlkb2MuRWRpdG9yLAorCQkJCQkJ
CWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgpLAorCQkJCQkJCW1ldGhvZCwKKwkJCQkJCQlmYWxz
ZSwKKwkJCQkJCQljcmVhdGVGb290ZXIpOwogCQkJCQl9CiAJCQkJfSBlbHNlIGlmIChyZXN1bHQg
aXMgQ1NoYXJwSW52b2NhdGlvblJlc29sdmVSZXN1bHQpIHsKIAkJCQkJdmFyIGludm9jYXRpb25S
ZXN1bHQgPSAoQ1NoYXJwSW52b2NhdGlvblJlc29sdmVSZXN1bHQpcmVzdWx0OwpAQCAtMjkyLDE2
ICsyOTQsMTggQEAgVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXAgKFRvb2xUaXBEYXRh
IGRhdGEsIGludCBvZmZzZXQsIEFtYmllbmNlIGFtYmllbmMKIAkJCQkJCWRvYy5FZGl0b3IsCiAJ
CQkJCQlkb2MuR2V0Rm9ybWF0dGluZ1BvbGljeSAoKSwKIAkJCQkJCW1lbWJlciwgCi0JCQkJCQlm
YWxzZSk7CisJCQkJCQlmYWxzZSwKKwkJCQkJCWNyZWF0ZUZvb3Rlcik7CiAJCQkJfSBlbHNlIGlm
IChyZXN1bHQgaXMgTWVtYmVyUmVzb2x2ZVJlc3VsdCkgewogCQkJCQl2YXIgbWVtYmVyID0gKChN
ZW1iZXJSZXNvbHZlUmVzdWx0KXJlc3VsdCkuTWVtYmVyOwogCQkJCQlyZXR1cm4gTWVtYmVyQ29t
cGxldGlvbkRhdGEuQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uICgKLQkJCQkJZG9jLkNvbXBpbGF0
aW9uLAotCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29s
dmVkRmlsZSwKLQkJCQkJZG9jLkVkaXRvciwKLQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kg
KCksCi0JCQkJCW1lbWJlciwgCi0JCQkJCWZhbHNlKTsKKwkJCQkJCWRvYy5Db21waWxhdGlvbiwK
KwkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRG
aWxlLAorCQkJCQkJZG9jLkVkaXRvciwKKwkJCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgp
LAorCQkJCQkJbWVtYmVyLCAKKwkJCQkJCWZhbHNlLAorCQkJCQkJY3JlYXRlRm9vdGVyKTsKIAkJ
CQl9IGVsc2UgaWYgKHJlc3VsdCBpcyBOYW1lc3BhY2VSZXNvbHZlUmVzdWx0KSB7CiAJCQkJCXZh
ciB0b29sdGlwSW5mbyA9IG5ldyBUb29sdGlwSW5mb3JtYXRpb24gKCk7CiAJCQkJCXZhciByZXNv
bHZlciA9IChkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29sdmVk
RmlsZSkuR2V0UmVzb2x2ZXIgKGRvYy5Db21waWxhdGlvbiwgZG9jLkVkaXRvci5DYXJldC5Mb2Nh
dGlvbik7CkBAIC0zMjksMTIgKzMzMywxMyBAQCBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9v
bHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuYwogCQkJ
CQlyZXR1cm4gdG9vbHRpcEluZm87CiAJCQkJfSBlbHNlIHsKIAkJCQkJcmV0dXJuIE1lbWJlckNv
bXBsZXRpb25EYXRhLkNyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoCi0JCQkJCWRvYy5Db21waWxh
dGlvbiwKLQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNv
bHZlZEZpbGUsCi0JCQkJCWRvYy5FZGl0b3IsCi0JCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5
ICgpLAotCQkJCQlyZXN1bHQuVHlwZSwgCi0JCQkJCWZhbHNlKTsKKwkJCQkJCWRvYy5Db21waWxh
dGlvbiwKKwkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVz
b2x2ZWRGaWxlLAorCQkJCQkJZG9jLkVkaXRvciwKKwkJCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9s
aWN5ICgpLAorCQkJCQkJcmVzdWx0LlR5cGUsIAorCQkJCQkJZmFsc2UsCisJCQkJCQljcmVhdGVG
b290ZXIpOwogCQkJCX0KIAkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAJCQkJTG9nZ2luZ1Nl
cnZpY2UuTG9nRXJyb3IgKCJFcnJvciB3aGlsZSBjcmVhdGluZyB0b29sdGlwLiIsIGUpOw0KDQpN
b2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJw
L1NpZ25hdHVyZU1hcmt1cENyZWF0b3IuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNjExLDUgKzE2MTEs
NDYgQEAgc3RyaW5nIEhpZ2hsaWdodFNlbWFudGljYWxseSAoc3RyaW5nIHN0ciwgQ2h1bmtTdHls
ZSBzdHlsZSkKIAkJCQlyZXR1cm4gc3RyOwogCQkJcmV0dXJuIEhpZ2hsaWdodCAoc3RyLCBzdHls
ZSk7CiAJCX0KKworCQlwdWJsaWMgc3RyaW5nIENyZWF0ZUZvb3RlciAoSUVudGl0eSBlbnRpdHkp
CisJCXsKKwkJCXZhciB0eXBlID0gZW50aXR5IGFzIElUeXBlOworCQkJaWYgKHR5cGUgIT0gbnVs
bCkgeworCQkJCXZhciBkZWYgPSB0eXBlLkdldERlZmluaXRpb24gKCk7CisJCQkJaWYgKGRlZiAh
PSBudWxsKSB7CisJCQkJCWlmICghZGVmLlJlZ2lvbi5Jc0VtcHR5KSB7CisJCQkJCQl2YXIgcHJv
amVjdCA9IGRlZi5HZXRTb3VyY2VQcm9qZWN0ICgpOworCQkJCQkJaWYgKHByb2plY3QgIT0gbnVs
bCkgeworCQkJCQkJCXZhciByZWxQYXRoID0gRmlsZVNlcnZpY2UuQWJzb2x1dGVUb1JlbGF0aXZl
UGF0aCAocHJvamVjdC5CYXNlRGlyZWN0b3J5LCBkZWYuUmVnaW9uLkZpbGVOYW1lKTsKKwkJCQkJ
CQlyZXR1cm4KKwkJCQkJCQkJKHN0cmluZy5Jc051bGxPckVtcHR5IChkZWYuTmFtZXNwYWNlKSA/
ICIiIDogIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiTmFtZXNwYWNlOlx0
ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRlZi5OYW1lc3BhY2UpKSArICI8L3Nt
YWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lKSArCisJCQkJCQkJCSI8c21hbGw+IiArIEdldHRl
eHRDYXRhbG9nLkdldFN0cmluZyAoIlByb2plY3Q6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNj
YXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IiAr
IEVudmlyb25tZW50Lk5ld0xpbmUgKworCQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxv
Zy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9KSIsIEFtYmllbmNlU2VydmljZS5F
c2NhcGVUZXh0IChyZWxQYXRoKSwgZGVmLlJlZ2lvbi5CZWdpbi5MaW5lKSArICI8L3NtYWxsPiI7
CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJcmV0dXJuCisJCQkJCQkoc3RyaW5nLklzTnVsbE9yRW1w
dHkgKGRlZi5OYW1lc3BhY2UpID8gIiIgOiAiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRT
dHJpbmcgKCJOYW1lc3BhY2U6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVm
Lk5hbWVzcGFjZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUpICsKKwkJCQkJ
CSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkFzc2VtYmx5Olx0ezB9Iiwg
QW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRlZi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5h
bWUpKSArICI8L3NtYWxsPiI7CisJCQkJfQorCQkJCXJldHVybiBudWxsOworCQkJfSAKKworCQkJ
aWYgKGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlvbiAhPSBudWxsKSB7CisJCQkJaWYgKCFl
bnRpdHkuUmVnaW9uLklzRW1wdHkpIHsKKwkJCQkJdmFyIHByb2plY3QgPSBlbnRpdHkuRGVjbGFy
aW5nVHlwZURlZmluaXRpb24uR2V0U291cmNlUHJvamVjdCAoKTsKKwkJCQkJaWYgKHByb2plY3Qg
IT0gbnVsbCkgeworCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0ZVRvUmVs
YXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGVudGl0eS5SZWdpb24uRmlsZU5hbWUp
OworCQkJCQkJcmV0dXJuCisJCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3Ry
aW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChwcm9qZWN0
Lk5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJCQkiPHNt
YWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGcm9tIHR5cGU6XHR7MH0iLCBBbWJp
ZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uLkZ1
bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSArCisJCQkJCQkJIjxz
bWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRmlsZTpcdFx0ezB9IChsaW5lIHsx
fSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVsUGF0aCksIGVudGl0eS5SZWdpb24u
QmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOworCQkJCQl9CisJCQkJfQorCQkJCXJldHVybgorCQkJ
CQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGcm9tIHR5cGU6XHR7MH0i
LCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0
aW9uLkZ1bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSArCisJCQkJ
CSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkFzc2VtYmx5Olx0ezB9Iiwg
QW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlv
bi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSArICI8L3NtYWxsPiI7CisJCQl9CisJCQly
ZXR1cm4gbnVsbDsKKwkJfQogCX0KIH0NCg0KICAgQ29tbWl0OiAzZmQ5NWZhNTcxM2UzYWM5ODlm
MmNmOWI1ZTAwMTk4YWI0MDYzY2FmDQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJA
eGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAwOTo0NTo1MyBH
TVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0
LzNmZDk1ZmE1NzEzZTNhYzk4OWYyY2Y5YjVlMDAxOThhYjQwNjNjYWYNCg0KQnVtcCBucmVmYWN0
b3J5Lg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5Cg0KTW9k
aWZpZWQ6IG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQ0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEgKzEgQEAK
LVN1YnByb2plY3QgY29tbWl0IDQ2N2RkNzQ4MDE5ZWFmMDQwNDg1ZDdiZmIxNjNlYTAzODNkMjhh
MzgKK1N1YnByb2plY3QgY29tbWl0IGVhNzViYWMzZjM3NDA2MWJhM2MyOGFlMDBmN2I5NjUxODlm
OTNmMzENCg0KICAgQ29tbWl0OiAzYjk2NTk2ZjRiYmI4Njk5M2UwNDBiYWZhMzBlYTgxYTcyZTI3
Zjk2DQogICBBdXRob3I6IFVuZ3VyZWFudSBNYXJpdXMgPHRlcm9tYXJpb0B5YWhvby5jb20+IChU
aGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE4IDEyOjM2OjI2IEdNVA0KICAgICAgVVJMOiBo
dHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvM2I5NjU5NmY0YmJiODY5
OTNlMDQwYmFmYTMwZWE4MWE3MmUyN2Y5Ng0KDQpNZXJnZSBwdWxsIHJlcXVlc3QgIzQzNiBmcm9t
IG1vbm8vdmNzVGVzdHMKCltWZXJzaW9uQ29udHJvbF0gSW1wbGVtZW50ZWQgYmFja2VuZCBzcGVj
aWZpYyB0ZXN0cw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D
b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3Np
dG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVs
b3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1h
aW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5H
aXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L0dpdFJlcG9zaXRvcnkuY3MKICBNIG1h
aW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5T
dWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2Fk
ZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9u
LlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250
cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzCg0KTW9kaWZpZWQ6
IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv
bC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTMy
LDE0ICszMiwxNCBAQAogdXNpbmcgTkdpdC5BcGk7DQogdXNpbmcgTlVuaXQuRnJhbWV3b3JrOw0K
IHVzaW5nIFN5c3RlbS5JTzsNCi11c2luZyBTeXN0ZW07DQogdXNpbmcgTkdpdC5TdG9yYWdlLkZp
bGU7DQogdXNpbmcgTkdpdC5SZXZ3YWxrOw0KK3VzaW5nIFN5c3RlbS5MaW5xOw0KIA0KIG5hbWVz
cGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMNCiB7DQogCVtUZXN0Rml4
dHVyZV0NCi0JcHVibGljIGNsYXNzIEJhc2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVz
dA0KKwlzZWFsZWQgY2xhc3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQog
CXsNCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpAQCAtMTYx
LDYgKzE2MSwxODQgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFs
cyAoQW5ub3RhdGlvbiBbXSBhbm5vdGF0aW9ucykKIAkJCUFzc2VydC5Jc1RydWUgKGFubm90YXRp
b25zIFsyXS5IYXNEYXRlKTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVz
dEdpdFN0YXNoICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsN
CisJCQlBZGRGaWxlICgiZmlsZTIiLCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZp
bGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMg
KCkuQ3JlYXRlIChudWxsKTsNCisJCQlBc3NlcnQuSXNUcnVlICghRmlsZS5FeGlzdHMgKFJvb3RD
aGVja291dCArICJmaWxlMSIpLCAiU3Rhc2ggY3JlYXRpb24gZmFpbHVyZSIpOw0KKwkJCXJlcG8y
LkdldFN0YXNoZXMgKCkuUG9wIChudWxsKTsNCisNCisJCQlWZXJzaW9uSW5mbyB2aSA9IHJlcG8y
LkdldFZlcnNpb25JbmZvIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiLCBWZXJzaW9uSW5mb1F1ZXJ5
RmxhZ3MuSWdub3JlQ2FjaGUpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5T
Y2hlZHVsZWRBZGQsIHZpLlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCAiU3Rh
c2ggcG9wIGZhaWx1cmUiKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVz
dEdpdEJyYW5jaENyZWF0aW9uICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRv
cnkpUmVwbzsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0K
KwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisNCisJCQlyZXBvMi5T
d2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51
bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgi
YnJhbmNoMSIsIHJlcG8yLkdldEN1cnJlbnRCcmFuY2ggKCkpOw0KKwkJCUFzc2VydC5Jc1RydWUg
KEZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwgIkJyYW5jaCBub3QgaW5oZXJp
dGluZyBmcm9tIGN1cnJlbnQuIik7DQorDQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQiLCB0
cnVlLCBmYWxzZSk7DQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoMiIsIG51bGwpOw0K
KwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01v
bml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDIiKTsNCisJCQlBc3NlcnQu
SXNUcnVlICghRmlsZS5FeGlzdHMgKFJvb3RDaGVja291dCArICJmaWxlMiIpLCAiVW5jb21taXR0
ZWQgY2hhbmdlcyB3ZXJlIG5vdCBzdGFzaGVkIik7DQorCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5Q
b3AgKG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yICgpKTsNCisNCisJCQlBc3NlcnQuSXNUcnVlIChG
aWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUyIiksICJVbmNvbW1pdHRlZCBjaGFuZ2Vz
IHdlcmUgbm90IHN0YXNoZWQgY29ycmVjdGx5Iik7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFu
Y2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NN
b25pdG9yICgpLCAibWFzdGVyIik7DQorCQkJcmVwbzIuUmVtb3ZlQnJhbmNoICgiYnJhbmNoMSIp
Ow0KKwkJCUFzc2VydC5Jc0ZhbHNlIChyZXBvMi5HZXRCcmFuY2hlcyAoKS5BbnkgKGIgPT4gYi5O
YW1lID09ICJicmFuY2gxIiksICJGYWlsZWQgdG8gZGVsZXRlIGJyYW5jaCIpOw0KKw0KKwkJCXJl
cG8yLlJlbmFtZUJyYW5jaCAoImJyYW5jaDIiLCAiYnJhbmNoMyIpOw0KKwkJCUFzc2VydC5Jc1Ry
dWUgKHJlcG8yLkdldEJyYW5jaGVzICgpLkFueSAoYiA9PiBiLk5hbWUgPT0gImJyYW5jaDMiKSAm
JiByZXBvMi5HZXRCcmFuY2hlcyAoKS5BbGwgKGIgPT4gYi5OYW1lICE9ICJicmFuY2gyIiksICJG
YWlsZWQgdG8gcmVuYW1lIGJyYW5jaCIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMg
dm9pZCBUZXN0R2l0U3luY0JyYW5jaGVzICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJl
cG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUp
Ow0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsNCisNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJi
cmFuY2gzIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxv
cC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNo
MyIpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJhc2RmIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVw
bzIuUHVzaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9n
cmVzc01vbml0b3IgKCksICJvcmlnaW4iLCAiYnJhbmNoMyIpOw0KKw0KKwkJCXJlcG8yLlN3aXRj
aFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFBy
b2dyZXNzTW9uaXRvciAoKSwgIm1hc3RlciIpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAo
ImJyYW5jaDQiLCAib3JpZ2luL2JyYW5jaDMiKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAo
bmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0
b3IgKCksICJicmFuY2g0Iik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RD
aGVja291dCArICJmaWxlMiIpLCAiVHJhY2tpbmcgcmVtb3RlIGlzIG5vdCBncmFiYmluZyBjb3Jy
ZWN0IGNvbW1pdHMiKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFB1
c2hDaGFuZ2VzZXQgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBv
Ow0KKwkJCUFkZEZpbGUgKCJmaWxlIiwgIm1laCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21t
aXQgKHJlcG8yKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUp
Ow0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0MiIsIHRydWUsIHRydWUpOw0KKw0KKwkJCUNo
YW5nZVNldCBkaWZmID0gcmVwbzIuR2V0UHVzaENoYW5nZVNldCAoIm9yaWdpbiIsICJtYXN0ZXIi
KTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDIsIGRpZmYuSXRlbXMuQ291bnQgKCkpOw0KKw0KKwkJ
CUNoYW5nZVNldEl0ZW0gaXRlbSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJvb3RDaGVja291dCArICJm
aWxlMSIpOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVh
bCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVzICYgVmVyc2lvblN0YXR1
cy5TY2hlZHVsZWRBZGQpOw0KKw0KKwkJCWl0ZW0gPSBkaWZmLkdldEZpbGVJdGVtIChSb290Q2hl
Y2tvdXQgKyAiZmlsZTEiKTsNCisJCQlBc3NlcnQuSXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3Nl
cnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCBpdGVtLlN0YXR1cyAmIFZl
cnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJW0lnbm9y
ZSAoIkdldFB1c2hEaWZmIGNvbnRlbnQgaXMgYWx3YXlzIGVtcHR5IildDQorCQlwdWJsaWMgdm9p
ZCBUZXN0UHVzaERpZmYgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlS
ZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlIiwgIm1laCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RD
b21taXQgKHJlcG8yKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRy
dWUpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0MiIsIHRydWUsIHRydWUpOw0KKw0KKwkJ
CURpZmZJbmZvW10gZGlmZiA9IHJlcG8yLkdldFB1c2hEaWZmICgib3JpZ2luIiwgIm1hc3RlciIp
Ow0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMiwgZGlmZi5MZW5ndGgpOw0KKw0KKwkJCURpZmZJbmZv
IGl0ZW0gPSBkaWZmIFswXTsNCisJCQlBc3NlcnQuSXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3Nl
cnQuQXJlRXF1YWwgKCJmaWxlMSIsIGl0ZW0uRmlsZU5hbWUuRmlsZU5hbWUpOw0KKwkJCS8vQXNz
ZXJ0LkFyZUVxdWFsICgidGV4dCIsIGl0ZW0uQ29udGVudCk7DQorDQorCQkJaXRlbSA9IGRpZmYg
WzFdOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAo
ImZpbGUyIiwgaXRlbS5GaWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJLy9Bc3NlcnQuQXJlRXF1YWwg
KCJ0ZXh0MiIsIGl0ZW0uQ29udGVudCk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2
b2lkIFRlc3RHaXRVcmwgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlS
ZXBvOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJnaXRAZ2l0aHViLmNv
bTptb25vL21vbm9kZXZlbG9wIikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs
aWQgKCJnaXQ6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFz
c2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJzc2g6Ly91c2VyQGhvc3QuY29tOjgwL21v
bm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs
aWQgKCJodHRwOi8vZ2l0aHViLmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlB
c3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cHM6Ly9naXRodWIuY29tOjgwL21v
bm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs
aWQgKCJmdHA6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFz
c2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmdHBzOi8vZ2l0aHViLmNvbTo4MC9tb25v
L21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk
ICgiZmlsZTovLy9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChy
ZXBvMi5Jc1VybFZhbGlkICgicnN5bmM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVscG8uZ2l0
IikpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0UmVtb3RlICgpDQor
CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisNCisJCQlBc3NlcnQu
QXJlRXF1YWwgKCJvcmlnaW4iLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpKTsNCisNCisJCQlB
ZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21taXQgKHJl
cG8yKTsNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2gxIiwgbnVsbCk7DQorCQkJcmVw
bzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmlu
Zy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoMSIpOw0KKwkJCUFkZEZpbGUgKCJmaWxl
MiIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKwkJCUFz
c2VydC5BcmVFcXVhbCAoMiwgcmVwbzIuR2V0QnJhbmNoZXMgKCkuQ291bnQgKCkpOw0KKwkJCUFz
c2VydC5BcmVFcXVhbCAoMSwgcmVwbzIuR2V0UmVtb3RlcyAoKS5Db3VudCAoKSk7DQorDQorCQkJ
cmVwbzIuUmVuYW1lUmVtb3RlICgib3JpZ2luIiwgIm90aGVyIik7DQorCQkJQXNzZXJ0LkFyZUVx
dWFsICgib3RoZXIiLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpKTsNCisNCisJCQlyZXBvMi5S
ZW1vdmVSZW1vdGUgKCJvdGhlciIpOw0KKwkJCUFzc2VydC5Jc0ZhbHNlIChyZXBvMi5HZXRSZW1v
dGVzICgpLkFueSAoKSk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RJ
c01lcmdlZCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQor
CQkJQWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlBc3NlcnQu
SXNUcnVlIChyZXBvMi5Jc0JyYW5jaE1lcmdlZCAoIm1hc3RlciIpKTsNCisNCisJCQlyZXBvMi5D
cmVhdGVCcmFuY2ggKCJicmFuY2gxIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2gg
KG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25p
dG9yICgpLCAiYnJhbmNoMSIpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0IiwgdHJ1ZSwg
dHJ1ZSk7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3Jl
LlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7DQor
CQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgiYnJhbmNoMSIpKTsNCisJ
CQlyZXBvMi5NZXJnZSAoImJyYW5jaDEiLCBHaXRVcGRhdGVPcHRpb25zLk5vcm1hbFVwZGF0ZSwg
bmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0
b3IgKCkpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgiYnJhbmNo
MSIpKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFRhZ3MgKCkNCisJ
CXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJm
aWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIuQWRkVGFnICgidGFnMSIsIEdl
dEhlYWRSZXZpc2lvbiAoKSwgIm15LXRhZyIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMSwgcmVw
bzIuR2V0VGFncyAoKS5Db3VudCAoKSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgidGFnMSIsIHJl
cG8yLkdldFRhZ3MgKCkuRmlyc3QgKCkpOw0KKwkJCXJlcG8yLlJlbW92ZVRhZyAoInRhZzEiKTsN
CisJCQlBc3NlcnQuQXJlRXF1YWwgKDAsIHJlcG8yLkdldFRhZ3MgKCkuQ291bnQgKCkpOw0KKwkJ
fQ0KKw0KKwkJLy8gVE9ETzogVGVzdCByZWJhc2UgYW5kIG1lcmdlIC0gVGhpcyBpcyBicm9rZW4g
b24gV2luZG93cw0KKw0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAo
c3RyaW5nIHBhdGgsIHN0cmluZyB1cmwpDQogCQl7DQogCQkJcmV0dXJuIG5ldyBHaXRSZXBvc2l0
b3J5IChwYXRoLCB1cmwpOw0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u
dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZVJlcG9zaXRvcnlU
ZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBNb25vRGV2
ZWxvcC5WZXJzaW9uQ29udHJvbC5UZXN0cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgYWJz
dHJhY3QgY2xhc3MgQmFzZVJlcG9VdGlsc1Rlc3QKKwlhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0
aWxzVGVzdAogCXsKIAkJLy8gW0dpdF0gU2V0IHVzZXIgYW5kIGVtYWlsLgogCQlwcm90ZWN0ZWQg
Y29uc3Qgc3RyaW5nIEF1dGhvciA9ICJhdXRob3IiOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRk
aW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2
ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0UmVwb3NpdG9yeS5jcw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg
LTE1NTcsNyArMTU1Nyw3IEBAIHB1YmxpYyBDaGFuZ2VTZXQgR2V0UHVzaENoYW5nZVNldCAoc3Ry
aW5nIHJlbW90ZSwgc3RyaW5nIGJyYW5jaCkKIAkJCUNoYW5nZVNldCBjc2V0ID0gQ3JlYXRlQ2hh
bmdlU2V0IChSb290UGF0aCk7CiAJCQlPYmplY3RJZCBjaWQxID0gUm9vdFJlcG9zaXRvcnkuUmVz
b2x2ZSAocmVtb3RlICsgIi8iICsgYnJhbmNoKTsKIAkJCU9iamVjdElkIGNpZDIgPSBSb290UmVw
b3NpdG9yeS5SZXNvbHZlIChSb290UmVwb3NpdG9yeS5HZXRCcmFuY2ggKCkpOwotCQkJUmV2V2Fs
ayBydyA9IG5ldyBSZXZXYWxrIChSb290UmVwb3NpdG9yeSk7CisJCQlSZXZXYWxrCXJ3ID0gbmV3
IFJldldhbGsgKFJvb3RSZXBvc2l0b3J5KTsKIAkJCVJldkNvbW1pdCBjMSA9IHJ3LlBhcnNlQ29t
bWl0IChjaWQxKTsKIAkJCVJldkNvbW1pdCBjMiA9IHJ3LlBhcnNlQ29tbWl0IChjaWQyKTsKIAkJ
CQpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgcHVibGljIERpZmZJbmZvW10gR2V0UHVzaERpZmYgKHN0
cmluZyByZW1vdGUsIHN0cmluZyBicmFuY2gpCiAJCQlSZXZDb21taXQgYzIgPSBydy5QYXJzZUNv
bW1pdCAoY2lkMik7CiAJCQkKIAkJCUxpc3Q8RGlmZkluZm8+IGRpZmZzID0gbmV3IExpc3Q8RGlm
ZkluZm8+ICgpOwotCQkJZm9yZWFjaCAodmFyIGNoYW5nZSBpbiBHaXRVdGlsLkNvbXBhcmVDb21t
aXRzIChSb290UmVwb3NpdG9yeSwgYzEsIGMyKSkgeworCQkJZm9yZWFjaCAodmFyIGNoYW5nZSBp
biBHaXRVdGlsLkNvbXBhcmVDb21taXRzIChSb290UmVwb3NpdG9yeSwgYzIsIGMxKSkgewogCQkJ
CXN0cmluZyBkaWZmOwogCQkJCXN3aXRjaCAoY2hhbmdlLkdldENoYW5nZVR5cGUgKCkpIHsKIAkJ
CQljYXNlIERpZmZFbnRyeS5DaGFuZ2VUeXBlLkRFTEVURToNCg0KTW9kaWZpZWQ6IG1haW4vc3Jj
L2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJz
aW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMyw5
ICszMyw5IEBACiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lv
bi5UZXN0cw0KIHsNCiAJW1Rlc3RGaXh0dXJlXQ0KLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFz
ZVN2blV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQorCWFic3RyYWN0IGNsYXNzIEJhc2VT
dm5VdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVzdA0KIAl7DQotCQlwcm90ZWN0ZWQgUHJvY2Vz
cyBzdm5TZXJ2ZSA9IG51bGw7DQorCQlwcm90ZWN0ZWQgUHJvY2VzcyBTdm5TZXJ2ZSA9IG51bGw7
DQogDQogCQlbU2V0VXBdDQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQ0KQEAgLTU5
LDEzICs1OSwxMyBAQCBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQogCQkJLy8gQ3JlYXRl
IGhvc3QgKFdpbjMyKQ0KIAkJCS8vIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBhZnRlciBkb2luZyB0
aGUgc3ZuQWRtaW4gY3JlYXRpb24uDQogCQkJLy8gQW5kIGJlZm9yZSBjaGVja291dC4NCi0JCQlp
ZiAoc3ZuU2VydmUgIT0gbnVsbCkgew0KKwkJCWlmIChTdm5TZXJ2ZSAhPSBudWxsKSB7DQogCQkJ
CWluZm8gPSBuZXcgUHJvY2Vzc1N0YXJ0SW5mbyAoKTsNCiAJCQkJaW5mby5GaWxlTmFtZSA9ICJz
dm5zZXJ2ZSI7DQogCQkJCWluZm8uQXJndW1lbnRzID0gIi1kciAiICsgUm9vdFVybDsNCiAJCQkJ
aW5mby5XaW5kb3dTdHlsZSA9IFByb2Nlc3NXaW5kb3dTdHlsZS5IaWRkZW47DQotCQkJCXN2blNl
cnZlLlN0YXJ0SW5mbyA9IGluZm87DQotCQkJCXN2blNlcnZlLlN0YXJ0ICgpOw0KKwkJCQlTdm5T
ZXJ2ZS5TdGFydEluZm8gPSBpbmZvOw0KKwkJCQlTdm5TZXJ2ZS5TdGFydCAoKTsNCiANCiAJCQkJ
Ly8gQ3JlYXRlIHVzZXIgdG8gYXV0aC4NCiAJCQkJdXNpbmcgKHZhciBwZXJtID0gRmlsZS4gQ3Jl
YXRlVGV4dCAoUm9vdFVybCArIFBhdGguRGlyZWN0b3J5U2VwYXJhdG9yQ2hhciArICJyZXBvIiAr
DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w
LlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFZlcnNpb25Db250cm9sLlN1YnZl
cnNpb24uVW5peC5UZXN0cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgY2xhc3MgVW5peFN2
blV0aWxzVGVzdCA6IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMu
QmFzZVN2blV0aWxzVGVzdAorCXNlYWxlZCBjbGFzcyBVbml4U3ZuVXRpbHNUZXN0IDogTW9ub0Rl
dmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy5CYXNlU3ZuVXRpbHNUZXN0CiAJ
ewogCQlTdWJ2ZXJzaW9uQmFja2VuZCBTdm5DbGllbnQgewogCQkJZ2V0IHsgcmV0dXJuIFJlcG8u
U3ZuOyB9DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvU3VidmVy
c2lvbi5XaW4zMi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zNiwy
MSArMzYsMjEgQEAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJz
aW9uLlRlc3RzDQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBjbGFzcyBTaGFycFN2blV0
aWxzVGVzdCA6IEJhc2VTdm5VdGlsc1Rlc3QNCisJc2VhbGVkIGNsYXNzIFNoYXJwU3ZuVXRpbHNU
ZXN0IDogQmFzZVN2blV0aWxzVGVzdA0KIAl7DQogCQlbU2V0VXBdDQogCQlwdWJsaWMgb3ZlcnJp
ZGUgdm9pZCBTZXR1cCAoKQ0KIAkJew0KIAkJCVJvb3RVcmwgPSBuZXcgRmlsZVBhdGggKEZpbGVT
ZXJ2aWNlLkNyZWF0ZVRlbXBEaXJlY3RvcnkgKCkpOw0KIAkJCVJlcG9Mb2NhdGlvbiA9ICJzdm46
Ly9sb2NhbGhvc3Q6MzY5MC9yZXBvIjsNCi0JCQlzdm5TZXJ2ZSA9IG5ldyBQcm9jZXNzICgpOw0K
KwkJCVN2blNlcnZlID0gbmV3IFByb2Nlc3MgKCk7DQogCQkJYmFzZS5TZXR1cCAoKTsNCiAJCX0N
CiANCiAJCVtUZWFyRG93bl0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFRlYXJEb3duICgpDQog
CQl7DQotCQkJc3ZuU2VydmUuS2lsbCAoKTsNCisJCQlTdm5TZXJ2ZS5LaWxsICgpOw0KIA0KIAkJ
CWJhc2UuVGVhckRvd24gKCk7DQogCQl9DQ0KDQogICBDb21taXQ6IGZkZTU4YTQ4N2UzOTk1YjQ1
YmM5NzBiODU4ODNkZjczMzBlYjI4MDMNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlh
aG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMTggMTM6MTM6MjIgR01UDQog
ICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9mZGU1
OGE0ODdlMzk5NWI0NWJjOTcwYjg1ODgzZGY3MzMwZWIyODAzDQoNCltHaXRdIEZpeCBhIHRlc3Qu
DQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9u
b0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMu
Y3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w
LlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtMTY3LDkgKzE2Nyw5IEBAIHB1YmxpYyB2b2lkIFRlc3RHaXRTdGFzaCAoKQog
CQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCiAJCQlBZGRGaWxlICgiZmlsZTIi
LCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KIAkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0Iiwg
dHJ1ZSwgZmFsc2UpOw0KLQkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3JlYXRlIChudWxsKTsNCisJ
CQlyZXBvMi5HZXRTdGFzaGVzICgpLkNyZWF0ZSAobmV3IE51bGxQcm9ncmVzc01vbml0b3IgKCkp
Ow0KIAkJCUFzc2VydC5Jc1RydWUgKCFGaWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUx
IiksICJTdGFzaCBjcmVhdGlvbiBmYWlsdXJlIik7DQotCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5Q
b3AgKG51bGwpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuUG9wIChuZXcgTnVsbFByb2dyZXNz
TW9uaXRvciAoKSk7DQogDQogCQkJVmVyc2lvbkluZm8gdmkgPSByZXBvMi5HZXRWZXJzaW9uSW5m
byAoUm9vdENoZWNrb3V0ICsgImZpbGUxIiwgVmVyc2lvbkluZm9RdWVyeUZsYWdzLklnbm9yZUNh
Y2hlKTsNCiAJCQlBc3NlcnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCB2
aS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgIlN0YXNoIHBvcCBmYWlsdXJl
Iik7DQ0KDQogICBDb21taXQ6IGIwMzYzM2MzOTE1NzFmMDQ3MjMzZjg0NDE5OGYxYTk2OGQ2NDAy
MjgNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQog
ICAgIERhdGU6IDIwMTMtMTEtMTggMTQ6NTA6MTAgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0
aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9iMDM2MzNjMzkxNTcxZjA0NzIzM2Y4NDQx
OThmMWE5NjhkNjQwMjI4DQoNCltHaXRdIFVuaXQgdGVzdHMgY2xlYW51cC4NCg0KQ2hhbmdlZCBw
YXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJz
aW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwoNCk1vZGlmaWVk
OiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy
b2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01
MSwxMSArNTEsMTEgQEAgcHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkKIAkJCVJlcG9Mb2Nh
dGlvbiA9ICJmaWxlOi8vLyIgKyBSb290VXJsLkZ1bGxQYXRoICsgInJlcG8uZ2l0IjsNCiANCiAJ
CQkvLyBJbml0aWFsaXplIHRoZSBiYXJlIHJlcG8uDQotCQkJSW5pdENvbW1hbmQgY2kgPSBuZXcg
SW5pdENvbW1hbmQgKCk7DQorCQkJdmFyIGNpID0gbmV3IEluaXRDb21tYW5kICgpOw0KIAkJCWNp
LlNldERpcmVjdG9yeSAobmV3IFNoYXJwZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBhdGggKyAi
cmVwby5naXQiKSk7DQogCQkJY2kuU2V0QmFyZSAodHJ1ZSk7DQogCQkJY2kuQ2FsbCAoKTsNCi0J
CQlGaWxlUmVwb3NpdG9yeSBiYXJlID0gbmV3IEZpbGVSZXBvc2l0b3J5IChuZXcgU2hhcnBlbi5G
aWxlUGF0aCAoUm9vdFVybC5GdWxsUGF0aCArICJyZXBvLmdpdCIpKTsNCisJCQl2YXIgYmFyZSA9
IG5ldyBGaWxlUmVwb3NpdG9yeSAobmV3IFNoYXJwZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBh
dGggKyAicmVwby5naXQiKSk7DQogCQkJc3RyaW5nIGJyYW5jaCA9IENvbnN0YW50cy5SX0hFQURT
ICsgIm1hc3RlciI7DQogDQogCQkJUmVmVXBkYXRlIGhlYWQgPSBiYXJlLlVwZGF0ZVJlZiAoQ29u
c3RhbnRzLkhFQUQpOw0KQEAgLTEzMiwyMSArMTMyLDIxIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lk
IE1vdmVzRGlyZWN0b3J5ICgpCiANCiAJCXByb3RlY3RlZCBvdmVycmlkZSBSZXZpc2lvbiBHZXRI
ZWFkUmV2aXNpb24gKCkNCiAJCXsNCi0JCQlHaXRSZXBvc2l0b3J5IHJlcG8yID0gKEdpdFJlcG9z
aXRvcnkpUmVwbzsNCi0JCQlSZXZXYWxrIHJ3ID0gbmV3IFJldldhbGsgKHJlcG8yLlJvb3RSZXBv
c2l0b3J5KTsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCXZhciBy
dyA9IG5ldyBSZXZXYWxrIChyZXBvMi5Sb290UmVwb3NpdG9yeSk7DQogCQkJT2JqZWN0SWQgaGVh
ZElkID0gcmVwbzIuUm9vdFJlcG9zaXRvcnkuUmVzb2x2ZSAoQ29uc3RhbnRzLkhFQUQpOw0KIAkJ
CWlmIChoZWFkSWQgPT0gbnVsbCkNCiAJCQkJcmV0dXJuIG51bGw7DQogDQogCQkJUmV2Q29tbWl0
IGNvbW1pdCA9IHJ3LlBhcnNlQ29tbWl0IChoZWFkSWQpOw0KLQkJCUdpdFJldmlzaW9uIHJldiA9
IG5ldyBHaXRSZXZpc2lvbiAoUmVwbywgcmVwbzIuUm9vdFJlcG9zaXRvcnksIGNvbW1pdC5JZC5O
YW1lKTsNCisJCQl2YXIgcmV2ID0gbmV3IEdpdFJldmlzaW9uIChSZXBvLCByZXBvMi5Sb290UmVw
b3NpdG9yeSwgY29tbWl0LklkLk5hbWUpOw0KIAkJCXJldi5Db21taXQgPSBjb21taXQ7DQogCQkJ
cmV0dXJuIHJldjsNCiAJCX0NCiANCiAJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFBvc3RDb21t
aXQgKFJlcG9zaXRvcnkgcmVwbykNCiAJCXsNCi0JCQlHaXRSZXBvc2l0b3J5IHJlcG8yID0gKEdp
dFJlcG9zaXRvcnkpcmVwbzsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlyZXBvOw0K
IAkJCXJlcG8yLlB1c2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5O
dWxsUHJvZ3Jlc3NNb25pdG9yICgpLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpLCByZXBvMi5H
ZXRDdXJyZW50QnJhbmNoICgpKTsNCiAJCX0NCiANDQoNCiAgIENvbW1pdDogNjI3MjkzYTdlNjRi
MjI4Mjc3ZmM0NmQ4YTI0MDIxZDE1YmIyMGYyYQ0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFy
aW9AeWFob28uY29tPiAoVGhlcnpvaykNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAxNzo0MDoyNCBH
TVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0
LzYyNzI5M2E3ZTY0YjIyODI3N2ZjNDZkOGEyNDAyMWQxNWJiMjBmMmENCg0KW1N1YnZlcnNpb25d
IEFkZGVkIFVSTCB2YWxpZGF0aW9uIHRlc3RzLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9z
cmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5U
ZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv
bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0
b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxv
cC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMu
Y3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u
Q29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMv
YWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVwb3NpdG9yeVRl
c3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2
ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KQEAgLTI2OSw4ICsyNjksNyBAQCBwdWJsaWMgdm9pZCBUZXN0UHVzaERpZmYg
KCkKIAkJCS8vQXNzZXJ0LkFyZUVxdWFsICgidGV4dDIiLCBpdGVtLkNvbnRlbnQpOw0KIAkJfQ0K
IA0KLQkJW1Rlc3RdDQotCQlwdWJsaWMgdm9pZCBUZXN0R2l0VXJsICgpDQorCQlwcm90ZWN0ZWQg
b3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCiAJCXsNCiAJCQl2YXIgcmVwbzIgPSAoR2l0
UmVwb3NpdG9yeSlSZXBvOw0KIAkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJn
aXRAZ2l0aHViLmNvbTptb25vL21vbm9kZXZlbG9wIikpOw0NCg0KTW9kaWZpZWQ6IG1haW4vc3Jj
L2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVz
dHMvQmFzZVJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEyNSw2ICsxMjUsMTQg
QEAgcHVibGljIHZvaWQgUmlnaHRSZXBvc2l0b3J5RGV0ZWN0aW9uICgpCiAJCXByb3RlY3RlZCBh
YnN0cmFjdCBOVW5pdC5GcmFtZXdvcmsuQ29uc3RyYWludHMuSVJlc29sdmVDb25zdHJhaW50IElz
Q29ycmVjdFR5cGUgKCk7CiAKIAkJW1Rlc3RdCisJCXB1YmxpYyB2b2lkIFVybElzVmFsaWQgKCkK
KwkJeworCQkJVGVzdFZhbGlkVXJsICgpOworCQl9CisKKwkJcHJvdGVjdGVkIGFic3RyYWN0IHZv
aWQgVGVzdFZhbGlkVXJsICgpOworCisJCVtUZXN0XQogCQkvLyBUZXN0cyBSZXBvc2l0b3J5LkNo
ZWNrb3V0LgogCQlwdWJsaWMgdm9pZCBDaGVja291dEV4aXN0cyAoKQogCQl7DQoNCk1vZGlmaWVk
OiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy
b2wuU3VidmVyc2lvbi5UZXN0cy9CYXNlU3ZuUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQpAQCAtOTMsNiArOTMsMTUgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIE5Vbml0LkZyYW1ld29yay5D
b25zdHJhaW50cy5JUmVzb2x2ZUNvbnN0cmFpbnQgSXNDb3JyZWN0VHlwZQogCQkJcmV0dXJuIElz
Lkluc3RhbmNlT2Y8U3VidmVyc2lvblJlcG9zaXRvcnk+ICgpOw0KIAkJfQ0KIA0KKwkJcHJvdGVj
dGVkIG92ZXJyaWRlIHZvaWQgVGVzdFZhbGlkVXJsICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0g
KFN1YnZlcnNpb25SZXBvc2l0b3J5KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNV
cmxWYWxpZCAoInN2bjovL3N2bnJlcG8uY29tOjgwL3JlcG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1
ZSAocmVwbzIuSXNVcmxWYWxpZCAoInN2bitzc2g6Ly91c2VyQGhvc3QuY29tOjgwL3JlcG8iKSk7
DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImh0dHA6Ly9zdm5yZXBvLmNv
bTo4MC9yZXBvIikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRw
czovL3N2bnJlcG8uY29tOjgwL3JlcG8iKSk7DQorCQl9DQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJp
ZGUgUmV2aXNpb24gR2V0SGVhZFJldmlzaW9uICgpDQogCQl7DQogCQkJcmV0dXJuIFN2blJldmlz
aW9uLkhlYWQ7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01v
bm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3Rz
LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtMTI3LDYgKzEyNywxMiBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUg
dm9pZCBQb3N0VW5sb2NrICgpCiAJCQl9KTsKIAkJfQogCisJCXB1YmxpYyBvdmVycmlkZSB2b2lk
IFRlc3RWYWxpZFVybCAoKQorCQl7CisJCQliYXNlLlRlc3RWYWxpZFVybCAoKTsKKwkJCUFzc2Vy
dC5Jc1RydWUgKFJlcG8uSXNVcmxWYWxpZCAoImZpbGU6Ly8vZGlyL3JlcG8iKSk7CisJCX0KKwog
CQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmVwb3NpdG9yeSBHZXRSZXBvIChzdHJpbmcgcGF0aCwgc3Ry
aW5nIHVybCkKIAkJewogCQkJcmV0dXJuIG5ldyBTdWJ2ZXJzaW9uUmVwb3NpdG9yeSAobmV3IFN2
bkNsaWVudCAoKSwgdXJsLCBwYXRoKTsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJz
aW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMyLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KQEAgLTExNyw2ICsxMTcsMTYgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUG9z
dFVubG9jayAoKQogCQkJfSk7DQogCQl9DQogDQorCQlbVGVzdF0NCisJCXByb3RlY3RlZCBvdmVy
cmlkZSB2b2lkIFRlc3RWYWxpZFVybCAoKQ0KKwkJew0KKwkJCWJhc2UuVGVzdFZhbGlkVXJsICgp
Ow0KKw0KKwkJCUFzc2VydC5JZ25vcmUgKCJGaWxlIHNjaGVtZSBpcyBicm9rZW4gb24gV2luZG93
cyIpOw0KKwkJCXZhciByZXBvMiA9IChTdWJ2ZXJzaW9uUmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFz
c2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmaWxlOi8vL2M6L2Rpci9yZXBvIikpOw0K
KwkJfQ0KKw0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAoc3RyaW5n
IHBhdGgsIHN0cmluZyB1cmwpDQogCQl7DQogCQkJcmV0dXJuIG5ldyBTdWJ2ZXJzaW9uUmVwb3Np
dG9yeSAobmV3IFN2blNoYXJwQ2xpZW50ICgpLCB1cmwsIHBhdGgpOw0NCg0KICAgQ29tbWl0OiAx
NmEzNGU3ZTA1OTk2NzQ5NDQ2OTFiNGFkMWYwMTI3ZWFmZDA1Y2EzDQogICBBdXRob3I6IFRoZXJ6
b2sgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE4
IDE3OjQ4OjEzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2
ZWxvcC9jb21taXQvMTZhMzRlN2UwNTk5Njc0OTQ0NjkxYjRhZDFmMDEyN2VhZmQwNWNhMw0KDQpG
aXggYnVpbGQuID5fPg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNp
b25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVw
b3NpdG9yeVRlc3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv
bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlU
ZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEyNyw3ICsxMjcsNyBAQCBwcm90ZWN0ZWQgb3ZlcnJp
ZGUgdm9pZCBQb3N0VW5sb2NrICgpCiAJCQl9KTsKIAkJfQogCi0JCXB1YmxpYyBvdmVycmlkZSB2
b2lkIFRlc3RWYWxpZFVybCAoKQorCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRV
cmwgKCkKIAkJewogCQkJYmFzZS5UZXN0VmFsaWRVcmwgKCk7CiAJCQlBc3NlcnQuSXNUcnVlIChS
ZXBvLklzVXJsVmFsaWQgKCJmaWxlOi8vL2Rpci9yZXBvIikpOw0KDQogICBDb21taXQ6IDcxMGUw
NDAwN2IwYTI2OTEyYjEzOTNkY2FhOTg4YmY5YWQzYWY5MDYNCiAgIEF1dGhvcjogVGhlcnpvayA8
dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMTggMjI6
NDU6MzMgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9w
L2NvbW1pdC83MTBlMDQwMDdiMGEyNjkxMmIxMzkzZGNhYTk4OGJmOWFkM2FmOTA2DQoNCltXZWJS
ZWZlcmVuY2VzXSBQb3NzaWJpbGl0eSB0byBjaG9vc2UgdmlzaWJpbGl0eQoKRWl0aGVyIGdlbmVy
YXRlIHRoZSBzZXJ2aWNlIGFzIGEgcHVibGljIG9yIGludGVybmFsIHNlcnZpY2UuDQoNCkNoYW5n
ZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9N
b25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MvV0NGQ29uZmlnV2lkZ2V0LmNzCiAgTSBt
YWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9ndGstZ3VpL01vbm9EZXZl
bG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy5XQ0ZDb25maWdXaWRnZXQuY3MKICBNIG1haW4vc3Jj
L2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvZ3VpLnN0ZXRpYwoNCk1v
ZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9Nb25vRGV2
ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MvV0NGQ29uZmlnV2lkZ2V0LmNzDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQpAQCAtNDUsNiArNDUsMTEgQEAgcHVibGljIFdDRkNvbmZpZ1dpZGdldCAoQ2xpZW50T3B0aW9u
cyBvcHRpb25zKQogCQkJCiAJCQlkaWN0VHlwZXMgPSBuZXcgTGlzdDxUeXBlPiAoRGVmYXVsdERp
Y3Rpb25hcnlUeXBlcyk7CiAJCQlQb3B1bGF0ZUJveCAoZGljdGlvbmFyeUNvbGxlY3Rpb24sICJE
aWN0aW9uYXJ5IiwgZGljdFR5cGVzKTsKKworCQkJZm9yZWFjaCAodmFyIGFjY2VzcyBpbiBBY2Nl
c3NHZW5lcmF0aW9uVHlwZXMpCisJCQkJbGlzdEFjY2Vzcy5BcHBlbmRUZXh0IChhY2Nlc3MpOwor
CisJCQlsaXN0QWNjZXNzLkFjdGl2ZSA9IG9wdGlvbnMuR2VuZXJhdGVJbnRlcm5hbFR5cGVzID8g
MSA6IDA7CiAJCX0KIAkJCiAJCXB1YmxpYyBDbGllbnRPcHRpb25zIE9wdGlvbnMgewpAQCAtNzEs
NiArNzYsMTEgQEAgcHVibGljIFdDRkNvbmZpZ1dpZGdldCAoQ2xpZW50T3B0aW9ucyBvcHRpb25z
KQogCQkJdHlwZW9mIChTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuTGlzdERpY3Rpb25h
cnkpLAogCQkJdHlwZW9mIChTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuT3JkZXJlZERp
Y3Rpb25hcnkpCiAJCX07CisKKwkJc3RhdGljIHJlYWRvbmx5IExpc3Q8c3RyaW5nPiBBY2Nlc3NH
ZW5lcmF0aW9uVHlwZXMgPSBuZXcgTGlzdDxzdHJpbmc+IHsKKwkJCSJQdWJsaWMiLAorCQkJIklu
dGVybmFsIgorCQl9OwogCQkKIAkJcHVibGljIGJvb2wgTW9kaWZpZWQgewogCQkJZ2V0OwpAQCAt
MTYyLDYgKzE3MiwxMSBAQCBpbnRlcm5hbCB2b2lkIFVwZGF0ZSAoKQogCQl7CiAJCQlVcGRhdGVC
b3ggKGxpc3RDb2xsZWN0aW9uLCAiTGlzdCIsIGxpc3RUeXBlcyk7CiAJCQlVcGRhdGVCb3ggKGRp
Y3Rpb25hcnlDb2xsZWN0aW9uLCAiRGljdGlvbmFyeSIsIGRpY3RUeXBlcyk7CisKKwkJCWlmIChs
aXN0QWNjZXNzLkFjdGl2ZSAhPSAoT3B0aW9ucy5HZW5lcmF0ZUludGVybmFsVHlwZXMgPyAxIDog
MCkpIHsKKwkJCQlPcHRpb25zLkdlbmVyYXRlSW50ZXJuYWxUeXBlcyA9ICFPcHRpb25zLkdlbmVy
YXRlSW50ZXJuYWxUeXBlczsKKwkJCQlNb2RpZmllZCA9IHRydWU7CisJCQl9CiAJCX0KIAl9CiB9
DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9n
dGstZ3VpL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy5XQ0ZDb25maWdXaWRnZXQu
Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCkBAIC05LDggKzksMTAgQEAgcHVibGljIHBhcnRpYWwgY2xhc3MgV0NG
Q29uZmlnV2lkZ2V0CiAJCXByaXZhdGUgZ2xvYmFsOjpHdGsuQ29tYm9Cb3ggZGljdGlvbmFyeUNv
bGxlY3Rpb247CiAJCXByaXZhdGUgZ2xvYmFsOjpHdGsuTGFiZWwgbGFiZWwxOwogCQlwcml2YXRl
IGdsb2JhbDo6R3RrLkxhYmVsIGxhYmVsMjsKKwkJcHJpdmF0ZSBnbG9iYWw6Okd0ay5MYWJlbCBs
YWJlbDM7CisJCXByaXZhdGUgZ2xvYmFsOjpHdGsuQ29tYm9Cb3ggbGlzdEFjY2VzczsKIAkJcHJp
dmF0ZSBnbG9iYWw6Okd0ay5Db21ib0JveCBsaXN0Q29sbGVjdGlvbjsKLQkJCisKIAkJcHJvdGVj
dGVkIHZpcnR1YWwgdm9pZCBCdWlsZCAoKQogCQl7CiAJCQlnbG9iYWw6OlN0ZXRpYy5HdWkuSW5p
dGlhbGl6ZSAodGhpcyk7CkBAIC01OCwxNyArNjAsMzggQEAgcHJvdGVjdGVkIHZpcnR1YWwgdm9p
ZCBCdWlsZCAoKQogCQkJdzMuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMp
KDQpKTsKIAkJCXczLllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7
CiAJCQkvLyBDb250YWluZXIgY2hpbGQgd2NmT3B0aW9ucy5HdGsuVGFibGUrVGFibGVDaGlsZAor
CQkJdGhpcy5sYWJlbDMgPSBuZXcgZ2xvYmFsOjpHdGsuTGFiZWwgKCk7CisJCQl0aGlzLmxhYmVs
My5OYW1lID0gImxhYmVsMyI7CisJCQl0aGlzLmxhYmVsMy5MYWJlbFByb3AgPSBnbG9iYWw6Ok1v
bm8uVW5peC5DYXRhbG9nLkdldFN0cmluZyAoIkFjY2VzcyBsZXZlbDoiKTsKKwkJCXRoaXMud2Nm
T3B0aW9ucy5BZGQgKHRoaXMubGFiZWwzKTsKKwkJCWdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hp
bGQgdzQgPSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMud2NmT3B0aW9ucyBb
dGhpcy5sYWJlbDNdKSk7CisJCQl3NC5Ub3BBdHRhY2ggPSAoKHVpbnQpKDIpKTsKKwkJCXc0LkJv
dHRvbUF0dGFjaCA9ICgodWludCkoMykpOworCQkJdzQuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3Rr
LkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCXc0LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRh
Y2hPcHRpb25zKSg0KSk7CisJCQkvLyBDb250YWluZXIgY2hpbGQgd2NmT3B0aW9ucy5HdGsuVGFi
bGUrVGFibGVDaGlsZAorCQkJdGhpcy5saXN0QWNjZXNzID0gZ2xvYmFsOjpHdGsuQ29tYm9Cb3gu
TmV3VGV4dCAoKTsKKwkJCXRoaXMubGlzdEFjY2Vzcy5OYW1lID0gImxpc3RBY2Nlc3MiOworCQkJ
dGhpcy53Y2ZPcHRpb25zLkFkZCAodGhpcy5saXN0QWNjZXNzKTsKKwkJCWdsb2JhbDo6R3RrLlRh
YmxlLlRhYmxlQ2hpbGQgdzUgPSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMu
d2NmT3B0aW9ucyBbdGhpcy5saXN0QWNjZXNzXSkpOworCQkJdzUuVG9wQXR0YWNoID0gKCh1aW50
KSgyKSk7CisJCQl3NS5Cb3R0b21BdHRhY2ggPSAoKHVpbnQpKDMpKTsKKwkJCXc1LkxlZnRBdHRh
Y2ggPSAoKHVpbnQpKDEpKTsKKwkJCXc1LlJpZ2h0QXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3
NS5YT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucykoNykpOworCQkJdzUuWU9w
dGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCS8vIENvbnRhaW5l
ciBjaGlsZCB3Y2ZPcHRpb25zLkd0ay5UYWJsZStUYWJsZUNoaWxkCiAJCQl0aGlzLmxpc3RDb2xs
ZWN0aW9uID0gZ2xvYmFsOjpHdGsuQ29tYm9Cb3guTmV3VGV4dCAoKTsKIAkJCXRoaXMubGlzdENv
bGxlY3Rpb24uTmFtZSA9ICJsaXN0Q29sbGVjdGlvbiI7CiAJCQl0aGlzLndjZk9wdGlvbnMuQWRk
ICh0aGlzLmxpc3RDb2xsZWN0aW9uKTsKLQkJCWdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQg
dzQgPSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMud2NmT3B0aW9ucyBbdGhp
cy5saXN0Q29sbGVjdGlvbl0pKTsKLQkJCXc0LkxlZnRBdHRhY2ggPSAoKHVpbnQpKDEpKTsKLQkJ
CXc0LlJpZ2h0QXR0YWNoID0gKCh1aW50KSgyKSk7Ci0JCQl3NC5YT3B0aW9ucyA9ICgoZ2xvYmFs
OjpHdGsuQXR0YWNoT3B0aW9ucykoNykpOwotCQkJdzQuWU9wdGlvbnMgPSAoKGdsb2JhbDo6R3Rr
LkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCWdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQgdzYg
PSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMud2NmT3B0aW9ucyBbdGhpcy5s
aXN0Q29sbGVjdGlvbl0pKTsKKwkJCXc2LkxlZnRBdHRhY2ggPSAoKHVpbnQpKDEpKTsKKwkJCXc2
LlJpZ2h0QXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3Ni5YT3B0aW9ucyA9ICgoZ2xvYmFsOjpH
dGsuQXR0YWNoT3B0aW9ucykoNykpOworCQkJdzYuWU9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0
dGFjaE9wdGlvbnMpKDQpKTsKIAkJCXRoaXMuZGlhbG9nMV9WQm94LkFkZCAodGhpcy53Y2ZPcHRp
b25zKTsKLQkJCWdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCB3NSA9ICgoZ2xvYmFsOjpHdGsuQm94
LkJveENoaWxkKSh0aGlzLmRpYWxvZzFfVkJveCBbdGhpcy53Y2ZPcHRpb25zXSkpOwotCQkJdzUu
UG9zaXRpb24gPSAwOworCQkJZ2xvYmFsOjpHdGsuQm94LkJveENoaWxkIHc3ID0gKChnbG9iYWw6
Okd0ay5Cb3guQm94Q2hpbGQpKHRoaXMuZGlhbG9nMV9WQm94IFt0aGlzLndjZk9wdGlvbnNdKSk7
CisJCQl3Ny5Qb3NpdGlvbiA9IDA7CiAJCQl0aGlzLkFkZCAodGhpcy5kaWFsb2cxX1ZCb3gpOwog
CQkJaWYgKCh0aGlzLkNoaWxkICE9IG51bGwpKSB7CiAJCQkJdGhpcy5DaGlsZC5TaG93QWxsICgp
Ow0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMv
Z3RrLWd1aS9ndWkuc3RldGljDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjQ2LDEyICs2NDYsNiBAQAogICAg
ICAgICAgICAgICA8cGxhY2Vob2xkZXIgLz4KICAgICAgICAgICAgIDwvY2hpbGQ+CiAgICAgICAg
ICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgIDxwbGFjZWhvbGRlciAvPgotICAgICAgICAgICAg
PC9jaGlsZD4KLSAgICAgICAgICAgIDxjaGlsZD4KLSAgICAgICAgICAgICAgPHBsYWNlaG9sZGVy
IC8+Ci0gICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgPGNoaWxkPgogICAgICAgICAg
ICAgICA8d2lkZ2V0IGNsYXNzPSJHdGsuQ29tYm9Cb3giIGlkPSJkaWN0aW9uYXJ5Q29sbGVjdGlv
biI+CiAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJlck5hbWUiIC8+CiAgICAg
ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5UcnVlPC9wcm9wZXJ0eT4K
QEAgLTcxMiw2ICs3MDYsNDcgQEAKICAgICAgICAgICAgICAgPC9wYWNraW5nPgogICAgICAgICAg
ICAgPC9jaGlsZD4KICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPHdpZGdldCBj
bGFzcz0iR3RrLkxhYmVsIiBpZD0ibGFiZWwzIj4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkg
bmFtZT0iTWVtYmVyTmFtZSIgLz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iTGFi
ZWxQcm9wIiB0cmFuc2xhdGFibGU9InllcyI+QWNjZXNzIGxldmVsOjwvcHJvcGVydHk+CisgICAg
ICAgICAgICAgIDwvd2lkZ2V0PgorICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iVG9wQXR0YWNoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iQm90dG9tQXR0YWNoIj4zPC9wcm9wZXJ0eT4KKyAgICAgICAg
ICAgICAgICA8cHJvcGVydHkgbmFtZT0iQXV0b1NpemUiPlRydWU8L3Byb3BlcnR5PgorICAgICAg
ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAg
ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IllPcHRpb25zIj5GaWxsPC9wcm9wZXJ0eT4KKyAg
ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWEV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5Pgor
ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYRmlsbCI+VHJ1ZTwvcHJvcGVydHk+Cisg
ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlhTaHJpbmsiPkZhbHNlPC9wcm9wZXJ0eT4K
KyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWUV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5
PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZRmlsbCI+VHJ1ZTwvcHJvcGVydHk+
CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IllTaHJpbmsiPkZhbHNlPC9wcm9wZXJ0
eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAg
ICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPHdpZGdldCBjbGFzcz0iR3RrLkNvbWJvQm94
IiBpZD0ibGlzdEFjY2VzcyI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJl
ck5hbWUiIC8+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5U
cnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iSXRlbXMiIHRy
YW5zbGF0YWJsZT0ieWVzIiAvPgorICAgICAgICAgICAgICA8L3dpZGdldD4KKyAgICAgICAgICAg
ICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRvcEF0dGFjaCI+
MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkJvdHRvbUF0dGFj
aCI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkxlZnRBdHRh
Y2giPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJSaWdodEF0
dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkF1dG9T
aXplIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlhP
cHRpb25zIj5FeHBhbmQsIFNocmluaywgRmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAg
PHByb3BlcnR5IG5hbWU9IllPcHRpb25zIj5GaWxsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAg
ICA8cHJvcGVydHkgbmFtZT0iWEV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAg
ICAgPHByb3BlcnR5IG5hbWU9IlhGaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAg
ICA8cHJvcGVydHkgbmFtZT0iWFNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAg
ICAgPHByb3BlcnR5IG5hbWU9IllFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iWUZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJZU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAg
ICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hpbGQ+
CiAgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5Db21ib0JveCIgaWQ9Imxpc3RDb2xs
ZWN0aW9uIj4KICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyTmFtZSIgLz4K
ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iSXNUZXh0Q29tYm8iPlRydWU8L3Byb3Bl
cnR5Pg0KDQogICBDb21taXQ6IGI2YmUwZjEwMzBkZWU1NGEyNmZkNjI2NjAyZTNmODYyMTU5ZDEw
YmENCiAgIEF1dGhvcjogTWljaGFlbCBIdXRjaGluc29uIDxtLmouaHV0Y2hpbnNvbkBnbWFpbC5j
b20+IChtaHV0Y2gpDQogICAgIERhdGU6IDIwMTMtMTEtMTggMjM6Mzg6MzMgR01UDQogICAgICBV
Ukw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9iNmJlMGYxMDMw
ZGVlNTRhMjZmZDYyNjYwMmUzZjg2MjE1OWQxMGJhDQoNCltDb3JlXSBNYWtlIHN1cmUgV2ViU2Vy
dmljZSBpcyBpbml0aWFsaXplZCBmcmFtZXdvcmsgc2VydmljZQoKVGhlIGZyYW1ld29yayBzZXJ2
aWNlIGNhbiBraWNrIG9mZiB0aGUgYWN0aXZhdGlvbiBzeXN0ZW0sIHdoaWNoCm1ha2VzIHdlYiBy
ZXF1ZXN0cy4KCkJYQzE2MjQ1IC0gW1hTXVVwZ3JhZGUgd29ya2Zsb3cgdGhyb3dzIGFuIE5SRSB3
aGlsZSB0cnlpbmcgdG8gYWN0aXZhdGUKYSBsaWNlbnNlDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBt
YWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9SdW50aW1lLmNz
Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5D
b3JlL1J1bnRpbWUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xMTIsNiArMTEyLDcgQEAgcHVibGljIHN0
YXRpYyB2b2lkIEluaXRpYWxpemUgKGJvb2wgdXBkYXRlQWRkaW5SZWdpc3RyeSkKIAkJCQlDb3Vu
dGVycy5SdW50aW1lSW5pdGlhbGl6YXRpb24uVHJhY2UgKCJJbml0aWFsaXplZCBBZGRpbiBNYW5h
Z2VyIik7CiAJCQkJCiAJCQkJUHJvcGVydHlTZXJ2aWNlLkluaXRpYWxpemUgKCk7CisJCQkJV2Vi
U2VydmljZS5Jbml0aWFsaXplICgpOwogCQkJCQogCQkJCS8vaGF2ZSB0byBkbyB0aGlzIGFmdGVy
IHRoZSBhZGRpbiBzZXJ2aWNlIGFuZCBwcm9wZXJ0eSBzZXJ2aWNlIGhhdmUgaW5pdGlhbGl6ZWQK
IAkJCQlpZiAoVXNlckRhdGFNaWdyYXRpb25TZXJ2aWNlLkhhc1NvdXJjZSkgewpAQCAtMTI0LDgg
KzEyNSw2IEBAIHB1YmxpYyBzdGF0aWMgdm9pZCBJbml0aWFsaXplIChib29sIHVwZGF0ZUFkZGlu
UmVnaXN0cnkpCiAJCQkJQ291bnRlcnMuUnVudGltZUluaXRpYWxpemF0aW9uLlRyYWNlICgiSW5p
dGlhbGl6aW5nIEFzc2VtYmx5IFNlcnZpY2UiKTsKIAkJCQlzeXN0ZW1Bc3NlbWJseVNlcnZpY2Ug
PSBuZXcgU3lzdGVtQXNzZW1ibHlTZXJ2aWNlICgpOwogCQkJCXN5c3RlbUFzc2VtYmx5U2Vydmlj
ZS5Jbml0aWFsaXplICgpOwotCi0JCQkJV2ViU2VydmljZS5Jbml0aWFsaXplICgpOwogCQkJCQog
CQkJCWluaXRpYWxpemVkID0gdHJ1ZTsKIAkJCQkNCg0KICAgQ29tbWl0OiA2NjQ2MmM4MTZjN2Ni
MjA3ZTNmODRiM2JkOWNiMzM0ZjZkYjVkYjk0DQogICBBdXRob3I6IE1pY2hhZWwgSHV0Y2hpbnNv
biA8bS5qLmh1dGNoaW5zb25AZ21haWwuY29tPiAobWh1dGNoKQ0KICAgICBEYXRlOiAyMDEzLTEx
LTE4IDIzOjM4OjMzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25v
ZGV2ZWxvcC9jb21taXQvNjY0NjJjODE2YzdjYjIwN2UzZjg0YjNiZDljYjMzNGY2ZGI1ZGI5NA0K
DQpbQ29yZV0gQ2xlYW4gdXAgdGhlIFdlYlNlcnZpY2UKCkhhZCBsb3RzIG9mIHBvaW50bGVzcyBs
YXppZXMgYW5kIHNpbmdsZXRvbnMsIGFuZCBjb3VsZCBleHBsb2RlIG9uCnBsYXRmb3JtcyB3aXRo
b3V0IGEgY3JlZGVudGlhbHMgcHJvdmlkZXIuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3Ny
Yy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvQ3JlZGVudGlhbFN0
b3JlLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29y
ZS5XZWIvSUNyZWRlbnRpYWxQcm92aWRlci5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxv
cC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1Byb3h5Q2FjaGUuY3MKICBNIG1haW4vc3JjL2Nv
cmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9SZXF1ZXN0SGVscGVyLmNz
CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIv
V2ViU2VydmljZS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZl
bG9wLkNvcmUvUnVudGltZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9w
LkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvQ3JlZGVudGlhbFN0b3JlLmNzDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQpAQCAtNywxMyArNyw2IEBAIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5Db3JlLldlYgogCWNsYXNz
IENyZWRlbnRpYWxTdG9yZSA6IElDcmVkZW50aWFsQ2FjaGUKIAl7CiAJCXJlYWRvbmx5IENvbmN1
cnJlbnREaWN0aW9uYXJ5PFVyaSwgSUNyZWRlbnRpYWxzPiBjcmVkZW50aWFsQ2FjaGUgPSBuZXcg
Q29uY3VycmVudERpY3Rpb25hcnk8VXJpLCBJQ3JlZGVudGlhbHM+ICgpOwotCQlzdGF0aWMgcmVh
ZG9ubHkgQ3JlZGVudGlhbFN0b3JlIGluc3RhbmNlID0gbmV3IENyZWRlbnRpYWxTdG9yZSAoKTsN
Ci0NCi0JCXB1YmxpYyBzdGF0aWMgQ3JlZGVudGlhbFN0b3JlIEluc3RhbmNlIHsKLQkJCWdldCB7
Ci0JCQkJcmV0dXJuIGluc3RhbmNlOwotCQkJfQotCQl9CiAKIAkJcHVibGljIElDcmVkZW50aWFs
cyBHZXRDcmVkZW50aWFscyAoVXJpIHVyaSwgQ3JlZGVudGlhbFR5cGUgY3JlZGVudGlhbFR5cGUp
DQogCQl7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9E
ZXZlbG9wLkNvcmUuV2ViL0lDcmVkZW50aWFsUHJvdmlkZXIuY3MNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0x
MCw3ICsxMCw3IEBAIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5Db3JlLldlYgogCXB1YmxpYyBpbnRl
cmZhY2UgSUNyZWRlbnRpYWxQcm92aWRlcgogCXsKIAkJLy8vIDxzdW1tYXJ5PgotCQkvLy8gUmV0
dXJucyBDcmVkZW50aWFsU3RhdGUgc3RhdGUgdGhhdCBsZXQncyB0aGUgY29uc3VtZXIga25vdyBp
ZiBJQ3JlZGVudGlhbHMKKwkJLy8vIFJldHVybnMgQ3JlZGVudGlhbFN0YXRlIHN0YXRlIHRoYXQg
bGV0cyB0aGUgY29uc3VtZXIga25vdyBpZiBJQ3JlZGVudGlhbHMKIAkJLy8vIHdlcmUgZGlzY292
ZXJlZCBieSB0aGUgSUNyZWRlbnRpYWxQcm92aWRlci4gVGhlIGNyZWRlbnRpYWxzIGFyZ3VtZW50
IGlzIHRoZW4KIAkJLy8vIHBvcHVsYXRlZCB3aXRoIHRoZSBkaXNjb3ZlcmVkIHZhbGlkIGNyZWRl
bnRpYWxzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBnaXZlbiBVcmkuCiAJCS8vLyBUaGUgcHJv
eHkgaW5zdGFuY2UgaWYgcGFzc2VkIHdpbGwgYmUgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVx
dWVzdCBnb2VzIHRocm91Z2ggdGhlIHByb3h5DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01v
bm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvUHJveHlDYWNoZS5jcw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KQEAgLTE0LDE1ICsxNCw2IEBAIGNsYXNzIFByb3h5Q2FjaGUgOiBJUHJveHlDYWNoZQog
CQlzdGF0aWMgcmVhZG9ubHkgSVdlYlByb3h5IG9yaWdpbmFsU3lzdGVtUHJveHkgPSBXZWJSZXF1
ZXN0LkdldFN5c3RlbVdlYlByb3h5ICgpOwogCiAJCXJlYWRvbmx5IENvbmN1cnJlbnREaWN0aW9u
YXJ5PFVyaSwgV2ViUHJveHk+IGNhY2hlID0gbmV3IENvbmN1cnJlbnREaWN0aW9uYXJ5PFVyaSwg
V2ViUHJveHk+ICgpOwotCQlzdGF0aWMgcmVhZG9ubHkgTGF6eTxQcm94eUNhY2hlPiBpbnN0YW5j
ZSA9IG5ldyBMYXp5PFByb3h5Q2FjaGU+ICgoKSA9PiBuZXcgUHJveHlDYWNoZSAoKSk7Ci0KLQkJ
cHVibGljIHN0YXRpYyBQcm94eUNhY2hlIEluc3RhbmNlIHsKLQkJCWdldCB7Ci0JCQkJcmV0dXJu
IGluc3RhbmNlLlZhbHVlOwotCQkJfQotCQl9Ci0KLQkJUHJveHlDYWNoZSAoKSB7fQogCiAJCXB1
YmxpYyBJV2ViUHJveHkgR2V0UHJveHkgKFVyaSB1cmkpCiAJCXsNCg0KTW9kaWZpZWQ6IG1haW4v
c3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9SZXF1ZXN0SGVs
cGVyLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtMTMsOSArMTMsOSBAQCBwdWJsaWMgc3RhdGljIGNsYXNz
IFJlcXVlc3RIZWxwZXIKIAkJLy8vIDwvc3VtbWFyeT4NCiAJCWludGVybmFsIHN0YXRpYyBXZWJS
ZXNwb25zZSBHZXRSZXNwb25zZSAoRnVuYzxXZWJSZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0LCBBY3Rp
b248V2ViUmVxdWVzdD4gcHJlcGFyZVJlcXVlc3QpDQogCQl7DQotCQkJdmFyIHByb3h5Q2FjaGUg
PSBXZWJTZXJ2aWNlLkluc3RhbmNlLlByb3h5Q2FjaGU7DQotCQkJdmFyIGNyZWRlbnRpYWxDYWNo
ZSA9IFdlYlNlcnZpY2UuSW5zdGFuY2UuQ3JlZGVudGlhbENhY2hlOw0KLQkJCXZhciBjcmVkZW50
aWFsUHJvdmlkZXIgPSBXZWJTZXJ2aWNlLkluc3RhbmNlLkNyZWRlbnRpYWxQcm92aWRlcjsNCisJ
CQl2YXIgcHJveHlDYWNoZSA9IFdlYlNlcnZpY2UuUHJveHlDYWNoZTsKKwkJCXZhciBjcmVkZW50
aWFsQ2FjaGUgPSBXZWJTZXJ2aWNlLkNyZWRlbnRpYWxDYWNoZTsKKwkJCXZhciBjcmVkZW50aWFs
UHJvdmlkZXIgPSBXZWJTZXJ2aWNlLkNyZWRlbnRpYWxQcm92aWRlcjsKIA0KIAkJCUh0dHBXZWJS
ZXF1ZXN0IHByZXZpb3VzUmVxdWVzdCA9IG51bGw7DQogCQkJSUh0dHBXZWJSZXNwb25zZSBwcmV2
aW91c1Jlc3BvbnNlID0gbnVsbDsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZl
bG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvV2ViU2VydmljZS5jcw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
QEAgLTIzLDQwICsyMyw0MiBAQAogLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKIC8vIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4KIC8vIFRIRSBTT0ZUV0FSRS4KKwogdXNpbmcgU3lzdGVtOwogdXNpbmcgU3lzdGVt
LkxpbnE7CiAKIHVzaW5nIE1vbm8uQWRkaW5zOwordXNpbmcgU3lzdGVtLk5ldDsKIAogbmFtZXNw
YWNlIE1vbm9EZXZlbG9wLkNvcmUuV2ViCiB7Ci0JcHVibGljIGNsYXNzIFdlYlNlcnZpY2UKKwlw
dWJsaWMgc3RhdGljIGNsYXNzIFdlYlNlcnZpY2UKIAl7CiAJCWNvbnN0IHN0cmluZyBXZWJDcmVk
ZW50aWFsUHJvdmlkZXJzUGF0aCA9ICIvTW9ub0RldmVsb3AvQ29yZS9XZWJDcmVkZW50aWFsUHJv
dmlkZXJzIjsKIAotCQlzdGF0aWMgcmVhZG9ubHkgTGF6eTxXZWJTZXJ2aWNlPiBpbnN0YW5jZSA9
IG5ldyBMYXp5PFdlYlNlcnZpY2U+ICgoKSA9PiBuZXcgV2ViU2VydmljZSAoKSk7CisJCXB1Ymxp
YyBzdGF0aWMgSVByb3h5Q2FjaGUgUHJveHlDYWNoZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KKwkJ
cHVibGljIHN0YXRpYyBJQ3JlZGVudGlhbENhY2hlIENyZWRlbnRpYWxDYWNoZSB7IGdldDsgcHJp
dmF0ZSBzZXQ7IH0KKwkJcHVibGljIHN0YXRpYyBJQ3JlZGVudGlhbFByb3ZpZGVyIENyZWRlbnRp
YWxQcm92aWRlciB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KIAotCQlwdWJsaWMgc3RhdGljIFdlYlNl
cnZpY2UgSW5zdGFuY2UgewotCQkJZ2V0IHsKLQkJCQlyZXR1cm4gaW5zdGFuY2UuVmFsdWU7Ci0J
CQl9Ci0JCX0KKwkJaW50ZXJuYWwgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAoKQorCQl7CisJCQlD
cmVkZW50aWFsQ2FjaGUgPSBuZXcgQ3JlZGVudGlhbFN0b3JlICgpOworCQkJUHJveHlDYWNoZSA9
IG5ldyBQcm94eUNhY2hlICgpOworCQkJQ3JlZGVudGlhbFByb3ZpZGVyID0gQWRkaW5NYW5hZ2Vy
LkdldEV4dGVuc2lvbk9iamVjdHM8SUNyZWRlbnRpYWxQcm92aWRlcj4gKFdlYkNyZWRlbnRpYWxQ
cm92aWRlcnNQYXRoKS5GaXJzdE9yRGVmYXVsdCAoKTsKIAotCQlwdWJsaWMgSVByb3h5Q2FjaGUg
UHJveHlDYWNoZSB7IGdldDsgc2V0OyB9Ci0JCXB1YmxpYyBJQ3JlZGVudGlhbENhY2hlIENyZWRl
bnRpYWxDYWNoZSB7IGdldDsgc2V0OyB9Ci0JCXB1YmxpYyBJQ3JlZGVudGlhbFByb3ZpZGVyIENy
ZWRlbnRpYWxQcm92aWRlciB7IGdldDsgc2V0OyB9CisJCQlpZiAoQ3JlZGVudGlhbFByb3ZpZGVy
ID09IG51bGwpIHsKKwkJCQlMb2dnaW5nU2VydmljZS5Mb2dXYXJuaW5nICgiTm8gcHJveHkgY3Jl
ZGVudGlhbCBwcm92aWRlciB3YXMgZm91bmQiKTsKIAotCQlXZWJTZXJ2aWNlICgpIHt9CisJCQl9
CisJCX0KIAotCQlwdWJsaWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAoKQorCQljbGFzcyBOdWxs
Q3JlZGVudGlhbHNQcm92aWRlciA6IElDcmVkZW50aWFsUHJvdmlkZXIKIAkJewotCQkJLy8gV2Ug
Y2FuIGFjY2VzcyBleHRlbnNpb24gcG9pbnRzIG5vdywgc28gd2UgbmVlZCB0byBnZXQgdGhlIGNy
ZWRlbnRpYWwgcHJvdmlkZXIsIHdoaWNoIGlzIHBsYXRmb3JtLXNwZWNpZmljLgotCQkJLy8gVGhl
IGNyZWRlbnRpYWwgY2FjaGUgYW5kIHByb3h5IGNhY2hlIGFyZSBwdXJlIG1hbmFnZWQgaW1wbGVt
ZW50YXRpb24uCi0JCQlJbnN0YW5jZS5DcmVkZW50aWFsQ2FjaGUgPSBDcmVkZW50aWFsU3RvcmUu
SW5zdGFuY2U7Ci0JCQlJbnN0YW5jZS5Qcm94eUNhY2hlID0gV2ViLlByb3h5Q2FjaGUuSW5zdGFu
Y2U7Ci0KLQkJCS8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBjcmVkZW50aWFsIHByb3ZpZGVy
Ci0JCQlJbnN0YW5jZS5DcmVkZW50aWFsUHJvdmlkZXIgPSBBZGRpbk1hbmFnZXIuR2V0RXh0ZW5z
aW9uT2JqZWN0czxJQ3JlZGVudGlhbFByb3ZpZGVyPiAoV2ViQ3JlZGVudGlhbFByb3ZpZGVyc1Bh
dGgpLkZpcnN0T3JEZWZhdWx0ICgpOworCQkJcHVibGljIElDcmVkZW50aWFscyBHZXRDcmVkZW50
aWFscyAoCisJCQkJVXJpIHVyaSwgSVdlYlByb3h5IHByb3h5LCBDcmVkZW50aWFsVHlwZSBjcmVk
ZW50aWFsVHlwZSwgSUNyZWRlbnRpYWxzIGV4aXN0aW5nQ3JlZGVudGlhbHMsIGJvb2wgcmV0cnlp
bmcpCisJCQl7CisJCQkJcmV0dXJuIG51bGw7CisJCQl9CiAJCX0KIAl9CiB9DQoNCk1vZGlmaWVk
OiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9SdW50aW1l
LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWMgc3RhdGljIHZvaWQgSW5p
dGlhbGl6ZSAoYm9vbCB1cGRhdGVBZGRpblJlZ2lzdHJ5KQogCQkJCVN5bmNocm9uaXphdGlvbkNv
bnRleHQuU2V0U3luY2hyb25pemF0aW9uQ29udGV4dCAobmV3IFN5bmNocm9uaXphdGlvbkNvbnRl
eHQgKCkpOwogCiAJCQkvLyBIb29rIHVwIHRoZSBTU0wgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBj
b2RlcGF0aAotCQkJU3lzdGVtLk5ldC5TZXJ2aWNlUG9pbnRNYW5hZ2VyLlNlcnZlckNlcnRpZmlj
YXRlVmFsaWRhdGlvbkNhbGxiYWNrICs9IGRlbGVnYXRlKG9iamVjdCBzZW5kZXIsIFg1MDlDZXJ0
aWZpY2F0ZSBjZXJ0aWZpY2F0ZSwgWDUwOUNoYWluIGNoYWluLCBTc2xQb2xpY3lFcnJvcnMgc3Ns
UG9saWN5RXJyb3JzKSB7CisJCQlTZXJ2aWNlUG9pbnRNYW5hZ2VyLlNlcnZlckNlcnRpZmljYXRl
VmFsaWRhdGlvbkNhbGxiYWNrICs9IGRlbGVnYXRlKG9iamVjdCBzZW5kZXIsIFg1MDlDZXJ0aWZp
Y2F0ZSBjZXJ0aWZpY2F0ZSwgWDUwOUNoYWluIGNoYWluLCBTc2xQb2xpY3lFcnJvcnMgc3NsUG9s
aWN5RXJyb3JzKSB7CiAJCQkJaWYgKHNzbFBvbGljeUVycm9ycyA9PSBTc2xQb2xpY3lFcnJvcnMu
Tm9uZSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJDQoNCiAgIENvbW1pdDogMDc2ZjFiOWQwYWYw
NDBlYTc0N2JkMzM0MWYwOWEyZDg0ZWIyYjNmYQ0KICAgQXV0aG9yOiBNaWNoYWVsIEh1dGNoaW5z
b24gPG0uai5odXRjaGluc29uQGdtYWlsLmNvbT4gKG1odXRjaCkNCiAgICAgRGF0ZTogMjAxMy0x
MS0xOCAyMzo1MTo1NiBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9u
b2RldmVsb3AvY29tbWl0LzA3NmYxYjlkMGFmMDQwZWE3NDdiZDMzNDFmMDlhMmQ4NGViMmIzZmEN
Cg0KW21kLWFkZGluc10gQnVtcCB0byB0cmFjayBXZWJTZXJ2aWNlIEFQSQ0KDQpDaGFuZ2VkIHBh
dGhzOgogIE0gdmVyc2lvbi1jaGVja3MKDQpNb2RpZmllZDogdmVyc2lvbi1jaGVja3MNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCkBAIC0xNyw3ICsxNyw3IEBAIERFUFswXT1tZC1hZGRpbnMKIERFUF9OQU1FWzBdPU1E
QURESU5TCiBERVBfUEFUSFswXT0ke3RvcF9zcmNkaXJ9Ly4uL21kLWFkZGlucwogREVQX01PRFVM
RVswXT1naXRAZ2l0aHViLmNvbTp4YW1hcmluL21kLWFkZGlucy5naXQKLURFUF9ORUVERURfVkVS
U0lPTlswXT00ZWEwNGRhNmIyMDdhZGFlZDU3OGIyNjlkOTg4ZjFhZTNmNjAyMWZhCitERVBfTkVF
REVEX1ZFUlNJT05bMF09YzUxZWUzYjNlMWNkNDdmM2ZiMjg4NmI3MzFlZjk4ZTgzZTEzOGUyMQog
REVQX0JSQU5DSF9BTkRfUkVNT1RFWzBdPSJtYXN0ZXIgb3JpZ2luL21hc3RlciIKIAogIyBoZWFw
LXNob3QNCg0KICAgQ29tbWl0OiA2Mjg2YTEwZWIxZjYzZmM0OWM0MDIxZTFmYzFhMjZiNGZiYmFm
ZDNkDQogICBBdXRob3I6IEFsZXggQ29ycmFkbyA8YWxleGNAeGFtYXJpbi5jb20+IChjaGtuKQ0K
ICAgICBEYXRlOiAyMDEzLTExLTE5IDAyOjI4OjEzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dp
dGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNjI4NmExMGViMWY2M2ZjNDljNDAyMWUx
ZmMxYTI2YjRmYmJhZmQzZA0KDQpbYnVpbGRdIEJ1bXAgbWQtYWRkaW5zIGFuZCB4d3QNCg0KQ2hh
bmdlZCBwYXRoczoKICBNIG1haW4vZXh0ZXJuYWwveHd0CiAgTSB2ZXJzaW9uLWNoZWNrcwoNCk1v
ZGlmaWVkOiBtYWluL2V4dGVybmFsL3h3dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEgKzEgQEAKLVN1YnBy
b2plY3QgY29tbWl0IGVmNTRkMDY1YzcyMWNlMDEzZDJkYzk2Mjg0NjI5NDQxYWJhMTY3MmIKK1N1
YnByb2plY3QgY29tbWl0IDBmNjU0MWY2NDg2NmI2ZjQ1ZWZkMTExZmExMTZhZGY5MzY5NGY0OGQN
Cg0KTW9kaWZpZWQ6IHZlcnNpb24tY2hlY2tzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTcsNyArMTcsNyBA
QCBERVBbMF09bWQtYWRkaW5zCiBERVBfTkFNRVswXT1NREFERElOUwogREVQX1BBVEhbMF09JHt0
b3Bfc3JjZGlyfS8uLi9tZC1hZGRpbnMKIERFUF9NT0RVTEVbMF09Z2l0QGdpdGh1Yi5jb206eGFt
YXJpbi9tZC1hZGRpbnMuZ2l0Ci1ERVBfTkVFREVEX1ZFUlNJT05bMF09YzUxZWUzYjNlMWNkNDdm
M2ZiMjg4NmI3MzFlZjk4ZTgzZTEzOGUyMQorREVQX05FRURFRF9WRVJTSU9OWzBdPWZmMjVlYTkw
NzZiN2E4MGZiYjUyYmNkYTgyNzk0NTc5ZjJhYTU3NWIKIERFUF9CUkFOQ0hfQU5EX1JFTU9URVsw
XT0ibWFzdGVyIG9yaWdpbi9tYXN0ZXIiCiAKICMgaGVhcC1zaG90DQoNCiAgIENvbW1pdDogNDRl
YWFiMjIzNjIyNTRkZmNlYzMzNjM2Yjk0ZTVhNzM2YmFkNDM5NQ0KICAgQXV0aG9yOiBNaWtlIEty
w7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMt
MTEtMTkgMDU6MjY6NTEgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21v
bm9kZXZlbG9wL2NvbW1pdC80NGVhYWIyMjM2MjI1NGRmY2VjMzM2MzZiOTRlNWE3MzZiYWQ0Mzk1
DQoNCkZpeGVkICdCdWcgMTYzMjMgLSBYUyBsb2NrcyB1cCB3aGVuIGdvaW5nIHRvIGRlY2xhcmF0
aW9uICcuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklk
ZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcwoNCk1vZGlm
aWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5
c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTIxNjIsNyArMjE2Miwx
MCBAQCBpbnRlcm5hbCB2b2lkIEVuc3VyZUFzc2VtYmx5TG9hZGVkICgpCiAJCQkJbG9jayAoYXNt
TG9ja2VyKSB7CiAJCQkJCWlmIChhc3NlbWJseSAhPSBudWxsKQogCQkJCQkJcmV0dXJuOwotCQkJ
CQlhc3NlbWJseSA9IExvYWRBc3NlbWJseSAoKSA/PyBuZXcgRGVmYXVsdFVucmVzb2x2ZWRBc3Nl
bWJseSAoZmlsZU5hbWUpOworCQkJCQlhc3NlbWJseSA9IG5ldyBEZWZhdWx0VW5yZXNvbHZlZEFz
c2VtYmx5IChmaWxlTmFtZSk7CisKKwkJCQkJYXNzZW1ibHkgPSBMb2FkQXNzZW1ibHkgKCkgPz8g
YXNzZW1ibHk7IAorCiAJCQkJCU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKIAkJCQl9CiAJCQl9
DQoNCiAgIENvbW1pdDogODRmN2I0Mjg1MTZjNjE3YWE2MzczOGUzMTllNTIxZTk4ODA0OWRmMA0K
ICAgQXV0aG9yOiBBbGFuIE1jR292ZXJuIDxhbGFuQHhhbWFyaW4uY29tPiAoYWxhbm1jZ292ZXJu
KQ0KICAgICBEYXRlOiAyMDEzLTExLTE5IDE5OjQ2OjE5IEdNVA0KICAgICAgVVJMOiBodHRwczov
L2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvODRmN2I0Mjg1MTZjNjE3YWE2Mzcz
OGUzMTllNTIxZTk4ODA0OWRmMA0KDQpbYnVpbGRdIE5vcm1hbCB2ZXJib3NpdHkgYnkgZGVmYXVs
dA0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi94YnVpbGQuaW5jbHVkZQoNCk1vZGlmaWVkOiBt
YWluL3hidWlsZC5pbmNsdWRlDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTQsNyArMTQsNyBAQCBQUk9GSUxF
X05BTUU9RGVidWdXaW4zMgogZW5kaWYKIAogWEJVSUxEPXhidWlsZAotWEJVSUxEX1ZFUkJPU0lU
WT1xdWlldAorWEJVSUxEX1ZFUkJPU0lUWT1ub3JtYWwKIFhCVUlMRF9BUkdTPS92ZXJib3NpdHk6
JChYQlVJTERfVkVSQk9TSVRZKSAvbm9sb2dvIC9wcm9wZXJ0eTpDb2RlUGFnZT02NTAwMQogWEJV
SUxEX1BST0ZJTEU9L3Byb3BlcnR5OkNvbmZpZ3VyYXRpb249JChQUk9GSUxFX05BTUUpCiANCg0K
ICAgQ29tbWl0OiAwMDk2NzYxMTM2ZGU0Nzc3Y2FmZGM4MzA3OWYyYzhiMzQ5NDNhYjhkDQogICBB
dXRob3I6IGtqbmlsc3NvbiA8a2puaWxzc29uQGdtYWlsLmNvbT4gKGtqbmlsc3NvbikNCiAgICAg
RGF0ZTogMjAxMy0xMS0xOSAxOTo0OToxMCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIu
Y29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzAwOTY3NjExMzZkZTQ3NzdjYWZkYzgzMDc5ZjJj
OGIzNDk0M2FiOGQNCg0KMTYzMDcgLSByZXNldCBtb3Rpb24gYWZ0ZXIgYWN0aW9ucw0KDQpDaGFu
Z2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0RWRp
dG9yLlZpL1ZpTW9kZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm8uVGV4dGVkaXRv
ci9Nb25vLlRleHRFZGl0b3IuVmkvVmlNb2RlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjUyLDcgKzI1
Miw3IEBAIHZvaWQgUmVzZXQgKHN0cmluZyBzdGF0dXMpCiAJCXsKIAkJCUN1clN0YXRlID0gU3Rh
dGUuTm9ybWFsOwogCQkJUmVzZXRFZGl0b3JTdGF0ZSAoRGF0YSk7Ci0JCQkKKwkJCW1vdGlvbiA9
IE1vdGlvbi5Ob25lOwogCQkJY29tbWFuZEJ1ZmZlci5MZW5ndGggPSAwOwogCQkJU3RhdHVzID0g
c3RhdHVzOwogCQl9CkBAIC02MTcsNiArNjE3LDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQg
SGFuZGxlS2V5cHJlc3MgKEdkay5LZXkga2V5LCB1aW50IHVuaWNvZGVLZXksIEdkay5Nb2RpZmkK
IAkJCQkJCVJ1bkFjdGlvbnMgKGFjdGlvbiwgQ2xpcGJvYXJkQWN0aW9ucy5DdXQpOwogCQkJCQlT
dGF0dXMgPSAiLS0gSU5TRVJUIC0tIjsKIAkJCQkJQ3VyU3RhdGUgPSBTdGF0ZS5JbnNlcnQ7CisJ
CQkJCW1vdGlvbiA9IE1vdGlvbi5Ob25lOwogCQkJCQlDYXJldC5Nb2RlID0gQ2FyZXRNb2RlLklu
c2VydDsKIAkJCQl9IGVsc2UgewogCQkJCQlSZXNldCAoIlVucmVjb2duaXNlZCBtb3Rpb24iKTsN
Cg0KICAgQ29tbWl0OiA1ODA3Y2FhOTgwYzM3NmM5MzRhZWUxOTlmMTI0YmE5NTdlNWE0M2U0DQog
ICBBdXRob3I6IE1pY2hhZWwgSHV0Y2hpbnNvbiA8bS5qLmh1dGNoaW5zb25AZ21haWwuY29tPiAo
bWh1dGNoKQ0KICAgICBEYXRlOiAyMDEzLTExLTE5IDIyOjQ1OjMwIEdNVA0KICAgICAgVVJMOiBo
dHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNTgwN2NhYTk4MGMzNzZj
OTM0YWVlMTk5ZjEyNGJhOTU3ZTVhNDNlNA0KDQpNZXJnZSBwdWxsIHJlcXVlc3QgIzQzOCBmcm9t
IGtqbmlsc3Nvbi9tYXN0ZXIKCjE2MzA3IC0gdmkgbW9kZSAtIHJlc2V0IG1vdGlvbiBhZnRlciBh
Y3Rpb25zDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm8uVGV4dGVkaXRv
ci9Nb25vLlRleHRFZGl0b3IuVmkvVmlNb2RlLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUv
TW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVkaXRvci5WaS9WaU1vZGUuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZXNldCAoc3RyaW5nIHN0YXR1cykKIAkJewogCQkJ
Q3VyU3RhdGUgPSBTdGF0ZS5Ob3JtYWw7CiAJCQlSZXNldEVkaXRvclN0YXRlIChEYXRhKTsKLQkJ
CQorCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQljb21tYW5kQnVmZmVyLkxlbmd0aCA9IDA7
CiAJCQlTdGF0dXMgPSBzdGF0dXM7CiAJCX0KQEAgLTYxNyw2ICs2MTcsNyBAQCBwcm90ZWN0ZWQg
b3ZlcnJpZGUgdm9pZCBIYW5kbGVLZXlwcmVzcyAoR2RrLktleSBrZXksIHVpbnQgdW5pY29kZUtl
eSwgR2RrLk1vZGlmaQogCQkJCQkJUnVuQWN0aW9ucyAoYWN0aW9uLCBDbGlwYm9hcmRBY3Rpb25z
LkN1dCk7CiAJCQkJCVN0YXR1cyA9ICItLSBJTlNFUlQgLS0iOwogCQkJCQlDdXJTdGF0ZSA9IFN0
YXRlLkluc2VydDsKKwkJCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQkJCUNhcmV0Lk1vZGUg
PSBDYXJldE1vZGUuSW5zZXJ0OwogCQkJCX0gZWxzZSB7CiAJCQkJCVJlc2V0ICgiVW5yZWNvZ25p
c2VkIG1vdGlvbiIpOw0KDQogICBDb21taXQ6IDY4NDgxZTgzNjlkNjU1YzI5ZDE3MjYwYmYxMzM5
MWUzN2ZhNzBjNzgNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRo
ZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMjAgMDE6MTk6MTYgR01UDQogICAgICBVUkw6IGh0
dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC82ODQ4MWU4MzY5ZDY1NWMy
OWQxNzI2MGJmMTMzOTFlMzdmYTcwYzc4DQoNCltNb25vQWRkaW5zXSBCdW1wIHJldmlzaW9uIGZv
ciBidWcgMTQ0MjEuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL21vbm8tYWRk
aW5zCg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwvbW9uby1hZGRpbnMNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBA
IC0xICsxIEBACi1TdWJwcm9qZWN0IGNvbW1pdCAwYTFjMGEwNmVkNzM4MTkwNmEyNzQ2NmFmYTkx
YmQ4MjRmNzVkZTAyCitTdWJwcm9qZWN0IGNvbW1pdCAyMWQ3MTVhZGVkYWE5YThiYzEyNTVkZTdk
ZGYwZDI0NDU2MjJjMTg3DQoNCiAgIENvbW1pdDogZDlmYTBjMDY5YmJiMGMzNDRmMWY0MGRjNTFk
ZWRkOGY1MGM3OGMwMg0KICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4u
Y29tPiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMtMTEtMjAgMDY6NTI6MjggR01UDQogICAg
ICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9kOWZhMGMw
NjliYmIwYzM0NGYxZjQwZGM1MWRlZGQ4ZjUwYzc4YzAyDQoNCkZpeGVkICdCdWcgMTYzMzIgLSBE
dXBsaWNhdGUgQk9NISAnLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL01v
bm9EZXZlbG9wLlNvdXJjZUVkaXRvcjIvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yL1NvdXJjZUVk
aXRvclZpZXcuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVk
aXRvci5VdGlscy9UZXh0RmlsZVV0aWxpdHkuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVs
b3AuVGV4dEVkaXRvci5UZXN0cy9Nb25vLlRleHRFZGl0b3IuVGVzdHMvVGV4dEZpbGVSZWFkZXJU
ZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRp
dG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IvU291cmNlRWRpdG9yVmlldy5jcw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KQEAgLTgzNSw5ICs4MzUsOSBAQCBwdWJsaWMgdm9pZCBMb2FkIChzdHJpbmcgZmlsZU5h
bWUsIEVuY29kaW5nIGxvYWRFbmNvZGluZywgYm9vbCByZWxvYWQgPSBmYWxzZSkKIAkJCWVsc2Ug
ewogCQkJCWluTG9hZCA9IHRydWU7CiAJCQkJaWYgKGxvYWRFbmNvZGluZyA9PSBudWxsKSB7Ci0J
CQkJCXRleHQgPSBUZXh0RmlsZVV0aWxpdHkuUmVhZEFsbFRleHQgKGZpbGVOYW1lLCBvdXQgaGFk
Qm9tLCBvdXQgdGhpcy5lbmNvZGluZyk7Ci0JCQkJfQotCQkJCWVsc2UgeworCQkJCQl0ZXh0ID0g
VGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChmaWxlTmFtZSwgb3V0IGhhZEJvbSwgb3V0IGVu
Y29kaW5nKTsKKwkJCQl9IGVsc2UgeworCQkJCQllbmNvZGluZyA9IGxvYWRFbmNvZGluZzsKIAkJ
CQkJdGV4dCA9IFRleHRGaWxlVXRpbGl0eS5SZWFkQWxsVGV4dCAoZmlsZU5hbWUsIGxvYWRFbmNv
ZGluZywgb3V0IGhhZEJvbSk7CiAJCQkJfQogCQkJCWlmIChyZWxvYWQpIHsNCg0KTW9kaWZpZWQ6
IG1haW4vc3JjL2NvcmUvTW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVkaXRvci5VdGlscy9UZXh0
RmlsZVV0aWxpdHkuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNTYsNiArMTU2LDI1IEBAIHB1YmxpYyBz
dGF0aWMgc3RyaW5nIEdldFRleHQgKGJ5dGVbXSBieXRlcywgb3V0IEVuY29kaW5nIGVuY29kaW5n
LCBvdXQgYm9vbCBoYWRCCiAJCQl9CiAJCX0KIAorCQlwdWJsaWMgc3RhdGljIHN0cmluZyBHZXRU
ZXh0IChieXRlW10gYnl0ZXMsIEVuY29kaW5nIGVuY29kaW5nLCBvdXQgYm9vbCBoYWRCb20pCisJ
CXsKKwkJCWJ5dGVbXSBib20gPSBlbmNvZGluZy5HZXRQcmVhbWJsZSAoKTsKKwkJCWlmIChib20g
IT0gbnVsbCAmJiBib20uTGVuZ3RoID4gMCAmJiBib20uTGVuZ3RoIDw9IGJ5dGVzLkxlbmd0aCkg
eworCQkJCWhhZEJvbSA9IHRydWU7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBib20uTGVuZ3Ro
OyBpKyspIHsKKwkJCQkJaWYgKGJ5dGVzIFtpXSAhPSBib20gW2ldKSB7CisJCQkJCQloYWRCb20g
PSBmYWxzZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlo
YWRCb20gPSBmYWxzZTsKKwkJCX0KKwkJCWlmIChoYWRCb20pIAorCQkJCXJldHVybiBlbmNvZGlu
Zy5HZXRTdHJpbmcgKGJ5dGVzLCBib20uTGVuZ3RoLCBieXRlcy5MZW5ndGggLSBib20uTGVuZ3Ro
KTsKKwkJCXJldHVybiBlbmNvZGluZy5HZXRTdHJpbmcgKGJ5dGVzKTsKKwkJfQorCiAJCXB1Ymxp
YyBzdGF0aWMgc3RyaW5nIEdldFRleHQgKFN0cmVhbSBpbnB1dFN0cmVhbSkKIAkJewogCQkJdXNp
bmcgKHZhciBzdHJlYW0gPSBPcGVuU3RyZWFtIChpbnB1dFN0cmVhbSkpIHsKQEAgLTMwMywyMSAr
MzIyLDggQEAgcHVibGljIHN0YXRpYyBzdHJpbmcgUmVhZEFsbFRleHQgKHN0cmluZyBmaWxlTmFt
ZSwgRW5jb2RpbmcgZW5jb2RpbmcsIG91dCBib29sIGgKIAkJCQl0aHJvdyBuZXcgQXJndW1lbnRO
dWxsRXhjZXB0aW9uICgiZW5jb2RpbmciKTsKIAkJCQogCQkJYnl0ZVtdIGNvbnRlbnQgPSBGaWxl
LlJlYWRBbGxCeXRlcyAoZmlsZU5hbWUpOwotCQkJYnl0ZVtdIGJvbSA9IGVuY29kaW5nLkdldFBy
ZWFtYmxlICgpOwotCQkJaWYgKGJvbSAhPSBudWxsICYmIGJvbS5MZW5ndGggPiAwICYmIGJvbS5M
ZW5ndGggPD0gY29udGVudC5MZW5ndGgpIHsKLQkJCQloYWRCb20gPSB0cnVlOwotCQkJCWZvciAo
aW50IGkgPSAwOyBpIDwgYm9tLkxlbmd0aDsgaSsrKSB7Ci0JCQkJCWlmIChjb250ZW50IFtpXSAh
PSBib20gW2ldKSB7Ci0JCQkJCQloYWRCb209IGZhbHNlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0K
LQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWhhZEJvbSA9IGZhbHNlOwotCQkJfQotCQkJcmV0dXJu
IGVuY29kaW5nLkdldFN0cmluZyAoY29udGVudCk7CisJCQlyZXR1cm4gR2V0VGV4dCAoY29udGVu
dCwgZW5jb2RpbmcsIG91dCBoYWRCb20pOyAKIAkJfQotCiAJCSNlbmRyZWdpb24KIAogCQkjcmVn
aW9uIEFTQ0lJIGVuY29kaW5nIGNoZWNrDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9E
ZXZlbG9wLlRleHRFZGl0b3IuVGVzdHMvTW9uby5UZXh0RWRpdG9yLlRlc3RzL1RleHRGaWxlUmVh
ZGVyVGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNDMsNiArMTQzLDE4IEBAIHB1YmxpYyB2b2lk
IFRlc3RHQjE4MDMwICgpCiAJCQlieXRlW10gaW5wdXQgPSBFbmNvZGluZy5HZXRFbmNvZGluZyAo
NTQ5MzYpLkdldEJ5dGVzIChzcmMpOwogCQkJQXNzZXJ0LkFyZUVxdWFsIChzcmMsIFRleHRGaWxl
VXRpbGl0eS5HZXRUZXh0IChpbnB1dCkpOwogCQl9CisKKwkJLy8vIDxzdW1tYXJ5PgorCQkvLy8g
QnVnIDE2MzMyIC0gRHVwbGljYXRlIEJPTSEgCisJCS8vLyA8L3N1bW1hcnk+CisJCVtUZXN0KCld
CisJCXB1YmxpYyB2b2lkIFRlc3RCdWcxNjMzMiAoKQkKKwkJeworCQkJYnl0ZVtdIGlucHV0ID0g
bmV3IGJ5dGVbXSB7IDB4RUYsIDB4QkIsIDB4QkYsIChieXRlKSdhJ307CisJCQlib29sIGhhZEJv
bTsKKwkJCUFzc2VydC5BcmVFcXVhbCAoImEiLCBUZXh0RmlsZVV0aWxpdHkuR2V0VGV4dCAoaW5w
dXQsIEVuY29kaW5nLlVURjgsIG91dCBoYWRCb20pKTsKKwkJCUFzc2VydC5Jc1RydWUgKGhhZEJv
bSk7CisJCX0KIAl9CiB9CiANCg0KICAgQ29tbWl0OiBlMGVmNTE2MGJhMTMwN2JlNzY2OWJhOWJi
ZWRmNjljNmQ1YjhlNmRhDQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJp
bi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0yMCAwNzowMjoxOCBHTVQNCiAg
ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2UwZWY1
MTYwYmExMzA3YmU3NjY5YmE5YmJlZGY2OWM2ZDViOGU2ZGENCg0KW0lkZV0gTmV3bHkgY3JlYXRl
ZCBmaWxlcyBhbHdheXMgY3JlYXRlIGEgQk9NLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9z
cmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlRlbXBsYXRlcy9TaW5nbGVG
aWxlRGVzY3JpcHRpb25UZW1wbGF0ZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9E
ZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVGVtcGxhdGVzL1NpbmdsZUZpbGVEZXNjcmlwdGlv
blRlbXBsYXRlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjcyLDcgKzI3MiwxMSBAQCBwdWJsaWMgdmly
dHVhbCBTdHJlYW0gQ3JlYXRlRmlsZUNvbnRlbnQgKFNvbHV0aW9uSXRlbSBwb2xpY3lQYXJlbnQs
IFByb2plY3QgcHJvagogCQkJCQljb250ZW50ID0gZm9ybWF0dGVkOwogCQkJfQogCQkJCi0JCQlN
ZW1vcnlTdHJlYW0gbXMgPSBuZXcgTWVtb3J5U3RyZWFtICgpOworCQkJdmFyIG1zID0gbmV3IE1l
bW9yeVN0cmVhbSAoKTsKKworCQkJdmFyIGJvbSA9IEVuY29kaW5nLlVURjguR2V0UHJlYW1ibGUg
KCk7CisJCQltcy5Xcml0ZSAoYm9tLCAwLCBib20uTGVuZ3RoKTsKKwogCQkJYnl0ZVtdIGRhdGE7
CiAJCQlpZiAoQWRkU3RhbmRhcmRIZWFkZXIpIHsKIAkJCQlzdHJpbmcgaGVhZGVyID0gU3RhbmRh
cmRIZWFkZXJTZXJ2aWNlLkdldEhlYWRlciAocG9saWN5UGFyZW50LCBmaWxlTmFtZSwgdHJ1ZSk7
DQoNCiAgIENvbW1pdDogNmI1MzE0NGY5OTA3NDE1YWVkMmM1Njk4YmI4ZDA5MmM0Zjk4NDliYg0K
ICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIp
DQogICAgIERhdGU6IDIwMTMtMTEtMjAgMDc6MjI6MzQgR01UDQogICAgICBVUkw6IGh0dHBzOi8v
Z2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC82YjUzMTQ0Zjk5MDc0MTVhZWQyYzU2
OThiYjhkMDkyYzRmOTg0OWJiDQoNCltTb3VyY2VFZGl0b3JdIEZpeGVkIGEgYnVnIHdoZXJlIHRo
ZSBCT00gY291bGQgZ2V0IHJlbW92ZWQuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9h
ZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3Iv
U291cmNlRWRpdG9yVmlldy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLlNvdXJj
ZUVkaXRvcjIvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yL1NvdXJjZUVkaXRvcldpZGdldC5jcwoN
Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yMi9Nb25v
RGV2ZWxvcC5Tb3VyY2VFZGl0b3IvU291cmNlRWRpdG9yVmlldy5jcw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg
LTY5MiwxMSArNjkyLDE1IEBAIHB1YmxpYyB2b2lkIFNhdmUgKHN0cmluZyBmaWxlTmFtZSwgRW5j
b2RpbmcgZW5jb2RpbmcpCiAJCQkJCXZhciB3cml0ZUJvbSA9IGhhZEJvbTsKIAkJCQkJdmFyIHdy
aXRlVGV4dCA9IERvY3VtZW50LlRleHQ7CiAJCQkJCWlmICh3cml0ZUVuY29kaW5nID09IG51bGwp
IHsKLQkJCQkJCXdyaXRlRW5jb2RpbmcgPSBFbmNvZGluZy5VVEY4OwotCQkJCQkJLy8gRGlzYWJs
ZWQuIFNob3dzIHVwIGluIHRoZSBzb3VyY2UgY29udHJvbCBhcyBkaWZmLCBpdCdzIGF0bSBjb25m
dXNpbmcgZm9yIHRoZSB1c2VycyB0byBzZWUgYSBjaGFuZ2Ugd2l0aG91dAotCQkJCQkJLy8gY2hh
bmdlZCBmaWxlcy4KLQkJCQkJCXdyaXRlQm9tID0gZmFsc2U7Ci0vLwkJCQkJCXdyaXRlQm9tID0h
TW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxlVXRpbGl0eS5Jc0FTQ0lJICh3cml0ZVRleHQp
OworCQkJCQkJaWYgKHRoaXMuZW5jb2RpbmcgIT0gbnVsbCkgeworCQkJCQkJCXdyaXRlRW5jb2Rp
bmcgPSB0aGlzLmVuY29kaW5nOworCQkJCQkJfSBlbHNlIHsgCisJCQkJCQkJd3JpdGVFbmNvZGlu
ZyA9IEVuY29kaW5nLlVURjg7CisJCQkJCQkJLy8gRGlzYWJsZWQuIFNob3dzIHVwIGluIHRoZSBz
b3VyY2UgY29udHJvbCBhcyBkaWZmLCBpdCdzIGF0bSBjb25mdXNpbmcgZm9yIHRoZSB1c2VycyB0
byBzZWUgYSBjaGFuZ2Ugd2l0aG91dAorCQkJCQkJCS8vIGNoYW5nZWQgZmlsZXMuCisJCQkJCQkJ
d3JpdGVCb20gPSBmYWxzZTsKKwkvLwkJCQkJCXdyaXRlQm9tID0hTW9uby5UZXh0RWRpdG9yLlV0
aWxzLlRleHRGaWxlVXRpbGl0eS5Jc0FTQ0lJICh3cml0ZVRleHQpOworCQkJCQkJfQogCQkJCQl9
CiAJCQkJCU1vbm8uVGV4dEVkaXRvci5VdGlscy5UZXh0RmlsZVV0aWxpdHkuV3JpdGVUZXh0IChm
aWxlTmFtZSwgd3JpdGVUZXh0LCB3cml0ZUVuY29kaW5nLCB3cml0ZUJvbSk7CiAJCQkJfSBjYXRj
aCAoSW52YWxpZEVuY29kaW5nRXhjZXB0aW9uKSB7CkBAIC05MTAsNyArOTE0LDcgQEAgaW50ZXJu
YWwgdm9pZCBTdG9yZVNldHRpbmdzICgpCiAKIAkJYm9vbCB3YXJuT3ZlcndyaXRlID0gZmFsc2U7
CiAJCWJvb2wgaW5Mb2FkID0gZmFsc2U7Ci0JCUVuY29kaW5nIGVuY29kaW5nID0gbnVsbDsKKwkJ
RW5jb2RpbmcgZW5jb2Rpbmc7CiAJCWJvb2wgaGFkQm9tID0gZmFsc2U7CiAKIAkJaW50ZXJuYWwg
dm9pZCBSZXBsYWNlQ29udGVudCAoc3RyaW5nIGZpbGVOYW1lLCBzdHJpbmcgY29udGVudCwgRW5j
b2RpbmcgZW5jb2RpbmcpDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3Au
U291cmNlRWRpdG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IvU291cmNlRWRpdG9yV2lkZ2V0
LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtOTI3LDcgKzkyNyw3IEBAIGludGVybmFsIHZvaWQgQ29udmVy
dExpbmVFbmRpbmdzICgpCiAJCQkJCW5ld1RleHQuQXBwZW5kIChjb3JyZWN0RW9sKTsKIAkJCX0K
IAkJCXZpZXcuU3RvcmVTZXR0aW5ncyAoKTsKLQkJCXZpZXcuUmVwbGFjZUNvbnRlbnQgKERvY3Vt
ZW50LkZpbGVOYW1lLCBuZXdUZXh0LlRvU3RyaW5nICgpLCBudWxsKTsKKwkJCXZpZXcuUmVwbGFj
ZUNvbnRlbnQgKERvY3VtZW50LkZpbGVOYW1lLCBuZXdUZXh0LlRvU3RyaW5nICgpLCB2aWV3LlNv
dXJjZUVuY29kaW5nKTsKIAkJCURvY3VtZW50Lkhhc0xpbmVFbmRpbmdNaXNtYXRjaE9uVGV4dFNl
dCA9IGZhbHNlOwogCQkJdmlldy5Mb2FkU2V0dGluZ3MgKCk7CiAJCX0KQEAgLTEwNzMsNyArMTA3
Myw3IEBAIHB1YmxpYyB2b2lkIFNob3dBdXRvU2F2ZVdhcm5pbmcgKHN0cmluZyBmaWxlTmFtZSkK
IAkJCQkJCUF1dG9TYXZlLlJlbW92ZUF1dG9TYXZlRmlsZSAoZmlsZU5hbWUpOwogCQkJCQkJVGV4
dEVkaXRvci5HcmFiRm9jdXMgKCk7CiAJCQkJCQl2aWV3LkxvYWQgKGZpbGVOYW1lKTsKLQkJCQkJ
CXZpZXcuUmVwbGFjZUNvbnRlbnQgKGZpbGVOYW1lLCBjb250ZW50LCBudWxsKTsKKwkJCQkJCXZp
ZXcuUmVwbGFjZUNvbnRlbnQgKGZpbGVOYW1lLCBjb250ZW50LCB2aWV3LlNvdXJjZUVuY29kaW5n
KTsKIAkJCQkJCXZpZXcuV29ya2JlbmNoV2luZG93LkRvY3VtZW50LlJlcGFyc2VEb2N1bWVudCAo
KTsKIAkJCQkJCXZpZXcuSXNEaXJ0eSA9IHRydWU7CiAJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBl
eCkgew0KDQogICBDb21taXQ6IDk1OGM2ZjQzMjI2ODgxZjBiNDhhMjdhYTgwZGJkZmQ5MDkwYmQz
OTYNCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1hcmluLmNvbT4gKG1rcnVl
Z2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTIwIDA4OjM1OjI3IEdNVA0KICAgICAgVVJMOiBodHRw
czovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvOTU4YzZmNDMyMjY4ODFmMGI0
OGEyN2FhODBkYmRmZDkwOTBiZDM5Ng0KDQpGaXhlZCAnQnVnIDE2MDgzIC0gIkZpbmQgUmVmZXJl
bmNlcyIgZmFpbHMgaWYgZmlsZXMgYXJlIG1vdmVkJy4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h
aW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5SZWZhY3Rvcmlu
Zy9DU2hhcnBSZWZlcmVuY2VGaW5kZXIuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NT
aGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJwLlJlZmFjdG9yaW5nL0NTaGFycFJlZmVyZW5j
ZUZpbmRlci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ1NoYXJwUmVm
ZXJlbmNlRmluZGVyIDogUmVmZXJlbmNlRmluZGVyCiAJCUxpc3Q8RmlsZVBhdGg+IGZpbGVzID0g
bmV3IExpc3Q8RmlsZVBhdGg+ICgpOwogCQlMaXN0PFR1cGxlPEZpbGVQYXRoLCBNb25vRGV2ZWxv
cC5JZGUuR3VpLkRvY3VtZW50Pj4gb3BlbkRvY3VtZW50cyA9IG5ldyBMaXN0PFR1cGxlPEZpbGVQ
YXRoLCBNb25vRGV2ZWxvcC5JZGUuR3VpLkRvY3VtZW50Pj4gKCk7CiAJCQotCQlzdHJpbmcgbWVt
YmVyTmFtZTsNCisJCXN0cmluZyBtZW1iZXJOYW1lOwogCQlzdHJpbmcga2V5d29yZE5hbWU7CiAJ
CQogCQlwdWJsaWMgQ1NoYXJwUmVmZXJlbmNlRmluZGVyICgpCkBAIC02MywxNyArNjMsMTcgQEAg
cHVibGljIENTaGFycFJlZmVyZW5jZUZpbmRlciAoKQogCQlwdWJsaWMgdm9pZCBTZXRTZWFyY2hl
ZE1lbWJlcnMgKElFbnVtZXJhYmxlPG9iamVjdD4gbWVtYmVycykKIAkJewogCQkJc2VhcmNoZWRN
ZW1iZXJzID0gbmV3IExpc3Q8b2JqZWN0PiAobWVtYmVycyk7Ci0JCQl2YXIgZmlyc3RNZW1iZXIg
PSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1bHQgKCk7DQotCQkJaWYgKGZpcnN0TWVtYmVy
IGlzIElOYW1lZEVsZW1lbnQpIHsNCisJCQl2YXIgZmlyc3RNZW1iZXIgPSBzZWFyY2hlZE1lbWJl
cnMuRmlyc3RPckRlZmF1bHQgKCk7CisJCQlpZiAoZmlyc3RNZW1iZXIgaXMgSU5hbWVkRWxlbWVu
dCkgewogCQkJCXZhciBuYW1lZEVsZW1lbnQgPSAoSU5hbWVkRWxlbWVudClmaXJzdE1lbWJlcjsK
IAkJCQl2YXIgbmFtZSA9IG5hbWVkRWxlbWVudC5OYW1lOwogCQkJCWlmIChuYW1lZEVsZW1lbnQg
aXMgSU1ldGhvZCAmJiAoKChJTWV0aG9kKW5hbWVkRWxlbWVudCkuSXNDb25zdHJ1Y3RvciB8ICgo
SU1ldGhvZCluYW1lZEVsZW1lbnQpLklzRGVzdHJ1Y3RvcikpCiAJCQkJCW5hbWUgPSAoKElNZXRo
b2QpbmFtZWRFbGVtZW50KS5EZWNsYXJpbmdUeXBlLk5hbWU7Ci0JCQkJbWVtYmVyTmFtZSA9IG5h
bWU7DQotDQotCQkJCWtleXdvcmROYW1lID0gQ1NoYXJwQW1iaWVuY2UuTmV0VG9DU2hhcnBUeXBl
TmFtZSAobmFtZWRFbGVtZW50LkZ1bGxOYW1lKTsNCi0JCQkJaWYgKGtleXdvcmROYW1lID09IG5h
bWVkRWxlbWVudC5GdWxsTmFtZSkNCi0JCQkJCWtleXdvcmROYW1lID0gbnVsbDsNCisJCQkJbWVt
YmVyTmFtZSA9IG5hbWU7CisKKwkJCQlrZXl3b3JkTmFtZSA9IENTaGFycEFtYmllbmNlLk5ldFRv
Q1NoYXJwVHlwZU5hbWUgKG5hbWVkRWxlbWVudC5GdWxsTmFtZSk7CisJCQkJaWYgKGtleXdvcmRO
YW1lID09IG5hbWVkRWxlbWVudC5GdWxsTmFtZSkKKwkJCQkJa2V5d29yZE5hbWUgPSBudWxsOwog
CQkJfQogCQkJaWYgKGZpcnN0TWVtYmVyIGlzIHN0cmluZykKIAkJCQltZW1iZXJOYW1lID0gZmly
c3RNZW1iZXIuVG9TdHJpbmcgKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgTWVtYmVyUmVmZXJlbmNl
IEdldFJlZmVyZW5jZSAoUHJvamVjdCBwcm9qZWN0LCBSZXNvbHZlUmVzdWx0IHJlc3VsdCwgQXN0
Tm9kZSBub2QKIAkJc2tpcDoKIAogCQkJdmFyIHJlZ2lvbiA9IG5ldyBEb21SZWdpb24gKGZpbGVO
YW1lLCBub2RlLlN0YXJ0TG9jYXRpb24sIG5vZGUuRW5kTG9jYXRpb24pOwotDQorCiAJCQl2YXIg
bGVuZ3RoID0gbm9kZSBpcyBQcmltaXRpdmVUeXBlID8ga2V5d29yZE5hbWUuTGVuZ3RoIDogbm9k
ZS5FbmRMb2NhdGlvbi5Db2x1bW4gLSBub2RlLlN0YXJ0TG9jYXRpb24uQ29sdW1uOwogCQkJaWYg
KHZhbGlkID09IG51bGwpCiAJCQkJdmFsaWQgPSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1
bHQgKCk7CkBAIC0zMDQsNyArMzA0LDEyIEBAIHB1YmxpYyBvdmVycmlkZSBJRW51bWVyYWJsZTxN
ZW1iZXJSZWZlcmVuY2U+IEZpbmRSZWZlcmVuY2VzIChQcm9qZWN0IHByb2plY3QsIElQCiAJCQlm
b3JlYWNoICh2YXIgZmlsZSBpbiBmaWxlcykgewogCQkJCWlmIChtb25pdG9yICE9IG51bGwpCiAJ
CQkJCW1vbml0b3IuU3RlcCAoMSk7Ci0JCQkJc3RyaW5nIHRleHQgPSBNb25vLlRleHRFZGl0b3Iu
VXRpbHMuVGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChmaWxlKTsKKwkJCQlzdHJpbmcgdGV4
dDsKKwkJCQl0cnkgeworCQkJCQl0ZXh0ID0gTW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxl
VXRpbGl0eS5SZWFkQWxsVGV4dCAoZmlsZSk7CisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uKSB7CisJ
CQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCQlpZiAobWVtYmVyTmFtZSAhPSBudWxsICYmIHRleHQu
SW5kZXhPZiAobWVtYmVyTmFtZSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDAgJiYKIAkJ
CQkJKGtleXdvcmROYW1lID09IG51bGwgfHwgdGV4dC5JbmRleE9mIChrZXl3b3JkTmFtZSwgU3Ry
aW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDApKQogCQkJCQljb250aW51ZTsNCg0KICAgQ29tbWl0
OiA1MTgzNDEwZWUyYzZmNDBjZDRhNjBiNmNhMTgwOWE4MWQ5ZDhhYzJkDQogICBBdXRob3I6IE1p
a2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTog
MjAxMy0xMS0yMCAxMToyMTozMCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21v
bm8vbW9ub2RldmVsb3AvY29tbWl0LzUxODM0MTBlZTJjNmY0MGNkNGE2MGI2Y2ExODA5YTgxZDlk
OGFjMmQNCg0KW1JlZmFjdG9yaW5nXSBBZGRlZCBpbnN0cnVtZW50YXRpb24gdGltZXIgZm9yIGJh
Y2tncm91bmQgYW5hbHlzaXMuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMv
TW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvUmVmYWN0b3Jp
bmdTZXJ2aWNlLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZh
Y3RvcmluZy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9SZWZhY3RvcmluZ1NlcnZpY2UuY3MNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCkBAIC00MSw2ICs0MSw3IEBACiB1c2luZyBNb25vLlRleHRFZGl0b3I7CiB1c2lu
ZyBNb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbTsKIHVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsK
K3VzaW5nIE1vbm9EZXZlbG9wLkNvcmUuSW5zdHJ1bWVudGF0aW9uOwogCiBuYW1lc3BhY2UgTW9u
b0RldmVsb3AuUmVmYWN0b3JpbmcKIHsKQEAgLTIwNCw0OSArMjA1LDI2IEBAIHB1YmxpYyBzdGF0
aWMgVGFzazxJRW51bWVyYWJsZTxDb2RlQWN0aW9uPj4gR2V0VmFsaWRBY3Rpb25zIChEb2N1bWVu
dCBkb2MsIFRleHRMCiAJCQlzdHJpbmcgZGlzYWJsZWROb2RlcyA9IGVkaXRvciAhPSBudWxsID8g
UHJvcGVydHlTZXJ2aWNlLkdldCAoIkNvbnRleHRBY3Rpb25zLiIgKyBlZGl0b3IuTWltZVR5cGUs
ICIiKSA/PyAiIiA6ICIiOwogCQkJcmV0dXJuIFRhc2suRmFjdG9yeS5TdGFydE5ldyAoZGVsZWdh
dGUgewogCQkJCXZhciByZXN1bHQgPSBuZXcgTGlzdDxDb2RlQWN0aW9uPiAoKTsKKwkJCQl2YXIg
dGltZXIgPSBJbnN0cnVtZW50YXRpb25TZXJ2aWNlLkNyZWF0ZVRpbWVyQ291bnRlciAoIlNvdXJj
ZSBhbmFseXNpcyBiYWNrZ3JvdW5kIHRhc2siLCAiU291cmNlIGFuYWx5c2lzIik7CisJCQkJdGlt
ZXIuQmVnaW5UaW1pbmcgKCk7CiAJCQkJdHJ5IHsKLQkJCQkJI2lmIFBST0ZJTEUKLQkJCQkJdmFy
IHJ1bkxpc3QgPSBuZXcgTGlzdDxUdXBsZTxsb25nLCBzdHJpbmc+PiAoKTsKLQkJCQkJdmFyIGds
b2JhbENsb2NrID0gbmV3IFN0b3B3YXRjaCgpOwotCQkJCQlnbG9iYWxDbG9jay5TdGFydCAoKTsK
LQotCQkJCQkjZW5kaWYKLQogCQkJCQl2YXIgcGFyc2VkRG9jdW1lbnQgPSBkb2MuUGFyc2VkRG9j
dW1lbnQ7CiAJCQkJCWlmIChlZGl0b3IgIT0gbnVsbCAmJiBwYXJzZWREb2N1bWVudCAhPSBudWxs
ICYmIHBhcnNlZERvY3VtZW50LkNyZWF0ZVJlZmFjdG9yaW5nQ29udGV4dCAhPSBudWxsKSB7CiAJ
CQkJCQl2YXIgY3R4ID0gcGFyc2VkRG9jdW1lbnQuQ3JlYXRlUmVmYWN0b3JpbmdDb250ZXh0IChk
b2MsIGNhbmNlbGxhdGlvblRva2VuKTsKIAkJCQkJCWlmIChjdHggIT0gbnVsbCkgewogCQkJCQkJ
CWZvcmVhY2ggKHZhciBwcm92aWRlciBpbiBjb250ZXh0QWN0aW9ucy5XaGVyZSAoZml4ID0+IGRp
c2FibGVkTm9kZXMuSW5kZXhPZiAoZml4LklkU3RyaW5nLCBTdHJpbmdDb21wYXJpc29uLk9yZGlu
YWwpIDwgMCkpIHsKLQkJCQkJCQkJI2lmIFBST0ZJTEUKLQkJCQkJCQkJdmFyIGNsb2NrID0gbmV3
IFN0b3B3YXRjaCgpOwotCQkJCQkJCQljbG9jay5TdGFydCAoKTsKLQkJCQkJCQkJI2VuZGlmCiAJ
CQkJCQkJCXRyeSB7CiAJCQkJCQkJCQlyZXN1bHQuQWRkUmFuZ2UgKHByb3ZpZGVyLkdldEFjdGlv
bnMgKGRvYywgY3R4LCBsb2MsIGNhbmNlbGxhdGlvblRva2VuKSk7CiAJCQkJCQkJCX0gY2F0Y2gg
KEV4Y2VwdGlvbiBleCkgewogCQkJCQkJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJFcnJv
ciBpbiBjb250ZXh0IGFjdGlvbiBwcm92aWRlciAiICsgcHJvdmlkZXIuVGl0bGUsIGV4KTsKIAkJ
CQkJCQkJfQotCQkJCQkJCQkjaWYgUFJPRklMRQotCQkJCQkJCQljbG9jay5TdG9wICgpOwotCQkJ
CQkJCQlsb2NrIChydW5MaXN0KSB7Ci0JCQkJCQkJCQlydW5MaXN0LkFkZCAoVHVwbGUuQ3JlYXRl
IChjbG9jay5FbGFwc2VkTWlsbGlzZWNvbmRzLCBwcm92aWRlci5UaXRsZSkpOyAKLQkJCQkJCQkJ
fQotCQkJCQkJCQkjZW5kaWYKIAkJCQkJCQl9CiAJCQkJCQl9CiAJCQkJCX0KLQkJCQkJI2lmIFBS
T0ZJTEUKLQkJCQkJZ2xvYmFsQ2xvY2suU3RvcCAoKTsKLQkJCQkJcnVuTGlzdC5Tb3J0ICgpOwot
CQkJCQlDb25zb2xlLldyaXRlTGluZSAoIkFsbDogIiArIGdsb2JhbENsb2NrLkVsYXBzZWRNaWxs
aXNlY29uZHMgKyJtcyIpOwotCQkJCQlmb3JlYWNoICh2YXIgaXRlbSBpbiBydW5MaXN0KSB7Ci0J
CQkJCQlpZiAoaXRlbS5JdGVtMSA9PSAwKQotCQkJCQkJCWNvbnRpbnVlOwotCQkJCQkJQ29uc29s
ZS5Xcml0ZUxpbmUgKGl0ZW0uSXRlbTEgKyJtc1x0OiAiICsgaXRlbS5JdGVtMik7Ci0JCQkJCX0K
LQkJCQkJI2VuZGlmCiAJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAJCQkJCUxvZ2dpbmdT
ZXJ2aWNlLkxvZ0Vycm9yICgiRXJyb3IgaW4gYW5hbHlzaXMgc2VydmljZSIsIGV4KTsKKwkJCQl9
IGZpbmFsbHkgeworCQkJCQl0aW1lci5FbmRUaW1pbmcgKCk7CiAJCQkJfQogCQkJCXJldHVybiAo
SUVudW1lcmFibGU8Q29kZUFjdGlvbj4pcmVzdWx0OwogCQkJfSwgY2FuY2VsbGF0aW9uVG9rZW4p
Ow0KDQogICBDb21taXQ6IDZmYzA3MjE5NzA0ODc3YmQ1YzVkMDNjN2VmOGI1YjYwOTBmNzI1ZGQN
CiAgIEF1dGhvcjogSmVmZnJleSBTdGVkZmFzdCA8amVmZkB4YW1hcmluLmNvbT4gKGpzdGVkZmFz
dCkNCiAgICAgRGF0ZTogMjAxMy0xMS0yMCAyMDo1Mzo1MiBHTVQNCiAgICAgIFVSTDogaHR0cHM6
Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzZmYzA3MjE5NzA0ODc3YmQ1YzVk
MDNjN2VmOGI1YjYwOTBmNzI1ZGQNCg0KYnVtcGVkIG1kLWFkZGlucw0KDQpDaGFuZ2VkIHBhdGhz
OgogIE0gdmVyc2lvbi1jaGVja3MKDQpNb2RpZmllZDogdmVyc2lvbi1jaGVja3MNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCkBAIC0xNyw3ICsxNyw3IEBAIERFUFswXT1tZC1hZGRpbnMKIERFUF9OQU1FWzBdPU1EQURE
SU5TCiBERVBfUEFUSFswXT0ke3RvcF9zcmNkaXJ9Ly4uL21kLWFkZGlucwogREVQX01PRFVMRVsw
XT1naXRAZ2l0aHViLmNvbTp4YW1hcmluL21kLWFkZGlucy5naXQKLURFUF9ORUVERURfVkVSU0lP
TlswXT1mZjI1ZWE5MDc2YjdhODBmYmI1MmJjZGE4Mjc5NDU3OWYyYWE1NzViCitERVBfTkVFREVE
X1ZFUlNJT05bMF09MzkzYmE0YmE5NDYzZTgyZmE5YjhkYzc4YTFiNDAxZDY0YTE0NDE1NQogREVQ
X0JSQU5DSF9BTkRfUkVNT1RFWzBdPSJtYXN0ZXIgb3JpZ2luL21hc3RlciIKIAogIyBoZWFwLXNo
b3QNCg0KICAgQ29tbWl0OiA1MjJmNzk1NGUxNDg2ZTBjZDIwMjBmMzFhNjQ4NmJlNzY1NTI5ZmVm
DQogICBBdXRob3I6IEFsYW4gTWNHb3Zlcm4gPGFsYW5AeGFtYXJpbi5jb20+IChhbGFubWNnb3Zl
cm4pDQogICAgIERhdGU6IDIwMTMtMTEtMjAgMjI6MjA6MzIgR01UDQogICAgICBVUkw6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC81MjJmNzk1NGUxNDg2ZTBjZDIw
MjBmMzFhNjQ4NmJlNzY1NTI5ZmVmDQoNCltHaXRdIERpc2FibGUgdGhlc2UgNCBuZXcgdGVzdHMg
dW50aWwgdGhleSBjYW4gYmUgbWFkZSBncmVlbiBvbiBNYWMNCg0KQ2hhbmdlZCBwYXRoczoKICBN
IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv
bC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3Ny
Yy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRl
c3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNjIsNiArMTYy
LDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFscyAoQW5ub3Rh
dGlvbiBbXSBhbm5vdGF0aW9ucykKIAkJfQ0KIA0KIAkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhp
cyBpcyBhIG5ldyB0ZXN0IHdoaWNoIGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQogCQlwdWJs
aWMgdm9pZCBUZXN0R2l0U3Rhc2ggKCkNCiAJCXsNCiAJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3Np
dG9yeSlSZXBvOw0KQEAgLTE3Niw2ICsxNzcsNyBAQCBwdWJsaWMgdm9pZCBUZXN0R2l0U3Rhc2gg
KCkKIAkJfQ0KIA0KIAkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhpcyBpcyBhIG5ldyB0ZXN0IHdo
aWNoIGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQogCQlwdWJsaWMgdm9pZCBUZXN0R2l0QnJh
bmNoQ3JlYXRpb24gKCkNCiAJCXsNCiAJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBv
Ow0KQEAgLTIwNCw2ICsyMDYsNyBAQCBwdWJsaWMgdm9pZCBUZXN0R2l0QnJhbmNoQ3JlYXRpb24g
KCkKIAkJfQ0KIA0KIAkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhpcyBpcyBhIG5ldyB0ZXN0IHdo
aWNoIGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQogCQlwdWJsaWMgdm9pZCBUZXN0R2l0U3lu
Y0JyYW5jaGVzICgpDQogCQl7DQogCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsN
CkBAIC0zMDcsNiArMzEwLDcgQEAgcHVibGljIHZvaWQgVGVzdFJlbW90ZSAoKQogCQl9DQogDQog
CQlbVGVzdF0NCisJCVtJZ25vcmUgKCJ0aGlzIGlzIGEgbmV3IHRlc3Qgd2hpY2ggZG9lc24ndCBw
YXNzIG9uIE1hYyB5ZXQiKV0NCiAJCXB1YmxpYyB2b2lkIFRlc3RJc01lcmdlZCAoKQ0KIAkJew0K
IAkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQ0KDQogICBDb21taXQ6IGRhZTNj
MGNiN2QzNjAwMTRkY2FjMmVkODBkZTRjN2YyMjBiN2MyNzUNCiAgIEF1dGhvcjogVW5ndXJlYW51
IE1hcml1cyA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMt
MTEtMjAgMjM6MDQ6MzUgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21v
bm9kZXZlbG9wL2NvbW1pdC9kYWUzYzBjYjdkMzYwMDE0ZGNhYzJlZDgwZGU0YzdmMjIwYjdjMjc1
DQoNCltHaXRdIFJlbW92ZSBrZXljaGFpbiBzdG9yYWdlIGZvciBnaXQgcGFzc3dvcmRzCgpVbnRp
bCB3ZSBmaW5kIGEgYmV0dGVyIHdheSB0byBzdG9yZSB0aGVtIGFuZCBub3QgYmUgY29ycnVwdGVk
LgoKRG93bnNpZGU6IEl0IHJlcXVpcmVzIHBhc3MgaW5wdXQgb24gZXZlcnkgcHVzaC4NCg0KQ2hh
bmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxv
cC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L0dpdENy
ZWRlbnRpYWxzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9N
b25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu
R2l0L0dpdENyZWRlbnRpYWxzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWMgb3ZlcnJpZGUgYm9vbCBHZXQgKFVSSWlzaCB1cmksIHBhcmFtcyBDcmVkZW50aWFsSXRlbVtd
IGl0ZW1zKQogCQkJCiAJCQkvLyBXZSBhbHdheXMgbmVlZCB0byBydW4gdGhlIFRyeUdldCogbWV0
aG9kcyBhcyB3ZSBuZWVkIHRoZSBwYXNzcGhyYXNlSXRlbS9wYXNzd29yZEl0ZW0gcG9wdWxhdGVk
IGV2ZW4KIAkJCS8vIGlmIHRoZSBwYXNzd29yZCBzdG9yZSBjb250YWlucyBhbiBpbnZhbGlkIHBh
c3N3b3JkL25vIHBhc3N3b3JkCi0JCQlpZiAoVHJ5R2V0VXNlcm5hbWVQYXNzd29yZCAodXJpLCBp
dGVtcywgb3V0IHBhc3N3b3JkSXRlbSkgfHwgVHJ5R2V0UGFzc3BocmFzZSAodXJpLCBpdGVtcywg
b3V0IHBhc3NwaHJhc2VJdGVtKSkgeworCQkJaWYgKC8qVHJ5R2V0VXNlcm5hbWVQYXNzd29yZCAo
dXJpLCBpdGVtcywgb3V0IHBhc3N3b3JkSXRlbSkgfHwgKi9UcnlHZXRQYXNzcGhyYXNlICh1cmks
IGl0ZW1zLCBvdXQgcGFzc3BocmFzZUl0ZW0pKSB7CiAJCQkJLy8gSWYgdGhlIHBhc3N3b3JkIHN0
b3JlIGhhcyBhIHBhc3N3b3JkIGFuZCB3ZSBhbHJlYWR5IHRyaWVkIHVzaW5nIGl0LCBpdCBjb3Vs
ZCBiZSBpbmNvcnJlY3QuCiAJCQkJLy8gSWYgdGhpcyBoYXBwZW5zLCBkbyBub3QgcmV0dXJuIHRy
dWUgYW5kIGFzayB0aGUgdXNlciBmb3IgYSBuZXcgcGFzc3dvcmQuCiAJCQkJaWYgKCFIYXNSZXNl
dCkgewpAQCAtNzUsOSArNzUsOSBAQCBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBHZXQgKFVSSWlzaCB1
cmksIHBhcmFtcyBDcmVkZW50aWFsSXRlbVtdIGl0ZW1zKQogCQkJCQogCQkJSGFzUmVzZXQgPSBm
YWxzZTsKIAkJCWlmIChyZXN1bHQpIHsKLQkJCQlpZiAocGFzc3dvcmRJdGVtICE9IG51bGwpIHsK
KwkJCQkvKmlmIChwYXNzd29yZEl0ZW0gIT0gbnVsbCkgewogCQkJCQlQYXNzd29yZFNlcnZpY2Uu
QWRkV2ViUGFzc3dvcmQgKG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIG5ldyBzdHJpbmcgKHBh
c3N3b3JkSXRlbS5HZXRWYWx1ZSAoKSkpOwotCQkJCX0gZWxzZSBpZiAocGFzc3BocmFzZUl0ZW0g
IT0gbnVsbCkgeworCQkJCX0gZWxzZSovIGlmIChwYXNzcGhyYXNlSXRlbSAhPSBudWxsKSB7CiAJ
CQkJCVBhc3N3b3JkU2VydmljZS5BZGRXZWJQYXNzd29yZCAobmV3IFVyaSAodXJpLlRvU3RyaW5n
ICgpKSwgcGFzc3BocmFzZUl0ZW0uR2V0VmFsdWUgKCkpOwogCQkJCX0KIAkJCX0NCg0KICAgQ29t
bWl0OiBlODdhMTJjZmJmNWExNGNlYmYzNDU5NzQzOTNkOWE4N2RjODFlZTc3DQogICBBdXRob3I6
IFVuZ3VyZWFudSBNYXJpdXMgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBE
YXRlOiAyMDEzLTExLTIwIDIzOjIyOjQzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5j
b20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvZTg3YTEyY2ZiZjVhMTRjZWJmMzQ1OTc0MzkzZDlh
ODdkYzgxZWU3Nw0KDQpbR2l0XSBQcm9wZXJseSBmaXgga2V5Y2hhaW4gc2F2aW5nCgpEYW1uIHlv
dSBoYWNrZml4IQ0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D
b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9u
Q29udHJvbC5HaXQvR2l0Q3JlZGVudGlhbHMuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z
L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxv
cC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0Q3JlZGVudGlhbHMuY3MNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYyBvdmVycmlkZSBib29sIEdldCAoVVJJaXNoIHVyaSwgcGFyYW1z
IENyZWRlbnRpYWxJdGVtW10gaXRlbXMpCiAJCQkKIAkJCS8vIFdlIGFsd2F5cyBuZWVkIHRvIHJ1
biB0aGUgVHJ5R2V0KiBtZXRob2RzIGFzIHdlIG5lZWQgdGhlIHBhc3NwaHJhc2VJdGVtL3Bhc3N3
b3JkSXRlbSBwb3B1bGF0ZWQgZXZlbgogCQkJLy8gaWYgdGhlIHBhc3N3b3JkIHN0b3JlIGNvbnRh
aW5zIGFuIGludmFsaWQgcGFzc3dvcmQvbm8gcGFzc3dvcmQKLQkJCWlmICgvKlRyeUdldFVzZXJu
YW1lUGFzc3dvcmQgKHVyaSwgaXRlbXMsIG91dCBwYXNzd29yZEl0ZW0pIHx8ICovVHJ5R2V0UGFz
c3BocmFzZSAodXJpLCBpdGVtcywgb3V0IHBhc3NwaHJhc2VJdGVtKSkgeworCQkJaWYgKFRyeUdl
dFVzZXJuYW1lUGFzc3dvcmQgKHVyaSwgaXRlbXMsIG91dCBwYXNzd29yZEl0ZW0pIHx8IFRyeUdl
dFBhc3NwaHJhc2UgKHVyaSwgaXRlbXMsIG91dCBwYXNzcGhyYXNlSXRlbSkpIHsKIAkJCQkvLyBJ
ZiB0aGUgcGFzc3dvcmQgc3RvcmUgaGFzIGEgcGFzc3dvcmQgYW5kIHdlIGFscmVhZHkgdHJpZWQg
dXNpbmcgaXQsIGl0IGNvdWxkIGJlIGluY29ycmVjdC4KIAkJCQkvLyBJZiB0aGlzIGhhcHBlbnMs
IGRvIG5vdCByZXR1cm4gdHJ1ZSBhbmQgYXNrIHRoZSB1c2VyIGZvciBhIG5ldyBwYXNzd29yZC4K
IAkJCQlpZiAoIUhhc1Jlc2V0KSB7CkBAIC03NSw5ICs3NSwxMCBAQCBwdWJsaWMgb3ZlcnJpZGUg
Ym9vbCBHZXQgKFVSSWlzaCB1cmksIHBhcmFtcyBDcmVkZW50aWFsSXRlbVtdIGl0ZW1zKQogCQkJ
CQogCQkJSGFzUmVzZXQgPSBmYWxzZTsKIAkJCWlmIChyZXN1bHQpIHsKLQkJCQkvKmlmIChwYXNz
d29yZEl0ZW0gIT0gbnVsbCkgewotCQkJCQlQYXNzd29yZFNlcnZpY2UuQWRkV2ViUGFzc3dvcmQg
KG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIG5ldyBzdHJpbmcgKHBhc3N3b3JkSXRlbS5HZXRW
YWx1ZSAoKSkpOwotCQkJCX0gZWxzZSovIGlmIChwYXNzcGhyYXNlSXRlbSAhPSBudWxsKSB7CisJ
CQkJdmFyIHVzZXIgPSBpdGVtcy5PZlR5cGU8Q3JlZGVudGlhbEl0ZW0uVXNlcm5hbWU+ICgpLkZp
cnN0T3JEZWZhdWx0ICgpOworCQkJCWlmIChwYXNzd29yZEl0ZW0gIT0gbnVsbCkgeworCQkJCQlQ
YXNzd29yZFNlcnZpY2UuQWRkV2ViVXNlck5hbWVBbmRQYXNzd29yZCAobmV3IFVyaSAodXJpLlRv
U3RyaW5nICgpKSwgdXNlci5HZXRWYWx1ZSAoKSwgbmV3IHN0cmluZyAocGFzc3dvcmRJdGVtLkdl
dFZhbHVlICgpKSk7CisJCQkJfSBlbHNlIGlmIChwYXNzcGhyYXNlSXRlbSAhPSBudWxsKSB7CiAJ
CQkJCVBhc3N3b3JkU2VydmljZS5BZGRXZWJQYXNzd29yZCAobmV3IFVyaSAodXJpLlRvU3RyaW5n
ICgpKSwgcGFzc3BocmFzZUl0ZW0uR2V0VmFsdWUgKCkpOwogCQkJCX0KIAkJCX0KQEAgLTExOCwx
MCArMTE5LDEwIEBAIHN0YXRpYyBib29sIFRyeUdldFVzZXJuYW1lUGFzc3dvcmQgKFVSSWlzaCB1
cmksIENyZWRlbnRpYWxJdGVtW10gaXRlbXMsIG91dCBDcmVkCiAJCQlpZiAoaXRlbXMuTGVuZ3Ro
ID09IDIgJiYgdXNlcm5hbWUgIT0gbnVsbCAmJiBwYXNzd29yZCAhPSBudWxsKSB7CiAJCQkJcGFz
c3dvcmRJdGVtID0gcGFzc3dvcmQ7CiAKLQkJCQl2YXIgcGFzc3dvcmRWYWx1ZSA9IFBhc3N3b3Jk
U2VydmljZS5HZXRXZWJQYXNzd29yZCAoYWN0dWFsVXJsKTsKLQkJCQlpZiAocGFzc3dvcmRWYWx1
ZSAhPSBudWxsKSB7Ci0JCQkJCXVzZXJuYW1lLlNldFZhbHVlIChhY3R1YWxVcmwuVXNlckluZm8p
OwotCQkJCQlwYXNzd29yZC5TZXRWYWx1ZU5vQ29weSAocGFzc3dvcmRWYWx1ZS5Ub0FycmF5ICgp
KTsKKwkJCQl2YXIgY3JlZCA9IFBhc3N3b3JkU2VydmljZS5HZXRXZWJVc2VyTmFtZUFuZFBhc3N3
b3JkIChhY3R1YWxVcmwpOworCQkJCWlmIChjcmVkICE9IG51bGwpIHsKKwkJCQkJdXNlcm5hbWUu
U2V0VmFsdWUgKGNyZWQuSXRlbTEpOworCQkJCQlwYXNzd29yZC5TZXRWYWx1ZU5vQ29weSAoY3Jl
ZC5JdGVtMi5Ub0FycmF5ICgpKTsKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJfQogCQkJfSBlbHNl
IHsNCg0KICAgQ29tbWl0OiA2MDdlOTVhN2U2NjFiYWVmYTQwNGYyYjgxNDljNGI5MWU4MDBjNWZj
DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdl
cikNCiAgICAgRGF0ZTogMjAxMy0xMS0yMSAwNjowNToyMyBHTVQNCiAgICAgIFVSTDogaHR0cHM6
Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzYwN2U5NWE3ZTY2MWJhZWZhNDA0
ZjJiODE0OWM0YjkxZTgwMGM1ZmMNCg0KW1NvdXJjZUVkaXRvcl0gUGFyc2VyIGVycm9yIHVuZGVy
bGluZXMgYXJlIG5vdyBtb3JlIHByZWNpc2UuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3Ny
Yy9hZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0
b3IvU291cmNlRWRpdG9yV2lkZ2V0LmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25v
RGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01vbm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VFZGl0
b3JXaWRnZXQuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNzIwLDYgKzE3MjAsMTQgQEAgcHVibGljIEVy
cm9yTWFya2VyIChUZXh0RG9jdW1lbnQgZG9jLCBFcnJvciBpbmZvLCBEb2N1bWVudExpbmUgbGlu
ZSkKIAkJCVdhdmUgPSB0cnVlOwogCQkJCiAJCQlTdGFydENvbCA9IEluZm8uUmVnaW9uLkJlZ2lu
Q29sdW1uOworCQkJdmFyIHN0YXJ0T2Zmc2V0ID0gbGluZS5PZmZzZXQ7CisJCQl3aGlsZSAoU3Rh
cnRDb2wgPCBsaW5lLkxlbmd0aCkgeworCQkJCWNoYXIgY2ggPSBkb2MuR2V0Q2hhckF0IChzdGFy
dE9mZnNldCArIFN0YXJ0Q29sIC0gMSk7CisJCQkJaWYgKCFjaGFyLklzV2hpdGVTcGFjZSAoY2gp
KQorCQkJCQlicmVhazsKKwkJCQlTdGFydENvbCsrOworCQkJfQorCiAJCQlpZiAoSW5mby5SZWdp
b24uRW5kQ29sdW1uID4gU3RhcnRDb2wpIHsKIAkJCQlFbmRDb2wgPSBJbmZvLlJlZ2lvbi5FbmRD
b2x1bW47CiAJCQl9IGVsc2Ugew0KDQogICBDb21taXQ6IGI2MTFmYTZjNmRiYmJmZjQyZjliOTRm
OGMwOGViYTU3N2Y5MWQ0OWENCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1h
cmluLmNvbT4gKG1rcnVlZ2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTIxIDA2OjA1OjIzIEdNVA0K
ICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvYjYx
MWZhNmM2ZGJiYmZmNDJmOWI5NGY4YzA4ZWJhNTc3ZjkxZDQ5YQ0KDQpGaXhlZCAnQnVnIDE2MzY2
IC0gRXJyb3IgaGludHMgYXJlIG5vdCBkaXNwbGF5ZWQgaWYgdGhlIGNvZGUgaGFzIHNtYWxsCmlu
ZGVudC4nLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0
b3IvTW9uby5UZXh0RWRpdG9yL0d1aS9UZXh0QXJlYS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9j
b3JlL01vbm8uVGV4dGVkaXRvci9Nb25vLlRleHRFZGl0b3IvR3VpL1RleHRBcmVhLmNzDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgcHVibGljIGludCBSZXBsYWNlQWxsIChzdHJp
bmcgd2l0aFBhdHRlcm4pCiAJCQogCQl2b2lkIFNob3dUb29sdGlwIChHZGsuTW9kaWZpZXJUeXBl
IG1vZGlmaWVyU3RhdGUpCiAJCXsKLQkJCWlmIChteCA8IFRleHRWaWV3TWFyZ2luLlhPZmZzZXQg
KyBUZXh0Vmlld01hcmdpbi5UZXh0U3RhcnRQb3NpdGlvbikgeworCQkJaWYgKG14IDwgVGV4dFZp
ZXdNYXJnaW4uVGV4dFN0YXJ0UG9zaXRpb24pIHsKIAkJCQlIaWRlVG9vbHRpcCAoKTsKIAkJCQly
ZXR1cm47CiAJCQl9DQoNCiAgIENvbW1pdDogY2I4MGIwYmJmYWY2ODM4ZTFiOTJlMzU2YzI2ODI5
YWFhYzgzZDAwMA0KICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29t
PiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMtMTEtMjEgMDc6MDA6NDMgR01UDQogICAgICBV
Ukw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9jYjgwYjBiYmZh
ZjY4MzhlMWI5MmUzNTZjMjY4MjlhYWFjODNkMDAwDQoNCkZpeGVkICdCdWcgMTYzNjggLSBEb2N1
bWVudCBmb3JtYXR0aW5nOiBOZXcgbGluZSBpbnNpZGUvYXJvdW5kICNyZWdpb24gaW1wcm92ZW1l
bnQ/Jw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5Cg0KTW9k
aWZpZWQ6IG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQ0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEgKzEgQEAK
LVN1YnByb2plY3QgY29tbWl0IGVhNzViYWMzZjM3NDA2MWJhM2MyOGFlMDBmN2I5NjUxODlmOTNm
MzEKK1N1YnByb2plY3QgY29tbWl0IDY1MDllNzY0OGY2MDU2NDlkY2YwMWY4MjZjOTZhNTdjNGE1
NTU2OWINCg0KICAgQ29tbWl0OiAzMWFkNGMzNjFhYzI1NjVmMmY5ZWY4ZDU5ZGFmYWVjZTY4ZDA5
OWNhDQogICBBdXRob3I6IErDqXLDqW1pZSBMYXZhbCA8amVyZW1pZS5sYXZhbEBnbWFpbC5jb20+
IChnYXJ1bWEpDQogICAgIERhdGU6IDIwMTMtMTEtMjEgMTY6MjE6MjUgR01UDQogICAgICBVUkw6
IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8zMWFkNGMzNjFhYzI1
NjVmMmY5ZWY4ZDU5ZGFmYWVjZTY4ZDA5OWNhDQoNCltidWlsZF0gQnVtcCBtZC1hZGRpbnMNCg0K
Q2hhbmdlZCBwYXRoczoKICBNIHZlcnNpb24tY2hlY2tzCg0KTW9kaWZpZWQ6IHZlcnNpb24tY2hl
Y2tzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtMTcsNyArMTcsNyBAQCBERVBbMF09bWQtYWRkaW5zCiBERVBf
TkFNRVswXT1NREFERElOUwogREVQX1BBVEhbMF09JHt0b3Bfc3JjZGlyfS8uLi9tZC1hZGRpbnMK
IERFUF9NT0RVTEVbMF09Z2l0QGdpdGh1Yi5jb206eGFtYXJpbi9tZC1hZGRpbnMuZ2l0Ci1ERVBf
TkVFREVEX1ZFUlNJT05bMF09MzkzYmE0YmE5NDYzZTgyZmE5YjhkYzc4YTFiNDAxZDY0YTE0NDE1
NQorREVQX05FRURFRF9WRVJTSU9OWzBdPTAyZmM4ZmE3MjM3NTM4YTBkY2Q3NDRlZDlmMTQ5ZTNm
YzZhYmMzZjIKIERFUF9CUkFOQ0hfQU5EX1JFTU9URVswXT0ibWFzdGVyIG9yaWdpbi9tYXN0ZXIi
CiAKICMgaGVhcC1zaG90DQoNCiAgIENvbW1pdDogYmUxOTk4ZjU1YTRhYTA4N2Q1YzAwMDlhNDJk
ZTdiMTlmMDJiNjJiNw0KICAgQXV0aG9yOiBMbHVpcyBTYW5jaGV6IDxsbHVpc0B4YW1hcmluLmNv
bT4gKHNsbHVpcykNCiAgICAgRGF0ZTogMjAxMy0xMS0yMSAxODo1OTo1NyBHTVQNCiAgICAgIFVS
TDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2JlMTk5OGY1NWE0
YWEwODdkNWMwMDA5YTQyZGU3YjE5ZjAyYjYyYjcNCg0KTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJy
YW5jaCAnb3JpZ2luL21hc3RlcicgaW50byByZXRpbmEKCkNvbmZsaWN0czoKCXZlcnNpb24tY2hl
Y2tzDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL2RlYnVnZ2VyLWxpYnMKICBN
IG1haW4vZXh0ZXJuYWwvbW9uby1hZGRpbnMKICBNIG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQog
IE0gbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJwLkNvbXBs
ZXRpb24vTWVtYmVyQ29tcGxldGlvbkRhdGEuY3MKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBC
aW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5SZWZhY3RvcmluZy9DU2hhcnBSZWZlcmVuY2VGaW5k
ZXIuY3MKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFy
cC5Ub29sdGlwcy9MYW5ndWFnZUl0ZW1Ub29sdGlwUHJvdmlkZXIuY3MKICBNIG1haW4vc3JjL2Fk
ZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC9TaWduYXR1cmVNYXJrdXBDcmVh
dG9yLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25v
RGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MK
ICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9Nb25vRGV2ZWxvcC5D
b2RlSXNzdWVzL0NvZGVJc3N1ZVBhZC5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9w
LlJlZmFjdG9yaW5nL01vbm9EZXZlbG9wLlJlZmFjdG9yaW5nL1JlZmFjdG9yaW5nU2VydmljZS5j
cwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLlNvdXJjZUVkaXRvcjIvTW9ub0RldmVs
b3AuU291cmNlRWRpdG9yL1NvdXJjZUVkaXRvclZpZXcuY3MKICBNIG1haW4vc3JjL2FkZGlucy9N
b25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01vbm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VF
ZGl0b3JXaWRnZXQuY3MKICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVu
Y2VzL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy9XQ0ZDb25maWdXaWRnZXQuY3MK
ICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvTW9u
b0RldmVsb3AuV2ViUmVmZXJlbmNlcy5EaWFsb2dzLldDRkNvbmZpZ1dpZGdldC5jcwogIE0gbWFp
bi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1aS9ndWkuc3RldGlj
CiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNv
bnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2Fk
ZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMv
QmFzZVJlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9s
L01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv
bC5HaXQvR2l0Q3JlZGVudGlhbHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv
bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy
b2wuR2l0L0dpdFJlcG9zaXRvcnkuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv
bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBv
c2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2
ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwog
IE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250
cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLmNzcHJvagogIE0gbWFpbi9zcmMvYWRkaW5z
L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZl
cnNpb25Db250cm9sL0NoYW5nZVNldC5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250
cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL1ZlcnNpb25Db250cm9sLmFkZGluLnhtbAog
IE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMv
UmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvU3Vi
dmVyc2lvbi5XaW4zMi9WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLldpbjMyLmNzcHJvagogIE0g
bWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0RWRpdG9yLlV0aWxzL1RleHRG
aWxlVXRpbGl0eS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0
RWRpdG9yLlZpL1ZpTW9kZS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9u
by5UZXh0RWRpdG9yL0d1aS9UZXh0QXJlYS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxv
cC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL0NyZWRlbnRpYWxTdG9yZS5jcwogIE0gbWFpbi9z
cmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL0lDcmVkZW50aWFs
UHJvdmlkZXIuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxv
cC5Db3JlLldlYi9Qcm94eUNhY2hlLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNv
cmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvUmVxdWVzdEhlbHBlci5jcwogIE0gbWFpbi9zcmMvY29y
ZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1dlYlNlcnZpY2UuY3MKICBN
IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvagog
IE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2lu
Z1NlcnZpY2UuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxv
cC5Db3JlL1J1bnRpbWUuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9E
ZXZlbG9wLkNvbXBvbmVudHMuTWFpblRvb2xiYXIvUHJvamVjdFNlYXJjaENhdGVnb3J5LmNzCiAg
TSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuR3VpLk9wdGlv
blBhbmVscy9Nb25vUnVudGltZVBhbmVsLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9w
LklkZS9Nb25vRGV2ZWxvcC5JZGUuUHJvamVjdHMuT3B0aW9uUGFuZWxzL0NvbWJpbmVCdWlsZE9w
dGlvbnMuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklk
ZS5Qcm9qZWN0cy5PcHRpb25QYW5lbHMvUnVudGltZU9wdGlvbnNQYW5lbC5jcwogIE0gbWFpbi9z
cmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlRlbXBsYXRlcy9TaW5nbGVG
aWxlRGVzY3JpcHRpb25UZW1wbGF0ZS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5J
ZGUvTW9ub0RldmVsb3AuSWRlLlR5cGVTeXN0ZW0vVHlwZVN5c3RlbVNlcnZpY2UuY3MKICBNIG1h
aW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS9JZGVTdGFydHVwLmNz
CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLlRleHRFZGl0b3IuVGVzdHMvTW9uby5UZXh0
RWRpdG9yLlRlc3RzL1RleHRGaWxlUmVhZGVyVGVzdHMuY3MKICBNIG1haW4vdGVzdHMvVW5pdFRl
c3RzL01vbm9EZXZlbG9wLkNTaGFycEJpbmRpbmcvT25UaGVGbHlGb3JtYXR0ZXJUZXN0cy5jcwog
IE0gbWFpbi94YnVpbGQuaW5jbHVkZQoNCk1vZGlmaWVkOiBtYWluL2V4dGVybmFsL2RlYnVnZ2Vy
LWxpYnMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCkBAIC0xICsxIEBACi1TdWJwcm9qZWN0IGNvbW1pdCBlNjFhMjBl
MTQ1MWZmMTJlZTRiMDY3MmNjOTUyM2FkMmM2MTJiZWI5CitTdWJwcm9qZWN0IGNvbW1pdCAzNDU5
NTAyNGYwMDcyYzFjZmM1YjFkZGUxZDE5NGQwZGNjNWMxMWZiDQoNCk1vZGlmaWVkOiBtYWluL2V4
dGVybmFsL21vbm8tYWRkaW5zDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBj
b21taXQgMGExYzBhMDZlZDczODE5MDZhMjc0NjZhZmE5MWJkODI0Zjc1ZGUwMgorU3VicHJvamVj
dCBjb21taXQgMjFkNzE1YWRlZGFhOWE4YmMxMjU1ZGU3ZGRmMGQyNDQ1NjIyYzE4Nw0KDQpNb2Rp
ZmllZDogbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5DQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAot
U3VicHJvamVjdCBjb21taXQgNTA3MzNmNTAyYTJhMzhkODM2YjQ2NGMxZWI2NzhmZjYzNmUyYWU1
MAorU3VicHJvamVjdCBjb21taXQgNjUwOWU3NjQ4ZjYwNTY0OWRjZjAxZjgyNmM5NmE1N2M0YTU1
NTY5Yg0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVs
b3AuQ1NoYXJwLkNvbXBsZXRpb24vTWVtYmVyQ29tcGxldGlvbkRhdGEuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
CkBAIC02ODIsMzAgKzY4Miw3IEBAIHB1YmxpYyBzdGF0aWMgVG9vbHRpcEluZm9ybWF0aW9uIENy
ZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoSUNvbXBpbGF0aW9uIGNvbXBpbGF0CiAJCQkJfQogCQkJ
fQogCQkJaWYgKGNyZWF0ZUZvb3RlcikgewotCQkJCWlmIChlbnRpdHkgaXMgSVR5cGUpIHsKLQkJ
CQkJdmFyIHR5cGUgPSBlbnRpdHkgYXMgSVR5cGU7Ci0JCQkJCXZhciBkZWYgPSB0eXBlLkdldERl
ZmluaXRpb24gKCk7Ci0JCQkJCWlmIChkZWYgIT0gbnVsbCkgewotCQkJCQkJaWYgKCFzdHJpbmcu
SXNOdWxsT3JFbXB0eSAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpIHsKLQkJCQkJ
CQl2YXIgcHJvamVjdCA9IGRlZi5HZXRTb3VyY2VQcm9qZWN0ICgpOwotCQkJCQkJCWlmIChwcm9q
ZWN0ICE9IG51bGwpIHsKLQkJCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0
ZVRvUmVsYXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGRlZi5SZWdpb24uRmlsZU5h
bWUpOwotCQkJCQkJCQl0b29sdGlwSW5mby5Gb290ZXJNYXJrdXAgPSAiPHNtYWxsPiIgKyBHZXR0
ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQcm9qZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVz
Y2FwZVRleHQgKGRlZi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSArICI8L3NtYWxsPiIg
KyBFbnZpcm9ubWVudC5OZXdMaW5lICsKLQkJCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRh
bG9nLkdldFN0cmluZyAoIkZpbGU6XHRcdHswfSAobGluZSB7MX0pIiwgQW1iaWVuY2VTZXJ2aWNl
LkVzY2FwZVRleHQgKHJlbFBhdGgpLCBkZWYuUmVnaW9uLkJlZ2luLkxpbmUpICsgIjwvc21hbGw+
IjsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQotCQkJCX0gZWxzZSBpZiAoZW50aXR5LkRl
Y2xhcmluZ1R5cGVEZWZpbml0aW9uICE9IG51bGwpIHsKLQkJCQkJdmFyIHByb2plY3QgPSBlbnRp
dHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uR2V0U291cmNlUHJvamVjdCAoKTsKLQkJCQkJaWYg
KHByb2plY3QgIT0gbnVsbCkgewotCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNv
bHV0ZVRvUmVsYXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGVudGl0eS5SZWdpb24u
RmlsZU5hbWUpOwotCQkJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3VwID0gCi0JCQkJCQkJIjxz
bWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmll
bmNlU2VydmljZS5Fc2NhcGVUZXh0IChwcm9qZWN0Lk5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZp
cm9ubWVudC5OZXdMaW5lICsKLQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRT
dHJpbmcgKCJGcm9tOlx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGVudGl0eS5E
ZWNsYXJpbmdUeXBlLkZ1bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGlu
ZSArCi0JCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRmlsZTpc
dFx0ezB9IChsaW5lIHsxfSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVsUGF0aCks
IGVudGl0eS5SZWdpb24uQmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOwotCQkJCQl9Ci0JCQkJfQor
CQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1hcmt1cCA9IHNpZy5DcmVhdGVGb290ZXIgKGVudGl0eSk7
CiAJCQl9CiAJCQlyZXR1cm4gdG9vbHRpcEluZm87CiAJCX0KQEAgLTczMiw4ICs3MDksOCBAQCBw
dWJsaWMgc3RhdGljIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwSW5mb3JtYXRpb24g
KElDb21waWxhdGlvbiBjb21waWxhdAogCiAJCQl2YXIgZGVmID0gdHlwZS5HZXREZWZpbml0aW9u
ICgpOwogCQkJaWYgKGRlZiAhPSBudWxsKSB7Ci0JCQkJaWYgKGNyZWF0ZUZvb3RlciAmJiAhc3Ry
aW5nLklzTnVsbE9yRW1wdHkgKGRlZi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKQotCQkJ
CQl0b29sdGlwSW5mby5Gb290ZXJNYXJrdXAgPSAiPHNtYWxsPiBGcm9tICIgKyBBbWJpZW5jZVNl
cnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkgKyAiPC9z
bWFsbD4iOworCQkJCWlmIChjcmVhdGVGb290ZXIpCisJCQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1h
cmt1cCA9IHNpZy5DcmVhdGVGb290ZXIgKGRlZik7CiAJCQkJdG9vbHRpcEluZm8uU3VtbWFyeU1h
cmt1cCA9IEFtYmllbmNlU2VydmljZS5HZXRTdW1tYXJ5TWFya3VwIChkZWYpID8/ICIiOwogCQkJ
fQogCQkJcmV0dXJuIHRvb2x0aXBJbmZvOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NT
aGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJwLlJlZmFjdG9yaW5nL0NTaGFycFJlZmVyZW5j
ZUZpbmRlci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ1NoYXJwUmVm
ZXJlbmNlRmluZGVyIDogUmVmZXJlbmNlRmluZGVyCiAJCUxpc3Q8RmlsZVBhdGg+IGZpbGVzID0g
bmV3IExpc3Q8RmlsZVBhdGg+ICgpOwogCQlMaXN0PFR1cGxlPEZpbGVQYXRoLCBNb25vRGV2ZWxv
cC5JZGUuR3VpLkRvY3VtZW50Pj4gb3BlbkRvY3VtZW50cyA9IG5ldyBMaXN0PFR1cGxlPEZpbGVQ
YXRoLCBNb25vRGV2ZWxvcC5JZGUuR3VpLkRvY3VtZW50Pj4gKCk7CiAJCQotCQlzdHJpbmcgbWVt
YmVyTmFtZTsNCisJCXN0cmluZyBtZW1iZXJOYW1lOwogCQlzdHJpbmcga2V5d29yZE5hbWU7CiAJ
CQogCQlwdWJsaWMgQ1NoYXJwUmVmZXJlbmNlRmluZGVyICgpCkBAIC02MywxNyArNjMsMTcgQEAg
cHVibGljIENTaGFycFJlZmVyZW5jZUZpbmRlciAoKQogCQlwdWJsaWMgdm9pZCBTZXRTZWFyY2hl
ZE1lbWJlcnMgKElFbnVtZXJhYmxlPG9iamVjdD4gbWVtYmVycykKIAkJewogCQkJc2VhcmNoZWRN
ZW1iZXJzID0gbmV3IExpc3Q8b2JqZWN0PiAobWVtYmVycyk7Ci0JCQl2YXIgZmlyc3RNZW1iZXIg
PSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1bHQgKCk7DQotCQkJaWYgKGZpcnN0TWVtYmVy
IGlzIElOYW1lZEVsZW1lbnQpIHsNCisJCQl2YXIgZmlyc3RNZW1iZXIgPSBzZWFyY2hlZE1lbWJl
cnMuRmlyc3RPckRlZmF1bHQgKCk7CisJCQlpZiAoZmlyc3RNZW1iZXIgaXMgSU5hbWVkRWxlbWVu
dCkgewogCQkJCXZhciBuYW1lZEVsZW1lbnQgPSAoSU5hbWVkRWxlbWVudClmaXJzdE1lbWJlcjsK
IAkJCQl2YXIgbmFtZSA9IG5hbWVkRWxlbWVudC5OYW1lOwogCQkJCWlmIChuYW1lZEVsZW1lbnQg
aXMgSU1ldGhvZCAmJiAoKChJTWV0aG9kKW5hbWVkRWxlbWVudCkuSXNDb25zdHJ1Y3RvciB8ICgo
SU1ldGhvZCluYW1lZEVsZW1lbnQpLklzRGVzdHJ1Y3RvcikpCiAJCQkJCW5hbWUgPSAoKElNZXRo
b2QpbmFtZWRFbGVtZW50KS5EZWNsYXJpbmdUeXBlLk5hbWU7Ci0JCQkJbWVtYmVyTmFtZSA9IG5h
bWU7DQotDQotCQkJCWtleXdvcmROYW1lID0gQ1NoYXJwQW1iaWVuY2UuTmV0VG9DU2hhcnBUeXBl
TmFtZSAobmFtZWRFbGVtZW50LkZ1bGxOYW1lKTsNCi0JCQkJaWYgKGtleXdvcmROYW1lID09IG5h
bWVkRWxlbWVudC5GdWxsTmFtZSkNCi0JCQkJCWtleXdvcmROYW1lID0gbnVsbDsNCisJCQkJbWVt
YmVyTmFtZSA9IG5hbWU7CisKKwkJCQlrZXl3b3JkTmFtZSA9IENTaGFycEFtYmllbmNlLk5ldFRv
Q1NoYXJwVHlwZU5hbWUgKG5hbWVkRWxlbWVudC5GdWxsTmFtZSk7CisJCQkJaWYgKGtleXdvcmRO
YW1lID09IG5hbWVkRWxlbWVudC5GdWxsTmFtZSkKKwkJCQkJa2V5d29yZE5hbWUgPSBudWxsOwog
CQkJfQogCQkJaWYgKGZpcnN0TWVtYmVyIGlzIHN0cmluZykKIAkJCQltZW1iZXJOYW1lID0gZmly
c3RNZW1iZXIuVG9TdHJpbmcgKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgTWVtYmVyUmVmZXJlbmNl
IEdldFJlZmVyZW5jZSAoUHJvamVjdCBwcm9qZWN0LCBSZXNvbHZlUmVzdWx0IHJlc3VsdCwgQXN0
Tm9kZSBub2QKIAkJc2tpcDoKIAogCQkJdmFyIHJlZ2lvbiA9IG5ldyBEb21SZWdpb24gKGZpbGVO
YW1lLCBub2RlLlN0YXJ0TG9jYXRpb24sIG5vZGUuRW5kTG9jYXRpb24pOwotDQorCiAJCQl2YXIg
bGVuZ3RoID0gbm9kZSBpcyBQcmltaXRpdmVUeXBlID8ga2V5d29yZE5hbWUuTGVuZ3RoIDogbm9k
ZS5FbmRMb2NhdGlvbi5Db2x1bW4gLSBub2RlLlN0YXJ0TG9jYXRpb24uQ29sdW1uOwogCQkJaWYg
KHZhbGlkID09IG51bGwpCiAJCQkJdmFsaWQgPSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1
bHQgKCk7CkBAIC0zMDQsNyArMzA0LDEyIEBAIHB1YmxpYyBvdmVycmlkZSBJRW51bWVyYWJsZTxN
ZW1iZXJSZWZlcmVuY2U+IEZpbmRSZWZlcmVuY2VzIChQcm9qZWN0IHByb2plY3QsIElQCiAJCQlm
b3JlYWNoICh2YXIgZmlsZSBpbiBmaWxlcykgewogCQkJCWlmIChtb25pdG9yICE9IG51bGwpCiAJ
CQkJCW1vbml0b3IuU3RlcCAoMSk7Ci0JCQkJc3RyaW5nIHRleHQgPSBNb25vLlRleHRFZGl0b3Iu
VXRpbHMuVGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChmaWxlKTsKKwkJCQlzdHJpbmcgdGV4
dDsKKwkJCQl0cnkgeworCQkJCQl0ZXh0ID0gTW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxl
VXRpbGl0eS5SZWFkQWxsVGV4dCAoZmlsZSk7CisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uKSB7CisJ
CQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCQlpZiAobWVtYmVyTmFtZSAhPSBudWxsICYmIHRleHQu
SW5kZXhPZiAobWVtYmVyTmFtZSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDAgJiYKIAkJ
CQkJKGtleXdvcmROYW1lID09IG51bGwgfHwgdGV4dC5JbmRleE9mIChrZXl3b3JkTmFtZSwgU3Ry
aW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDApKQogCQkJCQljb250aW51ZTsNCg0KTW9kaWZpZWQ6
IG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5Ub29sdGlw
cy9MYW5ndWFnZUl0ZW1Ub29sdGlwUHJvdmlkZXIuY3MNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNDEsNyAr
MTQxLDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIEd0ay5XaW5kb3cgQ3JlYXRlVG9vbHRpcFdpbmRv
dyAoTW9uby5UZXh0RWRpdG9yLlRleHRFZGl0b3IgZWQKIAogCQkJdmFyIHRpdGVtID0gKFRvb2xU
aXBEYXRhKWl0ZW0uSXRlbTsKIAotCQkJdmFyIHRvb2x0aXBJbmZvcm1hdGlvbiA9IENyZWF0ZVRv
b2x0aXAgKHRpdGVtLCBvZmZzZXQsIG51bGwpOworCQkJdmFyIHRvb2x0aXBJbmZvcm1hdGlvbiA9
IENyZWF0ZVRvb2x0aXAgKHRpdGVtLCBvZmZzZXQsIG51bGwsIG1vZGlmaWVyU3RhdGUpOwogCQkJ
aWYgKHRvb2x0aXBJbmZvcm1hdGlvbiA9PSBudWxsIHx8IHN0cmluZy5Jc051bGxPckVtcHR5ICh0
b29sdGlwSW5mb3JtYXRpb24uU2lnbmF0dXJlTWFya3VwKSkKIAkJCQlyZXR1cm4gbnVsbDsKIApA
QCAtMTc5LDEyICsxNzksMTMgQEAgcHVibGljIG92ZXJyaWRlIEd0ay5XaW5kb3cgU2hvd1Rvb2x0
aXBXaW5kb3cgKFRleHRFZGl0b3IgZWRpdG9yLCBpbnQgb2Zmc2V0LCBHZGsKIAkJCXJldHVybiB0
aXBXaW5kb3c7CiAJCX0KIAotCQlUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9v
bFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuY2UpCisJCVRvb2x0aXBJ
bmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29sVGlwRGF0YSBkYXRhLCBpbnQgb2Zmc2V0LCBB
bWJpZW5jZSBhbWJpZW5jZSwgR2RrLk1vZGlmaWVyVHlwZSBtb2RpZmllclN0YXRlKQogCQl7CiAJ
CQlSZXNvbHZlUmVzdWx0IHJlc3VsdCA9IGRhdGEuUmVzdWx0OwogCQkJdmFyIGRvYyA9IElkZUFw
cC5Xb3JrYmVuY2guQWN0aXZlRG9jdW1lbnQ7CiAJCQlpZiAoZG9jID09IG51bGwpCiAJCQkJcmV0
dXJuIG51bGw7CisJCQlib29sIGNyZWF0ZUZvb3RlciA9IChtb2RpZmllclN0YXRlICYgR2RrLk1v
ZGlmaWVyVHlwZS5Nb2QxTWFzaykgIT0gMDsKIAkJCXRyeSB7CiAKIAkJCQlpZiAocmVzdWx0IGlz
IEFsaWFzTmFtZXNwYWNlUmVzb2x2ZVJlc3VsdCkgewpAQCAtMjc2LDEyICsyNzcsMTMgQEAgVG9v
bHRpcEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXAgKFRvb2xUaXBEYXRhIGRhdGEsIGludCBvZmZz
ZXQsIEFtYmllbmNlIGFtYmllbmMKIAkJCQkJdmFyIG1ldGhvZCA9IGFsbE1ldGhvZHMuRmlyc3RP
ckRlZmF1bHQgKCk7CiAJCQkJCWlmIChtZXRob2QgIT0gbnVsbCkgewogCQkJCQkJcmV0dXJuIE1l
bWJlckNvbXBsZXRpb25EYXRhLkNyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoCi0JCQkJCQlkb2Mu
Q29tcGlsYXRpb24sCi0JCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hh
cnBVbnJlc29sdmVkRmlsZSwKLQkJCQkJCWRvYy5FZGl0b3IsCi0JCQkJCQlkb2MuR2V0Rm9ybWF0
dGluZ1BvbGljeSAoKSwKLQkJCQkJCW1ldGhvZCwgCi0JCQkJCQlmYWxzZSk7CisJCQkJCQkJZG9j
LkNvbXBpbGF0aW9uLAorCQkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENT
aGFycFVucmVzb2x2ZWRGaWxlLAorCQkJCQkJCWRvYy5FZGl0b3IsCisJCQkJCQkJZG9jLkdldEZv
cm1hdHRpbmdQb2xpY3kgKCksCisJCQkJCQkJbWV0aG9kLAorCQkJCQkJCWZhbHNlLAorCQkJCQkJ
CWNyZWF0ZUZvb3Rlcik7CiAJCQkJCX0KIAkJCQl9IGVsc2UgaWYgKHJlc3VsdCBpcyBDU2hhcnBJ
bnZvY2F0aW9uUmVzb2x2ZVJlc3VsdCkgewogCQkJCQl2YXIgaW52b2NhdGlvblJlc3VsdCA9IChD
U2hhcnBJbnZvY2F0aW9uUmVzb2x2ZVJlc3VsdClyZXN1bHQ7CkBAIC0yOTIsMTYgKzI5NCwxOCBA
QCBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50
IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuYwogCQkJCQkJZG9jLkVkaXRvciwKIAkJCQkJCWRvYy5H
ZXRGb3JtYXR0aW5nUG9saWN5ICgpLAogCQkJCQkJbWVtYmVyLCAKLQkJCQkJCWZhbHNlKTsKKwkJ
CQkJCWZhbHNlLAorCQkJCQkJY3JlYXRlRm9vdGVyKTsKIAkJCQl9IGVsc2UgaWYgKHJlc3VsdCBp
cyBNZW1iZXJSZXNvbHZlUmVzdWx0KSB7CiAJCQkJCXZhciBtZW1iZXIgPSAoKE1lbWJlclJlc29s
dmVSZXN1bHQpcmVzdWx0KS5NZW1iZXI7CiAJCQkJCXJldHVybiBNZW1iZXJDb21wbGV0aW9uRGF0
YS5DcmVhdGVUb29sdGlwSW5mb3JtYXRpb24gKAotCQkJCQlkb2MuQ29tcGlsYXRpb24sCi0JCQkJ
CWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRGaWxlLAot
CQkJCQlkb2MuRWRpdG9yLAotCQkJCQlkb2MuR2V0Rm9ybWF0dGluZ1BvbGljeSAoKSwKLQkJCQkJ
bWVtYmVyLCAKLQkJCQkJZmFsc2UpOworCQkJCQkJZG9jLkNvbXBpbGF0aW9uLAorCQkJCQkJZG9j
LlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUsCisJCQkJ
CQlkb2MuRWRpdG9yLAorCQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCisJCQkJCQlt
ZW1iZXIsIAorCQkJCQkJZmFsc2UsCisJCQkJCQljcmVhdGVGb290ZXIpOwogCQkJCX0gZWxzZSBp
ZiAocmVzdWx0IGlzIE5hbWVzcGFjZVJlc29sdmVSZXN1bHQpIHsKIAkJCQkJdmFyIHRvb2x0aXBJ
bmZvID0gbmV3IFRvb2x0aXBJbmZvcm1hdGlvbiAoKTsKIAkJCQkJdmFyIHJlc29sdmVyID0gKGRv
Yy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRGaWxlKS5HZXRS
ZXNvbHZlciAoZG9jLkNvbXBpbGF0aW9uLCBkb2MuRWRpdG9yLkNhcmV0LkxvY2F0aW9uKTsKQEAg
LTMyOSwxMiArMzMzLDEzIEBAIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29s
VGlwRGF0YSBkYXRhLCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5jCiAJCQkJCXJldHVybiB0
b29sdGlwSW5mbzsKIAkJCQl9IGVsc2UgewogCQkJCQlyZXR1cm4gTWVtYmVyQ29tcGxldGlvbkRh
dGEuQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uICgKLQkJCQkJZG9jLkNvbXBpbGF0aW9uLAotCQkJ
CQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwK
LQkJCQkJZG9jLkVkaXRvciwKLQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCi0JCQkJ
CXJlc3VsdC5UeXBlLCAKLQkJCQkJZmFsc2UpOworCQkJCQkJZG9jLkNvbXBpbGF0aW9uLAorCQkJ
CQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUs
CisJCQkJCQlkb2MuRWRpdG9yLAorCQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCisJ
CQkJCQlyZXN1bHQuVHlwZSwgCisJCQkJCQlmYWxzZSwKKwkJCQkJCWNyZWF0ZUZvb3Rlcik7CiAJ
CQkJfQogCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKIAkJCQlMb2dnaW5nU2VydmljZS5Mb2dF
cnJvciAoIkVycm9yIHdoaWxlIGNyZWF0aW5nIHRvb2x0aXAuIiwgZSk7DQoNCk1vZGlmaWVkOiBt
YWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAvU2lnbmF0dXJl
TWFya3VwQ3JlYXRvci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE2MTEsNSArMTYxMSw0NiBAQCBzdHJp
bmcgSGlnaGxpZ2h0U2VtYW50aWNhbGx5IChzdHJpbmcgc3RyLCBDaHVua1N0eWxlIHN0eWxlKQog
CQkJCXJldHVybiBzdHI7CiAJCQlyZXR1cm4gSGlnaGxpZ2h0IChzdHIsIHN0eWxlKTsKIAkJfQor
CisJCXB1YmxpYyBzdHJpbmcgQ3JlYXRlRm9vdGVyIChJRW50aXR5IGVudGl0eSkKKwkJeworCQkJ
dmFyIHR5cGUgPSBlbnRpdHkgYXMgSVR5cGU7CisJCQlpZiAodHlwZSAhPSBudWxsKSB7CisJCQkJ
dmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlvbiAoKTsKKwkJCQlpZiAoZGVmICE9IG51bGwpIHsK
KwkJCQkJaWYgKCFkZWYuUmVnaW9uLklzRW1wdHkpIHsKKwkJCQkJCXZhciBwcm9qZWN0ID0gZGVm
LkdldFNvdXJjZVByb2plY3QgKCk7CisJCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7CisJCQkJ
CQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0ZVRvUmVsYXRpdmVQYXRoIChwcm9q
ZWN0LkJhc2VEaXJlY3RvcnksIGRlZi5SZWdpb24uRmlsZU5hbWUpOworCQkJCQkJCXJldHVybgor
CQkJCQkJCQkoc3RyaW5nLklzTnVsbE9yRW1wdHkgKGRlZi5OYW1lc3BhY2UpID8gIiIgOiAiPHNt
YWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJOYW1lc3BhY2U6XHR7MH0iLCBBbWJp
ZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLk5hbWVzcGFjZSkpICsgIjwvc21hbGw+IiArIEVu
dmlyb25tZW50Lk5ld0xpbmUpICsKKwkJCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cu
R2V0U3RyaW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChk
ZWYuUGFyZW50QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1l
bnQuTmV3TGluZSArCisJCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmlu
ZyAoIkZpbGU6XHRcdHswfSAobGluZSB7MX0pIiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQg
KHJlbFBhdGgpLCBkZWYuUmVnaW9uLkJlZ2luLkxpbmUpICsgIjwvc21hbGw+IjsKKwkJCQkJCX0K
KwkJCQkJfQorCQkJCQlyZXR1cm4KKwkJCQkJCShzdHJpbmcuSXNOdWxsT3JFbXB0eSAoZGVmLk5h
bWVzcGFjZSkgPyAiIiA6ICI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIk5h
bWVzcGFjZTpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChkZWYuTmFtZXNwYWNl
KSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSkgKworCQkJCQkJIjxzbWFsbD4i
ICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQXNzZW1ibHk6XHR7MH0iLCBBbWJpZW5jZVNl
cnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwv
c21hbGw+IjsKKwkJCQl9CisJCQkJcmV0dXJuIG51bGw7CisJCQl9IAorCisJCQlpZiAoZW50aXR5
LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uICE9IG51bGwpIHsKKwkJCQlpZiAoIWVudGl0eS5SZWdp
b24uSXNFbXB0eSkgeworCQkJCQl2YXIgcHJvamVjdCA9IGVudGl0eS5EZWNsYXJpbmdUeXBlRGVm
aW5pdGlvbi5HZXRTb3VyY2VQcm9qZWN0ICgpOworCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7
CisJCQkJCQl2YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGgg
KHByb2plY3QuQmFzZURpcmVjdG9yeSwgZW50aXR5LlJlZ2lvbi5GaWxlTmFtZSk7CisJCQkJCQly
ZXR1cm4KKwkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQcm9q
ZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKHByb2plY3QuTmFtZSkpICsg
Ijwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKworCQkJCQkJCSI8c21hbGw+IiArIEdl
dHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb20gdHlwZTpcdHswfSIsIEFtYmllbmNlU2Vydmlj
ZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uRnVsbE5hbWUpKSAr
ICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJCQkiPHNtYWxsPiIgKyBH
ZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9KSIsIEFtYmll
bmNlU2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZW50aXR5LlJlZ2lvbi5CZWdpbi5MaW5l
KSArICI8L3NtYWxsPiI7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuCisJCQkJCSI8c21hbGw+
IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb20gdHlwZTpcdHswfSIsIEFtYmllbmNl
U2VydmljZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uRnVsbE5h
bWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJIjxzbWFsbD4i
ICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQXNzZW1ibHk6XHR7MH0iLCBBbWJpZW5jZVNl
cnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uLlBhcmVudEFz
c2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IjsKKwkJCX0KKwkJCXJldHVybiBudWxs
OworCQl9CiAJfQogfQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRl
YnVnZ2VyLlNvZnQvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERl
YnVnZ2VyRW5naW5lLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNTcsNyArNTcsNyBAQCBGaWxlUGF0aCBH
ZXRGeERpciAoTW9ub1RhcmdldFJ1bnRpbWUgcnVudGltZSwgQ2xyVmVyc2lvbiB2ZXJzaW9uKQog
CQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjIuMCIpOwogCQkJY2Fz
ZSBDbHJWZXJzaW9uLk5ldF80XzA6CiAJCQkJdmFyIG5ldDQ1UGF0aCA9IHByZWZpeC5Db21iaW5l
ICgibGliIiwgIm1vbm8iLCAiNC41Iik7Ci0JCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1
UGF0aCkpIHJldHVybiBuZXQ0NVBhdGg7CisJCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1
UGF0aCkgJiYgIU1vbm9EZXZlbG9wLkNvcmUuUGxhdGZvcm0uSXNXaW5kb3dzKSByZXR1cm4gbmV0
NDVQYXRoOwogCQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuMCIp
OwogCQkJY2FzZSBDbHJWZXJzaW9uLk5ldF80XzU6CiAJCQkJcmV0dXJuIHByZWZpeC5Db21iaW5l
ICgibGliIiwgIm1vbm8iLCAiNC41Iik7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9u
b0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuQ29kZUlzc3Vlcy9Db2RlSXNzdWVQYWQu
Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCkBAIC0yOTksNiArMjk5LDkgQEAgdm9pZCBTZXROb2RlIChUcmVlTmF2
aWdhdG9yIG5hdmlnYXRvciwgSUlzc3VlVHJlZU5vZGUgbm9kZSkKIAogCQl2b2lkIENsZWFyU2li
bGluZ05vZGVzIChUcmVlTmF2aWdhdG9yIG5hdmlnYXRvcikKIAkJeworCQkJaWYgKG5hdmlnYXRv
ci5DdXJyZW50UG9zaXRpb24gPT0gbnVsbCkKKwkJCQlyZXR1cm47CisKIAkJCWRvIHsKIAkJCQl2
YXIgbm9kZSA9IG5hdmlnYXRvci5HZXRWYWx1ZSAobm9kZUZpZWxkKTsKIAkJCQlpZiAobm9kZSAh
PSBudWxsKSB7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuUmVmYWN0
b3JpbmcvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdTZXJ2aWNlLmNzDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtNDEsNiArNDEsNyBAQAogdXNpbmcgTW9uby5UZXh0RWRpdG9yOwogdXNpbmcg
TW9ub0RldmVsb3AuSWRlLlR5cGVTeXN0ZW07CiB1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7Cit1
c2luZyBNb25vRGV2ZWxvcC5Db3JlLkluc3RydW1lbnRhdGlvbjsKIAogbmFtZXNwYWNlIE1vbm9E
ZXZlbG9wLlJlZmFjdG9yaW5nCiB7CkBAIC0yMDQsNDkgKzIwNSwyNiBAQCBwdWJsaWMgc3RhdGlj
IFRhc2s8SUVudW1lcmFibGU8Q29kZUFjdGlvbj4+IEdldFZhbGlkQWN0aW9ucyAoRG9jdW1lbnQg
ZG9jLCBUZXh0TAogCQkJc3RyaW5nIGRpc2FibGVkTm9kZXMgPSBlZGl0b3IgIT0gbnVsbCA/IFBy
b3BlcnR5U2VydmljZS5HZXQgKCJDb250ZXh0QWN0aW9ucy4iICsgZWRpdG9yLk1pbWVUeXBlLCAi
IikgPz8gIiIgOiAiIjsKIAkJCXJldHVybiBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKGRlbGVnYXRl
IHsKIAkJCQl2YXIgcmVzdWx0ID0gbmV3IExpc3Q8Q29kZUFjdGlvbj4gKCk7CisJCQkJdmFyIHRp
bWVyID0gSW5zdHJ1bWVudGF0aW9uU2VydmljZS5DcmVhdGVUaW1lckNvdW50ZXIgKCJTb3VyY2Ug
YW5hbHlzaXMgYmFja2dyb3VuZCB0YXNrIiwgIlNvdXJjZSBhbmFseXNpcyIpOworCQkJCXRpbWVy
LkJlZ2luVGltaW5nICgpOwogCQkJCXRyeSB7Ci0JCQkJCSNpZiBQUk9GSUxFCi0JCQkJCXZhciBy
dW5MaXN0ID0gbmV3IExpc3Q8VHVwbGU8bG9uZywgc3RyaW5nPj4gKCk7Ci0JCQkJCXZhciBnbG9i
YWxDbG9jayA9IG5ldyBTdG9wd2F0Y2goKTsKLQkJCQkJZ2xvYmFsQ2xvY2suU3RhcnQgKCk7Ci0K
LQkJCQkJI2VuZGlmCi0KIAkJCQkJdmFyIHBhcnNlZERvY3VtZW50ID0gZG9jLlBhcnNlZERvY3Vt
ZW50OwogCQkJCQlpZiAoZWRpdG9yICE9IG51bGwgJiYgcGFyc2VkRG9jdW1lbnQgIT0gbnVsbCAm
JiBwYXJzZWREb2N1bWVudC5DcmVhdGVSZWZhY3RvcmluZ0NvbnRleHQgIT0gbnVsbCkgewogCQkJ
CQkJdmFyIGN0eCA9IHBhcnNlZERvY3VtZW50LkNyZWF0ZVJlZmFjdG9yaW5nQ29udGV4dCAoZG9j
LCBjYW5jZWxsYXRpb25Ub2tlbik7CiAJCQkJCQlpZiAoY3R4ICE9IG51bGwpIHsKIAkJCQkJCQlm
b3JlYWNoICh2YXIgcHJvdmlkZXIgaW4gY29udGV4dEFjdGlvbnMuV2hlcmUgKGZpeCA9PiBkaXNh
YmxlZE5vZGVzLkluZGV4T2YgKGZpeC5JZFN0cmluZywgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFs
KSA8IDApKSB7Ci0JCQkJCQkJCSNpZiBQUk9GSUxFCi0JCQkJCQkJCXZhciBjbG9jayA9IG5ldyBT
dG9wd2F0Y2goKTsKLQkJCQkJCQkJY2xvY2suU3RhcnQgKCk7Ci0JCQkJCQkJCSNlbmRpZgogCQkJ
CQkJCQl0cnkgewogCQkJCQkJCQkJcmVzdWx0LkFkZFJhbmdlIChwcm92aWRlci5HZXRBY3Rpb25z
IChkb2MsIGN0eCwgbG9jLCBjYW5jZWxsYXRpb25Ub2tlbikpOwogCQkJCQkJCQl9IGNhdGNoIChF
eGNlcHRpb24gZXgpIHsKIAkJCQkJCQkJCUxvZ2dpbmdTZXJ2aWNlLkxvZ0Vycm9yICgiRXJyb3Ig
aW4gY29udGV4dCBhY3Rpb24gcHJvdmlkZXIgIiArIHByb3ZpZGVyLlRpdGxlLCBleCk7CiAJCQkJ
CQkJCX0KLQkJCQkJCQkJI2lmIFBST0ZJTEUKLQkJCQkJCQkJY2xvY2suU3RvcCAoKTsKLQkJCQkJ
CQkJbG9jayAocnVuTGlzdCkgewotCQkJCQkJCQkJcnVuTGlzdC5BZGQgKFR1cGxlLkNyZWF0ZSAo
Y2xvY2suRWxhcHNlZE1pbGxpc2Vjb25kcywgcHJvdmlkZXIuVGl0bGUpKTsgCi0JCQkJCQkJCX0K
LQkJCQkJCQkJI2VuZGlmCiAJCQkJCQkJfQogCQkJCQkJfQogCQkJCQl9Ci0JCQkJCSNpZiBQUk9G
SUxFCi0JCQkJCWdsb2JhbENsb2NrLlN0b3AgKCk7Ci0JCQkJCXJ1bkxpc3QuU29ydCAoKTsKLQkJ
CQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJBbGw6ICIgKyBnbG9iYWxDbG9jay5FbGFwc2VkTWlsbGlz
ZWNvbmRzICsibXMiKTsKLQkJCQkJZm9yZWFjaCAodmFyIGl0ZW0gaW4gcnVuTGlzdCkgewotCQkJ
CQkJaWYgKGl0ZW0uSXRlbTEgPT0gMCkKLQkJCQkJCQljb250aW51ZTsKLQkJCQkJCUNvbnNvbGUu
V3JpdGVMaW5lIChpdGVtLkl0ZW0xICsibXNcdDogIiArIGl0ZW0uSXRlbTIpOwotCQkJCQl9Ci0J
CQkJCSNlbmRpZgogCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewogCQkJCQlMb2dnaW5nU2Vy
dmljZS5Mb2dFcnJvciAoIkVycm9yIGluIGFuYWx5c2lzIHNlcnZpY2UiLCBleCk7CisJCQkJfSBm
aW5hbGx5IHsKKwkJCQkJdGltZXIuRW5kVGltaW5nICgpOwogCQkJCX0KIAkJCQlyZXR1cm4gKElF
bnVtZXJhYmxlPENvZGVBY3Rpb24+KXJlc3VsdDsKIAkJCX0sIGNhbmNlbGxhdGlvblRva2VuKTsN
Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01v
bm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VFZGl0b3JWaWV3LmNzDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA
QCAtNjkzLDExICs2OTMsMTUgQEAgcHVibGljIHZvaWQgU2F2ZSAoc3RyaW5nIGZpbGVOYW1lLCBF
bmNvZGluZyBlbmNvZGluZykKIAkJCQkJdmFyIHdyaXRlQm9tID0gaGFkQm9tOwogCQkJCQl2YXIg
d3JpdGVUZXh0ID0gRG9jdW1lbnQuVGV4dDsKIAkJCQkJaWYgKHdyaXRlRW5jb2RpbmcgPT0gbnVs
bCkgewotCQkJCQkJd3JpdGVFbmNvZGluZyA9IEVuY29kaW5nLlVURjg7Ci0JCQkJCQkvLyBEaXNh
YmxlZC4gU2hvd3MgdXAgaW4gdGhlIHNvdXJjZSBjb250cm9sIGFzIGRpZmYsIGl0J3MgYXRtIGNv
bmZ1c2luZyBmb3IgdGhlIHVzZXJzIHRvIHNlZSBhIGNoYW5nZSB3aXRob3V0Ci0JCQkJCQkvLyBj
aGFuZ2VkIGZpbGVzLgotCQkJCQkJd3JpdGVCb20gPSBmYWxzZTsKLS8vCQkJCQkJd3JpdGVCb20g
PSFNb25vLlRleHRFZGl0b3IuVXRpbHMuVGV4dEZpbGVVdGlsaXR5LklzQVNDSUkgKHdyaXRlVGV4
dCk7CisJCQkJCQlpZiAodGhpcy5lbmNvZGluZyAhPSBudWxsKSB7CisJCQkJCQkJd3JpdGVFbmNv
ZGluZyA9IHRoaXMuZW5jb2Rpbmc7CisJCQkJCQl9IGVsc2UgeyAKKwkJCQkJCQl3cml0ZUVuY29k
aW5nID0gRW5jb2RpbmcuVVRGODsKKwkJCQkJCQkvLyBEaXNhYmxlZC4gU2hvd3MgdXAgaW4gdGhl
IHNvdXJjZSBjb250cm9sIGFzIGRpZmYsIGl0J3MgYXRtIGNvbmZ1c2luZyBmb3IgdGhlIHVzZXJz
IHRvIHNlZSBhIGNoYW5nZSB3aXRob3V0CisJCQkJCQkJLy8gY2hhbmdlZCBmaWxlcy4KKwkJCQkJ
CQl3cml0ZUJvbSA9IGZhbHNlOworCS8vCQkJCQkJd3JpdGVCb20gPSFNb25vLlRleHRFZGl0b3Iu
VXRpbHMuVGV4dEZpbGVVdGlsaXR5LklzQVNDSUkgKHdyaXRlVGV4dCk7CisJCQkJCQl9CiAJCQkJ
CX0KIAkJCQkJTW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxlVXRpbGl0eS5Xcml0ZVRleHQg
KGZpbGVOYW1lLCB3cml0ZVRleHQsIHdyaXRlRW5jb2RpbmcsIHdyaXRlQm9tKTsKIAkJCQl9IGNh
dGNoIChJbnZhbGlkRW5jb2RpbmdFeGNlcHRpb24pIHsKQEAgLTgzNiw5ICs4NDAsOSBAQCBwdWJs
aWMgdm9pZCBMb2FkIChzdHJpbmcgZmlsZU5hbWUsIEVuY29kaW5nIGxvYWRFbmNvZGluZywgYm9v
bCByZWxvYWQgPSBmYWxzZSkKIAkJCWVsc2UgewogCQkJCWluTG9hZCA9IHRydWU7CiAJCQkJaWYg
KGxvYWRFbmNvZGluZyA9PSBudWxsKSB7Ci0JCQkJCXRleHQgPSBUZXh0RmlsZVV0aWxpdHkuUmVh
ZEFsbFRleHQgKGZpbGVOYW1lLCBvdXQgaGFkQm9tLCBvdXQgdGhpcy5lbmNvZGluZyk7Ci0JCQkJ
fQotCQkJCWVsc2UgeworCQkJCQl0ZXh0ID0gVGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChm
aWxlTmFtZSwgb3V0IGhhZEJvbSwgb3V0IGVuY29kaW5nKTsKKwkJCQl9IGVsc2UgeworCQkJCQll
bmNvZGluZyA9IGxvYWRFbmNvZGluZzsKIAkJCQkJdGV4dCA9IFRleHRGaWxlVXRpbGl0eS5SZWFk
QWxsVGV4dCAoZmlsZU5hbWUsIGxvYWRFbmNvZGluZywgb3V0IGhhZEJvbSk7CiAJCQkJfQogCQkJ
CWlmIChyZWxvYWQpIHsKQEAgLTkxMSw3ICs5MTUsNyBAQCBpbnRlcm5hbCB2b2lkIFN0b3JlU2V0
dGluZ3MgKCkKIAogCQlib29sIHdhcm5PdmVyd3JpdGUgPSBmYWxzZTsKIAkJYm9vbCBpbkxvYWQg
PSBmYWxzZTsKLQkJRW5jb2RpbmcgZW5jb2RpbmcgPSBudWxsOworCQlFbmNvZGluZyBlbmNvZGlu
ZzsKIAkJYm9vbCBoYWRCb20gPSBmYWxzZTsKIAogCQlpbnRlcm5hbCB2b2lkIFJlcGxhY2VDb250
ZW50IChzdHJpbmcgZmlsZU5hbWUsIHN0cmluZyBjb250ZW50LCBFbmNvZGluZyBlbmNvZGluZykN
Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01v
bm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VFZGl0b3JXaWRnZXQuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
CkBAIC05MjcsNyArOTI3LDcgQEAgaW50ZXJuYWwgdm9pZCBDb252ZXJ0TGluZUVuZGluZ3MgKCkK
IAkJCQkJbmV3VGV4dC5BcHBlbmQgKGNvcnJlY3RFb2wpOwogCQkJfQogCQkJdmlldy5TdG9yZVNl
dHRpbmdzICgpOwotCQkJdmlldy5SZXBsYWNlQ29udGVudCAoRG9jdW1lbnQuRmlsZU5hbWUsIG5l
d1RleHQuVG9TdHJpbmcgKCksIG51bGwpOworCQkJdmlldy5SZXBsYWNlQ29udGVudCAoRG9jdW1l
bnQuRmlsZU5hbWUsIG5ld1RleHQuVG9TdHJpbmcgKCksIHZpZXcuU291cmNlRW5jb2RpbmcpOwog
CQkJRG9jdW1lbnQuSGFzTGluZUVuZGluZ01pc21hdGNoT25UZXh0U2V0ID0gZmFsc2U7CiAJCQl2
aWV3LkxvYWRTZXR0aW5ncyAoKTsKIAkJfQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgcHVibGljIHZv
aWQgU2hvd0F1dG9TYXZlV2FybmluZyAoc3RyaW5nIGZpbGVOYW1lKQogCQkJCQkJQXV0b1NhdmUu
UmVtb3ZlQXV0b1NhdmVGaWxlIChmaWxlTmFtZSk7CiAJCQkJCQlUZXh0RWRpdG9yLkdyYWJGb2N1
cyAoKTsKIAkJCQkJCXZpZXcuTG9hZCAoZmlsZU5hbWUpOwotCQkJCQkJdmlldy5SZXBsYWNlQ29u
dGVudCAoZmlsZU5hbWUsIGNvbnRlbnQsIG51bGwpOworCQkJCQkJdmlldy5SZXBsYWNlQ29udGVu
dCAoZmlsZU5hbWUsIGNvbnRlbnQsIHZpZXcuU291cmNlRW5jb2RpbmcpOwogCQkJCQkJdmlldy5X
b3JrYmVuY2hXaW5kb3cuRG9jdW1lbnQuUmVwYXJzZURvY3VtZW50ICgpOwogCQkJCQkJdmlldy5J
c0RpcnR5ID0gdHJ1ZTsKIAkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CkBAIC0xNzE4LDYg
KzE3MTgsMTQgQEAgcHVibGljIEVycm9yTWFya2VyIChUZXh0RG9jdW1lbnQgZG9jLCBFcnJvciBp
bmZvLCBEb2N1bWVudExpbmUgbGluZSkKIAkJCVdhdmUgPSB0cnVlOwogCQkJCiAJCQlTdGFydENv
bCA9IEluZm8uUmVnaW9uLkJlZ2luQ29sdW1uOworCQkJdmFyIHN0YXJ0T2Zmc2V0ID0gbGluZS5P
ZmZzZXQ7CisJCQl3aGlsZSAoU3RhcnRDb2wgPCBsaW5lLkxlbmd0aCkgeworCQkJCWNoYXIgY2gg
PSBkb2MuR2V0Q2hhckF0IChzdGFydE9mZnNldCArIFN0YXJ0Q29sIC0gMSk7CisJCQkJaWYgKCFj
aGFyLklzV2hpdGVTcGFjZSAoY2gpKQorCQkJCQlicmVhazsKKwkJCQlTdGFydENvbCsrOworCQkJ
fQorCiAJCQlpZiAoSW5mby5SZWdpb24uRW5kQ29sdW1uID4gU3RhcnRDb2wpIHsKIAkJCQlFbmRD
b2wgPSBJbmZvLlJlZ2lvbi5FbmRDb2x1bW47CiAJCQl9IGVsc2Ugew0KDQpNb2RpZmllZDogbWFp
bi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvTW9ub0RldmVsb3AuV2ViUmVm
ZXJlbmNlcy5EaWFsb2dzL1dDRkNvbmZpZ1dpZGdldC5jcw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQ1LDYg
KzQ1LDExIEBAIHB1YmxpYyBXQ0ZDb25maWdXaWRnZXQgKENsaWVudE9wdGlvbnMgb3B0aW9ucykK
IAkJCQogCQkJZGljdFR5cGVzID0gbmV3IExpc3Q8VHlwZT4gKERlZmF1bHREaWN0aW9uYXJ5VHlw
ZXMpOwogCQkJUG9wdWxhdGVCb3ggKGRpY3Rpb25hcnlDb2xsZWN0aW9uLCAiRGljdGlvbmFyeSIs
IGRpY3RUeXBlcyk7CisKKwkJCWZvcmVhY2ggKHZhciBhY2Nlc3MgaW4gQWNjZXNzR2VuZXJhdGlv
blR5cGVzKQorCQkJCWxpc3RBY2Nlc3MuQXBwZW5kVGV4dCAoYWNjZXNzKTsKKworCQkJbGlzdEFj
Y2Vzcy5BY3RpdmUgPSBvcHRpb25zLkdlbmVyYXRlSW50ZXJuYWxUeXBlcyA/IDEgOiAwOwogCQl9
CiAJCQogCQlwdWJsaWMgQ2xpZW50T3B0aW9ucyBPcHRpb25zIHsKQEAgLTcxLDYgKzc2LDExIEBA
IHB1YmxpYyBXQ0ZDb25maWdXaWRnZXQgKENsaWVudE9wdGlvbnMgb3B0aW9ucykKIAkJCXR5cGVv
ZiAoU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5KSwKIAkJCXR5
cGVvZiAoU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk9yZGVyZWREaWN0aW9uYXJ5KQog
CQl9OworCisJCXN0YXRpYyByZWFkb25seSBMaXN0PHN0cmluZz4gQWNjZXNzR2VuZXJhdGlvblR5
cGVzID0gbmV3IExpc3Q8c3RyaW5nPiB7CisJCQkiUHVibGljIiwKKwkJCSJJbnRlcm5hbCIKKwkJ
fTsKIAkJCiAJCXB1YmxpYyBib29sIE1vZGlmaWVkIHsKIAkJCWdldDsKQEAgLTE2Miw2ICsxNzIs
MTEgQEAgaW50ZXJuYWwgdm9pZCBVcGRhdGUgKCkKIAkJewogCQkJVXBkYXRlQm94IChsaXN0Q29s
bGVjdGlvbiwgIkxpc3QiLCBsaXN0VHlwZXMpOwogCQkJVXBkYXRlQm94IChkaWN0aW9uYXJ5Q29s
bGVjdGlvbiwgIkRpY3Rpb25hcnkiLCBkaWN0VHlwZXMpOworCisJCQlpZiAobGlzdEFjY2Vzcy5B
Y3RpdmUgIT0gKE9wdGlvbnMuR2VuZXJhdGVJbnRlcm5hbFR5cGVzID8gMSA6IDApKSB7CisJCQkJ
T3B0aW9ucy5HZW5lcmF0ZUludGVybmFsVHlwZXMgPSAhT3B0aW9ucy5HZW5lcmF0ZUludGVybmFs
VHlwZXM7CisJCQkJTW9kaWZpZWQgPSB0cnVlOworCQkJfQogCQl9CiAJfQogfQ0KDQpNb2RpZmll
ZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1aS9Nb25v
RGV2ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MuV0NGQ29uZmlnV2lkZ2V0LmNzDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpAQCAtOSw4ICs5LDEwIEBAIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFdDRkNvbmZpZ1dpZGdl
dAogCQlwcml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGRpY3Rpb25hcnlDb2xsZWN0aW9uOwog
CQlwcml2YXRlIGdsb2JhbDo6R3RrLkxhYmVsIGxhYmVsMTsKIAkJcHJpdmF0ZSBnbG9iYWw6Okd0
ay5MYWJlbCBsYWJlbDI7CisJCXByaXZhdGUgZ2xvYmFsOjpHdGsuTGFiZWwgbGFiZWwzOworCQlw
cml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGxpc3RBY2Nlc3M7CiAJCXByaXZhdGUgZ2xvYmFs
OjpHdGsuQ29tYm9Cb3ggbGlzdENvbGxlY3Rpb247Ci0JCQorCiAJCXByb3RlY3RlZCB2aXJ0dWFs
IHZvaWQgQnVpbGQgKCkKIAkJewogCQkJZ2xvYmFsOjpTdGV0aWMuR3VpLkluaXRpYWxpemUgKHRo
aXMpOwpAQCAtNTgsMTcgKzYwLDM4IEBAIHByb3RlY3RlZCB2aXJ0dWFsIHZvaWQgQnVpbGQgKCkK
IAkJCXczLlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7CiAJCQl3
My5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucykoNCkpOwogCQkJLy8gQ29u
dGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hpbGQKKwkJCXRoaXMubGFi
ZWwzID0gbmV3IGdsb2JhbDo6R3RrLkxhYmVsICgpOworCQkJdGhpcy5sYWJlbDMuTmFtZSA9ICJs
YWJlbDMiOworCQkJdGhpcy5sYWJlbDMuTGFiZWxQcm9wID0gZ2xvYmFsOjpNb25vLlVuaXguQ2F0
YWxvZy5HZXRTdHJpbmcgKCJBY2Nlc3MgbGV2ZWw6Iik7CisJCQl0aGlzLndjZk9wdGlvbnMuQWRk
ICh0aGlzLmxhYmVsMyk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc0ID0gKChn
bG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGFiZWwz
XSkpOworCQkJdzQuVG9wQXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3NC5Cb3R0b21BdHRhY2gg
PSAoKHVpbnQpKDMpKTsKKwkJCXc0LlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRp
b25zKSg0KSk7CisJCQl3NC5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucyko
NCkpOworCQkJLy8gQ29udGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hp
bGQKKwkJCXRoaXMubGlzdEFjY2VzcyA9IGdsb2JhbDo6R3RrLkNvbWJvQm94Lk5ld1RleHQgKCk7
CisJCQl0aGlzLmxpc3RBY2Nlc3MuTmFtZSA9ICJsaXN0QWNjZXNzIjsKKwkJCXRoaXMud2NmT3B0
aW9ucy5BZGQgKHRoaXMubGlzdEFjY2Vzcyk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNo
aWxkIHc1ID0gKChnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMg
W3RoaXMubGlzdEFjY2Vzc10pKTsKKwkJCXc1LlRvcEF0dGFjaCA9ICgodWludCkoMikpOworCQkJ
dzUuQm90dG9tQXR0YWNoID0gKCh1aW50KSgzKSk7CisJCQl3NS5MZWZ0QXR0YWNoID0gKCh1aW50
KSgxKSk7CisJCQl3NS5SaWdodEF0dGFjaCA9ICgodWludCkoMikpOworCQkJdzUuWE9wdGlvbnMg
PSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMpKDcpKTsKKwkJCXc1LllPcHRpb25zID0gKChn
bG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7CisJCQkvLyBDb250YWluZXIgY2hpbGQgd2Nm
T3B0aW9ucy5HdGsuVGFibGUrVGFibGVDaGlsZAogCQkJdGhpcy5saXN0Q29sbGVjdGlvbiA9IGds
b2JhbDo6R3RrLkNvbWJvQm94Lk5ld1RleHQgKCk7CiAJCQl0aGlzLmxpc3RDb2xsZWN0aW9uLk5h
bWUgPSAibGlzdENvbGxlY3Rpb24iOwogCQkJdGhpcy53Y2ZPcHRpb25zLkFkZCAodGhpcy5saXN0
Q29sbGVjdGlvbik7Ci0JCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc0ID0gKChnbG9i
YWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGlzdENvbGxl
Y3Rpb25dKSk7Ci0JCQl3NC5MZWZ0QXR0YWNoID0gKCh1aW50KSgxKSk7Ci0JCQl3NC5SaWdodEF0
dGFjaCA9ICgodWludCkoMikpOwotCQkJdzQuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFj
aE9wdGlvbnMpKDcpKTsKLQkJCXc0LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRp
b25zKSg0KSk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc2ID0gKChnbG9iYWw6
Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGlzdENvbGxlY3Rp
b25dKSk7CisJCQl3Ni5MZWZ0QXR0YWNoID0gKCh1aW50KSgxKSk7CisJCQl3Ni5SaWdodEF0dGFj
aCA9ICgodWludCkoMikpOworCQkJdzYuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9w
dGlvbnMpKDcpKTsKKwkJCXc2LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25z
KSg0KSk7CiAJCQl0aGlzLmRpYWxvZzFfVkJveC5BZGQgKHRoaXMud2NmT3B0aW9ucyk7Ci0JCQln
bG9iYWw6Okd0ay5Cb3guQm94Q2hpbGQgdzUgPSAoKGdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCko
dGhpcy5kaWFsb2cxX1ZCb3ggW3RoaXMud2NmT3B0aW9uc10pKTsKLQkJCXc1LlBvc2l0aW9uID0g
MDsKKwkJCWdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCB3NyA9ICgoZ2xvYmFsOjpHdGsuQm94LkJv
eENoaWxkKSh0aGlzLmRpYWxvZzFfVkJveCBbdGhpcy53Y2ZPcHRpb25zXSkpOworCQkJdzcuUG9z
aXRpb24gPSAwOwogCQkJdGhpcy5BZGQgKHRoaXMuZGlhbG9nMV9WQm94KTsKIAkJCWlmICgodGhp
cy5DaGlsZCAhPSBudWxsKSkgewogCQkJCXRoaXMuQ2hpbGQuU2hvd0FsbCAoKTsNCg0KTW9kaWZp
ZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvZ3Vp
LnN0ZXRpYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY0NiwxMiArNjQ2LDYgQEAKICAgICAgICAgICAgICAg
PHBsYWNlaG9sZGVyIC8+CiAgICAgICAgICAgICA8L2NoaWxkPgogICAgICAgICAgICAgPGNoaWxk
PgotICAgICAgICAgICAgICA8cGxhY2Vob2xkZXIgLz4KLSAgICAgICAgICAgIDwvY2hpbGQ+Ci0g
ICAgICAgICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgIDxwbGFjZWhvbGRlciAvPgotICAgICAg
ICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgIDxjaGlsZD4KICAgICAgICAgICAgICAgPHdpZGdl
dCBjbGFzcz0iR3RrLkNvbWJvQm94IiBpZD0iZGljdGlvbmFyeUNvbGxlY3Rpb24iPgogICAgICAg
ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgogICAgICAgICAgICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwvcHJvcGVydHk+CkBAIC03MTIsNiAr
NzA2LDQ3IEBACiAgICAgICAgICAgICAgIDwvcGFja2luZz4KICAgICAgICAgICAgIDwvY2hpbGQ+
CiAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5M
YWJlbCIgaWQ9ImxhYmVsMyI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJl
ck5hbWUiIC8+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkxhYmVsUHJvcCIgdHJh
bnNsYXRhYmxlPSJ5ZXMiPkFjY2VzcyBsZXZlbDo8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8
L3dpZGdldD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IlRvcEF0dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IkJvdHRvbUF0dGFjaCI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHBy
b3BlcnR5IG5hbWU9IkF1dG9TaXplIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8
cHJvcGVydHkgbmFtZT0iWE9wdGlvbnMiPkZpbGw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJZT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAg
ICAgPHByb3BlcnR5IG5hbWU9IlhFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iWEZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJYU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAg
ICAgICAgPHByb3BlcnR5IG5hbWU9IllFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAg
ICAgICAgICA8cHJvcGVydHkgbmFtZT0iWUZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAg
ICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hp
bGQ+CisgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5Db21ib0JveCIgaWQ9Imxpc3RB
Y2Nlc3MiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgor
ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwvcHJvcGVy
dHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ikl0ZW1zIiB0cmFuc2xhdGFibGU9
InllcyIgLz4KKyAgICAgICAgICAgICAgPC93aWRnZXQ+CisgICAgICAgICAgICAgIDxwYWNraW5n
PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUb3BBdHRhY2giPjI8L3Byb3BlcnR5
PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJCb3R0b21BdHRhY2giPjM8L3Byb3Bl
cnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJMZWZ0QXR0YWNoIj4xPC9wcm9w
ZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iUmlnaHRBdHRhY2giPjI8L3By
b3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJBdXRvU2l6ZSI+RmFsc2U8
L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYT3B0aW9ucyI+RXhw
YW5kLCBTaHJpbmssIEZpbGw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu
YW1lPSJZT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlhFeHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJYRmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlhTaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJZRXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IllGaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVy
dHkgbmFtZT0iWVNocmluayI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tp
bmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgogICAgICAgICAg
ICAgICA8d2lkZ2V0IGNsYXNzPSJHdGsuQ29tYm9Cb3giIGlkPSJsaXN0Q29sbGVjdGlvbiI+CiAg
ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJlck5hbWUiIC8+CiAgICAgICAgICAg
ICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5UcnVlPC9wcm9wZXJ0eT4NCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u
Q29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
QEAgLTMyLDE0ICszMiwxNCBAQAogdXNpbmcgTkdpdC5BcGk7DQogdXNpbmcgTlVuaXQuRnJhbWV3
b3JrOw0KIHVzaW5nIFN5c3RlbS5JTzsNCi11c2luZyBTeXN0ZW07DQogdXNpbmcgTkdpdC5TdG9y
YWdlLkZpbGU7DQogdXNpbmcgTkdpdC5SZXZ3YWxrOw0KK3VzaW5nIFN5c3RlbS5MaW5xOw0KIA0K
IG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMNCiB7DQogCVtU
ZXN0Rml4dHVyZV0NCi0JcHVibGljIGNsYXNzIEJhc2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0
aWxzVGVzdA0KKwlzZWFsZWQgY2xhc3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNU
ZXN0DQogCXsNCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpA
QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpCiAJCQlSZXBv
TG9jYXRpb24gPSAiZmlsZTovLy8iICsgUm9vdFVybC5GdWxsUGF0aCArICJyZXBvLmdpdCI7DQog
DQogCQkJLy8gSW5pdGlhbGl6ZSB0aGUgYmFyZSByZXBvLg0KLQkJCUluaXRDb21tYW5kIGNpID0g
bmV3IEluaXRDb21tYW5kICgpOw0KKwkJCXZhciBjaSA9IG5ldyBJbml0Q29tbWFuZCAoKTsNCiAJ
CQljaS5TZXREaXJlY3RvcnkgKG5ldyBTaGFycGVuLkZpbGVQYXRoIChSb290VXJsLkZ1bGxQYXRo
ICsgInJlcG8uZ2l0IikpOw0KIAkJCWNpLlNldEJhcmUgKHRydWUpOw0KIAkJCWNpLkNhbGwgKCk7
DQotCQkJRmlsZVJlcG9zaXRvcnkgYmFyZSA9IG5ldyBGaWxlUmVwb3NpdG9yeSAobmV3IFNoYXJw
ZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBhdGggKyAicmVwby5naXQiKSk7DQorCQkJdmFyIGJh
cmUgPSBuZXcgRmlsZVJlcG9zaXRvcnkgKG5ldyBTaGFycGVuLkZpbGVQYXRoIChSb290VXJsLkZ1
bGxQYXRoICsgInJlcG8uZ2l0IikpOw0KIAkJCXN0cmluZyBicmFuY2ggPSBDb25zdGFudHMuUl9I
RUFEUyArICJtYXN0ZXIiOw0KIA0KIAkJCVJlZlVwZGF0ZSBoZWFkID0gYmFyZS5VcGRhdGVSZWYg
KENvbnN0YW50cy5IRUFEKTsNCkBAIC0xMzIsMjEgKzEzMiwyMSBAQCBwdWJsaWMgb3ZlcnJpZGUg
dm9pZCBNb3Zlc0RpcmVjdG9yeSAoKQogDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmV2aXNpb24g
R2V0SGVhZFJldmlzaW9uICgpDQogCQl7DQotCQkJR2l0UmVwb3NpdG9yeSByZXBvMiA9IChHaXRS
ZXBvc2l0b3J5KVJlcG87DQotCQkJUmV2V2FsayBydyA9IG5ldyBSZXZXYWxrIChyZXBvMi5Sb290
UmVwb3NpdG9yeSk7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQl2
YXIgcncgPSBuZXcgUmV2V2FsayAocmVwbzIuUm9vdFJlcG9zaXRvcnkpOw0KIAkJCU9iamVjdElk
IGhlYWRJZCA9IHJlcG8yLlJvb3RSZXBvc2l0b3J5LlJlc29sdmUgKENvbnN0YW50cy5IRUFEKTsN
CiAJCQlpZiAoaGVhZElkID09IG51bGwpDQogCQkJCXJldHVybiBudWxsOw0KIA0KIAkJCVJldkNv
bW1pdCBjb21taXQgPSBydy5QYXJzZUNvbW1pdCAoaGVhZElkKTsNCi0JCQlHaXRSZXZpc2lvbiBy
ZXYgPSBuZXcgR2l0UmV2aXNpb24gKFJlcG8sIHJlcG8yLlJvb3RSZXBvc2l0b3J5LCBjb21taXQu
SWQuTmFtZSk7DQorCQkJdmFyIHJldiA9IG5ldyBHaXRSZXZpc2lvbiAoUmVwbywgcmVwbzIuUm9v
dFJlcG9zaXRvcnksIGNvbW1pdC5JZC5OYW1lKTsNCiAJCQlyZXYuQ29tbWl0ID0gY29tbWl0Ow0K
IAkJCXJldHVybiByZXY7DQogCQl9DQogDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBQb3N0
Q29tbWl0IChSZXBvc2l0b3J5IHJlcG8pDQogCQl7DQotCQkJR2l0UmVwb3NpdG9yeSByZXBvMiA9
IChHaXRSZXBvc2l0b3J5KXJlcG87DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpcmVw
bzsNCiAJCQlyZXBvMi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jp
bmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgcmVwbzIuR2V0Q3VycmVudFJlbW90ZSAoKSwgcmVw
bzIuR2V0Q3VycmVudEJyYW5jaCAoKSk7DQogCQl9DQogDQpAQCAtMTYxLDYgKzE2MSwxODcgQEAg
cHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFscyAoQW5ub3RhdGlvbiBb
XSBhbm5vdGF0aW9ucykKIAkJCUFzc2VydC5Jc1RydWUgKGFubm90YXRpb25zIFsyXS5IYXNEYXRl
KTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJW0lnbm9yZSAoInRoaXMgaXMgYSBuZXcgdGVzdCB3
aGljaCBkb2Vzbid0IHBhc3Mgb24gTWFjIHlldCIpXQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdFN0
YXNoICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlB
ZGRGaWxlICgiZmlsZTIiLCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZpbGUgKCJm
aWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3Jl
YXRlIChuZXcgTnVsbFByb2dyZXNzTW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoIUZp
bGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwgIlN0YXNoIGNyZWF0aW9uIGZhaWx1
cmUiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAobmV3IE51bGxQcm9ncmVzc01vbml0
b3IgKCkpOw0KKw0KKwkJCVZlcnNpb25JbmZvIHZpID0gcmVwbzIuR2V0VmVyc2lvbkluZm8gKFJv
b3RDaGVja291dCArICJmaWxlMSIsIFZlcnNpb25JbmZvUXVlcnlGbGFncy5JZ25vcmVDYWNoZSk7
DQorCQkJQXNzZXJ0LkFyZUVxdWFsIChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgdmkuU3Rh
dHVzICYgVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsICJTdGFzaCBwb3AgZmFpbHVyZSIpOw0K
KwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhpcyBpcyBhIG5ldyB0ZXN0IHdoaWNo
IGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQorCQlwdWJsaWMgdm9pZCBUZXN0R2l0QnJhbmNo
Q3JlYXRpb24gKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0K
Kw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIu
Q3JlYXRlQnJhbmNoICgiYnJhbmNoMSIsIG51bGwpOw0KKw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJh
bmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNz
TW9uaXRvciAoKSwgImJyYW5jaDEiKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJicmFuY2gxIiwg
cmVwbzIuR2V0Q3VycmVudEJyYW5jaCAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlz
dHMgKFJvb3RDaGVja291dCArICJmaWxlMSIpLCAiQnJhbmNoIG5vdCBpbmhlcml0aW5nIGZyb20g
Y3VycmVudC4iKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIGZhbHNl
KTsNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2gyIiwgbnVsbCk7DQorCQkJcmVwbzIu
U3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5O
dWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoMiIpOw0KKwkJCUFzc2VydC5Jc1RydWUgKCFG
aWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUyIiksICJVbmNvbW1pdHRlZCBjaGFuZ2Vz
IHdlcmUgbm90IHN0YXNoZWQiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAobmV3IE51
bGxQcm9ncmVzc01vbml0b3IgKCkpOw0KKw0KKwkJCUFzc2VydC5Jc1RydWUgKEZpbGUuRXhpc3Rz
IChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwgIlVuY29tbWl0dGVkIGNoYW5nZXMgd2VyZSBub3Qg
c3Rhc2hlZCBjb3JyZWN0bHkiKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1v
bm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCks
ICJtYXN0ZXIiKTsNCisJCQlyZXBvMi5SZW1vdmVCcmFuY2ggKCJicmFuY2gxIik7DQorCQkJQXNz
ZXJ0LklzRmFsc2UgKHJlcG8yLkdldEJyYW5jaGVzICgpLkFueSAoYiA9PiBiLk5hbWUgPT0gImJy
YW5jaDEiKSwgIkZhaWxlZCB0byBkZWxldGUgYnJhbmNoIik7DQorDQorCQkJcmVwbzIuUmVuYW1l
QnJhbmNoICgiYnJhbmNoMiIsICJicmFuY2gzIik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIu
R2V0QnJhbmNoZXMgKCkuQW55IChiID0+IGIuTmFtZSA9PSAiYnJhbmNoMyIpICYmIHJlcG8yLkdl
dEJyYW5jaGVzICgpLkFsbCAoYiA9PiBiLk5hbWUgIT0gImJyYW5jaDIiKSwgIkZhaWxlZCB0byBy
ZW5hbWUgYnJhbmNoIik7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCVtJZ25vcmUgKCJ0aGlzIGlz
IGEgbmV3IHRlc3Qgd2hpY2ggZG9lc24ndCBwYXNzIG9uIE1hYyB5ZXQiKV0NCisJCXB1YmxpYyB2
b2lkIFRlc3RHaXRTeW5jQnJhbmNoZXMgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVw
b3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7
DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJy
YW5jaDMiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9w
LkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gz
Iik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgImFzZGYiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBv
Mi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dy
ZXNzTW9uaXRvciAoKSwgIm9yaWdpbiIsICJicmFuY2gzIik7DQorDQorCQkJcmVwbzIuU3dpdGNo
VG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJv
Z3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgi
YnJhbmNoNCIsICJvcmlnaW4vYnJhbmNoMyIpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChu
ZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRv
ciAoKSwgImJyYW5jaDQiKTsNCisJCQlBc3NlcnQuSXNUcnVlIChGaWxlLkV4aXN0cyAoUm9vdENo
ZWNrb3V0ICsgImZpbGUyIiksICJUcmFja2luZyByZW1vdGUgaXMgbm90IGdyYWJiaW5nIGNvcnJl
Y3QgY29tbWl0cyIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0UHVz
aENoYW5nZXNldCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87
DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1p
dCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7
DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJQ2hh
bmdlU2V0IGRpZmYgPSByZXBvMi5HZXRQdXNoQ2hhbmdlU2V0ICgib3JpZ2luIiwgIm1hc3RlciIp
Ow0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMiwgZGlmZi5JdGVtcy5Db3VudCAoKSk7DQorDQorCQkJ
Q2hhbmdlU2V0SXRlbSBpdGVtID0gZGlmZi5HZXRGaWxlSXRlbSAoUm9vdENoZWNrb3V0ICsgImZp
bGUxIik7DQorCQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFs
IChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgaXRlbS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVz
LlNjaGVkdWxlZEFkZCk7DQorDQorCQkJaXRlbSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJvb3RDaGVj
a291dCArICJmaWxlMSIpOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2Vy
dC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVzICYgVmVy
c2lvblN0YXR1cy5TY2hlZHVsZWRBZGQpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlbSWdub3Jl
ICgiR2V0UHVzaERpZmYgY29udGVudCBpcyBhbHdheXMgZW1wdHkiKV0NCisJCXB1YmxpYyB2b2lk
IFRlc3RQdXNoRGlmZiAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJl
cG87DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENv
bW1pdCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1
ZSk7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJ
RGlmZkluZm9bXSBkaWZmID0gcmVwbzIuR2V0UHVzaERpZmYgKCJvcmlnaW4iLCAibWFzdGVyIik7
DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgyLCBkaWZmLkxlbmd0aCk7DQorDQorCQkJRGlmZkluZm8g
aXRlbSA9IGRpZmYgWzBdOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2Vy
dC5BcmVFcXVhbCAoImZpbGUxIiwgaXRlbS5GaWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJLy9Bc3Nl
cnQuQXJlRXF1YWwgKCJ0ZXh0IiwgaXRlbS5Db250ZW50KTsNCisNCisJCQlpdGVtID0gZGlmZiBb
MV07DQorCQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgi
ZmlsZTIiLCBpdGVtLkZpbGVOYW1lLkZpbGVOYW1lKTsNCisJCQkvL0Fzc2VydC5BcmVFcXVhbCAo
InRleHQyIiwgaXRlbS5Db250ZW50KTsNCisJCX0NCisNCisJCXByb3RlY3RlZCBvdmVycmlkZSB2
b2lkIFRlc3RWYWxpZFVybCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5
KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImdpdEBnaXRodWIu
Y29tOm1vbm8vbW9ub2RldmVsb3AiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW
YWxpZCAoImdpdDovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJ
QXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoInNzaDovL3VzZXJAaG9zdC5jb206ODAv
bW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW
YWxpZCAoImh0dHA6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJ
CUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRwczovL2dpdGh1Yi5jb206ODAv
bW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW
YWxpZCAoImZ0cDovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJ
QXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZ0cHM6Ly9naXRodWIuY29tOjgwL21v
bm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs
aWQgKCJmaWxlOi8vL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUg
KHJlcG8yLklzVXJsVmFsaWQgKCJyc3luYzovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxwby5n
aXQiKSk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RSZW1vdGUgKCkN
CisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKw0KKwkJCUFzc2Vy
dC5BcmVFcXVhbCAoIm9yaWdpbiIsIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJ
CUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAo
cmVwbzIpOw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJCQly
ZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9y
aW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAoImZp
bGUyIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorCQkJ
QXNzZXJ0LkFyZUVxdWFsICgyLCByZXBvMi5HZXRCcmFuY2hlcyAoKS5Db3VudCAoKSk7DQorCQkJ
QXNzZXJ0LkFyZUVxdWFsICgxLCByZXBvMi5HZXRSZW1vdGVzICgpLkNvdW50ICgpKTsNCisNCisJ
CQlyZXBvMi5SZW5hbWVSZW1vdGUgKCJvcmlnaW4iLCAib3RoZXIiKTsNCisJCQlBc3NlcnQuQXJl
RXF1YWwgKCJvdGhlciIsIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJCXJlcG8y
LlJlbW92ZVJlbW90ZSAoIm90aGVyIik7DQorCQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLkdldFJl
bW90ZXMgKCkuQW55ICgpKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJW0lnbm9yZSAoInRoaXMg
aXMgYSBuZXcgdGVzdCB3aGljaCBkb2Vzbid0IHBhc3Mgb24gTWFjIHlldCIpXQ0KKwkJcHVibGlj
IHZvaWQgVGVzdElzTWVyZ2VkICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRv
cnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKw0K
KwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgibWFzdGVyIikpOw0KKw0K
KwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0
Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQ
cm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRl
eHQiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9E
ZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJt
YXN0ZXIiKTsNCisJCQlBc3NlcnQuSXNGYWxzZSAocmVwbzIuSXNCcmFuY2hNZXJnZWQgKCJicmFu
Y2gxIikpOw0KKwkJCXJlcG8yLk1lcmdlICgiYnJhbmNoMSIsIEdpdFVwZGF0ZU9wdGlvbnMuTm9y
bWFsVXBkYXRlLCBuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFBy
b2dyZXNzTW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNCcmFuY2hNZXJn
ZWQgKCJicmFuY2gxIikpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0
VGFncyAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJ
QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBvMi5BZGRUYWcg
KCJ0YWcxIiwgR2V0SGVhZFJldmlzaW9uICgpLCAibXktdGFnIik7DQorCQkJQXNzZXJ0LkFyZUVx
dWFsICgxLCByZXBvMi5HZXRUYWdzICgpLkNvdW50ICgpKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwg
KCJ0YWcxIiwgcmVwbzIuR2V0VGFncyAoKS5GaXJzdCAoKSk7DQorCQkJcmVwbzIuUmVtb3ZlVGFn
ICgidGFnMSIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMCwgcmVwbzIuR2V0VGFncyAoKS5Db3Vu
dCAoKSk7DQorCQl9DQorDQorCQkvLyBUT0RPOiBUZXN0IHJlYmFzZSBhbmQgbWVyZ2UgLSBUaGlz
IGlzIGJyb2tlbiBvbiBXaW5kb3dzDQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmVwb3NpdG9y
eSBHZXRSZXBvIChzdHJpbmcgcGF0aCwgc3RyaW5nIHVybCkNCiAJCXsNCiAJCQlyZXR1cm4gbmV3
IEdpdFJlcG9zaXRvcnkgKHBhdGgsIHVybCk7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z
L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNl
UmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNw
YWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlRlc3RzCiB7CiAJW1Rlc3RGaXh0dXJlXQot
CXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0aWxzVGVzdAorCWFic3RyYWN0IGNsYXNz
IEJhc2VSZXBvVXRpbHNUZXN0CiAJewogCQkvLyBbR2l0XSBTZXQgdXNlciBhbmQgZW1haWwuCiAJ
CXByb3RlY3RlZCBjb25zdCBzdHJpbmcgQXV0aG9yID0gImF1dGhvciI7CkBAIC0xMjUsNiArMTI1
LDE0IEBAIHB1YmxpYyB2b2lkIFJpZ2h0UmVwb3NpdG9yeURldGVjdGlvbiAoKQogCQlwcm90ZWN0
ZWQgYWJzdHJhY3QgTlVuaXQuRnJhbWV3b3JrLkNvbnN0cmFpbnRzLklSZXNvbHZlQ29uc3RyYWlu
dCBJc0NvcnJlY3RUeXBlICgpOwogCiAJCVtUZXN0XQorCQlwdWJsaWMgdm9pZCBVcmxJc1ZhbGlk
ICgpCisJCXsKKwkJCVRlc3RWYWxpZFVybCAoKTsKKwkJfQorCisJCXByb3RlY3RlZCBhYnN0cmFj
dCB2b2lkIFRlc3RWYWxpZFVybCAoKTsKKworCQlbVGVzdF0KIAkJLy8gVGVzdHMgUmVwb3NpdG9y
eS5DaGVja291dC4KIAkJcHVibGljIHZvaWQgQ2hlY2tvdXRFeGlzdHMgKCkKIAkJew0KDQpNb2Rp
ZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25D
b250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0Q3JlZGVudGlhbHMu
Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCkBAIC03NSw4ICs3NSw5IEBAIHB1YmxpYyBvdmVycmlkZSBib29sIEdl
dCAoVVJJaXNoIHVyaSwgcGFyYW1zIENyZWRlbnRpYWxJdGVtW10gaXRlbXMpCiAJCQkJCiAJCQlI
YXNSZXNldCA9IGZhbHNlOwogCQkJaWYgKHJlc3VsdCkgeworCQkJCXZhciB1c2VyID0gaXRlbXMu
T2ZUeXBlPENyZWRlbnRpYWxJdGVtLlVzZXJuYW1lPiAoKS5GaXJzdE9yRGVmYXVsdCAoKTsKIAkJ
CQlpZiAocGFzc3dvcmRJdGVtICE9IG51bGwpIHsKLQkJCQkJUGFzc3dvcmRTZXJ2aWNlLkFkZFdl
YlBhc3N3b3JkIChuZXcgVXJpICh1cmkuVG9TdHJpbmcgKCkpLCBuZXcgc3RyaW5nIChwYXNzd29y
ZEl0ZW0uR2V0VmFsdWUgKCkpKTsKKwkJCQkJUGFzc3dvcmRTZXJ2aWNlLkFkZFdlYlVzZXJOYW1l
QW5kUGFzc3dvcmQgKG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIHVzZXIuR2V0VmFsdWUgKCks
IG5ldyBzdHJpbmcgKHBhc3N3b3JkSXRlbS5HZXRWYWx1ZSAoKSkpOwogCQkJCX0gZWxzZSBpZiAo
cGFzc3BocmFzZUl0ZW0gIT0gbnVsbCkgewogCQkJCQlQYXNzd29yZFNlcnZpY2UuQWRkV2ViUGFz
c3dvcmQgKG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIHBhc3NwaHJhc2VJdGVtLkdldFZhbHVl
ICgpKTsKIAkJCQl9CkBAIC0xMTgsMTAgKzExOSwxMCBAQCBzdGF0aWMgYm9vbCBUcnlHZXRVc2Vy
bmFtZVBhc3N3b3JkIChVUklpc2ggdXJpLCBDcmVkZW50aWFsSXRlbVtdIGl0ZW1zLCBvdXQgQ3Jl
ZAogCQkJaWYgKGl0ZW1zLkxlbmd0aCA9PSAyICYmIHVzZXJuYW1lICE9IG51bGwgJiYgcGFzc3dv
cmQgIT0gbnVsbCkgewogCQkJCXBhc3N3b3JkSXRlbSA9IHBhc3N3b3JkOwogCi0JCQkJdmFyIHBh
c3N3b3JkVmFsdWUgPSBQYXNzd29yZFNlcnZpY2UuR2V0V2ViUGFzc3dvcmQgKGFjdHVhbFVybCk7
Ci0JCQkJaWYgKHBhc3N3b3JkVmFsdWUgIT0gbnVsbCkgewotCQkJCQl1c2VybmFtZS5TZXRWYWx1
ZSAoYWN0dWFsVXJsLlVzZXJJbmZvKTsKLQkJCQkJcGFzc3dvcmQuU2V0VmFsdWVOb0NvcHkgKHBh
c3N3b3JkVmFsdWUuVG9BcnJheSAoKSk7CisJCQkJdmFyIGNyZWQgPSBQYXNzd29yZFNlcnZpY2Uu
R2V0V2ViVXNlck5hbWVBbmRQYXNzd29yZCAoYWN0dWFsVXJsKTsKKwkJCQlpZiAoY3JlZCAhPSBu
dWxsKSB7CisJCQkJCXVzZXJuYW1lLlNldFZhbHVlIChjcmVkLkl0ZW0xKTsKKwkJCQkJcGFzc3dv
cmQuU2V0VmFsdWVOb0NvcHkgKGNyZWQuSXRlbTIuVG9BcnJheSAoKSk7CiAJCQkJCXJldHVybiB0
cnVlOwogCQkJCX0KIAkJCX0gZWxzZSB7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVy
c2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L01vbm9EZXZlbG9wLlZl
cnNpb25Db250cm9sLkdpdC9HaXRSZXBvc2l0b3J5LmNzDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTU1Nyw3
ICsxNTU3LDcgQEAgcHVibGljIENoYW5nZVNldCBHZXRQdXNoQ2hhbmdlU2V0IChzdHJpbmcgcmVt
b3RlLCBzdHJpbmcgYnJhbmNoKQogCQkJQ2hhbmdlU2V0IGNzZXQgPSBDcmVhdGVDaGFuZ2VTZXQg
KFJvb3RQYXRoKTsKIAkJCU9iamVjdElkIGNpZDEgPSBSb290UmVwb3NpdG9yeS5SZXNvbHZlIChy
ZW1vdGUgKyAiLyIgKyBicmFuY2gpOwogCQkJT2JqZWN0SWQgY2lkMiA9IFJvb3RSZXBvc2l0b3J5
LlJlc29sdmUgKFJvb3RSZXBvc2l0b3J5LkdldEJyYW5jaCAoKSk7Ci0JCQlSZXZXYWxrIHJ3ID0g
bmV3IFJldldhbGsgKFJvb3RSZXBvc2l0b3J5KTsKKwkJCVJldldhbGsJcncgPSBuZXcgUmV2V2Fs
ayAoUm9vdFJlcG9zaXRvcnkpOwogCQkJUmV2Q29tbWl0IGMxID0gcncuUGFyc2VDb21taXQgKGNp
ZDEpOwogCQkJUmV2Q29tbWl0IGMyID0gcncuUGFyc2VDb21taXQgKGNpZDIpOwogCQkJCkBAIC0x
NTg5LDcgKzE1ODksNyBAQCBwdWJsaWMgRGlmZkluZm9bXSBHZXRQdXNoRGlmZiAoc3RyaW5nIHJl
bW90ZSwgc3RyaW5nIGJyYW5jaCkKIAkJCVJldkNvbW1pdCBjMiA9IHJ3LlBhcnNlQ29tbWl0IChj
aWQyKTsKIAkJCQogCQkJTGlzdDxEaWZmSW5mbz4gZGlmZnMgPSBuZXcgTGlzdDxEaWZmSW5mbz4g
KCk7Ci0JCQlmb3JlYWNoICh2YXIgY2hhbmdlIGluIEdpdFV0aWwuQ29tcGFyZUNvbW1pdHMgKFJv
b3RSZXBvc2l0b3J5LCBjMSwgYzIpKSB7CisJCQlmb3JlYWNoICh2YXIgY2hhbmdlIGluIEdpdFV0
aWwuQ29tcGFyZUNvbW1pdHMgKFJvb3RSZXBvc2l0b3J5LCBjMiwgYzEpKSB7CiAJCQkJc3RyaW5n
IGRpZmY7CiAJCQkJc3dpdGNoIChjaGFuZ2UuR2V0Q2hhbmdlVHlwZSAoKSkgewogCQkJCWNhc2Ug
RGlmZkVudHJ5LkNoYW5nZVR5cGUuREVMRVRFOg0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z
L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVz
dHMvQmFzZVN2blJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTMzLDkgKzMzLDkg
QEAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3Rz
DQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlU3ZuVXRp
bHNUZXN0IDogQmFzZVJlcG9VdGlsc1Rlc3QNCisJYWJzdHJhY3QgY2xhc3MgQmFzZVN2blV0aWxz
VGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQogCXsNCi0JCXByb3RlY3RlZCBQcm9jZXNzIHN2blNl
cnZlID0gbnVsbDsNCisJCXByb3RlY3RlZCBQcm9jZXNzIFN2blNlcnZlID0gbnVsbDsNCiANCiAJ
CVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpAQCAtNTksMTMgKzU5
LDEzIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpCiAJCQkvLyBDcmVhdGUgaG9zdCAo
V2luMzIpDQogCQkJLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIGRvaW5nIHRoZSBzdm5B
ZG1pbiBjcmVhdGlvbi4NCiAJCQkvLyBBbmQgYmVmb3JlIGNoZWNrb3V0Lg0KLQkJCWlmIChzdm5T
ZXJ2ZSAhPSBudWxsKSB7DQorCQkJaWYgKFN2blNlcnZlICE9IG51bGwpIHsNCiAJCQkJaW5mbyA9
IG5ldyBQcm9jZXNzU3RhcnRJbmZvICgpOw0KIAkJCQlpbmZvLkZpbGVOYW1lID0gInN2bnNlcnZl
IjsNCiAJCQkJaW5mby5Bcmd1bWVudHMgPSAiLWRyICIgKyBSb290VXJsOw0KIAkJCQlpbmZvLldp
bmRvd1N0eWxlID0gUHJvY2Vzc1dpbmRvd1N0eWxlLkhpZGRlbjsNCi0JCQkJc3ZuU2VydmUuU3Rh
cnRJbmZvID0gaW5mbzsNCi0JCQkJc3ZuU2VydmUuU3RhcnQgKCk7DQorCQkJCVN2blNlcnZlLlN0
YXJ0SW5mbyA9IGluZm87DQorCQkJCVN2blNlcnZlLlN0YXJ0ICgpOw0KIA0KIAkJCQkvLyBDcmVh
dGUgdXNlciB0byBhdXRoLg0KIAkJCQl1c2luZyAodmFyIHBlcm0gPSBGaWxlLiBDcmVhdGVUZXh0
IChSb290VXJsICsgUGF0aC5EaXJlY3RvcnlTZXBhcmF0b3JDaGFyICsgInJlcG8iICsNCkBAIC05
Myw2ICs5MywxNSBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUgTlVuaXQuRnJhbWV3b3JrLkNvbnN0cmFp
bnRzLklSZXNvbHZlQ29uc3RyYWludCBJc0NvcnJlY3RUeXBlCiAJCQlyZXR1cm4gSXMuSW5zdGFu
Y2VPZjxTdWJ2ZXJzaW9uUmVwb3NpdG9yeT4gKCk7DQogCQl9DQogDQorCQlwcm90ZWN0ZWQgb3Zl
cnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoU3VidmVy
c2lvblJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk
ICgic3ZuOi8vc3ZucmVwby5jb206ODAvcmVwbyIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBv
Mi5Jc1VybFZhbGlkICgic3ZuK3NzaDovL3VzZXJAaG9zdC5jb206ODAvcmVwbyIpKTsNCisJCQlB
c3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cDovL3N2bnJlcG8uY29tOjgwL3Jl
cG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImh0dHBzOi8vc3Zu
cmVwby5jb206ODAvcmVwbyIpKTsNCisJCX0NCisNCiAJCXByb3RlY3RlZCBvdmVycmlkZSBSZXZp
c2lvbiBHZXRIZWFkUmV2aXNpb24gKCkNCiAJCXsNCiAJCQlyZXR1cm4gU3ZuUmV2aXNpb24uSGVh
ZDsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVs
b3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMuY3MNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgVmVyc2lvbkNvbnRyb2wuU3Vi
dmVyc2lvbi5Vbml4LlRlc3RzCiB7CiAJW1Rlc3RGaXh0dXJlXQotCXB1YmxpYyBjbGFzcyBVbml4
U3ZuVXRpbHNUZXN0IDogTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0
cy5CYXNlU3ZuVXRpbHNUZXN0CisJc2VhbGVkIGNsYXNzIFVuaXhTdm5VdGlsc1Rlc3QgOiBNb25v
RGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzLkJhc2VTdm5VdGlsc1Rlc3QK
IAl7CiAJCVN1YnZlcnNpb25CYWNrZW5kIFN2bkNsaWVudCB7CiAJCQlnZXQgeyByZXR1cm4gUmVw
by5Tdm47IH0KQEAgLTEyNyw2ICsxMjcsMTIgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUG9z
dFVubG9jayAoKQogCQkJfSk7CiAJCX0KIAorCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0
VmFsaWRVcmwgKCkKKwkJeworCQkJYmFzZS5UZXN0VmFsaWRVcmwgKCk7CisJCQlBc3NlcnQuSXNU
cnVlIChSZXBvLklzVXJsVmFsaWQgKCJmaWxlOi8vL2Rpci9yZXBvIikpOworCQl9CisKIAkJcHJv
dGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAoc3RyaW5nIHBhdGgsIHN0cmluZyB1
cmwpCiAJCXsKIAkJCXJldHVybiBuZXcgU3VidmVyc2lvblJlcG9zaXRvcnkgKG5ldyBTdm5DbGll
bnQgKCksIHVybCwgcGF0aCk7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNv
bnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy
b2wuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjAsOSArMjAsOSBAQAogICAgIDxFeGVjdXRpb24+
CiAgICAgICA8RXhlY3V0aW9uIGNsci12ZXJzaW9uPSJOZXRfMl8wIiAvPgogICAgIDwvRXhlY3V0
aW9uPgotICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0
aW9uPgogICAgIDxEZWZpbmVDb25zdGFudHM+REVCVUc8L0RlZmluZUNvbnN0YW50cz4KICAgICA8
Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0aW9uRmlsZT4uLlwuLlwu
LlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy
b2wueG1sPC9Eb2N1bWVudGF0aW9uRmlsZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IiAnJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKScgPT0gJ1Jl
bGVhc2V8QW55Q1BVJyAiPgogICAgIDxEZWJ1Z1R5cGU+cGRib25seTwvRGVidWdUeXBlPgpAQCAt
MzQsOCArMzQsOCBAQAogICAgICAgPEV4ZWN1dGlvbiBjbHItdmVyc2lvbj0iTmV0XzJfMCIgLz4K
ICAgICA8L0V4ZWN1dGlvbj4KICAgICA8RGVidWdTeW1ib2xzPnRydWU8L0RlYnVnU3ltYm9scz4K
LSAgICA8R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlvbj4K
ICAgICA8Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0aW9uRmlsZT4u
LlwuLlwuLlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcTW9ub0RldmVsb3AuVmVyc2lv
bkNvbnRyb2wueG1sPC9Eb2N1bWVudGF0aW9uRmlsZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8
SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXC4uXC4uXGNvcmVc
TW9ub0RldmVsb3AuQ29yZVxNb25vRGV2ZWxvcC5Db3JlLmNzcHJvaiI+CkBAIC0xODgsNiArMTg4
LDM5IEBACiAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0idmVyc2lvbi1jb250cm9sLTE2
LnBuZyI+CiAgICAgICA8TG9naWNhbE5hbWU+dmVyc2lvbi1jb250cm9sLTE2LnBuZzwvTG9naWNh
bE5hbWU+CiAgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIElu
Y2x1ZGU9Im1lbnVfbG9nLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9sb2cucG5nPC9M
b2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3Vy
Y2UgSW5jbHVkZT0ibWVudV9kaWZmLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9kaWZm
LnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRl
ZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfdXBkYXRlLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+
bWVudV91cGRhdGUucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+Cisg
ICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9zdGF0dXMucG5nIj4KKyAgICAgIDxM
b2dpY2FsTmFtZT5tZW51X3N0YXR1cy5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRS
ZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X2NvbW1pdC5wbmci
PgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfY29tbWl0LnBuZzwvTG9naWNhbE5hbWU+CisgICAg
PC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVf
cmVtb3RlX3N0YXR1cy5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfcmVtb3RlX3N0YXR1
cy5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRk
ZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X2FkZC5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1l
bnVfYWRkLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxF
bWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfcmVtb3ZlLnBuZyI+CisgICAgICA8TG9naWNh
bE5hbWU+bWVudV9yZW1vdmUucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3Vy
Y2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZXNvbHZlLnBuZyI+Cisg
ICAgICA8TG9naWNhbE5hbWU+bWVudV9yZXNvbHZlLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9F
bWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9ImNvbW1lbnQu
cG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5jb21tZW50LnBuZzwvTG9naWNhbE5hbWU+CisgICAg
PC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVf
cmV2ZXJ0LnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9yZXZlcnQucG5nPC9Mb2dpY2Fs
TmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdy
b3VwPgogICAgIDxDb21waWxlIEluY2x1ZGU9Imd0ay1ndWlcZ2VuZXJhdGVkLmNzIiAvPgpAQCAt
Mjc3LDM5ICszMTAsNCBAQAogICAgIDxOb25lIEluY2x1ZGU9Ik1ha2VmaWxlLmFtIiAvPgogICA8
L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKE1TQnVpbGRCaW5QYXRoKVxNaWNyb3Nv
ZnQuQ1NoYXJwLnRhcmdldHMiIC8+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENvbnRlbnQgSW5jbHVk
ZT0ibWVudV9sb2cucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVO
ZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRl
bnQgSW5jbHVkZT0ibWVudV9kaWZmLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5
PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50Pgot
ICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfdXBkYXRlLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0
cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAg
PC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfc3RhdHVzLnBuZyI+Ci0gICAg
ICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJl
Y3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfY29tbWl0
LnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5
VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9
Im1lbnVfcmVtb3RlX3N0YXR1cy5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5Q
cmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAg
ICA8Q29udGVudCBJbmNsdWRlPSJtZW51X2FkZC5wbmciPgotICAgICAgPENvcHlUb091dHB1dERp
cmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29u
dGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3JlbW92ZS5wbmciPgotICAgICAgPENv
cHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5
PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3Jlc29sdmUucG5n
Ij4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091
dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0iY29t
bWVudC5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwv
Q29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNs
dWRlPSJtZW51X3JldmVydC5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVz
ZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgPC9J
dGVtR3JvdXA+CiA8L1Byb2plY3Q+DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lv
bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNv
bnRyb2wvQ2hhbmdlU2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtOSw2ICs5LDggQEAgbmFtZXNwYWNl
IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sCiAJcHVibGljIGNsYXNzIENoYW5nZVNldAogCXsK
IAkJc3RyaW5nIGdsb2JhbENvbW1lbnQgPSBzdHJpbmcuRW1wdHk7CisJCS8vIENvbW1pdHMgc2hv
dWxkIGJlIGF0b21pYyBhbmQgc21hbGwuIFRoZXJlZm9yZSBoYXZpbmcgYSBMaXN0IGluc3RlYWQK
KwkJLy8gb2YgYSBIYXNoU2V0IHNob3VsZCBiZSBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4KIAkJTGlz
dDxDaGFuZ2VTZXRJdGVtPiBpdGVtcyA9IG5ldyBMaXN0PENoYW5nZVNldEl0ZW0+ICgpOwogCQlS
ZXBvc2l0b3J5IHJlcG87DQogCQlGaWxlUGF0aCBiYXNlUGF0aDsKQEAgLTYxLDcgKzYzLDcgQEAg
cHVibGljIHN0cmluZyBHZW5lcmF0ZUdsb2JhbENvbW1lbnQgKENvbW1pdE1lc3NhZ2VGb3JtYXQg
Zm9ybWF0LCBNb25vRGV2ZWxvcC5Qcm8KIAkJcHVibGljIHN0cmluZyBHZW5lcmF0ZVBhdGhDb21t
ZW50IChzdHJpbmcgcGF0aCwgSUVudW1lcmFibGU8Q2hhbmdlU2V0SXRlbT4gaXRlbXMsIAogCQkJ
Q29tbWl0TWVzc2FnZUZvcm1hdCBtZXNzYWdlRm9ybWF0LCBNb25vRGV2ZWxvcC5Qcm9qZWN0cy5B
dXRob3JJbmZvcm1hdGlvbiB1c2VySW5mbykKIAkJewotCQkJQ2hhbmdlTG9nV3JpdGVyIHdyaXRl
ciA9IG5ldyBDaGFuZ2VMb2dXcml0ZXIgKHBhdGgsIHVzZXJJbmZvKTsKKwkJCXZhciB3cml0ZXIg
PSBuZXcgQ2hhbmdlTG9nV3JpdGVyIChwYXRoLCB1c2VySW5mbyk7CiAJCQl3cml0ZXIuTWVzc2Fn
ZUZvcm1hdCA9IG1lc3NhZ2VGb3JtYXQ7CiAJCQkKIAkJCWZvcmVhY2ggKENoYW5nZVNldEl0ZW0g
aXRlbSBpbiBpdGVtcykgewpAQCAtODUsOCArODcsOCBAQCBwdWJsaWMgc3RyaW5nIEdlbmVyYXRl
R2xvYmFsQ29tbWVudCAoQ29tbWl0TWVzc2FnZUZvcm1hdCBmb3JtYXQsIE1vbm9EZXZlbG9wLlBy
bwogDQogCQlwdWJsaWMgYm9vbCBDb250YWluc0ZpbGUgKEZpbGVQYXRoIGZpbGVOYW1lKQogCQl7
Ci0JCQlmb3IgKGludCBuPTA7IG48aXRlbXMuQ291bnQ7IG4rKykKLQkJCQlpZiAoaXRlbXMgW25d
LkxvY2FsUGF0aCA9PSBmaWxlTmFtZSkKKwkJCWZvcmVhY2ggKHZhciBpdGVtIGluIGl0ZW1zKQor
CQkJCWlmIChpdGVtLkxvY2FsUGF0aCA9PSBmaWxlTmFtZSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJ
CQlyZXR1cm4gZmFsc2U7CiAJCX0NCkBAIC05OCw3ICsxMDAsMTEgQEAgcHVibGljIENoYW5nZVNl
dEl0ZW0gQWRkRmlsZSAoRmlsZVBhdGggZmlsZSkKIAkJCiAJCXB1YmxpYyBDaGFuZ2VTZXRJdGVt
IEFkZEZpbGUgKFZlcnNpb25JbmZvIGZpbGVWZXJzaW9uSW5mbykKIAkJewotCQkJQ2hhbmdlU2V0
SXRlbSBpdGVtID0gbmV3IENoYW5nZVNldEl0ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CisJCQlDaGFu
Z2VTZXRJdGVtIGl0ZW0gPSBHZXRGaWxlSXRlbSAoZmlsZVZlcnNpb25JbmZvLkxvY2FsUGF0aCk7
CisJCQlpZiAoaXRlbSAhPSBudWxsKQorCQkJCXJldHVybiBpdGVtOworCisJCQlpdGVtID0gbmV3
IENoYW5nZVNldEl0ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CiAJCQlpdGVtcy5BZGQgKGl0ZW0pOwog
CQkJcmV0dXJuIGl0ZW07CiAJCX0KQEAgLTEzNCw3ICsxNDAsNyBAQCBwdWJsaWMgdm9pZCBSZW1v
dmVJdGVtIChDaGFuZ2VTZXRJdGVtIGl0ZW0pCiAJCQogCQlwdWJsaWMgQ2hhbmdlU2V0IENsb25l
ICgpCiAJCXsKLQkJCUNoYW5nZVNldCBjcyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAo
KTsKKwkJCXZhciBjcyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAoKTsKIAkJCWNzLkNv
cHlGcm9tICh0aGlzKTsKIAkJCXJldHVybiBjczsKIAkJfQpAQCAtMTg0LDcgKzE5MCw3IEBAIGlu
dGVybmFsIENoYW5nZVNldEl0ZW0gKFZlcnNpb25JbmZvIHZlcnNpb25JbmZvKQogCQkKIAkJcHVi
bGljIENoYW5nZVNldEl0ZW0gQ2xvbmUgKCkKIAkJewotCQkJQ2hhbmdlU2V0SXRlbSBjcyA9IChD
aGFuZ2VTZXRJdGVtKSBNZW1iZXJ3aXNlQ2xvbmUgKCk7CisJCQl2YXIgY3MgPSAoQ2hhbmdlU2V0
SXRlbSkgTWVtYmVyd2lzZUNsb25lICgpOwogCQkJY3MuQ29weUZyb20gKHRoaXMpOwogCQkJcmV0
dXJuIGNzOwogCQl9DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wv
TW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvVmVyc2lvbkNvbnRyb2wuYWRkaW4ueG1sDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpAQCAtOCwyMCArOCw2IEBACiAgICAgICAgY2F0ZWdvcnkgICAgPSAiVmVyc2lvbiBD
b250cm9sIgogICAgICAgIGZsYWdzID0gIkhpZGRlbiIKICAgICAgICB2ZXJzaW9uICAgPSAiNC4y
Ij4KLSAKLQk8UnVudGltZT4KLQkJPEltcG9ydCBmaWxlPSJjb21tZW50LnBuZyIgLz4KLQkJPElt
cG9ydCBmaWxlPSJtZW51X2FkZC5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9jb21taXQu
cG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfZGlmZi5wbmciIC8+Ci0JCTxJbXBvcnQgZmls
ZT0ibWVudV9sb2cucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfcmVtb3RlX3N0YXR1cy5w
bmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9yZW1vdmUucG5nIiAvPgotCQk8SW1wb3J0IGZp
bGU9Im1lbnVfcmVzb2x2ZS5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9yZXZlcnQucG5n
IiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfc3RhdHVzLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxl
PSJtZW51X3VwZGF0ZS5wbmciIC8+Ci0JPC9SdW50aW1lPgogCiAJPERlcGVuZGVuY2llcz4KIAkg
ICAgPEFkZGluIGlkPSJDb3JlIiB2ZXJzaW9uPSI0LjIiLz4KQEAgLTEwNSwxNyArOTEsMTcgQEAK
IAk8L0V4dGVuc2lvbj4KIAogCTxFeHRlbnNpb24gcGF0aCA9ICIvTW9ub0RldmVsb3AvQ29yZS9T
dG9ja0ljb25zIj4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWFkZC1jb21tYW5kIiBmaWxl
ID0gIm1lbnVfYWRkLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0g
InZjLXJlbW92ZS1jb21tYW5kIiBmaWxlID0gIm1lbnVfcmVtb3ZlLnBuZyIgc2l6ZT0iTWVudSIg
Lz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlc29sdmUtY29tbWFuZCIgZmlsZSA9ICJt
ZW51X3Jlc29sdmUucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAi
dmMtcmV2ZXJ0LWNvbW1hbmQiIGZpbGUgPSAibWVudV9yZXZlcnQucG5nIiBzaXplPSJNZW51IiAv
PgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtZGlmZiIgZmlsZSA9ICJtZW51X2RpZmYucG5n
IiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtbG9nIiBmaWxlID0g
Im1lbnVfbG9nLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZj
LXN0YXR1cyIgZmlsZSA9ICJtZW51X3N0YXR1cy5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9j
a0ljb24gc3RvY2tpZCA9ICJ2Yy11cGRhdGUiIGZpbGUgPSAibWVudV91cGRhdGUucG5nIiBzaXpl
PSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWl0IiBmaWxlID0gIm1l
bnVfY29tbWl0LnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZj
LXJlbW90ZS1zdGF0dXMiIGZpbGUgPSAibWVudV9yZW1vdGVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVu
dSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1lbnQiIGZpbGUgPSAiY29tbWVu
dC5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1hZGQtY29t
bWFuZCIgcmVzb3VyY2UgPSAibWVudV9hZGQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJ
Y29uIHN0b2NraWQgPSAidmMtcmVtb3ZlLWNvbW1hbmQiIHJlc291cmNlID0gIm1lbnVfcmVtb3Zl
LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlc29sdmUt
Y29tbWFuZCIgcmVzb3VyY2UgPSAibWVudV9yZXNvbHZlLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJ
PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJldmVydC1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51
X3JldmVydC5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1k
aWZmIiByZXNvdXJjZSA9ICJtZW51X2RpZmYucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJ
Y29uIHN0b2NraWQgPSAidmMtbG9nIiByZXNvdXJjZSA9ICJtZW51X2xvZy5wbmciIHNpemU9Ik1l
bnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1zdGF0dXMiIHJlc291cmNlID0gIm1l
bnVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZj
LXVwZGF0ZSIgcmVzb3VyY2UgPSAibWVudV91cGRhdGUucG5nIiBzaXplPSJNZW51IiAvPgorCQk8
U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWl0IiByZXNvdXJjZSA9ICJtZW51X2NvbW1pdC5w
bmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZW1vdGUtc3Rh
dHVzIiByZXNvdXJjZSA9ICJtZW51X3JlbW90ZV9zdGF0dXMucG5nIiBzaXplPSJNZW51IiAvPgor
CQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWVudCIgcmVzb3VyY2UgPSAiY29tbWVudC5w
bmciIHNpemU9Ik1lbnUiIC8+CiAJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJtZC12ZXJzaW9uLWNv
bnRyb2wiIHJlc291cmNlID0gInZlcnNpb24tY29udHJvbC0xNi5wbmciIHNpemU9Ik1lbnUiIC8+
CiAJPC9FeHRlbnNpb24+CiANCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u
dHJvbC9TdWJ2ZXJzaW9uLldpbjMyLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KQEAgLTM2LDIxICszNiwyMSBAQAogbmFtZXNwYWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250
cm9sLlN1YnZlcnNpb24uVGVzdHMNCiB7DQogCVtUZXN0Rml4dHVyZV0NCi0JcHVibGljIGNsYXNz
IFNoYXJwU3ZuVXRpbHNUZXN0IDogQmFzZVN2blV0aWxzVGVzdA0KKwlzZWFsZWQgY2xhc3MgU2hh
cnBTdm5VdGlsc1Rlc3QgOiBCYXNlU3ZuVXRpbHNUZXN0DQogCXsNCiAJCVtTZXRVcF0NCiAJCXB1
YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQogCQl7DQogCQkJUm9vdFVybCA9IG5ldyBGaWxl
UGF0aCAoRmlsZVNlcnZpY2UuQ3JlYXRlVGVtcERpcmVjdG9yeSAoKSk7DQogCQkJUmVwb0xvY2F0
aW9uID0gInN2bjovL2xvY2FsaG9zdDozNjkwL3JlcG8iOw0KLQkJCXN2blNlcnZlID0gbmV3IFBy
b2Nlc3MgKCk7DQorCQkJU3ZuU2VydmUgPSBuZXcgUHJvY2VzcyAoKTsNCiAJCQliYXNlLlNldHVw
ICgpOw0KIAkJfQ0KIA0KIAkJW1RlYXJEb3duXQ0KIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgVGVh
ckRvd24gKCkNCiAJCXsNCi0JCQlzdm5TZXJ2ZS5LaWxsICgpOw0KKwkJCVN2blNlcnZlLktpbGwg
KCk7DQogDQogCQkJYmFzZS5UZWFyRG93biAoKTsNCiAJCX0NCkBAIC0xMTcsNiArMTE3LDE2IEBA
IHByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFBvc3RVbmxvY2sgKCkKIAkJCX0pOw0KIAkJfQ0KIA0K
KwkJW1Rlc3RdDQorCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCisJ
CXsNCisJCQliYXNlLlRlc3RWYWxpZFVybCAoKTsNCisNCisJCQlBc3NlcnQuSWdub3JlICgiRmls
ZSBzY2hlbWUgaXMgYnJva2VuIG9uIFdpbmRvd3MiKTsNCisJCQl2YXIgcmVwbzIgPSAoU3VidmVy
c2lvblJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk
ICgiZmlsZTovLy9jOi9kaXIvcmVwbyIpKTsNCisJCX0NCisNCiAJCXByb3RlY3RlZCBvdmVycmlk
ZSBSZXBvc2l0b3J5IEdldFJlcG8gKHN0cmluZyBwYXRoLCBzdHJpbmcgdXJsKQ0KIAkJew0KIAkJ
CXJldHVybiBuZXcgU3VidmVyc2lvblJlcG9zaXRvcnkgKG5ldyBTdm5TaGFycENsaWVudCAoKSwg
dXJsLCBwYXRoKTsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wv
U3VidmVyc2lvbi5XaW4zMi9WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLldpbjMyLmNzcHJvag0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KQEAgLTQyLDggKzQyLDggQEAKICAgICA8RXJyb3JSZXBvcnQ+cHJvbXB0PC9F
cnJvclJlcG9ydD4KICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZlbD4KICAgICA8Q29k
ZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pgot
ICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgog
ICAgIDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4u
XC4uXC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJzaW9uQWRkaW5XaW5k
b3dzLnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknID09ICdS
ZWxlYXNlfEFueUNQVScgIj4KICAgICA8RGVidWdUeXBlPnBkYm9ubHk8L0RlYnVnVHlwZT4KQEAg
LTU0LDggKzU0LDggQEAKICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZlbD4KICAgICA8
Q29kZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0
PgogICAgIDxEZWJ1Z1N5bWJvbHM+dHJ1ZTwvRGVidWdTeW1ib2xzPgotICAgIDxHZW5lcmF0ZURv
Y3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAgIDxOb1dhcm4+MTU5
MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4uXC4uXC4uXGJ1aWxk
XEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJzaW9uQWRkaW5XaW5kb3dzLnhtbDwvRG9jdW1l
bnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UmVm
ZXJlbmNlIEluY2x1ZGU9IlN5c3RlbSIgLz4KQEAgLTY5LDE1ICs2OSwxNSBAQAogICA8L0l0ZW1H
cm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJNYW5p
ZmVzdC5hZGRpbi54bWwiIC8+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ic3VidmVy
c2lvbi1sb2dvLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+c3VidmVyc2lvbi1sb2dvLnBuZzwv
TG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgogICA8L0l0ZW1Hcm91cD4KICAg
PEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxTaGFycFN2blxTaGFycFBsaW5rLVdp
bjMyLnN2bkV4ZSI+CiAgICAgICA8TGluaz5TaGFycFBsaW5rLVdpbjMyLnN2bkV4ZTwvTGluaz4K
ICAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1
dERpcmVjdG9yeT4KICAgICA8L05vbmU+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ic3VidmVyc2lv
bi1sb2dvLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0
PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgogICAgIDxDb250ZW50IElu
Y2x1ZGU9Ii4uXFNoYXJwU3ZuXFNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxsIj4KICAgICAgIDxM
aW5rPlNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxsPC9MaW5rPgogICAgICAgPENvcHlUb091dHB1
dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5Pg0KDQpNb2Rp
ZmllZDogbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0RWRpdG9yLlV0aWxz
L1RleHRGaWxlVXRpbGl0eS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE1Niw2ICsxNTYsMjUgQEAgcHVi
bGljIHN0YXRpYyBzdHJpbmcgR2V0VGV4dCAoYnl0ZVtdIGJ5dGVzLCBvdXQgRW5jb2RpbmcgZW5j
b2RpbmcsIG91dCBib29sIGhhZEIKIAkJCX0KIAkJfQogCisJCXB1YmxpYyBzdGF0aWMgc3RyaW5n
IEdldFRleHQgKGJ5dGVbXSBieXRlcywgRW5jb2RpbmcgZW5jb2RpbmcsIG91dCBib29sIGhhZEJv
bSkKKwkJeworCQkJYnl0ZVtdIGJvbSA9IGVuY29kaW5nLkdldFByZWFtYmxlICgpOworCQkJaWYg
KGJvbSAhPSBudWxsICYmIGJvbS5MZW5ndGggPiAwICYmIGJvbS5MZW5ndGggPD0gYnl0ZXMuTGVu
Z3RoKSB7CisJCQkJaGFkQm9tID0gdHJ1ZTsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGJvbS5M
ZW5ndGg7IGkrKykgeworCQkJCQlpZiAoYnl0ZXMgW2ldICE9IGJvbSBbaV0pIHsKKwkJCQkJCWhh
ZEJvbSA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2Ugewor
CQkJCWhhZEJvbSA9IGZhbHNlOworCQkJfQorCQkJaWYgKGhhZEJvbSkgCisJCQkJcmV0dXJuIGVu
Y29kaW5nLkdldFN0cmluZyAoYnl0ZXMsIGJvbS5MZW5ndGgsIGJ5dGVzLkxlbmd0aCAtIGJvbS5M
ZW5ndGgpOworCQkJcmV0dXJuIGVuY29kaW5nLkdldFN0cmluZyAoYnl0ZXMpOworCQl9CisKIAkJ
cHVibGljIHN0YXRpYyBzdHJpbmcgR2V0VGV4dCAoU3RyZWFtIGlucHV0U3RyZWFtKQogCQl7CiAJ
CQl1c2luZyAodmFyIHN0cmVhbSA9IE9wZW5TdHJlYW0gKGlucHV0U3RyZWFtKSkgewpAQCAtMzAz
LDIxICszMjIsOCBAQCBwdWJsaWMgc3RhdGljIHN0cmluZyBSZWFkQWxsVGV4dCAoc3RyaW5nIGZp
bGVOYW1lLCBFbmNvZGluZyBlbmNvZGluZywgb3V0IGJvb2wgaAogCQkJCXRocm93IG5ldyBBcmd1
bWVudE51bGxFeGNlcHRpb24gKCJlbmNvZGluZyIpOwogCQkJCiAJCQlieXRlW10gY29udGVudCA9
IEZpbGUuUmVhZEFsbEJ5dGVzIChmaWxlTmFtZSk7Ci0JCQlieXRlW10gYm9tID0gZW5jb2Rpbmcu
R2V0UHJlYW1ibGUgKCk7Ci0JCQlpZiAoYm9tICE9IG51bGwgJiYgYm9tLkxlbmd0aCA+IDAgJiYg
Ym9tLkxlbmd0aCA8PSBjb250ZW50Lkxlbmd0aCkgewotCQkJCWhhZEJvbSA9IHRydWU7Ci0JCQkJ
Zm9yIChpbnQgaSA9IDA7IGkgPCBib20uTGVuZ3RoOyBpKyspIHsKLQkJCQkJaWYgKGNvbnRlbnQg
W2ldICE9IGJvbSBbaV0pIHsKLQkJCQkJCWhhZEJvbT0gZmFsc2U7Ci0JCQkJCQlicmVhazsKLQkJ
CQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJaGFkQm9tID0gZmFsc2U7Ci0JCQl9Ci0JCQly
ZXR1cm4gZW5jb2RpbmcuR2V0U3RyaW5nIChjb250ZW50KTsKKwkJCXJldHVybiBHZXRUZXh0IChj
b250ZW50LCBlbmNvZGluZywgb3V0IGhhZEJvbSk7IAogCQl9Ci0KIAkJI2VuZHJlZ2lvbgogCiAJ
CSNyZWdpb24gQVNDSUkgZW5jb2RpbmcgY2hlY2sNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUv
TW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVkaXRvci5WaS9WaU1vZGUuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZXNldCAoc3RyaW5nIHN0YXR1cykKIAkJewogCQkJ
Q3VyU3RhdGUgPSBTdGF0ZS5Ob3JtYWw7CiAJCQlSZXNldEVkaXRvclN0YXRlIChEYXRhKTsKLQkJ
CQorCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQljb21tYW5kQnVmZmVyLkxlbmd0aCA9IDA7
CiAJCQlTdGF0dXMgPSBzdGF0dXM7CiAJCX0KQEAgLTYxNyw2ICs2MTcsNyBAQCBwcm90ZWN0ZWQg
b3ZlcnJpZGUgdm9pZCBIYW5kbGVLZXlwcmVzcyAoR2RrLktleSBrZXksIHVpbnQgdW5pY29kZUtl
eSwgR2RrLk1vZGlmaQogCQkJCQkJUnVuQWN0aW9ucyAoYWN0aW9uLCBDbGlwYm9hcmRBY3Rpb25z
LkN1dCk7CiAJCQkJCVN0YXR1cyA9ICItLSBJTlNFUlQgLS0iOwogCQkJCQlDdXJTdGF0ZSA9IFN0
YXRlLkluc2VydDsKKwkJCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQkJCUNhcmV0Lk1vZGUg
PSBDYXJldE1vZGUuSW5zZXJ0OwogCQkJCX0gZWxzZSB7CiAJCQkJCVJlc2V0ICgiVW5yZWNvZ25p
c2VkIG1vdGlvbiIpOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3Iv
TW9uby5UZXh0RWRpdG9yL0d1aS9UZXh0QXJlYS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTI2NTMsNyAr
MjY1Myw3IEBAIHB1YmxpYyBpbnQgUmVwbGFjZUFsbCAoc3RyaW5nIHdpdGhQYXR0ZXJuKQogCQkK
IAkJdm9pZCBTaG93VG9vbHRpcCAoR2RrLk1vZGlmaWVyVHlwZSBtb2RpZmllclN0YXRlKQogCQl7
Ci0JCQlpZiAobXggPCBUZXh0Vmlld01hcmdpbi5YT2Zmc2V0ICsgVGV4dFZpZXdNYXJnaW4uVGV4
dFN0YXJ0UG9zaXRpb24pIHsKKwkJCWlmIChteCA8IFRleHRWaWV3TWFyZ2luLlRleHRTdGFydFBv
c2l0aW9uKSB7CiAJCQkJSGlkZVRvb2x0aXAgKCk7CiAJCQkJcmV0dXJuOwogCQkJfQ0KDQpNb2Rp
ZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2Vi
L0NyZWRlbnRpYWxTdG9yZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTcsMTMgKzcsNiBAQCBuYW1lc3Bh
Y2UgTW9ub0RldmVsb3AuQ29yZS5XZWIKIAljbGFzcyBDcmVkZW50aWFsU3RvcmUgOiBJQ3JlZGVu
dGlhbENhY2hlCiAJewogCQlyZWFkb25seSBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIElDcmVk
ZW50aWFscz4gY3JlZGVudGlhbENhY2hlID0gbmV3IENvbmN1cnJlbnREaWN0aW9uYXJ5PFVyaSwg
SUNyZWRlbnRpYWxzPiAoKTsKLQkJc3RhdGljIHJlYWRvbmx5IENyZWRlbnRpYWxTdG9yZSBpbnN0
YW5jZSA9IG5ldyBDcmVkZW50aWFsU3RvcmUgKCk7DQotDQotCQlwdWJsaWMgc3RhdGljIENyZWRl
bnRpYWxTdG9yZSBJbnN0YW5jZSB7Ci0JCQlnZXQgewotCQkJCXJldHVybiBpbnN0YW5jZTsKLQkJ
CX0KLQkJfQogCiAJCXB1YmxpYyBJQ3JlZGVudGlhbHMgR2V0Q3JlZGVudGlhbHMgKFVyaSB1cmks
IENyZWRlbnRpYWxUeXBlIGNyZWRlbnRpYWxUeXBlKQ0KIAkJew0NCg0KTW9kaWZpZWQ6IG1haW4v
c3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9JQ3JlZGVudGlh
bFByb3ZpZGVyLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTAsNyArMTAsNyBAQCBuYW1lc3BhY2UgTW9u
b0RldmVsb3AuQ29yZS5XZWIKIAlwdWJsaWMgaW50ZXJmYWNlIElDcmVkZW50aWFsUHJvdmlkZXIK
IAl7CiAJCS8vLyA8c3VtbWFyeT4KLQkJLy8vIFJldHVybnMgQ3JlZGVudGlhbFN0YXRlIHN0YXRl
IHRoYXQgbGV0J3MgdGhlIGNvbnN1bWVyIGtub3cgaWYgSUNyZWRlbnRpYWxzCisJCS8vLyBSZXR1
cm5zIENyZWRlbnRpYWxTdGF0ZSBzdGF0ZSB0aGF0IGxldHMgdGhlIGNvbnN1bWVyIGtub3cgaWYg
SUNyZWRlbnRpYWxzCiAJCS8vLyB3ZXJlIGRpc2NvdmVyZWQgYnkgdGhlIElDcmVkZW50aWFsUHJv
dmlkZXIuIFRoZSBjcmVkZW50aWFscyBhcmd1bWVudCBpcyB0aGVuCiAJCS8vLyBwb3B1bGF0ZWQg
d2l0aCB0aGUgZGlzY292ZXJlZCB2YWxpZCBjcmVkZW50aWFscyB0aGF0IGNhbiBiZSB1c2VkIGZv
ciB0aGUgZ2l2ZW4gVXJpLgogCQkvLy8gVGhlIHByb3h5IGluc3RhbmNlIGlmIHBhc3NlZCB3aWxs
IGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3QgZ29lcyB0aHJvdWdoIHRoZSBwcm94
eQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9w
LkNvcmUuV2ViL1Byb3h5Q2FjaGUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNCwxNSArMTQsNiBAQCBj
bGFzcyBQcm94eUNhY2hlIDogSVByb3h5Q2FjaGUKIAkJc3RhdGljIHJlYWRvbmx5IElXZWJQcm94
eSBvcmlnaW5hbFN5c3RlbVByb3h5ID0gV2ViUmVxdWVzdC5HZXRTeXN0ZW1XZWJQcm94eSAoKTsK
IAogCQlyZWFkb25seSBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIFdlYlByb3h5PiBjYWNoZSA9
IG5ldyBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIFdlYlByb3h5PiAoKTsKLQkJc3RhdGljIHJl
YWRvbmx5IExhenk8UHJveHlDYWNoZT4gaW5zdGFuY2UgPSBuZXcgTGF6eTxQcm94eUNhY2hlPiAo
KCkgPT4gbmV3IFByb3h5Q2FjaGUgKCkpOwotCi0JCXB1YmxpYyBzdGF0aWMgUHJveHlDYWNoZSBJ
bnN0YW5jZSB7Ci0JCQlnZXQgewotCQkJCXJldHVybiBpbnN0YW5jZS5WYWx1ZTsKLQkJCX0KLQkJ
fQotCi0JCVByb3h5Q2FjaGUgKCkge30KIAogCQlwdWJsaWMgSVdlYlByb3h5IEdldFByb3h5IChV
cmkgdXJpKQogCQl7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUv
TW9ub0RldmVsb3AuQ29yZS5XZWIvUmVxdWVzdEhlbHBlci5jcw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEz
LDkgKzEzLDkgQEAgcHVibGljIHN0YXRpYyBjbGFzcyBSZXF1ZXN0SGVscGVyCiAJCS8vLyA8L3N1
bW1hcnk+DQogCQlpbnRlcm5hbCBzdGF0aWMgV2ViUmVzcG9uc2UgR2V0UmVzcG9uc2UgKEZ1bmM8
V2ViUmVxdWVzdD4gY3JlYXRlUmVxdWVzdCwgQWN0aW9uPFdlYlJlcXVlc3Q+IHByZXBhcmVSZXF1
ZXN0KQ0KIAkJew0KLQkJCXZhciBwcm94eUNhY2hlID0gV2ViU2VydmljZS5JbnN0YW5jZS5Qcm94
eUNhY2hlOw0KLQkJCXZhciBjcmVkZW50aWFsQ2FjaGUgPSBXZWJTZXJ2aWNlLkluc3RhbmNlLkNy
ZWRlbnRpYWxDYWNoZTsNCi0JCQl2YXIgY3JlZGVudGlhbFByb3ZpZGVyID0gV2ViU2VydmljZS5J
bnN0YW5jZS5DcmVkZW50aWFsUHJvdmlkZXI7DQorCQkJdmFyIHByb3h5Q2FjaGUgPSBXZWJTZXJ2
aWNlLlByb3h5Q2FjaGU7CisJCQl2YXIgY3JlZGVudGlhbENhY2hlID0gV2ViU2VydmljZS5DcmVk
ZW50aWFsQ2FjaGU7CisJCQl2YXIgY3JlZGVudGlhbFByb3ZpZGVyID0gV2ViU2VydmljZS5DcmVk
ZW50aWFsUHJvdmlkZXI7CiANCiAJCQlIdHRwV2ViUmVxdWVzdCBwcmV2aW91c1JlcXVlc3QgPSBu
dWxsOw0KIAkJCUlIdHRwV2ViUmVzcG9uc2UgcHJldmlvdXNSZXNwb25zZSA9IG51bGw7DQ0KDQpN
b2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUu
V2ViL1dlYlNlcnZpY2UuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0yMyw0MCArMjMsNDIgQEAKIC8vIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sCiAvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiAvLyBUSEUgU09GVFdBUkUu
CisKIHVzaW5nIFN5c3RlbTsKIHVzaW5nIFN5c3RlbS5MaW5xOwogCiB1c2luZyBNb25vLkFkZGlu
czsKK3VzaW5nIFN5c3RlbS5OZXQ7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5Db3JlLldlYgog
ewotCXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlCisJcHVibGljIHN0YXRpYyBjbGFzcyBXZWJTZXJ2
aWNlCiAJewogCQljb25zdCBzdHJpbmcgV2ViQ3JlZGVudGlhbFByb3ZpZGVyc1BhdGggPSAiL01v
bm9EZXZlbG9wL0NvcmUvV2ViQ3JlZGVudGlhbFByb3ZpZGVycyI7CiAKLQkJc3RhdGljIHJlYWRv
bmx5IExhenk8V2ViU2VydmljZT4gaW5zdGFuY2UgPSBuZXcgTGF6eTxXZWJTZXJ2aWNlPiAoKCkg
PT4gbmV3IFdlYlNlcnZpY2UgKCkpOworCQlwdWJsaWMgc3RhdGljIElQcm94eUNhY2hlIFByb3h5
Q2FjaGUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisJCXB1YmxpYyBzdGF0aWMgSUNyZWRlbnRpYWxD
YWNoZSBDcmVkZW50aWFsQ2FjaGUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisJCXB1YmxpYyBzdGF0
aWMgSUNyZWRlbnRpYWxQcm92aWRlciBDcmVkZW50aWFsUHJvdmlkZXIgeyBnZXQ7IHByaXZhdGUg
c2V0OyB9CiAKLQkJcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlIEluc3RhbmNlIHsKLQkJCWdldCB7
Ci0JCQkJcmV0dXJuIGluc3RhbmNlLlZhbHVlOwotCQkJfQotCQl9CisJCWludGVybmFsIHN0YXRp
YyB2b2lkIEluaXRpYWxpemUgKCkKKwkJeworCQkJQ3JlZGVudGlhbENhY2hlID0gbmV3IENyZWRl
bnRpYWxTdG9yZSAoKTsKKwkJCVByb3h5Q2FjaGUgPSBuZXcgUHJveHlDYWNoZSAoKTsKKwkJCUNy
ZWRlbnRpYWxQcm92aWRlciA9IEFkZGluTWFuYWdlci5HZXRFeHRlbnNpb25PYmplY3RzPElDcmVk
ZW50aWFsUHJvdmlkZXI+IChXZWJDcmVkZW50aWFsUHJvdmlkZXJzUGF0aCkuRmlyc3RPckRlZmF1
bHQgKCk7CiAKLQkJcHVibGljIElQcm94eUNhY2hlIFByb3h5Q2FjaGUgeyBnZXQ7IHNldDsgfQot
CQlwdWJsaWMgSUNyZWRlbnRpYWxDYWNoZSBDcmVkZW50aWFsQ2FjaGUgeyBnZXQ7IHNldDsgfQot
CQlwdWJsaWMgSUNyZWRlbnRpYWxQcm92aWRlciBDcmVkZW50aWFsUHJvdmlkZXIgeyBnZXQ7IHNl
dDsgfQorCQkJaWYgKENyZWRlbnRpYWxQcm92aWRlciA9PSBudWxsKSB7CisJCQkJTG9nZ2luZ1Nl
cnZpY2UuTG9nV2FybmluZyAoIk5vIHByb3h5IGNyZWRlbnRpYWwgcHJvdmlkZXIgd2FzIGZvdW5k
Iik7CiAKLQkJV2ViU2VydmljZSAoKSB7fQorCQkJfQorCQl9CiAKLQkJcHVibGljIHN0YXRpYyB2
b2lkIEluaXRpYWxpemUgKCkKKwkJY2xhc3MgTnVsbENyZWRlbnRpYWxzUHJvdmlkZXIgOiBJQ3Jl
ZGVudGlhbFByb3ZpZGVyCiAJCXsKLQkJCS8vIFdlIGNhbiBhY2Nlc3MgZXh0ZW5zaW9uIHBvaW50
cyBub3csIHNvIHdlIG5lZWQgdG8gZ2V0IHRoZSBjcmVkZW50aWFsIHByb3ZpZGVyLCB3aGljaCBp
cyBwbGF0Zm9ybS1zcGVjaWZpYy4KLQkJCS8vIFRoZSBjcmVkZW50aWFsIGNhY2hlIGFuZCBwcm94
eSBjYWNoZSBhcmUgcHVyZSBtYW5hZ2VkIGltcGxlbWVudGF0aW9uLgotCQkJSW5zdGFuY2UuQ3Jl
ZGVudGlhbENhY2hlID0gQ3JlZGVudGlhbFN0b3JlLkluc3RhbmNlOwotCQkJSW5zdGFuY2UuUHJv
eHlDYWNoZSA9IFdlYi5Qcm94eUNhY2hlLkluc3RhbmNlOwotCi0JCQkvLyBHZXQgdGhlIGZpcnN0
IHJlZ2lzdGVyZWQgY3JlZGVudGlhbCBwcm92aWRlcgotCQkJSW5zdGFuY2UuQ3JlZGVudGlhbFBy
b3ZpZGVyID0gQWRkaW5NYW5hZ2VyLkdldEV4dGVuc2lvbk9iamVjdHM8SUNyZWRlbnRpYWxQcm92
aWRlcj4gKFdlYkNyZWRlbnRpYWxQcm92aWRlcnNQYXRoKS5GaXJzdE9yRGVmYXVsdCAoKTsKKwkJ
CXB1YmxpYyBJQ3JlZGVudGlhbHMgR2V0Q3JlZGVudGlhbHMgKAorCQkJCVVyaSB1cmksIElXZWJQ
cm94eSBwcm94eSwgQ3JlZGVudGlhbFR5cGUgY3JlZGVudGlhbFR5cGUsIElDcmVkZW50aWFscyBl
eGlzdGluZ0NyZWRlbnRpYWxzLCBib29sIHJldHJ5aW5nKQorCQkJeworCQkJCXJldHVybiBudWxs
OworCQkJfQogCQl9CiAJfQogfQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxv
cC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTIsOSArMTIs
NiBAQAogICAgIDxCdWlsZEluZm8+Li5cLi5cLi5cYnVpbGRcYmluXGJ1aWxkaW5mbzwvQnVpbGRJ
bmZvPgogICAgIDxWY1JldmlzaW9uPi4uXC4uXC4uXHZjcmV2aXNpb248L1ZjUmV2aXNpb24+CiAg
IDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChCVUlMRF9S
RVZJU0lPTiknICE9ICcnIj4KLSAgICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFu
dHMpO0VOQUJMRV9SQVlHVU48L0RlZmluZUNvbnN0YW50cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgog
ICA8Q2hvb3NlPgogICAgIDxXaGVuIENvbmRpdGlvbj0iIEV4aXN0cygnYzpcUHJvZ3JhbSBGaWxl
c1xHaXRcYmluXGdpdC5leGUnKSAiPgogICAgICAgPFByb3BlcnR5R3JvdXA+CkBAIC03MSw2ICs2
OCw5IEBACiAgICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50
YXRpb24+CiAgICAgPE5vV2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KICAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKEJVSUxEX1JFVklTSU9OKScgIT0gJyci
PgorICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFudHMpO0VOQUJMRV9SQVlHVU48
L0RlZmluZUNvbnN0YW50cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg
IDxSZWZlcmVuY2UgSW5jbHVkZT0iU3lzdGVtIiAvPgogICAgIDxSZWZlcmVuY2UgSW5jbHVkZT0i
TW9uby5Qb3NpeCIgLz4NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29y
ZS9Nb25vRGV2ZWxvcC5Db3JlL0xvZ2dpbmdTZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTgx
LDIwICsxODEsNiBAQCBpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZXBvcnRVbmhhbmRsZWRFeGNlcHRp
b24gKEV4Y2VwdGlvbiBleCwgYm9vbCB3aWxsU2h1dERvd24sCiAJCQkJaWYgKFJlcG9ydENyYXNo
ZXMuSGFzVmFsdWUgJiYgIVJlcG9ydENyYXNoZXMuVmFsdWUpCiAJCQkJCXJldHVybjsKIAotCQkJ
CWJ5dGVbXSBkYXRhOwotCQkJCXVzaW5nICh2YXIgc3RyZWFtID0gbmV3IE1lbW9yeVN0cmVhbSAo
KSkgewotCQkJCQl1c2luZyAodmFyIHdyaXRlciA9IFN5c3RlbS5YbWwuWG1sV3JpdGVyLkNyZWF0
ZSAoc3RyZWFtKSkgewotCQkJCQkJd3JpdGVyLldyaXRlU3RhcnRFbGVtZW50ICgiQ3Jhc2hMb2ci
KTsKLQkJCQkJCXdyaXRlci5Xcml0ZUF0dHJpYnV0ZVN0cmluZyAoInZlcnNpb24iLCBTZXJ2aWNl
VmVyc2lvbik7Ci0KLQkJCQkJCXdyaXRlci5Xcml0ZUVsZW1lbnRTdHJpbmcgKCJTeXN0ZW1JbmZv
cm1hdGlvbiIsIFN5c3RlbUluZm9ybWF0aW9uLkdldFRleHREZXNjcmlwdGlvbiAoKSk7Ci0JCQkJ
CQl3cml0ZXIuV3JpdGVFbGVtZW50U3RyaW5nICgiRXhjZXB0aW9uIiwgZXguVG9TdHJpbmcgKCkp
OwotCi0JCQkJCQl3cml0ZXIuV3JpdGVFbmRFbGVtZW50ICgpOwotCQkJCQl9Ci0JCQkJCWRhdGEg
PSBzdHJlYW0uVG9BcnJheSAoKTsKLQkJCQl9Ci0KIAkJCQl2YXIgY3VzdG9tRGF0YSA9IG5ldyBI
YXNodGFibGUgKCk7CiAJCQkJY3VzdG9tRGF0YVsiU3lzdGVtSW5mb3JtYXRpb24iXSA9IFN5c3Rl
bUluZm9ybWF0aW9uLkdldFRleHREZXNjcmlwdGlvbiAoKTsKIApAQCAtMjA0LDE3ICsxOTAsNiBA
QCBpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZXBvcnRVbmhhbmRsZWRFeGNlcHRpb24gKEV4Y2VwdGlv
biBleCwgYm9vbCB3aWxsU2h1dERvd24sCiAJCQkJCX0pOwogCQkJCX0KIAotCQkJCS8vIExvZyB0
byBkaXNrIG9ubHkgaWYgdXBsb2FkaW5nIGZhaWxzLgotCQkJCXZhciBmaWxlbmFtZSA9IHN0cmlu
Zy5Gb3JtYXQgKCJ7MH0uezF9LnsyfS5jcmFzaGxvZyIsIERhdGVUaW1lLlV0Y05vdy5Ub1N0cmlu
ZyAoInl5eXktTU0tZGRfX0hILW1tLXNzIiksIFN5c3RlbUluZm9ybWF0aW9uLlNlc3Npb25VdWlk
LCBJbnRlcmxvY2tlZC5JbmNyZW1lbnQgKHJlZiBDcmFzaElkKSk7Ci0JCQkJVGhyZWFkUG9vbC5R
dWV1ZVVzZXJXb3JrSXRlbSAoZGVsZWdhdGUgewotCQkJCQlpZiAoIVRyeVVwbG9hZFJlcG9ydCAo
ZmlsZW5hbWUsIGRhdGEpKSB7Ci0JCQkJCQlpZiAoIURpcmVjdG9yeS5FeGlzdHMgKENyYXNoTG9n
RGlyZWN0b3J5KSkKLQkJCQkJCQlEaXJlY3RvcnkuQ3JlYXRlRGlyZWN0b3J5IChDcmFzaExvZ0Rp
cmVjdG9yeSk7Ci0KLQkJCQkJCUZpbGUuV3JpdGVBbGxCeXRlcyAoQ3Jhc2hMb2dEaXJlY3Rvcnku
Q29tYmluZSAoZmlsZW5hbWUpLCBkYXRhKTsKLQkJCQkJfQotCQkJCX0pOwotCiAJCQkJLy9lbnN1
cmUgd2UgZG9uJ3QgbG9zZSB0aGUgc2V0dGluZwogCQkJCWlmIChSZXBvcnRDcmFzaGVzICE9IG9s
ZFJlcG9ydENyYXNoZXMpIHsKIAkJCQkJUHJvcGVydHlTZXJ2aWNlLlNhdmVQcm9wZXJ0aWVzICgp
Ow0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9w
LkNvcmUvUnVudGltZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljIHN0
YXRpYyB2b2lkIEluaXRpYWxpemUgKGJvb2wgdXBkYXRlQWRkaW5SZWdpc3RyeSkKIAkJCQlTeW5j
aHJvbml6YXRpb25Db250ZXh0LlNldFN5bmNocm9uaXphdGlvbkNvbnRleHQgKG5ldyBTeW5jaHJv
bml6YXRpb25Db250ZXh0ICgpKTsKIAogCQkJLy8gSG9vayB1cCB0aGUgU1NMIGNlcnRpZmljYXRl
IHZhbGlkYXRpb24gY29kZXBhdGgKLQkJCVN5c3RlbS5OZXQuU2VydmljZVBvaW50TWFuYWdlci5T
ZXJ2ZXJDZXJ0aWZpY2F0ZVZhbGlkYXRpb25DYWxsYmFjayArPSBkZWxlZ2F0ZShvYmplY3Qgc2Vu
ZGVyLCBYNTA5Q2VydGlmaWNhdGUgY2VydGlmaWNhdGUsIFg1MDlDaGFpbiBjaGFpbiwgU3NsUG9s
aWN5RXJyb3JzIHNzbFBvbGljeUVycm9ycykgeworCQkJU2VydmljZVBvaW50TWFuYWdlci5TZXJ2
ZXJDZXJ0aWZpY2F0ZVZhbGlkYXRpb25DYWxsYmFjayArPSBkZWxlZ2F0ZShvYmplY3Qgc2VuZGVy
LCBYNTA5Q2VydGlmaWNhdGUgY2VydGlmaWNhdGUsIFg1MDlDaGFpbiBjaGFpbiwgU3NsUG9saWN5
RXJyb3JzIHNzbFBvbGljeUVycm9ycykgewogCQkJCWlmIChzc2xQb2xpY3lFcnJvcnMgPT0gU3Ns
UG9saWN5RXJyb3JzLk5vbmUpCiAJCQkJCXJldHVybiB0cnVlOwogCQkJCQpAQCAtMTEyLDYgKzEx
Miw3IEBAIHB1YmxpYyBzdGF0aWMgdm9pZCBJbml0aWFsaXplIChib29sIHVwZGF0ZUFkZGluUmVn
aXN0cnkpCiAJCQkJQ291bnRlcnMuUnVudGltZUluaXRpYWxpemF0aW9uLlRyYWNlICgiSW5pdGlh
bGl6ZWQgQWRkaW4gTWFuYWdlciIpOwogCQkJCQogCQkJCVByb3BlcnR5U2VydmljZS5Jbml0aWFs
aXplICgpOworCQkJCVdlYlNlcnZpY2UuSW5pdGlhbGl6ZSAoKTsKIAkJCQkKIAkJCQkvL2hhdmUg
dG8gZG8gdGhpcyBhZnRlciB0aGUgYWRkaW4gc2VydmljZSBhbmQgcHJvcGVydHkgc2VydmljZSBo
YXZlIGluaXRpYWxpemVkCiAJCQkJaWYgKFVzZXJEYXRhTWlncmF0aW9uU2VydmljZS5IYXNTb3Vy
Y2UpIHsKQEAgLTEyNCw4ICsxMjUsNiBAQCBwdWJsaWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAo
Ym9vbCB1cGRhdGVBZGRpblJlZ2lzdHJ5KQogCQkJCUNvdW50ZXJzLlJ1bnRpbWVJbml0aWFsaXph
dGlvbi5UcmFjZSAoIkluaXRpYWxpemluZyBBc3NlbWJseSBTZXJ2aWNlIik7CiAJCQkJc3lzdGVt
QXNzZW1ibHlTZXJ2aWNlID0gbmV3IFN5c3RlbUFzc2VtYmx5U2VydmljZSAoKTsKIAkJCQlzeXN0
ZW1Bc3NlbWJseVNlcnZpY2UuSW5pdGlhbGl6ZSAoKTsKLQotCQkJCVdlYlNlcnZpY2UuSW5pdGlh
bGl6ZSAoKTsKIAkJCQkKIAkJCQlpbml0aWFsaXplZCA9IHRydWU7CiAJCQkJDQoNCk1vZGlmaWVk
OiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5Db21wb25lbnRzLk1h
aW5Ub29sYmFyL1Byb2plY3RTZWFyY2hDYXRlZ29yeS5jcw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTI4Nywx
MiArMjg3LDE4IEBAIGludGVybmFsIFNlYXJjaFJlc3VsdCBDaGVja0ZpbGUgKFByb2plY3RGaWxl
IGZpbGUpCiAJCQlpbnRlcm5hbCBTZWFyY2hSZXN1bHQgQ2hlY2tUeXBlIChJVHlwZURlZmluaXRp
b24gdHlwZSkKIAkJCXsKIAkJCQlpbnQgcmFuazsKLQkJCQlpZiAoTWF0Y2hOYW1lIChUeXBlU2Vh
cmNoUmVzdWx0LkdldFBsYWluVGV4dCAodHlwZSwgZmFsc2UpLCBvdXQgcmFuaykpCisJCQkJaWYg
KE1hdGNoTmFtZSAoVHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIGZhbHNlKSwg
b3V0IHJhbmspKSB7CisJCQkJCWlmICh0eXBlLkRlY2xhcmluZ1R5cGUgIT0gbnVsbCkKKwkJCQkJ
CXJhbmstLTsKIAkJCQkJcmV0dXJuIG5ldyBUeXBlU2VhcmNoUmVzdWx0IChwYXR0ZXJuLCBUeXBl
U2VhcmNoUmVzdWx0LkdldFBsYWluVGV4dCAodHlwZSwgZmFsc2UpLCByYW5rLCB0eXBlLCBmYWxz
ZSkgeyBBbWJpZW5jZSA9IGFtYmllbmNlIH07CisJCQkJfQogCQkJCWlmICghRnVsbFNlYXJjaCkK
IAkJCQkJcmV0dXJuIG51bGw7Ci0JCQkJaWYgKE1hdGNoTmFtZSAoVHlwZVNlYXJjaFJlc3VsdC5H
ZXRQbGFpblRleHQgKHR5cGUsIHRydWUpLCBvdXQgcmFuaykpCisJCQkJaWYgKE1hdGNoTmFtZSAo
VHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIHRydWUpLCBvdXQgcmFuaykpIHsK
KwkJCQkJaWYgKHR5cGUuRGVjbGFyaW5nVHlwZSAhPSBudWxsKQorCQkJCQkJcmFuay0tOwogCQkJ
CQlyZXR1cm4gbmV3IFR5cGVTZWFyY2hSZXN1bHQgKHBhdHRlcm4sIFR5cGVTZWFyY2hSZXN1bHQu
R2V0UGxhaW5UZXh0ICh0eXBlLCB0cnVlKSwgcmFuaywgdHlwZSwgdHJ1ZSkgeyBBbWJpZW5jZSA9
IGFtYmllbmNlIH07CisJCQkJfQogCQkJCXJldHVybiBudWxsOwogCQkJfQogCQkJDQoNCk1vZGlm
aWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuR3VpLk9w
dGlvblBhbmVscy9Nb25vUnVudGltZVBhbmVsLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjUsMTIgKzI1
LDE1IEBACiAvLyBUSEUgU09GVFdBUkUuCiAKIHVzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5M
aW5xOwogdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CisKK3VzaW5nIEd0azsKKwog
dXNpbmcgTW9ub0RldmVsb3AuQ29yZTsKIHVzaW5nIE1vbm9EZXZlbG9wLklkZS5HdWkuRGlhbG9n
czsKIHVzaW5nIE1vbm9EZXZlbG9wLkNvcmUuQXNzZW1ibGllczsKIHVzaW5nIE1vbm9EZXZlbG9w
LkNvbXBvbmVudHM7Ci11c2luZyBHdGs7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5JZGUuR3Vp
Lk9wdGlvblBhbmVscwogewpAQCAtNTIsOSArNTUsOSBAQCBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBB
cHBseUNoYW5nZXMgKCkKIAlbU3lzdGVtLkNvbXBvbmVudE1vZGVsLlRvb2xib3hJdGVtKHRydWUp
XQogCWludGVybmFsIHBhcnRpYWwgY2xhc3MgTW9ub1J1bnRpbWVQYW5lbFdpZGdldCA6IEd0ay5C
aW4KIAl7Ci0JCUxpc3RTdG9yZSBzdG9yZTsKLQkJTGlzdDxNb25vUnVudGltZUluZm8+IG5ld0lu
Zm9zID0gbmV3IExpc3Q8TW9ub1J1bnRpbWVJbmZvPiAoKTsKLQkJTGlzdDxUYXJnZXRSdW50aW1l
PiByZW1vdmVkUnVudGltZXMgPSBuZXcgTGlzdDxUYXJnZXRSdW50aW1lPiAoKTsKKwkJcmVhZG9u
bHkgTGlzdDxUYXJnZXRSdW50aW1lPiByZW1vdmVkUnVudGltZXMgPSBuZXcgTGlzdDxUYXJnZXRS
dW50aW1lPiAoKTsKKwkJcmVhZG9ubHkgTGlzdDxNb25vUnVudGltZUluZm8+IG5ld0luZm9zID0g
bmV3IExpc3Q8TW9ub1J1bnRpbWVJbmZvPiAoKTsKKwkJcmVhZG9ubHkgTGlzdFN0b3JlIHN0b3Jl
OwogCQlUcmVlSXRlciBkZWZhdWx0SXRlcjsKIAkJVHJlZUl0ZXIgcnVubmluZ0l0ZXI7CiAJCQpA
QCAtMTAxLDEzICsxMDQsMTQgQEAgcHVibGljIHZvaWQgU3RvcmUgKCkKIAkJCU1vbm9SdW50aW1l
SW5mbyBuZXdEZWZhdWx0SW5mbyA9IG9iIGFzIE1vbm9SdW50aW1lSW5mbzsKIAkJCWlmIChvYiBp
cyBUYXJnZXRSdW50aW1lKQogCQkJCUlkZUFwcC5QcmVmZXJlbmNlcy5EZWZhdWx0VGFyZ2V0UnVu
dGltZSA9IChUYXJnZXRSdW50aW1lKW9iOwotCQkJCi0JCQlmb3JlYWNoIChNb25vUnVudGltZUlu
Zm8gcmluZm8gaW4gbmV3SW5mb3MpIHsKKworCQkJZm9yZWFjaCAodmFyIHJpbmZvIGluIG5ld0lu
Zm9zKSB7CiAJCQkJVGFyZ2V0UnVudGltZSB0ciA9IE1vbm9UYXJnZXRSdW50aW1lLlJlZ2lzdGVy
UnVudGltZSAocmluZm8pOwogCQkJCWlmIChyaW5mbyA9PSBuZXdEZWZhdWx0SW5mbykKIAkJCQkJ
SWRlQXBwLlByZWZlcmVuY2VzLkRlZmF1bHRUYXJnZXRSdW50aW1lID0gdHI7CiAJCQl9Ci0JCQlm
b3JlYWNoIChNb25vVGFyZ2V0UnVudGltZSB0ciBpbiByZW1vdmVkUnVudGltZXMpCisKKwkJCWZv
cmVhY2ggKHZhciB0ciBpbiByZW1vdmVkUnVudGltZXMuT2ZUeXBlPE1vbm9UYXJnZXRSdW50aW1l
PiAoKSkKIAkJCQlNb25vVGFyZ2V0UnVudGltZS5VbnJlZ2lzdGVyUnVudGltZSAodHIpOwogCQkJ
CiAJCX0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZl
bG9wLklkZS5Qcm9qZWN0cy5PcHRpb25QYW5lbHMvQ29tYmluZUJ1aWxkT3B0aW9ucy5jcw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljIG92ZXJyaWRlIHZvaWQgQXBwbHlDaGFu
Z2VzICgpCiAKIAlwYXJ0aWFsIGNsYXNzIENvbWJpbmVCdWlsZE9wdGlvbnNXaWRnZXQgOiBHdGsu
QmluIAogCXsKLQkJU29sdXRpb24gc29sdXRpb247CisJCXJlYWRvbmx5IFNvbHV0aW9uIHNvbHV0
aW9uOwogCQkKIAkJcHVibGljIENvbWJpbmVCdWlsZE9wdGlvbnNXaWRnZXQgKFNvbHV0aW9uIHNv
bHV0aW9uKQogCQl7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9N
b25vRGV2ZWxvcC5JZGUuUHJvamVjdHMuT3B0aW9uUGFuZWxzL1J1bnRpbWVPcHRpb25zUGFuZWwu
Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIEFw
cGx5Q2hhbmdlcygpCiAKIAlwYXJ0aWFsIGNsYXNzIFJ1bnRpbWVPcHRpb25zUGFuZWxXaWRnZXQg
OiBHdGsuQmluIAogCXsKLQkJRG90TmV0UHJvamVjdCBwcm9qZWN0OwotCQlMaXN0PFRhcmdldEZy
YW1ld29yaz4gZnJhbWV3b3JrczsKKwkJcmVhZG9ubHkgTGlzdDxUYXJnZXRGcmFtZXdvcms+IGZy
YW1ld29ya3M7CisJCXJlYWRvbmx5IERvdE5ldFByb2plY3QgcHJvamVjdDsKIAogCQlwdWJsaWMg
UnVudGltZU9wdGlvbnNQYW5lbFdpZGdldCAoRG90TmV0UHJvamVjdCBwcm9qZWN0LCBJRW51bWVy
YWJsZTxJdGVtQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbnMpCiAJCXsKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljIFJ1bnRpbWVPcHRpb25zUGFuZWxXaWRnZXQgKERvdE5ldFByb2plY3QgcHJv
amVjdCwgSUVudW1lcmFibGU8SXRlbUNvbmZpZ3UKIAkJCQlub3RJbnN0YWxsZWQgPSB0cnVlOwog
CQkJCWZyYW1ld29ya3MuQWRkIChwcm9qZWN0LlRhcmdldEZyYW1ld29yayk7CiAJCQl9Ci0JCQkJ
CisKIAkJCS8vc29ydCBieSBpZCBhc2NlbmRpbmcsIHZlcnNpb24gZGVzY2VuZGluZywgcHJvZmls
ZSBhc2NlbmRpbmcKIAkJCWZyYW1ld29ya3MuU29ydCAoKHgsIHkpID0+IHsKIAkJCQl2YXIgY21w
ID0gc3RyaW5nLkNvbXBhcmVPcmRpbmFsICh4LklkLklkZW50aWZpZXIsIHkuSWQuSWRlbnRpZmll
cik7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxv
cC5JZGUuVGVtcGxhdGVzL1NpbmdsZUZpbGVEZXNjcmlwdGlvblRlbXBsYXRlLmNzDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpAQCAtMjcyLDcgKzI3MiwxMSBAQCBwdWJsaWMgdmlydHVhbCBTdHJlYW0gQ3JlYXRlRmls
ZUNvbnRlbnQgKFNvbHV0aW9uSXRlbSBwb2xpY3lQYXJlbnQsIFByb2plY3QgcHJvagogCQkJCQlj
b250ZW50ID0gZm9ybWF0dGVkOwogCQkJfQogCQkJCi0JCQlNZW1vcnlTdHJlYW0gbXMgPSBuZXcg
TWVtb3J5U3RyZWFtICgpOworCQkJdmFyIG1zID0gbmV3IE1lbW9yeVN0cmVhbSAoKTsKKworCQkJ
dmFyIGJvbSA9IEVuY29kaW5nLlVURjguR2V0UHJlYW1ibGUgKCk7CisJCQltcy5Xcml0ZSAoYm9t
LCAwLCBib20uTGVuZ3RoKTsKKwogCQkJYnl0ZVtdIGRhdGE7CiAJCQlpZiAoQWRkU3RhbmRhcmRI
ZWFkZXIpIHsKIAkJCQlzdHJpbmcgaGVhZGVyID0gU3RhbmRhcmRIZWFkZXJTZXJ2aWNlLkdldEhl
YWRlciAocG9saWN5UGFyZW50LCBmaWxlTmFtZSwgdHJ1ZSk7DQoNCk1vZGlmaWVkOiBtYWluL3Ny
Yy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lz
dGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTExMjgsMTkgKzExMjgsMjUgQEAgcHVibGlj
IHZvaWQgSW5mb3JtRmlsZUFkZGVkIChQYXJzZWRGaWxlRXZlbnRBcmdzIGUpCiAKIAkJCVtOb25T
ZXJpYWxpemVkXQogCQkJaW50IGxvYWRPcGVyYXRpb25EZXB0aCA9IDA7CisJCQlbTm9uU2VyaWFs
aXplZF0KKwkJCXJlYWRvbmx5IG9iamVjdCBsb2FkT3BlcmF0aW9uTG9ja2VyID0gbmV3IG9iamVj
dCAoKTsKIAotCQkJaW50ZXJuYWwgaW50IExvYWRPcGVyYXRpb25EZXB0aCB7Ci0JCQkJZ2V0IHsK
LQkJCQkJcmV0dXJuIGxvYWRPcGVyYXRpb25EZXB0aDsKLQkJCQl9Ci0JCQkJc2V0IHsKLQkJCQkJ
bG9hZE9wZXJhdGlvbkRlcHRoID0gdmFsdWU7Ci0JCQkJCWlmIChsb2FkT3BlcmF0aW9uRGVwdGgg
PCAwKQotCQkJCQkJdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24gKCk7Ci0JCQkJ
CU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKKwkJCWludGVybmFsIHZvaWQgQmVnaW5Mb2FkT3Bl
cmF0aW9uICgpCisJCQl7CisJCQkJbG9jayAobG9hZE9wZXJhdGlvbkxvY2tlcikgeworCQkJCQls
b2FkT3BlcmF0aW9uRGVwdGgrKzsKIAkJCQl9CiAJCQl9CiAKKwkJCWludGVybmFsIHZvaWQgRW5k
TG9hZE9wZXJhdGlvbiAoKQorCQkJeworCQkJCWxvY2sgKGxvYWRPcGVyYXRpb25Mb2NrZXIpIHsK
KwkJCQkJaWYgKGxvYWRPcGVyYXRpb25EZXB0aCA+IDApIHsKKwkJCQkJCWxvYWRPcGVyYXRpb25E
ZXB0aC0tOworCQkJCQl9CisJCQkJfQorCQkJCU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKKwkJ
CX0KIAkJCWJvb2wgaW5Mb2FkOwogCQkJcHVibGljIGJvb2wgSW5Mb2FkIHsKIAkJCQlnZXQgewpA
QCAtMTI2OSw3ICsxMjc1LDcgQEAgcHVibGljIExhenlQcm9qZWN0TG9hZGVyIChQcm9qZWN0Q29u
dGVudFdyYXBwZXIgd3JhcHBlcikKIAkJCQkJdGhpcy53cmFwcGVyID0gd3JhcHBlcjsKIAkJCQkJ
Y29udGV4dFRhc2sgPSBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKGRlbGVnYXRlIHsKIAkJCQkJCXRy
eSB7Ci0JCQkJCQkJdGhpcy53cmFwcGVyLkxvYWRPcGVyYXRpb25EZXB0aCsrOworCQkJCQkJCXRo
aXMud3JhcHBlci5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQkJdmFyIHAgPSB0aGlzLndy
YXBwZXIuUHJvamVjdDsKIAkJCQkJCQl2YXIgY29udGV4dCA9IExvYWRQcm9qZWN0Q2FjaGUgKHAp
OwogCkBAIC0xMjg4LDcgKzEyOTQsNyBAQCBwdWJsaWMgTGF6eVByb2plY3RMb2FkZXIgKFByb2pl
Y3RDb250ZW50V3JhcHBlciB3cmFwcGVyKQogCQkJCQkJCVF1ZXVlUGFyc2VKb2IgKHRoaXMud3Jh
cHBlcik7CiAJCQkJCQkJcmV0dXJuIGNvbnRleHQ7CiAJCQkJCQl9IGZpbmFsbHkgewotCQkJCQkJ
CXRoaXMud3JhcHBlci5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJCQl0aGlzLndyYXBwZXIu
RW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJCX0KIAkJCQkJfSk7CiAJCQkJfQpAQCAtMTczMCw3
ICsxNzM2LDggQEAgaW50ZXJuYWwgc3RhdGljIHZvaWQgVW5sb2FkUHJvamVjdCAoUHJvamVjdCBw
cm9qZWN0KQogCQkJCQogCQkJUHJvamVjdENvbnRlbnRXcmFwcGVyIHdyYXBwZXI7CiAJCQlsb2Nr
IChwcm9qZWN0V3JhcHBlclVwZGF0ZUxvY2spIHsKLQkJCQl3cmFwcGVyID0gcHJvamVjdENvbnRl
bnRzIFtwcm9qZWN0XTsKKwkJCQlpZiAoIXByb2plY3RDb250ZW50cy5UcnlHZXRWYWx1ZSAocHJv
amVjdCwgb3V0IHdyYXBwZXIpKQorCQkJCQlyZXR1cm47CiAJCQkJcHJvamVjdENvbnRlbnRzLlJl
bW92ZSAocHJvamVjdCk7CiAJCQl9CiAJCQlTdG9yZVByb2plY3RDYWNoZSAocHJvamVjdCwgd3Jh
cHBlcik7CkBAIC0yMTU1LDcgKzIxNjIsMTAgQEAgaW50ZXJuYWwgdm9pZCBFbnN1cmVBc3NlbWJs
eUxvYWRlZCAoKQogCQkJCWxvY2sgKGFzbUxvY2tlcikgewogCQkJCQlpZiAoYXNzZW1ibHkgIT0g
bnVsbCkKIAkJCQkJCXJldHVybjsKLQkJCQkJYXNzZW1ibHkgPSBMb2FkQXNzZW1ibHkgKCkgPz8g
bmV3IERlZmF1bHRVbnJlc29sdmVkQXNzZW1ibHkgKGZpbGVOYW1lKTsKKwkJCQkJYXNzZW1ibHkg
PSBuZXcgRGVmYXVsdFVucmVzb2x2ZWRBc3NlbWJseSAoZmlsZU5hbWUpOworCisJCQkJCWFzc2Vt
Ymx5ID0gTG9hZEFzc2VtYmx5ICgpID8/IGFzc2VtYmx5OyAKKwogCQkJCQlPbkxvYWQgKEV2ZW50
QXJncy5FbXB0eSk7CiAJCQkJfQogCQkJfQpAQCAtMjUzNyw3ICsyNTQ3LDcgQEAgcHVibGljIHZv
aWQgUnVuIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCiAJCQkJVHlwZVN5c3RlbVBhcnNlciBw
YXJzZXIgPSBudWxsOwogCQkJCXZhciB0YWdzID0gQ29udGV4dC5HZXRFeHRlbnNpb25PYmplY3Qg
PFByb2plY3RDb21tZW50VGFncz4gKCk7CiAJCQkJdHJ5IHsKLQkJCQkJQ29udGV4dC5Mb2FkT3Bl
cmF0aW9uRGVwdGgrKzsKKwkJCQkJQ29udGV4dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJ
CWZvcmVhY2ggKHZhciBmaWxlIGluIChGaWxlTGlzdCA/PyBDb250ZXh0LlByb2plY3QuRmlsZXMp
KSB7CiAJCQkJCQl2YXIgZmlsZU5hbWUgPSBmaWxlLkZpbGVQYXRoOwogCQkJCQkJaWYgKGZpbGVz
U2tpcHBlZEluUGFyc2VUaHJlYWQuQW55IChmID0+IGYgPT0gZmlsZU5hbWUpKQpAQCAtMjU1OCw3
ICsyNTY4LDcgQEAgcHVibGljIHZvaWQgUnVuIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCiAJ
CQkJCQlDb250ZXh0LkluZm9ybUZpbGVBZGRlZCAobmV3IFBhcnNlZEZpbGVFdmVudEFyZ3MgKHBh
cnNlZERvY3VtZW50LlBhcnNlZEZpbGUpKTsKIAkJCQkJfQogCQkJCX0gZmluYWxseSB7Ci0JCQkJ
CUNvbnRleHQuTG9hZE9wZXJhdGlvbkRlcHRoLS07CisJCQkJCUNvbnRleHQuRW5kTG9hZE9wZXJh
dGlvbiAoKTsKIAkJCQl9CiAJCQl9CiAJCX0KQEAgLTI2MTQsNyArMjYyNCw3IEBAIHN0YXRpYyB2
b2lkIFF1ZXVlUGFyc2VKb2IgKFByb2plY3RDb250ZW50V3JhcHBlciBjb250ZXh0LCBJRW51bWVy
YWJsZTxQcm9qZWN0RmlsCiAJCQl9OwogCQkJbG9jayAocGFyc2VRdWV1ZUxvY2spIHsKIAkJCQlS
ZW1vdmVQYXJzZUpvYiAoY29udGV4dCk7Ci0JCQkJY29udGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgr
KzsKKwkJCQljb250ZXh0LkJlZ2luTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQlwYXJzZVF1ZXVlSW5k
ZXggW2NvbnRleHRdID0gam9iOwogCQkJCXBhcnNlUXVldWUuRW5xdWV1ZSAoam9iKTsKIAkJCQlw
YXJzZUV2ZW50LlNldCAoKTsKQEAgLTI2NTIsNyArMjY2Miw3IEBAIHN0YXRpYyB2b2lkIFJlbW92
ZVBhcnNlSm9iIChQcm9qZWN0Q29udGVudFdyYXBwZXIgcHJvamVjdCkKIAkJCQlQYXJzaW5nSm9i
IGpvYjsKIAkJCQlpZiAocGFyc2VRdWV1ZUluZGV4LlRyeUdldFZhbHVlIChwcm9qZWN0LCBvdXQg
am9iKSkgewogCQkJCQlwYXJzZVF1ZXVlSW5kZXguUmVtb3ZlIChwcm9qZWN0KTsKLQkJCQkJcHJv
amVjdC5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJcHJvamVjdC5FbmRMb2FkT3BlcmF0aW9u
ICgpOwogCQkJCX0KIAkJCX0KIAkJfQpAQCAtMjcwNSw3ICsyNzE1LDcgQEAgc3RhdGljIHZvaWQg
Q2hlY2tNb2RpZmllZEZpbGVzIChQcm9qZWN0IHByb2plY3QsIFByb2plY3RGaWxlW10gcHJvamVj
dEZpbGVzLCBQcm8KIAkJewogCQkJY29udGVudC5SdW5XaGVuTG9hZGVkIChkZWxlZ2F0ZShJUHJv
amVjdENvbnRlbnQgY250KSB7CiAJCQkJdHJ5IHsKLQkJCQkJY29udGVudC5Mb2FkT3BlcmF0aW9u
RGVwdGgrKzsKKwkJCQkJY29udGVudC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCXZhciBt
b2RpZmllZEZpbGVzID0gbmV3IExpc3Q8UHJvamVjdEZpbGU+ICgpOwogCQkJCQl2YXIgb2xkRmls
ZU5ld0ZpbGUgPSBuZXcgTGlzdDxUdXBsZTxQcm9qZWN0RmlsZSwgSVVucmVzb2x2ZWRGaWxlPj4g
KCk7CiAKQEAgLTI3NDcsNyArMjc1Nyw3IEBAIHN0YXRpYyB2b2lkIENoZWNrTW9kaWZpZWRGaWxl
cyAoUHJvamVjdCBwcm9qZWN0LCBQcm9qZWN0RmlsZVtdIHByb2plY3RGaWxlcywgUHJvCiAJCQkJ
fSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKIAkJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJF
eGNlcHRpb24gaW4gY2hlY2sgbW9kaWZpZWQgZmlsZXMuIiwgZSk7CiAJCQkJfSBmaW5hbGx5IHsK
LQkJCQkJY29udGVudC5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJY29udGVudC5FbmRMb2Fk
T3BlcmF0aW9uICgpOwogCQkJCX0KIAogCQkJfSk7CkBAIC0yODIwLDcgKzI4MzAsNyBAQCBzdGF0
aWMgdm9pZCBDb25zdW1lUGFyc2luZ1F1ZXVlICgpCiAJCQkJCQkJCW1vbml0b3IgPSBHZXRQYXJz
ZVByb2dyZXNzTW9uaXRvciAoKTsKIAkJCQkJCQltb25pdG9yLlJlcG9ydEVycm9yIChudWxsLCBl
eCk7CiAJCQkJCQl9IGZpbmFsbHkgewotCQkJCQkJCWpvYi5Db250ZXh0LkxvYWRPcGVyYXRpb25E
ZXB0aC0tOworCQkJCQkJCWpvYi5Db250ZXh0LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQl9
CiAJCQkJCX0KIAkJCQkJDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklk
ZS9Nb25vRGV2ZWxvcC5JZGUvSWRlU3RhcnR1cC5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQ2LDEyICs0
Niw5IEBACiB1c2luZyBNb25vRGV2ZWxvcC5Db3JlOwogdXNpbmcgTW9ub0RldmVsb3AuSWRlLkd1
aS5EaWFsb2dzOwogdXNpbmcgTW9ub0RldmVsb3AuSWRlLkd1aTsKLXVzaW5nIE1vbm9EZXZlbG9w
LkNvcmUuRXhlY3V0aW9uOwogdXNpbmcgTW9ub0RldmVsb3AuQ29yZS5JbnN0cnVtZW50YXRpb247
CiB1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7Ci11c2luZyBNb25vRGV2ZWxvcC5Qcm9qZWN0czsK
IHVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwotdXNpbmcgTW9ub0RldmVsb3AuQ29y
ZS5Mb2dSZXBvcnRpbmc7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5JZGUKIHsKQEAgLTg4LDkg
Kzg1LDggQEAgaW50IFJ1biAoTW9ub0RldmVsb3BPcHRpb25zIG9wdGlvbnMpCiAJCQlQbGF0Zm9y
bS5Jbml0aWFsaXplICgpOwogCQkJCiAJCQlDb3VudGVycy5Jbml0aWFsaXphdGlvbi5UcmFjZSAo
IkluaXRpYWxpemluZyBHVEsiKTsKLQkJCWlmIChQbGF0Zm9ybS5Jc1dpbmRvd3MpIHsKLQkJCQlD
aGVja1dpbmRvd3NHdGsgKCk7Ci0JCQl9CisJCQlpZiAoUGxhdGZvcm0uSXNXaW5kb3dzICYmICFD
aGVja1dpbmRvd3NHdGsgKCkpCisJCQkJcmV0dXJuIDE7CiAJCQlTZXR1cEV4Y2VwdGlvbk1hbmFn
ZXIgKCk7CiAJCQkKIAkJCXRyeSB7CkBAIC0zMjIsMjYgKzMxOCw2MSBAQCB2b2lkIFNldHVwVGhl
bWUgKCkKIAkJW3JldHVybjogU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk1hcnNoYWxB
cyhTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuVW5tYW5hZ2VkVHlwZS5Cb29sKV0KIAkJ
c3RhdGljIGV4dGVybiBib29sIFNldERsbERpcmVjdG9yeSAoc3RyaW5nIGxwUGF0aE5hbWUpOwog
Ci0JCXN0YXRpYyB2b2lkIENoZWNrV2luZG93c0d0ayAoKQorCQlzdGF0aWMgYm9vbCBDaGVja1dp
bmRvd3NHdGsgKCkKIAkJewogCQkJc3RyaW5nIGxvY2F0aW9uID0gbnVsbDsKKwkJCVZlcnNpb24g
dmVyc2lvbiA9IG51bGw7CisJCQlWZXJzaW9uIG1pblZlcnNpb24gPSBuZXcgVmVyc2lvbiAoMiwg
MTIsIDIyKTsKKwogCQkJdXNpbmcgKHZhciBrZXkgPSBNaWNyb3NvZnQuV2luMzIuUmVnaXN0cnku
TG9jYWxNYWNoaW5lLk9wZW5TdWJLZXkoQCJTT0ZUV0FSRVxYYW1hcmluXEd0a1NoYXJwXEluc3Rh
bGxGb2xkZXIiKSkgewotCQkJCWlmIChrZXkgIT0gbnVsbCkgeworCQkJCWlmIChrZXkgIT0gbnVs
bCkKIAkJCQkJbG9jYXRpb24gPSBrZXkuR2V0VmFsdWUgKG51bGwpIGFzIHN0cmluZzsKLQkJCQl9
CiAJCQl9Ci0JCQlpZiAobG9jYXRpb24gPT0gbnVsbCB8fCAhRmlsZS5FeGlzdHMgKFBhdGguQ29t
YmluZSAobG9jYXRpb24sICJiaW4iLCAibGliZ3RrLXdpbjMyLTIuMC0wLmRsbCIpKSkgewotCQkJ
CUxvZ2dpbmdTZXJ2aWNlLkxvZ0Vycm9yICgiRGlkIG5vdCBmaW5kIHJlZ2lzdGVyZWQgR1RLIyBp
bnN0YWxsYXRpb24iKTsKLQkJCQlyZXR1cm47CisJCQl1c2luZyAodmFyIGtleSA9IE1pY3Jvc29m
dC5XaW4zMi5SZWdpc3RyeS5Mb2NhbE1hY2hpbmUuT3BlblN1YktleSAoQCJTT0ZUV0FSRVxYYW1h
cmluXEd0a1NoYXJwXFZlcnNpb24iKSkgeworCQkJCWlmIChrZXkgIT0gbnVsbCkKKwkJCQkJVmVy
c2lvbi5UcnlQYXJzZSAoa2V5LkdldFZhbHVlIChudWxsKSBhcyBzdHJpbmcsIG91dCB2ZXJzaW9u
KTsKIAkJCX0KKworCQkJLy9UT0RPOiBjaGVjayBidWlsZCB2ZXJzaW9uIG9mIEdUSyMgZGxscyBp
biBHQUMKKwkJCWlmICh2ZXJzaW9uID09IG51bGwgfHwgdmVyc2lvbiA8IG1pblZlcnNpb24gfHwg
bG9jYXRpb24gPT0gbnVsbCB8fCAhRmlsZS5FeGlzdHMgKFBhdGguQ29tYmluZSAobG9jYXRpb24s
ICJiaW4iLCAibGliZ3RrLXdpbjMyLTIuMC0wLmRsbCIpKSkgeworCQkJCUxvZ2dpbmdTZXJ2aWNl
LkxvZ0Vycm9yICgiRGlkIG5vdCBmaW5kIHJlcXVpcmVkIEdUSyMgaW5zdGFsbGF0aW9uIik7CisJ
CQkJc3RyaW5nIHVybCA9ICJodHRwOi8vbW9ub2RldmVsb3AuY29tL0Rvd25sb2FkIjsKKwkJCQlz
dHJpbmcgY2FwdGlvbiA9ICJGYXRhbCBFcnJvciI7CisJCQkJc3RyaW5nIG1lc3NhZ2UgPQorCQkJ
CQkiezB9IGRpZCBub3QgZmluZCB0aGUgcmVxdWlyZWQgdmVyc2lvbiBvZiBHVEsjLiBQbGVhc2Ug
Y2xpY2sgT0sgdG8gb3BlbiB0aGUgZG93bmxvYWQgcGFnZSwgd2hlcmUgIiArCisJCQkJCSJ5b3Ug
Y2FuIGRvd25sb2FkIGFuZCBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbi4iOworCQkJCWlmIChE
aXNwbGF5V2luZG93c09rQ2FuY2VsTWVzc2FnZSAoCisJCQkJCXN0cmluZy5Gb3JtYXQgKG1lc3Nh
Z2UsIEJyYW5kaW5nU2VydmljZS5BcHBsaWNhdGlvbk5hbWUsIHVybCksIGNhcHRpb24pCisJCQkJ
KSB7CisJCQkJCVByb2Nlc3MuU3RhcnQgKHVybCk7CisJCQkJfQorCQkJCXJldHVybiBmYWxzZTsK
KwkJCX0KKwogCQkJdmFyIHBhdGggPSBQYXRoLkNvbWJpbmUgKGxvY2F0aW9uLCBAImJpbiIpOwog
CQkJdHJ5IHsKIAkJCQlpZiAoU2V0RGxsRGlyZWN0b3J5IChwYXRoKSkgewotCQkJCQlyZXR1cm47
CisJCQkJCXJldHVybiB0cnVlOwogCQkJCX0KIAkJCX0gY2F0Y2ggKEVudHJ5UG9pbnROb3RGb3Vu
ZEV4Y2VwdGlvbikgewogCQkJfQotCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJVbmFibGUg
dG8gc2V0IEdUSyMgZGxsIGRpcmVjdG9yeSIpOworCQkJLy8gdGhpcyBzaG91bGRuJ3QgaGFwcGVu
IHVubGVzcyBzb21ldGhpbmcgaXMgd2VpcmQgaW4gV2luZG93cworCQkJTG9nZ2luZ1NlcnZpY2Uu
TG9nRXJyb3IgKCJVbmFibGUgdG8gc2V0IEdUSysgZGxsIGRpcmVjdG9yeSIpOworCQkJcmV0dXJu
IHRydWU7CisJCX0KKworCQlzdGF0aWMgYm9vbCBEaXNwbGF5V2luZG93c09rQ2FuY2VsTWVzc2Fn
ZSAoc3RyaW5nIG1lc3NhZ2UsIHN0cmluZyBjYXB0aW9uKQorCQl7CisJCQl2YXIgbmFtZSA9IHR5
cGVvZihpbnQpLkFzc2VtYmx5LkZ1bGxOYW1lLlJlcGxhY2UgKCJtc2NvcmxpYiIsICJTeXN0ZW0u
V2luZG93cy5Gb3JtcyIpOworCQkJdmFyIGFzbSA9IEFzc2VtYmx5LkxvYWQgKG5hbWUpOworCQkJ
dmFyIG1kID0gYXNtLkdldFR5cGUgKCJTeXN0ZW0uV2luZG93cy5Gb3Jtcy5NZXNzYWdlQm94Iik7
CisJCQl2YXIgbWJiID0gYXNtLkdldFR5cGUgKCJTeXN0ZW0uV2luZG93cy5Gb3Jtcy5NZXNzYWdl
Qm94QnV0dG9ucyIpOworCQkJdmFyIG9rQ2FuY2VsID0gRW51bS5Ub09iamVjdCAobWJiLCAxKTsK
KwkJCXZhciBkciA9IGFzbS5HZXRUeXBlICgiU3lzdGVtLldpbmRvd3MuRm9ybXMuRGlhbG9nUmVz
dWx0Iik7CisJCQl2YXIgb2sgPSBFbnVtLlRvT2JqZWN0IChkciwgMSk7CisKKwkJCWNvbnN0IEJp
bmRpbmdGbGFncyBmbGFncyA9IEJpbmRpbmdGbGFncy5JbnZva2VNZXRob2QgfCBCaW5kaW5nRmxh
Z3MuUHVibGljIHwgQmluZGluZ0ZsYWdzLlN0YXRpYzsKKwkJCXJldHVybiBtZC5JbnZva2VNZW1i
ZXIgKCJTaG93IiwgZmxhZ3MsIG51bGwsIG51bGwsIG5ldyBvYmplY3RbXSB7IG1lc3NhZ2UsIGNh
cHRpb24sIG9rQ2FuY2VsIH0pLkVxdWFscyAob2spOwogCQl9CiAJCQogCQlwdWJsaWMgYm9vbCBJ
bml0aWFsaXplZCB7CkBAIC01MjksNyArNTYwLDcgQEAgcHVibGljIHN0YXRpYyBpbnQgTWFpbiAo
c3RyaW5nW10gYXJncykKIAkJCQlyZXR1cm4gb3B0aW9ucy5FcnJvciAhPSBudWxsPyAtMSA6IDA7
CiAJCQkKIAkJCUxvZ2dpbmdTZXJ2aWNlLkluaXRpYWxpemUgKG9wdGlvbnMuUmVkaXJlY3RPdXRw
dXQpOwotCQkJCisKIAkJCWludCByZXQgPSAtMTsKIAkJCWJvb2wgcmV0cnkgPSBmYWxzZTsKIAkJ
CWRvIHsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuVGV4dEVkaXRvci5U
ZXN0cy9Nb25vLlRleHRFZGl0b3IuVGVzdHMvVGV4dEZpbGVSZWFkZXJUZXN0cy5jcw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KQEAgLTE0Myw2ICsxNDMsMTggQEAgcHVibGljIHZvaWQgVGVzdEdCMTgwMzAgKCkKIAkJ
CWJ5dGVbXSBpbnB1dCA9IEVuY29kaW5nLkdldEVuY29kaW5nICg1NDkzNikuR2V0Qnl0ZXMgKHNy
Yyk7CiAJCQlBc3NlcnQuQXJlRXF1YWwgKHNyYywgVGV4dEZpbGVVdGlsaXR5LkdldFRleHQgKGlu
cHV0KSk7CiAJCX0KKworCQkvLy8gPHN1bW1hcnk+CisJCS8vLyBCdWcgMTYzMzIgLSBEdXBsaWNh
dGUgQk9NISAKKwkJLy8vIDwvc3VtbWFyeT4KKwkJW1Rlc3QoKV0KKwkJcHVibGljIHZvaWQgVGVz
dEJ1ZzE2MzMyICgpCQorCQl7CisJCQlieXRlW10gaW5wdXQgPSBuZXcgYnl0ZVtdIHsgMHhFRiwg
MHhCQiwgMHhCRiwgKGJ5dGUpJ2EnfTsKKwkJCWJvb2wgaGFkQm9tOworCQkJQXNzZXJ0LkFyZUVx
dWFsICgiYSIsIFRleHRGaWxlVXRpbGl0eS5HZXRUZXh0IChpbnB1dCwgRW5jb2RpbmcuVVRGOCwg
b3V0IGhhZEJvbSkpOworCQkJQXNzZXJ0LklzVHJ1ZSAoaGFkQm9tKTsKKwkJfQogCX0KIH0KIA0K
DQpNb2RpZmllZDogbWFpbi90ZXN0cy9Vbml0VGVzdHMvTW9ub0RldmVsb3AuQ1NoYXJwQmluZGlu
Zy9PblRoZUZseUZvcm1hdHRlclRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjczLDYgKzI3Mywy
MSBAQCBwdWJsaWMgdm9pZCBUZXN0QnVnMTYxNzRfVmlydHVhbEluZGVudCAoKQogCQkJCUNvbnNv
bGUuV3JpdGVMaW5lIChuZXdUZXh0KTsKIAkJCUFzc2VydC5BcmVFcXVhbCAoZXhwZWN0ZWQsIG5l
d1RleHQpOwogCQl9CisKKworCQkvLy8gPHN1bW1hcnk+CisJCS8vLyBCdWcgMTYyODMgLSBXcm9u
ZyBsaXRlcmFsIHN0cmluZyBhZGRpdGlvbgorCQkvLy8gPC9zdW1tYXJ5PgorCQlbVGVzdF0KKwkJ
cHVibGljIHZvaWQgVGVzdEJ1ZzE2MjgzICgpCisJCXsKKwkJCVRlc3RWaWV3Q29udGVudCBjb250
ZW50OworCQkJdmFyIGV4dCA9IFNldHVwICgiJFwiXFxkZXZcXG51bGwgezB9XCIiLCBvdXQgY29u
dGVudCk7CisJCQljb250ZW50LkdldFRleHRFZGl0b3JEYXRhICgpLkluc2VydCAoMCwgIkAiKTsK
KwkJCWV4dC5LZXlQcmVzcyAoKEdkay5LZXkpJ0AnLCAnQCcsIEdkay5Nb2RpZmllclR5cGUuTm9u
ZSk7CisJCQl2YXIgbmV3VGV4dCA9IGNvbnRlbnQuVGV4dDsKKwkJCUFzc2VydC5BcmVFcXVhbCAo
IkBcIlxcZGV2XG51bGwgezB9XCIiLCBuZXdUZXh0KTsKKwkJfQogCX0KIH0KIA0KDQpNb2RpZmll
ZDogbWFpbi94YnVpbGQuaW5jbHVkZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE0LDcgKzE0LDcgQEAgUFJP
RklMRV9OQU1FPURlYnVnV2luMzIKIGVuZGlmCiAKIFhCVUlMRD14YnVpbGQKLVhCVUlMRF9WRVJC
T1NJVFk9cXVpZXQKK1hCVUlMRF9WRVJCT1NJVFk9bm9ybWFsCiBYQlVJTERfQVJHUz0vdmVyYm9z
aXR5OiQoWEJVSUxEX1ZFUkJPU0lUWSkgL25vbG9nbyAvcHJvcGVydHk6Q29kZVBhZ2U9NjUwMDEK
IFhCVUlMRF9QUk9GSUxFPS9wcm9wZXJ0eTpDb25maWd1cmF0aW9uPSQoUFJPRklMRV9OQU1FKQog
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNb25vLXBh
dGNoZXMgbWFpbGxpc3QgIC0gIE1vbm8tcGF0Y2hlc0BsaXN0cy54aW1pYW4uY29tCmh0dHA6Ly9s
aXN0cy54aW1pYW4uY29tL21haWxtYW4vbGlzdGluZm8vbW9uby1wYXRjaGVzCg==