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: Yaakov Selkowitz To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: Fix flatpak build Date: Fri, 07 Aug 2026 16:07:17 GMT Message-ID: <178611883790.1.1384213141854981113.rpms-chromium-b73d675e7134@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: b73d675e713417452432988480f63d5dc441b3a0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY2hyb21pdW0KICAgICAgICAgICAgQnJhbmNoIDogZXBlbDktbmV4dAogICAg ICAgICAgICBDb21taXQgOiBiNzNkNjc1ZTcxMzQxNzQ1MjQzMjk4ODQ4MGY2M2Q1ZGM0NDFiM2Ew CiAgICAgICAgICAgIEF1dGhvciA6IFlhYWtvdiBTZWxrb3dpdHogPHlzZWxrb3dpQHJlZGhhdC5j b20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjUtMDEtMjBUMjI6MjE6NDQrMDA6MDAKICAgICAg ICAgICAgU3RhdHMgIDogKzE3NzEvLTExIGluIDQgZmlsZShzKQogICAgICAgICAgICBVUkwgICAg OiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2Nocm9taXVtL2MvYjczZDY3NWU3 MTM0MTc0NTI0MzI5ODg0ODBmNjNkNWRjNDQxYjNhMD9icmFuY2g9ZXBlbDktbmV4dAoKICAgICAg ICAgICAgTG9nOgogICAgICAgICAgICBGaXggZmxhdHBhayBidWlsZAoKVGhpcyBhZGRzIHBhdGNo ZXMgZnJvbSBGbGF0aHViIHRvIHVzZSB0aGUgRmxhdHBhayBzYW5kYm94IChhcyB0aGUgR1VJRApz YW5kYm94IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRmxhdHBhaydzIG93biksIHJlbW92ZXMgZGVw ZW5kZW5jaWVzIG9uIGhvc3QKc2VydmljZXMsIGFuZCB1c2VzIGF1dG9tYXRpYyBkZXRlY3Rpb24g b2YgZGVwZW5kZW5jeSBsb2NhdGlvbnMgKHNpbmNlCmRlcGVuZGVuY2llcyBhcmUgbm90IG5lY2Vz c2FyaWx5IGZvdW5kIGluIC9hcHAgZXZlbiB3aGVuIGJ1aWxkaW5nIHRoZXJlaW4sCmFzIHRoZSBi dWlsZHJvb3QgaXMgc3RpbGwgaW4gL3VzcikuCgotLS0KZGlmZiAtLWdpdCBhL2Nocm9taXVtLnNw ZWMgYi9jaHJvbWl1bS5zcGVjCmluZGV4IGNiMTg2ZTQuLmIwM2Y3ODYgMTAwNjQ0Ci0tLSBhL2No cm9taXVtLnNwZWMKKysrIGIvY2hyb21pdW0uc3BlYwpAQCAtMzcsMTIgKzM3LDE4IEBACiAKICMg ZW5hYmxlfGRpc2FibGUgY2hyb21lZHJpdmVyCiAlZ2xvYmFsIGJ1aWxkX2Nocm9tZWRyaXZlciAx CislaWYgMCV7P2ZsYXRwYWt9CislZ2xvYmFsIGJ1aWxkX2Nocm9tZWRyaXZlciAwCislZW5kaWYK IAogIyBlbmFibGV8ZGlzYWJsZSBoZWFkbGVzcyBjbGllbnQgYnVpbGQKICVnbG9iYWwgYnVpbGRf aGVhZGxlc3MgMQogJWlmYXJjaCBwcGM2NGxlCiAlZ2xvYmFsIGJ1aWxkX2hlYWRsZXNzIDAKICVl bmRpZgorJWlmIDAlez9mbGF0cGFrfQorJWdsb2JhbCBidWlsZF9oZWFkbGVzcyAwCislZW5kaWYK IAogIyBlbmFibGV8ZGlzYWJsZSBjaHJvbWUtcmVtb3RlLWRlc2t0b3AgYnVpbGQKICVnbG9iYWwg YnVpbGRfcmVtb3RpbmcgMApAQCAtNDQyLDYgKzQ0OCwxMiBAQCBQYXRjaDQxMzogZml4LXVua25v d24td2FybmluZy1vcHRpb24tbWVzc2FnZXMuZGlmZgogUGF0Y2g0MTQ6IGNhcmdvLWFkZC1wcGM2 NC5kaWZmCiBQYXRjaDQxNTogYWRkLXBwYzY0LXB0aHJlYWQtc3RhY2stc2l6ZS5wYXRjaAogCisj IGZsYXRwYWsgc2FuZGJveCBwYXRjaGVzIGZyb20KKyMgaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRo dWIvb3JnLmNocm9taXVtLkNocm9taXVtL3RyZWUvbWFzdGVyL3BhdGNoZXMvY2hyb21pdW0KK1Bh dGNoNDE2OiBmbGF0cGFrLUFkZC1pbml0aWFsLXNhbmRib3gtc3VwcG9ydC5wYXRjaAorUGF0Y2g0 MTc6IGZsYXRwYWstQWRqdXN0LXBhdGhzLWZvci10aGUtc2FuZGJveC5wYXRjaAorUGF0Y2g0MTg6 IGZsYXRwYWstRXhwb3NlLVdpZGV2aW5lLWludG8tdGhlLXNhbmRib3gucGF0Y2gKKwogIyB1cHN0 cmVhbSBwYXRjaGVzCiAKICMgVXNlIGNocm9taXVtLWxhdGVzdC5weSB0byBnZW5lcmF0ZSBjbGVh biB0YXJiYWxsIGZyb20gcmVsZWFzZWQgYnVpbGQgdGFyYmFsbHMsIGZvdW5kIGhlcmU6CkBAIC02 NjYsNyArNjc4LDcgQEAgQnVpbGRSZXF1aXJlczogbGliWE5WQ3RybC1kZXZlbAogJWVuZGlmCiAK ICMgT25lIG9mIHRoZSBweXRob24gc2NyaXB0cyBpbnZva2VzIGdpdCB0byBsb29rIGZvciBhIGhh c2guIFNvIGhlbHBmdWwuCi1CdWlsZFJlcXVpcmVzOgkvdXNyL2Jpbi9naXQKK0J1aWxkUmVxdWly ZXM6CWdpdC1jb3JlCiBCdWlsZFJlcXVpcmVzOglod2RhdGEKIEJ1aWxkUmVxdWlyZXM6CWtlcm5l bC1oZWFkZXJzCiAlaWYgISAle2J1bmRsZWxpYmV2ZW50fQpAQCAtNzgyLDcgKzc5NCw3IEBAIFJl cXVpcmVzOiBuc3MtbWRucyV7X2lzYX0KICMgR1RLIG1vZHVsZXMgaXQgZXhwZWN0cyB0byBmaW5k IGZvciBzb21lIHJlYXNvbi4KIFJlcXVpcmVzOiBsaWJjYW5iZXJyYS1ndGszJXtfaXNhfQogCi0l aWYgMCV7P2ZlZG9yYX0KKyVpZiAwJXs/ZmVkb3JhfSAmJiAle3VuZGVmaW5lZCBmbGF0cGFrfQog IyBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdTJmIHRva2VucwogUmVxdWlyZXM6IHUyZi1oaWRy YXctcG9saWN5CiAlZW5kaWYKQEAgLTkyMyw5ICs5MzUsMTEgQEAgUHJvdmlkZXM6IGJ1bmRsZWQo eGRnLW1pbWUpCiBQcm92aWRlczogYnVuZGxlZCh4ZGctdXNlci1kaXJzKQogIyBQcm92aWRlczog YnVuZGxlZCh6bGliKSA9IDEuMi4xMQogCislaWYgJXt1bmRlZmluZWQgZmxhdHBha30KICMgRm9y IHNlbGludXggc2NyaXB0bGV0CiBSZXF1aXJlcyhwb3N0KTogL3Vzci9zYmluL3NlbWFuYWdlCiBS ZXF1aXJlcyhwb3N0KTogL3Vzci9zYmluL3Jlc3RvcmVjb24KKyVlbmRpZgogCiAlZGVzY3JpcHRp b24KIENocm9taXVtIGlzIGFuIG9wZW4tc291cmNlIHdlYiBicm93c2VyLCBwb3dlcmVkIGJ5IFdl YktpdCAoQmxpbmspLgpAQCAtMTEzNSw2ICsxMTQ5LDEyIEBAIFF0NiBVSSBmb3IgY2hyb21pdW0u CiAlcGF0Y2ggLVA0MTUgLXAxIC1iIC5hZGQtcHBjNjQtcHRocmVhZC1zdGFjay1zaXplCiAlZW5k aWYKIAorJWlmIDAlez9mbGF0cGFrfQorJXBhdGNoIC1QNDE2IC1wMSAtYiAuZmxhdHBhay1pbml0 aWFsLXNhbmRib3gKKyVwYXRjaCAtUDQxNyAtcDEgLWIgLmZsYXRwYWstc2FuZGJveC1wYXRocwor JXBhdGNoIC1QNDE4IC1wMSAtYiAuZmxhdHBhay13aWRldmluZQorJWVuZGlmCisKICMgQ2hhbmdl IHNoZWJhbmcgaW4gYWxsIHJlbGV2YW50IGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFuZCBhbGwg c3ViZGlyZWN0b3JpZXMKICMgU2VlIGBtYW4gZmluZGAgZm9yIGhvdyB0aGUgYC1leGVjIGNvbW1h bmQge30gK2Agc3ludGF4IHdvcmtzCiBmaW5kIC10eXBlIGYgXCggLWluYW1lICIqLnB5IiBcKSAt ZXhlYyBzZWQgLWkgJzFzPV4jISAqL3Vzci9iaW4vXChweXRob25cfGVudiBweXRob25cKVsyM11c Pz0jISV7Y2hyb21pdW1fcHliaW59PScge30gKwpAQCAtMTE1NSwxMiArMTE3NSwxMiBAQCBmaW5k IC10eXBlIGYgXCggLWluYW1lICIqLnB5IiBcKSAtZXhlYyBzZWQgLWkgJzFzPV4jISAqL3Vzci9i aW4vXChweXRob25cfGVudiBweQogcG9wZAogJWVsc2UKICAgbWtkaXIgLXAgdGhpcmRfcGFydHkv bm9kZS9saW51eC9ub2RlLWxpbnV4LXg2NC9iaW4KLSAgbG4gLXMgJXtfYmluZGlyfS9ub2RlIHRo aXJkX3BhcnR5L25vZGUvbGludXgvbm9kZS1saW51eC14NjQvYmluL25vZGUKKyAgbG4gLXMgJCh3 aGljaCBub2RlKSB0aGlyZF9wYXJ0eS9ub2RlL2xpbnV4L25vZGUtbGludXgteDY0L2Jpbi9ub2Rl CiAlZW5kaWYKIAogIyBHZXQgcmlkIG9mIHRoZSBidW5kbGVkIGVzYnVpbGQKICVpZiAwJXs/ZmVk b3JhfQotICBsbiAtc2YgJXtfYmluZGlyfS9lc2J1aWxkIHRoaXJkX3BhcnR5L2RldnRvb2xzLWZy b250ZW5kL3NyYy90aGlyZF9wYXJ0eS9lc2J1aWxkL2VzYnVpbGQKKyAgbG4gLXNmICQod2hpY2gg ZXNidWlsZCkgdGhpcmRfcGFydHkvZGV2dG9vbHMtZnJvbnRlbmQvc3JjL3RoaXJkX3BhcnR5L2Vz YnVpbGQvZXNidWlsZAogJWVsc2UKICAgJWlmYXJjaCB4ODZfNjQKICAgICB0YXIgLXp4ZiAle1NP VVJDRTE0fSAtLWRpcmVjdG9yeSAle190bXBwYXRofQpAQCAtMTE3NSw3ICsxMTk1LDcgQEAgcG9w ZAogcm0gLXJmIGJ1aWxkdG9vbHMvdGhpcmRfcGFydHkvZXUtc3RyaXAvYmluL2V1LXN0cmlwCiAg IAogIyBSZXBsYWNlIGl0IHdpdGggYSBzeW1saW5rIHRvIHRoZSBGZWRvcmEgY29weQotbG4gLXMg JXtfYmluZGlyfS9ldS1zdHJpcCBidWlsZHRvb2xzL3RoaXJkX3BhcnR5L2V1LXN0cmlwL2Jpbi9l dS1zdHJpcAorbG4gLXMgJCh3aGljaCBldS1zdHJpcCkgYnVpbGR0b29scy90aGlyZF9wYXJ0eS9l dS1zdHJpcC9iaW4vZXUtc3RyaXAKIAogJWlmICV7YnVuZGxlbGlidXNieH0KICMgbm8gaGFja2l0 eSBoYWNrIGhhY2sKQEAgLTExODMsNyArMTIwMyw3IEBAIGxuIC1zICV7X2JpbmRpcn0vZXUtc3Ry aXAgYnVpbGR0b29scy90aGlyZF9wYXJ0eS9ldS1zdHJpcC9iaW4vZXUtc3RyaXAKICMgaGFja2l0 eSBoYWNrIGhhY2sKIHJtIC1yZiB0aGlyZF9wYXJ0eS9saWJ1c2Ivc3JjL2xpYnVzYi9saWJ1c2Iu aAogIyB3ZSBfc2hvdWxkbid0IG5lZWQgdG8gZG8gdGhpcywgYnV0IGl0IGxvb2tzIGxpa2Ugd2Ug ZG8uCi1jcCAtYSAle19pbmNsdWRlZGlyfS9saWJ1c2ItMS4wL2xpYnVzYi5oIHRoaXJkX3BhcnR5 L2xpYnVzYi9zcmMvbGlidXNiL2xpYnVzYi5oCitjcCAtYSAkKHBrZy1jb25maWcgLS12YXJpYWJs ZT1pbmNsdWRlZGlyIGxpYnVzYi0xLjApL2xpYnVzYi0xLjAvbGlidXNiLmggdGhpcmRfcGFydHkv bGlidXNiL3NyYy9saWJ1c2IvbGlidXNiLmgKICVlbmRpZgogCiAjIEhhcmQgY29kZSBleHRyYSB2 ZXJzaW9uCkBAIC0xMjQ3LDcgKzEyNjcsOCBAQCBleHBvcnQgUlVTVENfQk9PVFNUUkFQPTEKICMg c2V0IHJ1c3RjIHZlcnNpb24KIHJ1c3RjX3ZlcnNpb249IiQocnVzdGMgLS12ZXJzaW9uKSIKICMg c2V0IHJ1c3QgYmluZGdlbiByb290Ci1ydXN0X2JpbmRnZW5fcm9vdD0iJXtfcHJlZml4fSIKK3J1 c3RfYmluZGdlbl9yb290PSIkKHdoaWNoIGJpbmRnZW4gfCBzZWQgJ3MjL2Jpbi8uKiMjJykiCity dXN0X3N5c3Jvb3RfYWJzb2x1dGU9IiQocnVzdGMgLS1wcmludCBzeXNyb290KSIKIAogIyBzZXQg Y2xhbmcgdmVyc2lvbgogY2xhbmdfdmVyc2lvbj0iJChjbGFuZyAtLXZlcnNpb24gfCBzZWQgLW4g J3MvY2xhbmcgdmVyc2lvbiAvL3AnIHwgY3V0IC1kLiAtZjEpIgpAQCAtMTI5MSw3ICsxMzEyLDcg QEAgQ0hST01JVU1fQ09SRV9HTl9ERUZJTkVTKz0nIGNsYW5nX3VzZV9jaHJvbWVfcGx1Z2lucz1m YWxzZScKIENIUk9NSVVNX0NPUkVfR05fREVGSU5FUys9JyB1c2VfbGxkPXRydWUnCiAKICMgZW5h YmxlIHN5c3RlbSBydXN0Ci1DSFJPTUlVTV9DT1JFX0dOX0RFRklORVMrPScgcnVzdF9zeXNyb290 X2Fic29sdXRlPSIle19wcmVmaXh9IicKK0NIUk9NSVVNX0NPUkVfR05fREVGSU5FUys9IiBydXN0 X3N5c3Jvb3RfYWJzb2x1dGU9XCIkcnVzdF9zeXNyb290X2Fic29sdXRlXCIiCiBDSFJPTUlVTV9D T1JFX0dOX0RFRklORVMrPSIgcnVzdF9iaW5kZ2VuX3Jvb3Q9XCIkcnVzdF9iaW5kZ2VuX3Jvb3Rc IiIKIENIUk9NSVVNX0NPUkVfR05fREVGSU5FUys9IiBydXN0Y192ZXJzaW9uPVwiJHJ1c3RjX3Zl cnNpb25cIiIKIApAQCAtMTM0MywxMyArMTM2NCwxMyBAQCBDSFJPTUlVTV9CUk9XU0VSX0dOX0RF RklORVMrPScgcnRjX3VzZV9oMjY0PWZhbHNlJwogQ0hST01JVU1fQlJPV1NFUl9HTl9ERUZJTkVT Kz0nIHVzZV9rZXJiZXJvcz10cnVlJwogCiAlaWYgJXt1c2VfcXR9Ci1DSFJPTUlVTV9CUk9XU0VS X0dOX0RFRklORVMrPScgdXNlX3F0PXRydWUgbW9jX3F0NV9wYXRoPSIle19saWJkaXJ9L3F0NS9i aW4vIicKK0NIUk9NSVVNX0JST1dTRVJfR05fREVGSU5FUys9IiB1c2VfcXQ9dHJ1ZSBtb2NfcXQ1 X3BhdGg9XCIkKCV7X3F0NV9xbWFrZX0gLXF1ZXJ5IFFUX0hPU1RfQklOUylcIiIKICVlbHNlCiBD SFJPTUlVTV9CUk9XU0VSX0dOX0RFRklORVMrPScgdXNlX3F0PWZhbHNlJwogJWVuZGlmCiAKICVp ZiAle3VzZV9xdDZ9Ci1DSFJPTUlVTV9CUk9XU0VSX0dOX0RFRklORVMrPScgdXNlX3F0Nj10cnVl IG1vY19xdDZfcGF0aD0iJXtfbGliZGlyfS9xdDYvbGliZXhlYy8iJworQ0hST01JVU1fQlJPV1NF Ul9HTl9ERUZJTkVTKz0iIHVzZV9xdDY9dHJ1ZSBtb2NfcXQ2X3BhdGg9XCIkKCV7X3F0Nl9xbWFr ZX0gLXF1ZXJ5IFFUX0hPU1RfTElCRVhFQ1MpXCIiCiAlZWxzZQogQ0hST01JVU1fQlJPV1NFUl9H Tl9ERUZJTkVTKz0nIHVzZV9xdDY9ZmFsc2UnCiAlZW5kaWYKQEAgLTE1MTgsNyArMTUzOSw3IEBA IGZpCiAlaWYgJXtib290c3RyYXB9CiB0b29scy9nbi9ib290c3RyYXAvYm9vdHN0cmFwLnB5IC0t Z24tZ2VuLWFyZ3M9IiRDSFJPTUlVTV9DT1JFX0dOX0RFRklORVMgJENIUk9NSVVNX0JST1dTRVJf R05fREVGSU5FUyIKICVlbHNlCi1ta2RpciAtcCAle2Nocm9tZWJ1aWxkZGlyfSAmJiBjcCAtYSAl e19iaW5kaXJ9L2duICV7Y2hyb21lYnVpbGRkaXJ9LworbWtkaXIgLXAgJXtjaHJvbWVidWlsZGRp cn0gJiYgY3AgLWEgJCh3aGljaCBnbikgJXtjaHJvbWVidWlsZGRpcn0vCiAlZW5kaWYKIAogJXtj aHJvbWVidWlsZGRpcn0vZ24gLS1zY3JpcHQtZXhlY3V0YWJsZT0le2Nocm9taXVtX3B5YmlufSBn ZW4gLS1hcmdzPSIkQ0hST01JVU1fQ09SRV9HTl9ERUZJTkVTICRDSFJPTUlVTV9CUk9XU0VSX0dO X0RFRklORVMiICV7Y2hyb21lYnVpbGRkaXJ9CkBAIC0xNzQyLDYgKzE3NjMsNyBAQCBjcCAtYSAl e1NPVVJDRTl9ICV7YnVpbGRyb290fSV7X2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyL2Rl ZmF1bHQtYXBwcy8KICMgUkVBRE1FLmZlZG9yYQogY3AgJXtTT1VSQ0UxfSAuCiAKKyVpZiAle3Vu ZGVmaW5lZCBmbGF0cGFrfQogJXBvc3QKICMgU2V0IFNFTGludXggbGFiZWxzIC0gc2VtYW5hZ2Ug aXRzZWxmIHdpbGwgYWRqdXN0IHRoZSBsaWIgZGlyZWN0b3J5IG5hbWluZwogIyBCdXQgb25seSBk byBpdCB3aGVuIHNlbGludXggaXMgZW5hYmxlZCwgb3RoZXJ3aXNlLCBpdCBnZXRzIG5vaXN5LgpA QCAtMTc1MSw2ICsxNzczLDcgQEAgaWYgc2VsaW51eGVuYWJsZWQ7IHRoZW4KIAlzZW1hbmFnZSBm Y29udGV4dCAtYSAtdCBjaHJvbWVfc2FuZGJveF9leGVjX3QgL3Vzci9saWIvY2hyb21lLXNhbmRi b3ggJj4vZGV2L251bGwgfHwgOgogCXJlc3RvcmVjb24gLVIgLXYgJXtjaHJvbWl1bV9wYXRofS8l e2Nocm9taXVtX2Jyb3dzZXJfY2hhbm5lbH0gJj4vZGV2L251bGwgfHwgOgogZmkKKyVlbmRpZgog CiAlaWYgJXtidWlsZF9yZW1vdGluZ30KICVwcmV0cmFucyAtbiBjaHJvbWUtcmVtb3RlLWRlc2t0 b3AgLXAgPGx1YT4gCgpkaWZmIC0tZ2l0IGEvZmxhdHBhay1BZGQtaW5pdGlhbC1zYW5kYm94LXN1 cHBvcnQucGF0Y2ggYi9mbGF0cGFrLUFkZC1pbml0aWFsLXNhbmRib3gtc3VwcG9ydC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWUyZDk0Ci0tLSAvZGV2L251bGwK KysrIGIvZmxhdHBhay1BZGQtaW5pdGlhbC1zYW5kYm94LXN1cHBvcnQucGF0Y2gKQEAgLTAsMCAr MSwxMzI1IEBACitGcm9tIGFiMTE1MjhmMjZhMjEyNDE3YjBiNjA4NGI1MmMwMmU5OTJmZTQzZjcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSeWFuIEdvbnphbGV6IDxyeW1nMTlAZ21h aWwuY29tPgorRGF0ZTogVHVlLCAxNyBNYXIgMjAyMCAxMzoxODoyNyAtMDUwMAorU3ViamVjdDog W1BBVENIXSBmbGF0cGFrOiBBZGQgaW5pdGlhbCBzYW5kYm94IHN1cHBvcnQKKworLS0tCisgLmdp dGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBiYXNl L3RocmVhZGluZy90aHJlYWRfcmVzdHJpY3Rpb25zLmggICAgICAgICAgfCAgIDUgKworIC4uLi9z YW5kYm94X2ludGVybmFscy9zYW5kYm94X2ludGVybmFscy50cyAgICB8ICAgNCArCisgLi4uL3Vp L3dlYnVpL3NhbmRib3gvc2FuZGJveF9pbnRlcm5hbHNfdWkuY2MgIHwgICA2ICstCisgY29udGVu dC9icm93c2VyL2NoaWxkX3Byb2Nlc3NfaG9zdF9pbXBsLmNjICAgIHwgICA4ICstCisgLi4uL3p5 Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGludXguY2MgICAgIHwgIDM5ICstCisgLi4uL3p5 Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGludXguaCAgICAgIHwgICAxICsKKyBjb250ZW50 L3p5Z290ZS96eWdvdGVfbGludXguY2MgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBjb250ZW50 L3p5Z290ZS96eWdvdGVfbGludXguaCAgICAgICAgICAgICAgICAgfCAgIDIgKworIGNvbnRlbnQv enlnb3RlL3p5Z290ZV9tYWluX2xpbnV4LmNjICAgICAgICAgICB8ICAxNiArLQorIHNhbmRib3gv bGludXgvQlVJTEQuZ24gICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQorIHNhbmRib3gv bGludXgvc2VydmljZXMvZmxhdHBha19waWRfbWFwLmNjICAgICB8ICA1NyArKworIHNhbmRib3gv bGludXgvc2VydmljZXMvZmxhdHBha19waWRfbWFwLmggICAgICB8ICA0NiArKworIHNhbmRib3gv bGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjICAgICB8IDU3NiArKysrKysrKysrKysr KysrKysKKyBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oICAgICAgfCAx MTggKysrKworIHNhbmRib3gvcG9saWN5L0JVSUxELmduICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMyArCisgc2FuZGJveC9wb2xpY3kvbGludXgvc2FuZGJveF9saW51eC5jYyAgICAgICAgIHwg ICA4ICsKKyBzYW5kYm94L3BvbGljeS9saW51eC9zYW5kYm94X2xpbnV4LmggICAgICAgICAgfCAg IDggKworIC4uLi9zZXJ2aWNlX3Byb2Nlc3NfbGF1bmNoZXIuY2MgICAgICAgICAgICAgICB8ICAx MiArLQorIDE5IGZpbGVzIGNoYW5nZWQsIDkwNyBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMo LSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3Bp ZF9tYXAuY2MKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0 cGFrX3BpZF9tYXAuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW5kYm94L2xpbnV4L3NlcnZpY2Vz L2ZsYXRwYWtfc2FuZGJveC5jYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW5kYm94L2xpbnV4L3Nl cnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oCisKK2RpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp dGlnbm9yZQoraW5kZXggOTA1NjAzMDUyMzgwNy4uMmMxM2QwYWQ1ZjFjNyAxMDA2NDQKKy0tLSBh Ly5naXRpZ25vcmUKKysrKyBiLy5naXRpZ25vcmUKK0BAIC03NSw2ICs3NSw3IEBAIHZzLWNocm9t aXVtLXByb2plY3QudHh0CisgLy5hbmRyb2lkX2VtdWxhdG9yLworIC8uY2xhbmdkLworIC8uY2xh bmdkLWluZGV4LworKy8uZmxhdHBhay1idWlsZGVyLworICMgU2V0dGluZ3MgZGlyZWN0b3JpZXMg Zm9yIGVjbGlwc2UKKyAvLmV4dGVybmFsVG9vbEJ1aWxkZXJzLworIC8uc2V0dGluZ3MvCitkaWZm IC0tZ2l0IGEvYmFzZS90aHJlYWRpbmcvdGhyZWFkX3Jlc3RyaWN0aW9ucy5oIGIvYmFzZS90aHJl YWRpbmcvdGhyZWFkX3Jlc3RyaWN0aW9ucy5oCitpbmRleCAxNDk4MzhiZTcyNWYyLi44MTAzNGFj YzcxZTk3IDEwMDY0NAorLS0tIGEvYmFzZS90aHJlYWRpbmcvdGhyZWFkX3Jlc3RyaWN0aW9ucy5o CisrKysgYi9iYXNlL3RocmVhZGluZy90aHJlYWRfcmVzdHJpY3Rpb25zLmgKK0BAIC00MDcsNiAr NDA3LDkgQEAgY2xhc3MgU2NvcGVkQWxsb3dUaHJlYWRKb2luRm9yV2ViUnRjVHJhbnNwb3J0Owor IG5hbWVzcGFjZSBybHpfbGliIHsKKyBjbGFzcyBGaW5hbmNpYWxQaW5nOworIH0KKytuYW1lc3Bh Y2Ugc2FuZGJveCB7CisrY2xhc3MgRmxhdHBha1NhbmRib3g7CisrfQorIG5hbWVzcGFjZSBzZXJ2 aWNlX21hbmFnZXIgeworIGNsYXNzIFNlcnZpY2VQcm9jZXNzTGF1bmNoZXI7CisgfQorQEAgLTY0 OSw2ICs2NTIsNyBAQCBjbGFzcyBCQVNFX0VYUE9SVCBTY29wZWRBbGxvd0Jsb2NraW5nIHsKKyAg IGZyaWVuZCBjbGFzcyByZW1vdGluZzo6CisgICAgICAgU2NvcGVkQnlwYXNzSU9UaHJlYWRSZXN0 cmljdGlvbnM7ICAvLyBodHRwOi8vY3JidWcuY29tLzExNDQxNjEKKyAgIGZyaWVuZCBjbGFzcyBy ZW1vdGluZzo6U2NvcGVkQWxsb3dCbG9ja2luZ0ZvckNyYXNoUmVwb3J0aW5nOworKyAgZnJpZW5k IGNsYXNzIHNhbmRib3g6OkZsYXRwYWtTYW5kYm94OworICAgZnJpZW5kIGNsYXNzIHVpOjpEcm1E aXNwbGF5SG9zdE1hbmFnZXI7CisgICBmcmllbmQgY2xhc3MgdWk6OlNjb3BlZEFsbG93QmxvY2tp bmdGb3JHYm1TdXJmYWNlOworICAgZnJpZW5kIGNsYXNzIHVpOjpTZWxlY3RGaWxlRGlhbG9nTGlu dXg7CitAQCAtNzkyLDYgKzc5Niw3IEBAIGNsYXNzIEJBU0VfRVhQT1JUIFNjb3BlZEFsbG93QmFz ZVN5bmNQcmltaXRpdmVzIHsKKyAgIGZyaWVuZCBjbGFzcyBybHpfbGliOjpGaW5hbmNpYWxQaW5n OworICAgZnJpZW5kIGNsYXNzIHNoZWxsX2ludGVncmF0aW9uX2xpbnV4OjoKKyAgICAgICBMYXVu Y2hYZGdVdGlsaXR5U2NvcGVkQWxsb3dCYXNlU3luY1ByaW1pdGl2ZXM7CisrICBmcmllbmQgY2xh c3Mgc2FuZGJveDo6RmxhdHBha1NhbmRib3g7CisgICBmcmllbmQgY2xhc3Mgc3RvcmFnZTo6T2Jm dXNjYXRlZEZpbGVVdGlsOworICAgZnJpZW5kIGNsYXNzIHN5bmNlcjo6SHR0cEJyaWRnZTsKKyAg IGZyaWVuZCBjbGFzcyBzeW5jZXI6OkdldExvY2FsQ2hhbmdlc1JlcXVlc3Q7CitkaWZmIC0tZ2l0 IGEvY2hyb21lL2Jyb3dzZXIvcmVzb3VyY2VzL3NhbmRib3hfaW50ZXJuYWxzL3NhbmRib3hfaW50 ZXJuYWxzLnRzIGIvY2hyb21lL2Jyb3dzZXIvcmVzb3VyY2VzL3NhbmRib3hfaW50ZXJuYWxzL3Nh bmRib3hfaW50ZXJuYWxzLnRzCitpbmRleCBmNmQyZjNmMGJjNDFjLi5mY2M1OGM2NzM1ZWFhIDEw MDY0NAorLS0tIGEvY2hyb21lL2Jyb3dzZXIvcmVzb3VyY2VzL3NhbmRib3hfaW50ZXJuYWxzL3Nh bmRib3hfaW50ZXJuYWxzLnRzCisrKysgYi9jaHJvbWUvYnJvd3Nlci9yZXNvdXJjZXMvc2FuZGJv eF9pbnRlcm5hbHMvc2FuZGJveF9pbnRlcm5hbHMudHMKK0BAIC0xNDAsNiArMTQwLDcgQEAgZnVu Y3Rpb24gYWRkR29vZEJhZFJvdyhuYW1lOiBzdHJpbmcsIHJlc3VsdDogYm9vbGVhbik6IEhUTUxF bGVtZW50IHsKKyBmdW5jdGlvbiBsaW51eEhhbmRsZXIoKSB7CisgICBjb25zdCBzdWlkU2FuZGJv eCA9IGxvYWRUaW1lRGF0YS5nZXRCb29sZWFuKCdzdWlkJyk7CisgICBjb25zdCBuc1NhbmRib3gg PSBsb2FkVGltZURhdGEuZ2V0Qm9vbGVhbigndXNlck5zJyk7CisrICBjb25zdCBmbGF0cGFrU2Fu ZGJveCA9IGxvYWRUaW1lRGF0YS5nZXRCb29sZWFuKCdmbGF0cGFrJyk7CisgCisgICBsZXQgbGF5 ZXIxU2FuZGJveFR5cGUgPSAnTm9uZSc7CisgICBsZXQgbGF5ZXIxU2FuZGJveENzc0NsYXNzID0g U3RhdHVzQ2xhc3MuQkFEOworQEAgLTE0OSw2ICsxNTAsOSBAQCBmdW5jdGlvbiBsaW51eEhhbmRs ZXIoKSB7CisgICB9IGVsc2UgaWYgKG5zU2FuZGJveCkgeworICAgICBsYXllcjFTYW5kYm94VHlw ZSA9ICdOYW1lc3BhY2UnOworICAgICBsYXllcjFTYW5kYm94Q3NzQ2xhc3MgPSBTdGF0dXNDbGFz cy5HT09EOworKyAgfSBlbHNlIGlmIChmbGF0cGFrU2FuZGJveCkgeworKyAgICBsYXllcjFTYW5k Ym94VHlwZSA9ICdGbGF0cGFrJzsKKysgICAgbGF5ZXIxU2FuZGJveENzc0NsYXNzID0gU3RhdHVz Q2xhc3MuR09PRDsKKyAgIH0KKyAKKyAgIGFkZFN0YXR1c1JvdygnTGF5ZXIgMSBTYW5kYm94Jywg bGF5ZXIxU2FuZGJveFR5cGUsIGxheWVyMVNhbmRib3hDc3NDbGFzcyk7CitkaWZmIC0tZ2l0IGEv Y2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2FuZGJveC9zYW5kYm94X2ludGVybmFsc191aS5jYyBi L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NhbmRib3gvc2FuZGJveF9pbnRlcm5hbHNfdWkuY2MK K2luZGV4IDgyYWEyNzc4N2E1ZTAuLjMyYmY2NzRmMzNkYTYgMTAwNjQ0CistLS0gYS9jaHJvbWUv YnJvd3Nlci91aS93ZWJ1aS9zYW5kYm94L3NhbmRib3hfaW50ZXJuYWxzX3VpLmNjCisrKysgYi9j aHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zYW5kYm94L3NhbmRib3hfaW50ZXJuYWxzX3VpLmNjCitA QCAtMjAsNiArMjAsNyBAQAorICNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9icm93c2VyL3dlYl9j b250ZW50cy5oIgorICNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9icm93c2VyL3dlYl91aS5oIgor ICNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9icm93c2VyL3dlYl91aV9kYXRhX3NvdXJjZS5oIgor KyNpbmNsdWRlICJzYW5kYm94L3BvbGljeS9saW51eC9zYW5kYm94X2xpbnV4LmgiCisgI2luY2x1 ZGUgInNlcnZpY2VzL25ldHdvcmsvcHVibGljL21vam9tL2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5 Lm1vam9tLmgiCisgCisgI2lmIEJVSUxERkxBRyhJU19XSU4pCitAQCAtNDYsNiArNDcsOCBAQCBz dGF0aWMgdm9pZCBTZXRTYW5kYm94U3RhdHVzRGF0YShjb250ZW50OjpXZWJVSURhdGFTb3VyY2Uq IHNvdXJjZSkgeworIAorICAgc291cmNlLT5BZGRCb29sZWFuKCJzdWlkIiwgc3RhdHVzICYgc2Fu ZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtTVUlEKTsKKyAgIHNvdXJjZS0+QWRkQm9vbGVh bigidXNlck5zIiwgc3RhdHVzICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtVc2Vy TlMpOworKyAgc291cmNlLT5BZGRCb29sZWFuKCJmbGF0cGFrIiwKKysgICAgICAgICAgICAgICAg ICAgICBzdGF0dXMgJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hMaW51eDo6a0ZsYXRwYWspOwor ICAgc291cmNlLT5BZGRCb29sZWFuKCJwaWROcyIsIHN0YXR1cyAmIHNhbmRib3g6OnBvbGljeTo6 U2FuZGJveExpbnV4OjprUElETlMpOworICAgc291cmNlLT5BZGRCb29sZWFuKCJuZXROcyIsIHN0 YXR1cyAmIHNhbmRib3g6OnBvbGljeTo6U2FuZGJveExpbnV4OjprTmV0TlMpOworICAgc291cmNl LT5BZGRCb29sZWFuKCJzZWNjb21wQnBmIiwKK0BAIC02Myw3ICs2Niw4IEBAIHN0YXRpYyB2b2lk IFNldFNhbmRib3hTdGF0dXNEYXRhKGNvbnRlbnQ6OldlYlVJRGF0YVNvdXJjZSogc291cmNlKSB7 CisgCisgICAvLyBSZXF1aXJlIGVpdGhlciB0aGUgc2V0dWlkIG9yIG5hbWVzcGFjZSBzYW5kYm94 IGZvciBvdXIgZmlyc3QtbGF5ZXIgc2FuZGJveC4KKyAgIGJvb2wgZ29vZF9sYXllcjEgPSAoc3Rh dHVzICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtTVUlEIHx8CistICAgICAgICAg ICAgICAgICAgICAgIHN0YXR1cyAmIHNhbmRib3g6OnBvbGljeTo6U2FuZGJveExpbnV4OjprVXNl ck5TKSAmJgorKyAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgJiBzYW5kYm94Ojpwb2xpY3k6 OlNhbmRib3hMaW51eDo6a1VzZXJOUyB8fAorKyAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMg JiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hMaW51eDo6a0ZsYXRwYWspICYmCisgICAgICAgICAg ICAgICAgICAgICAgc3RhdHVzICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtQSURO UyAmJgorICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAmIHNhbmRib3g6OnBvbGljeTo6U2Fu ZGJveExpbnV4OjprTmV0TlM7CisgICAvLyBBIHNlY29uZC1sYXllciBzYW5kYm94IGlzIGFsc28g cmVxdWlyZWQgdG8gYmUgYWRlcXVhdGVseSBzYW5kYm94ZWQuCitkaWZmIC0tZ2l0IGEvY29udGVu dC9icm93c2VyL2NoaWxkX3Byb2Nlc3NfaG9zdF9pbXBsLmNjIGIvY29udGVudC9icm93c2VyL2No aWxkX3Byb2Nlc3NfaG9zdF9pbXBsLmNjCitpbmRleCA5NWRmNTc2NTgwYTllLi44ZDVlMDY5NDY2 MGI2IDEwMDY0NAorLS0tIGEvY29udGVudC9icm93c2VyL2NoaWxkX3Byb2Nlc3NfaG9zdF9pbXBs LmNjCisrKysgYi9jb250ZW50L2Jyb3dzZXIvY2hpbGRfcHJvY2Vzc19ob3N0X2ltcGwuY2MKK0BA IC00NSw2ICs0NSw3IEBACisgCisgI2lmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERGTEFH KElTX0NIUk9NRU9TKQorICNpbmNsdWRlICJiYXNlL2xpbnV4X3V0aWwuaCIKKysjaW5jbHVkZSAi c2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaCIKKyAjZWxpZiBCVUlMREZM QUcoSVNfTUFDKQorICNpbmNsdWRlICJiYXNlL2FwcGxlL2ZvdW5kYXRpb25fdXRpbC5oIgorICNp bmNsdWRlICJjb250ZW50L2Jyb3dzZXIvbWFjX2hlbHBlcnMuaCIKK0BAIC03OCw3ICs3OSwxMiBA QCBiYXNlOjpGaWxlUGF0aCBDaGlsZFByb2Nlc3NIb3N0OjpHZXRDaGlsZFBhdGgoaW50IGZsYWdz KSB7CisgI2lmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NIUk9NRU9TKQor ICAgLy8gVXNlIC9wcm9jL3NlbGYvZXhlIHJhdGhlciB0aGFuIG91ciBrbm93biBiaW5hcnkgcGF0 aCBzbyB1cGRhdGVzCisgICAvLyBjYW4ndCBzd2FwIG91dCB0aGUgYmluYXJ5IGZyb20gdW5kZXJu ZWF0aCB1cy4KKy0gIGlmIChjaGlsZF9wYXRoLmVtcHR5KCkgJiYgZmxhZ3MgJiBDSElMRF9BTExP V19TRUxGKSB7CisrICAvLyBUaGlzIGlzIG5vdCBuZWVkZWQgZm9yIEZsYXRwYWtzLCB3aGVyZSB1 cGRhdGVzIGFyZSBnb2luZyB0byBiZSBpbgorKyAgLy8gYSBuZXcgaGFyZGxpbmsgdHJlZS4KKysg IGlmICgoY2hpbGRfcGF0aC5lbXB0eSgpICYmCisrICAgICAgIHNhbmRib3g6OkZsYXRwYWtTYW5k Ym94OjpHZXRJbnN0YW5jZSgpLT5HZXRTYW5kYm94TGV2ZWwoKSA9PQorKyAgICAgICAgICAgc2Fu ZGJveDo6RmxhdHBha1NhbmRib3g6OlNhbmRib3hMZXZlbDo6a05vbmUpICYmCisrICAgICAgZmxh Z3MgJiBDSElMRF9BTExPV19TRUxGKSB7CisgICAgIGNoaWxkX3BhdGggPSBiYXNlOjpGaWxlUGF0 aChiYXNlOjprUHJvY1NlbGZFeGUpOworICAgfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2NvbnRl bnQvYnJvd3Nlci96eWdvdGVfaG9zdC96eWdvdGVfaG9zdF9pbXBsX2xpbnV4LmNjIGIvY29udGVu dC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGludXguY2MKK2luZGV4IDhl Y2E5MThiNjVjYmUuLjE3MDNmYjZhZGUwNDQgMTAwNjQ0CistLS0gYS9jb250ZW50L2Jyb3dzZXIv enlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51eC5jYworKysrIGIvY29udGVudC9icm93 c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGludXguY2MKK0BAIC0xMiw2ICsxMiw3 IEBACisgI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorICNpbmNsdWRlICJiYXNlL3Bvc2l4L3Vu aXhfZG9tYWluX3NvY2tldC5oIgorICNpbmNsdWRlICJiYXNlL3Byb2Nlc3Mva2lsbC5oIgorKyNp bmNsdWRlICJiYXNlL3Byb2Nlc3MvbGF1bmNoLmgiCisgI2luY2x1ZGUgImJhc2UvcHJvY2Vzcy9t ZW1vcnkuaCIKKyAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lv bnMuaCIKKyAjaW5jbHVkZSAiYmFzZS90eXBlcy9maXhlZF9hcnJheS5oIgorQEAgLTIyLDYgKzIz LDcgQEAKKyAjaW5jbHVkZSAiY29udGVudC9jb21tb24venlnb3RlL3p5Z290ZV9oYW5kbGVfaW1w bF9saW51eC5oIgorICNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9jb21tb24venlnb3RlL3p5Z290 ZV9oYW5kbGUuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFs cy5oIgorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5o IgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL25hbWVzcGFjZV9zYW5kYm94Lmgi CisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3VpZC9jbGllbnQvc2V0dWlkX3NhbmRib3hfaG9z dC5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N1aWQvY29tbW9uL3NhbmRib3guaCIKK0BA IC03Miw2ICs3NCw3IEBAIFp5Z290ZUhvc3RJbXBsOjpaeWdvdGVIb3N0SW1wbCgpCisgICAgIDog dXNlX25hbWVzcGFjZV9zYW5kYm94XyhmYWxzZSksCisgICAgICAgdXNlX3N1aWRfc2FuZGJveF8o ZmFsc2UpLAorICAgICAgIHVzZV9zdWlkX3NhbmRib3hfZm9yX2Fkal9vb21fc2NvcmVfKGZhbHNl KSwKKysgICAgICB1c2VfZmxhdHBha19zYW5kYm94XyhmYWxzZSksCisgICAgICAgc2FuZGJveF9i aW5hcnlfKCksCisgICAgICAgenlnb3RlX3BpZHNfbG9ja18oKSwKKyAgICAgICB6eWdvdGVfcGlk c18oKSB7fQorQEAgLTExMCw5ICsxMTMsMTIgQEAgdm9pZCBaeWdvdGVIb3N0SW1wbDo6SW5pdChj b25zdCBiYXNlOjpDb21tYW5kTGluZSYgY29tbWFuZF9saW5lKSB7CisgICAgIHNhbmRib3hfYmlu YXJ5XyA9IHNldHVpZF9zYW5kYm94X2hvc3QtPkdldFNhbmRib3hCaW5hcnlQYXRoKCkudmFsdWUo KTsKKyAgIH0KKyAKKy0gIGlmICghY29tbWFuZF9saW5lLkhhc1N3aXRjaCgKKy0gICAgICAgICAg c2FuZGJveDo6cG9saWN5Ojpzd2l0Y2hlczo6a0Rpc2FibGVOYW1lc3BhY2VTYW5kYm94KSAmJgor LSAgICAgIHNhbmRib3g6OkNyZWRlbnRpYWxzOjpDYW5DcmVhdGVQcm9jZXNzSW5OZXdVc2VyTlMo KSkgeworKyAgaWYgKHNhbmRib3g6OkZsYXRwYWtTYW5kYm94OjpHZXRJbnN0YW5jZSgpLT5HZXRT YW5kYm94TGV2ZWwoKSAhPQorKyAgICAgIHNhbmRib3g6OkZsYXRwYWtTYW5kYm94OjpTYW5kYm94 TGV2ZWw6OmtOb25lKSB7CisrICAgIHVzZV9mbGF0cGFrX3NhbmRib3hfID0gdHJ1ZTsKKysgIH0g ZWxzZSBpZiAoIWNvbW1hbmRfbGluZS5IYXNTd2l0Y2goCisrICAgICAgICAgICAgICAgICBzYW5k Ym94Ojpwb2xpY3k6OnN3aXRjaGVzOjprRGlzYWJsZU5hbWVzcGFjZVNhbmRib3gpICYmCisrICAg ICAgICAgICAgIHNhbmRib3g6OkNyZWRlbnRpYWxzOjpDYW5DcmVhdGVQcm9jZXNzSW5OZXdVc2Vy TlMoKSkgeworICAgICB1c2VfbmFtZXNwYWNlX3NhbmRib3hfID0gdHJ1ZTsKKyAgIH0gZWxzZSBp ZiAoIWNvbW1hbmRfbGluZS5IYXNTd2l0Y2goCisgICAgICAgICAgICAgICAgICBzYW5kYm94Ojpw b2xpY3k6OnN3aXRjaGVzOjprRGlzYWJsZVNldHVpZFNhbmRib3gpICYmCitAQCAtMTgzLDEwICsx ODksMTYgQEAgcGlkX3QgWnlnb3RlSG9zdEltcGw6OkxhdW5jaFp5Z290ZSgKKyAgICAgc2FuZGJv eF9ob3N0LT5TZXR1cExhdW5jaEVudmlyb25tZW50KCk7CisgICB9CisgCistICBiYXNlOjpQcm9j ZXNzIHByb2Nlc3MgPQorLSAgICAgIChpc19zYW5kYm94ZWRfenlnb3RlICYmIHVzZV9uYW1lc3Bh Y2Vfc2FuZGJveF8pCistICAgICAgICAgID8gc2FuZGJveDo6TmFtZXNwYWNlU2FuZGJveDo6TGF1 bmNoUHJvY2VzcygqY21kX2xpbmUsIG9wdGlvbnMpCistICAgICAgICAgIDogYmFzZTo6TGF1bmNo UHJvY2VzcygqY21kX2xpbmUsIG9wdGlvbnMpOworKyAgYmFzZTo6UHJvY2VzcyBwcm9jZXNzOwor KyAgaWYgKGlzX3NhbmRib3hlZF96eWdvdGUgJiYgdXNlX25hbWVzcGFjZV9zYW5kYm94Xykgewor KyAgICBwcm9jZXNzID0gc2FuZGJveDo6TmFtZXNwYWNlU2FuZGJveDo6TGF1bmNoUHJvY2Vzcygq Y21kX2xpbmUsIG9wdGlvbnMpOworKyAgfSBlbHNlIGlmIChpc19zYW5kYm94ZWRfenlnb3RlICYm IHVzZV9mbGF0cGFrX3NhbmRib3hfKSB7CisrICAgIHByb2Nlc3MgPSBzYW5kYm94OjpGbGF0cGFr U2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+TGF1bmNoUHJvY2VzcygqY21kX2xpbmUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcHRpb25zKTsKKysgIH0gZWxzZSB7CisrICAgIHByb2Nlc3MgPSBiYXNlOjpMYXVuY2hQ cm9jZXNzKCpjbWRfbGluZSwgb3B0aW9ucyk7CisrICB9CisrCisgICBDSEVDSyhwcm9jZXNzLklz VmFsaWQoKSkgPDwgIkZhaWxlZCB0byBsYXVuY2ggenlnb3RlIHByb2Nlc3MiOworIAorICAgZHVt bXlfZmQucmVzZXQoKTsKK0BAIC0xOTUsNyArMjA3LDggQEAgcGlkX3QgWnlnb3RlSG9zdEltcGw6 OkxhdW5jaFp5Z290ZSgKKyAKKyAgIHBpZF90IHBpZCA9IHByb2Nlc3MuUGlkKCk7CisgCistICBp ZiAoaXNfc2FuZGJveGVkX3p5Z290ZSAmJiAodXNlX25hbWVzcGFjZV9zYW5kYm94XyB8fCB1c2Vf c3VpZF9zYW5kYm94XykpIHsKKysgIGlmIChpc19zYW5kYm94ZWRfenlnb3RlICYmCisrICAgICAg KHVzZV9uYW1lc3BhY2Vfc2FuZGJveF8gfHwgdXNlX3N1aWRfc2FuZGJveF8gfHwgdXNlX2ZsYXRw YWtfc2FuZGJveF8pKSB7CisgICAgIC8vIFRoZSBuYW1lc3BhY2UgYW5kIFNVSUQgc2FuZGJveCB3 aWxsIGV4ZWN1dGUgdGhlIHp5Z290ZSBpbiBhIG5ldworICAgICAvLyBQSUQgbmFtZXNwYWNlLCBh bmQgdGhlIG1haW4genlnb3RlIHByb2Nlc3Mgd2lsbCB0aGVuIGZvcmsgZnJvbQorICAgICAvLyB0 aGVyZS4gV2F0Y2ggbm93IG91ciBlbGFib3JhdGUgZGFuY2UgdG8gZmluZCBhbmQgdmFsaWRhdGUg dGhlCitAQCAtMjIzLDcgKzIzNiwxMSBAQCBwaWRfdCBaeWdvdGVIb3N0SW1wbDo6TGF1bmNoWnln b3RlKAorIAorICAgICBpZiAocmVhbF9waWQgIT0gcGlkKSB7CisgICAgICAgLy8gUmVhcCB0aGUg c2FuZGJveC4KKy0gICAgICBiYXNlOjpFbnN1cmVQcm9jZXNzR2V0c1JlYXBlZChzdGQ6Om1vdmUo cHJvY2VzcykpOworKyAgICAgIGlmICh1c2VfZmxhdHBha19zYW5kYm94XykgeworKyAgICAgICAg c2FuZGJveDo6RmxhdHBha1NhbmRib3g6OkdldEluc3RhbmNlKCktPklnbm9yZUV4aXRTdGF0dXMo cGlkKTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAgYmFzZTo6RW5zdXJlUHJvY2Vzc0dldHNS ZWFwZWQoYmFzZTo6UHJvY2VzcyhwaWQpKTsKKysgICAgICB9CisgICAgIH0KKyAgICAgcGlkID0g cmVhbF9waWQ7CisgICB9CitAQCAtMjc0LDYgKzI5MSwxMCBAQCB2b2lkIFp5Z290ZUhvc3RJbXBs OjpBZGp1c3RSZW5kZXJlck9PTVNjb3JlKGJhc2U6OlByb2Nlc3NIYW5kbGUgcGlkLAorICAgICBz ZWxpbnV4X3ZhbGlkID0gdHJ1ZTsKKyAgIH0KKyAKKysgIC8vIEZsYXRwYWtzIGNhbm5vdCBtb2Rp ZnkgdGhlaXIgT09NIHNjb3JlLgorKyAgaWYgKHVzZV9mbGF0cGFrX3NhbmRib3hfKQorKyAgICBy ZXR1cm47CisrCisgICBpZiAoIXVzZV9zdWlkX3NhbmRib3hfZm9yX2Fkal9vb21fc2NvcmVfKSB7 CisgICAgIGlmICghYmFzZTo6QWRqdXN0T09NU2NvcmUocGlkLCBzY29yZSkpCisgICAgICAgUExP RyhFUlJPUikgPDwgIkZhaWxlZCB0byBhZGp1c3QgT09NIHNjb3JlIG9mIHJlbmRlcmVyIHdpdGgg cGlkICIgPDwgcGlkOworZGlmZiAtLWdpdCBhL2NvbnRlbnQvYnJvd3Nlci96eWdvdGVfaG9zdC96 eWdvdGVfaG9zdF9pbXBsX2xpbnV4LmggYi9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qvenln b3RlX2hvc3RfaW1wbF9saW51eC5oCitpbmRleCA3MjBkODIzZDRhNjk1Li5hZDQ3MDk2MzY5M2M0 IDEwMDY0NAorLS0tIGEvY29udGVudC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2lt cGxfbGludXguaAorKysrIGIvY29udGVudC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0 X2ltcGxfbGludXguaAorQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgQ09OVEVOVF9FWFBPUlQgWnln b3RlSG9zdEltcGwgOiBwdWJsaWMgWnlnb3RlSG9zdCB7CisgICBib29sIHVzZV9uYW1lc3BhY2Vf c2FuZGJveF87CisgICBib29sIHVzZV9zdWlkX3NhbmRib3hfOworICAgYm9vbCB1c2Vfc3VpZF9z YW5kYm94X2Zvcl9hZGpfb29tX3Njb3JlXzsKKysgIGJvb2wgdXNlX2ZsYXRwYWtfc2FuZGJveF87 CisgICBzdGQ6OnN0cmluZyBzYW5kYm94X2JpbmFyeV87CisgCisgICAvLyBUaGlzIGxvY2sgcHJv dGVjdHMgdGhlIHx6eWdvdGVfcGlkc198IHNldC4KK2RpZmYgLS1naXQgYS9jb250ZW50L3p5Z290 ZS96eWdvdGVfbGludXguY2MgYi9jb250ZW50L3p5Z290ZS96eWdvdGVfbGludXguY2MKK2luZGV4 IGJkY2IzNmY3ZWIyZmUuLjIzOWE2NDYyZTRiNDEgMTAwNjQ0CistLS0gYS9jb250ZW50L3p5Z290 ZS96eWdvdGVfbGludXguY2MKKysrKyBiL2NvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5jYwor QEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFp5Z290ZTo6UHJvY2Vzc1JlcXVlc3RzKCkgeworICAg UENIRUNLKHNpZ2FkZHNldCgmc2lnc2V0LCBTSUdDSExEKSA9PSAwKTsKKyAgIFBDSEVDSyhzaWdw cm9jbWFzayhTSUdfQkxPQ0ssICZzaWdzZXQsICZvcmlnX3NpZ21hc2spID09IDApOworIAorLSAg aWYgKFVzaW5nU1VJRFNhbmRib3goKSB8fCBVc2luZ05TU2FuZGJveCgpKSB7CisrICBpZiAoVXNp bmdTVUlEU2FuZGJveCgpIHx8IFVzaW5nTlNTYW5kYm94KCkgfHwgVXNpbmdGbGF0cGFrU2FuZGJv eCgpKSB7CisgICAgIC8vIExldCB0aGUgWnlnb3RlSG9zdCBrbm93IHdlIGFyZSByZWFkeSB0byBn by4KKyAgICAgLy8gVGhlIHJlY2VpdmluZyBjb2RlIGlzIGluCisgICAgIC8vIGNvbnRlbnQvYnJv d3Nlci96eWdvdGVfaG9zdC96eWdvdGVfaG9zdF9pbXBsX2xpbnV4LmNjLgorQEAgLTIzMyw2ICsy MzMsMTAgQEAgYm9vbCBaeWdvdGU6OlVzaW5nTlNTYW5kYm94KCkgY29uc3QgeworICAgcmV0dXJu IHNhbmRib3hfZmxhZ3NfICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtVc2VyTlM7 CisgfQorIAorK2Jvb2wgWnlnb3RlOjpVc2luZ0ZsYXRwYWtTYW5kYm94KCkgY29uc3QgeworKyAg cmV0dXJuIHNhbmRib3hfZmxhZ3NfICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtG bGF0cGFrOworK30KKysKKyBib29sIFp5Z290ZTo6SGFuZGxlUmVxdWVzdEZyb21Ccm93c2VyKGlu dCBmZCkgeworICAgc3RkOjp2ZWN0b3I8YmFzZTo6U2NvcGVkRkQ+IGZkczsKKyAgIHVpbnQ4X3Qg YnVmW2taeWdvdGVNYXhNZXNzYWdlTGVuZ3RoXTsKK2RpZmYgLS1naXQgYS9jb250ZW50L3p5Z290 ZS96eWdvdGVfbGludXguaCBiL2NvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5oCitpbmRleCAx NjViNzU4ZWZjODk5Li45NjFhZmE3M2Y2NmY1IDEwMDY0NAorLS0tIGEvY29udGVudC96eWdvdGUv enlnb3RlX2xpbnV4LmgKKysrKyBiL2NvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5oCitAQCAt NjQsNiArNjQsOCBAQCBjbGFzcyBaeWdvdGUgeworICAgYm9vbCBVc2luZ1NVSURTYW5kYm94KCkg Y29uc3Q7CisgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIE5TIHNhbmRib3ggaXMgYWN0aXZlLgor ICAgYm9vbCBVc2luZ05TU2FuZGJveCgpIGNvbnN0OworKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRo ZSBGbGF0cGFrIHNhbmRib3ggaXMgYWN0aXZlLgorKyAgYm9vbCBVc2luZ0ZsYXRwYWtTYW5kYm94 KCkgY29uc3Q7CisgCisgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIC8vIFJlcXVlc3RzIGZy b20gdGhlIGJyb3dzZXIuLi4KK2RpZmYgLS1naXQgYS9jb250ZW50L3p5Z290ZS96eWdvdGVfbWFp bl9saW51eC5jYyBiL2NvbnRlbnQvenlnb3RlL3p5Z290ZV9tYWluX2xpbnV4LmNjCitpbmRleCBj N2VlOTE4NzhlNmRkLi45YzJjN2EwNGJkOTY4IDEwMDY0NAorLS0tIGEvY29udGVudC96eWdvdGUv enlnb3RlX21haW5fbGludXguY2MKKysrKyBiL2NvbnRlbnQvenlnb3RlL3p5Z290ZV9tYWluX2xp bnV4LmNjCitAQCAtMzUsNiArMzUsNyBAQAorICNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9jb21t b24venlnb3RlL3p5Z290ZV9mb3JrX2RlbGVnYXRlX2xpbnV4LmgiCisgI2luY2x1ZGUgImNvbnRl bnQvenlnb3RlL3p5Z290ZV9saW51eC5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZp Y2VzL2NyZWRlbnRpYWxzLmgiCisrI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvZmxh dHBha19zYW5kYm94LmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvaW5pdF9w cm9jZXNzX3JlYXBlci5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2xpYmNf aW50ZXJjZXB0b3IuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9uYW1lc3Bh Y2Vfc2FuZGJveC5oIgorQEAgLTEzNSw2ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBFbnRlck5hbWVz cGFjZVNhbmRib3goc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXgqIGxpbnV4X3NhbmRib3gs CisgCisgc3RhdGljIHZvaWQgRW50ZXJMYXllck9uZVNhbmRib3goc2FuZGJveDo6cG9saWN5OjpT YW5kYm94TGludXgqIGxpbnV4X3NhbmRib3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgYm9vbCB1c2luZ19sYXllcjFfc2FuZGJveCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBib29sIHVzaW5nX2ZsYXRwYWtfc2FuZGJveCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpPbmNlQ2xvc3VyZSBwb3N0X2Zvcmtf cGFyZW50X2NhbGxiYWNrKSB7CisgICBEQ0hFQ0sobGludXhfc2FuZGJveCk7CisgCitAQCAtMTU0 LDcgKzE1Niw4IEBAIHN0YXRpYyB2b2lkIEVudGVyTGF5ZXJPbmVTYW5kYm94KHNhbmRib3g6OnBv bGljeTo6U2FuZGJveExpbnV4KiBsaW51eF9zYW5kYm94LAorICAgfSBlbHNlIGlmIChzYW5kYm94 OjpOYW1lc3BhY2VTYW5kYm94OjpJbk5ld1VzZXJOYW1lc3BhY2UoKSkgeworICAgICBFbnRlck5h bWVzcGFjZVNhbmRib3gobGludXhfc2FuZGJveCwgc3RkOjptb3ZlKHBvc3RfZm9ya19wYXJlbnRf Y2FsbGJhY2spKTsKKyAgIH0gZWxzZSB7CistICAgIENIRUNLKCF1c2luZ19sYXllcjFfc2FuZGJv eCk7CisrICAgIC8vIFRoZSBGbGF0cGFrIHNhbmRib3ggbWVhbnMgdGhhdCB3ZSdyZSBmdWxseSBz YW5kYm94ZWQgZnJvbSB0aGUgc3RhcnQuCisrICAgIENIRUNLKCF1c2luZ19sYXllcjFfc2FuZGJv eCB8fCB1c2luZ19mbGF0cGFrX3NhbmRib3gpOworICAgfQorIH0KKyAKK0BAIC0xNzgsOCArMTgx LDExIEBAIGJvb2wgWnlnb3RlTWFpbigKKyAgICAgICBsaW51eF9zYW5kYm94LT5zZXR1aWRfc2Fu ZGJveF9jbGllbnQoKS0+SXNTdWlkU2FuZGJveENoaWxkKCk7CisgICBjb25zdCBib29sIHVzaW5n X25hbWVzcGFjZV9zYW5kYm94ID0KKyAgICAgICBzYW5kYm94OjpOYW1lc3BhY2VTYW5kYm94OjpJ bk5ld1VzZXJOYW1lc3BhY2UoKTsKKysgIGNvbnN0IGJvb2wgdXNpbmdfZmxhdHBha19zYW5kYm94 ID0KKysgICAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+R2V0U2Fu ZGJveExldmVsKCkgPT0KKysgICAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6U2FuZGJveExl dmVsOjprUmVzdHJpY3RlZDsKKyAgIGNvbnN0IGJvb2wgdXNpbmdfbGF5ZXIxX3NhbmRib3ggPQor LSAgICAgIHVzaW5nX3NldHVpZF9zYW5kYm94IHx8IHVzaW5nX25hbWVzcGFjZV9zYW5kYm94Owor KyAgICAgIHVzaW5nX3NldHVpZF9zYW5kYm94IHx8IHVzaW5nX25hbWVzcGFjZV9zYW5kYm94IHx8 IHVzaW5nX2ZsYXRwYWtfc2FuZGJveDsKKyAKKyAgIGlmICh1c2luZ19zZXR1aWRfc2FuZGJveCkg eworICAgICBsaW51eF9zYW5kYm94LT5zZXR1aWRfc2FuZGJveF9jbGllbnQoKS0+Q2xvc2VEdW1t eUZpbGUoKTsKK0BAIC0yMDYsNyArMjEyLDcgQEAgYm9vbCBaeWdvdGVNYWluKAorIAorICAgLy8g VHVybiBvbiB0aGUgZmlyc3QgbGF5ZXIgb2YgdGhlIHNhbmRib3ggaWYgdGhlIGNvbmZpZ3VyYXRp b24gd2FycmFudHMgaXQuCisgICBFbnRlckxheWVyT25lU2FuZGJveCgKKy0gICAgICBsaW51eF9z YW5kYm94LCB1c2luZ19sYXllcjFfc2FuZGJveCwKKysgICAgICBsaW51eF9zYW5kYm94LCB1c2lu Z19sYXllcjFfc2FuZGJveCwgdXNpbmdfZmxhdHBha19zYW5kYm94LAorICAgICAgIGJhc2U6OkJp bmRPbmNlKENsb3NlRmRzLCBsaW51eF9zYW5kYm94LT5HZXRGaWxlRGVzY3JpcHRvcnNUb0Nsb3Nl KCkpKTsKKyAKKyAgIGNvbnN0IGludCBzYW5kYm94X2ZsYWdzID0gbGludXhfc2FuZGJveC0+R2V0 U3RhdHVzKCk7CitAQCAtMjE4LDYgKzIyNCwxMCBAQCBib29sIFp5Z290ZU1haW4oCisgICAgICAg ISEoc2FuZGJveF9mbGFncyAmIHNhbmRib3g6OnBvbGljeTo6U2FuZGJveExpbnV4OjprVXNlck5T KTsKKyAgIENIRUNLX0VRKHVzaW5nX25hbWVzcGFjZV9zYW5kYm94LCBuYW1lc3BhY2Vfc2FuZGJv eF9lbmdhZ2VkKTsKKyAKKysgIGNvbnN0IGJvb2wgZmxhdHBha19zYW5kYm94X2VuZ2FnZWQgPQor KyAgICAgICEhKHNhbmRib3hfZmxhZ3MgJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hMaW51eDo6 a0ZsYXRwYWspOworKyAgQ0hFQ0tfRVEodXNpbmdfZmxhdHBha19zYW5kYm94LCBmbGF0cGFrX3Nh bmRib3hfZW5nYWdlZCk7CisrCisgICBaeWdvdGUgenlnb3RlKHNhbmRib3hfZmxhZ3MsIHN0ZDo6 bW92ZShmb3JrX2RlbGVnYXRlcyksCisgICAgICAgICAgICAgICAgIGJhc2U6Okdsb2JhbERlc2Ny aXB0b3JzOjpEZXNjcmlwdG9yKAorICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu dDMyX3Q+KGtTYW5kYm94SVBDQ2hhbm5lbCksIEdldFNhbmRib3hGRCgpKSk7CitkaWZmIC0tZ2l0 IGEvc2FuZGJveC9saW51eC9CVUlMRC5nbiBiL3NhbmRib3gvbGludXgvQlVJTEQuZ24KK2luZGV4 IDk3ZTNkZWVkNGYyYjkuLjYxOTE2ZWQ5ODA1ZDMgMTAwNjQ0CistLS0gYS9zYW5kYm94L2xpbnV4 L0JVSUxELmduCisrKysgYi9zYW5kYm94L2xpbnV4L0JVSUxELmduCitAQCAtMzExLDYgKzMxMSwx MCBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MpIHsKKyAKKyBjb21wb25lbnQoInNhbmRi b3hfc2VydmljZXMiKSB7CisgICBzb3VyY2VzID0gWworKyAgICAic2VydmljZXMvZmxhdHBha19w aWRfbWFwLmNjIiwKKysgICAgInNlcnZpY2VzL2ZsYXRwYWtfcGlkX21hcC5oIiwKKysgICAgInNl cnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5jYyIsCisrICAgICJzZXJ2aWNlcy9mbGF0cGFrX3NhbmRi b3guaCIsCisgICAgICJzZXJ2aWNlcy9pbml0X3Byb2Nlc3NfcmVhcGVyLmNjIiwKKyAgICAgInNl cnZpY2VzL2luaXRfcHJvY2Vzc19yZWFwZXIuaCIsCisgICAgICJzZXJ2aWNlcy9wcm9jX3V0aWwu Y2MiLAorQEAgLTMyOSw4ICszMzMsMTAgQEAgY29tcG9uZW50KCJzYW5kYm94X3NlcnZpY2VzIikg eworIAorICAgZGVmaW5lcyA9IFsgIlNBTkRCT1hfSU1QTEVNRU5UQVRJT04iIF0KKyAKKy0gIHB1 YmxpY19kZXBzID0gWyAiLy9zYW5kYm94OnNhbmRib3hfZXhwb3J0IiBdCistICBkZXBzID0gWyAi Ly9iYXNlIiBdCisrICBwdWJsaWNfZGVwcyA9IFsKKysgICAgIi8vZGJ1cyIsCisrICAgICIvL3Nh bmRib3g6c2FuZGJveF9leHBvcnQiLAorKyAgXQorIAorICAgaWYgKGNvbXBpbGVfY3JlZGVudGlh bHMpIHsKKyAgICAgc291cmNlcyArPSBbCitkaWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zZXJ2 aWNlcy9mbGF0cGFrX3BpZF9tYXAuY2MgYi9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtf cGlkX21hcC5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMDAuLjU4 YjJhYjU1MjM4NWIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NhbmRib3gvbGludXgvc2VydmljZXMv ZmxhdHBha19waWRfbWFwLmNjCitAQCAtMCwwICsxLDU3IEBACisrLy8gQ29weXJpZ2h0IDIwMjAg VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRo aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh biBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2luY2x1ZGUgInNhbmRi b3gvbGludXgvc2VydmljZXMvZmxhdHBha19waWRfbWFwLmgiCisrCisrbmFtZXNwYWNlIHNhbmRi b3ggeworKworK2Jvb2wgRmxhdHBha1BpZE1hcDo6SW5zZXJ0KFBpZFBhaXIgcGFpcikgeworKyAg aWYgKGV4dGVybmFsX3RvX3JlbGF0aXZlXy5jb250YWlucyhwYWlyLmV4dGVybmFsKSB8fAorKyAg ICAgIHJlbGF0aXZlX3RvX2V4dGVybmFsXy5jb250YWlucyhwYWlyLnJlbGF0aXZlKSkgeworKyAg ICByZXR1cm4gZmFsc2U7CisrICB9CisrCisrICBleHRlcm5hbF90b19yZWxhdGl2ZV9bcGFpci5l eHRlcm5hbF0gPSBwYWlyLnJlbGF0aXZlOworKyAgcmVsYXRpdmVfdG9fZXh0ZXJuYWxfW3BhaXIu cmVsYXRpdmVdID0gcGFpci5leHRlcm5hbDsKKysgIHJldHVybiB0cnVlOworK30KKysKKythYnNs OjpvcHRpb25hbDxwaWRfdD4gRmxhdHBha1BpZE1hcDo6RmluZFJlbGF0aXZlQnlFeHRlcm5hbChw aWRfdCBleHRlcm5hbCkgeworKyAgcmV0dXJuIEZpbmRJbXBsKCZleHRlcm5hbF90b19yZWxhdGl2 ZV8sIGV4dGVybmFsKTsKKyt9CisrCisrYWJzbDo6b3B0aW9uYWw8cGlkX3Q+IEZsYXRwYWtQaWRN YXA6OkZpbmRFeHRlcm5hbEJ5UmVsYXRpdmUocGlkX3QgcmVsYXRpdmUpIHsKKysgIHJldHVybiBG aW5kSW1wbCgmcmVsYXRpdmVfdG9fZXh0ZXJuYWxfLCByZWxhdGl2ZSk7CisrfQorKworK2Fic2w6 Om9wdGlvbmFsPHBpZF90PiBGbGF0cGFrUGlkTWFwOjpEZWxldGVCeUV4dGVybmFsKHBpZF90IGV4 dGVybmFsKSB7CisrICByZXR1cm4gRGVsZXRlSW1wbCgmZXh0ZXJuYWxfdG9fcmVsYXRpdmVfLCAm cmVsYXRpdmVfdG9fZXh0ZXJuYWxfLCBleHRlcm5hbCk7CisrfQorKworK2Fic2w6Om9wdGlvbmFs PHBpZF90PiBGbGF0cGFrUGlkTWFwOjpEZWxldGVCeVJlbGF0aXZlKHBpZF90IHJlbGF0aXZlKSB7 CisrICByZXR1cm4gRGVsZXRlSW1wbCgmcmVsYXRpdmVfdG9fZXh0ZXJuYWxfLCAmZXh0ZXJuYWxf dG9fcmVsYXRpdmVfLCByZWxhdGl2ZSk7CisrfQorKworK2Fic2w6Om9wdGlvbmFsPHBpZF90PiBG bGF0cGFrUGlkTWFwOjpGaW5kSW1wbChiYXNlOjpmbGF0X21hcDxwaWRfdCwgcGlkX3Q+KiBtYXAs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IGtl eSkgeworKyAgYXV0byBpdCA9IG1hcC0+ZmluZChrZXkpOworKyAgcmV0dXJuIGl0ICE9IG1hcC0+ ZW5kKCkgPyBpdC0+c2Vjb25kIDogYWJzbDo6b3B0aW9uYWw8cGlkX3Q+KCk7CisrfQorKworK2Fi c2w6Om9wdGlvbmFsPHBpZF90PiBGbGF0cGFrUGlkTWFwOjpEZWxldGVJbXBsKAorKyAgICBiYXNl OjpmbGF0X21hcDxwaWRfdCwgcGlkX3Q+KiBtYXAsCisrICAgIGJhc2U6OmZsYXRfbWFwPHBpZF90 LCBwaWRfdD4qIHJldmVyc2VkLAorKyAgICBwaWRfdCBrZXkpIHsKKysgIGF1dG8gaXQgPSBtYXAt PmZpbmQoa2V5KTsKKysgIGlmIChpdCA9PSBtYXAtPmVuZCgpKSB7CisrICAgIHJldHVybiBhYnNs OjpvcHRpb25hbDxwaWRfdD4oKTsKKysgIH0KKysKKysgIHBpZF90IHZhbHVlID0gaXQtPnNlY29u ZDsKKysgIHJldmVyc2VkLT5lcmFzZSh2YWx1ZSk7CisrICBtYXAtPmVyYXNlKGl0KTsKKysgIHJl dHVybiB2YWx1ZTsKKyt9CisrCisrfSAgLy8gbmFtZXNwYWNlIHNhbmRib3gKK2RpZmYgLS1naXQg YS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfcGlkX21hcC5oIGIvc2FuZGJveC9saW51 eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAwMDAuLjIyNzk5ZWI0MmY3ODIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NhbmRi b3gvbGludXgvc2VydmljZXMvZmxhdHBha19waWRfbWFwLmgKK0BAIC0wLDAgKzEsNDYgQEAKKysv LyBDb3B5cmlnaHQgMjAyMCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysK KysjaWZuZGVmIFNBTkRCT1hfTElOVVhfU0VSVklDRVNfRkxBVFBBS19QSURfTUFQX0hfCisrI2Rl ZmluZSBTQU5EQk9YX0xJTlVYX1NFUlZJQ0VTX0ZMQVRQQUtfUElEX01BUF9IXworKworKyNpbmNs dWRlICJiYXNlL2NvbnRhaW5lcnMvZmxhdF9tYXAuaCIKKysjaW5jbHVkZSAidGhpcmRfcGFydHkv YWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmgiCisrCisrbmFtZXNwYWNlIHNhbmRib3gg eworKworKy8vIEEgYmlkaXJlY3Rpb25hbCBtYXAgb2YgZXh0ZXJuYWwgUElEcyBhbmQgcmVsYXRp dmUgUElEcyBmb3IgdGhlIEZsYXRwYWsKKysvLyBzYW5kYm94LiAiRXh0ZXJuYWwiIFBJRHMgYXJl IHRoZSBQSUQgdmFsdWVzIHRoYXQgRmxhdHBhaydzIFNwYXduIEFQSSByZXR1cm5zLAorKy8vIHJl bGF0aXZlIHRvIHRoZSBob3N0IHN5c3RlbSwgYW5kICJyZWxhdGl2ZSIgUElEcyBhcmUgdGhlIFBJ RHMgdGhvc2UgcHJvY2Vzc2VzCisrLy8gYXJlIGtub3duIGJ5IGZyb20gaW5zaWRlIHRoZSBzYW5k Ym94LgorK2NsYXNzIEZsYXRwYWtQaWRNYXAgeworKyBwdWJsaWM6CisrICBzdHJ1Y3QgUGlkUGFp ciB7CisrICAgIHBpZF90IGV4dGVybmFsOworKyAgICBwaWRfdCByZWxhdGl2ZTsKKysgIH07Cisr CisrICBGbGF0cGFrUGlkTWFwKCkgPSBkZWZhdWx0OworKworKyAgYm9vbCBJbnNlcnQoUGlkUGFp ciBwYWlyKTsKKysKKysgIGFic2w6Om9wdGlvbmFsPHBpZF90PiBGaW5kUmVsYXRpdmVCeUV4dGVy bmFsKHBpZF90IGV4dGVybmFsKTsKKysgIGFic2w6Om9wdGlvbmFsPHBpZF90PiBGaW5kRXh0ZXJu YWxCeVJlbGF0aXZlKHBpZF90IHJlbGF0aXZlKTsKKysKKysgIGFic2w6Om9wdGlvbmFsPHBpZF90 PiBEZWxldGVCeVJlbGF0aXZlKHBpZF90IHJlbGF0aXZlKTsKKysgIGFic2w6Om9wdGlvbmFsPHBp ZF90PiBEZWxldGVCeUV4dGVybmFsKHBpZF90IGV4dGVybmFsKTsKKysKKysgcHJpdmF0ZToKKysg IGFic2w6Om9wdGlvbmFsPHBpZF90PiBGaW5kSW1wbChiYXNlOjpmbGF0X21hcDxwaWRfdCwgcGlk X3Q+KiBtYXAsIHBpZF90IGtleSk7CisrICBhYnNsOjpvcHRpb25hbDxwaWRfdD4gRGVsZXRlSW1w bChiYXNlOjpmbGF0X21hcDxwaWRfdCwgcGlkX3Q+KiBtYXAsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBiYXNlOjpmbGF0X21hcDxwaWRfdCwgcGlkX3Q+KiByZXZlcnNlZCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IGtleSk7CisrCisrICBi YXNlOjpmbGF0X21hcDxwaWRfdCwgcGlkX3Q+IGV4dGVybmFsX3RvX3JlbGF0aXZlXzsKKysgIGJh c2U6OmZsYXRfbWFwPHBpZF90LCBwaWRfdD4gcmVsYXRpdmVfdG9fZXh0ZXJuYWxfOworK307ICAv LyBuYW1lc3BhY2Ugc2FuZGJveAorKworK30gIC8vIG5hbWVzcGFjZSBzYW5kYm94CisrCisrI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3gu Y2MgYi9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5jYworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMDAuLjJhOTE1YTViOWZhMTEKKy0tLSAvZGV2 L251bGwKKysrKyBiL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjCitA QCAtMCwwICsxLDU3NiBAQAorKy8vIENvcHlyaWdodCAyMDE5IFRoZSBDaHJvbWl1bSBBdXRob3Jz LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0 aGUgTElDRU5TRSBmaWxlLgorKworKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2Zs YXRwYWtfc2FuZGJveC5oIgorKworKyNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8c3N0 cmVhbT4KKysjaW5jbHVkZSA8c3RyaW5nPgorKworKyNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVf cGF0aC5oIgorKyNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfdXRpbC5oIgorKyNpbmNsdWRlICJi YXNlL2Z1bmN0aW9uYWwvYmluZC5oIgorKyNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKysjaW5j bHVkZSAiYmFzZS9wcm9jZXNzL3Byb2Nlc3NfaGFuZGxlLmgiCisrI2luY2x1ZGUgImJhc2Uvc3Ry aW5ncy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNpb25zLmgiCisrI2luY2x1ZGUgImJhc2Uvc3RyaW5n cy9zdHJpbmdfdXRpbC5oIgorKyNpbmNsdWRlICJiYXNlL3N5bmNocm9uaXphdGlvbi9sb2NrLmgi CisrI2luY2x1ZGUgImJhc2UvdGhyZWFkaW5nL3Njb3BlZF9ibG9ja2luZ19jYWxsLmgiCisrI2lu Y2x1ZGUgImJhc2UvdGhyZWFkaW5nL3RocmVhZF9yZXN0cmljdGlvbnMuaCIKKysjaW5jbHVkZSAi ZGJ1cy9idXMuaCIKKysjaW5jbHVkZSAiZGJ1cy9tZXNzYWdlLmgiCisrI2luY2x1ZGUgImRidXMv b2JqZWN0X3BhdGguaCIKKysjaW5jbHVkZSAiZGJ1cy9vYmplY3RfcHJveHkuaCIKKysjaW5jbHVk ZSAiZGJ1cy9wcm9wZXJ0eS5oIgorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2Zs YXRwYWtfcGlkX21hcC5oIgorKworK25hbWVzcGFjZSBzYW5kYm94IHsKKysKKytuYW1lc3BhY2Ug eworK2NvbnN0IGJhc2U6OkZpbGVQYXRoIGtGbGF0cGFrQXBwUGF0aCgiL2FwcCIpOworK2NvbnN0 IGJhc2U6OkZpbGVQYXRoIGtGbGF0cGFrSW5mb1BhdGgoIi8uZmxhdHBhay1pbmZvIik7CisrCisr Y29uc3QgY2hhciBrRmxhdHBha1BvcnRhbFNlcnZpY2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9w LnBvcnRhbC5GbGF0cGFrIjsKKytjb25zdCBjaGFyIGtGbGF0cGFrUG9ydGFsT2JqZWN0UGF0aFtd ID0gIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL0ZsYXRwYWsiOworK2NvbnN0IGNoYXIga0ZsYXRw YWtQb3J0YWxJbnRlcmZhY2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5GbGF0cGFr IjsKKysKKysjaWZuZGVmIE5ERUJVRworK2NvbnN0IGNoYXIga0Rpc2FibGVGdWxsRmxhdHBha1Nh bmRib3hbXSA9ICJkaXNhYmxlLWZ1bGwtZmxhdHBhay1zYW5kYm94IjsKKysjZW5kaWYKKysKKytz dHJ1Y3QgUG9ydGFsUHJvcGVydGllcyA6IGRidXM6OlByb3BlcnR5U2V0IHsKKysgIGRidXM6OlBy b3BlcnR5PHVpbnQzMl90PiB2ZXJzaW9uOworKyAgZGJ1czo6UHJvcGVydHk8dWludDMyX3Q+IHN1 cHBvcnRzOworKworKyAgZW51bSBGbGF0cGFrUG9ydGFsU3VwcG9ydHMgeworKyAgICBrRmxhdHBh a1BvcnRhbF9FeHBvc2VQaWRzID0gMSA8PCAwLAorKyAgfTsKKysKKysgIGV4cGxpY2l0IFBvcnRh bFByb3BlcnRpZXMoZGJ1czo6T2JqZWN0UHJveHkqIG9iamVjdF9wcm94eSkKKysgICAgICA6IGRi dXM6OlByb3BlcnR5U2V0KG9iamVjdF9wcm94eSwga0ZsYXRwYWtQb3J0YWxJbnRlcmZhY2VOYW1l LCB7fSkgeworKyAgICBSZWdpc3RlclByb3BlcnR5KCJ2ZXJzaW9uIiwgJnZlcnNpb24pOworKyAg ICBSZWdpc3RlclByb3BlcnR5KCJzdXBwb3J0cyIsICZzdXBwb3J0cyk7CisrICB9CisrCisrICB+ UG9ydGFsUHJvcGVydGllcygpIG92ZXJyaWRlID0gZGVmYXVsdDsKKyt9OworKworK3ZvaWQgV3Jp dGVTdHJpbmdBc0J5dGVBcnJheShkYnVzOjpNZXNzYWdlV3JpdGVyKiB3cml0ZXIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKysgIHdyaXRl ci0+QXBwZW5kQXJyYXlPZkJ5dGVzKGJhc2U6Om1ha2Vfc3BhbigKKysgICAgICByZWludGVycHJl dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHIuY19zdHIoKSksIHN0ci5zaXplKCkgKyAxKSk7Cisr fQorKworK3ZvaWQgV3JpdGVGZFBhaXJNYXAoZGJ1czo6TWVzc2FnZVdyaXRlciogd3JpdGVyLCBp bnQgc291cmNlX2ZkLCBpbnQgZGVzdF9mZCkgeworKyAgZGJ1czo6TWVzc2FnZVdyaXRlciBlbnRy eV93cml0ZXIobnVsbHB0cik7CisrICB3cml0ZXItPk9wZW5EaWN0RW50cnkoJmVudHJ5X3dyaXRl cik7CisrCisrICBlbnRyeV93cml0ZXIuQXBwZW5kVWludDMyKGRlc3RfZmQpOworKyAgZW50cnlf d3JpdGVyLkFwcGVuZEZpbGVEZXNjcmlwdG9yKHNvdXJjZV9mZCk7CisrCisrICB3cml0ZXItPkNs b3NlQ29udGFpbmVyKCZlbnRyeV93cml0ZXIpOworK30KKysKKyt9ICAvLyBuYW1lc3BhY2UKKysK KytlbnVtIEZsYXRwYWtTcGF3bkZsYWdzIHsKKysgIGtGbGF0cGFrU3Bhd25fQ2xlYXJFbnZpcm9u bWVudCA9IDEgPDwgMCwKKysgIGtGbGF0cGFrU3Bhd25fTGF0ZXN0ID0gMSA8PCAxLAorKyAga0Zs YXRwYWtTcGF3bl9TYW5kYm94ID0gMSA8PCAyLAorKyAga0ZsYXRwYWtTcGF3bl9Ob05ldHdvcmsg PSAxIDw8IDMsCisrICBrRmxhdHBha1NwYXduX1dhdGNoQnVzID0gMSA8PCA0LAorKyAga0ZsYXRw YWtTcGF3bl9FeHBvc2VQaWRzID0gMSA8PCA1LAorKyAga0ZsYXRwYWtTcGF3bl9Ob3RpZnlTdGFy dCA9IDEgPDwgNiwKKyt9OworKworK2VudW0gRmxhdHBha1NwYXduU2FuZGJveEZsYWdzIHsKKysg IGtGbGF0cGFrU3Bhd25TYW5kYm94X1NoYXJlRGlzcGxheSA9IDEgPDwgMCwKKysgIGtGbGF0cGFr U3Bhd25TYW5kYm94X1NoYXJlU291bmQgPSAxIDw8IDEsCisrICBrRmxhdHBha1NwYXduU2FuZGJv eF9TaGFyZUdwdSA9IDEgPDwgMiwKKysgIGtGbGF0cGFrU3Bhd25TYW5kYm94X1NoYXJlU2Vzc2lv bkJ1cyA9IDEgPDwgMywKKysgIGtGbGF0cGFrU3Bhd25TYW5kYm94X1NoYXJlQTExeUJ1cyA9IDEg PDwgNCwKKyt9OworKworK0ZsYXRwYWtTYW5kYm94OjpGbGF0cGFrU2FuZGJveCgpCisrICAgIDog YnVzX3RocmVhZF8oIkZsYXRwYWtQb3J0YWxCdXMiKSwgcHJvY2Vzc19pbmZvX2N2XygmcHJvY2Vz c19pbmZvX2xvY2tfKSB7fQorKworKy8vIHN0YXRpYworK0ZsYXRwYWtTYW5kYm94KiBGbGF0cGFr U2FuZGJveDo6R2V0SW5zdGFuY2UoKSB7CisrICBzdGF0aWMgYmFzZTo6Tm9EZXN0cnVjdG9yPEZs YXRwYWtTYW5kYm94PiBpbnN0YW5jZTsKKysgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKKyt9Cisr CisrRmxhdHBha1NhbmRib3g6OlNhbmRib3hMZXZlbCBGbGF0cGFrU2FuZGJveDo6R2V0U2FuZGJv eExldmVsKCkgeworKyAgaWYgKHNhbmRib3hfbGV2ZWxfKSB7CisrICAgIHJldHVybiAqc2FuZGJv eF9sZXZlbF87CisrICB9CisrCisrICAvLyBYWFg6IFRoZXNlIG9wZXJhdGlvbnMgc2hvdWxkbid0 IGFjdHVhbGx5IGhhdmUgYSBtYWpvciBibG9ja2luZyB0aW1lLAorKyAgLy8gYXMgLmZsYXRwYWst aW5mbyBpcyBvbiBhIHRtcGZzLgorKyAgYmFzZTo6U2NvcGVkQWxsb3dCbG9ja2luZyBzY29wZWRf YWxsb3dfYmxvY2tpbmc7CisrCisrICBpZiAoIWJhc2U6OlBhdGhFeGlzdHMoa0ZsYXRwYWtJbmZv UGF0aCkpIHsKKysgICAgc2FuZGJveF9sZXZlbF8gPSBTYW5kYm94TGV2ZWw6OmtOb25lOworKyAg fSBlbHNlIHsKKysgICAgLy8gY2hyb21lIGhhcyBhbiBJTkkgcGFyc2VyLCBidXQgc2FuZGJveCBj YW4ndCBkZXBlbmQgb24gYW55dGhpbmcgaW5zaWRlCisrICAgIC8vIGNocm9tZSwgc28gdGhlIC5m bGF0cGFrLWluZm8gSU5JIGlzIG1hbnVhbGx5IGNoZWNrZWQgZm9yIHRoZSBzYW5kYm94CisrICAg IC8vIG9wdGlvbi4KKysKKysgICAgc3RkOjpzdHJpbmcgY29udGVudHM7CisrICAgIENIRUNLKFJl YWRGaWxlVG9TdHJpbmcoa0ZsYXRwYWtJbmZvUGF0aCwgJmNvbnRlbnRzKSk7CisrICAgIERDSEVD SyghY29udGVudHMuZW1wdHkoKSk7CisrCisrICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBpc3MoY29u dGVudHMpOworKyAgICBzdGQ6OnN0cmluZyBsaW5lOworKyAgICBib29sIGluX2luc3RhbmNlID0g ZmFsc2U7CisrICAgIHdoaWxlIChzdGQ6OmdldGxpbmUoaXNzLCBsaW5lKSkgeworKyAgICAgIGlm ICghbGluZS5lbXB0eSgpICYmIGxpbmVbMF0gPT0gJ1snKSB7CisrICAgICAgICBEQ0hFQ0sobGlu ZS5iYWNrKCkgPT0gJ10nKTsKKysKKysgICAgICAgIGlmIChsaW5lID09ICJbSW5zdGFuY2VdIikg eworKyAgICAgICAgICBEQ0hFQ0soIWluX2luc3RhbmNlKTsKKysgICAgICAgICAgaW5faW5zdGFu Y2UgPSB0cnVlOworKyAgICAgICAgfSBlbHNlIGlmIChpbl9pbnN0YW5jZSkgeworKyAgICAgICAg ICAvLyBMZWF2aW5nIHRoZSBJbnN0YW5jZSBzZWN0aW9uLCBzYW5kYm94PXRydWUgY2FuJ3QgY29t ZSBub3cuCisrICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICAgIH0gZWxzZSBpZiAo aW5faW5zdGFuY2UgJiYgbGluZSA9PSAic2FuZGJveD10cnVlIikgeworKyAgICAgICAgc2FuZGJv eF9sZXZlbF8gPSBTYW5kYm94TGV2ZWw6OmtSZXN0cmljdGVkOworKyAgICAgICAgYnJlYWs7Cisr ICAgICAgfQorKyAgICB9CisrCisrICAgIGlmICghc2FuZGJveF9sZXZlbF8pIHsKKysgICAgICBz YW5kYm94X2xldmVsXyA9IFNhbmRib3hMZXZlbDo6a0ZsYXRwYWs7CisrICAgIH0KKysgIH0KKysK KysjaWZuZGVmIE5ERUJVRworKyAgaWYgKHNhbmRib3hfbGV2ZWxfID09IFNhbmRib3hMZXZlbDo6 a0ZsYXRwYWsgJiYKKysgICAgICBiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3VycmVudFByb2Nlc3Mo KS0+SGFzU3dpdGNoKAorKyAgICAgICAgICBrRGlzYWJsZUZ1bGxGbGF0cGFrU2FuZGJveCkpIHsK KysgICAgc2FuZGJveF9sZXZlbF8gPSBTYW5kYm94TGV2ZWw6OmtSZXN0cmljdGVkOworKyAgfQor KyNlbmRpZgorKworKyAgcmV0dXJuICpzYW5kYm94X2xldmVsXzsKKyt9CisrCisrYm9vbCBGbGF0 cGFrU2FuZGJveDo6SXNQaWRTYW5kYm94ZWQoYmFzZTo6UHJvY2Vzc0lkIHJlbGF0aXZlX3BpZCkg eworKyAgYmFzZTo6U2NvcGVkQmxvY2tpbmdDYWxsIHNjb3BlZF9ibG9ja2luZ19jYWxsKEZST01f SEVSRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi YXNlOjpCbG9ja2luZ1R5cGU6Ok1BWV9CTE9DSyk7CisrCisrICBiYXNlOjpBdXRvTG9jayBsb2Nr ZXIocHJvY2Vzc19pbmZvX2xvY2tfKTsKKysKKysgIHJldHVybiBydW5uaW5nX3Byb2Nlc3Nlc18u RmluZEV4dGVybmFsQnlSZWxhdGl2ZShyZWxhdGl2ZV9waWQpLmhhc192YWx1ZSgpOworK30KKysK KytiYXNlOjpQcm9jZXNzIEZsYXRwYWtTYW5kYm94OjpMYXVuY2hQcm9jZXNzKAorKyAgICBjb25z dCBiYXNlOjpDb21tYW5kTGluZSYgY21kbGluZSwKKysgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0 aW9ucyYgbGF1bmNoX29wdGlvbnMpIHsKKysgIGJhc2U6OlByb2Nlc3NJZCBleHRlcm5hbF9waWQg PSBTcGF3bihjbWRsaW5lLCBsYXVuY2hfb3B0aW9ucyk7CisrICBpZiAoZXh0ZXJuYWxfcGlkID09 IGJhc2U6OmtOdWxsUHJvY2Vzc0lkKSB7CisrICAgIHJldHVybiBiYXNlOjpQcm9jZXNzKCk7Cisr ICB9CisrCisrICBiYXNlOjpQcm9jZXNzSWQgcmVsYXRpdmVfcGlkID0gR2V0UmVsYXRpdmVQaWQo ZXh0ZXJuYWxfcGlkKTsKKysgIGlmIChyZWxhdGl2ZV9waWQgPT0gYmFzZTo6a051bGxQcm9jZXNz SWQpIHsKKysgICAgLy8gVHJlYXQgZWFybHkgc3RvcHMgYXMgYSBsYXVuY2ggZmFpbHVyZS4KKysg ICAgcmV0dXJuIGJhc2U6OlByb2Nlc3MoKTsKKysgIH0KKysKKysgIHJldHVybiBiYXNlOjpQcm9j ZXNzKHJlbGF0aXZlX3BpZCk7CisrfQorKworK2Jvb2wgRmxhdHBha1NhbmRib3g6OldhaXQoYmFz ZTo6UHJvY2Vzc0lkIHJlbGF0aXZlX3BpZCwgaW50KiBleGl0X2NvZGUpIHsKKysgIGJhc2U6OlNj b3BlZEJsb2NraW5nQ2FsbCBzY29wZWRfYmxvY2tpbmdfY2FsbChGUk9NX0hFUkUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6QmxvY2tpbmdU eXBlOjpNQVlfQkxPQ0spOworKworKyAgYmFzZTo6QXV0b0xvY2sgbG9ja2VyKHByb2Nlc3NfaW5m b19sb2NrXyk7CisrCisrICBmb3IgKDs7KSB7CisrICAgIGlmIChydW5uaW5nX3Byb2Nlc3Nlc18u RmluZEV4dGVybmFsQnlSZWxhdGl2ZShyZWxhdGl2ZV9waWQpKSB7CisrICAgICAgLy8gUHJvY2Vz cyBpcyBzdGlsbCBydW5uaW5nLgorKyAgICAgIHByb2Nlc3NfaW5mb19jdl8uV2FpdCgpOworKyAg ICAgIGNvbnRpbnVlOworKyAgICB9CisrCisrICAgIGF1dG8gaXQgPSBleGl0ZWRfcHJvY2Vzc19z dGF0dXNlc18uZmluZChyZWxhdGl2ZV9waWQpOworKyAgICBpZiAoaXQgPT0gZXhpdGVkX3Byb2Nl c3Nfc3RhdHVzZXNfLmVuZCgpKSB7CisrICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBoYXBwZW4g aWYgYW5vdGhlciBjYWxsZXIgaGFkIG1hcmtlZCB0aGUgZXhpdCBzdGF0dXMKKysgICAgICAvLyB0 byBiZSBpZ25vcmVkLiBUcmVhdCBpdCBsaWtlIHdhaXRwaWQgcmV0dXJuaW5nIEVTUkNILgorKyAg ICAgIExPRyhFUlJPUikgPDwgIlBJRCAiIDw8IHJlbGF0aXZlX3BpZCA8PCAiIGhhZCBubyBleGl0 IHN0YXR1cyI7CisrICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrCisrICAgIGlmIChleGl0 X2NvZGUpIHsKKysgICAgICAqZXhpdF9jb2RlID0gaXQtPnNlY29uZDsKKysgICAgfQorKyAgICBl eGl0ZWRfcHJvY2Vzc19zdGF0dXNlc18uZXJhc2UoaXQpOworKyAgICByZXR1cm4gdHJ1ZTsKKysg IH0KKyt9CisrCisrdm9pZCBGbGF0cGFrU2FuZGJveDo6SWdub3JlRXhpdFN0YXR1cyhiYXNlOjpQ cm9jZXNzSWQgcmVsYXRpdmVfcGlkKSB7CisrICBiYXNlOjpTY29wZWRCbG9ja2luZ0NhbGwgc2Nv cGVkX2Jsb2NraW5nX2NhbGwoRlJPTV9IRVJFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OkJsb2NraW5nVHlwZTo6TUFZX0JMT0NLKTsKKysK KysgIGJhc2U6OkF1dG9Mb2NrIGxvY2tlcihwcm9jZXNzX2luZm9fbG9ja18pOworKworKyAgQ0hF Q0socnVubmluZ19wcm9jZXNzZXNfLkZpbmRFeHRlcm5hbEJ5UmVsYXRpdmUocmVsYXRpdmVfcGlk KSk7CisrICBpZ25vcmVfc3RhdHVzXy5pbnNlcnQocmVsYXRpdmVfcGlkKTsKKyt9CisrCisrdm9p ZCBGbGF0cGFrU2FuZGJveDo6U3RhcnRCdXNUaHJlYWQoKSB7CisrICBpZiAoIWJ1c190aHJlYWRf LklzUnVubmluZygpKSB7CisrICAgIGJhc2U6OlRocmVhZDo6T3B0aW9ucyBvcHRpb25zOworKyAg ICBvcHRpb25zLm1lc3NhZ2VfcHVtcF90eXBlID0gYmFzZTo6TWVzc2FnZVB1bXBUeXBlOjpJTzsK KysgICAgQ0hFQ0soYnVzX3RocmVhZF8uU3RhcnRXaXRoT3B0aW9ucyhzdGQ6Om1vdmUob3B0aW9u cykpKTsKKysKKysgICAgYnVzX3RocmVhZF8udGFza19ydW5uZXIoKS0+UG9zdFRhc2soCisrICAg ICAgICBGUk9NX0hFUkUsIGJhc2U6OkJpbmRPbmNlKCZGbGF0cGFrU2FuZGJveDo6SW5pdGlhbGl6 ZUJ1c1RocmVhZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5y ZXRhaW5lZCh0aGlzKSkpOworKyAgfQorK30KKysKKytkYnVzOjpCdXMqIEZsYXRwYWtTYW5kYm94 OjpBY3F1aXJlQnVzRnJvbUJ1c1RocmVhZCgpIHsKKysgIC8vIE5vdGUgdGhhdCBkZXN0cnVjdGlv biBvZiB0aGUgYnVzIGlzIG5vdCBhIGNvbmNlcm4sIGJlY2F1c2Ugb25jZSB0aGUKKysgIC8vIHRo cmVhZCBkaWVzIGl0cyBidXMgY29ubmVjdGlvbiB3aWxsIGJlIHRlcm1pbmF0ZWQgYW55d2F5IGFu ZCB0aGUKKysgIC8vIHBvcnRhbCB3aWxsIG5vdGljZS4KKysgIHN0YXRpYyBiYXNlOjpOb0Rlc3Ry dWN0b3I8c2NvcGVkX3JlZnB0cjxkYnVzOjpCdXM+PiBidXMoW10geworKyAgICBkYnVzOjpCdXM6 Ok9wdGlvbnMgb3B0aW9uczsKKysgICAgb3B0aW9ucy5idXNfdHlwZSA9IGRidXM6OkJ1czo6U0VT U0lPTjsKKysgICAgb3B0aW9ucy5jb25uZWN0aW9uX3R5cGUgPSBkYnVzOjpCdXM6OlBSSVZBVEU7 CisrICAgIG9wdGlvbnMuZGJ1c190YXNrX3J1bm5lciA9IGJhc2U6OlNlcXVlbmNlZFRhc2tSdW5u ZXI6OkdldEN1cnJlbnREZWZhdWx0KCk7CisrCisrICAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291 bnRlZDxkYnVzOjpCdXM+KG9wdGlvbnMpOworKyAgfSgpKTsKKysKKysgIHJldHVybiBidXMtPmdl dCgpOworK30KKysKKytkYnVzOjpPYmplY3RQcm94eSogRmxhdHBha1NhbmRib3g6OkdldFBvcnRh bE9iamVjdFByb3h5KCkgeworKyAgcmV0dXJuIEFjcXVpcmVCdXNGcm9tQnVzVGhyZWFkKCktPkdl dE9iamVjdFByb3h5KAorKyAgICAgIGtGbGF0cGFrUG9ydGFsU2VydmljZU5hbWUsIGRidXM6Ok9i amVjdFBhdGgoa0ZsYXRwYWtQb3J0YWxPYmplY3RQYXRoKSk7CisrfQorKworK3ZvaWQgRmxhdHBh a1NhbmRib3g6OkluaXRpYWxpemVCdXNUaHJlYWQoKSB7CisrICBkYnVzOjpPYmplY3RQcm94eSog b2JqZWN0X3Byb3h5ID0gR2V0UG9ydGFsT2JqZWN0UHJveHkoKTsKKysKKysgIFBvcnRhbFByb3Bl cnRpZXMgcHJvcGVydGllcyhvYmplY3RfcHJveHkpOworKyAgcHJvcGVydGllcy5Db25uZWN0U2ln bmFscygpOworKworKyAgQ0hFQ0socHJvcGVydGllcy5HZXRBbmRCbG9jaygmcHJvcGVydGllcy52 ZXJzaW9uKSkKKysgICAgICA8PCAiRmFpbGVkIHRvIGdldCBwb3J0YWwgdmVyc2lvbiI7CisrICBD SEVDSyhwcm9wZXJ0aWVzLkdldEFuZEJsb2NrKCZwcm9wZXJ0aWVzLnN1cHBvcnRzKSkKKysgICAg ICA8PCAiRmFpbGVkIHRvIGdldCBwb3J0YWwgc3VwcG9ydHMiOworKworKyAgaWYgKHByb3BlcnRp ZXMudmVyc2lvbi52YWx1ZSgpIDwgNCkgeworKyAgICBMT0coRkFUQUwpIDw8ICJZb3VyIEZsYXRw YWsgdmVyc2lvbiBpcyB0b28gb2xkLCBwbGVhc2UgdXBkYXRlIGl0IjsKKysgIH0KKysKKysgIGlm ICghKHByb3BlcnRpZXMuc3VwcG9ydHMudmFsdWUoKSAmCisrICAgICAgICBQb3J0YWxQcm9wZXJ0 aWVzOjprRmxhdHBha1BvcnRhbF9FeHBvc2VQaWRzKSkgeworKyAgICBMT0coRkFUQUwpIDw8ICJZ b3VyIEZsYXRwYWsgaW5zdGFsbGF0aW9uIGlzIHNldHVpZCwgd2hpY2ggaXMgbm90IHN1cHBvcnRl ZCI7CisrICB9CisrCisrICBvYmplY3RfcHJveHktPkNvbm5lY3RUb1NpZ25hbCgKKysgICAgICBr RmxhdHBha1BvcnRhbEludGVyZmFjZU5hbWUsICJTcGF3blN0YXJ0ZWQiLAorKyAgICAgIGJhc2U6 OkJpbmRSZXBlYXRpbmcoJkZsYXRwYWtTYW5kYm94OjpPblNwYXduU3RhcnRlZFNpZ25hbCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OlVucmV0YWluZWQodGhpcykpLAorKyAgICAg IGJhc2U6OkJpbmRPbmNlKCZGbGF0cGFrU2FuZGJveDo6T25TaWduYWxDb25uZWN0ZWQsCisrICAg ICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCh0aGlzKSkpOworKworKyAgb2JqZWN0 X3Byb3h5LT5Db25uZWN0VG9TaWduYWwoCisrICAgICAga0ZsYXRwYWtQb3J0YWxJbnRlcmZhY2VO YW1lLCAiU3Bhd25FeGl0ZWQiLAorKyAgICAgIGJhc2U6OkJpbmRSZXBlYXRpbmcoJkZsYXRwYWtT YW5kYm94OjpPblNwYXduRXhpdGVkU2lnbmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg YmFzZTo6VW5yZXRhaW5lZCh0aGlzKSksCisrICAgICAgYmFzZTo6QmluZE9uY2UoJkZsYXRwYWtT YW5kYm94OjpPblNpZ25hbENvbm5lY3RlZCwKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpV bnJldGFpbmVkKHRoaXMpKSk7CisrfQorKworK3ZvaWQgRmxhdHBha1NhbmRib3g6Ok9uU2lnbmFs Q29ubmVjdGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnRlcmZhY2UsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNpZ25hbCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbm5lY3RlZCkgeworKyAg Ly8gSXQncyBub3Qgc2FmZSB0byBzcGF3biBwcm9jZXNzZXMgd2l0aG91dCBiZWluZyBhYmxlIHRv IHRyYWNrIHRoZWlyIGRlYXRocy4KKysgIENIRUNLKGNvbm5lY3RlZCkgPDwgIkZhaWxlZCB0byBj b25uZWN0IHRvIHNpZ25hbCAiIDw8IHNpZ25hbDsKKyt9CisrCisrdm9pZCBGbGF0cGFrU2FuZGJv eDo6T25TcGF3blN0YXJ0ZWRTaWduYWwoZGJ1czo6U2lnbmFsKiBzaWduYWwpIHsKKysgIGRidXM6 Ok1lc3NhZ2VSZWFkZXIgcmVhZGVyKHNpZ25hbCk7CisrICB1aW50MzJfdCBleHRlcm5hbF9waWQs IHJlbGF0aXZlX3BpZDsKKysKKysgIGlmICghcmVhZGVyLlBvcFVpbnQzMigmZXh0ZXJuYWxfcGlk KSB8fCAhcmVhZGVyLlBvcFVpbnQzMigmcmVsYXRpdmVfcGlkKSkgeworKyAgICBMT0coRVJST1Ip IDw8ICJJbnZhbGlkIFNwYXduU3RhcnRlZCBzaWduYWwiOworKyAgICByZXR1cm47CisrICB9Cisr CisrICBWTE9HKDEpIDw8ICJSZWNlaXZlZCBTcGF3blN0YXJ0ZWQ6ICIgPDwgZXh0ZXJuYWxfcGlk IDw8ICcgJyA8PCByZWxhdGl2ZV9waWQ7CisrCisrICBiYXNlOjpBdXRvTG9jayBsb2NrZXIocHJv Y2Vzc19pbmZvX2xvY2tfKTsKKysKKysgIGF1dG8gaXQgPSB1bm1hcHBlZF9wcm9jZXNzZXNfLmZp bmQoZXh0ZXJuYWxfcGlkKTsKKysgIGlmIChpdCA9PSB1bm1hcHBlZF9wcm9jZXNzZXNfLmVuZCgp KSB7CisrICAgIExPRyhFUlJPUikgPDwgIlByb2Nlc3MgIiA8PCBleHRlcm5hbF9waWQKKysgICAg ICAgICAgICAgICA8PCAiIGlzIGFscmVhZHkgZGVhZCBvciBub3QgdHJhY2tlZCI7CisrICAgIHJl dHVybjsKKysgIH0KKysKKysgIHVubWFwcGVkX3Byb2Nlc3Nlc18uZXJhc2UoaXQpOworKworKyAg Ly8gRG9uJ3QgdHJ5IHRvIG1hcCB0aGVtIGlmIHRoZSBwcm9jZXNzIGRpZWQgdG9vIHF1aWNrbHkg KHdoaWNoIGlzIHRoZSBjYXVzZQorKyAgLy8gb2YgcmVsYXRpdmVfcGlkID09IDApLgorKyAgaWYg KHJlbGF0aXZlX3BpZCAhPSAwKSB7CisrICAgIEZsYXRwYWtQaWRNYXA6OlBpZFBhaXIgcGFpcjsK KysgICAgcGFpci5leHRlcm5hbCA9IGV4dGVybmFsX3BpZDsKKysgICAgcGFpci5yZWxhdGl2ZSA9 IHJlbGF0aXZlX3BpZDsKKysgICAgcnVubmluZ19wcm9jZXNzZXNfLkluc2VydChwYWlyKTsKKysg IH0KKysKKysgIHByb2Nlc3NfaW5mb19jdl8uQnJvYWRjYXN0KCk7CisrfQorKworK3ZvaWQgRmxh dHBha1NhbmRib3g6Ok9uU3Bhd25FeGl0ZWRTaWduYWwoZGJ1czo6U2lnbmFsKiBzaWduYWwpIHsK KysgIGRidXM6Ok1lc3NhZ2VSZWFkZXIgcmVhZGVyKHNpZ25hbCk7CisrICB1aW50MzJfdCBleHRl cm5hbF9waWQsIGV4aXRfc3RhdHVzOworKworKyAgaWYgKCFyZWFkZXIuUG9wVWludDMyKCZleHRl cm5hbF9waWQpIHx8ICFyZWFkZXIuUG9wVWludDMyKCZleGl0X3N0YXR1cykpIHsKKysgICAgTE9H KEVSUk9SKSA8PCAiSW52YWxpZCBTcGF3bkV4aXRlZCBzaWduYWwiOworKyAgICByZXR1cm47Cisr ICB9CisrCisrICBWTE9HKDEpIDw8ICJSZWNlaXZlZCBTcGF3bkV4aXRlZDogIiA8PCBleHRlcm5h bF9waWQgPDwgJyAnIDw8IGV4aXRfc3RhdHVzOworKworKyAgYmFzZTo6QXV0b0xvY2sgbG9ja2Vy KHByb2Nlc3NfaW5mb19sb2NrXyk7CisrCisrICBhdXRvIHJlbGF0aXZlX3BpZCA9IHJ1bm5pbmdf cHJvY2Vzc2VzXy5EZWxldGVCeUV4dGVybmFsKGV4dGVybmFsX3BpZCk7CisrICAvLyBJZiB0aGlz IGlzbid0IGZvdW5kLCBpdCBsaWtlbHkgbmV2ZXIgcmFuIGxvbmcgZW5vdWdoIGZvciBTcGF3blN0 YXJ0ZWQgdG8gYmUKKysgIC8vIGVtaXR0ZWQsIHNvIHdlIG5ldmVyIGJvdGhlciBzYXZpbmcgdGhl IGV4aXQgc3RhdHVzLgorKyAgaWYgKHJlbGF0aXZlX3BpZCkgeworKyAgICBhdXRvIGlnbm9yZV9p dCA9IGlnbm9yZV9zdGF0dXNfLmZpbmQoKnJlbGF0aXZlX3BpZCk7CisrICAgIGlmIChpZ25vcmVf aXQgIT0gaWdub3JlX3N0YXR1c18uZW5kKCkpIHsKKysgICAgICAvLyBNYWtlIHN1cmUgdGhlIGV4 aXQgc3RhdHVzIGlzIG5vdCBzZXQuCisrICAgICAgcmVsYXRpdmVfcGlkLnJlc2V0KCk7CisrICAg ICAgaWdub3JlX3N0YXR1c18uZXJhc2UoaWdub3JlX2l0KTsKKysgICAgfQorKyAgfQorKworKyAg aWYgKHJlbGF0aXZlX3BpZCkgeworKyAgICBleGl0ZWRfcHJvY2Vzc19zdGF0dXNlc19bKnJlbGF0 aXZlX3BpZF0gPSBleGl0X3N0YXR1czsKKysgIH0KKysKKysgIHByb2Nlc3NfaW5mb19jdl8uQnJv YWRjYXN0KCk7CisrfQorKworK2Jhc2U6OlByb2Nlc3NJZCBGbGF0cGFrU2FuZGJveDo6U3Bhd24o CisrICAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorKyAgICBjb25zdCBiYXNl OjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucykgeworKyAgYmFzZTo6U2NvcGVkQmxvY2tp bmdDYWxsIHNjb3BlZF9ibG9ja2luZ19jYWxsKEZST01fSEVSRSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpCbG9ja2luZ1R5cGU6Ok1BWV9C TE9DSyk7CisrICBiYXNlOjpTY29wZWRBbGxvd0Jhc2VTeW5jUHJpbWl0aXZlcyBhbGxvd193YWl0 OworKworKyAgU3RhcnRCdXNUaHJlYWQoKTsKKysKKysgIFZMT0coMSkgPDwgIlJ1bm5pbmcgdmlh IEZsYXRwYWs6ICIgPDwgY21kbGluZS5HZXRDb21tYW5kTGluZVN0cmluZygpOworKworKyAgRENI RUNLKEdldFNhbmRib3hMZXZlbCgpICE9IFNhbmRib3hMZXZlbDo6a05vbmUpOworKworKyAgLy8g VGhlc2Ugb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBGbGF0cGFrIHNhbmRib3gu CisrICBEQ0hFQ0sobGF1bmNoX29wdGlvbnMuY2xvbmVfZmxhZ3MgPT0gMCk7CisrICBEQ0hFQ0so IWxhdW5jaF9vcHRpb25zLndhaXQpOworKyAgRENIRUNLKCFsYXVuY2hfb3B0aW9ucy5hbGxvd19u ZXdfcHJpdnMpOworKyAgRENIRUNLKGxhdW5jaF9vcHRpb25zLnJlYWxfcGF0aC5lbXB0eSgpKTsK KysgIERDSEVDSyhsYXVuY2hfb3B0aW9ucy5wcmVfZXhlY19kZWxlZ2F0ZSA9PSBudWxscHRyKTsK KysgIERDSEVDSyhsYXVuY2hfb3B0aW9ucy5tYXhpbWl6ZV9ybGltaXRzID09IG51bGxwdHIpOwor KworKyAgYmFzZTo6UHJvY2Vzc0lkIGV4dGVybmFsX3BpZCA9IGJhc2U6OmtOdWxsUHJvY2Vzc0lk OworKyAgYmFzZTo6V2FpdGFibGVFdmVudCBldmVudDsKKysKKysgIGJ1c190aHJlYWRfLnRhc2tf cnVubmVyKCktPlBvc3RUYXNrKAorKyAgICAgIEZST01fSEVSRSwKKysgICAgICBiYXNlOjpCaW5k T25jZSgmRmxhdHBha1NhbmRib3g6OlNwYXduT25CdXNUaHJlYWQsIGJhc2U6OlVucmV0YWluZWQo dGhpcyksCisrICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCgmZXh0ZXJuYWxf cGlkKSwgYmFzZTo6VW5yZXRhaW5lZCgmZXZlbnQpLAorKyAgICAgICAgICAgICAgICAgICAgIGNt ZGxpbmUsIGxhdW5jaF9vcHRpb25zKSk7CisrICBldmVudC5XYWl0KCk7CisrCisrICByZXR1cm4g ZXh0ZXJuYWxfcGlkOworK30KKysKKyt2b2lkIEZsYXRwYWtTYW5kYm94OjpTcGF3bk9uQnVzVGhy ZWFkKAorKyAgICBiYXNlOjpQcm9jZXNzSWQqIG91dF9leHRlcm5hbF9waWQsCisrICAgIGJhc2U6 OldhaXRhYmxlRXZlbnQqIGV2ZW50LAorKyAgICBjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY21k bGluZSwKKysgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoX29wdGlvbnMpIHsK KysgIGRidXM6Ok9iamVjdFByb3h5KiBvYmplY3RfcHJveHkgPSBHZXRQb3J0YWxPYmplY3RQcm94 eSgpOworKyAgZGJ1czo6TWV0aG9kQ2FsbCBtZXRob2RfY2FsbChrRmxhdHBha1BvcnRhbEludGVy ZmFjZU5hbWUsICJTcGF3biIpOworKyAgZGJ1czo6TWVzc2FnZVdyaXRlciB3cml0ZXIoJm1ldGhv ZF9jYWxsKTsKKysKKysgIGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBjdXJyZW50X2RpcmVjdG9yeSA9 CisrICAgICAgIWxhdW5jaF9vcHRpb25zLmN1cnJlbnRfZGlyZWN0b3J5LmVtcHR5KCkKKysgICAg ICAgICAgPyBsYXVuY2hfb3B0aW9ucy5jdXJyZW50X2RpcmVjdG9yeQorKyAgICAgICAgICAvLyBD aGFuZ2UgdG8gL2FwcCBzaW5jZSBpdCdzIGd1YXJhbnRlZWQgdG8gYWx3YXlzIGJlIHByZXNlbnQg aW4KKysgICAgICAgICAgLy8gdGhlIHNhbmRib3guCisrICAgICAgICAgIDoga0ZsYXRwYWtBcHBQ YXRoOworKyAgV3JpdGVTdHJpbmdBc0J5dGVBcnJheSgmd3JpdGVyLCBjdXJyZW50X2RpcmVjdG9y eS52YWx1ZSgpKTsKKysKKysgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgYXJndl93cml0ZXIobnVsbHB0 cik7CisrICB3cml0ZXIuT3BlbkFycmF5KCJheSIsICZhcmd2X3dyaXRlcik7CisrCisrICBmb3Ig KGNvbnN0IHN0ZDo6c3RyaW5nJiBhcmcgOiBjbWRsaW5lLmFyZ3YoKSkgeworKyAgICBXcml0ZVN0 cmluZ0FzQnl0ZUFycmF5KCZhcmd2X3dyaXRlciwgYXJnKTsKKysgIH0KKysKKysjaWZuZGVmIE5E RUJVRworKyAgaWYgKGJhc2U6OkNvbW1hbmRMaW5lOjpGb3JDdXJyZW50UHJvY2VzcygpLT5IYXNT d2l0Y2goCisrICAgICAgICAgIGtEaXNhYmxlRnVsbEZsYXRwYWtTYW5kYm94KSkgeworKyAgICBz dGQ6OnN0cmluZyBhcmcgPSAiLS0iOworKyAgICBhcmcgKz0ga0Rpc2FibGVGdWxsRmxhdHBha1Nh bmRib3g7CisrICAgIFdyaXRlU3RyaW5nQXNCeXRlQXJyYXkoJmFyZ3Zfd3JpdGVyLCBhcmcpOwor KyAgfQorKyNlbmRpZgorKworKyAgd3JpdGVyLkNsb3NlQ29udGFpbmVyKCZhcmd2X3dyaXRlcik7 CisrCisrICBkYnVzOjpNZXNzYWdlV3JpdGVyIGZkc193cml0ZXIobnVsbHB0cik7CisrICB3cml0 ZXIuT3BlbkFycmF5KCJ7dWh9IiwgJmZkc193cml0ZXIpOworKworKyAgV3JpdGVGZFBhaXJNYXAo JmZkc193cml0ZXIsIFNURElOX0ZJTEVOTywgU1RESU5fRklMRU5PKTsKKysgIFdyaXRlRmRQYWly TWFwKCZmZHNfd3JpdGVyLCBTVERPVVRfRklMRU5PLCBTVERPVVRfRklMRU5PKTsKKysgIFdyaXRl RmRQYWlyTWFwKCZmZHNfd3JpdGVyLCBTVERFUlJfRklMRU5PLCBTVERFUlJfRklMRU5PKTsKKysK KysgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxhdW5jaF9vcHRpb25zLmZkc190b19yZW1hcCkg eworKyAgICBXcml0ZUZkUGFpck1hcCgmZmRzX3dyaXRlciwgcGFpci5maXJzdCwgcGFpci5zZWNv bmQpOworKyAgfQorKworKyAgd3JpdGVyLkNsb3NlQ29udGFpbmVyKCZmZHNfd3JpdGVyKTsKKysK KysgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgZW52X3dyaXRlcihudWxscHRyKTsKKysgIHdyaXRlci5P cGVuQXJyYXkoIntzc30iLCAmZW52X3dyaXRlcik7CisrCisrICBmb3IgKGNvbnN0IGF1dG8mIHBh aXIgOiBsYXVuY2hfb3B0aW9ucy5lbnZpcm9ubWVudCkgeworKyAgICBkYnVzOjpNZXNzYWdlV3Jp dGVyIGVudHJ5X3dyaXRlcihudWxscHRyKTsKKysgICAgZW52X3dyaXRlci5PcGVuRGljdEVudHJ5 KCZlbnRyeV93cml0ZXIpOworKworKyAgICBlbnRyeV93cml0ZXIuQXBwZW5kU3RyaW5nKHBhaXIu Zmlyc3QpOworKyAgICBlbnRyeV93cml0ZXIuQXBwZW5kU3RyaW5nKHBhaXIuc2Vjb25kKTsKKysK KysgICAgZW52X3dyaXRlci5DbG9zZUNvbnRhaW5lcigmZW50cnlfd3JpdGVyKTsKKysgIH0KKysK KysgIHdyaXRlci5DbG9zZUNvbnRhaW5lcigmZW52X3dyaXRlcik7CisrCisrICBpbnQgc3Bhd25f ZmxhZ3MgPSBrRmxhdHBha1NwYXduX1NhbmRib3ggfCBrRmxhdHBha1NwYXduX0V4cG9zZVBpZHMg fAorKyAgICAgICAgICAgICAgICAgICAga0ZsYXRwYWtTcGF3bl9Ob3RpZnlTdGFydDsKKysgIGlu dCBzYW5kYm94X2ZsYWdzID0gMDsKKysKKysjaWZuZGVmIE5ERUJVRworKyAgaWYgKGJhc2U6OkNv bW1hbmRMaW5lOjpGb3JDdXJyZW50UHJvY2VzcygpLT5IYXNTd2l0Y2goCisrICAgICAgICAgIGtE aXNhYmxlRnVsbEZsYXRwYWtTYW5kYm94KSkgeworKyAgICBzcGF3bl9mbGFncyAmPSB+a0ZsYXRw YWtTcGF3bl9TYW5kYm94OworKyAgfQorKyNlbHNlCisrI2VuZGlmCisrCisrICBpZiAobGF1bmNo X29wdGlvbnMuY2xlYXJfZW52aXJvbm1lbnQpIHsKKysgICAgc3Bhd25fZmxhZ3MgfD0ga0ZsYXRw YWtTcGF3bl9DbGVhckVudmlyb25tZW50OworKyAgfQorKworKyAgaWYgKGxhdW5jaF9vcHRpb25z LmtpbGxfb25fcGFyZW50X2RlYXRoKSB7CisrICAgIHNwYXduX2ZsYWdzIHw9IGtGbGF0cGFrU3Bh d25fV2F0Y2hCdXM7CisrICB9CisrCisrICB3cml0ZXIuQXBwZW5kVWludDMyKHNwYXduX2ZsYWdz KTsKKysKKysgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgb3B0aW9uc193cml0ZXIobnVsbHB0cik7Cisr ICB3cml0ZXIuT3BlbkFycmF5KCJ7c3Z9IiwgJm9wdGlvbnNfd3JpdGVyKTsKKysKKysgIGlmIChz YW5kYm94X2ZsYWdzICE9IDApIHsKKysgICAgZGJ1czo6TWVzc2FnZVdyaXRlciBlbnRyeV93cml0 ZXIobnVsbHB0cik7CisrICAgIG9wdGlvbnNfd3JpdGVyLk9wZW5EaWN0RW50cnkoJmVudHJ5X3dy aXRlcik7CisrCisrICAgIGVudHJ5X3dyaXRlci5BcHBlbmRTdHJpbmcoInNhbmRib3gtZmxhZ3Mi KTsKKysKKysgICAgZGJ1czo6TWVzc2FnZVdyaXRlciB2YXJpYW50X3dyaXRlcihudWxscHRyKTsK KysgICAgZW50cnlfd3JpdGVyLk9wZW5WYXJpYW50KCJ1IiwgJnZhcmlhbnRfd3JpdGVyKTsKKysK KysgICAgdmFyaWFudF93cml0ZXIuQXBwZW5kVWludDMyKHNhbmRib3hfZmxhZ3MpOworKworKyAg ICBlbnRyeV93cml0ZXIuQ2xvc2VDb250YWluZXIoJnZhcmlhbnRfd3JpdGVyKTsKKysgICAgb3B0 aW9uc193cml0ZXIuQ2xvc2VDb250YWluZXIoJmVudHJ5X3dyaXRlcik7CisrICB9CisrCisrICB3 cml0ZXIuQ2xvc2VDb250YWluZXIoJm9wdGlvbnNfd3JpdGVyKTsKKysKKysgIG9iamVjdF9wcm94 eS0+Q2FsbE1ldGhvZFdpdGhFcnJvclJlc3BvbnNlKAorKyAgICAgICZtZXRob2RfY2FsbCwgZGJ1 czo6T2JqZWN0UHJveHk6OlRJTUVPVVRfSU5GSU5JVEUsCisrICAgICAgYmFzZTo6QmluZE9uY2Uo JkZsYXRwYWtTYW5kYm94OjpPblNwYXduUmVzcG9uc2UsIGJhc2U6OlVucmV0YWluZWQodGhpcyks CisrICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZChvdXRfZXh0ZXJuYWxfcGlk KSwKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKGV2ZW50KSkpOworK30K KysKKyt2b2lkIEZsYXRwYWtTYW5kYm94OjpPblNwYXduUmVzcG9uc2UoYmFzZTo6UHJvY2Vzc0lk KiBvdXRfZXh0ZXJuYWxfcGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiYXNlOjpXYWl0YWJsZUV2ZW50KiBldmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGJ1czo6UmVzcG9uc2UqIHJlc3BvbnNlLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYnVzOjpFcnJvclJlc3BvbnNlKiBlcnJvcl9yZXNwb25zZSkg eworKyAgaWYgKHJlc3BvbnNlKSB7CisrICAgIGRidXM6Ok1lc3NhZ2VSZWFkZXIgcmVhZGVyKHJl c3BvbnNlKTsKKysgICAgdWludDMyX3QgZXh0ZXJuYWxfcGlkOworKyAgICBpZiAoIXJlYWRlci5Q b3BVaW50MzIoJmV4dGVybmFsX3BpZCkpIHsKKysgICAgICBMT0coRVJST1IpIDw8ICJJbnZhbGlk IFNwYXduKCkgcmVzcG9uc2UiOworKyAgICB9IGVsc2UgeworKyAgICAgIFZMT0coMSkgPDwgIlNw YXduKCkgcmV0dXJuZWQgUElEICIgPDwgZXh0ZXJuYWxfcGlkOworKyAgICAgIGlmIChvdXRfZXh0 ZXJuYWxfcGlkICE9IG51bGxwdHIpIHsKKysgICAgICAgICpvdXRfZXh0ZXJuYWxfcGlkID0gZXh0 ZXJuYWxfcGlkOworKyAgICAgIH0KKysKKysgICAgICBiYXNlOjpBdXRvTG9jayBsb2NrZXIocHJv Y2Vzc19pbmZvX2xvY2tfKTsKKysgICAgICB1bm1hcHBlZF9wcm9jZXNzZXNfLmluc2VydChleHRl cm5hbF9waWQpOworKyAgICB9CisrICB9IGVsc2UgaWYgKGVycm9yX3Jlc3BvbnNlKSB7CisrICAg IHN0ZDo6c3RyaW5nIGVycm9yX25hbWUgPSBlcnJvcl9yZXNwb25zZS0+R2V0RXJyb3JOYW1lKCk7 CisrICAgIHN0ZDo6c3RyaW5nIGVycm9yX21lc3NhZ2U7CisrICAgIGRidXM6Ok1lc3NhZ2VSZWFk ZXIgcmVhZGVyKGVycm9yX3Jlc3BvbnNlKTsKKysgICAgcmVhZGVyLlBvcFN0cmluZygmZXJyb3Jf bWVzc2FnZSk7CisrCisrICAgIExPRyhFUlJPUikgPDwgIkVycm9yIGNhbGxpbmcgU3Bhd24oKTog IiA8PCBlcnJvcl9uYW1lIDw8ICI6ICIKKysgICAgICAgICAgICAgICA8PCBlcnJvcl9tZXNzYWdl OworKyAgfSBlbHNlIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiVW5rbm93biBlcnJvciBvY2N1cnJl ZCBjYWxsaW5nIFNwYXduKCkiOworKyAgfQorKworKyAgaWYgKGV2ZW50ICE9IG51bGxwdHIpIHsK KysgICAgZXZlbnQtPlNpZ25hbCgpOworKyAgfQorK30KKysKKytiYXNlOjpQcm9jZXNzSWQgRmxh dHBha1NhbmRib3g6OkdldFJlbGF0aXZlUGlkKGJhc2U6OlByb2Nlc3NJZCBleHRlcm5hbF9waWQp IHsKKysgIGJhc2U6OlNjb3BlZEJsb2NraW5nQ2FsbCBzY29wZWRfYmxvY2tpbmdfY2FsbChGUk9N X0hFUkUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmFzZTo6QmxvY2tpbmdUeXBlOjpNQVlfQkxPQ0spOworKyAgYmFzZTo6U2NvcGVkQWxsb3dCYXNl U3luY1ByaW1pdGl2ZXMgYWxsb3dfd2FpdDsKKysKKysgIGJhc2U6OkF1dG9Mb2NrIGxvY2tlcihw cm9jZXNzX2luZm9fbG9ja18pOworKworKyAgZm9yICg7OykgeworKyAgICBhdXRvIHVubWFwcGVk X2l0ID0gdW5tYXBwZWRfcHJvY2Vzc2VzXy5maW5kKGV4dGVybmFsX3BpZCk7CisrICAgIGlmICh1 bm1hcHBlZF9pdCAhPSB1bm1hcHBlZF9wcm9jZXNzZXNfLmVuZCgpKSB7CisrICAgICAgLy8gTm8g cmVsYXRpdmUgUElEIGlzIGtub3duIHlldC4KKysgICAgICBWTE9HKDEpIDw8ICJXYWl0aW5nIGZv ciAiIDw8IGV4dGVybmFsX3BpZDsKKysgICAgICBwcm9jZXNzX2luZm9fY3ZfLldhaXQoKTsKKysg ICAgICBjb250aW51ZTsKKysgICAgfQorKworKyAgICBhdXRvIHJlbGF0aXZlX3BpZCA9IHJ1bm5p bmdfcHJvY2Vzc2VzXy5GaW5kUmVsYXRpdmVCeUV4dGVybmFsKGV4dGVybmFsX3BpZCk7CisrICAg IGlmICghcmVsYXRpdmVfcGlkKSB7CisrICAgICAgZXhpdGVkX3Byb2Nlc3Nfc3RhdHVzZXNfLmVy YXNlKGV4dGVybmFsX3BpZCk7CisrCisrICAgICAgTE9HKElORk8pIDw8ICJBbHJlYWR5IGRpZWQ6 ICIgPDwgZXh0ZXJuYWxfcGlkOworKyAgICAgIHJldHVybiBiYXNlOjprTnVsbFByb2Nlc3NJZDsK KysgICAgfQorKworKyAgICBWTE9HKDEpIDw8ICJHb3QgIiA8PCBleHRlcm5hbF9waWQgPDwgIiA9 PiAiIDw8ICpyZWxhdGl2ZV9waWQ7CisrICAgIHJldHVybiAqcmVsYXRpdmVfcGlkOworKyAgfQor K30KKysKKyt9ICAvLyBuYW1lc3BhY2Ugc2FuZGJveAorZGlmZiAtLWdpdCBhL3NhbmRib3gvbGlu dXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmggYi9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2Zs YXRwYWtfc2FuZGJveC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAw MC4uMTY3YmJjODU5NDVhZAorLS0tIC9kZXYvbnVsbAorKysrIGIvc2FuZGJveC9saW51eC9zZXJ2 aWNlcy9mbGF0cGFrX3NhbmRib3guaAorQEAgLTAsMCArMSwxMTggQEAKKysvLyBDb3B5cmlnaHQg MjAxOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ug b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo YXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIFNB TkRCT1hfTElOVVhfU0VSVklDRVNfRkxBVFBBS19TQU5EQk9YX0hfCisrI2RlZmluZSBTQU5EQk9Y X0xJTlVYX1NFUlZJQ0VTX0ZMQVRQQUtfU0FOREJPWF9IXworKworKyNpbmNsdWRlICJiYXNlL2Nv bW1hbmRfbGluZS5oIgorKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisrI2lu Y2x1ZGUgImJhc2UvY29udGFpbmVycy9mbGF0X21hcC5oIgorKyNpbmNsdWRlICJiYXNlL2NvbnRh aW5lcnMvZmxhdF9zZXQuaCIKKysjaW5jbHVkZSAiYmFzZS9ub19kZXN0cnVjdG9yLmgiCisrI2lu Y2x1ZGUgImJhc2UvcHJvY2Vzcy9raWxsLmgiCisrI2luY2x1ZGUgImJhc2UvcHJvY2Vzcy9sYXVu Y2guaCIKKysjaW5jbHVkZSAiYmFzZS9wcm9jZXNzL3Byb2Nlc3NfaGFuZGxlLmgiCisrI2luY2x1 ZGUgImJhc2Uvc3luY2hyb25pemF0aW9uL2NvbmRpdGlvbl92YXJpYWJsZS5oIgorKyNpbmNsdWRl ICJiYXNlL3N5bmNocm9uaXphdGlvbi9sb2NrLmgiCisrI2luY2x1ZGUgImJhc2Uvc3luY2hyb25p emF0aW9uL3dhaXRhYmxlX2V2ZW50LmgiCisrI2luY2x1ZGUgImJhc2UvdGhyZWFkaW5nL3RocmVh ZC5oIgorKyNpbmNsdWRlICJkYnVzL2J1cy5oIgorKyNpbmNsdWRlICJkYnVzL21lc3NhZ2UuaCIK KysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuaCIKKysj aW5jbHVkZSAic2FuZGJveC9zYW5kYm94X2V4cG9ydC5oIgorKyNpbmNsdWRlICJ0aGlyZF9wYXJ0 eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaCIKKysKKytuYW1lc3BhY2Ugc2FuZGJv eCB7CisrCisrLy8gTWFuYWdlcyB0aGUgc3RhdGUgb2YgYW5kIGFjY2VzcyB0byB0aGUgRmxhdHBh ayBzYW5kYm94LgorKy8vIE5vdGUgdGhhdCB0aGVyZSBpcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4g ZXh0ZXJuYWwgYW5kIGludGVybmFsIFBJRHM6CisrLy8gLSBFeHRlcm5hbCBQSURzIGFyZSB0aGUg UElEcyByZWxhdGl2ZSB0byB0aGUgd29ybGQgb3V0c2lkZSB0aGUgc2FuZGJveC4KKysvLyAtIElu dGVybmFsIFBJRHMgYXJlIHRoZSBQSURzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IFBJRCBuYW1l c3BhY2UuCisrLy8gRmxhdHBhaydzIHNhbmRib3ggQVBJcyB3b3JrIHByaW1hcmlseSB3aXRoIGV4 dGVybmFsIFBJRHMsIGFuZCBhbgorKy8vIGludGVybmFsIFBJRCBtdXN0IGJlIHJldHJpZXZlZCBm cm9tIHRoZSBTcGF3blN0YXJ0ZWQgc2lnbmFsIGJlZm9yZQorKy8vIGl0IGlzIGtub3duIGluc2lk ZSB0aGUgc2FuZGJveCdzIFBJRCBuYW1lc3BhY2UuCisrY2xhc3MgU0FOREJPWF9FWFBPUlQgRmxh dHBha1NhbmRib3ggeworKyBwdWJsaWM6CisrICBzdGF0aWMgRmxhdHBha1NhbmRib3gqIEdldElu c3RhbmNlKCk7CisrCisrICAvLyBSZXByZXNlbnRzIHRoZSBsZXZlbCBvZiBzYW5kYm94aW5nIGlu c2lkZSBhIEZsYXRwYWsuIGtOb25lIG1lYW5zIHRoaXMgaXMKKysgIC8vIG5vdCBhIEZsYXRwYWss IGtGbGF0cGFrIG1lYW5zIGl0J3MgaW5zaWRlIGEgRmxhdHBhayBzYW5kYm94LCBhbmQKKysgIC8v IGtSZXN0cmljdGVkIG1lYW5zIHRoYXQgdGhpcyBpcyBpbnNpZGUgYSBuZXN0ZWQgRmxhdHBhayBz YW5kYm94IHdpdGggbW9zdAorKyAgLy8gcGVybWlzc2lvbnMgcmV2b2tlZC4KKysgIGVudW0gY2xh c3MgU2FuZGJveExldmVsIHsga05vbmUsIGtGbGF0cGFrLCBrUmVzdHJpY3RlZCB9OworKworKyAg Ly8gR2V0IHRoZSBjdXJyZW50IGxldmVsIG9mIHNhbmRib3hpbmcgaW4gdGhpcyBGbGF0cGFrLgor KyAgU2FuZGJveExldmVsIEdldFNhbmRib3hMZXZlbCgpOworKworKyAgLy8gUmV0dXJucyB3aGV0 aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gUElEIHdhcyBzcGF3bmVkIHZpYSB0aGUgRmxhdHBhayBzYW5k Ym94LgorKyAgYm9vbCBJc1BpZFNhbmRib3hlZChiYXNlOjpQcm9jZXNzSWQgcmVsYXRpdmVfcGlk KTsKKysKKysgIC8vIExhdW5jaCB0aGUgZ2l2ZW4gcHJvY2VzcyBpbnNpZGUgb2YgYSBGbGF0cGFr IHNhbmRib3guIElmIGFsbG93X3gxMSBpcyB0cnVlLAorKyAgLy8gdGhlbiB0aGUgcHJvY2VzcyB3 aWxsIGJlIGdpdmVuIGFjY2VzcyB0byB0aGUgaG9zdCdzIFgxMSBkaXNwbGF5LiBPbgorKyAgLy8g ZmFpbHVyZSwgcmV0dXJucyBrTnVsbFByb2Nlc3NJZC4gTm90ZSB0aGF0IHRoZSByZXR1cm4gdmFs dWUgaXMgdGhlIFBJRAorKyAgLy8gcmVsYXRpdmUgdG8gdGhlIGhvc3QgaS5lLiBvdXRzaWRlIHRo ZSBzYW5kYm94LCB0byBnZXQgdGhlIGludGVybmFsIG9uZSBjYWxsCisrICAvLyBHZXRSZWxhdGl2 ZVBpZC4gVGhpcyBpcyB0aGUgcmVhc29uIHdoeSBhIHZhbmlsbGEgUHJvY2Vzc0lkIGlzIHJldHVy bmVkCisrICAvLyByYXRoZXIgdGhhbiBhIGJhc2U6OlByb2Nlc3MgaW5zdGFuY2UuCisrICBiYXNl OjpQcm9jZXNzIExhdW5jaFByb2Nlc3MoY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNtZGxpbmUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9u cyYgbGF1bmNoX29wdGlvbnMpOworKworKyAgLy8gSW5kZWZpbml0ZWx5IHdhaXRzIGZvciB0aGUg Z2l2ZW4gcHJvY2VzcyBhbmQgZmlsbHMgdGhlIGV4aXQgY29kZSBwb2ludGVyCisrICAvLyBpZiBn aXZlbiBhbmQgbm9uLW51bGwuIFJldHVybnMgZmFsc2Ugb24gd2FpdCBmYWlsdXJlLgorKyAgYm9v bCBXYWl0KGJhc2U6OlByb2Nlc3NJZCByZWxhdGl2ZV9waWQsIGludCogZXhpdF9jb2RlKTsKKysK KysgIC8vIFNraXBzIHN0b3JpbmcgdGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBnaXZlbiBQSUQuCisr ICB2b2lkIElnbm9yZUV4aXRTdGF0dXMoYmFzZTo6UHJvY2Vzc0lkIHJlbGF0aXZlX3BpZCk7Cisr CisrIHByaXZhdGU6CisrICBmcmllbmQgY2xhc3MgYmFzZTo6Tm9EZXN0cnVjdG9yPEZsYXRwYWtT YW5kYm94PjsKKysKKysgIEZsYXRwYWtTYW5kYm94KCk7CisrICBGbGF0cGFrU2FuZGJveChjb25z dCBGbGF0cGFrU2FuZGJveCYpID0gZGVsZXRlOworKyAgRmxhdHBha1NhbmRib3goRmxhdHBha1Nh bmRib3gmJikgPSBkZWxldGU7CisrICB+RmxhdHBha1NhbmRib3goKTsKKysKKysgIHZvaWQgU3Rh cnRCdXNUaHJlYWQoKTsKKysgIGRidXM6OkJ1cyogQWNxdWlyZUJ1c0Zyb21CdXNUaHJlYWQoKTsK KysgIGRidXM6Ok9iamVjdFByb3h5KiBHZXRQb3J0YWxPYmplY3RQcm94eSgpOworKworKyAgdm9p ZCBJbml0aWFsaXplQnVzVGhyZWFkKCk7CisrICB2b2lkIE9uU2lnbmFsQ29ubmVjdGVkKGNvbnN0 IHN0ZDo6c3RyaW5nJiBpbnRlcmZhY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0ZDo6c3RyaW5nJiBzaWduYWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29u bmVjdGVkKTsKKysgIHZvaWQgT25TcGF3blN0YXJ0ZWRTaWduYWwoZGJ1czo6U2lnbmFsKiBzaWdu YWwpOworKyAgdm9pZCBPblNwYXduRXhpdGVkU2lnbmFsKGRidXM6OlNpZ25hbCogc2lnbmFsKTsK KysKKysgIGJhc2U6OlByb2Nlc3NJZCBTcGF3bihjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY21k bGluZSwKKysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25z JiBsYXVuY2hfb3B0aW9ucyk7CisrICB2b2lkIFNwYXduT25CdXNUaHJlYWQoYmFzZTo6UHJvY2Vz c0lkKiBvdXRfZXh0ZXJuYWxfcGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6Oldh aXRhYmxlRXZlbnQqIGV2ZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6 OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJh c2U6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaF9vcHRpb25zKTsKKysgIHZvaWQgT25TcGF3blJlc3Bv bnNlKGJhc2U6OlByb2Nlc3NJZCogb3V0X2V4dGVybmFsX3BpZCwKKysgICAgICAgICAgICAgICAg ICAgICAgIGJhc2U6OldhaXRhYmxlRXZlbnQqIGV2ZW50LAorKyAgICAgICAgICAgICAgICAgICAg ICAgZGJ1czo6UmVzcG9uc2UqIHJlc3BvbnNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgZGJ1 czo6RXJyb3JSZXNwb25zZSogZXJyb3JfcmVzcG9uc2UpOworKworKyAgYmFzZTo6UHJvY2Vzc0lk IEdldFJlbGF0aXZlUGlkKGJhc2U6OlByb2Nlc3NJZCBleHRlcm5hbF9waWQpOworKworKyAgYWJz bDo6b3B0aW9uYWw8U2FuZGJveExldmVsPiBzYW5kYm94X2xldmVsXzsKKysgIGJhc2U6OlRocmVh ZCBidXNfdGhyZWFkXzsKKysKKysgIGJhc2U6OkxvY2sgcHJvY2Vzc19pbmZvX2xvY2tfOworKyAg Ly8gTm90ZSB0aGF0IGJyb2FkY2FzdCBpcyB1c2VkIGluIHRoZSBzb3VyY2UsIGJlY2F1c2UgaW4g Z2VuZXJhbAorKyAgLy8gdmVyeSBmZXcgdGhyZWFkcyB3aWxsIGJlIGNvbnRlbmRpbmcgZm9yIHRo ZSBsb2NrLgorKyAgYmFzZTo6Q29uZGl0aW9uVmFyaWFibGUgcHJvY2Vzc19pbmZvX2N2XzsKKysg IC8vIFNldCBvZiBwcm9jZXNzZXMgdGhhdCBoYXZlIG5vIGFzc29jaWF0ZWQgcmVsYXRpdmUgUElE IHlldC4KKysgIGJhc2U6OmZsYXRfc2V0PGJhc2U6OlByb2Nlc3NJZD4gdW5tYXBwZWRfcHJvY2Vz c2VzXzsKKysgIC8vIE1hcCBvZiBydW5uaW5nIHByb2Nlc3Nlcy4KKysgIEZsYXRwYWtQaWRNYXAg cnVubmluZ19wcm9jZXNzZXNfOworKyAgLy8gTWFwIG9mIGEgcmVsYXRpdmUgcHJvY2VzcyBJRCB0 aGF0IGhhcyBleGl0ZWQgdG8gaXRzIHdhaXRwaWQgc3RhdHVzLgorKyAgc3RkOjptYXA8YmFzZTo6 UHJvY2Vzc0lkLCBpbnQ+IGV4aXRlZF9wcm9jZXNzX3N0YXR1c2VzXzsKKysgIC8vIFJlbGF0aXZl IHByb2Nlc3MgSURzIHRoYXQgc2hvdWxkIGhhdmUgdGhlaXIgc3RhdHVzZXMgaWdub3JlZCBvbiBl eGl0LgorKyAgc3RkOjpzZXQ8YmFzZTo6UHJvY2Vzc0lkPiBpZ25vcmVfc3RhdHVzXzsKKyt9Owor KworK30gIC8vIG5hbWVzcGFjZSBzYW5kYm94CisrCisrI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVY X1NFUlZJQ0VTX0ZMQVRQQUtfU0FOREJPWF9IXworZGlmZiAtLWdpdCBhL3NhbmRib3gvcG9saWN5 L0JVSUxELmduIGIvc2FuZGJveC9wb2xpY3kvQlVJTEQuZ24KK2luZGV4IDRmZTUzYjA0N2I5YWEu Ljc5NGUxYWQxODA1ZDggMTAwNjQ0CistLS0gYS9zYW5kYm94L3BvbGljeS9CVUlMRC5nbgorKysr IGIvc2FuZGJveC9wb2xpY3kvQlVJTEQuZ24KK0BAIC0xMjksNiArMTI5LDkgQEAgY29tcG9uZW50 KCJwb2xpY3kiKSB7CisgICAgICAgIi8vc2FuZGJveC9saW51eDpzdWlkX3NhbmRib3hfY2xpZW50 IiwKKyAgICAgXQorICAgfQorKyAgaWYgKGlzX2xpbnV4KSB7CisrICAgIHB1YmxpY19kZXBzICs9 IFsgIi8vc2FuZGJveC9saW51eDpzYW5kYm94X3NlcnZpY2VzIiBdCisrICB9CisgICBpZiAoaXNf Y2hyb21lb3NfYXNoKSB7CisgICAgIHNvdXJjZXMgKz0gWworICAgICAgICJsaW51eC9icGZfaW1l X3BvbGljeV9saW51eC5jYyIsCitkaWZmIC0tZ2l0IGEvc2FuZGJveC9wb2xpY3kvbGludXgvc2Fu ZGJveF9saW51eC5jYyBiL3NhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGludXguY2MKK2lu ZGV4IGM3MzEzNDE2ZTYxODMuLjBjYjgwNDNmMGFjNzIgMTAwNjQ0CistLS0gYS9zYW5kYm94L3Bv bGljeS9saW51eC9zYW5kYm94X2xpbnV4LmNjCisrKysgYi9zYW5kYm94L3BvbGljeS9saW51eC9z YW5kYm94X2xpbnV4LmNjCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlICJzYW5kYm94L2Nv bnN0YW50cy5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMv c2lnc3lzX2hhbmRsZXJzLmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvY3Jl ZGVudGlhbHMuaCIKKysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3Nh bmRib3guaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9saWJjX2ludGVyY2Vw dG9yLmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvbmFtZXNwYWNlX3NhbmRi b3guaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9wcm9jX3V0aWwuaCIKK0BA IC0yMzYsNiArMjM3LDkgQEAgdm9pZCBTYW5kYm94TGludXg6OlByZWluaXRpYWxpemVTYW5kYm94 KCkgeworICAgY29uc3QgaW50IHlhbWFfc3RhdHVzID0gWWFtYTo6R2V0U3RhdHVzKCk7CisgICB5 YW1hX2lzX2VuZm9yY2luZ18gPSAoeWFtYV9zdGF0dXMgJiBZYW1hOjpTVEFUVVNfUFJFU0VOVCkg JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICh5YW1hX3N0YXR1cyAmIFlhbWE6OlNUQVRVU19F TkZPUkNJTkcpOworKworKyAgZmxhdHBha19zYW5kYm94X2xldmVsXyA9CisrICAgICAgc2FuZGJv eDo6RmxhdHBha1NhbmRib3g6OkdldEluc3RhbmNlKCktPkdldFNhbmRib3hMZXZlbCgpOworICAg cHJlX2luaXRpYWxpemVkXyA9IHRydWU7CisgfQorIAorQEAgLTI3NCw2ICsyNzgsMTAgQEAgaW50 IFNhbmRib3hMaW51eDo6R2V0U3RhdHVzKCkgeworICAgICAgICAgc2FuZGJveF9zdGF0dXNfZmxh Z3NfIHw9IGtQSUROUzsKKyAgICAgICBpZiAoTmFtZXNwYWNlU2FuZGJveDo6SW5OZXdOZXROYW1l c3BhY2UoKSkKKyAgICAgICAgIHNhbmRib3hfc3RhdHVzX2ZsYWdzXyB8PSBrTmV0TlM7CisrICAg IH0gZWxzZSBpZiAoZmxhdHBha19zYW5kYm94X2xldmVsXyA9PQorKyAgICAgICAgICAgICAgIHNh bmRib3g6OkZsYXRwYWtTYW5kYm94OjpTYW5kYm94TGV2ZWw6OmtSZXN0cmljdGVkKSB7CisrICAg ICAgLy8gRmxhdHBhayBzYW5kYm94ZXMgYWx3YXlzIHVzZSBuZXcgbmFtZXNwYWNlcy4KKysgICAg ICBzYW5kYm94X3N0YXR1c19mbGFnc18gfD0ga0ZsYXRwYWsgfCBrUElETlMgfCBrTmV0TlM7Cisg ICAgIH0KKyAKKyAgICAgLy8gV2UgcmVwb3J0IHdoZXRoZXIgdGhlIHNhbmRib3ggd2lsbCBiZSBh Y3RpdmF0ZWQgd2hlbiByZW5kZXJlcnMsIHdvcmtlcnMKK2RpZmYgLS1naXQgYS9zYW5kYm94L3Bv bGljeS9saW51eC9zYW5kYm94X2xpbnV4LmggYi9zYW5kYm94L3BvbGljeS9saW51eC9zYW5kYm94 X2xpbnV4LmgKK2luZGV4IDBlNGY3OGI5ZTZjYjcuLjkxYjYzOGQ4YTk2ZTAgMTAwNjQ0CistLS0g YS9zYW5kYm94L3BvbGljeS9saW51eC9zYW5kYm94X2xpbnV4LmgKKysrKyBiL3NhbmRib3gvcG9s aWN5L2xpbnV4L3NhbmRib3hfbGludXguaAorQEAgLTEzLDYgKzEzLDcgQEAKKyAjaW5jbHVkZSAi YmFzZS9tZW1vcnkvcmF3X3B0ci5oIgorICNpbmNsdWRlICJiYXNlL3Bvc2l4L2dsb2JhbF9kZXNj cmlwdG9ycy5oIgorICNpbmNsdWRlICJiYXNlL3Nhbml0aXplcl9idWlsZGZsYWdzLmgiCisrI2lu Y2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmgiCisgI2luY2x1 ZGUgInNhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX2NvbW1hbmQuaCIKKyAjaW5j bHVkZSAic2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tlci9icm9rZXJfZmlsZV9wZXJtaXNzaW9u LmgiCisgI2luY2x1ZGUgInNhbmRib3gvcG9saWN5L2V4cG9ydC5oIgorQEAgLTkxLDYgKzkyLDkg QEAgY2xhc3MgU0FOREJPWF9QT0xJQ1lfRVhQT1JUIFNhbmRib3hMaW51eCB7CisgICAgIC8vIFVz ZXIgbmFtZXNwYWNlIHNhbmRib3ggYWN0aXZlLgorICAgICBrVXNlck5TID0gMSA8PCA2LAorIAor KyAgICAvLyBGbGF0cGFrIHNhbmRib3ggYWN0aXZlLgorKyAgICBrRmxhdHBhayA9IDEgPDwgNywK KysKKyAgICAgLy8gQSBmbGFnIHRoYXQgZGVub3RlcyBhbiBpbnZhbGlkIHNhbmRib3ggc3RhdHVz LgorICAgICBrSW52YWxpZCA9IDEgPDwgMzEsCisgICB9OworQEAgLTI5Miw2ICsyOTYsMTAgQEAg Y2xhc3MgU0FOREJPWF9QT0xJQ1lfRVhQT1JUIFNhbmRib3hMaW51eCB7CisgICBib29sIHNlY2Nv bXBfYnBmX3dpdGhfdHN5bmNfc3VwcG9ydGVkXzsgIC8vIEFjY3VyYXRlIGlmIHByZV9pbml0aWFs aXplZF8uCisgICBib29sIHlhbWFfaXNfZW5mb3JjaW5nXzsgICAgICAgICAgICAgICAgIC8vIEFj Y3VyYXRlIGlmIHByZV9pbml0aWFsaXplZF8uCisgICBib29sIGluaXRpYWxpemVfc2FuZGJveF9y YW5fOyAgICAgICAgICAgIC8vIEluaXRpYWxpemVTYW5kYm94KCkgd2FzIGNhbGxlZC4KKysgIC8v IEFjY3VyYXRlIGlmIHByZV9pbml0aWFsaXplZF8sIHVzZWQgdG8gc2F2ZSB0aGUgc3RhdGUgb2Yg dGhlIEZsYXRwYWsKKysgIC8vIHNhbmRib3gsIGFzIG9uY2Ugd2UncmUgaW4gdGhlIEJQRiBzYW5k Ym94IGFueSBhdHRlbXB0cyB0byBjaGVjayB0aGUgRmxhdHBhaworKyAgLy8gc3RhdGUgd2lsbCBj YXVzZSBFUEVSTSBlcnJvcnMuCisrICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6U2FuZGJveExl dmVsIGZsYXRwYWtfc2FuZGJveF9sZXZlbF87CisgICBzdGQ6OnVuaXF1ZV9wdHI8U2V0dWlkU2Fu ZGJveENsaWVudD4gc2V0dWlkX3NhbmRib3hfY2xpZW50XzsKKyAjaWYgQlVJTERGTEFHKFVTSU5H X1NBTklUSVpFUikKKyAgIHN0ZDo6dW5pcXVlX3B0cjxfX3Nhbml0aXplcl9zYW5kYm94X2FyZ3Vt ZW50cz4gc2FuaXRpemVyX2FyZ3NfOworZGlmZiAtLWdpdCBhL3NlcnZpY2VzL3NlcnZpY2VfbWFu YWdlci9zZXJ2aWNlX3Byb2Nlc3NfbGF1bmNoZXIuY2MgYi9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFn ZXIvc2VydmljZV9wcm9jZXNzX2xhdW5jaGVyLmNjCitpbmRleCBlMjRhMjYyZmU5MGQ1Li5jMjBm ZGJkODhhMWE2IDEwMDY0NAorLS0tIGEvc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NlcnZpY2Vf cHJvY2Vzc19sYXVuY2hlci5jYworKysrIGIvc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NlcnZp Y2VfcHJvY2Vzc19sYXVuY2hlci5jYworQEAgLTQxLDYgKzQxLDcgQEAKKyAjZW5kaWYKKyAKKyAj aWYgQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1MpCisrI2luY2x1 ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmgiCisgI2luY2x1ZGUg InNhbmRib3gvbGludXgvc2VydmljZXMvbmFtZXNwYWNlX3NhbmRib3guaCIKKyAjZW5kaWYKKyAK K0BAIC0yODYsOCArMjg3LDE1IEBAIHZvaWQgU2VydmljZVByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vz c1N0YXRlOjpTdG9wSW5CYWNrZ3JvdW5kKCkgeworICAgICByZXR1cm47CisgCisgICBpbnQgcnYg PSAtMTsKKy0gIExPR19JRihFUlJPUiwgIWNoaWxkX3Byb2Nlc3NfLldhaXRGb3JFeGl0KCZydikp CistICAgICAgPDwgIkZhaWxlZCB0byB3YWl0IGZvciBjaGlsZCBwcm9jZXNzIjsKKysgIGJvb2wg c3VjY2VzcyA9IGZhbHNlOworKyAgYXV0byogZmxhdHBha19zYW5kYm94ID0gc2FuZGJveDo6Rmxh dHBha1NhbmRib3g6OkdldEluc3RhbmNlKCk7CisrICBpZiAoZmxhdHBha19zYW5kYm94LT5Jc1Bp ZFNhbmRib3hlZChjaGlsZF9wcm9jZXNzXy5QaWQoKSkpIHsKKysgICAgc3VjY2VzcyA9IGZsYXRw YWtfc2FuZGJveC0+V2FpdChjaGlsZF9wcm9jZXNzXy5QaWQoKSwgJnJ2KTsKKysgIH0gZWxzZSB7 CisrICAgIHN1Y2Nlc3MgPSBjaGlsZF9wcm9jZXNzXy5XYWl0Rm9yRXhpdCgmcnYpOworKyAgfQor KyAgTE9HX0lGKEVSUk9SLCBzdWNjZXNzKSA8PCAiRmFpbGVkIHRvIHdhaXQgZm9yIGNoaWxkIHBy b2Nlc3MiOworKworICAgY2hpbGRfcHJvY2Vzc18uQ2xvc2UoKTsKKyB9CisgCistLSAKKzIuNDYu MQorCgpkaWZmIC0tZ2l0IGEvZmxhdHBhay1BZGp1c3QtcGF0aHMtZm9yLXRoZS1zYW5kYm94LnBh dGNoIGIvZmxhdHBhay1BZGp1c3QtcGF0aHMtZm9yLXRoZS1zYW5kYm94LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMTg2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9m bGF0cGFrLUFkanVzdC1wYXRocy1mb3ItdGhlLXNhbmRib3gucGF0Y2gKQEAgLTAsMCArMSw4NiBA QAorRnJvbSA5OTdjOWRjNDE2MGM0NjhmMjZhY2I4NTFlYjY1NDA4ZjQxZTJhMDkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUnlhbiBHb256YWxleiA8cnltZzE5QGdtYWlsLmNvbT4K K0RhdGU6IFR1ZSwgMjUgQXVnIDIwMjAgMTk6MjY6MDcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0g ZmxhdHBhazogQWRqdXN0IHBhdGhzIGZvciB0aGUgc2FuZGJveAorCistLS0KKyBjaHJvbWUvY29t bW9uL0JVSUxELmduICAgICAgICB8ICA0ICsrKysKKyBjaHJvbWUvY29tbW9uL2Nocm9tZV9wYXRo cy5jYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAy OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jaHJvbWUvY29t bW9uL0JVSUxELmduIGIvY2hyb21lL2NvbW1vbi9CVUlMRC5nbgoraW5kZXggNzZjZjZhNTk4NTk5 MC4uNDA0NGM4N2I2NTZjNCAxMDA2NDQKKy0tLSBhL2Nocm9tZS9jb21tb24vQlVJTEQuZ24KKysr KyBiL2Nocm9tZS9jb21tb24vQlVJTEQuZ24KK0BAIC02NDIsNiArNjQyLDEwIEBAIHN0YXRpY19s aWJyYXJ5KCJjb25zdGFudHMiKSB7CisgICAgICAgIi8vdGhpcmRfcGFydHkvd2lkZXZpbmUvY2Rt OmhlYWRlcnMiLAorICAgICBdCisgICB9CisrCisrICBpZiAoaXNfbGludXgpIHsKKysgICAgZGVw cyArPSBbICIvL3NhbmRib3gvbGludXg6c2FuZGJveF9zZXJ2aWNlcyIgXQorKyAgfQorIH0KKyAK KyAjIFVzZSBhIHN0YXRpYyBsaWJyYXJ5IGhlcmUgYmVjYXVzZSBtYW55IHRlc3QgYmluYXJpZXMg ZGVwZW5kIG9uIHRoaXMgYnV0IGRvbid0CitkaWZmIC0tZ2l0IGEvY2hyb21lL2NvbW1vbi9jaHJv bWVfcGF0aHMuY2MgYi9jaHJvbWUvY29tbW9uL2Nocm9tZV9wYXRocy5jYworaW5kZXggZWMwOTgw M2ZmYWJjZi4uZWNiYzMwMGI5OWUxZCAxMDA2NDQKKy0tLSBhL2Nocm9tZS9jb21tb24vY2hyb21l X3BhdGhzLmNjCisrKysgYi9jaHJvbWUvY29tbW9uL2Nocm9tZV9wYXRocy5jYworQEAgLTM4LDYg KzM4LDEwIEBACisgI2luY2x1ZGUgImJhc2Uvd2luL3JlZ2lzdHJ5LmgiCisgI2VuZGlmCisgCisr I2lmIEJVSUxERkxBRyhJU19MSU5VWCkKKysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNl cy9mbGF0cGFrX3NhbmRib3guaCIKKysjZW5kaWYKKysKKyAjaWYgQlVJTERGTEFHKEVOQUJMRV9X SURFVklORSkKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvd2lkZXZpbmUvY2RtL3dpZGV2aW5lX2Nk bV9jb21tb24uaCIgIC8vIG5vZ25jaGVjaworICNlbmRpZgorQEAgLTUzNyw2ICs1NDEsMTQgQEAg Ym9vbCBQYXRoUHJvdmlkZXIoaW50IGtleSwgYmFzZTo6RmlsZVBhdGgqIHJlc3VsdCkgeworICAg ICAgIGJyZWFrOworICNpZiBCVUlMREZMQUcoSVNfUE9TSVgpICYmICFCVUlMREZMQUcoSVNfTUFD KSAmJiAhQlVJTERGTEFHKElTX09QRU5CU0QpCisgICAgIGNhc2UgY2hyb21lOjpESVJfUE9MSUNZ X0ZJTEVTOiB7CisrI2lmIGRlZmluZWQoT1NfTElOVVgpCisrICAgICAgaWYgKHNhbmRib3g6OkZs YXRwYWtTYW5kYm94OjpHZXRJbnN0YW5jZSgpLT5HZXRTYW5kYm94TGV2ZWwoKSA+CisrICAgICAg ICAgIHNhbmRib3g6OkZsYXRwYWtTYW5kYm94OjpTYW5kYm94TGV2ZWw6OmtOb25lKSB7CisrICAg ICAgICBjdXIgPSBiYXNlOjpGaWxlUGF0aCgKKysgICAgICAgICAgICBGSUxFX1BBVEhfTElURVJB TCgiL2FwcC9jaHJvbWl1bS9leHRlbnNpb25zL3BvbGljaWVzIikpOworKyAgICAgICAgYnJlYWs7 CisrICAgICAgfQorKyNlbmRpZgorICAgICAgIGN1ciA9IGJhc2U6OkZpbGVQYXRoKHBvbGljeTo6 a1BvbGljeVBhdGgpOworICAgICAgIGJyZWFrOworICAgICB9CitAQCAtNTU3LDcgKzU2OSwxMyBA QCBib29sIFBhdGhQcm92aWRlcihpbnQga2V5LCBiYXNlOjpGaWxlUGF0aCogcmVzdWx0KSB7Cisg I2VuZGlmCisgI2lmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NIUk9NRU9T KQorICAgICBjYXNlIGNocm9tZTo6RElSX1NUQU5EQUxPTkVfRVhURVJOQUxfRVhURU5TSU9OUzog eworLSAgICAgIGN1ciA9IGJhc2U6OkZpbGVQYXRoKGtGaWxlcGF0aFNpbmdsZVByZWZFeHRlbnNp b25zKTsKKysgICAgICBpZiAoc2FuZGJveDo6RmxhdHBha1NhbmRib3g6OkdldEluc3RhbmNlKCkt PkdldFNhbmRib3hMZXZlbCgpID4KKysgICAgICAgICAgc2FuZGJveDo6RmxhdHBha1NhbmRib3g6 OlNhbmRib3hMZXZlbDo6a05vbmUpIHsKKysgICAgICAgIGN1ciA9IGJhc2U6OkZpbGVQYXRoKAor KyAgICAgICAgICAgIEZJTEVfUEFUSF9MSVRFUkFMKCIvYXBwL2Nocm9taXVtL2V4dGVuc2lvbnMv ZXh0ZW5zaW9ucyIpKTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAgY3VyID0gYmFzZTo6Rmls ZVBhdGgoa0ZpbGVwYXRoU2luZ2xlUHJlZkV4dGVuc2lvbnMpOworKyAgICAgIH0KKyAgICAgICBi cmVhazsKKyAgICAgfQorICNlbmRpZgorQEAgLTYwNCw2ICs2MjIsMTIgQEAgYm9vbCBQYXRoUHJv dmlkZXIoaW50IGtleSwgYmFzZTo6RmlsZVBhdGgqIHJlc3VsdCkgeworICAgICAgICAgICAiL0xp YnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9DaHJvbWl1bS9OYXRpdmVNZXNzYWdpbmdIb3N0cyIp KTsKKyAjZW5kaWYKKyAjZWxzZSAgLy8gQlVJTERGTEFHKElTX01BQykKKysgICAgICBpZiAoc2Fu ZGJveDo6RmxhdHBha1NhbmRib3g6OkdldEluc3RhbmNlKCktPkdldFNhbmRib3hMZXZlbCgpID4K KysgICAgICAgICAgc2FuZGJveDo6RmxhdHBha1NhbmRib3g6OlNhbmRib3hMZXZlbDo6a05vbmUp IHsKKysgICAgICAgIGN1ciA9IGJhc2U6OkZpbGVQYXRoKEZJTEVfUEFUSF9MSVRFUkFMKAorKyAg ICAgICAgICAgICIvYXBwL2Nocm9taXVtL2V4dGVuc2lvbnMvbmF0aXZlLW1lc3NhZ2luZy1ob3N0 cyIpKTsKKysgICAgICAgIGJyZWFrOworKyAgICAgIH0KKyAjaWYgQlVJTERGTEFHKEdPT0dMRV9D SFJPTUVfQlJBTkRJTkcpCisgICAgICAgY3VyID0gYmFzZTo6RmlsZVBhdGgoCisgICAgICAgICAg IEZJTEVfUEFUSF9MSVRFUkFMKCIvZXRjL29wdC9jaHJvbWUvbmF0aXZlLW1lc3NhZ2luZy1ob3N0 cyIpKTsKKy0tIAorMi40Ni4xCisKCmRpZmYgLS1naXQgYS9mbGF0cGFrLUV4cG9zZS1XaWRldmlu ZS1pbnRvLXRoZS1zYW5kYm94LnBhdGNoIGIvZmxhdHBhay1FeHBvc2UtV2lkZXZpbmUtaW50by10 aGUtc2FuZGJveC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmY5 NTNkCi0tLSAvZGV2L251bGwKKysrIGIvZmxhdHBhay1FeHBvc2UtV2lkZXZpbmUtaW50by10aGUt c2FuZGJveC5wYXRjaApAQCAtMCwwICsxLDMyNiBAQAorRnJvbSAwNDQ2YjM0MzJjOTBiYmFiODkz YzdiZGUyMmE1ZTY2NGUxNDc1M2FmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUnlh biBHb256YWxleiA8cnltZzE5QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTcgTm92IDIwMjAgMTM6 MDA6MzkgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gZmxhdHBhazogRXhwb3NlIFdpZGV2aW5lIGlu dG8gdGhlIHNhbmRib3gKKworLS0tCisgLi4uL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxf bGludXguY2MgICAgIHwgNTQgKysrKysrKysrKysrKy0KKyBzYW5kYm94L2xpbnV4L3NlcnZpY2Vz L2ZsYXRwYWtfc2FuZGJveC5jYyAgICAgfCA3NCArKysrKysrKysrKysrKy0tLS0tCisgc2FuZGJv eC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaCAgICAgIHwgMjcgKysrKysrLQorIDMg ZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvY29udGVudC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGlu dXguY2MgYi9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51 eC5jYworaW5kZXggMTcwM2ZiNmFkZTA0NC4uM2U4ZWI4Nzk4MTIzMCAxMDA2NDQKKy0tLSBhL2Nv bnRlbnQvYnJvd3Nlci96eWdvdGVfaG9zdC96eWdvdGVfaG9zdF9pbXBsX2xpbnV4LmNjCisrKysg Yi9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51eC5jYwor QEAgLTksNyArOSwxMCBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyAjaW5jbHVkZSAi YmFzZS9maWxlcy9maWxlX2VudW1lcmF0b3IuaCIKKysjaW5jbHVkZSAiYmFzZS9maWxlcy9maWxl X3V0aWwuaCIKKyAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisrI2luY2x1ZGUgImJhc2Uvbml4 L3hkZ191dGlsLmgiCisrI2luY2x1ZGUgImJhc2UvcGF0aF9zZXJ2aWNlLmgiCisgI2luY2x1ZGUg ImJhc2UvcG9zaXgvdW5peF9kb21haW5fc29ja2V0LmgiCisgI2luY2x1ZGUgImJhc2UvcHJvY2Vz cy9raWxsLmgiCisgI2luY2x1ZGUgImJhc2UvcHJvY2Vzcy9sYXVuY2guaCIKK0BAIC0xOCw5ICsy MSwxMiBAQAorICNpbmNsdWRlICJiYXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgiCisgI2luY2x1ZGUg ImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgorICNpbmNsdWRlICJidWlsZC9jaHJvbWVvc19idWlsZGZs YWdzLmgiCisrI2luY2x1ZGUgImNocm9tZS9jb21tb24vY2hyb21lX3BhdGhzLmgiICAvLyBub2du Y2hlY2sKKyAjaW5jbHVkZSAiY29udGVudC9jb21tb24venlnb3RlL3p5Z290ZV9jb21tYW5kc19s aW51eC5oIgorICNpbmNsdWRlICJjb250ZW50L2NvbW1vbi96eWdvdGUvenlnb3RlX2NvbW11bmlj YXRpb25fbGludXguaCIKKyAjaW5jbHVkZSAiY29udGVudC9jb21tb24venlnb3RlL3p5Z290ZV9o YW5kbGVfaW1wbF9saW51eC5oIgorKyNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9jb21tb24vY2Rt X2luZm8uaCIKKysjaW5jbHVkZSAiY29udGVudC9wdWJsaWMvY29tbW9uL2NvbnRlbnRfY2xpZW50 LmgiCisgI2luY2x1ZGUgImNvbnRlbnQvcHVibGljL2NvbW1vbi96eWdvdGUvenlnb3RlX2hhbmRs ZS5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmgiCisg I2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmgiCitAQCAt MjksNiArMzUsNyBAQAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N1aWQvY29tbW9uL3NhbmRi b3guaCIKKyAjaW5jbHVkZSAic2FuZGJveC9wb2xpY3kvbGludXgvc2FuZGJveF9saW51eC5oIgor ICNpbmNsdWRlICJzYW5kYm94L3BvbGljeS9zd2l0Y2hlcy5oIgorKyNpbmNsdWRlICJ0aGlyZF9w YXJ0eS93aWRldmluZS9jZG0vYnVpbGRmbGFncy5oIiAgLy8gbm9nbmNoZWNrCisgCisgI2lmIEJV SUxERkxBRyhJU19DSFJPTUVPUykKKyAjaW5jbHVkZSAiY29udGVudC9jb21tb24venlnb3RlL3p5 Z290ZV9jb21tdW5pY2F0aW9uX2xpbnV4LmgiCitAQCAtMTkzLDggKzIwMCw1MSBAQCBwaWRfdCBa eWdvdGVIb3N0SW1wbDo6TGF1bmNoWnlnb3RlKAorICAgaWYgKGlzX3NhbmRib3hlZF96eWdvdGUg JiYgdXNlX25hbWVzcGFjZV9zYW5kYm94XykgeworICAgICBwcm9jZXNzID0gc2FuZGJveDo6TmFt ZXNwYWNlU2FuZGJveDo6TGF1bmNoUHJvY2VzcygqY21kX2xpbmUsIG9wdGlvbnMpOworICAgfSBl bHNlIGlmIChpc19zYW5kYm94ZWRfenlnb3RlICYmIHVzZV9mbGF0cGFrX3NhbmRib3hfKSB7Cist ICAgIHByb2Nlc3MgPSBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+TGF1 bmNoUHJvY2VzcygqY21kX2xpbmUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKTsKKysgICAgc2FuZGJv eDo6RmxhdHBha1NhbmRib3g6OlNwYXduT3B0aW9ucyBzcGF3bl9vcHRpb25zOworKworKyNpZiBC VUlMREZMQUcoRU5BQkxFX0xJQlJBUllfQ0RNUykKKysgICAgLy8gRXhwb3NlIHRoZSBDRE0gcGF0 aHMgaW50byB0aGUgc2FuZGJveC4gVGhpcyBpcyBzaW1pbGFyIHRvIFByZVNhbmRib3hJbml0Cisr ICAgIC8vIGluIGNvbnRlbnRfbWFpbl9ydW5uZXJfaW1wbC5jYy4KKysgICAgc3RkOjp2ZWN0b3I8 Q2RtSW5mbz4gY2RtczsKKysgICAgR2V0Q29udGVudENsaWVudCgpLT5BZGRDb250ZW50RGVjcnlw dGlvbk1vZHVsZXMoJmNkbXMsIG51bGxwdHIpOworKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNkbSA6 IGNkbXMpIHsKKysgICAgICBpZiAoIXNwYXduX29wdGlvbnMuRXhwb3NlUGF0aFJvKGNkbS5wYXRo KSkgeworKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGV4cG9zZSBDRE0gbW9kdWxl IjsKKysgICAgICB9CisrICAgIH0KKysjZW5kaWYKKysKKysjaWYgQlVJTERGTEFHKEVOQUJMRV9X SURFVklORV9DRE1fQ09NUE9ORU5UKQorKyAgICAvLyBNYWtlIHN1cmUgd2UgYWxzbyBleHBvc2Ug dGhlIGZ1bGwgV2lkZXZpbmUgQ0RNIGZvbGRlciBzbyBpdCBjYW4gYmUKKysgICAgLy8gZGV0ZWN0 ZWQuCisrICAgIC8vIFRPRE86IFJlbW92ZSB0aGUgZXhwbGljaXQgZGVwZW5kZW5jaWVzIG9uIGNo cm9tZTo6LgorKyAgICBiYXNlOjpGaWxlUGF0aCB3aWRldmluZV9jZG1fcGF0aDsKKysgICAgaWYg KCFiYXNlOjpQYXRoU2VydmljZTo6R2V0KGNocm9tZTo6RElSX0NPTVBPTkVOVF9VUERBVEVEX1dJ REVWSU5FX0NETSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3aWRldmluZV9j ZG1fcGF0aCkpIHsKKysgICAgICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gZ2V0IFdpZGV2aW5l IENETSBmb2xkZXIgZm9yIHNhbmRib3ggZm9yd2FyZGluZyI7CisrICAgIH0KKysKKysgICAgTE9H KElORk8pIDw8ICJXaWRldmluZSBDRE0gcGF0aCBJUzogIiA8PCB3aWRldmluZV9jZG1fcGF0aDsK KysKKysgICAgaWYgKCF3aWRldmluZV9jZG1fcGF0aC5lbXB0eSgpICYmIGJhc2U6OlBhdGhFeGlz dHMod2lkZXZpbmVfY2RtX3BhdGgpKSB7CisrICAgICAgaWYgKCFzcGF3bl9vcHRpb25zLkV4cG9z ZVBhdGhSbyh3aWRldmluZV9jZG1fcGF0aCkpIHsKKysgICAgICAgIExPRyhFUlJPUikgPDwgIkZh aWxlZCB0byBleHBvc2UgdXBkYXRlZCBXaWRldmluZSBDRE0gcGF0aCI7CisrICAgICAgfQorKyAg ICB9CisrCisrICAgIC8vIFRoZSBXaWRldmluZSBkYXRhIGlzIGZvdW5kIHJlbGF0aXZlIHRvICRY REdfQ09ORklHX0hPTUUsIHdoaWNoIGlzIG5vdCBzZXQKKysgICAgLy8gYnkgZGVmYXVsdCB3aGVu IHJ1bm5pbmcgYSBzYW5kYm94ZWQgcHJvY2Vzcy4KKysgICAgYXV0byBlbnYgPSBiYXNlOjpFbnZp cm9ubWVudDo6Q3JlYXRlKCk7CisrICAgIGJhc2U6OkZpbGVQYXRoIHhkZ0NvbmZpZ0hvbWUgPSBi YXNlOjpuaXg6OkdldFhER0RpcmVjdG9yeSgKKysgICAgICAgIGVudi5nZXQoKSwgYmFzZTo6bml4 OjprWGRnQ29uZmlnSG9tZUVudlZhciwgbnVsbHB0cik7CisrICAgIGlmICgheGRnQ29uZmlnSG9t ZS5lbXB0eSgpKSB7CisrICAgICAgb3B0aW9ucy5lbnZpcm9ubWVudFtiYXNlOjpuaXg6OmtYZGdD b25maWdIb21lRW52VmFyXSA9CisrICAgICAgICAgIHhkZ0NvbmZpZ0hvbWUudmFsdWUoKTsKKysg ICAgfQorKyNlbmRpZgorKworKyAgICBwcm9jZXNzID0gc2FuZGJveDo6RmxhdHBha1NhbmRib3g6 OkdldEluc3RhbmNlKCktPkxhdW5jaFByb2Nlc3MoCisrICAgICAgICAqY21kX2xpbmUsIG9wdGlv bnMsIHNwYXduX29wdGlvbnMpOworICAgfSBlbHNlIHsKKyAgICAgcHJvY2VzcyA9IGJhc2U6Okxh dW5jaFByb2Nlc3MoKmNtZF9saW5lLCBvcHRpb25zKTsKKyAgIH0KK2RpZmYgLS1naXQgYS9zYW5k Ym94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5jYyBiL3NhbmRib3gvbGludXgvc2Vy dmljZXMvZmxhdHBha19zYW5kYm94LmNjCitpbmRleCAyYTkxNWE1YjlmYTExLi5lZDhkNGMwNTU2 ZjYzIDEwMDY0NAorLS0tIGEvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3gu Y2MKKysrKyBiL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjCitAQCAt NCw2ICs0LDcgQEAKKyAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFr X3NhbmRib3guaCIKKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+ CisgI2luY2x1ZGUgPHNzdHJlYW0+CisgI2luY2x1ZGUgPHN0cmluZz4KK0BAIC05Miw2ICs5Mywx OCBAQCBlbnVtIEZsYXRwYWtTcGF3blNhbmRib3hGbGFncyB7CisgICBrRmxhdHBha1NwYXduU2Fu ZGJveF9TaGFyZUExMXlCdXMgPSAxIDw8IDQsCisgfTsKKyAKKytib29sIEZsYXRwYWtTYW5kYm94 OjpTcGF3bk9wdGlvbnM6OkV4cG9zZVBhdGhSbyhiYXNlOjpGaWxlUGF0aCBwYXRoKSB7CisrICBi YXNlOjpTY29wZWRGRCBmZCgKKysgICAgICBIQU5ETEVfRUlOVFIob3BlbihwYXRoLnZhbHVlKCku Y19zdHIoKSwgT19QQVRIIHwgT19OT0ZPTExPVykpKTsKKysgIGlmICghZmQuaXNfdmFsaWQoKSkg eworKyAgICBQTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGV4cG9zZSBwYXRoICIgPDwgcGF0aDsK KysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgc2FuZGJveF9leHBvc2Vfcm8ucHVzaF9i YWNrKHN0ZDo6bW92ZShmZCkpOworKyAgcmV0dXJuIHRydWU7CisrfQorKworIEZsYXRwYWtTYW5k Ym94OjpGbGF0cGFrU2FuZGJveCgpCisgICAgIDogYnVzX3RocmVhZF8oIkZsYXRwYWtQb3J0YWxC dXMiKSwgcHJvY2Vzc19pbmZvX2N2XygmcHJvY2Vzc19pbmZvX2xvY2tfKSB7fQorIAorQEAgLTE2 OCw4ICsxODEsOSBAQCBib29sIEZsYXRwYWtTYW5kYm94OjpJc1BpZFNhbmRib3hlZChiYXNlOjpQ cm9jZXNzSWQgcmVsYXRpdmVfcGlkKSB7CisgCisgYmFzZTo6UHJvY2VzcyBGbGF0cGFrU2FuZGJv eDo6TGF1bmNoUHJvY2VzcygKKyAgICAgY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNtZGxpbmUs CistICAgIGNvbnN0IGJhc2U6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaF9vcHRpb25zKSB7CistICBi YXNlOjpQcm9jZXNzSWQgZXh0ZXJuYWxfcGlkID0gU3Bhd24oY21kbGluZSwgbGF1bmNoX29wdGlv bnMpOworKyAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucywKKysg ICAgY29uc3QgU3Bhd25PcHRpb25zJiBzcGF3bl9vcHRpb25zIC8qPSB7fSovKSB7CisrICBiYXNl OjpQcm9jZXNzSWQgZXh0ZXJuYWxfcGlkID0gU3Bhd24oY21kbGluZSwgbGF1bmNoX29wdGlvbnMs IHNwYXduX29wdGlvbnMpOworICAgaWYgKGV4dGVybmFsX3BpZCA9PSBiYXNlOjprTnVsbFByb2Nl c3NJZCkgeworICAgICByZXR1cm4gYmFzZTo6UHJvY2VzcygpOworICAgfQorQEAgLTM2Myw5ICsz NzcsOSBAQCB2b2lkIEZsYXRwYWtTYW5kYm94OjpPblNwYXduRXhpdGVkU2lnbmFsKGRidXM6OlNp Z25hbCogc2lnbmFsKSB7CisgICBwcm9jZXNzX2luZm9fY3ZfLkJyb2FkY2FzdCgpOworIH0KKyAK Ky1iYXNlOjpQcm9jZXNzSWQgRmxhdHBha1NhbmRib3g6OlNwYXduKAorLSAgICBjb25zdCBiYXNl OjpDb21tYW5kTGluZSYgY21kbGluZSwKKy0gICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYg bGF1bmNoX29wdGlvbnMpIHsKKytiYXNlOjpQcm9jZXNzSWQgRmxhdHBha1NhbmRib3g6OlNwYXdu KGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoX29wdGlv bnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGF3bk9w dGlvbnMmIHNwYXduX29wdGlvbnMpIHsKKyAgIGJhc2U6OlNjb3BlZEJsb2NraW5nQ2FsbCBzY29w ZWRfYmxvY2tpbmdfY2FsbChGUk9NX0hFUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmFzZTo6QmxvY2tpbmdUeXBlOjpNQVlfQkxPQ0spOworICAg YmFzZTo6U2NvcGVkQWxsb3dCYXNlU3luY1ByaW1pdGl2ZXMgYWxsb3dfd2FpdDsKK0BAIC0zOTEs MjQgKzQwNSwyNiBAQCBiYXNlOjpQcm9jZXNzSWQgRmxhdHBha1NhbmRib3g6OlNwYXduKAorICAg ICAgIEZST01fSEVSRSwKKyAgICAgICBiYXNlOjpCaW5kT25jZSgmRmxhdHBha1NhbmRib3g6OlNw YXduT25CdXNUaHJlYWQsIGJhc2U6OlVucmV0YWluZWQodGhpcyksCisgICAgICAgICAgICAgICAg ICAgICAgYmFzZTo6VW5yZXRhaW5lZCgmZXh0ZXJuYWxfcGlkKSwgYmFzZTo6VW5yZXRhaW5lZCgm ZXZlbnQpLAorLSAgICAgICAgICAgICAgICAgICAgIGNtZGxpbmUsIGxhdW5jaF9vcHRpb25zKSk7 CisrICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCgmY21kbGluZSksCisrICAg ICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCgmbGF1bmNoX29wdGlvbnMpLAorKyAg ICAgICAgICAgICAgICAgICAgIGJhc2U6OlVucmV0YWluZWQoJnNwYXduX29wdGlvbnMpKSk7Cisg ICBldmVudC5XYWl0KCk7CisgCisgICByZXR1cm4gZXh0ZXJuYWxfcGlkOworIH0KKyAKKy12b2lk IEZsYXRwYWtTYW5kYm94OjpTcGF3bk9uQnVzVGhyZWFkKAorLSAgICBiYXNlOjpQcm9jZXNzSWQq IG91dF9leHRlcm5hbF9waWQsCistICAgIGJhc2U6OldhaXRhYmxlRXZlbnQqIGV2ZW50LAorLSAg ICBjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY21kbGluZSwKKy0gICAgY29uc3QgYmFzZTo6TGF1 bmNoT3B0aW9ucyYgbGF1bmNoX29wdGlvbnMpIHsKKyt2b2lkIEZsYXRwYWtTYW5kYm94OjpTcGF3 bk9uQnVzVGhyZWFkKGJhc2U6OlByb2Nlc3NJZCogb3V0X2V4dGVybmFsX3BpZCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OldhaXRhYmxlRXZlbnQqIGV2ZW50 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6Q29t bWFuZExpbmUqIGNtZGxpbmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25zKiBsYXVuY2hfb3B0aW9ucywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwYXduT3B0aW9ucyogc3Bhd25fb3B0 aW9ucykgeworICAgZGJ1czo6T2JqZWN0UHJveHkqIG9iamVjdF9wcm94eSA9IEdldFBvcnRhbE9i amVjdFByb3h5KCk7CisgICBkYnVzOjpNZXRob2RDYWxsIG1ldGhvZF9jYWxsKGtGbGF0cGFrUG9y dGFsSW50ZXJmYWNlTmFtZSwgIlNwYXduIik7CisgICBkYnVzOjpNZXNzYWdlV3JpdGVyIHdyaXRl cigmbWV0aG9kX2NhbGwpOworIAorICAgY29uc3QgYmFzZTo6RmlsZVBhdGgmIGN1cnJlbnRfZGly ZWN0b3J5ID0KKy0gICAgICAhbGF1bmNoX29wdGlvbnMuY3VycmVudF9kaXJlY3RvcnkuZW1wdHko KQorLSAgICAgICAgICA/IGxhdW5jaF9vcHRpb25zLmN1cnJlbnRfZGlyZWN0b3J5CisrICAgICAg IWxhdW5jaF9vcHRpb25zLT5jdXJyZW50X2RpcmVjdG9yeS5lbXB0eSgpCisrICAgICAgICAgID8g bGF1bmNoX29wdGlvbnMtPmN1cnJlbnRfZGlyZWN0b3J5CisgICAgICAgICAgIC8vIENoYW5nZSB0 byAvYXBwIHNpbmNlIGl0J3MgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUgcHJlc2VudCBpbgorICAg ICAgICAgICAvLyB0aGUgc2FuZGJveC4KKyAgICAgICAgICAgOiBrRmxhdHBha0FwcFBhdGg7CitA QCAtNDE3LDcgKzQzMyw3IEBAIHZvaWQgRmxhdHBha1NhbmRib3g6OlNwYXduT25CdXNUaHJlYWQo CisgICBkYnVzOjpNZXNzYWdlV3JpdGVyIGFyZ3Zfd3JpdGVyKG51bGxwdHIpOworICAgd3JpdGVy Lk9wZW5BcnJheSgiYXkiLCAmYXJndl93cml0ZXIpOworIAorLSAgZm9yIChjb25zdCBzdGQ6OnN0 cmluZyYgYXJnIDogY21kbGluZS5hcmd2KCkpIHsKKysgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcm IGFyZyA6IGNtZGxpbmUtPmFyZ3YoKSkgeworICAgICBXcml0ZVN0cmluZ0FzQnl0ZUFycmF5KCZh cmd2X3dyaXRlciwgYXJnKTsKKyAgIH0KKyAKK0BAIC00MzksNyArNDU1LDcgQEAgdm9pZCBGbGF0 cGFrU2FuZGJveDo6U3Bhd25PbkJ1c1RocmVhZCgKKyAgIFdyaXRlRmRQYWlyTWFwKCZmZHNfd3Jp dGVyLCBTVERPVVRfRklMRU5PLCBTVERPVVRfRklMRU5PKTsKKyAgIFdyaXRlRmRQYWlyTWFwKCZm ZHNfd3JpdGVyLCBTVERFUlJfRklMRU5PLCBTVERFUlJfRklMRU5PKTsKKyAKKy0gIGZvciAoY29u c3QgYXV0byYgcGFpciA6IGxhdW5jaF9vcHRpb25zLmZkc190b19yZW1hcCkgeworKyAgZm9yIChj b25zdCBhdXRvJiBwYWlyIDogbGF1bmNoX29wdGlvbnMtPmZkc190b19yZW1hcCkgeworICAgICBX cml0ZUZkUGFpck1hcCgmZmRzX3dyaXRlciwgcGFpci5maXJzdCwgcGFpci5zZWNvbmQpOworICAg fQorIAorQEAgLTQ0OCw3ICs0NjQsNyBAQCB2b2lkIEZsYXRwYWtTYW5kYm94OjpTcGF3bk9uQnVz VGhyZWFkKAorICAgZGJ1czo6TWVzc2FnZVdyaXRlciBlbnZfd3JpdGVyKG51bGxwdHIpOworICAg d3JpdGVyLk9wZW5BcnJheSgie3NzfSIsICZlbnZfd3JpdGVyKTsKKyAKKy0gIGZvciAoY29uc3Qg YXV0byYgcGFpciA6IGxhdW5jaF9vcHRpb25zLmVudmlyb25tZW50KSB7CisrICBmb3IgKGNvbnN0 IGF1dG8mIHBhaXIgOiBsYXVuY2hfb3B0aW9ucy0+ZW52aXJvbm1lbnQpIHsKKyAgICAgZGJ1czo6 TWVzc2FnZVdyaXRlciBlbnRyeV93cml0ZXIobnVsbHB0cik7CisgICAgIGVudl93cml0ZXIuT3Bl bkRpY3RFbnRyeSgmZW50cnlfd3JpdGVyKTsKKyAKK0BAIC00NzIsMTEgKzQ4OCwxMSBAQCB2b2lk IEZsYXRwYWtTYW5kYm94OjpTcGF3bk9uQnVzVGhyZWFkKAorICNlbHNlCisgI2VuZGlmCisgCist ICBpZiAobGF1bmNoX29wdGlvbnMuY2xlYXJfZW52aXJvbm1lbnQpIHsKKysgIGlmIChsYXVuY2hf b3B0aW9ucy0+Y2xlYXJfZW52aXJvbm1lbnQpIHsKKyAgICAgc3Bhd25fZmxhZ3MgfD0ga0ZsYXRw YWtTcGF3bl9DbGVhckVudmlyb25tZW50OworICAgfQorIAorLSAgaWYgKGxhdW5jaF9vcHRpb25z LmtpbGxfb25fcGFyZW50X2RlYXRoKSB7CisrICBpZiAobGF1bmNoX29wdGlvbnMtPmtpbGxfb25f cGFyZW50X2RlYXRoKSB7CisgICAgIHNwYXduX2ZsYWdzIHw9IGtGbGF0cGFrU3Bhd25fV2F0Y2hC dXM7CisgICB9CisgCitAQCAtNDg1LDYgKzUwMSwyOCBAQCB2b2lkIEZsYXRwYWtTYW5kYm94OjpT cGF3bk9uQnVzVGhyZWFkKAorICAgZGJ1czo6TWVzc2FnZVdyaXRlciBvcHRpb25zX3dyaXRlcihu dWxscHRyKTsKKyAgIHdyaXRlci5PcGVuQXJyYXkoIntzdn0iLCAmb3B0aW9uc193cml0ZXIpOwor IAorKyAgaWYgKCFzcGF3bl9vcHRpb25zLT5zYW5kYm94X2V4cG9zZV9yby5lbXB0eSgpKSB7Cisr ICAgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgZW50cnlfd3JpdGVyKG51bGxwdHIpOworKyAgICBvcHRp b25zX3dyaXRlci5PcGVuRGljdEVudHJ5KCZlbnRyeV93cml0ZXIpOworKworKyAgICBlbnRyeV93 cml0ZXIuQXBwZW5kU3RyaW5nKCJzYW5kYm94LWV4cG9zZS1mZC1ybyIpOworKworKyAgICBkYnVz OjpNZXNzYWdlV3JpdGVyIHZhcmlhbnRfd3JpdGVyKG51bGxwdHIpOworKyAgICBlbnRyeV93cml0 ZXIuT3BlblZhcmlhbnQoImFoIiwgJnZhcmlhbnRfd3JpdGVyKTsKKysKKysgICAgZGJ1czo6TWVz c2FnZVdyaXRlciBmZHNfd3JpdGVyKG51bGxwdHIpOworKyAgICB2YXJpYW50X3dyaXRlci5PcGVu QXJyYXkoImgiLCAmZmRzX3dyaXRlcik7CisrCisrICAgIGZvciAoY29uc3QgYmFzZTo6U2NvcGVk RkQmIGZkIDogc3Bhd25fb3B0aW9ucy0+c2FuZGJveF9leHBvc2Vfcm8pIHsKKysgICAgICBDSEVD SyhmZC5pc192YWxpZCgpKSA8PCAiSW52YWxpZCBzcGF3biBleHBvc2UgZmQiOworKyAgICAgIGZk c193cml0ZXIuQXBwZW5kRmlsZURlc2NyaXB0b3IoZmQuZ2V0KCkpOworKyAgICB9CisrCisrICAg IHZhcmlhbnRfd3JpdGVyLkNsb3NlQ29udGFpbmVyKCZmZHNfd3JpdGVyKTsKKysgICAgZW50cnlf d3JpdGVyLkNsb3NlQ29udGFpbmVyKCZ2YXJpYW50X3dyaXRlcik7CisrICAgIG9wdGlvbnNfd3Jp dGVyLkNsb3NlQ29udGFpbmVyKCZlbnRyeV93cml0ZXIpOworKyAgfQorKworICAgaWYgKHNhbmRi b3hfZmxhZ3MgIT0gMCkgeworICAgICBkYnVzOjpNZXNzYWdlV3JpdGVyIGVudHJ5X3dyaXRlcihu dWxscHRyKTsKKyAgICAgb3B0aW9uc193cml0ZXIuT3BlbkRpY3RFbnRyeSgmZW50cnlfd3JpdGVy KTsKK2RpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5o IGIvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaAoraW5kZXggMTY3YmJj ODU5NDVhZC4uZGU4ZTcxNjViNDU3MyAxMDA2NDQKKy0tLSBhL3NhbmRib3gvbGludXgvc2Vydmlj ZXMvZmxhdHBha19zYW5kYm94LmgKKysrKyBiL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBh a19zYW5kYm94LmgKK0BAIC05LDYgKzksOCBAQAorICNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3Nw ZWNpZmljLmgiCisgI2luY2x1ZGUgImJhc2UvY29udGFpbmVycy9mbGF0X21hcC5oIgorICNpbmNs dWRlICJiYXNlL2NvbnRhaW5lcnMvZmxhdF9zZXQuaCIKKysjaW5jbHVkZSAiYmFzZS9maWxlcy9m aWxlX3BhdGguaCIKKysjaW5jbHVkZSAiYmFzZS9maWxlcy9zY29wZWRfZmlsZS5oIgorICNpbmNs dWRlICJiYXNlL25vX2Rlc3RydWN0b3IuaCIKKyAjaW5jbHVkZSAiYmFzZS9wcm9jZXNzL2tpbGwu aCIKKyAjaW5jbHVkZSAiYmFzZS9wcm9jZXNzL2xhdW5jaC5oIgorQEAgLTM0LDYgKzM2LDIwIEBA IG5hbWVzcGFjZSBzYW5kYm94IHsKKyAvLyBpdCBpcyBrbm93biBpbnNpZGUgdGhlIHNhbmRib3gn cyBQSUQgbmFtZXNwYWNlLgorIGNsYXNzIFNBTkRCT1hfRVhQT1JUIEZsYXRwYWtTYW5kYm94IHsK KyAgcHVibGljOgorKyAgY2xhc3MgU3Bhd25PcHRpb25zIHsKKysgICBwdWJsaWM6CisrICAgIFNw YXduT3B0aW9ucygpID0gZGVmYXVsdDsKKysgICAgU3Bhd25PcHRpb25zKGNvbnN0IFNwYXduT3B0 aW9ucyYgb3RoZXIpID0gZGVsZXRlOworKyAgICBTcGF3bk9wdGlvbnMoU3Bhd25PcHRpb25zJiYg b3RoZXIpID0gZGVsZXRlOworKworKyAgICBib29sIEV4cG9zZVBhdGhSbyhiYXNlOjpGaWxlUGF0 aCBwYXRoKTsKKysKKysgICBwcml2YXRlOgorKyAgICBmcmllbmQgY2xhc3MgRmxhdHBha1NhbmRi b3g7CisrCisrICAgIHN0ZDo6dmVjdG9yPGJhc2U6OlNjb3BlZEZEPiBzYW5kYm94X2V4cG9zZV9y bzsKKysgIH07CisrCisgICBzdGF0aWMgRmxhdHBha1NhbmRib3gqIEdldEluc3RhbmNlKCk7Cisg CisgICAvLyBSZXByZXNlbnRzIHRoZSBsZXZlbCBvZiBzYW5kYm94aW5nIGluc2lkZSBhIEZsYXRw YWsuIGtOb25lIG1lYW5zIHRoaXMgaXMKK0BAIC01NSw3ICs3MSw4IEBAIGNsYXNzIFNBTkRCT1hf RVhQT1JUIEZsYXRwYWtTYW5kYm94IHsKKyAgIC8vIEdldFJlbGF0aXZlUGlkLiBUaGlzIGlzIHRo ZSByZWFzb24gd2h5IGEgdmFuaWxsYSBQcm9jZXNzSWQgaXMgcmV0dXJuZWQKKyAgIC8vIHJhdGhl ciB0aGFuIGEgYmFzZTo6UHJvY2VzcyBpbnN0YW5jZS4KKyAgIGJhc2U6OlByb2Nlc3MgTGF1bmNo UHJvY2Vzcyhjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY21kbGluZSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9u cyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0 aW9ucyYgbGF1bmNoX29wdGlvbnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgU3Bhd25PcHRpb25zJiBzcGF3bl9vcHRpb25zID0ge30pOworIAorICAgLy8gSW5kZWZpbml0 ZWx5IHdhaXRzIGZvciB0aGUgZ2l2ZW4gcHJvY2VzcyBhbmQgZmlsbHMgdGhlIGV4aXQgY29kZSBw b2ludGVyCisgICAvLyBpZiBnaXZlbiBhbmQgbm9uLW51bGwuIFJldHVybnMgZmFsc2Ugb24gd2Fp dCBmYWlsdXJlLgorQEAgLTg0LDExICsxMDEsMTMgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgRmxh dHBha1NhbmRib3ggeworICAgdm9pZCBPblNwYXduRXhpdGVkU2lnbmFsKGRidXM6OlNpZ25hbCog c2lnbmFsKTsKKyAKKyAgIGJhc2U6OlByb2Nlc3NJZCBTcGF3bihjb25zdCBiYXNlOjpDb21tYW5k TGluZSYgY21kbGluZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpMYXVu Y2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoX29wdGlvbnMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgU3Bhd25PcHRpb25zJiBzcGF3bl9vcHRpb25zKTsKKyAgIHZvaWQgU3Bh d25PbkJ1c1RocmVhZChiYXNlOjpQcm9jZXNzSWQqIG91dF9leHRlcm5hbF9waWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgYmFzZTo6V2FpdGFibGVFdmVudCogZXZlbnQsCistICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNtZGxpbmUsCistICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoX29wdGlv bnMpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lKiBj bWRsaW5lLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkxhdW5jaE9wdGlv bnMqIGxhdW5jaF9vcHRpb25zLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwYXdu T3B0aW9ucyogc3Bhd25fb3B0aW9ucyk7CisgICB2b2lkIE9uU3Bhd25SZXNwb25zZShiYXNlOjpQ cm9jZXNzSWQqIG91dF9leHRlcm5hbF9waWQsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNl OjpXYWl0YWJsZUV2ZW50KiBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRidXM6OlJl c3BvbnNlKiByZXNwb25zZSwKKy0tIAorMi40Ni4xCisK