From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: fix build errors on el7 Date: Fri, 07 Aug 2026 16:06:27 GMT Message-ID: <178611878711.1.17482630015854132113.rpms-chromium-8a533d07a94b@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 8a533d07a94bb879260cb20b8a86efa3ed31ba8b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY2hyb21pdW0KQnJh bmNoIDogZXBlbDktbmV4dApDb21taXQgOiA4YTUzM2QwN2E5NGJiODc5MjYwY2IyMGI4YTg2ZWZh M2VkMzFiYThiCkF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CkRhdGUgICA6IDIw MjQtMDUtMTlUMDc6MzE6MTErMDI6MDAKU3RhdHMgIDogKzQyOTgvLTE2ODEgaW4gMjIgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2Nocm9taXVtL2Mv OGE1MzNkMDdhOTRiYjg3OTI2MGNiMjBiOGE4NmVmYTNlZDMxYmE4Yj9icmFuY2g9ZXBlbDktbmV4 dAoKTG9nOgpmaXggYnVpbGQgZXJyb3JzIG9uIGVsNwoKLS0tCmRpZmYgLS1naXQgYS9jaHJvbWl1 bS0xMTUtY29tcGlsZXItU2tDb2xvcjRmLnBhdGNoIGIvY2hyb21pdW0tMTE1LWNvbXBpbGVyLVNr Q29sb3I0Zi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxN2NiMC4uMDAw MDAwMAotLS0gYS9jaHJvbWl1bS0xMTUtY29tcGlsZXItU2tDb2xvcjRmLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjYgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTE1LjAuNTc5MC40MC90 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL2NhbnZhcy9jYW52YXMyZC9jYW52YXNf c3R5bGUuY2MubWUgY2hyb21pdW0tMTE1LjAuNTc5MC40MC90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9tb2R1bGVzL2NhbnZhcy9jYW52YXMyZC9jYW52YXNfc3R5bGUuY2MKLS0tLSBjaHJvbWl1 bS0xMTUuMC41NzkwLjQwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvY2FudmFz L2NhbnZhczJkL2NhbnZhc19zdHlsZS5jYy5tZQkyMDIzLTA2LTI0IDEwOjM4OjExLjAxMTUxMTQ2 MyArMDIwMAotKysrIGNocm9taXVtLTExNS4wLjU3OTAuNDAvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvbW9kdWxlcy9jYW52YXMvY2FudmFzMmQvY2FudmFzX3N0eWxlLmNjCTIwMjMtMDYtMjQg MTM6MDc6MzUuODY1Mzc1ODg0ICswMjAwCi1AQCAtODQsNiArODQsNyBAQCBDYW52YXNTdHlsZTo6 Q2FudmFzU3R5bGUoY29uc3QgQ2FudmFzU3R5Ci0gCi0gdm9pZCBDYW52YXNTdHlsZTo6QXBwbHlU b0ZsYWdzKGNjOjpQYWludEZsYWdzJiBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmxvYXQgZ2xvYmFsX2FscGhhKSBjb25zdCB7Ci0rICBTa0NvbG9yNGYgY3VzdG9tX2Nv bG9yID0gU2tDb2xvcjRmezAuMGYsIDAuMGYsIDAuMGYsIGdsb2JhbF9hbHBoYX07Ci0gICBzd2l0 Y2ggKHR5cGVfKSB7Ci0gICAgIGNhc2Uga0NvbG9yOgotICAgICAgIEFwcGx5Q29sb3JUb0ZsYWdz KGZsYWdzLCBnbG9iYWxfYWxwaGEpOwotQEAgLTkxLDEyICs5MiwxMiBAQCB2b2lkIENhbnZhc1N0 eWxlOjpBcHBseVRvRmxhZ3MoY2M6OlBhaW50Ci0gICAgIGNhc2Uga0dyYWRpZW50OgotICAgICAg IEdldENhbnZhc0dyYWRpZW50KCktPkdldEdyYWRpZW50KCktPkFwcGx5VG9GbGFncyhmbGFncywg U2tNYXRyaXg6OkkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW1hZ2VEcmF3T3B0aW9ucygpKTsKLS0gICAgICBmbGFncy5zZXRDb2xv cihTa0NvbG9yNGYoMC4wZiwgMC4wZiwgMC4wZiwgZ2xvYmFsX2FscGhhKSk7Ci0rICAgICAgZmxh Z3Muc2V0Q29sb3IoY3VzdG9tX2NvbG9yKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBrSW1h Z2VQYXR0ZXJuOgotICAgICAgIEdldENhbnZhc1BhdHRlcm4oKS0+R2V0UGF0dGVybigpLT5BcHBs eVRvRmxhZ3MoCi0gICAgICAgICAgIGZsYWdzLCBBZmZpbmVUcmFuc2Zvcm1Ub1NrTWF0cml4KEdl dENhbnZhc1BhdHRlcm4oKS0+R2V0VHJhbnNmb3JtKCkpKTsKLS0gICAgICBmbGFncy5zZXRDb2xv cihTa0NvbG9yNGYoMC4wZiwgMC4wZiwgMC4wZiwgZ2xvYmFsX2FscGhhKSk7Ci0rICAgICAgZmxh Z3Muc2V0Q29sb3IoY3VzdG9tX2NvbG9yKTsKLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoK LSAgICAgICBOT1RSRUFDSEVEKCk7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTE1LWVsNy1jb21w aWxlci1Ta0NvbG9yNGYucGF0Y2ggYi9jaHJvbWl1bS0xMTUtZWw3LWNvbXBpbGVyLVNrQ29sb3I0 Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE3Y2IwCi0tLSAv ZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTE1LWVsNy1jb21waWxlci1Ta0NvbG9yNGYucGF0Y2gK QEAgLTAsMCArMSwyNiBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTE1LjAuNTc5MC40MC90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL2NhbnZhcy9jYW52YXMyZC9jYW52YXNfc3R5bGUu Y2MubWUgY2hyb21pdW0tMTE1LjAuNTc5MC40MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9t b2R1bGVzL2NhbnZhcy9jYW52YXMyZC9jYW52YXNfc3R5bGUuY2MKKy0tLSBjaHJvbWl1bS0xMTUu MC41NzkwLjQwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvY2FudmFzL2NhbnZh czJkL2NhbnZhc19zdHlsZS5jYy5tZQkyMDIzLTA2LTI0IDEwOjM4OjExLjAxMTUxMTQ2MyArMDIw MAorKysrIGNocm9taXVtLTExNS4wLjU3OTAuNDAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv bW9kdWxlcy9jYW52YXMvY2FudmFzMmQvY2FudmFzX3N0eWxlLmNjCTIwMjMtMDYtMjQgMTM6MDc6 MzUuODY1Mzc1ODg0ICswMjAwCitAQCAtODQsNiArODQsNyBAQCBDYW52YXNTdHlsZTo6Q2FudmFz U3R5bGUoY29uc3QgQ2FudmFzU3R5CisgCisgdm9pZCBDYW52YXNTdHlsZTo6QXBwbHlUb0ZsYWdz KGNjOjpQYWludEZsYWdzJiBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmxvYXQgZ2xvYmFsX2FscGhhKSBjb25zdCB7CisrICBTa0NvbG9yNGYgY3VzdG9tX2NvbG9yID0g U2tDb2xvcjRmezAuMGYsIDAuMGYsIDAuMGYsIGdsb2JhbF9hbHBoYX07CisgICBzd2l0Y2ggKHR5 cGVfKSB7CisgICAgIGNhc2Uga0NvbG9yOgorICAgICAgIEFwcGx5Q29sb3JUb0ZsYWdzKGZsYWdz LCBnbG9iYWxfYWxwaGEpOworQEAgLTkxLDEyICs5MiwxMiBAQCB2b2lkIENhbnZhc1N0eWxlOjpB cHBseVRvRmxhZ3MoY2M6OlBhaW50CisgICAgIGNhc2Uga0dyYWRpZW50OgorICAgICAgIEdldENh bnZhc0dyYWRpZW50KCktPkdldEdyYWRpZW50KCktPkFwcGx5VG9GbGFncyhmbGFncywgU2tNYXRy aXg6OkkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW1hZ2VEcmF3T3B0aW9ucygpKTsKKy0gICAgICBmbGFncy5zZXRDb2xvcihTa0Nv bG9yNGYoMC4wZiwgMC4wZiwgMC4wZiwgZ2xvYmFsX2FscGhhKSk7CisrICAgICAgZmxhZ3Muc2V0 Q29sb3IoY3VzdG9tX2NvbG9yKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBrSW1hZ2VQYXR0 ZXJuOgorICAgICAgIEdldENhbnZhc1BhdHRlcm4oKS0+R2V0UGF0dGVybigpLT5BcHBseVRvRmxh Z3MoCisgICAgICAgICAgIGZsYWdzLCBBZmZpbmVUcmFuc2Zvcm1Ub1NrTWF0cml4KEdldENhbnZh c1BhdHRlcm4oKS0+R2V0VHJhbnNmb3JtKCkpKTsKKy0gICAgICBmbGFncy5zZXRDb2xvcihTa0Nv bG9yNGYoMC4wZiwgMC4wZiwgMC4wZiwgZ2xvYmFsX2FscGhhKSk7CisrICAgICAgZmxhZ3Muc2V0 Q29sb3IoY3VzdG9tX2NvbG9yKTsKKyAgICAgICBicmVhazsKKyAgICAgZGVmYXVsdDoKKyAgICAg ICBOT1RSRUFDSEVEKCk7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTE3LWVsNy1zdHJpbmctY29u dmVydC5wYXRjaCBiL2Nocm9taXVtLTExNy1lbDctc3RyaW5nLWNvbnZlcnQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I0OGU0YgotLS0gL2Rldi9udWxsCisrKyBi L2Nocm9taXVtLTExNy1lbDctc3RyaW5nLWNvbnZlcnQucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAor ZGlmZiAtdXAgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2Fj aGUuY2MubWUgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2Fj aGUuY2MKK2RpZmYgLXVwIGNocm9taXVtLTExNy4wLjU5MzguNjIvbmV0L2Rucy9ob3N0X3Jlc29s dmVyX2NhY2hlLmgubWUgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9uZXQvZG5zL2hvc3RfcmVzb2x2 ZXJfY2FjaGUuaAorLS0tIGNocm9taXVtLTExNy4wLjU5MzguNjIvbmV0L2Rucy9ob3N0X3Jlc29s dmVyX2NhY2hlLmgubWUJMjAyMy0wOS0xNCAxNToyMToyNC42MzI5NjUwMDQgKzAyMDAKKysrKyBj aHJvbWl1bS0xMTcuMC41OTM4LjYyL25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5oCTIwMjMt MDktMTUgMDk6MTU6NDguNTExMzAwODQ1ICswMjAwCitAQCAtMTQzLDEyICsxNDMsMTQgQEAgY2xh c3MgTkVUX0VYUE9SVCBIb3N0UmVzb2x2ZXJDYWNoZSBmaW5hbAorICAgICB9CisgCisgICAgIGJv b2wgb3BlcmF0b3IoKShjb25zdCBLZXkmIGxocywgY29uc3QgS2V5UmVmJiByaHMpIGNvbnN0IHsK KysgICAgICBjb25zdCBzdGQ6OnN0cmluZyByaHNfZG9tYWluX25hbWV7cmhzLmRvbWFpbl9uYW1l fTsKKyAgICAgICByZXR1cm4gc3RkOjp0aWUobGhzLmRvbWFpbl9uYW1lLCBsaHMubmV0d29ya19h bm9ueW1pemF0aW9uX2tleSkgPAorLSAgICAgICAgICAgICBzdGQ6OnRpZShyaHMuZG9tYWluX25h bWUsICpyaHMubmV0d29ya19hbm9ueW1pemF0aW9uX2tleSk7CisrICAgICAgICAgICAgIHN0ZDo6 dGllKHJoc19kb21haW5fbmFtZSwgKnJocy5uZXR3b3JrX2Fub255bWl6YXRpb25fa2V5KTsKKyAg ICAgfQorIAorICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgS2V5UmVmJiBsaHMsIGNvbnN0IEtl eSYgcmhzKSBjb25zdCB7CistICAgICAgcmV0dXJuIHN0ZDo6dGllKGxocy5kb21haW5fbmFtZSwg Kmxocy5uZXR3b3JrX2Fub255bWl6YXRpb25fa2V5KSA8CisrICAgICAgY29uc3Qgc3RkOjpzdHJp bmcgbGhzX2RvbWFpbl9uYW1le2xocy5kb21haW5fbmFtZX07CisrICAgICAgcmV0dXJuIHN0ZDo6 dGllKGxoc19kb21haW5fbmFtZSwgKmxocy5uZXR3b3JrX2Fub255bWl6YXRpb25fa2V5KSA8Cisg ICAgICAgICAgICAgIHN0ZDo6dGllKHJocy5kb21haW5fbmFtZSwgcmhzLm5ldHdvcmtfYW5vbnlt aXphdGlvbl9rZXkpOworICAgICB9CisgICB9OwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTExNy1z dHJpbmctY29udmVydC5wYXRjaCBiL2Nocm9taXVtLTExNy1zdHJpbmctY29udmVydC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I0OGU0Yi4uMDAwMDAwMAotLS0gYS9jaHJv bWl1bS0xMTctc3RyaW5nLWNvbnZlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCww IEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMTcuMC41OTM4LjYyL25ldC9kbnMvaG9zdF9yZXNvbHZl cl9jYWNoZS5jYy5tZSBjaHJvbWl1bS0xMTcuMC41OTM4LjYyL25ldC9kbnMvaG9zdF9yZXNvbHZl cl9jYWNoZS5jYwotZGlmZiAtdXAgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9uZXQvZG5zL2hvc3Rf cmVzb2x2ZXJfY2FjaGUuaC5tZSBjaHJvbWl1bS0xMTcuMC41OTM4LjYyL25ldC9kbnMvaG9zdF9y ZXNvbHZlcl9jYWNoZS5oCi0tLS0gY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9uZXQvZG5zL2hvc3Rf cmVzb2x2ZXJfY2FjaGUuaC5tZQkyMDIzLTA5LTE0IDE1OjIxOjI0LjYzMjk2NTAwNCArMDIwMAot KysrIGNocm9taXVtLTExNy4wLjU5MzguNjIvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmgJ MjAyMy0wOS0xNSAwOToxNTo0OC41MTEzMDA4NDUgKzAyMDAKLUBAIC0xNDMsMTIgKzE0MywxNCBA QCBjbGFzcyBORVRfRVhQT1JUIEhvc3RSZXNvbHZlckNhY2hlIGZpbmFsCi0gICAgIH0KLSAKLSAg ICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEtleSYgbGhzLCBjb25zdCBLZXlSZWYmIHJocykgY29u c3QgewotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHJoc19kb21haW5fbmFtZXtyaHMuZG9tYWlu X25hbWV9OwotICAgICAgIHJldHVybiBzdGQ6OnRpZShsaHMuZG9tYWluX25hbWUsIGxocy5uZXR3 b3JrX2Fub255bWl6YXRpb25fa2V5KSA8Ci0tICAgICAgICAgICAgIHN0ZDo6dGllKHJocy5kb21h aW5fbmFtZSwgKnJocy5uZXR3b3JrX2Fub255bWl6YXRpb25fa2V5KTsKLSsgICAgICAgICAgICAg c3RkOjp0aWUocmhzX2RvbWFpbl9uYW1lLCAqcmhzLm5ldHdvcmtfYW5vbnltaXphdGlvbl9rZXkp OwotICAgICB9Ci0gCi0gICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBLZXlSZWYmIGxocywgY29u c3QgS2V5JiByaHMpIGNvbnN0IHsKLS0gICAgICByZXR1cm4gc3RkOjp0aWUobGhzLmRvbWFpbl9u YW1lLCAqbGhzLm5ldHdvcmtfYW5vbnltaXphdGlvbl9rZXkpIDwKLSsgICAgICBjb25zdCBzdGQ6 OnN0cmluZyBsaHNfZG9tYWluX25hbWV7bGhzLmRvbWFpbl9uYW1lfTsKLSsgICAgICByZXR1cm4g c3RkOjp0aWUobGhzX2RvbWFpbl9uYW1lLCAqbGhzLm5ldHdvcmtfYW5vbnltaXphdGlvbl9rZXkp IDwKLSAgICAgICAgICAgICAgc3RkOjp0aWUocmhzLmRvbWFpbl9uYW1lLCByaHMubmV0d29ya19h bm9ueW1pemF0aW9uX2tleSk7Ci0gICAgIH0KLSAgIH07CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0t MTE5LWFzc2VydC5wYXRjaCBiL2Nocm9taXVtLTExOS1hc3NlcnQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDZjNTAyZjEuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTE5LWFz c2VydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWRpZmYgLXVwIGNocm9t aXVtLTExOS4wLjYwNDUuNTkvdjgvc3JjL2Jhc2Uvc21hbGwtdmVjdG9yLmgudGhhbiBjaHJvbWl1 bS0xMTkuMC42MDQ1LjU5L3Y4L3NyYy9iYXNlL3NtYWxsLXZlY3Rvci5oCi0tLS0gY2hyb21pdW0t MTE5LjAuNjA0NS41OS92OC9zcmMvYmFzZS9zbWFsbC12ZWN0b3IuaC50aGFuCTIwMjMtMTEtMDEg MTY6MTM6MTIuNjQ1MzAxMzQ1ICswMTAwCi0rKysgY2hyb21pdW0tMTE5LjAuNjA0NS41OS92OC9z cmMvYmFzZS9zbWFsbC12ZWN0b3IuaAkyMDIzLTExLTAxIDE2OjEzOjI5LjY2MDYxMDE4MiArMDEw MAotQEAgLTIyLDcgKzIyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBrU2l6ZSwg dHlwZQotIGNsYXNzIFNtYWxsVmVjdG9yIHsKLSAgIC8vIEN1cnJlbnRseSBvbmx5IHN1cHBvcnQg dHJpdmlhbGx5IGNvcHlhYmxlIGFuZCB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIGRhdGEKLSAgIC8v IHR5cGVzLCBhcyBpdCB1c2VzIG1lbWNweSB0byBjb3B5IGVsZW1lbnRzIGFuZCBuZXZlciBjYWxs cyBkZXN0cnVjdG9ycy4KLS0gIEFTU0VSVF9UUklWSUFMTFlfQ09QWUFCTEUoVCk7Ci0rICAvL0FT U0VSVF9UUklWSUFMTFlfQ09QWUFCTEUoVCk7Ci0gICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpOwotIAotICBwdWJsaWM6CgpkaWZmIC0tZ2l0 IGEvY2hyb21pdW0tMTIwLWVsNy1vbGQtbGliZHJtLnBhdGNoIGIvY2hyb21pdW0tMTIwLWVsNy1v bGQtbGliZHJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjZiOGRkLi4w MDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMC1lbDctb2xkLWxpYmRybS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE4ICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvdWkv Z2Z4L2xpbnV4L2RybV91dGlsX2xpbnV4LmNjLmVsNy1vbGQtbGliZHJtIGNocm9taXVtLTEyMC4w LjYwOTkuNTYvdWkvZ2Z4L2xpbnV4L2RybV91dGlsX2xpbnV4LmNjCi0tLS0gY2hyb21pdW0tMTIw LjAuNjA5OS41Ni91aS9nZngvbGludXgvZHJtX3V0aWxfbGludXguY2MuZWw3LW9sZC1saWJkcm0J MjAyMy0xMS0yOSAyMjo0MDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjAuMC42 MDk5LjU2L3VpL2dmeC9saW51eC9kcm1fdXRpbF9saW51eC5jYwkyMDIzLTEyLTAzIDEwOjMzOjM1 LjQ2ODQ5MjI5OCArMDEwMAotQEAgLTYsNiArNiwxNCBAQAotIAotICNpbmNsdWRlIDxkcm1fZm91 cmNjLmg+Ci0gCi0rLy8gdGhlIGxpYmRybSBpbiBFTC03IGlzIHRvbyBvbGQgdG8gaGF2ZSB0aGlz IGRlZmluZQotKyNpZm5kZWYgRFJNX0ZPUk1BVF9QMDEwCi0rI2RlZmluZSBEUk1fRk9STUFUX1Aw MTAgZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywgJzAnKQotKyNlbmRpZgotKyNpZm5kZWYgRFJN X0ZPUk1BVF9BQkdSMTYxNjE2MTZGCi0rI2RlZmluZSBEUk1fRk9STUFUX0FCR1IxNjE2MTYxNkYg Zm91cmNjX2NvZGUoJ0EnLCAnQicsICc0JywgJ0gnKQotKyNlbmRpZgotKwotICNpbmNsdWRlICJi YXNlL25vdHJlYWNoZWQuaCIKLSAKLSBuYW1lc3BhY2UgdWkgewoKZGlmZiAtLWdpdCBhL2Nocm9t aXVtLTEyNC1lbDctY29uc3RleHByLnBhdGNoIGIvY2hyb21pdW0tMTI0LWVsNy1jb25zdGV4cHIu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNWQzNDMuLjAwMDAwMDAKLS0t IGEvY2hyb21pdW0tMTI0LWVsNy1jb25zdGV4cHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3 NCArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvYnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgubWUgY2hy b21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0 YV9tb2RlbC9hdXRvZmlsbF9pMThuX2FwaS5oCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgv Y29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRvZmlsbF9pMThu X2FwaS5oLm1lCTIwMjQtMDUtMDcgMDc6NTg6MTAuMjAyOTYwMjk4ICswMjAwCi0rKysgY2hyb21p dW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9t b2RlbC9hdXRvZmlsbF9pMThuX2FwaS5oCTIwMjQtMDUtMDcgMDc6NTk6MjkuNDEzNDExNzY3ICsw MjAwCi1AQCAtMTYsOCArMTYsOCBAQCBuYW1lc3BhY2UgYXV0b2ZpbGw6OmkxOG5fbW9kZWxfZGVm aW5pdGlvCi0gLy8gQ291bnRyeSBjb2RlIHRoYXQgcmVwcmVzZW50cyBhdXRvZmlsbCdzIGxlZ2Fj eSBhZGRyZXNzIGhpZXJhcmNoeSBtb2RlbCBhcwotIC8vIHN0b3JlZCBga0F1dG9maWxsTW9kZWxS dWxlc2AuIEFzIGEgd29ya2Fyb3VuZCBmb3IgR0NDIHdlIGRlY2xhcmUgdGhlCi0gLy8gc3RkOjpz dHJpbmcgY29uc3RleHByIGZpcnN0LgotLWNvbnN0ZXhwciBpbmxpbmUgc3RkOjpzdHJpbmcga0xl Z2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlU3RyaW5neyJYWCJ9OwotLWNvbnN0ZXhwciBBZGRyZXNz Q291bnRyeUNvZGUga0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlID0KLStjb25zdCBpbmxpbmUg c3RkOjpzdHJpbmcga0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlU3RyaW5neyJYWCJ9OwotK2Nv bnN0IEFkZHJlc3NDb3VudHJ5Q29kZSBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGUgPQotICAg ICBBZGRyZXNzQ291bnRyeUNvZGUoa0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlU3RyaW5nKTsK LSAKLSAvLyBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGRyZXNzIGhpZXJhcmNoeSBtb2Rl bCBjb3JyZXNwb25kaW5nIHRvIHRoZQotZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgv Y29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaC5tZSBj aHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9t ZXRyaWNzL2xvZ19ldmVudC5oCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50 cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaC5tZQkyMDI0LTA1LTA3 IDA3OjU5OjM4LjIzOTU3MzQ5NyArMDIwMAotKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nv bXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmgJMjAyNC0w NS0wNyAwODowMDo1NS41Nzg5OTA2NTkgKzAyMDAKLUBAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBJ c1JlcXVpcmVkIHsKLSAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgbm90IGRlZmluZWQgYW5kIGNvbnN0 ZXZhbC4gVGhlcmVmb3JlLCBhbnkgZXZhbHVhdGlvbiB3aWxsCi0gICAvLyBmYWlsIGFuZCBmYWls IGF0IGNvbXBpbGUgdGltZS4KLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLSAgY29uc3RldmFs IG9wZXJhdG9yIFQoKTsgIC8vIE5PTElOVAotKyAgb3BlcmF0b3IgVCgpOyAgLy8gTk9MSU5UCi0g fTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBlcy5o Lm1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dz ZXIvaGlzdG9yeV90eXBlcy5oCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50 cy9oaXN0b3J5L2NvcmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVzLmgubWUJMjAyNC0wNS0wNiAxODow MToyOC42MDY4NDU1NTQgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25l bnRzL2hpc3RvcnkvY29yZS9icm93c2VyL2hpc3RvcnlfdHlwZXMuaAkyMDI0LTA1LTA2IDE4OjA2 OjE1LjQ5Mjc1MTI1MiArMDIwMAotQEAgLTcwLDcgKzcwLDcgQEAgY29uc3RleHByIFZpc2l0ZWRM aW5rSUQga0ludmFsaWRWaXNpdGVkTAotIHR5cGVkZWYgc3RkOjptYXA8VmlzaXRJRCwgVmlzaXRT b3VyY2U+IFZpc2l0U291cmNlTWFwOwotIAotIC8vIENvbnN0YW50IHVzZWQgdG8gcmVwcmVzZW50 IHRoYXQgbm8gYXBwX2lkIGlzIHVzZWQgZm9yIG1hdGNoaW5nLgotLWlubGluZSBjb25zdGV4cHIg c3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4ga05vQXBwSWRGaWx0ZXIgPSBzdGQ6Om51bGxvcHQ7 Ci0raW5saW5lIGNvbnN0IHN0ZDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGtOb0FwcElkRmlsdGVy ID0gc3RkOjpudWxsb3B0OwotIAotIC8vIFZpc2l0Um93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLWRpZmYgLXVw IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rpb25h cnkvc2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4x MTgvc2VydmljZXMvbmV0d29yay9zaGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5f bWF0Y2hlci5jYwotLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3NlcnZpY2VzL25ldHdvcmsv c2hhcmVkX2RpY3Rpb25hcnkvc2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MubWUJMjAyNC0w NS0wNyAwMDowNzoxNS43MjA1NzM3OTQgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjEx OC9zZXJ2aWNlcy9uZXR3b3JrL3NoYXJlZF9kaWN0aW9uYXJ5L3NpbXBsZV91cmxfcGF0dGVybl9t YXRjaGVyLmNjCTIwMjQtMDUtMDcgMDA6MDg6MDcuNjMzNTE5NjA0ICswMjAwCi1AQCAtMjgsMTcg KzI4LDE3IEBAIG5hbWVzcGFjZSBuZXR3b3JrIHsKLSBuYW1lc3BhY2UgewotIAotIC8vIGh0dHBz Oi8vdXJscGF0dGVybi5zcGVjLndoYXR3Zy5vcmcvI2RlZmF1bHQtb3B0aW9ucwotLWNvbnN0ZXhw ciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtEZWZhdWx0T3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xp c3QgPSAiIiwKLStjb25zdCBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtEZWZhdWx0T3B0aW9ucyA9 IHsuZGVsaW1pdGVyX2xpc3QgPSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnByZWZpeF9saXN0ID0gIiIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZW5zaXRpdmUgPSB0cnVlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Ry aWN0ID0gdHJ1ZX07Ci0gLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jaG9z dG5hbWUtb3B0aW9ucwotLWNvbnN0ZXhwciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtIb3N0bmFt ZU9wdGlvbnMgPSB7LmRlbGltaXRlcl9saXN0ID0gIi4iLAotK2NvbnN0IGxpYnVybHBhdHRlcm46 Ok9wdGlvbnMga0hvc3RuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLiIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZml4 X2xpc3QgPSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC5zZW5zaXRpdmUgPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0cmljdCA9IHRydWV9OwotIC8vIGh0dHBzOi8v dXJscGF0dGVybi5zcGVjLndoYXR3Zy5vcmcvI3BhdGhuYW1lLW9wdGlvbnMKLS1jb25zdGV4cHIg bGlidXJscGF0dGVybjo6T3B0aW9ucyBrUGF0aG5hbWVPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlz dCA9ICIvIiwKLStjb25zdCBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtQYXRobmFtZU9wdGlvbnMg PSB7LmRlbGltaXRlcl9saXN0ID0gIi8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnByZWZpeF9saXN0ID0gIi8iLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRy dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuc3RyaWN0ID0gdHJ1ZX07Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21w b25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4 X3BhdHRlcm5zLnB5Lm1lMSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9m aWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRlcm5zLnB5 Ci0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jy b3dzZXIvZm9ybV9wYXJzaW5nL3RyYW5zcGlsZV9yZWdleF9wYXR0ZXJucy5weS5tZTEJMjAyNC0w NS0wNyAxMDo1ODoxMy4zMTY3NTY5MjYgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjEx OC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxl X3JlZ2V4X3BhdHRlcm5zLnB5CTIwMjQtMDUtMDcgMTA6NTg6MzAuODIxMDgzMDYxICswMjAwCi1A QCAtNTQsNyArNTQsNyBAQCBkZWYgZ2VuZXJhdGVfbWF0Y2hpbmdfcGF0dGVybl9lcXVhbHMobmFt Ci0gICB5aWVsZCAnLy8gQ2hlY2tzIGlmIGFsbCB0aGUgbWF0Y2hpbmcgcGF0dGVybnMgZm9yIHRo ZSBnaXZlbiBQYXR0ZXJuU291cmNlcycKLSAgIHlpZWxkICcvLyBhbmQgbGFuZ3VhZ2UgYXJlIHRo ZSBzYW1lIC0gbWVhbmluZyB0aGF0IGNvbXB1dGluZyBwcmVkaWN0aW9ucyBmb3InCi0gICB5aWVs ZCAnLy8gYm90aCBpcyB1bm5lY2Vzc2FyeSwgc2luY2UgaXQgd2lsbCB5aWVsZCB0aGUgc2FtZSBy ZXN1bHQuJwotLSAgeWllbGQgJ2NvbnN0ZXhwciBib29sIEFyZU1hdGNoaW5nUGF0dGVybnNFcXVh bEltcGwoUGF0dGVyblNvdXJjZSBhLCcKLSsgIHlpZWxkICdjb25zdCBib29sIEFyZU1hdGNoaW5n UGF0dGVybnNFcXVhbEltcGwoUGF0dGVyblNvdXJjZSBhLCcKLSAgIHlpZWxkICcgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdHRlcm5Tb3VyY2UgYiwnCi0gICB5 aWVsZCAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFn ZUNvZGUgbGFuZ19jb2RlKSB7JwotICAgeWllbGQgJyAgaWYgKGEgPT0gYikgeycKCmRpZmYgLS1n aXQgYS9jaHJvbWl1bS0xMjQtZWw3LWRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255 bW91cy11bmlvbi5wYXRjaCBiL2Nocm9taXVtLTEyNC1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1p bnZvbHZpbmctYW5vbnltb3VzLXVuaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAzODAwNGRhLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyNC1lbDctZGVmYXVsdC1jb25z dHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNDggKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRz L3ZhcmlhdGlvbnMvc2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNjLmRlZmF1bHQtY29uc3Ry dWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nv bXBvbmVudHMvdmFyaWF0aW9ucy9zZXJ2aWNlL3VpX3N0cmluZ19vdmVycmlkZXIuY2MKLS0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdmFyaWF0aW9ucy9zZXJ2aWNlL3VpX3N0 cmluZ19vdmVycmlkZXIuY2MuZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3Vz LXVuaW9uCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3ZhcmlhdGlvbnMvc2VydmljZS91aV9zdHJpbmdfb3Zl cnJpZGVyLmNjCTIwMjQtMDItMjUgMTA6NTI6MTYuMDcxNjAyNTAzICswMTAwCi1AQCAtMTIsNyAr MTIsNyBAQAotIAotIG5hbWVzcGFjZSB2YXJpYXRpb25zIHsKLSAKLS1VSVN0cmluZ092ZXJyaWRl cjo6VUlTdHJpbmdPdmVycmlkZXIoKSA9IGRlZmF1bHQ7Ci0rVUlTdHJpbmdPdmVycmlkZXI6OlVJ U3RyaW5nT3ZlcnJpZGVyKCkge30KLSAKLSBVSVN0cmluZ092ZXJyaWRlcjo6VUlTdHJpbmdPdmVy cmlkZXIoYmFzZTo6c3Bhbjxjb25zdCB1aW50MzJfdD4gcmVzb3VyY2VfaGFzaGVzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpzcGFuPGNvbnN0IGludD4gcmVz b3VyY2VfaW5kaWNlcykKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9i cm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5j Yy5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVj dF9mcm9tX3NlbGxlcl9zaWduYWxzLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWdu YWxzLmNjLmRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbgkyMDI0 LTAyLTI1IDEwOjUyOjE2LjA3MDYwMjQ3OCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxs ZXJfc2lnbmFscy5jYwkyMDI0LTAyLTI1IDExOjIwOjM2LjU4MzE0ODIyNiArMDEwMAotQEAgLTQ2 LDcgKzQ2LDcgQEAgc2l6ZV90IEdldFJlc3VsdFNpemVCeXRlcyhjb25zdCBIZWFkZXJEaQotIAot IH0gIC8vIG5hbWVzcGFjZQotIAotLUhlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpSZXN1 bHQ6OlJlc3VsdCgpID0gZGVmYXVsdDsKLStIZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFsczo6 UmVzdWx0OjpSZXN1bHQoKSB7fQotIAotIEhlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpS ZXN1bHQ6OlJlc3VsdCgKLSAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gc2VsbGVyX3Np Z25hbHMsCi1kaWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L3BkZml1 bS9jb3JlL2ZwZGZkb2MvY3BkZl9kZWZhdWx0YXBwZWFyYW5jZS5jcHAubWUgY2hyb21pdW0tMTIz LjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmZG9jL2NwZGZfZGVmYXVsdGFw cGVhcmFuY2UuY3BwCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9wZGZp dW0vY29yZS9mcGRmZG9jL2NwZGZfZGVmYXVsdGFwcGVhcmFuY2UuY3BwLm1lCTIwMjQtMDMtMTgg MTY6MTE6MTkuNTUwMzI5NTkyICswMTAwCi0rKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGly ZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmZG9jL2NwZGZfZGVmYXVsdGFwcGVhcmFuY2UuY3BwCTIw MjQtMDMtMTggMTY6MTI6NTEuMTI0NDcyNjc2ICswMTAwCi1AQCAtNTQsNyArNTQsNyBAQCBib29s IEZpbmRUYWdQYXJhbUZyb21TdGFydChDUERGX1NpbXBsZVBhCi0gCi0gfSAgLy8gbmFtZXNwYWNl Ci0gCi0tQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6Q1BERl9EZWZhdWx0QXBwZWFyYW5jZSgpID0g ZGVmYXVsdDsKLStDUERGX0RlZmF1bHRBcHBlYXJhbmNlOjpDUERGX0RlZmF1bHRBcHBlYXJhbmNl KCkge30KLSAKLSBDUERGX0RlZmF1bHRBcHBlYXJhbmNlOjpDUERGX0RlZmF1bHRBcHBlYXJhbmNl KGNvbnN0IEJ5dGVTdHJpbmcmIGNzREEpCi0gICAgIDogbV9jc0RBKGNzREEpIHt9Ci1kaWZmIC11 cCBjaHJvbWl1bS0xMjQuMC42MzY3LjIwMS9jb21wb25lbnRzL21hbnRhL2Jhc2VfcHJvdmlkZXIu Y2MubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4yMDEvY29tcG9uZW50cy9tYW50YS9iYXNlX3Byb3Zp ZGVyLmNjCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4yMDEvY29tcG9uZW50cy9tYW50YS9iYXNl X3Byb3ZpZGVyLmNjLm1lCTIwMjQtMDUtMTEgMjE6MzI6NDcuMTA4OTY0MDc0ICswMjAwCi0rKysg Y2hyb21pdW0tMTI0LjAuNjM2Ny4yMDEvY29tcG9uZW50cy9tYW50YS9iYXNlX3Byb3ZpZGVyLmNj CTIwMjQtMDUtMTEgMjE6MzQ6NDIuNzU4OTE4MzY3ICswMjAwCi1AQCAtMTMsNyArMTMsNyBAQCBj b25zdGV4cHIgYmFzZTo6VGltZURlbHRhIGtUaW1lb3V0ID0gYmFzCi0gCi0gfSAgLy8gbmFtZXNw YWNlCi0gCi0tQmFzZVByb3ZpZGVyOjpCYXNlUHJvdmlkZXIoKSA9IGRlZmF1bHQ7Ci0rQmFzZVBy b3ZpZGVyOjpCYXNlUHJvdmlkZXIoKSB7fQotIEJhc2VQcm92aWRlcjo6QmFzZVByb3ZpZGVyKAot ICAgICBzY29wZWRfcmVmcHRyPG5ldHdvcms6OlNoYXJlZFVSTExvYWRlckZhY3Rvcnk+IHVybF9s b2FkZXJfZmFjdG9yeSwKLSAgICAgc2lnbmluOjpJZGVudGl0eU1hbmFnZXIqIGlkZW50aXR5X21h bmFnZXIpCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI0LWVsNy13b3JrYXJvdW5kX2NsYW5nX2J1 Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2ggYi9jaHJvbWl1bS0xMjQtZWw3LXdvcmthcm91bmRf Y2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43MjdlNGY1Ci0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI0LWVs Ny13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKQEAgLTAsMCAr MSw3OCBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9w cm9taXNlX2FkYXB0ZXIuY2Mud29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5n IGNocm9taXVtLTExNS4wLjU3OTAuMjQvbWVkaWEvYmFzZS9jZG1fcHJvbWlzZV9hZGFwdGVyLmNj CistLS0gY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0 ZXIuY2Mud29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nCTIwMjMtMDYtMDcg MjE6NDg6MzcuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRp YS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0ZXIuY2MJMjAyMy0wNi0xNyAxNjo1MzoyMC4yMTY2Mjg1 NTcgKzAyMDAKK0BAIC05NCw3ICs5NCw5IEBAIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OlJlamVj dFByb21pc2UodWkKKyB2b2lkIENkbVByb21pc2VBZGFwdGVyOjpDbGVhcihDbGVhclJlYXNvbiBy ZWFzb24pIHsKKyAgIC8vIFJlamVjdCBhbGwgb3V0c3RhbmRpbmcgcHJvbWlzZXMuCisgICBEQ0hF Q0sodGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CistICBmb3IgKGF1dG8m IFtwcm9taXNlX2lkLCBwcm9taXNlXSA6IHByb21pc2VzXykgeworKyAgZm9yIChhdXRvJiBbcF9p LCBwX2VdIDogcHJvbWlzZXNfKSB7CisrICAgIGF1dG8mIHByb21pc2VfaWQgPSBwX2k7CisrICAg IGF1dG8mIHByb21pc2UgPSBwX2U7CisgICAgIFRSQUNFX0VWRU5UX05FU1RBQkxFX0FTWU5DX0VO RDEoCisgICAgICAgICAibWVkaWEiLCAiQ2RtUHJvbWlzZSIsIFRSQUNFX0lEX1dJVEhfU0NPUEUo IkNkbVByb21pc2UiLCBwcm9taXNlX2lkKSwKKyAgICAgICAgICJzdGF0dXMiLCAiY2xlYXJlZCIp OworZGlmZiAtdXAgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2Vydmlj ZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjLm1lIGNocm9taXVtLTEx NS4wLjU3OTAuMzIvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2Vy X2NvbnRleHRfd3JhcHBlci5jYworLS0tIGNocm9taXVtLTExNS4wLjU3OTAuMzIvY29udGVudC9i cm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRleHRfd3JhcHBlci5jYy5t ZQkyMDIzLTA2LTE5IDA4OjA0OjAyLjI4NzA3MjcyMiArMDIwMAorKysrIGNocm9taXVtLTExNS4w LjU3OTAuMzIvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2Nv bnRleHRfd3JhcHBlci5jYwkyMDIzLTA2LTE5IDA4OjE4OjI0LjU3NjgxNDk1MCArMDIwMAorQEAg LTEzOTMsNyArMTM5Myw4IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHRXcmFwcGVyOjpNYXli ZVAKKyAgICAgcmV0dXJuOworICAgfQorIAorLSAgYXV0byBbZG9jdW1lbnRfdXJsLCBrZXksIGNh bGxiYWNrXSA9IHN0ZDo6bW92ZSgqcmVxdWVzdCk7CisrICBhdXRvIFtkX3UsIGtleSwgY2FsbGJh Y2tdID0gc3RkOjptb3ZlKCpyZXF1ZXN0KTsKKysgIGF1dG8gZG9jdW1lbnRfdXJsID0gZF91Owor IAorICAgRENIRUNLKGRvY3VtZW50X3VybC5pc192YWxpZCgpKTsKKyAgIFRSQUNFX0VWRU5UMSgi U2VydmljZVdvcmtlciIsCitkaWZmIC11cCBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGht LmNjLnRoYW4gY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYworLS0tIGNocm9taXVt LTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3Jp ZC9ncmlkX2xheW91dF9hbGdvcml0aG0uY2MudGhhbgkyMDIzLTEyLTE5IDE3OjU3OjU2LjIwNTE5 NzI0NiArMDEwMAorKysrIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdvcml0aG0uY2MJMjAyMy0x Mi0xOSAxODoxMDoxMy43Nzg2MzQ1MzEgKzAxMDAKK0BAIC0zNTI3LDggKzM1MjcsOCBAQCB2b2lk IEdyaWRMYXlvdXRBbGdvcml0aG06OlBsYWNlR3JpZEl0ZW1zCisgICBEQ0hFQ0sob3V0X3Jvd19i cmVha19iZXR3ZWVuKTsKKyAKKyAgIGNvbnN0IGF1dG8mIGNvbnRhaW5lcl9zcGFjZSA9IEdldENv bnN0cmFpbnRTcGFjZSgpOworLSAgY29uc3QgYXV0byYgW2dyaWRfaXRlbXMsIGxheW91dF9kYXRh LCB0cmVlX3NpemVdID0gc2l6aW5nX3RyZWUuVHJlZVJvb3REYXRhKCk7CistCisrICBjb25zdCBh dXRvJiBbZ3JpZF9pdGVtcywgbF9kLCB0cmVlX3NpemVdID0gc2l6aW5nX3RyZWUuVHJlZVJvb3RE YXRhKCk7CisrICBjb25zdCBhdXRvJiBsYXlvdXRfZGF0YSA9IGxfZDsKKyAgIGNvbnN0IGF1dG8q IGNhY2hlZF9sYXlvdXRfc3VidHJlZSA9IGNvbnRhaW5lcl9zcGFjZS5HZXRHcmlkTGF5b3V0U3Vi dHJlZSgpOworICAgY29uc3QgYXV0byBjb250YWluZXJfd3JpdGluZ19kaXJlY3Rpb24gPQorICAg ICAgIGNvbnRhaW5lcl9zcGFjZS5HZXRXcml0aW5nRGlyZWN0aW9uKCk7CitAQCAtMzY5MSw4ICsz NjkxLDkgQEAgdm9pZCBHcmlkTGF5b3V0QWxnb3JpdGhtOjpQbGFjZUdyaWRJdGVtcworIAorICAg Ly8gVE9ETyhpa2lscGF0cmljayk6IFVwZGF0ZSB8U2V0SGFzU2VlbkFsbENoaWxkcmVufCBhbmQg ZWFybHkgZXhpdCBpZiB0cnVlLgorICAgY29uc3QgYXV0byYgY29uc3RyYWludF9zcGFjZSA9IEdl dENvbnN0cmFpbnRTcGFjZSgpOworLSAgY29uc3QgYXV0byYgW2dyaWRfaXRlbXMsIGxheW91dF9k YXRhLCB0cmVlX3NpemVdID0gc2l6aW5nX3RyZWUuVHJlZVJvb3REYXRhKCk7CistCisrICBjb25z dCBhdXRvJiBbZ19pLCBsX2QsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEo KTsKKysgIGNvbnN0IGF1dG8mIGdyaWRfaXRlbXMgPSBnX2k7CisrICBjb25zdCBhdXRvJiBsYXlv dXRfZGF0YSA9IGxfZDsKKyAgIGNvbnN0IGF1dG8qIGNhY2hlZF9sYXlvdXRfc3VidHJlZSA9IGNv bnN0cmFpbnRfc3BhY2UuR2V0R3JpZExheW91dFN1YnRyZWUoKTsKKyAgIGNvbnN0IGF1dG8gY29u dGFpbmVyX3dyaXRpbmdfZGlyZWN0aW9uID0KKyAgICAgICBjb25zdHJhaW50X3NwYWNlLkdldFdy aXRpbmdEaXJlY3Rpb24oKTsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvcHJlZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9o dHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL3ByZWRpY3RvcnMvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1f aHR0cF9kaXNrX2NhY2hlX21hbmFnZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2No cm9tZS9icm93c2VyL3ByZWRpY3RvcnMvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdh cm1faHR0cF9kaXNrX2NhY2hlX21hbmFnZXIuY2MubWUJMjAyNC0wMi0yNSAxODowMzo1MS42NTQ1 Nzk1NzkgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3By ZWRpY3RvcnMvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2Nh Y2hlX21hbmFnZXIuY2MJMjAyNC0wMi0yNSAxODoxMjo0NS4xNDQyODc3NTAgKzAxMDAKK0BAIC0x MzYsNyArMTM2LDggQEAgdm9pZCBQcmV3YXJtSHR0cERpc2tDYWNoZU1hbmFnZXI6Ok1heWJlUAor ICAgc3RkOjpwYWlyPHVybDo6T3JpZ2luLCBHVVJMPiBvcmlnaW5fYW5kX3VybDsKKyAgIHN0ZDo6 c3dhcChvcmlnaW5fYW5kX3VybCwgcXVldWVkX2pvYnNfLmZyb250KCkpOworICAgcXVldWVkX2pv YnNfLnBvcCgpOworLSAgY29uc3QgYXV0byYgW29yaWdpbiwgdXJsXSA9IG9yaWdpbl9hbmRfdXJs OworKyAgY29uc3QgYXV0byYgW29yaWdpbiwgdV0gPSBvcmlnaW5fYW5kX3VybDsKKysgIGNvbnN0 IGF1dG8mIHVybCA9IHU7CisgICBUUkFDRV9FVkVOVF9XSVRIX0ZMT1cxKAorICAgICAgICJsb2Fk aW5nIiwgIlByZXdhcm1IdHRwRGlza0NhY2hlTWFuYWdlcjo6TWF5YmVQcm9jZXNzTmV4dFF1ZXVl ZEpvYiIsCisgICAgICAgVFJBQ0VfSURfTE9DQUwodGhpcyksCistLS0gY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvY29udGVudC9jb21tb24vc2VydmljZV93b3JrZXIvcmFjZV9uZXR3b3JrX3JlcXVl c3RfdXJsX2xvYWRlcl9jbGllbnQuY2Mud29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9i aW5kaW5nCTIwMjQtMDUtMDUgMTY6MjI6NDcuNTgxMDcwODY4ICswMjAwCisrKysgY2hyb21pdW0t MTI0LjAuNjM2Ny4xMTgvY29udGVudC9jb21tb24vc2VydmljZV93b3JrZXIvcmFjZV9uZXR3b3Jr X3JlcXVlc3RfdXJsX2xvYWRlcl9jbGllbnQuY2MJMjAyNC0wNS0wNSAxNjoyNzoxOC44NTk5NzI0 ODEgKzAyMDAKK0BAIC00MTcsNyArNDE3LDggQEAKKyAgIH0KKyAKKyAgIFNDT1BFRF9DUkFTSF9L RVlfU1RSSU5HMjU2KCJTV1JhY2UiLCAicmVxdWVzdF91cmwiLCByZXF1ZXN0Xy51cmwuc3BlYygp KTsKKy0gIGF1dG8gW3JlYWRfcmVzdWx0LCByZWFkX2J1ZmZlcl0gPSByZWFkX2J1ZmZlcl9tYW5h Z2VyXy0+UmVhZERhdGEoKTsKKysgIGF1dG8gW3IsIHJlYWRfYnVmZmVyXSA9IHJlYWRfYnVmZmVy X21hbmFnZXJfLT5SZWFkRGF0YSgpOworKyAgYXV0byByZWFkX3Jlc3VsdCA9IHI7CisgICBUUkFD RV9FVkVOVF9XSVRIX0ZMT1cyKCJTZXJ2aWNlV29ya2VyIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIlNlcnZpY2VXb3JrZXJSYWNlTmV0d29ya1JlcXVlc3RVUkxMb2FkZXJDbGllbnQ6OlJl YWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9JRF9MT0NBTCh0aGlzKSwKCmRp ZmYgLS1naXQgYS9jaHJvbWl1bS0xMjQtbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2ggYi9j aHJvbWl1bS0xMjQtbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDBjNjA4NTguLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTI0LW5vX21h dGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5MiArMCwwIEBA Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50 X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uv bWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MKLS0tLSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3Iu Y2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRv ci5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NDUwMzczNSArMDEwMAotQEAgLTIxOCwxMyArMjE4 LDEzIEBAIFBlcnNpc3RlbnRTcGFyc2VIaXN0b2dyYW1EYXRhTWFuYWdlcjo6TG8KLSAgICAgLy8g VGhlIHNhbXBsZS1yZWNvcmQgY291bGQgYmUgZm9yIGFueSBzcGFyc2UgaGlzdG9ncmFtLiBBZGQg dGhlIHJlZmVyZW5jZQotICAgICAvLyB0byB0aGUgYXBwcm9wcmlhdGUgY29sbGVjdGlvbiBmb3Ig bGF0ZXIgdXNlLgotICAgICBpZiAoZm91bmRfaWQgPT0gbWF0Y2hfaWQpIHsKLS0gICAgICBmb3Vu ZF9yZWNvcmRzLmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsKLSsgICAgICBmb3VuZF9yZWNvcmRz LmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFsdWV9OwotICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAg ICAgfSBlbHNlIHsKLSAgICAgICBzdGQ6OnZlY3RvcjxSZWZlcmVuY2VBbmRTYW1wbGU+KiBzYW1w bGVzID0KLSAgICAgICAgICAgR2V0U2FtcGxlTWFwUmVjb3Jkc1doaWxlTG9ja2VkKGZvdW5kX2lk KTsKLSAgICAgICBDSEVDSyhzYW1wbGVzKTsKLS0gICAgICBzYW1wbGVzLT5lbXBsYWNlX2JhY2so cmVmLCB2YWx1ZSk7Ci0rICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNrKCkgPSB7cmVmLCB2YWx1 ZX07Ci0gICAgIH0KLSAgIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFz ZS9uaXgvbWltZV91dGlsX3hkZy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9u aXgvbWltZV91dGlsX3hkZy5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9uaXgv bWltZV91dGlsX3hkZy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NDMuMDAwMDAwMDAwICswMTAw Ci0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0aWxfeGRnLmNjCTIw MjQtMDItMjQgMTM6MTM6NDQuMTU4NzEyNzU2ICswMTAwCi1AQCAtNTYsNyArNTYsNyBAQCB2b2lk IExvYWRBbGxNaW1lQ2FjaGVGaWxlcyhNaW1lVHlwZU1hcCYKLSAgIGZvciAoY29uc3QgYXV0byYg cGF0aCA6IEdldFhER0RhdGFTZWFyY2hMb2NhdGlvbnMoZW52LmdldCgpKSkgewotICAgICBGaWxl UGF0aCBtaW1lX2NhY2hlID0gcGF0aC5BcHBlbmQoIm1pbWUvbWltZS5jYWNoZSIpOwotICAgICBp ZiAoR2V0RmlsZUluZm8obWltZV9jYWNoZSwgJmluZm8pICYmIFBhcnNlTWltZVR5cGVzKG1pbWVf Y2FjaGUsIG1hcCkpIHsKLS0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2sobWltZV9jYWNoZSwgaW5m by5sYXN0X21vZGlmaWVkKTsKLSsgICAgICBmaWxlcy5lbXBsYWNlX2JhY2soKSA9IHttaW1lX2Nh Y2hlLCBpbmZvLmxhc3RfbW9kaWZpZWR9OwotICAgICB9Ci0gICB9Ci0gfQotZGlmZiAtdXAgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYy50aGFuIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MKLS0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjLnRoYW4J MjAyNC0wMi0yMiAyMjo0Mjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCTIwMjQtMDItMjQgMTM6MTM6MzIu NDg0NTAzNzM1ICswMTAwCi1AQCAtMjE5OCw4ICsyMTk4LDggQEAgdm9pZCBUcmFjZUxvZzo6U2V0 VHJhY2VCdWZmZXJGb3JUZXN0aW5nKAotICNpZiBCVUlMREZMQUcoVVNFX1BFUkZFVFRPX0NMSUVO VF9MSUJSQVJZKQotIHZvaWQgVHJhY2VMb2c6Ok9uU2V0dXAoY29uc3QgcGVyZmV0dG86OkRhdGFT b3VyY2VCYXNlOjpTZXR1cEFyZ3MmIGFyZ3MpIHsKLSAgIEF1dG9Mb2NrIGxvY2sodHJhY2tfZXZl bnRfbG9ja18pOwotLSAgdHJhY2tfZXZlbnRfc2Vzc2lvbnNfLmVtcGxhY2VfYmFjayhhcmdzLmlu dGVybmFsX2luc3RhbmNlX2luZGV4LCAqYXJncy5jb25maWcsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFyZ3MuYmFja2VuZF90eXBlKTsKLSsgIHRyYWNrX2V2ZW50X3Nl c3Npb25zXy5lbXBsYWNlX2JhY2soKSA9IHthcmdzLmludGVybmFsX2luc3RhbmNlX2luZGV4LCAq YXJncy5jb25maWcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Mu YmFja2VuZF90eXBlfTsKLSB9Ci0gCi0gdm9pZCBUcmFjZUxvZzo6T25TdGFydChjb25zdCBwZXJm ZXR0bzo6RGF0YVNvdXJjZUJhc2U6OlN0YXJ0QXJncyYpIHsKLWRpZmYgLXVwIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJt aXNzaW9uX3Byb3ZpZGVyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2MKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0dGluZ3Mv b25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTAu MDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nl ci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2MJMjAyNC0w Mi0yNCAxMzoxMzozMi40ODU1MDM3NTIgKzAxMDAKLUBAIC0yNTIsOCArMjUyLDggQEAgdm9pZCBP bmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpPblN1c3BlbgotIAotICAgICAgIHdoaWxlIChydWxl X2l0ZXJhdG9yICYmIHJ1bGVfaXRlcmF0b3ItPkhhc05leHQoKSkgewotICAgICAgICAgYXV0byBy dWxlID0gcnVsZV9pdGVyYXRvci0+TmV4dCgpOwotLSAgICAgICAgcGF0dGVybnNfdG9fZGVsZXRl LmVtcGxhY2VfYmFjayhzZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRl cm4pOwotKyAgICAgICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygpID0ge3NldHRp bmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybn07Ci0gICAgICAgICBwZXJt aXNzaW9uczo6UGVybWlzc2lvblVtYVV0aWw6OlJlY29yZE9uZVRpbWVQZXJtaXNzaW9uRXZlbnQo Ci0gICAgICAgICAgICAgc2V0dGluZ190eXBlLAotICAgICAgICAgICAgIHBlcm1pc3Npb25zOjpP bmVUaW1lUGVybWlzc2lvbkV2ZW50OjpFWFBJUkVEX09OX1NVU1BFTkQpOwotQEAgLTM1NSw4ICsz NTUsOCBAQCB2b2lkIE9uZVRpbWVQZXJtaXNzaW9uUHJvdmlkZXI6OkRlbGV0ZUVuCi0gICAgIGF1 dG8gcnVsZSA9IHJ1bGVfaXRlcmF0b3ItPk5leHQoKTsKLSAgICAgaWYgKHJ1bGUtPnByaW1hcnlf cGF0dGVybi5NYXRjaGVzKG9yaWdpbl9ndXJsKSAmJgotICAgICAgICAgcnVsZS0+c2Vjb25kYXJ5 X3BhdHRlcm4uTWF0Y2hlcyhvcmlnaW5fZ3VybCkpIHsKLS0gICAgICBwYXR0ZXJuc190b19kZWxl dGUuZW1wbGFjZV9iYWNrKAotLSAgICAgICAgICBjb250ZW50X3NldHRpbmdfdHlwZSwgcnVsZS0+ cHJpbWFyeV9wYXR0ZXJuLCBydWxlLT5zZWNvbmRhcnlfcGF0dGVybik7Ci0rICAgICAgcGF0dGVy bnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygpID0gewotKyAgICAgICAgICBjb250ZW50X3NldHRp bmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLCBydWxlLT5zZWNvbmRhcnlfcGF0dGVybn07 Ci0gICAgICAgcGVybWlzc2lvbnM6OlBlcm1pc3Npb25VbWFVdGlsOjpSZWNvcmRPbmVUaW1lUGVy bWlzc2lvbkV2ZW50KAotICAgICAgICAgICBjb250ZW50X3NldHRpbmdfdHlwZSwgdHJpZ2dlcl9l dmVudCk7Ci0gICAgIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25h dmlnYXRpb25fdGhyb3R0bGUuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9u YXZpZ2F0aW9uX3Rocm90dGxlLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRf bmF2aWdhdGlvbl90aHJvdHRsZS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTAuMDAwMDAwMDAw ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9lbnRlcnBy aXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJv dHRsZS5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NTUwMzc1MiArMDEwMAotQEAgLTY3LDggKzY3 LDggQEAgYmFzZTo6ZmxhdF9tYXA8c3RkOjpzdHJpbmcsIFNBTUxQcm9maWxlQQotICAgLy8gVE9E TyhjcmJ1Zy5jb20vMTQ0NTA3Mik6IEFkZCBhY3R1YWwgZG9tYWlucyB3aXRoIGF0dHJpYnV0ZSBu YW1lcy4KLSAgIHByb2ZpbGVfYXR0cmlidXRlcy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAotICAg ICAgICJzdXBwb3J0ZWQudGVzdCIsCi0tICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1dGVzKCJwbGFj ZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiIpKSk7Ci0rICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1 dGVzeyJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiJ9KSk7Ci0gCi0gICAvLyBFeHRyYWN0 IGRvbWFpbnMgYW5kIGF0dHJpYnV0ZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHN3aXRjaC4KLSAg IGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjb21tYW5kX2xpbmUgPQotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJl ZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlz c2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X2Fza192aWV3LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Np b25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fza192aWV3LmNjCTIwMjQtMDItMjQgMTM6 MTM6MzIuNDg2NTAzNzcwICswMTAwCi1AQCAtNjAsMTIgKzYwLDEyIEBAIHN0ZDo6dmVjdG9yPEVt YmVkZGVkUGVybWlzc2lvblByb21wdEFza1YKLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRBc2tW aWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1 dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7Ci0gICBpZiAoYmFzZTo6RmVhdHVyZUxpc3Q6Oklz RW5hYmxlZChwZXJtaXNzaW9uczo6ZmVhdHVyZXM6OmtPbmVUaW1lUGVybWlzc2lvbikpIHsKLS0g ICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7 Ci0gICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9X X1RISVNfVElNRSksCi0tICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1 dHRvblN0eWxlOjprVG9uYWwpOwotKyAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUs IHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAgIH0KLS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNr KGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAotLSAgICAg ICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCwga0FsbG93SWQpOwotKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6 OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKLSsgICAgICAgICAgICAgICAg ICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxv d0lkfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVy bWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3LmgudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJv bXB0X2Jhc2Vfdmlldy5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nl ci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3Zp ZXcuaC50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJl ZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcuaAkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4 NjUwMzc3MCArMDEwMAotQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgRW1iZWRkZWRQZXJtaXNzaW9u UHJvbXB0QmFzZVZpZXcgOgotICAgc3RydWN0IFJlcXVlc3RMaW5lQ29uZmlndXJhdGlvbiB7Ci0g ICAgIGNvbnN0IHJhd19wdHI8Y29uc3QgZ2Z4OjpWZWN0b3JJY29uPiBpY29uOwotICAgICBzdGQ6 OnUxNnN0cmluZyBtZXNzYWdlOwotKyAgICBSZXF1ZXN0TGluZUNvbmZpZ3VyYXRpb24oYXV0byBp LCBhdXRvIG0pIDogaWNvbihpKSwgbWVzc2FnZShtKSB7IH0KLSAgIH07Ci0gCi0gICBzdHJ1Y3Qg QnV0dG9uQ29uZmlndXJhdGlvbiB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJv bXB0X3BvbGljeV92aWV3LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xp Y3lfdmlldy5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcu Y2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRk ZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40 ODY1MDM3NzAgKzAxMDAKLUBAIC02NCw4ICs2NCw4IEBAIEVtYmVkZGVkUGVybWlzc2lvblByb21w dFBvbGljeVZpZXc6OkdldFIKLSBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQ b2xpY3lWaWV3OjpCdXR0b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lvblByb21w dFBvbGljeVZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3QgewotICAgc3RkOjp2 ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKLS0gIGJ1dHRvbnMuZW1wbGFjZV9i YWNrKGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9PS19MQUJF TCksCi0tICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprUG9saWN5T0ssIHVpOjpC dXR0b25TdHlsZTo6a1RvbmFsKTsKLSsgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91 dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX09LX0xBQkVMKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtQb2xpY3lPSywgdWk6OkJ1dHRvblN0eWxl OjprVG9uYWx9OwotICAgcmV0dXJuIGJ1dHRvbnM7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRl ZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2RlbmllZF92aWV3LmNjLnRoYW4gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJl ZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2RlbmllZF92aWV3LmNjCi0tLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9l bWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2RlbmllZF92aWV3LmNjLnRoYW4J MjAyNC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1p c3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzo0 NC4xNTM3MTI2NjcgKzAxMDAKLUBAIC03OSwxNyArNzksMTcgQEAgRW1iZWRkZWRQZXJtaXNzaW9u UHJvbXB0UHJldmlvdXNseURlbmllZAotIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblBy b21wdFByZXZpb3VzbHlEZW5pZWRWaWV3OjpCdXR0b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVk UGVybWlzc2lvblByb21wdFByZXZpb3VzbHlEZW5pZWRWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJh dGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRv bnM7Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjaygKLSsgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkg PSB7Ci0gICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBU X0NPTlRJTlVFX05PVF9BTExPV0lORyksCi0tICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlTm90 QWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsKLSsgICAgICBCdXR0b25UeXBlOjpr Q29udGludWVOb3RBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9OwotIAotICAgaWYg KGJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQocGVybWlzc2lvbnM6OmZlYXR1cmVzOjprT25l VGltZVBlcm1pc3Npb24pKSB7Ci0tICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAgICBidXR0 b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYx NihJRFNfUEVSTUlTU0lPTl9BTExPV19USElTX1RJTUUpLAotLSAgICAgICAgQnV0dG9uVHlwZTo6 a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dUaGlzVGltZUlk KTsKLSsgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6 OmtUb25hbCwga0FsbG93VGhpc1RpbWVJZH07Ci0gICB9IGVsc2UgewotLSAgICBidXR0b25zLmVt cGxhY2VfYmFjayhsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9X KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0 dG9uU3R5bGU6OmtUb25hbCk7Ci0rICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91 dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCi0rICAgICAgICAgICAg ICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9 OwotICAgfQotICAgcmV0dXJuIGJ1dHRvbnM7Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJt aXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYy50aGFuIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2MKLS0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVk ZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjLnRoYW4JMjAy NC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjCTIwMjQtMDItMjQgMTM6MTM6NDQu MTUzNzEyNjY3ICswMTAwCi1AQCAtNzQsMTIgKzc0LDEyIEBAIEVtYmVkZGVkUGVybWlzc2lvblBy b21wdFByZXZpb3VzbHlHcmFudGUKLSBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9t cHRQcmV2aW91c2x5R3JhbnRlZFZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRpb24+Ci0gRW1iZWRkZWRQ ZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdyYW50ZWRWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJh dGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRv bnM7Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjaygKLSsgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkg PSB7Ci0gICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBU X0NPTlRJTlVFX0FMTE9XSU5HKSwKLS0gICAgICBCdXR0b25UeXBlOjprQ29udGludWVBbGxvd2lu ZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwotKyAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51 ZUFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07Ci0gCi0tICBidXR0b25zLmVtcGxh Y2VfYmFjaygKLSsgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgbDEwbl91dGls OjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX1NUT1BfQUxMT1dJTkcpLAotLSAg ICAgIEJ1dHRvblR5cGU6OmtTdG9wQWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBr U3RvcEFsbG93aW5nSWQpOwotKyAgICAgIEJ1dHRvblR5cGU6OmtTdG9wQWxsb3dpbmcsIHVpOjpC dXR0b25TdHlsZTo6a1RvbmFsLCBrU3RvcEFsbG93aW5nSWR9OwotICAgcmV0dXJuIGJ1dHRvbnM7 Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvdGVzdC9jaHJvbWVk cml2ZXIvY2FwYWJpbGl0aWVzLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv dGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVzLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jaHJvbWUvdGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVzLmNjLnRoYW4JMjAyNC0w Mi0yMiAyMjo0Mjo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MJMjAyNC0wMi0yNCAxMzox MzozMi40ODY1MDM3NzAgKzAxMDAKLUBAIC0zNDYsNyArMzQ2LDcgQEAgU3RhdHVzIFBhcnNlTW9i aWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgotICAgICAgICAgICAgICAgICAgICAgICAgICIndmVy c2lvbicgZmllbGQgb2YgdHlwZSBzdHJpbmciKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGJy YW5kcy5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Ci0rICAgICAgICBicmFuZHMuZW1w bGFjZV9iYWNrKCkgPSB7KmJyYW5kLCAqdmVyc2lvbn07Ci0gICAgICAgfQotIAotICAgICAgIGNs aWVudF9oaW50cy5icmFuZHMgPSBzdGQ6Om1vdmUoYnJhbmRzKTsKLUBAIC0zODQsNyArMzg0LDcg QEAgU3RhdHVzIFBhcnNlTW9iaWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgotICAgICAgICAgICAg ICAgICAgICAgICAgICJhICd2ZXJzaW9uJyBmaWVsZCBvZiB0eXBlIHN0cmluZyIpOwotICAgICAg ICAgfQotIAotLSAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCpicmFuZCwg KnZlcnNpb24pOwotKyAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCkgPSB7 KmJyYW5kLCAqdmVyc2lvbn07Ci0gICAgICAgfQotIAotICAgICAgIGNsaWVudF9oaW50cy5mdWxs X3ZlcnNpb25fbGlzdCA9IHN0ZDo6bW92ZShmdWxsX3ZlcnNpb25fbGlzdCk7Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jy b3dzZXIvcGFzc3dvcmRfbWFuYWdlci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29t cG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNj Ci0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIv Y29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjAy LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9w YXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNjCTIwMjQtMDIt MjQgMTM6MTM6NDQuMTU0NzEyNjg1ICswMTAwCi1AQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgUGFz c3dvcmRNYW5hZ2VyOjpPblVzZXJNb2RpZmllZE5vblAKLSAgICAgaXQtPnNlY29uZC5sYXN0X2No YW5nZSA9IGJhc2U6OlRpbWU6Ok5vdygpOwotICAgfSBlbHNlIHsKLSAgICAgcG9zc2libGVfdXNl cm5hbWVzXy5QdXQoCi0tICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVyKGRy aXZlcl9pZCwgcmVuZGVyZXJfaWQpLAotKyAgICAgICAgUG9zc2libGVVc2VybmFtZUZpZWxkSWRl bnRpZmllcntkcml2ZXJfaWQsIHJlbmRlcmVyX2lkfSwKLSAgICAgICAgIFBvc3NpYmxlVXNlcm5h bWVEYXRhKEdldFNpZ25vblJlYWxtKGRyaXZlci0+R2V0TGFzdENvbW1pdHRlZFVSTCgpKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyX2lkLCB2YWx1ZSwgYmFzZTo6VGlt ZTo6Tm93KCksIGRyaXZlcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9j b21wbGV0ZV9hdHRyaWJ1dGVfaGFzX3VzZXJuYW1lLAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2Mu dGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdl ci93b3JrZXJfd2F0Y2hlci5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50 cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjLnRoYW4JMjAyNC0wMi0yMiAy Mjo0MzowMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBv bmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYwkyMDI0LTAyLTI0IDEz OjEzOjQ0LjE1ODcxMjc1NiArMDEwMAotQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFdvcmtlcldh dGNoZXI6Ok9uV29ya2VyQ3JlYXRlZCgKLSAgIERDSEVDSyhpbnNlcnRpb25fcmVzdWx0LnNlY29u ZCk7Ci0gCi0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAg IGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLAotICAgICAgICAgICAgdGhpc10oY29u c3QgY29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lk KSB7Ci0gICAgICAgICAgICAgQWRkRnJhbWVDbGllbnRDb25uZWN0aW9uKGluc2VydGlvbl9yZXN1 bHQuZmlyc3QtPnNlY29uZC5nZXQoKSwKLUBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBXb3JrZXJX YXRjaGVyOjpPbldvcmtlckNyZWF0ZWQoCi0gICAgICAgICAgIFsmLCB0aGlzXShibGluazo6RGVk aWNhdGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAg IENvbm5lY3REZWRpY2F0ZWRXb3JrZXJDbGllbnQoaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+c2Vj b25kLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVk aWNhdGVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwKLSAg ICAgICBjcmVhdG9yKTsKLSB9Ci0gCi1AQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyV2F0 Y2hlcjo6T25CZWZvcmVXb3JrZXJEZXN0cm8KLSAgIC8vIEZpcnN0IGRpc2Nvbm5lY3QgdGhlIGNy ZWF0b3IncyBub2RlIGZyb20gdGhpcyB3b3JrZXIgbm9kZS4KLSAKLSAgIGFic2w6OnZpc2l0KAot LSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAg ICAgICAgWyYsCi0gICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50OjpHbG9iYWxSZW5kZXJG cmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICBSZW1vdmVG cmFtZUNsaWVudENvbm5lY3Rpb24od29ya2VyX25vZGUuZ2V0KCksCi1AQCAtMjc0LDcgKzI3NCw3 IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25CZWZvcmVXb3JrZXJEZXN0cm8KLSAgICAgICAgICAg WyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJUb2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rv a2VuKSB7Ci0gICAgICAgICAgICAgRGlzY29ubmVjdERlZGljYXRlZFdvcmtlckNsaWVudCh3b3Jr ZXJfbm9kZS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pOwotLSAgICAgICAgICB9KSwKLSsgICAgICAgICAg fX0sCi0gICAgICAgY3JlYXRvcik7Ci0gCi0gICAvLyBEaXNjb25uZWN0IGFsbCBjaGlsZCB3b3Jr ZXJzIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBub2RlLgotQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lk IFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZUFkZGVkKAotICAgICBjb25zdCBzdGQ6OnN0cmlu ZyYgY2xpZW50X3V1aWQsCi0gICAgIGNvbnN0IGNvbnRlbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnRJ bmZvJiBjbGllbnRfaW5mbykgewotICAgYWJzbDo6dmlzaXQoCi0tICAgICAgYmFzZTo6T3Zlcmxv YWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICBbJiwgdGhpc10oY29u dGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAg ICAgICAgICAgICAvLyBGb3Igd2luZG93IGNsaWVudHMsIGl0IGlzIG5lY2Vzc2FyeSB0byB3YWl0 IHVudGlsIHRoZSBuYXZpZ2F0aW9uCi0gICAgICAgICAgICAgLy8gaGFzIGNvbW1pdHRlZCB0byBh IFJlbmRlckZyYW1lSG9zdC4KLUBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVy OjpPbkNvbnRyb2xsZWVBZGRlZCgKLSAgICAgICAgICAgICAgIENvbm5lY3RTaGFyZWRXb3JrZXJD bGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7Ci0gICAgICAgICAgICAgfQotLSAgICAg ICAgICB9KSwKLSsgICAgICAgICAgfX0sCi0gICAgICAgY2xpZW50X2luZm8pOwotIH0KLSAKLUBA IC01MjQsNyArNTI0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkNvbnRyb2xsZWVSZW1vdmVk KAotICAgICByZXR1cm47Ci0gCi0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9h ZGVkKAotKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLCB0aGlzXShjb250 ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAg ICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29ubmVjdGlvbih3b3JrZXJfbm9kZSwgcmVuZGVy X2ZyYW1lX2hvc3RfaWQpOwotICAgICAgICAgICB9LAotQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lk IFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCi0gICAgICAgICAgIH0sCi0gICAg ICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hhcmVkX3dvcmtlcl90 b2tlbikgewotICAgICAgICAgICAgIERpc2Nvbm5lY3RTaGFyZWRXb3JrZXJDbGllbnQod29ya2Vy X25vZGUsIHNoYXJlZF93b3JrZXJfdG9rZW4pOwotLSAgICAgICAgICB9KSwKLSsgICAgICAgICAg fX0sCi0gICAgICAgY2xpZW50KTsKLSB9Ci0gCi1AQCAtODEwLDcgKzgxMCw3IEBAIHZvaWQgV29y a2VyV2F0Y2hlcjo6Q29ubmVjdEFsbFNlcnZpY2VXb3IKLSAKLSAgIGZvciAoY29uc3QgYXV0byYg a3YgOiBpdC0+c2Vjb25kKSB7Ci0gICAgIGFic2w6OnZpc2l0KAotLSAgICAgICAgYmFzZTo6T3Zl cmxvYWRlZCgKLSsgICAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgICAgWyYsIHRo aXNdKGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lk KSB7Ci0gICAgICAgICAgICAgICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3Jr ZXJfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJf ZnJhbWVfaG9zdF9pZCk7Ci1AQCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6 Q29ubmVjdEFsbFNlcnZpY2VXb3IKLSAgICAgICAgICAgICBbJiwgdGhpc10oYmxpbms6OlNoYXJl ZFdvcmtlclRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICAgIENvbm5l Y3RTaGFyZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAg ICAgICAgfSksCi0rICAgICAgICAgICAgfX0sCi0gICAgICAgICBrdi5zZWNvbmQpOwotICAgfQot IH0KLUBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxs U2VydmljZQotIAotICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5zZWNvbmQpIHsKLSAgICAg YWJzbDo6dmlzaXQoCi0tICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAgICAgYmFzZTo6 T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgICBbJiwgdGhpc10oCi0gICAgICAgICAgICAgICAgIGNv bnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9p ZCkgewotICAgICAgICAgICAgICAgUmVtb3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHNlcnZpY2Vf d29ya2VyX25vZGUsCi1AQCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6RGlz Y29ubmVjdEFsbFNlcnZpY2UKLSAgICAgICAgICAgICBbJiwgdGhpc10oY29uc3QgYmxpbms6OlNo YXJlZFdvcmtlclRva2VuJiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAgICBE aXNjb25uZWN0U2hhcmVkV29ya2VyQ2xpZW50KHNlcnZpY2Vfd29ya2VyX25vZGUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF93b3JrZXJfdG9rZW4p OwotLSAgICAgICAgICAgIH0pLAotKyAgICAgICAgICAgIH19LAotICAgICAgICAga3Yuc2Vjb25k KTsKLSAgIH0KLSB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMv dml6L3NlcnZpY2UvZGlzcGxheV9lbWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25f Z3B1LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9zZXJ2aWNl L2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYwotLS0t IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5X2Vt YmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MudGhhbgkyMDI0LTAyLTIy IDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29t cG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2Vf aW1wbF9vbl9ncHUuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTE3MTI2MzIgKzAxMDAKLUBAIC0x NTczLDcgKzE1NzMsNyBAQCB2b2lkIFNraWFPdXRwdXRTdXJmYWNlSW1wbE9uR3B1OjpDb3B5T3V0 Ci0gCi0gICAgICAgLy8gSXNzdWUgcmVhZGJhY2tzIGZyb20gdGhlIHN1cmZhY2VzOgotICAgICAg IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQ29weU91dHB1dFJlc3VsdDo6a05WMTJNYXhQbGFuZXM7 ICsraSkgewotLSAgICAgICAgU2tJU2l6ZSBzaXplKHBsYW5lX3N1cmZhY2VzW2ldLT53aWR0aCgp LCBwbGFuZV9zdXJmYWNlc1tpXS0+aGVpZ2h0KCkpOwotKyAgICAgICAgU2tJU2l6ZSBzaXple3Bs YW5lX3N1cmZhY2VzW2ldLT53aWR0aCgpLCBwbGFuZV9zdXJmYWNlc1tpXS0+aGVpZ2h0KCl9Owot ICAgICAgICAgU2tJbWFnZUluZm8gZHN0X2luZm8gPSBTa0ltYWdlSW5mbzo6TWFrZSgKLSAgICAg ICAgICAgICBzaXplLCAoaSA9PSAwKSA/IGtBbHBoYV84X1NrQ29sb3JUeXBlIDoga1I4RzhfdW5v cm1fU2tDb2xvclR5cGUsCi0gICAgICAgICAgICAga1VucHJlbXVsX1NrQWxwaGFUeXBlKTsKLWRp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3Nh dmVfcGFja2FnZS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYy50aGFuCTIwMjQtMDItMjIgMjI6 NDM6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUx NzEyNjMyICswMTAwCi1AQCAtODAxLDggKzgwMSw4IEBAIHZvaWQgU2F2ZVBhY2thZ2U6OkZpbmlz aCgpIHsKLSAgIGlmIChkb3dubG9hZF8pIHsKLSAgICAgc3RkOjp2ZWN0b3I8ZG93bmxvYWQ6OkRv d25sb2FkU2F2ZUl0ZW1EYXRhOjpJdGVtSW5mbz4gZmlsZXM7Ci0gICAgIGZvciAoYXV0byYgaXRl bSA6IHNhdmVkX3N1Y2Nlc3NfaXRlbXNfKSB7Ci0tICAgICAgZmlsZXMuZW1wbGFjZV9iYWNrKGl0 ZW0uc2Vjb25kLT5mdWxsX3BhdGgoKSwgaXRlbS5zZWNvbmQtPnVybCgpLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICBpdGVtLnNlY29uZC0+cmVmZXJyZXIoKS51cmwpOwotKyAgICAgIGZpbGVz LmVtcGxhY2VfYmFjaygpID0ge2l0ZW0uc2Vjb25kLT5mdWxsX3BhdGgoKSwgaXRlbS5zZWNvbmQt PnVybCgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlY29uZC0+cmVmZXJyZXIo KS51cmx9OwotICAgICB9Ci0gICAgIGRvd25sb2FkOjpEb3dubG9hZFNhdmVJdGVtRGF0YTo6QXR0 YWNoSXRlbURhdGEoZG93bmxvYWRfLCBzdGQ6Om1vdmUoZmlsZXMpKTsKLSAgIH0KLWRpZmYgLXVw IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMv Zmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYwot LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3Nl dHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAw MDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv Zmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjCTIwMjQtMDItMjQgMTM6 MTM6NDQuMTU4NzEyNzU2ICswMTAwCi1AQCAtNzczLDcgKzc3Myw3IEBAIEZpcnN0UGFydHlTZXRQ YXJzZXI6OlBhcnNlU2V0c0Zyb21FbnRlcnAKLSAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0 LkdldFBvbGljeVNldHNGcm9tTGlzdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5 LkZpbmRMaXN0KGtGaXJzdFBhcnR5U2V0UG9saWN5QWRkaXRpb25zRmllbGQpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICBQb2xpY3lTZXRUeXBlOjprQWRkaXRpb24pKTsKLS0gICAgcmV0dXJu IFBhcnNlZFBvbGljeVNldExpc3RzKHN0ZDo6bW92ZShyZXBsYWNlbWVudHMpLCBzdGQ6Om1vdmUo YWRkaXRpb25zKSk7Ci0rICAgIHJldHVybiBQYXJzZWRQb2xpY3lTZXRMaXN0c3tzdGQ6Om1vdmUo cmVwbGFjZW1lbnRzKSwgc3RkOjptb3ZlKGFkZGl0aW9ucyl9OwotICAgfSgpOwotIAotICAgY29u dGV4dC5Qb3N0UHJvY2Vzc1NldExpc3RzKHNldF9saXN0cyk7Ci1kaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0 X2Zyb21fc2VsbGVyX3NpZ25hbHMuaC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVu dC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFs cy5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3Rf Z3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgudGhhbgkyMDI0LTAyLTIy IDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2ln bmFscy5oCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU4NzEyNzU2ICswMTAwCi1AQCAtMTMzLDYgKzEz Myw3IEBAIGNsYXNzIENPTlRFTlRfRVhQT1JUIEhlYWRlckRpcmVjdEZyb21TZWwKLSAKLSAgICAg Ly8gVGhlIEFkLUF1Y3Rpb24tU2lnbmFscyByZXNwb25zZSBzZXJ2ZWQgYnkgYG9yaWdpbmAuCi0g ICAgIHN0ZDo6c3RyaW5nIHJlc3BvbnNlX2pzb247Ci0rICAgIFVucHJvY2Vzc2VkUmVzcG9uc2Uo YXV0byB1LCBhdXRvIHMpIDogb3JpZ2luKHUpLCByZXNwb25zZV9qc29uKHMpIHsgfQotICAgfTsK LSAKLSAgIC8vIEluZm9ybWF0aW9uIGZyb20gUGFyc2VBbmRGaW5kKCkgY2FsbHMgdXNlZCBieSBQ YXJzZUFuZEZpbmRDb21wbGV0ZWQuCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nv bnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjLnRo YW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAv aW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MudGhh bgkyMDI0LTAyLTIyIDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0 b3JhZ2UuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2NDkgKzAxMDAKLUBAIC0zNDYxLDEw ICszNDYxLDEwIEBAIERvR2V0S0Fub255bWl0eURhdGEoc3FsOjpEYXRhYmFzZSYgZGIsCi0gCi0g ICBzdGQ6OnZlY3RvcjxTdG9yYWdlSW50ZXJlc3RHcm91cDo6S0Fub255bWl0eURhdGE+IGtfYW5v bl9kYXRhOwotICAgd2hpbGUgKGludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN0ZXAoKSkgewot LSAgICBrX2Fub25fZGF0YS5lbXBsYWNlX2JhY2soCi0rICAgIGtfYW5vbl9kYXRhLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgICAgLyprZXk9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5D b2x1bW5TdHJpbmcoMCksCi0gICAgICAgICAvKmlzX2tfYW5vbnltb3VzPSovaW50ZXJlc3RfZ3Jv dXBfa2Fub25fcXVlcnkuQ29sdW1uQm9vbCgxKSwKLS0gICAgICAgIC8qbGFzdF91cGRhdGVkPSov aW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1uVGltZSgyKSk7Ci0rICAgICAgICAvKmxh c3RfdXBkYXRlZD0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMil9Owot ICAgfQotICAgaWYgKCFpbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5TdWNjZWVkZWQoKSkgewot ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNj LnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9z dC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLnRo YW4JMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTc3MTI3MzkgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0 X2ltcGwuY2MJMjAyNC0wMi0yNCAxMzoxODozOS40ODAxMTk0NDcgKzAxMDAKLUBAIC04NjMyLDcg Kzg2MzIsNyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6OlNlbmRGZW5jZWRGcmFtCi0gICBm b3IgKGNvbnN0IGJsaW5rOjpGZW5jZWRGcmFtZTo6UmVwb3J0aW5nRGVzdGluYXRpb24mIGRlc3Rp bmF0aW9uIDoKLSAgICAgICAgZGVzdGluYXRpb25zKSB7Ci0gICAgIFNlbmRGZW5jZWRGcmFtZVJl cG9ydGluZ0JlYWNvbkludGVybmFsKAotLSAgICAgICAgRGVzdGluYXRpb25FbnVtRXZlbnQoZXZl bnRfdHlwZSwgZXZlbnRfZGF0YSksIGRlc3RpbmF0aW9uKTsKLSsgICAgICAgIERlc3RpbmF0aW9u RW51bUV2ZW50e2V2ZW50X3R5cGUsIGV2ZW50X2RhdGF9LCBkZXN0aW5hdGlvbik7Ci0gICB9Ci0g fQotIAotQEAgLTg2NjEsNyArODY2MSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2Vu ZEZlbmNlZEZyYW0KLSAgIH0KLSAKLSAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbklu dGVybmFsKAotLSAgICAgIERlc3RpbmF0aW9uVVJMRXZlbnQoZGVzdGluYXRpb25fdXJsKSwKLSsg ICAgICBEZXN0aW5hdGlvblVSTEV2ZW50e2Rlc3RpbmF0aW9uX3VybH0sCi0gICAgICAgYmxpbms6 OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdEZXN0aW5hdGlvbjo6a0J1eWVyKTsKLSB9Ci0gCi1AQCAt ODc5Miw3ICs4NzkyLDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpNYXliZVNlbmRGZW5j ZQotICAgICAgICAgZGF0YSA9IGluZm8tPmRhdGE7Ci0gICAgICAgfQotICAgICAgIGluaXRpYXRv cl9yZmgtPlNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVybmFsKAotLSAgICAgICAg ICBBdXRvbWF0aWNCZWFjb25FdmVudChldmVudF90eXBlLCBkYXRhKSwgZGVzdGluYXRpb24sCi0r ICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2ZW50e2V2ZW50X3R5cGUsIGRhdGF9LCBkZXN0aW5h dGlvbiwKLSAgICAgICAgICAgbmF2aWdhdGlvbl9yZXF1ZXN0LkdldE5hdmlnYXRpb25JZCgpKTsK LSAgICAgfQotICAgfSBlbHNlIHsKLUBAIC04ODAzLDcgKzg4MDMsNyBAQCB2b2lkIFJlbmRlckZy YW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCi0gICAgIGZvciAoYmxpbms6OkZlbmNlZEZyYW1l OjpSZXBvcnRpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiA6Ci0gICAgICAgICAgaW5mby0+ZGVz dGluYXRpb25zKSB7Ci0gICAgICAgaW5pdGlhdG9yX3JmaC0+U2VuZEZlbmNlZEZyYW1lUmVwb3J0 aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2ZW50KGV2ZW50 X3R5cGUsIGluZm8tPmRhdGEpLCBkZXN0aW5hdGlvbiwKLSsgICAgICAgICAgQXV0b21hdGljQmVh Y29uRXZlbnR7ZXZlbnRfdHlwZSwgaW5mby0+ZGF0YX0sIGRlc3RpbmF0aW9uLAotICAgICAgICAg ICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOwotICAgICB9Ci0gICB9Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dv cmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYy50aGFuIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2Nv bnRhaW5lcl9ob3N0LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dz ZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2MudGhhbgky MDI0LTAyLTIyIDIyOjQzOjA2LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRh aW5lcl9ob3N0LmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU5NzEyNzc0ICswMTAwCi1AQCAtODcw LDcgKzg3MCw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXJIb3N0OjpHZXRDbGllbnRUeXAKLSAg IERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotICAg RENIRUNLKGNsaWVudF9pbmZvXyk7Ci0gICByZXR1cm4gYWJzbDo6dmlzaXQoCi0tICAgICAgYmFz ZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICBbXShH bG9iYWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAg ICAgIHJldHVybiBibGluazo6bW9qb206OlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjprV2luZG93 OwotICAgICAgICAgICB9LAotQEAgLTg3OSw3ICs4NzksNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFp bmVySG9zdDo6R2V0Q2xpZW50VHlwCi0gICAgICAgICAgIH0sCi0gICAgICAgICAgIFtdKGJsaW5r OjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAg cmV0dXJuIGJsaW5rOjptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGU6OmtTaGFyZWRXb3Jr ZXI7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwKLSAgICAgICAqY2xpZW50X2luZm9f KTsKLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nl ci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRl cmNlcHRvci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3Nl cnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2Vw dG9yLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2Vydmlj ZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3Iu Y2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjA2LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29y a2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCTIwMjQtMDItMjQgMTM6MTM6 NDQuMTU5NzEyNzc0ICswMTAwCi1AQCAtMzYzLDEwICszNjMsMTAgQEAgU2VydmljZVdvcmtlck1h aW5SZXNvdXJjZUxvYWRlckludGVyY2VwdAotICAgfQotICAgYXV0byogc3RvcmFnZV9wYXJ0aXRp b24gPSBwcm9jZXNzLT5HZXRTdG9yYWdlUGFydGl0aW9uKCk7Ci0gCi0tICByZXR1cm4gYWJzbDo6 dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZChbJiwgdGhpc10oYXV0byB0b2tlbikgewotKyAgcmV0dXJu IGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7WyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdG9yYWdlS2V5RnJvbVdvcmtlckhvc3Qo c3RvcmFnZV9wYXJ0aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBvcmlnaW4pOwotLSAgICAgICAgICAgICAgICAg ICAgIH0pLAotKyAgICAgICAgICAgICAgICAgICAgIH19LAotICAgICAgICAgICAgICAgICAgICAg ICp3b3JrZXJfdG9rZW5fKTsKLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MudGhh biBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRp Y2F0ZWRfd29ya2VyX2hvc3QuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQv YnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MudGhhbgkyMDI0LTAy LTIyIDIyOjQzOjA2LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29udGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYwkyMDI0 LTAyLTI0IDEzOjEzOjQ0LjE1OTcxMjc3NCArMDEwMAotQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lk IERlZGljYXRlZFdvcmtlckhvc3Q6OlN0YXJ0U2NyaXB0TG9hCi0gICBSZW5kZXJGcmFtZUhvc3RJ bXBsKiBjcmVhdG9yX3JlbmRlcl9mcmFtZV9ob3N0ID0gbnVsbHB0cjsKLSAgIERlZGljYXRlZFdv cmtlckhvc3QqIGNyZWF0b3Jfd29ya2VyID0gbnVsbHB0cjsKLSAKLS0gIGFic2w6OnZpc2l0KGJh c2U6Ok92ZXJsb2FkZWQoCi0rICBhYnNsOjp2aXNpdChiYXNlOjpPdmVybG9hZGVkewotICAgICAg ICAgICAgICAgICAgIFsmXShjb25zdCBHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2Zy YW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfcmVuZGVyX2ZyYW1l X2hvc3QgPQotICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlckZyYW1lSG9zdEltcGw6OkZy b21JRChyZW5kZXJfZnJhbWVfaG9zdF9pZCk7Ci1AQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgRGVk aWNhdGVkV29ya2VySG9zdDo6U3RhcnRTY3JpcHRMb2EKLSAgICAgICAgICAgICAgICAgICBbJl0o Ymxpbms6OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKLSAg ICAgICAgICAgICAgICAgICAgIGNyZWF0b3Jfd29ya2VyID0gc2VydmljZV8tPkdldERlZGljYXRl ZFdvcmtlckhvc3RGcm9tVG9rZW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVk X3dvcmtlcl90b2tlbik7Ci0tICAgICAgICAgICAgICAgICAgfSksCi0rICAgICAgICAgICAgICAg ICAgfX0sCi0gICAgICAgICAgICAgICBjcmVhdG9yXyk7Ci0gCi0gICBpZiAoIWNyZWF0b3JfcmVu ZGVyX2ZyYW1lX2hvc3QgJiYgIWNyZWF0b3Jfd29ya2VyKSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5jYy50aGFuIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjCi0tLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MudGhhbgkyMDI0 LTAyLTIyIDIyOjQzOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUy NzEyNjQ5ICswMTAwCi1AQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSG9zdFJlc29sdmVyQ2FjaGU6 OlNldCgKLSAKLSAgIHN0ZDo6c3RyaW5nIGRvbWFpbl9uYW1lID0gcmVzdWx0LT5kb21haW5fbmFt ZSgpOwotICAgZW50cmllc18uZW1wbGFjZSgKLS0gICAgICBLZXkoc3RkOjptb3ZlKGRvbWFpbl9u YW1lKSwgbmV0d29ya19hbm9ueW1pemF0aW9uX2tleSksCi0rICAgICAgS2V5e3N0ZDo6bW92ZShk b21haW5fbmFtZSksIG5ldHdvcmtfYW5vbnltaXphdGlvbl9rZXl9LAotICAgICAgIEVudHJ5KHN0 ZDo6bW92ZShyZXN1bHQpLCBzb3VyY2UsIHNlY3VyZSwgc3RhbGVuZXNzX2dlbmVyYXRpb24pKTsK LSAKLSAgIGlmIChlbnRyaWVzXy5zaXplKCkgPiBtYXhfZW50cmllc18pIHsKLWRpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v Zm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVy cG9sYXRpb24uY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYy50aGFuCTIw MjQtMDItMjIgMjI6NDM6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2lu dGVycG9sYXRpb24uY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2NDkgKzAxMDAKLUBAIC0z MSw3ICszMSw3IEBAIFZlY3RvcjxGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlkZT4KLSAg ICAgICAgIGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsIGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhv ZCwgc3RhcnRfY29sb3IsCi0gICAgICAgICBlbmRfY29sb3IsIHBlcmNlbnRhZ2UsIGFscGhhX211 bHRpcGxpZXIpOwotIAotLSAgICBGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlkZSByZXN1 bHRfY29sb3JfcmVjb3JkKGksIHJlc3VsdF9jb2xvcik7Ci0rICAgIEZvbnRQYWxldHRlOjpGb250 UGFsZXR0ZU92ZXJyaWRlIHJlc3VsdF9jb2xvcl9yZWNvcmR7c3RhdGljX2Nhc3Q8aW50PihpKSwg cmVzdWx0X2NvbG9yfTsKLSAgICAgcmVzdWx0X2NvbG9yX3JlY29yZHMucHVzaF9iYWNrKHJlc3Vs dF9jb2xvcl9yZWNvcmQpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdF9jb2xvcl9yZWNvcmRzOwot ZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9m cGRmYXBpL3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAudGhhbiBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVy c3RhdHVzLmNwcAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvcGRmaXVt L2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwLnRoYW4JMjAyNC0wMi0y MiAyMjo0NTowMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3Ro aXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNw cAkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyArMDEwMAotQEAgLTUwNyw3ICs1MDcsNyBA QCB2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpQcm9jZXNzQ2xpcFBhdGgoCi0gICAgIH0gZWxzZSB7 Ci0gICAgICAgbV9wRGV2aWNlLT5TZXRDbGlwX1BhdGhGaWxsKAotICAgICAgICAgICAqcFBhdGgs ICZtdE9iajJEZXZpY2UsCi0tICAgICAgICAgIENGWF9GaWxsUmVuZGVyT3B0aW9ucyhDbGlwUGF0 aC5HZXRDbGlwVHlwZShpKSkpOwotKyAgICAgICAgICBDRlhfRmlsbFJlbmRlck9wdGlvbnN7Q2xp cFBhdGguR2V0Q2xpcFR5cGUoaSl9KTsKLSAgICAgfQotICAgfQotIAotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgudGhh biBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0 aWwuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21h bmFnZXJfdXRpbC5oLnRoYW4JMjAyNC0wMi0yMiAyMjo0NDoxMi4wMDAwMDAwMDAgKzAxMDAKLSsr KyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0 aWwuaAkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyArMDEwMAotQEAgLTUyLDUzICs1Miw1 MyBAQCBjb25zdGV4cHIgYXV0byBrQ2hyb21hdGljaXR5TWFwID0gYmFzZTo6Ci0gICAgIHpjcl9j b2xvcl9tYW5hZ2VyX3YxX2Nocm9tYXRpY2l0eV9uYW1lcywKLSAgICAgUHJpbWFyeVZlcnNpb24+ KAotICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV81 MjVfTElORSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJ RDo6U01QVEUxNzBNLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9u KX0sCi0rICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNN UFRFMTcwTSwKLSsgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAot ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV82MjVf TElORSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 QlQ0NzBCRywKLS0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAot KyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJH LAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMTcwTSwKLS0gICAg ICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAot LSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJp bWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwKLSsgICAg ICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDcwOSwKLS0gICAgICBQcmltYXJ5VmVy c2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6 OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDIwMjAsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUMjAyMCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK LSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQyMDIw LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NI Uk9NQVRJQ0lUWV9OQU1FU19TUkdCLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQ cmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX0RJU1BMQVlQMywKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6 OlByaW1hcnlJRDo6UDMsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJpbWFyeVZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlAzLCBrRGVmYXVsdFNpbmNlVmVyc2lv bn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19BRE9C RVJHQiwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 QURPQkVfUkdCLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s Ci0rICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkFET0JF X1JHQiwKLSsgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NP TE9SX1NQSU4sCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAgUHJpbWFyeVZlcnNpb257 Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpXSURFX0dBTVVUX0NPTE9S X1NQSU4sCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1F U19XSURFX0dBTVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1VVF9DT0xPUl9TUElO X1NJTkNFX1ZFUlNJT059fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfQlQ0NzBNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlW ZXJzaW9uewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBNLAot LSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBN X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX0JUNDcwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTSwKLS0gICAgICBQcmltYXJ5VmVy c2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpQcmltYXJ5SUQ6OlNNUFRFMjQwTSwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTI0ME1fU0lOQ0Vf VkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1F U19YWVpfRDUwLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9u ewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6WFlaX0Q1MCwKLS0gICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTBfU0lO Q0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFH RVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMSwKLS0gICAgICBQcmltYXJ5VmVy c2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpQcmltYXJ5SUQ6OlNNUFRFU1Q0MjhfMSwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDI4 XzFfU0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19TTVBURVNUNDMxXzIsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAg UHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpT TVBURVNUNDMxXzIsCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lU WV9OQU1FU19TTVBURVNUNDMxXzJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQzMV8yX1NJTkNFX1ZFUlNJ T059fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklM TSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAg ICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkZJTE0sCi0tICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJT04pfX0p OwotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklM TV9TSU5DRV9WRVJTSU9OfX19KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHRoZSB6Y3JfY29sb3JfbWFu YWdlcl92MSBlb3RmX25hbWVzIGVudW0gdmFsdWVzCi0gLy8gcmVwcmVzZW50aW5nIHdlbGwta25v d24gRU9URnMsIHRvIHRoZWlyIGVxdWl2YWxlbnQgVHJhbnNmZXJJRHMuCi1AQCAtMTA3LDY4ICsx MDcsNjggQEAgY29uc3RleHByIGF1dG8ga0VvdGZNYXAgPSBiYXNlOjpNYWtlRml4ZQotICAgICB6 Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLAotICAgICBUcmFuc2ZlclZlcnNpb24+KHsK LSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAotLSAgICAgVHJh bnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TElORUFSLAotLSAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCi0rICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU1JHQiwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlRyYW5zZmVySUQ6OlNSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFu c2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCLCBrRGVmYXVsdFNp bmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdC X0hEUiwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OlNSR0JfSERSLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIsCi0rICAgICAgICAgICAgICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJT SU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAotLSAg ICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQ3MDksCi0t ICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcw OV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpCVDcwOSwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3LAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyNCwKLS0gICAgICAgICAgICAgICAgICAg ICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29s b3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyNCwKLSsgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19BRE9CRVJHQiwKLSAgICAgIC8vIFRoaXMgaXMgZXZlciBzbyBzbGlnaHRseSBpbmFjY3VyYXRl LiBUaGUgbnVtYmVyIG91Z2h0IHRvIGJlCi0gICAgICAvLyAyLjE5OTIxODc1Ziwgbm90IDIuMgot LSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEy MiwKLS0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAg VHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyMiwKLSsg ICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19QUSwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlBRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAg ICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZh dWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0hMRywKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OkhMRywKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0hMR19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpITEcsCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME0sCi0tICAgICBUcmFuc2ZlclZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3ME0sCi0tICAgICAgICAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME1fU0lOQ0Vf VkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNm ZXJJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU01QVEUxNzBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNLAotLSAgICAgVHJhbnNmZXJWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICAgICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZF UlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OlNNUFRFMjQwTSwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMSwKLS0gICAgIFRyYW5zZmVyVmVyc2lv bigKLSsgICAgIFRyYW5zZmVyVmVyc2lvbnsKLSAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OlNNUFRFU1Q0MjhfMSwKLS0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTn19LAot ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0csCi0tICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCi0tICAgICAgICAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0VfVkVSU0lP Til9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 TE9HLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfTE9HX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfTE9HX1NRUlQsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpMT0dfU1FSVCwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0xPR19TUVJUX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5z ZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPR19TUVJULAotKyAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlRf U0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19J RUM2MTk2Nl8yXzQsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oCi0rICAgICBUcmFuc2ZlclZlcnNp b257Ci0gICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpJRUM2MTk2Nl8yXzQs Ci0tICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzRf U0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfSUVDNjE5NjZfMl80X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfQlQxMzYxX0VDRywKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMTM2MV9FQ0csCi0tICAgICAgICAgICAgICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT04p fSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJU MTM2MV9FQ0csCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAotLSAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwX1NJTkNFX1ZFUlNJT04p fSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJU MjAyMF8xMCwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0JUMjAyMF8xMF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMiwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMiwKLS0gICAgICAgICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMl9TSU5DRV9WRVJTSU9OKX0s Ci0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIw MjBfMTIsCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDIwMjBfMTJfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUUywKLS0gICAgIFRyYW5zZmVyVmVyc2lv bigKLSsgICAgIFRyYW5zZmVyVmVyc2lvbnsKLSAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OlNDUkdCX0xJTkVBUl84MF9OSVRTLAotLSAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgwX05JVFNfU0lOQ0VfVkVSU0lPTil9LAot KyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgw X05JVFNfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19HQU1NQTE4LAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6R0FNTUExOCwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0dBTU1BMThfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUExOCwKLSsgICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMThfU0lOQ0Vf VkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTI4 LAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FN TUEyOCwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0dBTU1BMjhfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyOCwKLSsgICAgICAgICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjhfU0lOQ0VfVkVSU0lPTn19LAot IH0pOwotIAotIC8vIEEgbWFwIGZyb20gdGhlIFNEUiB6Y3JfY29sb3JfbWFuYWdlcl92MSBlb3Rm X25hbWVzIGVudW0gdmFsdWVzCi1AQCAtMTc3LDE4ICsxNzcsMTggQEAgY29uc3RleHByIGF1dG8g a0VvdGZNYXAgPSBiYXNlOjpNYWtlRml4ZQotIGNvbnN0ZXhwciBhdXRvIGtUcmFuc2Zlck1hcCA9 Ci0gICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9u YW1lcywgVHJhbnNmZXJGblZlcnNpb24+KHsKLSAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0xJTkVBUiwKLS0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVk VHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBU cmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5j ZVZlcnNpb259fSwKLSAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NS R0IsCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtT UkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9u e1NrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAg ICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAotLSAgICAgICAg IFRyYW5zZmVyRm5WZXJzaW9uKAotKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uewotICAgICAg ICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1JlYzcwOSwKLS0gICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVS U0lPTn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3 LAotLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKGdhbW1hMjQsIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257Z2FtbWEyNCwga0RlZmF1bHRTaW5j ZVZlcnNpb259fSwKLSAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FE T0JFUkdCLAotLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuRXh0 OjprQTk4UkdCLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm5FeHQ6 OmtBOThSR0IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgfSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB0aGUgSERSIHpjcl9jb2xvcl9tYW5h Z2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKLUBAIC0xOTcsNzAgKzE5Nyw3MCBAQCBjb25z dGV4cHIgYXV0byBrVHJhbnNmZXJNYXAgPQotIGNvbnN0ZXhwciBhdXRvIGtIRFJUcmFuc2Zlck1h cCA9Ci0gICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90 Zl9uYW1lcywgVHJhbnNmZXJGblZlcnNpb24+KAotICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0xJTkVBUiwKLS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tO YW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAg ICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX1NSR0JfSERSLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbigKLSsgICAgICAgICAg VHJhbnNmZXJGblZlcnNpb257Ci0gICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6 a1NSR0IsCi0tICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NS R0JfSERSX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1BRLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVy c2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0hMRywKLS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46 OmtITEcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgVHJhbnNmZXJGblZl cnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtITEcsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT059fSwK LSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0Ix MCwKLS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCi0rICAgICAgICAgIFRyYW5zZmVyRm5W ZXJzaW9uewotICAgICAgICAgICAgICAgU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCRXh0ZW5k ZWQxMDIzT3ZlcjUxMCwKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfRVhURU5ERURTUkdCMTBfU0lOQ0VfVkVSU0lPTil9fSk7Ci0rICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwX1NJTkNFX1ZFUlNJ T059fX0pOwotIAotIC8vIEEgbWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgbWF0cml4X25h bWVzIGVudW0gdmFsdWVzIHRvCi0gLy8gZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRHMuCi0gY29u c3RleHByIGF1dG8ga01hdHJpeE1hcCA9Ci0gICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNy X2NvbG9yX21hbmFnZXJfdjFfbWF0cml4X25hbWVzLCBNYXRyaXhWZXJzaW9uPigKLSAgICAgICAg IHt7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1JHQiwKLS0gICAgICAgICAgTWF0 cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRy aXhJRDo6UkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQ3MDksCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ3MDksCi0tICAgICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDcwOSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9N QVRSSVhfTkFNRVNfQlQ0NzBCRywKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbigKLSsgICAgICAg ICAgTWF0cml4VmVyc2lvbnsKLSAgICAgICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4 SUQ6OkJUNDcwQkcsCi0tICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhf TkFNRVNfQlQ0NzBCR19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQ0NzBCR19TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfTkNMLAotLSAgICAg ICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0ws Ci0tICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAg ICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfTkNM LAotKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAg ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfQ0wsCi0tICAg ICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NM LAotLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAg ICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NM LAotKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAg ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19GQ0MsCi0tICAgICAgICAg IE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkNDLCBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OkZDQywga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NHLAotLSAgICAgICAgICBNYXRyaXhWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllDT0NHLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZQ09DR19TSU5DRV9WRVJT SU9OKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6WUNPQ0csCi0rICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf TUFUUklYX05BTUVTX1lDT0NHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllEWkRYLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZRFpEWF9TSU5DRV9WRVJTSU9O KX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6 WURaRFgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX1lEWkRYX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUiwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpHQlIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6R0JSLAotKyAg ICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19H QlJfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRS SVhfTkFNRVNfU01QVEUxNzBNLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6TWF0cml4SUQ6OlNNUFRFMTcwTSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6TWF0cml4SUQ6OlNNUFRFMTcwTSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRS SVhfTkFNRVNfU01QVEUyNDBNLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6TWF0cml4SUQ6OlNNUFRFMjQwTSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbil9fSk7Ci0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xv clNwYWNlOjpNYXRyaXhJRDo6U01QVEUyNDBNLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGtE ZWZhdWx0U2luY2VWZXJzaW9ufX19KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHpjcl9jb2xvcl9tYW5h Z2VyX3YxIHJhbmdlX25hbWVzIGVudW0gdmFsdWVzIHRvCi0gLy8gZ2Z4OjpDb2xvclNwYWNlOjpS YW5nZUlEcy4KLSBjb25zdGV4cHIgYXV0byBrUmFuZ2VNYXAgPQotICAgICBiYXNlOjpNYWtlRml4 ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3YxX3JhbmdlX25hbWVzLCBSYW5nZVZlcnNpb24+ KAotICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9SQU5HRV9OQU1FU19MSU1JVEVELAot LSAgICAgICAgICBSYW5nZVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVE LAotLSAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAg ICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6TElNSVRFRCwKLSsg ICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVTX0ZVTEwsCi0tICAgICAgICAgIFJhbmdl VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkZVTEwsIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6 OkZVTEwsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX1JBTkdFX05BTUVTX0RFUklWRUQsCi0tICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkRFUklWRUQsCi0tICAgICAgICAgICAgICAgICAgICAgICBr RGVmYXVsdFNpbmNlVmVyc2lvbil9fSk7Ci0rICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlJhbmdlSUQ6OkRFUklWRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19fSk7Ci0gCi0gemNyX2NvbG9yX21hbmFnZXJfdjFfY2hyb21hdGlj aXR5X25hbWVzIFRvQ29sb3JNYW5hZ2VyQ2hyb21hdGljaXR5KAotICAgICBnZng6OkNvbG9yU3Bh Y2U6OlByaW1hcnlJRCBwcmltYXJ5SUQsCi1AQCAtMjgzLDQgKzI4Myw0IEBAIHpjcl9jb2xvcl9t YW5hZ2VyX3YxX2VvdGZfbmFtZXMgVG9Db2xvck0KLSAKLSB9ICAvLyBuYW1lc3BhY2UgdWk6Ondh eWxhbmQKLSAKLS0jZW5kaWYgIC8vIFVJX0JBU0VfV0FZTEFORF9DT0xPUl9NQU5BR0VSX1VUSUxf SF8KLVwgS2VpbiBaZWlsZW51bWJydWNoIGFtIERhdGVpZW5kZS4KLSsjZW5kaWYgIC8vIFVJX0JB U0VfV0FZTEFORF9DT0xPUl9NQU5BR0VSX1VUSUxfSF8KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvdWkvZ3RrL2d0a191aS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdWkv Z3RrL2d0a191aS5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdWkvZ3RrL2d0a191aS5j Yy50aGFuCTIwMjQtMDItMjIgMjI6NDQ6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0t MTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3VpLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUzNzEy NjY3ICswMTAwCi1AQCAtMTAwNywxMSArMTAwNywxMSBAQCB1aTo6RGlzcGxheUNvbmZpZyBHdGtV aTo6R2V0RGlzcGxheUNvbmZpCi0gICAgIEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKLSAgICAgZ2Rr X21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsICZnZW9tZXRyeSk7Ci0gICAgIGludCBtb25p dG9yX3NjYWxlID0gc3RkOjptYXgoMSwgZ2RrX21vbml0b3JfZ2V0X3NjYWxlX2ZhY3Rvcihtb25p dG9yKSk7Ci0tICAgIGNvbmZpZy5kaXNwbGF5X2dlb21ldHJpZXMuZW1wbGFjZV9iYWNrKAotKyAg ICBjb25maWcuZGlzcGxheV9nZW9tZXRyaWVzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICAg Z2Z4OjpSZWN0KG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS54LCBtb25pdG9yX3NjYWxlICogZ2Vv bWV0cnkueSwKLSAgICAgICAgICAgICAgICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkud2lk dGgsCi0gICAgICAgICAgICAgICAgICAgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LmhlaWdodCks Ci0tICAgICAgICBtb25pdG9yX3NjYWxlICogZm9udF9zY2FsZSk7Ci0rICAgICAgICBzdGF0aWNf Y2FzdDxmbG9hdD4obW9uaXRvcl9zY2FsZSAqIGZvbnRfc2NhbGUpfTsKLSAgIH0KLSAgIHJldHVy biBjb25maWc7Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRz L21lbW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MubWUgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL21lbW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9k aXNjYXJkX21vbml0b3IuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMv bWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYy5tZQkyMDI0LTAy LTI0IDE4OjA2OjQ2LjUwOTM5MzAzMiArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29tcG9uZW50cy9tZW1vcnlfcHJlc3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNj CTIwMjQtMDItMjQgMTg6MDc6MTEuMjU4OTQ4MjQxICswMTAwCi1AQCAtOTIsOCArOTIsOCBAQCB2 b2lkIFVubmVjZXNzYXJ5RGlzY2FyZE1vbml0b3I6Ok9uRGlzY2FyCi0gICBEQ0hFQ0tfQ0FMTEVE X09OX1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNlX2NoZWNrZXJfKTsKLSAgIGlmIChjdXJyZW50X3Jl Y2xhaW1fZXZlbnRfKSB7Ci0gICAgIC8vIENhY2hlIHRoaXMga2lsbCBldmVudCBhbG9uZyB3aXRo IHRoZSB0aW1lIGl0IHRvb2sgcGxhY2UuCi0tICAgIGN1cnJlbnRfcmVjbGFpbV9ldmVudF9raWxs c18uZW1wbGFjZV9iYWNrKG1lbW9yeV9mcmVlZF9rYiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZF9jb21wbGV0ZV90aW1lKTsKLSsgICAgY3Vy cmVudF9yZWNsYWltX2V2ZW50X2tpbGxzXy5lbXBsYWNlX2JhY2soKSA9IHttZW1vcnlfZnJlZWRf a2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2Nh cmRfY29tcGxldGVfdGltZX07Ci0gICB9Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nl cy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29t cG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19h dXRvZmlsbF90YWJsZS5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9h dXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRvZmlsbF90 YWJsZS5jYy5tZQkyMDI0LTAyLTI0IDE5OjU4OjA5LjkyOTM3MTc5MSArMDEwMAotKysrIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0 YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRvZmlsbF90YWJsZS5jYwkyMDI0LTAyLTI0IDE5OjU5OjA3 LjE0OTUyNDg2MiArMDEwMAotQEAgLTYzMSwxMCArNjMxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxB dXRvZmlsbFByb2ZpbGU+IEFkZHJlc3MKLSAgICAgfQotIAotICAgICBiYXNlOjpzcGFuPGNvbnN0 IHVpbnQ4X3Q+IG9ic2VydmF0aW9uc19kYXRhID0gcy5Db2x1bW5CbG9iKDMpOwotLSAgICBmaWVs ZF90eXBlX3ZhbHVlcy5lbXBsYWNlX2JhY2soCi0rICAgIGZpZWxkX3R5cGVfdmFsdWVzLmVtcGxh Y2VfYmFjaygpID0gewotICAgICAgICAgdHlwZSwgcy5Db2x1bW5TdHJpbmcxNigxKSwgcy5Db2x1 bW5JbnQoMiksCi0gICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PihvYnNlcnZhdGlvbnNfZGF0 YS5iZWdpbigpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25zX2Rh dGEuZW5kKCkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmF0aW9uc19k YXRhLmVuZCgpKX07Ci0gCi0gICAgIGlmICh0eXBlID09IEFERFJFU1NfSE9NRV9DT1VOVFJZKSB7 Ci0gICAgICAgY291bnRyeV9jb2RlID0gYmFzZTo6VVRGMTZUb1VURjgocy5Db2x1bW5TdHJpbmcx NigxKSk7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2Zp bGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwu Y2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJv d3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjCi0tLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJk YXRhL2FkZHJlc3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjLm1lCTIwMjQtMDItMjQgMTk6 NTI6MDIuMTczNjgyMDYwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25l bnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9jb250YWN0X2luZm9f c3luY191dGlsLmNjCTIwMjQtMDItMjQgMTk6NTI6MjUuMjQ3MjE2MzI5ICswMTAwCi1AQCAtMTky LDkgKzE5Miw5IEBAIGNsYXNzIENvbnRhY3RJbmZvUHJvZmlsZVNldHRlciB7Ci0gICAgICAgQ0hF Q0sob2JzZXJ2YXRpb25zLmVtcHR5KCkpOwotICAgICAgIGZvciAoY29uc3Qgc3luY19wYjo6Q29u dGFjdEluZm9TcGVjaWZpY3M6Ok9ic2VydmF0aW9uJiBwcm90b19vYnNlcnZhdGlvbiA6Ci0gICAg ICAgICAgICBtZXRhZGF0YS5vYnNlcnZhdGlvbnMoKSkgewotLSAgICAgICAgb2JzZXJ2YXRpb25z LmVtcGxhY2VfYmFjayhwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCi0rICAgICAgICBvYnNlcnZh dGlvbnMuZW1wbGFjZV9iYWNrKCkgPSB7cHJvdG9fb2JzZXJ2YXRpb24udHlwZSgpLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9maWxlVG9rZW5RdWFsaXR5OjpGb3JtU2ln bmF0dXJlSGFzaCgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv X29ic2VydmF0aW9uLmZvcm1faGFzaCgpKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcm90b19vYnNlcnZhdGlvbi5mb3JtX2hhc2goKSl9OwotICAgICAgIH0KLSAg ICAgfQotICAgfQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dz ZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25maWcuY2MubWUgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25maWcu Y2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJh bWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5tZQkyMDI0LTAyLTI1IDAwOjE0OjI2LjgzMDMyMzM2 NSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZlbmNl ZF9mcmFtZS9mZW5jZWRfZnJhbWVfY29uZmlnLmNjCTIwMjQtMDItMjUgMDA6MTU6MTcuOTM5MjQx MDkxICswMTAwCi1AQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgRmVuY2VkRnJhbWVQcm9wZXJ0aWVz OjpVcGRhdGVQYXJlbnQKLSAgICAgICAgIGZlYXR1cmUsIGFsbG93X2xpc3QuQWxsb3dlZE9yaWdp bnMoKSwgYWxsb3dfbGlzdC5TZWxmSWZNYXRjaGVzKCksCi0gICAgICAgICBhbGxvd19saXN0Lk1h dGNoZXNBbGwoKSwgYWxsb3dfbGlzdC5NYXRjaGVzT3BhcXVlU3JjKCkpOwotICAgfQotLSAgcGFy ZW50X3Blcm1pc3Npb25zX2luZm9fLmVtcGxhY2UocGFyc2VkX3BvbGljaWVzLCBwYXJlbnRfb3Jp Z2luKTsKLSsgIHBhcmVudF9wZXJtaXNzaW9uc19pbmZvXy5lbXBsYWNlKCkgPSB7cGFyc2VkX3Bv bGljaWVzLCBwYXJlbnRfb3JpZ2lufTsKLSB9Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGNvbnRlbnQK LWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0 X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5j YwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dy b3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MubWUJMjAyNC0wMi0yNSAwMDoxNzozMS43OTk2 NDQ2OTEgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9p bnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCTIwMjQtMDItMjUgMDA6MTg6 NTQuMTU3MTIzNTE5ICswMTAwCi1AQCAtMzMzMiw5ICszMzMyLDkgQEAgc3RkOjpvcHRpb25hbDxE ZWJ1Z1JlcG9ydENvb2xkb3duPiBEb0dldAotICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg fQotIAotLSAgcmV0dXJuIERlYnVnUmVwb3J0Q29vbGRvd24oY29vbGRvd25fZGVidWdnaW5nX29u bHlfcmVwb3J0LkNvbHVtblRpbWUoMCksCi0rICByZXR1cm4gRGVidWdSZXBvcnRDb29sZG93bntj b29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uVGltZSgwKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PERlYnVnUmVwb3J0Q29vbGRvd25UeXBlPigK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29sZG93bl9kZWJ1Z2dpbmdfb25s eV9yZXBvcnQuQ29sdW1uSW50KDEpKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29vbGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVtbkludCgxKSl9OwotIH0KLSAK LSB2b2lkIERvR2V0RGVidWdSZXBvcnRDb29sZG93bnMoCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25f c2VydmljZS5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvc2Fm ZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2Vy dmljZS5oLm1lCTIwMjQtMDItMjUgMTU6MzQ6MTYuMTQwNzY4NDQ1ICswMTAwCi0rKysgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZp Y2F0aW9uX3NlcnZpY2UuaAkyMDI0LTAyLTI1IDE1OjM3OjQ3Ljc4OTY2NTgzNSArMDEwMAotQEAg LTI0LDYgKzI0LDcgQEAgc3RydWN0IE1lbnVOb3RpZmljYXRpb25FbnRyeSB7Ci0gICBpbnQgY29t bWFuZCA9IDA7Ci0gICBzdGQ6OnUxNnN0cmluZyBsYWJlbDsKLSAgIHNhZmV0eV9odWI6OlNhZmV0 eUh1Yk1vZHVsZVR5cGUgbW9kdWxlOwotKyAgTWVudU5vdGlmaWNhdGlvbkVudHJ5KGF1dG8gYywg YXV0byBsLCBhdXRvIG0pIDogY29tbWFuZChjKSwgbGFiZWwobCksIG1vZHVsZShtKSB7IH0KLSB9 OwotIAotIG5hbWVzcGFjZSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjLm1lIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJfc3R5bGVfdmlld3Mu Y2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Rh YnMvdGFiX3N0eWxlX3ZpZXdzLmNjLm1lCTIwMjQtMDItMjUgMTY6MjI6NDYuNjAxMjA5MjY5ICsw MTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90 YWJzL3RhYl9zdHlsZV92aWV3cy5jYwkyMDI0LTAyLTI1IDE2OjI0OjQ4LjExMDYxODQ3NSArMDEw MAotQEAgLTEyMTQsMTAgKzEyMTQsMTAgQEAgU2tQYXRoIENocm9tZVJlZnJlc2gyMDIzVGFiU3R5 bGVWaWV3czo6RwotIAotICAgICAvLyBSYWRpaSBhcmUgY2xvY2t3aXNlIGZyb20gdG9wIGxlZnQu Ci0gICAgIGNvbnN0IFNrVmVjdG9yIHJhZGlpWzRdID0gewotLSAgICAgICAgU2tWZWN0b3IodG9w X2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cyksCi0tICAg ICAgICBTa1ZlY3Rvcih0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3Ju ZXJfcmFkaXVzKSwKLS0gICAgICAgIFNrVmVjdG9yKGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRp dXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAotLSAgICAgICAgU2tWZWN0b3IoYm90 dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cyl9 OwotKyAgICAgICAgU2tWZWN0b3J7dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRl bnRfY29ybmVyX3JhZGl1c30sCi0rICAgICAgICBTa1ZlY3Rvcnt0b3BfY29udGVudF9jb3JuZXJf cmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzfSwKLSsgICAgICAgIFNrVmVjdG9ye2Jv dHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXN9 LAotKyAgICAgICAgU2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9t X2NvbnRlbnRfY29ybmVyX3JhZGl1c319OwotICAgICBTa1JSZWN0IHJyZWN0OwotICAgICBycmVj dC5zZXRSZWN0UmFkaWkoU2tSZWN0OjpNYWtlTFRSQihsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20p LCByYWRpaSk7Ci0gICAgIFNrUGF0aCBwYXRoOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVt X2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVtX2FjY2Vz c19wZXJtaXNzaW9uX2NvbnRleHQuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Bl cm1pc3Npb25fY29udGV4dC5jYy5tZQkyMDI0LTAyLTI1IDE4OjQ5OjMyLjUxMjA4MDA4NSArMDEw MAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1f YWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250ZXh0LmNjCTIw MjQtMDItMjUgMTk6MDc6MzYuNTE4NzExNjkzICswMTAwCi1AQCAtMzg2LDcgKzM4Niw3IEBAIGJv b2wgU2hvdWxkQmxvY2tBY2Nlc3NUb1BhdGgoY29uc3QgYmFzZToKLSAgICAgICBEQ0hFQ0soYmxv Y2sucGF0aCk7Ci0gICAgICAgYmxvY2tlZF9wYXRoID0gYmFzZTo6RmlsZVBhdGgoYmxvY2sucGF0 aCk7Ci0gICAgIH0KLS0gICAgcnVsZXMuZW1wbGFjZV9iYWNrKGJsb2NrZWRfcGF0aCwgYmxvY2su dHlwZSk7Ci0rICAgIHJ1bGVzLmVtcGxhY2VfYmFjaygpID0ge2Jsb2NrZWRfcGF0aCwgYmxvY2su dHlwZX07Ci0gICB9Ci0gCi0gICBiYXNlOjpGaWxlUGF0aCBuZWFyZXN0X2FuY2VzdG9yOwotQEAg LTE1NzUsMTEgKzE1NzUsMTEgQEAgdm9pZCBDaHJvbWVGaWxlU3lzdGVtQWNjZXNzUGVybWlzc2lv bkNvbgotICAgLy8gcHJvZmlsZSdzIGRpcmVjdG9yeSwgYXNzdW1pbmcgdGhlIHByb2ZpbGUgZGly IGlzIGEgY2hpbGQgb2YgdGhlIHVzZXIgZGF0YQotICAgLy8gZGlyLgotICAgc3RkOjp2ZWN0b3I8 QmxvY2tQYXRoUnVsZT4gZXh0cmFfcnVsZXM7Ci0tICBleHRyYV9ydWxlcy5lbXBsYWNlX2JhY2so cHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENoaWxkcmVuKTsKLSsgIGV4 dHJhX3J1bGVzLmVtcGxhY2VfYmFjaygpID0ge3Byb2ZpbGVfLT5HZXRQYXRoKCkuRGlyTmFtZSgp LCBrQmxvY2tBbGxDaGlsZHJlbn07Ci0gICBpZiAoZ19icm93c2VyX3Byb2Nlc3MtPnByb2ZpbGVf bWFuYWdlcigpKSB7Ci0tICAgIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjaygKLSsgICAgZXh0cmFf cnVsZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJv ZmlsZV9tYW5hZ2VyKCktPnVzZXJfZGF0YV9kaXIoKSwKLS0gICAgICAgIGtCbG9ja0FsbENoaWxk cmVuKTsKLSsgICAgICAgIGtCbG9ja0FsbENoaWxkcmVufTsKLSAgIH0KLSAKLSAgIGJhc2U6OlRo cmVhZFBvb2w6OlBvc3RUYXNrQW5kUmVwbHlXaXRoUmVzdWx0KAotLS0tIGNocm9taXVtLTEyMy4w LjYzMTIuNDYvY2hyb21lL2Jyb3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQu Y2MubWUJMjAyNC0wMy0xNSAxNToxNjo0Ni45ODAxMjM4MDYgKzAxMDAKLSsrKyBjaHJvbWl1bS0x MjMuMC42MzEyLjQ2L2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hfY2xp ZW50LmNjCTIwMjQtMDMtMTUgMTU6MTg6MzkuMDI0MDQyNTYwICswMTAwCi1AQCAtNDc0LDEwICs0 NzQsMTAgQEAKLSAgICAgICAgICAgICAgIGFsdGVybmF0aXZlX25hdl9tYXRjaCk7Ci0gCi0gICAv LyBTdG9yZSB0aGUgZGV0YWlscyBuZWNlc3NhcnkgdG8gb3BlbiB0aGUgb21uaWJveCBtYXRjaCB2 aWEgYnJvd3NlciBjb21tYW5kcy4KLS0gIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3Bh cmFtcyhMb2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFtcygKLSsgIGxvY2F0aW9uX2Jhcl8tPnNl dF9uYXZpZ2F0aW9uX3BhcmFtcyhMb2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFtc3sKLSAgICAg ICBkZXN0aW5hdGlvbl91cmwsIGRpc3Bvc2l0aW9uLCB0cmFuc2l0aW9uLCBtYXRjaF9zZWxlY3Rp b25fdGltZXN0YW1wLAotICAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhvdXRfc2No ZW1lLAotLSAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWUsIG1h dGNoLmV4dHJhX2hlYWRlcnMpKTsKLSsgICAgICBkZXN0aW5hdGlvbl91cmxfZW50ZXJlZF93aXRo X2h0dHBfc2NoZW1lLCBtYXRjaC5leHRyYV9oZWFkZXJzfSk7Ci0gCi0gICBpZiAoYnJvd3Nlcl8p IHsKLSAgICAgYXV0byBuYXZpZ2F0aW9uID0gY2hyb21lOjpPcGVuQ3VycmVudFVSTChicm93c2Vy Xyk7Ci0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3Rf Z3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYy5tZQkyMDI0LTAzLTE1IDE1OjE2OjQ3LjAw NDEyNDQzMSArMDEwMAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2Vy L2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24uY2MJMjAyNC0wMy0xNSAxNToy MTo1Ny43OTQyMjk1MjEgKzAxMDAKLUBAIC01NjUsNyArNTY1LDcgQEAKLSAgICAgICAgYmxpbms6 OmZlYXR1cmVzOjprRmxlZGdlRGVidWdSZXBvcnRSZXN0cmljdGVkQ29vbGRvd24uR2V0KCkgIT0K LSAgICAgICAgICAgIGJhc2U6Ok1pbGxpc2Vjb25kcygwKSkpIHsKLSAgICAgbmV3X2RlYnVnX3Jl cG9ydF9sb2Nrb3V0X2FuZF9jb29sZG93bnMuZGVidWdfcmVwb3J0X2Nvb2xkb3duX21hcFtvcmln aW5dID0KLS0gICAgICAgIERlYnVnUmVwb3J0Q29vbGRvd24obm93X25lYXJlc3RfbmV4dF9ob3Vy LCBjb29sZG93bl90eXBlKTsKLSsgICAgICAgIERlYnVnUmVwb3J0Q29vbGRvd257bm93X25lYXJl c3RfbmV4dF9ob3VyLCBjb29sZG93bl90eXBlfTsKLSAgIH0KLSAKLSAgIHJldHVybiBjYW5fc2Vu ZF9kZWJ1Z19yZXBvcnQ7Ci0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jaHJvbWUvYnJvd3Nl ci91aS9hdXRvZmlsbC9hdXRvZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYy5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvcgkyMDI0LTAzLTE1IDE1OjU1OjUxLjM1MTg3ODgyOSArMDEwMAotKysrIGNo cm9taXVtLTEyMy4wLjYzMTIuNDYvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxf Y29udGV4dF9tZW51X21hbmFnZXIuY2MJMjAyNC0wMy0xNSAxNjoxOTo0OC44NjIxODk0NjMgKzAx MDAKLUBAIC0yNzcsOCArMjc3LDggQEAKLSAgICAgQXV0b2ZpbGxNYW5hZ2VyJiBtYW5hZ2VyKSB7 Ci0gICBhdXRvJiBkcml2ZXIgPSBzdGF0aWNfY2FzdDxDb250ZW50QXV0b2ZpbGxEcml2ZXImPiht YW5hZ2VyLmRyaXZlcigpKTsKLSAgIGRyaXZlci5icm93c2VyX2V2ZW50cygpLlJlbmRlcmVyU2hv dWxkVHJpZ2dlclN1Z2dlc3Rpb25zKAotLSAgICAgIEZpZWxkR2xvYmFsSWQoZHJpdmVyLkdldEZy YW1lVG9rZW4oKSwKLS0gICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJZChwYXJhbXNf LmZpZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAgRmllbGRHbG9iYWxJZHtkcml2ZXIuR2V0RnJh bWVUb2tlbigpLAotKyAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklkKHBhcmFtc18u ZmllbGRfcmVuZGVyZXJfaWQpfSwKLSAgICAgICBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291 cmNlOjprTWFudWFsRmFsbGJhY2tQYXltZW50cyk7Ci0gICBMb2dNYW51YWxGYWxsYmFja0NvbnRl eHRNZW51RW50cnlBY2NlcHRlZCgKLSAgICAgICBzdGF0aWNfY2FzdDxCcm93c2VyQXV0b2ZpbGxN YW5hZ2VyJj4obWFuYWdlciksCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaC5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvcgkyMDI0LTAzLTEzIDIwOjM1OjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGNo cm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v Zm9udHMvZm9udF9wYWxldHRlLmgJMjAyNC0wMy0xNSAxNjoyNDo1Ny44OTk1NDA5NDEgKzAxMDAK LUBAIC05Niw3ICs5Niw3IEBACi0gICAgICAgQ29sb3I6OkNvbG9yU3BhY2UgY29sb3JfaW50ZXJw b2xhdGlvbl9zcGFjZSwKLSAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yOjpIdWVJbnRlcnBvbGF0 aW9uTWV0aG9kPiBodWVfaW50ZXJwb2xhdGlvbl9tZXRob2QpIHsKLSAgICAgcmV0dXJuIGJhc2U6 OkFkb3B0UmVmKG5ldyBGb250UGFsZXR0ZSgKLS0gICAgICAgIHN0YXJ0LCBlbmQsIE5vbk5vcm1h bGl6ZWRQZXJjZW50YWdlcyhzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZSksCi0rICAg ICAgICBzdGFydCwgZW5kLCBOb25Ob3JtYWxpemVkUGVyY2VudGFnZXN7c3RhcnRfcGVyY2VudGFn ZSwgZW5kX3BlcmNlbnRhZ2V9LAotICAgICAgICAgbm9ybWFsaXplZF9wZXJjZW50YWdlLCBhbHBo YV9tdWx0aXBsaWVyLCBjb2xvcl9pbnRlcnBvbGF0aW9uX3NwYWNlLAotICAgICAgICAgaHVlX2lu dGVycG9sYXRpb25fbWV0aG9kKSk7Ci0gICB9Ci1AQCAtMTcwLDcgKzE3MCw3IEBACi0gICAgICAg ZG91YmxlIG5vcm1hbGl6ZWRfcGVyY2VudGFnZSkgewotICAgICBkb3VibGUgZW5kX3BlcmNlbnRh Z2UgPSBub3JtYWxpemVkX3BlcmNlbnRhZ2UgKiAxMDAuMDsKLSAgICAgZG91YmxlIHN0YXJ0X3Bl cmNlbnRhZ2UgPSAxMDAuMCAtIGVuZF9wZXJjZW50YWdlOwotLSAgICByZXR1cm4gTm9uTm9ybWFs aXplZFBlcmNlbnRhZ2VzKHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKTsKLSsgICAg cmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVy Y2VudGFnZX07Ci0gICB9Ci0gCi0gICBkb3VibGUgR2V0QWxwaGFNdWx0aXBsaWVyKCkgY29uc3Qg ewotZGlmZiAtdXAgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvYXR0cmli dXRpb25fcmVwb3J0aW5nL2F0dHJpYnV0aW9uX21hbmFnZXJfaW1wbC5jYy5tZSBjaHJvbWl1bS0x MjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvYXR0cmli dXRpb25fbWFuYWdlcl9pbXBsLmNjCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50 L2Jyb3dzZXIvYXR0cmlidXRpb25fcmVwb3J0aW5nL2F0dHJpYnV0aW9uX21hbmFnZXJfaW1wbC5j Yy5tZQkyMDI0LTAzLTE3IDAwOjQyOjMxLjE4MzIyNjIxMSArMDEwMAotKysrIGNocm9taXVtLTEy My4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9hdHRyaWJ1 dGlvbl9tYW5hZ2VyX2ltcGwuY2MJMjAyNC0wMy0xNyAwMDo1NTo1Ni42ODk1MTI0MzAgKzAxMDAK LUBAIC0xNTA3LDcgKzE1MDcsNyBAQCB2b2lkIEF0dHJpYnV0aW9uTWFuYWdlckltcGw6OlByZXBh cmVOZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0OjpGcm9t SUQoZXZlbnQucmVuZGVyX2ZyYW1lX2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz b3VyY2Vfb3JpZ2luLCBkZXN0aW5hdGlvbl9vcmlnaW4sICZyZXBvcnRpbmdfb3JpZ2luLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZjYW5fYnlwYXNzX2Nvb2tpZV9jaGVjaykpIHsKLS0g ICAgICBuZWVkX3RvX2NoZWNrX2Nvb2tpZS5lbXBsYWNlX2JhY2sodXJsOjpPcmlnaW46OkNyZWF0 ZShpdGVtLnVybCksIGkpOwotKyAgICAgIG5lZWRfdG9fY2hlY2tfY29va2llLmVtcGxhY2VfYmFj aygpID0ge3VybDo6T3JpZ2luOjpDcmVhdGUoaXRlbS51cmwpLCBpfTsKLSAgICAgfSBlbHNlIHsK LSAgICAgICBhbGxvd2VkLmF0KGkpID0gY2FuX2J5cGFzc19jb29raWVfY2hlY2s7Ci0gICAgIH0K LWRpZmYgLXVwIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2ludGVyZXN0 X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40 Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5j YwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dy b3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MubWUJMjAyNC0wMy0xNyAwMDoyNDo0MS40MjA4 Mzc4ODQgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9p bnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCTIwMjQtMDMtMTcgMDA6MjY6 NDAuMjczMzY0NjM4ICswMTAwCi1AQCAtMzk5Myw3ICszOTkzLDcgQEAgRG9HZXRCaWRkaW5nQW5k QXVjdGlvblNlcnZlcktleXMoc3FsOjpEYQotICAgICBzdGQ6OnZlY3RvcjxCaWRkaW5nQW5kQXVj dGlvblNlcnZlcktleT4ga2V5czsKLSAgICAga2V5cy5yZXNlcnZlKGtleV9wcm90b3Mua2V5c19z aXplKCkpOwotICAgICBmb3IgKGF1dG8mIGtleV9wcm90byA6ICprZXlfcHJvdG9zLm11dGFibGVf a2V5cygpKSB7Ci0tICAgICAga2V5cy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKCprZXlfcHJvdG8u bXV0YWJsZV9rZXkoKSksIGtleV9wcm90by5pZCgpKTsKLSsgICAgICBrZXlzLmVtcGxhY2VfYmFj aygpID0ge3N0ZDo6bW92ZSgqa2V5X3Byb3RvLm11dGFibGVfa2V5KCkpLCBrZXlfcHJvdG8uaWQo KX07Ci0gICAgIH0KLSAgICAgcmV0dXJuIHtleHBpcmF0aW9uLCBrZXlzfTsKLSAgIH0KLS0tLSBj aHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21l bnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMDUgMTE6MjE6MjUuODY5MzA3NDM0ICswMjAwCi0rKysgY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvY2hyb21lL2Jyb3dzZXIvcmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2Nv bnRleHRfbWVudS5jYwkyMDI0LTA1LTA1IDEyOjExOjA3LjU3NTY5MDc4NCArMDIwMAotQEAgLTQw NDMsMTAgKzQwNDMsMTAgQEAKLSAgICAgYXV0b2ZpbGw6OkxvY2FsRnJhbWVUb2tlbiBmcmFtZV90 b2tlbiA9IGRyaXZlci0+R2V0RnJhbWVUb2tlbigpOwotICAgICBjbGllbnQtPkdldE1hbmFnZXIo KS5PcGVuQ29tcG9zZSgKLSAgICAgICAgICpkcml2ZXIsCi0tICAgICAgICBhdXRvZmlsbDo6Rm9y bUdsb2JhbElkKAotLSAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6Rm9ybVJlbmRl cmVySWQocGFyYW1zXy5mb3JtX3JlbmRlcmVyX2lkKSksCi0tICAgICAgICBhdXRvZmlsbDo6Rmll bGRHbG9iYWxJZCgKLS0gICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZpZWxkUmVu ZGVyZXJJZChwYXJhbXNfLmZpZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAgICBhdXRvZmlsbDo6 Rm9ybUdsb2JhbElkewotKyAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6Rm9ybVJl bmRlcmVySWQocGFyYW1zXy5mb3JtX3JlbmRlcmVyX2lkKX0sCi0rICAgICAgICBhdXRvZmlsbDo6 RmllbGRHbG9iYWxJZHsKLSsgICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZpZWxk UmVuZGVyZXJJZChwYXJhbXNfLmZpZWxkX3JlbmRlcmVyX2lkKX0sCi0gICAgICAgICBjb21wb3Nl OjpDb21wb3NlTWFuYWdlckltcGw6OlVpRW50cnlQb2ludDo6a0NvbnRleHRNZW51KTsKLSAgICAg R2V0QnJvd3NlcigpLT53aW5kb3coKS0+Tm90aWZ5UHJvbW9GZWF0dXJlVXNlZCgKLSAgICAgICAg IGNvbXBvc2U6OmZlYXR1cmVzOjprRW5hYmxlQ29tcG9zZSk7Ci0tLS0gY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2 aWNlX2ltcGwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0wMSAwMTo0Njo0OC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJvbWUvYnJvd3Nl ci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYwkyMDI0LTA1LTA1 IDEyOjEzOjIyLjgxNDgzOTc3OSArMDIwMAotQEAgLTEwOCw3ICsxMDgsNyBAQAotICAgICAgICAg ICAgICAgICAgICAgIENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+bWFuaWZlc3RfaWRfcGF0aCwg b3JpZ2luKSk7Ci0gICAgIEFTU0lHTl9PUl9SRVRVUk4oR1VSTCBpbnN0YWxsX3VybCwKLSAgICAg ICAgICAgICAgICAgICAgICBDb252ZXJ0UGF0aFRvVXJsKHN1Yl9hcHAtPmluc3RhbGxfdXJsX3Bh dGgsIG9yaWdpbikpOwotLSAgICBzdWJfYXBwcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG1hbmlm ZXN0X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxfdXJsKSk7Ci0rICAgIHN1Yl9hcHBzLmVtcGxhY2Vf YmFjaygpID0ge3N0ZDo6bW92ZShtYW5pZmVzdF9pZCksIHN0ZDo6bW92ZShpbnN0YWxsX3VybCl9 OwotICAgfQotICAgcmV0dXJuIHN1Yl9hcHBzOwotIH0KLUBAIC00NDAsNyArNDQwLDcgQEAKLSAg ICAgICAgIGJhc2U6OkJpbmRPbmNlKAotICAgICAgICAgICAgIFtdKHdlYmFwcHM6Ok1hbmlmZXN0 SWQgbWFuaWZlc3RfaWQsIGNvbnN0IHdlYmFwcHM6OkFwcElkJiBhcHBfaWQsCi0gICAgICAgICAg ICAgICAgd2ViYXBwczo6SW5zdGFsbFJlc3VsdENvZGUgcmVzdWx0X2NvZGUpIHsKLS0gICAgICAg ICAgICAgIHJldHVybiBTdWJBcHBJbnN0YWxsUmVzdWx0KG1hbmlmZXN0X2lkLCBhcHBfaWQsIHJl c3VsdF9jb2RlKTsKLSsgICAgICAgICAgICAgIHJldHVybiBTdWJBcHBJbnN0YWxsUmVzdWx0e21h bmlmZXN0X2lkLCBhcHBfaWQsIHJlc3VsdF9jb2RlfTsKLSAgICAgICAgICAgICB9LAotICAgICAg ICAgICAgIG1hbmlmZXN0X2lkKQotICAgICAgICAgICAgIC5UaGVuKGNvbmN1cnJlbnQuQ3JlYXRl Q2FsbGJhY2soKSksCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFzZS9hbGxvY2F0b3Iv cGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2xpZ2h0d2VpZ2h0X3F1YXJh bnRpbmUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0wNSAxMToyMToyNS44ODgz MDc3NDMgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2FsbG9jYXRvci9w YXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFu dGluZS5jYwkyMDI0LTA1LTA1IDEyOjE3OjA3LjY1ODA4NzEwMCArMDIwMAotQEAgLTczLDcgKzcz LDcgQEAKLSAgICAgLy8gc3luY2hyb25pemF0aW9uIGJldHdlZW4gdGhlIHJvb3QgYW5kIGJyYW5j aCwgc28gYGJyYW5jaF9zaXplX2luX2J5dGVzX2AKLSAgICAgLy8gbWF5IGJlIGxhcmdlciB0aGFu IGByb290Xy5jYXBhY2l0eV9pbl9ieXRlc19gIGF0IHRoaXMgcG9pbnQuCi0gCi0tICAgIHNsb3Rz Xy5lbXBsYWNlX2JhY2soc2xvdF9zdGFydCwgdXNhYmxlX3NpemUpOwotKyAgICBzbG90c18uZW1w bGFjZV9iYWNrKCkgPSB7c2xvdF9zdGFydCwgdXNhYmxlX3NpemV9OwotIAotICAgICAvLyBTd2Fw IHJhbmRvbWx5IHNvIHRoYXQgdGhlIHF1YXJhbnRpbmUgbGlzdCByZW1haW4gc2h1ZmZsZWQuCi0g ICAgIC8vIFRoaXMgaXMgbm90IHVuaWZvcm1seSByYW5kb20sIGJ1dCBzdWZmaWNpZW50bHkgcmFu ZG9tLgotZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdHRyaWJ1 dGlvbl9yZXBvcnRpbmcvcmVnaXN0cmF0aW9uX2luZm8uY2MubWUgY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvY29tcG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvcmVnaXN0cmF0aW9uX2luZm8u Y2MKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3Jl cG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYy5tZQkyMDI0LTA1LTA2IDEyOjAwOjUyLjk0NzY1 MjEyMiArMDIwMAotKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXR0cmli dXRpb25fcmVwb3J0aW5nL3JlZ2lzdHJhdGlvbl9pbmZvLmNjCTIwMjQtMDUtMDYgMTI6MDE6MDYu ODI5OTcwMTM3ICswMjAwCi1AQCAtOTYsNyArOTYsNyBAQCBSZWdpc3RyYXRpb25JbmZvOjpQYXJz ZUluZm8oY29uc3QgbmV0OjpzCi0gCi0gICBBU1NJR05fT1JfUkVUVVJOKGJvb2wgcmVwb3J0X2hl YWRlcl9lcnJvcnMsIFBhcnNlUmVwb3J0SGVhZGVyRXJyb3JzKGRpY3QpKTsKLSAKLS0gIHJldHVy biBSZWdpc3RyYXRpb25JbmZvKHByZWZlcnJlZF9wbGF0Zm9ybSwgcmVwb3J0X2hlYWRlcl9lcnJv cnMpOwotKyAgcmV0dXJuIFJlZ2lzdHJhdGlvbkluZm97cHJlZmVycmVkX3BsYXRmb3JtLCByZXBv cnRfaGVhZGVyX2Vycm9yc307Ci0gfQotIAotIH0gIC8vIG5hbWVzcGFjZSBhdHRyaWJ1dGlvbl9y ZXBvcnRpbmcKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2dwdS9jb21tYW5kX2J1 ZmZlci9jbGllbnQvc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5oLm1lIGNocm9taXVtLTEyNC4wLjYz NjcuMTE4L2dwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5o Ci0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9z aGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmgubWUJMjAyNC0wNS0wNiAwOTo1MzoxMC43NTU3ODEzOTIg KzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9ncHUvY29tbWFuZF9idWZmZXIvY2xp ZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuaAkyMDI0LTA1LTA2IDA5OjU0OjQyLjI4MDU4NjI3 NSArMDIwMAotQEAgLTY0LDE5ICs2NCwxOSBAQCBzdHJ1Y3QgU2hhcmVkSW1hZ2VJbmZvIHsKLSAg ICAgICAgICAgICAgICAgICBTa0FscGhhVHlwZSBhbHBoYV90eXBlLAotICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IHVzYWdlLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nX3ZpZXcg ZGVidWdfbGFiZWwpCi0tICAgICAgOiBtZXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1 cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLCB1c2FnZSksCi0rICAgICAgOiBtZXRhe2Zvcm1hdCwg c2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLCB1c2FnZX0sCi0g ICAgICAgICBkZWJ1Z19sYWJlbChkZWJ1Z19sYWJlbCkge30KLSAgIFNoYXJlZEltYWdlSW5mbyhj b25zdCB2aXo6OlNoYXJlZEltYWdlRm9ybWF0JiBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg Z2Z4OjpTaXplIHNpemUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgZ2Z4OjpDb2xvclNwYWNl JiBjb2xvcl9zcGFjZSwKLSAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1c2FnZSwKLSAgICAg ICAgICAgICAgICAgICBzdGQ6OnN0cmluZ192aWV3IGRlYnVnX2xhYmVsKQotLSAgICAgIDogbWV0 YShmb3JtYXQsCi0rICAgICAgOiBtZXRhe2Zvcm1hdCwKLSAgICAgICAgICAgICAgc2l6ZSwKLSAg ICAgICAgICAgICAgY29sb3Jfc3BhY2UsCi0gICAgICAgICAgICAgIGtUb3BMZWZ0X0dyU3VyZmFj ZU9yaWdpbiwKLSAgICAgICAgICAgICAga1ByZW11bF9Ta0FscGhhVHlwZSwKLS0gICAgICAgICAg ICAgdXNhZ2UpLAotKyAgICAgICAgICAgICB1c2FnZX0sCi0gICAgICAgICBkZWJ1Z19sYWJlbChk ZWJ1Z19sYWJlbCkge30KLSAgIC8vIFRoaXMgY29uc3RydWN0b3IgZXhpc3RzIG9ubHkgdG8gc3Vw cG9ydCB0aGUgREVQUkVDQVRFRCBDcmVhcmVTaGFyZWRJbWFnZQotICAgLy8gY2FsbCBiZWxvdyB0 aGF0IGFjY2VwdHMgYSBHcHVNZW1vcnlCdWZmZXIuIFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgd2hl biB0aGF0Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9ncHUvY29tbWFuZF9idWZm ZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2MubWUgY2hyb21p dW0tMTI0LjAuNjM2Ny4xMTgvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdl X2ludGVyZmFjZV9pbl9wcm9jZXNzLmNjCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1 L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNz LmNjLm1lCTIwMjQtMDUtMDYgMTE6MDU6MzYuOTc0MzUwMDYxICswMjAwCi0rKysgY2hyb21pdW0t MTI0LjAuNjM2Ny4xMTgvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlX2lu dGVyZmFjZV9pbl9wcm9jZXNzLmNjCTIwMjQtMDUtMDYgMTE6MDY6MDUuODQ4MDQ1Njk3ICswMjAw Ci1AQCAtNTc5LDExICs1NzksMTEgQEAgU2hhcmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNy ZWF0ZVNoYQotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZElt YWdlPigKLSAgICAgICBtYWlsYm94LAotLSAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEoCi0rICAg ICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXsKLSAgICAgICAgICAgdml6OjpHZXRTaW5nbGVQbGFuZVNo YXJlZEltYWdlRm9ybWF0KGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRGb3JtYXQoKSksCi0gICAgICAg ICAgIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRTaXplKCksIHNpX2luZm8ubWV0YS5jb2xvcl9zcGFj ZSwKLSAgICAgICAgICAgc2lfaW5mby5tZXRhLnN1cmZhY2Vfb3JpZ2luLCBzaV9pbmZvLm1ldGEu YWxwaGFfdHlwZSwKLS0gICAgICAgICAgc2lfaW5mby5tZXRhLnVzYWdlKSwKLSsgICAgICAgICAg c2lfaW5mby5tZXRhLnVzYWdlfSwKLSAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhv bGRlcl8pOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2dwdS9pcGMv Y2xpZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm1lIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNj Ci0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1L2lwYy9jbGllbnQvY2xpZW50X3NoYXJl ZF9pbWFnZV9pbnRlcmZhY2UuY2MubWUJMjAyNC0wNS0wNiAxMDoxMjo0Ny4wNjc5MjUzNjUgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hh cmVkX2ltYWdlX2ludGVyZmFjZS5jYwkyMDI0LTA1LTA2IDEwOjEzOjU2LjU2ODYyNzE5MCArMDIw MAotQEAgLTIzOCwxMSArMjM4LDExIEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+ IENsaWVudFMKLSAgICAgICBBZGRNYWlsYm94KHByb3h5Xy0+Q3JlYXRlU2hhcmVkSW1hZ2UoCi0g ICAgICAgICAgIGJ1ZmZlcl9mb3JtYXQsIHBsYW5lLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6 ZSgpLCBzaV9pbmZvLAotICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+Q2xvbmVIYW5kbGUo KSkpLAotLSAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEodml6OjpHZXRTaW5nbGVQbGFuZVNoYXJl ZEltYWdlRm9ybWF0KAotKyAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7dml6OjpHZXRTaW5nbGVQ bGFuZVNoYXJlZEltYWdlRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl dFBsYW5lQnVmZmVyRm9ybWF0KHBsYW5lLCBidWZmZXJfZm9ybWF0KSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2lfaW5mby5tZXRhLmNvbG9yX3NwYWNlLCBzaV9pbmZvLm1ldGEuc3Vy ZmFjZV9vcmlnaW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBzaV9pbmZvLm1ldGEuYWxw aGFfdHlwZSwgc2lfaW5mby5tZXRhLnVzYWdlKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg IHNpX2luZm8ubWV0YS5hbHBoYV90eXBlLCBzaV9pbmZvLm1ldGEudXNhZ2V9LAotICAgICAgIEdl blVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXywgZ3B1X21lbW9yeV9idWZmZXItPkdldFR5 cGUoKSk7Ci0gfQotIAotQEAgLTI3NywxMyArMjc3LDEzIEBAIENsaWVudFNoYXJlZEltYWdlSW50 ZXJmYWNlOjpDcmVhdGVTd2FwQ2gKLSAgIHJldHVybiBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFj ZTo6U3dhcENoYWluU2hhcmVkSW1hZ2VzKAotICAgICAgIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENs aWVudFNoYXJlZEltYWdlPigKLSAgICAgICAgICAgbWFpbGJveGVzLmZyb250X2J1ZmZlciwKLS0g ICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBz dXJmYWNlX29yaWdpbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBl LCB1c2FnZSksCi0rICAgICAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBj b2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAgICAgICAgICBzeW5jX3Rva2VuLCBob2xkZXJfKSwK LSAgICAgICBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCi0gICAgICAg ICAgIG1haWxib3hlcy5iYWNrX2J1ZmZlciwKLS0gICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0 YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCi0rICAgICAgICAgIFNoYXJl ZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAg ICAgICAgICBzeW5jX3Rva2VuLCBob2xkZXJfKSk7Ci0gfQotIAotQEAgLTMzOSw4ICszMzksOCBA QCBzY29wZWRfcmVmcHRyPENsaWVudFNoYXJlZEltYWdlPiBDbGllbnRTCi0gCi0gICByZXR1cm4g YmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAotICAgICAgIG1haWxib3gs Ci0tICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBz dXJmYWNlX29yaWdpbiwgYWxwaGFfdHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHVz YWdlKSwKLSsgICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3Bh Y2UsIHN1cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgdXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7Ci0g fQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29udGVudC9icm93c2VyL2dw dS9jb21wb3NpdG9yX3V0aWwuY2MubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29udGVudC9i cm93c2VyL2dwdS9jb21wb3NpdG9yX3V0aWwuY2MKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjEx OC9jb250ZW50L2Jyb3dzZXIvZ3B1L2NvbXBvc2l0b3JfdXRpbC5jYy5tZQkyMDI0LTA1LTA3IDEz OjM0OjMwLjM4NDU4MDkwNSArMDIwMAotKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbnRl bnQvYnJvd3Nlci9ncHUvY29tcG9zaXRvcl91dGlsLmNjCTIwMjQtMDUtMDcgMTM6Mzk6MjQuMjE5 MTMyNzMzICswMjAwCi1AQCAtMTA4LDcgKzEwOCw3IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVE YXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICAqYmFzZTo6Q29tbWFuZExpbmU6OkZvckN1cnJlbnRQ cm9jZXNzKCk7Ci0gCi0gICBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4gZmVhdHVyZXM7Ci0t ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsK LSAgICAgICAiMmRfY2FudmFzIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKLSAgICAg ICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVE XzJEX0NBTlZBUywKLUBAIC0xMTYsMTMgKzExNiwxMyBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJl RGF0YT4gR2V0R3B1RmVhdHVyCi0gICAgICAgRGlzYWJsZUluZm86OlByb2JsZW0oCi0gICAgICAg ICAgICJBY2NlbGVyYXRlZCAyRCBjYW52YXMgaXMgdW5hdmFpbGFibGU6IGVpdGhlciBkaXNhYmxl ZCAiCi0gICAgICAgICAgICJ2aWEgYmxvY2tsaXN0IG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCi0t ICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAgICAgdHJ1ZX07Ci0r ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAiY2FudmFzX29vcF9yYXN0ZXJp emF0aW9uIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKLSAgICAgICAgICAgZ3B1X2Zl YXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0NBTlZBU19PT1BfUkFTVEVSSVpBVElP TiwKLS0gICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRjaChzd2l0Y2hlczo6a0Rpc2FibGVB Y2NlbGVyYXRlZDJkQ2FudmFzKSkpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgICAg ICAgICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZUFjY2VsZXJhdGVk MmRDYW52YXMpKX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAiZ3B1 X2NvbXBvc2l0aW5nIiwKLSAgICAgICAvLyBUT0RPKHJpdnIpOiBSZXBsYWNlIHdpdGggYSBjaGVj ayB0byBzZWUgd2hpY2ggYmFja2VuZCBpcyB1c2VkIGZvcgotICAgICAgIC8vIGNvbXBvc2l0aW5n OyBkbyB0aGUgc2FtZSBmb3IgR1BVIHJhc3Rlcml6YXRpb24gaWYgaXQncyBlbmFibGVkLiBGb3IK LUBAIC0xMzYsMTYgKzEzNiwxNiBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4gR2V0R3B1 RmVhdHVyCi0gICAgICAgICAgICJhYm91dDpmbGFncyAiCi0gICAgICAgICAgICJvciB0aGUgY29t bWFuZCBsaW5lLiBUaGUgYnJvd3NlciB3aWxsIGZhbGwgYmFjayB0byBzb2Z0d2FyZSAiCi0gICAg ICAgICAgICJjb21wb3NpdGluZyBhbmQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIHdpbGwgYmUgdW5h dmFpbGFibGUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0r ICAgICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAid2Vi Z2wiLAotICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVE X1dFQkdMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfbGluZS5IYXNTd2l0 Y2goc3dpdGNoZXM6OmtEaXNhYmxlV2ViR0wpKSwKLSAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxl bSgKLSAgICAgICAgICAgIldlYkdMIGhhcyBiZWVuIGRpc2FibGVkIHZpYSBibG9ja2xpc3Qgb3Ig dGhlIGNvbW1hbmQgbGluZS4iKSwKLS0gICAgICBmYWxzZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNl X2JhY2soCi0rICAgICAgZmFsc2V9OwotKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0g ICAgICAgInZpZGVvX2RlY29kZSIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoCi0gICAg ICAgICAgIGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BQ0NFTEVSQVRF RF9WSURFT19ERUNPREUsCi1AQCAtMTU2LDggKzE1Niw4IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1 cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKLSAgICAg ICAgICAgIkFjY2VsZXJhdGVkIHZpZGVvIGRlY29kZSBoYXMgYmVlbiBkaXNhYmxlZCwgZWl0aGVy IHZpYSBibG9ja2xpc3QsICIKLSAgICAgICAgICAgImFib3V0OmZsYWdzIG9yIHRoZSBjb21tYW5k IGxpbmUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAg ICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAidmlkZW9f ZW5jb2RlIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKLSAgICAgICAgICAgZ3B1X2Zl YXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1ZJREVPX0VOQ09E RSwKLUBAIC0xNjksMzMgKzE2OSwzMyBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4gR2V0 R3B1RmVhdHVyCi0gICAgICAgRGlzYWJsZUluZm86OlByb2JsZW0oCi0gICAgICAgICAgICJBY2Nl bGVyYXRlZCB2aWRlbyBlbmNvZGUgaGFzIGJlZW4gZGlzYWJsZWQsIGVpdGhlciB2aWEgYmxvY2ts aXN0LCAiCi0gICAgICAgICAgICJhYm91dDpmbGFncyBvciB0aGUgY29tbWFuZCBsaW5lLiIpLAot LSAgICAgIHRydWUpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgICAgIHRydWV9Owot KyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgInJhc3Rlcml6YXRpb24iLAot ICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0dQVV9USUxFX1JBU1RFUkla QVRJT04pLAotICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAotICAgICAgICAgICAiQWNjZWxl cmF0ZWQgcmFzdGVyaXphdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCwgZWl0aGVyIHZpYSBibG9ja2xp c3QsICIKLSAgICAgICAgICAgImFib3V0OmZsYWdzIG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCi0t ICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAgICAgdHJ1ZX07Ci0r ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAib3BlbmdsIiwgU2FmZUdldEZl YXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX0dMKSk7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9B Q0NFTEVSQVRFRF9HTCl9OwotICNpZiBCVUlMREZMQUcoRU5BQkxFX1ZVTEtBTikKLS0gIGZlYXR1 cmVzLmVtcGxhY2VfYmFjaygKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAg ICJ2dWxrYW4iLAotLSAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8s IGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9WVUxLQU4pKTsKLSsgICAgICBTYWZlR2V0RmVhdHVyZVN0 YXR1cyhncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfVlVMS0FOKX07Ci0g I2VuZGlmCi0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICBmZWF0dXJlcy5lbXBsYWNlX2Jh Y2soKSA9IHsKLSAgICAgICAibXVsdGlwbGVfcmFzdGVyX3RocmVhZHMiLAotLSAgICAgIEdldEZh a2VGZWF0dXJlU3RhdHVzKE51bWJlck9mUmVuZGVyZXJSYXN0ZXJUaHJlYWRzKCkgPiAxKSk7Ci0r ICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoTnVtYmVyT2ZSZW5kZXJlclJhc3RlclRocmVhZHMo KSA+IDEpfTsKLSAjaWYgQlVJTERGTEFHKElTX0FORFJPSUQpCi0tICBmZWF0dXJlcy5lbXBsYWNl X2JhY2soCi0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAic3VyZmFjZV9j b250cm9sIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9pbmZvLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BTkRST0lE X1NVUkZBQ0VfQ09OVFJPTCkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BV X0ZFQVRVUkVfVFlQRV9BTkRST0lEX1NVUkZBQ0VfQ09OVFJPTCl9OwotICNlbmRpZgotLSAgZmVh dHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAg ICAgIndlYmdsMiIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoCi0gICAgICAgICAgIGdw dV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BQ0NFTEVSQVRFRF9XRUJHTDIs Ci1AQCAtMjAzLDEyICsyMDMsMTIgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdw dUZlYXR1cgotICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRjaChzd2l0Y2hlczo6 a0Rpc2FibGVXZWJHTDIpKSwKLSAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKLSAgICAgICAg ICAgIldlYkdMMiBoYXMgYmVlbiBkaXNhYmxlZCB2aWEgYmxvY2tsaXN0IG9yIHRoZSBjb21tYW5k IGxpbmUuIiksCi0tICAgICAgZmFsc2UpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCJyYXdf ZHJhdyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVh dHVyZXM6OklzVXNpbmdSYXdEcmF3KCkpKTsKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygiZGly ZWN0X3JlbmRlcmluZ19kaXNwbGF5X2NvbXBvc2l0b3IiLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIEdldEZha2VGZWF0dXJlU3RhdHVzKGZlYXR1cmVzOjpJc0RyRGNFbmFibGVkKCkpKTsKLS0g IGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgICAgICBmYWxzZX07Ci0rICBmZWF0dXJlcy5lbXBs YWNlX2JhY2soKSA9IHsicmF3X2RyYXciLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdldEZh a2VGZWF0dXJlU3RhdHVzKGZlYXR1cmVzOjpJc1VzaW5nUmF3RHJhdygpKX07Ci0rICBmZWF0dXJl cy5lbXBsYWNlX2JhY2soKSA9IHsiZGlyZWN0X3JlbmRlcmluZ19kaXNwbGF5X2NvbXBvc2l0b3Ii LAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdldEZha2VGZWF0dXJlU3RhdHVzKGZlYXR1cmVz OjpJc0RyRGNFbmFibGVkKCkpfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0gewotICAg ICAgICJ3ZWJncHUiLAotICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAotICAgICAgICAgICBn cHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfV0VCR1BV LAotQEAgLTIxNiwxNCArMjE2LDE0IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRH cHVGZWF0dXIKLSAgICAgICAgICAgICAgICFiYXNlOjpGZWF0dXJlTGlzdDo6SXNFbmFibGVkKDo6 ZmVhdHVyZXM6OmtXZWJHUFVTZXJ2aWNlKSksCi0gICAgICAgRGlzYWJsZUluZm86OlByb2JsZW0o Ci0gICAgICAgICAgICJXZWJHUFUgaGFzIGJlZW4gZGlzYWJsZWQgdmlhIGJsb2NrbGlzdCBvciB0 aGUgY29tbWFuZCBsaW5lLiIpLAotLSAgICAgIGZhbHNlKTsKLS0gIGZlYXR1cmVzLmVtcGxhY2Vf YmFjaygKLSsgICAgICBmYWxzZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAg ICAgICAic2tpYV9ncmFwaGl0ZSIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2Zl YXR1cmVfaW5mbywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBncHU6OkdQVV9GRUFUVVJF X1RZUEVfU0tJQV9HUkFQSElURSkpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9TS0lBX0dSQVBISVRF KX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAid2Vibm4iLAotLSAg ICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRV UkVfVFlQRV9XRUJOTikpOwotKyAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJl X2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9XRUJOTil9OwotICAgcmV0dXJuIGZlYXR1cmVz OwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEvYXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFu YWdlci5jYy5tZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9tb2R1bGVzL21lZGlhL2F1ZGlvL2F1ZGlvX3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2MK LS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9t b2R1bGVzL21lZGlhL2F1ZGlvL2F1ZGlvX3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2MubWUJMjAy NC0wNS0wNyAxNzozNjo1NC44ODQzMDM1NjEgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3 LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21lZGlhL2F1ZGlvL2F1ZGlv X3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2MJMjAyNC0wNS0wNyAxNzozODoyNi45NTQxNTc5Mjgg KzAyMDAKLUBAIC0xNzEsOCArMTcxLDggQEAgQXVkaW9SZW5kZXJlck1peGVyKiBBdWRpb1JlbmRl cmVyTWl4ZXJNYQotICAgICBEVkxPRygxKSA8PCAiTm90IHJldXNpbmcgbWl4ZXIgd2l0aCBlcnJv cnM6ICIgPDwgaXQtPnNlY29uZC5taXhlcjsKLSAKLSAgICAgLy8gTW92ZSBiYWQgbWl4ZXJzIG91 dCBvZiB0aGUgcmV1c2UgbWFwLgotLSAgICBkZWFkX21peGVyc18uZW1wbGFjZV9iYWNrKHN0ZDo6 bW92ZShpdC0+c2Vjb25kLm1peGVyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp dC0+c2Vjb25kLnJlZl9jb3VudCk7Ci0rICAgIGRlYWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2soKSA9 IHtzdGQ6Om1vdmUoaXQtPnNlY29uZC5taXhlciksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaXQtPnNlY29uZC5yZWZfY291bnR9OwotICAgICBtaXhlcnNfLmVyYXNlKGl0KTsKLSAg IH0KLSAKLUBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBBdWRpb1JlbmRlcmVyTWl4ZXJNYW5hZ2Vy OjpSZXR1cm5NaQotICAgICB9Ci0gICB9IGVsc2UgaWYgKGRlYWRfaXQgPT0gZGVhZF9taXhlcnNf LmVuZCgpICYmIG1peGVyX3JlZi5taXhlci0+SGFzU2lua0Vycm9yKCkpIHsKLSAgICAgLy8gTW92 ZSBiYWQgbWl4ZXJzIG91dCBvZiB0aGUgcmV1c2UgbWFwLgotLSAgICBkZWFkX21peGVyc18uZW1w bGFjZV9iYWNrKHN0ZDo6bW92ZShtaXhlcl9yZWYubWl4ZXIpLCBtaXhlcl9yZWYucmVmX2NvdW50 KTsKLSsgICAgZGVhZF9taXhlcnNfLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShtaXhlcl9y ZWYubWl4ZXIpLCBtaXhlcl9yZWYucmVmX2NvdW50fTsKLSAgICAgbWl4ZXJzXy5lcmFzZShpdCk7 Ci0gICB9Ci0gfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNC13b3JrYXJvdW5kX2NsYW5nX2J1 Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2ggYi9jaHJvbWl1bS0xMjQtd29ya2Fyb3VuZF9jbGFu Z19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA3MjdlNGY1Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyNC13b3JrYXJvdW5kX2NsYW5n X2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCww IEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21p c2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcgY2hy b21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0ZXIuY2MKLS0t LSBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5j Yy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcJMjAyMy0wNi0wNyAyMTo0 ODozNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jh c2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYwkyMDIzLTA2LTE3IDE2OjUzOjIwLjIxNjYyODU1NyAr MDIwMAotQEAgLTk0LDcgKzk0LDkgQEAgdm9pZCBDZG1Qcm9taXNlQWRhcHRlcjo6UmVqZWN0UHJv bWlzZSh1aQotIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OkNsZWFyKENsZWFyUmVhc29uIHJlYXNv bikgewotICAgLy8gUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBwcm9taXNlcy4KLSAgIERDSEVDSyh0 aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLS0gIGZvciAoYXV0byYgW3By b21pc2VfaWQsIHByb21pc2VdIDogcHJvbWlzZXNfKSB7Ci0rICBmb3IgKGF1dG8mIFtwX2ksIHBf ZV0gOiBwcm9taXNlc18pIHsKLSsgICAgYXV0byYgcHJvbWlzZV9pZCA9IHBfaTsKLSsgICAgYXV0 byYgcHJvbWlzZSA9IHBfZTsKLSAgICAgVFJBQ0VfRVZFTlRfTkVTVEFCTEVfQVNZTkNfRU5EMSgK LSAgICAgICAgICJtZWRpYSIsICJDZG1Qcm9taXNlIiwgVFJBQ0VfSURfV0lUSF9TQ09QRSgiQ2Rt UHJvbWlzZSIsIHByb21pc2VfaWQpLAotICAgICAgICAgInN0YXR1cyIsICJjbGVhcmVkIik7Ci1k aWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dv cmtlci9zZXJ2aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBwZXIuY2MubWUgY2hyb21pdW0tMTE1LjAu NTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29u dGV4dF93cmFwcGVyLmNjCi0tLS0gY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dz ZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjLm1lCTIw MjMtMDYtMTkgMDg6MDQ6MDIuMjg3MDcyNzIyICswMjAwCi0rKysgY2hyb21pdW0tMTE1LjAuNTc5 MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4 dF93cmFwcGVyLmNjCTIwMjMtMDYtMTkgMDg6MTg6MjQuNTc2ODE0OTUwICswMjAwCi1AQCAtMTM5 Myw3ICsxMzkzLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dFdyYXBwZXI6Ok1heWJlUAot ICAgICByZXR1cm47Ci0gICB9Ci0gCi0tICBhdXRvIFtkb2N1bWVudF91cmwsIGtleSwgY2FsbGJh Y2tdID0gc3RkOjptb3ZlKCpyZXF1ZXN0KTsKLSsgIGF1dG8gW2RfdSwga2V5LCBjYWxsYmFja10g PSBzdGQ6Om1vdmUoKnJlcXVlc3QpOwotKyAgYXV0byBkb2N1bWVudF91cmwgPSBkX3U7Ci0gCi0g ICBEQ0hFQ0soZG9jdW1lbnRfdXJsLmlzX3ZhbGlkKCkpOwotICAgVFJBQ0VfRVZFTlQxKCJTZXJ2 aWNlV29ya2VyIiwKLWRpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdvcml0aG0uY2Mu dGhhbiBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2Nv cmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNjCi0tLS0gY2hyb21pdW0tMTIx LjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dy aWRfbGF5b3V0X2FsZ29yaXRobS5jYy50aGFuCTIwMjMtMTItMTkgMTc6NTc6NTYuMjA1MTk3MjQ2 ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYwkyMDIzLTEyLTE5 IDE4OjEwOjEzLjc3ODYzNDUzMSArMDEwMAotQEAgLTM1MjcsOCArMzUyNyw4IEBAIHZvaWQgR3Jp ZExheW91dEFsZ29yaXRobTo6UGxhY2VHcmlkSXRlbXMKLSAgIERDSEVDSyhvdXRfcm93X2JyZWFr X2JldHdlZW4pOwotIAotICAgY29uc3QgYXV0byYgY29udGFpbmVyX3NwYWNlID0gR2V0Q29uc3Ry YWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0X2RhdGEsIHRy ZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLS0KLSsgIGNvbnN0IGF1dG8m IFtncmlkX2l0ZW1zLCBsX2QsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEo KTsKLSsgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9kOwotICAgY29uc3QgYXV0byogY2Fj aGVkX2xheW91dF9zdWJ0cmVlID0gY29udGFpbmVyX3NwYWNlLkdldEdyaWRMYXlvdXRTdWJ0cmVl KCk7Ci0gICBjb25zdCBhdXRvIGNvbnRhaW5lcl93cml0aW5nX2RpcmVjdGlvbiA9Ci0gICAgICAg Y29udGFpbmVyX3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rpb24oKTsKLUBAIC0zNjkxLDggKzM2OTEs OSBAQCB2b2lkIEdyaWRMYXlvdXRBbGdvcml0aG06OlBsYWNlR3JpZEl0ZW1zCi0gCi0gICAvLyBU T0RPKGlraWxwYXRyaWNrKTogVXBkYXRlIHxTZXRIYXNTZWVuQWxsQ2hpbGRyZW58IGFuZCBlYXJs eSBleGl0IGlmIHRydWUuCi0gICBjb25zdCBhdXRvJiBjb25zdHJhaW50X3NwYWNlID0gR2V0Q29u c3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0X2RhdGEs IHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLS0KLSsgIGNvbnN0IGF1 dG8mIFtnX2ksIGxfZCwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRyZWVSb290RGF0YSgpOwot KyAgY29uc3QgYXV0byYgZ3JpZF9pdGVtcyA9IGdfaTsKLSsgIGNvbnN0IGF1dG8mIGxheW91dF9k YXRhID0gbF9kOwotICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0gY29uc3Ry YWludF9zcGFjZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgpOwotICAgY29uc3QgYXV0byBjb250YWlu ZXJfd3JpdGluZ19kaXJlY3Rpb24gPQotICAgICAgIGNvbnN0cmFpbnRfc3BhY2UuR2V0V3JpdGlu Z0RpcmVjdGlvbigpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci9wcmVkaWN0b3JzL2xjcF9jcml0aWNhbF9wYXRoX3ByZWRpY3Rvci9wcmV3YXJtX2h0dHBf ZGlza19jYWNoZV9tYW5hZ2VyLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvcHJlZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRw X2Rpc2tfY2FjaGVfbWFuYWdlci5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvcHJlZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9o dHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5jYy5tZQkyMDI0LTAyLTI1IDE4OjAzOjUxLjY1NDU3OTU3 OSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGlj dG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVf bWFuYWdlci5jYwkyMDI0LTAyLTI1IDE4OjEyOjQ1LjE0NDI4Nzc1MCArMDEwMAotQEAgLTEzNiw3 ICsxMzYsOCBAQCB2b2lkIFByZXdhcm1IdHRwRGlza0NhY2hlTWFuYWdlcjo6TWF5YmVQCi0gICBz dGQ6OnBhaXI8dXJsOjpPcmlnaW4sIEdVUkw+IG9yaWdpbl9hbmRfdXJsOwotICAgc3RkOjpzd2Fw KG9yaWdpbl9hbmRfdXJsLCBxdWV1ZWRfam9ic18uZnJvbnQoKSk7Ci0gICBxdWV1ZWRfam9ic18u cG9wKCk7Ci0tICBjb25zdCBhdXRvJiBbb3JpZ2luLCB1cmxdID0gb3JpZ2luX2FuZF91cmw7Ci0r ICBjb25zdCBhdXRvJiBbb3JpZ2luLCB1XSA9IG9yaWdpbl9hbmRfdXJsOwotKyAgY29uc3QgYXV0 byYgdXJsID0gdTsKLSAgIFRSQUNFX0VWRU5UX1dJVEhfRkxPVzEoCi0gICAgICAgImxvYWRpbmci LCAiUHJld2FybUh0dHBEaXNrQ2FjaGVNYW5hZ2VyOjpNYXliZVByb2Nlc3NOZXh0UXVldWVkSm9i IiwKLSAgICAgICBUUkFDRV9JRF9MT0NBTCh0aGlzKSwKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3 LjExOC9jb250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVxdWVzdF91 cmxfbG9hZGVyX2NsaWVudC5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRp bmcJMjAyNC0wNS0wNSAxNjoyMjo0Ny41ODEwNzA4NjggKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC9jb250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVx dWVzdF91cmxfbG9hZGVyX2NsaWVudC5jYwkyMDI0LTA1LTA1IDE2OjI3OjE4Ljg1OTk3MjQ4MSAr MDIwMAotQEAgLTQxNyw3ICs0MTcsOCBAQAotICAgfQotIAotICAgU0NPUEVEX0NSQVNIX0tFWV9T VFJJTkcyNTYoIlNXUmFjZSIsICJyZXF1ZXN0X3VybCIsIHJlcXVlc3RfLnVybC5zcGVjKCkpOwot LSAgYXV0byBbcmVhZF9yZXN1bHQsIHJlYWRfYnVmZmVyXSA9IHJlYWRfYnVmZmVyX21hbmFnZXJf LT5SZWFkRGF0YSgpOwotKyAgYXV0byBbciwgcmVhZF9idWZmZXJdID0gcmVhZF9idWZmZXJfbWFu YWdlcl8tPlJlYWREYXRhKCk7Ci0rICBhdXRvIHJlYWRfcmVzdWx0ID0gcjsKLSAgIFRSQUNFX0VW RU5UX1dJVEhfRkxPVzIoIlNlcnZpY2VXb3JrZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAiU2VydmljZVdvcmtlclJhY2VOZXR3b3JrUmVxdWVzdFVSTExvYWRlckNsaWVudDo6UmVhZCIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX0lEX0xPQ0FMKHRoaXMpLAoKZGlmZiAt LWdpdCBhL2Nocm9taXVtLTEyNS1lbDctYXNzZXJ0LnBhdGNoIGIvY2hyb21pdW0tMTI1LWVsNy1h c3NlcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2ZmVkYQot LS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyNS1lbDctYXNzZXJ0LnBhdGNoCkBAIC0wLDAg KzEsMjQgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIv dWkvd2VidWkvdG9wX2Nocm9tZS93ZWJ1aV9jb250ZW50c193cmFwcGVyLmguYXNzZXJ0IGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvdG9wX2Nocm9tZS93ZWJ1 aV9jb250ZW50c193cmFwcGVyLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9i cm93c2VyL3VpL3dlYnVpL3RvcF9jaHJvbWUvd2VidWlfY29udGVudHNfd3JhcHBlci5oLmFzc2Vy dAkyMDI0LTA1LTE4IDE5OjMzOjM3LjE2NTI0MzU3NyArMDIwMAorKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvdG9wX2Nocm9tZS93ZWJ1aV9jb250ZW50 c193cmFwcGVyLmgJMjAyNC0wNS0xOCAxOTo0NTo1MS4yMjQ5OTU0ODkgKzAyMDAKK0BAIC0xODUs NyArMTg1LDcgQEAgY2xhc3MgV2ViVUlDb250ZW50c1dyYXBwZXJUIDogcHVibGljIFdlYgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNfZHJhZ2dhYmxlX3JlZ2lvbnMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUOjpHZXRXZWJVSU5hbWUoKSksCisgICAgICAg ICB3ZWJ1aV91cmxfKHdlYnVpX3VybCkgeworLSAgICBzdGF0aWNfYXNzZXJ0KAorKyAgICBhc3Nl cnQoCisgICAgICAgICB2aWV3c19tZXRyaWNzOjpJc1ZhbGlkV2ViVUlOYW1lVmFyaWFudCgiLiIg KyBUOjpHZXRXZWJVSU5hbWUoKSkpOworICAgICBpZiAoaXNfcmVhZHlfdG9fc2hvdygpKSB7Cisg ICAgICAgQ0hFQ0soR2V0V2ViVUlDb250cm9sbGVyKCkpOworZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC92OC9zcmMvYmFzZS9zbWFsbC12ZWN0b3IuaC5hc3NlcnQgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC92OC9zcmMvYmFzZS9zbWFsbC12ZWN0b3IuaAorLS0tIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvdjgvc3JjL2Jhc2Uvc21hbGwtdmVjdG9yLmguYXNzZXJ0CTIwMjQtMDUtMTUgMjM6 NDg6MTguMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC92OC9zcmMv YmFzZS9zbWFsbC12ZWN0b3IuaAkyMDI0LTA1LTE3IDEyOjMzOjU4Ljc0NTY1MTE3MyArMDIwMAor QEAgLTIyLDcgKzIyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBrU2l6ZSwgdHlw ZQorIGNsYXNzIFNtYWxsVmVjdG9yIHsKKyAgIC8vIEN1cnJlbnRseSBvbmx5IHN1cHBvcnQgdHJp dmlhbGx5IGNvcHlhYmxlIGFuZCB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIGRhdGEKKyAgIC8vIHR5 cGVzLCBhcyBpdCB1c2VzIG1lbWNweSB0byBjb3B5IGVsZW1lbnRzIGFuZCBuZXZlciBjYWxscyBk ZXN0cnVjdG9ycy4KKy0gIEFTU0VSVF9UUklWSUFMTFlfQ09QWUFCTEUoVCk7CisrICAvL0FTU0VS VF9UUklWSUFMTFlfQ09QWUFCTEUoVCk7CisgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh bGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpOworIAorICBwdWJsaWM6CgpkaWZmIC0tZ2l0IGEv Y2hyb21pdW0tMTI1LWVsNy1jb25zdGV4cHIucGF0Y2ggYi9jaHJvbWl1bS0xMjUtZWw3LWNvbnN0 ZXhwci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTgzYmIzCi0t LSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI1LWVsNy1jb25zdGV4cHIucGF0Y2gKQEAgLTAs MCArMSwyNDIgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dz ZXIvdWkvd2VidWkvY29tbWVyY2Uvc2hvcHBpbmdfaW5zaWdodHNfc2lkZV9wYW5lbF91aS5oLmNv bnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvY29tbWVy Y2Uvc2hvcHBpbmdfaW5zaWdodHNfc2lkZV9wYW5lbF91aS5oCistLS0gY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9jb21tZXJjZS9zaG9wcGluZ19pbnNpZ2h0 c19zaWRlX3BhbmVsX3VpLmguY29uc3QJMjAyNC0wNS0xOCAxODo1NzozNy4wOTkyMDMzMTQgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL2Nv bW1lcmNlL3Nob3BwaW5nX2luc2lnaHRzX3NpZGVfcGFuZWxfdWkuaAkyMDI0LTA1LTE4IDIyOjE2 OjUyLjg3OTYwMzA1MSArMDIwMAorQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgU2hvcHBpbmdJbnNp Z2h0c1NpZGVQYW5lbFVJCisgICAgICAgbW9qbzo6UGVuZGluZ1JlY2VpdmVyPAorICAgICAgICAg ICBzaG9wcGluZ19zZXJ2aWNlOjptb2pvbTo6U2hvcHBpbmdTZXJ2aWNlSGFuZGxlckZhY3Rvcnk+ IHJlY2VpdmVyKTsKKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlO YW1lKCkgeworKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsKKyAg ICAgcmV0dXJuICJTaG9wcGluZ0luc2lnaHRzU2lkZVBhbmVsIjsKKyAgIH0KKyAKK2RpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvY29tcG9zZS9j b21wb3NlX3VudHJ1c3RlZF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21l L2Jyb3dzZXIvdWkvd2VidWkvY29tcG9zZS9jb21wb3NlX3VudHJ1c3RlZF91aS5oCistLS0gY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9jb21wb3NlL2NvbXBv c2VfdW50cnVzdGVkX3VpLmguY29uc3QJMjAyNC0wNS0xOCAxOTowMzoxMy45OTkyNTU0NzEgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL2Nv bXBvc2UvY29tcG9zZV91bnRydXN0ZWRfdWkuaAkyMDI0LTA1LTE4IDIyOjE2OjUyLjg4MzYwMzEy NCArMDIwMAorQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgQ29tcG9zZVVudHJ1c3RlZFVJCisgICAg IHRyaWdnZXJpbmdfd2ViX2NvbnRlbnRzXyA9IHdlYl9jb250ZW50cy0+R2V0V2Vha1B0cigpOwor ICAgfQorIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7 IHJldHVybiAiQ29tcG9zZSI7IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJV SU5hbWUoKSB7IHJldHVybiAiQ29tcG9zZSI7IH0KKyAKKyAgcHJpdmF0ZToKKyAgIHZvaWQgQ3Jl YXRlQ29tcG9zZVNlc3Npb25VbnRydXN0ZWRQYWdlSGFuZGxlcigKK2RpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbGVucy9sZW5zX3VudHJ1c3Rl ZF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvbGVucy9sZW5zX3VudHJ1c3RlZF91aS5oCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9sZW5zL2xlbnNfdW50cnVzdGVkX3VpLmguY29uc3QJMjAy NC0wNS0xOCAxODo1OToxNi44NTk5OTU0MzIgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL2xlbnMvbGVuc191bnRydXN0ZWRfdWkuaAkyMDI0 LTA1LTE4IDIyOjE2OjUyLjg4MzYwMzEyNCArMDIwMAorQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg TGVuc1VudHJ1c3RlZFVJIDogcHVibGljIFVudHJ1c3RlZAorICAgICAgIG1vam86OlBlbmRpbmdS ZWNlaXZlcjxjb2xvcl9jaGFuZ2VfbGlzdGVuZXI6Om1vam9tOjpQYWdlSGFuZGxlcj4KKyAgICAg ICAgICAgcmVjZWl2ZXIpOworIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRX ZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1VudHJ1c3RlZCI7IH0KKysgIHN0YXRpYyBjb25zdCBz dGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1VudHJ1c3RlZCI7IH0KKyAK KyAgcHJpdmF0ZToKKyAgIC8vIGxlbnM6Om1vam9tOjpMZW5zUGFnZUhhbmRsZXJGYWN0b3J5Ogor ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9s ZW5zL3NlYXJjaF9idWJibGVfdWkuaC5jb25zdCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9t ZS9icm93c2VyL3VpL3dlYnVpL2xlbnMvc2VhcmNoX2J1YmJsZV91aS5oCistLS0gY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9sZW5zL3NlYXJjaF9idWJibGVf dWkuaC5jb25zdAkyMDI0LTA1LTE4IDE4OjU5OjQ5LjAyMDU3MzE3NyArMDIwMAorKysrIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbGVucy9zZWFyY2hfYnVi YmxlX3VpLmgJMjAyNC0wNS0xOCAyMjoxNjo1Mi44ODM2MDMxMjQgKzAyMDAKK0BAIC0yNiw3ICsy Niw3IEBAIGNsYXNzIFNlYXJjaEJ1YmJsZVVJIDogcHVibGljIFRvcENocm9tZVcKKyAgICAgICBt b2pvOjpQZW5kaW5nUmVjZWl2ZXI8bGVuczo6bW9qb206OlNlYXJjaEJ1YmJsZVBhZ2VIYW5kbGVy RmFjdG9yeT4KKyAgICAgICAgICAgcmVjZWl2ZXIpOworIAorLSAgc3RhdGljIGNvbnN0ZXhwciBz dGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1NlYXJjaEJ1YmJsZSI7IH0K KysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiTGVu c1NlYXJjaEJ1YmJsZSI7IH0KKyAKKyAgcHJpdmF0ZToKKyAgIC8vIGxlbnM6Om1vam9tOjpTZWFy Y2hCdWJibGVQYWdlSGFuZGxlckZhY3RvcnkKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9ib29rbWFya3MvYm9va21hcmtz X3NpZGVfcGFuZWxfdWkuaC5jb25zdCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93 c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvYm9va21hcmtzL2Jvb2ttYXJrc19zaWRlX3BhbmVsX3Vp LmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3Np ZGVfcGFuZWwvYm9va21hcmtzL2Jvb2ttYXJrc19zaWRlX3BhbmVsX3VpLmguY29uc3QJMjAyNC0w NS0xOCAxOTowMDowOC42ODY5MjY0NzEgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvYm9va21hcmtzL2Jvb2ttYXJrc19z aWRlX3BhbmVsX3VpLmgJMjAyNC0wNS0xOCAyMjoxNjo1Mi44ODM2MDMxMjQgKzAyMDAKK0BAIC02 Myw3ICs2Myw3IEBAIGNsYXNzIEJvb2ttYXJrc1NpZGVQYW5lbFVJCisgICBjb21tZXJjZTo6U2hv cHBpbmdMaXN0Q29udGV4dE1lbnVDb250cm9sbGVyKgorICAgR2V0U2hvcHBpbmdMaXN0Q29udGV4 dE1lbnVDb250cm9sbGVyKCk7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdl dFdlYlVJTmFtZSgpIHsgcmV0dXJuICJCb29rbWFya3NTaWRlUGFuZWwiOyB9CisrICBzdGF0aWMg Y29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIkJvb2ttYXJrc1NpZGVQ YW5lbCI7IH0KKyAKKyAgcHJpdmF0ZToKKyAgIC8vIHNpZGVfcGFuZWw6Om1vam9tOjpCb29rbWFy a3NQYWdlSGFuZGxlckZhY3Rvcnk6CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY29tcGFuaW9uL2NvbXBhbmlvbl9zaWRl X3BhbmVsX3VudHJ1c3RlZF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21l L2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jb21wYW5pb24vY29tcGFuaW9uX3NpZGVfcGFu ZWxfdW50cnVzdGVkX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93 c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY29tcGFuaW9uL2NvbXBhbmlvbl9zaWRlX3BhbmVsX3Vu dHJ1c3RlZF91aS5oLmNvbnN0CTIwMjQtMDUtMTggMTk6MDA6MzYuMzUxNDIzNDQwICswMjAwCisr KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3Bh bmVsL2NvbXBhbmlvbi9jb21wYW5pb25fc2lkZV9wYW5lbF91bnRydXN0ZWRfdWkuaAkyMDI0LTA1 LTE4IDIyOjE2OjUyLjg4NDYwMzE0MyArMDIwMAorQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ29t cGFuaW9uU2lkZVBhbmVsVW50cnVzdGVkVUkKKyAgIC8vIEdldHMgYSB3ZWFrIHBvaW50ZXIgdG8g dGhpcyBvYmplY3QuCisgICBiYXNlOjpXZWFrUHRyPENvbXBhbmlvblNpZGVQYW5lbFVudHJ1c3Rl ZFVJPiBHZXRXZWFrUHRyKCk7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdl dFdlYlVJTmFtZSgpIHsKKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUo KSB7CisgICAgIHJldHVybiAiQ29tcGFuaW9uU2lkZVBhbmVsVW50cnVzdGVkIjsKKyAgIH0KKyAK K2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkv c2lkZV9wYW5lbC9jdXN0b21pemVfY2hyb21lL2N1c3RvbWl6ZV9jaHJvbWVfdWkuaC5jb25zdCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwv Y3VzdG9taXplX2Nocm9tZS9jdXN0b21pemVfY2hyb21lX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY3VzdG9taXplX2No cm9tZS9jdXN0b21pemVfY2hyb21lX3VpLmguY29uc3QJMjAyNC0wNS0xOCAxOTowMDo1Ni4wODg3 NzgwMTIgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvY3VzdG9taXplX2Nocm9tZS9jdXN0b21pemVfY2hyb21lX3VpLmgJ MjAyNC0wNS0xOCAyMjoxNjo1Mi44ODQ2MDMxNDMgKzAyMDAKK0BAIC0xMDIsNyArMTAyLDcgQEAg Y2xhc3MgQ3VzdG9taXplQ2hyb21lVUkKKyAgICAgICAgICAgc2lkZV9wYW5lbDo6Y3VzdG9taXpl X2Nocm9tZTo6bW9qb206OldhbGxwYXBlclNlYXJjaEhhbmRsZXJGYWN0b3J5PgorICAgICAgICAg ICBwZW5kaW5nX3JlY2VpdmVyKTsKKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcg R2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIkN1c3RvbWl6ZUNocm9tZSI7IH0KKysgIHN0YXRpYyBj b25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiQ3VzdG9taXplQ2hyb21l IjsgfQorIAorICBwcml2YXRlOgorICAgLy8gc2lkZV9wYW5lbDo6bW9qb206OkN1c3RvbWl6ZUNo cm9tZVBhZ2VIYW5kbGVyRmFjdG9yeQorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3RlcnMvaGlzdG9y eV9jbHVzdGVyc19zaWRlX3BhbmVsX3VpLmguY29uc3QgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3RlcnMvaGlzdG9y eV9jbHVzdGVyc19zaWRlX3BhbmVsX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvaGlzdG9yeV9jbHVzdGVycy9oaXN0b3J5 X2NsdXN0ZXJzX3NpZGVfcGFuZWxfdWkuaC5jb25zdAkyMDI0LTA1LTE4IDE5OjAxOjE1Ljk4NjEz NTQ0NiArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvc2lkZV9wYW5lbC9oaXN0b3J5X2NsdXN0ZXJzL2hpc3RvcnlfY2x1c3RlcnNfc2lkZV9w YW5lbF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODg0NjAzMTQzICswMjAwCitAQCAtNzAsNyAr NzAsNyBAQCBjbGFzcyBIaXN0b3J5Q2x1c3RlcnNTaWRlUGFuZWxVSSA6IHB1YmxpCisgICB2b2lk IERpZEZpbmlzaE5hdmlnYXRpb24oCisgICAgICAgY29udGVudDo6TmF2aWdhdGlvbkhhbmRsZSog bmF2aWdhdGlvbl9oYW5kbGUpIG92ZXJyaWRlOworIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6 OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7CisrICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0 V2ViVUlOYW1lKCkgeworICAgICByZXR1cm4gIkhpc3RvcnlDbHVzdGVyc1NpZGVQYW5lbCI7Cisg ICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvcGVyZm9ybWFuY2VfY29udHJvbHMvcGVyZm9ybWFuY2Vfc2lkZV9w YW5lbF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvc2lkZV9wYW5lbC9wZXJmb3JtYW5jZV9jb250cm9scy9wZXJmb3JtYW5jZV9zaWRlX3Bh bmVsX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3NpZGVfcGFuZWwvcGVyZm9ybWFuY2VfY29udHJvbHMvcGVyZm9ybWFuY2Vfc2lkZV9wYW5l bF91aS5oLmNvbnN0CTIwMjQtMDUtMTggMTk6MDE6MzQuMjc0NDYzOTgyICswMjAwCisrKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3Bl cmZvcm1hbmNlX2NvbnRyb2xzL3BlcmZvcm1hbmNlX3NpZGVfcGFuZWxfdWkuaAkyMDI0LTA1LTE4 IDIyOjE2OjUyLjg4NDYwMzE0MyArMDIwMAorQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgUGVyZm9y bWFuY2VTaWRlUGFuZWxVSQorICAgICAgIG1vam86OlBlbmRpbmdSZWNlaXZlcjxjb2xvcl9jaGFu Z2VfbGlzdGVuZXI6Om1vam9tOjpQYWdlSGFuZGxlcj4KKyAgICAgICAgICAgcGVuZGluZ19yZWNl aXZlcik7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgp IHsgcmV0dXJuICJQZXJmb3JtYW5jZVNpZGVQYW5lbCI7IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6 OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiUGVyZm9ybWFuY2VTaWRlUGFuZWwiOyB9 CisgCisgIHByaXZhdGU6CisgICAvLyBzaWRlX3BhbmVsOjptb2pvbTo6UGVyZm9ybWFuY2VQYWdl SGFuZGxlckZhY3Rvcnk6CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9i cm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZF9hbnl0aGluZy9yZWFkX2FueXRoaW5nX3Vu dHJ1c3RlZF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIv dWkvd2VidWkvc2lkZV9wYW5lbC9yZWFkX2FueXRoaW5nL3JlYWRfYW55dGhpbmdfdW50cnVzdGVk X3VpLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVp L3NpZGVfcGFuZWwvcmVhZF9hbnl0aGluZy9yZWFkX2FueXRoaW5nX3VudHJ1c3RlZF91aS5oLmNv bnN0CTIwMjQtMDUtMTggMTk6MDE6NTIuODQyNzk3NTU2ICswMjAwCisrKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRfYW55dGhp bmcvcmVhZF9hbnl0aGluZ191bnRydXN0ZWRfdWkuaAkyMDI0LTA1LTE4IDIyOjE2OjUyLjg4NDYw MzE0MyArMDIwMAorQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVhZEFueXRoaW5nVW50cnVzdGVk VUkKKyAgICAgICBtb2pvOjpQZW5kaW5nUmVjZWl2ZXI8cmVhZF9hbnl0aGluZzo6bW9qb206OlVu dHJ1c3RlZFBhZ2VIYW5kbGVyRmFjdG9yeT4KKyAgICAgICAgICAgcmVjZWl2ZXIpOworIAorLSAg c3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7CisrICBzdGF0aWMg Y29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeworICAgICByZXR1cm4gIlJlYWRBbnl0 aGluZ1VudHJ1c3RlZCI7CisgICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZGluZ19saXN0L3JlYWRpbmdf bGlzdF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvc2lkZV9wYW5lbC9yZWFkaW5nX2xpc3QvcmVhZGluZ19saXN0X3VpLmgKKy0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVh ZGluZ19saXN0L3JlYWRpbmdfbGlzdF91aS5oLmNvbnN0CTIwMjQtMDUtMTggMTk6MDI6MTcuMzgx MjM4Mzc1ICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91 aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRpbmdfbGlzdC9yZWFkaW5nX2xpc3RfdWkuaAkyMDI0LTA1 LTE4IDIyOjE2OjUyLjg4NTYwMzE2MiArMDIwMAorQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUmVh ZGluZ0xpc3RVSSA6IHB1YmxpYyBUb3BDaHJvbWVXZQorIAorICAgdm9pZCBTZXRBY3RpdmVUYWJV UkwoY29uc3QgR1VSTCYgdXJsKTsKKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcg R2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlJlYWRpbmdMaXN0IjsgfQorKyAgc3RhdGljIGNvbnN0 IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJSZWFkaW5nTGlzdCI7IH0KKyAK KyAgcHJpdmF0ZToKKyAgIC8vIHJlYWRpbmdfbGlzdDo6bW9qb206OlBhZ2VIYW5kbGVyRmFjdG9y eToKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvc2lkZV9wYW5lbC91c2VyX25vdGVzL3VzZXJfbm90ZXNfc2lkZV9wYW5lbF91aS5oLmNvbnN0 IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5l bC91c2VyX25vdGVzL3VzZXJfbm90ZXNfc2lkZV9wYW5lbF91aS5oCistLS0gY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMv dXNlcl9ub3Rlc19zaWRlX3BhbmVsX3VpLmguY29uc3QJMjAyNC0wNS0xOCAxOTowMjozNC40MTM1 NDQzNDEgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvdXNlcl9ub3Rlcy91c2VyX25vdGVzX3NpZGVfcGFuZWxfdWkuaAky MDI0LTA1LTE4IDIyOjE2OjUyLjg4NTYwMzE2MiArMDIwMAorQEAgLTM1LDcgKzM1LDcgQEAgY2xh c3MgVXNlck5vdGVzU2lkZVBhbmVsVUkKKyAKKyAgIHZvaWQgc2V0X2Jyb3dzZXIoQnJvd3Nlciog YnJvd3NlcikgeyBicm93c2VyXyA9IGJyb3dzZXI7IH0KKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIg c3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlVzZXJOb3Rlc1NpZGVQYW5lbCI7 IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAi VXNlck5vdGVzU2lkZVBhbmVsIjsgfQorIAorICBwcml2YXRlOgorICAgLy8gdXNlcl9ub3Rlczo6 bW9qb206OlVzZXJOb3Rlc1BhZ2VIYW5kbGVyRmFjdG9yeQorZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS90YWJfc2VhcmNoL3RhYl9zZWFyY2hf dWkuaC5jb25zdCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVp L3RhYl9zZWFyY2gvdGFiX3NlYXJjaF91aS5oCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci91aS93ZWJ1aS90YWJfc2VhcmNoL3RhYl9zZWFyY2hfdWkuaC5jb25zdAky MDI0LTA1LTE4IDE5OjAyOjUyLjI2MTg2NDk2NSArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvdGFiX3NlYXJjaC90YWJfc2VhcmNoX3VpLmgJ MjAyNC0wNS0xOCAyMjoxNjo1Mi44ODU2MDMxNjIgKzAyMDAKK0BAIC00Niw3ICs0Niw3IEBAIGNs YXNzIFRhYlNlYXJjaFVJIDogcHVibGljIFRvcENocm9tZVdlYlUKKyAgICAgcmV0dXJuIHBhZ2Vf aGFuZGxlcl8uZ2V0KCk7CisgICB9CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5n IEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJUYWJTZWFyY2giOyB9CisrICBzdGF0aWMgY29uc3Qg c3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlRhYlNlYXJjaCI7IH0KKyAKKyAg cHJpdmF0ZToKKyAgIC8vIHRhYl9zZWFyY2g6Om1vam9tOjpQYWdlSGFuZGxlckZhY3RvcnkKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vbW5pYm94L2Jyb3dzZXIv b25fZGV2aWNlX3RhaWxfbW9kZWxfc2VydmljZS5jYy5jb25zdCBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbXBvbmVudHMvb21uaWJveC9icm93c2VyL29uX2RldmljZV90YWlsX21vZGVsX3NlcnZp Y2UuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb21uaWJveC9icm93 c2VyL29uX2RldmljZV90YWlsX21vZGVsX3NlcnZpY2UuY2MuY29uc3QJMjAyNC0wNS0xOCAyMzow NjoyMi4wNzE1ODY5MDkgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVu dHMvb21uaWJveC9icm93c2VyL29uX2RldmljZV90YWlsX21vZGVsX3NlcnZpY2UuY2MJMjAyNC0w NS0xOCAyMzowNjo0NC44MjcxMzM0NjEgKzAyMDAKK0BAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFj ZSB7CisgLy8gVGhlIG1heGltdW0gaWRsZSB0aW1lIGJlZm9yZSB0aGUgbW9kZWwgZXhlY3V0b3Ig aXMgdW5sb2FkZWQgZnJvbSBtZW1vcnkuCisgY29uc3RleHByIGJhc2U6OlRpbWVEZWx0YSBrTWF4 RXhlY3V0b3JJZGxlU2Vjb25kcyA9IGJhc2U6OlNlY29uZHMoNjApOworIC8vIENvbnN0YW50cyBm b3IgVEZsaXRlIG1vZGVsIHZhbGlkYXRpb24uCistY29uc3RleHByIHN0ZDo6c3RyaW5nIGtUZXN0 UHJlZml4ID0gImZhY2UiOworK2NvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0UHJlZml4ID0gImZhY2Ui OworIGNvbnN0ZXhwciBzdGQ6OnN0cmluZ192aWV3IGtNb2RlbFZhbGlkYXRpb25Td2l0Y2hOYW1l ID0KKyAgICAgIm9tbmlib3gtb24tZGV2aWNlLXRhaWwtbW9kZWwtdmFsaWRhdGlvbiI7CisgCitk aWZmIC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgubWUgY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRv ZmlsbF9pMThuX2FwaS5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9h dXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRvZmlsbF9pMThuX2FwaS5oLm1lCTIw MjQtMDUtMDcgMDc6NTg6MTAuMjAyOTYwMjk4ICswMjAwCisrKysgY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRvZmls bF9pMThuX2FwaS5oCTIwMjQtMDUtMDcgMDc6NTk6MjkuNDEzNDExNzY3ICswMjAwCitAQCAtMTYs OCArMTYsOCBAQCBuYW1lc3BhY2UgYXV0b2ZpbGw6OmkxOG5fbW9kZWxfZGVmaW5pdGlvCisgLy8g Q291bnRyeSBjb2RlIHRoYXQgcmVwcmVzZW50cyBhdXRvZmlsbCdzIGxlZ2FjeSBhZGRyZXNzIGhp ZXJhcmNoeSBtb2RlbCBhcworIC8vIHN0b3JlZCBga0F1dG9maWxsTW9kZWxSdWxlc2AuIEFzIGEg d29ya2Fyb3VuZCBmb3IgR0NDIHdlIGRlY2xhcmUgdGhlCisgLy8gc3RkOjpzdHJpbmcgY29uc3Rl eHByIGZpcnN0LgorLWNvbnN0ZXhwciBpbmxpbmUgc3RkOjpzdHJpbmcga0xlZ2FjeUhpZXJhcmNo eUNvdW50cnlDb2RlU3RyaW5neyJYWCJ9OworLWNvbnN0ZXhwciBBZGRyZXNzQ291bnRyeUNvZGUg a0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlID0KKytjb25zdCBpbmxpbmUgc3RkOjpzdHJpbmcg a0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlU3RyaW5neyJYWCJ9OworK2NvbnN0IEFkZHJlc3ND b3VudHJ5Q29kZSBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGUgPQorICAgICBBZGRyZXNzQ291 bnRyeUNvZGUoa0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlU3RyaW5nKTsKKyAKKyAvLyBDcmVh dGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGRyZXNzIGhpZXJhcmNoeSBtb2RlbCBjb3JyZXNwb25k aW5nIHRvIHRoZQorZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9h dXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaC5tZSBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19l dmVudC5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9j b3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaC5tZQkyMDI0LTA1LTA3IDA3OjU5OjM4LjIz OTU3MzQ5NyArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0 b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmgJMjAyNC0wNS0wNyAwODowMDo1 NS41Nzg5OTA2NTkgKzAyMDAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBJc1JlcXVpcmVkIHsK KyAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgbm90IGRlZmluZWQgYW5kIGNvbnN0ZXZhbC4gVGhlcmVm b3JlLCBhbnkgZXZhbHVhdGlvbiB3aWxsCisgICAvLyBmYWlsIGFuZCBmYWlsIGF0IGNvbXBpbGUg dGltZS4KKyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLSAgY29uc3RldmFsIG9wZXJhdG9yIFQo KTsgIC8vIE5PTElOVAorKyAgb3BlcmF0b3IgVCgpOyAgLy8gTk9MSU5UCisgfTsKKyAKKyB9ICAv LyBuYW1lc3BhY2UgaW50ZXJuYWwKK2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nv bXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBlcy5oLm1lIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90 eXBlcy5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9oaXN0b3J5L2Nv cmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVzLmgubWUJMjAyNC0wNS0wNiAxODowMToyOC42MDY4NDU1 NTQgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2hpc3Rvcnkv Y29yZS9icm93c2VyL2hpc3RvcnlfdHlwZXMuaAkyMDI0LTA1LTA2IDE4OjA2OjE1LjQ5Mjc1MTI1 MiArMDIwMAorQEAgLTcwLDcgKzcwLDcgQEAgY29uc3RleHByIFZpc2l0ZWRMaW5rSUQga0ludmFs aWRWaXNpdGVkTAorIHR5cGVkZWYgc3RkOjptYXA8VmlzaXRJRCwgVmlzaXRTb3VyY2U+IFZpc2l0 U291cmNlTWFwOworIAorIC8vIENvbnN0YW50IHVzZWQgdG8gcmVwcmVzZW50IHRoYXQgbm8gYXBw X2lkIGlzIHVzZWQgZm9yIG1hdGNoaW5nLgorLWlubGluZSBjb25zdGV4cHIgc3RkOjpvcHRpb25h bDxzdGQ6OnN0cmluZz4ga05vQXBwSWRGaWx0ZXIgPSBzdGQ6Om51bGxvcHQ7CisraW5saW5lIGNv bnN0IHN0ZDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGtOb0FwcElkRmlsdGVyID0gc3RkOjpudWxs b3B0OworIAorIC8vIFZpc2l0Um93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rpb25hcnkvc2ltcGxlX3Vy bF9wYXR0ZXJuX21hdGNoZXIuY2MubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvc2VydmljZXMv bmV0d29yay9zaGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5fbWF0Y2hlci5jYwor LS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rp b25hcnkvc2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MubWUJMjAyNC0wNS0wNyAwMDowNzox NS43MjA1NzM3OTQgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9zZXJ2aWNlcy9u ZXR3b3JrL3NoYXJlZF9kaWN0aW9uYXJ5L3NpbXBsZV91cmxfcGF0dGVybl9tYXRjaGVyLmNjCTIw MjQtMDUtMDcgMDA6MDg6MDcuNjMzNTE5NjA0ICswMjAwCitAQCAtMjgsMTcgKzI4LDE3IEBAIG5h bWVzcGFjZSBuZXR3b3JrIHsKKyBuYW1lc3BhY2UgeworIAorIC8vIGh0dHBzOi8vdXJscGF0dGVy bi5zcGVjLndoYXR3Zy5vcmcvI2RlZmF1bHQtb3B0aW9ucworLWNvbnN0ZXhwciBsaWJ1cmxwYXR0 ZXJuOjpPcHRpb25zIGtEZWZhdWx0T3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiIiwKKytj b25zdCBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtEZWZhdWx0T3B0aW9ucyA9IHsuZGVsaW1pdGVy X2xpc3QgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnByZWZpeF9saXN0ID0gIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC5zZW5zaXRpdmUgPSB0cnVlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RyaWN0ID0gdHJ1ZX07 CisgLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jaG9zdG5hbWUtb3B0aW9u cworLWNvbnN0ZXhwciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtIb3N0bmFtZU9wdGlvbnMgPSB7 LmRlbGltaXRlcl9saXN0ID0gIi4iLAorK2NvbnN0IGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga0hv c3RuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLiIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZml4X2xpc3QgPSAiIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5z ZW5zaXRpdmUgPSB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLnN0cmljdCA9IHRydWV9OworIC8vIGh0dHBzOi8vdXJscGF0dGVybi5z cGVjLndoYXR3Zy5vcmcvI3BhdGhuYW1lLW9wdGlvbnMKKy1jb25zdGV4cHIgbGlidXJscGF0dGVy bjo6T3B0aW9ucyBrUGF0aG5hbWVPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIvIiwKKytj b25zdCBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtQYXRobmFtZU9wdGlvbnMgPSB7LmRlbGltaXRl cl9saXN0ID0gIi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnByZWZpeF9saXN0ID0gIi8iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRydWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RyaWN0ID0g dHJ1ZX07CitkaWZmIC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9m aWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRlcm5zLnB5 Lm1lMSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJv d3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRlcm5zLnB5CistLS0gY2hyb21p dW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZm9ybV9w YXJzaW5nL3RyYW5zcGlsZV9yZWdleF9wYXR0ZXJucy5weS5tZTEJMjAyNC0wNS0wNyAxMDo1ODox My4zMTY3NTY5MjYgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRz L2F1dG9maWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRl cm5zLnB5CTIwMjQtMDUtMDcgMTA6NTg6MzAuODIxMDgzMDYxICswMjAwCitAQCAtNTQsNyArNTQs NyBAQCBkZWYgZ2VuZXJhdGVfbWF0Y2hpbmdfcGF0dGVybl9lcXVhbHMobmFtCisgICB5aWVsZCAn Ly8gQ2hlY2tzIGlmIGFsbCB0aGUgbWF0Y2hpbmcgcGF0dGVybnMgZm9yIHRoZSBnaXZlbiBQYXR0 ZXJuU291cmNlcycKKyAgIHlpZWxkICcvLyBhbmQgbGFuZ3VhZ2UgYXJlIHRoZSBzYW1lIC0gbWVh bmluZyB0aGF0IGNvbXB1dGluZyBwcmVkaWN0aW9ucyBmb3InCisgICB5aWVsZCAnLy8gYm90aCBp cyB1bm5lY2Vzc2FyeSwgc2luY2UgaXQgd2lsbCB5aWVsZCB0aGUgc2FtZSByZXN1bHQuJworLSAg eWllbGQgJ2NvbnN0ZXhwciBib29sIEFyZU1hdGNoaW5nUGF0dGVybnNFcXVhbEltcGwoUGF0dGVy blNvdXJjZSBhLCcKKysgIHlpZWxkICdjb25zdCBib29sIEFyZU1hdGNoaW5nUGF0dGVybnNFcXVh bEltcGwoUGF0dGVyblNvdXJjZSBhLCcKKyAgIHlpZWxkICcgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhdHRlcm5Tb3VyY2UgYiwnCisgICB5aWVsZCAnICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUNvZGUgbGFuZ19j b2RlKSB7JworICAgeWllbGQgJyAgaWYgKGEgPT0gYikgeycKCmRpZmYgLS1naXQgYS9jaHJvbWl1 bS0xMjUtZWw3LWRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbi5w YXRjaCBiL2Nocm9taXVtLTEyNS1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5v bnltb3VzLXVuaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZj Mzg1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjUtZWw3LWRlZmF1bHQtY29uc3Ry dWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbi5wYXRjaApAQCAtMCwwICsxLDM2IEBACitk aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvdmFyaWF0aW9ucy9zZXJ2 aWNlL3VpX3N0cmluZ19vdmVycmlkZXIuY2MuZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmct YW5vbnltb3VzLXVuaW9uIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92YXJpYXRp b25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY29tcG9uZW50cy92YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5j Yy5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24JMjAyNC0wNS0x NSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bXBvbmVudHMvdmFyaWF0aW9ucy9zZXJ2aWNlL3VpX3N0cmluZ19vdmVycmlkZXIuY2MJMjAyNC0w NS0xNyAxMjozMzo1OC42ODQ2NDk5MDkgKzAyMDAKK0BAIC0xMiw3ICsxMiw3IEBACisgCisgbmFt ZXNwYWNlIHZhcmlhdGlvbnMgeworIAorLVVJU3RyaW5nT3ZlcnJpZGVyOjpVSVN0cmluZ092ZXJy aWRlcigpID0gZGVmYXVsdDsKKytVSVN0cmluZ092ZXJyaWRlcjo6VUlTdHJpbmdPdmVycmlkZXIo KSB7fQorIAorIFVJU3RyaW5nT3ZlcnJpZGVyOjpVSVN0cmluZ092ZXJyaWRlcihiYXNlOjpzcGFu PGNvbnN0IHVpbnQzMl90PiByZXNvdXJjZV9oYXNoZXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJhc2U6OnNwYW48Y29uc3QgaW50PiByZXNvdXJjZV9pbmRpY2VzKQor ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3Rf Z3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmNjLmRlZmF1bHQtY29uc3Ry dWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbiBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3Np Z25hbHMuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9pbnRl cmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuY2MuZGVmYXVsdC1j b25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uCTIwMjQtMDUtMTUgMjM6NDY6MTcu MDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dz ZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmNjCTIw MjQtMDUtMTcgMTI6MzM6NTguNjg1NjQ5OTI5ICswMjAwCitAQCAtNDYsNyArNDYsNyBAQCBzaXpl X3QgR2V0UmVzdWx0U2l6ZUJ5dGVzKGNvbnN0IEhlYWRlckRpCisgCisgfSAgLy8gbmFtZXNwYWNl CisgCistSGVhZGVyRGlyZWN0RnJvbVNlbGxlclNpZ25hbHM6OlJlc3VsdDo6UmVzdWx0KCkgPSBk ZWZhdWx0OworK0hlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpSZXN1bHQ6OlJlc3VsdCgp IHt9CisgCisgSGVhZGVyRGlyZWN0RnJvbVNlbGxlclNpZ25hbHM6OlJlc3VsdDo6UmVzdWx0KAor ICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBzZWxsZXJfc2lnbmFscywKK2RpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGlu Z3MvY29yZS92OC9mcm96ZW5fYXJyYXkuaC5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1h bm9ueW1vdXMtdW5pb24gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2Zyb3plbl9hcnJheS5oCistLS0gY2hyb21pdW0tMTI1 LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2Zy b3plbl9hcnJheS5oLmRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlv bgkyMDI0LTA1LTE4IDA5OjUyOjIyLjM4NTMzMDMwNCArMDIwMAorKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9mcm96 ZW5fYXJyYXkuaAkyMDI0LTA1LTE4IDA5OjUyOjUxLjAyMzg5MTUyNSArMDIwMAorQEAgLTM2LDcg KzM2LDcgQEAgY2xhc3MgRnJvemVuQXJyYXkgZmluYWwgOiBwdWJsaWMgYmluZGluZworICAgdXNp bmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBWZWN0b3JUeXBlOjpjb25zdF9pdGVyYXRvcjsK KyAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBWZWN0b3JUeXBlOjpj b25zdF9yZXZlcnNlX2l0ZXJhdG9yOworIAorLSAgRnJvemVuQXJyYXkoKSA9IGRlZmF1bHQ7Cisr ICBGcm96ZW5BcnJheSgpIHt9CisgICBleHBsaWNpdCBGcm96ZW5BcnJheShWZWN0b3JUeXBlIGFy cmF5KSA6IGFycmF5XyhzdGQ6Om1vdmUoYXJyYXkpKSB7fQorICAgfkZyb3plbkFycmF5KCkgb3Zl cnJpZGUgPSBkZWZhdWx0OworIAoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDctbm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IucGF0Y2ggYi9jaHJvbWl1bS0xMjUtZWw3LW5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NzNk NDEKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjUtZWw3LW5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yLnBhdGNoCkBAIC0wLDAgKzEsMTgyMSBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25f YWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Iv c3JjL3BhcnRpdGlvbl9hbGxvYy9saWdodHdlaWdodF9xdWFyYW50aW5lLmNjCistLS0gY2hyb21p dW0tMTI1LjAuNjQyMi42MC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9w YXJ0aXRpb25fYWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ1OjQ5LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFy dGl0aW9uX2FsbG9jL2xpZ2h0d2VpZ2h0X3F1YXJhbnRpbmUuY2MJMjAyNC0wNS0xNyAxMjozMzo1 OC43MDc2NTAzODUgKzAyMDAKK0BAIC03Myw3ICs3Myw3IEBAIGJvb2wgTGlnaHR3ZWlnaHRRdWFy YW50aW5lQnJhbmNoOjpRdWFyYW4KKyAgICAgLy8gc3luY2hyb25pemF0aW9uIGJldHdlZW4gdGhl IHJvb3QgYW5kIGJyYW5jaCwgc28gYGJyYW5jaF9zaXplX2luX2J5dGVzX2AKKyAgICAgLy8gbWF5 IGJlIGxhcmdlciB0aGFuIGByb290Xy5jYXBhY2l0eV9pbl9ieXRlc19gIGF0IHRoaXMgcG9pbnQu CisgCistICAgIHNsb3RzXy5lbXBsYWNlX2JhY2soc2xvdF9zdGFydCwgdXNhYmxlX3NpemUpOwor KyAgICBzbG90c18uZW1wbGFjZV9iYWNrKCkgPSB7c2xvdF9zdGFydCwgdXNhYmxlX3NpemV9Owor IAorICAgICAvLyBTd2FwIHJhbmRvbWx5IHNvIHRoYXQgdGhlIHF1YXJhbnRpbmUgbGlzdCByZW1h aW4gc2h1ZmZsZWQuCisgICAgIC8vIFRoaXMgaXMgbm90IHVuaWZvcm1seSByYW5kb20sIGJ1dCBz dWZmaWNpZW50bHkgcmFuZG9tLgorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNl L21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRf aGlzdG9ncmFtX2FsbG9jYXRvci5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9t ZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRvci5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ1OjUwLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRv ci5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcwODY1MDQwNiArMDIwMAorQEAgLTIyMCwxMyArMjIw LDEzIEBAIFBlcnNpc3RlbnRTcGFyc2VIaXN0b2dyYW1EYXRhTWFuYWdlcjo6TG8KKyAgICAgLy8g VGhlIHNhbXBsZS1yZWNvcmQgY291bGQgYmUgZm9yIGFueSBzcGFyc2UgaGlzdG9ncmFtLiBBZGQg dGhlIHJlZmVyZW5jZQorICAgICAvLyB0byB0aGUgYXBwcm9wcmlhdGUgY29sbGVjdGlvbiBmb3Ig bGF0ZXIgdXNlLgorICAgICBpZiAoZm91bmRfaWQgPT0gbWF0Y2hfaWQpIHsKKy0gICAgICBmb3Vu ZF9yZWNvcmRzLmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsKKysgICAgICBmb3VuZF9yZWNvcmRz LmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFsdWV9OworICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAg ICAgfSBlbHNlIHsKKyAgICAgICBzdGQ6OnZlY3RvcjxSZWZlcmVuY2VBbmRTYW1wbGU+KiBzYW1w bGVzID0KKyAgICAgICAgICAgR2V0U2FtcGxlTWFwUmVjb3Jkc1doaWxlTG9ja2VkKGZvdW5kX2lk KTsKKyAgICAgICBDSEVDSyhzYW1wbGVzKTsKKy0gICAgICBzYW1wbGVzLT5lbXBsYWNlX2JhY2so cmVmLCB2YWx1ZSk7CisrICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNrKCkgPSB7cmVmLCB2YWx1 ZX07CisgICAgIH0KKyAgIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFz ZS9uaXgvbWltZV91dGlsX3hkZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2MKKy0tLSBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IJMjAyNC0wNS0xNSAyMzo0NTo1MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43 MDg2NTA0MDYgKzAyMDAKK0BAIC01Niw3ICs1Niw3IEBAIHZvaWQgTG9hZEFsbE1pbWVDYWNoZUZp bGVzKE1pbWVUeXBlTWFwJgorICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogR2V0WERHRGF0YVNl YXJjaExvY2F0aW9ucyhlbnYuZ2V0KCkpKSB7CisgICAgIEZpbGVQYXRoIG1pbWVfY2FjaGUgPSBw YXRoLkFwcGVuZCgibWltZS9taW1lLmNhY2hlIik7CisgICAgIGlmIChHZXRGaWxlSW5mbyhtaW1l X2NhY2hlLCAmaW5mbykgJiYgUGFyc2VNaW1lVHlwZXMobWltZV9jYWNoZSwgbWFwKSkgeworLSAg ICAgIGZpbGVzLmVtcGxhY2VfYmFjayhtaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZpZWQpOwor KyAgICAgIGZpbGVzLmVtcGxhY2VfYmFjaygpID0ge21pbWVfY2FjaGUsIGluZm8ubGFzdF9tb2Rp ZmllZH07CisgICAgIH0KKyAgIH0KKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MKKy0tLSBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDU6NTAuMDAwMDAwMDAwICswMjAwCisr KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYwky MDI0LTA1LTE3IDEyOjMzOjU4LjcwOTY1MDQyNyArMDIwMAorQEAgLTIxOTgsOCArMjE5OCw4IEBA IHZvaWQgVHJhY2VMb2c6OlNldFRyYWNlQnVmZmVyRm9yVGVzdGluZygKKyAjaWYgQlVJTERGTEFH KFVTRV9QRVJGRVRUT19DTElFTlRfTElCUkFSWSkKKyB2b2lkIFRyYWNlTG9nOjpPblNldHVwKGNv bnN0IHBlcmZldHRvOjpEYXRhU291cmNlQmFzZTo6U2V0dXBBcmdzJiBhcmdzKSB7CisgICBBdXRv TG9jayBsb2NrKHRyYWNrX2V2ZW50X2xvY2tfKTsKKy0gIHRyYWNrX2V2ZW50X3Nlc3Npb25zXy5l bXBsYWNlX2JhY2soYXJncy5pbnRlcm5hbF9pbnN0YW5jZV9pbmRleCwgKmFyZ3MuY29uZmlnLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmJhY2tlbmRfdHlwZSk7 CisrICB0cmFja19ldmVudF9zZXNzaW9uc18uZW1wbGFjZV9iYWNrKCkgPSB7YXJncy5pbnRlcm5h bF9pbnN0YW5jZV9pbmRleCwgKmFyZ3MuY29uZmlnLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhcmdzLmJhY2tlbmRfdHlwZX07CisgfQorIAorIHZvaWQgVHJhY2VMb2c6 Ok9uU3RhcnQoY29uc3QgcGVyZmV0dG86OkRhdGFTb3VyY2VCYXNlOjpTdGFydEFyZ3MmKSB7Citk aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0 dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0dGlu Z3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9u X3Byb3ZpZGVyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MDAu MDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2MJMjAyNC0w NS0xNyAxMjozMzo1OC43MDk2NTA0MjcgKzAyMDAKK0BAIC0yNTgsOCArMjU4LDggQEAgdm9pZCBP bmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpPblN1c3BlbgorIAorICAgICAgIHdoaWxlIChydWxl X2l0ZXJhdG9yICYmIHJ1bGVfaXRlcmF0b3ItPkhhc05leHQoKSkgeworICAgICAgICAgYXV0byBy dWxlID0gcnVsZV9pdGVyYXRvci0+TmV4dCgpOworLSAgICAgICAgcGF0dGVybnNfdG9fZGVsZXRl LmVtcGxhY2VfYmFjayhzZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRl cm4pOworKyAgICAgICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygpID0ge3NldHRp bmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybn07CisgICAgICAgICBwZXJt aXNzaW9uczo6UGVybWlzc2lvblVtYVV0aWw6OlJlY29yZE9uZVRpbWVQZXJtaXNzaW9uRXZlbnQo CisgICAgICAgICAgICAgc2V0dGluZ190eXBlLAorICAgICAgICAgICAgIHBlcm1pc3Npb25zOjpP bmVUaW1lUGVybWlzc2lvbkV2ZW50OjpFWFBJUkVEX09OX1NVU1BFTkQpOworQEAgLTM2MSw4ICsz NjEsOCBAQCB2b2lkIE9uZVRpbWVQZXJtaXNzaW9uUHJvdmlkZXI6OkRlbGV0ZUVuCisgICAgIGF1 dG8gcnVsZSA9IHJ1bGVfaXRlcmF0b3ItPk5leHQoKTsKKyAgICAgaWYgKHJ1bGUtPnByaW1hcnlf cGF0dGVybi5NYXRjaGVzKG9yaWdpbl9ndXJsKSAmJgorICAgICAgICAgcnVsZS0+c2Vjb25kYXJ5 X3BhdHRlcm4uTWF0Y2hlcyhvcmlnaW5fZ3VybCkpIHsKKy0gICAgICBwYXR0ZXJuc190b19kZWxl dGUuZW1wbGFjZV9iYWNrKAorLSAgICAgICAgICBjb250ZW50X3NldHRpbmdfdHlwZSwgcnVsZS0+ cHJpbWFyeV9wYXR0ZXJuLCBydWxlLT5zZWNvbmRhcnlfcGF0dGVybik7CisrICAgICAgcGF0dGVy bnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygpID0geworKyAgICAgICAgICBjb250ZW50X3NldHRp bmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLCBydWxlLT5zZWNvbmRhcnlfcGF0dGVybn07 CisgICAgICAgcGVybWlzc2lvbnM6OlBlcm1pc3Npb25VbWFVdGlsOjpSZWNvcmRPbmVUaW1lUGVy bWlzc2lvbkV2ZW50KAorICAgICAgICAgICBjb250ZW50X3NldHRpbmdfdHlwZSwgdHJpZ2dlcl9l dmVudCk7CisgICAgIH0KK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jy b3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25h dmlnYXRpb25fdGhyb3R0bGUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9w cm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJvdHRsZS5jYworLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQv cHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5hZ2Vt ZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjCTIwMjQtMDUtMTcg MTI6MzM6NTguNzA5NjUwNDI3ICswMjAwCitAQCAtNjcsOCArNjcsOCBAQCBiYXNlOjpmbGF0X21h cDxzdGQ6OnN0cmluZywgU0FNTFByb2ZpbGVBCisgICAvLyBUT0RPKGNyYnVnLmNvbS8xNDQ1MDcy KTogQWRkIGFjdHVhbCBkb21haW5zIHdpdGggYXR0cmlidXRlIG5hbWVzLgorICAgcHJvZmlsZV9h dHRyaWJ1dGVzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAgInN1cHBvcnRlZC50ZXN0 IiwKKy0gICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXMoInBsYWNlaG9sZGVyTmFtZSIsICJwbGFj ZWhvbGRlckRvbWFpbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGFjZWhvbGRl clRva2VuIikpKTsKKysgICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXN7InBsYWNlaG9sZGVyTmFt ZSIsICJwbGFjZWhvbGRlckRvbWFpbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw bGFjZWhvbGRlclRva2VuIn0pKTsKKyAKKyAgIC8vIEV4dHJhY3QgZG9tYWlucyBhbmQgYXR0cmli dXRlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUgc3dpdGNoLgorICAgY29uc3QgYmFzZTo6Q29tbWFu ZExpbmUmIGNvbW1hbmRfbGluZSA9CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNz X3Blcm1pc3Npb25fY29udGV4dC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmls ZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYworLS0tIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5 c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250ZXh0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMTUgMjM6NDY6MDEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lz dGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTA2 NTA0NDcgKzAyMDAKK0BAIC0zODcsNyArMzg3LDcgQEAgYm9vbCBTaG91bGRCbG9ja0FjY2Vzc1Rv UGF0aChjb25zdCBiYXNlOgorICAgICAgIERDSEVDSyhibG9jay5wYXRoKTsKKyAgICAgICBibG9j a2VkX3BhdGggPSBiYXNlOjpGaWxlUGF0aChibG9jay5wYXRoKTsKKyAgICAgfQorLSAgICBydWxl cy5lbXBsYWNlX2JhY2soYmxvY2tlZF9wYXRoLCBibG9jay50eXBlKTsKKysgICAgcnVsZXMuZW1w bGFjZV9iYWNrKCkgPSB7YmxvY2tlZF9wYXRoLCBibG9jay50eXBlfTsKKyAgIH0KKyAKKyAgIGJh c2U6OkZpbGVQYXRoIG5lYXJlc3RfYW5jZXN0b3I7CitAQCAtMTY4OCwxMSArMTY4OCwxMSBAQCB2 b2lkIENocm9tZUZpbGVTeXN0ZW1BY2Nlc3NQZXJtaXNzaW9uQ29uCisgICAvLyBwcm9maWxlJ3Mg ZGlyZWN0b3J5LCBhc3N1bWluZyB0aGUgcHJvZmlsZSBkaXIgaXMgYSBjaGlsZCBvZiB0aGUgdXNl ciBkYXRhCisgICAvLyBkaXIuCisgICBzdGQ6OnZlY3RvcjxCbG9ja1BhdGhSdWxlPiBleHRyYV9y dWxlczsKKy0gIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjayhwcm9maWxlXy0+R2V0UGF0aCgpLkRp ck5hbWUoKSwga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNr KCkgPSB7cHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENoaWxkcmVufTsK KyAgIGlmIChnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJvZmlsZV9tYW5hZ2VyKCkpIHsKKy0gICAgZXh0 cmFfcnVsZXMuZW1wbGFjZV9iYWNrKAorKyAgICBleHRyYV9ydWxlcy5lbXBsYWNlX2JhY2soKSA9 IHsKKyAgICAgICAgIGdfYnJvd3Nlcl9wcm9jZXNzLT5wcm9maWxlX21hbmFnZXIoKS0+dXNlcl9k YXRhX2RpcigpLAorLSAgICAgICAga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgICAgICAga0Jsb2Nr QWxsQ2hpbGRyZW59OworICAgfQorIAorICAgYmFzZTo6VGhyZWFkUG9vbDo6UG9zdFRhc2tBbmRS ZXBseVdpdGhSZXN1bHQoCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9i cm93c2VyL3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYy5u b19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93 c2VyL3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYworLS0t IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdl ci9tZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMTggMTk6MDg6MzUuNDE1MDI2ODIzICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMvcGFnZV9k aXNjYXJkZXIuY2MJMjAyNC0wNS0xOCAxOToxMDowNS41Mjc2NDQ3MDggKzAyMDAKK0BAIC01Myw3 ICs1Myw3IEBAIHN0ZDo6dmVjdG9yPFBhZ2VEaXNjYXJkZXI6OkRpc2NhcmRFdmVudD4KKyAgICAg aWYgKGxpZmVjeWNsZV91bml0LT5EaXNjYXJkVGFiKAorICAgICAgICAgICAgIGRpc2NhcmRfcmVh c29uLAorICAgICAgICAgICAgIC8qbWVtb3J5X2Zvb3RwcmludF9lc3RpbWF0ZT0qL3Byb3h5LnNl Y29uZCkpIHsKKy0gICAgICBkaXNjYXJkX2V2ZW50cy5lbXBsYWNlX2JhY2soYmFzZTo6VGltZVRp Y2tzOjpOb3coKSwgcHJveHkuc2Vjb25kKTsKKysgICAgICBkaXNjYXJkX2V2ZW50cy5lbXBsYWNl X2JhY2soKSA9IHtiYXNlOjpUaW1lVGlja3M6Ok5vdygpLCBwcm94eS5zZWNvbmR9OworICAgICB9 CisgICB9CisgICByZXR1cm4gZGlzY2FyZF9ldmVudHM7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9yZW5kZXJfdmll d19jb250ZXh0X21lbnUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdf Y29udGV4dF9tZW51LmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MDIuMDAwMDAwMDAwICswMjAwCisr KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0 X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzEx NjUwNDY4ICswMjAwCitAQCAtNDA0OSwxMCArNDA0OSwxMCBAQCB2b2lkIFJlbmRlclZpZXdDb250 ZXh0TWVudTo6RXhlY09wZW5Db21wCisgICAgIGF1dG9maWxsOjpMb2NhbEZyYW1lVG9rZW4gZnJh bWVfdG9rZW4gPSBkcml2ZXItPkdldEZyYW1lVG9rZW4oKTsKKyAgICAgY2xpZW50LT5HZXRNYW5h Z2VyKCkuT3BlbkNvbXBvc2UoCisgICAgICAgICAqZHJpdmVyLAorLSAgICAgICAgYXV0b2ZpbGw6 OkZvcm1HbG9iYWxJZCgKKy0gICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZvcm1S ZW5kZXJlcklkKHBhcmFtc18uZm9ybV9yZW5kZXJlcl9pZCkpLAorLSAgICAgICAgYXV0b2ZpbGw6 OkZpZWxkR2xvYmFsSWQoCistICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGaWVs ZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCkpLAorKyAgICAgICAgYXV0b2Zp bGw6OkZvcm1HbG9iYWxJZHsKKysgICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZv cm1SZW5kZXJlcklkKHBhcmFtc18uZm9ybV9yZW5kZXJlcl9pZCl9LAorKyAgICAgICAgYXV0b2Zp bGw6OkZpZWxkR2xvYmFsSWR7CisrICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpG aWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCl9LAorICAgICAgICAgY29t cG9zZTo6Q29tcG9zZU1hbmFnZXJJbXBsOjpVaUVudHJ5UG9pbnQ6OmtDb250ZXh0TWVudSk7Cisg ICAgIEdldEJyb3dzZXIoKS0+d2luZG93KCktPk5vdGlmeVByb21vRmVhdHVyZVVzZWQoCisgICAg ICAgICBjb21wb3NlOjpmZWF0dXJlczo6a0VuYWJsZUNvbXBvc2UpOworZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9zeW5jL3Rlc3QvaW50ZWdyYXRpb24vcHJv ZHVjdF9zcGVjaWZpY2F0aW9uc19oZWxwZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9zeW5jL3Rlc3QvaW50ZWdyYXRpb24v cHJvZHVjdF9zcGVjaWZpY2F0aW9uc19oZWxwZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3N5bmMvdGVzdC9pbnRlZ3JhdGlvbi9wcm9kdWN0X3NwZWNpZmlj YXRpb25zX2hlbHBlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE3IDEzOjA1 OjAyLjE5OTYzMTY5OCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jy b3dzZXIvc3luYy90ZXN0L2ludGVncmF0aW9uL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfaGVscGVy LmNjCTIwMjQtMDUtMTcgMTU6NTc6MDUuMTk2NjUzMTUwICswMjAwCitAQCAtNDEsOSArNDEsOSBA QCBib29sIFByb2R1Y3RTcGVjaWZpY2F0aW9uc0NoZWNrZXI6OklzRXhpCisgYm9vbCBQcm9kdWN0 U3BlY2lmaWNhdGlvbnNDaGVja2VyOjpJc1NwZWNpZmljc0F2YWlsYWJsZUFuZEVxdWFsKCkgewor ICAgZm9yIChjb25zdCBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQmIHByb2R1Y3Rfc3BlY2lmaWNh dGlvbnNfc2V0IDoKKyAgICAgICAgc2VydmljZV8tPkdldEFsbFByb2R1Y3RTcGVjaWZpY2F0aW9u cygpKSB7CistICAgIHN0ZDo6dmVjdG9yPGNvbnN0IEdVUkw+IHNwZWNpZmljc191cmxzOworKyAg ICBzdGQ6OnZlY3RvcjxHVVJMPiBzcGVjaWZpY3NfdXJsczsKKyAgICAgZm9yIChzeW5jX3BiOjpD b21wYXJpc29uRGF0YSBkYXRhIDogY29tcGFyZV9zcGVjaWZpY3NfLT5kYXRhKCkpIHsKKy0gICAg ICBzcGVjaWZpY3NfdXJscy5wdXNoX2JhY2soR1VSTChkYXRhLnVybCgpKSk7CisrICAgICAgc3Bl Y2lmaWNzX3VybHMuZW1wbGFjZV9iYWNrKCkgPSB7ZGF0YS51cmwoKX07CisgICAgIH0KKyAgICAg aWYgKHByb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0LnV1aWQoKS5Bc0xvd2VyY2FzZVN0cmluZygp ID09CisgICAgICAgICAgICAgY29tcGFyZV9zcGVjaWZpY3NfLT51dWlkKCkgJiYKK2RpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2Zp bGxfY29udGV4dF9tZW51X21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRvZmlsbF9jb250 ZXh0X21lbnVfbWFuYWdlci5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jy b3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNS4wMDAwMDAwMDAgKzAyMDAKKysr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL2F1dG9maWxsL2F1dG9m aWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzExNjUwNDY4 ICswMjAwCitAQCAtMzY1LDggKzM2NSw4IEBAIHZvaWQgQXV0b2ZpbGxDb250ZXh0TWVudU1hbmFn ZXI6OkV4ZWN1dGUKKyAgICAgQXV0b2ZpbGxNYW5hZ2VyJiBtYW5hZ2VyKSB7CisgICBhdXRvJiBk cml2ZXIgPSBzdGF0aWNfY2FzdDxDb250ZW50QXV0b2ZpbGxEcml2ZXImPihtYW5hZ2VyLmRyaXZl cigpKTsKKyAgIGRyaXZlci5icm93c2VyX2V2ZW50cygpLlJlbmRlcmVyU2hvdWxkVHJpZ2dlclN1 Z2dlc3Rpb25zKAorLSAgICAgIEZpZWxkR2xvYmFsSWQoZHJpdmVyLkdldEZyYW1lVG9rZW4oKSwK Ky0gICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJZChwYXJhbXNfLmZpZWxkX3JlbmRl cmVyX2lkKSksCisrICAgICAgRmllbGRHbG9iYWxJZHtkcml2ZXIuR2V0RnJhbWVUb2tlbigpLAor KyAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVy ZXJfaWQpfSwKKyAgICAgICBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOjprTWFudWFs RmFsbGJhY2tQYXltZW50cyk7CisgICBMb2dNYW51YWxGYWxsYmFja0NvbnRleHRNZW51RW50cnlB Y2NlcHRlZCgKKyAgICAgICBzdGF0aWNfY2FzdDxCcm93c2VyQXV0b2ZpbGxNYW5hZ2VyJj4obWFu YWdlciksCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3Vp L29tbmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvb21uaWJveC9jaHJvbWVf b21uaWJveF9jbGllbnQuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93 c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50LmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MDUuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94X2Ns aWVudC5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxMjY1MDQ4OSArMDIwMAorQEAgLTUxMywxMCAr NTEzLDEwIEBAIHZvaWQgQ2hyb21lT21uaWJveENsaWVudDo6T25BdXRvY29tcGxldGUKKyAgICAg ICAgICAgICAgIGFsdGVybmF0aXZlX25hdl9tYXRjaCk7CisgCisgICAvLyBTdG9yZSB0aGUgZGV0 YWlscyBuZWNlc3NhcnkgdG8gb3BlbiB0aGUgb21uaWJveCBtYXRjaCB2aWEgYnJvd3NlciBjb21t YW5kcy4KKy0gIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3BhcmFtcyhMb2NhdGlvbkJh cjo6TmF2aWdhdGlvblBhcmFtcygKKysgIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3Bh cmFtcyhMb2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFtc3sKKyAgICAgICBkZXN0aW5hdGlvbl91 cmwsIGRpc3Bvc2l0aW9uLCB0cmFuc2l0aW9uLCBtYXRjaF9zZWxlY3Rpb25fdGltZXN0YW1wLAor ICAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhvdXRfc2NoZW1lLAorLSAgICAgIGRl c3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWUsIG1hdGNoLmV4dHJhX2hlYWRl cnMpKTsKKysgICAgICBkZXN0aW5hdGlvbl91cmxfZW50ZXJlZF93aXRoX2h0dHBfc2NoZW1lLCBt YXRjaC5leHRyYV9oZWFkZXJzfSk7CisgCisgICBpZiAoYnJvd3Nlcl8pIHsKKyAgICAgYXV0byBu YXZpZ2F0aW9uID0gY2hyb21lOjpPcGVuQ3VycmVudFVSTChicm93c2VyXyk7CitkaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9u b3RpZmljYXRpb25fc2VydmljZS5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlv bl9zZXJ2aWNlLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3Vp L3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2VydmljZS5oLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MDUuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0 aW9uX3NlcnZpY2UuaAkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxMjY1MDQ4OSArMDIwMAorQEAgLTI0 LDYgKzI0LDcgQEAgc3RydWN0IE1lbnVOb3RpZmljYXRpb25FbnRyeSB7CisgICBpbnQgY29tbWFu ZCA9IDA7CisgICBzdGQ6OnUxNnN0cmluZyBsYWJlbDsKKyAgIHNhZmV0eV9odWI6OlNhZmV0eUh1 Yk1vZHVsZVR5cGUgbW9kdWxlOworKyAgTWVudU5vdGlmaWNhdGlvbkVudHJ5KGF1dG8gYywgYXV0 byBsLCBhdXRvIG0pIDogY29tbWFuZChjKSwgbGFiZWwobCksIG1vZHVsZShtKSB7IH0KKyB9Owor IAorIG5hbWVzcGFjZSB7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9i cm93c2VyL3VpL3ZpZXdzL2ZyYW1lL2NvbnRlbnRzX2xheW91dF9tYW5hZ2VyLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvZnJhbWUvY29udGVudHNfbGF5b3V0X21hbmFnZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL2ZyYW1lL2NvbnRlbnRzX2xheW91dF9t YW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTggMTk6NTM6MDQuNjY1 MzgyOTQ5ICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy9mcmFtZS9jb250ZW50c19sYXlvdXRfbWFuYWdlci5jYwkyMDI0LTA1LTE4IDE5OjU0 OjM5LjYwMTY0Mzg5MCArMDIwMAorQEAgLTQ0LDIwICs0NCwyMCBAQCB2aWV3czo6UHJvcG9zZWRM YXlvdXQgQ29udGVudHNMYXlvdXRNYW5hCisgCisgICAvLyBEZXZUb29scyBjYXJlcyBhYm91dCB0 aGUgc3BlY2lmaWMgcG9zaXRpb24sIHNvIHdlIGhhdmUgdG8gY29tcGVuc2F0ZSBSVEwKKyAgIC8v IGxheW91dCBoZXJlLgorLSAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKKysg IGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBkZXZ0b29s c192aWV3Xy5nZXQoKSwgZGV2dG9vbHNfdmlld18tPkdldFZpc2libGUoKSwKKyAgICAgICBob3N0 X3ZpZXcoKS0+R2V0TWlycm9yZWRSZWN0KG5ld19kZXZ0b29sc19ib3VuZHMpLAorLSAgICAgIHZp ZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXplKSk7CistICBsYXlvdXRzLmNoaWxkX2xheW91 dHMuZW1wbGFjZV9iYWNrKAorKyAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXpl KX07CisrICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAg Y29udGVudHNfdmlld18uZ2V0KCksIGNvbnRlbnRzX3ZpZXdfLT5HZXRWaXNpYmxlKCksCisgICAg ICAgaG9zdF92aWV3KCktPkdldE1pcnJvcmVkUmVjdChuZXdfY29udGVudHNfYm91bmRzKSwKKy0g ICAgICB2aWV3czo6U2l6ZUJvdW5kcyhjb250YWluZXJfc2l6ZSkpOworKyAgICAgIHZpZXdzOjpT aXplQm91bmRzKGNvbnRhaW5lcl9zaXplKX07CisgCisgICAvLyBFbnRlcnByaXNlIHdhdGVybWFy ayB2aWV3IGlzIGFsd2F5cyBvdmVybGFpZCwgZXZlbiB3aGVuIGVtcHR5LgorICAgaWYgKHdhdGVy bWFya192aWV3XykgeworLSAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAor KyAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgICB3 YXRlcm1hcmtfdmlld18uZ2V0KCksIHdhdGVybWFya192aWV3Xy0+R2V0VmlzaWJsZSgpLAorLSAg ICAgICAgZ2Z4OjpSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCB2aWV3czo6U2l6ZUJvdW5kcyhj b250YWluZXJfc2l6ZSkpOworKyAgICAgICAgZ2Z4OjpSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQp LCB2aWV3czo6U2l6ZUJvdW5kcyhjb250YWluZXJfc2l6ZSl9OworICAgfQorICAgbGF5b3V0cy5o b3N0X3NpemUgPSBnZng6OlNpemUod2lkdGgsIGhlaWdodCk7CisgICByZXR1cm4gbGF5b3V0czsK K2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3Mv cGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5j YworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVy bWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mubm9fbWF0Y2hp bmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25z L2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fza192aWV3LmNjCTIwMjQtMDUtMTcgMTI6MzM6 NTguNzEzNjUwNTA5ICswMjAwCitAQCAtNjAsMTIgKzYwLDEyIEBAIHN0ZDo6dmVjdG9yPEVtYmVk ZGVkUGVybWlzc2lvblByb21wdEFza1YKKyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRBc2tWaWV3 OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsKKyAgIHN0ZDo6dmVjdG9yPEJ1dHRv bkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7CisgICBpZiAoYmFzZTo6RmVhdHVyZUxpc3Q6OklzRW5h YmxlZChwZXJtaXNzaW9uczo6ZmVhdHVyZXM6OmtPbmVUaW1lUGVybWlzc2lvbikpIHsKKy0gICAg YnV0dG9ucy5lbXBsYWNlX2JhY2soCisrICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7Cisg ICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XX1RI SVNfVElNRSksCistICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRv blN0eWxlOjprVG9uYWwpOworKyAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVp OjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKKyAgIH0KKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25h bCwga0FsbG93SWQpOworKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6Okdl dFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKKysgICAgICAgICAgICAgICAgICAg ICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd0lk fTsKKyAgIHJldHVybiBidXR0b25zOworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlz c2lvbl9wcm9tcHRfYmFzZV92aWV3Lmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRl ZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfYmFzZV92aWV3Lmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAy Mzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X2Jhc2Vfdmlldy5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzEzNjUwNTA5ICswMjAwCitAQCAtODcs NiArODcsNyBAQCBjbGFzcyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRCYXNlVmlldyA6CisgICBz dHJ1Y3QgUmVxdWVzdExpbmVDb25maWd1cmF0aW9uIHsKKyAgICAgY29uc3QgcmF3X3B0cjxjb25z dCBnZng6OlZlY3Rvckljb24+IGljb247CisgICAgIHN0ZDo6dTE2c3RyaW5nIG1lc3NhZ2U7Cisr ICAgIFJlcXVlc3RMaW5lQ29uZmlndXJhdGlvbihhdXRvIGksIGF1dG8gbSkgOiBpY29uKGkpLCBt ZXNzYWdlKG0pIHsgfQorICAgfTsKKyAKKyAgIHN0cnVjdCBCdXR0b25Db25maWd1cmF0aW9uIHsK K2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3Mv cGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lf dmlldy5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmll d3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Bl cm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjCTIwMjQt MDUtMTcgMTI6MzM6NTguNzEzNjUwNTA5ICswMjAwCitAQCAtNjQsOCArNjQsOCBAQCBFbWJlZGRl ZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpHZXRSCisgc3RkOjp2ZWN0b3I8RW1iZWRkZWRQ ZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KKyBFbWJlZGRl ZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNv bnN0IHsKKyAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7CistICBi dXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERF RF9QUk9NUFRfT0tfTEFCRUwpLAorLSAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6 a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7CisrICBidXR0b25zLmVtcGxhY2Vf YmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9P S19MQUJFTCksCisrICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprUG9saWN5T0ss IHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKKyAgIHJldHVybiBidXR0b25zOworIH0KKyAKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVy bWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmll dy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJv bXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy NC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43 MTM2NTA1MDkgKzAyMDAKK0BAIC03OSwxNyArNzksMTcgQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJv bXB0UHJldmlvdXNseURlbmllZAorIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21w dFByZXZpb3VzbHlEZW5pZWRWaWV3OjpCdXR0b25Db25maWd1cmF0aW9uPgorIEVtYmVkZGVkUGVy bWlzc2lvblByb21wdFByZXZpb3VzbHlEZW5pZWRWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlv bigpIGNvbnN0IHsKKyAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7 CistICBidXR0b25zLmVtcGxhY2VfYmFjaygKKysgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7 CisgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX0NP TlRJTlVFX05PVF9BTExPV0lORyksCistICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlTm90QWxs b3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsKKysgICAgICBCdXR0b25UeXBlOjprQ29u dGludWVOb3RBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9OworIAorICAgaWYgKGJh c2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQocGVybWlzc2lvbnM6OmZlYXR1cmVzOjprT25lVGlt ZVBlcm1pc3Npb24pKSB7CistICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAgICBidXR0b25z LmVtcGxhY2VfYmFjaygpID0geworICAgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJ RFNfUEVSTUlTU0lPTl9BTExPV19USElTX1RJTUUpLAorLSAgICAgICAgQnV0dG9uVHlwZTo6a0Fs bG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dUaGlzVGltZUlkKTsK KysgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCwga0FsbG93VGhpc1RpbWVJZH07CisgICB9IGVsc2UgeworLSAgICBidXR0b25zLmVtcGxh Y2VfYmFjayhsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9u U3R5bGU6OmtUb25hbCk7CisrICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91dGls OjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCisrICAgICAgICAgICAgICAg ICAgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9Owor ICAgfQorICAgcmV0dXJuIGJ1dHRvbnM7CisgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNz aW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1p c3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3 LmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9w ZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRf dmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjA2LjAwMDAw MDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9n cmFudGVkX3ZpZXcuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTM2NTA1MDkgKzAyMDAKK0BAIC03 NCwxMiArNzQsMTIgQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdyYW50ZQor IHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlHcmFudGVkVmll dzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KKyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91 c2x5R3JhbnRlZFZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3QgeworICAgc3Rk Ojp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRvbnMuZW1wbGFj ZV9iYWNrKAorKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsMTBuX3V0aWw6 OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfQUxMT1dJTkcpLAor LSAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZUFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCk7CisrICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpCdXR0b25T dHlsZTo6a1RvbmFsfTsKKyAKKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0dG9ucy5l bXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19F TUJFRERFRF9QUk9NUFRfU1RPUF9BTExPV0lORyksCistICAgICAgQnV0dG9uVHlwZTo6a1N0b3BB bGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJZCk7CisrICAg ICAgQnV0dG9uVHlwZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtT dG9wQWxsb3dpbmdJZH07CisgICByZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11cCBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3Zp ZXdzLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hy b21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJfc3R5bGVfdmlld3MuY2MKKy0tLSBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3Zp ZXdzLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MDYuMDAwMDAw MDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92 aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxNDY1MDUz MCArMDIwMAorQEAgLTEyMTQsMTAgKzEyMTQsMTAgQEAgU2tQYXRoIENocm9tZVJlZnJlc2gyMDIz VGFiU3R5bGVWaWV3czo6RworIAorICAgICAvLyBSYWRpaSBhcmUgY2xvY2t3aXNlIGZyb20gdG9w IGxlZnQuCisgICAgIGNvbnN0IFNrVmVjdG9yIHJhZGlpWzRdID0geworLSAgICAgICAgU2tWZWN0 b3IodG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cyks CistICAgICAgICBTa1ZlY3Rvcih0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVu dF9jb3JuZXJfcmFkaXVzKSwKKy0gICAgICAgIFNrVmVjdG9yKGJvdHRvbV9jb250ZW50X2Nvcm5l cl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAorLSAgICAgICAgU2tWZWN0 b3IoYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3Jh ZGl1cyl9OworKyAgICAgICAgU2tWZWN0b3J7dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9w X2NvbnRlbnRfY29ybmVyX3JhZGl1c30sCisrICAgICAgICBTa1ZlY3Rvcnt0b3BfY29udGVudF9j b3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzfSwKKysgICAgICAgIFNrVmVj dG9ye2JvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9y YWRpdXN9LAorKyAgICAgICAgU2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywg Ym90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1c319OworICAgICBTa1JSZWN0IHJyZWN0OworICAg ICBycmVjdC5zZXRSZWN0UmFkaWkoU2tSZWN0OjpNYWtlTFRSQihsZWZ0LCB0b3AsIHJpZ2h0LCBi b3R0b20pLCByYWRpaSk7CisgICAgIFNrUGF0aCBwYXRoOworZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9hcHBzX3Nl cnZpY2VfaW1wbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9p bXBsLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJf YXBwbGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjA2LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19z ZXJ2aWNlX2ltcGwuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTQ2NTA1MzAgKzAyMDAKK0BAIC0x MDgsNyArMTA4LDcgQEAgQWRkT3B0aW9uc0Zyb21Nb2pvKAorICAgICAgICAgICAgICAgICAgICAg IENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+bWFuaWZlc3RfaWRfcGF0aCwgb3JpZ2luKSk7Cisg ICAgIEFTU0lHTl9PUl9SRVRVUk4oR1VSTCBpbnN0YWxsX3VybCwKKyAgICAgICAgICAgICAgICAg ICAgICBDb252ZXJ0UGF0aFRvVXJsKHN1Yl9hcHAtPmluc3RhbGxfdXJsX3BhdGgsIG9yaWdpbikp OworLSAgICBzdWJfYXBwcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG1hbmlmZXN0X2lkKSwgc3Rk Ojptb3ZlKGluc3RhbGxfdXJsKSk7CisrICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjaygpID0ge3N0 ZDo6bW92ZShtYW5pZmVzdF9pZCksIHN0ZDo6bW92ZShpbnN0YWxsX3VybCl9OworICAgfQorICAg cmV0dXJuIHN1Yl9hcHBzOworIH0KK0BAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBTdWJBcHBzU2Vy dmljZUltcGw6OlNjaGVkdWxlU3ViQXBwSQorICAgICAgICAgYmFzZTo6QmluZE9uY2UoCisgICAg ICAgICAgICAgW10od2ViYXBwczo6TWFuaWZlc3RJZCBtYW5pZmVzdF9pZCwgY29uc3Qgd2ViYXBw czo6QXBwSWQmIGFwcF9pZCwKKyAgICAgICAgICAgICAgICB3ZWJhcHBzOjpJbnN0YWxsUmVzdWx0 Q29kZSByZXN1bHRfY29kZSkgeworLSAgICAgICAgICAgICAgcmV0dXJuIFN1YkFwcEluc3RhbGxS ZXN1bHQobWFuaWZlc3RfaWQsIGFwcF9pZCwgcmVzdWx0X2NvZGUpOworKyAgICAgICAgICAgICAg cmV0dXJuIFN1YkFwcEluc3RhbGxSZXN1bHR7bWFuaWZlc3RfaWQsIGFwcF9pZCwgcmVzdWx0X2Nv ZGV9OworICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgbWFuaWZlc3RfaWQpCisgICAgICAg ICAgICAgLlRoZW4oY29uY3VycmVudC5DcmVhdGVDYWxsYmFjaygpKSwKK2RpZmYgLXVwIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS90 ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMu Y2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTU2NTA1NTEgKzAyMDAKK0BAIC0zNDYsNyArMzQ2LDcg QEAgU3RhdHVzIFBhcnNlTW9iaWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgorICAgICAgICAgICAg ICAgICAgICAgICAgICIndmVyc2lvbicgZmllbGQgb2YgdHlwZSBzdHJpbmciKTsKKyAgICAgICAg IH0KKyAKKy0gICAgICAgIGJyYW5kcy5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Cisr ICAgICAgICBicmFuZHMuZW1wbGFjZV9iYWNrKCkgPSB7KmJyYW5kLCAqdmVyc2lvbn07CisgICAg ICAgfQorIAorICAgICAgIGNsaWVudF9oaW50cy5icmFuZHMgPSBzdGQ6Om1vdmUoYnJhbmRzKTsK K0BAIC0zODQsNyArMzg0LDcgQEAgU3RhdHVzIFBhcnNlTW9iaWxlRW11bGF0aW9uKGNvbnN0IGJh c2U6OgorICAgICAgICAgICAgICAgICAgICAgICAgICJhICd2ZXJzaW9uJyBmaWVsZCBvZiB0eXBl IHN0cmluZyIpOworICAgICAgICAgfQorIAorLSAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1w bGFjZV9iYWNrKCpicmFuZCwgKnZlcnNpb24pOworKyAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3Qu ZW1wbGFjZV9iYWNrKCkgPSB7KmJyYW5kLCAqdmVyc2lvbn07CisgICAgICAgfQorIAorICAgICAg IGNsaWVudF9oaW50cy5mdWxsX3ZlcnNpb25fbGlzdCA9IHN0ZDo6bW92ZShmdWxsX3ZlcnNpb25f bGlzdCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXR0cmli dXRpb25fcmVwb3J0aW5nL2FnZ3JlZ2F0YWJsZV91dGlscy5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0 aW5nL2FnZ3JlZ2F0YWJsZV91dGlscy5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvYWdncmVnYXRhYmxlX3V0aWxzLmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTcgMTU6NTA6MjEuMTg1MDU0Mzg5ICswMjAwCisr KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9ydGlu Zy9hZ2dyZWdhdGFibGVfdXRpbHMuY2MJMjAyNC0wNS0xNyAxNTo1MTo0MC40MTQ4ODEwNTMgKzAy MDAKK0BAIC0zMyw3ICszMyw3IEBAIHN0ZDo6dmVjdG9yPE51bGxBZ2dyZWdhdGFibGVSZXBvcnQ+ IEdldE4KKyAgICAgfQorIAorICAgICBpZiAoZ2VuZXJhdGVfZnVuYyhpKSkgeworLSAgICAgIHJl cG9ydHMuZW1wbGFjZV9iYWNrKGZha2Vfc291cmNlX3RpbWUpOworKyAgICAgIHJlcG9ydHMuZW1w bGFjZV9iYWNrKCkgPSB7ZmFrZV9zb3VyY2VfdGltZX07CisgICAgIH0KKyAgIH0KKyAgIHJldHVy biByZXBvcnRzOworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F0 dHJpYnV0aW9uX3JlcG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVw b3J0aW5nL3JlZ2lzdHJhdGlvbl9pbmZvLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j b21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjExLjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRp bmcvcmVnaXN0cmF0aW9uX2luZm8uY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTU2NTA1NTEgKzAy MDAKK0BAIC05Niw3ICs5Niw3IEBAIFJlZ2lzdHJhdGlvbkluZm86OlBhcnNlSW5mbyhjb25zdCBu ZXQ6OnMKKyAKKyAgIEFTU0lHTl9PUl9SRVRVUk4oYm9vbCByZXBvcnRfaGVhZGVyX2Vycm9ycywg UGFyc2VSZXBvcnRIZWFkZXJFcnJvcnMoZGljdCkpOworIAorLSAgcmV0dXJuIFJlZ2lzdHJhdGlv bkluZm8ocHJlZmVycmVkX3BsYXRmb3JtLCByZXBvcnRfaGVhZGVyX2Vycm9ycyk7CisrICByZXR1 cm4gUmVnaXN0cmF0aW9uSW5mb3twcmVmZXJyZWRfcGxhdGZvcm0sIHJlcG9ydF9oZWFkZXJfZXJy b3JzfTsKKyB9CisgCisgfSAgLy8gbmFtZXNwYWNlIGF0dHJpYnV0aW9uX3JlcG9ydGluZworZGlm ZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQv cmVuZGVyZXIvZm9ybV9hdXRvZmlsbF91dGlsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9hdXRvZmlsbC9jb250ZW50L3JlbmRlcmVy L2Zvcm1fYXV0b2ZpbGxfdXRpbC5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9u ZW50cy9hdXRvZmlsbC9jb250ZW50L3JlbmRlcmVyL2Zvcm1fYXV0b2ZpbGxfdXRpbC5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE4IDIyOjMzOjMxLjQzNDYwNjM2NyArMDIwMAor KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9hdXRvZmlsbC9jb250ZW50L3Jl bmRlcmVyL2Zvcm1fYXV0b2ZpbGxfdXRpbC5jYwkyMDI0LTA1LTE4IDIyOjM0OjAwLjYwNDQ1OTYy NyArMDIwMAorQEAgLTIyNzQsNyArMjI3NCw3IEBAIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxGaWVs ZFJlZiwgV2ViQXV0b2YKKyAgICAgaWYgKGVsZW1lbnQuRm9jdXNlZCgpKSB7CisgICAgICAgZm9j dXNlZF9maWVsZCA9IHsmZmllbGQsIGVsZW1lbnR9OworICAgICB9IGVsc2UgeworLSAgICAgIHVu Zm9jdXNlZF9maWVsZHMuZW1wbGFjZV9iYWNrKCZmaWVsZCwgZWxlbWVudCk7CisrICAgICAgdW5m b2N1c2VkX2ZpZWxkcy5lbXBsYWNlX2JhY2soKSA9IHsmZmllbGQsIGVsZW1lbnR9OworICAgICB9 CisgICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXV0 b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0b2ZpbGxfdGFi bGUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21w b25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1 dG9maWxsX3RhYmxlLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3Rh YmxlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MTEuMDAwMDAw MDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F1dG9maWxs L2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNj CTIwMjQtMDUtMTcgMTI6MzM6NTguNzE1NjUwNTUxICswMjAwCitAQCAtNjM1LDEwICs2MzUsMTAg QEAgc3RkOjp1bmlxdWVfcHRyPEF1dG9maWxsUHJvZmlsZT4gQWRkcmVzcworICAgICB9CisgCisg ICAgIGJhc2U6OnNwYW48Y29uc3QgdWludDhfdD4gb2JzZXJ2YXRpb25zX2RhdGEgPSBzLkNvbHVt bkJsb2IoMyk7CistICAgIGZpZWxkX3R5cGVfdmFsdWVzLmVtcGxhY2VfYmFjaygKKysgICAgZmll bGRfdHlwZV92YWx1ZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgICB0eXBlLCBzLkNvbHVt blN0cmluZzE2KDEpLCBzLkNvbHVtbkludCgyKSwKKyAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4 X3Q+KG9ic2VydmF0aW9uc19kYXRhLmJlZ2luKCksCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvYnNlcnZhdGlvbnNfZGF0YS5lbmQoKSkpOworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkpfTsKKyAKKyAgICAgaWYgKHR5cGUgPT0gQURE UkVTU19IT01FX0NPVU5UUlkpIHsKKyAgICAgICBjb3VudHJ5X2NvZGUgPSBiYXNlOjpVVEYxNlRv VVRGOChzLkNvbHVtblN0cmluZzE2KDEpKTsKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvY29u dGFjdF9pbmZvX3N5bmNfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRk cmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2Nv bnRhY3RfaW5mb19zeW5jX3V0aWwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0x NSAyMzo0NjoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3Rf aW5mb19zeW5jX3V0aWwuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTU2NTA1NTEgKzAyMDAKK0BA IC0xNjksOSArMTY5LDkgQEAgY2xhc3MgQ29udGFjdEluZm9Qcm9maWxlU2V0dGVyIHsKKyAgICAg ICBDSEVDSyhvYnNlcnZhdGlvbnMuZW1wdHkoKSk7CisgICAgICAgZm9yIChjb25zdCBzeW5jX3Bi OjpDb250YWN0SW5mb1NwZWNpZmljczo6T2JzZXJ2YXRpb24mIHByb3RvX29ic2VydmF0aW9uIDoK KyAgICAgICAgICAgIG1ldGFkYXRhLm9ic2VydmF0aW9ucygpKSB7CistICAgICAgICBvYnNlcnZh dGlvbnMuZW1wbGFjZV9iYWNrKHByb3RvX29ic2VydmF0aW9uLnR5cGUoKSwKKysgICAgICAgIG9i c2VydmF0aW9ucy5lbXBsYWNlX2JhY2soKSA9IHtwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGVUb2tlblF1YWxpdHk6OkZv cm1TaWduYXR1cmVIYXNoKAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJvdG9fb2JzZXJ2YXRpb24uZm9ybV9oYXNoKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByb3RvX29ic2VydmF0aW9uLmZvcm1faGFzaCgpKX07CisgICAgICAg fQorICAgICB9CisgICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVu dHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNh dGlvbnNfc2VydmljZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3By b2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2VydmljZS5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVj dF9zcGVjaWZpY2F0aW9uc19zZXJ2aWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQt MDUtMTUgMjM6NDY6MTEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0 X3NwZWNpZmljYXRpb25zX3NlcnZpY2UuY2MJMjAyNC0wNS0xOCAxNDoxOToyMS4yNTYzODE3OTcg KzAyMDAKK0BAIC0yNCwxMSArMjQsMTEgQEAgUHJvZHVjdFNwZWNpZmljYXRpb25zU2VydmljZTo6 R2V0U3luY0NvbgorICAgcmV0dXJuIGJyaWRnZV8tPmNoYW5nZV9wcm9jZXNzb3IoKS0+R2V0Q29u dHJvbGxlckRlbGVnYXRlKCk7CisgfQorIAorLWNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IFByb2R1 Y3RTcGVjaWZpY2F0aW9uc1NldD4KKytjb25zdCBzdGQ6OnZlY3RvcjxQcm9kdWN0U3BlY2lmaWNh dGlvbnNTZXQ+CisgUHJvZHVjdFNwZWNpZmljYXRpb25zU2VydmljZTo6R2V0QWxsUHJvZHVjdFNw ZWNpZmljYXRpb25zKCkgeworLSAgc3RkOjp2ZWN0b3I8Y29uc3QgUHJvZHVjdFNwZWNpZmljYXRp b25zU2V0PiBwcm9kdWN0X3NwZWNpZmljYXRpb25zOworKyAgc3RkOjp2ZWN0b3I8UHJvZHVjdFNw ZWNpZmljYXRpb25zU2V0PiBwcm9kdWN0X3NwZWNpZmljYXRpb25zOworICAgZm9yIChhdXRvJiBl bnRyeSA6IGJyaWRnZV8tPmVudHJpZXMoKSkgeworLSAgICBzdGQ6OnZlY3Rvcjxjb25zdCBHVVJM PiB1cmxzOworKyAgICBzdGQ6OnZlY3RvcjxHVVJMPiB1cmxzOworICAgICBmb3IgKGF1dG8mIGRh dGEgOiBlbnRyeS5zZWNvbmQuZGF0YSgpKSB7CisgICAgICAgdXJscy5lbXBsYWNlX2JhY2soZGF0 YS51cmwoKSk7CisgICAgIH0KK0BAIC00Myw3ICs0Myw3IEBAIFByb2R1Y3RTcGVjaWZpY2F0aW9u c1NlcnZpY2U6OkdldEFsbFByb2QKKyBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFByb2R1Y3RT cGVjaWZpY2F0aW9uc1NldD4KKyBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXJ2aWNlOjpBZGRQcm9k dWN0U3BlY2lmaWNhdGlvbnNTZXQoCisgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorLSAg ICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBHVVJMPiYgdXJscykgeworKyAgICBjb25zdCBzdGQ6 OnZlY3RvcjxHVVJMPiYgdXJscykgeworICAgLy8gVE9ETyhjcmJ1Zy5jb20vMzMyNTQ1MDY0KSBh ZGQgZm9yIGEgcHJvZHVjdCBzcGVjaWZpY2F0aW9uIHNldCBiZWluZyBhZGRlZC4KKyAgIHN0ZDo6 b3B0aW9uYWw8c3luY19wYjo6Q29tcGFyZVNwZWNpZmljcz4gc3BlY2lmaWNzID0KKyAgICAgICBi cmlkZ2VfLT5BZGRQcm9kdWN0U3BlY2lmaWNhdGlvbnMobmFtZSwgdXJscyk7CitkaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3Nw ZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2VydmljZV91bml0dGVzdC5jYy5u b19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMv Y29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlv bnNfc2VydmljZV91bml0dGVzdC5jYworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j b21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3Nw ZWNpZmljYXRpb25zX3NldC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25z L3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0LmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0 X3NwZWNpZmljYXRpb25zX3NldC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1 IDIzOjQ2OjExLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVj aWZpY2F0aW9uc19zZXQuY2MJMjAyNC0wNS0xOCAxNDoxNzoxOS43MDU5ODg5MTQgKzAyMDAKK0BA IC0xMiw3ICsxMiw3IEBAIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldDo6UHJvZHVjdFNwZWNpZmkK KyAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHV1aWQsCisgICAgIGNvbnN0IGludDY0X3QgY3JlYXRp b25fdGltZV91c2VjX3NpbmNlX2Vwb2NoLAorICAgICBjb25zdCBpbnQ2NF90IHVwZGF0ZV90aW1l X3VzZWNfc2luY2VfZXBvY2gsCistICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IEdVUkw+JiB1 cmxzLAorKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxHVVJMPiYgdXJscywKKyAgICAgY29uc3Qgc3Rk OjpzdHJpbmcmIG5hbWUpCisgICAgIDogdXVpZF8oYmFzZTo6VXVpZDo6UGFyc2VMb3dlcmNhc2Uo dXVpZCkpLAorICAgICAgIGNyZWF0aW9uX3RpbWVfKGJhc2U6OlRpbWU6OkZyb21NaWxsaXNlY29u ZHNTaW5jZVVuaXhFcG9jaCgKK0BAIC0zNCw5ICszNCw5IEBAIFByb2R1Y3RTcGVjaWZpY2F0aW9u c1NldDo6flByb2R1Y3RTcGVjaWYKKyAKKyBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQgUHJvZHVj dFNwZWNpZmljYXRpb25zU2V0OjpGcm9tUHJvdG8oCisgICAgIGNvbnN0IHN5bmNfcGI6OkNvbXBh cmVTcGVjaWZpY3MmIHNwZWNpZmljcykgeworLSAgc3RkOjp2ZWN0b3I8Y29uc3QgR1VSTD4gdXJs czsKKysgIHN0ZDo6dmVjdG9yPEdVUkw+IHVybHM7CisgICBmb3IgKGNvbnN0IHN5bmNfcGI6OkNv bXBhcmlzb25EYXRhJiBkYXRhIDogc3BlY2lmaWNzLmRhdGEoKSkgeworLSAgICB1cmxzLnB1c2hf YmFjayhHVVJMKGRhdGEudXJsKCkpKTsKKysgICAgdXJscy5lbXBsYWNlX2JhY2soZGF0YS51cmwo KSk7CisgICB9CisgICByZXR1cm4gUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0KAorICAgICAgIHNw ZWNpZmljcy51dWlkKCksIHNwZWNpZmljcy5jcmVhdGlvbl90aW1lX3VuaXhfZXBvY2hfbWljcm9z KCksCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvaW52YWxpZGF0 aW9uL2ltcGwvZmNtX2ludmFsaWRhdGlvbl9zZXJ2aWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9pbnZhbGlkYXRpb24vaW1wbC9m Y21faW52YWxpZGF0aW9uX3NlcnZpY2UuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bXBvbmVudHMvaW52YWxpZGF0aW9uL2ltcGwvZmNtX2ludmFsaWRhdGlvbl9zZXJ2aWNlLmNjLm5v X21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTcgMTY6MjQ6MjkuOTkzNjg5ODM4ICswMjAw CisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2ludmFsaWRhdGlvbi9pbXBs L2ZjbV9pbnZhbGlkYXRpb25fc2VydmljZS5jYwkyMDI0LTA1LTE3IDE2OjI0OjQ4LjQwMjA3Mzgz MCArMDIwMAorQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGQ01JbnZhbGlkYXRpb25TZXJ2aWNlOjpV cGRhdGVJbnRlcgorICAgRFZMT0coMikgPDwgIlN1YnNjcmliaW5nIHRvIHRvcGljczogIiA8PCB0 b3BpY19zZXQuc2l6ZSgpOworICAgVG9waWNNYXAgdG9waWNfbWFwOworICAgZm9yIChjb25zdCBh dXRvJiB0b3BpY19uYW1lIDogdG9waWNfc2V0KSB7CistICAgIHRvcGljX21hcFt0b3BpY19uYW1l XSA9IFRvcGljTWV0YWRhdGEoaGFuZGxlci0+SXNQdWJsaWNUb3BpYyh0b3BpY19uYW1lKSk7Cisr ICAgIHRvcGljX21hcFt0b3BpY19uYW1lXSA9IFRvcGljTWV0YWRhdGF7aGFuZGxlci0+SXNQdWJs aWNUb3BpYyh0b3BpY19uYW1lKX07CisgICB9CisgICAvLyBUT0RPKGNyYnVnLmNvbS80MDY3NTcw OCk6IFVwZGF0ZVJlZ2lzdGVyZWRUb3BpY3MoKSBzaG91bGQgYmUgcmVuYW1lZCB0bworICAgLy8g Y2xhcmlmeSB0aGF0IGl0IGFjdHVhbGx5IHVwZGF0ZXMgd2hldGhlciB0b3BpY3MgbmVlZCBzdWJz Y3JpcHRpb24gKGFrYQorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRz L21lbW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2Mubm9fbWF0Y2hp bmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL21lbW9yeV9w cmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MKKy0tLSBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRf bW9uaXRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjEyLjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9tZW1v cnlfcHJlc3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjCTIwMjQtMDUtMTcgMTI6 MzM6NTguNzE1NjUwNTUxICswMjAwCitAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFVubmVjZXNzYXJ5 RGlzY2FyZE1vbml0b3I6Ok9uRGlzY2FyCisgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVF TkNFKHNlcXVlbmNlX2NoZWNrZXJfKTsKKyAgIGlmIChjdXJyZW50X3JlY2xhaW1fZXZlbnRfKSB7 CisgICAgIC8vIENhY2hlIHRoaXMga2lsbCBldmVudCBhbG9uZyB3aXRoIHRoZSB0aW1lIGl0IHRv b2sgcGxhY2UuCistICAgIGN1cnJlbnRfcmVjbGFpbV9ldmVudF9raWxsc18uZW1wbGFjZV9iYWNr KG1lbW9yeV9mcmVlZF9rYiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlzY2FyZF9jb21wbGV0ZV90aW1lKTsKKysgICAgY3VycmVudF9yZWNsYWltX2V2 ZW50X2tpbGxzXy5lbXBsYWNlX2JhY2soKSA9IHttZW1vcnlfZnJlZWRfa2IsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmRfY29tcGxldGVfdGlt ZX07CisgICB9CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25l bnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Bh c3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MKKy0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dz ZXIvcGFzc3dvcmRfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1 IDIzOjQ2OjEzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNj CTIwMjQtMDUtMTcgMTI6MzM6NTguNzE2NjUwNTcyICswMjAwCitAQCAtNjg2LDcgKzY4Niw3IEBA IHZvaWQgUGFzc3dvcmRNYW5hZ2VyOjpPblVzZXJNb2RpZmllZE5vblAKKyAgICAgaXQtPnNlY29u ZC5sYXN0X2NoYW5nZSA9IGJhc2U6OlRpbWU6Ok5vdygpOworICAgfSBlbHNlIHsKKyAgICAgcG9z c2libGVfdXNlcm5hbWVzXy5QdXQoCistICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVu dGlmaWVyKGRyaXZlcl9pZCwgcmVuZGVyZXJfaWQpLAorKyAgICAgICAgUG9zc2libGVVc2VybmFt ZUZpZWxkSWRlbnRpZmllcntkcml2ZXJfaWQsIHJlbmRlcmVyX2lkfSwKKyAgICAgICAgIFBvc3Np YmxlVXNlcm5hbWVEYXRhKEdldFNpZ25vblJlYWxtKGRyaXZlci0+R2V0TGFzdENvbW1pdHRlZFVS TCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyX2lkLCB2YWx1ZSwg YmFzZTo6VGltZTo6Tm93KCksIGRyaXZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGF1dG9jb21wbGV0ZV9hdHRyaWJ1dGVfaGFzX3VzZXJuYW1lLAorZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2Vy L3Bhc3N3b3JkX3N1Z2dlc3Rpb25fZ2VuZXJhdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUv YnJvd3Nlci9wYXNzd29yZF9zdWdnZXN0aW9uX2dlbmVyYXRvci5jYworLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNz d29yZF9zdWdnZXN0aW9uX2dlbmVyYXRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0 LTA1LTE3IDIzOjA5OjQ5Ljg2OTIxMzA3NiArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9zdWdn ZXN0aW9uX2dlbmVyYXRvci5jYwkyMDI0LTA1LTE3IDIzOjIyOjM4LjU5OTE2ODQyMCArMDIwMAor QEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIE1heWJlQXBwZW5kTWFuYWdlUGFzc3dvcmRzRW50cnko CisgICBzdWdnZXN0aW9uLmljb24gPSBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6SWNvbjo6a1NldHRp bmdzOworICAgLy8gVGhlIFVJIGNvZGUgd2lsbCBwaWNrIHVwIGFuIGljb24gZnJvbSB0aGUgcmVz b3VyY2VzIGJhc2VkIG9uIHRoZSBzdHJpbmcuCisgICBzdWdnZXN0aW9uLnRyYWlsaW5nX2ljb24g PSBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6SWNvbjo6a0dvb2dsZVBhc3N3b3JkTWFuYWdlcjsKKy0g IHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHN1Z2dlc3Rpb24pKTsKKysgIHN1 Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUoc3VnZ2VzdGlvbil9OworIH0K KyAKKyAvLyBJZiB8ZmllbGRfc3VnZ2VzdGlvbnwgbWF0Y2hlcyB8ZmllbGRfY29udGVudHwsIGNy ZWF0ZXMgYSBTdWdnZXN0aW9uIG91dCBvZiBpdAorQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEFw cGVuZFN1Z2dlc3Rpb25JZk1hdGNoaW5nKAorICAgICAgIHN1Z2dlc3Rpb24udHJhaWxpbmdfaWNv biA9IENyZWF0ZVN0b3JlSWNvbihmcm9tX2FjY291bnRfc3RvcmUpOworICAgICB9CisgI2VuZGlm CistICAgIHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHN1Z2dlc3Rpb24pKTsK KysgICAgc3VnZ2VzdGlvbnMtPmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShzdWdnZXN0aW9u KX07CisgICB9CisgfQorIAorQEAgLTIzNyw4ICsyMzcsOCBAQCB2b2lkIEdldFN1Z2dlc3Rpb25z KGNvbnN0IGF1dG9maWxsOjpQYXNzCisgCisgdm9pZCBBZGRQYXNzd29yZFVzZXJuYW1lQ2hpbGRT dWdnZXN0aW9uKGNvbnN0IHN0ZDo6dTE2c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2ZpbGw6OlN1Z2dlc3Rpb24mIHN1Z2dlc3Rp b24pIHsKKy0gIHN1Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKAorLSAgICAgIHVzZXJu YW1lLCBhdXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtQYXNzd29yZEZpZWxkQnlGaWVsZEZpbGxpbmcp OworKyAgc3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soKSA9CisrICAgICAge3VzZXJu YW1lLCBhdXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtQYXNzd29yZEZpZWxkQnlGaWVsZEZpbGxpbmd9 OworIH0KKyAKKyB2b2lkIEFkZEZpbGxQYXNzd29yZENoaWxkU3VnZ2VzdGlvbihhdXRvZmlsbDo6 U3VnZ2VzdGlvbiYgc3VnZ2VzdGlvbiwKK0BAIC0yNDgsOCArMjQ4LDggQEAgdm9pZCBBZGRGaWxs UGFzc3dvcmRDaGlsZFN1Z2dlc3Rpb24oYXV0bworICAgICAgICAgICBJRFNfUEFTU1dPUkRfTUFO QUdFUl9NQU5VQUxfRkFMTEJBQ0tfRklMTF9QQVNTV09SRF9FTlRSWSksCisgICAgICAgYXV0b2Zp bGw6OlBvcHVwSXRlbUlkOjprRmlsbFBhc3N3b3JkKTsKKyAgIGZpbGxfcGFzc3dvcmQucGF5bG9h ZCA9CistICAgICAgYXV0b2ZpbGw6OlN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFp bHMocGFzc3dvcmQpOworLSAgc3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soc3RkOjpt b3ZlKGZpbGxfcGFzc3dvcmQpKTsKKysgICAgICBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6UGFzc3dv cmRTdWdnZXN0aW9uRGV0YWlsc3twYXNzd29yZH07CisrICBzdWdnZXN0aW9uLmNoaWxkcmVuLmVt cGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShmaWxsX3Bhc3N3b3JkKX07CisgfQorIAorIHZvaWQg QWRkVmlld1Bhc3N3b3JkRGV0YWlsc0NoaWxkU3VnZ2VzdGlvbihhdXRvZmlsbDo6U3VnZ2VzdGlv biYgc3VnZ2VzdGlvbikgeworQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEFkZFZpZXdQYXNzd29y ZERldGFpbHNDaGlsZFN1Z2dlc3RpCisgICAgICAgICAgIElEU19QQVNTV09SRF9NQU5BR0VSX01B TlVBTF9GQUxMQkFDS19WSUVXX0RFVEFJTFNfRU5UUlkpLAorICAgICAgIGF1dG9maWxsOjpQb3B1 cEl0ZW1JZDo6a1ZpZXdQYXNzd29yZERldGFpbHMpOworICAgdmlld19wYXNzd29yZF9kZXRhaWxz Lmljb24gPSBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6SWNvbjo6a0tleTsKKy0gIHN1Z2dlc3Rpb24u Y2hpbGRyZW4uZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZSh2aWV3X3Bhc3N3b3JkX2RldGFpbHMpKTsK KysgIHN1Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKHZpZXdf cGFzc3dvcmRfZGV0YWlscyl9OworIH0KKyAKKyBhdXRvZmlsbDo6U3VnZ2VzdGlvbiBHZXRNYW51 YWxGYWxsYmFja1N1Z2dlc3Rpb24oCitAQCAtMjczLDcgKzI3Myw3IEBAIGF1dG9maWxsOjpTdWdn ZXN0aW9uIEdldE1hbnVhbEZhbGxiYWNrU3UKKyAgIHN1Z2dlc3Rpb24uYWRkaXRpb25hbF9sYWJl bCA9IG1heWJlX3VzZXJuYW1lOworICAgc3VnZ2VzdGlvbi5pY29uID0gYXV0b2ZpbGw6OlN1Z2dl c3Rpb246Okljb246OmtHbG9iZTsKKyAgIHN1Z2dlc3Rpb24ucGF5bG9hZCA9CistICAgICAgYXV0 b2ZpbGw6OlN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFpbHMoY3JlZGVudGlhbC5w YXNzd29yZCk7CisrICAgICAgYXV0b2ZpbGw6OlN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlv bkRldGFpbHN7Y3JlZGVudGlhbC5wYXNzd29yZH07CisgICBzdWdnZXN0aW9uLmlzX2FjY2VwdGFi bGUgPSBvbl9wYXNzd29yZF9mb3JtLnZhbHVlKCk7CisgCisgICBpZiAoIXJlcGxhY2VkKSB7CitA QCAtMzU1LDI3ICszNTUsMjcgQEAgUGFzc3dvcmRTdWdnZXN0aW9uR2VuZXJhdG9yOjpHZXRTdWdn ZXN0aQorICAgaWYgKHVzZXNfcGFzc2tleXMgJiYgZGVsZWdhdGUtPk9mZmVyUGFzc2tleXNGcm9t QW5vdGhlckRldmljZU9wdGlvbigpKSB7CisgICAgIGJvb2wgbGlzdGVkX3Bhc3NrZXlzID0gZGVs ZWdhdGUtPkdldFBhc3NrZXlzKCkuaGFzX3ZhbHVlKCkgJiYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWxlZ2F0ZS0+R2V0UGFzc2tleXMoKS0+c2l6ZSgpID4gMDsKKy0gICAgc3VnZ2Vz dGlvbnMuZW1wbGFjZV9iYWNrKENyZWF0ZVdlYkF1dGhuRW50cnkobGlzdGVkX3Bhc3NrZXlzKSk7 CisrICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygpID0ge0NyZWF0ZVdlYkF1dGhuRW50cnko bGlzdGVkX3Bhc3NrZXlzKX07CisgICB9CisgI2VuZGlmCisgCisgICAvLyBBZGQgcGFzc3dvcmQg Z2VuZXJhdGlvbiBlbnRyeSwgaWYgYXZhaWxhYmxlLgorICAgaWYgKG9mZmVyc19nZW5lcmF0aW9u KSB7CistICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygKKy0gICAgICAgIHNob3dfYWNjb3Vu dF9zdG9yYWdlX29wdGluCisrICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygpID0KKysgICAg ICAgIHtzaG93X2FjY291bnRfc3RvcmFnZV9vcHRpbgorICAgICAgICAgICAgID8gQ3JlYXRlRW50 cnlUb09wdEluVG9BY2NvdW50U3RvcmFnZVRoZW5HZW5lcmF0ZSgpCistICAgICAgICAgICAgOiBD cmVhdGVHZW5lcmF0aW9uRW50cnkoKSk7CisrICAgICAgICAgICAgOiBDcmVhdGVHZW5lcmF0aW9u RW50cnkoKX07CisgICB9CisgCisgICAvLyBBZGQgYnV0dG9uIHRvIG9wdCBpbnRvIHVzaW5nIHRo ZSBhY2NvdW50IHN0b3JhZ2UgZm9yIHBhc3N3b3JkcyBhbmQgdGhlbgorICAgLy8gc3VnZ2VzdC4K KyAgIGlmIChzaG93X2FjY291bnRfc3RvcmFnZV9vcHRpbikgeworLSAgICBzdWdnZXN0aW9ucy5l bXBsYWNlX2JhY2soQ3JlYXRlRW50cnlUb09wdEluVG9BY2NvdW50U3RvcmFnZVRoZW5GaWxsKCkp OworKyAgICBzdWdnZXN0aW9ucy5lbXBsYWNlX2JhY2soKSA9IHtDcmVhdGVFbnRyeVRvT3B0SW5U b0FjY291bnRTdG9yYWdlVGhlbkZpbGwoKX07CisgICB9CisgCisgICAvLyBBZGQgYnV0dG9uIHRv IHNpZ24taW4gd2hpY2ggdW5sb2NrcyB0aGUgcHJldmlvdXNseSB1c2VkIGFjY291bnQgc3RvcmUu CisgICBpZiAoc2hvd19hY2NvdW50X3N0b3JhZ2VfcmVzaWduaW4pIHsKKy0gICAgc3VnZ2VzdGlv bnMuZW1wbGFjZV9iYWNrKENyZWF0ZUVudHJ5VG9SZVNpZ25pbigpKTsKKysgICAgc3VnZ2VzdGlv bnMuZW1wbGFjZV9iYWNrKCkgPSB7Q3JlYXRlRW50cnlUb1JlU2lnbmluKCl9OworICAgfQorIAor ICAgLy8gQWRkICJNYW5hZ2UgYWxsIHBhc3N3b3JkcyIgbGluayB0byBzZXR0aW5ncy4KK0BAIC0z OTMsMzAgKzM5MywzMCBAQCBQYXNzd29yZFN1Z2dlc3Rpb25HZW5lcmF0b3I6OkdldE1hbnVhbEZh CisgICBjb25zdCBib29sIGdlbmVyYXRlX3NlY3Rpb25zID0KKyAgICAgICAhc3VnZ2VzdGVkX2Ny ZWRlbnRpYWxzLmVtcHR5KCkgJiYgIWNyZWRlbnRpYWxzLmVtcHR5KCk7CisgICBpZiAoZ2VuZXJh dGVfc2VjdGlvbnMpIHsKKy0gICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKAorLSAgICAgICAg bDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNigKKysgICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNr KCkgPQorKyAgICAgICAge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoCisgICAgICAgICAgICAg SURTX1BBU1NXT1JEX01BTkFHRVJfTUFOVUFMX0ZBTExCQUNLX1NVR0dFU1RFRF9QQVNTV09SRFNf U0VDVElPTl9USVRMRSksCistICAgICAgICBhdXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtUaXRsZSk7 CisrICAgICAgICBhdXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtUaXRsZX07CisgICB9CisgCisgICBm b3IgKGNvbnN0IGF1dG8mIGZvcm0gOiBzdWdnZXN0ZWRfY3JlZGVudGlhbHMpIHsKKy0gICAgc3Vn Z2VzdGlvbnMuZW1wbGFjZV9iYWNrKAorLSAgICAgICAgR2V0TWFudWFsRmFsbGJhY2tTdWdnZXN0 aW9uKENyZWRlbnRpYWxVSUVudHJ5KGZvcm0pLCBvbl9wYXNzd29yZF9mb3JtKSk7CisrICAgIHN1 Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygpID0KKysgICAgICAgIHtHZXRNYW51YWxGYWxsYmFja1N1 Z2dlc3Rpb24oQ3JlZGVudGlhbFVJRW50cnkoZm9ybSksIG9uX3Bhc3N3b3JkX2Zvcm0pfTsKKyAg IH0KKyAKKyAgIGlmIChnZW5lcmF0ZV9zZWN0aW9ucykgeworLSAgICBzdWdnZXN0aW9ucy5lbXBs YWNlX2JhY2soCistICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KAorKyAgICBzdWdn ZXN0aW9ucy5lbXBsYWNlX2JhY2soKSA9CisrICAgICAgICB7bDEwbl91dGlsOjpHZXRTdHJpbmdV VEYxNigKKyAgICAgICAgICAgICBJRFNfUEFTU1dPUkRfTUFOQUdFUl9NQU5VQUxfRkFMTEJBQ0tf QUxMX1BBU1NXT1JEU19TRUNUSU9OX1RJVExFKSwKKy0gICAgICAgIGF1dG9maWxsOjpQb3B1cEl0 ZW1JZDo6a1RpdGxlKTsKKysgICAgICAgIGF1dG9maWxsOjpQb3B1cEl0ZW1JZDo6a1RpdGxlfTsK KyAgIH0KKyAKKyAgIC8vIE9ubHkgdGhlICJBbGwgcGFzc3dvcmRzIiBzZWN0aW9uIHNob3VsZCBi ZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkuCisgICBjb25zdCBzaXplX3QgcmVsZXZhbnRfc2VjdGlv bl9vZmZzZXQgPSBzdWdnZXN0aW9ucy5zaXplKCk7CisgCisgICBmb3IgKGNvbnN0IENyZWRlbnRp YWxVSUVudHJ5JiBjcmVkZW50aWFsIDogY3JlZGVudGlhbHMpIHsKKy0gICAgc3VnZ2VzdGlvbnMu ZW1wbGFjZV9iYWNrKAorLSAgICAgICAgR2V0TWFudWFsRmFsbGJhY2tTdWdnZXN0aW9uKGNyZWRl bnRpYWwsIG9uX3Bhc3N3b3JkX2Zvcm0pKTsKKysgICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNr KCkgPQorKyAgICAgICAge0dldE1hbnVhbEZhbGxiYWNrU3VnZ2VzdGlvbihjcmVkZW50aWFsLCBv bl9wYXNzd29yZF9mb3JtKX07CisgICB9CisgCisgICBiYXNlOjpyYW5nZXM6OnNvcnQoc3VnZ2Vz dGlvbnMuYmVnaW4oKSArIHJlbGV2YW50X3NlY3Rpb25fb2Zmc2V0LAorZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dh dGNoZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j b21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MKKy0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJf d2F0Y2hlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjEzLjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wZXJm b3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzE2 NjUwNTcyICswMjAwCitAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25X b3JrZXJDcmVhdGVkKAorICAgRENIRUNLKGluc2VydGlvbl9yZXN1bHQuc2Vjb25kKTsKKyAKKyAg IGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgYmFzZTo6T3Zl cmxvYWRlZHsKKyAgICAgICAgICAgWyYsCisgICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50 OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAg ICAgICAgICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+ c2Vjb25kLmdldCgpLAorQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9u V29ya2VyQ3JlYXRlZCgKKyAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3Jr ZXJUb2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7CisgICAgICAgICAgICAgQ29ubmVjdERl ZGljYXRlZFdvcmtlckNsaWVudChpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29y a2VyX3Rva2VuKTsKKy0gICAgICAgICAgfSksCisrICAgICAgICAgIH19LAorICAgICAgIGNyZWF0 b3IpOworIH0KKyAKK0BAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkJl Zm9yZVdvcmtlckRlc3RybworICAgLy8gRmlyc3QgZGlzY29ubmVjdCB0aGUgY3JlYXRvcidzIG5v ZGUgZnJvbSB0aGlzIHdvcmtlciBub2RlLgorIAorICAgYWJzbDo6dmlzaXQoCistICAgICAgYmFz ZTo6T3ZlcmxvYWRlZCgKKysgICAgICBiYXNlOjpPdmVybG9hZGVkeworICAgICAgICAgICBbJiwK KyAgICAgICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElk JiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50 Q29ubmVjdGlvbih3b3JrZXJfbm9kZS5nZXQoKSwKK0BAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBX b3JrZXJXYXRjaGVyOjpPbkJlZm9yZVdvcmtlckRlc3RybworICAgICAgICAgICBbJiwgdGhpc10o Ymxpbms6OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKKyAg ICAgICAgICAgICBEaXNjb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLmdl dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNh dGVkX3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAg ICBjcmVhdG9yKTsKKyAKKyAgIC8vIERpc2Nvbm5lY3QgYWxsIGNoaWxkIHdvcmtlcnMgYmVmb3Jl IGRlc3Ryb3lpbmcgdGhlIG5vZGUuCitAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgV29ya2VyV2F0 Y2hlcjo6T25Db250cm9sbGVlQWRkZWQoCisgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbGllbnRf dXVpZCwKKyAgICAgY29uc3QgY29udGVudDo6U2VydmljZVdvcmtlckNsaWVudEluZm8mIGNsaWVu dF9pbmZvKSB7CisgICBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAg ICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9i YWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAg IC8vIEZvciB3aW5kb3cgY2xpZW50cywgaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQgdW50aWwgdGhl IG5hdmlnYXRpb24KKyAgICAgICAgICAgICAvLyBoYXMgY29tbWl0dGVkIHRvIGEgUmVuZGVyRnJh bWVIb3N0LgorQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJv bGxlZUFkZGVkKAorICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVudChzZXJ2 aWNlX3dvcmtlcl9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgIH0pLAor KyAgICAgICAgICB9fSwKKyAgICAgICBjbGllbnRfaW5mbyk7CisgfQorIAorQEAgLTUyNyw3ICs1 MjcsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCisgICAgIHJl dHVybjsKKyAKKyAgIGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAg ICAgYmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2Jh bFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAg UmVtb3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2RlLCByZW5kZXJfZnJhbWVfaG9z dF9pZCk7CisgICAgICAgICAgIH0sCitAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgV29ya2VyV2F0 Y2hlcjo6T25Db250cm9sbGVlUmVtb3ZlZCgKKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgWyYs IHRoaXNdKGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7Cisg ICAgICAgICAgICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZSwgc2hh cmVkX3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAg ICBjbGllbnQpOworIH0KKyAKK0BAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVy OjpDb25uZWN0QWxsU2VydmljZVdvcgorIAorICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5z ZWNvbmQpIHsKKyAgICAgYWJzbDo6dmlzaXQoCistICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAor KyAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgICBbJiwgdGhpc10oY29udGVu dDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAg ICAgICAgICAgIEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9mcmFtZV9ob3N0 X2lkKTsKK0BAIC04MjUsNyArODI1LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25uZWN0QWxs U2VydmljZVdvcgorICAgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9r ZW4gc2hhcmVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdv cmtlckNsaWVudChzZXJ2aWNlX3dvcmtlcl9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKKy0gICAgICAgICAgICB9KSwK KysgICAgICAgICAgICB9fSwKKyAgICAgICAgIGt2LnNlY29uZCk7CisgICB9CisgfQorQEAgLTg0 MCw3ICs4NDAsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2aWNlCisg CisgICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgeworICAgICBhYnNsOjp2aXNp dCgKKy0gICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgICBiYXNlOjpPdmVybG9hZGVk eworICAgICAgICAgICAgIFsmLCB0aGlzXSgKKyAgICAgICAgICAgICAgICAgY29uc3QgY29udGVu dDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAg ICAgICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3JrZXJfbm9k ZSwKK0BAIC04NTQsNyArODU0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxs U2VydmljZQorICAgICAgICAgICAgIFsmLCB0aGlzXShjb25zdCBibGluazo6U2hhcmVkV29ya2Vy VG9rZW4mIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICAgIERpc2Nvbm5lY3RT aGFyZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7CistICAgICAg ICAgICAgfSksCisrICAgICAgICAgICAgfX0sCisgICAgICAgICBrdi5zZWNvbmQpOworICAgfQor IH0KK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92aXovc2Vydmlj ZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Zp ei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dw dS5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92aXovc2VydmljZS9k aXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKKysr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9l bWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjCTIwMjQtMDUtMTcgMTI6 MzM6NTguNzE2NjUwNTcyICswMjAwCitAQCAtMTcyMCw3ICsxNzIwLDcgQEAgdm9pZCBTa2lhT3V0 cHV0U3VyZmFjZUltcGxPbkdwdTo6Q29weU91dAorIAorICAgICAgIC8vIElzc3VlIHJlYWRiYWNr cyBmcm9tIHRoZSBzdXJmYWNlczoKKyAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IENvcHlP dXRwdXRSZXN1bHQ6OmtOVjEyTWF4UGxhbmVzOyArK2kpIHsKKy0gICAgICAgIFNrSVNpemUgc2l6 ZShwbGFuZV9zdXJmYWNlc1tpXS0+d2lkdGgoKSwgcGxhbmVfc3VyZmFjZXNbaV0tPmhlaWdodCgp KTsKKysgICAgICAgIFNrSVNpemUgc2l6ZXtwbGFuZV9zdXJmYWNlc1tpXS0+d2lkdGgoKSwgcGxh bmVfc3VyZmFjZXNbaV0tPmhlaWdodCgpfTsKKyAgICAgICAgIFNrSW1hZ2VJbmZvIGRzdF9pbmZv ID0gU2tJbWFnZUluZm86Ok1ha2UoCisgICAgICAgICAgICAgc2l6ZSwgKGkgPT0gMCkgPyBrQWxw aGFfOF9Ta0NvbG9yVHlwZSA6IGtSOEc4X3Vub3JtX1NrQ29sb3JUeXBlLAorICAgICAgICAgICAg IGtVbnByZW11bF9Ta0FscGhhVHlwZSk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbXBvbmVudHMvd2ViX3BhY2thZ2Uvc2lnbmVkX3dlYl9idW5kbGVzL3NpZ25lZF93ZWJfYnVu ZGxlX3NpZ25hdHVyZV92ZXJpZmllci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvd2ViX3BhY2thZ2Uvc2lnbmVkX3dlYl9idW5kbGVz L3NpZ25lZF93ZWJfYnVuZGxlX3NpZ25hdHVyZV92ZXJpZmllci5jYworLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29tcG9uZW50cy93ZWJfcGFja2FnZS9zaWduZWRfd2ViX2J1bmRsZXMvc2ln bmVkX3dlYl9idW5kbGVfc2lnbmF0dXJlX3ZlcmlmaWVyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yCTIwMjQtMDUtMTcgMTc6MTg6NDcuODQxNDc5Njk3ICswMjAwCisrKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL3dlYl9wYWNrYWdlL3NpZ25lZF93ZWJfYnVuZGxlcy9zaWdu ZWRfd2ViX2J1bmRsZV9zaWduYXR1cmVfdmVyaWZpZXIuY2MJMjAyNC0wNS0xNyAxODoyMzo0MS42 NzkwNTQ3ODUgKzAyMDAKK0BAIC0xODEsOSArMTgxLDkgQEAgdm9pZCBTaWduZWRXZWJCdW5kbGVT aWduYXR1cmVWZXJpZmllcjo6TworICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvd2VicGFj a2FnZS9ibG9iLzNmOTVlYzM2NWI4N2VkMTlkMmNiNTE4NmU0NzNjY2M0ZDAxMWUyYWYvZXhwbGFp bmVycy9pbnRlZ3JpdHktc2lnbmF0dXJlLm1kCisgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBwYXls b2FkX3RvX3ZlcmlmeSA9IENyZWF0ZVNpZ25hdHVyZVBheWxvYWQoeworICAgICAgIC51bnNpZ25l ZF93ZWJfYnVuZGxlX2hhc2ggPSBhYnNsOjp2aXNpdCgKKy0gICAgICAgICAgYmFzZTo6T3Zlcmxv YWRlZChbXShjb25zdCBhdXRvJiBkaWdlc3QpIC0+IGJhc2U6OnNwYW48Y29uc3QgdWludDhfdD4g eworKyAgICAgICAgICBiYXNlOjpPdmVybG9hZGVke1tdKGNvbnN0IGF1dG8mIGRpZ2VzdCkgLT4g YmFzZTo6c3Bhbjxjb25zdCB1aW50OF90PiB7CisgICAgICAgICAgICAgcmV0dXJuIGRpZ2VzdDsK Ky0gICAgICAgICAgfSksCisrICAgICAgICAgIH19LAorICAgICAgICAgICAqdW5zaWduZWRfd2Vi X2J1bmRsZV9oYXNoKSwKKyAgICAgICAuaW50ZWdyaXR5X2Jsb2NrX2Nib3IgPSBDcmVhdGVJbnRl Z3JpdHlCbG9ja0NCT1IoKSwKKyAgICAgICAuYXR0cmlidXRlc19jYm9yID0gc2lnbmF0dXJlX3N0 YWNrX2VudHJ5LmF0dHJpYnV0ZXNfY2JvcigpLAorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2Rvd25s b2FkL3NhdmVfcGFja2FnZS5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9i cm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rvcgky MDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYwkyMDI0LTA1LTE3 IDEyOjMzOjU4LjcxNzY1MDU5MiArMDIwMAorQEAgLTgwMiw4ICs4MDIsOCBAQCB2b2lkIFNhdmVQ YWNrYWdlOjpGaW5pc2goKSB7CisgICBpZiAoZG93bmxvYWRfKSB7CisgICAgIHN0ZDo6dmVjdG9y PGRvd25sb2FkOjpEb3dubG9hZFNhdmVJdGVtRGF0YTo6SXRlbUluZm8+IGZpbGVzOworICAgICBm b3IgKGF1dG8mIGl0ZW0gOiBzYXZlZF9zdWNjZXNzX2l0ZW1zXykgeworLSAgICAgIGZpbGVzLmVt cGxhY2VfYmFjayhpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0uc2Vjb25kLT51cmwoKSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJlZmVycmVyKCkudXJsKTsK KysgICAgICBmaWxlcy5lbXBsYWNlX2JhY2soKSA9IHtpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCks IGl0ZW0uc2Vjb25kLT51cmwoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWNv bmQtPnJlZmVycmVyKCkudXJsfTsKKyAgICAgfQorICAgICBkb3dubG9hZDo6RG93bmxvYWRTYXZl SXRlbURhdGE6OkF0dGFjaEl0ZW1EYXRhKGRvd25sb2FkXywgc3RkOjptb3ZlKGZpbGVzKSk7Cisg ICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9mZW5j ZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2Vk X2ZyYW1lX2NvbmZpZy5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93 c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJhbWVfY29uZmlnLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MTcuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9j b25maWcuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTc2NTA1OTIgKzAyMDAKK0BAIC00MDcsNyAr NDA3LDcgQEAgdm9pZCBGZW5jZWRGcmFtZVByb3BlcnRpZXM6OlVwZGF0ZVBhcmVudAorICAgICAg ICAgZmVhdHVyZSwgYWxsb3dfbGlzdC5BbGxvd2VkT3JpZ2lucygpLCBhbGxvd19saXN0LlNlbGZJ Zk1hdGNoZXMoKSwKKyAgICAgICAgIGFsbG93X2xpc3QuTWF0Y2hlc0FsbCgpLCBhbGxvd19saXN0 Lk1hdGNoZXNPcGFxdWVTcmMoKSk7CisgICB9CistICBwYXJlbnRfcGVybWlzc2lvbnNfaW5mb18u ZW1wbGFjZShwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW4pOworKyAgcGFyZW50X3Blcm1p c3Npb25zX2luZm9fLmVtcGxhY2UoKSA9IHtwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW59 OworIH0KKyAKKyB9ICAvLyBuYW1lc3BhY2UgY29udGVudAorZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9z ZXRfcGFyc2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNl ci5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ZpcnN0X3Bh cnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0 X3BhcnNlci5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxODY1MDYxNCArMDIwMAorQEAgLTc3NCw3 ICs3NzQsNyBAQCBGaXJzdFBhcnR5U2V0UGFyc2VyOjpQYXJzZVNldHNGcm9tRW50ZXJwCisgICAg ICAgICAgICAgICAgICAgICAgY29udGV4dC5HZXRQb2xpY3lTZXRzRnJvbUxpc3QoCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHBvbGljeS5GaW5kTGlzdChrRmlyc3RQYXJ0eVNldFBvbGljeUFk ZGl0aW9uc0ZpZWxkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5U2V0VHlwZTo6 a0FkZGl0aW9uKSk7CistICAgIHJldHVybiBQYXJzZWRQb2xpY3lTZXRMaXN0cyhzdGQ6Om1vdmUo cmVwbGFjZW1lbnRzKSwgc3RkOjptb3ZlKGFkZGl0aW9ucykpOworKyAgICByZXR1cm4gUGFyc2Vk UG9saWN5U2V0TGlzdHN7c3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShhZGRpdGlv bnMpfTsKKyAgIH0oKTsKKyAKKyAgIGNvbnRleHQuUG9zdFByb2Nlc3NTZXRMaXN0cyhzZXRfbGlz dHMpOworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZ3B1 L2NvbXBvc2l0b3JfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9ncHUvY29tcG9zaXRvcl91dGlsLmNjCistLS0gY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZ3B1L2NvbXBvc2l0b3JfdXRpbC5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2dwdS9jb21w b3NpdG9yX3V0aWwuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTg2NTA2MTQgKzAyMDAKK0BAIC0x MDgsNyArMTA4LDcgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgor ICAgICAgICpiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3VycmVudFByb2Nlc3MoKTsKKyAKKyAgIHN0 ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBmZWF0dXJlczsKKy0gIGZlYXR1cmVzLmVtcGxhY2Vf YmFjaygKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICIyZF9jYW52YXMi LAorICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBncHVfZmVhdHVyZV9p bmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTLAorQEAgLTEx NiwxMyArMTE2LDEzIEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIK KyAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAgIkFjY2VsZXJhdGVkIDJE IGNhbnZhcyBpcyB1bmF2YWlsYWJsZTogZWl0aGVyIGRpc2FibGVkICIKKyAgICAgICAgICAgInZp YSBibG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0gICAgICB0cnVlKTsKKy0gIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2Vf YmFjaygpID0geworICAgICAgICJjYW52YXNfb29wX3Jhc3Rlcml6YXRpb24iLAorICAgICAgIFNh ZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQ VV9GRUFUVVJFX1RZUEVfQ0FOVkFTX09PUF9SQVNURVJJWkFUSU9OLAorLSAgICAgICAgICBjb21t YW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZUFjY2VsZXJhdGVkMmRDYW52YXMp KSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgICAgIGNvbW1hbmRfbGluZS5I YXNTd2l0Y2goc3dpdGNoZXM6OmtEaXNhYmxlQWNjZWxlcmF0ZWQyZENhbnZhcykpfTsKKysgIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJncHVfY29tcG9zaXRpbmciLAorICAg ICAgIC8vIFRPRE8ocml2cik6IFJlcGxhY2Ugd2l0aCBhIGNoZWNrIHRvIHNlZSB3aGljaCBiYWNr ZW5kIGlzIHVzZWQgZm9yCisgICAgICAgLy8gY29tcG9zaXRpbmc7IGRvIHRoZSBzYW1lIGZvciBH UFUgcmFzdGVyaXphdGlvbiBpZiBpdCdzIGVuYWJsZWQuIEZvcgorQEAgLTEzNiwxNiArMTM2LDE2 IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKKyAgICAgICAgICAg ImFib3V0OmZsYWdzICIKKyAgICAgICAgICAgIm9yIHRoZSBjb21tYW5kIGxpbmUuIFRoZSBicm93 c2VyIHdpbGwgZmFsbCBiYWNrIHRvIHNvZnR3YXJlICIKKyAgICAgICAgICAgImNvbXBvc2l0aW5n IGFuZCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gd2lsbCBiZSB1bmF2YWlsYWJsZS4iKSwKKy0gICAg ICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysgIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ3ZWJnbCIsCisgICAgICAgU2FmZUdl dEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfV0VCR0wsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRjaChzd2l0Y2hlczo6a0Rpc2Fi bGVXZWJHTCkpLAorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAgICAgICAgICAiV2Vi R0wgaGFzIGJlZW4gZGlzYWJsZWQgdmlhIGJsb2NrbGlzdCBvciB0aGUgY29tbWFuZCBsaW5lLiIp LAorLSAgICAgIGZhbHNlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICBmYWxz ZX07CisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAidmlkZW9fZGVjb2Rl IiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKKyAgICAgICAgICAgZ3B1X2ZlYXR1cmVf aW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1ZJREVPX0RFQ09ERSwKK0BA IC0xNTYsOCArMTU2LDggQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1 cgorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAgICAgICAgICAiQWNjZWxlcmF0ZWQg dmlkZW8gZGVjb2RlIGhhcyBiZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJsb2NrbGlzdCwgIgor ICAgICAgICAgICAiYWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0gICAgICB0 cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysgIGZlYXR1 cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ2aWRlb19lbmNvZGUiLAorICAgICAgIFNh ZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQ VV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfVklERU9fRU5DT0RFLAorQEAgLTE2OSwzMyArMTY5 LDMzIEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKKyAgICAgICBE aXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAgIkFjY2VsZXJhdGVkIHZpZGVvIGVuY29k ZSBoYXMgYmVlbiBkaXNhYmxlZCwgZWl0aGVyIHZpYSBibG9ja2xpc3QsICIKKyAgICAgICAgICAg ImFib3V0OmZsYWdzIG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCistICAgICAgdHJ1ZSk7CistICBm ZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgdHJ1ZX07CisrICBmZWF0dXJlcy5lbXBsYWNl X2JhY2soKSA9IHsKKyAgICAgICAicmFzdGVyaXphdGlvbiIsCisgICAgICAgU2FmZUdldEZlYXR1 cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cHU6OkdQVV9GRUFUVVJFX1RZUEVfR1BVX1RJTEVfUkFTVEVSSVpBVElPTiksCisgICAgICAgRGlz YWJsZUluZm86OlByb2JsZW0oCisgICAgICAgICAgICJBY2NlbGVyYXRlZCByYXN0ZXJpemF0aW9u IGhhcyBiZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJsb2NrbGlzdCwgIgorICAgICAgICAgICAi YWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0gICAgICB0cnVlKTsKKy0gIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2Vf YmFjaygpID0geworICAgICAgICJvcGVuZ2wiLCBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVh dHVyZV9pbmZvLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHU6OkdQ VV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfR0wpKTsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX0dMKX07Cisg I2lmIEJVSUxERkxBRyhFTkFCTEVfVlVMS0FOKQorLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAor KyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgInZ1bGthbiIsCistICAgICAg U2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9U WVBFX1ZVTEtBTikpOworKyAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2lu Zm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9WVUxLQU4pfTsKKyAjZW5kaWYKKy0gIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJt dWx0aXBsZV9yYXN0ZXJfdGhyZWFkcyIsCistICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoTnVt YmVyT2ZSZW5kZXJlclJhc3RlclRocmVhZHMoKSA+IDEpKTsKKysgICAgICBHZXRGYWtlRmVhdHVy ZVN0YXR1cyhOdW1iZXJPZlJlbmRlcmVyUmFzdGVyVGhyZWFkcygpID4gMSl9OworICNpZiBCVUlM REZMQUcoSVNfQU5EUk9JRCkKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJzdXJmYWNlX2NvbnRyb2wiLAorICAgICAgIFNh ZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FORFJPSURfU1VSRkFDRV9DT05UUk9MKSk7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FORFJP SURfU1VSRkFDRV9DT05UUk9MKX07CisgI2VuZGlmCistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2so CisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAid2ViZ2wyIiwKKyAgICAg ICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKKyAgICAgICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1 OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1dFQkdMMiwKK0BAIC0yMDMsMTIgKzIwMywx MiBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4gR2V0R3B1RmVhdHVyCisgICAgICAgICAg ICAgICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZVdlYkdMMikpLAor ICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAgICAgICAgICAiV2ViR0wyIGhhcyBiZWVu IGRpc2FibGVkIHZpYSBibG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0gICAgICBm YWxzZSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soInJhd19kcmF3IiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBHZXRGYWtlRmVhdHVyZVN0YXR1cyhmZWF0dXJlczo6SXNVc2luZ1Jhd0Ry YXcoKSkpOworLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCJkaXJlY3RfcmVuZGVyaW5nX2Rpc3Bs YXlfY29tcG9zaXRvciIsCistICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVT dGF0dXMoZmVhdHVyZXM6OklzRHJEY0VuYWJsZWQoKSkpOworLSAgZmVhdHVyZXMuZW1wbGFjZV9i YWNrKAorKyAgICAgIGZhbHNlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geyJyYXdf ZHJhdyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVh dHVyZXM6OklzVXNpbmdSYXdEcmF3KCkpfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0g eyJkaXJlY3RfcmVuZGVyaW5nX2Rpc3BsYXlfY29tcG9zaXRvciIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVhdHVyZXM6OklzRHJEY0VuYWJsZWQoKSl9 OworKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgIndlYmdwdSIsCisgICAg ICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoCisgICAgICAgICAgIGdwdV9mZWF0dXJlX2luZm8sIGdw dTo6R1BVX0ZFQVRVUkVfVFlQRV9BQ0NFTEVSQVRFRF9XRUJHUFUsCitAQCAtMjE2LDE0ICsyMTYs MTQgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgorICAgICAgICAg ICAgICAgIWJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQoOjpmZWF0dXJlczo6a1dlYkdQVVNl cnZpY2UpKSwKKyAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAgIldlYkdQ VSBoYXMgYmVlbiBkaXNhYmxlZCB2aWEgYmxvY2tsaXN0IG9yIHRoZSBjb21tYW5kIGxpbmUuIiks CistICAgICAgZmFsc2UpOworLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAorKyAgICAgIGZhbHNl fTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJza2lhX2dyYXBoaXRl IiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9pbmZvLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9TS0lBX0dSQVBISVRF KSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1NLSUFfR1JBUEhJVEUpfTsKKysgIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygpID0geworICAgICAgICJ3ZWJubiIsCistICAgICAgU2FmZUdldEZlYXR1cmVT dGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1dFQk5OKSk7Cisr ICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVB VFVSRV9UWVBFX1dFQk5OKX07CisgICByZXR1cm4gZmVhdHVyZXM7CisgfQorIAorZGlmZiAtdXAg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVh ZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3Ig Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVh ZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2Vs bGVyX3NpZ25hbHMuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE3 LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93 c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5oCTIw MjQtMDUtMTcgMTI6MzM6NTguNzE4NjUwNjE0ICswMjAwCitAQCAtMTMzLDYgKzEzMyw3IEBAIGNs YXNzIENPTlRFTlRfRVhQT1JUIEhlYWRlckRpcmVjdEZyb21TZWwKKyAKKyAgICAgLy8gVGhlIEFk LUF1Y3Rpb24tU2lnbmFscyByZXNwb25zZSBzZXJ2ZWQgYnkgYG9yaWdpbmAuCisgICAgIHN0ZDo6 c3RyaW5nIHJlc3BvbnNlX2pzb247CisrICAgIFVucHJvY2Vzc2VkUmVzcG9uc2UoYXV0byB1LCBh dXRvIHMpIDogb3JpZ2luKHUpLCByZXNwb25zZV9qc29uKHMpIHsgfQorICAgfTsKKyAKKyAgIC8v IEluZm9ybWF0aW9uIGZyb20gUGFyc2VBbmRGaW5kKCkgY2FsbHMgdXNlZCBieSBQYXJzZUFuZEZp bmRDb21wbGV0ZWQuCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJv d3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ludGVy ZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24uY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0 aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MTcuMDAwMDAw MDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50 ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4 LjcxOTY1MDYzNCArMDIwMAorQEAgLTYwMCw3ICs2MDAsNyBAQCBib29sIFNhbXBsZURlYnVnUmVw b3J0KAorICAgICAgICBibGluazo6ZmVhdHVyZXM6OmtGbGVkZ2VEZWJ1Z1JlcG9ydFJlc3RyaWN0 ZWRDb29sZG93bi5HZXQoKSAhPQorICAgICAgICAgICAgYmFzZTo6TWlsbGlzZWNvbmRzKDApKSkg eworICAgICBuZXdfZGVidWdfcmVwb3J0X2xvY2tvdXRfYW5kX2Nvb2xkb3ducy5kZWJ1Z19yZXBv cnRfY29vbGRvd25fbWFwW29yaWdpbl0gPQorLSAgICAgICAgRGVidWdSZXBvcnRDb29sZG93bihu b3dfbmVhcmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5cGUpOworKyAgICAgICAgRGVidWdSZXBv cnRDb29sZG93bntub3dfbmVhcmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5cGV9OworICAgfQor IAorICAgcmV0dXJuIGNhbl9zZW5kX2RlYnVnX3JlcG9ydDsKK2RpZmYgLXVwIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3Vw X3N0b3JhZ2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5j YworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dy b3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy NC0wNS0xNSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdl LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzIxNjUwNjc2ICswMjAwCitAQCAtMzQxMiw5ICszNDEy LDkgQEAgc3RkOjpvcHRpb25hbDxEZWJ1Z1JlcG9ydENvb2xkb3duPiBEb0dldAorICAgICByZXR1 cm4gc3RkOjpudWxsb3B0OworICAgfQorIAorLSAgcmV0dXJuIERlYnVnUmVwb3J0Q29vbGRvd24o Y29vbGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVtblRpbWUoMCksCisrICByZXR1cm4g RGVidWdSZXBvcnRDb29sZG93bntjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1u VGltZSgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PERlYnVn UmVwb3J0Q29vbGRvd25UeXBlPigKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50KDEpKSk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29vbGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNv bHVtbkludCgxKSl9OworIH0KKyAKKyB2b2lkIERvR2V0RGVidWdSZXBvcnRDb29sZG93bnMoCitA QCAtMzU0MiwxMCArMzU0MiwxMCBAQCBEb0dldEtBbm9ueW1pdHlEYXRhKHNxbDo6RGF0YWJhc2Um IGRiLAorIAorICAgc3RkOjp2ZWN0b3I8U3RvcmFnZUludGVyZXN0R3JvdXA6OktBbm9ueW1pdHlE YXRhPiBrX2Fub25fZGF0YTsKKyAgIHdoaWxlIChpbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5T dGVwKCkpIHsKKy0gICAga19hbm9uX2RhdGEuZW1wbGFjZV9iYWNrKAorKyAgICBrX2Fub25fZGF0 YS5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAgIC8qa2V5PSovaW50ZXJlc3RfZ3JvdXBfa2Fu b25fcXVlcnkuQ29sdW1uU3RyaW5nKDApLAorICAgICAgICAgLyppc19rX2Fub255bW91cz0qL2lu dGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtbkJvb2woMSksCistICAgICAgICAvKmxhc3Rf dXBkYXRlZD0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMikpOworKyAg ICAgICAgLypsYXN0X3VwZGF0ZWQ9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5U aW1lKDIpfTsKKyAgIH0KKyAgIGlmICghaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3VjY2Vl ZGVkKCkpIHsKKyAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK0BAIC00MzM4LDcgKzQzMzgsNyBA QCBEb0dldEJpZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5cyhzcWw6OkRhCisgICAgIHN0ZDo6dmVj dG9yPEJpZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5PiBrZXlzOworICAgICBrZXlzLnJlc2VydmUo a2V5X3Byb3Rvcy5rZXlzX3NpemUoKSk7CisgICAgIGZvciAoYXV0byYga2V5X3Byb3RvIDogKmtl eV9wcm90b3MubXV0YWJsZV9rZXlzKCkpIHsKKy0gICAgICBrZXlzLmVtcGxhY2VfYmFjayhzdGQ6 Om1vdmUoKmtleV9wcm90by5tdXRhYmxlX2tleSgpKSwga2V5X3Byb3RvLmlkKCkpOworKyAgICAg IGtleXMuZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKCprZXlfcHJvdG8ubXV0YWJsZV9rZXko KSksIGtleV9wcm90by5pZCgpfTsKKyAgICAgfQorICAgICByZXR1cm4ge2V4cGlyYXRpb24sIGtl eXN9OworICAgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dz ZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3JlbmRlcmVy X2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3JlbmRlcmVy X2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcyMzY1 MDcxNyArMDIwMAorQEAgLTg3OTYsNyArODc5Niw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1w bDo6U2VuZEZlbmNlZEZyYW0KKyAgIGZvciAoY29uc3QgYmxpbms6OkZlbmNlZEZyYW1lOjpSZXBv cnRpbmdEZXN0aW5hdGlvbiYgZGVzdGluYXRpb24gOgorICAgICAgICBkZXN0aW5hdGlvbnMpIHsK KyAgICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAgICAgICBE ZXN0aW5hdGlvbkVudW1FdmVudChldmVudF90eXBlLCBldmVudF9kYXRhLCBjcm9zc19vcmlnaW5f ZXhwb3NlZCksCisrICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudHtldmVudF90eXBlLCBldmVu dF9kYXRhLCBjcm9zc19vcmlnaW5fZXhwb3NlZH0sCisgICAgICAgICBkZXN0aW5hdGlvbik7Cisg ICB9CisgfQorQEAgLTg4MjcsNyArODgyNyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6 U2VuZEZlbmNlZEZyYW0KKyAgIH0KKyAKKyAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNv bkludGVybmFsKAorLSAgICAgIERlc3RpbmF0aW9uVVJMRXZlbnQoZGVzdGluYXRpb25fdXJsLCBj cm9zc19vcmlnaW5fZXhwb3NlZCksCisrICAgICAgRGVzdGluYXRpb25VUkxFdmVudHtkZXN0aW5h dGlvbl91cmwsIGNyb3NzX29yaWdpbl9leHBvc2VkfSwKKyAgICAgICBibGluazo6RmVuY2VkRnJh bWU6OlJlcG9ydGluZ0Rlc3RpbmF0aW9uOjprQnV5ZXIpOworIH0KKyAKK0BAIC04OTU4LDcgKzg5 NTgsNyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCisgICAgICAg ICBkYXRhID0gaW5mby0+ZGF0YTsKKyAgICAgICB9CisgICAgICAgaW5pdGlhdG9yX3JmaC0+U2Vu ZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAgICAgICAgIEF1dG9tYXRp Y0JlYWNvbkV2ZW50KGV2ZW50X3R5cGUsIGRhdGEpLCBkZXN0aW5hdGlvbiwKKysgICAgICAgICAg QXV0b21hdGljQmVhY29uRXZlbnR7ZXZlbnRfdHlwZSwgZGF0YX0sIGRlc3RpbmF0aW9uLAorICAg ICAgICAgICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOworICAgICB9Cisg ICB9IGVsc2UgeworQEAgLTg5NjksNyArODk2OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1w bDo6TWF5YmVTZW5kRmVuY2UKKyAgICAgZm9yIChibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGlu Z0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIDoKKyAgICAgICAgICBpbmZvLT5kZXN0aW5hdGlvbnMp IHsKKyAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25J bnRlcm5hbCgKKy0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlwZSwgaW5m by0+ZGF0YSksIGRlc3RpbmF0aW9uLAorKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudHtl dmVudF90eXBlLCBpbmZvLT5kYXRhfSwgZGVzdGluYXRpb24sCisgICAgICAgICAgIG5hdmlnYXRp b25fcmVxdWVzdC5HZXROYXZpZ2F0aW9uSWQoKSk7CisgICAgIH0KKyAgIH0KK2RpZmYgLXVwIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZp Y2Vfd29ya2VyX2NvbnRhaW5lcl9ob3N0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vf d29ya2VyX2NvbnRhaW5lcl9ob3N0LmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250 ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3Qu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjoxOC4wMDAwMDAwMDAg KzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNl X3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYwkyMDI0LTA1LTE3IDEyOjMz OjU4LjcyNDY1MDczOCArMDIwMAorQEAgLTk0Nyw3ICs5NDcsNyBAQCBTZXJ2aWNlV29ya2VyQ29u dGFpbmVySG9zdDo6R2V0Q2xpZW50VHlwCisgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVF TkNFKHNlcXVlbmNlX2NoZWNrZXJfKTsKKyAgIERDSEVDSyhjbGllbnRfaW5mb18pOworICAgcmV0 dXJuIGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgYmFzZTo6 T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgW10oR2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVy X2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAgICAgICByZXR1cm4gYmxpbms6Om1vam9tOjpTZXJ2 aWNlV29ya2VyQ2xpZW50VHlwZTo6a1dpbmRvdzsKKyAgICAgICAgICAgfSwKK0BAIC05NTYsNyAr OTU2LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lckhvc3Q6OkdldENsaWVudFR5cAorICAgICAg ICAgICB9LAorICAgICAgICAgICBbXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hhcmVkX3dv cmtlcl90b2tlbikgeworICAgICAgICAgICAgIHJldHVybiBibGluazo6bW9qb206OlNlcnZpY2VX b3JrZXJDbGllbnRUeXBlOjprU2hhcmVkV29ya2VyOworLSAgICAgICAgICB9KSwKKysgICAgICAg ICAgfX0sCisgICAgICAgKmNsaWVudF9pbmZvXyk7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3Jr ZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3Jr ZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MKKy0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9z ZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE4LjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3Nl cnZpY2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCTIwMjQtMDUt MTcgMTI6MzM6NTguNzI0NjUwNzM4ICswMjAwCitAQCAtMzY3LDEwICszNjcsMTAgQEAgU2Vydmlj ZVdvcmtlck1haW5SZXNvdXJjZUxvYWRlckludGVyY2VwdAorICAgfQorICAgYXV0byogc3RvcmFn ZV9wYXJ0aXRpb24gPSBwcm9jZXNzLT5HZXRTdG9yYWdlUGFydGl0aW9uKCk7CisgCistICByZXR1 cm4gYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZChbJiwgdGhpc10oYXV0byB0b2tlbikgewor KyAgcmV0dXJuIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7WyYsIHRoaXNdKGF1dG8gdG9r ZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdG9yYWdlS2V5RnJvbVdv cmtlckhvc3Qoc3RvcmFnZV9wYXJ0aXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBvcmlnaW4pOworLSAgICAgICAg ICAgICAgICAgICAgIH0pLAorKyAgICAgICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAg ICAgICAgICAgICp3b3JrZXJfdG9rZW5fKTsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hv c3QuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250 ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCistLS0gY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVk X3dvcmtlcl9ob3N0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6 MTguMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jy b3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCTIwMjQtMDUtMTcgMTI6 MzM6NTguNzI1NjUwNzU5ICswMjAwCitAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRGVkaWNhdGVk V29ya2VySG9zdDo6U3RhcnRTY3JpcHRMb2EKKyAgIFJlbmRlckZyYW1lSG9zdEltcGwqIGNyZWF0 b3JfcmVuZGVyX2ZyYW1lX2hvc3QgPSBudWxscHRyOworICAgRGVkaWNhdGVkV29ya2VySG9zdCog Y3JlYXRvcl93b3JrZXIgPSBudWxscHRyOworIAorLSAgYWJzbDo6dmlzaXQoYmFzZTo6T3Zlcmxv YWRlZCgKKysgIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgICAgICAg ICAgWyZdKGNvbnN0IEdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9p ZCkgeworICAgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCA9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0SW1wbDo6RnJvbUlEKHJlbmRl cl9mcmFtZV9ob3N0X2lkKTsKK0BAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3Jr ZXJIb3N0OjpTdGFydFNjcmlwdExvYQorICAgICAgICAgICAgICAgICAgIFsmXShibGluazo6RGVk aWNhdGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAg ICAgICAgICAgY3JlYXRvcl93b3JrZXIgPSBzZXJ2aWNlXy0+R2V0RGVkaWNhdGVkV29ya2VySG9z dEZyb21Ub2tlbigKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rv a2VuKTsKKy0gICAgICAgICAgICAgICAgICB9KSwKKysgICAgICAgICAgICAgICAgICB9fSwKKyAg ICAgICAgICAgICAgIGNyZWF0b3JfKTsKKyAKKyAgIGlmICghY3JlYXRvcl9yZW5kZXJfZnJhbWVf aG9zdCAmJiAhY3JlYXRvcl93b3JrZXIpIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tf cXVldWUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9l eHRlbnNpb25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1 ZS5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZp Y2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVldWUuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IJMjAyNC0wNS0xOCAyMzo0MzoyNS45ODQ3Njc0NTggKzAyMDAKKysrKyBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dv cmtlcl90YXNrX3F1ZXVlLmNjCTIwMjQtMDUtMTggMjM6NDc6NDMuOTgxMjU0NzA4ICswMjAwCitA QCAtMzk2LDggKzM5Niw4IEBAIGJvb2wgU2VydmljZVdvcmtlclRhc2tRdWV1ZTo6SXNSZWFkeVRv UnUKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorIAorLSAgY29uc3QgU2VxdWVuY2VkQ29udGV4 dElkIGNvbnRleHRfaWQoZXh0ZW5zaW9uLT5pZCgpLCBicm93c2VyX2NvbnRleHRfLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFjdGl2YXRpb25fdG9rZW4pOworKyAg Y29uc3QgU2VxdWVuY2VkQ29udGV4dElkIGNvbnRleHRfaWR7ZXh0ZW5zaW9uLT5pZCgpLCBicm93 c2VyX2NvbnRleHRfLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFj dGl2YXRpb25fdG9rZW59OworICAgY29uc3QgV29ya2VyU3RhdGUqIHdvcmtlcl9zdGF0ZSA9IEdl dFdvcmtlclN0YXRlKGNvbnRleHRfaWQpOworIAorICAgaWYgKCF3b3JrZXJfc3RhdGUgfHwgIXdv cmtlcl9zdGF0ZS0+d29ya2VyX2lkXykgeworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuaC5ub19t YXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9jb21tYW5kX2J1 ZmZlci9jbGllbnQvc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5oCistLS0gY2hyb21pdW0tMTI1LjAu NjQyMi42MC9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2Uu aC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjIyLjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVu dC9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MjU2NTA3NTkg KzAyMDAKK0BAIC02NCwxOSArNjQsMTkgQEAgc3RydWN0IFNoYXJlZEltYWdlSW5mbyB7CisgICAg ICAgICAgICAgICAgICAgU2tBbHBoYVR5cGUgYWxwaGFfdHlwZSwKKyAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCB1c2FnZSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ192aWV3IGRl YnVnX2xhYmVsKQorLSAgICAgIDogbWV0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJm YWNlX29yaWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2UpLAorKyAgICAgIDogbWV0YXtmb3JtYXQsIHNp emUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2V9LAorICAg ICAgICAgZGVidWdfbGFiZWwoZGVidWdfbGFiZWwpIHt9CisgICBTaGFyZWRJbWFnZUluZm8oY29u c3Qgdml6OjpTaGFyZWRJbWFnZUZvcm1hdCYgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgIGdm eDo6U2l6ZSBzaXplLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmeDo6Q29sb3JTcGFjZSYg Y29sb3Jfc3BhY2UsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXNhZ2UsCisgICAgICAg ICAgICAgICAgICAgc3RkOjpzdHJpbmdfdmlldyBkZWJ1Z19sYWJlbCkKKy0gICAgICA6IG1ldGEo Zm9ybWF0LAorKyAgICAgIDogbWV0YXtmb3JtYXQsCisgICAgICAgICAgICAgIHNpemUsCisgICAg ICAgICAgICAgIGNvbG9yX3NwYWNlLAorICAgICAgICAgICAgICBrVG9wTGVmdF9HclN1cmZhY2VP cmlnaW4sCisgICAgICAgICAgICAgIGtQcmVtdWxfU2tBbHBoYVR5cGUsCistICAgICAgICAgICAg IHVzYWdlKSwKKysgICAgICAgICAgICAgdXNhZ2V9LAorICAgICAgICAgZGVidWdfbGFiZWwoZGVi dWdfbGFiZWwpIHt9CisgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGV4aXN0cyBvbmx5IHRvIHN1cHBv cnQgdGhlIERFUFJFQ0FURUQgQ3JlYXJlU2hhcmVkSW1hZ2UKKyAgIC8vIGNhbGwgYmVsb3cgdGhh dCBhY2NlcHRzIGEgR3B1TWVtb3J5QnVmZmVyLiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4g dGhhdAorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29tbWFuZF9idWZmZXIv c2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29tbWFuZF9idWZmZXIvc2Vy dmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2MKKy0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZV9pbnRl cmZhY2VfaW5fcHJvY2Vzcy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIz OjQ2OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2Nv bW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNj CTIwMjQtMDUtMTcgMTI6MzM6NTguNzI1NjUwNzU5ICswMjAwCitAQCAtNjAxLDEyICs2MDEsMTIg QEAgU2hhcmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNyZWF0ZVNoYQorIAorICAgcmV0dXJu IGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKKyAgICAgICBtYWlsYm94 LAorLSAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEoCisrICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0 YXsKKyAgICAgICAgICAgdml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAorICAg ICAgICAgICAgICAgR2V0UGxhbmVCdWZmZXJGb3JtYXQocGxhbmUsIGdwdV9tZW1vcnlfYnVmZmVy LT5HZXRGb3JtYXQoKSkpLAorICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgp LCBzaV9pbmZvLm1ldGEuY29sb3Jfc3BhY2UsCisgICAgICAgICAgIHNpX2luZm8ubWV0YS5zdXJm YWNlX29yaWdpbiwgc2lfaW5mby5tZXRhLmFscGhhX3R5cGUsCistICAgICAgICAgIHNpX2luZm8u bWV0YS51c2FnZSksCisrICAgICAgICAgIHNpX2luZm8ubWV0YS51c2FnZX0sCisgICAgICAgR2Vu VW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJfLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0VHlw ZSgpKTsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9pcGMvY2xp ZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2lwYy9jbGllbnQvY2xpZW50X3NoYXJlZF9p bWFnZV9pbnRlcmZhY2UuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9pcGMvY2xp ZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yCTIwMjQtMDUtMTUgMjM6NDY6MjIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5j YwkyMDI0LTA1LTE3IDE1OjE3OjMzLjUyNzU1MjgzNyArMDIwMAorQEAgLTI0NywxMSArMjQ3LDEx IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVudFMKKyAgICAgICBBZGRN YWlsYm94KHByb3h5Xy0+Q3JlYXRlU2hhcmVkSW1hZ2UoCisgICAgICAgICAgIGJ1ZmZlcl9mb3Jt YXQsIHBsYW5lLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBzaV9pbmZvLAorICAgICAg ICAgICBncHVfbWVtb3J5X2J1ZmZlci0+Q2xvbmVIYW5kbGUoKSkpLAorLSAgICAgIFNoYXJlZElt YWdlTWV0YWRhdGEodml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAorKyAgICAg IFNoYXJlZEltYWdlTWV0YWRhdGF7dml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFBsYW5lQnVmZmVyRm9ybWF0KHBs YW5lLCBidWZmZXJfZm9ybWF0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncHVfbWVt b3J5X2J1ZmZlci0+R2V0U2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lfaW5m by5tZXRhLmNvbG9yX3NwYWNlLCBzaV9pbmZvLm1ldGEuc3VyZmFjZV9vcmlnaW4sCistICAgICAg ICAgICAgICAgICAgICAgICAgICBzaV9pbmZvLm1ldGEuYWxwaGFfdHlwZSwgc2lfaW5mby5tZXRh LnVzYWdlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHNpX2luZm8ubWV0YS5hbHBoYV90 eXBlLCBzaV9pbmZvLm1ldGEudXNhZ2V9LAorICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4o KSwgaG9sZGVyXywgZ3B1X21lbW9yeV9idWZmZXItPkdldFR5cGUoKSk7CisgfQorIAorQEAgLTI4 NiwxMyArMjg2LDEzIEBAIENsaWVudFNoYXJlZEltYWdlSW50ZXJmYWNlOjpDcmVhdGVTd2FwQ2gK KyAgIHJldHVybiBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFjZTo6U3dhcENoYWluU2hhcmVkSW1h Z2VzKAorICAgICAgIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKKyAg ICAgICAgICAgbWFpbGJveGVzLmZyb250X2J1ZmZlciwKKy0gICAgICAgICAgU2hhcmVkSW1hZ2VN ZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCisrICAgICAgICAg IFNoYXJlZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9v cmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9 LAorICAgICAgICAgICBzeW5jX3Rva2VuLCBob2xkZXJfLCBnZng6OkVNUFRZX0JVRkZFUiksCisg ICAgICAgYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAorICAgICAgICAg ICBtYWlsYm94ZXMuYmFja19idWZmZXIsCistICAgICAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEo Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAorKyAgICAgICAgICBTaGFyZWRJ bWFnZU1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAgICAg ICAgICAgc3luY190b2tlbiwgaG9sZGVyXywgZ2Z4OjpFTVBUWV9CVUZGRVIpKTsKKyB9CisgCitA QCAtMzUwLDggKzM1MCw4IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVu dFMKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4o CisgICAgICAgbWFpbGJveCwKKy0gICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6 ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNhZ2UpLAorKyAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7Zm9ybWF0 LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sIGFscGhhX3R5cGUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICB1c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tl bigpLCBob2xkZXJfLCBnZng6OkVNUFRZX0JVRkZFUik7CisgfQorIAorZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2Mubm9fbWF0Y2hp bmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9uZXQvZG5zL2hvc3RfcmVzb2x2 ZXJfY2FjaGUuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL25ldC9kbnMvaG9zdF9yZXNv bHZlcl9jYWNoZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjMx LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbmV0L2Rucy9ob3N0 X3Jlc29sdmVyX2NhY2hlLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzI2NjUwNzc5ICswMjAwCitA QCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSG9zdFJlc29sdmVyQ2FjaGU6OlNldCgKKyAKKyAgIHN0 ZDo6c3RyaW5nIGRvbWFpbl9uYW1lID0gcmVzdWx0LT5kb21haW5fbmFtZSgpOworICAgZW50cmll c18uZW1wbGFjZSgKKy0gICAgICBLZXkoc3RkOjptb3ZlKGRvbWFpbl9uYW1lKSwgbmV0d29ya19h bm9ueW1pemF0aW9uX2tleSksCisrICAgICAgS2V5e3N0ZDo6bW92ZShkb21haW5fbmFtZSksIG5l dHdvcmtfYW5vbnltaXphdGlvbl9rZXl9LAorICAgICAgIEVudHJ5KHN0ZDo6bW92ZShyZXN1bHQp LCBzb3VyY2UsIHNlY3VyZSwgc3RhbGVuZXNzX2dlbmVyYXRpb24pKTsKKyAKKyAgIGlmIChlbnRy aWVzXy5zaXplKCkgPiBtYXhfZW50cmllc18pIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9jc3MvcHJvcGVydGllcy9jc3Nf cGFyc2luZ191dGlscy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvY3NzL3Byb3BlcnRpZXMvY3Nz X3BhcnNpbmdfdXRpbHMuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2NvcmUvY3NzL3Byb3BlcnRpZXMvY3NzX3BhcnNpbmdfdXRpbHMuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xOCAxMTozNToyOC42ODk3OTE2MjggKzAy MDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L2NvcmUvY3NzL3Byb3BlcnRpZXMvY3NzX3BhcnNpbmdfdXRpbHMuY2MJMjAyNC0wNS0xOCAxMToz NTo1Mi4yOTQzMzQ3OTAgKzAyMDAKK0BAIC03NTA5LDcgKzc1MDksNyBAQCBzdGQ6Om9wdGlvbmFs PEluc2V0QXJlYUtleXdvcmQ+IENvbnN1bWVJCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJu IHN0ZDo6bnVsbG9wdDsKKyAgIH0KKy0gIHJldHVybiBJbnNldEFyZWFLZXl3b3JkKGNzc19wYXJz aW5nX3V0aWxzOjpDb25zdW1lSWRlbnQocmFuZ2UpLCB0eXBlKTsKKysgIHJldHVybiBJbnNldEFy ZWFLZXl3b3Jke2Nzc19wYXJzaW5nX3V0aWxzOjpDb25zdW1lSWRlbnQocmFuZ2UpLCB0eXBlfTsK KyB9CisgCisgfSAgLy8gbmFtZXNwYWNlCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2FuY2hvcl9ldmFsdWF0b3Jf aW1wbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2FuY2hvcl9ldmFsdWF0b3JfaW1w bC5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvY29yZS9sYXlvdXQvYW5jaG9yX2V2YWx1YXRvcl9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yCTIwMjQtMDUtMTggMTE6MjM6MzMuMDM2ODc1MzQ3ICswMjAwCisrKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9hbmNo b3JfZXZhbHVhdG9yX2ltcGwuY2MJMjAyNC0wNS0xOCAxMToyNDowNS42OTc2ODQ0NTkgKzAyMDAK K0BAIC02MDEsNyArNjAxLDcgQEAgQW5jaG9yRXZhbHVhdG9ySW1wbDo6Q29tcHV0ZUluc2V0QXJl YU9mZgorICAgICByaWdodCA9IEV2YWx1YXRlKHF1ZXJ5LnZhbHVlKCksIHBvc2l0aW9uX2FuY2hv ciwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBpbnNldF9hcmVhX29mZnNldHMgKi8gc3RkOjpu dWxsb3B0KTsKKyAgIH0KKy0gIHJldHVybiBJbnNldEFyZWFPZmZzZXRzKHRvcCwgYm90dG9tLCBs ZWZ0LCByaWdodCk7CisrICByZXR1cm4gSW5zZXRBcmVhT2Zmc2V0c3t0b3AsIGJvdHRvbSwgbGVm dCwgcmlnaHR9OworIH0KKyAKKyBQaHlzaWNhbFJlY3QgQW5jaG9yRXZhbHVhdG9ySW1wbDo6SW5z ZXRBcmVhTW9kaWZpZWRDb250YWluaW5nQmxvY2soCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEvYXVkaW8vYXVk aW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVk aWEvYXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYworLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9tZWRpYS9hdWRp by9hdWRpb19yZW5kZXJlcl9taXhlcl9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMTUgMjM6NDY6NDIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21lZGlhL2F1ZGlvL2F1 ZGlvX3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MjY2NTA3 NzkgKzAyMDAKK0BAIC0xODEsOCArMTgxLDggQEAgQXVkaW9SZW5kZXJlck1peGVyKiBBdWRpb1Jl bmRlcmVyTWl4ZXJNYQorICAgICBEVkxPRygxKSA8PCAiTm90IHJldXNpbmcgbWl4ZXIgd2l0aCBl cnJvcnM6ICIgPDwgaXQtPnNlY29uZC5taXhlcjsKKyAKKyAgICAgLy8gTW92ZSBiYWQgbWl4ZXJz IG91dCBvZiB0aGUgcmV1c2UgbWFwLgorLSAgICBkZWFkX21peGVyc18uZW1wbGFjZV9iYWNrKHN0 ZDo6bW92ZShpdC0+c2Vjb25kLm1peGVyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpdC0+c2Vjb25kLnJlZl9jb3VudCk7CisrICAgIGRlYWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2so KSA9IHtzdGQ6Om1vdmUoaXQtPnNlY29uZC5taXhlciksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaXQtPnNlY29uZC5yZWZfY291bnR9OworICAgICBtaXhlcnNfLmVyYXNlKGl0KTsK KyAgIH0KKyAKK0BAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBBdWRpb1JlbmRlcmVyTWl4ZXJNYW5h Z2VyOjpSZXR1cm5NaQorICAgICB9CisgICB9IGVsc2UgaWYgKGRlYWRfaXQgPT0gZGVhZF9taXhl cnNfLmVuZCgpICYmIG1peGVyX3JlZi5taXhlci0+SGFzU2lua0Vycm9yKCkpIHsKKyAgICAgLy8g TW92ZSBiYWQgbWl4ZXJzIG91dCBvZiB0aGUgcmV1c2UgbWFwLgorLSAgICBkZWFkX21peGVyc18u ZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZShtaXhlcl9yZWYubWl4ZXIpLCBtaXhlcl9yZWYucmVmX2Nv dW50KTsKKysgICAgZGVhZF9taXhlcnNfLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShtaXhl cl9yZWYubWl4ZXIpLCBtaXhlcl9yZWYucmVmX2NvdW50fTsKKyAgICAgbWl4ZXJzXy5lcmFzZShp dCk7CisgICB9CisgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaC5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oCistLS0gY2hyb21pdW0tMTI1LjAu NjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3Bh bGV0dGUuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjQyLjAwMDAw MDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRlLmgJMjAyNC0wNS0xNyAxMjozMzo1 OC43MjY2NTA3NzkgKzAyMDAKK0BAIC05Niw3ICs5Niw3IEBAIGNsYXNzIFBMQVRGT1JNX0VYUE9S VCBGb250UGFsZXR0ZSA6IHB1YmwKKyAgICAgICBDb2xvcjo6Q29sb3JTcGFjZSBjb2xvcl9pbnRl cnBvbGF0aW9uX3NwYWNlLAorICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I6Okh1ZUludGVycG9s YXRpb25NZXRob2Q+IGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCkgeworICAgICByZXR1cm4gYmFz ZTo6QWRvcHRSZWYobmV3IEZvbnRQYWxldHRlKAorLSAgICAgICAgc3RhcnQsIGVuZCwgTm9uTm9y bWFsaXplZFBlcmNlbnRhZ2VzKHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKSwKKysg ICAgICAgIHN0YXJ0LCBlbmQsIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50 YWdlLCBlbmRfcGVyY2VudGFnZX0sCisgICAgICAgICBub3JtYWxpemVkX3BlcmNlbnRhZ2UsIGFs cGhhX211bHRpcGxpZXIsIGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsCisgICAgICAgICBodWVf aW50ZXJwb2xhdGlvbl9tZXRob2QpKTsKKyAgIH0KK0BAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3Mg UExBVEZPUk1fRVhQT1JUIEZvbnRQYWxldHRlIDogcHVibAorICAgICAgIGRvdWJsZSBub3JtYWxp emVkX3BlcmNlbnRhZ2UpIHsKKyAgICAgZG91YmxlIGVuZF9wZXJjZW50YWdlID0gbm9ybWFsaXpl ZF9wZXJjZW50YWdlICogMTAwLjA7CisgICAgIGRvdWJsZSBzdGFydF9wZXJjZW50YWdlID0gMTAw LjAgLSBlbmRfcGVyY2VudGFnZTsKKy0gICAgcmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdl cyhzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZSk7CisrICAgIHJldHVybiBOb25Ob3Jt YWxpemVkUGVyY2VudGFnZXN7c3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2V9OworICAg fQorIAorICAgZG91YmxlIEdldEFscGhhTXVsdGlwbGllcigpIGNvbnN0IHsKK2RpZmYgLXVwIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v Zm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v Zm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVy cG9sYXRpb24uY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0Njo0Mi4w MDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYwkyMDI0 LTA1LTE3IDEyOjMzOjU4LjcyNzY1MDgwMCArMDIwMAorQEAgLTMxLDcgKzMxLDcgQEAgVmVjdG9y PEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlPgorICAgICAgICAgY29sb3JfaW50ZXJw b2xhdGlvbl9zcGFjZSwgaHVlX2ludGVycG9sYXRpb25fbWV0aG9kLCBzdGFydF9jb2xvciwKKyAg ICAgICAgIGVuZF9jb2xvciwgcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllcik7CisgCistICAg IEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlIHJlc3VsdF9jb2xvcl9yZWNvcmQoaSwg cmVzdWx0X2NvbG9yKTsKKysgICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGUgcmVz dWx0X2NvbG9yX3JlY29yZHtzdGF0aWNfY2FzdDxpbnQ+KGkpLCByZXN1bHRfY29sb3J9OworICAg ICByZXN1bHRfY29sb3JfcmVjb3Jkcy5wdXNoX2JhY2socmVzdWx0X2NvbG9yX3JlY29yZCk7Cisg ICB9CisgICByZXR1cm4gcmVzdWx0X2NvbG9yX3JlY29yZHM7CitkaWZmIC11cCBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZf cmVuZGVyc3RhdHVzLmNwcC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVy c3RhdHVzLmNwcAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcGRmaXVt L2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDg6MTIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21p dW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9j cGRmX3JlbmRlcnN0YXR1cy5jcHAJMjAyNC0wNS0xNyAxMjozMzo1OC43Mjc2NTA4MDAgKzAyMDAK K0BAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBDUERGX1JlbmRlclN0YXR1czo6UHJvY2Vzc0NsaXBQ YXRoKAorICAgICB9IGVsc2UgeworICAgICAgIG1fcERldmljZS0+U2V0Q2xpcF9QYXRoRmlsbCgK KyAgICAgICAgICAgKnBQYXRoLCAmbXRPYmoyRGV2aWNlLAorLSAgICAgICAgICBDRlhfRmlsbFJl bmRlck9wdGlvbnMoQ2xpcFBhdGguR2V0Q2xpcFR5cGUoaSkpKTsKKysgICAgICAgICAgQ0ZYX0Zp bGxSZW5kZXJPcHRpb25ze0NsaXBQYXRoLkdldENsaXBUeXBlKGkpfSk7CisgICAgIH0KKyAgIH0K KyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvYmFzZS93YXlsYW5kL2NvbG9y X21hbmFnZXJfdXRpbC5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCistLS0gY2hyb21pdW0t MTI1LjAuNjQyMi42MC91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NzozMi4wMDAwMDAwMDAgKzAyMDAKKysr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0 aWwuaAkyMDI0LTA1LTE3IDEyOjMzOjU4LjcyODY1MDgyMSArMDIwMAorQEAgLTUyLDUzICs1Miw1 MyBAQCBjb25zdGV4cHIgYXV0byBrQ2hyb21hdGljaXR5TWFwID0gYmFzZTo6CisgICAgIHpjcl9j b2xvcl9tYW5hZ2VyX3YxX2Nocm9tYXRpY2l0eV9uYW1lcywKKyAgICAgUHJpbWFyeVZlcnNpb24+ KAorICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV81 MjVfTElORSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJ RDo6U01QVEUxNzBNLAorLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9u KX0sCisrICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNN UFRFMTcwTSwKKysgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV82MjVf TElORSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 QlQ0NzBCRywKKy0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAor KyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJH LAorKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMTcwTSwKKy0gICAg ICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAor LSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJp bWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwKKysgICAg ICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDcwOSwKKy0gICAgICBQcmltYXJ5VmVy c2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCisrICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6 OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDIwMjAsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUMjAyMCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK KysgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQyMDIw LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NI Uk9NQVRJQ0lUWV9OQU1FU19TUkdCLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQ cmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX0RJU1BMQVlQMywKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6 OlByaW1hcnlJRDo6UDMsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFyeVZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlAzLCBrRGVmYXVsdFNpbmNlVmVyc2lv bn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19BRE9C RVJHQiwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 QURPQkVfUkdCLAorLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s CisrICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkFET0JF X1JHQiwKKysgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NP TE9SX1NQSU4sCistICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257 CisgICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpXSURFX0dBTVVUX0NPTE9S X1NQSU4sCistICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1F U19XSURFX0dBTVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1VVF9DT0xPUl9TUElO X1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfQlQ0NzBNLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlW ZXJzaW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBNLAor LSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBN X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX0JUNDcwTV9TSU5DRV9WRVJTSU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTSwKKy0gICAgICBQcmltYXJ5VmVy c2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpQcmltYXJ5SUQ6OlNNUFRFMjQwTSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTI0ME1fU0lOQ0Vf VkVSU0lPTn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1F U19YWVpfRDUwLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlWZXJzaW9u eworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6WFlaX0Q1MCwKKy0gICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTBfU0lO Q0VfVkVSU0lPTil9LAorKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFH RVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMSwKKy0gICAgICBQcmltYXJ5VmVy c2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpQcmltYXJ5SUQ6OlNNUFRFU1Q0MjhfMSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCisrICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDI4 XzFfU0lOQ0VfVkVSU0lPTn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19TTVBURVNUNDMxXzIsCistICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAg UHJpbWFyeVZlcnNpb257CisgICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpT TVBURVNUNDMxXzIsCistICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lU WV9OQU1FU19TTVBURVNUNDMxXzJfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQzMV8yX1NJTkNFX1ZFUlNJ T059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklM TSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lvbnsKKyAgICAg ICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkZJTE0sCistICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJT04pfX0p OworKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklM TV9TSU5DRV9WRVJTSU9OfX19KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHRoZSB6Y3JfY29sb3JfbWFu YWdlcl92MSBlb3RmX25hbWVzIGVudW0gdmFsdWVzCisgLy8gcmVwcmVzZW50aW5nIHdlbGwta25v d24gRU9URnMsIHRvIHRoZWlyIGVxdWl2YWxlbnQgVHJhbnNmZXJJRHMuCitAQCAtMTA3LDY4ICsx MDcsNjggQEAgY29uc3RleHByIGF1dG8ga0VvdGZNYXAgPSBiYXNlOjpNYWtlRml4ZQorICAgICB6 Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLAorICAgICBUcmFuc2ZlclZlcnNpb24+KHsK KyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAorLSAgICAgVHJh bnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TElORUFSLAorLSAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCisrICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU1JHQiwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlRyYW5zZmVySUQ6OlNSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFu c2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCLCBrRGVmYXVsdFNp bmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdC X0hEUiwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OlNSR0JfSERSLAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIsCisrICAgICAgICAgICAgICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJT SU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAorLSAg ICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQ3MDksCist ICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcw OV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpCVDcwOSwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3LAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyNCwKKy0gICAgICAgICAgICAgICAgICAg ICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29s b3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyNCwKKysgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19BRE9CRVJHQiwKKyAgICAgIC8vIFRoaXMgaXMgZXZlciBzbyBzbGlnaHRseSBpbmFjY3VyYXRl LiBUaGUgbnVtYmVyIG91Z2h0IHRvIGJlCisgICAgICAvLyAyLjE5OTIxODc1Ziwgbm90IDIuMgor LSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEy MiwKKy0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAg VHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyMiwKKysg ICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19QUSwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlBRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAg ICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZh dWx0U2luY2VWZXJzaW9ufX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0hMRywKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OkhMRywKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0hMR19TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpITEcsCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME0sCistICAgICBUcmFuc2ZlclZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3ME0sCistICAgICAgICAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME1fU0lOQ0Vf VkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNm ZXJJRDo6U01QVEUxNzBNLAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU01QVEUxNzBNX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNLAorLSAgICAgVHJhbnNmZXJWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBNLAorLSAgICAgICAgICAgICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZF UlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OlNNUFRFMjQwTSwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMSwKKy0gICAgIFRyYW5zZmVyVmVyc2lv bigKKysgICAgIFRyYW5zZmVyVmVyc2lvbnsKKyAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OlNNUFRFU1Q0MjhfMSwKKy0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTn19LAor ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0csCistICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCistICAgICAgICAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0VfVkVSU0lP Til9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 TE9HLAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfTE9HX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfTE9HX1NRUlQsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpMT0dfU1FSVCwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0xPR19TUVJUX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5z ZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPR19TUVJULAorKyAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlRf U0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19J RUM2MTk2Nl8yXzQsCistICAgICBUcmFuc2ZlclZlcnNpb24oCisrICAgICBUcmFuc2ZlclZlcnNp b257CisgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpJRUM2MTk2Nl8yXzQs CistICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzRf U0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfSUVDNjE5NjZfMl80X1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfQlQxMzYxX0VDRywKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMTM2MV9FQ0csCistICAgICAgICAgICAgICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT04p fSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJU MTM2MV9FQ0csCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAorLSAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwX1NJTkNFX1ZFUlNJT04p fSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJU MjAyMF8xMCwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0JUMjAyMF8xMF9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMiwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMiwKKy0gICAgICAgICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMl9TSU5DRV9WRVJTSU9OKX0s CisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIw MjBfMTIsCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDIwMjBfMTJfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUUywKKy0gICAgIFRyYW5zZmVyVmVyc2lv bigKKysgICAgIFRyYW5zZmVyVmVyc2lvbnsKKyAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OlNDUkdCX0xJTkVBUl84MF9OSVRTLAorLSAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgwX05JVFNfU0lOQ0VfVkVSU0lPTil9LAor KyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgw X05JVFNfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19HQU1NQTE4LAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6R0FNTUExOCwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0dBTU1BMThfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUExOCwKKysgICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMThfU0lOQ0Vf VkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTI4 LAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FN TUEyOCwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0dBTU1BMjhfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyOCwKKysgICAgICAgICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjhfU0lOQ0VfVkVSU0lPTn19LAor IH0pOworIAorIC8vIEEgbWFwIGZyb20gdGhlIFNEUiB6Y3JfY29sb3JfbWFuYWdlcl92MSBlb3Rm X25hbWVzIGVudW0gdmFsdWVzCitAQCAtMTc3LDE4ICsxNzcsMTggQEAgY29uc3RleHByIGF1dG8g a0VvdGZNYXAgPSBiYXNlOjpNYWtlRml4ZQorIGNvbnN0ZXhwciBhdXRvIGtUcmFuc2Zlck1hcCA9 CisgICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9u YW1lcywgVHJhbnNmZXJGblZlcnNpb24+KHsKKyAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0xJTkVBUiwKKy0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVk VHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICBU cmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5j ZVZlcnNpb259fSwKKyAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NS R0IsCistICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtT UkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9u e1NrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAg ICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAorLSAgICAgICAg IFRyYW5zZmVyRm5WZXJzaW9uKAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ueworICAgICAg ICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1JlYzcwOSwKKy0gICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OKX0sCisrICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVS U0lPTn19LAorICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3 LAorLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKGdhbW1hMjQsIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCisrICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257Z2FtbWEyNCwga0RlZmF1bHRTaW5j ZVZlcnNpb259fSwKKyAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FE T0JFUkdCLAorLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuRXh0 OjprQTk4UkdCLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCisrICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm5FeHQ6 OmtBOThSR0IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKKyAgICAgfSk7CisgCisgLy8gQSBtYXAgZnJvbSB0aGUgSERSIHpjcl9jb2xvcl9tYW5h Z2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKK0BAIC0xOTcsNzAgKzE5Nyw3MCBAQCBjb25z dGV4cHIgYXV0byBrVHJhbnNmZXJNYXAgPQorIGNvbnN0ZXhwciBhdXRvIGtIRFJUcmFuc2Zlck1h cCA9CisgICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90 Zl9uYW1lcywgVHJhbnNmZXJGblZlcnNpb24+KAorICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0xJTkVBUiwKKy0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tO YW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAg ICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX1NSR0JfSERSLAorLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbigKKysgICAgICAgICAg VHJhbnNmZXJGblZlcnNpb257CisgICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6 a1NSR0IsCistICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NS R0JfSERSX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1BRLAorLSAgICAgICAgICBUcmFuc2ZlckZuVmVy c2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0hMRywKKy0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46 OmtITEcsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgVHJhbnNmZXJGblZl cnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtITEcsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT059fSwK KyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0Ix MCwKKy0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCisrICAgICAgICAgIFRyYW5zZmVyRm5W ZXJzaW9ueworICAgICAgICAgICAgICAgU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCRXh0ZW5k ZWQxMDIzT3ZlcjUxMCwKKy0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfRVhURU5ERURTUkdCMTBfU0lOQ0VfVkVSU0lPTil9fSk7CisrICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwX1NJTkNFX1ZFUlNJ T059fX0pOworIAorIC8vIEEgbWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgbWF0cml4X25h bWVzIGVudW0gdmFsdWVzIHRvCisgLy8gZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRHMuCisgY29u c3RleHByIGF1dG8ga01hdHJpeE1hcCA9CisgICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNy X2NvbG9yX21hbmFnZXJfdjFfbWF0cml4X25hbWVzLCBNYXRyaXhWZXJzaW9uPigKKyAgICAgICAg IHt7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1JHQiwKKy0gICAgICAgICAgTWF0 cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRy aXhJRDo6UkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQ3MDksCistICAgICAgICAgIE1hdHJpeFZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ3MDksCistICAgICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDcwOSwKKysgICAgICAgICAgICAgICAgICAgICAgICBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9N QVRSSVhfTkFNRVNfQlQ0NzBCRywKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbigKKysgICAgICAg ICAgTWF0cml4VmVyc2lvbnsKKyAgICAgICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4 SUQ6OkJUNDcwQkcsCistICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhf TkFNRVNfQlQ0NzBCR19TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQ0NzBCR19TSU5DRV9WRVJTSU9OfX0sCisgICAgICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfTkNMLAorLSAgICAg ICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0ws CistICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfTkNM LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAg ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfQ0wsCistICAg ICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NM LAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAg ICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NM LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAg ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19GQ0MsCistICAgICAgICAg IE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkNDLCBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OkZDQywga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NHLAorLSAgICAgICAgICBNYXRyaXhWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllDT0NHLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZQ09DR19TSU5DRV9WRVJT SU9OKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6WUNPQ0csCisrICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf TUFUUklYX05BTUVTX1lDT0NHX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllEWkRYLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZRFpEWF9TSU5DRV9WRVJTSU9O KX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6 WURaRFgsCisrICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX1lEWkRYX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUiwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpHQlIsCistICAgICAgICAgICAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJTSU9OKX0sCisrICAg ICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6R0JSLAorKyAg ICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19H QlJfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRS SVhfTkFNRVNfU01QVEUxNzBNLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6TWF0cml4SUQ6OlNNUFRFMTcwTSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6TWF0cml4SUQ6OlNNUFRFMTcwTSwKKysgICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRS SVhfTkFNRVNfU01QVEUyNDBNLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6TWF0cml4SUQ6OlNNUFRFMjQwTSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbil9fSk7CisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xv clNwYWNlOjpNYXRyaXhJRDo6U01QVEUyNDBNLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtE ZWZhdWx0U2luY2VWZXJzaW9ufX19KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHpjcl9jb2xvcl9tYW5h Z2VyX3YxIHJhbmdlX25hbWVzIGVudW0gdmFsdWVzIHRvCisgLy8gZ2Z4OjpDb2xvclNwYWNlOjpS YW5nZUlEcy4KKyBjb25zdGV4cHIgYXV0byBrUmFuZ2VNYXAgPQorICAgICBiYXNlOjpNYWtlRml4 ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3YxX3JhbmdlX25hbWVzLCBSYW5nZVZlcnNpb24+ KAorICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9SQU5HRV9OQU1FU19MSU1JVEVELAor LSAgICAgICAgICBSYW5nZVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVE LAorLSAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6TElNSVRFRCwKKysg ICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVTX0ZVTEwsCistICAgICAgICAgIFJhbmdl VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkZVTEwsIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCisrICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6 OkZVTEwsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX1JBTkdFX05BTUVTX0RFUklWRUQsCistICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkRFUklWRUQsCistICAgICAgICAgICAgICAgICAgICAgICBr RGVmYXVsdFNpbmNlVmVyc2lvbil9fSk7CisrICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlJhbmdlSUQ6OkRFUklWRUQsCisrICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19fSk7CisgCisgemNyX2NvbG9yX21hbmFnZXJfdjFfY2hyb21hdGlj aXR5X25hbWVzIFRvQ29sb3JNYW5hZ2VyQ2hyb21hdGljaXR5KAorICAgICBnZng6OkNvbG9yU3Bh Y2U6OlByaW1hcnlJRCBwcmltYXJ5SUQsCitAQCAtMjgzLDQgKzI4Myw0IEBAIHpjcl9jb2xvcl9t YW5hZ2VyX3YxX2VvdGZfbmFtZXMgVG9Db2xvck0KKyAKKyB9ICAvLyBuYW1lc3BhY2UgdWk6Ondh eWxhbmQKKyAKKy0jZW5kaWYgIC8vIFVJX0JBU0VfV0FZTEFORF9DT0xPUl9NQU5BR0VSX1VUSUxf SF8KK1wgS2VpbiBaZWlsZW51bWJydWNoIGFtIERhdGVpZW5kZS4KKysjZW5kaWYgIC8vIFVJX0JB U0VfV0FZTEFORF9DT0xPUl9NQU5BR0VSX1VUSUxfSF8KK2RpZmYgLXVwIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvdWkvZ3RrL2d0a191aS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3VpL2d0ay9ndGtfdWkuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL3VpL2d0ay9ndGtfdWkuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAy Mzo0NzozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2d0 ay9ndGtfdWkuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43Mjg2NTA4MjEgKzAyMDAKK0BAIC0xMDAx LDExICsxMDAxLDExIEBAIGRpc3BsYXk6OkRpc3BsYXlDb25maWcgR3RrVWk6OkdldERpc3BsYXkK KyAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5OworICAgICBnZGtfbW9uaXRvcl9nZXRfZ2VvbWV0 cnkobW9uaXRvciwgJmdlb21ldHJ5KTsKKyAgICAgaW50IG1vbml0b3Jfc2NhbGUgPSBzdGQ6Om1h eCgxLCBnZGtfbW9uaXRvcl9nZXRfc2NhbGVfZmFjdG9yKG1vbml0b3IpKTsKKy0gICAgY29uZmln LmRpc3BsYXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soCisrICAgIGNvbmZpZy5kaXNwbGF5X2dl b21ldHJpZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgICBnZng6OlJlY3QobW9uaXRvcl9z Y2FsZSAqIGdlb21ldHJ5LngsIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS55LAorICAgICAgICAg ICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS53aWR0aCwKKyAgICAgICAgICAgICAg ICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkuaGVpZ2h0KSwKKy0gICAgICAgIG1vbml0b3Jf c2NhbGUgKiBmb250X3NjYWxlKTsKKysgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pihtb25pdG9y X3NjYWxlICogZm9udF9zY2FsZSl9OworICAgfQorICAgcmV0dXJuIGNvbmZpZzsKKyB9CitkaWZm IC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL3ZpZXdzL2NvbnRyb2xzL2J1dHRvbi9sYWJl bF9idXR0b24uY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC91aS92aWV3cy9jb250cm9scy9idXR0b24vbGFiZWxfYnV0dG9uLmNjCistLS0gY2hyb21pdW0t MTI1LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9idXR0b24vbGFiZWxfYnV0dG9uLmNjLm5v X21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTggMjM6MTg6NTAuMzYxMTA3ODcyICswMjAw CisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9idXR0b24vbGFi ZWxfYnV0dG9uLmNjCTIwMjQtMDUtMTggMjM6MjA6MDMuODA3NTAyNjEzICswMjAwCitAQCAtMzkx LDExICszOTEsMTEgQEAgUHJvcG9zZWRMYXlvdXQgTGFiZWxCdXR0b246OkNhbGN1bGF0ZVBybwor IAorICAgZ2Z4OjpSZWN0IGltYWdlX2FyZWEgPSBHZXRMb2NhbEJvdW5kcygpOworIAorLSAgbGF5 b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKKysgIGxheW91dHMuY2hpbGRfbGF5b3V0 cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBpbmtfZHJvcF9jb250YWluZXJfLmdldCgpLAor ICAgICAgIHN0YXRpY19jYXN0PERlbGVnYXRpbmdMYXlvdXRNYW5hZ2VyKj4oR2V0TGF5b3V0TWFu YWdlcigpKQorICAgICAgICAgICAtPkNhbkJlVmlzaWJsZShpbmtfZHJvcF9jb250YWluZXJfLmdl dCgpKSwKKy0gICAgICBpbWFnZV9hcmVhLCBTaXplQm91bmRzKCkpOworKyAgICAgIGltYWdlX2Fy ZWEsIFNpemVCb3VuZHMoKX07CisgCisgICBnZng6Okluc2V0cyBpbnNldHMgPSBHZXRJbnNldHMo KTsKKyAgIC8vIElmIHRoZSBidXR0b24gaGF2ZSBhIGxpbWl0ZWQgc3BhY2UgdG8gZml0IGluLCB0 aGUgaW1hZ2UgYW5kIHRoZSBsYWJlbAorQEAgLTQ0NywxMSArNDQ3LDExIEBAIFByb3Bvc2VkTGF5 b3V0IExhYmVsQnV0dG9uOjpDYWxjdWxhdGVQcm8KKyAgIH0gZWxzZSBpZiAoaG9yaXpvbnRhbF9h bGlnbm1lbnQgPT0gZ2Z4OjpBTElHTl9SSUdIVCkgeworICAgICBpbWFnZV9vcmlnaW4uT2Zmc2V0 KGltYWdlX2FyZWEud2lkdGgoKSAtIGltYWdlX3NpemUud2lkdGgoKSwgMCk7CisgICB9CistICBs YXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAorKyAgbGF5b3V0cy5jaGlsZF9sYXlv dXRzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgIGNvbnN0X2Nhc3Q8TGFiZWxCdXR0b24qPih0 aGlzKS0+aW1hZ2VfY29udGFpbmVyX3ZpZXcoKSwKKyAgICAgICBzdGF0aWNfY2FzdDxEZWxlZ2F0 aW5nTGF5b3V0TWFuYWdlcio+KEdldExheW91dE1hbmFnZXIoKSkKKyAgICAgICAgICAgLT5DYW5C ZVZpc2libGUoaW1hZ2VfY29udGFpbmVyX3ZpZXcoKSksCistICAgICAgZ2Z4OjpSZWN0KGltYWdl X29yaWdpbiwgaW1hZ2Vfc2l6ZSksIFNpemVCb3VuZHMoKSk7CisrICAgICAgZ2Z4OjpSZWN0KGlt YWdlX29yaWdpbiwgaW1hZ2Vfc2l6ZSksIFNpemVCb3VuZHMoKX07CisgCisgICBnZng6OlJlY3Qg bGFiZWxfYm91bmRzID0gbGFiZWxfYXJlYTsKKyAgIGlmIChsYWJlbF9hcmVhLndpZHRoKCkgPT0g bGFiZWxfc2l6ZS53aWR0aCgpKSB7CitAQCAtNDY1LDExICs0NjUsMTEgQEAgUHJvcG9zZWRMYXlv dXQgTGFiZWxCdXR0b246OkNhbGN1bGF0ZVBybworICAgICB9CisgICB9CisgCistICBsYXlvdXRz LmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAorKyAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVt cGxhY2VfYmFjaygpID0geworICAgICAgIGxhYmVsXy5nZXQoKSwKKyAgICAgICBzdGF0aWNfY2Fz dDxEZWxlZ2F0aW5nTGF5b3V0TWFuYWdlcio+KEdldExheW91dE1hbmFnZXIoKSkKKyAgICAgICAg ICAgLT5DYW5CZVZpc2libGUobGFiZWxfLmdldCgpKSwKKy0gICAgICBsYWJlbF9ib3VuZHMsIFNp emVCb3VuZHMoKSk7CisrICAgICAgbGFiZWxfYm91bmRzLCBTaXplQm91bmRzKCl9OworICAgbGF5 b3V0cy5ob3N0X3NpemUgPQorICAgICAgIGdmeDo6U2l6ZShzaXplX2JvdW5kcy53aWR0aCgpLnZh bHVlKCksIHNpemVfYm91bmRzLmhlaWdodCgpLnZhbHVlKCkpOworIAorZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9lZGl0YWJsZV9jb21ib2JveC9lZGl0 YWJsZV9jb21ib2JveC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL3VpL3ZpZXdzL2NvbnRyb2xzL2VkaXRhYmxlX2NvbWJvYm94L2VkaXRhYmxlX2NvbWJv Ym94LmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9lZGl0 YWJsZV9jb21ib2JveC9lZGl0YWJsZV9jb21ib2JveC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDI0LTA1LTE4IDIzOjQ3OjUzLjgzODQ5MTM0NyArMDIwMAorKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvdWkvdmlld3MvY29udHJvbHMvZWRpdGFibGVfY29tYm9ib3gvZWRpdGFibGVfY29t Ym9ib3guY2MJMjAyNC0wNS0xOCAyMzo0OTowNi4xODYzMTI2MzAgKzAyMDAKK0BAIC00OTIsMTYg KzQ5MiwxNiBAQCBQcm9wb3NlZExheW91dCBFZGl0YWJsZUNvbWJvYm94OjpDYWxjdWxhCisgICAg IGxheW91dC5ob3N0X3NpemUgPQorICAgICAgICAgZ2Z4OjpTaXplKHNpemVfYm91bmRzLndpZHRo KCkudmFsdWUoKSwgc2l6ZV9ib3VuZHMuaGVpZ2h0KCkudmFsdWUoKSk7CisgICB9CistICBsYXlv dXQuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soCisrICBsYXlvdXQuY2hpbGRfbGF5b3V0cy5l bXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICB0ZXh0ZmllbGRfLmdldCgpLCB0ZXh0ZmllbGRfLT5H ZXRWaXNpYmxlKCksCistICAgICAgZ2Z4OjpSZWN0KDAsIDAsIGxheW91dC5ob3N0X3NpemUud2lk dGgoKSwgbGF5b3V0Lmhvc3Rfc2l6ZS5oZWlnaHQoKSkpOworKyAgICAgIGdmeDo6UmVjdCgwLCAw LCBsYXlvdXQuaG9zdF9zaXplLndpZHRoKCksIGxheW91dC5ob3N0X3NpemUuaGVpZ2h0KCkpfTsK KyAgIGNvbnN0IGludCBwcmVmZXJyZWRfd2lkdGggPQorICAgICAgIGNvbnRyb2xfZWxlbWVudHNf Y29udGFpbmVyXy0+R2V0UHJlZmVycmVkU2l6ZSh7fSkud2lkdGgoKTsKKy0gIGxheW91dC5jaGls ZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKKysgIGxheW91dC5jaGlsZF9sYXlvdXRzLmVtcGxhY2Vf YmFjaygpID0geworICAgICAgIGNvbnRyb2xfZWxlbWVudHNfY29udGFpbmVyXy5nZXQoKSwKKyAg ICAgICBjb250cm9sX2VsZW1lbnRzX2NvbnRhaW5lcl8tPkdldFZpc2libGUoKSwKKyAgICAgICBn Zng6OlJlY3QobGF5b3V0Lmhvc3Rfc2l6ZS53aWR0aCgpIC0gcHJlZmVycmVkX3dpZHRoLCAwLCBw cmVmZXJyZWRfd2lkdGgsCistICAgICAgICAgICAgICAgIGxheW91dC5ob3N0X3NpemUuaGVpZ2h0 KCkpKTsKKysgICAgICAgICAgICAgICAgbGF5b3V0Lmhvc3Rfc2l6ZS5oZWlnaHQoKSl9OworICAg cmV0dXJuIGxheW91dDsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3Vp L3ZpZXdzL2xheW91dC9ib3hfbGF5b3V0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3MvbGF5b3V0L2JveF9sYXlvdXQuY2MKKy0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL3VpL3ZpZXdzL2xheW91dC9ib3hfbGF5b3V0LmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTggMjM6MjA6NTMuNDQ0MjcyNTg2ICswMjAwCisrKysg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9sYXlvdXQvYm94X2xheW91dC5jYwkyMDI0 LTA1LTE4IDIzOjIxOjEzLjMzOTY3MzI1MyArMDIwMAorQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk IEJveExheW91dDo6SW5pdGlhbGl6ZUNoaWxkRGF0YShCb3hMCisgICAgIGRhdGEuY2hpbGRfZGF0 YS5lbXBsYWNlX2JhY2soKTsKKyAgICAgQm94Q2hpbGREYXRhJiBjaGlsZF9kYXRhID0gZGF0YS5j aGlsZF9kYXRhLmJhY2soKTsKKyAKKy0gICAgZGF0YS5sYXlvdXQuY2hpbGRfbGF5b3V0cy5lbXBs YWNlX2JhY2soY2hpbGQsIHRydWUpOworKyAgICBkYXRhLmxheW91dC5jaGlsZF9sYXlvdXRzLmVt cGxhY2VfYmFjaygpID0ge2NoaWxkLCB0cnVlfTsKKyAKKyAgICAgZ2Z4OjpJbnNldHMqIG1hcmdp bnMgPSBjaGlsZCA/IGNoaWxkLT5HZXRQcm9wZXJ0eShrTWFyZ2luc0tleSkgOiBudWxscHRyOwor ICAgICBpZiAobWFyZ2lucykgeworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92 aWV3cy93aW5kb3cvZGlhbG9nX2NsaWVudF92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3Mvd2luZG93L2RpYWxvZ19jbGllbnRfdmll dy5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3Mvd2luZG93L2RpYWxvZ19j bGllbnRfdmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE4IDIzOjUxOjA1 LjM4NTI3OTM4MiArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3Mvd2lu ZG93L2RpYWxvZ19jbGllbnRfdmlldy5jYwkyMDI0LTA1LTE4IDIzOjUxOjQwLjE0NjA5NjcxOSAr MDIwMAorQEAgLTIwNSwxNiArMjA1LDE2IEBAIFByb3Bvc2VkTGF5b3V0IERpYWxvZ0NsaWVudFZp ZXc6OkNhbGN1bGEKKyAgIGNvbnN0IGludCBjb250YWluZXJfaGVpZ2h0ID0KKyAgICAgICBidXR0 b25fcm93X2NvbnRhaW5lcl8tPkdldEhlaWdodEZvcldpZHRoKHNpemVfYm91bmRzLndpZHRoKCku dmFsdWUoKSk7CisgICBjb25zdCBpbnQgY29udGFpbmVyX3kgPSBzaXplX2JvdW5kcy5oZWlnaHQo KS52YWx1ZSgpIC0gY29udGFpbmVyX2hlaWdodDsKKy0gIGxheW91dHMuY2hpbGRfbGF5b3V0cy5l bXBsYWNlX2JhY2soCisrICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7 CisgICAgICAgYnV0dG9uX3Jvd19jb250YWluZXJfLmdldCgpLCBidXR0b25fcm93X2NvbnRhaW5l cl8tPkdldFZpc2libGUoKSwKKyAgICAgICBnZng6OlJlY3QoMCwgY29udGFpbmVyX3ksIHNpemVf Ym91bmRzLndpZHRoKCkudmFsdWUoKSwgY29udGFpbmVyX2hlaWdodCksCistICAgICAgc2l6ZV9i b3VuZHMpOworKyAgICAgIHNpemVfYm91bmRzfTsKKyAgIGlmIChjb250ZW50c192aWV3KCkpIHsK KyAgICAgZ2Z4OjpSZWN0IGNvbnRlbnRzX2JvdW5kcyhzaXplX2JvdW5kcy53aWR0aCgpLnZhbHVl KCksIGNvbnRhaW5lcl95KTsKKyAgICAgY29udGVudHNfYm91bmRzLkluc2V0KEdldERpYWxvZ0Rl bGVnYXRlKCktPm1hcmdpbnMoKSk7CistICAgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNl X2JhY2soY29udGVudHNfdmlldygpLAorKyAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFj ZV9iYWNrKCkgPSB7Y29udGVudHNfdmlldygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRlbnRzX3ZpZXcoKS0+R2V0VmlzaWJsZSgpLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX2JvdW5kcywgc2l6ZV9ib3VuZHMp OworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX2JvdW5k cywgc2l6ZV9ib3VuZHN9OworICAgfQorICAgbGF5b3V0cy5ob3N0X3NpemUgPQorICAgICAgIGdm eDo6U2l6ZShzaXplX2JvdW5kcy53aWR0aCgpLnZhbHVlKCksIHNpemVfYm91bmRzLmhlaWdodCgp LnZhbHVlKCkpOwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDctb2xkLWxpYmRybS5wYXRj aCBiL2Nocm9taXVtLTEyNS1lbDctb2xkLWxpYmRybS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hYjYyOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI1 LWVsNy1vbGQtbGliZHJtLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK2RpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L2xpbnV4L2RybV91dGlsX2xpbnV4LmNjLmVsNy1vbGQtbGli ZHJtIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L2xpbnV4L2RybV91dGlsX2xpbnV4LmNj CistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngvbGludXgvZHJtX3V0aWxfbGludXgu Y2MuZWw3LW9sZC1saWJkcm0JMjAyNC0wNS0xNiAyMDo0MzoyNi42MTk0NTUzMDAgKzAyMDAKKysr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2dmeC9saW51eC9kcm1fdXRpbF9saW51eC5jYwky MDI0LTA1LTE2IDIwOjQ1OjE4LjEyMDcxNjI3OCArMDIwMAorQEAgLTksNiArOSwxNCBAQAorICNp bmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKyAjaW5jbHVkZSAiYmFzZS9ub3RyZWFjaGVkLmgiCisg CisrLy8gdGhlIGxpYmRybSBpbiBFTC03IGlzIHRvbyBvbGQgdG8gaGF2ZSB0aGlzIGRlZmluZQor KyNpZm5kZWYgRFJNX0ZPUk1BVF9QMDEwCisrI2RlZmluZSBEUk1fRk9STUFUX1AwMTAgZm91cmNj X2NvZGUoJ1AnLCAnMCcsICcxJywgJzAnKQorKyNlbmRpZgorKyNpZm5kZWYgRFJNX0ZPUk1BVF9B QkdSMTYxNjE2MTZGCisrI2RlZmluZSBEUk1fRk9STUFUX0FCR1IxNjE2MTYxNkYgZm91cmNjX2Nv ZGUoJ0EnLCAnQicsICc0JywgJ0gnKQorKyNlbmRpZgorKworIG5hbWVzcGFjZSB1aSB7CisgCisg aW50IEdldEZvdXJDQ0Zvcm1hdEZyb21CdWZmZXJGb3JtYXQoZ2Z4OjpCdWZmZXJGb3JtYXQgZm9y bWF0KSB7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI1LWVsNy1ydXN0LXByb2MtbWFjcm8yLnBh dGNoIGIvY2hyb21pdW0tMTI1LWVsNy1ydXN0LXByb2MtbWFjcm8yLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YTY5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJv bWl1bS0xMjUtZWw3LXJ1c3QtcHJvYy1tYWNybzIucGF0Y2gKQEAgLTAsMCArMSw3NDcgQEAKK2Rp ZmYgLU51ciBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVt X2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L2J1aWxkLnJzIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3By b2MtbWFjcm8yLTEuMC44MC9idWlsZC5ycworLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3Ro aXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAu NzgvYnVpbGQucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3Zl bmRvci9wcm9jLW1hY3JvMi0xLjAuODAvYnVpbGQucnMJMjAyNC0wNS0xNSAyMzo0NzoyNC4wMDAw MDAwMDAgKzAyMDAKK0BAIC0zNiwxMCArMzYsMTAgQEAKKyAKKyB1c2Ugc3RkOjplbnY7CisgdXNl IHN0ZDo6ZmZpOjpPc1N0cmluZzsKKyt1c2Ugc3RkOjppdGVyOworIHVzZSBzdGQ6OnBhdGg6OlBh dGg7CisgdXNlIHN0ZDo6cHJvY2Vzczo6e3NlbGYsIENvbW1hbmQsIFN0ZGlvfTsKKyB1c2Ugc3Rk OjpzdHI7CistdXNlIHN0ZDo6dTMyOworIAorIGZuIG1haW4oKSB7CisgICAgIGxldCBydXN0YyA9 IHJ1c3RjX21pbm9yX3ZlcnNpb24oKS51bndyYXBfb3IodTMyOjpNQVgpOworQEAgLTYzLDYgKzYz LDExIEBACisgICAgICAgICBwcmludGxuISgiY2FyZ286cnVzdGMtY2ZnPW5vX3NvdXJjZV90ZXh0 Iik7CisgICAgIH0KKyAKKysgICAgaWYgcnVzdGMgPCA3OSB7CisrICAgICAgICBwcmludGxuISgi Y2FyZ286cnVzdGMtY2ZnPW5vX2xpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIiKTsKKysgICAgICAgIHBy aW50bG4hKCJjYXJnbzpydXN0Yy1jZmc9bm9fbGl0ZXJhbF9jX3N0cmluZyIpOworKyAgICB9Cisr CisgICAgIGlmICFjZmchKGZlYXR1cmUgPSAicHJvYy1tYWNybyIpIHsKKyAgICAgICAgIHByaW50 bG4hKCJjYXJnbzpyZXJ1bi1pZi1jaGFuZ2VkPWJ1aWxkLnJzIik7CisgICAgICAgICByZXR1cm47 CitAQCAtMTM4LDE1ICsxNDMsMTUgQEAKKyAgICAgbGV0IG91dF9kaXIgPSBjYXJnb19lbnZfdmFy KCJPVVRfRElSIik7CisgICAgIGxldCBwcm9iZWZpbGUgPSBQYXRoOjpuZXcoImJ1aWxkIikuam9p bigicHJvYmUucnMiKTsKKyAKKy0gICAgLy8gTWFrZSBzdXJlIHRvIHBpY2sgdXAgQ2FyZ28gcnVz dGMgY29uZmlndXJhdGlvbi4KKy0gICAgbGV0IG11dCBjbWQgPSBpZiBsZXQgU29tZSh3cmFwcGVy KSA9IGVudjo6dmFyX29zKCJSVVNUQ19XUkFQUEVSIikgeworLSAgICAgICAgbGV0IG11dCBjbWQg PSBDb21tYW5kOjpuZXcod3JhcHBlcik7CistICAgICAgICAvLyBUaGUgd3JhcHBlcidzIGZpcnN0 IGFyZ3VtZW50IGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBwYXRoIHRvIHJ1c3RjLgorLSAgICAgICAg Y21kLmFyZyhydXN0Yyk7CistICAgICAgICBjbWQKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIENv bW1hbmQ6Om5ldyhydXN0YykKKy0gICAgfTsKKysgICAgbGV0IHJ1c3RjX3dyYXBwZXIgPSBlbnY6 OnZhcl9vcygiUlVTVENfV1JBUFBFUiIpLmZpbHRlcih8d3JhcHBlcnwgIXdyYXBwZXIuaXNfZW1w dHkoKSk7CisrICAgIGxldCBydXN0Y193b3Jrc3BhY2Vfd3JhcHBlciA9CisrICAgICAgICBlbnY6 OnZhcl9vcygiUlVTVENfV09SS1NQQUNFX1dSQVBQRVIiKS5maWx0ZXIofHdyYXBwZXJ8ICF3cmFw cGVyLmlzX2VtcHR5KCkpOworKyAgICBsZXQgbXV0IHJ1c3RjID0gcnVzdGNfd3JhcHBlcgorKyAg ICAgICAgLmludG9faXRlcigpCisrICAgICAgICAuY2hhaW4ocnVzdGNfd29ya3NwYWNlX3dyYXBw ZXIpCisrICAgICAgICAuY2hhaW4oaXRlcjo6b25jZShydXN0YykpOworKyAgICBsZXQgbXV0IGNt ZCA9IENvbW1hbmQ6Om5ldyhydXN0Yy5uZXh0KCkudW53cmFwKCkpOworKyAgICBjbWQuYXJncyhy dXN0Yyk7CisgCisgICAgIGlmICFydXN0Y19ib290c3RyYXAgeworICAgICAgICAgY21kLmVudl9y ZW1vdmUoIlJVU1RDX0JPT1RTVFJBUCIpOworQEAgLTE1Niw2ICsxNjEsNyBAQAorICAgICAgICAg LmFyZygiLS1lZGl0aW9uPTIwMjEiKQorICAgICAgICAgLmFyZygiLS1jcmF0ZS1uYW1lPXByb2Nf bWFjcm8yIikKKyAgICAgICAgIC5hcmcoIi0tY3JhdGUtdHlwZT1saWIiKQorKyAgICAgICAgLmFy ZygiLS1jYXAtbGludHM9YWxsb3ciKQorICAgICAgICAgLmFyZygiLS1lbWl0PWRlcC1pbmZvLG1l dGFkYXRhIikKKyAgICAgICAgIC5hcmcoIi0tb3V0LWRpciIpCisgICAgICAgICAuYXJnKG91dF9k aXIpCitkaWZmIC1OdXIgY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9j aHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9DYXJnby50b21sIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MC9DYXJnby50b21sCistLS0gY2hyb21pdW0tMTIzLjAu NjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2Mt bWFjcm8yLTEuMC43OC9DYXJnby50b21sCTIwMjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAwICsw MjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVt X2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgwL0NhcmdvLnRvbWwJMjAyNC0wNS0x NSAyMzo0NzoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMyw3ICsxMyw3IEBACisgZWRpdGlvbiA9 ICIyMDIxIgorIHJ1c3QtdmVyc2lvbiA9ICIxLjU2IgorIG5hbWUgPSAicHJvYy1tYWNybzIiCist dmVyc2lvbiA9ICIxLjAuNzgiCisrdmVyc2lvbiA9ICIxLjAuODAiCisgYXV0aG9ycyA9IFsKKyAg ICAgIkRhdmlkIFRvbG5heSA8ZHRvbG5heUBnbWFpbC5jb20+IiwKKyAgICAgIkFsZXggQ3JpY2h0 b24gPGFsZXhAYWxleGNyaWNodG9uLmNvbT4iLAorZGlmZiAtTnVyIGNocm9taXVtLTEyMy4wLjYz MTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1h Y3JvMi0xLjAuNzgvQ2FyZ28udG9tbC5vcmlnIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MC9D YXJnby50b21sLm9yaWcKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9y dXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L0NhcmdvLnRv bWwub3JpZwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3Byb2MtbWFjcm8yLTEuMC44MC9DYXJnby50b21sLm9yaWcJMjAyNC0wNS0xNSAyMzo0NzoyNC4w MDAwMDAwMDAgKzAyMDAKK0BAIC0xLDYgKzEsNiBAQAorIFtwYWNrYWdlXQorIG5hbWUgPSAicHJv Yy1tYWNybzIiCistdmVyc2lvbiA9ICIxLjAuNzgiCisrdmVyc2lvbiA9ICIxLjAuODAiCisgYXV0 aG9ycyA9IFsiRGF2aWQgVG9sbmF5IDxkdG9sbmF5QGdtYWlsLmNvbT4iLCAiQWxleCBDcmljaHRv biA8YWxleEBhbGV4Y3JpY2h0b24uY29tPiJdCisgYXV0b2JlbmNoZXMgPSBmYWxzZQorIGNhdGVn b3JpZXMgPSBbImRldmVsb3BtZW50LXRvb2xzOjpwcm9jZWR1cmFsLW1hY3JvLWhlbHBlcnMiXQor ZGlmZiAtTnVyIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21p dW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvLmNhcmdvX3Zjc19pbmZvLmpz b24gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRl c19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgwLy5jYXJnb192Y3NfaW5mby5qc29uCistLS0g Y2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNf aW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC8uY2FyZ29fdmNzX2luZm8uanNvbgkyMDI0LTA0 LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv dGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEu MC44MC8uY2FyZ29fdmNzX2luZm8uanNvbgkyMDI0LTA1LTE1IDIzOjQ3OjI0LjAwMDAwMDAwMCAr MDIwMAorQEAgLTEsNiArMSw2IEBACisgeworICAgImdpdCI6IHsKKy0gICAgInNoYTEiOiAiZDg1 MGExZGI1ZTNmZTc3MzJkNjJjYWNiZmM0MTQ1ZTQ5NmMyYTgwZSIKKysgICAgInNoYTEiOiAiZGE1 MWY4ZDAwNWNjNWQ4Mjk5YzE4NzJmYWQ5YmJlNjNiMDdjMzFjNyIKKyAgIH0sCisgICAicGF0aF9p bl92Y3MiOiAiIgorIH0KK1wgS2VpbiBaZWlsZW51bWJydWNoIGFtIERhdGVpZW5kZS4KK2RpZmYg LU51ciBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2Ny YXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4Ly5naXRodWIvd29ya2Zsb3dzL2NpLnlt bCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVz X2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODAvLmdpdGh1Yi93b3JrZmxvd3MvY2kueW1sCist LS0gY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0 ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC8uZ2l0aHViL3dvcmtmbG93cy9jaS55bWwJ MjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1h Y3JvMi0xLjAuODAvLmdpdGh1Yi93b3JrZmxvd3MvY2kueW1sCTIwMjQtMDUtMTUgMjM6NDc6MjQu MDAwMDAwMDAwICswMjAwCitAQCAtMTk4LDYgKzE5OCw3IEBACisgICAgIHRpbWVvdXQtbWludXRl czogNDUKKyAgICAgc3RlcHM6CisgICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHY0Cisr ICAgICAgLSB1c2VzOiBkdG9sbmF5L3J1c3QtdG9vbGNoYWluQHN0YWJsZQorICAgICAgIC0gdXNl czogZHRvbG5heS9pbnN0YWxsQGNhcmdvLW91dGRhdGVkCisgICAgICAgLSBydW46IGNhcmdvIG91 dGRhdGVkIC0td29ya3NwYWNlIC0tZXhpdC1jb2RlIDEKKyAgICAgICAtIHJ1bjogY2FyZ28gb3V0 ZGF0ZWQgLS1tYW5pZmVzdC1wYXRoIGZ1enovQ2FyZ28udG9tbCAtLWV4aXQtY29kZSAxCitkaWZm IC1OdXIgY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMvZmFsbGJhY2sucnMgY2hyb21p dW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5k b3IvcHJvYy1tYWNybzItMS4wLjgwL3NyYy9mYWxsYmFjay5ycworLS0tIGNocm9taXVtLTEyMy4w LjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9j LW1hY3JvMi0xLjAuNzgvc3JjL2ZhbGxiYWNrLnJzCTIwMjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAw MDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2No cm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgwL3NyYy9mYWxsYmFjay5y cwkyMDI0LTA1LTE1IDIzOjQ3OjI0LjAwMDAwMDAwMCArMDIwMAorQEAgLTE1LDcgKzE1LDkgQEAK KyB1c2UgY29yZTo6b3BzOjpSYW5nZTsKKyB1c2UgY29yZTo6b3BzOjpSYW5nZUJvdW5kczsKKyB1 c2UgY29yZTo6cHRyOworLXVzZSBjb3JlOjpzdHI6OkZyb21TdHI7CisrdXNlIGNvcmU6OnN0cjo6 e3NlbGYsIEZyb21TdHJ9OworK3VzZSBzdGQ6OmZmaTo6Q1N0cjsKKysjW2NmZyhwcm9jbWFjcm8y X3NlbXZlcl9leGVtcHQpXQorIHVzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7CisgCisgLy8vIEZvcmNl IHVzZSBvZiBwcm9jLW1hY3JvMidzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBUEkg Zm9yIG5vdywgZXZlbgorQEAgLTI5NywxMSArMjk5LDEzIEBACisgICAgIH0KKyB9CisgCisrI1tj ZmcocHJvY21hY3JvMl9zZW12ZXJfZXhlbXB0KV0KKyAjW2Rlcml2ZShDbG9uZSwgUGFydGlhbEVx LCBFcSldCisgcHViKGNyYXRlKSBzdHJ1Y3QgU291cmNlRmlsZSB7CisgICAgIHBhdGg6IFBhdGhC dWYsCisgfQorIAorKyNbY2ZnKHByb2NtYWNybzJfc2VtdmVyX2V4ZW1wdCldCisgaW1wbCBTb3Vy Y2VGaWxlIHsKKyAgICAgLy8vIEdldCB0aGUgcGF0aCB0byB0aGlzIHNvdXJjZSBmaWxlIGFzIGEg c3RyaW5nLgorICAgICBwdWIgZm4gcGF0aCgmc2VsZikgLT4gUGF0aEJ1ZiB7CitAQCAtMzEzLDYg KzMxNyw3IEBACisgICAgIH0KKyB9CisgCisrI1tjZmcocHJvY21hY3JvMl9zZW12ZXJfZXhlbXB0 KV0KKyBpbXBsIERlYnVnIGZvciBTb3VyY2VGaWxlIHsKKyAgICAgZm4gZm10KCZzZWxmLCBmOiAm bXV0IGZtdDo6Rm9ybWF0dGVyKSAtPiBmbXQ6OlJlc3VsdCB7CisgICAgICAgICBmLmRlYnVnX3N0 cnVjdCgiU291cmNlRmlsZSIpCitAQCAtOTIyLDcgKzkyNyw3IEBACisgCisgI1tkZXJpdmUoQ2xv bmUpXQorIHB1YihjcmF0ZSkgc3RydWN0IExpdGVyYWwgeworLSAgICByZXByOiBTdHJpbmcsCisr ICAgIHB1YihjcmF0ZSkgcmVwcjogU3RyaW5nLAorICAgICBzcGFuOiBTcGFuLAorIH0KKyAKK0BA IC0xMDAzLDcxICsxMDA4LDk4IEBACisgICAgICAgICBMaXRlcmFsOjpfbmV3KHMpCisgICAgIH0K KyAKKy0gICAgcHViIGZuIHN0cmluZyh0OiAmc3RyKSAtPiBMaXRlcmFsIHsKKy0gICAgICAgIGxl dCBtdXQgcmVwciA9IFN0cmluZzo6d2l0aF9jYXBhY2l0eSh0LmxlbigpICsgMik7CisrICAgIHB1 YiBmbiBzdHJpbmcoc3RyaW5nOiAmc3RyKSAtPiBMaXRlcmFsIHsKKysgICAgICAgIGxldCBtdXQg cmVwciA9IFN0cmluZzo6d2l0aF9jYXBhY2l0eShzdHJpbmcubGVuKCkgKyAyKTsKKyAgICAgICAg IHJlcHIucHVzaCgnIicpOworLSAgICAgICAgbGV0IG11dCBjaGFycyA9IHQuY2hhcnMoKTsKKy0g ICAgICAgIHdoaWxlIGxldCBTb21lKGNoKSA9IGNoYXJzLm5leHQoKSB7CistICAgICAgICAgICAg aWYgY2ggPT0gJ1wwJyB7CistICAgICAgICAgICAgICAgIHJlcHIucHVzaF9zdHIoCistICAgICAg ICAgICAgICAgICAgICBpZiBjaGFycworLSAgICAgICAgICAgICAgICAgICAgICAgIC5hc19zdHIo KQorLSAgICAgICAgICAgICAgICAgICAgICAgIC5zdGFydHNfd2l0aCh8bmV4dHwgJzAnIDw9IG5l eHQgJiYgbmV4dCA8PSAnNycpCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgICAgICAgICAgLy8gY2lyY3VtdmVudCBjbGlwcHk6Om9jdGFsX2VzY2FwZXMgbGludAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJcXHgwMCIKKy0gICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CistICAgICAgICAgICAgICAgICAgICAgICAgIlxcMCIKKy0gICAgICAgICAgICAgICAgICAg IH0sCistICAgICAgICAgICAgICAgICk7CistICAgICAgICAgICAgfSBlbHNlIGlmIGNoID09ICdc JycgeworLSAgICAgICAgICAgICAgICAvLyBlc2NhcGVfZGVidWcgdHVybnMgdGhpcyBpbnRvICJc JyIgd2hpY2ggaXMgdW5uZWNlc3NhcnkuCistICAgICAgICAgICAgICAgIHJlcHIucHVzaChjaCk7 CistICAgICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAgICAgcmVwci5leHRlbmQoY2gu ZXNjYXBlX2RlYnVnKCkpOworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKysgICAgICAgIGVz Y2FwZV91dGY4KHN0cmluZywgJm11dCByZXByKTsKKyAgICAgICAgIHJlcHIucHVzaCgnIicpOwor ICAgICAgICAgTGl0ZXJhbDo6X25ldyhyZXByKQorICAgICB9CisgCistICAgIHB1YiBmbiBjaGFy YWN0ZXIodDogY2hhcikgLT4gTGl0ZXJhbCB7CisrICAgIHB1YiBmbiBjaGFyYWN0ZXIoY2g6IGNo YXIpIC0+IExpdGVyYWwgeworICAgICAgICAgbGV0IG11dCByZXByID0gU3RyaW5nOjpuZXcoKTsK KyAgICAgICAgIHJlcHIucHVzaCgnXCcnKTsKKy0gICAgICAgIGlmIHQgPT0gJyInIHsKKysgICAg ICAgIGlmIGNoID09ICciJyB7CisgICAgICAgICAgICAgLy8gZXNjYXBlX2RlYnVnIHR1cm5zIHRo aXMgaW50byAnXCInIHdoaWNoIGlzIHVubmVjZXNzYXJ5LgorLSAgICAgICAgICAgIHJlcHIucHVz aCh0KTsKKysgICAgICAgICAgICByZXByLnB1c2goY2gpOworICAgICAgICAgfSBlbHNlIHsKKy0g ICAgICAgICAgICByZXByLmV4dGVuZCh0LmVzY2FwZV9kZWJ1ZygpKTsKKysgICAgICAgICAgICBy ZXByLmV4dGVuZChjaC5lc2NhcGVfZGVidWcoKSk7CisrICAgICAgICB9CisrICAgICAgICByZXBy LnB1c2goJ1wnJyk7CisrICAgICAgICBMaXRlcmFsOjpfbmV3KHJlcHIpCisrICAgIH0KKysKKysg ICAgcHViIGZuIGJ5dGVfY2hhcmFjdGVyKGJ5dGU6IHU4KSAtPiBMaXRlcmFsIHsKKysgICAgICAg IGxldCBtdXQgcmVwciA9ICJiJyIudG9fc3RyaW5nKCk7CisrICAgICAgICAjW2FsbG93KGNsaXBw eTo6bWF0Y2hfb3ZlcmxhcHBpbmdfYXJtKV0KKysgICAgICAgIG1hdGNoIGJ5dGUgeworKyAgICAg ICAgICAgIGInXDAnID0+IHJlcHIucHVzaF9zdHIociJcMCIpLAorKyAgICAgICAgICAgIGInXHQn ID0+IHJlcHIucHVzaF9zdHIociJcdCIpLAorKyAgICAgICAgICAgIGInXG4nID0+IHJlcHIucHVz aF9zdHIociJcbiIpLAorKyAgICAgICAgICAgIGInXHInID0+IHJlcHIucHVzaF9zdHIociJcciIp LAorKyAgICAgICAgICAgIGInXCcnID0+IHJlcHIucHVzaF9zdHIociJcJyIpLAorKyAgICAgICAg ICAgIGInXFwnID0+IHJlcHIucHVzaF9zdHIociJcXCIpLAorKyAgICAgICAgICAgIGInXHgyMCcu Lj1iJ1x4N0UnID0+IHJlcHIucHVzaChieXRlIGFzIGNoYXIpLAorKyAgICAgICAgICAgIF8gPT4g eworKyAgICAgICAgICAgICAgICBsZXQgXyA9IHdyaXRlIShyZXByLCByIlx4ezowMlh9IiwgYnl0 ZSk7CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgcmVwci5wdXNoKCdcJycp OworICAgICAgICAgTGl0ZXJhbDo6X25ldyhyZXByKQorICAgICB9CisgCisgICAgIHB1YiBmbiBi eXRlX3N0cmluZyhieXRlczogJlt1OF0pIC0+IExpdGVyYWwgeworLSAgICAgICAgbGV0IG11dCBl c2NhcGVkID0gImJcIiIudG9fc3RyaW5nKCk7CisrICAgICAgICBsZXQgbXV0IHJlcHIgPSAiYlwi Ii50b19zdHJpbmcoKTsKKyAgICAgICAgIGxldCBtdXQgYnl0ZXMgPSBieXRlcy5pdGVyKCk7Cisg ICAgICAgICB3aGlsZSBsZXQgU29tZSgmYikgPSBieXRlcy5uZXh0KCkgeworICAgICAgICAgICAg ICNbYWxsb3coY2xpcHB5OjptYXRjaF9vdmVybGFwcGluZ19hcm0pXQorICAgICAgICAgICAgIG1h dGNoIGIgeworLSAgICAgICAgICAgICAgICBiJ1wwJyA9PiBlc2NhcGVkLnB1c2hfc3RyKG1hdGNo IGJ5dGVzLmFzX3NsaWNlKCkuZmlyc3QoKSB7CisrICAgICAgICAgICAgICAgIGInXDAnID0+IHJl cHIucHVzaF9zdHIobWF0Y2ggYnl0ZXMuYXNfc2xpY2UoKS5maXJzdCgpIHsKKyAgICAgICAgICAg ICAgICAgICAgIC8vIGNpcmN1bXZlbnQgY2xpcHB5OjpvY3RhbF9lc2NhcGVzIGxpbnQKKyAgICAg ICAgICAgICAgICAgICAgIFNvbWUoYicwJy4uPWInNycpID0+IHIiXHgwMCIsCisgICAgICAgICAg ICAgICAgICAgICBfID0+IHIiXDAiLAorICAgICAgICAgICAgICAgICB9KSwKKy0gICAgICAgICAg ICAgICAgYidcdCcgPT4gZXNjYXBlZC5wdXNoX3N0cihyIlx0IiksCistICAgICAgICAgICAgICAg IGInXG4nID0+IGVzY2FwZWQucHVzaF9zdHIociJcbiIpLAorLSAgICAgICAgICAgICAgICBiJ1xy JyA9PiBlc2NhcGVkLnB1c2hfc3RyKHIiXHIiKSwKKy0gICAgICAgICAgICAgICAgYiciJyA9PiBl c2NhcGVkLnB1c2hfc3RyKCJcXFwiIiksCistICAgICAgICAgICAgICAgIGInXFwnID0+IGVzY2Fw ZWQucHVzaF9zdHIoIlxcXFwiKSwKKy0gICAgICAgICAgICAgICAgYidceDIwJy4uPWInXHg3RScg PT4gZXNjYXBlZC5wdXNoKGIgYXMgY2hhciksCisrICAgICAgICAgICAgICAgIGInXHQnID0+IHJl cHIucHVzaF9zdHIociJcdCIpLAorKyAgICAgICAgICAgICAgICBiJ1xuJyA9PiByZXByLnB1c2hf c3RyKHIiXG4iKSwKKysgICAgICAgICAgICAgICAgYidccicgPT4gcmVwci5wdXNoX3N0cihyIlxy IiksCisrICAgICAgICAgICAgICAgIGInIicgPT4gcmVwci5wdXNoX3N0cigiXFxcIiIpLAorKyAg ICAgICAgICAgICAgICBiJ1xcJyA9PiByZXByLnB1c2hfc3RyKHIiXFwiKSwKKysgICAgICAgICAg ICAgICAgYidceDIwJy4uPWInXHg3RScgPT4gcmVwci5wdXNoKGIgYXMgY2hhciksCisgICAgICAg ICAgICAgICAgIF8gPT4geworLSAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSB3cml0ZSEoZXNj YXBlZCwgIlxceHs6MDJYfSIsIGIpOworKyAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSB3cml0 ZSEocmVwciwgciJceHs6MDJYfSIsIGIpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgfQorICAgICAgICAgfQorLSAgICAgICAgZXNjYXBlZC5wdXNoKCciJyk7CistICAgICAgICBM aXRlcmFsOjpfbmV3KGVzY2FwZWQpCisrICAgICAgICByZXByLnB1c2goJyInKTsKKysgICAgICAg IExpdGVyYWw6Ol9uZXcocmVwcikKKysgICAgfQorKworKyAgICBwdWIgZm4gY19zdHJpbmcoc3Ry aW5nOiAmQ1N0cikgLT4gTGl0ZXJhbCB7CisrICAgICAgICBsZXQgbXV0IHJlcHIgPSAiY1wiIi50 b19zdHJpbmcoKTsKKysgICAgICAgIGxldCBtdXQgYnl0ZXMgPSBzdHJpbmcudG9fYnl0ZXMoKTsK KysgICAgICAgIHdoaWxlICFieXRlcy5pc19lbXB0eSgpIHsKKysgICAgICAgICAgICBsZXQgKHZh bGlkLCBpbnZhbGlkKSA9IG1hdGNoIHN0cjo6ZnJvbV91dGY4KGJ5dGVzKSB7CisrICAgICAgICAg ICAgICAgIE9rKGFsbF92YWxpZCkgPT4geworKyAgICAgICAgICAgICAgICAgICAgYnl0ZXMgPSBi IiI7CisrICAgICAgICAgICAgICAgICAgICAoYWxsX3ZhbGlkLCBieXRlcykKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICBFcnIodXRmOF9lcnJvcikgPT4geworKyAgICAgICAg ICAgICAgICAgICAgbGV0ICh2YWxpZCwgcmVzdCkgPSBieXRlcy5zcGxpdF9hdCh1dGY4X2Vycm9y LnZhbGlkX3VwX3RvKCkpOworKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbGlkID0gc3RyOjpm cm9tX3V0ZjgodmFsaWQpLnVud3JhcCgpOworKyAgICAgICAgICAgICAgICAgICAgbGV0IGludmFs aWQgPSB1dGY4X2Vycm9yCisrICAgICAgICAgICAgICAgICAgICAgICAgLmVycm9yX2xlbigpCisr ICAgICAgICAgICAgICAgICAgICAgICAgLm1hcF9vcihyZXN0LCB8ZXJyb3JfbGVufCAmcmVzdFsu LmVycm9yX2xlbl0pOworKyAgICAgICAgICAgICAgICAgICAgYnl0ZXMgPSAmYnl0ZXNbdmFsaWQu bGVuKCkgKyBpbnZhbGlkLmxlbigpLi5dOworKyAgICAgICAgICAgICAgICAgICAgKHZhbGlkLCBp bnZhbGlkKQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfTsKKysgICAgICAgICAg ICBlc2NhcGVfdXRmOCh2YWxpZCwgJm11dCByZXByKTsKKysgICAgICAgICAgICBmb3IgJmJ5dGUg aW4gaW52YWxpZCB7CisrICAgICAgICAgICAgICAgIGxldCBfID0gd3JpdGUhKHJlcHIsIHIiXHh7 OjAyWH0iLCBieXRlKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICByZXBy LnB1c2goJyInKTsKKysgICAgICAgIExpdGVyYWw6Ol9uZXcocmVwcikKKyAgICAgfQorIAorICAg ICBwdWIgZm4gc3Bhbigmc2VsZikgLT4gU3BhbiB7CitAQCAtMTE2OCwzICsxMjAwLDI3IEBACisg ICAgICAgICBkZWJ1Zy5maW5pc2goKQorICAgICB9CisgfQorKworK2ZuIGVzY2FwZV91dGY4KHN0 cmluZzogJnN0ciwgcmVwcjogJm11dCBTdHJpbmcpIHsKKysgICAgbGV0IG11dCBjaGFycyA9IHN0 cmluZy5jaGFycygpOworKyAgICB3aGlsZSBsZXQgU29tZShjaCkgPSBjaGFycy5uZXh0KCkgewor KyAgICAgICAgaWYgY2ggPT0gJ1wwJyB7CisrICAgICAgICAgICAgcmVwci5wdXNoX3N0cigKKysg ICAgICAgICAgICAgICAgaWYgY2hhcnMKKysgICAgICAgICAgICAgICAgICAgIC5hc19zdHIoKQor KyAgICAgICAgICAgICAgICAgICAgLnN0YXJ0c193aXRoKHxuZXh0fCAnMCcgPD0gbmV4dCAmJiBu ZXh0IDw9ICc3JykKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgLy8g Y2lyY3VtdmVudCBjbGlwcHk6Om9jdGFsX2VzY2FwZXMgbGludAorKyAgICAgICAgICAgICAgICAg ICAgciJceDAwIgorKyAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAg ICAgciJcMCIKKysgICAgICAgICAgICAgICAgfSwKKysgICAgICAgICAgICApOworKyAgICAgICAg fSBlbHNlIGlmIGNoID09ICdcJycgeworKyAgICAgICAgICAgIC8vIGVzY2FwZV9kZWJ1ZyB0dXJu cyB0aGlzIGludG8gIlwnIiB3aGljaCBpcyB1bm5lY2Vzc2FyeS4KKysgICAgICAgICAgICByZXBy LnB1c2goY2gpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICByZXByLmV4dGVuZChj aC5lc2NhcGVfZGVidWcoKSk7CisrICAgICAgICB9CisrICAgIH0KKyt9CitkaWZmIC1OdXIgY2hy b21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMvbGliLnJzIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8y LTEuMC44MC9zcmMvbGliLnJzCistLS0gY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFy dHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMv bGliLnJzCTIwMjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Iv cHJvYy1tYWNybzItMS4wLjgwL3NyYy9saWIucnMJMjAyNC0wNS0xNSAyMzo0NzoyNC4wMDAwMDAw MDAgKzAyMDAKK0BAIC04Niw3ICs4Niw3IEBACisgLy8hIGEgZGlmZmVyZW50IHRocmVhZC4KKyAK KyAvLyBQcm9jLW1hY3JvMiB0eXBlcyBpbiBydXN0ZG9jIG9mIG90aGVyIGNyYXRlcyBnZXQgbGlu a2VkIHRvIGhlcmUuCistIyFbZG9jKGh0bWxfcm9vdF91cmwgPSAiaHR0cHM6Ly9kb2NzLnJzL3By b2MtbWFjcm8yLzEuMC43OCIpXQorKyMhW2RvYyhodG1sX3Jvb3RfdXJsID0gImh0dHBzOi8vZG9j cy5ycy9wcm9jLW1hY3JvMi8xLjAuODAiKV0KKyAjIVtjZmdfYXR0cihhbnkocHJvY19tYWNyb19z cGFuLCBzdXBlcl91bnN0YWJsZSksIGZlYXR1cmUocHJvY19tYWNyb19zcGFuKSldCisgIyFbY2Zn X2F0dHIoc3VwZXJfdW5zdGFibGUsIGZlYXR1cmUocHJvY19tYWNyb19kZWZfc2l0ZSkpXQorICMh W2NmZ19hdHRyKGRvY19jZmcsIGZlYXR1cmUoZG9jX2NmZykpXQorQEAgLTk2LDYgKzk2LDcgQEAK KyAgICAgY2xpcHB5OjpjYXN0X3Bvc3NpYmxlX3RydW5jYXRpb24sCisgICAgIGNsaXBweTo6Y2hl Y2tlZF9jb252ZXJzaW9ucywKKyAgICAgY2xpcHB5Ojpkb2NfbWFya2Rvd24sCisrICAgIGNsaXBw eTo6aW5jb21wYXRpYmxlX21zcnYsCisgICAgIGNsaXBweTo6aXRlbXNfYWZ0ZXJfc3RhdGVtZW50 cywKKyAgICAgY2xpcHB5OjppdGVyX3dpdGhvdXRfaW50b19pdGVyLAorICAgICBjbGlwcHk6Omxl dF91bmRlcnNjb3JlX3VudHlwZWQsCitAQCAtMTY5LDYgKzE3MCw3IEBACisgdXNlIGNvcmU6Om9w czo6UmFuZ2VCb3VuZHM7CisgdXNlIGNvcmU6OnN0cjo6RnJvbVN0cjsKKyB1c2Ugc3RkOjplcnJv cjo6RXJyb3I7CisrdXNlIHN0ZDo6ZmZpOjpDU3RyOworICNbY2ZnKHByb2NtYWNybzJfc2VtdmVy X2V4ZW1wdCldCisgdXNlIHN0ZDo6cGF0aDo6UGF0aEJ1ZjsKKyAKK0BAIC0xMjMzLDkgKzEyMzUs MTkgQEAKKyAgICAgICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpjaGFyYWN0ZXIoY2gp KQorICAgICB9CisgCisrICAgIC8vLyBCeXRlIGNoYXJhY3RlciBsaXRlcmFsLgorKyAgICBwdWIg Zm4gYnl0ZV9jaGFyYWN0ZXIoYnl0ZTogdTgpIC0+IExpdGVyYWwgeworKyAgICAgICAgTGl0ZXJh bDo6X25ldyhpbXA6OkxpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGJ5dGUpKQorKyAgICB9CisrCisg ICAgIC8vLyBCeXRlIHN0cmluZyBsaXRlcmFsLgorLSAgICBwdWIgZm4gYnl0ZV9zdHJpbmcoczog Jlt1OF0pIC0+IExpdGVyYWwgeworLSAgICAgICAgTGl0ZXJhbDo6X25ldyhpbXA6OkxpdGVyYWw6 OmJ5dGVfc3RyaW5nKHMpKQorKyAgICBwdWIgZm4gYnl0ZV9zdHJpbmcoYnl0ZXM6ICZbdThdKSAt PiBMaXRlcmFsIHsKKysgICAgICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpieXRlX3N0 cmluZyhieXRlcykpCisrICAgIH0KKysKKysgICAgLy8vIEMgc3RyaW5nIGxpdGVyYWwuCisrICAg IHB1YiBmbiBjX3N0cmluZyhzdHJpbmc6ICZDU3RyKSAtPiBMaXRlcmFsIHsKKysgICAgICAgIExp dGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpjX3N0cmluZyhzdHJpbmcpKQorICAgICB9CisgCisg ICAgIC8vLyBSZXR1cm5zIHRoZSBzcGFuIGVuY29tcGFzc2luZyB0aGlzIGxpdGVyYWwuCitkaWZm IC1OdXIgY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMvd3JhcHBlci5ycyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRv ci9wcm9jLW1hY3JvMi0xLjAuODAvc3JjL3dyYXBwZXIucnMKKy0tLSBjaHJvbWl1bS0xMjMuMC42 MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1t YWNybzItMS4wLjc4L3NyYy93cmFwcGVyLnJzCTIwMjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAw ICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9t aXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgwL3NyYy93cmFwcGVyLnJzCTIw MjQtMDUtMTUgMjM6NDc6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtNyw2ICs3LDcgQEAKKyB1c2Ug Y29yZTo6b3BzOjpSYW5nZTsKKyB1c2UgY29yZTo6b3BzOjpSYW5nZUJvdW5kczsKKyB1c2UgY29y ZTo6c3RyOjpGcm9tU3RyOworK3VzZSBzdGQ6OmZmaTo6Q1N0cjsKKyB1c2Ugc3RkOjpwYW5pYzsK KyAjW2NmZyhzdXBlcl91bnN0YWJsZSldCisgdXNlIHN0ZDo6cGF0aDo6UGF0aEJ1ZjsKK0BAIC04 NDYsMTkgKzg0NywzOCBAQAorICAgICAgICAgfQorICAgICB9CisgCistICAgIHB1YiBmbiBzdHJp bmcodDogJnN0cikgLT4gTGl0ZXJhbCB7CisrICAgIHB1YiBmbiBzdHJpbmcoc3RyaW5nOiAmc3Ry KSAtPiBMaXRlcmFsIHsKKyAgICAgICAgIGlmIGluc2lkZV9wcm9jX21hY3JvKCkgeworLSAgICAg ICAgICAgIExpdGVyYWw6OkNvbXBpbGVyKHByb2NfbWFjcm86OkxpdGVyYWw6OnN0cmluZyh0KSkK KysgICAgICAgICAgICBMaXRlcmFsOjpDb21waWxlcihwcm9jX21hY3JvOjpMaXRlcmFsOjpzdHJp bmcoc3RyaW5nKSkKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgTGl0ZXJhbDo6RmFs bGJhY2soZmFsbGJhY2s6OkxpdGVyYWw6OnN0cmluZyh0KSkKKysgICAgICAgICAgICBMaXRlcmFs OjpGYWxsYmFjayhmYWxsYmFjazo6TGl0ZXJhbDo6c3RyaW5nKHN0cmluZykpCisgICAgICAgICB9 CisgICAgIH0KKyAKKy0gICAgcHViIGZuIGNoYXJhY3Rlcih0OiBjaGFyKSAtPiBMaXRlcmFsIHsK KysgICAgcHViIGZuIGNoYXJhY3RlcihjaDogY2hhcikgLT4gTGl0ZXJhbCB7CisgICAgICAgICBp ZiBpbnNpZGVfcHJvY19tYWNybygpIHsKKy0gICAgICAgICAgICBMaXRlcmFsOjpDb21waWxlcihw cm9jX21hY3JvOjpMaXRlcmFsOjpjaGFyYWN0ZXIodCkpCisrICAgICAgICAgICAgTGl0ZXJhbDo6 Q29tcGlsZXIocHJvY19tYWNybzo6TGl0ZXJhbDo6Y2hhcmFjdGVyKGNoKSkKKyAgICAgICAgIH0g ZWxzZSB7CistICAgICAgICAgICAgTGl0ZXJhbDo6RmFsbGJhY2soZmFsbGJhY2s6OkxpdGVyYWw6 OmNoYXJhY3Rlcih0KSkKKysgICAgICAgICAgICBMaXRlcmFsOjpGYWxsYmFjayhmYWxsYmFjazo6 TGl0ZXJhbDo6Y2hhcmFjdGVyKGNoKSkKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBwdWIg Zm4gYnl0ZV9jaGFyYWN0ZXIoYnl0ZTogdTgpIC0+IExpdGVyYWwgeworKyAgICAgICAgaWYgaW5z aWRlX3Byb2NfbWFjcm8oKSB7CisrICAgICAgICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIoeworKyAg ICAgICAgICAgICAgICAjW2NmZyhub3Qobm9fbGl0ZXJhbF9ieXRlX2NoYXJhY3RlcikpXQorKyAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBwcm9jX21hY3JvOjpMaXRlcmFs OjpieXRlX2NoYXJhY3RlcihieXRlKQorKyAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAg ICAgICAgICNbY2ZnKG5vX2xpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIpXQorKyAgICAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBmYWxsYmFjazo6TGl0ZXJh bDo6Ynl0ZV9jaGFyYWN0ZXIoYnl0ZSk7CisrICAgICAgICAgICAgICAgICAgICBmYWxsYmFjay5y ZXByLnBhcnNlOjo8cHJvY19tYWNybzo6TGl0ZXJhbD4oKS51bndyYXAoKQorKyAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgfSkKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAg TGl0ZXJhbDo6RmFsbGJhY2soZmFsbGJhY2s6OkxpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGJ5dGUp KQorICAgICAgICAgfQorICAgICB9CisgCitAQCAtODcwLDYgKzg5MCwyNSBAQAorICAgICAgICAg fQorICAgICB9CisgCisrICAgIHB1YiBmbiBjX3N0cmluZyhzdHJpbmc6ICZDU3RyKSAtPiBMaXRl cmFsIHsKKysgICAgICAgIGlmIGluc2lkZV9wcm9jX21hY3JvKCkgeworKyAgICAgICAgICAgIExp dGVyYWw6OkNvbXBpbGVyKHsKKysgICAgICAgICAgICAgICAgI1tjZmcobm90KG5vX2xpdGVyYWxf Y19zdHJpbmcpKV0KKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgcHJv Y19tYWNybzo6TGl0ZXJhbDo6Y19zdHJpbmcoc3RyaW5nKQorKyAgICAgICAgICAgICAgICB9Cisr CisrICAgICAgICAgICAgICAgICNbY2ZnKG5vX2xpdGVyYWxfY19zdHJpbmcpXQorKyAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBmYWxsYmFjazo6 TGl0ZXJhbDo6Y19zdHJpbmcoc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNr LnJlcHIucGFyc2U6Ojxwcm9jX21hY3JvOjpMaXRlcmFsPigpLnVud3JhcCgpCisrICAgICAgICAg ICAgICAgIH0KKysgICAgICAgICAgICB9KQorKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAg ICBMaXRlcmFsOjpGYWxsYmFjayhmYWxsYmFjazo6TGl0ZXJhbDo6Y19zdHJpbmcoc3RyaW5nKSkK KysgICAgICAgIH0KKysgICAgfQorKworICAgICBwdWIgZm4gc3Bhbigmc2VsZikgLT4gU3BhbiB7 CisgICAgICAgICBtYXRjaCBzZWxmIHsKKyAgICAgICAgICAgICBMaXRlcmFsOjpDb21waWxlcihs aXQpID0+IFNwYW46OkNvbXBpbGVyKGxpdC5zcGFuKCkpLAorZGlmZiAtTnVyIGNocm9taXVtLTEy My4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9w cm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMvbWFya2VyLnJzIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv dGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEu MC44MC90ZXN0cy9tYXJrZXIucnMKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9w YXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3Rl c3RzL21hcmtlci5ycwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MC90ZXN0cy9tYXJrZXIucnMJMjAyNC0wNS0xNSAyMzo0 NzoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMSw2ICsyMSw3IEBACisgICAgICAgICAgICAgJCgK KyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50ZWQg Zm9yIHR5cGVzIHRoYXQgaW1wbGVtZW50ICRtYXJrZXIuCisrICAgICAgICAgICAgICAgICAgICAj W2FsbG93KGRlYWRfY29kZSldCisgICAgICAgICAgICAgICAgICAgICB0cmFpdCBJc05vdEltcGxl bWVudGVkIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbiBhc3NlcnRfbm90X2ltcGxlbWVu dGVkKCkge30KKyAgICAgICAgICAgICAgICAgICAgIH0KK2RpZmYgLU51ciBjaHJvbWl1bS0xMjMu MC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJv Yy1tYWNybzItMS4wLjc4L3Rlc3RzL3Rlc3QucnMgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGly ZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgw L3Rlc3RzL3Rlc3QucnMKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9y dXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3Rlc3RzL3Rl c3QucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9w cm9jLW1hY3JvMi0xLjAuODAvdGVzdHMvdGVzdC5ycwkyMDI0LTA1LTE1IDIzOjQ3OjI0LjAwMDAw MDAwMCArMDIwMAorQEAgLTEsMTEgKzEsMTQgQEAKKyAjIVthbGxvdygKKyAgICAgY2xpcHB5Ojph c3NlcnRpb25zX29uX3Jlc3VsdF9zdGF0ZXMsCisgICAgIGNsaXBweTo6aXRlbXNfYWZ0ZXJfc3Rh dGVtZW50cywKKysgICAgY2xpcHB5OjpuZWVkbGVzc19wYXNzX2J5X3ZhbHVlLAorKyAgICBjbGlw cHk6Om5lZWRsZXNzX3Jhd19zdHJpbmdfaGFzaGVzLAorICAgICBjbGlwcHk6Om5vbl9hc2NpaV9s aXRlcmFsLAorICAgICBjbGlwcHk6Om9jdGFsX2VzY2FwZXMKKyApXQorIAorIHVzZSBwcm9jX21h Y3JvMjo6e0lkZW50LCBMaXRlcmFsLCBQdW5jdCwgU3BhY2luZywgU3BhbiwgVG9rZW5TdHJlYW0s IFRva2VuVHJlZX07CisrdXNlIHN0ZDo6ZmZpOjpDU3RyOworIHVzZSBzdGQ6Oml0ZXI7CisgdXNl IHN0ZDo6c3RyOjp7c2VsZiwgRnJvbVN0cn07CisgCitAQCAtOTYsMTIgKzk5LDIyIEBACisgCisg I1t0ZXN0XQorIGZuIGxpdGVyYWxfc3RyaW5nKCkgeworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6 OnN0cmluZygiZm9vIikudG9fc3RyaW5nKCksICJcImZvb1wiIik7CistICAgIGFzc2VydF9lcSEo TGl0ZXJhbDo6c3RyaW5nKCJcIiIpLnRvX3N0cmluZygpLCAiXCJcXFwiXCIiKTsKKy0gICAgYXNz ZXJ0X2VxIShMaXRlcmFsOjpzdHJpbmcoImRpZG4ndCIpLnRvX3N0cmluZygpLCAiXCJkaWRuJ3Rc IiIpOworLSAgICBhc3NlcnRfZXEhKAorLSAgICAgICAgTGl0ZXJhbDo6c3RyaW5nKCJhXDAwYlww N2NcMDhkXDBlXDAiKS50b19zdHJpbmcoKSwKKy0gICAgICAgICJcImFcXHgwMDBiXFx4MDA3Y1xc MDhkXFwwZVxcMFwiIiwKKysgICAgI1t0cmFja19jYWxsZXJdCisrICAgIGZuIGFzc2VydChsaXRl cmFsOiBMaXRlcmFsLCBleHBlY3RlZDogJnN0cikgeworKyAgICAgICAgYXNzZXJ0X2VxIShsaXRl cmFsLnRvX3N0cmluZygpLCBleHBlY3RlZC50cmltKCkpOworKyAgICB9CisrCisrICAgIGFzc2Vy dChMaXRlcmFsOjpzdHJpbmcoIiIpLCByIyIgICIiICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFs OjpzdHJpbmcoImFBIiksIHIjIiAgImFBIiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3Ry aW5nKCJcdCIpLCByIyIgICJcdCIgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygi 4p2kIiksIHIjIiAgIuKdpCIgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygiJyIp LCByIyIgICInIiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCJcIiIpLCByIyIg ICJcIiIgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygiXDAiKSwgciMiICAiXDAi ICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpzdHJpbmcoIlx1ezF9IiksIHIjIiAgIlx1ezF9 IiAgIiMpOworKyAgICBhc3NlcnQoCisrICAgICAgICBMaXRlcmFsOjpzdHJpbmcoImFcMDBiXDA3 Y1wwOGRcMGVcMCIpLAorKyAgICAgICAgciMiICAiYVx4MDAwYlx4MDA3Y1wwOGRcMGVcMCIgICIj LAorICAgICApOworIAorICAgICAiXCJcXFxyXG4gICAgeFwiIi5wYXJzZTo6PFRva2VuU3RyZWFt PigpLnVud3JhcCgpOworQEAgLTEzMywxNSArMTQ2LDQyIEBACisgfQorIAorICNbdGVzdF0KKytm biBsaXRlcmFsX2J5dGVfY2hhcmFjdGVyKCkgeworKyAgICAjW3RyYWNrX2NhbGxlcl0KKysgICAg Zm4gYXNzZXJ0KGxpdGVyYWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7CisrICAgICAgICBh c3NlcnRfZXEhKGxpdGVyYWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7CisrICAgIH0K KysKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInYScpLCByIyIgIGInYScg ICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInXDAnKSwgciMiICBi J1wwJyAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidcdCcpLCBy IyIgIGInXHQnICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihiJ1xu JyksIHIjIiAgYidcbicgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVy KGInXHInKSwgciMiICBiJ1xyJyAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFy YWN0ZXIoYidcJycpLCByIyIgIGInXCcnICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpieXRl X2NoYXJhY3RlcihiJ1xcJyksIHIjIiAgYidcXCcgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6 OmJ5dGVfY2hhcmFjdGVyKGInXHgxZicpLCByIyIgIGInXHgxRicgICIjKTsKKysgICAgYXNzZXJ0 KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInIicpLCByIyIgIGInIicgICIjKTsKKyt9CisrCisr I1t0ZXN0XQorIGZuIGxpdGVyYWxfYnl0ZV9zdHJpbmcoKSB7CistICAgIGFzc2VydF9lcSEoTGl0 ZXJhbDo6Ynl0ZV9zdHJpbmcoYiIiKS50b19zdHJpbmcoKSwgImJcIlwiIik7CistICAgIGFzc2Vy dF9lcSEoCistICAgICAgICBMaXRlcmFsOjpieXRlX3N0cmluZyhiIlwwXHRcblxyXCJcXDJceDEw IikudG9fc3RyaW5nKCksCistICAgICAgICAiYlwiXFwwXFx0XFxuXFxyXFxcIlxcXFwyXFx4MTBc IiIsCistICAgICk7CistICAgIGFzc2VydF9lcSEoCistICAgICAgICBMaXRlcmFsOjpieXRlX3N0 cmluZyhiImFcMDBiXDA3Y1wwOGRcMGVcMCIpLnRvX3N0cmluZygpLAorLSAgICAgICAgImJcImFc XHgwMDBiXFx4MDA3Y1xcMDhkXFwwZVxcMFwiIiwKKysgICAgI1t0cmFja19jYWxsZXJdCisrICAg IGZuIGFzc2VydChsaXRlcmFsOiBMaXRlcmFsLCBleHBlY3RlZDogJnN0cikgeworKyAgICAgICAg YXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0cmluZygpLCBleHBlY3RlZC50cmltKCkpOworKyAgICB9 CisrCisrICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIiIpLCByIyIgIGIiIiAgIiMp OworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcMCIpLCByIyIgIGIiXDAiICAi Iyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlx0IiksIHIjIiAgYiJcdCIg ICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXG4iKSwgciMiICBiIlxu IiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcciIpLCByIyIgIGIi XHIiICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlwiIiksIHIjIiAg YiJcIiIgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXFwiKSwgciMi ICBiIlxcIiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJceDFmIiks IHIjIiAgYiJceDFGIiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiIn IiksIHIjIiAgYiInIiAgIiMpOworKyAgICBhc3NlcnQoCisrICAgICAgICBMaXRlcmFsOjpieXRl X3N0cmluZyhiImFcMDBiXDA3Y1wwOGRcMGVcMCIpLAorKyAgICAgICAgciMiICBiImFceDAwMGJc eDAwN2NcMDhkXDBlXDAiICAiIywKKyAgICAgKTsKKyAKKyAgICAgImJcIlxcXHJcbiAgICB4XCIi LnBhcnNlOjo8VG9rZW5TdHJlYW0+KCkudW53cmFwKCk7CitAQCAtMTUyLDYgKzE5Miw0MSBAQAor IAorICNbdGVzdF0KKyBmbiBsaXRlcmFsX2Nfc3RyaW5nKCkgeworKyAgICAjW3RyYWNrX2NhbGxl cl0KKysgICAgZm4gYXNzZXJ0KGxpdGVyYWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7Cisr ICAgICAgICBhc3NlcnRfZXEhKGxpdGVyYWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7 CisrICAgIH0KKysKKysgICAgYXNzZXJ0KExpdGVyYWw6OmNfc3RyaW5nKDwmQ1N0cj46OmRlZmF1 bHQoKSksIHIjIiAgYyIiICAiIyk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNf c3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJhQVwwIikudW53cmFwKCkpLAorKyAg ICAgICAgciMiICBjImFBIiAgIiMsCisrICAgICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExp dGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJhQVwwIikudW53cmFw KCkpLAorKyAgICAgICAgciMiICBjImFBIiAgIiMsCisrICAgICk7CisrICAgIGFzc2VydCgKKysg ICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJcdFww IikudW53cmFwKCkpLAorKyAgICAgICAgciMiICBjIlx0IiAgIiMsCisrICAgICk7CisrICAgIGFz c2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9u dWwoYiJceEUyXHg5RFx4QTRcMCIpLnVud3JhcCgpKSwKKysgICAgICAgIHIjIiAgYyLinaQiICAi IywKKysgICAgKTsKKysgICAgYXNzZXJ0KAorKyAgICAgICAgTGl0ZXJhbDo6Y19zdHJpbmcoQ1N0 cjo6ZnJvbV9ieXRlc193aXRoX251bChiIidcMCIpLnVud3JhcCgpKSwKKysgICAgICAgIHIjIiAg YyInIiAgIiMsCisrICAgICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3Ry aW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJcIlwwIikudW53cmFwKCkpLAorKyAgICAg ICAgciMiICBjIlwiIiAgIiMsCisrICAgICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVy YWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJceDdGXHhGRlx4RkVceEND XHhCM1wwIikudW53cmFwKCkpLAorKyAgICAgICAgciMiICBjIlx1ezdmfVx4RkZceEZFXHV7MzMz fSIgICIjLAorKyAgICApOworKworICAgICBsZXQgc3RyaW5ncyA9IHIjIyMiCisgICAgICAgICBj ImhlbGxvXHg4MOaIkeWPq1x1ezFGOTgwfSIgIC8vIGZyb20gdGhlIFJGQworICAgICAgICAgY3Ii XCIKK0BAIC0xODgsNDkgKzI2Myw4MCBAQAorIAorICNbdGVzdF0KKyBmbiBsaXRlcmFsX2NoYXJh Y3RlcigpIHsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpjaGFyYWN0ZXIoJ3gnKS50b19zdHJp bmcoKSwgIid4JyIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmNoYXJhY3RlcignXCcnKS50 b19zdHJpbmcoKSwgIidcXCcnIik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6Y2hhcmFjdGVy KCciJykudG9fc3RyaW5nKCksICInXCInIik7CisrICAgICNbdHJhY2tfY2FsbGVyXQorKyAgICBm biBhc3NlcnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKKysgICAgICAgIGFz c2VydF9lcSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQudHJpbSgpKTsKKysgICAgfQor KworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdhJyksIHIjIiAgJ2EnICAiIyk7Cisr ICAgIGFzc2VydChMaXRlcmFsOjpjaGFyYWN0ZXIoJ1x0JyksIHIjIiAgJ1x0JyAgIiMpOworKyAg ICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCfinaQnKSwgciMiICAn4p2kJyAgIiMpOworKyAg ICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdcJycpLCByIyIgICdcJycgICIjKTsKKysgICAg YXNzZXJ0KExpdGVyYWw6OmNoYXJhY3RlcignIicpLCByIyIgICciJyAgIiMpOworKyAgICBhc3Nl cnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdcMCcpLCByIyIgICdcMCcgICIjKTsKKysgICAgYXNzZXJ0 KExpdGVyYWw6OmNoYXJhY3RlcignXHV7MX0nKSwgciMiICAnXHV7MX0nICAiIyk7CisgfQorIAor ICNbdGVzdF0KKyBmbiBsaXRlcmFsX2ludGVnZXIoKSB7CistICAgIGFzc2VydF9lcSEoTGl0ZXJh bDo6dThfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTB1OCIpOworLSAgICBhc3NlcnRfZXEh KExpdGVyYWw6OnUxNl9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHUxNiIpOworLSAgICBh c3NlcnRfZXEhKExpdGVyYWw6OnUzMl9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHUzMiIp OworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnU2NF9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCks ICIxMHU2NCIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnUxMjhfc3VmZml4ZWQoMTApLnRv X3N0cmluZygpLCAiMTB1MTI4Iik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dXNpemVfc3Vm Zml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTB1c2l6ZSIpOworLQorLSAgICBhc3NlcnRfZXEhKExp dGVyYWw6Omk4X3N1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwaTgiKTsKKy0gICAgYXNzZXJ0 X2VxIShMaXRlcmFsOjppMTZfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpMTYiKTsKKy0g ICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMzJfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBp MzIiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppNjRfc3VmZml4ZWQoMTApLnRvX3N0cmlu ZygpLCAiMTBpNjQiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMTI4X3N1ZmZpeGVkKDEw KS50b19zdHJpbmcoKSwgIjEwaTEyOCIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmlzaXpl X3N1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwaXNpemUiKTsKKy0KKy0gICAgYXNzZXJ0X2Vx IShMaXRlcmFsOjp1OF91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7CistICAgIGFz c2VydF9lcSEoTGl0ZXJhbDo6dTE2X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsK Ky0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjp1MzJfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCks ICIxMCIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnU2NF91bnN1ZmZpeGVkKDEwKS50b19z dHJpbmcoKSwgIjEwIik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dTEyOF91bnN1ZmZpeGVk KDEwKS50b19zdHJpbmcoKSwgIjEwIik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dXNpemVf dW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOworLQorLSAgICBhc3NlcnRfZXEhKExp dGVyYWw6Omk4X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKKy0gICAgYXNzZXJ0 X2VxIShMaXRlcmFsOjppMTZfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOworLSAg ICBhc3NlcnRfZXEhKExpdGVyYWw6OmkzMl91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEw Iik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6aTY0X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmlu ZygpLCAiMTAiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMTI4X3Vuc3VmZml4ZWQoMTAp LnRvX3N0cmluZygpLCAiMTAiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppc2l6ZV91bnN1 ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7CisrICAgICNbdHJhY2tfY2FsbGVyXQorKyAg ICBmbiBhc3NlcnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKKysgICAgICAg IGFzc2VydF9lcSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQpOworKyAgICB9CisrCisr ICAgIGFzc2VydChMaXRlcmFsOjp1OF9zdWZmaXhlZCgxMCksICIxMHU4Iik7CisrICAgIGFzc2Vy dChMaXRlcmFsOjp1MTZfc3VmZml4ZWQoMTApLCAiMTB1MTYiKTsKKysgICAgYXNzZXJ0KExpdGVy YWw6OnUzMl9zdWZmaXhlZCgxMCksICIxMHUzMiIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6dTY0 X3N1ZmZpeGVkKDEwKSwgIjEwdTY0Iik7CisrICAgIGFzc2VydChMaXRlcmFsOjp1MTI4X3N1ZmZp eGVkKDEwKSwgIjEwdTEyOCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6dXNpemVfc3VmZml4ZWQo MTApLCAiMTB1c2l6ZSIpOworKworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aThfc3VmZml4ZWQoMTAp LCAiMTBpOCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTE2X3N1ZmZpeGVkKDEwKSwgIjEwaTE2 Iik7CisrICAgIGFzc2VydChMaXRlcmFsOjppMzJfc3VmZml4ZWQoMTApLCAiMTBpMzIiKTsKKysg ICAgYXNzZXJ0KExpdGVyYWw6Omk2NF9zdWZmaXhlZCgxMCksICIxMGk2NCIpOworKyAgICBhc3Nl cnQoTGl0ZXJhbDo6aTEyOF9zdWZmaXhlZCgxMCksICIxMGkxMjgiKTsKKysgICAgYXNzZXJ0KExp dGVyYWw6OmlzaXplX3N1ZmZpeGVkKDEwKSwgIjEwaXNpemUiKTsKKysKKysgICAgYXNzZXJ0KExp dGVyYWw6OnU4X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnUx Nl91bnN1ZmZpeGVkKDEwKSwgIjEwIik7CisrICAgIGFzc2VydChMaXRlcmFsOjp1MzJfdW5zdWZm aXhlZCgxMCksICIxMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6dTY0X3Vuc3VmZml4ZWQoMTAp LCAiMTAiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnUxMjhfdW5zdWZmaXhlZCgxMCksICIxMCIp OworKyAgICBhc3NlcnQoTGl0ZXJhbDo6dXNpemVfdW5zdWZmaXhlZCgxMCksICIxMCIpOworKwor KyAgICBhc3NlcnQoTGl0ZXJhbDo6aThfdW5zdWZmaXhlZCgxMCksICIxMCIpOworKyAgICBhc3Nl cnQoTGl0ZXJhbDo6aTE2X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKKysgICAgYXNzZXJ0KExpdGVy YWw6OmkzMl91bnN1ZmZpeGVkKDEwKSwgIjEwIik7CisrICAgIGFzc2VydChMaXRlcmFsOjppNjRf dW5zdWZmaXhlZCgxMCksICIxMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTEyOF91bnN1ZmZp eGVkKDEwKSwgIjEwIik7CisrICAgIGFzc2VydChMaXRlcmFsOjppc2l6ZV91bnN1ZmZpeGVkKDEw KSwgIjEwIik7CisrCisrICAgIGFzc2VydChMaXRlcmFsOjppMzJfc3VmZml4ZWQoLTEwKSwgIi0x MGkzMiIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTMyX3Vuc3VmZml4ZWQoLTEwKSwgIi0xMCIp OworIH0KKyAKKyAjW3Rlc3RdCisgZm4gbGl0ZXJhbF9mbG9hdCgpIHsKKy0gICAgYXNzZXJ0X2Vx IShMaXRlcmFsOjpmMzJfc3VmZml4ZWQoMTAuMCkudG9fc3RyaW5nKCksICIxMGYzMiIpOworLSAg ICBhc3NlcnRfZXEhKExpdGVyYWw6OmY2NF9zdWZmaXhlZCgxMC4wKS50b19zdHJpbmcoKSwgIjEw ZjY0Iik7CistCistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6ZjMyX3Vuc3VmZml4ZWQoMTAuMCku dG9fc3RyaW5nKCksICIxMC4wIik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6ZjY0X3Vuc3Vm Zml4ZWQoMTAuMCkudG9fc3RyaW5nKCksICIxMC4wIik7CisrICAgICNbdHJhY2tfY2FsbGVyXQor KyAgICBmbiBhc3NlcnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKKysgICAg ICAgIGFzc2VydF9lcSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQpOworKyAgICB9Cisr CisrICAgIGFzc2VydChMaXRlcmFsOjpmMzJfc3VmZml4ZWQoMTAuMCksICIxMGYzMiIpOworKyAg ICBhc3NlcnQoTGl0ZXJhbDo6ZjMyX3N1ZmZpeGVkKC0xMC4wKSwgIi0xMGYzMiIpOworKyAgICBh c3NlcnQoTGl0ZXJhbDo6ZjY0X3N1ZmZpeGVkKDEwLjApLCAiMTBmNjQiKTsKKysgICAgYXNzZXJ0 KExpdGVyYWw6OmY2NF9zdWZmaXhlZCgtMTAuMCksICItMTBmNjQiKTsKKysKKysgICAgYXNzZXJ0 KExpdGVyYWw6OmYzMl91bnN1ZmZpeGVkKDEwLjApLCAiMTAuMCIpOworKyAgICBhc3NlcnQoTGl0 ZXJhbDo6ZjMyX3Vuc3VmZml4ZWQoLTEwLjApLCAiLTEwLjAiKTsKKysgICAgYXNzZXJ0KExpdGVy YWw6OmY2NF91bnN1ZmZpeGVkKDEwLjApLCAiMTAuMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6 ZjY0X3Vuc3VmZml4ZWQoLTEwLjApLCAiLTEwLjAiKTsKKysKKysgICAgYXNzZXJ0KAorKyAgICAg ICAgTGl0ZXJhbDo6ZjY0X3Vuc3VmZml4ZWQoMWUxMDApLAorKyAgICAgICAgIjEwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLjAiLAorKyAgICApOworIH0KKyAKKyAj W3Rlc3RdCitAQCAtMjQ4LDkgKzM1NCwxMyBAQAorICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50 KCIxLl9tIiksIDMpOworICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJcIlwicyIpLCAxKTsK KyAgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiclwiXCJyIiksIDEpOworKyAgICBhc3NlcnRf ZXEhKHRva2VuX2NvdW50KCJyI1wiXCIjciIpLCAxKTsKKyAgICAgYXNzZXJ0X2VxISh0b2tlbl9j b3VudCgiYlwiXCJiIiksIDEpOworICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJiclwiXCJi ciIpLCAxKTsKKy0gICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiciNcIlwiI3IiKSwgMSk7Cisr ICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImJyI1wiXCIjYnIiKSwgMSk7CisrICAgIGFzc2Vy dF9lcSEodG9rZW5fY291bnQoImNcIlwiYyIpLCAxKTsKKysgICAgYXNzZXJ0X2VxISh0b2tlbl9j b3VudCgiY3JcIlwiY3IiKSwgMSk7CisrICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImNyI1wi XCIjY3IiKSwgMSk7CisgICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoIidjJ2MiKSwgMSk7Cisg ICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImInYidiIiksIDEpOworICAgICBhc3NlcnRfZXEh KHRva2VuX2NvdW50KCIwRSIpLCAxKTsKK0BAIC0zNzgsNyArNDg4LDcgQEAKKyAgICAgcm91bmR0 cmlwKCInYSIpOworICAgICByb3VuZHRyaXAoIidfIik7CisgICAgIHJvdW5kdHJpcCgiJ3N0YXRp YyIpOworLSAgICByb3VuZHRyaXAoIidcXHV7MTBfX0ZGRkZ9JyIpOworKyAgICByb3VuZHRyaXAo ciInXHV7MTBfX0ZGRkZ9JyIpOworICAgICByb3VuZHRyaXAoIlwiXFx1ezEwX0YwRkZfX31mb29c XHV7MV8wXzBfMF9ffVwiIik7CisgfQorIAorQEAgLTQwMSw2ICs1MTEsNyBAQAorICAgICBmYWls KCJcIlxcXHIgIFwiIik7IC8vIGJhY2tzbGFzaCBjYXJyaWFnZSByZXR1cm4KKyAgICAgZmFpbCgi J2FhJ2FhIik7CisgICAgIGZhaWwoImJyIyNcIlwiIyIpOworKyAgICBmYWlsKCJjciMjXCJcIiMi KTsKKyAgICAgZmFpbCgiXCJcXFxuXHV7ODV9XHJcIiIpOworIH0KKyAKCmRpZmYgLS1naXQgYS9j aHJvbWl1bS0xMjUtZWw3LXR5cGUtYWxpYXMucGF0Y2ggYi9jaHJvbWl1bS0xMjUtZWw3LXR5cGUt YWxpYXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRhOTA1MAot LS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyNS1lbDctdHlwZS1hbGlhcy5wYXRjaApAQCAt MCwwICsxLDMwIEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMv cGx1c19hZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MuZWw3IGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY29tcG9uZW50cy9wbHVzX2FkZHJlc3Nlcy9wbHVzX2FkZHJlc3Nfc2VydmljZS5j YworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wbHVzX2FkZHJlc3Nlcy9w bHVzX2FkZHJlc3Nfc2VydmljZS5jYy5lbDcJMjAyNC0wNS0xOCAxNDoxMjowNi41MTA4NjM0NTYg KzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvcGx1c19hZGRyZXNz ZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MJMjAyNC0wNS0xOCAxNDoxMzozOS42NzA2NjYzNTIg KzAyMDAKK0BAIC0xNjUsNyArMTY1LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1c0Fk ZHJlc3NTZXJ2aQorICAgICBib29sIGlzX29mZl90aGVfcmVjb3JkLAorICAgICBzdGQ6OnUxNnN0 cmluZ192aWV3IGZvY3VzZWRfZmllbGRfdmFsdWUsCisgICAgIGF1dG9maWxsOjpBdXRvZmlsbFN1 Z2dlc3Rpb25UcmlnZ2VyU291cmNlIHRyaWdnZXJfc291cmNlKSB7CistICB1c2luZyBlbnVtIGF1 dG9maWxsOjpBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOworKyAgdXNpbmcgYXV0b2Zp bGw6OkF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U7CisgICBpZiAoIVN1cHBvcnRzUGx1 c0FkZHJlc3NlcyhsYXN0X2NvbW1pdHRlZF9wcmltYXJ5X21haW5fZnJhbWVfb3JpZ2luLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfb2ZmX3RoZV9yZWNvcmQpKSB7CisgICAgIHJl dHVybiB7fTsKK0BAIC0xNzYsNyArMTc2LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1 c0FkZHJlc3NTZXJ2aQorICAgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWF5YmVfYWRkcmVz cyA9CisgICAgICAgR2V0UGx1c0FkZHJlc3MobGFzdF9jb21taXR0ZWRfcHJpbWFyeV9tYWluX2Zy YW1lX29yaWdpbik7CisgICBpZiAobWF5YmVfYWRkcmVzcyA9PSBzdGQ6Om51bGxvcHQpIHsKKy0g ICAgaWYgKHRyaWdnZXJfc291cmNlICE9IGtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYK KysgICAgaWYgKHRyaWdnZXJfc291cmNlICE9IEF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3Vy Y2U6OmtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKKyAgICAgICAgICFub3JtYWxpemVk X2ZpZWxkX3ZhbHVlLmVtcHR5KCkpIHsKKyAgICAgICByZXR1cm4ge307CisgICAgIH0KK0BAIC0x OTEsNyArMTkxLDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1c0FkZHJlc3NTZXJ2aQor IAorICAgLy8gT25seSBzdWdnZXN0IGZpbGxpbmcgYSBwbHVzIGFkZHJlc3Mgd2hvc2UgcHJlZml4 IG1hdGNoZXMgdGhlIGZpZWxkJ3MgdmFsdWUuCisgICBzdGQ6OnUxNnN0cmluZyBhZGRyZXNzID0g YmFzZTo6VVRGOFRvVVRGMTYoKm1heWJlX2FkZHJlc3MpOworLSAgaWYgKHRyaWdnZXJfc291cmNl ICE9IGtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKKysgIGlmICh0cmlnZ2VyX3NvdXJj ZSAhPSBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOjprTWFudWFsRmFsbGJhY2tQbHVz QWRkcmVzc2VzICYmCisgICAgICAgIWFkZHJlc3Muc3RhcnRzX3dpdGgobm9ybWFsaXplZF9maWVs ZF92YWx1ZSkpIHsKKyAgICAgcmV0dXJuIHt9OworICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVt LTEyNS1lbDctdHlwZW5hbWUucGF0Y2ggYi9jaHJvbWl1bS0xMjUtZWw3LXR5cGVuYW1lLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjODZhNTIKLS0tIC9kZXYvbnVs bAorKysgYi9jaHJvbWl1bS0xMjUtZWw3LXR5cGVuYW1lLnBhdGNoCkBAIC0wLDAgKzEsNDE3IEBA CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlv bl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaC50eXBl bmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Y2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaAorLS0tIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMv cGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvci5oLnR5cGVuYW1lCTIwMjQtMDUtMTUg MjM6NDU6NDkuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNl L2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2MvaW50ZXJu YWxfYWxsb2NhdG9yLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MzU2NTA5NjYgKzAyMDAKK0BAIC0y Niw3ICsyNiw3IEBAIFBhcnRpdGlvblJvb3QmIEludGVybmFsQWxsb2NhdG9yUm9vdCgpOworIAor IC8vIEEgY2xhc3MgdGhhdCBtZWV0cyBDKysgbmFtZWQgcmVxdWlyZW1lbnRzLCBBbGxvY2F0b3Iu CisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CistSW50ZXJuYWxBbGxvY2F0b3I8VD46OnZhbHVlX3R5 cGUqIEludGVybmFsQWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSgKKyt0eXBlbmFtZSBJbnRlcm5hbEFs bG9jYXRvcjxUPjo6dmFsdWVfdHlwZSogSW50ZXJuYWxBbGxvY2F0b3I8VD46OmFsbG9jYXRlKAor ICAgICBzdGQ6OnNpemVfdCBjb3VudCkgeworICAgUEFfQ0hFQ0soY291bnQgPD0KKyAgICAgICAg ICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgoKSAvIHNpemVvZih2YWx1 ZV90eXBlKSk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvY29udGFpbmVy cy9oZWFwX2FycmF5LmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRh aW5lcnMvaGVhcF9hcnJheS5oCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRh aW5lcnMvaGVhcF9hcnJheS5oLnR5cGVuYW1lCTIwMjQtMDUtMTcgMTM6NTE6MzkuOTIzNDI2NDYx ICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRhaW5lcnMvaGVhcF9h cnJheS5oCTIwMjQtMDUtMTcgMTM6NTQ6MDEuODY2MDg1NzMwICswMjAwCitAQCAtMzIsOCArMzIs OCBAQCBjbGFzcyBUUklWSUFMX0FCSSBHU0xfT1dORVIgSGVhcEFycmF5IHsKKyAgIHN0YXRpY19h c3NlcnQoIXN0ZDo6aXNfcmVmZXJlbmNlX3Y8VD4sCisgICAgICAgICAgICAgICAgICJIZWFwQXJy YXkgY2Fubm90IGhvbGQgcmVmZXJlbmNlIHR5cGVzIik7CisgCistICB1c2luZyBpdGVyYXRvciA9 IGJhc2U6OnNwYW48VD46Oml0ZXJhdG9yOworLSAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBiYXNl OjpzcGFuPGNvbnN0IFQ+OjppdGVyYXRvcjsKKysgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUg YmFzZTo6c3BhbjxUPjo6aXRlcmF0b3I7CisrICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVu YW1lIGJhc2U6OnNwYW48Y29uc3QgVD46Oml0ZXJhdG9yOworICAgLy8gV2UgZG9uJ3QgcHV0IHRo aXMgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgdGVtcGxhdGUgcGFyYW1ldGVyIGxpc3QgdG8gYWxsb3cg dGhlCisgICAvLyBzdGF0aWNfYXNzZXJ0IG9uIGlzX3JlZmVyZW5jZV92IHRvIGdpdmUgYSBuaWNl ciBlcnJvciBtZXNzYWdlLgorICAgdXNpbmcgZGVsZXRlcl90eXBlID0gc3RkOjoKK2RpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9jb250YWluZXJzL21hcF91dGlsLmgudHlwZW5h bWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRhaW5lcnMvbWFwX3V0aWwuaAorLS0t IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9jb250YWluZXJzL21hcF91dGlsLmgudHlwZW5h bWUJMjAyNC0wNS0xNSAyMzo0NTo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Jhc2UvY29udGFpbmVycy9tYXBfdXRpbC5oCTIwMjQtMDUtMTcgMTI6MzM6NTgu NzM1NjUwOTY2ICswMjAwCitAQCAtNDQsNyArNDQsNyBAQCBjb25zdGV4cHIgaW50ZXJuYWw6Ok1h cHBlZFR5cGU8TWFwPiogRmluCisgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcCwKKyAgICAgICAgICAg dHlwZW5hbWUgS2V5LAorICAgICAgICAgICB0eXBlbmFtZSBNYXBwZWRFbGVtZW50VHlwZSA9Cist ICAgICAgICAgICAgICBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1h cD4+OjplbGVtZW50X3R5cGU+CisrICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJf dHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+CisgY29uc3Rl eHByIGNvbnN0IE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUHRyT3JOdWxsKGNvbnN0IE1hcCYgbWFw LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBLZXkmIGtleSkgeworICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7CitAQCAtNjAsNyArNjAs NyBAQCBjb25zdGV4cHIgY29uc3QgTWFwcGVkRWxlbWVudFR5cGUqIEZpbmRQCisgdGVtcGxhdGUg PHR5cGVuYW1lIE1hcCwKKyAgICAgICAgICAgdHlwZW5hbWUgS2V5LAorICAgICAgICAgICB0eXBl bmFtZSBNYXBwZWRFbGVtZW50VHlwZSA9CistICAgICAgICAgICAgICBzdGQ6OnBvaW50ZXJfdHJh aXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+CisrICAgICAgICAg ICAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1h cD4+OjplbGVtZW50X3R5cGU+CisgY29uc3RleHByIE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUHRy T3JOdWxsKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtleSkgeworICAgYXV0byBpdCA9IG1hcC5maW5k KGtleSk7CisgICByZXR1cm4gaXQgIT0gbWFwLmVuZCgpID8gYmFzZTo6dG9fYWRkcmVzcyhpdC0+ c2Vjb25kKSA6IG51bGxwdHI7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2Uv Y29udGFpbmVycy90b192ZWN0b3IuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jh c2UvY29udGFpbmVycy90b192ZWN0b3IuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFz ZS9jb250YWluZXJzL3RvX3ZlY3Rvci5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDU6NDkuMDAw MDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRhaW5lcnMv dG9fdmVjdG9yLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MzY2NTA5ODcgKzAyMDAKK0BAIC0zMCw3 ICszMCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBSYW5nZSwgdHlwZW5hbWUgUHJvagorICAgICAg ICAgICAgc3RkOjppbmRpcmVjdGx5X3VuYXJ5X2ludm9jYWJsZTxQcm9qLCByYW5nZXM6Oml0ZXJh dG9yX3Q8UmFuZ2U+PgorIGF1dG8gVG9WZWN0b3IoUmFuZ2UmJiByYW5nZSwgUHJvaiBwcm9qID0g e30pIHsKKyAgIHVzaW5nIFByb2plY3RlZFR5cGUgPQorLSAgICAgIHN0ZDo6cHJvamVjdGVkPHJh bmdlczo6aXRlcmF0b3JfdDxSYW5nZT4sIFByb2o+Ojp2YWx1ZV90eXBlOworKyAgICAgIHR5cGVu YW1lIHN0ZDo6cHJvamVjdGVkPHJhbmdlczo6aXRlcmF0b3JfdDxSYW5nZT4sIFByb2o+Ojp2YWx1 ZV90eXBlOworICAgc3RkOjp2ZWN0b3I8UHJvamVjdGVkVHlwZT4gY29udGFpbmVyOworICAgY29u dGFpbmVyLnJlc2VydmUoc3RkOjpzaXplKHJhbmdlKSk7CisgICByYW5nZXM6OnRyYW5zZm9ybShz dGQ6OmZvcndhcmQ8UmFuZ2U+KHJhbmdlKSwgc3RkOjpiYWNrX2luc2VydGVyKGNvbnRhaW5lciks CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2lu dGVybmFsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1bmN0aW9uYWwv YmluZF9pbnRlcm5hbC5oCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1bmN0aW9u YWwvYmluZF9pbnRlcm5hbC5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDU6NDkuMDAwMDAwMDAw ICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1bmN0aW9uYWwvYmluZF9p bnRlcm5hbC5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM2NjUwOTg3ICswMjAwCitAQCAtMTUwNSwx MSArMTUwNSwxMSBAQCB0ZW1wbGF0ZSA8aW50IGksCisgICAgICAgICAgIHR5cGVuYW1lIFBhcmFt PgorIHN0cnVjdCBQYXJhbUNhbkJlQm91bmQgeworICBwcml2YXRlOgorLSAgdXNpbmcgVW53cmFw cGVkUGFyYW0gPSBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIEZvcndhcmRlZEFzPAorKyAgdXNp bmcgVW53cmFwcGVkUGFyYW0gPSB0eXBlbmFtZSBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIEZv cndhcmRlZEFzPAorICAgICAgIFVud3JhcHBlZD46OnRlbXBsYXRlIFRvUGFyYW1XaXRoVHlwZTxQ YXJhbT47CistICB1c2luZyBQYXJhbVN0b3JhZ2UgPSBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRl IFRvUGFyYW1XaXRoVHlwZTwKKysgIHVzaW5nIFBhcmFtU3RvcmFnZSA9IHR5cGVuYW1lIEJpbmRB cmd1bWVudDxpPjo6dGVtcGxhdGUgVG9QYXJhbVdpdGhUeXBlPAorICAgICAgIFBhcmFtPjo6dGVt cGxhdGUgU3RvcmVkQXM8U3RvcmFnZT47CistICB1c2luZyBCb3VuZFN0b3JhZ2UgPQorKyAgdXNp bmcgQm91bmRTdG9yYWdlID0gdHlwZW5hbWUKKyAgICAgICBCaW5kQXJndW1lbnQ8aT46OnRlbXBs YXRlIEJvdW5kQXM8QXJnPjo6dGVtcGxhdGUgU3RvcmVkQXM8U3RvcmFnZT47CisgCisgICB0ZW1w bGF0ZSA8Ym9vbCB2ID0gIVVud3JhcHBlZFBhcmFtOjprUmF3UHRyIHx8CitkaWZmIC11cCBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYuaC50eXBlbmFt ZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYuaAor LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9mdW5jdGlvbmFsL2Z1bmN0aW9uX3JlZi5o LnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDU6NDkuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgJMjAyNC0wNS0x NyAxMjozMzo1OC43MzY2NTA5ODcgKzAyMDAKK0BAIC02NCw3ICs2NCw3IEBAIGNsYXNzIEZ1bmN0 aW9uUmVmOworIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZS4uLiBBcmdzPgorIGNsYXNz IEZ1bmN0aW9uUmVmPFIoQXJncy4uLik+IHsKKyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y LAorLSAgICAgICAgICAgIHR5cGVuYW1lIFJ1blR5cGUgPSBpbnRlcm5hbDo6RnVuY3RvclRyYWl0 czxGdW5jdG9yPjo6UnVuVHlwZT4KKysgICAgICAgICAgICB0eXBlbmFtZSBSdW5UeXBlID0gdHlw ZW5hbWUgaW50ZXJuYWw6OkZ1bmN0b3JUcmFpdHM8RnVuY3Rvcj46OlJ1blR5cGU+CisgICBzdGF0 aWMgY29uc3RleHByIGJvb2wga0NvbXBhdGlibGVGdW5jdG9yID0KKyAgICAgICBzdGQ6OmNvbnZl cnRpYmxlX3RvPGludGVybmFsOjpFeHRyYWN0UmV0dXJuVHlwZTxSdW5UeXBlPiwgUj4gJiYKKyAg ICAgICBzdGQ6OnNhbWVfYXM8aW50ZXJuYWw6OkV4dHJhY3RBcmdzPFJ1blR5cGU+LCBpbnRlcm5h bDo6VHlwZUxpc3Q8QXJncy4uLj4+OworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9i YXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9i YXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2Uv dHlwZXMvZml4ZWRfYXJyYXkuaC50eXBlbmFtZQkyMDI0LTA1LTE1IDIzOjQ1OjUwLjAwMDAwMDAw MCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS90eXBlcy9maXhlZF9hcnJh eS5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM3NjUxMDA4ICswMjAwCitAQCAtMjcsOCArMjcsOCBA QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyBjbGFzcyBGaXhlZEFycmF5IDogcHVibGljIGFic2w6 OkZpeGVkQXJyYXk8VCwgTiwgQT4geworICBwdWJsaWM6CisgICB1c2luZyBhYnNsOjpGaXhlZEFy cmF5PFQsIE4sIEE+OjpGaXhlZEFycmF5OworLSAgZXhwbGljaXQgRml4ZWRBcnJheShhYnNsOjpG aXhlZEFycmF5PFQsIE4sIEE+OjpzaXplX3R5cGUgbiwKKy0gICAgICAgICAgICAgICAgICAgICAg Y29uc3QgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9yX3R5cGUmIGEgPQorKyAg ZXhwbGljaXQgRml4ZWRBcnJheSh0eXBlbmFtZSBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+Ojpz aXplX3R5cGUgbiwKKysgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgYWJzbDo6 Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9yX3R5cGUmIGEgPQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZW5hbWUgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9y X3R5cGUoKSkKKyAgICAgICA6IEZpeGVkQXJyYXkobiwgVCgpLCBhKSB7fQorIH07CitkaWZmIC11 cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2Rvd25sb2FkL2J1YmJsZS9k b3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxlX3Vw ZGF0ZV9zZXJ2aWNlLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjLnR5cGVu YW1lCTIwMjQtMDUtMTUgMjM6NDY6MDAuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxl X3VwZGF0ZV9zZXJ2aWNlLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM3NjUxMDA4ICswMjAwCitA QCAtOTQsNyArOTQsNyBAQCBJdGVtU29ydEtleSBHZXRTb3J0S2V5KGNvbnN0IEl0ZW0mIGl0ZW0p CisgLy8gSGVscGVyIHRvIGdldCBhbiBpdGVyYXRvciB0byB0aGUgbGFzdCBlbGVtZW50IGluIHRo ZSBjYWNoZS4gVGhlIGNhY2hlCisgLy8gbXVzdCBub3QgYmUgZW1wdHkuCisgdGVtcGxhdGUgPHR5 cGVuYW1lIEl0ZW0+CistU29ydGVkSXRlbXM8SXRlbT46OmNvbnN0X2l0ZXJhdG9yIEdldExhc3RJ dGVyKGNvbnN0IFNvcnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSkgeworK3R5cGVuYW1lIFNvcnRlZEl0 ZW1zPEl0ZW0+Ojpjb25zdF9pdGVyYXRvciBHZXRMYXN0SXRlcihjb25zdCBTb3J0ZWRJdGVtczxJ dGVtPiYgY2FjaGUpIHsKKyAgIENIRUNLKCFjYWNoZS5lbXB0eSgpKTsKKyAgIGF1dG8gaXQgPSBj YWNoZS5lbmQoKTsKKyAgIHJldHVybiBzdGQ6OnByZXYoaXQpOworQEAgLTExNzMsOSArMTE3Myw5 IEBAIGJvb2wgRG93bmxvYWRCdWJibGVVcGRhdGVTZXJ2aWNlOjpDYWNoZU0KKyB9CisgCisgdGVt cGxhdGUgPHR5cGVuYW1lIElkLCB0eXBlbmFtZSBJdGVtPgorLVNvcnRlZEl0ZW1zPEl0ZW0+Ojpp dGVyYXRvcgorK3R5cGVuYW1lIFNvcnRlZEl0ZW1zPEl0ZW0+OjppdGVyYXRvcgorIERvd25sb2Fk QnViYmxlVXBkYXRlU2VydmljZTo6Q2FjaGVNYW5hZ2VyOjpSZW1vdmVJdGVtRnJvbUNhY2hlQnlJ dGVyKAorLSAgICBTb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IgaXRlciwKKysgICAgdHlwZW5h bWUgU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yIGl0ZXIsCisgICAgIFNvcnRlZEl0ZW1zPEl0 ZW0+JiBjYWNoZSwKKyAgICAgSXRlck1hcDxJZCwgSXRlbT4mIGl0ZXJfbWFwKSB7CisgICBDSEVD SyhpdGVyICE9IGNhY2hlLmVuZCgpKTsKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5k X2ludGVybmFsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2ludGVybmFsL2NvbW1hbmRfaW50ZXJuYWwuaAor LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9u cy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFsLmgudHlwZW5hbWUJMjAyNC0wNS0x NSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvaW50ZXJuYWwvY29tbWFuZF9p bnRlcm5hbC5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM3NjUxMDA4ICswMjAwCitAQCAtMTIxLDcg KzEyMSw3IEBAIGNsYXNzIENvbW1hbmRCYXNlIHsKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgTG9ja1R5 cGU+CisgY2xhc3MgQ29tbWFuZFdpdGhMb2NrIDogcHVibGljIENvbW1hbmRCYXNlIHsKKyAgcHVi bGljOgorLSAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0gTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlv bjsKKysgIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IHR5cGVuYW1lIExvY2tUeXBlOjpMb2NrRGVz Y3JpcHRpb247CisgICBleHBsaWNpdCBDb21tYW5kV2l0aExvY2soY29uc3Qgc3RkOjpzdHJpbmcm IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0Rlc2NyaXB0aW9uIGluaXRp YWxfbG9ja19yZXF1ZXN0KTsKKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hy b21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy93ZWJfYXBwX2NvbW1hbmQuaC50 eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNh dGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21t YW5kLmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29t bWFuZHMvd2ViX2FwcF9jb21tYW5kLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43Mzg2NTEwMjggKzAy MDAKK0BAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV2ViQXBwTG9ja01hbmFnZXI7CisgdGVtcGxh dGUgPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZS4uLiBDYWxsYmFja0FyZ3M+CisgY2xhc3Mg V2ViQXBwQ29tbWFuZCA6IHB1YmxpYyBpbnRlcm5hbDo6Q29tbWFuZFdpdGhMb2NrPExvY2tUeXBl PiB7CisgIHB1YmxpYzoKKy0gIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IExvY2tUeXBlOjpMb2Nr RGVzY3JpcHRpb247CisrICB1c2luZyBMb2NrRGVzY3JpcHRpb24gPSB0eXBlbmFtZSBMb2NrVHlw ZTo6TG9ja0Rlc2NyaXB0aW9uOworICAgdXNpbmcgQ2FsbGJhY2tUeXBlID0gYmFzZTo6T25jZUNh bGxiYWNrPHZvaWQoQ2FsbGJhY2tBcmdzLi4uKT47CisgICB1c2luZyBTaHV0ZG93bkFyZ3VtZW50 c1R1cGxlID0gc3RkOjp0dXBsZTxzdGQ6OmRlY2F5X3Q8Q2FsbGJhY2tBcmdzPi4uLj47CisgCitk aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNh dGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLnR5cGVuYW1lIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRf c2NoZWR1bGVyLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dl Yl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLnR5cGVuYW1lCTIwMjQt MDUtMTUgMjM6NDY6MDYuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL3dlYl9hcHBfY29tbWFuZF9zY2hlZHVs ZXIuaAkyMDI0LTA1LTE3IDEyOjMzOjU4LjczODY1MTAyOCArMDIwMAorQEAgLTM3Myw3ICszNzMs NyBAQCBjbGFzcyBXZWJBcHBDb21tYW5kU2NoZWR1bGVyIHsKKyAgIC8vIGNvbW1hbmQgc3lzdGVt LgorICAgdGVtcGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlPgorICAgdm9pZCBTY2hlZHVsZUNhbGxi YWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcGVyYXRpb25fbmFtZSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCisrICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbiBs b2NrX2Rlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxiYWNrQ29tbWFu ZDxMb2NrVHlwZSwgdm9pZD4gY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgYmFz ZTo6T25jZUNsb3N1cmUgb25fY29tcGxldGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgYmFzZTo6TG9jYXRpb24mIGxvY2F0aW9uID0gRlJPTV9IRVJFKSB7CitAQCAtMzkxLDcgKzM5 MSw3IEBAIGNsYXNzIFdlYkFwcENvbW1hbmRTY2hlZHVsZXIgeworICAgICAgICAgICAgIHR5cGVu YW1lIENhbGxiYWNrUmV0dXJuVmFsdWUgPSBzdGQ6OmRlY2F5X3Q8Q29tcGxldGlvbkNhbGxiYWNr QXJnPj4KKyAgIHZvaWQgU2NoZWR1bGVDYWxsYmFja1dpdGhSZXN1bHQoCisgICAgICAgY29uc3Qg c3RkOjpzdHJpbmcmIG9wZXJhdGlvbl9uYW1lLAorLSAgICAgIExvY2tUeXBlOjpMb2NrRGVzY3Jp cHRpb24gbG9ja19kZXNjcmlwdGlvbiwKKysgICAgICB0eXBlbmFtZSBMb2NrVHlwZTo6TG9ja0Rl c2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCisgICAgICAgQ2FsbGJhY2tDb21tYW5kPExvY2tU eXBlLCBDYWxsYmFja1JldHVyblZhbHVlPiBjYWxsYmFjaywKKyAgICAgICBiYXNlOjpPbmNlQ2Fs bGJhY2s8dm9pZChDb21wbGV0aW9uQ2FsbGJhY2tBcmcpPiBvbl9jb21wbGV0ZSwKKyAgICAgICBD YWxsYmFja1JldHVyblZhbHVlIGFyZ19mb3Jfc2h1dGRvd24sCitkaWZmIC11cCBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfZXhl Y3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGlsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9t b2RlbF9leGVjdXRpb25fdXRpbC5oCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25l bnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRp b25fdXRpbC5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6MTMuMDAwMDAwMDAwICswMjAwCisr KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9j b3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCTIwMjQtMDUtMTcgMTI6 MzM6NTguNzM4NjUxMDI4ICswMjAwCitAQCAtMjYsNyArMjYsNyBAQCB2b2lkIFNldEV4ZWN1dGlv blJlcXVlc3RUZW1wbGF0ZSgKKyAKKyAgIC8vIFJlcXVlc3QgaXMgc2V0IGJ5IHRoZSBmZWF0dXJl IGFuZCBzaG91bGQgYWx3YXlzIGJlIHR5cGVkLgorICAgYXV0byB0eXBlZF9yZXF1ZXN0ID0KKy0g ICAgICBzdGF0aWNfY2FzdDxjb25zdCBGZWF0dXJlVHlwZTo6UmVxdWVzdCY+KHJlcXVlc3RfbWV0 YWRhdGEpOworKyAgICAgIHN0YXRpY19jYXN0PGNvbnN0IHR5cGVuYW1lIEZlYXR1cmVUeXBlOjpS ZXF1ZXN0Jj4ocmVxdWVzdF9tZXRhZGF0YSk7CisgICAqKGxvZ2dpbmdfZGF0YS0+bXV0YWJsZV9y ZXF1ZXN0X2RhdGEoKSkgPSB0eXBlZF9yZXF1ZXN0OworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9x dWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1YWxpdHkv bW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxp dHlfbG9nX2VudHJ5LmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0NjoxMy4wMDAwMDAwMDAgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1 aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5oCTIwMjQtMDUt MTcgMTI6MzM6NTguNzM4NjUxMDI4ICswMjAwCitAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBNb2Rl bFF1YWxpdHlMb2dFbnRyeSB7CisgICB9CisgCisgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmVhdHVy ZVR5cGU+CistICBGZWF0dXJlVHlwZTo6UXVhbGl0eSogcXVhbGl0eV9kYXRhKCkgeworKyAgdHlw ZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkqIHF1YWxpdHlfZGF0YSgpIHsKKyAgICAgcmV0dXJu IEZlYXR1cmVUeXBlOjpHZXRMb2dnaW5nRGF0YSgqbG9nX2FpX2RhdGFfcmVxdWVzdF8pCisgICAg ICAgICAtPm11dGFibGVfcXVhbGl0eV9kYXRhKCk7CisgICB9CitkaWZmIC11cCBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVh bGl0eS9tb2RlbF9xdWFsaXR5X3V0aWwuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9x dWFsaXR5X3V0aWwuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vcHRp bWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfdXRpbC5oLnR5 cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6MTMuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1 YWxpdHkvbW9kZWxfcXVhbGl0eV91dGlsLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43Mzk2NTEwNDkg KzAyMDAKK0BAIC0yMCw3ICsyMCw3IEBAIHN0ZDo6b3B0aW9uYWw8VXNlclZpc2libGVGZWF0dXJl S2V5PiBHZXQKKyAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgcXVhbGl0eV9kYXRhIGZyb20g YGxvZ19haV9kYXRhX3JlcXVlc3RgIGZvcgorIC8vIGRpZmZlcmVudCBmZWF0dXJlcy4KKyB0ZW1w bGF0ZSA8dHlwZW5hbWUgRmVhdHVyZVR5cGU+CistRmVhdHVyZVR5cGU6OlF1YWxpdHkqIEdldE1v ZGVsUXVhbGl0eURhdGEoCisrdHlwZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkqIEdldE1vZGVs UXVhbGl0eURhdGEoCisgICAgIHByb3RvOjpMb2dBaURhdGFSZXF1ZXN0KiBsb2dfYWlfZGF0YV9y ZXF1ZXN0KSB7CisgICByZXR1cm4gRmVhdHVyZVR5cGU6OkdldExvZ2dpbmdEYXRhKCpsb2dfYWlf ZGF0YV9yZXF1ZXN0KQorICAgICAgIC0+bXV0YWJsZV9xdWFsaXR5X2RhdGEoKTsKK2RpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29y ZS90ZmxpdGVfbW9kZWxfZXhlY3V0b3IuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9y LmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1 aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0 NjoxMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVu dHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgJMjAyNC0w NS0xNyAxMjozMzo1OC43Mzk2NTEwNDkgKzAyMDAKK0BAIC0yNDIsNyArMjQyLDcgQEAgY2xhc3Mg VEZMaXRlTW9kZWxFeGVjdXRvciA6IHB1YmxpYyBNb2RlbAorICAgdm9pZCBTZW5kRm9yQmF0Y2hF eGVjdXRpb24oCisgICAgICAgQmF0Y2hFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFja19vbl9jb21w bGV0ZSwKKyAgICAgICBiYXNlOjpUaW1lVGlja3Mgc3RhcnRfdGltZSwKKy0gICAgICBNb2RlbEV4 ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRz KQorKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6 Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpCisgICAgICAgb3ZlcnJpZGUgeworICAgICBEQ0hF Q0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7 CisgICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8p OworQEAgLTI2NCw3ICsyNjQsNyBAQCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGlj IE1vZGVsCisgICAvLyBTdGFydHMgdGhlIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB0aGUgbW9k ZWwuIFJldHVybnMgbW9kZWwgb3V0cHV0cy4KKyAgIC8vIE1vZGVsIG5lZWRzIHRvIGJlIGxvYWRl ZC4gU3luY2hyb25vdXMgY2FsbHMgZG8gbm90IGxvYWQgb3IgdW5sb2FkIG1vZGVsLgorICAgc3Rk Ojp2ZWN0b3I8c3RkOjpvcHRpb25hbDxPdXRwdXRUeXBlPj4gU2VuZEZvckJhdGNoRXhlY3V0aW9u U3luYygKKy0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0 UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQorKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8T3V0 cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpCisgICAgICAg b3ZlcnJpZGUgeworICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tz SW5DdXJyZW50U2VxdWVuY2UoKSk7CisgICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVO Q0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworQEAgLTQyMiw3ICs0MjIsNyBAQCBjbGFzcyBURkxpdGVN b2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVsCisgICAvLyBleGVjdXRlcyBpdCBvbiB0aGUgbW9k ZWwgZXhlY3V0aW9uIHRocmVhZC4KKyAgIHZvaWQgTG9hZE1vZGVsRmlsZUFuZEJhdGNoRXhlY3V0 ZSgKKyAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29uX2NvbXBsZXRlLAor LSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1 dFZlY3RvciBpbnB1dHMpIHsKKysgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5 cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKSB7CisgICAgIERDSEVD SyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgpKTsK KyAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7 CisgCitAQCAtNDM5LDcgKzQzOSw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJs aWMgTW9kZWwKKyAKKyAgIC8vIEJhdGNoIGV4ZWN1dGVzIHRoZSBsb2FkZWQgbW9kZWwgZm9yIGlu cHV0cy4KKyAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVkTW9kZWwoCistICAgICAgTW9kZWxFeGVj dXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cywK KysgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNv bnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAorICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6b3B0aW9u YWw8T3V0cHV0VHlwZT4+KiBvdXRwdXRzKSB7CisgICAgIERDSEVDSyhleGVjdXRpb25fdGFza19y dW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgpKTsKKyAgICAgRENIRUNLX0NBTExF RF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7CitAQCAtNDk5LDcgKzQ5OSw3 IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKKyAgIC8vIFVubG9h ZHMgdGhlIG1vZGVsIGlmIG5lZWRlZC4KKyAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVkTW9kZWxB bmRSdW5DYWxsYmFjaygKKyAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29u X2NvbXBsZXRlLAorLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6 Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMsCisrICAgICAgdHlwZW5hbWUgTW9kZWxFeGVjdXRv cjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cywKKyAg ICAgICBFeGVjdXRpb25TdGF0dXMgZXhlY3V0aW9uX3N0YXR1cykgeworICAgICBEQ0hFQ0soZXhl Y3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7CisgICAg IERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworZGlm ZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9j b3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oLnR5cGVuYW1lIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIu aAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIv Y29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaC50eXBlbmFtZQkyMDI0LTA1LTE1IDIzOjQ2OjE1 LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9z dXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaAkyMDI0LTA1LTE3IDEy OjMzOjU4LjczOTY1MTA0OSArMDIwMAorQEAgLTQ1OCw3ICs0NTgsNyBAQCBjbGFzcyBSZXRyeWlu Z0ZldGNoZXJJbXBsIGZpbmFsIDogcHVibGljCisgICBSZXRyeWluZ0ZldGNoZXJJbXBsKGNvbnN0 IFJldHJ5aW5nRmV0Y2hlckltcGwmKSA9IGRlbGV0ZTsKKyAgIFJldHJ5aW5nRmV0Y2hlckltcGwm IG9wZXJhdG9yPShjb25zdCBSZXRyeWluZ0ZldGNoZXJJbXBsJikgPSBkZWxldGU7CisgCistICB2 b2lkIFN0YXJ0KFByb3RvRmV0Y2hlcjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxiYWNrKSBvdmVy cmlkZSB7CisrICB2b2lkIFN0YXJ0KHR5cGVuYW1lIFByb3RvRmV0Y2hlcjxSZXNwb25zZT46OkNh bGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7CisgICAgIGNhbGxiYWNrXyA9IHN0ZDo6bW92ZShj YWxsYmFjayk7CisgICAgIFJldHJ5KCk7CisgICB9CitAQCAtNTA0LDcgKzUwNCw3IEBAIGNsYXNz IFJldHJ5aW5nRmV0Y2hlckltcGwgZmluYWwgOiBwdWJsaWMKKyAgIH0KKyAKKyAgIC8vIENsaWVu dCBjYWxsYmFjay4KKy0gIFR5cGVkUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2Fs bGJhY2tfOworKyAgdHlwZW5hbWUgVHlwZWRQcm90b0ZldGNoZXI8UmVzcG9uc2U+OjpDYWxsYmFj ayBjYWxsYmFja187CisgCisgICAvLyBSZXRyeSBjb250cm9scy4KKyAgIGJhc2U6Ok9uZVNob3RU aW1lciB0aW1lcl87CitAQCAtNTI1LDcgKzUyNSw3IEBAIGNsYXNzIFBhcmFsbGVsRmV0Y2hNYW5h Z2VyIHsKKyAgIC8vIERlZmVycmVkIGZldGNoZXIgaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCBzaG91 bGQgYmUgc3RhcnRlZCBhZnRlciBpdCBpcworICAgLy8gc3RvcmVkIGludGVybmFsbHkuCisgICB1 c2luZyBGZXRjaGVyID0gUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjsKKy0gIHVzaW5nIEtleVR5cGUg PSBiYXNlOjpJRE1hcDxzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hlcj4+OjpLZXlUeXBlOworKyAgdXNp bmcgS2V5VHlwZSA9IHR5cGVuYW1lIGJhc2U6OklETWFwPHN0ZDo6dW5pcXVlX3B0cjxGZXRjaGVy Pj46OktleVR5cGU7CisgCisgIHB1YmxpYzoKKyAgIC8vIFByb3ZpZGVzIGZyZXNoIGluc3RhbmNl cyBvZiBhIGRlZmVycmVkIGZldGNoZXIgZm9yIGVhY2ggZmV0Y2guCitAQCAtNTQxLDcgKzU0MSw3 IEBAIGNsYXNzIFBhcmFsbGVsRmV0Y2hNYW5hZ2VyIHsKKyAKKyAgIC8vIFN0YXJ0cyB0aGUgZmV0 Y2guIFVuZGVybHlpbmcgZmV0Y2hlciBpcyBzdG9yZWQgaW50ZXJuYWxseSwgYW5kIHdpbGwgYmUK KyAgIC8vIGNsZWFuZWQgdXAgYWZ0ZXIgZmluaXNoIG9yIHdoZW4gdGhpcyBtYW5hZ2VyIGlzIGRl c3Ryb3llZC4KKy0gIHZvaWQgRmV0Y2goY29uc3QgUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hlcjo6 Q2FsbGJhY2sgY2FsbGJhY2spIHsKKysgIHZvaWQgRmV0Y2goY29uc3QgUmVxdWVzdCYgcmVxdWVz dCwgdHlwZW5hbWUgRmV0Y2hlcjo6Q2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgICAgQ0hFQ0soY2Fs bGJhY2spIDw8ICJVc2UgYmFzZTo6RG9Ob3RoaW5nKCkgaW5zdGVhZCBvZiBlbXB0eSBjYWxsYmFj ay4iOworICAgICBLZXlUeXBlIGtleSA9IHJlcXVlc3RzX2luX2ZsaWdodF8uQWRkKE1ha2VGZXRj aGVyKHJlcXVlc3QpKTsKKyAgICAgcmVxdWVzdHNfaW5fZmxpZ2h0Xy5Mb29rdXAoa2V5KS0+U3Rh cnQoCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGljL2NwcC9iaW5k aW5ncy9hcnJheV90cmFpdHMuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8v cHVibGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0cy5oLnR5cGVuYW1lCTIw MjQtMDUtMTUgMjM6NDY6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgJMjAyNC0wNS0xNyAx MjozMzo1OC43Mzk2NTEwNDkgKzAyMDAKK0BAIC05MCw3ICs5MCw3IEBAIHRlbXBsYXRlIDx0eXBl bmFtZSBDb250YWluZXI+CisgICAgIHsgY1tpXSB9IC0+IHN0ZDo6c2FtZV9hczx0eXBlbmFtZSBD b250YWluZXI6OnJlZmVyZW5jZT47CisgICB9Cisgc3RydWN0IEFycmF5VHJhaXRzPENvbnRhaW5l cj4geworLSAgdXNpbmcgRWxlbWVudCA9IENvbnRhaW5lcjo6dmFsdWVfdHlwZTsKKysgIHVzaW5n IEVsZW1lbnQgPSB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU7CisgCisgICAvLyB2ZWN0 b3ItbGlrZSBjb250YWluZXJzIGhhdmUgbm8gYnVpbHQtaW4gbnVsbC4KKyAgIHN0YXRpYyBib29s IElzTnVsbChjb25zdCBDb250YWluZXImIGMpIHsgcmV0dXJuIGZhbHNlOyB9CitkaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBlX2NvbnZl cnRlci5oLnR5cGVuYW1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9wdWJsaWMvY3BwL2Jp bmRpbmdzL3R5cGVfY29udmVydGVyLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8v cHVibGljL2NwcC9iaW5kaW5ncy90eXBlX2NvbnZlcnRlci5oLnR5cGVuYW1lCTIwMjQtMDUtMTUg MjM6NDY6MzAuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9tb2pv L3B1YmxpYy9jcHAvYmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIuaAkyMDI0LTA1LTE3IDEyOjMzOjU4 Ljc0MDY1MTA3MCArMDIwMAorQEAgLTEyNyw3ICsxMjcsNyBAQCB1c2luZyBWZWNWYWx1ZVR5cGUg PSB0eXBlbmFtZSBWZWM6OnZhbHVlCisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFZlYz4KKyB1c2lu ZyBWZWNQdHJMaWtlVW5kZXJseWluZ1ZhbHVlVHlwZSA9CistICAgIHN0ZDo6cG9pbnRlcl90cmFp dHM8VmVjVmFsdWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7CisrICAgIHR5cGVuYW1lIHN0ZDo6 cG9pbnRlcl90cmFpdHM8VmVjVmFsdWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7CisgCisgfSAg Ly8gbmFtZXNwYWNlIGludGVybmFsCisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFi bGUuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFibGUuaAorLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9h c3luY19pdGVyYWJsZS5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6NDAuMDAwMDAwMDAwICsw MjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43 NDA2NTEwNzAgKzAyMDAKK0BAIC0yNDUsNyArMjQ1LDcgQEAgY2xhc3MgUGFpckFzeW5jSXRlcmFi bGUgeworICBwcml2YXRlOgorICAgdmlydHVhbCBJdGVyYXRpb25Tb3VyY2UqIENyZWF0ZUl0ZXJh dGlvblNvdXJjZSgKKyAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0X3N0YXRlLAorLSAgICAgIEl0 ZXJhdGlvblNvdXJjZTo6S2luZCBraW5kLAorKyAgICAgIHR5cGVuYW1lIEl0ZXJhdGlvblNvdXJj ZTo6S2luZCBraW5kLAorICAgICAgIEluaXRBcmdzLi4uIGFyZ3MsCisgICAgICAgRXhjZXB0aW9u U3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgPSAwOworIH07CitAQCAtMjkxLDcgKzI5MSw3IEBAIGNs YXNzIFZhbHVlQXN5bmNJdGVyYWJsZSB7CisgIHByaXZhdGU6CisgICB2aXJ0dWFsIEl0ZXJhdGlv blNvdXJjZSogQ3JlYXRlSXRlcmF0aW9uU291cmNlKAorICAgICAgIFNjcmlwdFN0YXRlKiBzY3Jp cHRfc3RhdGUsCistICAgICAgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCisrICAgICAgdHlw ZW5hbWUgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCisgICAgICAgSW5pdEFyZ3MuLi4gYXJn cywKKyAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSA9IDA7CisgfTsKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oLnR5cGVuYW1lIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29y ZS92OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9t aXNlX3Byb3BlcnR5LmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0Njo0MC4wMDAwMDAwMDAgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcHJvcGVydHkuaAkyMDI0LTA1LTE3IDEy OjMzOjU4Ljc0MDY1MTA3MCArMDIwMAorQEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBTY3JpcHRQ cm9taXNlUHJvcGVydHkgZmluYWwKKyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICByZXF1 aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBiaW5kaW5nczo6RW51bWVyYXRpb25CYXNlPgorICAg c3RhdGljIFQgRGVmYXVsdFByb21pc2VSZXN1bHRWYWx1ZSgpIHsKKy0gICAgcmV0dXJuIFQoc3Rh dGljX2Nhc3Q8VDo6RW51bT4oMCkpOworKyAgICByZXR1cm4gVChzdGF0aWNfY2FzdDx0eXBlbmFt ZSBUOjpFbnVtPigwKSk7CisgICB9CisgCisgICBTdGF0ZSBzdGF0ZV8gPSBrUGVuZGluZzsKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv Y29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0aC5jYy50eXBlbmFt ZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv aHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MKKy0tLSBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJz ZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MudHlwZW5hbWUJMjAyNC0wNS0xNSAy Mzo0Njo0MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJz ZXJfZmFzdHBhdGguY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43NDE2NTEwOTAgKzAyMDAKK0BAIC0y MTAsNyArMjEwLDcgQEAgY2xhc3MgSFRNTEZhc3RQYXRoUGFyc2VyIHsKKyAgIHVzaW5nIFNwYW4g PSBiYXNlOjpzcGFuPGNvbnN0IENoYXI+OworICAgdXNpbmcgVVNwYW4gPSBiYXNlOjpzcGFuPGNv bnN0IFVDaGFyPjsKKyAgIC8vIDMyIG1hdGNoZXMgdGhhdCB1c2VkIGJ5IEhUTUxUb2tlbjo6QXR0 cmlidXRlLgorLSAgdHlwZWRlZiBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZV92PENoYXIs IFVDaGFyPiwKKysgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3Nh bWVfdjxDaGFyLCBVQ2hhcj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJMaXRl cmFsQnVmZmVyPDMyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ2hhckxpdGVyYWxC dWZmZXI8MzI+Pjo6dHlwZSBMaXRlcmFsQnVmZmVyVHlwZTsKKyAgIHN0YXRpY19hc3NlcnQoc3Rk Ojppc19zYW1lX3Y8Q2hhciwgVUNoYXI+IHx8IHN0ZDo6aXNfc2FtZV92PENoYXIsIExDaGFyPik7 CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2NvcmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXMuaC50eXBlbmFtZSBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvb2Jq ZWN0X3BhaW50X3Byb3BlcnRpZXMuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9vYmplY3RfcGFpbnRfcHJvcGVydGllcy5o LnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6NDEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21p dW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29i amVjdF9wYWludF9wcm9wZXJ0aWVzLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43NDE2NTEwOTAgKzAy MDAKK0BAIC00NDUsOCArNDQ1LDggQEAgY2xhc3MgQ09SRV9FWFBPUlQgT2JqZWN0UGFpbnRQcm9w ZXJ0aWVzCisgICBQYWludFByb3BlcnR5Q2hhbmdlVHlwZSBVcGRhdGUoCisgICAgICAgTm9kZUlk IG5vZGVfaWQsCisgICAgICAgY29uc3QgUGFyZW50VHlwZSYgcGFyZW50LAorLSAgICAgIE5vZGVU eXBlOjpTdGF0ZSYmIHN0YXRlLAorLSAgICAgIGNvbnN0IE5vZGVUeXBlOjpBbmltYXRpb25TdGF0 ZSYgYW5pbWF0aW9uX3N0YXRlID0KKysgICAgICB0eXBlbmFtZSBOb2RlVHlwZTo6U3RhdGUmJiBz dGF0ZSwKKysgICAgICBjb25zdCB0eXBlbmFtZSBOb2RlVHlwZTo6QW5pbWF0aW9uU3RhdGUmIGFu aW1hdGlvbl9zdGF0ZSA9CisgICAgICAgICAgIE5vZGVUeXBlOjpBbmltYXRpb25TdGF0ZSgpKSB7 CisgICAgIC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5ldyBub2RlLgorICAg ICBpZiAoIW5vZGVzXy5IYXNGaWVsZChub2RlX2lkKSkgeworZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90 YWJsZS5oLnR5cGVuYW1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUu aC50eXBlbmFtZQkyMDI0LTA1LTE1IDIzOjQ2OjQzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3Rm L2hhc2hfdGFibGUuaAkyMDI0LTA1LTE3IDEyOjMzOjU4Ljc0MjY1MTExMSArMDIwMAorQEAgLTIw MTMsNyArMjAxMyw3IEBAIHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlciB7Cisg ICBzdGF0aWNfYXNzZXJ0KCFJc1RyYWNlYWJsZTx0eXBlbmFtZSBUcmFpdHM6OlRyYWl0VHlwZT46 OnZhbHVlKTsKKyAKKyAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpiaWRpcmVjdGlv bmFsX2l0ZXJhdG9yX3RhZzsKKy0gIHVzaW5nIHZhbHVlX3R5cGUgPSBIYXNoVGFibGVUeXBlOjpW YWx1ZVR5cGU7CisrICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6 VmFsdWVUeXBlOworICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAgdXNp bmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOworICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlw ZSY7CitAQCAtMjA2NSw3ICsyMDY1LDcgQEAgc3RydWN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB ZGFwdGVyPAorIAorICBwdWJsaWM6CisgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6 YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7CistICB1c2luZyB2YWx1ZV90eXBlID0gSGFzaFRh YmxlVHlwZTo6VmFsdWVUeXBlOworKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIEhhc2hU YWJsZVR5cGU6OlZhbHVlVHlwZTsKKyAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZf dDsKKyAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgIHVzaW5nIHJlZmVyZW5jZSA9 IHZhbHVlX3R5cGUmOworQEAgLTIxMTksNyArMjExOSw3IEBAIHN0cnVjdCBIYXNoVGFibGVJdGVy YXRvckFkYXB0ZXIgeworICAgc3RhdGljX2Fzc2VydCghSXNUcmFjZWFibGU8dHlwZW5hbWUgVHJh aXRzOjpUcmFpdFR5cGU+Ojp2YWx1ZSk7CisgCisgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9 IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7CistICB1c2luZyB2YWx1ZV90eXBlID0g SGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1l IEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKyAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0 cmRpZmZfdDsKKyAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgIHVzaW5nIHJlZmVy ZW5jZSA9IHZhbHVlX3R5cGUmOworQEAgLTIxNjcsNyArMjE2Nyw3IEBAIHN0cnVjdCBIYXNoVGFi bGVJdGVyYXRvckFkYXB0ZXI8CisgCisgIHB1YmxpYzoKKyAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVn b3J5ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKKy0gIHVzaW5nIHZhbHVlX3R5 cGUgPSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7CisrICB1c2luZyB2YWx1ZV90eXBlID0gdHlw ZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworICAgdXNpbmcgZGlmZmVyZW5jZV90eXBl ID0gcHRyZGlmZl90OworICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOworICAgdXNpbmcg cmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI1LW1pc3Np bmctaW5jbHVkZS1GaWVsZERhdGFNYW5hZ2VyLnBhdGNoIGIvY2hyb21pdW0tMTI1LW1pc3Npbmct aW5jbHVkZS1GaWVsZERhdGFNYW5hZ2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjZkZDc2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjUtbWlzc2lu Zy1pbmNsdWRlLUZpZWxkRGF0YU1hbmFnZXIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorY29tbWl0 IGFhNTNjM2FiOGRmN2Y3YzFkNDJjMzBkNGIxODRhOGY4YjBhOGU1MGQKK0F1dGhvcjogSm9zZSBE YXBlbmEgUGF6IDxqZGFwZW5hQGlnYWxpYS5jb20+CitEYXRlOiAgIFR1ZSBBcHIgMTYgMTI6MTQ6 MTUgMjAyNCArMDAwMAorCisgICAgSVdZVTogYWRkIG1pc3NpbmcgaW5jbHVkZSBmb3IgdXNhZ2Ug b2YgRmllbGREYXRhTWFuYWdlciBpbiBhdXRvZmlsbF9hZ2VudC5oCisgICAgCisgICAgQ2hhbmdl LUlkOiBJNzA1NzVkMWRkNzJiOTMzNGUzYjhkNDgwNTc3OWE3ZTQ1Nzg4OTg5ZQorICAgIFJldmll d2VkLW9uOiBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21p dW0vc3JjLysvNTM5Mjg0MAorICAgIFJldmlld2VkLWJ5OiBGbG9yaWFuIExlaW1ncnViZXIgPGZs ZWltZ3J1YmVyQGdvb2dsZS5jb20+CisgICAgQ29tbWl0LVF1ZXVlOiBKb3PDqSBEYXBlbmEgUGF6 IDxqZGFwZW5hQGlnYWxpYS5jb20+CisgICAgQ3ItQ29tbWl0LVBvc2l0aW9uOiByZWZzL2hlYWRz L21haW5AeyMxMjg3OTY3fQorCitkaWZmIC0tZ2l0IGEvY29tcG9uZW50cy9hdXRvZmlsbC9jb250 ZW50L3JlbmRlcmVyL2F1dG9maWxsX2FnZW50LmggYi9jb21wb25lbnRzL2F1dG9maWxsL2NvbnRl bnQvcmVuZGVyZXIvYXV0b2ZpbGxfYWdlbnQuaAoraW5kZXggNzZhMjVkNzJjODdjYy4uMDE0NjJh ZWZkYWFlNiAxMDA2NDQKKy0tLSBhL2NvbXBvbmVudHMvYXV0b2ZpbGwvY29udGVudC9yZW5kZXJl ci9hdXRvZmlsbF9hZ2VudC5oCisrKysgYi9jb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQvcmVu ZGVyZXIvYXV0b2ZpbGxfYWdlbnQuaAorQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSAiY29t cG9uZW50cy9hdXRvZmlsbC9jb250ZW50L3JlbmRlcmVyL2Zvcm1fYXV0b2ZpbGxfdXRpbC5oIgor ICNpbmNsdWRlICJjb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQvcmVuZGVyZXIvZm9ybV90cmFj a2VyLmgiCisgI2luY2x1ZGUgImNvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9jb21tb24vYXV0b2Zp bGxfZmVhdHVyZXMuaCIKKysjaW5jbHVkZSAiY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2NvbW1v bi9maWVsZF9kYXRhX21hbmFnZXIuaCIKKyAjaW5jbHVkZSAiY29tcG9uZW50cy9hdXRvZmlsbC9j b3JlL2NvbW1vbi9tb2pvbS9hdXRvZmlsbF90eXBlcy5tb2pvbS1zaGFyZWQuaCIKKyAjaW5jbHVk ZSAiY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2NvbW1vbi91bmlxdWVfaWRzLmgiCisgI2luY2x1 ZGUgImNvbnRlbnQvcHVibGljL3JlbmRlcmVyL3JlbmRlcl9mcmFtZV9vYnNlcnZlci5oIgorQEAg LTUxLDcgKzUyLDYgQEAgbmFtZXNwYWNlIGF1dG9maWxsIHsKKyBjbGFzcyBGb3JtQ2FjaGU7Cisg Y2xhc3MgUGFzc3dvcmRBdXRvZmlsbEFnZW50OworIGNsYXNzIFBhc3N3b3JkR2VuZXJhdGlvbkFn ZW50OworLWNsYXNzIEZpZWxkRGF0YU1hbmFnZXI7CisgCisgLy8gQXV0b2ZpbGxBZ2VudCBkZWFs cyB3aXRoIEF1dG9maWxsIHJlbGF0ZWQgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiBCbGluayBhbmQK KyAvLyB0aGUgYnJvd3Nlci4KCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjUtc3lzdGVtLWxpYnN0 ZGMrKy5wYXRjaCBiL2Nocm9taXVtLTEyNS1zeXN0ZW0tbGlic3RkYysrLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMWUyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9j aHJvbWl1bS0xMjUtc3lzdGVtLWxpYnN0ZGMrKy5wYXRjaApAQCAtMCwwICsxLDc3NyBAQAorZGlm ZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2Mvc3RhcnNjYW4vc3RhdHNfY29sbGVjdG9yLmguc3lz dGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9zdGFyc2Nhbi9zdGF0c19jb2xsZWN0 b3IuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL3N0YXJzY2FuL3N0YXRzX2NvbGxlY3Rvci5o LnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0NTo0OS4wMDAwMDAwMDAgKzAyMDAKKysr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0 b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9zdGFyc2Nhbi9zdGF0c19jb2xsZWN0b3IuaAkyMDI0LTA1 LTE3IDEyOjMzOjU4Ljc2MTY1MTUwNSArMDIwMAorQEAgLTE0LDcgKzE0LDcgQEAKKyAjaW5jbHVk ZSA8dW5vcmRlcmVkX21hcD4KKyAjaW5jbHVkZSA8dXRpbGl0eT4KKyAKKy0jaW5jbHVkZSAicGFy dGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvcl9mb3J3YXJkLmgiCisrI2luY2x1ZGUgInBh cnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaCIKKyAjaW5jbHVkZSAicGFydGl0aW9u X2FsbG9jL3BhcnRpdGlvbl9hbGxvY19iYXNlL3RocmVhZGluZy9wbGF0Zm9ybV90aHJlYWQuaCIK KyAjaW5jbHVkZSAicGFydGl0aW9uX2FsbG9jL3BhcnRpdGlvbl9hbGxvY19iYXNlL3RpbWUvdGlt ZS5oIgorICNpbmNsdWRlICJwYXJ0aXRpb25fYWxsb2MvcGFydGl0aW9uX2FsbG9jX2NoZWNrLmgi CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2xlbnMvbGVu c19vdmVybGF5L2xlbnNfb3ZlcmxheV91cmxfYnVpbGRlci5oLnN5c3RlbS1saWJzdGRjKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9sZW5zL2xlbnNfb3ZlcmxheS9sZW5z X292ZXJsYXlfdXJsX2J1aWxkZXIuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21l L2Jyb3dzZXIvbGVucy9sZW5zX292ZXJsYXkvbGVuc19vdmVybGF5X3VybF9idWlsZGVyLmguc3lz dGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE4IDE5OjIyOjA0LjUzNDk0MjQ2OSArMDIwMAorKysrIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvbGVucy9sZW5zX292ZXJsYXkvbGVu c19vdmVybGF5X3VybF9idWlsZGVyLmgJMjAyNC0wNS0xOCAxOToyMjoxOC4zNzEyOTY5MzQgKzAy MDAKK0BAIC01LDYgKzUsNyBAQAorICNpZm5kZWYgQ0hST01FX0JST1dTRVJfTEVOU19MRU5TX09W RVJMQVlfTEVOU19PVkVSTEFZX1VSTF9CVUlMREVSX0hfCisgI2RlZmluZSBDSFJPTUVfQlJPV1NF Ul9MRU5TX0xFTlNfT1ZFUkxBWV9MRU5TX09WRVJMQVlfVVJMX0JVSUxERVJfSF8KKyAKKysjaW5j bHVkZSA8b3B0aW9uYWw+CisgI2luY2x1ZGUgPHN0cmluZz4KKyAKKyAjaW5jbHVkZSAidGhpcmRf cGFydHkvbGVuc19zZXJ2ZXJfcHJvdG8vbGVuc19vdmVybGF5X2NsdXN0ZXJfaW5mby5wYi5oIgor ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3NlcnZpY2VzL2FwcF9z ZXJ2aWNlL3B1YmxpYy9jcHAvYXBwX3R5cGVzLmguc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvc2VydmljZXMvYXBwX3NlcnZpY2UvcHVibGljL2NwcC9h cHBfdHlwZXMuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9zZXJ2aWNl cy9hcHBfc2VydmljZS9wdWJsaWMvY3BwL2FwcF90eXBlcy5oLnN5c3RlbS1saWJzdGRjKysJMjAy NC0wNS0xOCAxMzozMTowMC4zODE1MTcyOTQgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbXBvbmVudHMvc2VydmljZXMvYXBwX3NlcnZpY2UvcHVibGljL2NwcC9hcHBfdHlwZXMu aAkyMDI0LTA1LTE4IDEzOjMxOjE5Ljc0MDk0Njk2NCArMDIwMAorQEAgLTUsNiArNSw3IEBACisg I2lmbmRlZiBDT01QT05FTlRTX1NFUlZJQ0VTX0FQUF9TRVJWSUNFX1BVQkxJQ19DUFBfQVBQX1RZ UEVTX0hfCisgI2RlZmluZSBDT01QT05FTlRTX1NFUlZJQ0VTX0FQUF9TRVJWSUNFX1BVQkxJQ19D UFBfQVBQX1RZUEVTX0hfCisgCisrI2luY2x1ZGUgPG9wdGlvbmFsPgorICNpbmNsdWRlICJiYXNl L2NvbXBvbmVudF9leHBvcnQuaCIKKyAjaW5jbHVkZSAiY29tcG9uZW50cy9zZXJ2aWNlcy9hcHBf c2VydmljZS9wdWJsaWMvY3BwL21hY3Jvcy5oIgorICNpbmNsdWRlICJjb21wb25lbnRzL3NlcnZp Y2VzL2FwcF9zZXJ2aWNlL3B1YmxpYy9wcm90b3MvYXBwX3R5cGVzLnBiLmgiCitkaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheS9zdXJm YWNlX2FnZ3JlZ2F0b3IuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheS9zdXJmYWNlX2FnZ3JlZ2F0b3IuY2MKKy0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheS9z dXJmYWNlX2FnZ3JlZ2F0b3IuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjE3 LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92 aXovc2VydmljZS9kaXNwbGF5L3N1cmZhY2VfYWdncmVnYXRvci5jYwkyMDI0LTA1LTE3IDEyOjMz OjU4Ljc2MTY1MTUwNSArMDIwMAorQEAgLTIyNzUsNyArMjI3NSw3IEBAIEFnZ3JlZ2F0ZWRGcmFt ZSBTdXJmYWNlQWdncmVnYXRvcjo6QWdncmUKKyAgIHJvb3Rfc3VyZmFjZV9pZF8gPSBzdXJmYWNl X2lkOworIAorICAgLy8gU3RhcnQgcmVjb3JkaW5nIG5ldyBzdGF0cyBmb3IgdGhpcyBhZ2dyZWdh dGlvbi4KKy0gIHN0YXRzXy5lbXBsYWNlKCk7CisrICBzdGF0c18gPSBBZ2dyZWdhdGVTdGF0aXN0 aWNze307CisgCisgICBiYXNlOjpFbGFwc2VkVGltZXIgcHJld2Fsa190aW1lcjsKKyAgIFJlc29s dmVkRnJhbWVEYXRhKiByZXNvbHZlZF9mcmFtZSA9IEdldFJlc29sdmVkRnJhbWUoc3VyZmFjZV9p ZCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9maXJz dF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldHNfaGFuZGxlcl9kYXRhYmFzZV9oZWxwZXIuY2Mu c3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9m aXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldHNfaGFuZGxlcl9kYXRhYmFzZV9oZWxwZXIu Y2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0 eV9zZXRzL2ZpcnN0X3BhcnR5X3NldHNfaGFuZGxlcl9kYXRhYmFzZV9oZWxwZXIuY2Muc3lzdGVt LWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3Rf cGFydHlfc2V0c19oYW5kbGVyX2RhdGFiYXNlX2hlbHBlci5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4 Ljc2MjY1MTUyNiArMDIwMAorQEAgLTIsNiArMiw3IEBACisgLy8gVXNlIG9mIHRoaXMgc291cmNl IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIC8v IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisrI2luY2x1ZGUgPG9wdGlvbmFsPgorICNp bmNsdWRlICJjb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRz X2hhbmRsZXJfZGF0YWJhc2VfaGVscGVyLmgiCisgCisgI2luY2x1ZGUgImJhc2UvY29udGFpbmVy cy9jb250YWlucy5oIgorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29tbWFu ZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2Uvc2hhcmVkX2ltYWdlX2JhY2tpbmcuaC5zeXN0 ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2NvbW1hbmRfYnVmZmVyL3Nl cnZpY2Uvc2hhcmVkX2ltYWdlL3NoYXJlZF9pbWFnZV9iYWNraW5nLmgKKy0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZS9zaGFy ZWRfaW1hZ2VfYmFja2luZy5oLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0NjoyMi4w MDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9jb21tYW5kX2J1 ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZS9zaGFyZWRfaW1hZ2VfYmFja2luZy5oCTIwMjQtMDUt MTcgMTI6MzM6NTguNzYyNjUxNTI2ICswMjAwCitAQCAtMTExLDYgKzExMSwyNSBAQCB1c2luZyBW aWRlb0RlY29kZURldmljZSA9IE1pY3Jvc29mdDo6V1JMCisgdXNpbmcgVmlkZW9EZWNvZGVEZXZp Y2UgPSB2b2lkKjsKKyAjZW5kaWYgIC8vIEJVSUxERkxBRyhJU19XSU4pCisgCisrY2xhc3MgU2Nv cGVkV3JpdGVVTUEgeworKyBwdWJsaWM6CisrICBTY29wZWRXcml0ZVVNQSgpID0gZGVmYXVsdDsK KysKKysgIFNjb3BlZFdyaXRlVU1BKGNvbnN0IFNjb3BlZFdyaXRlVU1BJikgPSBkZWxldGU7Cisr ICBTY29wZWRXcml0ZVVNQSYgb3BlcmF0b3I9KGNvbnN0IFNjb3BlZFdyaXRlVU1BJikgPSBkZWxl dGU7CisrCisrICB+U2NvcGVkV3JpdGVVTUEoKSB7CisrICAgIFVNQV9ISVNUT0dSQU1fQk9PTEVB TigiR1BVLlNoYXJlZEltYWdlLkNvbnRlbnRDb25zdW1lZCIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250ZW50X2NvbnN1bWVkXyk7CisrICB9CisrCisrICBib29sIGNvbnRlbnRfY29u c3VtZWQoKSBjb25zdCB7IHJldHVybiBjb250ZW50X2NvbnN1bWVkXzsgfQorKyAgdm9pZCBTZXRD b25zdW1lZCgpIHsgY29udGVudF9jb25zdW1lZF8gPSB0cnVlOyB9CisrCisrIHByaXZhdGU6Cisr ICBib29sIGNvbnRlbnRfY29uc3VtZWRfID0gZmFsc2U7CisrfTsKKysKKyAvLyBSZXByZXNlbnRz IHRoZSBhY3R1YWwgc3RvcmFnZSAoR0wgdGV4dHVyZSwgVmtJbWFnZSwgR01CKSBmb3IgYSBTaGFy ZWRJbWFnZS4KKyAvLyBTaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LCBpbnN0ZWFkIGlz IGFjY2Vzc2VkIHRocm91Z2ggYQorIC8vIFNoYXJlZEltYWdlUmVwcmVzZW50YXRpb24uCitAQCAt MzcwLDI1ICszODksNiBAQCBjbGFzcyBHUFVfR0xFUzJfRVhQT1JUIFNoYXJlZEltYWdlQmFja2lu CisgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8YmFzZTo6TG9jaz4gbG9ja187CisgCisgIHByaXZh dGU6CistICBjbGFzcyBTY29wZWRXcml0ZVVNQSB7CistICAgcHVibGljOgorLSAgICBTY29wZWRX cml0ZVVNQSgpID0gZGVmYXVsdDsKKy0KKy0gICAgU2NvcGVkV3JpdGVVTUEoY29uc3QgU2NvcGVk V3JpdGVVTUEmKSA9IGRlbGV0ZTsKKy0gICAgU2NvcGVkV3JpdGVVTUEmIG9wZXJhdG9yPShjb25z dCBTY29wZWRXcml0ZVVNQSYpID0gZGVsZXRlOworLQorLSAgICB+U2NvcGVkV3JpdGVVTUEoKSB7 CistICAgICAgVU1BX0hJU1RPR1JBTV9CT09MRUFOKCJHUFUuU2hhcmVkSW1hZ2UuQ29udGVudENv bnN1bWVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF9jb25zdW1lZF8p OworLSAgICB9CistCistICAgIGJvb2wgY29udGVudF9jb25zdW1lZCgpIGNvbnN0IHsgcmV0dXJu IGNvbnRlbnRfY29uc3VtZWRfOyB9CistICAgIHZvaWQgU2V0Q29uc3VtZWQoKSB7IGNvbnRlbnRf Y29uc3VtZWRfID0gdHJ1ZTsgfQorLQorLSAgIHByaXZhdGU6CistICAgIGJvb2wgY29udGVudF9j b25zdW1lZF8gPSBmYWxzZTsKKy0gIH07CistCisgICBjb25zdCBNYWlsYm94IG1haWxib3hfOwor ICAgY29uc3Qgdml6OjpTaGFyZWRJbWFnZUZvcm1hdCBmb3JtYXRfOworICAgY29uc3QgZ2Z4OjpT aXplIHNpemVfOworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9j cHAvYmluZGluZ3MvbGliL211bHRpcGxleF9yb3V0ZXIuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9saWIvbXVsdGlwbGV4 X3JvdXRlci5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9wdWJsaWMvY3BwL2Jp bmRpbmdzL2xpYi9tdWx0aXBsZXhfcm91dGVyLmNjLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0x NSAyMzo0NjoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21v am8vcHVibGljL2NwcC9iaW5kaW5ncy9saWIvbXVsdGlwbGV4X3JvdXRlci5jYwkyMDI0LTA1LTE3 IDEyOjMzOjU4Ljc2MjY1MTUyNiArMDIwMAorQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIE11bHRp cGxleFJvdXRlcjo6RXhjbHVzaXZlU3luY1dhaXRGCisgICBEQ0hFQ0soIWV4Y2x1c2l2ZV9zeW5j X3dhaXRfKTsKKyAKKyAgIHNjb3BlZF9yZWZwdHI8TXVsdGlwbGV4Um91dGVyPiBrZWVwX2FsaXZl KHRoaXMpOworLSAgZXhjbHVzaXZlX3N5bmNfd2FpdF8uZW1wbGFjZSgpOworKyAgZXhjbHVzaXZl X3N5bmNfd2FpdF8gPSBFeGNsdXNpdmVTeW5jV2FpdEluZm97fTsKKyAgIGV4Y2x1c2l2ZV9zeW5j X3dhaXRfLT5pbnRlcmZhY2VfaWQgPSBpbnRlcmZhY2VfaWQ7CisgICBleGNsdXNpdmVfc3luY193 YWl0Xy0+cmVxdWVzdF9pZCA9IHJlcXVlc3RfaWQ7CisgICB3aGlsZSAoIWV4Y2x1c2l2ZV9zeW5j X3dhaXRfLT5maW5pc2hlZCkgeworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGly ZF9wYXJ0eS9ibGluay9jb21tb24vaW50ZXJlc3RfZ3JvdXAvYXVjdGlvbl9jb25maWdfbW9qb21f dHJhaXRzLmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9w YXJ0eS9ibGluay9jb21tb24vaW50ZXJlc3RfZ3JvdXAvYXVjdGlvbl9jb25maWdfbW9qb21fdHJh aXRzLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9jb21t b24vaW50ZXJlc3RfZ3JvdXAvYXVjdGlvbl9jb25maWdfbW9qb21fdHJhaXRzLmNjLnN5c3RlbS1s aWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0NjozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL2NvbW1vbi9pbnRlcmVzdF9ncm91cC9h dWN0aW9uX2NvbmZpZ19tb2pvbV90cmFpdHMuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43NjM2NTE1 NDcgKzAyMDAKK0BAIC0yMTgsOCArMjE4LDYgQEAgYm9vbCBTdHJ1Y3RUcmFpdHM8Ymxpbms6Om1v am9tOjpBdWN0aW9uQQorICAgICAgICFkYXRhLlJlYWRBbGxCdXllcnNQcmlvcml0eVNpZ25hbHMo Jm91dC0+YWxsX2J1eWVyc19wcmlvcml0eV9zaWduYWxzKSB8fAorICAgICAgICFkYXRhLlJlYWRB dWN0aW9uUmVwb3J0QnV5ZXJLZXlzKCZvdXQtPmF1Y3Rpb25fcmVwb3J0X2J1eWVyX2tleXMpIHx8 CisgICAgICAgIWRhdGEuUmVhZEF1Y3Rpb25SZXBvcnRCdXllcnMoJm91dC0+YXVjdGlvbl9yZXBv cnRfYnV5ZXJzKSB8fAorLSAgICAgICFkYXRhLlJlYWRBdWN0aW9uUmVwb3J0QnV5ZXJEZWJ1Z01v ZGVDb25maWcoCistICAgICAgICAgICZvdXQtPmF1Y3Rpb25fcmVwb3J0X2J1eWVyX2RlYnVnX21v ZGVfY29uZmlnKSB8fAorICAgICAgICFkYXRhLlJlYWRSZXF1aXJlZFNlbGxlckNhcGFiaWxpdGll cygKKyAgICAgICAgICAgJm91dC0+cmVxdWlyZWRfc2VsbGVyX2NhcGFiaWxpdGllcykgfHwKKyAg ICAgICAhZGF0YS5SZWFkUmVxdWVzdGVkU2l6ZSgmb3V0LT5yZXF1ZXN0ZWRfc2l6ZSkgfHwKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv Y29yZS9sb2FkZXIvaGlzdG9yeV9pdGVtLmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xvYWRlci9oaXN0b3J5 X2l0ZW0uY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2NvcmUvbG9hZGVyL2hpc3RvcnlfaXRlbS5jYy5zeXN0ZW0tbGlic3RkYysrCTIwMjQt MDUtMTUgMjM6NDY6NDEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xvYWRlci9oaXN0b3J5X2l0ZW0uY2MJ MjAyNC0wNS0xNyAxMjozMzo1OC43NjM2NTE1NDcgKzAyMDAKK0BAIC0xODIsMjYgKzE4MiwyNiBA QCB2b2lkIEhpc3RvcnlJdGVtOjpTZXRSZWZlcnJlclBvbGljeShuZXR3CisgCisgdm9pZCBIaXN0 b3J5SXRlbTo6U2V0VmlzdWFsVmlld3BvcnRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0 JiBvZmZzZXQpIHsKKyAgIGlmICghdmlld19zdGF0ZV8pCistICAgIHZpZXdfc3RhdGVfID0gc3Rk OjptYWtlX29wdGlvbmFsPFZpZXdTdGF0ZT4oKTsKKysgICAgdmlld19zdGF0ZV8gPSBibGluazo6 SGlzdG9yeUl0ZW06OlZpZXdTdGF0ZXt9OworICAgdmlld19zdGF0ZV8tPnZpc3VhbF92aWV3cG9y dF9zY3JvbGxfb2Zmc2V0XyA9IG9mZnNldDsKKyB9CisgCisgdm9pZCBIaXN0b3J5SXRlbTo6U2V0 U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYgb2Zmc2V0KSB7CisgICBpZiAoIXZpZXdf c3RhdGVfKQorLSAgICB2aWV3X3N0YXRlXyA9IHN0ZDo6bWFrZV9vcHRpb25hbDxWaWV3U3RhdGU+ KCk7CisrICAgIHZpZXdfc3RhdGVfID0gYmxpbms6Okhpc3RvcnlJdGVtOjpWaWV3U3RhdGV7fTsK KyAgIHZpZXdfc3RhdGVfLT5zY3JvbGxfb2Zmc2V0XyA9IG9mZnNldDsKKyB9CisgCisgdm9pZCBI aXN0b3J5SXRlbTo6U2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlX2ZhY3RvcikgeworICAg aWYgKCF2aWV3X3N0YXRlXykKKy0gICAgdmlld19zdGF0ZV8gPSBzdGQ6Om1ha2Vfb3B0aW9uYWw8 Vmlld1N0YXRlPigpOworKyAgICB2aWV3X3N0YXRlXyA9IGJsaW5rOjpIaXN0b3J5SXRlbTo6Vmll d1N0YXRle307CisgICB2aWV3X3N0YXRlXy0+cGFnZV9zY2FsZV9mYWN0b3JfID0gc2NhbGVfZmFj dG9yOworIH0KKyAKKyB2b2lkIEhpc3RvcnlJdGVtOjpTZXRTY3JvbGxBbmNob3JEYXRhKAorICAg ICBjb25zdCBTY3JvbGxBbmNob3JEYXRhJiBzY3JvbGxfYW5jaG9yX2RhdGEpIHsKKyAgIGlmICgh dmlld19zdGF0ZV8pCistICAgIHZpZXdfc3RhdGVfID0gc3RkOjptYWtlX29wdGlvbmFsPFZpZXdT dGF0ZT4oKTsKKysgICAgdmlld19zdGF0ZV8gPSBibGluazo6SGlzdG9yeUl0ZW06OlZpZXdTdGF0 ZXt9OworICAgdmlld19zdGF0ZV8tPnNjcm9sbF9hbmNob3JfZGF0YV8gPSBzY3JvbGxfYW5jaG9y X2RhdGE7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L2ZyYWdtZW50X2RhdGFfaXRlcmF0b3IuaC5zeXN0 ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvY29yZS9wYWludC9mcmFnbWVudF9kYXRhX2l0ZXJhdG9yLmgKKy0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvZnJhZ21l bnRfZGF0YV9pdGVyYXRvci5oLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0Njo0MS4w MDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvZnJhZ21lbnRfZGF0YV9pdGVyYXRvci5oCTIwMjQtMDUt MTcgMTI6MzM6NTguNzYzNjUxNTQ3ICswMjAwCitAQCAtMjIsNyArMjIsNyBAQCBjbGFzcyBGcmFn bWVudERhdGFJdGVyYXRvckJhc2UgeworIAorICBwdWJsaWM6CisgICBleHBsaWNpdCBGcmFnbWVu dERhdGFJdGVyYXRvckJhc2UoSGVhZCYgaGVhZCkgOiBmcmFnbWVudF9oZWFkXyhoZWFkKSB7fQor LSAgZXhwbGljaXQgRnJhZ21lbnREYXRhSXRlcmF0b3JCYXNlKG51bGxwdHJfdCkge30KKysgIGV4 cGxpY2l0IEZyYWdtZW50RGF0YUl0ZXJhdG9yQmFzZShzdGQ6Om51bGxwdHJfdCkge30KKyAKKyAg IERhdGEqIEdldEZyYWdtZW50RGF0YSgpIGNvbnN0IHsKKyAgICAgcmV0dXJuICFJc0RvbmUoKSA/ ICZmcmFnbWVudF9oZWFkXy5hdChpZHhfKSA6IG51bGxwdHI7CitkaWZmIC11cCBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWFfY29u dHJvbHMvZWxlbWVudHMvbWVkaWFfY29udHJvbF90aW1lbGluZV9lbGVtZW50LmNjLnN5c3RlbS1s aWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9tb2R1bGVzL21lZGlhX2NvbnRyb2xzL2VsZW1lbnRzL21lZGlhX2NvbnRyb2xfdGltZWxpbmVf ZWxlbWVudC5jYworLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvbW9kdWxlcy9tZWRpYV9jb250cm9scy9lbGVtZW50cy9tZWRpYV9jb250cm9sX3Rp bWVsaW5lX2VsZW1lbnQuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjQyLjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvbW9kdWxlcy9tZWRpYV9jb250cm9scy9lbGVtZW50cy9tZWRpYV9jb250cm9s X3RpbWVsaW5lX2VsZW1lbnQuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43NjQ2NTE1NjcgKzAyMDAK K0BAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OlVw ZGF0ZQorIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpTZXRQb3NpdGlvbihkb3Vi bGUgY3VycmVudF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sIHN1cHByZXNzX2FyaWEpIHsKKyAgIGlmIChpc19saXZlXyAmJiAhbGl2ZV9h bmNob3JfdGltZV8gJiYgY3VycmVudF90aW1lICE9IDApIHsKKy0gICAgbGl2ZV9hbmNob3JfdGlt ZV8uZW1wbGFjZSgpOworKyAgICBsaXZlX2FuY2hvcl90aW1lXyA9IExpdmVBbmNob3JUaW1le307 CisgICAgIGxpdmVfYW5jaG9yX3RpbWVfLT5jbG9ja190aW1lXyA9IGJhc2U6OlRpbWVUaWNrczo6 Tm93KCk7CisgICAgIGxpdmVfYW5jaG9yX3RpbWVfLT5tZWRpYV90aW1lXyA9IE1lZGlhRWxlbWVu dCgpLmN1cnJlbnRUaW1lKCk7CisgICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL3BhaW50L2dlb21l dHJ5X21hcHBlcl90cmFuc2Zvcm1fY2FjaGUuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNz L3BhaW50L2dlb21ldHJ5X21hcHBlcl90cmFuc2Zvcm1fY2FjaGUuY2MKKy0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNz L3BhaW50L2dlb21ldHJ5X21hcHBlcl90cmFuc2Zvcm1fY2FjaGUuY2Muc3lzdGVtLWxpYnN0ZGMr KwkyMDI0LTA1LTE1IDIzOjQ2OjQyLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvcGFp bnQvZ2VvbWV0cnlfbWFwcGVyX3RyYW5zZm9ybV9jYWNoZS5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4 Ljc2NDY1MTU2NyArMDIwMAorQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBHZW9tZXRyeU1hcHBlclRy YW5zZm9ybUNhY2hlOjpVcGRhdAorICAgICB0b18yZF90cmFuc2xhdGlvbl9yb290XyArPSB0cmFu c2xhdGlvbjsKKyAKKyAgICAgaWYgKHBhcmVudC5wbGFuZV9yb290X3RyYW5zZm9ybV8pIHsKKy0g ICAgICBwbGFuZV9yb290X3RyYW5zZm9ybV8uZW1wbGFjZSgpOworKyAgICAgIHBsYW5lX3Jvb3Rf dHJhbnNmb3JtXyA9IFBsYW5lUm9vdFRyYW5zZm9ybXt9OworICAgICAgIHBsYW5lX3Jvb3RfdHJh bnNmb3JtXy0+cGxhbmVfcm9vdCA9IHBhcmVudC5wbGFuZV9yb290KCk7CisgICAgICAgcGxhbmVf cm9vdF90cmFuc2Zvcm1fLT50b19wbGFuZV9yb290ID0gcGFyZW50LnRvX3BsYW5lX3Jvb3QoKTsK KyAgICAgICBwbGFuZV9yb290X3RyYW5zZm9ybV8tPnRvX3BsYW5lX3Jvb3QuVHJhbnNsYXRlKHRy YW5zbGF0aW9uLngoKSwKK0BAIC05OCw3ICs5OCw3IEBAIHZvaWQgR2VvbWV0cnlNYXBwZXJUcmFu c2Zvcm1DYWNoZTo6VXBkYXQKKyAgICAgICAvLyBhcyB0aGUgMmQgdHJhbnNsYXRpb24gcm9vdC4K KyAgICAgICBwbGFuZV9yb290X3RyYW5zZm9ybV8gPSBzdGQ6Om51bGxvcHQ7CisgICAgIH0gZWxz ZSB7CistICAgICAgcGxhbmVfcm9vdF90cmFuc2Zvcm1fLmVtcGxhY2UoKTsKKysgICAgICBwbGFu ZV9yb290X3RyYW5zZm9ybV8gPSBQbGFuZVJvb3RUcmFuc2Zvcm17fTsKKyAgICAgICBwbGFuZV9y b290X3RyYW5zZm9ybV8tPnBsYW5lX3Jvb3QgPSBwYXJlbnQucGxhbmVfcm9vdCgpOworICAgICAg IHBsYW5lX3Jvb3RfdHJhbnNmb3JtXy0+dG9fcGxhbmVfcm9vdC5NYWtlSWRlbnRpdHkoKTsKKyAg ICAgICBwYXJlbnQuQXBwbHlUb1BsYW5lUm9vdChwbGFuZV9yb290X3RyYW5zZm9ybV8tPnRvX3Bs YW5lX3Jvb3QpOworQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEdlb21ldHJ5TWFwcGVyVHJhbnNm b3JtQ2FjaGU6OlVwZGF0CisgICBwYXJlbnRfbm9kZS0+VXBkYXRlU2NyZWVuVHJhbnNmb3JtKCk7 CisgICBjb25zdCBhdXRvJiBwYXJlbnQgPSBwYXJlbnRfbm9kZS0+R2V0VHJhbnNmb3JtQ2FjaGUo KTsKKyAKKy0gIHNjcmVlbl90cmFuc2Zvcm1fLmVtcGxhY2UoKTsKKysgIHNjcmVlbl90cmFuc2Zv cm1fID0gU2NyZWVuVHJhbnNmb3Jte307CisgICBwYXJlbnQuQXBwbHlUb1NjcmVlbihzY3JlZW5f dHJhbnNmb3JtXy0+dG9fc2NyZWVuKTsKKyAgIGlmIChub2RlLkZsYXR0ZW5zSW5oZXJpdGVkVHJh bnNmb3JtKCkpCisgICAgIHNjcmVlbl90cmFuc2Zvcm1fLT50b19zY3JlZW4uRmxhdHRlbigpOwor ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxl cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9sb3NzX2Jhc2VkX2J3ZV92Mi5jYy5zeXN0 ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvd2VicnRjL21v ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbG9zc19iYXNlZF9id2VfdjIuY2MK Ky0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Nv bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2xvc3NfYmFzZWRfYndlX3YyLmNjLnN5c3RlbS1s aWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0ODowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u dHJvbGxlci9nb29nX2NjL2xvc3NfYmFzZWRfYndlX3YyLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTgu NzY1NjUxNTg4ICswMjAwCitAQCAtNTQ5LDcgKzU0OSw3IEBAIGFic2w6Om9wdGlvbmFsPExvc3NC YXNlZEJ3ZVYyOjpDb25maWc+IEwKKyAgIGlmICghZW5hYmxlZC5HZXQoKSkgeworICAgICByZXR1 cm4gY29uZmlnOworICAgfQorLSAgY29uZmlnLmVtcGxhY2UoKTsKKysgIGNvbmZpZyA9IENvbmZp Z3t9OworICAgY29uZmlnLT5iYW5kd2lkdGhfcmFtcHVwX3VwcGVyX2JvdW5kX2ZhY3RvciA9Cisg ICAgICAgYmFuZHdpZHRoX3JhbXB1cF91cHBlcl9ib3VuZF9mYWN0b3IuR2V0KCk7CisgICBjb25m aWctPmJhbmR3aWR0aF9yYW1wdXBfdXBwZXJfYm91bmRfZmFjdG9yX2luX2hvbGQgPQorZGlmZiAt dXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3JhbmRy LmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngveC9nZW5l cmF0ZWRfcHJvdG9zL3JhbmRyLmNjCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngv eC9nZW5lcmF0ZWRfcHJvdG9zL3JhbmRyLmNjLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAy Mzo0NzozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2dm eC94L2dlbmVyYXRlZF9wcm90b3MvcmFuZHIuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43NjU2NTE1 ODggKzAyMDAKK0BAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBSZWFkRXZlbnQ8UmFuZFI6Ok5vdGlm eUV2ZW50PihSYW5kUgorICAgLy8gZGF0YQorICAgYXV0byBkYXRhX2V4cHIgPSBzdWJDb2RlOwor ICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIFJhbmRSOjpOb3RpZnk6OkNydGNDaGFuZ2UpKSB7Cist ICAgIGRhdGEuY2MuZW1wbGFjZSgpOworKyAgICBkYXRhLmNjID0gUmFuZFI6Ok5vdGlmeUV2ZW50 OjpDY3t9OworICAgICBhdXRvJiB0aW1lc3RhbXAgPSAoKmRhdGEuY2MpLnRpbWVzdGFtcDsKKyAg ICAgYXV0byYgd2luZG93ID0gKCpkYXRhLmNjKS53aW5kb3c7CisgICAgIGF1dG8mIGNydGMgPSAo KmRhdGEuY2MpLmNydGM7CitAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVhZEV2ZW50PFJhbmRS OjpOb3RpZnlFdmVudD4oUmFuZFIKKyAgICAgUmVhZCgmaGVpZ2h0LCAmYnVmKTsKKyAgIH0KKyAg IGlmIChDYXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpPdXRwdXRDaGFuZ2UpKSB7Cist ICAgIGRhdGEub2MuZW1wbGFjZSgpOworKyAgICBkYXRhLm9jID0gUmFuZFI6Ok5vdGlmeUV2ZW50 OjpPY3t9OworICAgICBhdXRvJiB0aW1lc3RhbXAgPSAoKmRhdGEub2MpLnRpbWVzdGFtcDsKKyAg ICAgYXV0byYgY29uZmlnX3RpbWVzdGFtcCA9ICgqZGF0YS5vYykuY29uZmlnX3RpbWVzdGFtcDsK KyAgICAgYXV0byYgd2luZG93ID0gKCpkYXRhLm9jKS53aW5kb3c7CitAQCAtMzk0LDcgKzM5NCw3 IEBAIHZvaWQgUmVhZEV2ZW50PFJhbmRSOjpOb3RpZnlFdmVudD4oUmFuZFIKKyAgICAgc3VicGl4 ZWxfb3JkZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXI6OlN1YlBpeGVsPih0bXA2KTsKKyAgIH0KKyAg IGlmIChDYXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpPdXRwdXRQcm9wZXJ0eSkpIHsK Ky0gICAgZGF0YS5vcC5lbXBsYWNlKCk7CisrICAgIGRhdGEub3AgPSBSYW5kUjo6Tm90aWZ5RXZl bnQ6Ok9we307CisgICAgIGF1dG8mIHdpbmRvdyA9ICgqZGF0YS5vcCkud2luZG93OworICAgICBh dXRvJiBvdXRwdXQgPSAoKmRhdGEub3ApLm91dHB1dDsKKyAgICAgYXV0byYgYXRvbSA9ICgqZGF0 YS5vcCkuYXRvbTsKK0BAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBSZWFkRXZlbnQ8UmFuZFI6Ok5v dGlmeUV2ZW50PihSYW5kUgorICAgICBQYWQoJmJ1ZiwgMTEpOworICAgfQorICAgaWYgKENhc2VF cShkYXRhX2V4cHIsIFJhbmRSOjpOb3RpZnk6OlByb3ZpZGVyQ2hhbmdlKSkgeworLSAgICBkYXRh LnBjLmVtcGxhY2UoKTsKKysgICAgZGF0YS5wYyA9IFJhbmRSOjpOb3RpZnlFdmVudDo6UGN7fTsK KyAgICAgYXV0byYgdGltZXN0YW1wID0gKCpkYXRhLnBjKS50aW1lc3RhbXA7CisgICAgIGF1dG8m IHdpbmRvdyA9ICgqZGF0YS5wYykud2luZG93OworICAgICBhdXRvJiBwcm92aWRlciA9ICgqZGF0 YS5wYykucHJvdmlkZXI7CitAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgUmVhZEV2ZW50PFJhbmRS OjpOb3RpZnlFdmVudD4oUmFuZFIKKyAgICAgUGFkKCZidWYsIDE2KTsKKyAgIH0KKyAgIGlmIChD YXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpQcm92aWRlclByb3BlcnR5KSkgeworLSAg ICBkYXRhLnBwLmVtcGxhY2UoKTsKKysgICAgZGF0YS5wcCA9IFJhbmRSOjpOb3RpZnlFdmVudDo6 UHB7fTsKKyAgICAgYXV0byYgd2luZG93ID0gKCpkYXRhLnBwKS53aW5kb3c7CisgICAgIGF1dG8m IHByb3ZpZGVyID0gKCpkYXRhLnBwKS5wcm92aWRlcjsKKyAgICAgYXV0byYgYXRvbSA9ICgqZGF0 YS5wcCkuYXRvbTsKK0BAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBSZWFkRXZlbnQ8UmFuZFI6Ok5v dGlmeUV2ZW50PihSYW5kUgorICAgICBQYWQoJmJ1ZiwgMTEpOworICAgfQorICAgaWYgKENhc2VF cShkYXRhX2V4cHIsIFJhbmRSOjpOb3RpZnk6OlJlc291cmNlQ2hhbmdlKSkgeworLSAgICBkYXRh LnJjLmVtcGxhY2UoKTsKKysgICAgZGF0YS5yYyA9IFJhbmRSOjpOb3RpZnlFdmVudDo6UmN7fTsK KyAgICAgYXV0byYgdGltZXN0YW1wID0gKCpkYXRhLnJjKS50aW1lc3RhbXA7CisgICAgIGF1dG8m IHdpbmRvdyA9ICgqZGF0YS5yYykud2luZG93OworIAorQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lk IFJlYWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZlbnQ+KFJhbmRSCisgICAgIFBhZCgmYnVmLCAyMCk7 CisgICB9CisgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgUmFuZFI6Ok5vdGlmeTo6TGVhc2UpKSB7 CistICAgIGRhdGEubGMuZW1wbGFjZSgpOworKyAgICBkYXRhLmxjID0gUmFuZFI6Ok5vdGlmeUV2 ZW50OjpMY3t9OworICAgICBhdXRvJiB0aW1lc3RhbXAgPSAoKmRhdGEubGMpLnRpbWVzdGFtcDsK KyAgICAgYXV0byYgd2luZG93ID0gKCpkYXRhLmxjKS53aW5kb3c7CisgICAgIGF1dG8mIGxlYXNl ID0gKCpkYXRhLmxjKS5sZWFzZTsKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkv Z2Z4L3gvZ2VuZXJhdGVkX3Byb3Rvcy94aW5wdXQuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MveGlucHV0LmNjCistLS0g Y2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hpbnB1dC5j Yy5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMTUgMjM6NDc6MzMuMDAwMDAwMDAwICswMjAwCisr KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hpbnB1 dC5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4Ljc2NzY1MTYyOSArMDIwMAorQEAgLTU2Nyw3ICs1Njcs NyBAQCB2b2lkIFJlYWRFdmVudDxJbnB1dDo6RGV2aWNlQ2hhbmdlZEV2ZW50CisgICAgICAgLy8g ZGF0YQorICAgICAgIGF1dG8gZGF0YV9leHByID0gdHlwZTsKKyAgICAgICBpZiAoQ2FzZUVxKGRh dGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6S2V5KSkgeworLSAgICAgICAgZGF0YS5r ZXkuZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS5rZXkgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6Oktl eXt9OworICAgICAgICAgdWludDE2X3QgbnVtX2tleXN7fTsKKyAgICAgICAgIGF1dG8mIGtleXMg PSAoKmRhdGEua2V5KS5rZXlzOworICAgICAgICAgc2l6ZV90IGtleXNfbGVuID0ga2V5cy5zaXpl KCk7CitAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgUmVhZEV2ZW50PElucHV0OjpEZXZpY2VDaGFu Z2VkRXZlbnQKKyAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgaWYgKENhc2VFcShkYXRhX2V4 cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OkJ1dHRvbikpIHsKKy0gICAgICAgIGRhdGEuYnV0 dG9uLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEuYnV0dG9uID0gSW5wdXQ6OkRldmljZUNsYXNz OjpCdXR0b257fTsKKyAgICAgICAgIHVpbnQxNl90IG51bV9idXR0b25ze307CisgICAgICAgICBh dXRvJiBzdGF0ZSA9ICgqZGF0YS5idXR0b24pLnN0YXRlOworICAgICAgICAgc2l6ZV90IHN0YXRl X2xlbiA9IHN0YXRlLnNpemUoKTsKK0BAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBSZWFkRXZlbnQ8 SW5wdXQ6OkRldmljZUNoYW5nZWRFdmVudAorICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICBp ZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6VmFsdWF0b3IpKSB7 CistICAgICAgICBkYXRhLnZhbHVhdG9yLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEudmFsdWF0 b3IgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6OlZhbHVhdG9ye307CisgICAgICAgICBhdXRvJiBudW1i ZXIgPSAoKmRhdGEudmFsdWF0b3IpLm51bWJlcjsKKyAgICAgICAgIGF1dG8mIGxhYmVsID0gKCpk YXRhLnZhbHVhdG9yKS5sYWJlbDsKKyAgICAgICAgIGF1dG8mIG1pbiA9ICgqZGF0YS52YWx1YXRv cikubWluOworQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIFJlYWRFdmVudDxJbnB1dDo6RGV2aWNl Q2hhbmdlZEV2ZW50CisgICAgICAgICBQYWQoJmJ1ZiwgMyk7CisgICAgICAgfQorICAgICAgIGlm IChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpTY3JvbGwpKSB7Cist ICAgICAgICBkYXRhLnNjcm9sbC5lbXBsYWNlKCk7CisrICAgICAgICBkYXRhLnNjcm9sbCA9IElu cHV0OjpEZXZpY2VDbGFzczo6U2Nyb2xse307CisgICAgICAgICBhdXRvJiBudW1iZXIgPSAoKmRh dGEuc2Nyb2xsKS5udW1iZXI7CisgICAgICAgICBhdXRvJiBzY3JvbGxfdHlwZSA9ICgqZGF0YS5z Y3JvbGwpLnNjcm9sbF90eXBlOworICAgICAgICAgYXV0byYgZmxhZ3MgPSAoKmRhdGEuc2Nyb2xs KS5mbGFnczsKK0BAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBSZWFkRXZlbnQ8SW5wdXQ6OkRldmlj ZUNoYW5nZWRFdmVudAorICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICBpZiAoQ2FzZUVxKGRh dGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6VG91Y2gpKSB7CistICAgICAgICBkYXRh LnRvdWNoLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEudG91Y2ggPSBJbnB1dDo6RGV2aWNlQ2xh c3M6OlRvdWNoe307CisgICAgICAgICBhdXRvJiBtb2RlID0gKCpkYXRhLnRvdWNoKS5tb2RlOwor ICAgICAgICAgYXV0byYgbnVtX3RvdWNoZXMgPSAoKmRhdGEudG91Y2gpLm51bV90b3VjaGVzOwor IAorQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIFJlYWRFdmVudDxJbnB1dDo6RGV2aWNlQ2hhbmdl ZEV2ZW50CisgICAgICAgICBSZWFkKCZudW1fdG91Y2hlcywgJmJ1Zik7CisgICAgICAgfQorICAg ICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpHZXN0dXJl KSkgeworLSAgICAgICAgZGF0YS5nZXN0dXJlLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEuZ2Vz dHVyZSA9IElucHV0OjpEZXZpY2VDbGFzczo6R2VzdHVyZXt9OworICAgICAgICAgYXV0byYgbnVt X3RvdWNoZXMgPSAoKmRhdGEuZ2VzdHVyZSkubnVtX3RvdWNoZXM7CisgCisgICAgICAgICAvLyBu dW1fdG91Y2hlcworQEAgLTIyMDYsNyArMjIwNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6 TGlzdElucHV0RGV2aWNlc1IKKyAgICAgICAvLyBpbmZvCisgICAgICAgYXV0byBpbmZvX2V4cHIg PSBjbGFzc19pZDsKKyAgICAgICBpZiAoQ2FzZUVxKGluZm9fZXhwciwgSW5wdXQ6OklucHV0Q2xh c3M6OktleSkpIHsKKy0gICAgICAgIGluZm8ua2V5LmVtcGxhY2UoKTsKKysgICAgICAgIGluZm8u a2V5ID0gSW5wdXQ6OklucHV0SW5mbzo6S2V5e307CisgICAgICAgICBhdXRvJiBtaW5fa2V5Y29k ZSA9ICgqaW5mby5rZXkpLm1pbl9rZXljb2RlOworICAgICAgICAgYXV0byYgbWF4X2tleWNvZGUg PSAoKmluZm8ua2V5KS5tYXhfa2V5Y29kZTsKKyAgICAgICAgIGF1dG8mIG51bV9rZXlzID0gKCpp bmZvLmtleSkubnVtX2tleXM7CitAQCAtMjIyNCwxNCArMjIyNCwxNCBAQCBzdGQ6OnVuaXF1ZV9w dHI8SW5wdXQ6Okxpc3RJbnB1dERldmljZXNSCisgICAgICAgICBQYWQoJmJ1ZiwgMik7CisgICAg ICAgfQorICAgICAgIGlmIChDYXNlRXEoaW5mb19leHByLCBJbnB1dDo6SW5wdXRDbGFzczo6QnV0 dG9uKSkgeworLSAgICAgICAgaW5mby5idXR0b24uZW1wbGFjZSgpOworKyAgICAgICAgaW5mby5i dXR0b24gPSBJbnB1dDo6SW5wdXRJbmZvOjpCdXR0b257fTsKKyAgICAgICAgIGF1dG8mIG51bV9i dXR0b25zID0gKCppbmZvLmJ1dHRvbikubnVtX2J1dHRvbnM7CisgCisgICAgICAgICAvLyBudW1f YnV0dG9ucworICAgICAgICAgUmVhZCgmbnVtX2J1dHRvbnMsICZidWYpOworICAgICAgIH0KKyAg ICAgICBpZiAoQ2FzZUVxKGluZm9fZXhwciwgSW5wdXQ6OklucHV0Q2xhc3M6OlZhbHVhdG9yKSkg eworLSAgICAgICAgaW5mby52YWx1YXRvci5lbXBsYWNlKCk7CisrICAgICAgICBpbmZvLnZhbHVh dG9yID0gSW5wdXQ6OklucHV0SW5mbzo6VmFsdWF0b3J7fTsKKyAgICAgICAgIHVpbnQ4X3QgYXhl c19sZW57fTsKKyAgICAgICAgIGF1dG8mIG1vZGUgPSAoKmluZm8udmFsdWF0b3IpLm1vZGU7Cisg ICAgICAgICBhdXRvJiBtb3Rpb25fc2l6ZSA9ICgqaW5mby52YWx1YXRvcikubW90aW9uX3NpemU7 CitAQCAtMzg0NCw3ICszODQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXRGZWVkYmFj a0NvbnRybworICAgICAgIC8vIGRhdGEKKyAgICAgICBhdXRvIGRhdGFfZXhwciA9IGNsYXNzX2lk OworICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RmVlZGJhY2tDbGFzczo6S2V5 Ym9hcmQpKSB7CistICAgICAgICBkYXRhLmtleWJvYXJkLmVtcGxhY2UoKTsKKysgICAgICAgIGRh dGEua2V5Ym9hcmQgPSB4MTE6OklucHV0OjpGZWVkYmFja1N0YXRlOjpLZXlib2FyZHt9OworICAg ICAgICAgYXV0byYgcGl0Y2ggPSAoKmRhdGEua2V5Ym9hcmQpLnBpdGNoOworICAgICAgICAgYXV0 byYgZHVyYXRpb24gPSAoKmRhdGEua2V5Ym9hcmQpLmR1cmF0aW9uOworICAgICAgICAgYXV0byYg bGVkX21hc2sgPSAoKmRhdGEua2V5Ym9hcmQpLmxlZF9tYXNrOworQEAgLTM4ODYsNyArMzg4Niw3 IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RmVlZGJhY2tDb250cm8KKyAgICAgICAgIH0K KyAgICAgICB9CisgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpGZWVkYmFja0Ns YXNzOjpQb2ludGVyKSkgeworLSAgICAgICAgZGF0YS5wb2ludGVyLmVtcGxhY2UoKTsKKysgICAg ICAgIGRhdGEucG9pbnRlciA9IHgxMTo6SW5wdXQ6OkZlZWRiYWNrU3RhdGU6OlBvaW50ZXJ7fTsK KyAgICAgICAgIGF1dG8mIGFjY2VsX251bSA9ICgqZGF0YS5wb2ludGVyKS5hY2NlbF9udW07Cisg ICAgICAgICBhdXRvJiBhY2NlbF9kZW5vbSA9ICgqZGF0YS5wb2ludGVyKS5hY2NlbF9kZW5vbTsK KyAgICAgICAgIGF1dG8mIHRocmVzaG9sZCA9ICgqZGF0YS5wb2ludGVyKS50aHJlc2hvbGQ7CitA QCAtMzkwNCw3ICszOTA0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXRGZWVkYmFja0Nv bnRybworICAgICAgICAgUmVhZCgmdGhyZXNob2xkLCAmYnVmKTsKKyAgICAgICB9CisgICAgICAg aWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpGZWVkYmFja0NsYXNzOjpTdHJpbmcpKSB7Cist ICAgICAgICBkYXRhLnN0cmluZy5lbXBsYWNlKCk7CisrICAgICAgICBkYXRhLnN0cmluZyA9IHgx MTo6SW5wdXQ6OkZlZWRiYWNrU3RhdGU6OlN0cmluZ3t9OworICAgICAgICAgYXV0byYgbWF4X3N5 bWJvbHMgPSAoKmRhdGEuc3RyaW5nKS5tYXhfc3ltYm9sczsKKyAgICAgICAgIHVpbnQxNl90IG51 bV9rZXlzeW1ze307CisgICAgICAgICBhdXRvJiBrZXlzeW1zID0gKCpkYXRhLnN0cmluZykua2V5 c3ltczsKK0BAIC0zOTI0LDcgKzM5MjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldEZl ZWRiYWNrQ29udHJvCisgICAgICAgICB9CisgICAgICAgfQorICAgICAgIGlmIChDYXNlRXEoZGF0 YV9leHByLCBJbnB1dDo6RmVlZGJhY2tDbGFzczo6SW50ZWdlcikpIHsKKy0gICAgICAgIGRhdGEu aW50ZWdlci5lbXBsYWNlKCk7CisrICAgICAgICBkYXRhLmludGVnZXIgPSB4MTE6OklucHV0OjpG ZWVkYmFja1N0YXRlOjpJbnRlZ2Vye307CisgICAgICAgICBhdXRvJiByZXNvbHV0aW9uID0gKCpk YXRhLmludGVnZXIpLnJlc29sdXRpb247CisgICAgICAgICBhdXRvJiBtaW5fdmFsdWUgPSAoKmRh dGEuaW50ZWdlcikubWluX3ZhbHVlOworICAgICAgICAgYXV0byYgbWF4X3ZhbHVlID0gKCpkYXRh LmludGVnZXIpLm1heF92YWx1ZTsKK0BAIC0zOTM5LDcgKzM5MzksNyBAQCBzdGQ6OnVuaXF1ZV9w dHI8SW5wdXQ6OkdldEZlZWRiYWNrQ29udHJvCisgICAgICAgICBSZWFkKCZtYXhfdmFsdWUsICZi dWYpOworICAgICAgIH0KKyAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkZlZWRi YWNrQ2xhc3M6OkxlZCkpIHsKKy0gICAgICAgIGRhdGEubGVkLmVtcGxhY2UoKTsKKysgICAgICAg IGRhdGEubGVkID0geDExOjpJbnB1dDo6RmVlZGJhY2tTdGF0ZTo6TGVke307CisgICAgICAgICBh dXRvJiBsZWRfbWFzayA9ICgqZGF0YS5sZWQpLmxlZF9tYXNrOworICAgICAgICAgYXV0byYgbGVk X3ZhbHVlcyA9ICgqZGF0YS5sZWQpLmxlZF92YWx1ZXM7CisgCitAQCAtMzk1MCw3ICszOTUwLDcg QEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXRGZWVkYmFja0NvbnRybworICAgICAgICAgUmVh ZCgmbGVkX3ZhbHVlcywgJmJ1Zik7CisgICAgICAgfQorICAgICAgIGlmIChDYXNlRXEoZGF0YV9l eHByLCBJbnB1dDo6RmVlZGJhY2tDbGFzczo6QmVsbCkpIHsKKy0gICAgICAgIGRhdGEuYmVsbC5l bXBsYWNlKCk7CisrICAgICAgICBkYXRhLmJlbGwgPSB4MTE6OklucHV0OjpGZWVkYmFja1N0YXRl OjpCZWxse307CisgICAgICAgICBhdXRvJiBwZXJjZW50ID0gKCpkYXRhLmJlbGwpLnBlcmNlbnQ7 CisgICAgICAgICBhdXRvJiBwaXRjaCA9ICgqZGF0YS5iZWxsKS5waXRjaDsKKyAgICAgICAgIGF1 dG8mIGR1cmF0aW9uID0gKCpkYXRhLmJlbGwpLmR1cmF0aW9uOworQEAgLTQ3NjgsNyArNDc2OCw3 IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6UXVlcnlEZXZpY2VTdGF0ZVIKKyAgICAgICAvLyBk YXRhCisgICAgICAgYXV0byBkYXRhX2V4cHIgPSBjbGFzc19pZDsKKyAgICAgICBpZiAoQ2FzZUVx KGRhdGFfZXhwciwgSW5wdXQ6OklucHV0Q2xhc3M6OktleSkpIHsKKy0gICAgICAgIGRhdGEua2V5 LmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEua2V5ID0geDExOjpJbnB1dDo6SW5wdXRTdGF0ZTo6 S2V5e307CisgICAgICAgICBhdXRvJiBudW1fa2V5cyA9ICgqZGF0YS5rZXkpLm51bV9rZXlzOwor ICAgICAgICAgYXV0byYga2V5cyA9ICgqZGF0YS5rZXkpLmtleXM7CisgICAgICAgICBzaXplX3Qg a2V5c19sZW4gPSBrZXlzLnNpemUoKTsKK0BAIC00Nzg2LDcgKzQ3ODYsNyBAQCBzdGQ6OnVuaXF1 ZV9wdHI8SW5wdXQ6OlF1ZXJ5RGV2aWNlU3RhdGVSCisgICAgICAgICB9CisgICAgICAgfQorICAg ICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6SW5wdXRDbGFzczo6QnV0dG9uKSkgewor LSAgICAgICAgZGF0YS5idXR0b24uZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS5idXR0b24gPSB4 MTE6OklucHV0OjpJbnB1dFN0YXRlOjpCdXR0b257fTsKKyAgICAgICAgIGF1dG8mIG51bV9idXR0 b25zID0gKCpkYXRhLmJ1dHRvbikubnVtX2J1dHRvbnM7CisgICAgICAgICBhdXRvJiBidXR0b25z ID0gKCpkYXRhLmJ1dHRvbikuYnV0dG9uczsKKyAgICAgICAgIHNpemVfdCBidXR0b25zX2xlbiA9 IGJ1dHRvbnMuc2l6ZSgpOworQEAgLTQ4MDQsNyArNDgwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ bnB1dDo6UXVlcnlEZXZpY2VTdGF0ZVIKKyAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgaWYg KENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpJbnB1dENsYXNzOjpWYWx1YXRvcikpIHsKKy0gICAg ICAgIGRhdGEudmFsdWF0b3IuZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS52YWx1YXRvciA9IHgx MTo6SW5wdXQ6OklucHV0U3RhdGU6OlZhbHVhdG9ye307CisgICAgICAgICB1aW50OF90IG51bV92 YWx1YXRvcnN7fTsKKyAgICAgICAgIGF1dG8mIG1vZGUgPSAoKmRhdGEudmFsdWF0b3IpLm1vZGU7 CisgICAgICAgICBhdXRvJiB2YWx1YXRvcnMgPSAoKmRhdGEudmFsdWF0b3IpLnZhbHVhdG9yczsK K0BAIC01MDc1LDcgKzUwNzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldERldmljZUNv bnRyb2xSCisgICAgIC8vIGRhdGEKKyAgICAgYXV0byBkYXRhX2V4cHIgPSBjb250cm9sX2lkOwor ICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNvbnRyb2w6OnJlc29sdXRp b24pKSB7CistICAgICAgZGF0YS5yZXNvbHV0aW9uLmVtcGxhY2UoKTsKKysgICAgICBkYXRhLnJl c29sdXRpb24gPSB4MTE6OklucHV0OjpEZXZpY2VTdGF0ZTo6UmVzb2x1dGlvbnt9OworICAgICAg IHVpbnQzMl90IG51bV92YWx1YXRvcnN7fTsKKyAgICAgICBhdXRvJiByZXNvbHV0aW9uX3ZhbHVl cyA9ICgqZGF0YS5yZXNvbHV0aW9uKS5yZXNvbHV0aW9uX3ZhbHVlczsKKyAgICAgICBzaXplX3Qg cmVzb2x1dGlvbl92YWx1ZXNfbGVuID0gcmVzb2x1dGlvbl92YWx1ZXMuc2l6ZSgpOworQEAgLTUx MDksNyArNTEwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RGV2aWNlQ29udHJvbFIK KyAgICAgICB9CisgICAgIH0KKyAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZp Y2VDb250cm9sOjphYnNfY2FsaWIpKSB7CistICAgICAgZGF0YS5hYnNfY2FsaWIuZW1wbGFjZSgp OworKyAgICAgIGRhdGEuYWJzX2NhbGliID0geDExOjpJbnB1dDo6RGV2aWNlU3RhdGU6OkFic0Nh bGlie307CisgICAgICAgYXV0byYgbWluX3ggPSAoKmRhdGEuYWJzX2NhbGliKS5taW5feDsKKyAg ICAgICBhdXRvJiBtYXhfeCA9ICgqZGF0YS5hYnNfY2FsaWIpLm1heF94OworICAgICAgIGF1dG8m IG1pbl95ID0gKCpkYXRhLmFic19jYWxpYikubWluX3k7CitAQCAtNTE0NCw3ICs1MTQ0LDcgQEAg c3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXREZXZpY2VDb250cm9sUgorICAgICAgIFJlYWQoJmJ1 dHRvbl90aHJlc2hvbGQsICZidWYpOworICAgICB9CisgICAgIGlmIChDYXNlRXEoZGF0YV9leHBy LCBJbnB1dDo6RGV2aWNlQ29udHJvbDo6Y29yZSkpIHsKKy0gICAgICBkYXRhLmNvcmUuZW1wbGFj ZSgpOworKyAgICAgIGRhdGEuY29yZSA9IHgxMTo6SW5wdXQ6OkRldmljZVN0YXRlOjpDb3Jle307 CisgICAgICAgYXV0byYgc3RhdHVzID0gKCpkYXRhLmNvcmUpLnN0YXR1czsKKyAgICAgICBhdXRv JiBpc2NvcmUgPSAoKmRhdGEuY29yZSkuaXNjb3JlOworIAorQEAgLTUxNTgsNyArNTE1OCw3IEBA IHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RGV2aWNlQ29udHJvbFIKKyAgICAgICBQYWQoJmJ1 ZiwgMik7CisgICAgIH0KKyAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VD b250cm9sOjplbmFibGUpKSB7CistICAgICAgZGF0YS5lbmFibGUuZW1wbGFjZSgpOworKyAgICAg IGRhdGEuZW5hYmxlID0geDExOjpJbnB1dDo6RGV2aWNlU3RhdGU6OkVuYWJsZXt9OworICAgICAg IGF1dG8mIGVuYWJsZSA9ICgqZGF0YS5lbmFibGUpLmVuYWJsZTsKKyAKKyAgICAgICAvLyBlbmFi bGUKK0BAIC01MTY4LDcgKzUxNjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldERldmlj ZUNvbnRyb2xSCisgICAgICAgUGFkKCZidWYsIDMpOworICAgICB9CisgICAgIGlmIChDYXNlRXEo ZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ29udHJvbDo6YWJzX2FyZWEpKSB7CistICAgICAgZGF0 YS5hYnNfYXJlYS5lbXBsYWNlKCk7CisrICAgICAgZGF0YS5hYnNfYXJlYSA9IHgxMTo6SW5wdXQ6 OkRldmljZVN0YXRlOjpBYnNBcmVhe307CisgICAgICAgYXV0byYgb2Zmc2V0X3ggPSAoKmRhdGEu YWJzX2FyZWEpLm9mZnNldF94OworICAgICAgIGF1dG8mIG9mZnNldF95ID0gKCpkYXRhLmFic19h cmVhKS5vZmZzZXRfeTsKKyAgICAgICBhdXRvJiB3aWR0aCA9ICgqZGF0YS5hYnNfYXJlYSkud2lk dGg7CitAQCAtNjY1OSw3ICs2NjU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpYSVF1ZXJ5 RGV2aWNlUmVwbAorICAgICAgICAgICAvLyBkYXRhCisgICAgICAgICAgIGF1dG8gZGF0YV9leHBy ID0gdHlwZTsKKyAgICAgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VD bGFzc1R5cGU6OktleSkpIHsKKy0gICAgICAgICAgICBkYXRhLmtleS5lbXBsYWNlKCk7CisrICAg ICAgICAgICAgZGF0YS5rZXkgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6OktleXt9OworICAgICAgICAg ICAgIHVpbnQxNl90IG51bV9rZXlze307CisgICAgICAgICAgICAgYXV0byYga2V5cyA9ICgqZGF0 YS5rZXkpLmtleXM7CisgICAgICAgICAgICAgc2l6ZV90IGtleXNfbGVuID0ga2V5cy5zaXplKCk7 CitAQCAtNjY3NSw3ICs2Njc1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpYSVF1ZXJ5RGV2 aWNlUmVwbAorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQorICAgICAgICAgICBpZiAoQ2Fz ZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6QnV0dG9uKSkgeworLSAgICAg ICAgICAgIGRhdGEuYnV0dG9uLmVtcGxhY2UoKTsKKysgICAgICAgICAgICBkYXRhLmJ1dHRvbiA9 IElucHV0OjpEZXZpY2VDbGFzczo6QnV0dG9ue307CisgICAgICAgICAgICAgdWludDE2X3QgbnVt X2J1dHRvbnN7fTsKKyAgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9ICgqZGF0YS5idXR0b24pLnN0 YXRlOworICAgICAgICAgICAgIHNpemVfdCBzdGF0ZV9sZW4gPSBzdGF0ZS5zaXplKCk7CitAQCAt NjcwMCw3ICs2NzAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpYSVF1ZXJ5RGV2aWNlUmVw bAorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQorICAgICAgICAgICBpZiAoQ2FzZUVxKGRh dGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6VmFsdWF0b3IpKSB7CistICAgICAgICAg ICAgZGF0YS52YWx1YXRvci5lbXBsYWNlKCk7CisrICAgICAgICAgICAgZGF0YS52YWx1YXRvciA9 IElucHV0OjpEZXZpY2VDbGFzczo6VmFsdWF0b3J7fTsKKyAgICAgICAgICAgICBhdXRvJiBudW1i ZXIgPSAoKmRhdGEudmFsdWF0b3IpLm51bWJlcjsKKyAgICAgICAgICAgICBhdXRvJiBsYWJlbCA9 ICgqZGF0YS52YWx1YXRvcikubGFiZWw7CisgICAgICAgICAgICAgYXV0byYgbWluID0gKCpkYXRh LnZhbHVhdG9yKS5taW47CitAQCAtNjc2Myw3ICs2NzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElu cHV0OjpYSVF1ZXJ5RGV2aWNlUmVwbAorICAgICAgICAgICAgIFBhZCgmYnVmLCAzKTsKKyAgICAg ICAgICAgfQorICAgICAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNs YXNzVHlwZTo6U2Nyb2xsKSkgeworLSAgICAgICAgICAgIGRhdGEuc2Nyb2xsLmVtcGxhY2UoKTsK KysgICAgICAgICAgICBkYXRhLnNjcm9sbCA9IElucHV0OjpEZXZpY2VDbGFzczo6U2Nyb2xse307 CisgICAgICAgICAgICAgYXV0byYgbnVtYmVyID0gKCpkYXRhLnNjcm9sbCkubnVtYmVyOworICAg ICAgICAgICAgIGF1dG8mIHNjcm9sbF90eXBlID0gKCpkYXRhLnNjcm9sbCkuc2Nyb2xsX3R5cGU7 CisgICAgICAgICAgICAgYXV0byYgZmxhZ3MgPSAoKmRhdGEuc2Nyb2xsKS5mbGFnczsKK0BAIC02 Nzk4LDcgKzY3OTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OlhJUXVlcnlEZXZpY2VSZXBs CisgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgICAgIGlmIChDYXNlRXEoZGF0 YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpUb3VjaCkpIHsKKy0gICAgICAgICAgICBk YXRhLnRvdWNoLmVtcGxhY2UoKTsKKysgICAgICAgICAgICBkYXRhLnRvdWNoID0gSW5wdXQ6OkRl dmljZUNsYXNzOjpUb3VjaHt9OworICAgICAgICAgICAgIGF1dG8mIG1vZGUgPSAoKmRhdGEudG91 Y2gpLm1vZGU7CisgICAgICAgICAgICAgYXV0byYgbnVtX3RvdWNoZXMgPSAoKmRhdGEudG91Y2gp Lm51bV90b3VjaGVzOworIAorQEAgLTY4MTEsNyArNjgxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ bnB1dDo6WElRdWVyeURldmljZVJlcGwKKyAgICAgICAgICAgICBSZWFkKCZudW1fdG91Y2hlcywg JmJ1Zik7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElu cHV0OjpEZXZpY2VDbGFzc1R5cGU6Okdlc3R1cmUpKSB7CistICAgICAgICAgICAgZGF0YS5nZXN0 dXJlLmVtcGxhY2UoKTsKKysgICAgICAgICAgICBkYXRhLmdlc3R1cmUgPSBJbnB1dDo6RGV2aWNl Q2xhc3M6Okdlc3R1cmV7fTsKKyAgICAgICAgICAgICBhdXRvJiBudW1fdG91Y2hlcyA9ICgqZGF0 YS5nZXN0dXJlKS5udW1fdG91Y2hlczsKKyAKKyAgICAgICAgICAgICAvLyBudW1fdG91Y2hlcwor ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9z L3hrYi5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L3gv Z2VuZXJhdGVkX3Byb3Rvcy94a2IuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2dm eC94L2dlbmVyYXRlZF9wcm90b3MveGtiLmNjLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAy Mzo0NzozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2dm eC94L2dlbmVyYXRlZF9wcm90b3MveGtiLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzY4NjUxNjUw ICswMjAwCitAQCAtMjM0Niw3ICsyMzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhrYjo6R2V0TWFw UmVwbHk+IGRldGFpbAorICAgLy8gbWFwCisgICBhdXRvIG1hcF9leHByID0gcHJlc2VudDsKKyAg IGlmIChDYXNlQW5kKG1hcF9leHByLCBYa2I6Ok1hcFBhcnQ6OktleVR5cGVzKSkgeworLSAgICBt YXAudHlwZXNfcnRybi5lbXBsYWNlKCk7CisrICAgIG1hcC50eXBlc19ydHJuID0gc3RkOjp2ZWN0 b3I8WGtiOjpLZXlUeXBlPnt9OworICAgICBhdXRvJiB0eXBlc19ydHJuID0gKm1hcC50eXBlc19y dHJuOworICAgICBzaXplX3QgdHlwZXNfcnRybl9sZW4gPSB0eXBlc19ydHJuLnNpemUoKTsKKyAK K0BAIC01Mjc2LDcgKzUyNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WGtiOjpHZXRLYmRCeU5hbWVS ZXBseT4KKyAgIGlmIChDYXNlQW5kKHJlcGxpZXNfZXhwciwgWGtiOjpHQk5EZXRhaWw6OlR5cGVz KSB8fAorICAgICAgIENhc2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6Q2xpZW50 U3ltYm9scykgfHwKKyAgICAgICBDYXNlQW5kKHJlcGxpZXNfZXhwciwgWGtiOjpHQk5EZXRhaWw6 OlNlcnZlclN5bWJvbHMpKSB7CistICAgIHJlcGxpZXMudHlwZXMuZW1wbGFjZSgpOworKyAgICBy ZXBsaWVzLnR5cGVzID0gWGtiOjpHZXRLYmRCeU5hbWVSZXBseTo6VHlwZXN7fTsKKyAgICAgYXV0 byYgZ2V0bWFwX3R5cGUgPSAoKnJlcGxpZXMudHlwZXMpLmdldG1hcF90eXBlOworICAgICBhdXRv JiB0eXBlRGV2aWNlSUQgPSAoKnJlcGxpZXMudHlwZXMpLnR5cGVEZXZpY2VJRDsKKyAgICAgYXV0 byYgZ2V0bWFwX3NlcXVlbmNlID0gKCpyZXBsaWVzLnR5cGVzKS5nZXRtYXBfc2VxdWVuY2U7CitA QCAtNTcwOCw3ICs1NzA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhrYjo6R2V0S2JkQnlOYW1lUmVw bHk+CisgICAgIH0KKyAgIH0KKyAgIGlmIChDYXNlQW5kKHJlcGxpZXNfZXhwciwgWGtiOjpHQk5E ZXRhaWw6OkNvbXBhdE1hcCkpIHsKKy0gICAgcmVwbGllcy5jb21wYXRfbWFwLmVtcGxhY2UoKTsK KysgICAgcmVwbGllcy5jb21wYXRfbWFwID0gWGtiOjpHZXRLYmRCeU5hbWVSZXBseTo6Q29tcGF0 TWFwe307CisgICAgIGF1dG8mIGNvbXBhdG1hcF90eXBlID0gKCpyZXBsaWVzLmNvbXBhdF9tYXAp LmNvbXBhdG1hcF90eXBlOworICAgICBhdXRvJiBjb21wYXREZXZpY2VJRCA9ICgqcmVwbGllcy5j b21wYXRfbWFwKS5jb21wYXREZXZpY2VJRDsKKyAgICAgYXV0byYgY29tcGF0bWFwX3NlcXVlbmNl ID0gKCpyZXBsaWVzLmNvbXBhdF9tYXApLmNvbXBhdG1hcF9zZXF1ZW5jZTsKK0BAIC01ODMyLDcg KzU4MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WGtiOjpHZXRLYmRCeU5hbWVSZXBseT4KKyAgICAg fQorICAgfQorICAgaWYgKENhc2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6SW5k aWNhdG9yTWFwcykpIHsKKy0gICAgcmVwbGllcy5pbmRpY2F0b3JfbWFwcy5lbXBsYWNlKCk7Cisr ICAgIHJlcGxpZXMuaW5kaWNhdG9yX21hcHMgPSBYa2I6OkdldEtiZEJ5TmFtZVJlcGx5OjpJbmRp Y2F0b3JNYXBze307CisgICAgIGF1dG8mIGluZGljYXRvcm1hcF90eXBlID0gKCpyZXBsaWVzLmlu ZGljYXRvcl9tYXBzKS5pbmRpY2F0b3JtYXBfdHlwZTsKKyAgICAgYXV0byYgaW5kaWNhdG9yRGV2 aWNlSUQgPSAoKnJlcGxpZXMuaW5kaWNhdG9yX21hcHMpLmluZGljYXRvckRldmljZUlEOworICAg ICBhdXRvJiBpbmRpY2F0b3JtYXBfc2VxdWVuY2UgPQorQEAgLTU5MjYsNyArNTkyNiw3IEBAIHN0 ZDo6dW5pcXVlX3B0cjxYa2I6OkdldEtiZEJ5TmFtZVJlcGx5PgorICAgfQorICAgaWYgKENhc2VB bmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6S2V5TmFtZXMpIHx8CisgICAgICAgQ2Fz ZUFuZChyZXBsaWVzX2V4cHIsIFhrYjo6R0JORGV0YWlsOjpPdGhlck5hbWVzKSkgeworLSAgICBy ZXBsaWVzLmtleV9uYW1lcy5lbXBsYWNlKCk7CisrICAgIHJlcGxpZXMua2V5X25hbWVzID0gWGti OjpHZXRLYmRCeU5hbWVSZXBseTo6S2V5TmFtZXN7fTsKKyAgICAgYXV0byYga2V5bmFtZV90eXBl ID0gKCpyZXBsaWVzLmtleV9uYW1lcykua2V5bmFtZV90eXBlOworICAgICBhdXRvJiBrZXlEZXZp Y2VJRCA9ICgqcmVwbGllcy5rZXlfbmFtZXMpLmtleURldmljZUlEOworICAgICBhdXRvJiBrZXlu YW1lX3NlcXVlbmNlID0gKCpyZXBsaWVzLmtleV9uYW1lcykua2V5bmFtZV9zZXF1ZW5jZTsKK0BA IC02MTg1LDcgKzYxODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WGtiOjpHZXRLYmRCeU5hbWVSZXBs eT4KKyAgICAgfQorICAgfQorICAgaWYgKENhc2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRl dGFpbDo6R2VvbWV0cnkpKSB7CistICAgIHJlcGxpZXMuZ2VvbWV0cnkuZW1wbGFjZSgpOworKyAg ICByZXBsaWVzLmdlb21ldHJ5ID0gWGtiOjpHZXRLYmRCeU5hbWVSZXBseTo6R2VvbWV0cnl7fTsK KyAgICAgYXV0byYgZ2VvbWV0cnlfdHlwZSA9ICgqcmVwbGllcy5nZW9tZXRyeSkuZ2VvbWV0cnlf dHlwZTsKKyAgICAgYXV0byYgZ2VvbWV0cnlEZXZpY2VJRCA9ICgqcmVwbGllcy5nZW9tZXRyeSku Z2VvbWV0cnlEZXZpY2VJRDsKKyAgICAgYXV0byYgZ2VvbWV0cnlfc2VxdWVuY2UgPSAoKnJlcGxp ZXMuZ2VvbWV0cnkpLmdlb21ldHJ5X3NlcXVlbmNlOworZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS90YWJzL3RhYl9zdHJpcF9tb2RlbC5oLm1lIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdGFicy90YWJfc3RyaXBfbW9kZWwu aAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdGFicy90YWJf c3RyaXBfbW9kZWwuaC5tZQkyMDI0LTA1LTE3IDEzOjAzOjQ3LjEyMDc5Njk4OSArMDIwMAorKysr IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdGFicy90YWJfc3RyaXBf bW9kZWwuaAkyMDI0LTA1LTE3IDEzOjA0OjA3LjM5MjIxNzM2NyArMDIwMAorQEAgLTEyLDYgKzEy LDcgQEAKKyAjaW5jbHVkZSA8bWVtb3J5PgorICNpbmNsdWRlIDxvcHRpb25hbD4KKyAjaW5jbHVk ZSA8c3RyaW5nPgorKyNpbmNsdWRlIDx2YXJpYW50PgorICNpbmNsdWRlIDx2ZWN0b3I+CisgCisg I2luY2x1ZGUgImJhc2UvY29udGFpbmVycy9zcGFuLmgiCitkaWZmIC11cCBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25z L3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2VydmljZS5oLm1lIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVj dF9zcGVjaWZpY2F0aW9uc19zZXJ2aWNlLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3Bl Y2lmaWNhdGlvbnNfc2VydmljZS5oLm1lCTIwMjQtMDUtMTUgMjM6NDY6MTEuMDAwMDAwMDAwICsw MjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUv cHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NlcnZpY2UuaAky MDI0LTA1LTE3IDEzOjA5OjM4LjQ5NTM3NjUxNCArMDIwMAorQEAgLTI2LDE0ICsyNiwxMyBAQCBj bGFzcyBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXJ2aWNlIDogcHViCisgICBiYXNlOjpXZWFrUHRy PHN5bmNlcjo6TW9kZWxUeXBlQ29udHJvbGxlckRlbGVnYXRlPgorICAgR2V0U3luY0NvbnRyb2xs ZXJEZWxlZ2F0ZSgpOworIAorLSAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgUHJvZHVjdFNwZWNp ZmljYXRpb25zU2V0PgorLSAgR2V0QWxsUHJvZHVjdFNwZWNpZmljYXRpb25zKCk7CisrICBjb25z dCBzdGQ6OnZlY3RvcjxQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQ+IEdldEFsbFByb2R1Y3RTcGVj aWZpY2F0aW9ucygpOworIAorICAgLy8gQWRkIG5ldyBwcm9kdWN0IHNwZWNpZmljYXRpb25zIHNl dCBjYWxsZWQgfG5hbWV8IHdpdGggcHJvZHVjdCBwYWdlcworICAgLy8gY29ycmVzcG9uZGluZyB0 byB8dXJsc3wuCisgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFByb2R1Y3RTcGVjaWZpY2F0 aW9uc1NldD4KKyAgIEFkZFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldChjb25zdCBzdGQ6OnN0cmlu ZyYgbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv cjxjb25zdCBHVVJMPiYgdXJscyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RkOjp2ZWN0b3I8R1VSTD4mIHVybHMpOworIAorICAgLy8gRGVsZXRlcyBwcm9kdWN0IHNw ZWNpZmljYXRpb24gc2V0IGNvcnJlc3BvbmRpbmcgdG8gaWRlbnRpZmllciB8dXVpZHwuCisgICB2 b2lkIERlbGV0ZVByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldChjb25zdCBzdGQ6OnN0cmluZyYgdXVp ZCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2Uv Y29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0Lmgu bWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVj dF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NldC5oCistLS0gY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZp Y2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NldC5oLm1lCTIwMjQtMDUtMTUgMjM6NDY6 MTEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRz L2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRp b25zX3NldC5oCTIwMjQtMDUtMTcgMTM6MDk6MzguNDk2Mzc2NTQwICswMjAwCitAQCAtNDMsNyAr NDMsNyBAQCBjbGFzcyBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQgeworICAgUHJvZHVjdFNwZWNp ZmljYXRpb25zU2V0KGNvbnN0IHN0ZDo6c3RyaW5nJiB1dWlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGludDY0X3QgY3JlYXRpb25fdGltZV91c2VjX3NpbmNlX2Vwb2NoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QgdXBkYXRlX3RpbWVfdXNl Y19zaW5jZV9lcG9jaCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZl Y3Rvcjxjb25zdCBHVVJMPiYgdXJscywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdGQ6OnZlY3RvcjxHVVJMPiYgdXJscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7CisgCisgICBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQo Y29uc3QgUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0Jik7CitAQCAtNjEsNyArNjEsNyBAQCBjbGFz cyBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQgeworICAgY29uc3QgYmFzZTo6VGltZSYgdXBkYXRl X3RpbWUoKSBjb25zdCB7IHJldHVybiB1cGRhdGVfdGltZV87IH0KKyAKKyAgIC8vIFByb2R1Y3Qg dXJscyBmb3IgZWFjaCBpdGVtIGluIHRoZSBzZXQKKy0gIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0 IEdVUkw+JiB1cmxzKCkgY29uc3QgeyByZXR1cm4gdXJsc187IH0KKysgIGNvbnN0IHN0ZDo6dmVj dG9yPEdVUkw+JiB1cmxzKCkgY29uc3QgeyByZXR1cm4gdXJsc187IH0KKyAKKyAgIC8vIE5hbWUg b2YgdGhlIHNldAorICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBu YW1lXzsgfQorQEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0 IHsKKyAgIGNvbnN0IGJhc2U6OlV1aWQgdXVpZF87CisgICBjb25zdCBiYXNlOjpUaW1lIGNyZWF0 aW9uX3RpbWVfOworICAgY29uc3QgYmFzZTo6VGltZSB1cGRhdGVfdGltZV87CistICBjb25zdCBz dGQ6OnZlY3Rvcjxjb25zdCBHVVJMPiB1cmxzXzsKKysgIGNvbnN0IHN0ZDo6dmVjdG9yPEdVUkw+ IHVybHNfOworICAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV87CisgfTsKKyAKK2RpZmYgLXVwIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3Bl Y2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zeW5jX2JyaWRnZS5jYy5tZSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNp ZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2UuY2MKKy0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNp ZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2UuY2MubWUJMjAyNC0w NS0xNSAyMzo0NjoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rf c3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2UuY2MJMjAyNC0wNS0xNyAxMzowOTozOC40OTczNzY1 NjcgKzAyMDAKK0BAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQcm9kdWN0U3BlY2lmaWNhdGlvbnNT eW5jQnJpZGdlOjpHZQorIGNvbnN0IHN0ZDo6b3B0aW9uYWw8c3luY19wYjo6Q29tcGFyZVNwZWNp Zmljcz4KKyBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTeW5jQnJpZGdlOjpBZGRQcm9kdWN0U3BlY2lm aWNhdGlvbnMoCisgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorLSAgICBjb25zdCBzdGQ6 OnZlY3Rvcjxjb25zdCBHVVJMPiYgdXJscykgeworKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxHVVJM PiYgdXJscykgeworICAgaWYgKCFjaGFuZ2VfcHJvY2Vzc29yKCktPklzVHJhY2tpbmdNZXRhZGF0 YSgpKSB7CisgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICB9CitkaWZmIC11cCBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmlj YXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2UuaC5tZSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRp b25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2UuaAorLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlv bnMvcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zeW5jX2JyaWRnZS5oLm1lCTIwMjQtMDUtMTUgMjM6 NDY6MTEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25l bnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmlj YXRpb25zX3N5bmNfYnJpZGdlLmgJMjAyNC0wNS0xNyAxMzowOTozOC40OTczNzY1NjcgKzAyMDAK K0BAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1N5bmNCcmlkZ2Ug OgorIAorICAgdmlydHVhbCBjb25zdCBzdGQ6Om9wdGlvbmFsPHN5bmNfcGI6OkNvbXBhcmVTcGVj aWZpY3M+CisgICBBZGRQcm9kdWN0U3BlY2lmaWNhdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIG5h bWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3Qg R1VSTD4mIHVybHMpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj dG9yPEdVUkw+JiB1cmxzKTsKKyAKKyAgIHZvaWQgRGVsZXRlUHJvZHVjdFNwZWNpZmljYXRpb25z U2V0KGNvbnN0IHN0ZDo6c3RyaW5nJiB1dWlkKTsKKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMv cHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zeW5jX2JyaWRnZV91bml0dGVzdC5jYy5tZSBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmlj YXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2VfdW5pdHRlc3QuY2MKKy0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0 X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2VfdW5pdHRl c3QuY2MubWUJMjAyNC0wNS0xNSAyMzo0NjoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmlj YXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2VfdW5pdHRlc3QuY2MJMjAy NC0wNS0xNyAxMzowOTozOC40OTczNzY1NjcgKzAyMDAKK0BAIC0xNzgsNyArMTc4LDcgQEAgY2xh c3MgUHJvZHVjdFNwZWNpZmljYXRpb25zU3luY0JyaWRnZVRlcworIAorICAgc3RkOjpvcHRpb25h bDxzeW5jX3BiOjpDb21wYXJlU3BlY2lmaWNzPiBBZGRQcm9kdWN0U3BlY2lmaWNhdGlvbnMoCisg ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCistICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8 Y29uc3QgR1VSTD4gdXJscykgeworKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdVUkw+IHVybHMp IHsKKyAgICAgcmV0dXJuIGJyaWRnZSgpLkFkZFByb2R1Y3RTcGVjaWZpY2F0aW9ucyhuYW1lLCB1 cmxzKTsKKyAgIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50 cy9jb21tZXJjZS9jb3JlL3Nob3BwaW5nX3NlcnZpY2UuY2MubWUgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvc2hvcHBpbmdfc2VydmljZS5jYworLS0tIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Nob3BwaW5nX3Nl cnZpY2UuY2MubWUJMjAyNC0wNS0xNSAyMzo0NjoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9zaG9wcGluZ19zZXJ2 aWNlLmNjCTIwMjQtMDUtMTcgMTM6MDk6MzguNDk4Mzc2NTkzICswMjAwCitAQCAtMTczNCw3ICsx NzM0LDcgQEAgdm9pZCBTaG9wcGluZ1NlcnZpY2U6OkdldFByb2R1Y3RJZGVudGlmaQorICAgICAg ICAgICBzdGQ6Om1vdmUoY2FsbGJhY2spKSk7CisgfQorIAorLWNvbnN0IHN0ZDo6dmVjdG9yPGNv bnN0IFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldD4KKytjb25zdCBzdGQ6OnZlY3RvcjxQcm9kdWN0 U3BlY2lmaWNhdGlvbnNTZXQ+CisgU2hvcHBpbmdTZXJ2aWNlOjpHZXRBbGxQcm9kdWN0U3BlY2lm aWNhdGlvblNldHMoKSB7CisgICByZXR1cm4gcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zZXJ2aWNl Xy0+R2V0QWxsUHJvZHVjdFNwZWNpZmljYXRpb25zKCk7CisgfQorZGlmZiAtdXAgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvc2hvcHBpbmdfc2VydmljZS5o Lm1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Nob3Bw aW5nX3NlcnZpY2UuaAorLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21t ZXJjZS9jb3JlL3Nob3BwaW5nX3NlcnZpY2UuaC5tZQkyMDI0LTA1LTE1IDIzOjQ2OjExLjAwMDAw MDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJj ZS9jb3JlL3Nob3BwaW5nX3NlcnZpY2UuaAkyMDI0LTA1LTE3IDEzOjA5OjM4LjQ5OTM3NjYxOSAr MDIwMAorQEAgLTYyNCw3ICs2MjQsNyBAQCBjbGFzcyBTaG9wcGluZ1NlcnZpY2UgOiBwdWJsaWMg S2V5ZWRTZXJ2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVybFByb2R1Y3RJ ZGVudGlmaWVyVHVwbGVDYWxsYmFjayBjYWxsYmFjayk7CisgCisgICAvLyBSZXR1cm4gYWxsIFBy b2R1Y3RTcGVjaWZpY2F0aW9uc1NldHMgZnJvbSBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXJ2aWNl LgorLSAgdmlydHVhbCBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBQcm9kdWN0U3BlY2lmaWNhdGlv bnNTZXQ+CisrICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPFByb2R1Y3RTcGVjaWZpY2F0aW9u c1NldD4KKyAgIEdldEFsbFByb2R1Y3RTcGVjaWZpY2F0aW9uU2V0cygpOworIAorICAgLy8gVXBk YXRlcyB0aGUgYm9va21hcmsgbW9kZWwgdXNlZCBmb3Igc3luYyAoYW5kIHNob3BwaW5nKSBpZiBu ZWVkZWQuIEludm9rZWQKK2RpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9wdWJs aWMvY3BwL2Jhc2UvcHJvdG9fd3JhcHBlci5jYy5tZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21v am8vcHVibGljL2NwcC9iYXNlL3Byb3RvX3dyYXBwZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL21vam8vcHVibGljL2NwcC9iYXNlL3Byb3RvX3dyYXBwZXIuY2MubWUJMjAyNC0wNS0x NSAyMzo0NjoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21v am8vcHVibGljL2NwcC9iYXNlL3Byb3RvX3dyYXBwZXIuY2MJMjAyNC0wNS0xNyAxMzowOTozOC40 OTkzNzY2MTkgKzAyMDAKK0BAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgUHJvdG9XcmFwcGVyOjpEZXNl cmlhbGl6ZVRvTWVzc2FnZSgKKyAgICAgLy8gTWFrZSBhbiBpbi1wcm9jZXNzIGNvcHkgaGVyZSBh cyBwcm90b2J1ZiBpcyBub3QgZGVzaWduZWQgdG8KKyAgICAgLy8gc2FmZWx5IHBhcnNlIGRhdGEg dGhhdCBtaWdodCBiZSBjaGFuZ2luZyB1bmRlcm5lYXRoIGl0LgorICAgICBhdXRvIGFzX3NwYW4g PSBiYXNlOjptYWtlX3NwYW4oYnl0ZXNfLT5kYXRhKCksIGJ5dGVzXy0+c2l6ZSgpKTsKKy0gICAg Y29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgdWludDhfdD4gY29weShhc19zcGFuLmJlZ2luKCksIGFz X3NwYW4uZW5kKCkpOworKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBjb3B5KGFzX3Nw YW4uYmVnaW4oKSwgYXNfc3Bhbi5lbmQoKSk7CisgICAgIHJldHVybiBtZXNzYWdlLlBhcnNlRnJv bUFycmF5KGNvcHkuZGF0YSgpLCBjb3B5LnNpemUoKSk7CisgICB9CisgfQorZGlmZiAtdXAgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvbGliL2JpbmRpbmdz X2ludGVybmFsLmgubWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9jcHAvYmlu ZGluZ3MvbGliL2JpbmRpbmdzX2ludGVybmFsLmgKKy0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9saWIvYmluZGluZ3NfaW50ZXJuYWwuaC5tZQkyMDI0 LTA1LTE3IDE0OjU0OjExLjE1ODcyMzczNSArMDIwMAorKysrIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2xpYi9iaW5kaW5nc19pbnRlcm5hbC5oCTIwMjQt MDUtMTcgMTQ6NTU6MjAuMjE0Mjg1ODI1ICswMjAwCitAQCAtOCw2ICs4LDcgQEAKKyAjaW5jbHVk ZSA8c3RkaW50Lmg+CisgCisgI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisrI2luY2x1ZGUgPG9wdGlv bmFsPgorICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyAjaW5jbHVkZSA8dXRpbGl0eT4KKyAKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvdnVsa2FuLWRlcHMvdnVs a2FuLXV0aWxpdHktbGlicmFyaWVzL3NyYy9pbmNsdWRlL3Z1bGthbi91dGlsaXR5L3ZrX3NtYWxs X2NvbnRhaW5lcnMuaHBwLm1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvdnVs a2FuLWRlcHMvdnVsa2FuLXV0aWxpdHktbGlicmFyaWVzL3NyYy9pbmNsdWRlL3Z1bGthbi91dGls aXR5L3ZrX3NtYWxsX2NvbnRhaW5lcnMuaHBwCistLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90 aGlyZF9wYXJ0eS92dWxrYW4tZGVwcy92dWxrYW4tdXRpbGl0eS1saWJyYXJpZXMvc3JjL2luY2x1 ZGUvdnVsa2FuL3V0aWxpdHkvdmtfc21hbGxfY29udGFpbmVycy5ocHAubWUJMjAyNC0wNS0xNyAx Mjo1OToyNi43MTQ4MDk4MjIgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJk X3BhcnR5L3Z1bGthbi1kZXBzL3Z1bGthbi11dGlsaXR5LWxpYnJhcmllcy9zcmMvaW5jbHVkZS92 dWxrYW4vdXRpbGl0eS92a19zbWFsbF9jb250YWluZXJzLmhwcAkyMDI0LTA1LTE3IDEyOjU5OjQ5 LjIzNjIzNTQ0NiArMDIwMAorQEAgLTgsNiArOCw3IEBACisgCisgI3ByYWdtYSBvbmNlCisgCisr I2luY2x1ZGUgPG1lbW9yeT4KKyAjaW5jbHVkZSA8Y2Fzc2VydD4KKyAjaW5jbHVkZSA8dW5vcmRl cmVkX21hcD4KKyAjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCmRpZmYgLS1naXQgYS9jaHJvbWl1 bS5zcGVjIGIvY2hyb21pdW0uc3BlYwppbmRleCBjYzY2NzQxLi5mZGJkMWU5IDEwMDY0NAotLS0g YS9jaHJvbWl1bS5zcGVjCisrKyBiL2Nocm9taXVtLnNwZWMKQEAgLTE2NCw2ICsxNjQsOSBAQAog CiAjIGVuYWJsZXxkaXNhYmxlIHVzZV9jdXN0b21fbGliY3h4CiAlZ2xvYmFsIHVzZV9jdXN0b21f bGliY3h4IDEKKyVpZiAle3JoZWx9ID09IDcKKyVnbG9iYWwgdXNlX2N1c3RvbV9saWJjeHggMAor JWVuZGlmCiAKICMgZW5hYmxlIGNsYW5nIGJ5IGRlZmF1bHQKICVnbG9iYWwgY2xhbmcgMQpAQCAt MzE1LDcgKzMxOCw3IEBACiAKIE5hbWU6CWNocm9taXVtJXtjaHJvbWl1bV9jaGFubmVsfQogVmVy c2lvbjogMTI1LjAuNjQyMi42MAotUmVsZWFzZTogMSV7P2Rpc3R9CitSZWxlYXNlOiAyJXs/ZGlz dH0KIFN1bW1hcnk6IEEgV2ViS2l0IChCbGluaykgcG93ZXJlZCB3ZWIgYnJvd3NlciB0aGF0IEdv b2dsZSBkb2Vzbid0IHdhbnQgeW91IHRvIHVzZQogVXJsOiBodHRwOi8vd3d3LmNocm9taXVtLm9y Zy9Ib21lCiBMaWNlbnNlOiBCU0QtMy1DbGF1c2UgQU5EIExHUEwtMi4xLW9yLWxhdGVyIEFORCBB cGFjaGUtMi4wIEFORCBJSkcgQU5EIE1JVCBBTkQgR1BMLTIuMC1vci1sYXRlciBBTkQgSVNDIEFO RCBPcGVuU1NMIEFORCAoTVBMLTEuMSBPUiBHUEwtMi4wLW9ubHkgT1IgTEdQTC0yLjAtb25seSkK QEAgLTM4MCw3ICszODMsNyBAQCBQYXRjaDEwMTogY2hyb21pdW0tMTA4LWVsNy13YXlsYW5kLXN0 cm5kdXAtZXJyb3IucGF0Y2gKIAogIyBXb3JrYXJvdW5kIGZvciBvbGQgY2xhbmcgMTQKICMgZXJy b3I6IGRlZmF1bHRpbmcgdGhpcyBkZWZhdWx0IGNvbnN0cnVjdG9yIHdvdWxkIGRlbGV0ZSBpdCBh ZnRlciBpdHMgZmlyc3QgZGVjbGFyYXRpb24KLVBhdGNoMTAyOiBjaHJvbWl1bS0xMjQtZWw3LWRl ZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbi5wYXRjaAorUGF0Y2gx MDI6IGNocm9taXVtLTEyNS1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnlt b3VzLXVuaW9uLnBhdGNoCiAKICMgV29yayBhcm91bmQgb2xkIGFuZCBtaXNzaW5nIGhlYWRlcnMg b24gRVBFTDcKIFBhdGNoMTAzOiBjaHJvbWl1bS0xMTAtZXBlbDctb2xkLWhlYWRlcnMtd29ya2Fy b3VuZHMucGF0Y2gKQEAgLTM5MSw3ICszOTQsNyBAQCBQYXRjaDEwNDogY2hyb21pdW0tOTkuMC40 ODQ0LjUxLWVwZWw3LW9sZC1jdXBzLnBhdGNoCiAKICMgbGliZHJtIG9uIEVMNyBpcyByYXRoZXIg b2xkIGFuZCBjaHJvbWl1bSBhc3N1bWVzIG5ld2VyCiAjIFRoaXMgZ2V0cyB1cyBieSBmb3Igbm93 Ci1QYXRjaDEwNTogY2hyb21pdW0tMTIwLWVsNy1vbGQtbGliZHJtLnBhdGNoCitQYXRjaDEwNTog Y2hyb21pdW0tMTI1LWVsNy1vbGQtbGliZHJtLnBhdGNoCiAKICMgZXJyb3I6IG5vIG1hdGNoaW5n IGZ1bmN0aW9uIGZvciBjYWxsIHRvICdzdGQ6OmJhc2ljX3N0cmluZzxjaGFyPjo6ZXJhc2Uoc3Rk OjpiYXNpY19zdHJpbmc8Y2hhcj46OmNvbnN0X2l0ZXJhdG9yLCBfX2dudV9jeHg6Ol9fbm9ybWFs X2l0ZXJhdG9yPGNvbnN0IGNoYXIqLCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyPiA+JiknCiAjICAg MzMgfCAgIHByb3BlcnR5X25hbWUuZXJhc2UocHJvcGVydHlfbmFtZS5jYmVnaW4oKSwgY3VyKTsK QEAgLTQwNiwyNSArNDA5LDI3IEBAIFBhdGNoMTA4OiBjaHJvbWl1bS0xMTgtZWw3X3Y0bDJfcXVh bnRpemF0aW9uLnBhdGNoCiBQYXRjaDEwOTogY2hyb21pdW0tMTE0LXdpcmVsZXNzLWVsNy5wYXRj aAogUGF0Y2gxMTA6IGNocm9taXVtLTExNS1idWlsZGZsYWctZWw3LnBhdGNoCiBQYXRjaDExMTog Y2hyb21pdW0tMTIyLWVsNy1pbmxpbmUtZnVuY3Rpb24ucGF0Y2gKK1BhdGNoMTEyOiBjaHJvbWl1 bS0xMjUtZWw3LXJ1c3QtcHJvYy1tYWNybzIucGF0Y2gKIFBhdGNoMTEzOiBjaHJvbWl1bS0xMjEt ZWw3LWNsYW5nLXZlcnNpb24td2FybmluZy5wYXRjaAogUGF0Y2gxMTQ6IGNocm9taXVtLTEyMy1l bDctY2xhbmctYnVpbGQtZmFpbHVyZS5wYXRjaAogUGF0Y2gxMTU6IGNocm9taXVtLTEyNC1lbDct c2l6ZV90LnBhdGNoCiAKICMgZml4ZXMgZm9yIG9sZCBjbGFuZyB2ZXJzaW9uIGluIGVsNyAoY2xh bmcgPD0gMTUpCiAjIGNvbXBpbGVyIGJ1aWxkIGVycm9ycywgbm8gbWF0Y2hpbmcgY29uc3RydWN0 b3IgZm9yIGluaXRpYWxpemF0aW9uCi1QYXRjaDExNjogY2hyb21pdW0tMTI0LW5vX21hdGNoaW5n X2NvbnN0cnVjdG9yLnBhdGNoCi1QYXRjaDExNzogY2hyb21pdW0tMTE1LWNvbXBpbGVyLVNrQ29s b3I0Zi5wYXRjaAorUGF0Y2gxMTY6IGNocm9taXVtLTEyNS1lbDctbm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IucGF0Y2gKK1BhdGNoMTE3OiBjaHJvbWl1bS0xMTUtZWw3LWNvbXBpbGVyLVNrQ29sb3I0 Zi5wYXRjaAogCiAjIHdvcmthcm91bmQgZm9yIGNsYW5nIGJ1ZywgaHR0cHM6Ly9naXRodWIuY29t L2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vlcy81NzgyNgotUGF0Y2gxMTg6IGNocm9taXVtLTEyNC13 b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKK1BhdGNoMTE4OiBj aHJvbWl1bS0xMjQtZWw3LXdvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZy5w YXRjaAogCiAjIG1pc3NpbmcgdHlwZW5hbWUKLVBhdGNoMTE5OiBjaHJvbWl1bS0xMjQtdHlwZW5h bWUucGF0Y2gKK1BhdGNoMTE5OiBjaHJvbWl1bS0xMjUtZWw3LXR5cGVuYW1lLnBhdGNoCiAKICMg ZXJyb3I6IGludmFsaWQgb3BlcmFuZHMgdG8gYmluYXJ5IGV4cHJlc3Npb24KLVBhdGNoMTIwOiBj aHJvbWl1bS0xMTctc3RyaW5nLWNvbnZlcnQucGF0Y2gKLVBhdGNoMTIxOiBjaHJvbWl1bS0xMTkt YXNzZXJ0LnBhdGNoCi1QYXRjaDEyMjogY2hyb21pdW0tMTI0LWVsNy1jb25zdGV4cHIucGF0Y2gK K1BhdGNoMTIwOiBjaHJvbWl1bS0xMTctZWw3LXN0cmluZy1jb252ZXJ0LnBhdGNoCitQYXRjaDEy MTogY2hyb21pdW0tMTI1LWVsNy1hc3NlcnQucGF0Y2gKK1BhdGNoMTIyOiBjaHJvbWl1bS0xMjUt ZWw3LWNvbnN0ZXhwci5wYXRjaAorUGF0Y2gxMjM6IGNocm9taXVtLTEyNS1lbDctdHlwZS1hbGlh cy5wYXRjaAogCiAjIHN5c3RlbSBmZm1wZWcKICMgbmVlZCBmb3Igb2xkIGZmbXBlZyA1Lnggb24g ZXBlbDkKQEAgLTQ3OSw2ICs0ODQsOSBAQCBQYXRjaDM1MjogY2hyb21pdW0tMTE3LXdvcmthcm91 bmRfZm9yX2NyYXNoX29uX0JUSV9jYXBhYmxlX3N5c3RlbS5wYXRjaAogIyByZW1vdmUgZmxhZyBz cGxpdC10aHJlc2hvbGQtZm9yLXJlZy13aXRoLWhpbnQsIGl0JyBub3Qgc3VwcG9ydGVkIGluIGNs YW5nIDw9IDE3CiBQYXRjaDM1NDogY2hyb21pdW0tMTIwLXNwbGl0LXRocmVzaG9sZC1mb3ItcmVn LXdpdGgtaGludC5wYXRjaAogCisjIHVzZSBzeXN0ZW0gbGlic3RkYysrCitQYXRjaDM1NTogY2hy b21pdW0tMTI1LXN5c3RlbS1saWJzdGRjKysucGF0Y2gKKwogIyBkaXNhYmxlIEZGbXBlZ0FsbG93 TGlzdHMgYnkgZGVmYXVsdCB0byBhbGxvdyBleHRlcm5hbCBmZm1wZWcKIHBhdGNoMzU2OiBjaHJv bWl1bS0xMjUtZGlzYWJsZS1GRm1wZWdBbGxvd0xpc3RzLnBhdGNoCiAKQEAgLTU1OSw2ICs1Njcs NyBAQCBQYXRjaDQxMzogZml4LXVua25vd24td2FybmluZy1vcHRpb24tbWVzc2FnZXMuZGlmZgog IyB1cHN0cmVhbSBwYXRjaGVzCiAjIDY0a3BhZ2Ugc3VwcG9ydCBvbiBlbDgKIFBhdGNoNTAwOiBj aHJvbWl1bS0xMjQtZWw4LXN1cHBvcnQtNjRrcGFnZS5wYXRjaAorUGF0Y2g1MDE6IGNocm9taXVt LTEyNS1taXNzaW5nLWluY2x1ZGUtRmllbGREYXRhTWFuYWdlci5wYXRjaAogCiAjIFVzZSBjaHJv bWl1bS1sYXRlc3QucHkgdG8gZ2VuZXJhdGUgY2xlYW4gdGFyYmFsbCBmcm9tIHJlbGVhc2VkIGJ1 aWxkIHRhcmJhbGxzLCBmb3VuZCBoZXJlOgogIyBodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1 aWxkYm90L29mZmljaWFsLwpAQCAtMTE5NSw2ICsxMjA0LDcgQEAgdWRldi4KICVwYXRjaCAtUDEw OSAtcDEgLWIgLndpcmVsZXNzCiAlcGF0Y2ggLVAxMTAgLXAxIC1iIC5idWlsZGZsYWctZWw3CiAl cGF0Y2ggLVAxMTEgLXAxIC1iIC5pbmxpbmUtZnVuY3Rpb24tZWw3CislcGF0Y2ggLVAxMTIgLXAx IC1SIC1iICAucnVzdC1wcm9jLW1hY3JvMgogJXBhdGNoIC1QMTEzIC1wMSAtYiAuZWw3LWNsYW5n LXZlcnNpb24td2FybmluZwogJXBhdGNoIC1QMTE0IC1wMSAtYiAuY2xhbmctYnVpbGQtZmFpbHVy ZQogJXBhdGNoIC1QMTE1IC1wMSAtYiAuZWw3LXNpemVfdApAQCAtMTIwNSw2ICsxMjE1LDcgQEAg dWRldi4KICVwYXRjaCAtUDEyMCAtcDEgLWIgLnN0cmluZy1jb252ZXJ0CiAlcGF0Y2ggLVAxMjEg LXAxIC1iIC5hc3NlcnQKICVwYXRjaCAtUDEyMiAtcDEgLWIgLmNvbnN0ZXhwcgorJXBhdGNoIC1Q MTIzIC1wMSAtYiAuZWw3LXR5cGUtYWxpYXMKICVlbmRpZgogCiAlaWYgMCV7P3JoZWx9ID09IDkK QEAgLTEyNDgsNiArMTI1OSw5IEBAIHVkZXYuCiAlZW5kaWYKIAogJXBhdGNoIC1QMzU0IC1wMSAt YiAucmV2ZXJ0LXNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludAorJWlmICEgJXt1c2Vf Y3VzdG9tX2xpYmN4eH0KKyVwYXRjaCAtUDM1NSAtcDEgLWIgLnN5c3RlbS1saWJzdGRjKysKKyVl bmRpZgogJXBhdGNoIC1QMzU2IC1wMSAtYiAuZGlzYWJsZS1GRm1wZWdBbGxvd0xpc3RzCiAlcGF0 Y2ggLVAzNTggLXAxIC1iIC5ydXN0LWNsYW5nX2xpYgogJXBhdGNoIC1QMzU5IC1wMSAtYiAubGli YXZpZi1kZXBzCkBAIC0xMzIwLDYgKzEzMzQsNyBAQCB1ZGV2LgogJXBhdGNoIC1QNTAwIC1wMSAt YiAuZWw4LXN1cHBvcnQtNjRrcGFnZS5wYXRjaAogJWVuZGlmCiAlZW5kaWYKKyVwYXRjaCAtUDUw MSAtcDEgLWIgLm1pc3NpbmctaW5jbHVkZS1GaWVsZERhdGFNYW5hZ2UKIAogIyBDaGFuZ2Ugc2hl YmFuZyBpbiBhbGwgcmVsZXZhbnQgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIGFsbCBzdWJk aXJlY3RvcmllcwogIyBTZWUgYG1hbiBmaW5kYCBmb3IgaG93IHRoZSBgLWV4ZWMgY29tbWFuZCB7 fSArYCBzeW50YXggd29ya3MKQEAgLTEzOTEsOCArMTQwNiw3IEBAIGNwIC1hIHRoaXJkX3BhcnR5 L2RhdjFkL3ZlcnNpb24vdmVyc2lvbi5oIHRoaXJkX3BhcnR5L2RhdjFkL2xpYmRhdjFkL2luY2x1 ZGUvZGF2CiAlaWYgJXtjbGFuZ30KIEZMQUdTPScgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9u cyAtV25vLXVua25vd24td2FybmluZy1vcHRpb24gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFy Z3VtZW50JwogRkxBR1MrPScgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNl ZC1yZXN1bHQgLVduby11bnVzZWQtZnVuY3Rpb24gLVduby11bnVzZWQtdmFyaWFibGUnCi1GTEFH Uys9JyAtV25vLXVudXNlZC1jb25zdC12YXJpYWJsZSAtV25vLXVubmVlZGVkLWludGVybmFsLWRl Y2xhcmF0aW9uIC1Xbm8tdW5rbm93bi1hdHRyaWJ1dGVzJwotRkxBR1MrPScgLVduby11bmtub3du LXByYWdtYXMnCitGTEFHUys9JyAtV25vLXVudXNlZC1jb25zdC12YXJpYWJsZSAtV25vLXVubmVl ZGVkLWludGVybmFsLWRlY2xhcmF0aW9uIC1Xbm8tdW5rbm93bi1hdHRyaWJ1dGVzIC1Xbm8tdW5r bm93bi1wcmFnbWFzJwogJWVuZGlmCiAKICVpZiAle3N5c3RlbV9idWlsZF9mbGFnc30KQEAgLTIx MTUsNiArMjEyOSw5IEBAIGdldGVudCBncm91cCBjaHJvbWUtcmVtb3RlLWRlc2t0b3AgPi9kZXYv bnVsbCB8fCBncm91cGFkZCAtciBjaHJvbWUtcmVtb3RlLWRlc2t0CiAlZW5kaWYKIAogJWNoYW5n ZWxvZworKiBTdW4gTWF5IDE5IDIwMjQgVGhhbiBOZ28gPHRoYW5AcmVkaGF0LmNvbT4gLSAxMjUu MC42NDIyLjYwLTIKKy0gZml4IGJ1aWxkIGVycm9ycyBvbiBlbDcKKwogKiBUaHUgTWF5IDE2IDIw MjQgVGhhbiBOZ28gPHRoYW5AcmVkaGF0LmNvbT4gLSAxMjUuMC42NDIyLjYwLTEKIC0gdXBkYXRl IHRvIDEyNS4wLjY0MjIuNjAKICAgKiBIaWdoIENWRS0yMDI0LTQ5NDc6IFR5cGUgQ29uZnVzaW9u IGluIFY4Cg==