GyRCNyo4NiRHJDkhIxsoQg0KDQobJEI8K0JwJEsbKEJDVlMbJEI0RDYtJCwkXiRAJEckLSRGJEok
JCROJEchIiVVJSElJCVrJE4lQSUnJUMlLyUkJXMkTyRHJC0kXiQ7JHMbKEINChskQiQsISMbKEIN
Cg0KGyRCJEEkZyRDJEgkQCQxISIyVjtSJDUkc0xyJHIhIxsoQg0KDQobJEIkVSE8JHMhIztkJCwk
JCRKJCQ0ViRLJEEkYyRzJEg7RTt2JDckRiQ/JHMkQBsoQjotKQ0KGyRCJCghPCRIISIbKEJDb25m
aWcbJEIlLyVpJTkkSCQ9JE4lRiU5JUglMSE8JTkkTSEjGyhCDQoNCj4gLyoNCj4gICogQCgjKUNv
bmZpZy5qYXZhDQo+ICAqLw0KPiBwYWNrYWdlIFhQLmpwLmNvLmVzbS53aWtpLmV4dHJlbWVkb21v
Ow0KPiANCj4gaW1wb3J0IGphdmEudXRpbC4qOw0KPiBpbXBvcnQgamF2YS5pby4qOw0KPiANCj4g
cHVibGljIGNsYXNzIENvbmZpZyB7DQo+IA0KPiAgICAgcHVibGljIENvbmZpZyhTdHJpbmcgbmFt
ZU9mQ29uZmlnRmlsZSkgew0KPiANCj4gICAgICAgICBGaWxlUmVhZGVyIGZpbGVJbjsNCj4gICAg
ICAgICBCdWZmZXJlZFJlYWRlciBidWZJbjsNCj4gICAgICAgICBTdHJpbmcgZmlsZUxpbmU7DQo+
IA0KPiAgICAgICAgIHRyeXsNCj4gICAgICAgICAgICAgZmlsZUluID0gbmV3IEZpbGVSZWFkZXIo
bmFtZU9mQ29uZmlnRmlsZSk7DQo+ICAgICAgICAgICAgIGJ1ZkluID0gbmV3IEJ1ZmZlcmVkUmVh
ZGVyKGZpbGVJbik7DQo+ICAgICAgICAgfWNhdGNoKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKXsN
Cj4gICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOw0KPiAg
ICAgICAgIH0NCj4gDQo+ICAgICAgICAgeExpc3QgPSBuZXcgQXJyYXlMaXN0KCk7DQo+IA0KPiAg
ICAgICAgIHdoaWxlKHRydWUpew0KPiAgICAgICAgICAgICB0cnl7DQo+ICAgICAgICAgICAgICAg
ICBmaWxlTGluZSA9IGJ1ZkluLnJlYWRMaW5lKCk7DQo+ICAgICAgICAgICAgIH1jYXRjaChJT0V4
Y2VwdGlvbiBlKXsNCj4gICAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICB9DQo+
ICAgICAgICAgICAgIGlmIChmaWxlTGluZSA9PSBudWxsKSBicmVhazsNCj4gICAgICAgICAgICAg
aWYgKGZpbGVMaW5lLnN0YXJ0c1dpdGgoIlgtTUwtTmFtZToiKSkNCj4gICAgICAgICAgICAgICAg
IG5hbWUgPSBmaWxlTGluZS5zdWJzdHJpbmcoIlgtTUwtTmFtZToiLmxlbmd0aCgpKS50cmltKCk7
DQo+ICAgICAgICAgICAgIGlmIChmaWxlTGluZS5zdGFydHNXaXRoKCJYLSIpKSB4TGlzdC5hZGQo
ZmlsZUxpbmUudHJpbSgpKTsNCj4gICAgICAgICB9DQo+IA0KPiAgICAgICAgIHRyeXsNCj4gICAg
ICAgICAgICAgYnVmSW4uY2xvc2UoKTsNCj4gICAgICAgICAgICAgZmlsZUluLmNsb3NlKCk7DQo+
ICAgICAgICAgfWNhdGNoKElPRXhjZXB0aW9uIGUpew0KPiAgICAgICAgIH0NCj4gDQo+ICAgICB9
DQo+IA0KPiAgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgew0KPiAgICAgICAgIGlmIChuYW1l
ID09IG51bGwpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsNCj4gICAgICAg
ICBpZiAobmFtZS5sZW5ndGgoKSA9PSAwKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0
aW9uKCk7DQo+ICAgICAgICAgcmV0dXJuIG5hbWU7DQo+ICAgICB9DQo+IA0KPiAgICAgcHVibGlj
IEl0ZXJhdG9yIGdldFhJbmZvKCkgew0KPiAgICAgICAgIHJldHVybiB4TGlzdC5pdGVyYXRvcigp
Ow0KPiAgICAgfQ0KPiANCj4gICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVtYmVyTGlzdEZpbGVOYW1l
KCl7DQo+ICAgICAgICAgcmV0dXJuIG51bGw7DQo+ICAgICB9DQo+IA0KPiAgICAgU3RyaW5nIG5h
bWU7DQo+ICAgICBMaXN0IHhMaXN0Ow0KPiB9DQoNChskQiRKJGskWyRJISMkOSRZJEYkTiUzJXMl
VSUjJS4lZSVsITwlNyVnJXMkciQzJE4lLyVpJTkkRyRkJGskRCRiJGokKyQ3JGkhIxsoQg0KGyRC
JSslJiVzJT8kSiRJJE8hIkksJDpKQk5zPWhNfSRIJEokayRIJDMkbSRAJCskaSEiRjE0fD1oTX0k
cjlNTjgkNyQ/JS8bKEINChskQiVpJTkkSyQ3JEokMSRsJFAkSiRpJEokJCRzJEAkMSRJISIhIiEi
ISIhIhsoQg0KDQobJEIkXiEiJD0kbCRPJCokJCRGJCokJCRGISIkOiQkJFYkcyRIJTMlcyU5JUgl
aSUvJT9DZiRHPWk0fDI9PWhNfSRyJGQkQxsoQg0KGyRCJEYkJCRrJG8kTSEjGyhCDQobJEIlVSUh
JSQlayRPISIhIiEiISIhIjBsMX4kQSRjJHMkSCUvJW0hPCU6JDUkbCRrJF8kPyQkJEAkMSRJISIk
SiRzJCtKIzsoGyhCDQobJEIkTSEjQkBPOiQ1JHMkLCQkJEokJCQmJEEkSyRBJGckQyRIJWolVSUh
JS8lPyVqJXMlMCQ3JEEkYyQkJF4kNyRnISMbKEINCg0KGyRCJF4kOiRPISIkJCQvJEQkKyRLTmMz
MD1oTX0kLEosJCskbCRGJCQkayQxJEkhIiRBJGckQyRIOCtETCQ3JCxOSSQvJEobKEINChskQiQk
JCskaSEiJF4kSCRhJEokJCRIISMbKEINChskQiUrJT8lKyU/JSslPyEjISMhIxsoQg0KDQogICAg
cHVibGljIENvbmZpZyhTdHJpbmcgbmFtZU9mQ29uZmlnRmlsZSkgew0KDQogICAgICAgIEJ1ZmZl
cmVkUmVhZGVyIGJ1ZkluID0gbnVsbDsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIGJ1Zklu
ID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBGaWxlUmVhZGVyKG5hbWVPZkNvbmZpZ0ZpbGUpKTsN
Cg0KICAgICAgICAgICAgU3RyaW5nIGZpbGVMaW5lOw0KDQogICAgICAgICAgICB3aGlsZSAodHJ1
ZSkgew0KICAgICAgICAgICAgICAgIGZpbGVMaW5lID0gYnVmSW4ucmVhZExpbmUoKTsNCiAgICAg
ICAgICAgICAgICBpZiAoZmlsZUxpbmUgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7DQoNCiAgICAgICAgICAgICAgICBpZiAoZmlsZUxpbmUuc3RhcnRzV2l0aCgiWC1NTC1OYW1l
OiIpKQ0KICAgICAgICAgICAgICAgICAgICBuYW1lID0gZmlsZUxpbmUuc3Vic3RyaW5nKCJYLU1M
LU5hbWU6Ii5sZW5ndGgoKSkudHJpbSgpOw0KICAgICAgICAgICAgICAgIGlmIChmaWxlTGluZS5z
dGFydHNXaXRoKCJYLSIpKQ0KICAgICAgICAgICAgICAgICAgICB4TGlzdC5hZGQoZmlsZUxpbmUu
dHJpbSgpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhj
ZXB0aW9uIGUpIHsNCiAgICAgICAgICAgIC8vIFdoYXQgaXMgZXhjZXB0aW9uIGhhbmRsaW5nIGNh
cnJpZWQgb3V0Pw0KICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQogICAgICAgICAg
ICAvLyBXaGF0IGlzIGV4Y2VwdGlvbiBoYW5kbGluZyBjYXJyaWVkIG91dD8NCiAgICAgICAgfSBm
aW5hbGx5IHsNCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgaWYgKGJ1ZkluICE9
IG51bGwpDQogICAgICAgICAgICAgICAgICAgIGJ1ZkluLmNsb3NlKCk7DQogICAgICAgICAgICB9
IGNhdGNoIChFeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0K
DQobJEIkMyRzJEokSCQzJG0kKyRKISNFaiQyJGkkbCQ/TmMzMCRPJEkkJiQ5JGskTiQrJE9BakNM
JDckSiQkJEghIyEjISMbKEINChskQiQ9JGwkSCVVJSMhPCVrJUkkSyUiJS8lOyU5O1hEajtSJCw1
LT1SJDUkbCRGJCQkSiQrJEMkPyRvISMbKEINCg0KICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7DQog
ICAgcHJpdmF0ZSBMaXN0IHhMaXN0ID0gbmV3IEFycmF5TGlzdCgpOw0KDQobJEJCPiRLJGIhIiUz
JXMlVSUjJTAlVSUhJSQlayRLIVYbKEJYLU1MLU5hbWUbJEIhVyQsJEokKyRDJD8kMyRIJCwhIiFW
GyhCZ2V0TmFtZRskQiFXGyhCDQobJEIlYSU9JUMlSSRyOEYkUz1QJDkkXiRHSiwkKyRpJEokJCRO
JE8hIjokJGskbyRNISMbKEINChskQiRIJGokIiQoJDokTyEiQkBPOiQ1JHMkLDUiJEMkRiQvJGsk
TiRyQlQkQyRGJF8kXiQ3JGckJiEjGyhCDQoNCiMgGyRCJEgkJCQkJEQkRCEiRjFOPSQ1JD0kQyRG
NVk3RiRLOVQkQyRGJDckXiQkJF4kNyQ/ISMbKEINCg0KLS0tDQpUZXRzdXlhIEt1cmloYXJhDQpr
dXJpLXRAaG9yYWUuZHRpLm5lLmpwDQoNCg==