[MonoDevelop] log4net logging patch

Christian Hergert Christian Hergert <christian.hergert@gmail.com>
Fri, 1 Apr 2005 16:29:23 -0800


------=_Part_2465_9333919.1112401763242
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Attached is a diff patch for the logging service. It does not include
the log4net dll, so if you want to use it, put log4net.dll in
contrib/. You can get the log4net build from logging.apache.org.
-- 
Christian Hergert
Mosaix Communications, Inc.
Software Engineer
C: 253 906 2115

------=_Part_2465_9333919.1112401763242
Content-Type: text/x-patch; name="log4net.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="log4net.patch"

SW5kZXg6IGNvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuaW4JKHJldmlzaW9u
IDI0MTMpCisrKyBjb25maWd1cmUuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsNyBA
QAogRXh0cmFzL01vbm9RdWVyeS9Nb25vUXVlcnkuYWRkaW4ueG1sCiBFeHRyYXMvTW9ub0RldmVs
b3BlckV4dGVuc2lvbnMvTWFrZWZpbGUKIEV4dHJhcy9KYXZhQmluZGluZy9NYWtlZmlsZQorY29u
dHJpYi9NYWtlZmlsZQogXSkKIAogZWNobyAiIgpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3Au
QmFzZS9Db21tYW5kcy9WQkNvbnZlcnRlci9Db252ZXJ0QnVmZmVyLmNzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvQ29tbWFuZHMvVkJDb252ZXJ0ZXIvQ29udmVydEJ1
ZmZlci5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvQ29t
bWFuZHMvVkJDb252ZXJ0ZXIvQ29udmVydEJ1ZmZlci5jcwkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQAogCQkJCVZCTmV0VmlzaXRvciB2YnYgPSBuZXcgVkJOZXRWaXNpdG9yKCk7CiAJ
CQkJdmJ2LlZpc2l0KHAuY29tcGlsYXRpb25Vbml0LCBudWxsKTsKIAkJCQkKLQkJCQlDb25zb2xl
LldyaXRlTGluZSh2YnYuU291cmNlVGV4dC5Ub1N0cmluZygpKTsKKwkJCQlSdW50aW1lLkxvZ2dp
bmdTZXJ2aWNlLkluZm8odmJ2LlNvdXJjZVRleHQuVG9TdHJpbmcoKSk7CiAJCQkJUnVudGltZS5G
aWxlU2VydmljZS5OZXdGaWxlICgiR2VuZXJhdGVkLlZCIiwgIlZCTkVUIiwgdmJ2LlNvdXJjZVRl
eHQuVG9TdHJpbmcoKSk7CiAJCQl9CiAJCX0KSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJh
c2UvQ29tbWFuZHMvTWVudUl0ZW1CdWlsZGVycy5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0NvbW1hbmRzL01lbnVJdGVtQnVpbGRlcnMuY3MJKHJldmlzaW9uIDI0
MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0NvbW1hbmRzL01lbnVJdGVtQnVpbGRl
cnMuY3MJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw4ICsxNzMsOCBAQAogCQkJfQogCQkJCiAJCQkv
LyBkZWJ1ZyBjb21tYW5kIGFuZCBhcmdzCi0JCQlDb25zb2xlLldyaXRlTGluZSgiY29tbWFuZCA6
ICIgKyBjb21tYW5kKTsKLQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJhcmdzICAgIDogIiArIGFyZ3Mp
OworCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJjb21tYW5kIDogIiArIGNvbW1hbmQp
OworCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJhcmdzICAgIDogIiArIGFyZ3MpOwog
CQkJCiAJCQkvLyBjcmVhdGUgdGhlIHByb2Nlc3MKIAkJCUlQcm9ncmVzc01vbml0b3IgbW9uaXRv
ciA9IFJ1bnRpbWUuVGFza1NlcnZpY2UuR2V0UnVuUHJvZ3Jlc3NNb25pdG9yICgpOwpAQCAtMTkw
LDcgKzE5MCw3IEBACiAJCQkJCXAgPSBSdW50aW1lLlByb2Nlc3NTZXJ2aWNlLlN0YXJ0UHJvY2Vz
cyAoY29tbWFuZCwgYXJncywgd29ya2luZ0RpcmVjdG9yeSwgbnVsbCk7CiAKIAkJCQlwLldhaXRG
b3JPdXRwdXQgKCk7Ci0JCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJET05FIik7CisJCQkJUnVudGlt
ZS5Mb2dnaW5nU2VydmljZS5JbmZvICgiRE9ORSIpOwogCQkJCQogCQkJCW1vbml0b3IuTG9nLldy
aXRlTGluZSAoKTsKIAkJCQlpZiAocC5FeGl0Q29kZSA9PSAwKSB7CkBAIC0yNzgsNyArMjc4LDcg
QEAKIAkJCiAJCXB1YmxpYyBHdGsuTWVudUl0ZW1bXSBCdWlsZFN1Ym1lbnUoQ29uZGl0aW9uQ29s
bGVjdGlvbiBjb25kaXRpb25Db2xsZWN0aW9uLCBvYmplY3Qgb3duZXIpCiAJCXsKLQkJCUNvbnNv
bGUuV3JpdGVMaW5lIChFbnZpcm9ubWVudC5TdGFja1RyYWNlKTsKKwkJCVJ1bnRpbWUuTG9nZ2lu
Z1NlcnZpY2UuSW5mbyAoRW52aXJvbm1lbnQuU3RhY2tUcmFjZSk7CiAJCQlicm93c2VyID0gKFNv
bHV0aW9uUGFkKSBvd25lcjsKIAkJCUlUcmVlTmF2aWdhdG9yIG5hdiA9IGJyb3dzZXIuR2V0U2Vs
ZWN0ZWROb2RlICgpOwogCQkJaWYgKG5hdiA9PSBudWxsKSByZXR1cm4gbmV3IEd0ay5NZW51SXRl
bVswXTsKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvQ29tbWFuZHMvQXV0b3N0YXJ0
Q29tbWFuZHMuY3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9Db21t
YW5kcy9BdXRvc3RhcnRDb21tYW5kcy5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01v
bm9EZXZlbG9wLkJhc2UvQ29tbWFuZHMvQXV0b3N0YXJ0Q29tbWFuZHMuY3MJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDcgQEAKIAkJCQkJCVJ1bnRpbWUuRmlsZVNlcnZpY2UuT3BlbkZpbGUg
KGZpbGUpOwogCQkJCQkKIAkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQkJCUNvbnNv
bGUuV3JpdGVMaW5lKCJ1bmFibGUgdG8gb3BlbiBmaWxlIHswfSBleGNlcHRpb24gd2FzIDpcbnsx
fSIsIGZpbGUsIGUuVG9TdHJpbmcoKSk7CisJCQkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLklu
Zm9Gb3JtYXQoInVuYWJsZSB0byBvcGVuIGZpbGUgezB9IGV4Y2VwdGlvbiB3YXMgOlxuezF9Iiwg
ZmlsZSwgZS5Ub1N0cmluZygpKTsKIAkJCQkJfQogCQkJCX0KIAkJCX0KSW5kZXg6IENvcmUvc3Jj
L01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvRGVmYXVsdExvZ2dpbmdTZXJ2aWNlLmNzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvRGVmYXVsdExvZ2dp
bmdTZXJ2aWNlLmNzCShyZXZpc2lvbiAwKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9T
ZXJ2aWNlcy9EZWZhdWx0TG9nZ2luZ1NlcnZpY2UuY3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTg3IEBACisKK3VzaW5nIFN5c3RlbTsKKwordXNpbmcgTW9ub0RldmVsb3AuQ29yZS5TZXJ2aWNl
czsKKwordXNpbmcgbG9nNG5ldDsKKworbmFtZXNwYWNlIE1vbm9EZXZlbG9wLlNlcnZpY2VzCit7
CisJcHVibGljIGNsYXNzIERlZmF1bHRMb2dnaW5nU2VydmljZSA6IEFic3RyYWN0U2VydmljZSwg
SUxvZ2dpbmdTZXJ2aWNlCisJeworCQlwdWJsaWMgZXZlbnQgTG9nQXBwZW5kZWRIYW5kbGVyIExv
Z0FwcGVuZGVkOworCisJCXB1YmxpYyBEZWZhdWx0TG9nZ2luZ1NlcnZpY2UoKQorCQl7CisJCQls
b2c0bmV0LkNvbmZpZy5YbWxDb25maWd1cmF0b3IuQ29uZmlndXJlKCk7CisJCX0KKwkJCisJCXB1
YmxpYyBvdmVycmlkZSB2b2lkIEluaXRpYWxpemVTZXJ2aWNlKCkKKwkJeworCQkJYmFzZS5Jbml0
aWFsaXplU2VydmljZSgpOworCQl9CisJCQorCQlJTG9nIEdldExvZ2dlcihTeXN0ZW0uVHlwZSB0
eXBlKQorCQl7CisJCQlyZXR1cm4gTG9nTWFuYWdlci5HZXRMb2dnZXIodHlwZSk7CisJCX0KKwor
CQlJTG9nIEdldExvZ2dlcigpCisJCXsKKwkJCXJldHVybiBMb2dNYW5hZ2VyLkdldExvZ2dlcihT
eXN0ZW0uUmVmbGVjdGlvbi5NZXRob2RCYXNlLkdldEN1cnJlbnRNZXRob2QoKS5EZWNsYXJpbmdU
eXBlKTsKKwkJfQorCisJCVN5c3RlbS5SZWZsZWN0aW9uLk1ldGhvZEJhc2UgR2V0Q2FsbGluZ01l
dGhvZCgpCisJCXsKKwkJCVN5c3RlbS5EaWFnbm9zdGljcy5TdGFja1RyYWNlCisJCQkJCXRyYWNl
ID0gbmV3IFN5c3RlbS5EaWFnbm9zdGljcy5TdGFja1RyYWNlKHRydWUpOworCQkJcmV0dXJuIHRy
YWNlLkdldEZyYW1lKDIpLkdldE1ldGhvZCgpOworCQl9CisKKwkJcHVibGljIGJvb2wgSXNEZWJ1
Z0VuYWJsZWQgeworCQkJZ2V0IHsKKwkJCQlyZXR1cm4gR2V0TG9nZ2VyKEdldENhbGxpbmdNZXRo
b2QoKS5EZWNsYXJpbmdUeXBlKS5Jc0RlYnVnRW5hYmxlZDsKKwkJCX0KKwkJfQorCisJCXB1Ymxp
YyBib29sIElzSW5mb0VuYWJsZWQgeworCQkJZ2V0IHsKKwkJCQlyZXR1cm4gR2V0TG9nZ2VyKEdl
dENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlKS5Jc0luZm9FbmFibGVkOworCQkJfQorCQl9
CisKKwkJcHVibGljIGJvb2wgSXNXYXJuRW5hYmxlZCB7CisJCQlnZXQgeworCQkJCXJldHVybiBH
ZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLklzV2FybkVuYWJsZWQ7
CisJCQl9CisJCX0KKworCQlwdWJsaWMgYm9vbCBJc0Vycm9yRW5hYmxlZCB7CisJCQlnZXQgewor
CQkJCXJldHVybiBHZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLklz
RXJyb3JFbmFibGVkOworCQkJfQorCQl9CisKKwkJcHVibGljIGJvb2wgSXNGYXRhbEVuYWJsZWQg
eworCQkJZ2V0IHsKKwkJCQlyZXR1cm4gR2V0TG9nZ2VyKEdldENhbGxpbmdNZXRob2QoKS5EZWNs
YXJpbmdUeXBlKS5Jc0ZhdGFsRW5hYmxlZDsKKwkJCX0KKwkJfQorCisJCXB1YmxpYyB2b2lkIERl
YnVnIChvYmplY3QgbWVzc2FnZSkKKwkJeworCQkJU3lzdGVtLlR5cGUgdHlwZSA9IEdldENhbGxp
bmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlOworCQkJR2V0TG9nZ2VyKHR5cGUpLkRlYnVnIChtZXNz
YWdlKTsKKwkJCU9uTG9nQXBwZW5kZWQgKCJEZWJ1ZyIsIHR5cGUuVG9TdHJpbmcoKSwgbWVzc2Fn
ZS5Ub1N0cmluZygpKTsKKwkJfQorCisJCXB1YmxpYyB2b2lkIEluZm8gKG9iamVjdCBtZXNzYWdl
KQorCQl7CisJCQlTeXN0ZW0uVHlwZSB0eXBlID0gR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmlu
Z1R5cGU7CisJCQlHZXRMb2dnZXIodHlwZSkuSW5mbyAobWVzc2FnZSk7CisJCQlPbkxvZ0FwcGVu
ZGVkICgiSW5mbyIsIHR5cGUuVG9TdHJpbmcoKSwgbWVzc2FnZS5Ub1N0cmluZygpKTsKKwkJfQor
CisJCXB1YmxpYyB2b2lkIFdhcm4gKG9iamVjdCBtZXNzYWdlKQorCQl7CisJCQlHZXRMb2dnZXIo
R2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLldhcm4gKG1lc3NhZ2UpOworCQl9CisK
KwkJcHVibGljIHZvaWQgRXJyb3IgKG9iamVjdCBtZXNzYWdlKQorCQl7CisJCQlHZXRMb2dnZXIo
R2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLkVycm9yIChtZXNzYWdlKTsKKwkJfQor
CisJCXB1YmxpYyB2b2lkIEZhdGFsIChvYmplY3QgbWVzc2FnZSkKKwkJeworCQkJR2V0TG9nZ2Vy
KEdldENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlKS5GYXRhbCAobWVzc2FnZSk7CisJCX0K
KworCQlwdWJsaWMgdm9pZCBEZWJ1ZyAob2JqZWN0IG1lc3NhZ2UsIEV4Y2VwdGlvbiB0KQorCQl7
CisJCQlHZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLkRlYnVnICht
ZXNzYWdlLCB0KTsKKwkJfQorCQkKKwkJcHVibGljIHZvaWQgSW5mbyAob2JqZWN0IG1lc3NhZ2Us
IEV4Y2VwdGlvbiB0KQorCQl7CisJCQlHZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xh
cmluZ1R5cGUpLkluZm8gKG1lc3NhZ2UsIHQpOworCQl9CisJCQorCQlwdWJsaWMgdm9pZCBXYXJu
IChvYmplY3QgbWVzc2FnZSwgRXhjZXB0aW9uIHQpCisJCXsKKwkJCUdldExvZ2dlcihHZXRDYWxs
aW5nTWV0aG9kKCkuRGVjbGFyaW5nVHlwZSkuV2FybiAobWVzc2FnZSwgdCk7CisJCX0KKworCQlw
dWJsaWMgdm9pZCBFcnJvciAob2JqZWN0IG1lc3NhZ2UsIEV4Y2VwdGlvbiB0KQorCQl7CisJCQlH
ZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLkVycm9yIChtZXNzYWdl
LCB0KTsKKwkJfQorCQkKKwkJcHVibGljIHZvaWQgRmF0YWwgKG9iamVjdCBtZXNzYWdlLCBFeGNl
cHRpb24gdCkKKwkJeworCQkJR2V0TG9nZ2VyKEdldENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdU
eXBlKS5GYXRhbCAobWVzc2FnZSwgdCk7CisJCX0KKworCQlwdWJsaWMgdm9pZCBEZWJ1Z0Zvcm1h
dCAoc3RyaW5nIGZvcm1hdCwgcGFyYW1zIG9iamVjdFtdIGFyZ3MpCisJCXsKKwkJCUdldExvZ2dl
cihHZXRDYWxsaW5nTWV0aG9kKCkuRGVjbGFyaW5nVHlwZSkuRGVidWdGb3JtYXQgKGZvcm1hdCwg
YXJncyk7CisJCX0KKwkJCisJCXB1YmxpYyB2b2lkIEluZm9Gb3JtYXQgKHN0cmluZyBmb3JtYXQs
IHBhcmFtcyBvYmplY3RbXSBhcmdzKQorCQl7CisJCQlHZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhv
ZCgpLkRlY2xhcmluZ1R5cGUpLkluZm9Gb3JtYXQgKGZvcm1hdCwgYXJncyk7CisJCX0KKwkJCisJ
CXB1YmxpYyB2b2lkIFdhcm5Gb3JtYXQgKHN0cmluZyBmb3JtYXQsIHBhcmFtcyBvYmplY3RbXSBh
cmdzKQorCQl7CisJCQlHZXRMb2dnZXIoR2V0Q2FsbGluZ01ldGhvZCgpLkRlY2xhcmluZ1R5cGUp
Lldhcm5Gb3JtYXQgKGZvcm1hdCwgYXJncyk7CisJCX0KKwkJCisJCXB1YmxpYyB2b2lkIEVycm9y
Rm9ybWF0IChzdHJpbmcgZm9ybWF0LCBwYXJhbXMgb2JqZWN0W10gYXJncykKKwkJeworCQkJR2V0
TG9nZ2VyKEdldENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlKS5FcnJvckZvcm1hdCAoZm9y
bWF0LCBhcmdzKTsKKwkJfQorCQkKKwkJcHVibGljIHZvaWQgRmF0YWxGb3JtYXQgKHN0cmluZyBm
b3JtYXQsIHBhcmFtcyBvYmplY3RbXSBhcmdzKQorCQl7CisJCQlHZXRMb2dnZXIoR2V0Q2FsbGlu
Z01ldGhvZCgpLkRlY2xhcmluZ1R5cGUpLkZhdGFsRm9ybWF0IChmb3JtYXQsIGFyZ3MpOworCQl9
CisKKwkJcHVibGljIHZvaWQgRGVidWdGb3JtYXQoSUZvcm1hdFByb3ZpZGVyIHByb3ZpZGVyLCBz
dHJpbmcgZm9ybWF0LCBwYXJhbXMgb2JqZWN0W10gYXJncykKKwkJeworCQkJR2V0TG9nZ2VyKEdl
dENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlKS5EZWJ1Z0Zvcm1hdCAocHJvdmlkZXIsIGZv
cm1hdCwgYXJncyk7CisJCX0KKwkJCisJCXB1YmxpYyB2b2lkIEluZm9Gb3JtYXQoSUZvcm1hdFBy
b3ZpZGVyIHByb3ZpZGVyLCBzdHJpbmcgZm9ybWF0LCBwYXJhbXMgb2JqZWN0W10gYXJncykKKwkJ
eworCQkJR2V0TG9nZ2VyKEdldENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlKS5JbmZvRm9y
bWF0IChwcm92aWRlciwgZm9ybWF0LCBhcmdzKTsKKwkJfQorCisJCXB1YmxpYyB2b2lkIFdhcm5G
b3JtYXQoSUZvcm1hdFByb3ZpZGVyIHByb3ZpZGVyLCBzdHJpbmcgZm9ybWF0LCBwYXJhbXMgb2Jq
ZWN0W10gYXJncykKKwkJeworCQkJR2V0TG9nZ2VyKEdldENhbGxpbmdNZXRob2QoKS5EZWNsYXJp
bmdUeXBlKS5XYXJuRm9ybWF0IChwcm92aWRlciwgZm9ybWF0LCBhcmdzKTsKKwkJfQorCisJCXB1
YmxpYyB2b2lkIEVycm9yRm9ybWF0KElGb3JtYXRQcm92aWRlciBwcm92aWRlciwgc3RyaW5nIGZv
cm1hdCwgcGFyYW1zIG9iamVjdFtdIGFyZ3MpCisJCXsKKwkJCUdldExvZ2dlcihHZXRDYWxsaW5n
TWV0aG9kKCkuRGVjbGFyaW5nVHlwZSkuRXJyb3JGb3JtYXQgKHByb3ZpZGVyLCBmb3JtYXQsIGFy
Z3MpOworCQl9CisKKwkJcHVibGljIHZvaWQgRmF0YWxGb3JtYXQoSUZvcm1hdFByb3ZpZGVyIHBy
b3ZpZGVyLCBzdHJpbmcgZm9ybWF0LCBwYXJhbXMgb2JqZWN0W10gYXJncykKKwkJeworCQkJR2V0
TG9nZ2VyKEdldENhbGxpbmdNZXRob2QoKS5EZWNsYXJpbmdUeXBlKS5GYXRhbEZvcm1hdCAocHJv
dmlkZXIsIGZvcm1hdCwgYXJncyk7CisJCX0KKworCQlwdWJsaWMgdm9pZCBPbkxvZ0FwcGVuZGVk
KHN0cmluZyBsZXZlbCwgc3RyaW5nIGNhdGVnb3J5LCBzdHJpbmcgbWVzc2FnZSkKKwkJeworCQkJ
aWYgKExvZ0FwcGVuZGVkICE9IG51bGwpIHsKKwkJCQlMb2dBcHBlbmRlZEFyZ3MgYXJncyA9IG5l
dyBMb2dBcHBlbmRlZEFyZ3MoKTsKKwkJCQlhcmdzLkxldmVsID0gbGV2ZWw7CisJCQkJYXJncy5D
YXRlZ29yeSA9IGNhdGVnb3J5OworCQkJCWFyZ3MuTWVzc2FnZSA9IG1lc3NhZ2U7CisJCQkJYXJn
cy5UaW1lc3RhbXAgPSBEYXRlVGltZS5Ob3c7CisJCQkJTG9nQXBwZW5kZWQodGhpcywgYXJncyk7
CisJCQl9CisJCX0KKwl9Cit9CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL1NlcnZp
Y2VzL0Rpc3BhdGNoU2VydmljZS9EaXNwYXRjaFNlcnZpY2UuY3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29y
ZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9EaXNwYXRjaFNlcnZpY2UvRGlzcGF0Y2hT
ZXJ2aWNlLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9T
ZXJ2aWNlcy9EaXNwYXRjaFNlcnZpY2UvRGlzcGF0Y2hTZXJ2aWNlLmNzCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsMTQgKzE3MywxNCBAQAogCQkKIAkJcHJpdmF0ZSB2b2lkIEhhbmRsZXJFcnJvciAo
R2VuZXJpY01lc3NhZ2VDb250YWluZXIgbXNnKQogCQl7Ci0JCQlDb25zb2xlLldyaXRlTGluZSAo
ZXJyb3Jtc2cpOwotCQkJQ29uc29sZS5Xcml0ZUxpbmUgKG1zZy5FeGNlcHRpb24pOworCQkJUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvIChlcnJvcm1zZyk7CisJCQlSdW50aW1lLkxvZ2dpbmdT
ZXJ2aWNlLkluZm8gKG1zZy5FeGNlcHRpb24pOwogCQkJaWYgKG1zZy5DYWxsZXJTdGFjayAhPSBu
dWxsKSB7Ci0JCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJcbkNhbGxlciBzdGFjazoiKTsKLQkJCQlD
b25zb2xlLldyaXRlTGluZSAobXNnLkNhbGxlclN0YWNrKTsKKwkJCQlSdW50aW1lLkxvZ2dpbmdT
ZXJ2aWNlLkluZm8gKCJcbkNhbGxlciBzdGFjazoiKTsKKwkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2
aWNlLkluZm8gKG1zZy5DYWxsZXJTdGFjayk7CiAJCQl9CiAJCQllbHNlCi0JCQkJQ29uc29sZS5X
cml0ZUxpbmUgKCJcblxuQ2FsbGVyIHN0YWNrIG5vdCBhdmFpbGFibGUuIERlZmluZSB0aGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgTU9OT0RFVkVMT1BfRElTUEFUQ0hfREVCVUcgdG8gZW5hYmxlIGNh
bGxlciBzdGFjayBjYXB0dXJlLiIpOworCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAo
IlxuXG5DYWxsZXIgc3RhY2sgbm90IGF2YWlsYWJsZS4gRGVmaW5lIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBNT05PREVWRUxPUF9ESVNQQVRDSF9ERUJVRyB0byBlbmFibGUgY2FsbGVyIHN0YWNr
IGNhcHR1cmUuIik7CiAJCX0KIAl9CiAKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2Uv
U2VydmljZXMvSUxvZ2dpbmdTZXJ2aWNlLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9E
ZXZlbG9wLkJhc2UvU2VydmljZXMvSUxvZ2dpbmdTZXJ2aWNlLmNzCShyZXZpc2lvbiAwKQorKysg
Q29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9JTG9nZ2luZ1NlcnZpY2UuY3MJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKwordXNpbmcgU3lzdGVtOworCituYW1lc3BhY2Ug
TW9ub0RldmVsb3AuU2VydmljZXMKK3sKKwlwdWJsaWMgZGVsZWdhdGUgdm9pZCBMb2dBcHBlbmRl
ZEhhbmRsZXIob2JqZWN0IHNlbmRlciwgTG9nQXBwZW5kZWRBcmdzIGFyZ3MpOworCisJcHVibGlj
IGludGVyZmFjZSBJTG9nZ2luZ1NlcnZpY2UKKwl7CisJCS8qIFRlc3QgaWYgYSBsZXZlbCBpcyBl
bmFibGVkIGZvciBsb2dnaW5nICovCisJCWJvb2wgSXNEZWJ1Z0VuYWJsZWQgeyBnZXQ7IH0KKwkJ
Ym9vbCBJc0luZm9FbmFibGVkIHsgZ2V0OyB9CisJCWJvb2wgSXNXYXJuRW5hYmxlZCB7IGdldDsg
fQorCQlib29sIElzRXJyb3JFbmFibGVkIHsgZ2V0OyB9CisJCWJvb2wgSXNGYXRhbEVuYWJsZWQg
eyBnZXQ7IH0KKworCQkvKiBMb2cgYSBtZXNzYWdlIG9iamVjdCAqLworCQl2b2lkIERlYnVnKG9i
amVjdCBtZXNzYWdlKTsKKwkJdm9pZCBJbmZvKG9iamVjdCBtZXNzYWdlKTsKKwkJdm9pZCBXYXJu
KG9iamVjdCBtZXNzYWdlKTsKKwkJdm9pZCBFcnJvcihvYmplY3QgbWVzc2FnZSk7CisJCXZvaWQg
RmF0YWwob2JqZWN0IG1lc3NhZ2UpOworCisJCS8qIExvZyBhIG1lc3NhZ2Ugb2JqZWN0IGFuZCBl
eGNlcHRpb24gKi8KKwkJdm9pZCBEZWJ1ZyhvYmplY3QgbWVzc2FnZSwgRXhjZXB0aW9uIHQpOwor
CQl2b2lkIEluZm8ob2JqZWN0IG1lc3NhZ2UsIEV4Y2VwdGlvbiB0KTsKKwkJdm9pZCBXYXJuKG9i
amVjdCBtZXNzYWdlLCBFeGNlcHRpb24gdCk7CisJCXZvaWQgRXJyb3Iob2JqZWN0IG1lc3NhZ2Us
IEV4Y2VwdGlvbiB0KTsKKwkJdm9pZCBGYXRhbChvYmplY3QgbWVzc2FnZSwgRXhjZXB0aW9uIHQp
OworCisJCS8qIExvZyBhIG1lc3NhZ2Ugc3RyaW5nIHVzaW5nIHRoZSBTeXN0ZW0uU3RyaW5nLkZv
cm1hdCBzeW50YXggKi8KKwkJdm9pZCBEZWJ1Z0Zvcm1hdChzdHJpbmcgZm9ybWF0LCBwYXJhbXMg
b2JqZWN0W10gYXJncyk7CisJCXZvaWQgSW5mb0Zvcm1hdChzdHJpbmcgZm9ybWF0LCBwYXJhbXMg
b2JqZWN0W10gYXJncyk7CisJCXZvaWQgV2FybkZvcm1hdChzdHJpbmcgZm9ybWF0LCBwYXJhbXMg
b2JqZWN0W10gYXJncyk7CisJCXZvaWQgRXJyb3JGb3JtYXQoc3RyaW5nIGZvcm1hdCwgcGFyYW1z
IG9iamVjdFtdIGFyZ3MpOworCQl2b2lkIEZhdGFsRm9ybWF0KHN0cmluZyBmb3JtYXQsIHBhcmFt
cyBvYmplY3RbXSBhcmdzKTsKKworCQkvKiBMb2cgYSBtZXNzYWdlIHN0cmluZyB1c2luZyB0aGUg
U3lzdGVtLlN0cmluZy5Gb3JtYXQgc3ludGF4ICovCisJCXZvaWQgRGVidWdGb3JtYXQoSUZvcm1h
dFByb3ZpZGVyIHByb3ZpZGVyLCBzdHJpbmcgZm9ybWF0LCBwYXJhbXMgb2JqZWN0W10gYXJncyk7
CisJCXZvaWQgSW5mb0Zvcm1hdChJRm9ybWF0UHJvdmlkZXIgcHJvdmlkZXIsIHN0cmluZyBmb3Jt
YXQsIHBhcmFtcyBvYmplY3RbXSBhcmdzKTsKKwkJdm9pZCBXYXJuRm9ybWF0KElGb3JtYXRQcm92
aWRlciBwcm92aWRlciwgc3RyaW5nIGZvcm1hdCwgcGFyYW1zIG9iamVjdFtdIGFyZ3MpOworCQl2
b2lkIEVycm9yRm9ybWF0KElGb3JtYXRQcm92aWRlciBwcm92aWRlciwgc3RyaW5nIGZvcm1hdCwg
cGFyYW1zIG9iamVjdFtdIGFyZ3MpOworCQl2b2lkIEZhdGFsRm9ybWF0KElGb3JtYXRQcm92aWRl
ciBwcm92aWRlciwgc3RyaW5nIGZvcm1hdCwgcGFyYW1zIG9iamVjdFtdIGFyZ3MpOworCisJCWV2
ZW50IExvZ0FwcGVuZGVkSGFuZGxlciBMb2dBcHBlbmRlZDsKKwl9CisKKwlwdWJsaWMgY2xhc3Mg
TG9nQXBwZW5kZWRBcmdzCisJeworCQlwdWJsaWMgc3RyaW5nIENhdGVnb3J5LCBNZXNzYWdlLCBM
ZXZlbDsKKwkJcHVibGljIERhdGVUaW1lIFRpbWVzdGFtcDsKKwl9Cit9CkluZGV4OiBDb3JlL3Ny
Yy9Nb25vRGV2ZWxvcC5CYXNlL1NlcnZpY2VzL1J1bnRpbWUuY3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29y
ZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9SdW50aW1lLmNzCShyZXZpc2lvbiAyNDEz
KQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9SdW50aW1lLmNzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAJCXN0YXRpYyBMYW5ndWFnZUJpbmRpbmdTZXJ2
aWNlIGxhbmd1YWdlQmluZGluZ1NlcnZpY2U7CiAJCXN0YXRpYyBTeXN0ZW1Bc3NlbWJseVNlcnZp
Y2Ugc3lzdGVtQXNzZW1ibHlTZXJ2aWNlOwogCQlzdGF0aWMgRmlsZVV0aWxpdHlTZXJ2aWNlIGZp
bGVVdGlsaXR5U2VydmljZTsKKwkJc3RhdGljIElMb2dnaW5nU2VydmljZSBsb2dnaW5nU2Vydmlj
ZTsKIAogCQlwdWJsaWMgc3RhdGljIFByb2Nlc3NTZXJ2aWNlIFByb2Nlc3NTZXJ2aWNlIHsKIAkJ
CWdldCB7CkBAIC0xNTEsNSArMTUyLDE0IEBACiAJCQkJcmV0dXJuIGd1aVNlcnZpY2U7CiAJCQl9
CiAJCX0KKwkJCisJCXB1YmxpYyBzdGF0aWMgSUxvZ2dpbmdTZXJ2aWNlIExvZ2dpbmdTZXJ2aWNl
IHsKKwkJCWdldCB7CisJCQkJaWYgKGxvZ2dpbmdTZXJ2aWNlID09IG51bGwpCisJCQkJCWxvZ2dp
bmdTZXJ2aWNlID0gbmV3IERlZmF1bHRMb2dnaW5nU2VydmljZSgpOworCQkJCQorCQkJCXJldHVy
biBsb2dnaW5nU2VydmljZTsKKwkJCX0KKwkJfQogCX0KIH0KSW5kZXg6IENvcmUvc3JjL01vbm9E
ZXZlbG9wLkJhc2UvU2VydmljZXMvRGlzcGxheUJpbmRpbmcvRGlzcGxheUJpbmRpbmdTZXJ2aWNl
LmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvRGlz
cGxheUJpbmRpbmcvRGlzcGxheUJpbmRpbmdTZXJ2aWNlLmNzCShyZXZpc2lvbiAyNDEzKQorKysg
Q29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9EaXNwbGF5QmluZGluZy9EaXNwbGF5
QmluZGluZ1NlcnZpY2UuY3MJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKIAkJCQkJ
fQogCQkJCX0KIAkJCX0KLQkJCUNvbnNvbGUuV3JpdGVMaW5lIChTdHJpbmcuRm9ybWF0IChHZXR0
ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJEaWRudCBtYXRjaCBvbiBtaW1ldHlwZTogezB9LCB0cnlp
bmcgZmlsZW5hbWUiKSwgbWltZXR5cGUpKTsKKwkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5m
byAoU3RyaW5nLkZvcm1hdCAoR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRGlkbnQgbWF0Y2gg
b24gbWltZXR5cGU6IHswfSwgdHJ5aW5nIGZpbGVuYW1lIiksIG1pbWV0eXBlKSk7CiAJCQlmb3Jl
YWNoIChEaXNwbGF5QmluZGluZ0NvZG9uIGJpbmRpbmcgaW4gYmluZGluZ3MpIHsKIAkJCQlpZiAo
YmluZGluZy5EaXNwbGF5QmluZGluZyAhPSBudWxsICYmIGJpbmRpbmcuRGlzcGxheUJpbmRpbmcu
Q2FuQ3JlYXRlQ29udGVudEZvckZpbGUoZmlsZW5hbWUpKSB7CiAJCQkJCXJldHVybiBiaW5kaW5n
OwpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9SZXNvdXJjZVNlcnZp
Y2UuY3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9S
ZXNvdXJjZVNlcnZpY2UuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxv
cC5CYXNlL1NlcnZpY2VzL1Jlc291cmNlU2VydmljZS5jcwkod29ya2luZyBjb3B5KQpAQCAtMTcs
NiArMTcsNyBAQAogdXNpbmcgU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzOwogCiB1c2lu
ZyBNb25vRGV2ZWxvcC5Db3JlLlByb3BlcnRpZXM7Cit1c2luZyBNb25vRGV2ZWxvcC5TZXJ2aWNl
czsKIAogbmFtZXNwYWNlIE1vbm9EZXZlbG9wLkNvcmUuU2VydmljZXMKIHsKQEAgLTIzMCw3ICsy
MzEsNyBAQAogCQkJY2F0Y2ggKEdMaWIuR0V4Y2VwdGlvbiBleCkgewogCQkJCS8vIGp1c3QgZGlz
Y2FyZCB0aGUgZXhjZXB0aW9uLCB0aGUgaWNvbiBzaW1wbHkgY2FuJ3QgYmUKIAkJCQkvLyBsb2Fk
ZWQKLQkJCQlDb25zb2xlLldyaXRlTGluZSAoIldhcm5pbmc6IGNhbid0IGxvYWQgIiArIGZpbGVu
YW1lICsKKwkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm9Gb3JtYXQoIldhcm5pbmc6IGNh
bid0IGxvYWQgIiArIGZpbGVuYW1lICsKIAkJCQkgICAgICAgICAgICAgICAgICAgIiBpY29uIGZp
bGUiKTsKIAkJCX0KIAkJfQpAQCAtMjUyLDcgKzI1Myw3IEBACiAJCQlpZiAocyAhPSBudWxsKQog
CQkJCXJldHVybiBzOwogCQkJCi0JCQlDb25zb2xlLldyaXRlTGluZSAoIldBUk5JTkcgQ291bGQg
bm90IGZpbmQgc3RvY2sgezB9IiwgZmlsZW5hbWUpOworCQkJUnVudGltZS5Mb2dnaW5nU2Vydmlj
ZS5JbmZvRm9ybWF0KCJXQVJOSU5HIENvdWxkIG5vdCBmaW5kIHN0b2NrIHswfSIsIGZpbGVuYW1l
KTsKIAkJCQogCQkJcmV0dXJuIGZpbGVuYW1lOwogCQl9CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2
ZWxvcC5CYXNlL1NlcnZpY2VzL1BhcnNlclNlcnZpY2UvRGVmYXVsdFBhcnNlclNlcnZpY2UuY3MK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9QYXJzZXJT
ZXJ2aWNlL0RlZmF1bHRQYXJzZXJTZXJ2aWNlLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9z
cmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9QYXJzZXJTZXJ2aWNlL0RlZmF1bHRQYXJzZXJT
ZXJ2aWNlLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAKIAkJCQlhc20gPSBB
c3NlbWJseS5Mb2FkV2l0aFBhcnRpYWxOYW1lIChuYW1lKTsKIAkJCX0KIAkJCWlmIChhc20gPT0g
bnVsbCkgewotCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiQ291bGQgbm90IGZpbmQ6ICIgKyBuYW1l
KTsKKwkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKCJDb3VsZCBub3QgZmluZDogIiAr
IG5hbWUpOwogCQkJCXJldHVybiBzdHJpbmcuRW1wdHk7CiAJCQl9CiAJCQkKQEAgLTIwOCw3ICsy
MDgsNyBAQAogCQkJCQkJcmV0dXJuOwogCQkJCX0KIAkJCQljYXRjaCAoRXhjZXB0aW9uIGV4KSB7
Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lIChleCk7CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZp
Y2UuSW5mbyAoZXgpOwogCQkJCX0KIAkJCX0KIApAQCAtNjg2LDcgKzY4Niw3IEBACiAJCQkJfQog
CQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKIAkJCQl0cnkgewotCQkJCQlDb25zb2xlLldyaXRl
TGluZShlLlRvU3RyaW5nKCkpOworCQkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oZS5U
b1N0cmluZygpKTsKIAkJCQl9IGNhdGNoIHt9CiAJCQl9CiAJCX0KQEAgLTg5Nyw3ICs4OTcsNyBA
QAogCQkKIAkJcHVibGljIHN0cmluZyBTZWFyY2hOYW1lc3BhY2UoUHJvamVjdCBwcm9qZWN0LCBJ
VXNpbmcgdXNpbiwgc3RyaW5nIHBhcnRpdGlhbE5hbWVzcGFjZU5hbWUsIGJvb2wgY2FzZVNlbnNp
dGl2ZSkKIAkJewotLy8JCQlDb25zb2xlLldyaXRlTGluZSgiU2VhcmNoTmFtZXNwYWNlIDogPnsw
fTwiLCBwYXJ0aXRpYWxOYW1lc3BhY2VOYW1lKTsKKy8vCQkJUnVudGltZS5Mb2dnaW5nU2Vydmlj
ZS5JbmZvKCJTZWFyY2hOYW1lc3BhY2UgOiA+ezB9PCIsIHBhcnRpdGlhbE5hbWVzcGFjZU5hbWUp
OwogCQkJaWYgKE5hbWVzcGFjZUV4aXN0cyhwcm9qZWN0LCBwYXJ0aXRpYWxOYW1lc3BhY2VOYW1l
LCBjYXNlU2Vuc2l0aXZlKSkgewogCQkJCXJldHVybiBwYXJ0aXRpYWxOYW1lc3BhY2VOYW1lOwog
CQkJfQpAQCAtOTg2LDcgKzk4Niw3IEBACiAJCQogCQlwdWJsaWMgSUNsYXNzIFNlYXJjaFR5cGUo
UHJvamVjdCBwcm9qZWN0LCBJVXNpbmcgaXVzaW5nLCBzdHJpbmcgcGFydGl0aWFsVHlwZU5hbWUs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkKIAkJewotLy8JCQlDb25zb2xlLldyaXRlTGluZSgiU2VhcmNo
IHR5cGUgOiA+ezB9PCIsIHBhcnRpdGlhbFR5cGVOYW1lKTsKKy8vCQkJUnVudGltZS5Mb2dnaW5n
U2VydmljZS5JbmZvKCJTZWFyY2ggdHlwZSA6ID57MH08IiwgcGFydGl0aWFsVHlwZU5hbWUpOwog
CQkJSUNsYXNzIGMgPSBHZXRDbGFzcyhwcm9qZWN0LCBwYXJ0aXRpYWxUeXBlTmFtZSwgY2FzZVNl
bnNpdGl2ZSk7CiAJCQlpZiAoYyAhPSBudWxsKSB7CiAJCQkJcmV0dXJuIGM7CkBAIC05OTQsMTAg
Kzk5NCwxMCBAQAogCQkJCiAJCQlmb3JlYWNoIChzdHJpbmcgc3RyIGluIGl1c2luZy5Vc2luZ3Mp
IHsKIAkJCQlzdHJpbmcgcG9zc2libGVUeXBlID0gU3RyaW5nLkNvbmNhdChzdHIsICIuIiwgcGFy
dGl0aWFsVHlwZU5hbWUpOwotLy8JCQkJQ29uc29sZS5Xcml0ZUxpbmUoImxvb2tpbmcgZm9yICIg
KyBwb3NzaWJsZVR5cGUpOworLy8JCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJsb29r
aW5nIGZvciAiICsgcG9zc2libGVUeXBlKTsKIAkJCQljID0gR2V0Q2xhc3MocHJvamVjdCwgcG9z
c2libGVUeXBlLCBjYXNlU2Vuc2l0aXZlKTsKIAkJCQlpZiAoYyAhPSBudWxsKSB7Ci0vLwkJCQkJ
Q29uc29sZS5Xcml0ZUxpbmUoIkZvdW5kISIpOworLy8JCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZp
Y2UuSW5mbygiRm91bmQhIik7CiAJCQkJCXJldHVybiBjOwogCQkJCX0KIAkJCX0KQEAgLTEwMDcs
MTAgKzEwMDcsMTAgQEAKIAkJCWlmIChkZWNsYXJpbmdOYW1lc3BhY2UgIT0gbnVsbCkgewogCQkJ
CXdoaWxlIChkZWNsYXJpbmdOYW1lc3BhY2UuTGVuZ3RoID4gMCkgewogCQkJCQlzdHJpbmcgY2xh
c3NOYW1lID0gU3RyaW5nLkNvbmNhdChkZWNsYXJpbmdOYW1lc3BhY2UsICIuIiwgcGFydGl0aWFs
VHlwZU5hbWUpOwotLy8JCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJsb29raW5nIGZvciAiICsgY2xh
c3NOYW1lKTsKKy8vCQkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oImxvb2tpbmcgZm9y
ICIgKyBjbGFzc05hbWUpOwogCQkJCQljID0gR2V0Q2xhc3MocHJvamVjdCwgY2xhc3NOYW1lLCBj
YXNlU2Vuc2l0aXZlKTsKIAkJCQkJaWYgKGMgIT0gbnVsbCkgewotLy8JCQkJCQlDb25zb2xlLldy
aXRlTGluZSgiRm91bmQhIik7CisvLwkJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygi
Rm91bmQhIik7CiAJCQkJCQlyZXR1cm4gYzsKIAkJCQkJfQogCQkJCQlpbnQgaW5kZXggPSBkZWNs
YXJpbmdOYW1lc3BhY2UuSW5kZXhPZignLicpOwpAQCAtMTAyOCwxMCArMTAyOCwxMCBAQAogCQkJ
CQlzdHJpbmcgY2xhc3NOYW1lID0gbnVsbDsKIAkJCQkJaWYgKGFsaWFzU3RyaW5nLkxlbmd0aCA+
IDApIHsKIAkJCQkJCWNsYXNzTmFtZSA9IFN0cmluZy5Db25jYXQoZW50cnkuVmFsdWUuVG9TdHJp
bmcoKSwgcGFydGl0aWFsVHlwZU5hbWUuUmVtb3ZlKDAsIGFsaWFzU3RyaW5nLkxlbmd0aCkpOwot
Ly8JCQkJCQlDb25zb2xlLldyaXRlTGluZSgibG9va2luZyBmb3IgIiArIGNsYXNzTmFtZSk7Cisv
LwkJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygibG9va2luZyBmb3IgIiArIGNsYXNz
TmFtZSk7CiAJCQkJCQljID0gR2V0Q2xhc3MocHJvamVjdCwgY2xhc3NOYW1lLCBjYXNlU2Vuc2l0
aXZlKTsKIAkJCQkJCWlmIChjICE9IG51bGwpIHsKLS8vCQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5l
KCJGb3VuZCEiKTsKKy8vCQkJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiRm91bmQh
Iik7CiAJCQkJCQkJcmV0dXJuIGM7CiAJCQkJCQl9CiAJCQkJCX0KQEAgLTEyNDAsNyArMTI0MCw3
IEBACiAJCQkvLyBiZWluZyB0aHJvd24gYW5kIGNvcnJ1cHRpbmcgdGhlIHRleHRhcmVhIGNvbnRy
b2wKIAkJCXRyeSB7CiAJCQkJSVBhcnNlciBwYXJzZXIgPSBHZXRQYXJzZXIoZmlsZU5hbWUpOwot
CQkJCS8vQ29uc29sZS5Xcml0ZUxpbmUoIlBhcnNlIGluZm8gOiAiICsgR2V0UGFyc2VJbmZvcm1h
dGlvbihmaWxlTmFtZSkuTW9zdFJlY2VudENvbXBpbGF0aW9uVW5pdC5UYWcpOworCQkJCS8vUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJQYXJzZSBpbmZvIDogIiArIEdldFBhcnNlSW5mb3Jt
YXRpb24oZmlsZU5hbWUpLk1vc3RSZWNlbnRDb21waWxhdGlvblVuaXQuVGFnKTsKIAkJCQlpZiAo
cGFyc2VyICE9IG51bGwpIHsKIAkJCQkJcmV0dXJuIHBhcnNlci5SZXNvbHZlKHRoaXMsIHByb2pl
Y3QsIGV4cHJlc3Npb24sIGNhcmV0TGluZU51bWJlciwgY2FyZXRDb2x1bW4sIGZpbGVOYW1lLCBm
aWxlQ29udGVudCk7CiAJCQkJfQpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2
aWNlcy9QYXJzZXJTZXJ2aWNlL0Fzc2VtYmx5SW5mb3JtYXRpb24uY3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
Q29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9QYXJzZXJTZXJ2aWNlL0Fzc2VtYmx5
SW5mb3JtYXRpb24uY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5C
YXNlL1NlcnZpY2VzL1BhcnNlclNlcnZpY2UvQXNzZW1ibHlJbmZvcm1hdGlvbi5jcwkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogCQkKIAkJYnl0ZVtdIEdldEJ5dGVzKHN0cmluZyBm
aWxlTmFtZSkKIAkJewotCQkJQ29uc29sZS5Xcml0ZUxpbmUgKGZpbGVOYW1lKTsKKwkJCVJ1bnRp
bWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoZmlsZU5hbWUpOwogCQkJRmlsZVN0cmVhbSBmcyA9IFN5
c3RlbS5JTy5GaWxlLk9wZW5SZWFkKGZpbGVOYW1lKTsKIAkJCWxvbmcgc2l6ZSA9IGZzLkxlbmd0
aDsKIAkJCWJ5dGVbXSBvdXRBcnJheSA9IG5ldyBieXRlW3NpemVdOwpAQCAtNzAsNyArNzAsNyBA
QAogLy8JCQlUeXBlRGVmW10gdHlwZURlZlRhYmxlID0gKFR5cGVEZWZbXSlhc3NlbWJseS5NZXRh
ZGF0YVRhYmxlLlRhYmxlc1tUeXBlRGVmLlRBQkxFX0lEXTsKIC8vCQkJCiAvLwkJCWZvciAoaW50
IGkgPSAwOyBpIDwgdHlwZURlZlRhYmxlLkxlbmd0aDsgKytpKSB7Ci0vLwkJCQlDb25zb2xlLldy
aXRlTGluZSgiQUREICIgKyBpKTsKKy8vCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygi
QUREICIgKyBpKTsKIC8vCQkJCWNsYXNzZXMuQWRkKG5ldyBTaGFycEFzc2VtYmx5Q2xhc3MoYXNz
ZW1ibHksIHR5cGVEZWZUYWJsZSwgaSkpOwogLy8JCQl9CiAJCQkKQEAgLTExNCw3ICsxMTQsNyBA
QAogCQkJfSBjYXRjaCB7CiAJCQl9CiAJCQlpZihhc20gPT0gbnVsbCkgewotCQkJCUNvbnNvbGUu
V3JpdGVMaW5lICgiVW5hYmxlIHRvIGxvYWQgezB9IiwgZmlsZU5hbWUpOworCQkJCVJ1bnRpbWUu
TG9nZ2luZ1NlcnZpY2UuSW5mb0Zvcm1hdCAoIlVuYWJsZSB0byBsb2FkIHswfSIsIGZpbGVOYW1l
KTsKIAkJCQlyZXR1cm47CiAJCQl9CiAJCQlmb3JlYWNoIChUeXBlIHR5cGUgaW4gYXNtLkdldFR5
cGVzKCkpIHsKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvUGFyc2Vy
U2VydmljZS9Db2RlQ29tcGxldGlvbkRhdGFiYXNlLmNzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3Jj
L01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvUGFyc2VyU2VydmljZS9Db2RlQ29tcGxldGlvbkRh
dGFiYXNlLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9T
ZXJ2aWNlcy9QYXJzZXJTZXJ2aWNlL0NvZGVDb21wbGV0aW9uRGF0YWJhc2UuY3MJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQAogCQkJCQljdXJyZW50R2V0VGltZSA9IDA7CiAJCQkJ
CUNsb3NlUmVhZGVyICgpOwogCQkJCQkKLQkJCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJSZWFkaW5n
ICIgKyBkYXRhRmlsZSk7CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIlJlYWRp
bmcgIiArIGRhdGFGaWxlKTsKIAkJCQkJaWZpbGUgPSBuZXcgRmlsZVN0cmVhbSAoZGF0YUZpbGUs
IEZpbGVNb2RlLk9wZW4sIEZpbGVBY2Nlc3MuUmVhZCwgRmlsZVNoYXJlLlJlYWQpOwogCQkJCQlC
aW5hcnlGb3JtYXR0ZXIgYmYgPSBuZXcgQmluYXJ5Rm9ybWF0dGVyICgpOwogCQkJCQkKQEAgLTE1
MCw3ICsxNTAsNyBAQAogCQkJCWNhdGNoIChFeGNlcHRpb24gZXgpCiAJCQkJewogCQkJCQlpZiAo
aWZpbGUgIT0gbnVsbCkgaWZpbGUuQ2xvc2UgKCk7Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgi
UElEQiBmaWxlICciICsgZGF0YUZpbGUgKyAiJyBjb3VsZG4gbm90IGJlIGxvYWRlZDogJyIgKyBl
eC5NZXNzYWdlICsgIicuIFRoZSBmaWxlIHdpbGwgYmUgcmVjcmVhdGVkIik7CisJCQkJCVJ1bnRp
bWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIlBJREIgZmlsZSAnIiArIGRhdGFGaWxlICsgIicgY291
bGRuIG5vdCBiZSBsb2FkZWQ6ICciICsgZXguTWVzc2FnZSArICInLiBUaGUgZmlsZSB3aWxsIGJl
IHJlY3JlYXRlZCIpOwogCQkJCQlyb290TmFtZXNwYWNlID0gbmV3IE5hbWVzcGFjZUVudHJ5ICgp
OwogCQkJCQlmaWxlcyA9IG5ldyBIYXNodGFibGUgKCk7CiAJCQkJCXJlZmVyZW5jZXMgPSBuZXcg
QXJyYXlMaXN0ICgpOwpAQCAtMTc3LDcgKzE3Nyw3IEBACiAJCQkJbW9kaWZpZWQgPSBmYWxzZTsK
IAkJCQloZWFkZXJzWyJWZXJzaW9uIl0gPSBGT1JNQVRfVkVSU0lPTjsKIAkJCQkJCQkKLQkJCQlD
b25zb2xlLldyaXRlTGluZSAoIldyaXRpbmcgIiArIGRhdGFGaWxlKTsKKwkJCQlSdW50aW1lLkxv
Z2dpbmdTZXJ2aWNlLkluZm8gKCJXcml0aW5nICIgKyBkYXRhRmlsZSk7CiAJCQkJCiAJCQkJc3Ry
aW5nIHRtcERhdGFGaWxlID0gZGF0YUZpbGUgKyAiLnRtcCI7CiAJCQkJRmlsZVN0cmVhbSBkZmls
ZSA9IG5ldyBGaWxlU3RyZWFtICh0bXBEYXRhRmlsZSwgRmlsZU1vZGUuQ3JlYXRlLCBGaWxlQWNj
ZXNzLldyaXRlLCBGaWxlU2hhcmUuV3JpdGUpOwpAQCAtMzI2LDcgKzMyNiw3IEBACiAJCXsKIAkJ
CWxvY2sgKHJ3bG9jaykKIAkJCXsKLS8vCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiR0VUIENMQVNT
ICIgKyB0eXBlTmFtZSArICIgaW4gIiArIGRhdGFGaWxlKTsKKy8vCQkJCVJ1bnRpbWUuTG9nZ2lu
Z1NlcnZpY2UuSW5mbyAoIkdFVCBDTEFTUyAiICsgdHlwZU5hbWUgKyAiIGluICIgKyBkYXRhRmls
ZSk7CiAJCQkJc3RyaW5nW10gcGF0aCA9IHR5cGVOYW1lLlNwbGl0ICgnLicpOwogCQkJCWludCBs
ZW4gPSBwYXRoLkxlbmd0aCAtIDE7CiAJCQkJCkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5C
YXNlL1NlcnZpY2VzL1BhcnNlclNlcnZpY2UvQXNzZW1ibHlDb2RlQ29tcGxldGlvbkRhdGFiYXNl
LmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvUGFy
c2VyU2VydmljZS9Bc3NlbWJseUNvZGVDb21wbGV0aW9uRGF0YWJhc2UuY3MJKHJldmlzaW9uIDI0
MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL1NlcnZpY2VzL1BhcnNlclNlcnZpY2Uv
QXNzZW1ibHlDb2RlQ29tcGxldGlvbkRhdGFiYXNlLmNzCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBACiAJCQkJY2F0Y2gge30KIAkJCQkKIAkJCQlpZiAoYXNtID09IG51bGwpIHsKLQkJ
CQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJDb3VsZCBub3QgbG9hZCBhc3NlbWJseTogIiArIGFzc2Vt
Ymx5RmlsZSk7CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIkNvdWxkIG5vdCBs
b2FkIGFzc2VtYmx5OiAiICsgYXNzZW1ibHlGaWxlKTsKIAkJCQkJcmV0dXJuOwogCQkJCX0KIAkJ
CX0KQEAgLTcwLDcgKzcwLDcgQEAKIAkJCQlhc20gPSBGaW5kQXNzZW1ibHkgKGFzc2VtYmx5TmFt
ZSk7CiAJCQkJCiAJCQkJaWYgKGFzbSA9PSBudWxsKSB7Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5l
ICgiQ291bGQgbm90IGxvYWQgYXNzZW1ibHk6ICIgKyBhc3NlbWJseU5hbWUpOworCQkJCQlSdW50
aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKCJDb3VsZCBub3QgbG9hZCBhc3NlbWJseTogIiArIGFz
c2VtYmx5TmFtZSk7CiAJCQkJCXJldHVybjsKIAkJCQl9CiAJCQkJCkBAIC0yMDAsNyArMjAwLDcg
QEAKIAkJCWlmICghRmlsZS5FeGlzdHMgKGNoZWNrRmlsZSkgfHwgdmVyc2lvbiAhPSBGT1JNQVRf
VkVSU0lPTikgewogCQkJCXN0cmluZyBkYXRhRmlsZSA9IFBhdGguQ29tYmluZSAoYmFzZURpciwg
bmFtZSArICIucGlkYiIpOwogCQkJCUZpbGUuRGVsZXRlIChkYXRhRmlsZSk7Ci0JCQkJQ29uc29s
ZS5Xcml0ZUxpbmUgKCJEZWxldGVkICIgKyBkYXRhRmlsZSk7CisJCQkJUnVudGltZS5Mb2dnaW5n
U2VydmljZS5JbmZvICgiRGVsZXRlZCAiICsgZGF0YUZpbGUpOwogCQkJfQogCQl9CiAJfQpJbmRl
eDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvRGlhbG9ncy9XaXphcmQvV2l6YXJkRGlh
bG9nLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0RpYWxv
Z3MvV2l6YXJkL1dpemFyZERpYWxvZy5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01v
bm9EZXZlbG9wLkJhc2UvR3VpL0RpYWxvZ3MvV2l6YXJkL1dpemFyZERpYWxvZy5jcwkod29ya2lu
ZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3IEBACiAJCQkJZGlhbG9nUGFuZWwuUmVtb3ZlIChkaWFs
b2dQYW5lbC5DaGlsZCk7CiAJCQl9CiAJCQlpZiAoQ3VycmVudFdpemFyZFBhbmUuVG9TdHJpbmcg
KCkgPT0gIk1vbm9EZXZlbG9wLkd1aS5EaWFsb2dzLk9wdGlvblBhbmVscy5Db21wbGV0aW9uRGF0
YWJhc2VXaXphcmQuQ3JlYXRpb25GaW5pc2hlZFBhbmVsIikgewotCQkJCUNvbnNvbGUuV3JpdGVM
aW5lICgiVGhpcyBpcyBhbiB1Z2x5IGhhY2sgZm9yIGFuIGV2ZW4gdWdsaWVyIGJ1ZywgUmVzdGFy
dCBNRCBub3ciKTsKKwkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKCJUaGlzIGlzIGFu
IHVnbHkgaGFjayBmb3IgYW4gZXZlbiB1Z2xpZXIgYnVnLCBSZXN0YXJ0IE1EIG5vdyIpOwogCQkJ
CVN5c3RlbS5FbnZpcm9ubWVudC5FeGl0ICgwKTsKIAkJCX0KIAkJCWRpYWxvZ1BhbmVsLkFkZChD
dXJyZW50V2l6YXJkUGFuZS5Db250cm9sKTsKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJh
c2UvR3VpL0RpYWxvZ3MvV2l6YXJkL0Fic3RyYWN0V2l6YXJkUGFuZWwuY3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvRGlhbG9ncy9XaXphcmQvQWJzdHJhY3RX
aXphcmRQYW5lbC5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJh
c2UvR3VpL0RpYWxvZ3MvV2l6YXJkL0Fic3RyYWN0V2l6YXJkUGFuZWwuY3MJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOCw3ICsxMzgsNyBAQAogCiAJCXB1YmxpYyBvdmVycmlkZSBib29sIFJlY2VpdmVE
aWFsb2dNZXNzYWdlIChEaWFsb2dNZXNzYWdlIGEpCiAJCXsKLQkJCS8vQ29uc29sZS5Xcml0ZUxp
bmUgKCJJbiBtaWRkbGUgcmVjZWl2ZSBkaWFsb2cgbWVzc2FnZSIpOworCQkJLy9SdW50aW1lLkxv
Z2dpbmdTZXJ2aWNlLkluZm8gKCJJbiBtaWRkbGUgcmVjZWl2ZSBkaWFsb2cgbWVzc2FnZSIpOwog
CQkJcmV0dXJuIHRydWU7CiAJCX0KIAl9CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNl
L0d1aS9EaWFsb2dzL1dvcmRDb3VudERpYWxvZy5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0d1aS9EaWFsb2dzL1dvcmRDb3VudERpYWxvZy5jcwkocmV2aXNpb24g
MjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0RpYWxvZ3MvV29yZENvdW50
RGlhbG9nLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNyArMjMzLDcgQEAKIAkJCiAJCXByaXZh
dGUgU29ydFR5cGUgUmV2ZXJzZVNvcnQgKFNvcnRUeXBlIHN0KQogCQl7Ci0JCQkvL0NvbnNvbGUu
V3JpdGVMaW5lIChzdCk7CisJCQkvL1J1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoc3QpOwog
CQkJaWYgKHN0ID09IFNvcnRUeXBlLkFzY2VuZGluZykKIAkJCQlyZXR1cm4gU29ydFR5cGUuRGVz
Y2VuZGluZzsKIAkJCWVsc2UKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0Rp
YWxvZ3MvTmV3RmlsZURpYWxvZy5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2ZWxv
cC5CYXNlL0d1aS9EaWFsb2dzL05ld0ZpbGVEaWFsb2cuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBD
b3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9EaWFsb2dzL05ld0ZpbGVEaWFsb2cuY3MJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKIAkJCQkJaW1nbGlzdC5BZGQoYml0bWFwKTsK
IAkJCQkJdG1wW2VudHJ5LktleV0gPSArK2k7CiAJCQkJfSBlbHNlIHsKLQkJCQkJQ29uc29sZS5X
cml0ZUxpbmUoR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQ2FuJ3QgbG9hZCBiaXRtYXAgezB9
IHVzaW5nIGRlZmF1bHQiKSwgZW50cnkuS2V5LlRvU3RyaW5nICgpKTsKKwkJCQkJUnVudGltZS5M
b2dnaW5nU2VydmljZS5JbmZvRm9ybWF0KEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkNhbid0
IGxvYWQgYml0bWFwIHswfSB1c2luZyBkZWZhdWx0IiksIGVudHJ5LktleS5Ub1N0cmluZyAoKSk7
CiAJCQkJfQogCQkJfQogCQkJCkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9E
aWFsb2dzL1JlZmVyZW5jZURpYWxvZy9Bc3NlbWJseVJlZmVyZW5jZVBhbmVsLmNzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0RpYWxvZ3MvUmVmZXJlbmNlRGlh
bG9nL0Fzc2VtYmx5UmVmZXJlbmNlUGFuZWwuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3Ny
Yy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9EaWFsb2dzL1JlZmVyZW5jZURpYWxvZy9Bc3NlbWJseVJl
ZmVyZW5jZVBhbmVsLmNzCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAJCQogCQlw
dWJsaWMgdm9pZCBBZGRSZWZlcmVuY2Uob2JqZWN0IHNlbmRlciwgRXZlbnRBcmdzIGUpCiAJCXsK
LQkJCS8vU3lzdGVtLkNvbnNvbGUuV3JpdGVMaW5lKCJUaGlzIHBhbmVsIHdpbGwgY29udGFpbiBh
IGZpbGUgYnJvd3NlciwgYnV0IHNvIGxvbmcgdXNlIHRoZSBicm93c2UgYnV0dG9uIDopIik7CisJ
CQkvL1N5c3RlbS5SdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oIlRoaXMgcGFuZWwgd2lsbCBj
b250YWluIGEgZmlsZSBicm93c2VyLCBidXQgc28gbG9uZyB1c2UgdGhlIGJyb3dzZSBidXR0b24g
OikiKTsKIAkJfQogCX0KIH0KSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0Rp
YWxvZ3MvUmVmZXJlbmNlRGlhbG9nL0dhY1JlZmVyZW5jZVBhbmVsLmNzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0RpYWxvZ3MvUmVmZXJlbmNlRGlhbG9nL0dh
Y1JlZmVyZW5jZVBhbmVsLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVs
b3AuQmFzZS9HdWkvRGlhbG9ncy9SZWZlcmVuY2VEaWFsb2cvR2FjUmVmZXJlbmNlUGFuZWwuY3MJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQAogCQkJI2lmIGZhbHNlCiAJCQlTeXN0
ZW0uUmVmbGVjdGlvbi5NZXRob2RJbmZvIGdhYyA9IHR5cGVvZiAoU3lzdGVtLkVudmlyb25tZW50
KS5HZXRNZXRob2QgKCJpbnRlcm5hbEdldEdhY1BhdGgiLCBTeXN0ZW0uUmVmbGVjdGlvbi5CaW5k
aW5nRmxhZ3MuU3RhdGljfFN5c3RlbS5SZWZsZWN0aW9uLkJpbmRpbmdGbGFncy5Ob25QdWJsaWMp
OwogCQkJaWYgKGdhYyA9PSBudWxsKSB7Ci0JCQkJQ29uc29sZS5Xcml0ZUxpbmUgKEdldHRleHRD
YXRhbG9nLkdldFN0cmluZyAoIkVSUk9SOiBub24tbW9ubyBydW50aW1lIGRldGVjdGVkLCBwbGVh
c2UgdXNlIHRoZSBtb25vIHJ1bnRpbWUgZm9yIHRoaXMgcGllY2Ugb2YgTW9ub0RldmVsb3AgZm9y
IHRoZSB0aW1lIGJlaW5nIikpOworCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoR2V0
dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRVJST1I6IG5vbi1tb25vIHJ1bnRpbWUgZGV0ZWN0ZWQs
IHBsZWFzZSB1c2UgdGhlIG1vbm8gcnVudGltZSBmb3IgdGhpcyBwaWVjZSBvZiBNb25vRGV2ZWxv
cCBmb3IgdGhlIHRpbWUgYmVpbmciKSk7CiAJCQkJRW52aXJvbm1lbnQuRXhpdCAoMSk7CiAJCQl9
CiAJCQlzdHJpbmcgZ2FjX3BhdGggPSBTeXN0ZW0uSU8uUGF0aC5Db21iaW5lICgoc3RyaW5nKWdh
Yy5JbnZva2UgKG51bGwsIG51bGwpLCAiIik7CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5C
YXNlL0d1aS9Xb3JrYmVuY2gvTGF5b3V0cy9TZGlXb3Jrc3BhY2VMYXlvdXQuY3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvV29ya2JlbmNoL0xheW91dHMvU2Rp
V29ya3NwYWNlTGF5b3V0LmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVs
b3AuQmFzZS9HdWkvV29ya2JlbmNoL0xheW91dHMvU2RpV29ya3NwYWNlTGF5b3V0LmNzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsNyArMjc2LDcgQEAKIAkJCQl9CiAJCQl9CiAJCQkKLQkJCS8vQ29u
c29sZS5Xcml0ZUxpbmUoIiBEZWZhdWx0IExheW91dCBjcmVhdGVkLiIpOworCQkJLy9SdW50aW1l
LkxvZ2dpbmdTZXJ2aWNlLkluZm8oIiBEZWZhdWx0IExheW91dCBjcmVhdGVkLiIpOwogCQkJZG9j
a0xheW91dCA9IG5ldyBEb2NrTGF5b3V0IChkb2NrKTsKIAkJCWlmIChTeXN0ZW0uSU8uRmlsZS5F
eGlzdHMgKGNvbmZpZ0ZpbGUpKSB7CiAJCQkJZG9ja0xheW91dC5Mb2FkRnJvbUZpbGUgKGNvbmZp
Z0ZpbGUpOwpAQCAtMjkxLDcgKzI5MSw3IEBACiAJCXsKIAkJCXdvcmtiZW5jaC5Db250ZXh0Q2hh
bmdlZCAtPSBjb250ZXh0Q2hhbmdlZEhhbmRsZXI7CiAKLQkJCS8vQ29uc29sZS5Xcml0ZUxpbmUo
IkNhbGwgdG8gU2RpV29ya1NwYWNlTGF5b3V0LkRldGFjaCIpOworCQkJLy9SdW50aW1lLkxvZ2dp
bmdTZXJ2aWNlLkluZm8oIkNhbGwgdG8gU2RpV29ya1NwYWNlTGF5b3V0LkRldGFjaCIpOwogCQkJ
ZG9ja0xheW91dC5TYXZlTGF5b3V0IChjdXJyZW50TGF5b3V0KTsKIAkJCWRvY2tMYXlvdXQuU2F2
ZVRvRmlsZSAoY29uZmlnRmlsZSk7CiAJCQlyb290V2lkZ2V0LlJlbW92ZSgoKERlZmF1bHRXb3Jr
YmVuY2gpd29ya2JlbmNoKS5Ub3BNZW51KTsKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJh
c2UvR3VpL1dvcmtiZW5jaC9EZWZhdWx0V29ya2JlbmNoLmNzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUv
c3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL1dvcmtiZW5jaC9EZWZhdWx0V29ya2JlbmNoLmNzCShy
ZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvV29ya2JlbmNo
L0RlZmF1bHRXb3JrYmVuY2guY3MJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQAog
CQlwdWJsaWMgRGVmYXVsdFdvcmtiZW5jaCgpIDogYmFzZSAoR3RrLldpbmRvd1R5cGUuVG9wbGV2
ZWwpCiAJCXsKIAkJCVRpdGxlID0gIk1vbm9EZXZlbG9wIjsKLQkJCUNvbnNvbGUuV3JpdGVMaW5l
ICgiQ3JlYXRpbmcgRGVmYXVsdFdvcmtiZW5jaCIpOworCQkJUnVudGltZS5Mb2dnaW5nU2Vydmlj
ZS5JbmZvICgiQ3JlYXRpbmcgRGVmYXVsdFdvcmtiZW5jaCIpOwogCQkKIAkJCXdpbmRvd0NoYW5n
ZUV2ZW50SGFuZGxlciA9IG5ldyBFdmVudEhhbmRsZXIoT25BY3RpdmVXaW5kb3dDaGFuZ2VkKTsK
IApAQCAtMTc5LDcgKzE3OSw3IEBACiAJCQkJCQllbHNlCiAJCQkJCQkJUnVudGltZS5GaWxlU2Vy
dmljZS5PcGVuRmlsZSAoZmlsZSk7CiAJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJ
CQlDb25zb2xlLldyaXRlTGluZSgidW5hYmxlIHRvIG9wZW4gZmlsZSB7MH0gZXhjZXB0aW9uIHdh
cyA6XG57MX0iLCBmaWxlLCBlLlRvU3RyaW5nKCkpOworCQkJCQkJUnVudGltZS5Mb2dnaW5nU2Vy
dmljZS5JbmZvRm9ybWF0KCJ1bmFibGUgdG8gb3BlbiBmaWxlIHswfSBleGNlcHRpb24gd2FzIDpc
bnsxfSIsIGZpbGUsIGUuVG9TdHJpbmcoKSk7CiAJCQkJCX0KIAkJCQl9CiAJCQl9CkBAIC0yNzks
NyArMjc5LDcgQEAKIAkJCQkJCSgoSU1lbWVudG9DYXBhYmxlKWNvbnRlbnQpLlNldE1lbWVudG8o
bWVtZW50byk7CiAJCQkJCX0KIAkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCQlDb25z
b2xlLldyaXRlTGluZSgiQ2FuJ3QgZ2V0L3NldCBtZW1lbnRvIDogIiArIGUuVG9TdHJpbmcoKSk7
CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiQ2FuJ3QgZ2V0L3NldCBtZW1lbnRv
IDogIiArIGUuVG9TdHJpbmcoKSk7CiAJCQkJfQogCQkJfQogCQkJCkluZGV4OiBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0d1aS9QYWRzL1NvbHV0aW9uUGFkL1RyZWVWaWV3UGFkLmNzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL1BhZHMvU29sdXRpb25QYWQv
VHJlZVZpZXdQYWQuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5C
YXNlL0d1aS9QYWRzL1NvbHV0aW9uUGFkL1RyZWVWaWV3UGFkLmNzCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjksMTggKzIyOSwxOCBAQAogCQl7CiAJCQlJVHJlZU5hdmlnYXRvciBuYXYgPSBHZXRTZWxl
Y3RlZE5vZGUgKCk7CiAJCQlkcmFnT2JqZWN0ID0gbmF2LkRhdGFJdGVtOwotCQkJQ29uc29sZS5X
cml0ZUxpbmUgKCJPbkRyYWdCZWdpbiIpOworCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZv
ICgiT25EcmFnQmVnaW4iKTsKIAkJfQogCQkKIAkJdm9pZCBPbkRyYWdEYXRhR2V0IChvYmplY3Qg
bywgR3RrLkRyYWdEYXRhR2V0QXJncyBhcmdzKQogCQl7Ci0JCQlDb25zb2xlLldyaXRlTGluZSAo
Ik9uRHJhZ0RhdGFHZXQiKTsKKwkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIk9uRHJh
Z0RhdGFHZXQiKTsKIAkJCWFyZ3MuU2VsZWN0aW9uRGF0YS5TZXQgKGFyZ3MuQ29udGV4dC5UYXJn
ZXRzWzBdLCAwLCBuZXcgYnl0ZVswXSk7CiAJCX0KIAkJCiAJCXZvaWQgT25EcmFnRGF0YVJlY2Vp
dmVkIChvYmplY3QgbywgR3RrLkRyYWdEYXRhUmVjZWl2ZWRBcmdzIGFyZ3MpCiAJCXsKLQkJCUNv
bnNvbGUuV3JpdGVMaW5lICgiT25EcmFnRGF0YVJlY2VpdmVkICIgKyBhcmdzLlggKyAiICIgKyBh
cmdzLlkgKyAiICIgKyBhcmdzLlNlbGVjdGlvbkRhdGEuTGVuZ3RoKTsKKwkJCVJ1bnRpbWUuTG9n
Z2luZ1NlcnZpY2UuSW5mbyAoIk9uRHJhZ0RhdGFSZWNlaXZlZCAiICsgYXJncy5YICsgIiAiICsg
YXJncy5ZICsgIiAiICsgYXJncy5TZWxlY3Rpb25EYXRhLkxlbmd0aCk7CiAJCQkKIAkJCWlmIChk
cmFnT2JqZWN0ICE9IG51bGwpIHsKIAkJCQlib29sIHJlcyA9IENoZWNrQW5kRHJvcCAoYXJncy5Y
LCBhcmdzLlksIHRydWUpOwpAQCAtMjQ4LDcgKzI0OCw3IEBACiAJCQl9IGVsc2UgewogCQkJCWlm
IChhcmdzLlNlbGVjdGlvbkRhdGEuRGF0YS5MZW5ndGggPiAwKSB7CiAJCQkJCXN0cmluZyBmdWxs
RGF0YSA9IFN5c3RlbS5UZXh0LkVuY29kaW5nLlVURjguR2V0U3RyaW5nIChhcmdzLlNlbGVjdGlv
bkRhdGEuRGF0YSk7Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiZmlsZToiICsgZnVsbERhdGEp
OworCQkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKCJmaWxlOiIgKyBmdWxsRGF0YSk7
CiAJCQkJfQogCQkJCUd0ay5EcmFnLkZpbmlzaCAoYXJncy5Db250ZXh0LCBmYWxzZSwgdHJ1ZSwg
YXJncy5UaW1lKTsKIAkJCX0KQEAgLTI1NiwxOCArMjU2LDE4IEBACiAJCQogCQl2b2lkIE9uRHJh
Z0Ryb3AgKG9iamVjdCBvLCBHdGsuRHJhZ0Ryb3BBcmdzIGFyZ3MpCiAJCXsKLQkJCUNvbnNvbGUu
V3JpdGVMaW5lICgiT25EcmFnRHJvcCAiICsgYXJncy5YICsgIiAiICsgYXJncy5ZKTsKKwkJCVJ1
bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIk9uRHJhZ0Ryb3AgIiArIGFyZ3MuWCArICIgIiAr
IGFyZ3MuWSk7CiAJCX0KIAkJCiAJCXZvaWQgT25EcmFnRW5kIChvYmplY3QgbywgR3RrLkRyYWdF
bmRBcmdzIGFyZ3MpCiAJCXsKIAkJCWRyYWdPYmplY3QgPSBudWxsOwotCQkJQ29uc29sZS5Xcml0
ZUxpbmUgKCJPbkRyYWdFbmQiKTsKKwkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIk9u
RHJhZ0VuZCIpOwogCQl9CiAJCQogCQl2b2lkIE9uRHJhZ0xlYXZlIChvYmplY3Qgc2VuZGVyLCBH
dGsuRHJhZ0xlYXZlQXJncyBhcmdzKQogCQl7Ci0JCQlDb25zb2xlLldyaXRlTGluZSAoIk9uRHJh
Z0xlYXZlIik7CisJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKCJPbkRyYWdMZWF2ZSIp
OwogCQl9CiAJCQogCQlbR0xpYi5Db25uZWN0QmVmb3JlXQpAQCAtMjkxLDcgKzI5MSw3IEBACiAJ
CQlpZiAoIXN0b3JlLkdldEl0ZXIgKG91dCBpdGVyLCBwYXRoKSkgcmV0dXJuIGZhbHNlOwogCQkJ
CiAJCQlUcmVlTm9kZU5hdmlnYXRvciBuYXYgPSBuZXcgVHJlZU5vZGVOYXZpZ2F0b3IgKHRoaXMs
IGl0ZXIpOwotCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJUcnlpbmcgZHJvcCB0byAiICsgbmF2Lk5v
ZGVOYW1lKTsKKwkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIlRyeWluZyBkcm9wIHRv
ICIgKyBuYXYuTm9kZU5hbWUpOwogCQkJTm9kZUJ1aWxkZXJbXSBjaGFpbiA9IG5hdi5CdWlsZGVy
Q2hhaW47CiAJCQlib29sIGZvdW5kSGFuZGxlciA9IGZhbHNlOwogCQkJCkBAIC0zMDAsNyArMzAw
LDcgQEAKIAkJCQlpZiAobmIuQ29tbWFuZEhhbmRsZXIuQ2FuRHJvcE5vZGUgKGRyYWdPYmplY3Qs
IERyYWdPcGVyYXRpb24uQ29weSkpIHsKIAkJCQkJZm91bmRIYW5kbGVyID0gdHJ1ZTsKIAkJCQkJ
aWYgKGRyb3ApIHsKLQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiRHJvcGluZyB0byAiICsgbmIp
OworCQkJCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvICgiRHJvcGluZyB0byAiICsgbmIp
OwogCQkJCQkJbmIuQ29tbWFuZEhhbmRsZXIuT25Ob2RlRHJvcCAoZHJhZ09iamVjdCwgRHJhZ09w
ZXJhdGlvbi5Db3B5KTsKIAkJCQkJfQogCQkJCX0KSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9w
LkJhc2UvR3VpL1BhZHMvUHJvcGVydHlQYWQvUHJvcGVydHlQYWQuY3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
Q29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9Qcm9wZXJ0eVBhZC9Qcm9wZXJ0eVBh
ZC5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL1Bh
ZHMvUHJvcGVydHlQYWQvUHJvcGVydHlQYWQuY3MJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0
LDcgQEAKIAogCQkJcHVibGljIG9iamVjdCBHZXRTZXJ2aWNlKFR5cGUgc2VydmljZVR5cGUpCiAJ
CQl7Ci0vLwkJCQlDb25zb2xlLldyaXRlTGluZSgiUkVRVUVTVCBTRVJWSUNFIDogIiArIHNlcnZp
Y2VUeXBlKTsKKy8vCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiUkVRVUVTVCBTRVJW
SUNFIDogIiArIHNlcnZpY2VUeXBlKTsKIAkJCQlvYmplY3QgbyA9IGNvbnRhaW5lci5HZXRTZXJ2
aWNlKHNlcnZpY2VUeXBlKTsKIAkJCQkKIAkJCQlyZXR1cm4gbzsKQEAgLTY4LDEyICs2OCwxMiBA
QAogCiAJCXByb3RlY3RlZCBvdmVycmlkZSBvYmplY3QgR2V0U2VydmljZShUeXBlIHNlcnZpY2VU
eXBlKQogCQl7Ci0vLwkJCUNvbnNvbGUuV3JpdGVMaW5lKCJzZXJ2aWNlIHswfSByZXF1ZXN0ZWQg
ZnJvbSBJREVDb250YWluZXIiLCBzZXJ2aWNlVHlwZSk7CisvLwkJCVJ1bnRpbWUuTG9nZ2luZ1Nl
cnZpY2UuSW5mbygic2VydmljZSB7MH0gcmVxdWVzdGVkIGZyb20gSURFQ29udGFpbmVyIiwgc2Vy
dmljZVR5cGUpOwogCQkJb2JqZWN0IHNlcnZpY2UgPSBiYXNlLkdldFNlcnZpY2Uoc2VydmljZVR5
cGUpOwogCQkJaWYgKHNlcnZpY2UgPT0gbnVsbCkgewogCQkJCXNlcnZpY2UgPSBzZXJ2aWNlUHJv
dmlkZXIuR2V0U2VydmljZShzZXJ2aWNlVHlwZSk7CiAJCQl9Ci0vLwkJCUNvbnNvbGUuV3JpdGVM
aW5lKCJSZXR1cm5lZCAgOiAiICsgc2VydmljZSk7CisvLwkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZp
Y2UuSW5mbygiUmV0dXJuZWQgIDogIiArIHNlcnZpY2UpOwogCQkJcmV0dXJuIHNlcnZpY2U7CiAJ
CX0KIApJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9Qcm9qZWN0QnJv
d3Nlci9Ccm93c2VyTm9kZS9Qcm9qZWN0QnJvd3Nlck5vZGUuY3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29y
ZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9Qcm9qZWN0QnJvd3Nlci9Ccm93c2VyTm9k
ZS9Qcm9qZWN0QnJvd3Nlck5vZGUuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25v
RGV2ZWxvcC5CYXNlL0d1aS9QYWRzL1Byb2plY3RCcm93c2VyL0Jyb3dzZXJOb2RlL1Byb2plY3RC
cm93c2VyTm9kZS5jcwkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogCQkJCQl0cnkg
ewogCQkJCQkJUHJvamVjdEJyb3dzZXJWaWV3Lk1vdmVDb3B5RmlsZShmaWxlLCB0aGlzLCBlZmZl
Y3QgPT0gRHJhZ0Ryb3BFZmZlY3RzLk1vdmUsIGZhbHNlKTsKIAkJCQkJfSBjYXRjaCAoRXhjZXB0
aW9uIGV4KSB7Ci0JCQkJCQlDb25zb2xlLldyaXRlTGluZShleC5Ub1N0cmluZygpKTsKKwkJCQkJ
CVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyhleC5Ub1N0cmluZygpKTsKIAkJCQkJfQogCQkJ
CX0KIAkJCX0gZWxzZSB7CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9QYWRz
L1Byb2plY3RCcm93c2VyL0Jyb3dzZXJOb2RlL0RpcmVjdG9yeU5vZGUuY3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9Qcm9qZWN0QnJvd3Nlci9Ccm93
c2VyTm9kZS9EaXJlY3RvcnlOb2RlLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9u
b0RldmVsb3AuQmFzZS9HdWkvUGFkcy9Qcm9qZWN0QnJvd3Nlci9Ccm93c2VyTm9kZS9EaXJlY3Rv
cnlOb2RlLmNzCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBACiAJCQkJCXRyeSB7CiAJ
CQkJCQlQcm9qZWN0QnJvd3NlclZpZXcuTW92ZUNvcHlGaWxlKGZpbGUsIHRoaXMsIGVmZmVjdCA9
PSBEcmFnRHJvcEVmZmVjdHMuTW92ZSwgZmFsc2UpOwogCQkJCQl9IGNhdGNoIChFeGNlcHRpb24g
ZXgpIHsKLQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKGV4LlRvU3RyaW5nKCkpOworCQkJCQkJUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKGV4LlRvU3RyaW5nKCkpOwogCQkJCQl9CiAJCQkJfQog
CQkJfSBlbHNlIHsKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL1BhZHMvUHJv
amVjdEJyb3dzZXIvTm9kZUJ1aWxkZXIvRGVmYXVsdERvdE5ldE5vZGVCdWlsZGVyLmNzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL1BhZHMvUHJvamVjdEJyb3dz
ZXIvTm9kZUJ1aWxkZXIvRGVmYXVsdERvdE5ldE5vZGVCdWlsZGVyLmNzCShyZXZpc2lvbiAyNDEz
KQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9Qcm9qZWN0QnJvd3Nlci9O
b2RlQnVpbGRlci9EZWZhdWx0RG90TmV0Tm9kZUJ1aWxkZXIuY3MJKHdvcmtpbmcgY29weSkKQEAg
LTMzMyw3ICszMzMsNyBAQAogCQkJCQlicmVhazsKICNlbmRpZgogCQkJCWRlZmF1bHQ6Ci0JCQkJ
CUNvbnNvbGUuV3JpdGVMaW5lICgiVU5IQU5ETEVEIFRZUEUgezB9LCBEZWZhdWx0RG90TmV0Tm9k
ZUJ1aWxkZXIuY3MiLCBwcm9qZWN0RmlsZS5TdWJ0eXBlKTsKKwkJCQkJUnVudGltZS5Mb2dnaW5n
U2VydmljZS5JbmZvICgiVU5IQU5ETEVEIFRZUEUgezB9LCBEZWZhdWx0RG90TmV0Tm9kZUJ1aWxk
ZXIuY3MiLCBwcm9qZWN0RmlsZS5TdWJ0eXBlKTsKIAkJCQkJLy8gdW5rbm93biBmaWxlIHR5cGUK
IAkJCQkJYnJlYWs7CiAJCQl9CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9Q
YWRzL0hlbHBCcm93c2VyL01vbm9kb2NUcmVlUGFkLmNzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3Jj
L01vbm9EZXZlbG9wLkJhc2UvR3VpL1BhZHMvSGVscEJyb3dzZXIvTW9ub2RvY1RyZWVQYWQuY3MJ
KHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9QYWRzL0hl
bHBCcm93c2VyL01vbm9kb2NUcmVlUGFkLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0
LDcgQEAKIAkJCQkJU2hvd0RvY3MgKHMsIG1hdGNoLCB1cmwpOwogCQkJCQlyZXR1cm47CiAJCQkJ
fQotCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiQ291bGRudCBmaW5kIG1hdGNoIik7CisJCQkJUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvICgiQ291bGRudCBmaW5kIG1hdGNoIik7CiAJCQl9CiAJ
CX0KIApJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9IZWxwQnJvd3Nl
ci9IZWxwVmlld2VyLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2Uv
R3VpL1BhZHMvSGVscEJyb3dzZXIvSGVscFZpZXdlci5jcwkocmV2aXNpb24gMjQxMykKKysrIENv
cmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL1BhZHMvSGVscEJyb3dzZXIvSGVscFZpZXdlci5j
cwkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogCiAJCXZvaWQgVXJsUmVxdWVzdGVk
IChvYmplY3Qgc2VuZGVyLCBVcmxSZXF1ZXN0ZWRBcmdzIGFyZ3MpCiAJCXsKLQkJCUNvbnNvbGUu
V3JpdGVMaW5lICgiSW1hZ2UgcmVxdWVzdGVkOiAiICsgYXJncy5VcmwpOworCQkJUnVudGltZS5M
b2dnaW5nU2VydmljZS5JbmZvICgiSW1hZ2UgcmVxdWVzdGVkOiAiICsgYXJncy5VcmwpOwogCQkJ
U3RyZWFtIHMgPSBSdW50aW1lLkRvY3VtZW50YXRpb24uSGVscFRyZWUuR2V0SW1hZ2UgKGFyZ3Mu
VXJsKTsKIAkJCQogCQkJaWYgKHMgIT0gbnVsbCkgewpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVs
b3AuQmFzZS9HdWkvUGFkcy9GaWxlU2NvdXQvRmlsZUxpc3QuY3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29y
ZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvUGFkcy9GaWxlU2NvdXQvRmlsZUxpc3QuY3MJKHJl
dmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0d1aS9QYWRzL0ZpbGVT
Y291dC9GaWxlTGlzdC5jcwkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQAogCQl9CiAJ
CQogCQl2b2lkIEl0ZW1SZW1vdmVkIChGaWxlTGlzdEl0ZW0gaXRlbSkgewotCQkJQ29uc29sZS5X
cml0ZUxpbmUgKCJyZW1vdmUgY2FsbGVkIik7CisJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLklu
Zm8gKCJyZW1vdmUgY2FsbGVkIik7CiAJCQlzdG9yZS5SZW1vdmUgKHJlZiBzZWxlY3RlZEl0ZXIp
OwogCQl9CiAJCQpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvQnJvd3NlckRp
c3BsYXlCaW5kaW5nL0h0bWxWaWV3UGFuZS5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25v
RGV2ZWxvcC5CYXNlL0d1aS9Ccm93c2VyRGlzcGxheUJpbmRpbmcvSHRtbFZpZXdQYW5lLmNzCShy
ZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvQnJvd3NlckRp
c3BsYXlCaW5kaW5nL0h0bWxWaWV3UGFuZS5jcwkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
NyBAQAogCQkJCQlHTGliLlRpbWVvdXQuQWRkICg1MCwgbmV3IEdMaWIuVGltZW91dEhhbmRsZXIg
KGNoZWNrRm9jdXMpKTsKIAkJCQkJCiAJCQkJfSBjYXRjaCB7Ci0JCQkJCUNvbnNvbGUuV3JpdGVM
aW5lICgiR2Vja28jIHRvc3NlZCBhbiBleGNlcHRpb24iKTsKKwkJCQkJUnVudGltZS5Mb2dnaW5n
U2VydmljZS5JbmZvICgiR2Vja28jIHRvc3NlZCBhbiBleGNlcHRpb24iKTsKIAkJCQl9CiAJCQl9
CiAJCX0KSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3VpL0h0bWxDb250cm9sL0h0
bWxDb250cm9sLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvR3Vp
L0h0bWxDb250cm9sL0h0bWxDb250cm9sLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMv
TW9ub0RldmVsb3AuQmFzZS9HdWkvSHRtbENvbnRyb2wvSHRtbENvbnRyb2wuY3MJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAKIAkJCQkJKChNb3ppbGxhQ29udHJvbCkgY29udHJvbCku
TG9hZFVybCAodmFsdWUpOwogCQkJCX0KIAkJCQllbHNlCi0JCQkJCUNvbnNvbGUuV3JpdGVMaW5l
ICgidW5hYmxlIHRvIGxvYWQgdXJsIik7CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5m
byAoInVuYWJsZSB0byBsb2FkIHVybCIpOwogCQkJfQogCQl9CiAJCQpAQCAtMTE1LDcgKzExNSw3
IEBACiAJCQkJCXRoaXMuY29udHJvbCA9IG5ldyBNb3ppbGxhQ29udHJvbCAoKTsKIAkJCQkJKChN
b3ppbGxhQ29udHJvbCkgdGhpcy5jb250cm9sKS5TaG93ICgpOwogCQkJCQl0aGlzLkFkZCAoKE1v
emlsbGFDb250cm9sKSB0aGlzLmNvbnRyb2wpOwotCQkJCQlDb25zb2xlLldyaXRlTGluZSAoImFk
ZGVkIE1vemlsbGFDb250cm9sIHRvIEh0bWxDb250cm9sIik7CisJCQkJCVJ1bnRpbWUuTG9nZ2lu
Z1NlcnZpY2UuSW5mbyAoImFkZGVkIE1vemlsbGFDb250cm9sIHRvIEh0bWxDb250cm9sIik7CiAJ
CQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4
Y2VwdGlvbiAoY29udHJvbF90eXBlLlRvU3RyaW5nICgpKTsKQEAgLTE1NSw3ICsxNTUsNyBAQAog
CQkJaWYgKGh0bWwuTGVuZ3RoID4gMCkgewogCQkJCUFwcGx5Qm9keShodG1sKTsKIAkJCX0gZWxz
ZSB7Ci0JCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJubyBodG1sIHRvIGFwcGx5Iik7CisJCQkJUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvICgibm8gaHRtbCB0byBhcHBseSIpOwogCQkJfQogCQkJ
VUlBY3RpdmF0ZSgpOwogCQkJQXBwbHlDYXNjYWRpbmdTdHlsZVNoZWV0KCk7CkBAIC0xNzIsMTUg
KzE3MiwxNSBAQAogCQkJCWlmIChjb250cm9sICE9IG51bGwpIHsKIAkJCQkJaWYgKGNvbnRyb2xf
dHlwZSA9PSBDb250cm9sVHlwZS5HdGtNb3ppbGxhKQogCQkJCQl7Ci0JCQkJCQlDb25zb2xlLldy
aXRlTGluZSAoInJlbmRlcmluZyIpOworCQkJCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZv
ICgicmVuZGVyaW5nIik7CiAJCQkJCQkoKE1vemlsbGFDb250cm9sKSBjb250cm9sKS5TaG93ICgp
OwogCQkJCQkJKChNb3ppbGxhQ29udHJvbCkgY29udHJvbCkuUmVuZGVyRGF0YSAodmFsLCAiZmls
ZTovLyIsICJ0ZXh0L2h0bWwiKTsKLQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgicmVuZGVyZWQi
KTsKKwkJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoInJlbmRlcmVkIik7CiAJCQkJ
CQlyZXR1cm47CiAJCQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7Ci0JCQkJCQlDb25zb2xlLldyaXRl
TGluZSAoIm5vdCByZW5kZXJpbmcgd2l0aCBtb3ppbGxhIik7CisJCQkJCQlSdW50aW1lLkxvZ2dp
bmdTZXJ2aWNlLkluZm8gKCJub3QgcmVuZGVyaW5nIHdpdGggbW96aWxsYSIpOwogCQkJCQl9CiAJ
CQkJCQogCQkJCQlJSFRNTEVsZW1lbnQgZWwgICAgPSBudWxsOwpAQCAtMTk3LDE3ICsxOTcsMTcg
QEAKIAkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKLQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgi
SUhUTUxFbGVtZW50IGlzIG51bGwiKTsKKwkJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5m
byAoIklIVE1MRWxlbWVudCBpcyBudWxsIik7CiAJCQkJCX0KIAkJCQl9CiAJCQkJZWxzZQogCQkJ
CXsKLQkJCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJjb250cm9sIGlzIG51bGwiKTsKKwkJCQkJUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvICgiY29udHJvbCBpcyBudWxsIik7CiAJCQkJfQogCQkJ
fQogCQkJY2F0Y2ggKEV4Y2VwdGlvbiBlKQogCQkJewotCQkJCUNvbnNvbGUuV3JpdGVMaW5lIChl
LlRvU3RyaW5nICgpKTsKKwkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKGUuVG9TdHJp
bmcgKCkpOwogCQkJfSAKIAkJfQogCQkKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2Uv
R3VpL0h0bWxDb250cm9sL01vemlsbGFDb250cm9sLmNzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3Jj
L01vbm9EZXZlbG9wLkJhc2UvR3VpL0h0bWxDb250cm9sL01vemlsbGFDb250cm9sLmNzCShyZXZp
c2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9HdWkvSHRtbENvbnRyb2wv
TW96aWxsYUNvbnRyb2wuY3MJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAKIAogCQlw
dWJsaWMgdm9pZCBJbml0aWFsaXplV2l0aEJhc2UgKHN0cmluZyBiYXNlX3VyaSkKIAkJewotCQkJ
Ly9Db25zb2xlLldyaXRlTGluZSAoYmFzZV91cmkpOworCQkJLy9SdW50aW1lLkxvZ2dpbmdTZXJ2
aWNlLkluZm8gKGJhc2VfdXJpKTsKIAkJCWlmIChodG1sLkxlbmd0aCA+IDApCiAJCQl7CiAJCQkJ
dGhpcy5SZW5kZXJEYXRhIChodG1sLCBiYXNlX3VyaSwgInRleHQvaHRtbCIpOwpJbmRleDogQ29y
ZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMv
TW9ub0RldmVsb3AuQmFzZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDggQEAK
KzIwMDUtMDMtMzEgIENocmlzdGlhbiBIZXJnZXJ0ICA8Y2hyaXN0aWFuLmhlcmdlcnRAZ21haWwu
Y29tPgorCisJKiBNb25vRGV2ZWxvcENvcmUuYWRkaW4ueG1sOiBVc2UgcHJvcGVyIHN0b2NrIGlj
b24gbmFtZXMgZm9yCisJc29sdXRpb24gYW5kIGNsYXNzIHBhZHMuCisKIDIwMDUtMDMtMjIgIEpv
aG4gTHVrZSAgPGpvaG4ubHVrZUBnbWFpbC5jb20+CiAKIAkqIEludGVybmFsL1Byb2plY3QvUHJv
amVjdC9Eb3ROZXRQcm9qZWN0LmNzOiBSZWxlYXNlIGNvbmZpZ3VyYXRpb24KSW5kZXg6IENvcmUv
c3JjL01vbm9EZXZlbG9wLkJhc2UvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMv
TW9ub0RldmVsb3AuQmFzZS9NYWtlZmlsZS5hbQkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3Jj
L01vbm9EZXZlbG9wLkJhc2UvTWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3
IEBACiAJL3I6U3lzdGVtLkRhdGEuZGxsIC9yOlN5c3RlbS5XZWIuU2VydmljZXMuZGxsIFwKIAkv
cjokKHRvcF9idWlsZGRpcikvYnVpbGQvYmluL01vbm9EZXZlbG9wLkRvY2suZGxsIFwKIAkvcjpN
b25vLlBvc2l4LmRsbCBcCisJL3I6JCh0b3BfYnVpbGRkaXIpL2NvbnRyaWIvbG9nNG5ldC5kbGwg
XAogCSQoR1RLX1NIQVJQX0xJQlMpIFwKIAkkKEdOT01FX1NIQVJQX0xJQlMpIFwKIAkkKEdOT01F
X1ZGU19TSEFSUF9MSUJTKSBcCkBAIC0yNDAsNiArMjQxLDggQEAKIFNlcnZpY2VzL0Rpc3BhdGNo
U2VydmljZS9TeW5jQ29udGV4dEF0dHJpYnV0ZS5jcyBcCiBTZXJ2aWNlcy9EaXNwYXRjaFNlcnZp
Y2UvU3luY09iamVjdC5jcyBcCiBTZXJ2aWNlcy9SdW50aW1lLmNzIFwKK1NlcnZpY2VzL0lMb2dn
aW5nU2VydmljZS5jcyBcCitTZXJ2aWNlcy9EZWZhdWx0TG9nZ2luZ1NlcnZpY2UuY3MgXAogSW50
ZXJuYWwvVW5kby9JVW5kb2FibGVPcGVyYXRpb24uY3MgXAogSW50ZXJuYWwvVW5kby9VbmRvU3Rh
Y2suY3MgXAogSW50ZXJuYWwvVW5kby9VbmRvUXVldWUuY3MgXApAQCAtNDg1LDcgKzQ4OCw3IEBA
CiAJcGVybCAgLXgkKHNyY2RpcikvLi4vLi4vLi4vYnVpbGQvZGF0YS9yZXNvdXJjZXMvaWNvbnMg
LXcgJChzcmNkaXIpLy4vU2VydmljZXMvcHJvY2Vzcy1pY29ucy5wbCA+ICQoc3JjZGlyKS9TZXJ2
aWNlcy9TdG9ja0ljb25zLmNzCiAKIGFzc2VtYmx5ZGlyID0gJChsaWJkaXIpL21vbm9kZXZlbG9w
L2JpbgotYXNzZW1ibHlfREFUQSA9ICQoQVNTRU1CTFkpICQoQ09ORklHKQorYXNzZW1ibHlfREFU
QSA9ICQoQVNTRU1CTFkpICQoQ09ORklHKSAkKHRvcF9idWlsZGRpcikvY29udHJpYi9sb2c0bmV0
LmRsbAogCiBhZGRpbmRpciA9ICQobGliZGlyKS9tb25vZGV2ZWxvcC9BZGRJbnMKIGFkZGluX0RB
VEEgPSAkKEFERElOKQpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9F
eHRlcm5hbFRvb2wvVG9vbExvYWRlci5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2
ZWxvcC5CYXNlL0ludGVybmFsL0V4dGVybmFsVG9vbC9Ub29sTG9hZGVyLmNzCShyZXZpc2lvbiAy
NDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9FeHRlcm5hbFRvb2wv
VG9vbExvYWRlci5jcwkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQAogCQlzdGF0aWMg
VG9vbExvYWRlcigpCiAJCXsKIAkJCWlmICghTG9hZFRvb2xzRnJvbVN0cmVhbSAoUnVudGltZS5Q
cm9wZXJ0aWVzLkNvbmZpZ0RpcmVjdG9yeSArIFRPT0xGSUxFKSkgewotCQkJCS8vQ29uc29sZS5X
cml0ZUxpbmUoIlRvb2xzOiBjYW4ndCBsb2FkIHVzZXIgZGVmYXVsdHMsIHJlYWRpbmcgc3lzdGVt
IGRlZmF1bHRzIik7CisJCQkJLy9SdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oIlRvb2xzOiBj
YW4ndCBsb2FkIHVzZXIgZGVmYXVsdHMsIHJlYWRpbmcgc3lzdGVtIGRlZmF1bHRzIik7CiAJCQkJ
aWYgKCFMb2FkVG9vbHNGcm9tU3RyZWFtIChSdW50aW1lLlByb3BlcnRpZXMuRGF0YURpcmVjdG9y
eSArCiAJCQkJICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGguRGlyZWN0b3J5U2VwYXJhdG9y
Q2hhciArICJvcHRpb25zIiArIAogCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoLkRp
cmVjdG9yeVNlcGFyYXRvckNoYXIgKyBUT09MRklMRSkpIHsKSW5kZXg6IENvcmUvc3JjL01vbm9E
ZXZlbG9wLkJhc2UvSW50ZXJuYWwvUHJvamVjdC9Qcm9qZWN0L0RvdE5ldFByb2plY3QuY3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9Qcm9qZWN0L1By
b2plY3QvRG90TmV0UHJvamVjdC5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9E
ZXZlbG9wLkJhc2UvSW50ZXJuYWwvUHJvamVjdC9Qcm9qZWN0L0RvdE5ldFByb2plY3QuY3MJKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQAogCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lk
IEdlbmVyYXRlTWFrZWZpbGVzIChDb21iaW5lIHBhcmVudENvbWJpbmUpCiAJCXsKLQkJCUNvbnNv
bGUuV3JpdGVMaW5lICgiR2VuZXJhdGluZyBtYWtlZmlsZXMgZm9yICIgKyBOYW1lKTsKKwkJCVJ1
bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAoIkdlbmVyYXRpbmcgbWFrZWZpbGVzIGZvciAiICsg
TmFtZSk7CiAJCQlsYW5ndWFnZUJpbmRpbmcuR2VuZXJhdGVNYWtlZmlsZSAodGhpcywgcGFyZW50
Q29tYmluZSk7CiAJCX0KIAkJCkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVy
bmFsL1Byb2plY3QvUHJvamVjdC9JbmNsdWRlRmlsZXNEaWFsb2cuY3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
Q29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9Qcm9qZWN0L1Byb2plY3QvSW5jbHVk
ZUZpbGVzRGlhbG9nLmNzCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3Au
QmFzZS9JbnRlcm5hbC9Qcm9qZWN0L1Byb2plY3QvSW5jbHVkZUZpbGVzRGlhbG9nLmNzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAJCQogCQlwdWJsaWMgSW5jbHVkZUZpbGVzRGlh
bG9nKFByb2plY3QgcHJvamVjdCwgU3RyaW5nQ29sbGVjdGlvbiBuZXdGaWxlcykKIAkJewotCQkJ
Q29uc29sZS5Xcml0ZUxpbmUgKCIqKiogSW5jbHVkZSBmaWxlcyBkaWFsb2cgKioqIik7CisJCQlS
dW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8gKCIqKiogSW5jbHVkZSBmaWxlcyBkaWFsb2cgKioq
Iik7CiAJCQkvLyB3ZSBtdXN0IGRvIGl0IGZyb20gKmhlcmUqIG90aGVyd2lzZSwgd2UgZ2V0IHRo
aXMgYXNzZW1ibHksIG5vdCB0aGUgY2FsbGVyCiAJCQlHbGFkZS5YTUwgZ2xhZGUgPSBuZXcgR2xh
ZGUuWE1MIChudWxsLCAiQmFzZS5nbGFkZSIsICJJbmNsdWRlRmlsZXNEaWFsb2dXaWRnZXQiLCBu
dWxsKTsKIAkJCWdsYWRlLkF1dG9jb25uZWN0ICh0aGlzKTsKSW5kZXg6IENvcmUvc3JjL01vbm9E
ZXZlbG9wLkJhc2UvSW50ZXJuYWwvUHJvamVjdC9Qcm9qZWN0L1Byb2plY3QuY3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9Qcm9qZWN0L1Byb2plY3Qv
UHJvamVjdC5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2Uv
SW50ZXJuYWwvUHJvamVjdC9Qcm9qZWN0L1Byb2plY3QuY3MJKHdvcmtpbmcgY29weSkKQEAgLTI2
MCw3ICsyNjAsNyBAQAogCQkJCQkJCQlGaWxlLkNvcHkgKHJlZmVyZW5jZUZpbGVOYW1lICsgIi5t
ZGIiLCBkZXN0aW5hdGlvbkZpbGVOYW1lICsgIi5tZGIiLCB0cnVlKTsKIAkJCQkJCX0KIAkJCQkJ
fSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJDYW4ndCBj
b3B5IHJlZmVyZW5jZSBmaWxlIGZyb20gezB9IHRvIHsxfSByZWFzb24gezJ9IiwgcmVmZXJlbmNl
RmlsZU5hbWUsIGRlc3RpbmF0aW9uRmlsZU5hbWUsIGUpOworCQkJCQkJUnVudGltZS5Mb2dnaW5n
U2VydmljZS5JbmZvRm9ybWF0KCJDYW4ndCBjb3B5IHJlZmVyZW5jZSBmaWxlIGZyb20gezB9IHRv
IHsxfSByZWFzb24gezJ9IiwgcmVmZXJlbmNlRmlsZU5hbWUsIGRlc3RpbmF0aW9uRmlsZU5hbWUs
IGUpOwogCQkJCQl9CiAJCQkJfQogCQkJfQpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFz
ZS9JbnRlcm5hbC9Qcm9qZWN0L0NvbWJpbmUvQ29tYmluZS5jcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3Jl
L3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1Byb2plY3QvQ29tYmluZS9Db21iaW5lLmNz
CShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9Q
cm9qZWN0L0NvbWJpbmUvQ29tYmluZS5jcwkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3
IEBACiAJCQkJCXByb2plY3RzLkFkZCAoKFByb2plY3QpZW50cnkpOwogCQkJCX0KIAkJCQllbHNl
Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiRG9udCBrbm93IGhvdyB0byBnZW5lcmF0ZSBtYWtl
ZmlsZXMgZm9yICIgKyBlbnRyeSk7CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbyAo
IkRvbnQga25vdyBob3cgdG8gZ2VuZXJhdGUgbWFrZWZpbGVzIGZvciAiICsgZW50cnkpOwogCQkJ
fQogCQkJCiAJCQlzdHJpbmcgcmVsX291dHB1dGRpciA9IFJ1bnRpbWUuRmlsZVV0aWxpdHlTZXJ2
aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGggKEJhc2VEaXJlY3RvcnksIG91dHB1dGRpcik7Cklu
ZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1Byb2dyZXNzTW9uaXRvcmlu
Zy9Db25zb2xlUHJvZ3Jlc3NNb25pdG9yLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL01vbm9E
ZXZlbG9wLkJhc2UvSW50ZXJuYWwvUHJvZ3Jlc3NNb25pdG9yaW5nL0NvbnNvbGVQcm9ncmVzc01v
bml0b3IuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0lu
dGVybmFsL1Byb2dyZXNzTW9uaXRvcmluZy9Db25zb2xlUHJvZ3Jlc3NNb25pdG9yLmNzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAJewogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBC
ZWdpblRhc2sgKHN0cmluZyBuYW1lLCBpbnQgdG90YWxXb3JrKQogCQl7Ci0JCQlDb25zb2xlLldy
aXRlTGluZSAoIioqKiAiICsgbmFtZSk7CisJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8g
KCIqKiogIiArIG5hbWUpOwogCQl9CiAJCQogCQlwdWJsaWMgb3ZlcnJpZGUgVGV4dFdyaXRlciBM
b2cgewpAQCAtNDQsMTggKzQ0LDE4IEBACiAJCQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBSZXBv
cnRTdWNjZXNzIChzdHJpbmcgbWVzc2FnZSkKIAkJewotCQkJQ29uc29sZS5Xcml0ZUxpbmUgKG1l
c3NhZ2UpOworCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvIChtZXNzYWdlKTsKIAkJfQog
CQkKIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgUmVwb3J0V2FybmluZyAoc3RyaW5nIG1lc3NhZ2Up
CiAJCXsKLQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiV0FSTklORzogIiArIG1lc3NhZ2UpOworCQkJ
UnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvICgiV0FSTklORzogIiArIG1lc3NhZ2UpOwogCQl9
CiAJCQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBSZXBvcnRFcnJvciAoc3RyaW5nIG1lc3NhZ2Us
IEV4Y2VwdGlvbiBleCkKIAkJewotCQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJFUlJPUjogIiArIG1l
c3NhZ2UpOwotCQkJQ29uc29sZS5Xcml0ZUxpbmUgKGV4KTsKKwkJCVJ1bnRpbWUuTG9nZ2luZ1Nl
cnZpY2UuSW5mbyAoIkVSUk9SOiAiICsgbWVzc2FnZSk7CisJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2
aWNlLkluZm8gKGV4KTsKIAkJfQogCX0KIH0KSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJh
c2UvSW50ZXJuYWwvUHJvZ3Jlc3NNb25pdG9yaW5nL0Jhc2VQcm9ncmVzc01vbml0b3IuY3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9Qcm9ncmVzc01v
bml0b3JpbmcvQmFzZVByb2dyZXNzTW9uaXRvci5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUv
c3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvUHJvZ3Jlc3NNb25pdG9yaW5nL0Jhc2VQcm9n
cmVzc01vbml0b3IuY3MJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQAogCQkJZWxz
ZSBpZiAobWVzc2FnZSAhPSBudWxsICYmIGV4ICE9IG51bGwpCiAJCQkJbWVzc2FnZSArPSAiLiAi
ICsgZXguTWVzc2FnZTsKIAkJCWVycm9yc01lc3NhZ2VzLkFkZCAobWVzc2FnZSk7Ci0JCQlDb25z
b2xlLldyaXRlTGluZSAoZXgpOworCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvIChleCk7
CiAJCX0KIAkJCiAJCVtGcmVlRGlzcGF0Y2hdCkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5C
YXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBBc3NlbWJseVBhcmFt
ZXRlci5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFs
L1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBBc3NlbWJseVBhcmFtZXRlci5jcwkocmV2
aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvUGFyc2Vy
L1NoYXJwQXNzZW1ibHlMYXllci9TaGFycEFzc2VtYmx5UGFyYW1ldGVyLmNzCSh3b3JraW5nIGNv
cHkpCkBAIC0xMCw2ICsxMCw3IEBACiB1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKIHVzaW5nIFN5
c3RlbS5YbWw7CiAKK3VzaW5nIE1vbm9EZXZlbG9wLlNlcnZpY2VzOwogdXNpbmcgTW9ub0RldmVs
b3AuU2hhcnBBc3NlbWJseS5NZXRhZGF0YS5Sb3dzOwogdXNpbmcgTW9ub0RldmVsb3AuU2hhcnBB
c3NlbWJseS5NZXRhZGF0YTsKIHVzaW5nIE1vbm9EZXZlbG9wLlNoYXJwQXNzZW1ibHkuUEU7Cklu
ZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2Vt
Ymx5TGF5ZXIvU2hhcnBBc3NlbWJseU1ldGhvZC5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBB
c3NlbWJseU1ldGhvZC5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9w
LkJhc2UvSW50ZXJuYWwvUGFyc2VyL1NoYXJwQXNzZW1ibHlMYXllci9TaGFycEFzc2VtYmx5TWV0
aG9kLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBACiB1c2luZyBTeXN0ZW0uUmVm
bGVjdGlvbjsKIHVzaW5nIFN5c3RlbS5YbWw7CiAKK3VzaW5nIE1vbm9EZXZlbG9wLlNlcnZpY2Vz
OwogdXNpbmcgTW9ub0RldmVsb3AuU2hhcnBBc3NlbWJseS5NZXRhZGF0YS5Sb3dzOwogdXNpbmcg
TW9ub0RldmVsb3AuU2hhcnBBc3NlbWJseS5NZXRhZGF0YTsKIHVzaW5nIE1vbm9EZXZlbG9wLlNo
YXJwQXNzZW1ibHkuUEU7CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFs
L1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBBc3NlbWJseVJldHVyblR5cGUuY3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9QYXJzZXIvU2hh
cnBBc3NlbWJseUxheWVyL1NoYXJwQXNzZW1ibHlSZXR1cm5UeXBlLmNzCShyZXZpc2lvbiAyNDEz
KQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9QYXJzZXIvU2hhcnBBc3Nl
bWJseUxheWVyL1NoYXJwQXNzZW1ibHlSZXR1cm5UeXBlLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw2ICsxMCw3IEBACiB1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKIHVzaW5nIFN5c3RlbS5YbWw7
CiAKK3VzaW5nIE1vbm9EZXZlbG9wLlNlcnZpY2VzOwogdXNpbmcgTW9ub0RldmVsb3AuU2hhcnBB
c3NlbWJseS5NZXRhZGF0YS5Sb3dzOwogdXNpbmcgTW9ub0RldmVsb3AuU2hhcnBBc3NlbWJseS5N
ZXRhZGF0YTsKIHVzaW5nIE1vbm9EZXZlbG9wLlNoYXJwQXNzZW1ibHkuUEU7CkBAIC05Nyw3ICs5
OCw3IEBACiAJCQkJCQl9IGVsc2UgewogCQkJCQkJCWZ1bGx5UXVhbGlmaWVkTmFtZSA9IGFzc2Vt
Ymx5LkdldFN0cmluZ0Zyb21IZWFwKHR5cGVSZWZUYWJsZVtpbmRleF0uTnNwYWNlKSArICIuIiAr
IAogCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXNzZW1ibHkuR2V0U3RyaW5nRnJvbUhlYXAodHlwZVJlZlRhYmxlW2luZGV4XS5OYW1lKTsKLQkJ
CQkJCSAgICBDb25zb2xlLldyaXRlTGluZSgiR2V0RGF0YVR5cGU6IFR5cGVSZWYgbm90IHJlc29s
dmVkISIpOworCQkJCQkJICAgIFJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiR2V0RGF0YVR5
cGU6IFR5cGVSZWYgbm90IHJlc29sdmVkISIpOwogCQkJCQkJfQogCQkJCQkJZGVjbGFyZWRpbiA9
IGFzbS5HZXRSZWZBc3NlbWJseUZvcihpbmRleCk7CiAJCQkJCX0gZWxzZSB7CkBAIC0xMzcsNyAr
MTM4LDcgQEAKIAkJCQkJYnJlYWs7CiAJCQkJCiAJCQkJZGVmYXVsdDoKLQkJCQkJQ29uc29sZS5X
cml0ZUxpbmUoIk5PVCBzdXBwb3J0ZWQ6ICIgKyBkdC5Ub1N0cmluZygpKTsKKwkJCQkJUnVudGlt
ZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJOT1Qgc3VwcG9ydGVkOiAiICsgZHQuVG9TdHJpbmcoKSk7
CiAJCQkJCWZ1bGx5UXVhbGlmaWVkTmFtZSArPSAiIE5PVF9TVVBQT1JURUQgWyIgKyBkdC5Ub1N0
cmluZygpICsgIl0iOwogCQkJCQlicmVhazsKIAkJCX0KQEAgLTE3Myw3ICsxNzQsNyBAQAogCQkJ
fSBlbHNlIHsKIAkJCQlGdWxseVF1YWxpZmllZE5hbWUgPSBhc3NlbWJseS5SZWFkZXIuR2V0U3Ry
aW5nRnJvbUhlYXAodHlwZVJlZlRhYmxlW2luZGV4XS5Oc3BhY2UpICsgIi4iICsgCiAJCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlbWJseS5SZWFk
ZXIuR2V0U3RyaW5nRnJvbUhlYXAodHlwZVJlZlRhYmxlW2luZGV4XS5OYW1lKTsKLQkJCSAgICBD
b25zb2xlLldyaXRlTGluZSgiU2hhcnBBc3NlbWJseVJldHVyblR5cGUgZnJvbSBUeXBlUmVmOiBU
eXBlUmVmIG5vdCByZXNvbHZlZCEiKTsKKwkJCSAgICBSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLklu
Zm8oIlNoYXJwQXNzZW1ibHlSZXR1cm5UeXBlIGZyb20gVHlwZVJlZjogVHlwZVJlZiBub3QgcmVz
b2x2ZWQhIik7CiAJCQl9CiAJCQlkZWNsYXJlZGluID0gYXNzZW1ibHkuR2V0UmVmQXNzZW1ibHlG
b3IoaW5kZXgpOwogCQl9CkBAIC0xODQsNyArMTg1LDcgQEAKIAkJCXRyeSB7CiAJCQkJR2V0RGF0
YVR5cGUoYXNzZW1ibHksIHJlZiBibG9iU2lnbmF0dXJlSW5kZXgpOwogCQkJfSBjYXRjaCAoRXhj
ZXB0aW9uIGUpIHsKLQkJCQlDb25zb2xlLldyaXRlTGluZSgiR290IGV4Y2VwdGlvbiBpbiBSZXR1
cm5UeXBlIGNyZWF0aW9uOiAiICsgZS5Ub1N0cmluZygpKTsKKwkJCQlSdW50aW1lLkxvZ2dpbmdT
ZXJ2aWNlLkluZm8oIkdvdCBleGNlcHRpb24gaW4gUmV0dXJuVHlwZSBjcmVhdGlvbjogIiArIGUu
VG9TdHJpbmcoKSk7CiAJCQkJRnVsbHlRdWFsaWZpZWROYW1lID0gIkdPVF9FWENFUFRJT04iOwog
CQkJfQogCQkJCkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNl
ci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBBc3NlbWJseUV2ZW50LmNzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvUGFyc2VyL1NoYXJwQXNzZW1ibHlM
YXllci9TaGFycEFzc2VtYmx5RXZlbnQuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBB
c3NlbWJseUV2ZW50LmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBACiB1c2luZyBT
eXN0ZW0uUmVmbGVjdGlvbjsKIHVzaW5nIFN5c3RlbS5YbWw7CiAKK3VzaW5nIE1vbm9EZXZlbG9w
LlNlcnZpY2VzOwogdXNpbmcgTW9ub0RldmVsb3AuU2hhcnBBc3NlbWJseS5NZXRhZGF0YS5Sb3dz
OwogdXNpbmcgTW9ub0RldmVsb3AuU2hhcnBBc3NlbWJseS5NZXRhZGF0YTsKIHVzaW5nIE1vbm9E
ZXZlbG9wLlNoYXJwQXNzZW1ibHkuUEU7CkBAIC0xMjIsNyArMTIzLDcgQEAKIAogCQkJfSBlbHNl
IHsgICAgICAgICAgICAgICAgICAvLyBUeXBlU3BlYwogCQkJCXJldHVyblR5cGUgPSBuZXcgU2hh
cnBBc3NlbWJseVJldHVyblR5cGUoIk5PVF9TVVBQT1JURUQiKTsKLQkJCQlDb25zb2xlLldyaXRl
TGluZSgiU2hhcnBBc3NlbWJseUV2ZW50OiBUeXBlU3BlYyAtLSBub3Qgc3VwcG9ydGVkIik7CisJ
CQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJTaGFycEFzc2VtYmx5RXZlbnQ6IFR5cGVT
cGVjIC0tIG5vdCBzdXBwb3J0ZWQiKTsKIAkJCX0KIAkJCQogCQl9CkluZGV4OiBDb3JlL3NyYy9N
b25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBB
c3NlbWJseUF0dHJpYnV0ZS5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5C
YXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBBc3NlbWJseUF0dHJp
YnV0ZS5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50
ZXJuYWwvUGFyc2VyL1NoYXJwQXNzZW1ibHlMYXllci9TaGFycEFzc2VtYmx5QXR0cmlidXRlLmNz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBACiB1c2luZyBTeXN0ZW0uWG1sOwogdXNp
bmcgU3lzdGVtLklPOwogCit1c2luZyBNb25vRGV2ZWxvcC5TZXJ2aWNlczsKIHVzaW5nIE1vbm9E
ZXZlbG9wLlNoYXJwQXNzZW1ibHkuTWV0YWRhdGEuUm93czsKIHVzaW5nIE1vbm9EZXZlbG9wLlNo
YXJwQXNzZW1ibHkuTWV0YWRhdGE7CiB1c2luZyBNb25vRGV2ZWxvcC5TaGFycEFzc2VtYmx5LlBF
OwpAQCAtNDMsNyArNDQsNyBAQAogCQkJCQogCQkJCWludCB0YWJsZSA9IGFzc2VtYmx5LlJlYWRl
ci5HZXRDb2RlZEluZGV4VGFibGUoQ29kZWRJbmRleC5NZW1iZXJSZWZQYXJlbnQsIHJlZiB0cklu
ZGV4KTsKIAkJCQlpZiAodGFibGUgIT0gMSkgewotCQkJCQlDb25zb2xlLldyaXRlTGluZSgiU2hh
cnBBc3NlbWJseUF0dHJpYnV0ZTogdW5zdXBwb3J0ZWQgTWVtYmVyUmVmUGFyZW50IGNvZGVkIGlu
ZGV4Iik7CisJCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiU2hhcnBBc3NlbWJseUF0
dHJpYnV0ZTogdW5zdXBwb3J0ZWQgTWVtYmVyUmVmUGFyZW50IGNvZGVkIGluZGV4Iik7CiAJCQkJ
CXJldHVybjsgLy8gdW5zdXBwb3J0ZWQKIAkJCQl9CiAJCQkJCkBAIC05Myw3ICs5NCw3IEBACiAJ
CQkJCiAJCQkJdXNob3J0IHByb2xvZyA9IGJpbmFyeVJlYWRlci5SZWFkVUludDE2KCk7CiAJCQkJ
aWYgKHByb2xvZyAhPSAxKSB7Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJTaGFycEFzc2VtYmx5
QXR0cmlidXRlOiBXcm9uZyBwcm9sb2cgaW4gYXJndW1lbnQgbGlzdCIpOworCQkJCQlSdW50aW1l
LkxvZ2dpbmdTZXJ2aWNlLkluZm8oIlNoYXJwQXNzZW1ibHlBdHRyaWJ1dGU6IFdyb25nIHByb2xv
ZyBpbiBhcmd1bWVudCBsaXN0Iik7CiAJCQkJCXJldHVybjsKIAkJCQl9CiAJCQkJCkBAIC0xMTMs
MTEgKzExNCwxMSBAQAogCQkJCQkJCX0KIAkJCQkJCX0KIAkJCQkJCQotCQkJCQkJQ29uc29sZS5X
cml0ZUxpbmUoIkVudW06IHJldHVybiB0eXBlID0gIiArIHJldHR5cGVuYW1lKTsKKwkJCQkJCVJ1
bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiRW51bTogcmV0dXJuIHR5cGUgPSAiICsgcmV0dHlw
ZW5hbWUpOwogCQkJCQkJCiAJCQkJCQlvYmplY3QgYXJnVmFsdWUgPSBHZXRGaXhlZEFyZyhhcmdC
bG9iLCBiaW5hcnlSZWFkZXIsIHJldHR5cGVuYW1lKTsKIAkJCQkJCQotCQkJCQkJQ29uc29sZS5X
cml0ZUxpbmUoIkVudW06IGFyZyB2YWx1ZSA9ICIgKyBhcmdWYWx1ZS5Ub1N0cmluZygpKTsKKwkJ
CQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiRW51bTogYXJnIHZhbHVlID0gIiArIGFy
Z1ZhbHVlLlRvU3RyaW5nKCkpOwogCQkJCQkJCiAJCQkJCQkJZm9yZWFjaCAoSUZpZWxkIGZpZWxk
IGluIHVuZGVybHlpbmdDbGFzcy5GaWVsZHMpIHsKIAkJCQkJCQkJaWYgKGZpZWxkIGlzIFNoYXJw
QXNzZW1ibHlGaWVsZCkgewpAQCAtMTMyLDcgKzEzMyw3IEBACiAJCQkJCQkLCQkJCQkJLy8gaWYg
dGhlIHZhbHVlIGNhbm5vdCBiZSBmb3VuZAogCQkJCQkJcG9zaXRpb25hbEFyZ3VtZW50cy5BZGQo
YXJnVmFsdWUuVG9TdHJpbmcoKSk7CiAJCQkJCQkKLQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJF
bnVtOiBubyBuYW1lIGZvdW5kIik7CisJCQkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8o
IkVudW06IG5vIG5hbWUgZm91bmQiKTsKIAkJCQkJCQogCQkJCQluYW1lZm91bmQ6IDsKIAkJCQkJ
CQpAQCAtMTYyLDggKzE2Myw4IEBACiAJCQkJCiAJCQkJYmluYXJ5UmVhZGVyLkNsb3NlKCk7CiAJ
CQl9IGNhdGNoIChFeGNlcHRpb24pIHsKLQkJCQlDb25zb2xlLldyaXRlTGluZSgiU2hhcnBBc3Nl
bWJseUF0dHJpYnV0ZTogRXJyb3IgbG9hZGluZyBhcmd1bWVudHMuIik7Ci0JCQkJLy9Db25zb2xl
LldyaXRlTGluZShlLlRvU3RyaW5nKCkpOworCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5m
bygiU2hhcnBBc3NlbWJseUF0dHJpYnV0ZTogRXJyb3IgbG9hZGluZyBhcmd1bWVudHMuIik7CisJ
CQkJLy9SdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oZS5Ub1N0cmluZygpKTsKIAkJCX0KIAkJ
fQogCQkKQEAgLTIzMSw3ICsyMzIsNyBAQAogCQkJCXRyeSB7CiAJCQkJCXJldCArPSAoc3RyaW5n
KWRlLktleSArICIgPSAiICsgKHN0cmluZylkZS5WYWx1ZSArICIsICI7CiAJCQkJfSBjYXRjaCB7
Ci0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJlcnJvciBpbiBuYW1lZEFyZ3VtZW50cyIpOworCQkJ
CQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oImVycm9yIGluIG5hbWVkQXJndW1lbnRzIik7
CiAJCQkJfQogCQkJfQogCQkJCkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVy
bmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5ZXIvU2hhcnBBc3NlbWJseUZpZWxkLmNzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvUGFyc2VyL1NoYXJw
QXNzZW1ibHlMYXllci9TaGFycEFzc2VtYmx5RmllbGQuY3MJKHJldmlzaW9uIDI0MTMpCisrKyBD
b3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNlci9TaGFycEFzc2VtYmx5TGF5
ZXIvU2hhcnBBc3NlbWJseUZpZWxkLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBA
CiB1c2luZyBTeXN0ZW0uSU87CiB1c2luZyBTeXN0ZW0uWG1sOwogCit1c2luZyBNb25vRGV2ZWxv
cC5TZXJ2aWNlczsKIHVzaW5nIE1vbm9EZXZlbG9wLlNoYXJwQXNzZW1ibHkuTWV0YWRhdGEuUm93
czsKIHVzaW5nIE1vbm9EZXZlbG9wLlNoYXJwQXNzZW1ibHkuTWV0YWRhdGE7CiB1c2luZyBNb25v
RGV2ZWxvcC5TaGFycEFzc2VtYmx5LlBFOwpAQCAtMTMyLDcgKzEzMyw3IEBACiAJCQkJCX0KIAkJ
CQkJYmluUmVhZGVyLkNsb3NlKCk7CiAJCQkJfSBjYXRjaCB7Ci0JCQkJCUNvbnNvbGUuV3JpdGVM
aW5lKCJTaGFycEFzc2VtYmx5RmllbGQ6IEVycm9yIHJlYWRpbmcgY29uc3RhbnQgdmFsdWUiKTsK
KwkJCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJTaGFycEFzc2VtYmx5RmllbGQ6IEVy
cm9yIHJlYWRpbmcgY29uc3RhbnQgdmFsdWUiKTsKIAkJCQl9CiAJCQl9CiAJCX0KSW5kZXg6IENv
cmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvUGFyc2VyL1NoYXJwQXNzZW1ibHlMYXll
ci9TaGFycEFzc2VtYmx5UHJvcGVydHkuY3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMvTW9ub0Rl
dmVsb3AuQmFzZS9JbnRlcm5hbC9QYXJzZXIvU2hhcnBBc3NlbWJseUxheWVyL1NoYXJwQXNzZW1i
bHlQcm9wZXJ0eS5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJh
c2UvSW50ZXJuYWwvUGFyc2VyL1NoYXJwQXNzZW1ibHlMYXllci9TaGFycEFzc2VtYmx5UHJvcGVy
dHkuY3MJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDcgQEAKIHVzaW5nIFN5c3RlbS5SZWZs
ZWN0aW9uOwogdXNpbmcgU3lzdGVtLlhtbDsKIAordXNpbmcgTW9ub0RldmVsb3AuU2VydmljZXM7
CiB1c2luZyBNb25vRGV2ZWxvcC5TaGFycEFzc2VtYmx5Lk1ldGFkYXRhLlJvd3M7CiB1c2luZyBN
b25vRGV2ZWxvcC5TaGFycEFzc2VtYmx5Lk1ldGFkYXRhOwogdXNpbmcgTW9ub0RldmVsb3AuU2hh
cnBBc3NlbWJseS5QRTsKSW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwv
UGFyc2VyL1NoYXJwQXNzZW1ibHlMYXllci9TaGFycEFzc2VtYmx5Q2xhc3MuY3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9QYXJzZXIvU2hhcnBBc3Nl
bWJseUxheWVyL1NoYXJwQXNzZW1ibHlDbGFzcy5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUv
c3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvUGFyc2VyL1NoYXJwQXNzZW1ibHlMYXllci9T
aGFycEFzc2VtYmx5Q2xhc3MuY3MJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDcgQEAKIHVz
aW5nIFN5c3RlbS5UZXh0OwogdXNpbmcgU3lzdGVtLlhtbDsKIAordXNpbmcgTW9ub0RldmVsb3Au
U2VydmljZXM7CiB1c2luZyBNb25vRGV2ZWxvcC5TaGFycEFzc2VtYmx5Lk1ldGFkYXRhLlJvd3M7
CiB1c2luZyBNb25vRGV2ZWxvcC5TaGFycEFzc2VtYmx5Lk1ldGFkYXRhOwogdXNpbmcgTW9ub0Rl
dmVsb3AuU2hhcnBBc3NlbWJseS5QRTsKQEAgLTQ2LDcgKzQ3LDcgQEAKIAkJCQljYXNlIDM6IC8v
IFR5cGVSZWYgLS0gbmVzdGVkIHR5cGUKIAkJCQkJcmV0dXJuIEdldE5lc3RlZE5hbWUoYXNtLCB0
eXBlUmVmVGFibGUsIHZhbCkgKyAiKyIgKyBhc20uUmVhZGVyLkdldFN0cmluZ0Zyb21IZWFwKHR5
cGVSZWZUYWJsZVtpbmRleF0uTmFtZSk7CiAJCQkJZGVmYXVsdDogLy8gb3RoZXIgdG9rZW4gLSBu
b3Qgc3VwcG9ydGVkCi0JCQkJCUNvbnNvbGUuV3JpdGVMaW5lKCJHZXROZXN0ZWROYW1lOiBVbnN1
cHBvcnRlZCByZXNvbHV0aW9uIHNjb3BlISIpOworCQkJCQlSdW50aW1lLkxvZ2dpbmdTZXJ2aWNl
LkluZm8oIkdldE5lc3RlZE5hbWU6IFVuc3VwcG9ydGVkIHJlc29sdXRpb24gc2NvcGUhIik7CiAJ
CQkJCWdvdG8gY2FzZSAzOwogCQkJfQogCQl9CkBAIC03OSw3ICs4MCw3IEBACiAJCQlTaGFycEFz
c2VtYmx5XyBkZWNsYXJpbmdBc3NlbWJseSA9IHJlZmVyZW5jaW5nQXNzZW1ibHkuR2V0UmVmQXNz
ZW1ibHlGb3IoaW5kZXgpOwogCQkJaWYgKGRlY2xhcmluZ0Fzc2VtYmx5ID09IG51bGwpIHsKIAkJ
CQlDb25zb2xlLldyaXRlKCJGcm9tVHlwZVJlZiBmYWlsZWQgZm9yOiAiICsgbmFtZSArICIgZGVj
bGFyZWQgaW4gYXNzZW1ibHkgIiArIHJlZmVyZW5jaW5nQXNzZW1ibHkuTmFtZSk7Ci0JCQkJQ29u
c29sZS5Xcml0ZUxpbmUoIjogRGVjbGFyaW5nIGFzc2VtYmx5IG5vdCBmb3VuZC4iKTsKKwkJCQlS
dW50aW1lLkxvZ2dpbmdTZXJ2aWNlLkluZm8oIjogRGVjbGFyaW5nIGFzc2VtYmx5IG5vdCBmb3Vu
ZC4iKTsKIAkJCQlyZXR1cm4gbnVsbDsKIAkJCX0KIAkJCQpAQCAtMTA0LDcgKzEwNSw3IEBACiAJ
CQl9CiAJCQkKIAkJCUNvbnNvbGUuV3JpdGUoIkZyb21UeXBlUmVmIGZhaWxlZCBmb3I6ICIgKyBu
YW1lICsgIiBkZWNsYXJlZCBpbiBhc3NlbWJseSAiICsgcmVmZXJlbmNpbmdBc3NlbWJseS5OYW1l
KTsKLQkJCUNvbnNvbGUuV3JpdGVMaW5lKCI6IE1hdGNoaW5nIHR5cGUgbm90IGZvdW5kIGZvciBu
ZXN0ZWQgbmFtZTogIiArIG5lc3RlZE5hbWUpOworCQkJUnVudGltZS5Mb2dnaW5nU2VydmljZS5J
bmZvKCI6IE1hdGNoaW5nIHR5cGUgbm90IGZvdW5kIGZvciBuZXN0ZWQgbmFtZTogIiArIG5lc3Rl
ZE5hbWUpOwogCQkJcmV0dXJuIG51bGw7CiAJCX0KIAkJCkBAIC0yOTUsNyArMjk2LDcgQEAKIAkJ
CQljYXNlIDE6ICAvLyBUeXBlUmVmCiAJCQkJCXJldHVybiBGcm9tVHlwZVJlZihhc3NlbWJseSwg
bkluZGV4KTsKIAkJCQlkZWZhdWx0OgotCQkJCQlDb25zb2xlLldyaXRlTGluZSgiR2V0VHlwZVJl
Zk9yRGVmQ2xhc3M6IFdyb25nIFR5cGVEZWZPclJlZiBjb2RlZCBpbmRleCEiKTsKKwkJCQkJUnVu
dGltZS5Mb2dnaW5nU2VydmljZS5JbmZvKCJHZXRUeXBlUmVmT3JEZWZDbGFzczogV3JvbmcgVHlw
ZURlZk9yUmVmIGNvZGVkIGluZGV4ISIpOwogCQkJCQlyZXR1cm4gbnVsbDsKIAkJCX0KIAkJfQpA
QCAtNDMxLDcgKzQzMiw3IEBACiAJCQkJCUlDbGFzcyBuZXdjbGFzcyA9IG5ldyBTaGFycEFzc2Vt
Ymx5Q2xhc3MoYXNzZW1ibHksIHR5cGVEZWZUYWJsZSwgaSk7CiAJCQkJCWNsYXNzZXMuQWRkKG5l
d2NsYXNzKTsKIAkJCQl9IGNhdGNoIHsKLQkJCQkJQ29uc29sZS5Xcml0ZUxpbmUoIkdldEFzc2Vt
Ymx5VHlwZXM6IEVycm9yIGxvYWRpbmcgY2xhc3MgIiArIGkpOworCQkJCQlSdW50aW1lLkxvZ2dp
bmdTZXJ2aWNlLkluZm8oIkdldEFzc2VtYmx5VHlwZXM6IEVycm9yIGxvYWRpbmcgY2xhc3MgIiAr
IGkpOwogCQkJCX0KIAkJCX0KIAkJCQpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9J
bnRlcm5hbC9UZW1wbGF0ZXMvQ29kZVRlbXBsYXRlTG9hZGVyLmNzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENv
cmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50ZXJuYWwvVGVtcGxhdGVzL0NvZGVUZW1wbGF0ZUxv
YWRlci5jcwkocmV2aXNpb24gMjQxMykKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvSW50
ZXJuYWwvVGVtcGxhdGVzL0NvZGVUZW1wbGF0ZUxvYWRlci5jcwkod29ya2luZyBjb3B5KQpAQCAt
OTYsNyArOTYsNyBAQAogCQlzdGF0aWMgQ29kZVRlbXBsYXRlTG9hZGVyKCkKIAkJewogCQkJaWYg
KCFMb2FkVGVtcGxhdGVzRnJvbVN0cmVhbShQYXRoLkNvbWJpbmUoUnVudGltZS5Qcm9wZXJ0aWVz
LkNvbmZpZ0RpcmVjdG9yeSwgVGVtcGxhdGVGaWxlTmFtZSkpKSB7Ci0JCQkJQ29uc29sZS5Xcml0
ZUxpbmUoIlRlbXBsYXRlczogY2FuJ3QgbG9hZCB1c2VyIGRlZmF1bHRzLCByZWFkaW5nIHN5c3Rl
bSBkZWZhdWx0cyIpOworCQkJCVJ1bnRpbWUuTG9nZ2luZ1NlcnZpY2UuSW5mbygiVGVtcGxhdGVz
OiBjYW4ndCBsb2FkIHVzZXIgZGVmYXVsdHMsIHJlYWRpbmcgc3lzdGVtIGRlZmF1bHRzIik7CiAJ
CQkJaWYgKCFMb2FkVGVtcGxhdGVzRnJvbVN0cmVhbShSdW50aW1lLlByb3BlcnRpZXMuRGF0YURp
cmVjdG9yeSArIAogCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aC5EaXJlY3Rv
cnlTZXBhcmF0b3JDaGFyICAgKyAib3B0aW9ucyIgKwogCQkJCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGF0aC5EaXJlY3RvcnlTZXBhcmF0b3JDaGFyICAgKyBUZW1wbGF0ZUZpbGVOYW1l
KSkgewpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVsb3AuU3RhcnR1cC9hcHAuY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIENvcmUvc3JjL01vbm9EZXZlbG9wLlN0YXJ0dXAvYXBwLmNvbmZpZwkocmV2aXNp
b24gMCkKKysrIENvcmUvc3JjL01vbm9EZXZlbG9wLlN0YXJ0dXAvYXBwLmNvbmZpZwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiID8+Cis8Y29uZmlndXJhdGlvbj4KKwk8Y29uZmlnU2VjdGlvbnM+CisJCTxzZWN0aW9uIG5h
bWU9ImxvZzRuZXQiIHR5cGU9ImxvZzRuZXQuQ29uZmlnLkxvZzROZXRDb25maWd1cmF0aW9uU2Vj
dGlvbkhhbmRsZXIsbG9nNG5ldCIgLz4KKwk8L2NvbmZpZ1NlY3Rpb25zPiAgCisJPGxvZzRuZXQ+
CisJCTxhcHBlbmRlciBuYW1lPSJDb25zb2xlQXBwZW5kZXIiIHR5cGU9ImxvZzRuZXQuQXBwZW5k
ZXIuQ29uc29sZUFwcGVuZGVyIj4KKwkJCTxsYXlvdXQgdHlwZT0ibG9nNG5ldC5MYXlvdXQuUGF0
dGVybkxheW91dCI+CisJCQkJPGNvbnZlcnNpb25QYXR0ZXJuIHZhbHVlPSIlZGF0ZSBbJXRocmVh
ZF0gJS01bGV2ZWwgJWxvZ2dlciBbJW5kY10gLSAlbWVzc2FnZSVuZXdsaW5lIiAvPgorCQkJPC9s
YXlvdXQ+CisJCTwvYXBwZW5kZXI+CisJCTxyb290PgorCQkJPHByaW9yaXR5IHZhbHVlPSJBTEwi
IC8+CisJCQk8YXBwZW5kZXItcmVmIHJlZj0iQ29uc29sZUFwcGVuZGVyIiAvPgorCQk8L3Jvb3Q+
CisJPC9sb2c0bmV0PgorPC9jb25maWd1cmF0aW9uPgpJbmRleDogQ29yZS9zcmMvTW9ub0RldmVs
b3AuU3RhcnR1cC9NYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2ZWxv
cC5TdGFydHVwL01ha2VmaWxlLmFtCShyZXZpc2lvbiAyNDEzKQorKysgQ29yZS9zcmMvTW9ub0Rl
dmVsb3AuU3RhcnR1cC9NYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNCwxMSArNCwxNCBA
QAogRGlhbG9ncy9BZGRJblRyZWVTZXR0aW5nc0hhbmRsZXIuY3MgXAogQXNzZW1ibHlJbmZvLmNz
CiAKK0NPTkZJRz0gXAorYXBwLmNvbmZpZworCiBidWlsZF9zb3VyY2VzID0gJChhZGRwcmVmaXgg
JChzcmNkaXIpLywgJChGSUxFUykpCiAKIERMTCA9ICQodG9wX2J1aWxkZGlyKS9idWlsZC9iaW4v
TW9ub0RldmVsb3AuZXhlCiAKLWFsbDogJChETEwpCithbGw6ICQoRExMKSAkKERMTCkuY29uZmln
CiAKIFJFRlMgPSAvcjpTeXN0ZW0uRHJhd2luZyBcCiAJL3I6JCh0b3BfYnVpbGRkaXIpL2J1aWxk
L2Jpbi9Nb25vRGV2ZWxvcC5Db3JlLmRsbCBcCkBAIC0yMiw4ICsyNSwxMSBAQAogCSQoQ1NDKSAt
b3V0OiRAIC1kZWZpbmU6R1RLICQoUkVGUykgJChidWlsZF9zb3VyY2VzKSBcCiAJCS1yZXNvdXJj
ZTokKHNyY2RpcikvU3BsYXNoU2NyZWVuLnBuZyxTcGxhc2hTY3JlZW4ucG5nCiAKKyQoRExMKS5j
b25maWc6ICQoRExMKQorCWNwICQoQ09ORklHKSAkKERMTCkuY29uZmlnCisKIGFzc2VtYmx5ZGly
ID0gJChsaWJkaXIpL21vbm9kZXZlbG9wL2JpbgotYXNzZW1ibHlfREFUQSA9ICQoRExMKSAgICAg
ICAgICAgCithc3NlbWJseV9EQVRBID0gJChETEwpICQKIAogQ0xFQU5GSUxFUz0kKERMTCkgJChE
TEwpLm1kYgogCkluZGV4OiBjb250cmliL2xvZzRuZXQuZGxsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IGNvbnRyaWIvbG9nNG5l
dC5kbGwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3ZuOm1p
bWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IGNvbnRyaWIvTWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gY29udHJpYi9NYWtlZmlsZS5hbQkocmV2aXNpb24gMCkK
KysrIGNvbnRyaWIvTWFrZWZpbGUuYW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKwor
YWxsOiAkKEJJTkRJUikvJChMT0c0TkVUX0RMTCkKKworTE9HNE5FVF9ETEw9bG9nNG5ldC5kbGwK
K0JJTkRJUj0kKHRvcF9idWlsZGRpcikvYnVpbGQvYmluCisKKyQoQklORElSKS8kKExPRzRORVRf
RExMKToKKwlta2RpciAtcCAkKEJJTkRJUikKKwljcCAkKExPRzRORVRfRExMKSAkKEJJTkRJUikK
KwpJbmRleDogTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTWFrZWZpbGUuYW0JKHJldmlzaW9u
IDI0MTMpCisrKyBNYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVNV
QkRJUlMgPSBDb3JlIGJ1aWxkIHBvIEV4dHJhcworU1VCRElSUyA9IGNvbnRyaWIgQ29yZSBidWls
ZCBwbyBFeHRyYXMKIAogYmluX1NDUklQVFMgPSBtb25vZGV2ZWxvcAogCg==
------=_Part_2465_9333919.1112401763242--