From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: drop chromium support for el7 Date: Fri, 07 Aug 2026 16:06:39 GMT Message-ID: <178611879921.1.16047378771765522468.rpms-chromium-19a0fb38ce00@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 19a0fb38ce003b18edda91cc8d70a66f4ad4b5bd QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY2hyb21pdW0KQnJh bmNoIDogZXBlbDktbmV4dApDb21taXQgOiAxOWEwZmIzOGNlMDAzYjE4ZWRkYTkxY2M4ZDcwYTY2 ZjRhZDRiNWJkCkF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CkRhdGUgICA6IDIw MjQtMDctMjBUMTE6MzU6MzMrMDI6MDAKU3RhdHMgIDogKzUvLTYyMjkgaW4gMzAgZmlsZShzKQpV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2Nocm9taXVtL2MvMTlh MGZiMzhjZTAwM2IxOGVkZGE5MWNjOGQ3MGE2NmY0YWQ0YjViZD9icmFuY2g9ZXBlbDktbmV4dAoK TG9nOgpkcm9wIGNocm9taXVtIHN1cHBvcnQgZm9yIGVsNwoKLS0tCmRpZmYgLS1naXQgYS9jaHJv bWl1bS0xMDgtZWw3LXdheWxhbmQtc3RybmR1cC1lcnJvci5wYXRjaCBiL2Nocm9taXVtLTEwOC1l bDctd2F5bGFuZC1zdHJuZHVwLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAxMTQ3ODY3Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEwOC1lbDctd2F5bGFuZC1zdHJu ZHVwLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotZGlmZiAtdXAg Y2hyb21pdW0tMTA4LjAuNTM1OS4xMjQvdGhpcmRfcGFydHkvd2F5bGFuZC9zcmMvc3JjL3NjYW5u ZXIuYy5tZSBjaHJvbWl1bS0xMDguMC41MzU5LjEyNC90aGlyZF9wYXJ0eS93YXlsYW5kL3NyYy9z cmMvc2Nhbm5lci5jCi0tLS0gY2hyb21pdW0tMTA4LjAuNTM1OS4xMjQvdGhpcmRfcGFydHkvd2F5 bGFuZC9zcmMvc3JjL3NjYW5uZXIuYy5tZQkyMDIyLTEyLTI3IDE2OjE0OjIyLjUwNzQ5NjU3NSAr MDEwMAotKysrIGNocm9taXVtLTEwOC4wLjUzNTkuMTI0L3RoaXJkX3BhcnR5L3dheWxhbmQvc3Jj L3NyYy9zY2FubmVyLmMJMjAyMi0xMi0yNyAxNjozNToxNy42MTc1NzM2MTAgKzAxMDAKLUBAIC0y Niw2ICsyNiw3IEBACi0gICovCi0gCi0gI2luY2x1ZGUgIndheWxhbmQtdmVyc2lvbi5oIgotKyNp bmNsdWRlICJjb25maWcuaCIgLy8gSEFWRV9TVFJORFVQCi0gCi0gI2luY2x1ZGUgPHN0ZGJvb2wu aD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMTAtZXBlbDct b2xkLWhlYWRlcnMtd29ya2Fyb3VuZHMucGF0Y2ggYi9jaHJvbWl1bS0xMTAtZXBlbDctb2xkLWhl YWRlcnMtd29ya2Fyb3VuZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi OTE3NjMuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTEwLWVwZWw3LW9sZC1oZWFkZXJzLXdvcmth cm91bmRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLWRpZmYgLXVwIGNo cm9taXVtLTExMC4wLjU0ODEuNzcvc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX2hhcmR3YXJlX3Zp ZGVvX2RlY29kaW5nX3BvbGljeV9saW51eC5jYy5tZSBjaHJvbWl1bS0xMTAuMC41NDgxLjc3L3Nh bmRib3gvcG9saWN5L2xpbnV4L2JwZl9oYXJkd2FyZV92aWRlb19kZWNvZGluZ19wb2xpY3lfbGlu dXguY2MKLS0tLSBjaHJvbWl1bS0xMTAuMC41NDgxLjc3L3NhbmRib3gvcG9saWN5L2xpbnV4L2Jw Zl9oYXJkd2FyZV92aWRlb19kZWNvZGluZ19wb2xpY3lfbGludXguY2MubWUJMjAyMy0wMi0wOCAy MDozNDowMi43MDAwMTA4NDYgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMTAuMC41NDgxLjc3L3NhbmRi b3gvcG9saWN5L2xpbnV4L2JwZl9oYXJkd2FyZV92aWRlb19kZWNvZGluZ19wb2xpY3lfbGludXgu Y2MJMjAyMy0wMi0wOCAyMDozNTozMC40NTU1ODA2NzAgKzAxMDAKLUBAIC00LDcgKzQsOSBAQAot IAotICNpbmNsdWRlICJzYW5kYm94L3BvbGljeS9saW51eC9icGZfaGFyZHdhcmVfdmlkZW9fZGVj b2RpbmdfcG9saWN5X2xpbnV4LmgiCi0gCi0tI2luY2x1ZGUgPGxpbnV4L2tjbXAuaD4KLSsjaWZu ZGVmIEtDTVBfRklMRQotKyNkZWZpbmUgS0NNUF9GSUxFIDAKLSsjZW5kaWYKLSAKLSAjaW5jbHVk ZSAibWVkaWEvZ3B1L2J1aWxkZmxhZ3MuaCIKLSAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5oIgotZGlmZiAtdXAgY2hyb21pdW0tOTku MC40ODQ0LjUxL21vam8vY29yZS9jaGFubmVsX2xpbnV4LmNjLmVwZWw3LWhlYWRlci13b3JrYXJv dW5kcyBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvbW9qby9jb3JlL2NoYW5uZWxfbGludXguY2MKLS0t LSBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvbW9qby9jb3JlL2NoYW5uZWxfbGludXguY2MuZXBlbDct aGVhZGVyLXdvcmthcm91bmRzCTIwMjItMDItMjggMTk6MDU6NTQuMDAwMDAwMDAwIC0wNTAwCi0r KysgY2hyb21pdW0tOTkuMC40ODQ0LjUxL21vam8vY29yZS9jaGFubmVsX2xpbnV4LmNjCTIwMjIt MDMtMDUgMTQ6NTA6NDkuODc2ODEyOTA5IC0wNTAwCi1AQCAtNDQsNiArNDQsMjUgQEAKLSAjaW5j bHVkZSAiYmFzZS9hbmRyb2lkL2J1aWxkX2luZm8uaCIKLSAjZW5kaWYKLSAKLSsjaWZuZGVmIEZf TElOVVhfU1BFQ0lGSUNfQkFTRQotKyNkZWZpbmUgRl9MSU5VWF9TUEVDSUZJQ19CQVNFIDEwMjQK LSsjZW5kaWYKLSsjaWZuZGVmIEZfU0VBTF9TRUFMCi0rI2RlZmluZSBGX1NFQUxfU0VBTCAweDAw MDEKLSsjZW5kaWYKLSsjaWZuZGVmIEZfU0VBTF9TSFJJTksKLSsjZGVmaW5lIEZfU0VBTF9TSFJJ TksgMHgwMDAyCi0rI2VuZGlmCi0rI2lmbmRlZiBGX1NFQUxfR1JPVwotKyNkZWZpbmUgRl9TRUFM X0dST1cgMHgwMDA0Ci0rI2VuZGlmCi0rI2lmbmRlZiBGX0FERF9TRUFMUwotKyNkZWZpbmUgRl9B RERfU0VBTFMgKEZfTElOVVhfU1BFQ0lGSUNfQkFTRSArIDkpCi0rI2VuZGlmCi0rI2lmbmRlZiBG X0dFVF9TRUFMUwotKyNkZWZpbmUgRl9HRVRfU0VBTFMgKEZfTElOVVhfU1BFQ0lGSUNfQkFTRSAr IDEwKQotKyNlbmRpZgotKwotICNpZm5kZWYgRUZEX1pFUk9fT05fV0FLRQotICNkZWZpbmUgRUZE X1pFUk9fT05fV0FLRSBPX05PRk9MTE9XCi0gI2VuZGlmCi1kaWZmIC11cCBjaHJvbWl1bS05OS4w LjQ4NDQuNTEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1l dGVyc19yZXN0cmljdGlvbnMuY2MuZXBlbDctaGVhZGVyLXdvcmthcm91bmRzIGNocm9taXVtLTk5 LjAuNDg0NC41MS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJh bWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwotLS0tIGNocm9taXVtLTk5LjAuNDg0NC41MS9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9u cy5jYy5lcGVsNy1oZWFkZXItd29ya2Fyb3VuZHMJMjAyMi0wMy0wNSAxNDo1MDo0OS44Nzc4MTI5 MTUgLTA1MDAKLSsrKyBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAyMi0wMy0w NSAxNToxNTowMi41MzY4NjcwMDkgLTA1MDAKLUBAIC01Myw2ICs1MywyNSBAQAotIAotICNlbmRp ZiAgLy8gQlVJTERGTEFHKElTX0FORFJPSUQpCi0gCi0rI2lmbmRlZiBGX0xJTlVYX1NQRUNJRklD X0JBU0UKLSsjZGVmaW5lIEZfTElOVVhfU1BFQ0lGSUNfQkFTRSAxMDI0Ci0rI2VuZGlmCi0rI2lm bmRlZiBGX1NFQUxfU0VBTAotKyNkZWZpbmUgRl9TRUFMX1NFQUwgMHgwMDAxCi0rI2VuZGlmCi0r I2lmbmRlZiBGX1NFQUxfU0hSSU5LCi0rI2RlZmluZSBGX1NFQUxfU0hSSU5LIDB4MDAwMgotKyNl bmRpZgotKyNpZm5kZWYgRl9TRUFMX0dST1cKLSsjZGVmaW5lIEZfU0VBTF9HUk9XIDB4MDAwNAot KyNlbmRpZgotKyNpZm5kZWYgRl9BRERfU0VBTFMKLSsjZGVmaW5lIEZfQUREX1NFQUxTIChGX0xJ TlVYX1NQRUNJRklDX0JBU0UgKyA5KQotKyNlbmRpZgotKyNpZm5kZWYgRl9HRVRfU0VBTFMKLSsj ZGVmaW5lIEZfR0VUX1NFQUxTIChGX0xJTlVYX1NQRUNJRklDX0JBU0UgKyAxMCkKLSsjZW5kaWYK LSsKLSAjaWYgZGVmaW5lZChfX2FybV9fKSAmJiAhZGVmaW5lZChNQVBfU1RBQ0spCi0gI2RlZmlu ZSBNQVBfU1RBQ0sgMHgyMDAwMCAgLy8gRGFpc3kgYnVpbGQgZW52aXJvbm1lbnQgaGFzIG9sZCBo ZWFkZXJzLgotICNlbmRpZgotZGlmZiAtdXAgY2hyb21pdW0tOTkuMC40ODQ0LjUxL3NhbmRib3gv cG9saWN5L2xpbnV4L2JwZl9jcm9zX2FtZF9ncHVfcG9saWN5X2xpbnV4LmNjLmVwZWw3LWhlYWRl ci13b3JrYXJvdW5kcyBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvc2FuZGJveC9wb2xpY3kvbGludXgv YnBmX2Nyb3NfYW1kX2dwdV9wb2xpY3lfbGludXguY2MKLS0tLSBjaHJvbWl1bS05OS4wLjQ4NDQu NTEvc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX2Nyb3NfYW1kX2dwdV9wb2xpY3lfbGludXguY2Mu ZXBlbDctaGVhZGVyLXdvcmthcm91bmRzCTIwMjItMDItMjggMTk6MDU6NTUuMDAwMDAwMDAwIC0w NTAwCi0rKysgY2hyb21pdW0tOTkuMC40ODQ0LjUxL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9j cm9zX2FtZF9ncHVfcG9saWN5X2xpbnV4LmNjCTIwMjItMDMtMDUgMTQ6NTA6NDkuODc3ODEyOTE1 IC0wNTAwCi1AQCAtNiw3ICs2LDI0IEBACi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1 ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2tjbXAuaD4KLSsjaWZuZGVmIEtDTVBfRklM RQotKyNkZWZpbmUgS0NNUF9GSUxFIDAKLSsjZW5kaWYKLSsjaWZuZGVmIEZfTElOVVhfU1BFQ0lG SUNfQkFTRQotKyNkZWZpbmUgRl9MSU5VWF9TUEVDSUZJQ19CQVNFIDEwMjQKLSsjZW5kaWYKLSsj aWZuZGVmIEZfU0VBTF9TRUFMCi0rI2RlZmluZSBGX1NFQUxfU0VBTCAweDAwMDEKLSsjZW5kaWYK LSsjaWZuZGVmIEZfU0VBTF9TSFJJTksKLSsjZGVmaW5lIEZfU0VBTF9TSFJJTksgMHgwMDAyCi0r I2VuZGlmCi0rI2lmbmRlZiBGX1NFQUxfR1JPVwotKyNkZWZpbmUgRl9TRUFMX0dST1cgMHgwMDA0 Ci0rI2VuZGlmCi0rI2lmbmRlZiBGX0FERF9TRUFMUwotKyNkZWZpbmUgRl9BRERfU0VBTFMgKEZf TElOVVhfU1BFQ0lGSUNfQkFTRSArIDkpCi0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy9zb2NrZXQu aD4KLSAKLSAvLyBTb21lIGFyY2gncyAoYXJtNjQgZm9yIGluc3RhbmNlKSB1bmlzdGQuaCBkb24n dCBwdWxsIGluIHN5bWJvbHMgdXNlZCBoZXJlCi1kaWZmIC11cCBjaHJvbWl1bS05OS4wLjQ4NDQu NTEvc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX2dwdV9wb2xpY3lfbGludXguY2MuZXBlbDctaGVh ZGVyLXdvcmthcm91bmRzIGNocm9taXVtLTk5LjAuNDg0NC41MS9zYW5kYm94L3BvbGljeS9saW51 eC9icGZfZ3B1X3BvbGljeV9saW51eC5jYwotLS0tIGNocm9taXVtLTk5LjAuNDg0NC41MS9zYW5k Ym94L3BvbGljeS9saW51eC9icGZfZ3B1X3BvbGljeV9saW51eC5jYy5lcGVsNy1oZWFkZXItd29y a2Fyb3VuZHMJMjAyMi0wMi0yOCAxOTowNTo1NS4wMDAwMDAwMDAgLTA1MDAKLSsrKyBjaHJvbWl1 bS05OS4wLjQ4NDQuNTEvc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX2dwdV9wb2xpY3lfbGludXgu Y2MJMjAyMi0wMy0wNSAxNDo1MDo0OS44Nzc4MTI5MTUgLTA1MDAKLUBAIC0yMiw2ICsyMiwyMiBA QAotICNpbmNsdWRlICJzYW5kYm94L3BvbGljeS9saW51eC9zYW5kYm94X2xpbnV4LmgiCi0gI2lu Y2x1ZGUgInNhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfc2VjY29tcF9icGZfbGludXguaCIK LSAKLSsjaWZuZGVmIEZfTElOVVhfU1BFQ0lGSUNfQkFTRQotKyNkZWZpbmUgRl9MSU5VWF9TUEVD SUZJQ19CQVNFIDEwMjQKLSsjZW5kaWYKLSsjaWZuZGVmIEZfU0VBTF9TRUFMCi0rI2RlZmluZSBG X1NFQUxfU0VBTCAweDAwMDEKLSsjZW5kaWYKLSsjaWZuZGVmIEZfU0VBTF9TSFJJTksKLSsjZGVm aW5lIEZfU0VBTF9TSFJJTksgMHgwMDAyCi0rI2VuZGlmCi0rI2lmbmRlZiBGX1NFQUxfR1JPVwot KyNkZWZpbmUgRl9TRUFMX0dST1cgMHgwMDA0Ci0rI2VuZGlmCi0rI2lmbmRlZiBGX0FERF9TRUFM UwotKyNkZWZpbmUgRl9BRERfU0VBTFMgKEZfTElOVVhfU1BFQ0lGSUNfQkFTRSArIDkpCi0rI2Vu ZGlmCi0rCi0gdXNpbmcgc2FuZGJveDo6YnBmX2RzbDo6QWxsT2Y7Ci0gdXNpbmcgc2FuZGJveDo6 YnBmX2RzbDo6QWxsb3c7Ci0gdXNpbmcgc2FuZGJveDo6YnBmX2RzbDo6QXJnOwotZGlmZiAtdXAg Y2hyb21pdW0tOTkuMC40ODQ0LjUxL3VpL2V2ZW50cy9vem9uZS9ldmRldi9ldmVudF9jb252ZXJ0 ZXJfZXZkZXZfaW1wbC5jYy5lcGVsNy1oZWFkZXItd29ya2Fyb3VuZHMgY2hyb21pdW0tOTkuMC40 ODQ0LjUxL3VpL2V2ZW50cy9vem9uZS9ldmRldi9ldmVudF9jb252ZXJ0ZXJfZXZkZXZfaW1wbC5j YwotLS0tIGNocm9taXVtLTk5LjAuNDg0NC41MS91aS9ldmVudHMvb3pvbmUvZXZkZXYvZXZlbnRf Y29udmVydGVyX2V2ZGV2X2ltcGwuY2MuZXBlbDctaGVhZGVyLXdvcmthcm91bmRzCTIwMjItMDIt MjggMTk6MDY6NDkuMDAwMDAwMDAwIC0wNTAwCi0rKysgY2hyb21pdW0tOTkuMC40ODQ0LjUxL3Vp L2V2ZW50cy9vem9uZS9ldmRldi9ldmVudF9jb252ZXJ0ZXJfZXZkZXZfaW1wbC5jYwkyMDIyLTAz LTA1IDE0OjUwOjQ5Ljg3NzgxMjkxNSAtMDUwMAotQEAgLTIzLDYgKzIzLDEwIEBACi0gI2luY2x1 ZGUgInVpL2V2ZW50cy9vem9uZS9ldmRldi9udW1iZXJwYWRfbWV0cmljcy5oIgotICNlbmRpZgot IAotKyNpZm5kZWYgU1dfUEVOX0lOU0VSVEVECi0rI2RlZmluZSBTV19QRU5fSU5TRVJURUQgICAg ICAgICAgICAgICAgMHgwZiAgLyogc2V0ID0gcGVuIGluc2VydGVkICovCi0rI2VuZGlmCi0rCi0g bmFtZXNwYWNlIHVpIHsKLSAKLSBuYW1lc3BhY2UgewoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEx NC13aXJlbGVzcy1lbDcucGF0Y2ggYi9jaHJvbWl1bS0xMTQtd2lyZWxlc3MtZWw3LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Nzc2ZTkwLi4wMDAwMDAwCi0tLSBhL2Nocm9t aXVtLTExNC13aXJlbGVzcy1lbDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBA Ci1kaWZmIC11cCBjaHJvbWl1bS0xMTQuMC41NzM1LjI2L3NhbmRib3gvcG9saWN5L2xpbnV4L2Jw Zl9uZXR3b3JrX3BvbGljeV9saW51eC5jYy5tZSBjaHJvbWl1bS0xMTQuMC41NzM1LjI2L3NhbmRi b3gvcG9saWN5L2xpbnV4L2JwZl9uZXR3b3JrX3BvbGljeV9saW51eC5jYwotLS0tIGNocm9taXVt LTExNC4wLjU3MzUuMjYvc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX25ldHdvcmtfcG9saWN5X2xp bnV4LmNjLm1lCTIwMjMtMDUtMTMgMTI6MDk6NDQuNDIzNzI3Mzg1ICswMjAwCi0rKysgY2hyb21p dW0tMTE0LjAuNTczNS4yNi9zYW5kYm94L3BvbGljeS9saW51eC9icGZfbmV0d29ya19wb2xpY3lf bGludXguY2MJMjAyMy0wNS0xMyAxNzo1MjoxOS45MzQzNDcyNDYgKzAyMDAKLUBAIC0xMSw3ICsx MSw2IEBACi0gI2luY2x1ZGUgPGxpbnV4L25ldC5oPgotICNpbmNsdWRlIDxsaW51eC9uZXRsaW5r Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLS0jaW5jbHVkZSA8bGludXgvd2lyZWxl c3MuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L3RjcC5o PgotICNpbmNsdWRlIDxzeXMvaW5vdGlmeS5oPgotQEAgLTQ4LDYgKzQ3LDEwIEBAIHVzaW5nIHNh bmRib3g6OnN5c2NhbGxfYnJva2VyOjpCcm9rZXJQcm8KLSAjZGVmaW5lIEYyRlNfSU9DX0dFVF9G RUFUVVJFUyBfSU9SKDB4ZjUsIDEyLCB1aW50MzJfdCkKLSAjZW5kaWYKLSAKLSsjaWYgIWRlZmlu ZWQoU0lPQ0dJV05BTUUpCi0rI2RlZmluZSBTSU9DR0lXTkFNRSAgMHg4QjAxCi0rI2VuZGlmCi0r Ci0gbmFtZXNwYWNlIHNhbmRib3g6OnBvbGljeSB7Ci0gCi0gbmFtZXNwYWNlIHsKCmRpZmYgLS1n aXQgYS9jaHJvbWl1bS0xMTUtYnVpbGRmbGFnLWVsNy5wYXRjaCBiL2Nocm9taXVtLTExNS1idWls ZGZsYWctZWw3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2UyYTdkLi4w MDAwMDAwCi0tLSBhL2Nocm9taXVtLTExNS1idWlsZGZsYWctZWw3LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjEgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9jb21w b25lbnRzL29tbmlib3gvYnJvd3Nlci9vbW5pYm94X2VkaXRfbW9kZWwuY2MuYnVpbGRmbGFnLWVs NyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L2NvbXBvbmVudHMvb21uaWJveC9icm93c2VyL29tbmli b3hfZWRpdF9tb2RlbC5jYwotLS0tIGNocm9taXVtLTExNS4wLjU3OTAuMjQvY29tcG9uZW50cy9v bW5pYm94L2Jyb3dzZXIvb21uaWJveF9lZGl0X21vZGVsLmNjLmJ1aWxkZmxhZy1lbDcJMjAyMy0w Ni0wNyAyMTo0ODoyOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0 L2NvbXBvbmVudHMvb21uaWJveC9icm93c2VyL29tbmlib3hfZWRpdF9tb2RlbC5jYwkyMDIzLTA2 LTE3IDE2OjUwOjQ2LjM3Mzg2NzYyNSArMDIwMAotQEAgLTc5LDcgKzc5LDcgQEAKLSAjaW5jbHVk ZSAidWkvZ2Z4L3ZlY3Rvcl9pY29uX3R5cGVzLmgiCi0gI2VuZGlmCi0gCi0tI2lmIEJVSUxERkxB RyhHT09HTEVfQ0hST01FX0JSQU5ESU5HKQotKyNpZmRlZiBHT09HTEVfQ0hST01FX0JSQU5ESU5H Ci0gI2luY2x1ZGUgImNvbXBvbmVudHMvdmVjdG9yX2ljb25zL3ZlY3Rvcl9pY29ucy5oIiAgLy8g bm9nbmNoZWNrCi0gI2VuZGlmCi0gCi1AQCAtNjMxLDcgKzYzMSw3IEBAIGJvb2wgT21uaWJveEVk aXRNb2RlbDo6U2hvdWxkU2hvd0N1cnJlbnQKLSAKLSB1aTo6SW1hZ2VNb2RlbCBPbW5pYm94RWRp dE1vZGVsOjpHZXRTdXBlckdJY29uKGludCBpbWFnZV9zaXplLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkYXJrX21vZGUpIGNvbnN0IHsKLS0j aWYgQlVJTERGTEFHKEdPT0dMRV9DSFJPTUVfQlJBTkRJTkcpCi0rI2lmZGVmIEdPT0dMRV9DSFJP TUVfQlJBTkRJTkcKLSAgIGlmIChkYXJrX21vZGUpIHsKLSAgICAgcmV0dXJuIHVpOjpJbWFnZU1v ZGVsOjpGcm9tVmVjdG9ySWNvbigKLSAgICAgICAgIHZlY3Rvcl9pY29uczo6a0dvb2dsZUdMb2dv TW9ub2Nocm9tZUljb24sIHVpOjprQ29sb3JSZWZQcmltYXJ5MTAwLAoKZGlmZiAtLWdpdCBhL2No cm9taXVtLTExNS1lbDctY29tcGlsZXItU2tDb2xvcjRmLnBhdGNoIGIvY2hyb21pdW0tMTE1LWVs Ny1jb21waWxlci1Ta0NvbG9yNGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDdlMTdjYjAuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTE1LWVsNy1jb21waWxlci1Ta0NvbG9y NGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1 bS0xMTUuMC41NzkwLjQwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvY2FudmFz L2NhbnZhczJkL2NhbnZhc19zdHlsZS5jYy5tZSBjaHJvbWl1bS0xMTUuMC41NzkwLjQwL3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvY2FudmFzL2NhbnZhczJkL2NhbnZhc19zdHls ZS5jYwotLS0tIGNocm9taXVtLTExNS4wLjU3OTAuNDAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvbW9kdWxlcy9jYW52YXMvY2FudmFzMmQvY2FudmFzX3N0eWxlLmNjLm1lCTIwMjMtMDYtMjQg MTA6Mzg6MTEuMDExNTExNDYzICswMjAwCi0rKysgY2hyb21pdW0tMTE1LjAuNTc5MC40MC90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL2NhbnZhcy9jYW52YXMyZC9jYW52YXNfc3R5 bGUuY2MJMjAyMy0wNi0yNCAxMzowNzozNS44NjUzNzU4ODQgKzAyMDAKLUBAIC04NCw2ICs4NCw3 IEBAIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBDYW52YXNTdHkKLSAKLSB2b2lkIENh bnZhc1N0eWxlOjpBcHBseVRvRmxhZ3MoY2M6OlBhaW50RmxhZ3MmIGZsYWdzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBnbG9iYWxfYWxwaGEpIGNvbnN0IHsKLSsgIFNr Q29sb3I0ZiBjdXN0b21fY29sb3IgPSBTa0NvbG9yNGZ7MC4wZiwgMC4wZiwgMC4wZiwgZ2xvYmFs X2FscGhhfTsKLSAgIHN3aXRjaCAodHlwZV8pIHsKLSAgICAgY2FzZSBrQ29sb3I6Ci0gICAgICAg QXBwbHlDb2xvclRvRmxhZ3MoZmxhZ3MsIGdsb2JhbF9hbHBoYSk7Ci1AQCAtOTEsMTIgKzkyLDEy IEBAIHZvaWQgQ2FudmFzU3R5bGU6OkFwcGx5VG9GbGFncyhjYzo6UGFpbnQKLSAgICAgY2FzZSBr R3JhZGllbnQ6Ci0gICAgICAgR2V0Q2FudmFzR3JhZGllbnQoKS0+R2V0R3JhZGllbnQoKS0+QXBw bHlUb0ZsYWdzKGZsYWdzLCBTa01hdHJpeDo6SSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZURyYXdPcHRpb25zKCkpOwotLSAg ICAgIGZsYWdzLnNldENvbG9yKFNrQ29sb3I0ZigwLjBmLCAwLjBmLCAwLjBmLCBnbG9iYWxfYWxw aGEpKTsKLSsgICAgICBmbGFncy5zZXRDb2xvcihjdXN0b21fY29sb3IpOwotICAgICAgIGJyZWFr OwotICAgICBjYXNlIGtJbWFnZVBhdHRlcm46Ci0gICAgICAgR2V0Q2FudmFzUGF0dGVybigpLT5H ZXRQYXR0ZXJuKCktPkFwcGx5VG9GbGFncygKLSAgICAgICAgICAgZmxhZ3MsIEFmZmluZVRyYW5z Zm9ybVRvU2tNYXRyaXgoR2V0Q2FudmFzUGF0dGVybigpLT5HZXRUcmFuc2Zvcm0oKSkpOwotLSAg ICAgIGZsYWdzLnNldENvbG9yKFNrQ29sb3I0ZigwLjBmLCAwLjBmLCAwLjBmLCBnbG9iYWxfYWxw aGEpKTsKLSsgICAgICBmbGFncy5zZXRDb2xvcihjdXN0b21fY29sb3IpOwotICAgICAgIGJyZWFr OwotICAgICBkZWZhdWx0OgotICAgICAgIE5PVFJFQUNIRUQoKTsKCmRpZmYgLS1naXQgYS9jaHJv bWl1bS0xMTctZWw3LXN0cmluZy1jb252ZXJ0LnBhdGNoIGIvY2hyb21pdW0tMTE3LWVsNy1zdHJp bmctY29udmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I0OGU0Yi4u MDAwMDAwMAotLS0gYS9jaHJvbWl1bS0xMTctZWw3LXN0cmluZy1jb252ZXJ0LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTE3LjAuNTkzOC42 Mi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MubWUgY2hyb21pdW0tMTE3LjAuNTkzOC42 Mi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MKLWRpZmYgLXVwIGNocm9taXVtLTExNy4w LjU5MzguNjIvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmgubWUgY2hyb21pdW0tMTE3LjAu NTkzOC42Mi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuaAotLS0tIGNocm9taXVtLTExNy4w LjU5MzguNjIvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmgubWUJMjAyMy0wOS0xNCAxNToy MToyNC42MzI5NjUwMDQgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTcuMC41OTM4LjYyL25ldC9kbnMv aG9zdF9yZXNvbHZlcl9jYWNoZS5oCTIwMjMtMDktMTUgMDk6MTU6NDguNTExMzAwODQ1ICswMjAw Ci1AQCAtMTQzLDEyICsxNDMsMTQgQEAgY2xhc3MgTkVUX0VYUE9SVCBIb3N0UmVzb2x2ZXJDYWNo ZSBmaW5hbAotICAgICB9Ci0gCi0gICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBLZXkmIGxocywg Y29uc3QgS2V5UmVmJiByaHMpIGNvbnN0IHsKLSsgICAgICBjb25zdCBzdGQ6OnN0cmluZyByaHNf ZG9tYWluX25hbWV7cmhzLmRvbWFpbl9uYW1lfTsKLSAgICAgICByZXR1cm4gc3RkOjp0aWUobGhz LmRvbWFpbl9uYW1lLCBsaHMubmV0d29ya19hbm9ueW1pemF0aW9uX2tleSkgPAotLSAgICAgICAg ICAgICBzdGQ6OnRpZShyaHMuZG9tYWluX25hbWUsICpyaHMubmV0d29ya19hbm9ueW1pemF0aW9u X2tleSk7Ci0rICAgICAgICAgICAgIHN0ZDo6dGllKHJoc19kb21haW5fbmFtZSwgKnJocy5uZXR3 b3JrX2Fub255bWl6YXRpb25fa2V5KTsKLSAgICAgfQotIAotICAgICBib29sIG9wZXJhdG9yKCko Y29uc3QgS2V5UmVmJiBsaHMsIGNvbnN0IEtleSYgcmhzKSBjb25zdCB7Ci0tICAgICAgcmV0dXJu IHN0ZDo6dGllKGxocy5kb21haW5fbmFtZSwgKmxocy5uZXR3b3JrX2Fub255bWl6YXRpb25fa2V5 KSA8Ci0rICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgbGhzX2RvbWFpbl9uYW1le2xocy5kb21haW5f bmFtZX07Ci0rICAgICAgcmV0dXJuIHN0ZDo6dGllKGxoc19kb21haW5fbmFtZSwgKmxocy5uZXR3 b3JrX2Fub255bWl6YXRpb25fa2V5KSA8Ci0gICAgICAgICAgICAgIHN0ZDo6dGllKHJocy5kb21h aW5fbmFtZSwgcmhzLm5ldHdvcmtfYW5vbnltaXphdGlvbl9rZXkpOwotICAgICB9Ci0gICB9OwoK ZGlmZiAtLWdpdCBhL2Nocm9taXVtLTExOC1lbDdfdjRsMl9xdWFudGl6YXRpb24ucGF0Y2ggYi9j aHJvbWl1bS0xMTgtZWw3X3Y0bDJfcXVhbnRpemF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA2Mzg4NjNiLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTExOC1lbDdfdjRs Ml9xdWFudGl6YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1kaWZm IC11cCBjaHJvbWl1bS0xMTguMC41OTkzLjU0L21lZGlhL2NhcHR1cmUvdmlkZW8vbGludXgvdjRs Ml9jYXB0dXJlX2RlbGVnYXRlLmNjLm1lIGNocm9taXVtLTExOC4wLjU5OTMuNTQvbWVkaWEvY2Fw dHVyZS92aWRlby9saW51eC92NGwyX2NhcHR1cmVfZGVsZWdhdGUuY2MKLS0tLSBjaHJvbWl1bS0x MTguMC41OTkzLjU0L21lZGlhL2NhcHR1cmUvdmlkZW8vbGludXgvdjRsMl9jYXB0dXJlX2RlbGVn YXRlLmNjLm1lCTIwMjMtMTAtMDcgMTI6MjQ6NTEuMTk0NjE4MTQ0ICswMjAwCi0rKysgY2hyb21p dW0tMTE4LjAuNTk5My41NC9tZWRpYS9jYXB0dXJlL3ZpZGVvL2xpbnV4L3Y0bDJfY2FwdHVyZV9k ZWxlZ2F0ZS5jYwkyMDIzLTEwLTA3IDEyOjI2OjMwLjcyNzQ0ODU4MSArMDIwMAotQEAgLTEyMTks NyArMTIxOSw3IEBAIHZvaWQgVjRMMkNhcHR1cmVEZWxlZ2F0ZTo6U2V0RXJyb3JTdGF0ZSgKLSAg IGNsaWVudF8tPk9uRXJyb3IoZXJyb3IsIGZyb21faGVyZSwgcmVhc29uKTsKLSB9Ci0gCi0tI2lm IEJVSUxERkxBRyhJU19MSU5VWCkKLSsjaWYgMCAvL0JVSUxERkxBRyhJU19MSU5VWCkKLSBnZng6 OkNvbG9yU3BhY2UgVjRMMkNhcHR1cmVEZWxlZ2F0ZTo6QnVpbGRDb2xvclNwYWNlRnJvbXY0bDIo KSB7Ci0gICB2NGwyX2NvbG9yc3BhY2UgdjRsMl9wcmltYXJ5ID0gKHY0bDJfY29sb3JzcGFjZSl2 aWRlb19mbXRfLmZtdC5waXguY29sb3JzcGFjZTsKLSAgIHY0bDJfcXVhbnRpemF0aW9uIHY0bDJf cmFuZ2UgPQotZGlmZiAtdXAgY2hyb21pdW0tMTE4LjAuNTk5My41NC9tZWRpYS9jYXB0dXJlL3Zp ZGVvL2xpbnV4L3Y0bDJfY2FwdHVyZV9kZWxlZ2F0ZS5oLm1lIGNocm9taXVtLTExOC4wLjU5OTMu NTQvbWVkaWEvY2FwdHVyZS92aWRlby9saW51eC92NGwyX2NhcHR1cmVfZGVsZWdhdGUuaAotLS0t IGNocm9taXVtLTExOC4wLjU5OTMuNTQvbWVkaWEvY2FwdHVyZS92aWRlby9saW51eC92NGwyX2Nh cHR1cmVfZGVsZWdhdGUuaC5tZQkyMDIzLTEwLTA3IDEyOjI5OjM1LjU4ODQwNjAyMyArMDIwMAot KysrIGNocm9taXVtLTExOC4wLjU5OTMuNTQvbWVkaWEvY2FwdHVyZS92aWRlby9saW51eC92NGwy X2NhcHR1cmVfZGVsZWdhdGUuaAkyMDIzLTEwLTA3IDEyOjI4OjQyLjA1NzAzNjAxNCArMDIwMAot QEAgLTEzMyw3ICsxMzMsNyBAQCBjbGFzcyBDQVBUVVJFX0VYUE9SVCBWNEwyQ2FwdHVyZURlbGVn YXRlCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6TG9jYXRpb24mIGZyb21faGVy ZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmVhc29uKTsKLSAK LS0jaWYgQlVJTERGTEFHKElTX0xJTlVYKQotKyNpZiAwIC8vQlVJTERGTEFHKElTX0xJTlVYKQot ICAgLy8gU3lzdGVtcyB3aGljaCBkZXNjcmliZSBhICJjb2xvciBzcGFjZSIgdXN1YWxseSBtYXAg dGhhdCB0byBvbmUgb3IgbW9yZSBvZgotICAgLy8ge3ByaW1hcnksIG1hdHJpeCwgdHJhbnNmZXIs IHJhbmdlfS4gQnVpbGRDb2xvclNwYWNlRnJvbXY0bDIoKSB3aWxsIHVzZSB0aGUKLSAgIC8vIG1h dGNoZWQgdmFsdWUgYXMgZmlyc3QgcHJpb3JpdHkuIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgbm8g YmVzdCBtYXRjaGluZwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMS1lbDctY2xhbmctdmVyc2lv bi13YXJuaW5nLnBhdGNoIGIvY2hyb21pdW0tMTIxLWVsNy1jbGFuZy12ZXJzaW9uLXdhcm5pbmcu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjODZlYjIuLjAwMDAwMDAKLS0t IGEvY2hyb21pdW0tMTIxLWVsNy1jbGFuZy12ZXJzaW9uLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwxNSArMCwwIEBACi0tLS0gY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny90aGlyZF9w YXJ0eS9saWJjKysvc3JjL2luY2x1ZGUvX19jb25maWcub3JpZwkyMDI0LTAxLTE2IDE4OjM4OjAw Ljk5NTkzMDc3NCArMDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvdGhpcmRfcGFydHkv bGliYysrL3NyYy9pbmNsdWRlL19fY29uZmlnCTIwMjQtMDEtMTYgMTg6NDM6NDcuMDU2NTE3Mjg5 ICswMTAwCi1AQCAtMzIsMTEgKzMyLDcgQEAKLSAKLSAvLyBXYXJuIGlmIGEgY29tcGlsZXIgdmVy c2lvbiBpcyB1c2VkIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBhbnltb3JlCi0gLy8gTExWTSBSRUxF QVNFIFVwZGF0ZSB0aGUgbWluaW11bSBjb21waWxlciB2ZXJzaW9ucwotLSMgIGlmIGRlZmluZWQo X0xJQkNQUF9DTEFOR19WRVIpCi0tIyAgICBpZiBfTElCQ1BQX0NMQU5HX1ZFUiA8IDE2MDAKLS0j ICAgICAgd2FybmluZyAiTGliYysrIG9ubHkgc3VwcG9ydHMgQ2xhbmcgMTYgYW5kIGxhdGVyIgot LSMgICAgZW5kaWYKLS0jICBlbGlmIGRlZmluZWQoX0xJQkNQUF9BUFBMRV9DTEFOR19WRVIpCi0r IyAgaWYgZGVmaW5lZChfTElCQ1BQX0FQUExFX0NMQU5HX1ZFUikKLSAjICAgIGlmIF9MSUJDUFBf QVBQTEVfQ0xBTkdfVkVSIDwgMTUwMAotICMgICAgICB3YXJuaW5nICJMaWJjKysgb25seSBzdXBw b3J0cyBBcHBsZUNsYW5nIDE1IGFuZCBsYXRlciIKLSAjICAgIGVuZGlmCgpkaWZmIC0tZ2l0IGEv Y2hyb21pdW0tMTIyLWVsNy1leHRyYS1vcGVyYXRvci5wYXRjaCBiL2Nocm9taXVtLTEyMi1lbDct ZXh0cmEtb3BlcmF0b3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjU2 ODEuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTIyLWVsNy1leHRyYS1vcGVyYXRvci5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnhjcnQvZnhfbWVtb3J5X3dyYXBwZXJzLmgu bWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9meGNydC9m eF9tZW1vcnlfd3JhcHBlcnMuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFy dHkvcGRmaXVtL2NvcmUvZnhjcnQvZnhfbWVtb3J5X3dyYXBwZXJzLmgubWUJMjAyNC0wMi0yNCAx MzowMjo1OC45MzE1ODYwMDMgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJk X3BhcnR5L3BkZml1bS9jb3JlL2Z4Y3J0L2Z4X21lbW9yeV93cmFwcGVycy5oCTIwMjQtMDItMjQg MTM6MDM6MzMuMTUyMjUxNTQ2ICswMTAwCi1AQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgRnhQYXJ0 aXRpb25BbGxvY0FsbG9jYXRvciB7Ci0gICB9Ci0gCi0gICAvLyBUaGVyZSdzIG5vIHN0YXRlLCBz byB0aGV5IGFyZSBhbGwgdGhlIHNhbWUsCi0rICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnhQYXJ0 aXRpb25BbGxvY0FsbG9jYXRvciYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgIGJvb2wgb3Bl cmF0b3I9PShjb25zdCBGeFBhcnRpdGlvbkFsbG9jQWxsb2NhdG9yJiB0aGF0KSB7IHJldHVybiB0 cnVlOyB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnhQYXJ0aXRpb25BbGxvY0FsbG9jYXRv ciYgdGhhdCkgeyByZXR1cm4gZmFsc2U7IH0KLSB9OwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEy Mi1lbDctaW5saW5lLWZ1bmN0aW9uLnBhdGNoIGIvY2hyb21pdW0tMTIyLWVsNy1pbmxpbmUtZnVu Y3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMzY4OWMuLjAwMDAw MDAKLS0tIGEvY2hyb21pdW0tMTIyLWVsNy1pbmxpbmUtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw2MiArMCwwIEBACi0KLWxkLmxsZDogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6 IHVuc2lnbmVkIGxvbmcgY2M6OlBhaW50T3BXcml0ZXI6OlNlcmlhbGl6ZWRTaXplPHVuc2lnbmVk IGxvbmc+KCkKLQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jYy9wYWludC9wYWlu dF9vcF93cml0ZXIuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NjL3BhaW50L3BhaW50X29w X3dyaXRlci5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jYy9wYWludC9wYWludF9vcF93 cml0ZXIuaC5tZQkyMDI0LTAyLTI1IDEyOjA0OjA3LjAwODE3NzYwMyArMDEwMAotKysrIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2MvcGFpbnQvcGFpbnRfb3Bfd3JpdGVyLmgJMjAyNC0wMi0yNSAx MjoxNDo0NS45NzIxMTc1MjIgKzAxMDAKLUBAIC0xMTIsNyArMTEyLDE3IEBAIGNsYXNzIENDX1BB SU5UX0VYUE9SVCBQYWludE9wV3JpdGVyIHsKLSAKLSAgcHJpdmF0ZToKLSAgIHRlbXBsYXRlIDx0 eXBlbmFtZSBUPgotLSAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2VyaWFsaXplZFNpemVTaW1w bGUoKTsKLSsgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IFNlcmlhbGl6ZWRTaXplU2ltcGxlKCkg ewotKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3BvaW50ZXJfdjxUPik7Ci0rICAgIHJldHVy biBiYXNlOjpiaXRzOjpBbGlnblVwKHNpemVvZihUKSwga0RlZmF1bHRBbGlnbm1lbnQpOwotKyAg fQotKwotKyAgLy8gc2l6ZV90IGlzIGFsd2F5cyBzZXJpYWxpemVkIGFzIHR3byB1aW50MzJfdHMg dG8gbWFrZSB0aGUgc2VyaWFsaXplZCByZXN1bHQKLSsgIC8vIHBvcnRhYmxlIGJldHdlZW4gMzJi aXQgYW5kIDY0Yml0IHByb2Nlc3Nlcy4KLSsgIHRlbXBsYXRlIDw+Ci0rICAgIGNvbnN0ZXhwciBz aXplX3QgU2VyaWFsaXplZFNpemVTaW1wbGU8c2l6ZV90PigpIHsKLSsgICAgcmV0dXJuIGJhc2U6 OmJpdHM6OkFsaWduVXAoMiAqIHNpemVvZih1aW50MzJfdCksIGtEZWZhdWx0QWxpZ25tZW50KTsK LSsgIH0KLSAKLSAgcHVibGljOgotICAgLy8gU2VyaWFsaXplZFNpemUoKSByZXR1cm5zIHRoZSBt YXhpbXVtIHNlcmlhbGl6ZWQgc2l6ZSBvZiB0aGUgZ2l2ZW4gdHlwZSBvcgotQEAgLTEyMyw3ICsx MzMsMTAgQEAgY2xhc3MgQ0NfUEFJTlRfRVhQT1JUIFBhaW50T3BXcml0ZXIgewotICAgLy8gZGVz ZXJpYWxpemF0aW9uLCBhbmQgbWFrZSBpdCBwb3NzaWJsZSB0byBhbGxvdyBkeW5hbWljIHNpemlu ZyBmb3Igc29tZQotICAgLy8gZGF0YSB0eXBlcyAoc2VlIHRoZSBzcGVjaWFsaXplZC9vdmVybG9h ZGVkIGZ1bmN0aW9ucykuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS0gIHN0YXRpYyBjb25z dGV4cHIgc2l6ZV90IFNlcmlhbGl6ZWRTaXplKCk7Ci0rICBzdGF0aWMgY29uc3RleHByIHNpemVf dCBTZXJpYWxpemVkU2l6ZSgpIHsKLSsgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0 aWNfdjxUPiB8fCBzdGQ6OmlzX2VudW1fdjxUPik7Ci0rICAgIHJldHVybiBTZXJpYWxpemVkU2l6 ZVNpbXBsZTxUPigpOwotKyAgfQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICBzdGF0aWMg Y29uc3RleHByIHNpemVfdCBTZXJpYWxpemVkU2l6ZShjb25zdCBUJiBkYXRhKTsKLSAgIHN0YXRp YyBzaXplX3QgU2VyaWFsaXplZFNpemUoY29uc3QgUGFpbnRJbWFnZSYgaW1hZ2UpOwotQEAgLTQz OSwyNCArNDUyLDYgQEAgY2xhc3MgQ0NfUEFJTlRfRVhQT1JUIFBhaW50T3BXcml0ZXIgewotIH07 Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tY29uc3RleHByIHNpemVfdCBQYWludE9wV3Jp dGVyOjpTZXJpYWxpemVkU2l6ZVNpbXBsZSgpIHsKLS0gIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf cG9pbnRlcl92PFQ+KTsKLS0gIHJldHVybiBiYXNlOjpiaXRzOjpBbGlnblVwKHNpemVvZihUKSwg a0RlZmF1bHRBbGlnbm1lbnQpOwotLX0KLS0KLS0vLyBzaXplX3QgaXMgYWx3YXlzIHNlcmlhbGl6 ZWQgYXMgdHdvIHVpbnQzMl90cyB0byBtYWtlIHRoZSBzZXJpYWxpemVkIHJlc3VsdAotLS8vIHBv cnRhYmxlIGJldHdlZW4gMzJiaXQgYW5kIDY0Yml0IHByb2Nlc3Nlcy4KLS10ZW1wbGF0ZSA8Pgot LWNvbnN0ZXhwciBzaXplX3QgUGFpbnRPcFdyaXRlcjo6U2VyaWFsaXplZFNpemVTaW1wbGU8c2l6 ZV90PigpIHsKLS0gIHJldHVybiBiYXNlOjpiaXRzOjpBbGlnblVwKDIgKiBzaXplb2YodWludDMy X3QpLCBrRGVmYXVsdEFsaWdubWVudCk7Ci0tfQotLQotLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot LWNvbnN0ZXhwciBzaXplX3QgUGFpbnRPcFdyaXRlcjo6U2VyaWFsaXplZFNpemUoKSB7Ci0tICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+IHx8IHN0ZDo6aXNfZW51bV92PFQ+ KTsKLS0gIHJldHVybiBTZXJpYWxpemVkU2l6ZVNpbXBsZTxUPigpOwotLX0KLS10ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4KLSBjb25zdGV4cHIgc2l6ZV90IFBhaW50T3BXcml0ZXI6OlNlcmlhbGl6ZWRT aXplKGNvbnN0IFQmIGRhdGEpIHsKLSAgIHJldHVybiBTZXJpYWxpemVkU2l6ZVNpbXBsZTxUPigp OwotIH0KCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjMtZWw3LWNsYW5nLWJ1aWxkLWZhaWx1cmUu cGF0Y2ggYi9jaHJvbWl1bS0xMjMtZWw3LWNsYW5nLWJ1aWxkLWZhaWx1cmUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDRkN2EuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0t MTIzLWVsNy1jbGFuZy1idWlsZC1mYWlsdXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI4 ICswLDAgQEAKLWNvbW1pdCA1NzUyNmI4ZGM0NWIyZTZjNjdiYmE3MzA2ZjFkZGU3M2IxZjI5MTBj Ci1BdXRob3I6IHNpc2lkb3Zza2kgPHNpc2lkb3Zza2lAY2hyb21pdW0ub3JnPgotRGF0ZTogICBU dWUgT2N0IDI0IDA5OjMyOjQ5IDIwMjMgKzAwMDAKLQotICAgIFJlbW92ZSB1bnVzZWQgaXRlbXMg ZnJvbSB0aGUgUmFjZU5ldHdvcmtSZXF1ZXN0IGhhc2htYXAKLQotICAgIFdoZW4gdGhlIEF1dG9Q cmVsb2FkIG9yIHRoZSByYWNlLW5ldHdvcmstYW5kLWZldGNoLWhhbmRsZXIgb3B0aW9uIGluIHRo ZQotICAgIHN0YXRpYyByb3V0aW5nIEFQSSBpcyBlbmFibGVkLCBuZXR3b3JrIHJlcXVlc3RzIGFy ZSBkaXNwYXRjaGVkIGFuZAotICAgIFVSTExvYWRlckZhY3RvcmllcyBhcmUgaGVsZCBpbiBhIGhh c2htYXAgaW4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLgotICAgIFRob3NlIGFyZSBjb25zdW1l ZCBpbnNpZGUgdGhlIGZldGNoIGhhbmRsZXIgd2hlbiBmZXRjaChlLnJlcXVlc3QpIGlzCi0gICAg Y2FsbGVkLiBCdXQgaWYgdGhlIGZldGNoIGhhbmRsZXIgZG9lc24ndCBjYWxsIGZldGNoKCkgZS5n LiBmYWxsYmFjaywKLSAgICB0aG9zZSBoYXNobWFwIGl0ZW1zIGRvZXMgbm90IGhhdmUgYSBjaGFu Y2UgdG8gYmUgcmVtb3ZlZC4KLQotICAgIFRoaXMgQ0wgY2hhbmdlcyB0aGUgaGFzaG1hcCBpdGVt cyB0byBiZSByZW1vdmVkIHdoZW4gdGhlIGZldGNoIGV2ZW50Ci0gICAgZmluaXNoZXMsIGFuZCB0 aGUgVVJMTG9hZGVyRmFjdG9yeSBpcyBzdGlsbCBub3QgY29uc3VtZWQgYXQgdGhhdCB0aW1lLgot ICAgIFRoaXMgbWF5IGxvb3NlIHRoZSBkZWR1cGUgY2FwYWJpbGl0eSBpZiBmZXRjaCgpIGlzIGNh bGxlZCBsYXRlciBlLmcuCi0gICAgc2V0VGltZW91dCgoKSA9PiBmZXRjaCgpKSwgYnV0IGl0IG1h a2VzIHNlbnNlIHRvIHByaW9yaXRpemUga2VlcGluZyB0aGUKLSAgICBoYXNobWFwIHNtYWxsLgot Ci0gICAgQ2hhbmdlLUlkOiBJNTFiZGM5ZDVlYjUxODVmMmI1YjRkZjZlZTc4NTcxNWIxMTgwYzg0 OAotICAgIEJ1ZzogMTQ5MjY0MAotICAgIFJldmlld2VkLW9uOiBodHRwczovL2Nocm9taXVtLXJl dmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysvNDk2NDg0MAotICAgIFJldmll d2VkLWJ5OiBNaW5vcnUgQ2hpa2FtdW5lIDxjaGlrYW11bmVAY2hyb21pdW0ub3JnPgotICAgIENv bW1pdC1RdWV1ZTogWW9zaGlzYXRvIFlhbmFnaXNhd2EgPHl5YW5hZ2lzYXdhQGNocm9taXVtLm9y Zz4KLSAgICBSZXZpZXdlZC1ieTogWW9zaGlzYXRvIFlhbmFnaXNhd2EgPHl5YW5hZ2lzYXdhQGNo cm9taXVtLm9yZz4KLSAgICBDci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMvbWFpbkB7IzEy MTQwNjR9Ci0KLWRpZmYgLXVwIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvbW9kdWxlcy9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9nbG9iYWxf c2NvcGUuY2MubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9tb2R1bGVzL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2dsb2JhbF9zY29wZS5j YwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv bW9kdWxlcy9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9nbG9iYWxfc2NvcGUuY2MubWUJ MjAyNC0wMy0xOCAxMDozNDoyNy42MDQ3MDc2MzIgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjMuMC42 MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvc2VydmljZV93b3JrZXIv c2VydmljZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmNjCTIwMjQtMDMtMTggMTE6NTI6MTQuMzA5OTgz NTA1ICswMTAwCi1AQCAtNDYsNyArNDYsNiBAQAotICNpbmNsdWRlICJzZXJ2aWNlcy9uZXR3b3Jr L3B1YmxpYy9jcHAvY3Jvc3Nfb3JpZ2luX2VtYmVkZGVyX3BvbGljeS5oIgotICNpbmNsdWRlICJz ZXJ2aWNlcy9uZXR3b3JrL3B1YmxpYy9tb2pvbS9jb29raWVfbWFuYWdlci5tb2pvbS1ibGluay5o IgotICNpbmNsdWRlICJzZXJ2aWNlcy9uZXR3b3JrL3B1YmxpYy9tb2pvbS9jcm9zc19vcmlnaW5f ZW1iZWRkZXJfcG9saWN5Lm1vam9tLmgiCi0tI2luY2x1ZGUgInNlcnZpY2VzL25ldHdvcmsvcHVi bGljL21vam9tL3VybF9sb2FkZXJfZmFjdG9yeS5tb2pvbS1ibGluay5oIgotICNpbmNsdWRlICJ0 aGlyZF9wYXJ0eS9ibGluay9wdWJsaWMvY29tbW9uL2ZlYXR1cmVzLmgiCi0gI2luY2x1ZGUgInRo aXJkX3BhcnR5L2JsaW5rL3B1YmxpYy9tb2pvbS9mZXRjaC9mZXRjaF9hcGlfcmVxdWVzdC5tb2pv bS1ibGluay5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9wdWJsaWMvbW9qb20vbm90 aWZpY2F0aW9ucy9ub3RpZmljYXRpb24ubW9qb20tYmxpbmsuaCIKLUBAIC0xMDk3LDEwICsxMDk2 LDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OkRpZEhhbmRsZQotICAgICAgIFRS QUNFX0lEX1dJVEhfU0NPUEUoa1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRyYWNlU2NvcGUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9JRF9MT0NBTChldmVudF9pZCkpLAotICAg ICAgIFRSQUNFX0VWRU5UX0ZMQUdfRkxPV19JTiwgInN0YXR1cyIsIE1vam9FbnVtVG9TdHJpbmco c3RhdHVzKSk7Ci0tCi0tICAvLyBEZWxldGUgdGhlIFVSTExvYWRlckZhY3RvcnkgZm9yIHRoZSBS YWNlTmV0d29ya1JlcXVlc3QgaWYgaXQncyBub3QgdXNlZC4KLS0gIFJlbW92ZUl0ZW1Gcm9tUmFj ZU5ldHdvcmtSZXF1ZXN0cyhldmVudF9pZCk7Ci0tCi0gICBpZiAoIVJ1bkV2ZW50Q2FsbGJhY2so JmZldGNoX2V2ZW50X2NhbGxiYWNrc18sIGV2ZW50X3F1ZXVlXy5nZXQoKSwgZXZlbnRfaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzKSkgewotICAgICAvLyBUaGUgZXZlbnQgbWF5 IGhhdmUgYmVlbiBhYm9ydGVkLiBJdHMgcmVzcG9uc2UgY2FsbGJhY2sgYWxzbyBuZWVkcyB0byBi ZQotQEAgLTE1MDAsNyArMTQ5NSw2IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpB Ym9ydENhbGwKLSAgICAgcmVzcG9uc2VfY2FsbGJhY2tfaXRlci0+dmFsdWUtPlRha2VWYWx1ZSgp LnJlc2V0KCk7Ci0gICAgIGZldGNoX3Jlc3BvbnNlX2NhbGxiYWNrc18uZXJhc2UocmVzcG9uc2Vf Y2FsbGJhY2tfaXRlcik7Ci0gICB9Ci0tICBSZW1vdmVJdGVtRnJvbVJhY2VOZXR3b3JrUmVxdWVz dHMoZXZlbnRfaWQpOwotIAotICAgLy8gUnVuIHRoZSBldmVudCBjYWxsYmFjayB3aXRoIHRoZSBl cnJvciBjb2RlLgotICAgYXV0byBldmVudF9jYWxsYmFja19pdGVyID0gZmV0Y2hfZXZlbnRfY2Fs bGJhY2tzXy5maW5kKGV2ZW50X2lkKTsKLUBAIC0xNTg4LDExICsxNTgyLDUyIEBAIHZvaWQgU2Vy dmljZVdvcmtlckdsb2JhbFNjb3BlOjpTdGFydEZldGMKLSAKLSAgIGlmIChwYXJhbXMtPnJhY2Vf bmV0d29ya19yZXF1ZXN0X2xvYWRlcl9mYWN0b3J5ICYmCi0gICAgICAgcGFyYW1zLT5yZXF1ZXN0 LT5zZXJ2aWNlX3dvcmtlcl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbikgewotLSAgICBJbnNl cnROZXdJdGVtVG9SYWNlTmV0d29ya1JlcXVlc3RzKAotLSAgICAgICAgZXZlbnRfaWQsCi0tICAg ICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0d29ya19yZXF1ZXN0 X3Rva2VuLnZhbHVlKCksCi0tICAgICAgICBzdGQ6Om1vdmUocGFyYW1zLT5yYWNlX25ldHdvcmtf cmVxdWVzdF9sb2FkZXJfZmFjdG9yeSksCi0tICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnVybCk7 Ci0rICAgIGF1dG8gaW5zZXJ0X3Jlc3VsdCA9IHJhY2VfbmV0d29ya19yZXF1ZXN0X2xvYWRlcl9m YWN0b3JpZXNfLmluc2VydCgKLSsgICAgICAgIFN0cmluZyhwYXJhbXMtPnJlcXVlc3QtPnNlcnZp Y2Vfd29ya2VyX3JhY2VfbmV0d29ya19yZXF1ZXN0X3Rva2VuCi0rICAgICAgICAgICAgICAgICAg IC0+VG9TdHJpbmcoKSksCi0rICAgICAgICBzdGQ6Om1vdmUocGFyYW1zLT5yYWNlX25ldHdvcmtf cmVxdWVzdF9sb2FkZXJfZmFjdG9yeSkpOwotKwotKyAgICAvLyBEdW1wV2l0aG91dENyYXNoaW5n IGlmIHRoZSB0b2tlbiBpcyBlbXB0eSwgb3Igbm90IGluc2VydGVkIGFzIGEgbmV3IGVudHJ5Ci0r ICAgIC8vIHRvIHxyYWNlX25ldHdvcmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9yaWVzX3wuCi0rICAg IC8vIFRPRE8oY3JidWcuY29tLzE0OTI2NDApIFJlbW92ZSBEdW1wV2l0aG91dENyYXNoaW5nIG9u Y2Ugd2UgY29sbGVjdCBkYXRhCi0rICAgIC8vIGFuZCBpZGVudGlmeSB0aGUgY2F1c2UuCi0rICAg IHN0YXRpYyBib29sIGhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3JfZW1wdHlfdG9rZW4g PSBmYWxzZTsKLSsgICAgc3RhdGljIGJvb2wgaGFzX2R1bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zv cl9ub3RfbmV3X2VudHJ5ID0gZmFsc2U7Ci0rICAgIGlmICghaGFzX2R1bXBlZF93aXRob3V0X2Ny YXNoaW5nX2Zvcl9lbXB0eV90b2tlbiAmJgotKyAgICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2 aWNlX3dvcmtlcl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbgotKyAgICAgICAgICAgIC0+aXNf ZW1wdHkoKSkgewotKyAgICAgIGhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3JfZW1wdHlf dG9rZW4gPSB0cnVlOwotKyAgICAgIFNDT1BFRF9DUkFTSF9LRVlfQk9PTCgKLSsgICAgICAgICAg IlNXR2xvYmFsU2NvcGUiLCAiZW1wdHlfcmFjZV90b2tlbiIsCi0rICAgICAgICAgIHBhcmFtcy0+ cmVxdWVzdC0+c2VydmljZV93b3JrZXJfcmFjZV9uZXR3b3JrX3JlcXVlc3RfdG9rZW4KLSsgICAg ICAgICAgICAgIC0+aXNfZW1wdHkoKSk7Ci0rICAgICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkc2 NCgKLSsgICAgICAgICAgIlNXR2xvYmFsU2NvcGUiLCAicmFjZV90b2tlbl9zdHJpbmciLAotKyAg ICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0d29ya19yZXF1 ZXN0X3Rva2VuCi0rICAgICAgICAgICAgICAtPlRvU3RyaW5nKCkpOwotKyAgICAgIFNDT1BFRF9D UkFTSF9LRVlfQk9PTCgiU1dHbG9iYWxTY29wZSIsICJyYWNlX2luc2VydF9uZXdfZW50cnkiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcmVzdWx0LmlzX25ld19lbnRyeSk7 Ci0rICAgICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkcyNTYoIlNXR2xvYmFsU2NvcGUiLCAicmFj ZV9yZXF1ZXN0X3VybCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z LT5yZXF1ZXN0LT51cmwuR2V0U3RyaW5nKCkuVXRmOCgpKTsKLSsgICAgICBiYXNlOjpkZWJ1Zzo6 RHVtcFdpdGhvdXRDcmFzaGluZygpOwotKyAgICB9Ci0rICAgIGlmICghaGFzX2R1bXBlZF93aXRo b3V0X2NyYXNoaW5nX2Zvcl9ub3RfbmV3X2VudHJ5ICYmCi0rICAgICAgICAhaW5zZXJ0X3Jlc3Vs dC5pc19uZXdfZW50cnkpIHsKLSsgICAgICBoYXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hpbmdfZm9y X25vdF9uZXdfZW50cnkgPSB0cnVlOwotKyAgICAgIFNDT1BFRF9DUkFTSF9LRVlfQk9PTCgKLSsg ICAgICAgICAgIlNXR2xvYmFsU2NvcGUiLCAiZW1wdHlfcmFjZV90b2tlbiIsCi0rICAgICAgICAg IHBhcmFtcy0+cmVxdWVzdC0+c2VydmljZV93b3JrZXJfcmFjZV9uZXR3b3JrX3JlcXVlc3RfdG9r ZW4KLSsgICAgICAgICAgICAgIC0+aXNfZW1wdHkoKSk7Ci0rICAgICAgU0NPUEVEX0NSQVNIX0tF WV9TVFJJTkc2NCgKLSsgICAgICAgICAgIlNXR2xvYmFsU2NvcGUiLCAicmFjZV90b2tlbl9zdHJp bmciLAotKyAgICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0 d29ya19yZXF1ZXN0X3Rva2VuCi0rICAgICAgICAgICAgICAtPlRvU3RyaW5nKCkpOwotKyAgICAg IFNDT1BFRF9DUkFTSF9LRVlfQk9PTCgiU1dHbG9iYWxTY29wZSIsICJyYWNlX2luc2VydF9uZXdf ZW50cnkiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcmVzdWx0LmlzX25l d19lbnRyeSk7Ci0rICAgICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkcyNTYoIlNXR2xvYmFsU2Nv cGUiLCAicmFjZV9yZXF1ZXN0X3VybCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFyYW1zLT5yZXF1ZXN0LT51cmwuR2V0U3RyaW5nKCkuVXRmOCgpKTsKLSsgICAgICBiYXNl OjpkZWJ1Zzo6RHVtcFdpdGhvdXRDcmFzaGluZygpOwotKyAgICB9Ci0gICB9Ci0gCi0gICBSZXF1 ZXN0KiByZXF1ZXN0ID0gUmVxdWVzdDo6Q3JlYXRlKAotQEAgLTI4MDUsNzEgKzI4NDAsMTIgQEAg Ym9vbCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNldEF0dHJpYgotIHN0ZDo6b3B0aW9uYWw8 bW9qbzo6UGVuZGluZ1JlbW90ZTxuZXR3b3JrOjptb2pvbTo6Ymxpbms6OlVSTExvYWRlckZhY3Rv cnk+PgotIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6RmluZFJhY2VOZXR3b3JrUmVxdWVzdFVS TExvYWRlckZhY3RvcnkoCi0gICAgIGNvbnN0IGJhc2U6OlVuZ3Vlc3NhYmxlVG9rZW4mIHRva2Vu KSB7Ci0tICBzdGQ6OnVuaXF1ZV9wdHI8UmFjZU5ldHdvcmtSZXF1ZXN0SW5mbz4gcmVzdWx0ID0K LS0gICAgICByYWNlX25ldHdvcmtfcmVxdWVzdHNfLlRha2UoU3RyaW5nKHRva2VuLlRvU3RyaW5n KCkpKTsKLSsgIG1vam86OlBlbmRpbmdSZW1vdGU8bmV0d29yazo6bW9qb206OmJsaW5rOjpVUkxM b2FkZXJGYWN0b3J5PiByZXN1bHQgPQotKyAgICAgIHJhY2VfbmV0d29ya19yZXF1ZXN0X2xvYWRl cl9mYWN0b3JpZXNfLlRha2UoU3RyaW5nKHRva2VuLlRvU3RyaW5nKCkpKTsKLSAgIGlmIChyZXN1 bHQpIHsKLS0gICAgcmFjZV9uZXR3b3JrX3JlcXVlc3RfZmV0Y2hfZXZlbnRfaWRzXy5lcmFzZShy ZXN1bHQtPmZldGNoX2V2ZW50X2lkKTsKLS0gICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Ci0tICAg ICAgICBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdvcms6Om1vam9tOjpibGluazo6VVJMTG9hZGVy RmFjdG9yeT4+KAotLSAgICAgICAgc3RkOjptb3ZlKHJlc3VsdC0+dXJsX2xvYWRlcl9mYWN0b3J5 KSk7Ci0rICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgcmV0dXJuIHN0ZDo6bnVsbG9w dDsKLSB9Ci0gCi0tdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Okluc2VydE5ld0l0ZW1U b1JhY2VOZXR3b3JrUmVxdWVzdHMoCi0tICAgIGludCBmZXRjaF9ldmVudF9pZCwKLS0gICAgY29u c3QgYmFzZTo6VW5ndWVzc2FibGVUb2tlbiYgdG9rZW4sCi0tICAgIG1vam86OlBlbmRpbmdSZW1v dGU8bmV0d29yazo6bW9qb206OmJsaW5rOjpVUkxMb2FkZXJGYWN0b3J5PgotLSAgICAgICAgdXJs X2xvYWRlcl9mYWN0b3J5LAotLSAgICBjb25zdCBLVVJMJiByZXF1ZXN0X3VybCkgewotLSAgYXV0 byByYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbiA9IFN0cmluZyh0b2tlbi5Ub1N0cmluZygpKTsK LS0gIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFjZU5ldHdvcmtSZXF1ZXN0SW5mbz4o Ci0tICAgICAgZmV0Y2hfZXZlbnRfaWQsIHJhY2VfbmV0d29ya19yZXF1ZXN0X3Rva2VuLAotLSAg ICAgIHN0ZDo6bW92ZSh1cmxfbG9hZGVyX2ZhY3RvcnkpKTsKLS0gIHJhY2VfbmV0d29ya19yZXF1 ZXN0X2ZldGNoX2V2ZW50X2lkc18uaW5zZXJ0KGZldGNoX2V2ZW50X2lkLCBpbmZvLmdldCgpKTsK LS0gIGF1dG8gaW5zZXJ0X3Jlc3VsdCA9IHJhY2VfbmV0d29ya19yZXF1ZXN0c18uaW5zZXJ0KHJh Y2VfbmV0d29ya19yZXF1ZXN0X3Rva2VuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGluZm8pKTsKLS0KLS0gIC8vIER1bXBX aXRob3V0Q3Jhc2hpbmcgaWYgdGhlIHRva2VuIGlzIGVtcHR5LCBvciBub3QgaW5zZXJ0ZWQgYXMg YSBuZXcgZW50cnkKLS0gIC8vIHRvIHxyYWNlX25ldHdvcmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9y aWVzX3wuCi0tICAvLyBUT0RPKGNyYnVnLmNvbS8xNDkyNjQwKSBSZW1vdmUgRHVtcFdpdGhvdXRD cmFzaGluZyBvbmNlIHdlIGNvbGxlY3QgZGF0YQotLSAgLy8gYW5kIGlkZW50aWZ5IHRoZSBjYXVz ZS4KLS0gIHN0YXRpYyBib29sIGhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3JfZW1wdHlf dG9rZW4gPSBmYWxzZTsKLS0gIHN0YXRpYyBib29sIGhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGlu Z19mb3Jfbm90X25ld19lbnRyeSA9IGZhbHNlOwotLSAgaWYgKCFoYXNfZHVtcGVkX3dpdGhvdXRf Y3Jhc2hpbmdfZm9yX2VtcHR5X3Rva2VuICYmIHRva2VuLmlzX2VtcHR5KCkpIHsKLS0gICAgaGFz X2R1bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zvcl9lbXB0eV90b2tlbiA9IHRydWU7Ci0tICAgIFND T1BFRF9DUkFTSF9LRVlfQk9PTCgiU1dHbG9iYWxTY29wZSIsICJlbXB0eV9yYWNlX3Rva2VuIiwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmlzX2VtcHR5KCkpOwotLSAgICBTQ09Q RURfQ1JBU0hfS0VZX1NUUklORzY0KCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfdG9rZW5fc3RyaW5n IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5Ub1N0cmluZygpKTsKLS0g ICAgU0NPUEVEX0NSQVNIX0tFWV9CT09MKCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfaW5zZXJ0X25l d19lbnRyeSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcmVzdWx0LmlzX25l d19lbnRyeSk7Ci0tICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HMjU2KCJTV0dsb2JhbFNjb3Bl IiwgInJhY2VfcmVxdWVzdF91cmwiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXF1ZXN0X3VybC5HZXRTdHJpbmcoKS5VdGY4KCkpOwotLSAgICBiYXNlOjpkZWJ1Zzo6RHVtcFdp dGhvdXRDcmFzaGluZygpOwotLSAgfQotLSAgaWYgKCFoYXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hp bmdfZm9yX25vdF9uZXdfZW50cnkgJiYKLS0gICAgICAhaW5zZXJ0X3Jlc3VsdC5pc19uZXdfZW50 cnkpIHsKLS0gICAgaGFzX2R1bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zvcl9ub3RfbmV3X2VudHJ5 ID0gdHJ1ZTsKLS0gICAgU0NPUEVEX0NSQVNIX0tFWV9CT09MKCJTV0dsb2JhbFNjb3BlIiwgImVt cHR5X3JhY2VfdG9rZW4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uaXNfZW1w dHkoKSk7Ci0tICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HNjQoIlNXR2xvYmFsU2NvcGUiLCAi cmFjZV90b2tlbl9zdHJpbmciLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu LlRvU3RyaW5nKCkpOwotLSAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woIlNXR2xvYmFsU2NvcGUi LCAicmFjZV9pbnNlcnRfbmV3X2VudHJ5IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGlu c2VydF9yZXN1bHQuaXNfbmV3X2VudHJ5KTsKLS0gICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkcy NTYoIlNXR2xvYmFsU2NvcGUiLCAicmFjZV9yZXF1ZXN0X3VybCIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlcXVlc3RfdXJsLkdldFN0cmluZygpLlV0ZjgoKSk7Ci0tICAgIGJh c2U6OmRlYnVnOjpEdW1wV2l0aG91dENyYXNoaW5nKCk7Ci0tICB9Ci0tfQotLQotLXZvaWQgU2Vy dmljZVdvcmtlckdsb2JhbFNjb3BlOjpSZW1vdmVJdGVtRnJvbVJhY2VOZXR3b3JrUmVxdWVzdHMo Ci0tICAgIGludCBmZXRjaF9ldmVudF9pZCkgewotLSAgUmFjZU5ldHdvcmtSZXF1ZXN0SW5mbyog aW5mbyA9Ci0tICAgICAgcmFjZV9uZXR3b3JrX3JlcXVlc3RfZmV0Y2hfZXZlbnRfaWRzXy5UYWtl KGZldGNoX2V2ZW50X2lkKTsKLS0gIGlmIChpbmZvKSB7Ci0tICAgIHJhY2VfbmV0d29ya19yZXF1 ZXN0c18uZXJhc2UoaW5mby0+dG9rZW4pOwotLSAgfQotLX0KLS0KLSB9ICAvLyBuYW1lc3BhY2Ug YmxpbmsKLWRpZmYgLXVwIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvbW9kdWxlcy9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9nbG9iYWxfc2Nv cGUuaC5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L21vZHVsZXMvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmgKLS0t LSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVs ZXMvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmgubWUJMjAyNC0w My0xOCAxMDoyNjoxNC45MDU4MTc1MDEgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2 L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvc2VydmljZV93b3JrZXIvc2Vydmlj ZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmgJMjAyNC0wMy0xOCAxMTo0Nzo1OC4yMDIxOTgwMjggKzAx MDAKLUBAIC02MjMsMTQgKzYyMyw2IEBAIGNsYXNzIE1PRFVMRVNfRVhQT1JUIFNlcnZpY2VXb3Jr ZXJHbG9iYWwKLSAgIC8vIFNlcnZpY2VXb3JrZXIuRmV0Y2hFdmVudC5RdWV1aW5nVGltZSBoaXN0 b2dyYW0uCi0gICB2b2lkIFJlY29yZFF1ZXVpbmdUaW1lKGJhc2U6OlRpbWVUaWNrcyBjcmVhdGVk X3RpbWUpOwotIAotLSAgdm9pZCBJbnNlcnROZXdJdGVtVG9SYWNlTmV0d29ya1JlcXVlc3RzKAot LSAgICAgIGludCBmZXRjaF9ldmVudF9pZCwKLS0gICAgICBjb25zdCBiYXNlOjpVbmd1ZXNzYWJs ZVRva2VuJiB0b2tlbiwKLS0gICAgICBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdvcms6Om1vam9t OjpibGluazo6VVJMTG9hZGVyRmFjdG9yeT4KLS0gICAgICAgICAgdXJsX2xvYWRlcl9mYWN0b3J5 LAotLSAgICAgIGNvbnN0IEtVUkwmIHJlcXVlc3RfdXJsKTsKLS0gIHZvaWQgUmVtb3ZlSXRlbUZy b21SYWNlTmV0d29ya1JlcXVlc3RzKGludCBmZXRjaF9ldmVudF9pZCk7Ci0tCi0gICBNZW1iZXI8 U2VydmljZVdvcmtlckNsaWVudHM+IGNsaWVudHNfOwotICAgTWVtYmVyPFNlcnZpY2VXb3JrZXJS ZWdpc3RyYXRpb24+IHJlZ2lzdHJhdGlvbl87Ci0gICBNZW1iZXI8OjpibGluazo6U2VydmljZVdv cmtlcj4gc2VydmljZV93b3JrZXJfOwotQEAgLTc3NiwxNyArNzY4LDEwIEBAIGNsYXNzIE1PRFVM RVNfRVhQT1JUIFNlcnZpY2VXb3JrZXJHbG9iYWwKLSAKLSAgIGJsaW5rOjpCbGlua1N0b3JhZ2VL ZXkgc3RvcmFnZV9rZXlfOwotIAotLSAgc3RydWN0IFJhY2VOZXR3b3JrUmVxdWVzdEluZm8gewot LSAgICBpbnQgZmV0Y2hfZXZlbnRfaWQ7Ci0tICAgIFN0cmluZyB0b2tlbjsKLS0gICAgbW9qbzo6 UGVuZGluZ1JlbW90ZTxuZXR3b3JrOjptb2pvbTo6Ymxpbms6OlVSTExvYWRlckZhY3Rvcnk+Ci0t ICAgICAgICB1cmxfbG9hZGVyX2ZhY3Rvcnk7Ci0tICB9OwotICAgLy8gVE9ETyhjcmJ1Zy5jb20v OTE4NzAyKSBXVEY6Okhhc2hNYXAgY2Fubm90IHVzZSBiYXNlOjpVbmd1ZXNzYWJsZVRva2VuIGFz IGEKLSAgIC8vIGtleS4gQXMgYSB3b3JrYXJvdW5kIHVzZXMgV1RGOjpTdHJpbmcgYXMgYSBrZXkg aW5zdGVhZC4KLS0gIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UmFjZU5ldHdvcmtS ZXF1ZXN0SW5mbz4+Ci0tICAgICAgcmFjZV9uZXR3b3JrX3JlcXVlc3RzXzsKLS0gIEhhc2hNYXA8 aW50LCBSYWNlTmV0d29ya1JlcXVlc3RJbmZvKj4gcmFjZV9uZXR3b3JrX3JlcXVlc3RfZmV0Y2hf ZXZlbnRfaWRzXzsKLSsgIEhhc2hNYXA8U3RyaW5nLCBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdv cms6Om1vam9tOjpibGluazo6VVJMTG9hZGVyRmFjdG9yeT4+Ci0rICAgICAgcmFjZV9uZXR3b3Jr X3JlcXVlc3RfbG9hZGVyX2ZhY3Rvcmllc187Ci0gCi0gICBIZWFwTW9qb0Fzc29jaWF0ZWRSZW1v dGU8bW9qb206OmJsaW5rOjpBc3NvY2lhdGVkSW50ZXJmYWNlUHJvdmlkZXI+Ci0gICAgICAgcmVt b3RlX2Fzc29jaWF0ZWRfaW50ZXJmYWNlc197dGhpc307CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0t MTI0LWVsNy1zaXplX3QucGF0Y2ggYi9jaHJvbWl1bS0xMjQtZWw3LXNpemVfdC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NhODRlZS4uMDAwMDAwMAotLS0gYS9jaHJvbWl1 bS0xMjQtZWw3LXNpemVfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLWRp ZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy90 cmFjaW5nL2NvcmUvaWRfYWxsb2NhdG9yLmgubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhp cmRfcGFydHkvcGVyZmV0dG8vc3JjL3RyYWNpbmcvY29yZS9pZF9hbGxvY2F0b3IuaAotLS0tIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy90cmFjaW5nL2Nv cmUvaWRfYWxsb2NhdG9yLmgubWUJMjAyNC0wNS0wNiAwODozMjowOS42MzcyMTA5NTggKzAyMDAK LSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvdHJh Y2luZy9jb3JlL2lkX2FsbG9jYXRvci5oCTIwMjQtMDUtMDYgMDg6MzI6MjYuNDg1NTE4NDQ4ICsw MjAwCi1AQCAtNjMsMTAgKzYzLDEwIEBAIGNsYXNzIElkQWxsb2NhdG9yIDogcHVibGljIElkQWxs b2NhdG9yR2UKLSAKLSAgIC8vIFRyaWVzIHRvIGFsbG9jYXRlIGBuYCBJRHMuIFJldHVybnMgYSB2 ZWN0b3Igb2YgYG5gIHZhbGlkIElEcyBvciBhbiBlbXB0eQotICAgLy8gdmVjdG9yLCBpZiBub3Qg ZW5vdWdoIElEcyBhcmUgYXZhaWxhYmxlLgotLSAgc3RkOjp2ZWN0b3I8VD4gQWxsb2NhdGVNdWx0 aXBsZShzaXplX3QgbikgewotKyAgc3RkOjp2ZWN0b3I8VD4gQWxsb2NhdGVNdWx0aXBsZShzdGQ6 OnNpemVfdCBuKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPFQ+IHJlczsKLSAgICAgcmVzLnJlc2VydmUo bik7Ci0tICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0rICAgIGZvciAoc3Rk OjpzaXplX3QgaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICBUIGlkID0gQWxsb2NhdGUoKTsK LSAgICAgICBpZiAoaWQpIHsKLSAgICAgICAgIHJlcy5wdXNoX2JhY2soaWQpOwoKZGlmZiAtLWdp dCBhL2Nocm9taXVtLTEyNC1lbDctd29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5k aW5nLnBhdGNoIGIvY2hyb21pdW0tMTI0LWVsNy13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1 cmVkX2JpbmRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyN2U0ZjUu LjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTI0LWVsNy13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1 Y3R1cmVkX2JpbmRpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1kaWZm IC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRl ci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcgY2hyb21pdW0tMTE1 LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0ZXIuY2MKLS0tLSBjaHJvbWl1 bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJv dW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcJMjAyMy0wNi0wNyAyMTo0ODozNy4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3By b21pc2VfYWRhcHRlci5jYwkyMDIzLTA2LTE3IDE2OjUzOjIwLjIxNjYyODU1NyArMDIwMAotQEAg LTk0LDcgKzk0LDkgQEAgdm9pZCBDZG1Qcm9taXNlQWRhcHRlcjo6UmVqZWN0UHJvbWlzZSh1aQot IHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OkNsZWFyKENsZWFyUmVhc29uIHJlYXNvbikgewotICAg Ly8gUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBwcm9taXNlcy4KLSAgIERDSEVDSyh0aHJlYWRfY2hl Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLS0gIGZvciAoYXV0byYgW3Byb21pc2VfaWQs IHByb21pc2VdIDogcHJvbWlzZXNfKSB7Ci0rICBmb3IgKGF1dG8mIFtwX2ksIHBfZV0gOiBwcm9t aXNlc18pIHsKLSsgICAgYXV0byYgcHJvbWlzZV9pZCA9IHBfaTsKLSsgICAgYXV0byYgcHJvbWlz ZSA9IHBfZTsKLSAgICAgVFJBQ0VfRVZFTlRfTkVTVEFCTEVfQVNZTkNfRU5EMSgKLSAgICAgICAg ICJtZWRpYSIsICJDZG1Qcm9taXNlIiwgVFJBQ0VfSURfV0lUSF9TQ09QRSgiQ2RtUHJvbWlzZSIs IHByb21pc2VfaWQpLAotICAgICAgICAgInN0YXR1cyIsICJjbGVhcmVkIik7Ci1kaWZmIC11cCBj aHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2 aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBwZXIuY2MubWUgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9j b250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFw cGVyLmNjCi0tLS0gY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2Vydmlj ZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjLm1lCTIwMjMtMDYtMTkg MDg6MDQ6MDIuMjg3MDcyNzIyICswMjAwCi0rKysgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250 ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVy LmNjCTIwMjMtMDYtMTkgMDg6MTg6MjQuNTc2ODE0OTUwICswMjAwCi1AQCAtMTM5Myw3ICsxMzkz LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dFdyYXBwZXI6Ok1heWJlUAotICAgICByZXR1 cm47Ci0gICB9Ci0gCi0tICBhdXRvIFtkb2N1bWVudF91cmwsIGtleSwgY2FsbGJhY2tdID0gc3Rk Ojptb3ZlKCpyZXF1ZXN0KTsKLSsgIGF1dG8gW2RfdSwga2V5LCBjYWxsYmFja10gPSBzdGQ6Om1v dmUoKnJlcXVlc3QpOwotKyAgYXV0byBkb2N1bWVudF91cmwgPSBkX3U7Ci0gCi0gICBEQ0hFQ0so ZG9jdW1lbnRfdXJsLmlzX3ZhbGlkKCkpOwotICAgVFJBQ0VfRVZFTlQxKCJTZXJ2aWNlV29ya2Vy IiwKLWRpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdvcml0aG0uY2MudGhhbiBjaHJv bWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0 L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNjCi0tLS0gY2hyb21pdW0tMTIxLjAuNjE2Ny4x Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0 X2FsZ29yaXRobS5jYy50aGFuCTIwMjMtMTItMTkgMTc6NTc6NTYuMjA1MTk3MjQ2ICswMTAwCi0r KysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3Jl L2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYwkyMDIzLTEyLTE5IDE4OjEwOjEz Ljc3ODYzNDUzMSArMDEwMAotQEAgLTM1MjcsOCArMzUyNyw4IEBAIHZvaWQgR3JpZExheW91dEFs Z29yaXRobTo6UGxhY2VHcmlkSXRlbXMKLSAgIERDSEVDSyhvdXRfcm93X2JyZWFrX2JldHdlZW4p OwotIAotICAgY29uc3QgYXV0byYgY29udGFpbmVyX3NwYWNlID0gR2V0Q29uc3RyYWludFNwYWNl KCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0X2RhdGEsIHRyZWVfc2l6ZV0g PSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLS0KLSsgIGNvbnN0IGF1dG8mIFtncmlkX2l0 ZW1zLCBsX2QsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLSsgIGNv bnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9kOwotICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91 dF9zdWJ0cmVlID0gY29udGFpbmVyX3NwYWNlLkdldEdyaWRMYXlvdXRTdWJ0cmVlKCk7Ci0gICBj b25zdCBhdXRvIGNvbnRhaW5lcl93cml0aW5nX2RpcmVjdGlvbiA9Ci0gICAgICAgY29udGFpbmVy X3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rpb24oKTsKLUBAIC0zNjkxLDggKzM2OTEsOSBAQCB2b2lk IEdyaWRMYXlvdXRBbGdvcml0aG06OlBsYWNlR3JpZEl0ZW1zCi0gCi0gICAvLyBUT0RPKGlraWxw YXRyaWNrKTogVXBkYXRlIHxTZXRIYXNTZWVuQWxsQ2hpbGRyZW58IGFuZCBlYXJseSBleGl0IGlm IHRydWUuCi0gICBjb25zdCBhdXRvJiBjb25zdHJhaW50X3NwYWNlID0gR2V0Q29uc3RyYWludFNw YWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0X2RhdGEsIHRyZWVfc2l6 ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLS0KLSsgIGNvbnN0IGF1dG8mIFtnX2ks IGxfZCwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRyZWVSb290RGF0YSgpOwotKyAgY29uc3Qg YXV0byYgZ3JpZF9pdGVtcyA9IGdfaTsKLSsgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9k OwotICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0gY29uc3RyYWludF9zcGFj ZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgpOwotICAgY29uc3QgYXV0byBjb250YWluZXJfd3JpdGlu Z19kaXJlY3Rpb24gPQotICAgICAgIGNvbnN0cmFpbnRfc3BhY2UuR2V0V3JpdGluZ0RpcmVjdGlv bigpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9wcmVk aWN0b3JzL2xjcF9jcml0aWNhbF9wYXRoX3ByZWRpY3Rvci9wcmV3YXJtX2h0dHBfZGlza19jYWNo ZV9tYW5hZ2VyLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJl ZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2Fj aGVfbWFuYWdlci5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv cHJlZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tf Y2FjaGVfbWFuYWdlci5jYy5tZQkyMDI0LTAyLTI1IDE4OjAzOjUxLjY1NDU3OTU3OSArMDEwMAot KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9sY3Bf Y3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5j YwkyMDI0LTAyLTI1IDE4OjEyOjQ1LjE0NDI4Nzc1MCArMDEwMAotQEAgLTEzNiw3ICsxMzYsOCBA QCB2b2lkIFByZXdhcm1IdHRwRGlza0NhY2hlTWFuYWdlcjo6TWF5YmVQCi0gICBzdGQ6OnBhaXI8 dXJsOjpPcmlnaW4sIEdVUkw+IG9yaWdpbl9hbmRfdXJsOwotICAgc3RkOjpzd2FwKG9yaWdpbl9h bmRfdXJsLCBxdWV1ZWRfam9ic18uZnJvbnQoKSk7Ci0gICBxdWV1ZWRfam9ic18ucG9wKCk7Ci0t ICBjb25zdCBhdXRvJiBbb3JpZ2luLCB1cmxdID0gb3JpZ2luX2FuZF91cmw7Ci0rICBjb25zdCBh dXRvJiBbb3JpZ2luLCB1XSA9IG9yaWdpbl9hbmRfdXJsOwotKyAgY29uc3QgYXV0byYgdXJsID0g dTsKLSAgIFRSQUNFX0VWRU5UX1dJVEhfRkxPVzEoCi0gICAgICAgImxvYWRpbmciLCAiUHJld2Fy bUh0dHBEaXNrQ2FjaGVNYW5hZ2VyOjpNYXliZVByb2Nlc3NOZXh0UXVldWVkSm9iIiwKLSAgICAg ICBUUkFDRV9JRF9MT0NBTCh0aGlzKSwKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb250 ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVxdWVzdF91cmxfbG9hZGVy X2NsaWVudC5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcJMjAyNC0w NS0wNSAxNjoyMjo0Ny41ODEwNzA4NjggKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjEx OC9jb250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVxdWVzdF91cmxf bG9hZGVyX2NsaWVudC5jYwkyMDI0LTA1LTA1IDE2OjI3OjE4Ljg1OTk3MjQ4MSArMDIwMAotQEAg LTQxNyw3ICs0MTcsOCBAQAotICAgfQotIAotICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkcyNTYo IlNXUmFjZSIsICJyZXF1ZXN0X3VybCIsIHJlcXVlc3RfLnVybC5zcGVjKCkpOwotLSAgYXV0byBb cmVhZF9yZXN1bHQsIHJlYWRfYnVmZmVyXSA9IHJlYWRfYnVmZmVyX21hbmFnZXJfLT5SZWFkRGF0 YSgpOwotKyAgYXV0byBbciwgcmVhZF9idWZmZXJdID0gcmVhZF9idWZmZXJfbWFuYWdlcl8tPlJl YWREYXRhKCk7Ci0rICBhdXRvIHJlYWRfcmVzdWx0ID0gcjsKLSAgIFRSQUNFX0VWRU5UX1dJVEhf RkxPVzIoIlNlcnZpY2VXb3JrZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Vydmlj ZVdvcmtlclJhY2VOZXR3b3JrUmVxdWVzdFVSTExvYWRlckNsaWVudDo6UmVhZCIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIFRSQUNFX0lEX0xPQ0FMKHRoaXMpLAoKZGlmZiAtLWdpdCBhL2No cm9taXVtLTEyNS1lbDctYXNzZXJ0LnBhdGNoIGIvY2hyb21pdW0tMTI1LWVsNy1hc3NlcnQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NmZlZGEuLjAwMDAwMDAKLS0tIGEv Y2hyb21pdW0tMTI1LWVsNy1hc3NlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCww IEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3RvcF9jaHJvbWUvd2VidWlfY29udGVudHNfd3JhcHBlci5oLmFzc2VydCBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3RvcF9jaHJvbWUvd2VidWlfY29u dGVudHNfd3JhcHBlci5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci91aS93ZWJ1aS90b3BfY2hyb21lL3dlYnVpX2NvbnRlbnRzX3dyYXBwZXIuaC5hc3NlcnQJMjAy NC0wNS0xOCAxOTozMzozNy4xNjUyNDM1NzcgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3RvcF9jaHJvbWUvd2VidWlfY29udGVudHNfd3Jh cHBlci5oCTIwMjQtMDUtMTggMTk6NDU6NTEuMjI0OTk1NDg5ICswMjAwCi1AQCAtMTg1LDcgKzE4 NSw3IEBAIGNsYXNzIFdlYlVJQ29udGVudHNXcmFwcGVyVCA6IHB1YmxpYyBXZWIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzX2RyYWdnYWJsZV9yZWdpb25zLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVDo6R2V0V2ViVUlOYW1lKCkpLAotICAgICAgICAgd2Vi dWlfdXJsXyh3ZWJ1aV91cmwpIHsKLS0gICAgc3RhdGljX2Fzc2VydCgKLSsgICAgYXNzZXJ0KAot ICAgICAgICAgdmlld3NfbWV0cmljczo6SXNWYWxpZFdlYlVJTmFtZVZhcmlhbnQoIi4iICsgVDo6 R2V0V2ViVUlOYW1lKCkpKTsKLSAgICAgaWYgKGlzX3JlYWR5X3RvX3Nob3coKSkgewotICAgICAg IENIRUNLKEdldFdlYlVJQ29udHJvbGxlcigpKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdjgvc3JjL2Jhc2Uvc21hbGwtdmVjdG9yLmguYXNzZXJ0IGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdjgvc3JjL2Jhc2Uvc21hbGwtdmVjdG9yLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL3Y4L3NyYy9iYXNlL3NtYWxsLXZlY3Rvci5oLmFzc2VydAkyMDI0LTA1LTE1IDIzOjQ4OjE4 LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdjgvc3JjL2Jhc2Uv c21hbGwtdmVjdG9yLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43NDU2NTExNzMgKzAyMDAKLUBAIC0y Miw3ICsyMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qga1NpemUsIHR5cGUKLSBj bGFzcyBTbWFsbFZlY3RvciB7Ci0gICAvLyBDdXJyZW50bHkgb25seSBzdXBwb3J0IHRyaXZpYWxs eSBjb3B5YWJsZSBhbmQgdHJpdmlhbGx5IGRlc3RydWN0aWJsZSBkYXRhCi0gICAvLyB0eXBlcywg YXMgaXQgdXNlcyBtZW1jcHkgdG8gY29weSBlbGVtZW50cyBhbmQgbmV2ZXIgY2FsbHMgZGVzdHJ1 Y3RvcnMuCi0tICBBU1NFUlRfVFJJVklBTExZX0NPUFlBQkxFKFQpOwotKyAgLy9BU1NFUlRfVFJJ VklBTExZX0NPUFlBQkxFKFQpOwotICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k ZXN0cnVjdGlibGU8VD46OnZhbHVlKTsKLSAKLSAgcHVibGljOgoKZGlmZiAtLWdpdCBhL2Nocm9t aXVtLTEyNS1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9u LnBhdGNoIGIvY2hyb21pdW0tMTI1LWVsNy1kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1h bm9ueW1vdXMtdW5pb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzg1 NjIuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTI1LWVsNy1kZWZhdWx0LWNvbnN0cnVjdG9yLWlu dm9sdmluZy1hbm9ueW1vdXMtdW5pb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCww IEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvdmFyaWF0aW9u cy9zZXJ2aWNlL3VpX3N0cmluZ19vdmVycmlkZXIuY2MuZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZv bHZpbmctYW5vbnltb3VzLXVuaW9uIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92 YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYwotLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29tcG9uZW50cy92YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJy aWRlci5jYy5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24JMjAy NC0wNS0xNSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbXBvbmVudHMvdmFyaWF0aW9ucy9zZXJ2aWNlL3VpX3N0cmluZ19vdmVycmlkZXIuY2MJ MjAyNC0wNS0xNyAxMjozMzo1OC42ODQ2NDk5MDkgKzAyMDAKLUBAIC0xMiw3ICsxMiw3IEBACi0g Ci0gbmFtZXNwYWNlIHZhcmlhdGlvbnMgewotIAotLVVJU3RyaW5nT3ZlcnJpZGVyOjpVSVN0cmlu Z092ZXJyaWRlcigpID0gZGVmYXVsdDsKLStVSVN0cmluZ092ZXJyaWRlcjo6VUlTdHJpbmdPdmVy cmlkZXIoKSB7fQotIAotIFVJU3RyaW5nT3ZlcnJpZGVyOjpVSVN0cmluZ092ZXJyaWRlcihiYXNl OjpzcGFuPGNvbnN0IHVpbnQzMl90PiByZXNvdXJjZV9oYXNoZXMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OnNwYW48Y29uc3QgaW50PiByZXNvdXJjZV9pbmRp Y2VzKQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50 ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmNjLmRlZmF1bHQt Y29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbiBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2Vs bGVyX3NpZ25hbHMuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nl ci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuY2MuZGVm YXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uCTIwMjQtMDUtMTUgMjM6 NDY6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50 L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxz LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNjg1NjQ5OTI5ICswMjAwCi1AQCAtNDYsNyArNDYsNyBA QCBzaXplX3QgR2V0UmVzdWx0U2l6ZUJ5dGVzKGNvbnN0IEhlYWRlckRpCi0gCi0gfSAgLy8gbmFt ZXNwYWNlCi0gCi0tSGVhZGVyRGlyZWN0RnJvbVNlbGxlclNpZ25hbHM6OlJlc3VsdDo6UmVzdWx0 KCkgPSBkZWZhdWx0OwotK0hlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpSZXN1bHQ6OlJl c3VsdCgpIHt9Ci0gCi0gSGVhZGVyRGlyZWN0RnJvbVNlbGxlclNpZ25hbHM6OlJlc3VsdDo6UmVz dWx0KAotICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBzZWxsZXJfc2lnbmFscywKLWRp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9mcm96ZW5fYXJyYXkuaC5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9s dmluZy1hbm9ueW1vdXMtdW5pb24gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2Zyb3plbl9hcnJheS5oCi0tLS0gY2hyb21p dW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3Jl L3Y4L2Zyb3plbl9hcnJheS5oLmRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91 cy11bmlvbgkyMDI0LTA1LTE4IDA5OjUyOjIyLjM4NTMzMDMwNCArMDIwMAotKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92 OC9mcm96ZW5fYXJyYXkuaAkyMDI0LTA1LTE4IDA5OjUyOjUxLjAyMzg5MTUyNSArMDIwMAotQEAg LTM2LDcgKzM2LDcgQEAgY2xhc3MgRnJvemVuQXJyYXkgZmluYWwgOiBwdWJsaWMgYmluZGluZwot ICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBWZWN0b3JUeXBlOjpjb25zdF9pdGVy YXRvcjsKLSAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSB0eXBlbmFtZSBWZWN0b3JU eXBlOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotIAotLSAgRnJvemVuQXJyYXkoKSA9IGRlZmF1 bHQ7Ci0rICBGcm96ZW5BcnJheSgpIHt9Ci0gICBleHBsaWNpdCBGcm96ZW5BcnJheShWZWN0b3JU eXBlIGFycmF5KSA6IGFycmF5XyhzdGQ6Om1vdmUoYXJyYXkpKSB7fQotICAgfkZyb3plbkFycmF5 KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwotIAoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDct b2xkLWxpYmRybS5wYXRjaCBiL2Nocm9taXVtLTEyNS1lbDctb2xkLWxpYmRybS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2Mjk3Ny4uMDAwMDAwMAotLS0gYS9jaHJvbWl1 bS0xMjUtZWw3LW9sZC1saWJkcm0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2dmeC9saW51eC9kcm1fdXRpbF9s aW51eC5jYy5lbDctb2xkLWxpYmRybSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2dmeC9saW51 eC9kcm1fdXRpbF9saW51eC5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L2xp bnV4L2RybV91dGlsX2xpbnV4LmNjLmVsNy1vbGQtbGliZHJtCTIwMjQtMDUtMTYgMjA6NDM6MjYu NjE5NDU1MzAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngvbGludXgv ZHJtX3V0aWxfbGludXguY2MJMjAyNC0wNS0xNiAyMDo0NToxOC4xMjA3MTYyNzggKzAyMDAKLUBA IC05LDYgKzksMTQgQEAKLSAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgImJh c2Uvbm90cmVhY2hlZC5oIgotIAotKy8vIHRoZSBsaWJkcm0gaW4gRUwtNyBpcyB0b28gb2xkIHRv IGhhdmUgdGhpcyBkZWZpbmUKLSsjaWZuZGVmIERSTV9GT1JNQVRfUDAxMAotKyNkZWZpbmUgRFJN X0ZPUk1BVF9QMDEwIGZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcwJykKLSsjZW5kaWYKLSsj aWZuZGVmIERSTV9GT1JNQVRfQUJHUjE2MTYxNjE2RgotKyNkZWZpbmUgRFJNX0ZPUk1BVF9BQkdS MTYxNjE2MTZGIGZvdXJjY19jb2RlKCdBJywgJ0InLCAnNCcsICdIJykKLSsjZW5kaWYKLSsKLSBu YW1lc3BhY2UgdWkgewotIAotIGludCBHZXRGb3VyQ0NGb3JtYXRGcm9tQnVmZmVyRm9ybWF0KGdm eDo6QnVmZmVyRm9ybWF0IGZvcm1hdCkgewoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDct b3B0aW9uYWwtd29ya2Fyb3VuZC1hc3NlcnQucGF0Y2ggYi9jaHJvbWl1bS0xMjUtZWw3LW9wdGlv bmFsLXdvcmthcm91bmQtYXNzZXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA3ZTc4MDg1Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyNS1lbDctb3B0aW9uYWwtd29ya2Fy b3VuZC1hc3NlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gY2hy b21pdW0tMTI1LjAuNjQyMi42MC9vcHRpb25hbC5vcmlnCTIwMjQtMDUtMjAgMDA6MTI6NTAuMTUy MzA2Mjg5ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9vcHRpb25hbAkyMDI0LTA1 LTIwIDAwOjEyOjI4LjA0MTgyMzYzMSArMDIwMAotQEAgLTQ3NCw3ICs0NzQsNyBAQAotICAgICAg IGNvbnN0ZXhwciBfVHAmCi0gICAgICAgX01fZ2V0KCkgbm9leGNlcHQKLSAgICAgICB7Ci0tCV9f Z2xpYmN4eF9hc3NlcnQodGhpcy0+X01faXNfZW5nYWdlZCgpKTsKLSsJLy9fX2dsaWJjeHhfYXNz ZXJ0KHRoaXMtPl9NX2lzX2VuZ2FnZWQoKSk7Ci0gCXJldHVybiBzdGF0aWNfY2FzdDxfRHAqPih0 aGlzKS0+X01fcGF5bG9hZC5fTV9nZXQoKTsKLSAgICAgICB9Ci0gCgpkaWZmIC0tZ2l0IGEvY2hy b21pdW0tMTI1LWVsNy10eXBlbmFtZS5wYXRjaCBiL2Nocm9taXVtLTEyNS1lbDctdHlwZW5hbWUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjODZhNTIuLjAwMDAwMDAKLS0t IGEvY2hyb21pdW0tMTI1LWVsNy10eXBlbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQx NyArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9y L3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0 b3IuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaAot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9j YXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvci5oLnR5cGVuYW1lCTIw MjQtMDUtMTUgMjM6NDU6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxs b2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MzU2NTA5NjYgKzAy MDAKLUBAIC0yNiw3ICsyNiw3IEBAIFBhcnRpdGlvblJvb3QmIEludGVybmFsQWxsb2NhdG9yUm9v dCgpOwotIAotIC8vIEEgY2xhc3MgdGhhdCBtZWV0cyBDKysgbmFtZWQgcmVxdWlyZW1lbnRzLCBB bGxvY2F0b3IuCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tSW50ZXJuYWxBbGxvY2F0b3I8VD46 OnZhbHVlX3R5cGUqIEludGVybmFsQWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSgKLSt0eXBlbmFtZSBJ bnRlcm5hbEFsbG9jYXRvcjxUPjo6dmFsdWVfdHlwZSogSW50ZXJuYWxBbGxvY2F0b3I8VD46OmFs bG9jYXRlKAotICAgICBzdGQ6OnNpemVfdCBjb3VudCkgewotICAgUEFfQ0hFQ0soY291bnQgPD0K LSAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgoKSAvIHNp emVvZih2YWx1ZV90eXBlKSk7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2Uv Y29udGFpbmVycy9oZWFwX2FycmF5LmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9i YXNlL2NvbnRhaW5lcnMvaGVhcF9hcnJheS5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9i YXNlL2NvbnRhaW5lcnMvaGVhcF9hcnJheS5oLnR5cGVuYW1lCTIwMjQtMDUtMTcgMTM6NTE6Mzku OTIzNDI2NDYxICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRhaW5l cnMvaGVhcF9hcnJheS5oCTIwMjQtMDUtMTcgMTM6NTQ6MDEuODY2MDg1NzMwICswMjAwCi1AQCAt MzIsOCArMzIsOCBAQCBjbGFzcyBUUklWSUFMX0FCSSBHU0xfT1dORVIgSGVhcEFycmF5IHsKLSAg IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcmVmZXJlbmNlX3Y8VD4sCi0gICAgICAgICAgICAgICAg ICJIZWFwQXJyYXkgY2Fubm90IGhvbGQgcmVmZXJlbmNlIHR5cGVzIik7Ci0gCi0tICB1c2luZyBp dGVyYXRvciA9IGJhc2U6OnNwYW48VD46Oml0ZXJhdG9yOwotLSAgdXNpbmcgY29uc3RfaXRlcmF0 b3IgPSBiYXNlOjpzcGFuPGNvbnN0IFQ+OjppdGVyYXRvcjsKLSsgIHVzaW5nIGl0ZXJhdG9yID0g dHlwZW5hbWUgYmFzZTo6c3BhbjxUPjo6aXRlcmF0b3I7Ci0rICB1c2luZyBjb25zdF9pdGVyYXRv ciA9IHR5cGVuYW1lIGJhc2U6OnNwYW48Y29uc3QgVD46Oml0ZXJhdG9yOwotICAgLy8gV2UgZG9u J3QgcHV0IHRoaXMgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgdGVtcGxhdGUgcGFyYW1ldGVyIGxpc3Qg dG8gYWxsb3cgdGhlCi0gICAvLyBzdGF0aWNfYXNzZXJ0IG9uIGlzX3JlZmVyZW5jZV92IHRvIGdp dmUgYSBuaWNlciBlcnJvciBtZXNzYWdlLgotICAgdXNpbmcgZGVsZXRlcl90eXBlID0gc3RkOjoK LWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9jb250YWluZXJzL21hcF91dGls LmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2NvbnRhaW5lcnMvbWFwX3V0 aWwuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9jb250YWluZXJzL21hcF91dGls LmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0NTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvY29udGFpbmVycy9tYXBfdXRpbC5oCTIwMjQtMDUtMTcg MTI6MzM6NTguNzM1NjUwOTY2ICswMjAwCi1AQCAtNDQsNyArNDQsNyBAQCBjb25zdGV4cHIgaW50 ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPiogRmluCi0gdGVtcGxhdGUgPHR5cGVuYW1lIE1hcCwKLSAg ICAgICAgICAgdHlwZW5hbWUgS2V5LAotICAgICAgICAgICB0eXBlbmFtZSBNYXBwZWRFbGVtZW50 VHlwZSA9Ci0tICAgICAgICAgICAgICBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBw ZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+Ci0rICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6 OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+ Ci0gY29uc3RleHByIGNvbnN0IE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUHRyT3JOdWxsKGNvbnN0 IE1hcCYgbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBLZXkmIGtleSkgewotICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7Ci1AQCAt NjAsNyArNjAsNyBAQCBjb25zdGV4cHIgY29uc3QgTWFwcGVkRWxlbWVudFR5cGUqIEZpbmRQCi0g dGVtcGxhdGUgPHR5cGVuYW1lIE1hcCwKLSAgICAgICAgICAgdHlwZW5hbWUgS2V5LAotICAgICAg ICAgICB0eXBlbmFtZSBNYXBwZWRFbGVtZW50VHlwZSA9Ci0tICAgICAgICAgICAgICBzdGQ6OnBv aW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+Ci0r ICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBw ZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+Ci0gY29uc3RleHByIE1hcHBlZEVsZW1lbnRUeXBl KiBGaW5kUHRyT3JOdWxsKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtleSkgewotICAgYXV0byBpdCA9 IG1hcC5maW5kKGtleSk7Ci0gICByZXR1cm4gaXQgIT0gbWFwLmVuZCgpID8gYmFzZTo6dG9fYWRk cmVzcyhpdC0+c2Vjb25kKSA6IG51bGxwdHI7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Jhc2UvY29udGFpbmVycy90b192ZWN0b3IuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2Jhc2UvY29udGFpbmVycy90b192ZWN0b3IuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvYmFzZS9jb250YWluZXJzL3RvX3ZlY3Rvci5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6 NDU6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Nv bnRhaW5lcnMvdG9fdmVjdG9yLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MzY2NTA5ODcgKzAyMDAK LUBAIC0zMCw3ICszMCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBSYW5nZSwgdHlwZW5hbWUgUHJv agotICAgICAgICAgICAgc3RkOjppbmRpcmVjdGx5X3VuYXJ5X2ludm9jYWJsZTxQcm9qLCByYW5n ZXM6Oml0ZXJhdG9yX3Q8UmFuZ2U+PgotIGF1dG8gVG9WZWN0b3IoUmFuZ2UmJiByYW5nZSwgUHJv aiBwcm9qID0ge30pIHsKLSAgIHVzaW5nIFByb2plY3RlZFR5cGUgPQotLSAgICAgIHN0ZDo6cHJv amVjdGVkPHJhbmdlczo6aXRlcmF0b3JfdDxSYW5nZT4sIFByb2o+Ojp2YWx1ZV90eXBlOwotKyAg ICAgIHR5cGVuYW1lIHN0ZDo6cHJvamVjdGVkPHJhbmdlczo6aXRlcmF0b3JfdDxSYW5nZT4sIFBy b2o+Ojp2YWx1ZV90eXBlOwotICAgc3RkOjp2ZWN0b3I8UHJvamVjdGVkVHlwZT4gY29udGFpbmVy OwotICAgY29udGFpbmVyLnJlc2VydmUoc3RkOjpzaXplKHJhbmdlKSk7Ci0gICByYW5nZXM6OnRy YW5zZm9ybShzdGQ6OmZvcndhcmQ8UmFuZ2U+KHJhbmdlKSwgc3RkOjpiYWNrX2luc2VydGVyKGNv bnRhaW5lciksCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvZnVuY3Rpb25h bC9iaW5kX2ludGVybmFsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1 bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNl L2Z1bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDU6NDku MDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1bmN0aW9u YWwvYmluZF9pbnRlcm5hbC5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM2NjUwOTg3ICswMjAwCi1A QCAtMTUwNSwxMSArMTUwNSwxMSBAQCB0ZW1wbGF0ZSA8aW50IGksCi0gICAgICAgICAgIHR5cGVu YW1lIFBhcmFtPgotIHN0cnVjdCBQYXJhbUNhbkJlQm91bmQgewotICBwcml2YXRlOgotLSAgdXNp bmcgVW53cmFwcGVkUGFyYW0gPSBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIEZvcndhcmRlZEFz PAotKyAgdXNpbmcgVW53cmFwcGVkUGFyYW0gPSB0eXBlbmFtZSBCaW5kQXJndW1lbnQ8aT46OnRl bXBsYXRlIEZvcndhcmRlZEFzPAotICAgICAgIFVud3JhcHBlZD46OnRlbXBsYXRlIFRvUGFyYW1X aXRoVHlwZTxQYXJhbT47Ci0tICB1c2luZyBQYXJhbVN0b3JhZ2UgPSBCaW5kQXJndW1lbnQ8aT46 OnRlbXBsYXRlIFRvUGFyYW1XaXRoVHlwZTwKLSsgIHVzaW5nIFBhcmFtU3RvcmFnZSA9IHR5cGVu YW1lIEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgVG9QYXJhbVdpdGhUeXBlPAotICAgICAgIFBh cmFtPjo6dGVtcGxhdGUgU3RvcmVkQXM8U3RvcmFnZT47Ci0tICB1c2luZyBCb3VuZFN0b3JhZ2Ug PQotKyAgdXNpbmcgQm91bmRTdG9yYWdlID0gdHlwZW5hbWUKLSAgICAgICBCaW5kQXJndW1lbnQ8 aT46OnRlbXBsYXRlIEJvdW5kQXM8QXJnPjo6dGVtcGxhdGUgU3RvcmVkQXM8U3RvcmFnZT47Ci0g Ci0gICB0ZW1wbGF0ZSA8Ym9vbCB2ID0gIVVud3JhcHBlZFBhcmFtOjprUmF3UHRyIHx8Ci1kaWZm IC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYu aC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlv bl9yZWYuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9mdW5jdGlvbmFsL2Z1bmN0 aW9uX3JlZi5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDU6NDkuMDAwMDAwMDAwICswMjAwCi0r KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgJ MjAyNC0wNS0xNyAxMjozMzo1OC43MzY2NTA5ODcgKzAyMDAKLUBAIC02NCw3ICs2NCw3IEBAIGNs YXNzIEZ1bmN0aW9uUmVmOwotIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZS4uLiBBcmdz PgotIGNsYXNzIEZ1bmN0aW9uUmVmPFIoQXJncy4uLik+IHsKLSAgIHRlbXBsYXRlIDx0eXBlbmFt ZSBGdW5jdG9yLAotLSAgICAgICAgICAgIHR5cGVuYW1lIFJ1blR5cGUgPSBpbnRlcm5hbDo6RnVu Y3RvclRyYWl0czxGdW5jdG9yPjo6UnVuVHlwZT4KLSsgICAgICAgICAgICB0eXBlbmFtZSBSdW5U eXBlID0gdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0b3JUcmFpdHM8RnVuY3Rvcj46OlJ1blR5cGU+ Ci0gICBzdGF0aWMgY29uc3RleHByIGJvb2wga0NvbXBhdGlibGVGdW5jdG9yID0KLSAgICAgICBz dGQ6OmNvbnZlcnRpYmxlX3RvPGludGVybmFsOjpFeHRyYWN0UmV0dXJuVHlwZTxSdW5UeXBlPiwg Uj4gJiYKLSAgICAgICBzdGQ6OnNhbWVfYXM8aW50ZXJuYWw6OkV4dHJhY3RBcmdzPFJ1blR5cGU+ LCBpbnRlcm5hbDo6VHlwZUxpc3Q8QXJncy4uLj4+OwotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9iYXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9iYXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaC50eXBlbmFtZQkyMDI0LTA1LTE1IDIzOjQ1OjUw LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS90eXBlcy9m aXhlZF9hcnJheS5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM3NjUxMDA4ICswMjAwCi1AQCAtMjcs OCArMjcsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSBjbGFzcyBGaXhlZEFycmF5IDogcHVi bGljIGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT4gewotICBwdWJsaWM6Ci0gICB1c2luZyBhYnNs OjpGaXhlZEFycmF5PFQsIE4sIEE+OjpGaXhlZEFycmF5OwotLSAgZXhwbGljaXQgRml4ZWRBcnJh eShhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+OjpzaXplX3R5cGUgbiwKLS0gICAgICAgICAgICAg ICAgICAgICAgY29uc3QgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9yX3R5cGUm IGEgPQotKyAgZXhwbGljaXQgRml4ZWRBcnJheSh0eXBlbmFtZSBhYnNsOjpGaXhlZEFycmF5PFQs IE4sIEE+OjpzaXplX3R5cGUgbiwKLSsgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZW5h bWUgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9yX3R5cGUmIGEgPQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6 YWxsb2NhdG9yX3R5cGUoKSkKLSAgICAgICA6IEZpeGVkQXJyYXkobiwgVCgpLCBhKSB7fQotIH07 Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2Rvd25sb2Fk L2J1YmJsZS9kb3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MudHlwZW5hbWUgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRf YnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJv bWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNl LmNjLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxv YWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM3NjUxMDA4 ICswMjAwCi1AQCAtOTQsNyArOTQsNyBAQCBJdGVtU29ydEtleSBHZXRTb3J0S2V5KGNvbnN0IEl0 ZW0mIGl0ZW0pCi0gLy8gSGVscGVyIHRvIGdldCBhbiBpdGVyYXRvciB0byB0aGUgbGFzdCBlbGVt ZW50IGluIHRoZSBjYWNoZS4gVGhlIGNhY2hlCi0gLy8gbXVzdCBub3QgYmUgZW1wdHkuCi0gdGVt cGxhdGUgPHR5cGVuYW1lIEl0ZW0+Ci0tU29ydGVkSXRlbXM8SXRlbT46OmNvbnN0X2l0ZXJhdG9y IEdldExhc3RJdGVyKGNvbnN0IFNvcnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSkgewotK3R5cGVuYW1l IFNvcnRlZEl0ZW1zPEl0ZW0+Ojpjb25zdF9pdGVyYXRvciBHZXRMYXN0SXRlcihjb25zdCBTb3J0 ZWRJdGVtczxJdGVtPiYgY2FjaGUpIHsKLSAgIENIRUNLKCFjYWNoZS5lbXB0eSgpKTsKLSAgIGF1 dG8gaXQgPSBjYWNoZS5lbmQoKTsKLSAgIHJldHVybiBzdGQ6OnByZXYoaXQpOwotQEAgLTExNzMs OSArMTE3Myw5IEBAIGJvb2wgRG93bmxvYWRCdWJibGVVcGRhdGVTZXJ2aWNlOjpDYWNoZU0KLSB9 Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIElkLCB0eXBlbmFtZSBJdGVtPgotLVNvcnRlZEl0ZW1z PEl0ZW0+OjppdGVyYXRvcgotK3R5cGVuYW1lIFNvcnRlZEl0ZW1zPEl0ZW0+OjppdGVyYXRvcgot IERvd25sb2FkQnViYmxlVXBkYXRlU2VydmljZTo6Q2FjaGVNYW5hZ2VyOjpSZW1vdmVJdGVtRnJv bUNhY2hlQnlJdGVyKAotLSAgICBTb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IgaXRlciwKLSsg ICAgdHlwZW5hbWUgU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yIGl0ZXIsCi0gICAgIFNvcnRl ZEl0ZW1zPEl0ZW0+JiBjYWNoZSwKLSAgICAgSXRlck1hcDxJZCwgSXRlbT4mIGl0ZXJfbWFwKSB7 Ci0gICBDSEVDSyhpdGVyICE9IGNhY2hlLmVuZCgpKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy9pbnRlcm5h bC9jb21tYW5kX2ludGVybmFsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJv bWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2ludGVybmFsL2NvbW1hbmRfaW50 ZXJuYWwuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvd2ViX2Fw cGxpY2F0aW9ucy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFsLmgudHlwZW5hbWUJ MjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvaW50ZXJuYWwv Y29tbWFuZF9pbnRlcm5hbC5oCTIwMjQtMDUtMTcgMTI6MzM6NTguNzM3NjUxMDA4ICswMjAwCi1A QCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIENvbW1hbmRCYXNlIHsKLSB0ZW1wbGF0ZSA8dHlwZW5h bWUgTG9ja1R5cGU+Ci0gY2xhc3MgQ29tbWFuZFdpdGhMb2NrIDogcHVibGljIENvbW1hbmRCYXNl IHsKLSAgcHVibGljOgotLSAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0gTG9ja1R5cGU6OkxvY2tE ZXNjcmlwdGlvbjsKLSsgIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IHR5cGVuYW1lIExvY2tUeXBl OjpMb2NrRGVzY3JpcHRpb247Ci0gICBleHBsaWNpdCBDb21tYW5kV2l0aExvY2soY29uc3Qgc3Rk OjpzdHJpbmcmIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0Rlc2NyaXB0 aW9uIGluaXRpYWxfbG9ja19yZXF1ZXN0KTsKLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy93ZWJfYXBwX2Nv bW1hbmQuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dl Yl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgKLS0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2Vi X2FwcF9jb21tYW5kLmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNh dGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43Mzg2 NTEwMjggKzAyMDAKLUBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV2ViQXBwTG9ja01hbmFnZXI7 Ci0gdGVtcGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZS4uLiBDYWxsYmFja0FyZ3M+ Ci0gY2xhc3MgV2ViQXBwQ29tbWFuZCA6IHB1YmxpYyBpbnRlcm5hbDo6Q29tbWFuZFdpdGhMb2Nr PExvY2tUeXBlPiB7Ci0gIHB1YmxpYzoKLS0gIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IExvY2tU eXBlOjpMb2NrRGVzY3JpcHRpb247Ci0rICB1c2luZyBMb2NrRGVzY3JpcHRpb24gPSB0eXBlbmFt ZSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uOwotICAgdXNpbmcgQ2FsbGJhY2tUeXBlID0gYmFz ZTo6T25jZUNhbGxiYWNrPHZvaWQoQ2FsbGJhY2tBcmdzLi4uKT47Ci0gICB1c2luZyBTaHV0ZG93 bkFyZ3VtZW50c1R1cGxlID0gc3RkOjp0dXBsZTxzdGQ6OmRlY2F5X3Q8Q2FsbGJhY2tBcmdzPi4u Lj47Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3dl Yl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLnR5cGVuYW1lIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBw X2NvbW1hbmRfc2NoZWR1bGVyLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9i cm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLnR5cGVu YW1lCTIwMjQtMDUtMTUgMjM6NDY6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL3dlYl9hcHBfY29tbWFu ZF9zY2hlZHVsZXIuaAkyMDI0LTA1LTE3IDEyOjMzOjU4LjczODY1MTAyOCArMDIwMAotQEAgLTM3 Myw3ICszNzMsNyBAQCBjbGFzcyBXZWJBcHBDb21tYW5kU2NoZWR1bGVyIHsKLSAgIC8vIGNvbW1h bmQgc3lzdGVtLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlPgotICAgdm9pZCBTY2hl ZHVsZUNhbGxiYWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcGVyYXRpb25fbmFtZSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRp b24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNj cmlwdGlvbiBsb2NrX2Rlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxi YWNrQ29tbWFuZDxMb2NrVHlwZSwgdm9pZD4gY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAg ICAgICAgYmFzZTo6T25jZUNsb3N1cmUgb25fY29tcGxldGUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgYmFzZTo6TG9jYXRpb24mIGxvY2F0aW9uID0gRlJPTV9IRVJFKSB7Ci1AQCAt MzkxLDcgKzM5MSw3IEBAIGNsYXNzIFdlYkFwcENvbW1hbmRTY2hlZHVsZXIgewotICAgICAgICAg ICAgIHR5cGVuYW1lIENhbGxiYWNrUmV0dXJuVmFsdWUgPSBzdGQ6OmRlY2F5X3Q8Q29tcGxldGlv bkNhbGxiYWNrQXJnPj4KLSAgIHZvaWQgU2NoZWR1bGVDYWxsYmFja1dpdGhSZXN1bHQoCi0gICAg ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9wZXJhdGlvbl9uYW1lLAotLSAgICAgIExvY2tUeXBlOjpM b2NrRGVzY3JpcHRpb24gbG9ja19kZXNjcmlwdGlvbiwKLSsgICAgICB0eXBlbmFtZSBMb2NrVHlw ZTo6TG9ja0Rlc2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCi0gICAgICAgQ2FsbGJhY2tDb21t YW5kPExvY2tUeXBlLCBDYWxsYmFja1JldHVyblZhbHVlPiBjYWxsYmFjaywKLSAgICAgICBiYXNl OjpPbmNlQ2FsbGJhY2s8dm9pZChDb21wbGV0aW9uQ2FsbGJhY2tBcmcpPiBvbl9jb21wbGV0ZSwK LSAgICAgICBDYWxsYmFja1JldHVyblZhbHVlIGFyZ19mb3Jfc2h1dGRvd24sCi1kaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUv bW9kZWxfZXhlY3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGlsLmgudHlwZW5hbWUgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4 ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2Rl bF9leGVjdXRpb25fdXRpbC5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6MTMuMDAwMDAwMDAw ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlv bl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCTIwMjQt MDUtMTcgMTI6MzM6NTguNzM4NjUxMDI4ICswMjAwCi1AQCAtMjYsNyArMjYsNyBAQCB2b2lkIFNl dEV4ZWN1dGlvblJlcXVlc3RUZW1wbGF0ZSgKLSAKLSAgIC8vIFJlcXVlc3QgaXMgc2V0IGJ5IHRo ZSBmZWF0dXJlIGFuZCBzaG91bGQgYWx3YXlzIGJlIHR5cGVkLgotICAgYXV0byB0eXBlZF9yZXF1 ZXN0ID0KLS0gICAgICBzdGF0aWNfY2FzdDxjb25zdCBGZWF0dXJlVHlwZTo6UmVxdWVzdCY+KHJl cXVlc3RfbWV0YWRhdGEpOwotKyAgICAgIHN0YXRpY19jYXN0PGNvbnN0IHR5cGVuYW1lIEZlYXR1 cmVUeXBlOjpSZXF1ZXN0Jj4ocmVxdWVzdF9tZXRhZGF0YSk7Ci0gICAqKGxvZ2dpbmdfZGF0YS0+ bXV0YWJsZV9yZXF1ZXN0X2RhdGEoKSkgPSB0eXBlZF9yZXF1ZXN0OwotIH0KLSAKLWRpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29y ZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgudHlwZW5hbWUgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVs X3F1YWxpdHkvbW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21v ZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0NjoxMy4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1p emF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5o CTIwMjQtMDUtMTcgMTI6MzM6NTguNzM4NjUxMDI4ICswMjAwCi1AQCAtMzMsNyArMzMsNyBAQCBj bGFzcyBNb2RlbFF1YWxpdHlMb2dFbnRyeSB7Ci0gICB9Ci0gCi0gICB0ZW1wbGF0ZSA8dHlwZW5h bWUgRmVhdHVyZVR5cGU+Ci0tICBGZWF0dXJlVHlwZTo6UXVhbGl0eSogcXVhbGl0eV9kYXRhKCkg ewotKyAgdHlwZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkqIHF1YWxpdHlfZGF0YSgpIHsKLSAg ICAgcmV0dXJuIEZlYXR1cmVUeXBlOjpHZXRMb2dnaW5nRGF0YSgqbG9nX2FpX2RhdGFfcmVxdWVz dF8pCi0gICAgICAgICAtPm11dGFibGVfcXVhbGl0eV9kYXRhKCk7Ci0gICB9Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUv bW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X3V0aWwuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0 eS9tb2RlbF9xdWFsaXR5X3V0aWwuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9u ZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlf dXRpbC5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6MTMuMDAwMDAwMDAwICswMjAwCi0rKysg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3Jl L21vZGVsX3F1YWxpdHkvbW9kZWxfcXVhbGl0eV91dGlsLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43 Mzk2NTEwNDkgKzAyMDAKLUBAIC0yMCw3ICsyMCw3IEBAIHN0ZDo6b3B0aW9uYWw8VXNlclZpc2li bGVGZWF0dXJlS2V5PiBHZXQKLSAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgcXVhbGl0eV9k YXRhIGZyb20gYGxvZ19haV9kYXRhX3JlcXVlc3RgIGZvcgotIC8vIGRpZmZlcmVudCBmZWF0dXJl cy4KLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmVhdHVyZVR5cGU+Ci0tRmVhdHVyZVR5cGU6OlF1YWxp dHkqIEdldE1vZGVsUXVhbGl0eURhdGEoCi0rdHlwZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkq IEdldE1vZGVsUXVhbGl0eURhdGEoCi0gICAgIHByb3RvOjpMb2dBaURhdGFSZXF1ZXN0KiBsb2df YWlfZGF0YV9yZXF1ZXN0KSB7Ci0gICByZXR1cm4gRmVhdHVyZVR5cGU6OkdldExvZ2dpbmdEYXRh KCpsb2dfYWlfZGF0YV9yZXF1ZXN0KQotICAgICAgIC0+bXV0YWJsZV9xdWFsaXR5X2RhdGEoKTsK LWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vcHRpbWl6YXRpb25f Z3VpZGUvY29yZS90ZmxpdGVfbW9kZWxfZXhlY3V0b3IuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVs X2V4ZWN1dG9yLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvb3B0aW1p emF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgudHlwZW5hbWUJMjAyNC0w NS0xNSAyMzo0NjoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9y LmgJMjAyNC0wNS0xNyAxMjozMzo1OC43Mzk2NTEwNDkgKzAyMDAKLUBAIC0yNDIsNyArMjQyLDcg QEAgY2xhc3MgVEZMaXRlTW9kZWxFeGVjdXRvciA6IHB1YmxpYyBNb2RlbAotICAgdm9pZCBTZW5k Rm9yQmF0Y2hFeGVjdXRpb24oCi0gICAgICAgQmF0Y2hFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFj a19vbl9jb21wbGV0ZSwKLSAgICAgICBiYXNlOjpUaW1lVGlja3Mgc3RhcnRfdGltZSwKLS0gICAg ICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0 b3IgaW5wdXRzKQotKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5w dXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpCi0gICAgICAgb3ZlcnJpZGUgewot ICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2Vx dWVuY2UoKSk7Ci0gICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2Vf Y2hlY2tlcl8pOwotQEAgLTI2NCw3ICsyNjQsNyBAQCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9y IDogcHVibGljIE1vZGVsCi0gICAvLyBTdGFydHMgdGhlIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBv ZiB0aGUgbW9kZWwuIFJldHVybnMgbW9kZWwgb3V0cHV0cy4KLSAgIC8vIE1vZGVsIG5lZWRzIHRv IGJlIGxvYWRlZC4gU3luY2hyb25vdXMgY2FsbHMgZG8gbm90IGxvYWQgb3IgdW5sb2FkIG1vZGVs LgotICAgc3RkOjp2ZWN0b3I8c3RkOjpvcHRpb25hbDxPdXRwdXRUeXBlPj4gU2VuZEZvckJhdGNo RXhlY3V0aW9uU3luYygKLS0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlw ZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQotKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhl Y3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMp Ci0gICAgICAgb3ZlcnJpZGUgewotICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+ UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7Ci0gICAgIERDSEVDS19DQUxMRURfT05fVkFM SURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotQEAgLTQyMiw3ICs0MjIsNyBAQCBjbGFz cyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVsCi0gICAvLyBleGVjdXRlcyBpdCBv biB0aGUgbW9kZWwgZXhlY3V0aW9uIHRocmVhZC4KLSAgIHZvaWQgTG9hZE1vZGVsRmlsZUFuZEJh dGNoRXhlY3V0ZSgKLSAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29uX2Nv bXBsZXRlLAotLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29u c3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpIHsKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9y PE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKSB7Ci0g ICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1 ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9j aGVja2VyXyk7Ci0gCi1AQCAtNDM5LDcgKzQzOSw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0 b3IgOiBwdWJsaWMgTW9kZWwKLSAKLSAgIC8vIEJhdGNoIGV4ZWN1dGVzIHRoZSBsb2FkZWQgbW9k ZWwgZm9yIGlucHV0cy4KLSAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVkTW9kZWwoCi0tICAgICAg TW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9y IGlucHV0cywKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0 VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAotICAgICAgIHN0ZDo6dmVjdG9yPHN0 ZDo6b3B0aW9uYWw8T3V0cHV0VHlwZT4+KiBvdXRwdXRzKSB7Ci0gICAgIERDSEVDSyhleGVjdXRp b25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgpKTsKLSAgICAgRENI RUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7Ci1AQCAtNDk5 LDcgKzQ5OSw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKLSAg IC8vIFVubG9hZHMgdGhlIG1vZGVsIGlmIG5lZWRlZC4KLSAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9h ZGVkTW9kZWxBbmRSdW5DYWxsYmFjaygKLSAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNh bGxiYWNrX29uX2NvbXBsZXRlLAotLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5w dXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMsCi0rICAgICAgdHlwZW5hbWUgTW9k ZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlu cHV0cywKLSAgICAgICBFeGVjdXRpb25TdGF0dXMgZXhlY3V0aW9uX3N0YXR1cykgewotICAgICBE Q0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2Uo KSk7Ci0gICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tl cl8pOwotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3N1cGVydmlz ZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oLnR5cGVuYW1lIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3Rv X2ZldGNoZXIuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9zdXBlcnZp c2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaC50eXBlbmFtZQkyMDI0LTA1LTE1 IDIzOjQ2OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaAkyMDI0 LTA1LTE3IDEyOjMzOjU4LjczOTY1MTA0OSArMDIwMAotQEAgLTQ1OCw3ICs0NTgsNyBAQCBjbGFz cyBSZXRyeWluZ0ZldGNoZXJJbXBsIGZpbmFsIDogcHVibGljCi0gICBSZXRyeWluZ0ZldGNoZXJJ bXBsKGNvbnN0IFJldHJ5aW5nRmV0Y2hlckltcGwmKSA9IGRlbGV0ZTsKLSAgIFJldHJ5aW5nRmV0 Y2hlckltcGwmIG9wZXJhdG9yPShjb25zdCBSZXRyeWluZ0ZldGNoZXJJbXBsJikgPSBkZWxldGU7 Ci0gCi0tICB2b2lkIFN0YXJ0KFByb3RvRmV0Y2hlcjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxi YWNrKSBvdmVycmlkZSB7Ci0rICB2b2lkIFN0YXJ0KHR5cGVuYW1lIFByb3RvRmV0Y2hlcjxSZXNw b25zZT46OkNhbGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7Ci0gICAgIGNhbGxiYWNrXyA9IHN0 ZDo6bW92ZShjYWxsYmFjayk7Ci0gICAgIFJldHJ5KCk7Ci0gICB9Ci1AQCAtNTA0LDcgKzUwNCw3 IEBAIGNsYXNzIFJldHJ5aW5nRmV0Y2hlckltcGwgZmluYWwgOiBwdWJsaWMKLSAgIH0KLSAKLSAg IC8vIENsaWVudCBjYWxsYmFjay4KLS0gIFR5cGVkUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2Fs bGJhY2sgY2FsbGJhY2tfOwotKyAgdHlwZW5hbWUgVHlwZWRQcm90b0ZldGNoZXI8UmVzcG9uc2U+ OjpDYWxsYmFjayBjYWxsYmFja187Ci0gCi0gICAvLyBSZXRyeSBjb250cm9scy4KLSAgIGJhc2U6 Ok9uZVNob3RUaW1lciB0aW1lcl87Ci1AQCAtNTI1LDcgKzUyNSw3IEBAIGNsYXNzIFBhcmFsbGVs RmV0Y2hNYW5hZ2VyIHsKLSAgIC8vIERlZmVycmVkIGZldGNoZXIgaXMgcmVxdWlyZWQgYmVjYXVz ZSBpdCBzaG91bGQgYmUgc3RhcnRlZCBhZnRlciBpdCBpcwotICAgLy8gc3RvcmVkIGludGVybmFs bHkuCi0gICB1c2luZyBGZXRjaGVyID0gUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjsKLS0gIHVzaW5n IEtleVR5cGUgPSBiYXNlOjpJRE1hcDxzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hlcj4+OjpLZXlUeXBl OwotKyAgdXNpbmcgS2V5VHlwZSA9IHR5cGVuYW1lIGJhc2U6OklETWFwPHN0ZDo6dW5pcXVlX3B0 cjxGZXRjaGVyPj46OktleVR5cGU7Ci0gCi0gIHB1YmxpYzoKLSAgIC8vIFByb3ZpZGVzIGZyZXNo IGluc3RhbmNlcyBvZiBhIGRlZmVycmVkIGZldGNoZXIgZm9yIGVhY2ggZmV0Y2guCi1AQCAtNTQx LDcgKzU0MSw3IEBAIGNsYXNzIFBhcmFsbGVsRmV0Y2hNYW5hZ2VyIHsKLSAKLSAgIC8vIFN0YXJ0 cyB0aGUgZmV0Y2guIFVuZGVybHlpbmcgZmV0Y2hlciBpcyBzdG9yZWQgaW50ZXJuYWxseSwgYW5k IHdpbGwgYmUKLSAgIC8vIGNsZWFuZWQgdXAgYWZ0ZXIgZmluaXNoIG9yIHdoZW4gdGhpcyBtYW5h Z2VyIGlzIGRlc3Ryb3llZC4KLS0gIHZvaWQgRmV0Y2goY29uc3QgUmVxdWVzdCYgcmVxdWVzdCwg RmV0Y2hlcjo6Q2FsbGJhY2sgY2FsbGJhY2spIHsKLSsgIHZvaWQgRmV0Y2goY29uc3QgUmVxdWVz dCYgcmVxdWVzdCwgdHlwZW5hbWUgRmV0Y2hlcjo6Q2FsbGJhY2sgY2FsbGJhY2spIHsKLSAgICAg Q0hFQ0soY2FsbGJhY2spIDw8ICJVc2UgYmFzZTo6RG9Ob3RoaW5nKCkgaW5zdGVhZCBvZiBlbXB0 eSBjYWxsYmFjay4iOwotICAgICBLZXlUeXBlIGtleSA9IHJlcXVlc3RzX2luX2ZsaWdodF8uQWRk KE1ha2VGZXRjaGVyKHJlcXVlc3QpKTsKLSAgICAgcmVxdWVzdHNfaW5fZmxpZ2h0Xy5Mb29rdXAo a2V5KS0+U3RhcnQoCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGlj L2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMuaAotLS0tIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0cy5oLnR5 cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6MjkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgJMjAy NC0wNS0xNyAxMjozMzo1OC43Mzk2NTEwNDkgKzAyMDAKLUBAIC05MCw3ICs5MCw3IEBAIHRlbXBs YXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci0gICAgIHsgY1tpXSB9IC0+IHN0ZDo6c2FtZV9hczx0 eXBlbmFtZSBDb250YWluZXI6OnJlZmVyZW5jZT47Ci0gICB9Ci0gc3RydWN0IEFycmF5VHJhaXRz PENvbnRhaW5lcj4gewotLSAgdXNpbmcgRWxlbWVudCA9IENvbnRhaW5lcjo6dmFsdWVfdHlwZTsK LSsgIHVzaW5nIEVsZW1lbnQgPSB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU7Ci0gCi0g ICAvLyB2ZWN0b3ItbGlrZSBjb250YWluZXJzIGhhdmUgbm8gYnVpbHQtaW4gbnVsbC4KLSAgIHN0 YXRpYyBib29sIElzTnVsbChjb25zdCBDb250YWluZXImIGMpIHsgcmV0dXJuIGZhbHNlOyB9Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90 eXBlX2NvbnZlcnRlci5oLnR5cGVuYW1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9wdWJs aWMvY3BwL2JpbmRpbmdzL3R5cGVfY29udmVydGVyLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBlX2NvbnZlcnRlci5oLnR5cGVuYW1lCTIw MjQtMDUtMTUgMjM6NDY6MzAuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIuaAkyMDI0LTA1LTE3 IDEyOjMzOjU4Ljc0MDY1MTA3MCArMDIwMAotQEAgLTEyNyw3ICsxMjcsNyBAQCB1c2luZyBWZWNW YWx1ZVR5cGUgPSB0eXBlbmFtZSBWZWM6OnZhbHVlCi0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFZl Yz4KLSB1c2luZyBWZWNQdHJMaWtlVW5kZXJseWluZ1ZhbHVlVHlwZSA9Ci0tICAgIHN0ZDo6cG9p bnRlcl90cmFpdHM8VmVjVmFsdWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7Ci0rICAgIHR5cGVu YW1lIHN0ZDo6cG9pbnRlcl90cmFpdHM8VmVjVmFsdWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7 Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5 bmNfaXRlcmFibGUuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFibGUuaAotLS0tIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3Mv Y29yZS92OC9hc3luY19pdGVyYWJsZS5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6NDAuMDAw MDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgJMjAyNC0wNS0xNyAx MjozMzo1OC43NDA2NTEwNzAgKzAyMDAKLUBAIC0yNDUsNyArMjQ1LDcgQEAgY2xhc3MgUGFpckFz eW5jSXRlcmFibGUgewotICBwcml2YXRlOgotICAgdmlydHVhbCBJdGVyYXRpb25Tb3VyY2UqIENy ZWF0ZUl0ZXJhdGlvblNvdXJjZSgKLSAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0X3N0YXRlLAot LSAgICAgIEl0ZXJhdGlvblNvdXJjZTo6S2luZCBraW5kLAotKyAgICAgIHR5cGVuYW1lIEl0ZXJh dGlvblNvdXJjZTo6S2luZCBraW5kLAotICAgICAgIEluaXRBcmdzLi4uIGFyZ3MsCi0gICAgICAg RXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgPSAwOwotIH07Ci1AQCAtMjkxLDcgKzI5 MSw3IEBAIGNsYXNzIFZhbHVlQXN5bmNJdGVyYWJsZSB7Ci0gIHByaXZhdGU6Ci0gICB2aXJ0dWFs IEl0ZXJhdGlvblNvdXJjZSogQ3JlYXRlSXRlcmF0aW9uU291cmNlKAotICAgICAgIFNjcmlwdFN0 YXRlKiBzY3JpcHRfc3RhdGUsCi0tICAgICAgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCi0r ICAgICAgdHlwZW5hbWUgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCi0gICAgICAgSW5pdEFy Z3MuLi4gYXJncywKLSAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSA9IDA7 Ci0gfTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oLnR5cGVu YW1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmlu ZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oCi0tLS0gY2hyb21pdW0tMTI1 LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3Nj cmlwdF9wcm9taXNlX3Byb3BlcnR5LmgudHlwZW5hbWUJMjAyNC0wNS0xNSAyMzo0Njo0MC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcHJvcGVydHkuaAkyMDI0 LTA1LTE3IDEyOjMzOjU4Ljc0MDY1MTA3MCArMDIwMAotQEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFz cyBTY3JpcHRQcm9taXNlUHJvcGVydHkgZmluYWwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot ICAgICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBiaW5kaW5nczo6RW51bWVyYXRpb25C YXNlPgotICAgc3RhdGljIFQgRGVmYXVsdFByb21pc2VSZXN1bHRWYWx1ZSgpIHsKLS0gICAgcmV0 dXJuIFQoc3RhdGljX2Nhc3Q8VDo6RW51bT4oMCkpOwotKyAgICByZXR1cm4gVChzdGF0aWNfY2Fz dDx0eXBlbmFtZSBUOjpFbnVtPigwKSk7Ci0gICB9Ci0gCi0gICBTdGF0ZSBzdGF0ZV8gPSBrUGVu ZGluZzsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvY29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0aC5j Yy50eXBlbmFtZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MKLS0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv aHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MudHlwZW5hbWUJMjAy NC0wNS0xNSAyMzo0Njo0MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1 bWVudF9wYXJzZXJfZmFzdHBhdGguY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43NDE2NTEwOTAgKzAy MDAKLUBAIC0yMTAsNyArMjEwLDcgQEAgY2xhc3MgSFRNTEZhc3RQYXRoUGFyc2VyIHsKLSAgIHVz aW5nIFNwYW4gPSBiYXNlOjpzcGFuPGNvbnN0IENoYXI+OwotICAgdXNpbmcgVVNwYW4gPSBiYXNl OjpzcGFuPGNvbnN0IFVDaGFyPjsKLSAgIC8vIDMyIG1hdGNoZXMgdGhhdCB1c2VkIGJ5IEhUTUxU b2tlbjo6QXR0cmlidXRlLgotLSAgdHlwZWRlZiBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2Ft ZV92PENoYXIsIFVDaGFyPiwKLSsgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxz dGQ6OmlzX3NhbWVfdjxDaGFyLCBVQ2hhcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg VUNoYXJMaXRlcmFsQnVmZmVyPDMyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ2hh ckxpdGVyYWxCdWZmZXI8MzI+Pjo6dHlwZSBMaXRlcmFsQnVmZmVyVHlwZTsKLSAgIHN0YXRpY19h c3NlcnQoc3RkOjppc19zYW1lX3Y8Q2hhciwgVUNoYXI+IHx8IHN0ZDo6aXNfc2FtZV92PENoYXIs IExDaGFyPik7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXMuaC50eXBlbmFt ZSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv cGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXMuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9vYmplY3RfcGFpbnRfcHJv cGVydGllcy5oLnR5cGVuYW1lCTIwMjQtMDUtMTUgMjM6NDY6NDEuMDAwMDAwMDAwICswMjAwCi0r KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3Jl L3BhaW50L29iamVjdF9wYWludF9wcm9wZXJ0aWVzLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43NDE2 NTEwOTAgKzAyMDAKLUBAIC00NDUsOCArNDQ1LDggQEAgY2xhc3MgQ09SRV9FWFBPUlQgT2JqZWN0 UGFpbnRQcm9wZXJ0aWVzCi0gICBQYWludFByb3BlcnR5Q2hhbmdlVHlwZSBVcGRhdGUoCi0gICAg ICAgTm9kZUlkIG5vZGVfaWQsCi0gICAgICAgY29uc3QgUGFyZW50VHlwZSYgcGFyZW50LAotLSAg ICAgIE5vZGVUeXBlOjpTdGF0ZSYmIHN0YXRlLAotLSAgICAgIGNvbnN0IE5vZGVUeXBlOjpBbmlt YXRpb25TdGF0ZSYgYW5pbWF0aW9uX3N0YXRlID0KLSsgICAgICB0eXBlbmFtZSBOb2RlVHlwZTo6 U3RhdGUmJiBzdGF0ZSwKLSsgICAgICBjb25zdCB0eXBlbmFtZSBOb2RlVHlwZTo6QW5pbWF0aW9u U3RhdGUmIGFuaW1hdGlvbl9zdGF0ZSA9Ci0gICAgICAgICAgIE5vZGVUeXBlOjpBbmltYXRpb25T dGF0ZSgpKSB7Ci0gICAgIC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5ldyBu b2RlLgotICAgICBpZiAoIW5vZGVzXy5IYXNGaWVsZChub2RlX2lkKSkgewotZGlmZiAtdXAgY2hy b21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93 dGYvaGFzaF90YWJsZS5oLnR5cGVuYW1lIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaAotLS0tIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hh c2hfdGFibGUuaC50eXBlbmFtZQkyMDI0LTA1LTE1IDIzOjQ2OjQzLjAwMDAwMDAwMCArMDIwMAot KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vd3RmL2hhc2hfdGFibGUuaAkyMDI0LTA1LTE3IDEyOjMzOjU4Ljc0MjY1MTExMSArMDIw MAotQEAgLTIwMTMsNyArMjAxMyw3IEBAIHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh cHRlciB7Ci0gICBzdGF0aWNfYXNzZXJ0KCFJc1RyYWNlYWJsZTx0eXBlbmFtZSBUcmFpdHM6OlRy YWl0VHlwZT46OnZhbHVlKTsKLSAKLSAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpi aWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKLS0gIHVzaW5nIHZhbHVlX3R5cGUgPSBIYXNoVGFi bGVUeXBlOjpWYWx1ZVR5cGU7Ci0rICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgSGFzaFRh YmxlVHlwZTo6VmFsdWVUeXBlOwotICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90 OwotICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOwotICAgdXNpbmcgcmVmZXJlbmNlID0g dmFsdWVfdHlwZSY7Ci1AQCAtMjA2NSw3ICsyMDY1LDcgQEAgc3RydWN0IEhhc2hUYWJsZUNvbnN0 SXRlcmF0b3JBZGFwdGVyPAotIAotICBwdWJsaWM6Ci0gICB1c2luZyBpdGVyYXRvcl9jYXRlZ29y eSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7Ci0tICB1c2luZyB2YWx1ZV90eXBl ID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVu YW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9 IHB0cmRpZmZfdDsKLSAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKLSAgIHVzaW5nIHJl ZmVyZW5jZSA9IHZhbHVlX3R5cGUmOwotQEAgLTIxMTksNyArMjExOSw3IEBAIHN0cnVjdCBIYXNo VGFibGVJdGVyYXRvckFkYXB0ZXIgewotICAgc3RhdGljX2Fzc2VydCghSXNUcmFjZWFibGU8dHlw ZW5hbWUgVHJhaXRzOjpUcmFpdFR5cGU+Ojp2YWx1ZSk7Ci0gCi0gICB1c2luZyBpdGVyYXRvcl9j YXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7Ci0tICB1c2luZyB2YWx1 ZV90eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotKyAgdXNpbmcgdmFsdWVfdHlwZSA9 IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSAgIHVzaW5nIGRpZmZlcmVuY2Vf dHlwZSA9IHB0cmRpZmZfdDsKLSAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKLSAgIHVz aW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOwotQEAgLTIxNjcsNyArMjE2Nyw3IEBAIHN0cnVj dCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8Ci0gCi0gIHB1YmxpYzoKLSAgIHVzaW5nIGl0ZXJh dG9yX2NhdGVnb3J5ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKLS0gIHVzaW5n IHZhbHVlX3R5cGUgPSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7Ci0rICB1c2luZyB2YWx1ZV90 eXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotICAgdXNpbmcgZGlmZmVy ZW5jZV90eXBlID0gcHRyZGlmZl90OwotICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOwot ICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0t MTI2LWVsNy1jb2xvcm1hcC5wYXRjaCBiL2Nocm9taXVtLTEyNi1lbDctY29sb3JtYXAucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMDAwMmIuLjAwMDAwMDAKLS0tIGEvY2hy b21pdW0tMTI2LWVsNy1jb2xvcm1hcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4MSArMCww IEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2FzaC9zdHlsZS9hc2hfY29sb3Jf bWl4ZXJfdW5pdHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYXNoL3N0eWxlL2Fz aF9jb2xvcl9taXhlcl91bml0dGVzdC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYXNo L3N0eWxlL2FzaF9jb2xvcl9taXhlcl91bml0dGVzdC5jYy5tZWUJMjAyNC0wNS0yOSAxODowMDo0 NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2FzaC9zdHlsZS9h c2hfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NDk1Njg4NTQg KzAyMDAKLUBAIC0zNyw2ICszNyw5IEBAIHZvaWQgSW5pdGlhbGl6ZUNvbG9yUHJvdmlkZXIoY29u c3QgdWk6OkMKLSAgIC8vIFJvdWdobHkgbWltaWNzIHRoZSBDb2xvck1peGVyIGNvbmZpZ3VyYXRp b24gZm9yIEFzaC4KLSAgIGFzaDo6QWRkQ3Jvc1N0eWxlc0NvbG9yTWl4ZXIoJmNvbG9yX3Byb3Zp ZGVyLCBrZXkpOwotICAgYXNoOjpBZGRBc2hDb2xvck1peGVyKCZjb2xvcl9wcm92aWRlciwga2V5 KTsKLSsKLSsgIC8vIFBvcHVsYXRlcyB0aGUgY29sb3IgbWFwIHdpdGggY29tcHV0ZWQgY29sb3Ig dmFsdWVzLgotKyAgY29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwotIH0KLSAKLSAv LyBJbml0aWFsaXplcyB0aGUgYGNvbG9yX3Byb3ZpZGVyYCB3aXRoIGBzZWVkX2NvbG9yYCBhbmQg dGhlIHJlbGV2YW50Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93 c2VyL2Nocm9tZV9jb250ZW50X2Jyb3dzZXJfY2xpZW50X2Jyb3dzZXJ0ZXN0LmNjLm1lZSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2Nocm9tZV9jb250ZW50X2Jyb3dzZXJf Y2xpZW50X2Jyb3dzZXJ0ZXN0LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci9jaHJvbWVfY29udGVudF9icm93c2VyX2NsaWVudF9icm93c2VydGVzdC5jYy5tZWUJ MjAyNC0wNS0yOSAxODowMDo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2Nocm9tZS9icm93c2VyL2Nocm9tZV9jb250ZW50X2Jyb3dzZXJfY2xpZW50X2Jyb3dz ZXJ0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTUwNTY4ODczICswMjAwCi1AQCAtNjAyLDYg KzYwMiw3IEBAIGNsYXNzIFByZWZlcnNDb2xvclNjaGVtZVRlc3QKLSAgICAgZXhwbGljaXQgTW9j a0NvbG9yUHJvdmlkZXJTb3VyY2UoYm9vbCBpc19kYXJrKSB7Ci0gICAgICAga2V5Xy5jb2xvcl9t b2RlID0gaXNfZGFyayA/IHVpOjpDb2xvclByb3ZpZGVyS2V5OjpDb2xvck1vZGU6OmtEYXJrCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVpOjpDb2xvclByb3ZpZGVyS2V5OjpD b2xvck1vZGU6OmtMaWdodDsKLSsgICAgICBwcm92aWRlcl8uR2VuZXJhdGVDb2xvck1hcCgpOwot ICAgICB9Ci0gICAgIE1vY2tDb2xvclByb3ZpZGVyU291cmNlKGNvbnN0IE1vY2tDb2xvclByb3Zp ZGVyU291cmNlJikgPSBkZWxldGU7Ci0gICAgIE1vY2tDb2xvclByb3ZpZGVyU291cmNlJiBvcGVy YXRvcj0oY29uc3QgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UmKSA9IGRlbGV0ZTsKLWRpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdGhlbWVzL2Jyb3dzZXJfdGhl bWVfcGFja191bml0dGVzdC5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci90aGVtZXMvYnJvd3Nlcl90aGVtZV9wYWNrX3VuaXR0ZXN0LmNjCi0tLS0gY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci90aGVtZXMvYnJvd3Nlcl90aGVtZV9wYWNrX3Vu aXR0ZXN0LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAwOjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdGhlbWVzL2Jyb3dzZXJfdGhlbWVf cGFja191bml0dGVzdC5jYwkyMDI0LTA2LTAzIDE2OjIyOjEwLjU1MDU2ODg3MyArMDIwMAotQEAg LTc1MCw2ICs3NTAsNyBAQCBURVNUX0YoQnJvd3NlclRoZW1lUGFja1Rlc3QsIFRlc3RDcmVhdGVD Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib21uaWJveF9iYWNrZ3JvdW5kIjog WzEyMCwgMTQwLCAxNjBdIH0pIjsKLSAgIExvYWRDb2xvckpTT04oY29sb3JfanNvbik7Ci0gICB0 aGVtZV9wYWNrKCkuQWRkQ29sb3JNaXhlcnMoJnByb3ZpZGVyLCB1aTo6Q29sb3JQcm92aWRlcktl eSgpKTsKLSsgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKLSAgIEVYUEVDVF9FUShTa0Nv bG9yU2V0UkdCKDAsIDIwLCA0MCksIHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRvb2xiYXIpKTsK LSAgIEVYUEVDVF9FUShTa0NvbG9yU2V0UkdCKDYwLCA4MCwgMTAwKSwgcHJvdmlkZXIuR2V0Q29s b3Ioa0NvbG9yT21uaWJveFRleHQpKTsKLSAgIEVYUEVDVF9FUShTa0NvbG9yU2V0UkdCKDEyMCwg MTQwLCAxNjApLAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci91aS9jb2xvci9tYXRlcmlhbF9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2Mu bWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvY29sb3IvbWF0ZXJp YWxfbmV3X3RhYl9wYWdlX2NvbG9yX21peGVyX3VuaXR0ZXN0LmNjCi0tLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9tYXRlcmlhbF9uZXdfdGFiX3BhZ2Vf Y29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAw ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xv ci9tYXRlcmlhbF9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MJMjAyNC0wNi0w MyAxNjoyMjoxMC41NTE1Njg4OTEgKzAyMDAKLUBAIC0yNiw2ICsyNiw3IEBAIGNsYXNzIE1hdGVy aWFsTmV3VGFiUGFnZUNvbG9yTWl4ZXJUZXN0IDoKLSAgIHZvaWQgQWRkTWF0ZXJpYWxDb2xvck1p eGVycygpIHsKLSAgICAgQWRkQ29sb3JNaXhlcnMoJmNvbG9yX3Byb3ZpZGVyXywgY29sb3JfcHJv dmlkZXJfa2V5Xyk7Ci0gICAgIEFkZENocm9tZUNvbG9yTWl4ZXJzKCZjb2xvcl9wcm92aWRlcl8s IGNvbG9yX3Byb3ZpZGVyX2tleV8pOwotKyAgICBjb2xvcl9wcm92aWRlcl8uR2VuZXJhdGVDb2xv ck1hcCgpOwotICAgfQotIAotICBwcml2YXRlOgotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5p dHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvY29s b3IvbmV3X3RhYl9wYWdlX2NvbG9yX21peGVyX3VuaXR0ZXN0LmNjCi0tLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4 ZXJfdW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAwICswMjAwCi0r KysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9uZXdfdGFi X3BhZ2VfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTE1Njg4 OTEgKzAyMDAKLUBAIC0zMyw2ICszMyw3IEBAIFRFU1QoTmV3VGFiUGFnZUNvbG9yTWl4ZXIsIExp Z2h0QW5kRGFya1QKLSAgICAgaWYgKGNvbG9yX3V0aWxzOjpJc0RhcmsodG9vbGJhcl9jb2xvcikp Ci0gICAgICAga2V5LmNvbG9yX21vZGUgPSB1aTo6Q29sb3JQcm92aWRlcktleTo6Q29sb3JNb2Rl OjprRGFyazsKLSAgICAgQWRkTmV3VGFiUGFnZUNvbG9yTWl4ZXIoJnByb3ZpZGVyLCBrZXkpOwot KyAgICBwcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gCi0gICAgIEVYUEVDVF9FUShwcm92 aWRlci5HZXRDb2xvcihrQ29sb3JUb29sYmFyKSwgdG9vbGJhcl9jb2xvcik7Ci0gICAgIEVYUEVD VF9FUShwcm92aWRlci5HZXRDb2xvcihrQ29sb3JOZXdUYWJQYWdlQmFja2dyb3VuZCksIHRvb2xi YXJfY29sb3IpOwotQEAgLTUxLDYgKzUyLDcgQEAgVEVTVChOZXdUYWJQYWdlQ29sb3JNaXhlciwg Q3VzdG9tQ29sb3JDbwotICAga2V5LmN1c3RvbV90aGVtZSA9Ci0gICAgICAgYmFzZTo6V3JhcFJl ZkNvdW50ZWQobmV3IEN1c3RvbVRoZW1lU3VwcGxpZXIoVGhlbWVUeXBlOjprQXV0b2dlbmVyYXRl ZCkpOwotICAgQWRkTmV3VGFiUGFnZUNvbG9yTWl4ZXIoJnByb3ZpZGVyLCBrZXkpOwotKyAgcHJv dmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwotIAotICAgRVhQRUNUX0VRKHByb3ZpZGVyLkdldENv bG9yKGtDb2xvclRvb2xiYXIpLCBnZng6OmtHb29nbGVHcmVlbjMwMCk7Ci0gICBFWFBFQ1RfRVEo cHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yTmV3VGFiUGFnZUJhY2tncm91bmQpLAotQEAgLTcyLDYg Kzc0LDcgQEAgVEVTVChOZXdUYWJQYWdlQ29sb3JNaXhlciwgRGVmYXVsdENvbG9yQwotICAga2V5 LmN1c3RvbV90aGVtZSA9Ci0gICAgICAgYmFzZTo6V3JhcFJlZkNvdW50ZWQobmV3IEN1c3RvbVRo ZW1lU3VwcGxpZXIoVGhlbWVUeXBlOjprQXV0b2dlbmVyYXRlZCkpOwotICAgQWRkTmV3VGFiUGFn ZUNvbG9yTWl4ZXIoJnByb3ZpZGVyLCBrZXkpOwotKyAgcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1h cCgpOwotIAotICAgRVhQRUNUX0VRKHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRvb2xiYXIpLCBr U2FtcGxlVG9vbGJhckNvbG9yKTsKLSAgIEVYUEVDVF9FUShwcm92aWRlci5HZXRDb2xvcihrQ29s b3JOZXdUYWJQYWdlQmFja2dyb3VuZCksIGtTYW1wbGVUb29sYmFyQ29sb3IpOwotZGlmZiAtdXAg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci90b29scy9kdW1w X2NvbG9ycy5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9j b2xvci90b29scy9kdW1wX2NvbG9ycy5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hy b21lL2Jyb3dzZXIvdWkvY29sb3IvdG9vbHMvZHVtcF9jb2xvcnMuY2MubWVlCTIwMjQtMDUtMjkg MTg6MDA6NTguMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS9jb2xvci90b29scy9kdW1wX2NvbG9ycy5jYwkyMDI0LTA2LTAzIDE2OjIy OjEwLjU1MTU2ODg5MSArMDIwMAotQEAgLTU2LDYgKzU2LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNvbnN0IGNoYXIqIGFyZ3ZbXSkgewotICAgICB1aTo6QWRkQ29sb3JNaXhlcnMocHJvdmlkZXIs IGtleSk7Ci0gICAgIGNvbG9yOjpBZGRDb21wb25lbnRzQ29sb3JNaXhlcnMocHJvdmlkZXIsIGtl eSk7Ci0gICAgIEFkZENocm9tZUNvbG9yTWl4ZXJzKHByb3ZpZGVyLCBrZXkpOwotKyAgICBwcm92 aWRlci0+R2VuZXJhdGVDb2xvck1hcCgpOwotICAgfTsKLSAgIHVpOjpDb2xvclByb3ZpZGVyIGxp Z2h0X3Byb3ZpZGVyLCBkYXJrX3Byb3ZpZGVyLCBsaWdodF9oaWdoX2NvbnRyYXN0X3Byb3ZpZGVy LAotICAgICAgIGRhcmtfaGlnaF9jb250cmFzdF9wcm92aWRlcjsKLWRpZmYgLXVwIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbmV3X3RhYl9wYWdlL25ld190 YWJfcGFnZV9oYW5kbGVyX3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL3VpL3dlYnVpL25ld190YWJfcGFnZS9uZXdfdGFiX3BhZ2VfaGFuZGxlcl91 bml0dGVzdC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvbmV3X3RhYl9wYWdlL25ld190YWJfcGFnZV9oYW5kbGVyX3VuaXR0ZXN0LmNjLm1lZQky MDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbmV3X3RhYl9wYWdlL25ld190YWJfcGFnZV9o YW5kbGVyX3VuaXR0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTUyNTY4OTExICswMjAwCi1A QCAtMTE3LDcgKzExNyw3IEBAIGNsYXNzIE1vY2tMb2dvU2VydmljZSA6IHB1YmxpYyBzZWFyY2hf cHIKLSAKLSBjbGFzcyBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSA6IHB1YmxpYyB1aTo6Q29sb3JQ cm92aWRlclNvdXJjZSB7Ci0gIHB1YmxpYzoKLS0gIE1vY2tDb2xvclByb3ZpZGVyU291cmNlKCkg PSBkZWZhdWx0OwotKyAgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UoKSB7IGNvbG9yX3Byb3ZpZGVy Xy5HZW5lcmF0ZUNvbG9yTWFwKCk7IH0KLSAgIE1vY2tDb2xvclByb3ZpZGVyU291cmNlKGNvbnN0 IE1vY2tDb2xvclByb3ZpZGVyU291cmNlJikgPSBkZWxldGU7Ci0gICBNb2NrQ29sb3JQcm92aWRl clNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb2xvclByb3ZpZGVyU291cmNlJikgPSBkZWxl dGU7Ci0gICB+TW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci93ZWJfY29udGVu dHMvd2ViX2NvbnRlbnRzX2ltcGxfYnJvd3NlcnRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29udGVudC9icm93c2VyL3dlYl9jb250ZW50cy93ZWJfY29udGVudHNfaW1wbF9icm93 c2VydGVzdC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3dl Yl9jb250ZW50cy93ZWJfY29udGVudHNfaW1wbF9icm93c2VydGVzdC5jYy5tZWUJMjAyNC0wNS0y OSAxODowMToxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nv bnRlbnQvYnJvd3Nlci93ZWJfY29udGVudHMvd2ViX2NvbnRlbnRzX2ltcGxfYnJvd3NlcnRlc3Qu Y2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTM1Njg5MjkgKzAyMDAKLUBAIC02MzAwLDcgKzYzMDAs NyBAQCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKFdlYkNvbnRlbnRzSW1wbFN0Ci0gCi0gY2xhc3Mg TW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UgOiBwdWJsaWMgdWk6OkNvbG9yUHJvdmlkZXJTb3VyY2Ug ewotICBwdWJsaWM6Ci0tICBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSgpID0gZGVmYXVsdDsKLSsg IE1vY2tDb2xvclByb3ZpZGVyU291cmNlKCkgeyBwcm92aWRlcl8uR2VuZXJhdGVDb2xvck1hcCgp OyB9Ci0gICBNb2NrQ29sb3JQcm92aWRlclNvdXJjZShjb25zdCBNb2NrQ29sb3JQcm92aWRlclNv dXJjZSYpID0gZGVsZXRlOwotICAgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UmIG9wZXJhdG9yPShj b25zdCBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSYpID0gZGVsZXRlOwotICAgfk1vY2tDb2xvclBy b3ZpZGVyU291cmNlKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwotZGlmZiAtdXAgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvd2ViX2NvbnRlbnRzL3dlYl9jb250ZW50c19pbXBs X3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci93 ZWJfY29udGVudHMvd2ViX2NvbnRlbnRzX2ltcGxfdW5pdHRlc3QuY2MKLS0tLSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci93ZWJfY29udGVudHMvd2ViX2NvbnRlbnRzX2lt cGxfdW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDE6MTMuMDAwMDAwMDAwICswMjAwCi0r KysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvd2ViX2NvbnRlbnRzL3dl Yl9jb250ZW50c19pbXBsX3VuaXR0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU0NTY4OTQ5 ICswMjAwCi1AQCAtMzM3LDcgKzMzNyw3IEBAIGNsYXNzIE1vY2tQYWdlQnJvYWRjYXN0IDogcHVi bGljIFRlc3RQYWcKLSAKLSBjbGFzcyBUZXN0Q29sb3JQcm92aWRlclNvdXJjZSA6IHB1YmxpYyB1 aTo6Q29sb3JQcm92aWRlclNvdXJjZSB7Ci0gIHB1YmxpYzoKLS0gIFRlc3RDb2xvclByb3ZpZGVy U291cmNlKCkgPSBkZWZhdWx0OwotKyAgVGVzdENvbG9yUHJvdmlkZXJTb3VyY2UoKSB7IHByb3Zp ZGVyXy5HZW5lcmF0ZUNvbG9yTWFwKCk7IH0KLSAKLSAgIGNvbnN0IHVpOjpDb2xvclByb3ZpZGVy KiBHZXRDb2xvclByb3ZpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgICByZXR1cm4gJnByb3Zp ZGVyXzsKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9wdWJsaWMvdGVz dC9yZW5kZXJfdmlld190ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQv cHVibGljL3Rlc3QvcmVuZGVyX3ZpZXdfdGVzdC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29udGVudC9wdWJsaWMvdGVzdC9yZW5kZXJfdmlld190ZXN0LmNjLm1lZQkyMDI0LTA1LTI5 IDE4OjAxOjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29u dGVudC9wdWJsaWMvdGVzdC9yZW5kZXJfdmlld190ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAu NTU0NTY4OTQ5ICswMjAwCi1AQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIEZhaWxpbmdVUkxMb2Fk ZXJGYWN0b3J5IDogcHVibGljIG4KLSAKLSBjbGFzcyBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSA6 IHB1YmxpYyB1aTo6Q29sb3JQcm92aWRlclNvdXJjZSB7Ci0gIHB1YmxpYzoKLS0gIGV4cGxpY2l0 IE1vY2tDb2xvclByb3ZpZGVyU291cmNlKCkgPSBkZWZhdWx0OwotKyAgZXhwbGljaXQgTW9ja0Nv bG9yUHJvdmlkZXJTb3VyY2UoKSB7IHByb3ZpZGVyXy5HZW5lcmF0ZUNvbG9yTWFwKCk7IH0KLSAg IE1vY2tDb2xvclByb3ZpZGVyU291cmNlKGNvbnN0IE1vY2tDb2xvclByb3ZpZGVyU291cmNlJikg PSBkZWxldGU7Ci0gICBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0IE1v Y2tDb2xvclByb3ZpZGVyU291cmNlJikgPSBkZWxldGU7Ci0gICB+TW9ja0NvbG9yUHJvdmlkZXJT b3VyY2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9leHRlbnNpb25faG9zdC5jYy5tZWUgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9leHRlbnNpb25zL2Jyb3dzZXIvZXh0ZW5zaW9uX2hvc3QuY2MKLS0tLSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9leHRlbnNpb25faG9zdC5jYy5t ZWUJMjAyNC0wNS0yOSAxODowMToyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9leHRlbnNpb25faG9zdC5jYwkyMDI0LTA2LTAz IDE2OjIyOjEwLjU1NTU2ODk2NyArMDIwMAotQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIHsK LSAvLyB0aGUgVUktbGVzcyBleHRlbnNpb24gYmFja2dyb3VuZCBwYWdlLgotIGNsYXNzIE5vT3BD b2xvclByb3ZpZGVyU291cmNlIDogcHVibGljIHVpOjpDb2xvclByb3ZpZGVyU291cmNlIHsKLSAg cHVibGljOgotLSAgTm9PcENvbG9yUHJvdmlkZXJTb3VyY2UoKSA9IGRlZmF1bHQ7Ci0rICBOb09w Q29sb3JQcm92aWRlclNvdXJjZSgpIHsgY29sb3JfcHJvdmlkZXJfLkdlbmVyYXRlQ29sb3JNYXAo KTsgfQotICAgTm9PcENvbG9yUHJvdmlkZXJTb3VyY2UoY29uc3QgTm9PcENvbG9yUHJvdmlkZXJT b3VyY2UmKSA9IGRlbGV0ZTsKLSAgIE5vT3BDb2xvclByb3ZpZGVyU291cmNlJiBvcGVyYXRvcj0o Y29uc3QgTm9PcENvbG9yUHJvdmlkZXJTb3VyY2UmKSA9IGRlbGV0ZTsKLSAgIH5Ob09wQ29sb3JQ cm92aWRlclNvdXJjZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKLWRpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvbGF5b3V0 X3RoZW1lLmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2NvcmUvbGF5b3V0L2xheW91dF90aGVtZS5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvbGF5b3V0X3RoZW1l LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAxOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVt LTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvbGF5 b3V0X3RoZW1lLmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU1NTY4OTY3ICswMjAwCi1AQCAtNjc3 LDcgKzY3Nyw3IEBAIENvbG9yIExheW91dFRoZW1lOjpTeXN0ZW1Db2xvckZyb21Db2xvclAKLSAg ICAgQ1NTVmFsdWVJRCBjc3NfdmFsdWVfaWQsCi0gICAgIG1vam9tOjpibGluazo6Q29sb3JTY2hl bWUgY29sb3Jfc2NoZW1lLAotICAgICBjb25zdCB1aTo6Q29sb3JQcm92aWRlciogY29sb3JfcHJv dmlkZXIpIGNvbnN0IHsKLS0gIENIRUNLKGNvbG9yX3Byb3ZpZGVyLT5IYXNNaXhlcnMoKSk7Ci0r ICBDSEVDSyghY29sb3JfcHJvdmlkZXItPklzQ29sb3JNYXBFbXB0eSgpKTsKLSAgIFNrQ29sb3Ig c3lzdGVtX3RoZW1lX2NvbG9yOwotICAgc3dpdGNoIChjc3NfdmFsdWVfaWQpIHsKLSAgICAgY2Fz ZSBDU1NWYWx1ZUlEOjprQWN0aXZldGV4dDoKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvdWkvYmFzZS9tb2RlbHMvaW1hZ2VfbW9kZWxfdW5pdHRlc3QuY2MubWVlIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdWkvYmFzZS9tb2RlbHMvaW1hZ2VfbW9kZWxfdW5pdHRlc3QuY2MKLS0tLSBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2Jhc2UvbW9kZWxzL2ltYWdlX21vZGVsX3VuaXR0ZXN0 LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAyOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVt LTEyNi4wLjY0NzguMjYvdWkvYmFzZS9tb2RlbHMvaW1hZ2VfbW9kZWxfdW5pdHRlc3QuY2MJMjAy NC0wNi0wMyAxNjoyMjoxMC41NTU1Njg5NjcgKzAyMDAKLUBAIC0yMjQsNiArMjI0LDcgQEAgVEVT VChJbWFnZU1vZGVsVGVzdCwgU2hvdWxkUmFzdGVyaXplRW1wdAotIAotIFRFU1QoSW1hZ2VNb2Rl bFRlc3QsIFNob3VsZFJhc3Rlcml6ZVZlY3Rvckljb24pIHsKLSAgIHVpOjpDb2xvclByb3ZpZGVy IGNvbG9yX3Byb3ZpZGVyOwotKyAgY29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwot ICAgZ2Z4OjpJbWFnZVNraWEgaW1hZ2Vfc2tpYSA9Ci0gICAgICAgdWk6OkltYWdlTW9kZWw6OkZy b21WZWN0b3JJY29uKHZlY3Rvcl9pY29uczo6a1N5bmNJY29uKQotICAgICAgICAgICAuUmFzdGVy aXplKCZjb2xvcl9wcm92aWRlcik7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3Vp L2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2Nv bG9yL2NvbG9yX3Byb3ZpZGVyLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xv ci9jb2xvcl9wcm92aWRlci5jYy5tZWUJMjAyNC0wNi0wMyAxNjowMzoxNS41OTY0MzI3NjEgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmNj CTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU1NTY4OTY3ICswMjAwCi1AQCAtNCw3ICs0LDYgQEAKLSAK LSAjaW5jbHVkZSAidWkvY29sb3IvY29sb3JfcHJvdmlkZXIuaCIKLSAKLS0jaW5jbHVkZSA8Zm9y d2FyZF9saXN0PgotICNpbmNsdWRlIDxtYXA+Ci0gI2luY2x1ZGUgPHNldD4KLSAjaW5jbHVkZSA8 dXRpbGl0eT4KLUBAIC0xOCwxMDYgKzE3LDYgQEAKLSAKLSBuYW1lc3BhY2UgdWkgewotIAotLS8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0tLy8gQ29sb3JQcm92aWRlcjo6Q29sb3JQcm92aWRlcklu dGVybmFsOgotLQotLWNsYXNzIENvbG9yUHJvdmlkZXI6OkNvbG9yUHJvdmlkZXJJbnRlcm5hbCB7 Ci0tIHB1YmxpYzoKLS0gIHVzaW5nIE1peGVycyA9IHN0ZDo6Zm9yd2FyZF9saXN0PENvbG9yTWl4 ZXI+OwotLQotLSAgQ29sb3JQcm92aWRlckludGVybmFsKCkgPSBkZWZhdWx0OwotLSAgQ29sb3JQ cm92aWRlckludGVybmFsKGNvbnN0IENvbG9yUHJvdmlkZXJJbnRlcm5hbCYpID0gZGVsZXRlOwot LSAgQ29sb3JQcm92aWRlckludGVybmFsJiBvcGVyYXRvcj0oY29uc3QgQ29sb3JQcm92aWRlcklu dGVybmFsJikgPSBkZWxldGU7Ci0tICB+Q29sb3JQcm92aWRlckludGVybmFsKCkgPSBkZWZhdWx0 OwotLQotLSAgQ29sb3JNaXhlciYgQWRkTWl4ZXIoKSB7Ci0tICAgIGNvbG9yX21hcF8uY2xlYXIo KTsKLS0gICAgbWl4ZXJzXy5lbXBsYWNlX2FmdGVyKAotLSAgICAgICAgZmlyc3RfcG9zdHByb2Nl c3NpbmdfbWl4ZXJfLAotLSAgICAgICAgYmFzZTo6QmluZFJlcGVhdGluZyhbXShjb25zdCBDb2xv ck1peGVyKiBtaXhlcikgeyByZXR1cm4gbWl4ZXI7IH0sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdldExhc3ROb25Qb3N0cHJvY2Vzc2luZ01peGVyKCkpLAotLSAgICAgICAgYmFzZTo6 QmluZFJlcGVhdGluZygmQ29sb3JQcm92aWRlcjo6Q29sb3JQcm92aWRlckludGVybmFsOjoKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3ROb25Qb3N0cHJvY2Vzc2luZ01p eGVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKHRoaXMp KSk7Ci0tCi0tICAgIHJldHVybiAqc3RkOjpuZXh0KGZpcnN0X3Bvc3Rwcm9jZXNzaW5nX21peGVy XywgMSk7Ci0tICB9Ci0tCi0tICBDb2xvck1peGVyJiBBZGRQb3N0cHJvY2Vzc2luZ01peGVyKCkg ewotLSAgICBjb2xvcl9tYXBfLmNsZWFyKCk7Ci0tICAgIGlmIChmaXJzdF9wb3N0cHJvY2Vzc2lu Z19taXhlcl8gPT0gbWl4ZXJzXy5iZWZvcmVfYmVnaW4oKSkgewotLSAgICAgIC8vIFRoZSBmaXJz dCBwb3N0cHJvY2Vzc2luZyBtaXhlciBwb2ludHMgdG8gdGhlIGxhc3QgcmVndWxhciBtaXhlci4K LS0gICAgICBhdXRvIHByZXZpb3VzX21peGVyX2dldHRlciA9IGJhc2U6OkJpbmRSZXBlYXRpbmco Ci0tICAgICAgICAgICZDb2xvclByb3ZpZGVyOjpDb2xvclByb3ZpZGVySW50ZXJuYWw6OkdldExh c3ROb25Qb3N0cHJvY2Vzc2luZ01peGVyLAotLSAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKHRo aXMpKTsKLS0gICAgICBtaXhlcnNfLmVtcGxhY2VfZnJvbnQocHJldmlvdXNfbWl4ZXJfZ2V0dGVy LCBwcmV2aW91c19taXhlcl9nZXR0ZXIpOwotLSAgICAgIGZpcnN0X3Bvc3Rwcm9jZXNzaW5nX21p eGVyXyA9IG1peGVyc18uYmVnaW4oKTsKLS0gICAgfSBlbHNlIHsKLS0gICAgICAvLyBPdGhlciBw b3N0cHJvY2Vzc2luZyBtaXhlcnMgcG9pbnQgdG8gdGhlIG5leHQgcG9zdHByb2Nlc3NpbmcgbWl4 ZXIuCi0tICAgICAgYXV0byBwcmV2aW91c19taXhlcl9nZXR0ZXIgPQotLSAgICAgICAgICBiYXNl OjpCaW5kUmVwZWF0aW5nKFtdKGNvbnN0IENvbG9yTWl4ZXIqIG1peGVyKSB7IHJldHVybiBtaXhl cjsgfSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKCZt aXhlcnNfLmZyb250KCkpKTsKLS0gICAgICBtaXhlcnNfLmVtcGxhY2VfZnJvbnQocHJldmlvdXNf bWl4ZXJfZ2V0dGVyLCBwcmV2aW91c19taXhlcl9nZXR0ZXIpOwotLSAgICB9Ci0tICAgIHJldHVy biBtaXhlcnNfLmZyb250KCk7Ci0tICB9Ci0tCi0tICBTa0NvbG9yIEdldENvbG9yKENvbG9ySWQg aWQpIGNvbnN0IHsKLS0gICAgYXV0byBpID0gY29sb3JfbWFwXy5maW5kKGlkKTsKLS0gICAgaWYg KGkgPT0gY29sb3JfbWFwXy5lbmQoKSkgewotLSAgICAgIGlmIChtaXhlcnNfLmVtcHR5KCkpIHsK LS0gICAgICAgIERWTE9HKDIpIDw8ICJDb2xvclByb3ZpZGVyOjpHZXRDb2xvcjogTm8gbWl4ZXJz IGRlZmluZWQhIjsKLS0gICAgICAgIHJldHVybiBnZng6OmtQbGFjZWhvbGRlckNvbG9yOwotLSAg ICAgIH0KLS0gICAgICBEVkxPRygyKSA8PCAiQ29sb3JQcm92aWRlcjo6R2V0Q29sb3I6IENvbXB1 dGluZyBjb2xvciBmb3IgQ29sb3JJZDogIgotLSAgICAgICAgICAgICAgIDw8IENvbG9ySWROYW1l KGlkKTsKLS0gICAgICBjb25zdCBTa0NvbG9yIGNvbG9yID0gbWl4ZXJzXy5mcm9udCgpLkdldFJl c3VsdENvbG9yKGlkKTsKLS0gICAgICBpZiAoY29sb3IgPT0gZ2Z4OjprUGxhY2Vob2xkZXJDb2xv cikgewotLSAgICAgICAgcmV0dXJuIGdmeDo6a1BsYWNlaG9sZGVyQ29sb3I7Ci0tICAgICAgfQot LSAgICAgIGkgPSBjb2xvcl9tYXBfLmluc2VydCh7aWQsIGNvbG9yfSkuZmlyc3Q7Ci0tICAgIH0K LS0KLS0gICAgRFZMT0coMikgPDwgIkNvbG9yUHJvdmlkZXI6OkdldENvbG9yOiBDb2xvcklkOiAi IDw8IENvbG9ySWROYW1lKGlkKQotLSAgICAgICAgICAgICA8PCAiIFZhbHVlOiAiIDw8IFNrQ29s b3JOYW1lKGktPnNlY29uZCk7Ci0tICAgIHJldHVybiBpLT5zZWNvbmQ7Ci0tICB9Ci0tCi0tICBj b25zdCBDb2xvck1peGVyKiBHZXRMYXN0Tm9uUG9zdHByb2Nlc3NpbmdNaXhlcigpIGNvbnN0IHsK LS0gICAgY29uc3QgYXV0byBpdCA9IHN0ZDo6bmV4dChmaXJzdF9wb3N0cHJvY2Vzc2luZ19taXhl cl8sIDEpOwotLSAgICByZXR1cm4gKGl0ID09IG1peGVyc18uY2VuZCgpKSA/IG51bGxwdHIgOiAm KCppdCk7Ci0tICB9Ci0tCi0tICBib29sIEhhc01peGVycygpIGNvbnN0IHsgcmV0dXJuICFtaXhl cnNfLmVtcHR5KCk7IH0KLS0KLS0gIHZvaWQgU2V0Q29sb3JGb3JUZXN0aW5nKENvbG9ySWQgaWQs IFNrQ29sb3IgY29sb3IpIHsgY29sb3JfbWFwX1tpZF0gPSBjb2xvcjsgfQotLQotLSAgdm9pZCBH ZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpIHsKLS0gICAgZm9yIChjb25zdCBhdXRvJiBtaXhl ciA6IG1peGVyc18pIHsKLS0gICAgICBjb25zdCBhdXRvIG1peGVyX2NvbG9yX2lkcyA9IG1peGVy LkdldERlZmluZWRDb2xvcklkcygpOwotLSAgICAgIGZvciAoY29uc3QgYXV0byBjb2xvcl9pZCA6 IG1peGVyX2NvbG9yX2lkcykgewotLSAgICAgICAgR2V0Q29sb3IoY29sb3JfaWQpOwotLSAgICAg IH0KLS0gICAgfQotLSAgfQotLQotLSAgY29uc3QgQ29sb3JQcm92aWRlcjo6Q29sb3JNYXAmIGNv bG9yX21hcF9mb3JfdGVzdGluZygpIHsgcmV0dXJuIGNvbG9yX21hcF87IH0KLS0KLS0gcHJpdmF0 ZToKLS0gIC8vIFRoZSBlbnRpcmUgY29sb3IgcGlwZWxpbmUsIGluIHJldmVyc2Ugb3JkZXIgKHRo YXQgaXMsIHRoZSAibGFzdCIgbWl4ZXIgaXMKLS0gIC8vIGF0IHRoZSBmcm9udCkuCi0tICBNaXhl cnMgbWl4ZXJzXzsKLS0KLS0gIC8vIFRoZSBmaXJzdCBtaXhlciBpbiB0aGUgY2hhaW4gdGhhdCBp cyBhICJwb3N0cHJvY2Vzc2luZyIgbWl4ZXIuCi0tICBNaXhlcnM6Oml0ZXJhdG9yIGZpcnN0X3Bv c3Rwcm9jZXNzaW5nX21peGVyXyA9IG1peGVyc18uYmVmb3JlX2JlZ2luKCk7Ci0tCi0tICAvLyBB IGNhY2hlZCBtYXAgb2YgQ29sb3JJZCA9PiBTa0NvbG9yIG1hcHBpbmdzIGZvciB0aGlzIHByb3Zp ZGVyLgotLSAgbXV0YWJsZSBDb2xvck1hcCBjb2xvcl9tYXBfOwotLX07Ci0tCi0tLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KLS0vLyBDb2xvclByb3ZpZGVyOgotLQotIENvbG9yUHJvdmlkZXI6OkNv bG9yUHJvdmlkZXIoKSA9IGRlZmF1bHQ7Ci0gCi0gQ29sb3JQcm92aWRlcjo6Q29sb3JQcm92aWRl cihDb2xvclByb3ZpZGVyJiYpID0gZGVmYXVsdDsKLUBAIC0xMjcsMzEgKzI2LDk2IEBAIENvbG9y UHJvdmlkZXImIENvbG9yUHJvdmlkZXI6Om9wZXJhdG9yPSgKLSBDb2xvclByb3ZpZGVyOjp+Q29s b3JQcm92aWRlcigpID0gZGVmYXVsdDsKLSAKLSBDb2xvck1peGVyJiBDb2xvclByb3ZpZGVyOjpB ZGRNaXhlcigpIHsKLS0gIHJldHVybiBpbnRlcm5hbF8tPkFkZE1peGVyKCk7Ci0rICBEQ0hFQ0so IWNvbG9yX21hcF8pOwotKwotKyAgbWl4ZXJzXy5lbXBsYWNlX2FmdGVyKAotKyAgICAgIGZpcnN0 X3Bvc3Rwcm9jZXNzaW5nX21peGVyXywKLSsgICAgICBiYXNlOjpCaW5kUmVwZWF0aW5nKFtdKGNv bnN0IENvbG9yTWl4ZXIqIG1peGVyKSB7IHJldHVybiBtaXhlcjsgfSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIEdldExhc3ROb25Qb3N0cHJvY2Vzc2luZ01peGVyKCkpLAotKyAgICAgIGJh c2U6OkJpbmRSZXBlYXRpbmcoJkNvbG9yUHJvdmlkZXI6OkdldExhc3ROb25Qb3N0cHJvY2Vzc2lu Z01peGVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCh0aGlz KSkpOwotKwotKyAgcmV0dXJuICpzdGQ6Om5leHQoZmlyc3RfcG9zdHByb2Nlc3NpbmdfbWl4ZXJf LCAxKTsKLSB9Ci0gCi0gQ29sb3JNaXhlciYgQ29sb3JQcm92aWRlcjo6QWRkUG9zdHByb2Nlc3Np bmdNaXhlcigpIHsKLS0gIHJldHVybiBpbnRlcm5hbF8tPkFkZFBvc3Rwcm9jZXNzaW5nTWl4ZXIo KTsKLSsgIERDSEVDSyghY29sb3JfbWFwXyk7Ci0rCi0rICBpZiAoZmlyc3RfcG9zdHByb2Nlc3Np bmdfbWl4ZXJfID09IG1peGVyc18uYmVmb3JlX2JlZ2luKCkpIHsKLSsgICAgLy8gVGhlIGZpcnN0 IHBvc3Rwcm9jZXNzaW5nIG1peGVyIHBvaW50cyB0byB0aGUgbGFzdCByZWd1bGFyIG1peGVyLgot KyAgICBhdXRvIHByZXZpb3VzX21peGVyX2dldHRlciA9IGJhc2U6OkJpbmRSZXBlYXRpbmcoCi0r ICAgICAgICAmQ29sb3JQcm92aWRlcjo6R2V0TGFzdE5vblBvc3Rwcm9jZXNzaW5nTWl4ZXIsIGJh c2U6OlVucmV0YWluZWQodGhpcykpOwotKyAgICBtaXhlcnNfLmVtcGxhY2VfZnJvbnQocHJldmlv dXNfbWl4ZXJfZ2V0dGVyLCBwcmV2aW91c19taXhlcl9nZXR0ZXIpOwotKyAgICBmaXJzdF9wb3N0 cHJvY2Vzc2luZ19taXhlcl8gPSBtaXhlcnNfLmJlZ2luKCk7Ci0rICB9IGVsc2UgewotKyAgICAv LyBPdGhlciBwb3N0cHJvY2Vzc2luZyBtaXhlcnMgcG9pbnQgdG8gdGhlIG5leHQgcG9zdHByb2Nl c3NpbmcgbWl4ZXIuCi0rICAgIGF1dG8gcHJldmlvdXNfbWl4ZXJfZ2V0dGVyID0KLSsgICAgICAg IGJhc2U6OkJpbmRSZXBlYXRpbmcoW10oY29uc3QgQ29sb3JNaXhlciogbWl4ZXIpIHsgcmV0dXJu IG1peGVyOyB9LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVk KCZtaXhlcnNfLmZyb250KCkpKTsKLSsgICAgbWl4ZXJzXy5lbXBsYWNlX2Zyb250KHByZXZpb3Vz X21peGVyX2dldHRlciwgcHJldmlvdXNfbWl4ZXJfZ2V0dGVyKTsKLSsgIH0KLSsgIHJldHVybiBt aXhlcnNfLmZyb250KCk7Ci0gfQotIAotIFNrQ29sb3IgQ29sb3JQcm92aWRlcjo6R2V0Q29sb3Io Q29sb3JJZCBpZCkgY29uc3QgewotLSAgcmV0dXJuIGludGVybmFsXy0+R2V0Q29sb3IoaWQpOwot LX0KLSsgIENIRUNLKGNvbG9yX21hcF8pOwotKyAgYXV0byBpID0gY29sb3JfbWFwXy0+ZmluZChp ZCk7Ci0rICByZXR1cm4gaSA9PSBjb2xvcl9tYXBfLT5lbmQoKSA/IGdmeDo6a1BsYWNlaG9sZGVy Q29sb3IgOiBpLT5zZWNvbmQ7Ci0rfQotKwotK3ZvaWQgQ29sb3JQcm92aWRlcjo6R2VuZXJhdGVD b2xvck1hcCgpIHsKLSsgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHRvIGdlbmVyYXRl IHRoZSBgY29sb3JfbWFwX2Agb25jZS4KLSsgIERDSEVDSyghY29sb3JfbWFwXyk7Ci0rCi0rICBp ZiAobWl4ZXJzXy5lbXB0eSgpKQotKyAgICBEVkxPRygyKSA8PCAiQ29sb3JQcm92aWRlcjo6R2Vu ZXJhdGVDb2xvck1hcDogTm8gbWl4ZXJzIGRlZmluZWQhIjsKLSsKLSsgIC8vIEl0ZXJhdGUgb3Zl ciBhc3NvY2lhdGVkIG1peGVycyBhbmQgZXh0cmFjdCB0aGUgQ29sb3JJZHMgZGVmaW5lZCBmb3Ig dGhpcwotKyAgLy8gcHJvdmlkZXIuCi0rICBzdGQ6OnNldDxDb2xvcklkPiBjb2xvcl9pZHM7Ci0r ICBmb3IgKGNvbnN0IGF1dG8mIG1peGVyIDogbWl4ZXJzXykgewotKyAgICBjb25zdCBhdXRvIG1p eGVyX2NvbG9yX2lkcyA9IG1peGVyLkdldERlZmluZWRDb2xvcklkcygpOwotKyAgICBjb2xvcl9p ZHMuaW5zZXJ0KG1peGVyX2NvbG9yX2lkcy5iZWdpbigpLCBtaXhlcl9jb2xvcl9pZHMuZW5kKCkp OwotKyAgfQotKwotKyAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBkZWZpbmVkIENvbG9ySWRzIGFu ZCBzZWVkIHRoZSBgY29sb3JfbWFwYCB3aXRoIHRoZQotKyAgLy8gY29tcHV0ZWQgdmFsdWVzLiBV c2UgYSBzdGQ6Om1hcCByYXRoZXIgdGhhbiBhIGJhc2U6OmZsYXRfbWFwIHNpbmNlIGl0IGhhcwot KyAgLy8gZnJlcXVlbnQgaW5zZXJ0cyBhbmQgY291bGQgZ3JvdyB2ZXJ5IGxhcmdlLgotKyAgc3Rk OjptYXA8Q29sb3JJZCwgU2tDb2xvcj4gY29sb3JfbWFwOwotKyAgZm9yIChjb25zdCBhdXRvJiBj b2xvcl9pZCA6IGNvbG9yX2lkcykgewotKyAgICBTa0NvbG9yIHJlc3VsdGluZ19jb2xvciA9IG1p eGVyc18uZnJvbnQoKS5HZXRSZXN1bHRDb2xvcihjb2xvcl9pZCk7Ci0rICAgIERWTE9HKDIpIDw8 ICJHZW5lcmF0ZUNvbG9yTWFwOiIKLSsgICAgICAgICAgICAgPDwgIiBDb2xvciBJZDogIiA8PCBD b2xvcklkTmFtZShjb2xvcl9pZCkKLSsgICAgICAgICAgICAgPDwgIiBSZXN1bHRpbmcgQ29sb3I6 ICIgPDwgU2tDb2xvck5hbWUocmVzdWx0aW5nX2NvbG9yKTsKLSsgICAgY29sb3JfbWFwLmluc2Vy dCh7Y29sb3JfaWQsIHJlc3VsdGluZ19jb2xvcn0pOwotKyAgfQotKwotKyAgLy8gQ29uc3RydWN0 IHRoZSBjb2xvcl9tYXBfLgotKyAgY29sb3JfbWFwXyA9IENvbG9yTWFwKGNvbG9yX21hcC5iZWdp bigpLCBjb2xvcl9tYXAuZW5kKCkpOwotIAotLWJvb2wgQ29sb3JQcm92aWRlcjo6SGFzTWl4ZXJz KCkgY29uc3QgewotLSAgcmV0dXJuIGludGVybmFsXy0+SGFzTWl4ZXJzKCk7Ci0rICAvLyBDbGVh ciBhd2F5IGFsbCBhc3NvY2lhdGVkIG1peGVycyBhcyB0aGVzZSBhcmUgbm8gbG9uZ2VyIG5lZWRl ZC4KLSsgIG1peGVyc18uY2xlYXIoKTsKLSsgIGZpcnN0X3Bvc3Rwcm9jZXNzaW5nX21peGVyXyA9 IG1peGVyc18uYmVmb3JlX2JlZ2luKCk7Ci0gfQotIAotLXZvaWQgQ29sb3JQcm92aWRlcjo6U2V0 Q29sb3JGb3JUZXN0aW5nKENvbG9ySWQgaWQsIFNrQ29sb3IgY29sb3IpIHsKLS0gIGludGVybmFs Xy0+U2V0Q29sb3JGb3JUZXN0aW5nKGlkLCBjb2xvcik7ICAvLyBJTi1URVNUCi0rYm9vbCBDb2xv clByb3ZpZGVyOjpJc0NvbG9yTWFwRW1wdHkoKSBjb25zdCB7Ci0rICBEQ0hFQ0soY29sb3JfbWFw Xyk7Ci0rICByZXR1cm4gY29sb3JfbWFwXy0+ZW1wdHkoKTsKLSB9Ci0gCi0tdm9pZCBDb2xvclBy b3ZpZGVyOjpHZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpIHsKLS0gIGludGVybmFsXy0+R2Vu ZXJhdGVDb2xvck1hcEZvclRlc3RpbmcoKTsgIC8vIElOLVRFU1QKLSt2b2lkIENvbG9yUHJvdmlk ZXI6OlNldENvbG9yRm9yVGVzdGluZyhDb2xvcklkIGlkLCBTa0NvbG9yIGNvbG9yKSB7Ci0rICBp ZiAoY29sb3JfbWFwXykgewotKyAgICAoKmNvbG9yX21hcF8pW2lkXSA9IGNvbG9yOwotKyAgfSBl bHNlIHsKLSsgICAgaWYgKG1peGVyc18uZW1wdHkoKSkKLSsgICAgICBBZGRNaXhlcigpOwotKyAg ICAoKnN0ZDo6bmV4dChmaXJzdF9wb3N0cHJvY2Vzc2luZ19taXhlcl8sIDEpKVtpZF0gPSB7Y29s b3J9OwotKyAgfQotIH0KLSAKLS1jb25zdCBDb2xvclByb3ZpZGVyOjpDb2xvck1hcCYgQ29sb3JQ cm92aWRlcjo6Y29sb3JfbWFwX2Zvcl90ZXN0aW5nKCkgewotLSAgcmV0dXJuIGludGVybmFsXy0+ Y29sb3JfbWFwX2Zvcl90ZXN0aW5nKCk7ICAvLyBJTi1URVNUCi0rY29uc3QgQ29sb3JNaXhlciog Q29sb3JQcm92aWRlcjo6R2V0TGFzdE5vblBvc3Rwcm9jZXNzaW5nTWl4ZXIoKSBjb25zdCB7Ci0r ICBjb25zdCBhdXRvIGl0ID0gc3RkOjpuZXh0KGZpcnN0X3Bvc3Rwcm9jZXNzaW5nX21peGVyXywg MSk7Ci0rICByZXR1cm4gKGl0ID09IG1peGVyc18uY2VuZCgpKSA/IG51bGxwdHIgOiAmKCppdCk7 Ci0gfQotIAotIH0gIC8vIG5hbWVzcGFjZSB1aQotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlci5oLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3Vp L2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmgubWVlCTIwMjQtMDYtMDMgMTY6MTM6NDguNzM5MTY2Mjc1 ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRl ci5oCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU1NTY4OTY3ICswMjAwCi1AQCAtNSwxMSArNSwxMiBA QAotICNpZm5kZWYgVUlfQ09MT1JfQ09MT1JfUFJPVklERVJfSF8KLSAjZGVmaW5lIFVJX0NPTE9S X0NPTE9SX1BST1ZJREVSX0hfCi0gCi0tI2luY2x1ZGUgPG1hcD4KLSsjaW5jbHVkZSA8Zm9yd2Fy ZF9saXN0PgotICNpbmNsdWRlIDxtZW1vcnk+Ci0gI2luY2x1ZGUgPG9wdGlvbmFsPgotIAotICNp bmNsdWRlICJiYXNlL2NvbXBvbmVudF9leHBvcnQuaCIKLSsjaW5jbHVkZSAiYmFzZS9jb250YWlu ZXJzL2ZsYXRfbWFwLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3Jl L1NrQ29sb3IuaCIKLSAjaW5jbHVkZSAidWkvY29sb3IvY29sb3JfaWQuaCIKLSAjaW5jbHVkZSAi dWkvY29sb3IvY29sb3JfbWl4ZXIuaCIKLUBAIC0yNCw3ICsyNSw3IEBAIG5hbWVzcGFjZSB1aSB7 Ci0gLy8gVE9ETyhwa2FzdGluZyk6IEZpZ3VyZSBvdXQgb3duZXJzaGlwIG1vZGVsIGFuZCBsaWZl dGltZS4KLSBjbGFzcyBDT01QT05FTlRfRVhQT1JUKENPTE9SKSBDb2xvclByb3ZpZGVyIHsKLSAg cHVibGljOgotLSAgdXNpbmcgQ29sb3JNYXAgPSBzdGQ6Om1hcDxDb2xvcklkLCBTa0NvbG9yPjsK LSsgIHVzaW5nIENvbG9yTWFwID0gYmFzZTo6ZmxhdF9tYXA8Q29sb3JJZCwgU2tDb2xvcj47Ci0g Ci0gICBDb2xvclByb3ZpZGVyKCk7Ci0gICBDb2xvclByb3ZpZGVyKGNvbnN0IENvbG9yUHJvdmlk ZXImKSA9IGRlbGV0ZTsKLUBAIC00OCwyNSArNDksMzkgQEAgY2xhc3MgQ09NUE9ORU5UX0VYUE9S VChDT0xPUikgQ29sb3JQcm92aQotICAgLy8gfGlkfC4KLSAgIFNrQ29sb3IgR2V0Q29sb3IoQ29s b3JJZCBpZCkgY29uc3Q7Ci0gCi0tICAvLyBSZXR1cm5zIHRydWUgaWYgbWl4ZXJzIGlzIG5vdCBl bXB0eS4gSXQncyB0aGUgY2FzZSBmb3Igc29tZSBicm93c2VyCi0rICAvLyBHZW5lcmF0ZXMgdGhl IGBjb2xvcl9tYXBfYCB1c2VkIGJ5IHRoaXMgcHJvdmlkZXIgZm9yIGFsbCBDb2xvcklkcyBkZWZp bmVkCi0rICAvLyBieSBhdHRhY2hlZCBtaXhlcnMuIEFmdGVyIHRoZSBtYXAgaXMgZ2VuZXJhdGVk IGF0dGFjaGVkIG1peGVycyBhbmQgdGhlaXIKLSsgIC8vIGFzc29jaWF0ZWQgb2JqZWN0cyBhcmUg ZGlzY2FyZGVkLiBNaXhlcnMgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUKLSsgIC8vIHByb3Zp ZGVyIGFmdGVyIHRoaXMgaGFzIGJlZW4gY2FsbGVkLgotKyAgdm9pZCBHZW5lcmF0ZUNvbG9yTWFw KCk7Ci0rCi0rICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbG9yX21hcF8gaXMgZW1wdHkuIEl0 J3MgdGhlIGNhc2UgZm9yIHNvbWUgYnJvd3NlcgotICAgLy8gdGVzdHMgdGhhdCBydW4gaW4gc2lu Z2xlIHByb2Nlc3MgbW9kZSBidXQgYWNjZXNzIGNvbG9ycyB0aGF0IGFyZQotICAgLy8gaW5pdGlh bGl6ZWQgb24gcmVuZGVyZXIgcHJvY2VzcyBsYXVuY2gsIGZvciBleGFtcGxlLCBjb250cm9scyBp bgotICAgLy8gTmFpdmVUaGVtZUJhc2UgYW5kIGl0cyBjaGlsZHJlbiBjbGFzc2VzLiBQbGVhc2Ug c2VlIG1vcmUgZGV0YWlsczoKLSAgIC8vIGh0dHBzOi8vY3JidWcuY29tLzEzNzY3NzUuCi0tICBi b29sIEhhc01peGVycygpIGNvbnN0OwotKyAgYm9vbCBJc0NvbG9yTWFwRW1wdHkoKSBjb25zdDsK LSAKLSAgIHZvaWQgU2V0Q29sb3JGb3JUZXN0aW5nKENvbG9ySWQgaWQsIFNrQ29sb3IgY29sb3Ip OwotLSAgdm9pZCBHZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpOwotLSAgY29uc3QgQ29sb3JN YXAmIGNvbG9yX21hcF9mb3JfdGVzdGluZygpOwotKyAgY29uc3QgQ29sb3JNYXAmIGNvbG9yX21h cF9mb3JfdGVzdGluZygpIHsgcmV0dXJuICpjb2xvcl9tYXBfOyB9Ci0gCi0gIHByaXZhdGU6Ci0t ICAvLyBDb2xvclByb3ZpZGVySW50ZXJuYWwgcHJvdmlkZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRh dGlvbiBvZiBDb2xvclByb3ZpZGVyLgotLSAgLy8gSXQncyBub24tbW92YWJsZSBhbmQgbm9uLWNv cHlhYmxlIHNvIHRoYXQgQ29sb3JNaXhlcidzIGNhbGxiYWNrcyBjYW4gc2FmZWx5Ci0tICAvLyBi aW5kIHRvIGl0LgotLSAgY2xhc3MgQ29sb3JQcm92aWRlckludGVybmFsOwotKyAgdXNpbmcgTWl4 ZXJzID0gc3RkOjpmb3J3YXJkX2xpc3Q8Q29sb3JNaXhlcj47Ci0gCi0tICBzdGQ6OnVuaXF1ZV9w dHI8Q29sb3JQcm92aWRlckludGVybmFsPiBpbnRlcm5hbF8gPQotLSAgICAgIHN0ZDo6bWFrZV91 bmlxdWU8Q29sb3JQcm92aWRlckludGVybmFsPigpOwotKyAgLy8gUmV0dXJucyB0aGUgbGFzdCBt aXhlciBpbiB0aGUgY2hhaW4gdGhhdCBpcyBub3QgYSAicG9zdHByb2Nlc3NpbmciIG1peGVyLAot KyAgLy8gb3IgbnVsbHB0ci4KLSsgIGNvbnN0IENvbG9yTWl4ZXIqIEdldExhc3ROb25Qb3N0cHJv Y2Vzc2luZ01peGVyKCkgY29uc3Q7Ci0rCi0rICAvLyBUaGUgZW50aXJlIGNvbG9yIHBpcGVsaW5l LCBpbiByZXZlcnNlIG9yZGVyICh0aGF0IGlzLCB0aGUgImxhc3QiIG1peGVyIGlzCi0rICAvLyBh dCB0aGUgZnJvbnQpLgotKyAgTWl4ZXJzIG1peGVyc187Ci0rCi0rICAvLyBUaGUgZmlyc3QgbWl4 ZXIgaW4gdGhlIGNoYWluIHRoYXQgaXMgYSAicG9zdHByb2Nlc3NpbmciIG1peGVyLgotKyAgTWl4 ZXJzOjppdGVyYXRvciBmaXJzdF9wb3N0cHJvY2Vzc2luZ19taXhlcl8gPSBtaXhlcnNfLmJlZm9y ZV9iZWdpbigpOwotKwotKyAgLy8gQSBjYWNoZWQgbWFwIG9mIENvbG9ySWQgPT4gU2tDb2xvciBt YXBwaW5ncyBmb3IgdGhpcyBwcm92aWRlci4gVGhpcyB3aWxsIGJlCi0rICAvLyBnZW5lcmF0ZWQg aW4gdGhlIGNhbGwgdG8gYEdlbmVyYXRlQ29sb3JNYXAoKWAuCi0rICBzdGQ6Om9wdGlvbmFsPENv bG9yTWFwPiBjb2xvcl9tYXBfOwotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIHVpCi1kaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX21hbmFnZXIu Y2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlkZXJfbWFu YWdlci5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlk ZXJfbWFuYWdlci5jYy5tZWUJMjAyNC0wNS0yOSAxODowMjozMS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX21hbmFnZXIu Y2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTY1Njg5ODYgKzAyMDAKLUBAIC0xMDksNiArMTA5LDcg QEAgQ29sb3JQcm92aWRlciogQ29sb3JQcm92aWRlck1hbmFnZXI6OkdldAotICAgICBpZiAoIWlu aXRpYWxpemVyX2xpc3RfLT5lbXB0eSgpKQotICAgICAgIGluaXRpYWxpemVyX2xpc3RfLT5Ob3Rp ZnkocHJvdmlkZXIuZ2V0KCksIGtleSk7Ci0gCi0rICAgIHByb3ZpZGVyLT5HZW5lcmF0ZUNvbG9y TWFwKCk7Ci0gICAgIFJlY29yZFRpbWVTcGVudEluaXRpYWxpemluZ0NvbG9yUHJvdmlkZXIodGlt ZXIuRWxhcHNlZCgpKTsKLSAgICAgKytudW1fcHJvdmlkZXJzX2luaXRpYWxpemVkXzsKLSAKLWRp ZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlkZXJfdW5p dHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlk ZXJfdW5pdHRlc3QuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9y X3Byb3ZpZGVyX3VuaXR0ZXN0LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAyOjMxLjAwMDAwMDAwMCAr MDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlkZXJf dW5pdHRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTY1Njg5ODYgKzAyMDAKLUBAIC0xNyw2 ICsxNyw3IEBAIG5hbWVzcGFjZSB7Ci0gLy8gVGVzdHMgdGhhdCB3aGVuIHRoZXJlIGFyZSBubyBt aXhlcnMsIEdldENvbG9yKCkgcmV0dXJucyBhIHBsYWNlaG9sZGVyIHZhbHVlLgotIFRFU1QoQ29s b3JQcm92aWRlclRlc3QsIEdldENvbG9yTm9NaXhlcnMpIHsKLSAgIENvbG9yUHJvdmlkZXIgcHJv dmlkZXI7Ci0rICBwcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gICBFWFBFQ1RfRVEoZ2Z4 OjprUGxhY2Vob2xkZXJDb2xvciwgcHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yVGVzdDApKTsKLSB9 Ci0gCi1AQCAtMjUsNiArMjYsNyBAQCBURVNUKENvbG9yUHJvdmlkZXJUZXN0LCBHZXRDb2xvck5v TWl4ZXJzCi0gVEVTVChDb2xvclByb3ZpZGVyVGVzdCwgU2luZ2xlTWl4ZXIpIHsKLSAgIENvbG9y UHJvdmlkZXIgcHJvdmlkZXI7Ci0gICBwcm92aWRlci5BZGRNaXhlcigpW2tDb2xvclRlc3QwXSA9 IHtTS19Db2xvckdSRUVOfTsKLSsgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKLSAgIEVY UEVDVF9FUShTS19Db2xvckdSRUVOLCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUZXN0MCkpOwot ICAgRVhQRUNUX0VRKGdmeDo6a1BsYWNlaG9sZGVyQ29sb3IsIHByb3ZpZGVyLkdldENvbG9yKGtD b2xvclRlc3QxKSk7Ci0gfQotQEAgLTM1LDYgKzM3LDcgQEAgVEVTVChDb2xvclByb3ZpZGVyVGVz dCwgTm9uT3ZlcmxhcHBpbmdNaQotICAgQ29sb3JQcm92aWRlciBwcm92aWRlcjsKLSAgIHByb3Zp ZGVyLkFkZE1peGVyKClba0NvbG9yVGVzdDBdID0ge1NLX0NvbG9yR1JFRU59OwotICAgcHJvdmlk ZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MV0gPSB7U0tfQ29sb3JSRUR9OwotKyAgcHJvdmlkZXIu R2VuZXJhdGVDb2xvck1hcCgpOwotICAgRVhQRUNUX0VRKFNLX0NvbG9yR1JFRU4sIHByb3ZpZGVy LkdldENvbG9yKGtDb2xvclRlc3QwKSk7Ci0gICBFWFBFQ1RfRVEoU0tfQ29sb3JSRUQsIHByb3Zp ZGVyLkdldENvbG9yKGtDb2xvclRlc3QxKSk7Ci0gfQotQEAgLTQ1LDYgKzQ4LDcgQEAgVEVTVChD b2xvclByb3ZpZGVyVGVzdCwgT3ZlcmxhcHBpbmdNaXhlcgotICAgQ29sb3JQcm92aWRlciBwcm92 aWRlcjsKLSAgIHByb3ZpZGVyLkFkZE1peGVyKClba0NvbG9yVGVzdDBdID0ge1NLX0NvbG9yR1JF RU59OwotICAgcHJvdmlkZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MF0gPSB7U0tfQ29sb3JSRUR9 OwotKyAgcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwotICAgRVhQRUNUX0VRKFNLX0NvbG9y UkVELCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUZXN0MCkpOwotIH0KLSAKLUBAIC01NSw2ICs1 OSw3IEBAIFRFU1QoQ29sb3JQcm92aWRlclRlc3QsIFdpdGhQcm9jZXNzaW5nKQotICAgcHJvdmlk ZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MF0gPSB7U0tfQ29sb3JCTEFDS307Ci0gICBwcm92aWRl ci5BZGRQb3N0cHJvY2Vzc2luZ01peGVyKClba0NvbG9yVGVzdDBdID0KLSAgICAgICBHZXRDb2xv cldpdGhNYXhDb250cmFzdChGcm9tVHJhbnNmb3JtSW5wdXQoKSk7Ci0rICBwcm92aWRlci5HZW5l cmF0ZUNvbG9yTWFwKCk7Ci0gICBFWFBFQ1RfRVEoU0tfQ29sb3JXSElURSwgcHJvdmlkZXIuR2V0 Q29sb3Ioa0NvbG9yVGVzdDApKTsKLSB9Ci0gCi1AQCAtNjUsNiArNzAsNyBAQCBURVNUKENvbG9y UHJvdmlkZXJUZXN0LCBXaXRoUHJvY2Vzc2luZ0FkCi0gICBwcm92aWRlci5BZGRQb3N0cHJvY2Vz c2luZ01peGVyKClba0NvbG9yVGVzdDBdID0KLSAgICAgICBHZXRDb2xvcldpdGhNYXhDb250cmFz dChGcm9tVHJhbnNmb3JtSW5wdXQoKSk7Ci0gICBwcm92aWRlci5BZGRNaXhlcigpW2tDb2xvclRl c3QwXSA9IHtTS19Db2xvckJMQUNLfTsKLSsgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsK LSAgIEVYUEVDVF9FUShTS19Db2xvcldISVRFLCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUZXN0 MCkpOwotIH0KLSAKLUBAIC03Niw2ICs4Miw3IEBAIFRFU1QoQ29sb3JQcm92aWRlclRlc3QsIFJl ZGVmaW5pdGlvbikgewotICAgbWl4ZXIwW2tDb2xvclRlc3QwXSA9IHtTS19Db2xvckJMQUNLfTsK LSAgIG1peGVyMFtrQ29sb3JUZXN0MV0gPSBBbHBoYUJsZW5kKFNLX0NvbG9yUkVELCBrQ29sb3JU ZXN0MCwgMHgwMSk7Ci0gICBwcm92aWRlci5BZGRNaXhlcigpW2tDb2xvclRlc3QwXSA9IHtTS19D b2xvcldISVRFfTsKLSsgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKLSAgIEVYUEVDVF9F UShTS19Db2xvcldISVRFLCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUZXN0MCkpOwotICAgRVhQ RUNUX0ZBTFNFKGNvbG9yX3V0aWxzOjpJc0RhcmsocHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yVGVz dDEpKSk7Ci0gfQotQEAgLTkwLDYgKzk3LDcgQEAgVEVTVChDb2xvclByb3ZpZGVyVGVzdCwgUmVk ZWZpbml0aW9uV2l0aAotICAgcHJvdmlkZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MF0gPSB7U0tf Q29sb3JXSElURX07Ci0gICBwcm92aWRlci5BZGRQb3N0cHJvY2Vzc2luZ01peGVyKClba0NvbG9y VGVzdDBdID0KLSAgICAgICBHZXRDb2xvcldpdGhNYXhDb250cmFzdChGcm9tVHJhbnNmb3JtSW5w dXQoKSk7Ci0rICBwcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gICBFWFBFQ1RfTkUoU0tf Q29sb3JXSElURSwgcHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yVGVzdDApKTsKLSAgIEVYUEVDVF9G QUxTRShjb2xvcl91dGlsczo6SXNEYXJrKHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRlc3QxKSkp OwotIH0KLUBAIC05Nyw2ICsxMDUsNyBAQCBURVNUKENvbG9yUHJvdmlkZXJUZXN0LCBSZWRlZmlu aXRpb25XaXRoCi0gVEVTVChDb2xvclByb3ZpZGVyVGVzdCwgU2V0Q29sb3JGb3JUZXN0aW5nKSB7 Ci0gICBDb2xvclByb3ZpZGVyIHByb3ZpZGVyOwotICAgcHJvdmlkZXIuU2V0Q29sb3JGb3JUZXN0 aW5nKGtDb2xvclRlc3QwLCBTS19Db2xvckdSRUVOKTsKLSsgIHByb3ZpZGVyLkdlbmVyYXRlQ29s b3JNYXAoKTsKLSAgIEVYUEVDVF9FUShTS19Db2xvckdSRUVOLCBwcm92aWRlci5HZXRDb2xvcihr Q29sb3JUZXN0MCkpOwotICAgRVhQRUNUX0VRKGdmeDo6a1BsYWNlaG9sZGVyQ29sb3IsIHByb3Zp ZGVyLkdldENvbG9yKGtDb2xvclRlc3QxKSk7Ci0gICBwcm92aWRlci5TZXRDb2xvckZvclRlc3Rp bmcoa0NvbG9yVGVzdDEsIFNLX0NvbG9yQkxVRSk7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX3V0aWxzLmNjLm1lZSBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX3V0aWxzLmNjCi0tLS0gY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlscy5jYy5tZWUJMjAyNC0w NS0yOSAxODowMjozMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX3V0aWxzLmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU2 NTY4OTg2ICswMjAwCi1AQCAtMzY3LDYgKzM2Nyw3IEBAIENvbG9yUHJvdmlkZXIgQ3JlYXRlQ29s b3JQcm92aWRlckZyb21SZW4KLSAKLSAgIGZvciAoY29uc3QgYXV0byYgdGFibGUgOiBrUmVuZGVy ZXJDb2xvcklkTWFwKQotICAgICBtaXhlclt0YWJsZS5jb2xvcl9pZF0gPSB7cmVuZGVyZXJfY29s b3JfbWFwLmF0KHRhYmxlLnJlbmRlcmVyX2NvbG9yX2lkKX07Ci0rICBjb2xvcl9wcm92aWRlci5H ZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gCi0gICByZXR1cm4gY29sb3JfcHJvdmlkZXI7Ci0gfQotQEAg LTQyNSw2ICs0MjYsNyBAQCBDb2xvclByb3ZpZGVyIENyZWF0ZUVtdWxhdGVkRm9yY2VkQ29sb3Jz Ci0gICBtaXhlcltrQ29sb3JTZXBhcmF0b3JdID0ge2tDb2xvck1pZGdyb3VuZH07Ci0gICBDb21w bGV0ZURlZmF1bHROb25XZWJOYXRpdmVSZW5kZXJlckNvbG9ySWRzRGVmaW5pdGlvbihtaXhlcik7 Ci0gCi0rICBjb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gICByZXR1cm4gY29s b3JfcHJvdmlkZXI7Ci0gfQotIAotQEAgLTQ3OSw2ICs0ODEsNyBAQCBDb2xvclByb3ZpZGVyIENy ZWF0ZUVtdWxhdGVkRm9yY2VkQ29sb3JzCi0gICBtaXhlcltrQ29sb3JXZWJOYXRpdmVDb250cm9s U2xpZGVySG92ZXJlZF0gPSB7U0tfQ29sb3JDWUFOfTsKLSAgIG1peGVyW2tDb2xvcldlYk5hdGl2 ZUNvbnRyb2xTbGlkZXJQcmVzc2VkXSA9IHtTS19Db2xvckNZQU59OwotIAotKyAgY29sb3JfcHJv dmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwotICAgcmV0dXJuIGNvbG9yX3Byb3ZpZGVyOwotIH0K LSAKLUBAIC02NTIsNiArNjU1LDcgQEAgQ29sb3JQcm92aWRlciBDT01QT05FTlRfRVhQT1JUKENP TE9SKQotICAgICAgICAgU2tDb2xvclNldFJHQigweDM3LCAweDkzLCAweEZGKX07Ci0gICB9Ci0g Ci0rICBjb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gICByZXR1cm4gY29sb3Jf cHJvdmlkZXI7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xv ci9jb2xvcl9wcm92aWRlcl91dGlsc191bml0dGVzdC5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlsc191bml0dGVzdC5jYwotLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlkZXJfdXRpbHNfdW5pdHRlc3Qu Y2MubWVlCTIwMjQtMDUtMjkgMTg6MDI6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlsc191bml0dGVzdC5jYwky MDI0LTA2LTAzIDE2OjIyOjEwLjU1NjU2ODk4NiArMDIwMAotQEAgLTQ5LDYgKzQ5LDcgQEAgVEVT VF9GKENvbG9yUHJvdmlkZXJVdGlsc1Rlc3QsIFJlbmRlcmVyQwotICAgdWk6OkNvbG9yTWl4ZXIm IG1peGVyID0gY29sb3JfcHJvdmlkZXIuQWRkTWl4ZXIoKTsKLSAgIGZvciAoaW50IGkgPSB1aTo6 a1VpQ29sb3JzU3RhcnQgKyAxOyBpIDwgdWk6OmtVaUNvbG9yc0VuZDsgKytpKQotICAgICBtaXhl cltpXSA9IHtzdGF0aWNfY2FzdDxTa0NvbG9yPihpKX07Ci0rICBjb2xvcl9wcm92aWRlci5HZW5l cmF0ZUNvbG9yTWFwKCk7Ci0gCi0gICAvLyBUaGUgc2l6ZSBvZiB0aGUgUmVuZGVyZXJDb2xvck1h cCBzaG91bGQgbWF0Y2ggbnVtYmVyIG9mIGRlZmluZWQKLSAgIC8vIFJlbmRlcmVyQ29sb3JJZHMu Ci1AQCAtNjAsNyArNjEsNiBAQCBURVNUX0YoQ29sb3JQcm92aWRlclV0aWxzVGVzdCwgUmVuZGVy ZXJDCi0gICAvLyBhbHNvIG1hdGNoIHRoZSBudW1iZXIgb2YgZGVmaW5lZCBSZW5kZXJlckNvbG9y SWRzLgotICAgYXV0byBuZXdfY29sb3JfcHJvdmlkZXIgPQotICAgICAgIHVpOjpDcmVhdGVDb2xv clByb3ZpZGVyRnJvbVJlbmRlcmVyQ29sb3JNYXAocmVuZGVyZXJfY29sb3JfbWFwKTsKLS0gIG5l d19jb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpOwotICAgRVhQRUNU X0VRKGtUb3RhbHRSZW5kZXJlckNvbG9ySWRzLAotICAgICAgICAgICAgIG5ld19jb2xvcl9wcm92 aWRlci5jb2xvcl9tYXBfZm9yX3Rlc3RpbmcoKS5zaXplKCkpOwotIH0KLUBAIC03Myw2ICs3Myw3 IEBAIFRFU1RfRihDb2xvclByb3ZpZGVyVXRpbHNUZXN0LCBDb2xvclByb3YKLSAgIGZvciAoaW50 IGkgPSB1aTo6a1VpQ29sb3JzU3RhcnQgKyAxOyBpIDwgdWk6OmtVaUNvbG9yc0VuZDsgKytpKSB7 Ci0gICAgIG1peGVyW2ldID0ge3N0YXRpY19jYXN0PFNrQ29sb3I+KGkpfTsKLSAgIH0KLSsgIGNv bG9yX3Byb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKLSAKLSAgIC8vIEEgcmVuZGVyZXIgY29s b3IgbWFwIGdlbmVyYXRlZCBmcm9tIGl0cyBzb3VyY2UgcHJvdmlkZXIgc2hvdWxkIGhhdmUKLSAg IC8vIGVxdWl2YWxlbnQgbWFwcGluZ3MuCi1AQCAtODQsNiArODUsNyBAQCBURVNUX0YoQ29sb3JQ cm92aWRlclV0aWxzVGVzdCwgQ29sb3JQcm92Ci0gICAvLyBQcm92aWRlcnMgd2l0aCBkaWZmZXJl bnQgcmVuZGVyZXIgY29sb3IgbWFwcGluZ3Mgc2hvdWxkIG5vdCBiZSBmbGFnZ2VkIGFzCi0gICAv LyBlcXVpdmFsZW50LgotICAgdWk6OkNvbG9yUHJvdmlkZXIgbmV3X2NvbG9yX3Byb3ZpZGVyOwot KyAgbmV3X2NvbG9yX3Byb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKLSAgIEVYUEVDVF9GQUxT RShJc1JlbmRlcmVyQ29sb3JNYXBwaW5nRXF1aXZhbGVudCgmbmV3X2NvbG9yX3Byb3ZpZGVyLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVy X2NvbG9yX21hcCkpOwotIH0KLUBAIC0xMTksNiArMTIxLDcgQEAgVEVTVF9GKENvbG9yUHJvdmlk ZXJVdGlsc1Rlc3QsIERlZmF1bHRCbAotICAgdWk6OkNvbG9yUHJvdmlkZXIgcmFuZG9tX2NvbG9y X3Byb3ZpZGVyOwotICAgdWk6OkNvbG9yTWl4ZXImIG1peGVyID0gcmFuZG9tX2NvbG9yX3Byb3Zp ZGVyLkFkZE1peGVyKCk7Ci0gICBtaXhlclt1aTo6a0NvbG9yUHJpbWFyeUJhY2tncm91bmRdID0g e1NLX0NvbG9yV0hJVEV9OwotKyAgcmFuZG9tX2NvbG9yX3Byb3ZpZGVyLkdlbmVyYXRlQ29sb3JN YXAoKTsKLSAgIHVpOjpSZW5kZXJlckNvbG9yTWFwIHJhbmRvbV9jb2xvcl9tYXAgPQotICAgICAg IHVpOjpDcmVhdGVSZW5kZXJlckNvbG9yTWFwKHJhbmRvbV9jb2xvcl9wcm92aWRlcik7Ci0gCi1k aWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL3N5c19jb2xvcl9taXhlcl91 bml0dGVzdC5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xvci9zeXNfY29sb3Jf bWl4ZXJfdW5pdHRlc3QuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL3N5 c19jb2xvcl9taXhlcl91bml0dGVzdC5jYy5tZWUJMjAyNC0wNS0yOSAxODowMjozMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL3N5c19jb2xvcl9t aXhlcl91bml0dGVzdC5jYwkyMDI0LTA2LTAzIDE2OjIyOjEwLjU1NjU2ODk4NiArMDIwMAotQEAg LTM2LDYgKzM2LDcgQEAgY2xhc3MgU3lzQ29sb3JNaXhlclRlc3QKLSAKLSAgICAgQWRkUmVmQ29s b3JNaXhlcigmY29sb3JfcHJvdmlkZXJfLCBrZXkpOwotICAgICBBZGRTeXNDb2xvck1peGVyKCZj b2xvcl9wcm92aWRlcl8sIGtleSk7Ci0rICAgIGNvbG9yX3Byb3ZpZGVyXy5HZW5lcmF0ZUNvbG9y TWFwKCk7Ci0gICB9Ci0gCi0gIHByb3RlY3RlZDoKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvdWkvbmF0aXZlX3RoZW1lL25hdGl2ZV90aGVtZV9iYXNlLmNjLm1lZSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3VpL25hdGl2ZV90aGVtZS9uYXRpdmVfdGhlbWVfYmFzZS5jYwotLS0tIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdWkvbmF0aXZlX3RoZW1lL25hdGl2ZV90aGVtZV9iYXNlLmNj Lm1lZQkyMDI0LTA1LTI5IDE4OjAyOjMyLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdWkvbmF0aXZlX3RoZW1lL25hdGl2ZV90aGVtZV9iYXNlLmNjCTIwMjQtMDYt MDMgMTY6MjI6MTAuNTU2NTY4OTg2ICswMjAwCi1AQCAtMTc2Myw5ICsxNzYzLDggQEAgYm9vbCBO YXRpdmVUaGVtZUJhc2U6OklzQ29sb3JQaXBlbGluZVN1cAotICAgICBDb250cm9sQ29sb3JJZCBj b2xvcl9pZCkgY29uc3QgewotICAgLy8gQ29sb3IgcHJvdmlkZXJzIGFyZSBub3QgeWV0IHN1cHBv cnRlZCBvbiBBbmRyb2lkIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdAotICAgLy8gdGhlIGNvbG9y X3Byb3ZpZGVyIGlzIG5vdCBudWxsIGhlcmUuCi0tICBpZiAoIWNvbG9yX3Byb3ZpZGVyIHx8ICFj b2xvcl9wcm92aWRlci0+SGFzTWl4ZXJzKCkpIHsKLSsgIGlmICghY29sb3JfcHJvdmlkZXIgfHwg Y29sb3JfcHJvdmlkZXItPklzQ29sb3JNYXBFbXB0eSgpKQotICAgICByZXR1cm4gZmFsc2U7Ci0t ICB9Ci0gCi0gICBzdGF0aWMgY29uc3RleHByIGF1dG8ga0NvbnRyb2xDb2xvcklkc1NldCA9Ci0g ICAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdFNldDxDb250cm9sQ29sb3JJZD4oe2tCb3JkZXIsCi1k aWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL25hdGl2ZV90aGVtZS9uYXRpdmVfdGhl bWVfZmx1ZW50X3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL25hdGl2 ZV90aGVtZS9uYXRpdmVfdGhlbWVfZmx1ZW50X3VuaXR0ZXN0LmNjCi0tLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi91aS9uYXRpdmVfdGhlbWUvbmF0aXZlX3RoZW1lX2ZsdWVudF91bml0dGVzdC5j Yy5tZWUJMjAyNC0wNS0yOSAxODowMjozMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3VpL25hdGl2ZV90aGVtZS9uYXRpdmVfdGhlbWVfZmx1ZW50X3VuaXR0ZXN0 LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU2NTY4OTg2ICswMjAwCi1AQCAtMTM0LDYgKzEzNCw3 IEBAIFRFU1RfUChOYXRpdmVUaGVtZUZsdWVudFRlc3QsIFZlcmlmeUFycm8KLSBURVNUX0YoTmF0 aXZlVGhlbWVGbHVlbnRUZXN0LCBQYWludFRodW1iUm91bmRlZENvcm5lcnMpIHsKLSAgIGNjOjpS ZWNvcmRQYWludENhbnZhcyBjYW52YXM7Ci0gICBDb2xvclByb3ZpZGVyIGNvbG9yX3Byb3ZpZGVy OwotKyAgY29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwotICAgY29uc3RleHByIGdm eDo6UmVjdCBrUmVjdCgxNSwgMTAwKTsKLSAgIC8vIGBpc193ZWJfdGVzdGAgaXMgYGZhbHNlYCBi eSBkZWZhdWx0LgotICAgY29uc3QgTmF0aXZlVGhlbWU6OlNjcm9sbGJhclRodW1iRXh0cmFQYXJh bXMgZXh0cmFfcGFyYW1zOwotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS93bS9j b3JlL3NoYWRvd19jb250cm9sbGVyX3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3VpL3dtL2NvcmUvc2hhZG93X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKLS0tLSBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3VpL3dtL2NvcmUvc2hhZG93X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2Mu bWVlCTIwMjQtMDUtMjkgMTg6MDI6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi91aS93bS9jb3JlL3NoYWRvd19jb250cm9sbGVyX3VuaXR0ZXN0LmNjCTIwMjQt MDYtMDMgMTY6MjI6MTAuNTU2NTY4OTg2ICswMjAwCi1AQCAtMjg1LDYgKzI4NSw3IEBAIFRFU1Rf RihTaGFkb3dDb250cm9sbGVyVGVzdCwgU2V0Q29sb3JzTWEKLSAgIG1peGVyW3VpOjprQ29sb3JT aGFkb3dWYWx1ZUFtYmllbnRTaGFkb3dFbGV2YXRpb25Ud2VsdmVdID0ge1NLX0NvbG9yUkVEfTsK LSAgIG1peGVyW3VpOjprQ29sb3JTaGFkb3dWYWx1ZUtleVNoYWRvd0VsZXZhdGlvblR3ZW50eUZv dXJdID0ge1NLX0NvbG9yR1JFRU59OwotICAgbWl4ZXJbdWk6OmtDb2xvclNoYWRvd1ZhbHVlQW1i aWVudFNoYWRvd0VsZXZhdGlvblR3ZW50eUZvdXJdID0ge1NLX0NvbG9yQkxVRX07Ci0rICBjb2xv cl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7Ci0gCi0gICBzaGFkb3ctPlNldEVsZXZhdGlv blRvQ29sb3JzTWFwKAotICAgICAgIFNoYWRvd0NvbnRyb2xsZXI6OkdlbmVyYXRlU2hhZG93Q29s b3JzTWFwKCZjb2xvcl9wcm92aWRlcikpOwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNi1lbDct Y29uc3RleHByLnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1jb25zdGV4cHIucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MDQyZmUuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0t MTI2LWVsNy1jb25zdGV4cHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAsMCBAQAot ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9sZW5zL2xl bnNfdW50cnVzdGVkX3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21l L2Jyb3dzZXIvdWkvbGVucy9sZW5zX3VudHJ1c3RlZF91aS5oCi0tLS0gY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9sZW5zL2xlbnNfdW50cnVzdGVkX3VpLmguY29uc3Rl eHByCTIwMjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9sZW5zL2xlbnNfdW50cnVzdGVkX3VpLmgJMjAy NC0wNi0wMiAyMzo1MToyNS41Mzk5MTY2MDYgKzAyMDAKLUBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz IExlbnNVbnRydXN0ZWRVSSA6IHB1YmxpYyBVbnRydXN0ZWQKLSAgICAgICBtb2pvOjpQZW5kaW5n UmVjZWl2ZXI8Y29sb3JfY2hhbmdlX2xpc3RlbmVyOjptb2pvbTo6UGFnZUhhbmRsZXI+Ci0gICAg ICAgICAgIHJlY2VpdmVyKTsKLSAKLS0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0 V2ViVUlOYW1lKCkgeyByZXR1cm4gIkxlbnNVbnRydXN0ZWQiOyB9Ci0rICBzdGF0aWMgY29uc3Qg c3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIkxlbnNVbnRydXN0ZWQiOyB9Ci0g Ci0gIHByaXZhdGU6Ci0gICAvLyBsZW5zOjptb2pvbTo6TGVuc1BhZ2VIYW5kbGVyRmFjdG9yeToK LWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvbGVucy9z ZWFyY2hfYnViYmxlX3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21l L2Jyb3dzZXIvdWkvbGVucy9zZWFyY2hfYnViYmxlX3VpLmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL2xlbnMvc2VhcmNoX2J1YmJsZV91aS5oLmNvbnN0ZXhw cgkyMDI0LTA1LTI5IDE4OjAwOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4w LjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvbGVucy9zZWFyY2hfYnViYmxlX3VpLmgJMjAyNC0w Ni0wMiAyMzo1MToyNS41Mzk5MTY2MDYgKzAyMDAKLUBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIFNl YXJjaEJ1YmJsZVVJIDogcHVibGljIFRvcENocm9tZVcKLSAgICAgICBtb2pvOjpQZW5kaW5nUmVj ZWl2ZXI8bGVuczo6bW9qb206OlNlYXJjaEJ1YmJsZVBhZ2VIYW5kbGVyRmFjdG9yeT4KLSAgICAg ICAgICAgcmVjZWl2ZXIpOwotIAotLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRX ZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1NlYXJjaEJ1YmJsZSI7IH0KLSsgIHN0YXRpYyBjb25z dCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1NlYXJjaEJ1YmJsZSI7 IH0KLSAKLSAgcHJpdmF0ZToKLSAgIC8vIGxlbnM6Om1vam9tOjpTZWFyY2hCdWJibGVQYWdlSGFu ZGxlckZhY3RvcnkKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dz ZXIvdWkvd2VidWkvY29tbWVyY2Uvc2hvcHBpbmdfaW5zaWdodHNfc2lkZV9wYW5lbF91aS5oLmNv bnN0ZXhwciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL2Nv bW1lcmNlL3Nob3BwaW5nX2luc2lnaHRzX3NpZGVfcGFuZWxfdWkuaAotLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvY29tbWVyY2Uvc2hvcHBpbmdfaW5z aWdodHNfc2lkZV9wYW5lbF91aS5oLmNvbnN0ZXhwcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAw MDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvY29tbWVyY2Uvc2hvcHBpbmdfaW5zaWdodHNfc2lkZV9wYW5lbF91aS5oCTIwMjQtMDYt MDIgMjM6NTE6MjUuNTM5OTE2NjA2ICswMjAwCi1AQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTaG9w cGluZ0luc2lnaHRzU2lkZVBhbmVsVUkKLSAgICAgICBtb2pvOjpQZW5kaW5nUmVjZWl2ZXI8Ci0g ICAgICAgICAgIHNob3BwaW5nX3NlcnZpY2U6Om1vam9tOjpTaG9wcGluZ1NlcnZpY2VIYW5kbGVy RmFjdG9yeT4gcmVjZWl2ZXIpOwotIAotLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBH ZXRXZWJVSU5hbWUoKSB7Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1l KCkgewotICAgICByZXR1cm4gIlNob3BwaW5nSW5zaWdodHNTaWRlUGFuZWwiOwotICAgfQotIAot ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9j b21wb3NlL2NvbXBvc2VfdW50cnVzdGVkX3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvY29tcG9zZS9jb21wb3NlX3VudHJ1c3RlZF91 aS5oCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9j b21wb3NlL2NvbXBvc2VfdW50cnVzdGVkX3VpLmguY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDA6 NTkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci91aS93ZWJ1aS9jb21wb3NlL2NvbXBvc2VfdW50cnVzdGVkX3VpLmgJMjAyNC0wNi0wMiAy Mzo1MToyNS41NDA5MTY2MzAgKzAyMDAKLUBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIENvbXBvc2VV bnRydXN0ZWRVSQotICAgICB0cmlnZ2VyaW5nX3dlYl9jb250ZW50c18gPSB3ZWJfY29udGVudHMt PkdldFdlYWtQdHIoKTsKLSAgIH0KLSAKLS0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcg R2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIkNvbXBvc2UiOyB9Ci0rICBzdGF0aWMgY29uc3Qgc3Rk OjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIkNvbXBvc2UiOyB9Ci0gCi0gIHByaXZh dGU6Ci0gICB2b2lkIENyZWF0ZUNvbXBvc2VTZXNzaW9uVW50cnVzdGVkUGFnZUhhbmRsZXIoCi1k aWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3Np ZGVfcGFuZWwvYm9va21hcmtzL2Jvb2ttYXJrc19zaWRlX3BhbmVsX3VpLmguY29uc3RleHByIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9i b29rbWFya3MvYm9va21hcmtzX3NpZGVfcGFuZWxfdWkuaAotLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9ib29rbWFya3MvYm9va21h cmtzX3NpZGVfcGFuZWxfdWkuaC5jb25zdGV4cHIJMjAyNC0wNS0yOSAxODowMDo1OS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3NpZGVfcGFuZWwvYm9va21hcmtzL2Jvb2ttYXJrc19zaWRlX3BhbmVsX3VpLmgJMjAyNC0w Ni0wMiAyMzo1MToyNS41NDA5MTY2MzAgKzAyMDAKLUBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEJv b2ttYXJrc1NpZGVQYW5lbFVJCi0gICBjb21tZXJjZTo6U2hvcHBpbmdMaXN0Q29udGV4dE1lbnVD b250cm9sbGVyKgotICAgR2V0U2hvcHBpbmdMaXN0Q29udGV4dE1lbnVDb250cm9sbGVyKCk7Ci0g Ci0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJu ICJCb29rbWFya3NTaWRlUGFuZWwiOyB9Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0 V2ViVUlOYW1lKCkgeyByZXR1cm4gIkJvb2ttYXJrc1NpZGVQYW5lbCI7IH0KLSAKLSAgcHJpdmF0 ZToKLSAgIC8vIHNpZGVfcGFuZWw6Om1vam9tOjpCb29rbWFya3NQYWdlSGFuZGxlckZhY3Rvcnk6 Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVp L3NpZGVfcGFuZWwvY29tcGFuaW9uL2NvbXBhbmlvbl9zaWRlX3BhbmVsX3VudHJ1c3RlZF91aS5o LmNvbnN0ZXhwciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVp L3NpZGVfcGFuZWwvY29tcGFuaW9uL2NvbXBhbmlvbl9zaWRlX3BhbmVsX3VudHJ1c3RlZF91aS5o Ci0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRl X3BhbmVsL2NvbXBhbmlvbi9jb21wYW5pb25fc2lkZV9wYW5lbF91bnRydXN0ZWRfdWkuaC5jb25z dGV4cHIJMjAyNC0wNi0wMyAxODoyMDoyOC41MDQ2MDQwNzEgKzAyMDAKLSsrKyBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY29tcGFuaW9u L2NvbXBhbmlvbl9zaWRlX3BhbmVsX3VudHJ1c3RlZF91aS5oCTIwMjQtMDYtMDMgMTg6MjA6NDQu NTU5MDE2NDk3ICswMjAwCi1AQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDb21wYW5pb25TaWRlUGFu ZWxVbnRydXN0ZWRVSQotICAgLy8gR2V0cyBhIHdlYWsgcG9pbnRlciB0byB0aGlzIG9iamVjdC4K LSAgIGJhc2U6OldlYWtQdHI8Q29tcGFuaW9uU2lkZVBhbmVsVW50cnVzdGVkVUk+IEdldFdlYWtQ dHIoKTsKLSAKLS0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkg ewotKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsKLSAgICAgcmV0 dXJuICJDb21wYW5pb25TaWRlUGFuZWxVbnRydXN0ZWQiOwotICAgfQotIAotZGlmZiAtdXAgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2N1 c3RvbWl6ZV9jaHJvbWUvY3VzdG9taXplX2Nocm9tZV91aS5oLmNvbnN0ZXhwciBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY3VzdG9taXpl X2Nocm9tZS9jdXN0b21pemVfY2hyb21lX3VpLmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY3VzdG9taXplX2Nocm9tZS9jdXN0 b21pemVfY2hyb21lX3VpLmguY29uc3RleHByCTIwMjQtMDYtMDMgMTg6MTM6NTIuNzQxMjgyOTQ5 ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1 aS9zaWRlX3BhbmVsL2N1c3RvbWl6ZV9jaHJvbWUvY3VzdG9taXplX2Nocm9tZV91aS5oCTIwMjQt MDYtMDMgMTg6MTQ6MzQuNzE4NDQyODg4ICswMjAwCi1AQCAtMTExLDcgKzExMSw3IEBAIGNsYXNz IEN1c3RvbWl6ZUNocm9tZVVJCi0gICAgICAgICAgIHNpZGVfcGFuZWw6OmN1c3RvbWl6ZV9jaHJv bWU6Om1vam9tOjpDdXN0b21pemVUb29sYmFySGFuZGxlckZhY3Rvcnk+Ci0gICAgICAgICAgIHJl Y2VpdmVyKTsKLSAKLS0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1l KCkgeyByZXR1cm4gIkN1c3RvbWl6ZUNocm9tZSI7IH0KLSsgIHN0YXRpYyBjb25zdCBzdGQ6OnN0 cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiQ3VzdG9taXplQ2hyb21lIjsgfQotIAotICBw cml2YXRlOgotICAgLy8gc2lkZV9wYW5lbDo6bW9qb206OkN1c3RvbWl6ZUNocm9tZVBhZ2VIYW5k bGVyRmFjdG9yeQotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci91aS93ZWJ1aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3RlcnMvaGlzdG9yeV9jbHVzdGVyc19z aWRlX3BhbmVsX3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jy b3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9oaXN0b3J5X2NsdXN0ZXJzL2hpc3RvcnlfY2x1c3Rl cnNfc2lkZV9wYW5lbF91aS5oCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3RlcnMvaGlzdG9yeV9jbHVzdGVy c19zaWRlX3BhbmVsX3VpLmguY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAw ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1 aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3RlcnMvaGlzdG9yeV9jbHVzdGVyc19zaWRlX3BhbmVs X3VpLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41NDA5MTY2MzAgKzAyMDAKLUBAIC03MCw3ICs3MCw3 IEBAIGNsYXNzIEhpc3RvcnlDbHVzdGVyc1NpZGVQYW5lbFVJIDogcHVibGkKLSAgIHZvaWQgRGlk RmluaXNoTmF2aWdhdGlvbigKLSAgICAgICBjb250ZW50OjpOYXZpZ2F0aW9uSGFuZGxlKiBuYXZp Z2F0aW9uX2hhbmRsZSkgb3ZlcnJpZGU7Ci0gCi0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3Ry aW5nIEdldFdlYlVJTmFtZSgpIHsKLSsgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJV SU5hbWUoKSB7Ci0gICAgIHJldHVybiAiSGlzdG9yeUNsdXN0ZXJzU2lkZVBhbmVsIjsKLSAgIH0K LSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvc2lkZV9wYW5lbC9wZXJmb3JtYW5jZV9jb250cm9scy9wZXJmb3JtYW5jZV9zaWRlX3BhbmVs X3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvc2lkZV9wYW5lbC9wZXJmb3JtYW5jZV9jb250cm9scy9wZXJmb3JtYW5jZV9zaWRlX3Bh bmVsX3VpLmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3NpZGVfcGFuZWwvcGVyZm9ybWFuY2VfY29udHJvbHMvcGVyZm9ybWFuY2Vfc2lkZV9wYW5l bF91aS5oLmNvbnN0ZXhwcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAwMDAwMCArMDIwMAotKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5l bC9wZXJmb3JtYW5jZV9jb250cm9scy9wZXJmb3JtYW5jZV9zaWRlX3BhbmVsX3VpLmgJMjAyNC0w Ni0wMiAyMzo1MToyNS41NDA5MTY2MzAgKzAyMDAKLUBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFBl cmZvcm1hbmNlU2lkZVBhbmVsVUkKLSAgICAgICBtb2pvOjpQZW5kaW5nUmVjZWl2ZXI8Y29sb3Jf Y2hhbmdlX2xpc3RlbmVyOjptb2pvbTo6UGFnZUhhbmRsZXI+Ci0gICAgICAgICAgIHBlbmRpbmdf cmVjZWl2ZXIpOwotIAotLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5h bWUoKSB7IHJldHVybiAiUGVyZm9ybWFuY2VTaWRlUGFuZWwiOyB9Ci0rICBzdGF0aWMgY29uc3Qg c3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlBlcmZvcm1hbmNlU2lkZVBhbmVs IjsgfQotIAotICBwcml2YXRlOgotICAgLy8gc2lkZV9wYW5lbDo6bW9qb206OlBlcmZvcm1hbmNl UGFnZUhhbmRsZXJGYWN0b3J5OgotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRfYW55dGhpbmcvcmVhZF9hbnl0aGlu Z191bnRydXN0ZWRfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRfYW55dGhpbmcvcmVhZF9hbnl0aGluZ191 bnRydXN0ZWRfdWkuaAotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvd2VidWkvc2lkZV9wYW5lbC9yZWFkX2FueXRoaW5nL3JlYWRfYW55dGhpbmdfdW50cnVzdGVk X3VpLmguY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDE6MDAuMDAwMDAwMDAwICswMjAwCi0rKysg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVs L3JlYWRfYW55dGhpbmcvcmVhZF9hbnl0aGluZ191bnRydXN0ZWRfdWkuaAkyMDI0LTA2LTAyIDIz OjUxOjI1LjU0MTkxNjY1NCArMDIwMAotQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVhZEFueXRo aW5nVW50cnVzdGVkVUkKLSAgICAgICBtb2pvOjpQZW5kaW5nUmVjZWl2ZXI8cmVhZF9hbnl0aGlu Zzo6bW9qb206OlVudHJ1c3RlZFBhZ2VIYW5kbGVyRmFjdG9yeT4KLSAgICAgICAgICAgcmVjZWl2 ZXIpOwotIAotLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7 Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgewotICAgICByZXR1 cm4gIlJlYWRBbnl0aGluZ1VudHJ1c3RlZCI7Ci0gICB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZGluZ19s aXN0L3JlYWRpbmdfbGlzdF91aS5oLmNvbnN0ZXhwciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZGluZ19saXN0L3JlYWRpbmdfbGlz dF91aS5oCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1 aS9zaWRlX3BhbmVsL3JlYWRpbmdfbGlzdC9yZWFkaW5nX2xpc3RfdWkuaC5jb25zdGV4cHIJMjAy NC0wNS0yOSAxODowMTowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZGluZ19saXN0L3JlYWRp bmdfbGlzdF91aS5oCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTQxOTE2NjU0ICswMjAwCi1AQCAtNTgs NyArNTgsNyBAQCBjbGFzcyBSZWFkaW5nTGlzdFVJIDogcHVibGljIFRvcENocm9tZVdlCi0gCi0g ICB2b2lkIFNldEFjdGl2ZVRhYlVSTChjb25zdCBHVVJMJiB1cmwpOwotIAotLSAgc3RhdGljIGNv bnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiUmVhZGluZ0xpc3Qi OyB9Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4g IlJlYWRpbmdMaXN0IjsgfQotIAotICBwcml2YXRlOgotICAgLy8gcmVhZGluZ19saXN0Ojptb2pv bTo6UGFnZUhhbmRsZXJGYWN0b3J5OgotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j aHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMvdXNlcl9ub3Rlc19z aWRlX3BhbmVsX3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jy b3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC91c2VyX25vdGVzL3VzZXJfbm90ZXNfc2lkZV9wYW5l bF91aS5oCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1 aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMvdXNlcl9ub3Rlc19zaWRlX3BhbmVsX3VpLmguY29uc3Rl eHByCTIwMjQtMDUtMjkgMTg6MDE6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMv dXNlcl9ub3Rlc19zaWRlX3BhbmVsX3VpLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41NDE5MTY2NTQg KzAyMDAKLUBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFVzZXJOb3Rlc1NpZGVQYW5lbFVJCi0gCi0g ICB2b2lkIHNldF9icm93c2VyKEJyb3dzZXIqIGJyb3dzZXIpIHsgYnJvd3Nlcl8gPSBicm93c2Vy OyB9Ci0gCi0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsg cmV0dXJuICJVc2VyTm90ZXNTaWRlUGFuZWwiOyB9Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJp bmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlVzZXJOb3Rlc1NpZGVQYW5lbCI7IH0KLSAKLSAg cHJpdmF0ZToKLSAgIC8vIHVzZXJfbm90ZXM6Om1vam9tOjpVc2VyTm90ZXNQYWdlSGFuZGxlckZh Y3RvcnkKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvdGFiX3NlYXJjaC90YWJfc2VhcmNoX3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4w LjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvdGFiX3NlYXJjaC90YWJfc2VhcmNoX3Vp LmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3Rh Yl9zZWFyY2gvdGFiX3NlYXJjaF91aS5oLmNvbnN0ZXhwcgkyMDI0LTA1LTI5IDE4OjAxOjAwLjAw MDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvd2VidWkvdGFiX3NlYXJjaC90YWJfc2VhcmNoX3VpLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41 NDI5MTY2NzcgKzAyMDAKLUBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFRhYlNlYXJjaFVJIDogcHVi bGljIFRvcENocm9tZVdlYlUKLSAgICAgcmV0dXJuIHBhZ2VfaGFuZGxlcl8uZ2V0KCk7Ci0gICB9 Ci0gCi0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0 dXJuICJUYWJTZWFyY2giOyB9Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlO YW1lKCkgeyByZXR1cm4gIlRhYlNlYXJjaCI7IH0KLSAKLSAgcHJpdmF0ZToKLSAgIC8vIHRhYl9z ZWFyY2g6Om1vam9tOjpQYWdlSGFuZGxlckZhY3RvcnkKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4w LjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRv ZmlsbF9pMThuX2FwaS5oLmNvbnN0ZXhwciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVu dHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2RhdGFfbW9kZWwvYXV0b2ZpbGxfaTE4bl9hcGkuaAot LS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dz ZXIvZGF0YV9tb2RlbC9hdXRvZmlsbF9pMThuX2FwaS5oLmNvbnN0ZXhwcgkyMDI0LTA1LTI5IDE4 OjAxOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9u ZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRvZmlsbF9pMThuX2FwaS5o CTIwMjQtMDYtMDIgMjM6NTE6MjUuNTQyOTE2Njc3ICswMjAwCi1AQCAtMTYsOCArMTYsOCBAQCBu YW1lc3BhY2UgYXV0b2ZpbGw6OmkxOG5fbW9kZWxfZGVmaW5pdGlvCi0gLy8gQ291bnRyeSBjb2Rl IHRoYXQgcmVwcmVzZW50cyBhdXRvZmlsbCdzIGxlZ2FjeSBhZGRyZXNzIGhpZXJhcmNoeSBtb2Rl bCBhcwotIC8vIHN0b3JlZCBga0F1dG9maWxsTW9kZWxSdWxlc2AuIEFzIGEgd29ya2Fyb3VuZCBm b3IgR0NDIHdlIGRlY2xhcmUgdGhlCi0gLy8gc3RkOjpzdHJpbmcgY29uc3RleHByIGZpcnN0Lgot LWNvbnN0ZXhwciBpbmxpbmUgc3RkOjpzdHJpbmcga0xlZ2FjeUhpZXJhcmNoeUNvdW50cnlDb2Rl U3RyaW5neyJYWCJ9OwotLWNvbnN0ZXhwciBBZGRyZXNzQ291bnRyeUNvZGUga0xlZ2FjeUhpZXJh cmNoeUNvdW50cnlDb2RlID0KLStjb25zdCBpbmxpbmUgc3RkOjpzdHJpbmcga0xlZ2FjeUhpZXJh cmNoeUNvdW50cnlDb2RlU3RyaW5neyJYWCJ9OwotK2NvbnN0IEFkZHJlc3NDb3VudHJ5Q29kZSBr TGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGUgPQotICAgICBBZGRyZXNzQ291bnRyeUNvZGUoa0xl Z2FjeUhpZXJhcmNoeUNvdW50cnlDb2RlU3RyaW5nKTsKLSAKLSAvLyBDcmVhdGVzIGFuIGluc3Rh bmNlIG9mIHRoZSBhZGRyZXNzIGhpZXJhcmNoeSBtb2RlbCBjb3JyZXNwb25kaW5nIHRvIHRoZQot ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRlcm5zLnB5LmNvbnN0ZXhw ciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2Vy L2Zvcm1fcGFyc2luZy90cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkKLS0tLSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFyc2lu Zy90cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkuY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDE6 MDUuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRz L2F1dG9maWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRl cm5zLnB5CTIwMjQtMDYtMDIgMjM6NTE6MzYuMzIyMTcyNzM5ICswMjAwCi1AQCAtMSw0ICsxLDQg QEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS9vcHQvcmgvcmgtcHl0aG9uMzgvcm9vdC91 c3IvYmluL3B5dGhvbgotIAotICMgQ29weXJpZ2h0IDIwMjAgVGhlIENocm9taXVtIEF1dGhvcnMK LSAjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp Y2Vuc2UgdGhhdCBjYW4gYmUKLUBAIC01NCw3ICs1NCw3IEBAIGRlZiBnZW5lcmF0ZV9tYXRjaGlu Z19wYXR0ZXJuX2VxdWFscyhuYW0KLSAgIHlpZWxkICcvLyBDaGVja3MgaWYgYWxsIHRoZSBtYXRj aGluZyBwYXR0ZXJucyBmb3IgdGhlIGdpdmVuIFBhdHRlcm5Tb3VyY2VzJwotICAgeWllbGQgJy8v IGFuZCBsYW5ndWFnZSBhcmUgdGhlIHNhbWUgLSBtZWFuaW5nIHRoYXQgY29tcHV0aW5nIHByZWRp Y3Rpb25zIGZvcicKLSAgIHlpZWxkICcvLyBib3RoIGlzIHVubmVjZXNzYXJ5LCBzaW5jZSBpdCB3 aWxsIHlpZWxkIHRoZSBzYW1lIHJlc3VsdC4nCi0tICB5aWVsZCAnY29uc3RleHByIGJvb2wgQXJl TWF0Y2hpbmdQYXR0ZXJuc0VxdWFsSW1wbChQYXR0ZXJuU291cmNlIGEsJwotKyAgeWllbGQgJ2Nv bnN0IGJvb2wgQXJlTWF0Y2hpbmdQYXR0ZXJuc0VxdWFsSW1wbChQYXR0ZXJuU291cmNlIGEsJwot ICAgeWllbGQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0 dGVyblNvdXJjZSBiLCcKLSAgIHlpZWxkICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExhbmd1YWdlQ29kZSBsYW5nX2NvZGUpIHsnCi0gICB5aWVsZCAnICBpZiAo YSA9PSBiKSB7JwotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5oLmNvbnN0ZXhwciBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3Mv bG9nX2V2ZW50LmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2Zp bGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmguY29uc3RleHByCTIwMjQtMDUtMjkg MTg6MDE6MDUuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21w b25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5oCTIwMjQtMDYt MDIgMjM6NTE6MjUuNTQyOTE2Njc3ICswMjAwCi1AQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgSXNS ZXF1aXJlZCB7Ci0gICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkIGFuZCBjb25zdGV2 YWwuIFRoZXJlZm9yZSwgYW55IGV2YWx1YXRpb24gd2lsbAotICAgLy8gZmFpbCBhbmQgZmFpbCBh dCBjb21waWxlIHRpbWUuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS0gIGNvbnN0ZXZhbCBv cGVyYXRvciBUKCk7ICAvLyBOT0xJTlQKLSsgIG9wZXJhdG9yIFQoKTsgIC8vIE5PTElOVAotIH07 Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBlcy5oLmNv bnN0ZXhwciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jy b3dzZXIvaGlzdG9yeV90eXBlcy5oCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25l bnRzL2hpc3RvcnkvY29yZS9icm93c2VyL2hpc3RvcnlfdHlwZXMuaC5jb25zdGV4cHIJMjAyNC0w NS0yOSAxODowMTowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBlcy5oCTIwMjQtMDYt MDIgMjM6NTE6MjUuNTQyOTE2Njc3ICswMjAwCi1AQCAtNzAsNyArNzAsNyBAQCBjb25zdGV4cHIg VmlzaXRlZExpbmtJRCBrSW52YWxpZFZpc2l0ZWRMCi0gdHlwZWRlZiBzdGQ6Om1hcDxWaXNpdElE LCBWaXNpdFNvdXJjZT4gVmlzaXRTb3VyY2VNYXA7Ci0gCi0gLy8gQ29uc3RhbnQgdXNlZCB0byBy ZXByZXNlbnQgdGhhdCBubyBhcHBfaWQgaXMgdXNlZCBmb3IgbWF0Y2hpbmcuCi0taW5saW5lIGNv bnN0ZXhwciBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBrTm9BcHBJZEZpbHRlciA9IHN0ZDo6 bnVsbG9wdDsKLStpbmxpbmUgY29uc3Qgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4ga05vQXBw SWRGaWx0ZXIgPSBzdGQ6Om51bGxvcHQ7Ci0gCi0gLy8gVmlzaXRSb3cgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAot ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL29tbmlib3gvYnJvd3Nl ci9vbl9kZXZpY2VfdGFpbF9tb2RlbF9zZXJ2aWNlLmNjLmNvbnN0ZXhwciBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbXBvbmVudHMvb21uaWJveC9icm93c2VyL29uX2RldmljZV90YWlsX21vZGVs X3NlcnZpY2UuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvb21uaWJv eC9icm93c2VyL29uX2RldmljZV90YWlsX21vZGVsX3NlcnZpY2UuY2MuY29uc3RleHByCTIwMjQt MDUtMjkgMTg6MDE6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9jb21wb25lbnRzL29tbmlib3gvYnJvd3Nlci9vbl9kZXZpY2VfdGFpbF9tb2RlbF9zZXJ2aWNl LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTQzOTE2NzAyICswMjAwCi1AQCAtMzAsNyArMzAsNyBA QCBuYW1lc3BhY2UgewotIC8vIFRoZSBtYXhpbXVtIGlkbGUgdGltZSBiZWZvcmUgdGhlIG1vZGVs IGV4ZWN1dG9yIGlzIHVubG9hZGVkIGZyb20gbWVtb3J5LgotIGNvbnN0ZXhwciBiYXNlOjpUaW1l RGVsdGEga01heEV4ZWN1dG9ySWRsZVNlY29uZHMgPSBiYXNlOjpTZWNvbmRzKDYwKTsKLSAvLyBD b25zdGFudHMgZm9yIFRGbGl0ZSBtb2RlbCB2YWxpZGF0aW9uLgotLWNvbnN0ZXhwciBzdGQ6OnN0 cmluZyBrVGVzdFByZWZpeCA9ICJmYWNlIjsKLStjb25zdCBzdGQ6OnN0cmluZyBrVGVzdFByZWZp eCA9ICJmYWNlIjsKLSBjb25zdGV4cHIgc3RkOjpzdHJpbmdfdmlldyBrTW9kZWxWYWxpZGF0aW9u U3dpdGNoTmFtZSA9Ci0gICAgICJvbW5pYm94LW9uLWRldmljZS10YWlsLW1vZGVsLXZhbGlkYXRp b24iOwotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9zZXJ2aWNlcy9uZXR3b3Jr L3NoYXJlZF9kaWN0aW9uYXJ5L3NpbXBsZV91cmxfcGF0dGVybl9tYXRjaGVyLmNjLmNvbnN0ZXhw ciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rpb25h cnkvc2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rpb25hcnkvc2ltcGxlX3VybF9wYXR0ZXJu X21hdGNoZXIuY2MuY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDE6MzYuMDAwMDAwMDAwICswMjAw Ci0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9zZXJ2aWNlcy9uZXR3b3JrL3NoYXJlZF9kaWN0 aW9uYXJ5L3NpbXBsZV91cmxfcGF0dGVybl9tYXRjaGVyLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NTQzOTE2NzAyICswMjAwCi1AQCAtMjgsMTcgKzI4LDE3IEBAIG5hbWVzcGFjZSBuZXR3b3JrIHsK LSBuYW1lc3BhY2UgewotIAotIC8vIGh0dHBzOi8vdXJscGF0dGVybi5zcGVjLndoYXR3Zy5vcmcv I2RlZmF1bHQtb3B0aW9ucwotLWNvbnN0ZXhwciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtEZWZh dWx0T3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiIiwKLStjb25zdCBsaWJ1cmxwYXR0ZXJu OjpPcHRpb25zIGtEZWZhdWx0T3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZWZpeF9s aXN0ID0gIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC5zZW5zaXRpdmUgPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAuc3RyaWN0ID0gdHJ1ZX07Ci0gLy8gaHR0cHM6Ly91cmxw YXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jaG9zdG5hbWUtb3B0aW9ucwotLWNvbnN0ZXhwciBsaWJ1 cmxwYXR0ZXJuOjpPcHRpb25zIGtIb3N0bmFtZU9wdGlvbnMgPSB7LmRlbGltaXRlcl9saXN0ID0g Ii4iLAotK2NvbnN0IGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga0hvc3RuYW1lT3B0aW9ucyA9IHsu ZGVsaW1pdGVyX2xpc3QgPSAiLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAucHJlZml4X2xpc3QgPSAiIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZW5zaXRpdmUgPSB0cnVlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0 cmljdCA9IHRydWV9OwotIC8vIGh0dHBzOi8vdXJscGF0dGVybi5zcGVjLndoYXR3Zy5vcmcvI3Bh dGhuYW1lLW9wdGlvbnMKLS1jb25zdGV4cHIgbGlidXJscGF0dGVybjo6T3B0aW9ucyBrUGF0aG5h bWVPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIvIiwKLStjb25zdCBsaWJ1cmxwYXR0ZXJu OjpPcHRpb25zIGtQYXRobmFtZU9wdGlvbnMgPSB7LmRlbGltaXRlcl9saXN0ID0gIi8iLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZWZp eF9saXN0ID0gIi8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RyaWN0ID0gdHJ1ZX07CgpkaWZmIC0tZ2l0 IGEvY2hyb21pdW0tMTI2LWVsNy1pbmNsdWRlLWZjbnRsLW1lbWZkLnBhdGNoIGIvY2hyb21pdW0t MTI2LWVsNy1pbmNsdWRlLWZjbnRsLW1lbWZkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzYmFmY2E0Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyNi1lbDctaW5jbHVkZS1m Y250bC1tZW1mZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWRpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvd2F5bGFuZC9zcmMvY3Vyc29yL29z LWNvbXBhdGliaWxpdHkuYy5lbDctbWVtZmQtZmNudGwtaW5jbHVkZSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3RoaXJkX3BhcnR5L3dheWxhbmQvc3JjL2N1cnNvci9vcy1jb21wYXRpYmlsaXR5LmMK LS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L3dheWxhbmQvc3JjL2N1cnNv ci9vcy1jb21wYXRpYmlsaXR5LmMuZWw3LW1lbWZkLWZjbnRsLWluY2x1ZGUJMjAyNC0wNS0yOSAx ODowMzowOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJk X3BhcnR5L3dheWxhbmQvc3JjL2N1cnNvci9vcy1jb21wYXRpYmlsaXR5LmMJMjAyNC0wNi0wMiAx NToxMzoyMS42MzY2MzgwNjYgKzAyMDAKLUBAIC0yOSw3ICsyOSw4IEBACi0gCi0gI2luY2x1ZGUg PHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4K LSsjaW5jbHVkZSA8bGludXgvZmNudGwuaD4gLy8gZm9yIEZfU0VBTF9TSFJJTkssIEZfQUREX1NF QUxTLCBGX1NFQUxfU0VBTAotKyNpbmNsdWRlIDxsaW51eC9tZW1mZC5oPiAvLyBmb3IgTUZEX0NM T0VYRUMKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1 ZGUgPHN0cmluZy5oPgotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0 eS93YXlsYW5kL3NyYy9zcmMvd2F5bGFuZC1zaG0uYy5lbDctbWVtZmQtZmNudGwtaW5jbHVkZSBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L3dheWxhbmQvc3JjL3NyYy93YXlsYW5k LXNobS5jCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS93YXlsYW5kL3Ny Yy9zcmMvd2F5bGFuZC1zaG0uYy5lbDctbWVtZmQtZmNudGwtaW5jbHVkZQkyMDI0LTA1LTI5IDE4 OjAzOjA4LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRf cGFydHkvd2F5bGFuZC9zcmMvc3JjL3dheWxhbmQtc2htLmMJMjAyNC0wNi0wMiAxNToxMzoyMS42 MzU2MzgwNDUgKzAyMDAKLUBAIC00NCw3ICs0NCw3IEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgot ICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGZj bnRsLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L2ZjbnRsLmg+Ci0gCi0gI2luY2x1ZGUgIndheWxhbmQt b3MuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC11dGlsLmgiCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3VpL296b25lL3BsYXRmb3JtL3dheWxhbmQvaG9zdC96d3BfdGV4dF9pbnB1dF93 cmFwcGVyX3YxLmNjLmVsNy1tZW1mZC1mY250bC1pbmNsdWRlIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvdWkvb3pvbmUvcGxhdGZvcm0vd2F5bGFuZC9ob3N0L3p3cF90ZXh0X2lucHV0X3dyYXBwZXJf djEuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL296b25lL3BsYXRmb3JtL3dheWxh bmQvaG9zdC96d3BfdGV4dF9pbnB1dF93cmFwcGVyX3YxLmNjLmVsNy1tZW1mZC1mY250bC1pbmNs dWRlCTIwMjQtMDYtMDIgMTU6MTM6MjEuNjM2NjM4MDY2ICswMjAwCi0rKysgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi91aS9vem9uZS9wbGF0Zm9ybS93YXlsYW5kL2hvc3QvendwX3RleHRfaW5wdXRf d3JhcHBlcl92MS5jYwkyMDI0LTA2LTAyIDE1OjE2OjE4LjIwMjY3OTkwOSArMDIwMAotQEAgLTUs NiArNSw3IEBACi0gI2luY2x1ZGUgInVpL296b25lL3BsYXRmb3JtL3dheWxhbmQvaG9zdC96d3Bf dGV4dF9pbnB1dF93cmFwcGVyX3YxLmgiCi0gCi0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0rI2lu Y2x1ZGUgPGxpbnV4L21lbWZkLmg+Ci0gCi0gI2luY2x1ZGUgPHN0cmluZz4KLSAjaW5jbHVkZSA8 c3RyaW5nX3ZpZXc+Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3Y4L3NyYy9iYXNl L3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjLmVsNy1tZW1mZC1mY250bC1pbmNsdWRlIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MK LS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3Jt LXBvc2l4LmNjLmVsNy1tZW1mZC1mY250bC1pbmNsdWRlCTIwMjQtMDUtMjkgMTg6MDM6MzUuMDAw MDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi92OC9zcmMvYmFzZS9wbGF0 Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYwkyMDI0LTA2LTAyIDE1OjEzOjIxLjYzNTYzODA0NSArMDIw MAotQEAgLTYwLDYgKzYwLDcgQEAKLSAKLSAjaWYgVjhfT1NfTElOVVgKLSAjaW5jbHVkZSA8c3lz L3ByY3RsLmg+ICAvLyBmb3IgcHJjdGwKLSsjaW5jbHVkZSA8bGludXgvbWVtZmQuaD4gLy8gZm9y IE1GRF9DTE9FWEVDCi0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoVjhfT1NfRlVDSFNJQSkKCmRp ZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LWludGVyYXRvci5wYXRjaCBiL2Nocm9taXVtLTEy Ni1lbDctaW50ZXJhdG9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjYz MGE4Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyNi1lbDctaW50ZXJhdG9yLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9uZXQvdGhpcmRfcGFydHkvcXVpY2hlL3NyYy9xdWljaGUvcXVpYy9jb3JlL3F1aWNfaW50ZXJ2 YWxfZGVxdWUuaC5tZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L25ldC90aGlyZF9wYXJ0eS9xdWlj aGUvc3JjL3F1aWNoZS9xdWljL2NvcmUvcXVpY19pbnRlcnZhbF9kZXF1ZS5oCi0tLS0gY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9uZXQvdGhpcmRfcGFydHkvcXVpY2hlL3NyYy9xdWljaGUvcXVpYy9j b3JlL3F1aWNfaW50ZXJ2YWxfZGVxdWUuaC5tZQkyMDI0LTA2LTAzIDE1OjAxOjU0LjcyNDIwNzMy NCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvbmV0L3RoaXJkX3BhcnR5L3F1aWNo ZS9zcmMvcXVpY2hlL3F1aWMvY29yZS9xdWljX2ludGVydmFsX2RlcXVlLmgJMjAyNC0wNi0wMyAx NDo1ODoxNi4yNDQxODk3OTQgKzAyMDAKLUBAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgUVVJQ0hF X05PX0VYUE9SVCBRdWljSW50ZXJ2YWxEZXF1ZQotICAgLy8gZm9yIGVmZmljaWVudCBzdGQ6Omxv d2VyX2JvdW5kKCkgY2FsbHMuCi0gICBjbGFzcyBRVUlDSEVfTk9fRVhQT1JUIEl0ZXJhdG9yIHsK LSAgICBwdWJsaWM6Ci0tICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpyYW5kb21f YWNjZXNzX2l0ZXJhdG9yX3RhZzsKLSsgICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBzdGQ6 OmZvcndhcmRfaXRlcmF0b3JfdGFnOwotICAgICB1c2luZyB2YWx1ZV90eXBlID0gVDsKLSAgICAg dXNpbmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjpwdHJkaWZmX3Q7Ci0gICAgIHVzaW5nIHBvaW50 ZXIgPSBUKjsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LW5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yLnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRjMzUxYS4uMDAwMDAwMAotLS0g YS9jaHJvbWl1bS0xMjYtZWw3LW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTk2MSArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9s aWdodHdlaWdodF9xdWFyYW50aW5lLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVt LTEyNi4wLjY0NzguMjYvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFy dGl0aW9uX2FsbG9jL2xpZ2h0d2VpZ2h0X3F1YXJhbnRpbmUuY2MKLS0tLSBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlv bl9hbGxvYy9saWdodHdlaWdodF9xdWFyYW50aW5lLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMjkgMTg6MDA6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25f YWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ4Nzkx NTM2NiArMDIwMAotQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBMaWdodHdlaWdodFF1YXJhbnRpbmVC cmFuY2g6OlF1YXJhbgotIAotICAgICAvLyBQdXQgdGhlIGVudHJ5IG9udG8gdGhlIGxpc3QuCi0g ICAgIGJyYW5jaF9zaXplX2luX2J5dGVzXyArPSB1c2FibGVfc2l6ZTsKLS0gICAgc2xvdHNfLmVt cGxhY2VfYmFjayhzbG90X3N0YXJ0LCB1c2FibGVfc2l6ZSk7Ci0rICAgIHNsb3RzXy5lbXBsYWNl X2JhY2soKSA9IHtzbG90X3N0YXJ0LCB1c2FibGVfc2l6ZX07Ci0gCi0gICAgIC8vIFN3YXAgcmFu ZG9tbHkgc28gdGhhdCB0aGUgcXVhcmFudGluZSBsaXN0IHJlbWFpbiBzaHVmZmxlZC4KLSAgICAg Ly8gVGhpcyBpcyBub3QgdW5pZm9ybWx5IHJhbmRvbSwgYnV0IHN1ZmZpY2llbnRseSByYW5kb20u Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50 X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9y LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9o aXN0b2dyYW1fYWxsb2NhdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkg MTg6MDA6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNl L21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCTIwMjQtMDYtMDIgMjM6 NTE6MjUuNDg3OTE1MzY2ICswMjAwCi1AQCAtMjI1LDEzICsyMjUsMTMgQEAgUGVyc2lzdGVudFNw YXJzZUhpc3RvZ3JhbURhdGFNYW5hZ2VyOjpMbwotICAgICAvLyBUaGUgc2FtcGxlLXJlY29yZCBj b3VsZCBiZSBmb3IgYW55IHNwYXJzZSBoaXN0b2dyYW0uIEFkZCB0aGUgcmVmZXJlbmNlCi0gICAg IC8vIHRvIHRoZSBhcHByb3ByaWF0ZSBjb2xsZWN0aW9uIGZvciBsYXRlciB1c2UuCi0gICAgIGlm IChmb3VuZF9pZCA9PSBtYXRjaF9pZCkgewotLSAgICAgIGZvdW5kX3JlY29yZHMuZW1wbGFjZV9i YWNrKHJlZiwgdmFsdWUpOwotKyAgICAgIGZvdW5kX3JlY29yZHMuZW1wbGFjZV9iYWNrKCkgPSB7 cmVmLCB2YWx1ZX07Ci0gICAgICAgZm91bmQgPSB0cnVlOwotICAgICB9IGVsc2UgewotICAgICAg IHN0ZDo6dmVjdG9yPFJlZmVyZW5jZUFuZFNhbXBsZT4qIHNhbXBsZXMgPQotICAgICAgICAgICBH ZXRTYW1wbGVNYXBSZWNvcmRzV2hpbGVMb2NrZWQoZm91bmRfaWQpOwotICAgICAgIENIRUNLKHNh bXBsZXMpOwotLSAgICAgIHNhbXBsZXMtPmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsKLSsgICAg ICBzYW1wbGVzLT5lbXBsYWNlX2JhY2soKSA9IHtyZWYsIHZhbHVlfTsKLSAgICAgfQotICAgfQot IAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL25peC9taW1lX3V0aWxfeGRn LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9u aXgvbWltZV91dGlsX3hkZy5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9uaXgv bWltZV91dGlsX3hkZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAw OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9uaXgv bWltZV91dGlsX3hkZy5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ4ODkxNTM5MSArMDIwMAotQEAg LTU2LDcgKzU2LDcgQEAgdm9pZCBMb2FkQWxsTWltZUNhY2hlRmlsZXMoTWltZVR5cGVNYXAmCi0g ICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBHZXRYREdEYXRhU2VhcmNoTG9jYXRpb25zKGVudi5n ZXQoKSkpIHsKLSAgICAgRmlsZVBhdGggbWltZV9jYWNoZSA9IHBhdGguQXBwZW5kKCJtaW1lL21p bWUuY2FjaGUiKTsKLSAgICAgaWYgKEdldEZpbGVJbmZvKG1pbWVfY2FjaGUsICZpbmZvKSAmJiBQ YXJzZU1pbWVUeXBlcyhtaW1lX2NhY2hlLCBtYXApKSB7Ci0tICAgICAgZmlsZXMuZW1wbGFjZV9i YWNrKG1pbWVfY2FjaGUsIGluZm8ubGFzdF9tb2RpZmllZCk7Ci0rICAgICAgZmlsZXMuZW1wbGFj ZV9iYWNrKCkgPSB7bWltZV9jYWNoZSwgaW5mby5sYXN0X21vZGlmaWVkfTsKLSAgICAgfQotICAg fQotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS90cmFjZV9ldmVudC90 cmFjZV9sb2cuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJ MjAyNC0wNS0yOSAxODowMDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NDg5OTE1NDE0ICswMjAwCi1AQCAtMjAyNiw4ICsyMDI2LDggQEAgdm9pZCBUcmFjZUxvZzo6U2V0 VHJhY2VCdWZmZXJGb3JUZXN0aW5nKAotIAotIHZvaWQgVHJhY2VMb2c6Ok9uU2V0dXAoY29uc3Qg cGVyZmV0dG86OkRhdGFTb3VyY2VCYXNlOjpTZXR1cEFyZ3MmIGFyZ3MpIHsKLSAgIEF1dG9Mb2Nr IGxvY2sodHJhY2tfZXZlbnRfbG9ja18pOwotLSAgdHJhY2tfZXZlbnRfc2Vzc2lvbnNfLmVtcGxh Y2VfYmFjayhhcmdzLmludGVybmFsX2luc3RhbmNlX2luZGV4LCAqYXJncy5jb25maWcsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuYmFja2VuZF90eXBlKTsKLSsg IHRyYWNrX2V2ZW50X3Nlc3Npb25zXy5lbXBsYWNlX2JhY2soKSA9IHthcmdzLmludGVybmFsX2lu c3RhbmNlX2luZGV4LCAqYXJncy5jb25maWcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFyZ3MuYmFja2VuZF90eXBlfTsKLSB9Ci0gCi0gdm9pZCBUcmFjZUxvZzo6T25T dGFydChjb25zdCBwZXJmZXR0bzo6RGF0YVNvdXJjZUJhc2U6OlN0YXJ0QXJncyYpIHsKLWRpZmYg LXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5n cy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9v bmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJv dmlkZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1Mi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2Nv bnRlbnRfc2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYwkyMDI0LTA2LTAy IDIzOjUxOjI1LjQ4OTkxNTQxNCArMDIwMAotQEAgLTI1OSw4ICsyNTksOCBAQCB2b2lkIE9uZVRp bWVQZXJtaXNzaW9uUHJvdmlkZXI6Ok9uU3VzcGVuCi0gCi0gICAgICAgd2hpbGUgKHJ1bGVfaXRl cmF0b3IgJiYgcnVsZV9pdGVyYXRvci0+SGFzTmV4dCgpKSB7Ci0gICAgICAgICBhdXRvIHJ1bGUg PSBydWxlX2l0ZXJhdG9yLT5OZXh0KCk7Ci0tICAgICAgICBwYXR0ZXJuc190b19kZWxldGUuZW1w bGFjZV9iYWNrKHNldHRpbmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybik7 Ci0rICAgICAgICBwYXR0ZXJuc190b19kZWxldGUuZW1wbGFjZV9iYWNrKCkgPSB7c2V0dGluZ190 eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRlcm4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJufTsKLSAgICAgICAgIHBlcm1pc3Np b25zOjpQZXJtaXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVudCgKLSAg ICAgICAgICAgICBzZXR0aW5nX3R5cGUsCi0gICAgICAgICAgICAgcGVybWlzc2lvbnM6Ok9uZVRp bWVQZXJtaXNzaW9uRXZlbnQ6OkVYUElSRURfT05fU1VTUEVORCk7Ci1AQCAtMzYyLDggKzM2Miw4 IEBAIHZvaWQgT25lVGltZVBlcm1pc3Npb25Qcm92aWRlcjo6RGVsZXRlRW4KLSAgICAgYXV0byBy dWxlID0gcnVsZV9pdGVyYXRvci0+TmV4dCgpOwotICAgICBpZiAocnVsZS0+cHJpbWFyeV9wYXR0 ZXJuLk1hdGNoZXMob3JpZ2luX2d1cmwpICYmCi0gICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0 dGVybi5NYXRjaGVzKG9yaWdpbl9ndXJsKSkgewotLSAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5l bXBsYWNlX2JhY2soCi0tICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCBydWxlLT5wcmlt YXJ5X3BhdHRlcm4sIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKLSsgICAgICBwYXR0ZXJuc190 b19kZWxldGUuZW1wbGFjZV9iYWNrKCkgPSB7Ci0rICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190 eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRlcm4sIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJufTsKLSAg ICAgICBwZXJtaXNzaW9uczo6UGVybWlzc2lvblVtYVV0aWw6OlJlY29yZE9uZVRpbWVQZXJtaXNz aW9uRXZlbnQoCi0gICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCB0cmlnZ2VyX2V2ZW50 KTsKLSAgICAgfQotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci9kaXBzL2RpcHNfYm91bmNlX2RldGVjdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvZGlwcy9kaXBzX2JvdW5jZV9kZXRl Y3Rvci5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvZGlwcy9k aXBzX2JvdW5jZV9kZXRlY3Rvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA2LTAz IDIzOjM5OjMwLjc3ODI4NTcwOCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hy b21lL2Jyb3dzZXIvZGlwcy9kaXBzX2JvdW5jZV9kZXRlY3Rvci5jYwkyMDI0LTA2LTAzIDIzOjQy OjE3Ljg3MzAzODIxNCArMDIwMAotQEAgLTUxMSwxMSArNTExLDExIEBAIFVybEFuZFNvdXJjZUlk IFJlZGlyZWN0Q2hhaW5EZXRlY3Rvcjo6R2UKLSAgIC8vIFdlIGNhbid0IHVzZSBSZW5kZXJGcmFt ZUhvc3Q6OkdldExhc3RDb21taXR0ZWRVUkwoKSBiZWNhdXNlIHRoYXQgcmV0dXJucyBhbgotICAg Ly8gZW1wdHkgVVJMIHdoaWxlIHRoZSB0YWIgaXMgY2xvc2luZyAoaS5lLiB3aXRoaW4KLSAgIC8v IFdlYkNvbnRlbnRzT2JzZXJ2ZXI6OldlYkNvbnRlbnRzRGVzdHJveWVkKQotLSAgcmV0dXJuIFVy bEFuZFNvdXJjZUlkKAotKyAgcmV0dXJuIFVybEFuZFNvdXJjZUlkewotICAgICAgIFdlYkNvbnRl bnRzT2JzZXJ2ZXI6OndlYl9jb250ZW50cygpLT5HZXRMYXN0Q29tbWl0dGVkVVJMKCksCi0gICAg ICAgV2ViQ29udGVudHNPYnNlcnZlcjo6d2ViX2NvbnRlbnRzKCkKLSAgICAgICAgICAgLT5HZXRQ cmltYXJ5TWFpbkZyYW1lKCkKLS0gICAgICAgICAgLT5HZXRQYWdlVWttU291cmNlSWQoKSk7Ci0r ICAgICAgICAgIC0+R2V0UGFnZVVrbVNvdXJjZUlkKCl9OwotIH0KLSAKLSB2b2lkIFJlZGlyZWN0 Q2hhaW5EZXRlY3Rvcjo6SGFuZGxlUmVkaXJlY3RDaGFpbigKLUBAIC02MTksOCArNjE5LDggQEAg dm9pZCBESVBTQm91bmNlRGV0ZWN0b3I6OkRpZFN0YXJ0TmF2aWdhdAotICAgICAgICFjbGllbnRf ZGV0ZWN0aW9uX3N0YXRlXy5oYXNfdmFsdWUoKSkgewotICAgICBzZXJ2ZXJfYm91bmNlX2RldGVj dGlvbl9zdGF0ZS0+bmF2aWdhdGlvbl9zdGFydCA9Ci0gICAgICAgICBkZWxlZ2F0ZV8tPkdldExh c3RDb21taXR0ZWRVUkwoKS51cmwuaXNfZW1wdHkoKQotLSAgICAgICAgICAgID8gVXJsQW5kU291 cmNlSWQobmF2aWdhdGlvbl9oYW5kbGUtPkdldEluaXRpYXRvcigpLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWttOjprSW52YWxpZFNvdXJjZUlkKQotKyAgICAgICAgICAgID8gVXJs QW5kU291cmNlSWR7bmF2aWdhdGlvbl9oYW5kbGUtPkdldEluaXRpYXRvcigpLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWttOjprSW52YWxpZFNvdXJjZUlkfQotICAgICAgICAgICAg IDogZGVsZWdhdGVfLT5HZXRMYXN0Q29tbWl0dGVkVVJMKCk7Ci0gICAgIHJldHVybjsKLSAgIH0K LUBAIC05NjEsOCArOTYxLDggQEAgdm9pZCBESVBTQm91bmNlRGV0ZWN0b3I6OkRpZEZpbmlzaE5h dmlnYQotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY2Nlc3NfdHlwZXMuc2l6ZSgpIC0g MTsgaSsrKSB7Ci0gICAgIHJlZGlyZWN0cy5wdXNoX2JhY2soc3RkOjptYWtlX3VuaXF1ZTxESVBT UmVkaXJlY3RJbmZvPigKLS0gICAgICAgIC8qdXJsPSovVXJsQW5kU291cmNlSWQobmF2aWdhdGlv bl9oYW5kbGUtPkdldFJlZGlyZWN0Q2hhaW4oKVtpXSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmF2aWdhdGlvbl9oYW5kbGUtPkdldFJlZGlyZWN0U291cmNlSWQoaSkpLAotKyAg ICAgICAgLyp1cmw9Ki9VcmxBbmRTb3VyY2VJZHtuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0UmVkaXJl Y3RDaGFpbigpW2ldLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9u X2hhbmRsZS0+R2V0UmVkaXJlY3RTb3VyY2VJZChpKX0sCi0gICAgICAgICAvKnJlZGlyZWN0X3R5 cGU9Ki9ESVBTUmVkaXJlY3RUeXBlOjprU2VydmVyLAotICAgICAgICAgLyphY2Nlc3NfdHlwZT0q L2FjY2Vzc190eXBlc1tpXSwKLSAgICAgICAgIC8qdGltZT0qL2Nsb2NrXy0+Tm93KCkpKTsKLUBA IC05NzEsMTYgKzk3MSwxNiBAQCB2b2lkIERJUFNCb3VuY2VEZXRlY3Rvcjo6RGlkRmluaXNoTmF2 aWdhCi0gICBpZiAobmF2aWdhdGlvbl9oYW5kbGUtPkhhc0NvbW1pdHRlZCgpKSB7Ci0gICAgIGNv bW1pdHRlZF9yZWRpcmVjdF9jb250ZXh0Xy5BcHBlbmRDb21taXR0ZWQoCi0gICAgICAgICBzdGQ6 Om1vdmUoc2VydmVyX3N0YXRlLT5uYXZpZ2F0aW9uX3N0YXJ0KSwgc3RkOjptb3ZlKHJlZGlyZWN0 cyksCi0tICAgICAgICBVcmxBbmRTb3VyY2VJZChuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0VVJMKCks Ci0tICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0TmV4dFBhZ2VV a21Tb3VyY2VJZCgpKSwKLSsgICAgICAgIFVybEFuZFNvdXJjZUlke25hdmlnYXRpb25faGFuZGxl LT5HZXRVUkwoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25faGFuZGxlLT5H ZXROZXh0UGFnZVVrbVNvdXJjZUlkKCl9LAotICAgICAgICAgY3VycmVudF9wYWdlX2hhc19zdGlj a3lfYWN0aXZhdGlvbik7Ci0gICB9IGVsc2UgewotICAgICAvLyBGb3IgdW5jb21taXR0ZWQgbmF2 aWdhdGlvbnMsIHRyZWF0IHRoZSBsYXN0IFVSTCB2aXNpdGVkIGFzIGEgc2VydmVyCi0gICAgIC8v IHJlZGlyZWN0LCBzbyBpdCBpcyBjb25zaWRlcmVkIGEgcG90ZW50aWFsIHRyYWNrZXIuCi0gICAg IGNvbnN0IHNpemVfdCBpID0gYWNjZXNzX3R5cGVzLnNpemUoKSAtIDE7Ci0gICAgIHJlZGlyZWN0 cy5wdXNoX2JhY2soc3RkOjptYWtlX3VuaXF1ZTxESVBTUmVkaXJlY3RJbmZvPigKLS0gICAgICAg IC8qdXJsPSovVXJsQW5kU291cmNlSWQobmF2aWdhdGlvbl9oYW5kbGUtPkdldFJlZGlyZWN0Q2hh aW4oKVtpXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbl9oYW5k bGUtPkdldFJlZGlyZWN0U291cmNlSWQoaSkpLAotKyAgICAgICAgLyp1cmw9Ki9VcmxBbmRTb3Vy Y2VJZHtuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0UmVkaXJlY3RDaGFpbigpW2ldLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0UmVkaXJlY3RTb3Vy Y2VJZChpKX0sCi0gICAgICAgICAvKnJlZGlyZWN0X3R5cGU9Ki9ESVBTUmVkaXJlY3RUeXBlOjpr U2VydmVyLAotICAgICAgICAgLyphY2Nlc3NfdHlwZT0qL2FjY2Vzc190eXBlc1tpXSwKLSAgICAg ICAgIC8qdGltZT0qL2Nsb2NrXy0+Tm93KCkpKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmls ZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9lbnRlcnByaXNlL3Byb2Zp bGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJvdHRsZS5jYwot LS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9m aWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1Mi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2Uv cHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxl LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDg5OTE1NDE0ICswMjAwCi1AQCAtNjcsOCArNjcsOCBA QCBiYXNlOjpmbGF0X21hcDxzdGQ6OnN0cmluZywgU0FNTFByb2ZpbGVBCi0gICAvLyBUT0RPKGNy YnVnLmNvbS80MDI2Nzk5Nik6IEFkZCBhY3R1YWwgZG9tYWlucyB3aXRoIGF0dHJpYnV0ZSBuYW1l cy4KLSAgIHByb2ZpbGVfYXR0cmlidXRlcy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAotICAgICAg ICJzdXBwb3J0ZWQudGVzdCIsCi0tICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1dGVzKCJwbGFjZWhv bGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAicGxhY2Vob2xkZXJUb2tlbiIpKSk7Ci0rICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1dGVz eyJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiJ9KSk7Ci0gCi0gICAvLyBFeHRyYWN0IGRv bWFpbnMgYW5kIGF0dHJpYnV0ZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHN3aXRjaC4KLSAgIGNv bnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjb21tYW5kX2xpbmUgPQotZGlmZiAtdXAgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2Zp bGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9h Y2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MKLS0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vz cy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjUzLjAwMDAwMDAwMCArMDIwMAotKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNz L2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250ZXh0LmNjCTIwMjQtMDYt MDIgMjM6NTE6MjUuNDkwOTE1NDM4ICswMjAwCi1AQCAtMzg1LDcgKzM4NSw3IEBAIGJvb2wgU2hv dWxkQmxvY2tBY2Nlc3NUb1BhdGgoY29uc3QgYmFzZToKLSAgICAgICBEQ0hFQ0soYmxvY2sucGF0 aCk7Ci0gICAgICAgYmxvY2tlZF9wYXRoID0gYmFzZTo6RmlsZVBhdGgoYmxvY2sucGF0aCk7Ci0g ICAgIH0KLS0gICAgcnVsZXMuZW1wbGFjZV9iYWNrKGJsb2NrZWRfcGF0aCwgYmxvY2sudHlwZSk7 Ci0rICAgIHJ1bGVzLmVtcGxhY2VfYmFjaygpID0ge2Jsb2NrZWRfcGF0aCwgYmxvY2sudHlwZX07 Ci0gICB9Ci0gCi0gICBiYXNlOjpGaWxlUGF0aCBuZWFyZXN0X2FuY2VzdG9yOwotQEAgLTE2ODUs MTEgKzE2ODUsMTEgQEAgdm9pZCBDaHJvbWVGaWxlU3lzdGVtQWNjZXNzUGVybWlzc2lvbkNvbgot ICAgLy8gcHJvZmlsZSdzIGRpcmVjdG9yeSwgYXNzdW1pbmcgdGhlIHByb2ZpbGUgZGlyIGlzIGEg Y2hpbGQgb2YgdGhlIHVzZXIgZGF0YQotICAgLy8gZGlyLgotICAgc3RkOjp2ZWN0b3I8QmxvY2tQ YXRoUnVsZT4gZXh0cmFfcnVsZXM7Ci0tICBleHRyYV9ydWxlcy5lbXBsYWNlX2JhY2socHJvZmls ZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENoaWxkcmVuKTsKLSsgIGV4dHJhX3J1 bGVzLmVtcGxhY2VfYmFjaygpID0ge3Byb2ZpbGVfLT5HZXRQYXRoKCkuRGlyTmFtZSgpLCBrQmxv Y2tBbGxDaGlsZHJlbn07Ci0gICBpZiAoZ19icm93c2VyX3Byb2Nlc3MtPnByb2ZpbGVfbWFuYWdl cigpKSB7Ci0tICAgIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjaygKLSsgICAgZXh0cmFfcnVsZXMu ZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJvZmlsZV9t YW5hZ2VyKCktPnVzZXJfZGF0YV9kaXIoKSwKLS0gICAgICAgIGtCbG9ja0FsbENoaWxkcmVuKTsK LSsgICAgICAgIGtCbG9ja0FsbENoaWxkcmVufTsKLSAgIH0KLSAKLSAgIGJhc2U6OlRocmVhZFBv b2w6OlBvc3RUYXNrQW5kUmVwbHlXaXRoUmVzdWx0KAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMvcGFn ZV9kaXNjYXJkZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMvcGFnZV9k aXNjYXJkZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3Bl cmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYy5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9t ZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDkwOTE1NDM4 ICswMjAwCi1AQCAtNTMsNyArNTMsNyBAQCBzdGQ6OnZlY3RvcjxQYWdlRGlzY2FyZGVyOjpEaXNj YXJkRXZlbnQ+Ci0gICAgIGlmIChsaWZlY3ljbGVfdW5pdC0+RGlzY2FyZFRhYigKLSAgICAgICAg ICAgICBkaXNjYXJkX3JlYXNvbiwKLSAgICAgICAgICAgICAvKm1lbW9yeV9mb290cHJpbnRfZXN0 aW1hdGU9Ki9wcm94eS5zZWNvbmQpKSB7Ci0tICAgICAgZGlzY2FyZF9ldmVudHMuZW1wbGFjZV9i YWNrKGJhc2U6OlRpbWVUaWNrczo6Tm93KCksIHByb3h5LnNlY29uZCk7Ci0rICAgICAgZGlzY2Fy ZF9ldmVudHMuZW1wbGFjZV9iYWNrKCkgPSB7YmFzZTo6VGltZVRpY2tzOjpOb3coKSwgcHJveHku c2Vjb25kfTsKLSAgICAgfQotICAgfQotICAgcmV0dXJuIGRpc2NhcmRfZXZlbnRzOwotZGlmZiAt dXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0 X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvcmVuZGVyZXJfY29udGV4dF9t ZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY2hyb21lL2Jyb3dzZXIvcmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRl eHRfbWVudS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU0LjAw MDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv cmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYwkyMDI0LTA2 LTAyIDIzOjUxOjI1LjQ5MjkxNTQ4NiArMDIwMAotQEAgLTQwNDQsMTAgKzQwNDQsMTAgQEAgdm9p ZCBSZW5kZXJWaWV3Q29udGV4dE1lbnU6OkV4ZWNPcGVuQ29tcAotICAgICBhdXRvZmlsbDo6TG9j YWxGcmFtZVRva2VuIGZyYW1lX3Rva2VuID0gZHJpdmVyLT5HZXRGcmFtZVRva2VuKCk7Ci0gICAg IGNsaWVudC0+R2V0TWFuYWdlcigpLk9wZW5Db21wb3NlKAotICAgICAgICAgKmRyaXZlciwKLS0g ICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFsSWQoCi0tICAgICAgICAgICAgZnJhbWVfdG9rZW4s IGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChwYXJhbXNfLmZvcm1fcmVuZGVyZXJfaWQpKSwKLS0g ICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2JhbElkKAotLSAgICAgICAgICAgIGZyYW1lX3Rva2Vu LCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQpKSwK LSsgICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFsSWR7Ci0rICAgICAgICAgICAgZnJhbWVfdG9r ZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChwYXJhbXNfLmZvcm1fcmVuZGVyZXJfaWQpfSwK LSsgICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2JhbElkewotKyAgICAgICAgICAgIGZyYW1lX3Rv a2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQp fSwKLSAgICAgICAgIGNvbXBvc2U6OkNvbXBvc2VNYW5hZ2VySW1wbDo6VWlFbnRyeVBvaW50Ojpr Q29udGV4dE1lbnUpOwotICAgICBHZXRCcm93c2VyKCktPndpbmRvdygpLT5Ob3RpZnlQcm9tb0Zl YXR1cmVVc2VkKAotICAgICAgICAgY29tcG9zZTo6ZmVhdHVyZXM6OmtFbmFibGVDb21wb3NlKTsK LWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2Zp bGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRv ZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1OC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL2F1dG9m aWxsL2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NDkyOTE1NDg2ICswMjAwCi1AQCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgQXV0b2ZpbGxDb250ZXh0 TWVudU1hbmFnZXI6OkV4ZWN1dGUKLSAgICAgQXV0b2ZpbGxNYW5hZ2VyJiBtYW5hZ2VyKSB7Ci0g ICBhdXRvJiBkcml2ZXIgPSBzdGF0aWNfY2FzdDxDb250ZW50QXV0b2ZpbGxEcml2ZXImPihtYW5h Z2VyLmRyaXZlcigpKTsKLSAgIGRyaXZlci5icm93c2VyX2V2ZW50cygpLlJlbmRlcmVyU2hvdWxk VHJpZ2dlclN1Z2dlc3Rpb25zKAotLSAgICAgIEZpZWxkR2xvYmFsSWQoZHJpdmVyLkdldEZyYW1l VG9rZW4oKSwKLS0gICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJZChwYXJhbXNfLmZp ZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAgRmllbGRHbG9iYWxJZHtkcml2ZXIuR2V0RnJhbWVU b2tlbigpLAotKyAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmll bGRfcmVuZGVyZXJfaWQpfSwKLSAgICAgICBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNl OjprTWFudWFsRmFsbGJhY2tQYXltZW50cyk7Ci0gICBMb2dNYW51YWxGYWxsYmFja0NvbnRleHRN ZW51RW50cnlBY2NlcHRlZCgKLSAgICAgICBzdGF0aWNfY2FzdDxCcm93c2VyQXV0b2ZpbGxNYW5h Z2VyJj4obWFuYWdlciksCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9i cm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50LmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvb21uaWJv eC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50LmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAwICswMjAwCi0rKysg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9v bW5pYm94X2NsaWVudC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5MjkxNTQ4NiArMDIwMAotQEAg LTUxMiwxMCArNTEyLDEwIEBAIHZvaWQgQ2hyb21lT21uaWJveENsaWVudDo6T25BdXRvY29tcGxl dGUKLSAgICAgICAgICAgICAgIGFsdGVybmF0aXZlX25hdl9tYXRjaCk7Ci0gCi0gICAvLyBTdG9y ZSB0aGUgZGV0YWlscyBuZWNlc3NhcnkgdG8gb3BlbiB0aGUgb21uaWJveCBtYXRjaCB2aWEgYnJv d3NlciBjb21tYW5kcy4KLS0gIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3BhcmFtcyhM b2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFtcygKLSsgIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZp Z2F0aW9uX3BhcmFtcyhMb2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFtc3sKLSAgICAgICBkZXN0 aW5hdGlvbl91cmwsIGRpc3Bvc2l0aW9uLCB0cmFuc2l0aW9uLCBtYXRjaF9zZWxlY3Rpb25fdGlt ZXN0YW1wLAotICAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhvdXRfc2NoZW1lLAot LSAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWUsIG1hdGNoLmV4 dHJhX2hlYWRlcnMpKTsKLSsgICAgICBkZXN0aW5hdGlvbl91cmxfZW50ZXJlZF93aXRoX2h0dHBf c2NoZW1lLCBtYXRjaC5leHRyYV9oZWFkZXJzfSk7Ci0gCi0gICBpZiAoYnJvd3Nlcl8pIHsKLSAg ICAgYXV0byBuYXZpZ2F0aW9uID0gY2hyb21lOjpPcGVuQ3VycmVudFVSTChicm93c2VyXyk7Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9o dWIvbWVudV9ub3RpZmljYXRpb25fc2VydmljZS5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25v dGlmaWNhdGlvbl9zZXJ2aWNlLmgKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9i cm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2VydmljZS5oLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAwICswMjAwCi0rKysg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVf bm90aWZpY2F0aW9uX3NlcnZpY2UuaAkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5MzkxNTUwOSArMDIw MAotQEAgLTI0LDYgKzI0LDcgQEAgc3RydWN0IE1lbnVOb3RpZmljYXRpb25FbnRyeSB7Ci0gICBp bnQgY29tbWFuZCA9IDA7Ci0gICBzdGQ6OnUxNnN0cmluZyBsYWJlbDsKLSAgIHNhZmV0eV9odWI6 OlNhZmV0eUh1Yk1vZHVsZVR5cGUgbW9kdWxlOwotKyAgTWVudU5vdGlmaWNhdGlvbkVudHJ5KGF1 dG8gYywgYXV0byBsLCBhdXRvIG0pIDogY29tbWFuZChjKSwgbGFiZWwobCksIG1vZHVsZShtKSB7 IH0KLSB9OwotIAotIG5hbWVzcGFjZSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL2ZyYW1lL2NvbnRlbnRzX2xheW91dF9tYW5hZ2VyLmNj Lm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jy b3dzZXIvdWkvdmlld3MvZnJhbWUvY29udGVudHNfbGF5b3V0X21hbmFnZXIuY2MKLS0tLSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL2ZyYW1lL2NvbnRlbnRz X2xheW91dF9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6 MDA6NTkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy9mcmFtZS9jb250ZW50c19sYXlvdXRfbWFuYWdlci5jYwkyMDI0LTA2 LTAyIDIzOjUxOjI1LjQ5MzkxNTUwOSArMDIwMAotQEAgLTQ0LDIwICs0NCwyMCBAQCB2aWV3czo6 UHJvcG9zZWRMYXlvdXQgQ29udGVudHNMYXlvdXRNYW5hCi0gCi0gICAvLyBEZXZUb29scyBjYXJl cyBhYm91dCB0aGUgc3BlY2lmaWMgcG9zaXRpb24sIHNvIHdlIGhhdmUgdG8gY29tcGVuc2F0ZSBS VEwKLSAgIC8vIGxheW91dCBoZXJlLgotLSAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2Vf YmFjaygKLSsgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAg ICBkZXZ0b29sc192aWV3Xy5nZXQoKSwgZGV2dG9vbHNfdmlld18tPkdldFZpc2libGUoKSwKLSAg ICAgICBob3N0X3ZpZXcoKS0+R2V0TWlycm9yZWRSZWN0KG5ld19kZXZ0b29sc19ib3VuZHMpLAot LSAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXplKSk7Ci0tICBsYXlvdXRzLmNo aWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAotKyAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNvbnRh aW5lcl9zaXplKX07Ci0rICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7 Ci0gICAgICAgY29udGVudHNfdmlld18uZ2V0KCksIGNvbnRlbnRzX3ZpZXdfLT5HZXRWaXNpYmxl KCksCi0gICAgICAgaG9zdF92aWV3KCktPkdldE1pcnJvcmVkUmVjdChuZXdfY29udGVudHNfYm91 bmRzKSwKLS0gICAgICB2aWV3czo6U2l6ZUJvdW5kcyhjb250YWluZXJfc2l6ZSkpOwotKyAgICAg IHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXplKX07Ci0gCi0gICAvLyBFbnRlcnByaXNl IHdhdGVybWFyayB2aWV3IGlzIGFsd2F5cyBvdmVybGFpZCwgZXZlbiB3aGVuIGVtcHR5LgotICAg aWYgKHdhdGVybWFya192aWV3XykgewotLSAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFj ZV9iYWNrKAotKyAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0g ICAgICAgICB3YXRlcm1hcmtfdmlld18uZ2V0KCksIHdhdGVybWFya192aWV3Xy0+R2V0VmlzaWJs ZSgpLAotLSAgICAgICAgZ2Z4OjpSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCB2aWV3czo6U2l6 ZUJvdW5kcyhjb250YWluZXJfc2l6ZSkpOwotKyAgICAgICAgZ2Z4OjpSZWN0KDAsIDAsIHdpZHRo LCBoZWlnaHQpLCB2aWV3czo6U2l6ZUJvdW5kcyhjb250YWluZXJfc2l6ZSl9OwotICAgfQotICAg bGF5b3V0cy5ob3N0X3NpemUgPSBnZng6OlNpemUod2lkdGgsIGhlaWdodCk7Ci0gICByZXR1cm4g bGF5b3V0czsKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9h c2tfdmlldy5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1OS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Bl cm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fza192aWV3LmNjCTIwMjQtMDYt MDMgMTg6MzE6MDIuNDU2ODA0MzQ5ICswMjAwCi1AQCAtNzgsOCArNzgsOCBAQCBFbWJlZGRlZFBl cm1pc3Npb25Qcm9tcHRBc2tWaWV3OjpHZXRCdXR0Ci0gICAgICAgYnV0dG9ucy5wdXNoX2JhY2so YWxsb3dfYWx3YXlzKTsKLSAgICAgfQotICAgfSBlbHNlIHsKLS0gICAgYnV0dG9ucy5lbXBsYWNl X2JhY2sobDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0 eWxlOjprVG9uYWwsIGtBbGxvd0lkKTsKLSsgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHts MTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCwga0FsbG93SWR9OwotICAgfQotICAgcmV0dXJuIGJ1dHRvbnM7Ci0gfQotZGlmZiAtdXAg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9u cy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcuaC5ub19tYXRjaGluZ19jb25z dHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Bl cm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oCi0tLS0gY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9l bWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcuaC5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3LmgJMjAyNC0wNi0wMiAyMzo1MToyNS40OTQ5MTU1 MzQgKzAyMDAKLUBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIEVtYmVkZGVkUGVybWlzc2lvblByb21w dEJhc2VWaWV3IDoKLSAgIHN0cnVjdCBSZXF1ZXN0TGluZUNvbmZpZ3VyYXRpb24gewotICAgICBj b25zdCByYXdfcHRyPGNvbnN0IGdmeDo6VmVjdG9ySWNvbj4gaWNvbjsKLSAgICAgc3RkOjp1MTZz dHJpbmcgbWVzc2FnZTsKLSsgICAgUmVxdWVzdExpbmVDb25maWd1cmF0aW9uKGF1dG8gaSwgYXV0 byBtKSA6IGljb24oaSksIG1lc3NhZ2UobSkgeyB9Ci0gICB9OwotIAotICAgc3RydWN0IEJ1dHRv bkNvbmZpZ3VyYXRpb24gewotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9w b2xpY3lfdmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X3BvbGljeV92aWV3LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21w dF9wb2xpY3lfdmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAw OjU5LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jy b3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9s aWN5X3ZpZXcuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTQ5MTU1MzQgKzAyMDAKLUBAIC04OCw4 ICs4OCw4IEBAIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFBvbGljeVZpZXc6OkdldFIKLSBzdGQ6 OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpCdXR0b25Db25maWd1 cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFBvbGljeVZpZXc6OkdldEJ1dHRvbnND b25maWd1cmF0aW9uKCkgY29uc3QgewotICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlv bj4gYnV0dG9uczsKLS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwxMG5fdXRpbDo6R2V0U3RyaW5n VVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9PS19MQUJFTCksCi0tICAgICAgICAgICAgICAgICAg ICAgICBCdXR0b25UeXBlOjprUG9saWN5T0ssIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsKLSsg IGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNf RU1CRURERURfUFJPTVBUX09LX0xBQkVMKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRv blR5cGU6OmtQb2xpY3lPSywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9OwotICAgcmV0dXJuIGJ1 dHRvbnM7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2 aW91c2x5X2RlbmllZF92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYwotLS0tIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRk ZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYy5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAwMDAwMCArMDIwMAotKysrIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMv ZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYwkyMDI0 LTA2LTAyIDIzOjUxOjI1LjQ5NDkxNTUzNCArMDIwMAotQEAgLTY2LDEzICs2NiwxMyBAQCBFbWJl ZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVuaWVkCi0gc3RkOjp2ZWN0b3I8RW1iZWRk ZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseURlbmllZFZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRp b24+Ci0gRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseURlbmllZFZpZXc6OkdldEJ1 dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3QgewotICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmln dXJhdGlvbj4gYnV0dG9uczsKLS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAgYnV0dG9ucy5l bXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19F TUJFRERFRF9QUk9NUFRfQ09OVElOVUVfTk9UX0FMTE9XSU5HKSwKLS0gICAgICBCdXR0b25UeXBl OjprQ29udGludWVOb3RBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwotKyAgICAg IEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25h bH07Ci0gCi0tICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAgICBidXR0b25zLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlT U0lPTl9BTExPV19USElTX1RJTUUpLAotLSAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1Rp bWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dUaGlzVGltZUlkKTsKLSsgICAgICAg IEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0Fs bG93VGhpc1RpbWVJZH07Ci0gCi0gICByZXR1cm4gYnV0dG9uczsKLSB9Ci1kaWZmIC11cCBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2Vt YmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNs eV9ncmFudGVkX3ZpZXcuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93 c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZp b3VzbHlfZ3JhbnRlZF92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkg MTg6MDA6NTkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21w dF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5NTkxNTU1 NyArMDIwMAotQEAgLTc3LDEzICs3NywxMyBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2 aW91c2x5R3JhbnRlCi0gc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlv dXNseUdyYW50ZWRWaWV3OjpCdXR0b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lv blByb21wdFByZXZpb3VzbHlHcmFudGVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBj b25zdCB7Ci0gICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAg YnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAg ICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5V RV9BTExPV0lORyksCi0gICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpC dXR0b25TdHlsZTo6a1RvbmFsLAotLSAgICAgIGtDb250aW51ZUFsbG93aW5nSWQpOwotKyAgICAg IGtDb250aW51ZUFsbG93aW5nSWR9OwotIAotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICBi dXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRG MTYoSURTX0VNQkVEREVEX1BST01QVF9TVE9QX0FMTE9XSU5HKSwKLS0gICAgICBCdXR0b25UeXBl OjprU3RvcEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga1N0b3BBbGxvd2luZ0lk KTsKLSsgICAgICBCdXR0b25UeXBlOjprU3RvcEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCwga1N0b3BBbGxvd2luZ0lkfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0KLWRpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJf c3R5bGVfdmlld3MuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYwotLS0t IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJf c3R5bGVfdmlld3MuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1 OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93 c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NDk1OTE1NTU3ICswMjAwCi1AQCAtMTIxNCwxMCArMTIxNCwxMCBAQCBTa1BhdGggQ2hyb21lUmVm cmVzaDIwMjNUYWJTdHlsZVZpZXdzOjpHCi0gCi0gICAgIC8vIFJhZGlpIGFyZSBjbG9ja3dpc2Ug ZnJvbSB0b3AgbGVmdC4KLSAgICAgY29uc3QgU2tWZWN0b3IgcmFkaWlbNF0gPSB7Ci0tICAgICAg ICBTa1ZlY3Rvcih0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJf cmFkaXVzKSwKLS0gICAgICAgIFNrVmVjdG9yKHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRv cF9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAotLSAgICAgICAgU2tWZWN0b3IoYm90dG9tX2NvbnRl bnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cyksCi0tICAgICAg ICBTa1ZlY3Rvcihib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9j b3JuZXJfcmFkaXVzKX07Ci0rICAgICAgICBTa1ZlY3Rvcnt0b3BfY29udGVudF9jb3JuZXJfcmFk aXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzfSwKLSsgICAgICAgIFNrVmVjdG9ye3RvcF9j b250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXN9LAotKyAgICAg ICAgU2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRf Y29ybmVyX3JhZGl1c30sCi0rICAgICAgICBTa1ZlY3Rvcntib3R0b21fY29udGVudF9jb3JuZXJf cmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzfX07Ci0gICAgIFNrUlJlY3QgcnJl Y3Q7Ci0gICAgIHJyZWN0LnNldFJlY3RSYWRpaShTa1JlY3Q6Ok1ha2VMVFJCKGxlZnQsIHRvcCwg cmlnaHQsIGJvdHRvbSksIHJhZGlpKTsKLSAgICAgU2tQYXRoIHBhdGg7Ci1kaWZmIC11cCBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYl9hcHBsaWNhdGlvbnMvc3Vi X2FwcHNfc2VydmljZV9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19z ZXJ2aWNlX2ltcGwuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2Vy L3VpL3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1 Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5NjkxNTU4MSArMDIw MAotQEAgLTEwOCw3ICsxMDgsNyBAQCBBZGRPcHRpb25zRnJvbU1vam8oCi0gICAgICAgICAgICAg ICAgICAgICAgQ29udmVydFBhdGhUb1VybChzdWJfYXBwLT5tYW5pZmVzdF9pZF9wYXRoLCBvcmln aW4pKTsKLSAgICAgQVNTSUdOX09SX1JFVFVSTihHVVJMIGluc3RhbGxfdXJsLAotICAgICAgICAg ICAgICAgICAgICAgIENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+aW5zdGFsbF91cmxfcGF0aCwg b3JpZ2luKSk7Ci0tICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUobWFuaWZlc3Rf aWQpLCBzdGQ6Om1vdmUoaW5zdGFsbF91cmwpKTsKLSsgICAgc3ViX2FwcHMuZW1wbGFjZV9iYWNr KCkgPSB7c3RkOjptb3ZlKG1hbmlmZXN0X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxfdXJsKX07Ci0g ICB9Ci0gICByZXR1cm4gc3ViX2FwcHM7Ci0gfQotQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFN1 YkFwcHNTZXJ2aWNlSW1wbDo6U2NoZWR1bGVTdWJBcHBJCi0gICAgICAgICBiYXNlOjpCaW5kT25j ZSgKLSAgICAgICAgICAgICBbXSh3ZWJhcHBzOjpNYW5pZmVzdElkIG1hbmlmZXN0X2lkLCBjb25z dCB3ZWJhcHBzOjpBcHBJZCYgYXBwX2lkLAotICAgICAgICAgICAgICAgIHdlYmFwcHM6Okluc3Rh bGxSZXN1bHRDb2RlIHJlc3VsdF9jb2RlKSB7Ci0tICAgICAgICAgICAgICByZXR1cm4gU3ViQXBw SW5zdGFsbFJlc3VsdChtYW5pZmVzdF9pZCwgYXBwX2lkLCByZXN1bHRfY29kZSk7Ci0rICAgICAg ICAgICAgICByZXR1cm4gU3ViQXBwSW5zdGFsbFJlc3VsdHttYW5pZmVzdF9pZCwgYXBwX2lkLCBy ZXN1bHRfY29kZX07Ci0gICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICBtYW5pZmVzdF9pZCkK LSAgICAgICAgICAgICAuVGhlbihjb25jdXJyZW50LkNyZWF0ZUNhbGxiYWNrKCkpLAotZGlmZiAt dXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvdGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJp bGl0aWVzLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYwotLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjAxLjAwMDAwMDAwMCArMDIwMAot KysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFi aWxpdGllcy5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5NjkxNTU4MSArMDIwMAotQEAgLTM0Niw3 ICszNDYsNyBAQCBTdGF0dXMgUGFyc2VNb2JpbGVFbXVsYXRpb24oY29uc3QgYmFzZTo6Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgIid2ZXJzaW9uJyBmaWVsZCBvZiB0eXBlIHN0cmluZyIpOwot ICAgICAgICAgfQotIAotLSAgICAgICAgYnJhbmRzLmVtcGxhY2VfYmFjaygqYnJhbmQsICp2ZXJz aW9uKTsKLSsgICAgICAgIGJyYW5kcy5lbXBsYWNlX2JhY2soKSA9IHsqYnJhbmQsICp2ZXJzaW9u fTsKLSAgICAgICB9Ci0gCi0gICAgICAgY2xpZW50X2hpbnRzLmJyYW5kcyA9IHN0ZDo6bW92ZShi cmFuZHMpOwotQEAgLTM4NCw3ICszODQsNyBAQCBTdGF0dXMgUGFyc2VNb2JpbGVFbXVsYXRpb24o Y29uc3QgYmFzZTo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgImEgJ3ZlcnNpb24nIGZpZWxk IG9mIHR5cGUgc3RyaW5nIik7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBmdWxsX3ZlcnNpb25f bGlzdC5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Ci0rICAgICAgICBmdWxsX3ZlcnNp b25fbGlzdC5lbXBsYWNlX2JhY2soKSA9IHsqYnJhbmQsICp2ZXJzaW9ufTsKLSAgICAgICB9Ci0g Ci0gICAgICAgY2xpZW50X2hpbnRzLmZ1bGxfdmVyc2lvbl9saXN0ID0gc3RkOjptb3ZlKGZ1bGxf dmVyc2lvbl9saXN0KTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50 cy9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvYWdncmVnYXRhYmxlX3V0aWxzLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdHRyaWJ1dGlv bl9yZXBvcnRpbmcvYWdncmVnYXRhYmxlX3V0aWxzLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9hZ2dyZWdhdGFibGVfdXRpbHMu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTowNS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXR0cmlidXRpb25f cmVwb3J0aW5nL2FnZ3JlZ2F0YWJsZV91dGlscy5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5Nzkx NTYwNCArMDIwMAotQEAgLTMzLDcgKzMzLDcgQEAgc3RkOjp2ZWN0b3I8TnVsbEFnZ3JlZ2F0YWJs ZVJlcG9ydD4gR2V0TgotICAgICB9Ci0gCi0gICAgIGlmIChnZW5lcmF0ZV9mdW5jKGkpKSB7Ci0t ICAgICAgcmVwb3J0cy5lbXBsYWNlX2JhY2soZmFrZV9zb3VyY2VfdGltZSk7Ci0rICAgICAgcmVw b3J0cy5lbXBsYWNlX2JhY2soKSA9IHtmYWtlX3NvdXJjZV90aW1lfTsKLSAgICAgfQotICAgfQot ICAgcmV0dXJuIHJlcG9ydHM7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBv bmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL3JlZ2lzdHJhdGlvbl9pbmZvLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdHRyaWJ1 dGlvbl9yZXBvcnRpbmcvcmVnaXN0cmF0aW9uX2luZm8uY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL3JlZ2lzdHJhdGlvbl9pbmZv LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MDUuMDAwMDAwMDAw ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F0dHJpYnV0aW9u X3JlcG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5Nzkx NTYwNCArMDIwMAotQEAgLTk2LDcgKzk2LDcgQEAgUmVnaXN0cmF0aW9uSW5mbzo6UGFyc2VJbmZv KGNvbnN0IG5ldDo6cwotIAotICAgQVNTSUdOX09SX1JFVFVSTihib29sIHJlcG9ydF9oZWFkZXJf ZXJyb3JzLCBQYXJzZVJlcG9ydEhlYWRlckVycm9ycyhkaWN0KSk7Ci0gCi0tICByZXR1cm4gUmVn aXN0cmF0aW9uSW5mbyhwcmVmZXJyZWRfcGxhdGZvcm0sIHJlcG9ydF9oZWFkZXJfZXJyb3JzKTsK LSsgIHJldHVybiBSZWdpc3RyYXRpb25JbmZve3ByZWZlcnJlZF9wbGF0Zm9ybSwgcmVwb3J0X2hl YWRlcl9lcnJvcnN9OwotIH0KLSAKLSB9ICAvLyBuYW1lc3BhY2UgYXR0cmlidXRpb25fcmVwb3J0 aW5nCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwv Y29udGVudC9yZW5kZXJlci9mb3JtX2F1dG9maWxsX3V0aWwuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQv cmVuZGVyZXIvZm9ybV9hdXRvZmlsbF91dGlsLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9jb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQvcmVuZGVyZXIvZm9ybV9hdXRvZmlsbF91dGls LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MDUuMDAwMDAwMDAw ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2Nv bnRlbnQvcmVuZGVyZXIvZm9ybV9hdXRvZmlsbF91dGlsLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NDk3OTE1NjA0ICswMjAwCi1AQCAtMjI3OSw3ICsyMjc5LDcgQEAgc3RkOjp2ZWN0b3I8c3RkOjpw YWlyPEZpZWxkUmVmLCBXZWJBdXRvZgotICAgICBpZiAoZWxlbWVudC5Gb2N1c2VkKCkpIHsKLSAg ICAgICBmb2N1c2VkX2ZpZWxkID0geyZmaWVsZCwgZWxlbWVudH07Ci0gICAgIH0gZWxzZSB7Ci0t ICAgICAgdW5mb2N1c2VkX2ZpZWxkcy5lbXBsYWNlX2JhY2soJmZpZWxkLCBlbGVtZW50KTsKLSsg ICAgICB1bmZvY3VzZWRfZmllbGRzLmVtcGxhY2VfYmFjaygpID0geyZmaWVsZCwgZWxlbWVudH07 Ci0gICAgIH0KLSAgIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9u ZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRv ZmlsbF90YWJsZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2Fk ZHJlc3NfYXV0b2ZpbGxfdGFibGUuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBv bmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0 b2ZpbGxfdGFibGUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTow NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMv YXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0b2ZpbGxf dGFibGUuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTc5MTU2MDQgKzAyMDAKLUBAIC02MzUsMTAg KzYzNSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2ZpbGxQcm9maWxlPiBBZGRyZXNzCi0gICAg IH0KLSAKLSAgICAgYmFzZTo6c3Bhbjxjb25zdCB1aW50OF90PiBvYnNlcnZhdGlvbnNfZGF0YSA9 IHMuQ29sdW1uQmxvYigzKTsKLS0gICAgZmllbGRfdHlwZV92YWx1ZXMuZW1wbGFjZV9iYWNrKAot KyAgICBmaWVsZF90eXBlX3ZhbHVlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAgIHR5cGUs IHMuQ29sdW1uU3RyaW5nMTYoMSksIHMuQ29sdW1uSW50KDIpLAotICAgICAgICAgc3RkOjp2ZWN0 b3I8dWludDhfdD4ob2JzZXJ2YXRpb25zX2RhdGEuYmVnaW4oKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9ic2VydmF0aW9uc19kYXRhLmVuZCgpKSk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvYnNlcnZhdGlvbnNfZGF0YS5lbmQoKSl9OwotIAotICAgICBpZiAodHlw ZSA9PSBBRERSRVNTX0hPTUVfQ09VTlRSWSkgewotICAgICAgIGNvdW50cnlfY29kZSA9IGJhc2U6 OlVURjE2VG9VVEY4KHMuQ29sdW1uU3RyaW5nMTYoMSkpOwotZGlmZiAtdXAgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJl c3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2Vi ZGF0YS9hZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYwotLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRy ZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rvcgky MDI0LTA1LTI5IDE4OjAxOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMv Y29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5ODkxNTYyOSAr MDIwMAotQEAgLTE2OSw5ICsxNjksOSBAQCBjbGFzcyBDb250YWN0SW5mb1Byb2ZpbGVTZXR0ZXIg ewotICAgICAgIENIRUNLKG9ic2VydmF0aW9ucy5lbXB0eSgpKTsKLSAgICAgICBmb3IgKGNvbnN0 IHN5bmNfcGI6OkNvbnRhY3RJbmZvU3BlY2lmaWNzOjpPYnNlcnZhdGlvbiYgcHJvdG9fb2JzZXJ2 YXRpb24gOgotICAgICAgICAgICAgbWV0YWRhdGEub2JzZXJ2YXRpb25zKCkpIHsKLS0gICAgICAg IG9ic2VydmF0aW9ucy5lbXBsYWNlX2JhY2socHJvdG9fb2JzZXJ2YXRpb24udHlwZSgpLAotKyAg ICAgICAgb2JzZXJ2YXRpb25zLmVtcGxhY2VfYmFjaygpID0ge3Byb3RvX29ic2VydmF0aW9uLnR5 cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZVRva2VuUXVh bGl0eTo6Rm9ybVNpZ25hdHVyZUhhc2goCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcm90b19vYnNlcnZhdGlvbi5mb3JtX2hhc2goKSkpOwotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9fb2JzZXJ2YXRpb24uZm9ybV9oYXNoKCkpfTsK LSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29tcG9uZW50cy9pbnZhbGlkYXRpb24vaW1wbC9mY21faW52YWxpZGF0aW9uX3NlcnZpY2UuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRz L2ludmFsaWRhdGlvbi9pbXBsL2ZjbV9pbnZhbGlkYXRpb25fc2VydmljZS5jYwotLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9pbnZhbGlkYXRpb24vaW1wbC9mY21faW52YWxp ZGF0aW9uX3NlcnZpY2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODow MTowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVu dHMvaW52YWxpZGF0aW9uL2ltcGwvZmNtX2ludmFsaWRhdGlvbl9zZXJ2aWNlLmNjCTIwMjQtMDYt MDIgMjM6NTE6MjUuNDk4OTE1NjI5ICswMjAwCi1AQCAtOTgsNyArOTgsNyBAQCBib29sIEZDTUlu dmFsaWRhdGlvblNlcnZpY2U6OlVwZGF0ZUludGVyCi0gICBEVkxPRygyKSA8PCAiU3Vic2NyaWJp bmcgdG8gdG9waWNzOiAiIDw8IHRvcGljX3NldC5zaXplKCk7Ci0gICBUb3BpY01hcCB0b3BpY19t YXA7Ci0gICBmb3IgKGNvbnN0IGF1dG8mIHRvcGljX25hbWUgOiB0b3BpY19zZXQpIHsKLS0gICAg dG9waWNfbWFwW3RvcGljX25hbWVdID0gVG9waWNNZXRhZGF0YShoYW5kbGVyLT5Jc1B1YmxpY1Rv cGljKHRvcGljX25hbWUpKTsKLSsgICAgdG9waWNfbWFwW3RvcGljX25hbWVdID0gVG9waWNNZXRh ZGF0YXtoYW5kbGVyLT5Jc1B1YmxpY1RvcGljKHRvcGljX25hbWUpfTsKLSAgIH0KLSAgIC8vIFRP RE8oY3JidWcuY29tLzQwNjc1NzA4KTogVXBkYXRlUmVnaXN0ZXJlZFRvcGljcygpIHNob3VsZCBi ZSByZW5hbWVkIHRvCi0gICAvLyBjbGFyaWZ5IHRoYXQgaXQgYWN0dWFsbHkgdXBkYXRlcyB3aGV0 aGVyIHRvcGljcyBuZWVkIHN1YnNjcmlwdGlvbiAoYWthCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRf bW9uaXRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5j YwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9tZW1vcnlfcHJlc3N1cmUv dW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMjkgMTg6MDE6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jb21wb25lbnRzL21lbW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0 b3IuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTg5MTU2MjkgKzAyMDAKLUBAIC05Miw4ICs5Miw4 IEBAIHZvaWQgVW5uZWNlc3NhcnlEaXNjYXJkTW9uaXRvcjo6T25EaXNjYXIKLSAgIERDSEVDS19D QUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotICAgaWYgKGN1cnJl bnRfcmVjbGFpbV9ldmVudF8pIHsKLSAgICAgLy8gQ2FjaGUgdGhpcyBraWxsIGV2ZW50IGFsb25n IHdpdGggdGhlIHRpbWUgaXQgdG9vayBwbGFjZS4KLS0gICAgY3VycmVudF9yZWNsYWltX2V2ZW50 X2tpbGxzXy5lbXBsYWNlX2JhY2sobWVtb3J5X2ZyZWVkX2tiLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkX2NvbXBsZXRlX3RpbWUpOwotKyAg ICBjdXJyZW50X3JlY2xhaW1fZXZlbnRfa2lsbHNfLmVtcGxhY2VfYmFjaygpID0ge21lbW9yeV9m cmVlZF9rYiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGlzY2FyZF9jb21wbGV0ZV90aW1lfTsKLSAgIH0KLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFz c3dvcmRfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFzc3dvcmRf bWFuYWdlci5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9wYXNzd29y ZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2Vy L3Bhc3N3b3JkX21hbmFnZXIuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTg5MTU2MjkgKzAyMDAK LUBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBQYXNzd29yZE1hbmFnZXI6Ok9uVXNlck1vZGlmaWVk Tm9uUAotICAgICBpdC0+c2Vjb25kLmxhc3RfY2hhbmdlID0gYmFzZTo6VGltZTo6Tm93KCk7Ci0g ICB9IGVsc2UgewotICAgICBwb3NzaWJsZV91c2VybmFtZXNfLlB1dCgKLS0gICAgICAgIFBvc3Np YmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXIoZHJpdmVyX2lkLCByZW5kZXJlcl9pZCksCi0rICAg ICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVye2RyaXZlcl9pZCwgcmVuZGVyZXJf aWR9LAotICAgICAgICAgUG9zc2libGVVc2VybmFtZURhdGEoR2V0U2lnbm9uUmVhbG0oZHJpdmVy LT5HZXRMYXN0Q29tbWl0dGVkVVJMKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVuZGVyZXJfaWQsIHZhbHVlLCBiYXNlOjpUaW1lOjpOb3coKSwgZHJpdmVyX2lkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlX2F0dHJpYnV0ZV9oYXNfdXNlcm5h bWUsCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRf bWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFzc3dvcmRfc3VnZ2VzdGlvbl9nZW5lcmF0b3IuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Bh c3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX3N1Z2dlc3Rpb25fZ2VuZXJhdG9y LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFn ZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX3N1Z2dlc3Rpb25fZ2VuZXJhdG9yLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MDcuMDAwMDAwMDAwICswMjAwCi0rKysg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9i cm93c2VyL3Bhc3N3b3JkX3N1Z2dlc3Rpb25fZ2VuZXJhdG9yLmNjCTIwMjQtMDYtMDMgMTg6MDg6 MTUuNjUwNTc3MTg2ICswMjAwCi1AQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTWF5YmVBcHBlbmRN YW5hZ2VQYXNzd29yZHNFbnRyeShzdGQKLSAgICAgICBTdWdnZXN0aW9uVHlwZTo6a0FsbFNhdmVk UGFzc3dvcmRzRW50cnkpOwotICAgLy8gVGhlIFVJIGNvZGUgd2lsbCBwaWNrIHVwIGFuIGljb24g ZnJvbSB0aGUgcmVzb3VyY2VzIGJhc2VkIG9uIHRoZSBzdHJpbmcuCi0gICBzdWdnZXN0aW9uLnRy YWlsaW5nX2ljb24gPSBTdWdnZXN0aW9uOjpJY29uOjprR29vZ2xlUGFzc3dvcmRNYW5hZ2VyOwot LSAgc3VnZ2VzdGlvbnMtPmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoc3VnZ2VzdGlvbikpOwotKyAg c3VnZ2VzdGlvbnMtPmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShzdWdnZXN0aW9uKX07Ci0g fQotIAotIC8vIElmIHxmaWVsZF9zdWdnZXN0aW9ufCBtYXRjaGVzIHxmaWVsZF9jb250ZW50fCwg Y3JlYXRlcyBhIFN1Z2dlc3Rpb24gb3V0IG9mIGl0Ci1AQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg QXBwZW5kU3VnZ2VzdGlvbklmTWF0Y2hpbmcoY29uc3Qgc3QKLSAgICAgICBzdWdnZXN0aW9uLnRy YWlsaW5nX2ljb24gPSBDcmVhdGVTdG9yZUljb24oZnJvbV9hY2NvdW50X3N0b3JlKTsKLSAgICAg fQotICNlbmRpZgotLSAgICBzdWdnZXN0aW9ucy0+ZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZShzdWdn ZXN0aW9uKSk7Ci0rICAgIHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUo c3VnZ2VzdGlvbil9OwotICAgfQotIH0KLSAKLUBAIC0yMzMsOCArMjMzLDggQEAgdm9pZCBHZXRT dWdnZXN0aW9ucyhjb25zdCBhdXRvZmlsbDo6UGFzcwotIAotIHZvaWQgQWRkUGFzc3dvcmRVc2Vy bmFtZUNoaWxkU3VnZ2VzdGlvbihjb25zdCBzdGQ6OnUxNnN0cmluZyYgdXNlcm5hbWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Z2dlc3Rpb24mIHN1Z2dlc3Rp b24pIHsKLS0gIHN1Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKAotLSAgICAgIHVzZXJu YW1lLCBTdWdnZXN0aW9uVHlwZTo6a1Bhc3N3b3JkRmllbGRCeUZpZWxkRmlsbGluZyk7Ci0rICBz dWdnZXN0aW9uLmNoaWxkcmVuLmVtcGxhY2VfYmFjaygpID0gewotKyAgICAgIHVzZXJuYW1lLCBT dWdnZXN0aW9uVHlwZTo6a1Bhc3N3b3JkRmllbGRCeUZpZWxkRmlsbGluZ307Ci0gfQotIAotIHZv aWQgQWRkRmlsbFBhc3N3b3JkQ2hpbGRTdWdnZXN0aW9uKFN1Z2dlc3Rpb24mIHN1Z2dlc3Rpb24s Ci1AQCAtMjQ0LDExICsyNDQsMTEgQEAgdm9pZCBBZGRGaWxsUGFzc3dvcmRDaGlsZFN1Z2dlc3Rp b24oU3VnZwotICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoCi0gICAgICAgICAgIElE U19QQVNTV09SRF9NQU5BR0VSX01BTlVBTF9GQUxMQkFDS19GSUxMX1BBU1NXT1JEX0VOVFJZKSwK LSAgICAgICBTdWdnZXN0aW9uVHlwZTo6a0ZpbGxQYXNzd29yZCk7Ci0tICBmaWxsX3Bhc3N3b3Jk LnBheWxvYWQgPSBTdWdnZXN0aW9uOjpQYXNzd29yZFN1Z2dlc3Rpb25EZXRhaWxzKAotKyAgZmls bF9wYXNzd29yZC5wYXlsb2FkID0gU3VnZ2VzdGlvbjo6UGFzc3dvcmRTdWdnZXN0aW9uRGV0YWls c3sKLSAgICAgICBjcmVkZW50aWFsLnBhc3N3b3JkLAotICAgICAgIEdldEh1bWFuUmVhZGFibGVS ZWFsbShjcmVkZW50aWFsLkdldEZpcnN0U2lnbm9uUmVhbG0oKSksCi0tICAgICAgaXNfY3Jvc3Nf b3JpZ2luLnZhbHVlKCkpOwotLSAgc3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soc3Rk Ojptb3ZlKGZpbGxfcGFzc3dvcmQpKTsKLSsgICAgICBpc19jcm9zc19vcmlnaW4udmFsdWUoKX07 Ci0rICBzdWdnZXN0aW9uLmNoaWxkcmVuLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShmaWxs X3Bhc3N3b3JkKX07Ci0gfQotIAotIHZvaWQgQWRkVmlld1Bhc3N3b3JkRGV0YWlsc0NoaWxkU3Vn Z2VzdGlvbihTdWdnZXN0aW9uJiBzdWdnZXN0aW9uKSB7Ci1AQCAtMjU3LDcgKzI1Nyw3IEBAIHZv aWQgQWRkVmlld1Bhc3N3b3JkRGV0YWlsc0NoaWxkU3VnZ2VzdGkKLSAgICAgICAgICAgSURTX1BB U1NXT1JEX01BTkFHRVJfTUFOVUFMX0ZBTExCQUNLX1ZJRVdfREVUQUlMU19FTlRSWSksCi0gICAg ICAgU3VnZ2VzdGlvblR5cGU6OmtWaWV3UGFzc3dvcmREZXRhaWxzKTsKLSAgIHZpZXdfcGFzc3dv cmRfZGV0YWlscy5pY29uID0gU3VnZ2VzdGlvbjo6SWNvbjo6a0tleTsKLS0gIHN1Z2dlc3Rpb24u Y2hpbGRyZW4uZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZSh2aWV3X3Bhc3N3b3JkX2RldGFpbHMpKTsK LSsgIHN1Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKHZpZXdf cGFzc3dvcmRfZGV0YWlscyl9OwotIH0KLSAKLSB2b2lkIEFwcGVuZE1hbnVhbEZhbGxiYWNrU3Vn Z2VzdGlvbnMoY29uc3QgQ3JlZGVudGlhbFVJRW50cnkmIGNyZWRlbnRpYWwsCi1AQCAtMjc4LDkg KzI3OCw5IEBAIHZvaWQgQXBwZW5kTWFudWFsRmFsbGJhY2tTdWdnZXN0aW9ucyhjb24KLSAgICAg Y29uc3Qgc3RkOjp1MTZzdHJpbmcgbWF5YmVfdXNlcm5hbWUgPQotICAgICAgICAgUmVwbGFjZUVt cHR5VXNlcm5hbWUoY3JlZGVudGlhbC51c2VybmFtZSwgJnJlcGxhY2VkKTsKLSAgICAgc3VnZ2Vz dGlvbi5hZGRpdGlvbmFsX2xhYmVsID0gbWF5YmVfdXNlcm5hbWU7Ci0tICAgIHN1Z2dlc3Rpb24u cGF5bG9hZCA9IFN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFpbHMoCi0rICAgIHN1 Z2dlc3Rpb24ucGF5bG9hZCA9IFN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFpbHN7 Ci0gICAgICAgICBjcmVkZW50aWFsLnBhc3N3b3JkLCBiYXNlOjpVVEY4VG9VVEYxNihrRGlzcGxh eVNpbmdvblJlYWxtKSwKLS0gICAgICAgIGlzX2Nyb3NzX29yaWdpbi52YWx1ZSgpKTsKLSsgICAg ICAgIGlzX2Nyb3NzX29yaWdpbi52YWx1ZSgpfTsKLSAgICAgc3VnZ2VzdGlvbi5pc19hY2NlcHRh YmxlID0gb25fcGFzc3dvcmRfZm9ybS52YWx1ZSgpOwotIAotICAgICBpZiAoIXJlcGxhY2VkKSB7 Ci1AQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgQXBwZW5kTWFudWFsRmFsbGJhY2tTdWdnZXN0aW9u cyhjb24KLSAgICAgc3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soU3VnZ2VzdGlvblR5 cGU6OmtTZXBhcmF0b3IpOwotICAgICBBZGRWaWV3UGFzc3dvcmREZXRhaWxzQ2hpbGRTdWdnZXN0 aW9uKHN1Z2dlc3Rpb24pOwotIAotLSAgICBzdWdnZXN0aW9ucy0+ZW1wbGFjZV9iYWNrKHN0ZDo6 bW92ZShzdWdnZXN0aW9uKSk7Ci0rICAgIHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soKSA9IHtz dGQ6Om1vdmUoc3VnZ2VzdGlvbil9OwotICAgfQotIH0KLSAKLUBAIC0zNjMsMjcgKzM2MywyNyBA QCBzdGQ6OnZlY3RvcjxTdWdnZXN0aW9uPiBQYXNzd29yZFN1Z2dlc3RpCi0gICBpZiAodXNlc19w YXNza2V5cyAmJiBkZWxlZ2F0ZS0+T2ZmZXJQYXNza2V5c0Zyb21Bbm90aGVyRGV2aWNlT3B0aW9u KCkpIHsKLSAgICAgYm9vbCBsaXN0ZWRfcGFzc2tleXMgPSBkZWxlZ2F0ZS0+R2V0UGFzc2tleXMo KS5oYXNfdmFsdWUoKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLT5H ZXRQYXNza2V5cygpLT5zaXplKCkgPiAwOwotLSAgICBzdWdnZXN0aW9ucy5lbXBsYWNlX2JhY2so Q3JlYXRlV2ViQXV0aG5FbnRyeShsaXN0ZWRfcGFzc2tleXMpKTsKLSsgICAgc3VnZ2VzdGlvbnMu ZW1wbGFjZV9iYWNrKCkgPSB7Q3JlYXRlV2ViQXV0aG5FbnRyeShsaXN0ZWRfcGFzc2tleXMpfTsK LSAgIH0KLSAjZW5kaWYKLSAKLSAgIC8vIEFkZCBwYXNzd29yZCBnZW5lcmF0aW9uIGVudHJ5LCBp ZiBhdmFpbGFibGUuCi0gICBpZiAob2ZmZXJzX2dlbmVyYXRpb24pIHsKLS0gICAgc3VnZ2VzdGlv bnMuZW1wbGFjZV9iYWNrKAotLSAgICAgICAgc2hvd19hY2NvdW50X3N0b3JhZ2Vfb3B0aW4KLSsg ICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKCkgPQotKyAgICAgICAge3Nob3dfYWNjb3VudF9z dG9yYWdlX29wdGluCi0gICAgICAgICAgICAgPyBDcmVhdGVFbnRyeVRvT3B0SW5Ub0FjY291bnRT dG9yYWdlVGhlbkdlbmVyYXRlKCkKLS0gICAgICAgICAgICA6IENyZWF0ZUdlbmVyYXRpb25FbnRy eSgpKTsKLSsgICAgICAgICAgICA6IENyZWF0ZUdlbmVyYXRpb25FbnRyeSgpfTsKLSAgIH0KLSAK LSAgIC8vIEFkZCBidXR0b24gdG8gb3B0IGludG8gdXNpbmcgdGhlIGFjY291bnQgc3RvcmFnZSBm b3IgcGFzc3dvcmRzIGFuZCB0aGVuCi0gICAvLyBzdWdnZXN0LgotICAgaWYgKHNob3dfYWNjb3Vu dF9zdG9yYWdlX29wdGluKSB7Ci0tICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjayhDcmVhdGVF bnRyeVRvT3B0SW5Ub0FjY291bnRTdG9yYWdlVGhlbkZpbGwoKSk7Ci0rICAgIHN1Z2dlc3Rpb25z LmVtcGxhY2VfYmFjaygpID0ge0NyZWF0ZUVudHJ5VG9PcHRJblRvQWNjb3VudFN0b3JhZ2VUaGVu RmlsbCgpfTsKLSAgIH0KLSAKLSAgIC8vIEFkZCBidXR0b24gdG8gc2lnbi1pbiB3aGljaCB1bmxv Y2tzIHRoZSBwcmV2aW91c2x5IHVzZWQgYWNjb3VudCBzdG9yZS4KLSAgIGlmIChzaG93X2FjY291 bnRfc3RvcmFnZV9yZXNpZ25pbikgewotLSAgICBzdWdnZXN0aW9ucy5lbXBsYWNlX2JhY2soQ3Jl YXRlRW50cnlUb1JlU2lnbmluKCkpOwotKyAgICBzdWdnZXN0aW9ucy5lbXBsYWNlX2JhY2soKSA9 IHtDcmVhdGVFbnRyeVRvUmVTaWduaW4oKX07Ci0gICB9Ci0gCi0gICAvLyBBZGQgIk1hbmFnZSBh bGwgcGFzc3dvcmRzIiBsaW5rIHRvIHNldHRpbmdzLgotQEAgLTQwMSwxMCArNDAxLDEwIEBAIFBh c3N3b3JkU3VnZ2VzdGlvbkdlbmVyYXRvcjo6R2V0TWFudWFsRmEKLSAgIGNvbnN0IGJvb2wgZ2Vu ZXJhdGVfc2VjdGlvbnMgPQotICAgICAgICFzdWdnZXN0ZWRfY3JlZGVudGlhbHMuZW1wdHkoKSAm JiAhY3JlZGVudGlhbHMuZW1wdHkoKTsKLSAgIGlmIChnZW5lcmF0ZV9zZWN0aW9ucykgewotLSAg ICBzdWdnZXN0aW9ucy5lbXBsYWNlX2JhY2soCi0rICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFj aygpID0gewotICAgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNigKLSAgICAgICAgICAg ICBJRFNfUEFTU1dPUkRfTUFOQUdFUl9NQU5VQUxfRkFMTEJBQ0tfU1VHR0VTVEVEX1BBU1NXT1JE U19TRUNUSU9OX1RJVExFKSwKLS0gICAgICAgIFN1Z2dlc3Rpb25UeXBlOjprVGl0bGUpOwotKyAg ICAgICAgU3VnZ2VzdGlvblR5cGU6OmtUaXRsZX07Ci0gICB9Ci0gCi0gICBzdGQ6OnNldDxzdGQ6 OnN0cmluZz4gc3VnZ2VzdGVkX3NpZ25vbl9yZWFsbXM7Ci1AQCAtNDE1LDEwICs0MTUsMTAgQEAg UGFzc3dvcmRTdWdnZXN0aW9uR2VuZXJhdG9yOjpHZXRNYW51YWxGYQotICAgfQotIAotICAgaWYg KGdlbmVyYXRlX3NlY3Rpb25zKSB7Ci0tICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygKLSsg ICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBsMTBuX3V0aWw6Okdl dFN0cmluZ1VURjE2KAotICAgICAgICAgICAgIElEU19QQVNTV09SRF9NQU5BR0VSX01BTlVBTF9G QUxMQkFDS19BTExfUEFTU1dPUkRTX1NFQ1RJT05fVElUTEUpLAotLSAgICAgICAgU3VnZ2VzdGlv blR5cGU6OmtUaXRsZSk7Ci0rICAgICAgICBTdWdnZXN0aW9uVHlwZTo6a1RpdGxlfTsKLSAgIH0K LSAKLSAgIC8vIE9ubHkgdGhlICJBbGwgcGFzc3dvcmRzIiBzZWN0aW9uIHNob3VsZCBiZSBzb3J0 ZWQgYWxwaGFiZXRpY2FsbHkuCi1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBv bmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGVyZm9ybWFuY2Vf bWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29t cG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MDguMDAwMDAwMDAwICswMjAwCi0rKysgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2Vy X3dhdGNoZXIuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTk5MTU2NTMgKzAyMDAKLUBAIC0yNDQs NyArMjQ0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbldvcmtlckNyZWF0ZWQoCi0gICBEQ0hF Q0soaW5zZXJ0aW9uX3Jlc3VsdC5zZWNvbmQpOwotIAotICAgYWJzbDo6dmlzaXQoCi0tICAgICAg YmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICBb JiwKLSAgICAgICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9z dElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgIEFkZEZyYW1lQ2xpZW50 Q29ubmVjdGlvbihpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksCi1AQCAtMjUz LDcgKzI1Myw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Xb3JrZXJDcmVhdGVkKAotICAgICAg ICAgICBbJiwgdGhpc10oYmxpbms6OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3Jr ZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICBDb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KGlu c2VydGlvbl9yZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pOwotLSAgICAgICAg ICB9KSwKLSsgICAgICAgICAgfX0sCi0gICAgICAgY3JlYXRvcik7Ci0gfQotIAotQEAgLTI3MCw3 ICsyNzAsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQmVmb3JlV29ya2VyRGVzdHJvCi0gICAv LyBGaXJzdCBkaXNjb25uZWN0IHRoZSBjcmVhdG9yJ3Mgbm9kZSBmcm9tIHRoaXMgd29ya2VyIG5v ZGUuCi0gCi0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAg IGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLAotICAgICAgICAgICAgdGhpc10oY29u c3QgY29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lk KSB7Ci0gICAgICAgICAgICAgUmVtb3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2Rl LmdldCgpLAotQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQmVmb3Jl V29ya2VyRGVzdHJvCi0gICAgICAgICAgIFsmLCB0aGlzXShibGluazo6RGVkaWNhdGVkV29ya2Vy VG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgIERpc2Nvbm5lY3RE ZWRpY2F0ZWRXb3JrZXJDbGllbnQod29ya2VyX25vZGUuZ2V0KCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKTsKLS0g ICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgIGNyZWF0b3IpOwotIAotICAgLy8g RGlzY29ubmVjdCBhbGwgY2hpbGQgd29ya2VycyBiZWZvcmUgZGVzdHJveWluZyB0aGUgbm9kZS4K LUBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkNvbnRyb2xsZWVBZGRl ZCgKLSAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNsaWVudF91dWlkLAotICAgICBjb25zdCBjb250 ZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50SW5mbyYgY2xpZW50X2luZm8pIHsKLSAgIGFic2w6OnZp c2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsK LSAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJl bmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgLy8gRm9yIHdpbmRvdyBjbGllbnRz LCBpdCBpcyBuZWNlc3NhcnkgdG8gd2FpdCB1bnRpbCB0aGUgbmF2aWdhdGlvbgotICAgICAgICAg ICAgIC8vIGhhcyBjb21taXR0ZWQgdG8gYSBSZW5kZXJGcmFtZUhvc3QuCi1AQCAtNDk0LDcgKzQ5 NCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Db250cm9sbGVlQWRkZWQoCi0gICAgICAgICAg ICAgICBDb25uZWN0U2hhcmVkV29ya2VyQ2xpZW50KHNlcnZpY2Vfd29ya2VyX25vZGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF93b3JrZXJfdG9rZW4p OwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAg IGNsaWVudF9pbmZvKTsKLSB9Ci0gCi1AQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV29ya2VyV2F0 Y2hlcjo6T25Db250cm9sbGVlUmVtb3ZlZCgKLSAgICAgcmV0dXJuOwotIAotICAgYWJzbDo6dmlz aXQoCi0tICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewot ICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVu ZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5l Y3Rpb24od29ya2VyX25vZGUsIHJlbmRlcl9mcmFtZV9ob3N0X2lkKTsKLSAgICAgICAgICAgfSwK LUBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkNvbnRyb2xsZWVSZW1v dmVkKAotICAgICAgICAgICB9LAotICAgICAgICAgICBbJiwgdGhpc10oYmxpbms6OlNoYXJlZFdv cmtlclRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICBEaXNjb25uZWN0 U2hhcmVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLCBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLS0g ICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgIGNsaWVudCk7Ci0gfQotIAotQEAg LTgyMCw3ICs4MjAsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkNvbm5lY3RBbGxTZXJ2aWNlV29y Ci0gCi0gICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgewotICAgICBhYnNsOjp2 aXNpdCgKLS0gICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgICBiYXNlOjpPdmVybG9h ZGVkewotICAgICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhv c3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgICAgQWRkRnJhbWVDbGll bnRDb25uZWN0aW9uKHNlcnZpY2Vfd29ya2VyX25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpOwotQEAgLTgzMiw3ICs4MzIs NyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkNvbm5lY3RBbGxTZXJ2aWNlV29yCi0gICAgICAgICAg ICAgWyYsIHRoaXNdKGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2Vu KSB7Ci0gICAgICAgICAgICAgICBDb25uZWN0U2hhcmVkV29ya2VyQ2xpZW50KHNlcnZpY2Vfd29y a2VyX25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJl ZF93b3JrZXJfdG9rZW4pOwotLSAgICAgICAgICAgIH0pLAotKyAgICAgICAgICAgIH19LAotICAg ICAgICAga3Yuc2Vjb25kKTsKLSAgIH0KLSB9Ci1AQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgV29y a2VyV2F0Y2hlcjo6RGlzY29ubmVjdEFsbFNlcnZpY2UKLSAKLSAgIGZvciAoY29uc3QgYXV0byYg a3YgOiBpdC0+c2Vjb25kKSB7Ci0gICAgIGFic2w6OnZpc2l0KAotLSAgICAgICAgYmFzZTo6T3Zl cmxvYWRlZCgKLSsgICAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgICAgWyYsIHRo aXNdKAotICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhv c3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICAgIFJlbW92ZUZyYW1l Q2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAotQEAgLTg2MSw3ICs4NjEsNyBA QCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2aWNlCi0gICAgICAgICAgICAg WyYsIHRoaXNdKGNvbnN0IGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiYgc2hhcmVkX3dvcmtlcl90 b2tlbikgewotICAgICAgICAgICAgICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudChzZXJ2 aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAgICB9KSwKLSsgICAgICAgICAg ICB9fSwKLSAgICAgICAgIGt2LnNlY29uZCk7Ci0gICB9Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tp YV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJl ZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjCi0tLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9v dXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0 LTA1LTI5IDE4OjAxOjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1 cmZhY2VfaW1wbF9vbl9ncHUuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTk5MTU2NTMgKzAyMDAK LUBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIFNraWFPdXRwdXRTdXJmYWNlSW1wbE9uR3B1OjpD b3B5T3V0Ci0gCi0gICAgICAgLy8gSXNzdWUgcmVhZGJhY2tzIGZyb20gdGhlIHN1cmZhY2VzOgot ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQ29weU91dHB1dFJlc3VsdDo6a05WMTJNYXhQ bGFuZXM7ICsraSkgewotLSAgICAgICAgU2tJU2l6ZSBzaXplKHBsYW5lX3N1cmZhY2VzW2ldLT53 aWR0aCgpLCBwbGFuZV9zdXJmYWNlc1tpXS0+aGVpZ2h0KCkpOwotKyAgICAgICAgU2tJU2l6ZSBz aXple3BsYW5lX3N1cmZhY2VzW2ldLT53aWR0aCgpLCBwbGFuZV9zdXJmYWNlc1tpXS0+aGVpZ2h0 KCl9OwotICAgICAgICAgU2tJbWFnZUluZm8gZHN0X2luZm8gPSBTa0ltYWdlSW5mbzo6TWFrZSgK LSAgICAgICAgICAgICBzaXplLCAoaSA9PSAwKSA/IGtBbHBoYV84X1NrQ29sb3JUeXBlIDoga1I4 RzhfdW5vcm1fU2tDb2xvclR5cGUsCi0gICAgICAgICAgICAga1VucHJlbXVsX1NrQWxwaGFUeXBl KTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2Rvd25s b2FkL3NhdmVfcGFja2FnZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9kb3dubG9hZC9zYXZlX3BhY2thZ2UuY2MKLS0tLSBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9kb3dubG9hZC9zYXZlX3BhY2th Z2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToxMi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9kb3du bG9hZC9zYXZlX3BhY2thZ2UuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41MDA5MTU2NzYgKzAyMDAK LUBAIC04MDIsOCArODAyLDggQEAgdm9pZCBTYXZlUGFja2FnZTo6RmluaXNoKCkgewotICAgaWYg KGRvd25sb2FkXykgewotICAgICBzdGQ6OnZlY3Rvcjxkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRl bURhdGE6Okl0ZW1JbmZvPiBmaWxlczsKLSAgICAgZm9yIChhdXRvJiBpdGVtIDogc2F2ZWRfc3Vj Y2Vzc19pdGVtc18pIHsKLS0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2soaXRlbS5zZWNvbmQtPmZ1 bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAg IGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybCk7Ci0rICAgICAgZmlsZXMuZW1wbGFjZV9iYWNr KCkgPSB7aXRlbS5zZWNvbmQtPmZ1bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybH07Ci0gICAg IH0KLSAgICAgZG93bmxvYWQ6OkRvd25sb2FkU2F2ZUl0ZW1EYXRhOjpBdHRhY2hJdGVtRGF0YShk b3dubG9hZF8sIHN0ZDo6bW92ZShmaWxlcykpOwotICAgfQotZGlmZiAtdXAgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25m aWcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250 ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25maWcuY2MKLS0tLSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2Zy YW1lX2NvbmZpZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEy LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93 c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJhbWVfY29uZmlnLmNjCTIwMjQtMDYtMDIgMjM6NTE6 MjUuNTAwOTE1Njc2ICswMjAwCi1AQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgRmVuY2VkRnJhbWVQ cm9wZXJ0aWVzOjpVcGRhdGVQYXJlbnQKLSAgICAgICAgIGZlYXR1cmUsIGFsbG93X2xpc3QuQWxs b3dlZE9yaWdpbnMoKSwgYWxsb3dfbGlzdC5TZWxmSWZNYXRjaGVzKCksCi0gICAgICAgICBhbGxv d19saXN0Lk1hdGNoZXNBbGwoKSwgYWxsb3dfbGlzdC5NYXRjaGVzT3BhcXVlU3JjKCkpOwotICAg fQotLSAgcGFyZW50X3Blcm1pc3Npb25zX2luZm9fLmVtcGxhY2UocGFyc2VkX3BvbGljaWVzLCBw YXJlbnRfb3JpZ2luKTsKLSsgIHBhcmVudF9wZXJtaXNzaW9uc19pbmZvXy5lbXBsYWNlKCkgPSB7 cGFyc2VkX3BvbGljaWVzLCBwYXJlbnRfb3JpZ2lufTsKLSB9Ci0gCi0gfSAgLy8gbmFtZXNwYWNl IGNvbnRlbnQKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2Vy L2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9w YXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9w YXJzZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToxMi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9m aXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MJMjAyNC0wNi0wMiAyMzo1 MToyNS41MDE5MTU3MDEgKzAyMDAKLUBAIC03NzQsNyArNzc0LDcgQEAgRmlyc3RQYXJ0eVNldFBh cnNlcjo6UGFyc2VTZXRzRnJvbUVudGVycAotICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu R2V0UG9saWN5U2V0c0Zyb21MaXN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3ku RmluZExpc3Qoa0ZpcnN0UGFydHlTZXRQb2xpY3lBZGRpdGlvbnNGaWVsZCksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIFBvbGljeVNldFR5cGU6OmtBZGRpdGlvbikpOwotLSAgICByZXR1cm4g UGFyc2VkUG9saWN5U2V0TGlzdHMoc3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShh ZGRpdGlvbnMpKTsKLSsgICAgcmV0dXJuIFBhcnNlZFBvbGljeVNldExpc3Rze3N0ZDo6bW92ZShy ZXBsYWNlbWVudHMpLCBzdGQ6Om1vdmUoYWRkaXRpb25zKX07Ci0gICB9KCk7Ci0gCi0gICBjb250 ZXh0LlBvc3RQcm9jZXNzU2V0TGlzdHMoc2V0X2xpc3RzKTsKLWRpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2dwdS9jb21wb3NpdG9yX3V0aWwuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIv Z3B1L2NvbXBvc2l0b3JfdXRpbC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVu dC9icm93c2VyL2dwdS9jb21wb3NpdG9yX3V0aWwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJ MjAyNC0wNS0yOSAxODowMToxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9ncHUvY29tcG9zaXRvcl91dGlsLmNjCTIwMjQtMDYtMDIg MjM6NTE6MjUuNTAxOTE1NzAxICswMjAwCi1AQCAtMTA4LDcgKzEwOCw3IEBAIHN0ZDo6dmVjdG9y PEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICAqYmFzZTo6Q29tbWFuZExpbmU6 OkZvckN1cnJlbnRQcm9jZXNzKCk7Ci0gCi0gICBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4g ZmVhdHVyZXM7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICBmZWF0dXJlcy5lbXBsYWNl X2JhY2soKSA9IHsKLSAgICAgICAiMmRfY2FudmFzIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0 YXR1cygKLSAgICAgICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBF X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUywKLUBAIC0xMTYsMTMgKzExNiwxMyBAQCBzdGQ6OnZlY3Rv cjxHcHVGZWF0dXJlRGF0YT4gR2V0R3B1RmVhdHVyCi0gICAgICAgRGlzYWJsZUluZm86OlByb2Js ZW0oCi0gICAgICAgICAgICJBY2NlbGVyYXRlZCAyRCBjYW52YXMgaXMgdW5hdmFpbGFibGU6IGVp dGhlciBkaXNhYmxlZCAiCi0gICAgICAgICAgICJ2aWEgYmxvY2tsaXN0IG9yIHRoZSBjb21tYW5k IGxpbmUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAg ICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAiY2FudmFz X29vcF9yYXN0ZXJpemF0aW9uIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKLSAgICAg ICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0NBTlZBU19PT1Bf UkFTVEVSSVpBVElPTiwKLS0gICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRjaChzd2l0Y2hl czo6a0Rpc2FibGVBY2NlbGVyYXRlZDJkQ2FudmFzKSkpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9i YWNrKAotKyAgICAgICAgICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJs ZUFjY2VsZXJhdGVkMmRDYW52YXMpKX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsK LSAgICAgICAiZ3B1X2NvbXBvc2l0aW5nIiwKLSAgICAgICAvLyBUT0RPKHJpdnIpOiBSZXBsYWNl IHdpdGggYSBjaGVjayB0byBzZWUgd2hpY2ggYmFja2VuZCBpcyB1c2VkIGZvcgotICAgICAgIC8v IGNvbXBvc2l0aW5nOyBkbyB0aGUgc2FtZSBmb3IgR1BVIHJhc3Rlcml6YXRpb24gaWYgaXQncyBl bmFibGVkLiBGb3IKLUBAIC0xMzYsMTYgKzEzNiwxNiBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJl RGF0YT4gR2V0R3B1RmVhdHVyCi0gICAgICAgICAgICJhYm91dDpmbGFncyAiCi0gICAgICAgICAg ICJvciB0aGUgY29tbWFuZCBsaW5lLiBUaGUgYnJvd3NlciB3aWxsIGZhbGwgYmFjayB0byBzb2Z0 d2FyZSAiCi0gICAgICAgICAgICJjb21wb3NpdGluZyBhbmQgaGFyZHdhcmUgYWNjZWxlcmF0aW9u IHdpbGwgYmUgdW5hdmFpbGFibGUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBs YWNlX2JhY2soCi0rICAgICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsK LSAgICAgICAid2ViZ2wiLAotICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJl X2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBF X0FDQ0VMRVJBVEVEX1dFQkdMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRf bGluZS5IYXNTd2l0Y2goc3dpdGNoZXM6OmtEaXNhYmxlV2ViR0wpKSwKLSAgICAgICBEaXNhYmxl SW5mbzo6UHJvYmxlbSgKLSAgICAgICAgICAgIldlYkdMIGhhcyBiZWVuIGRpc2FibGVkIHZpYSBi bG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKLS0gICAgICBmYWxzZSk7Ci0tICBmZWF0 dXJlcy5lbXBsYWNlX2JhY2soCi0rICAgICAgZmFsc2V9OwotKyAgZmVhdHVyZXMuZW1wbGFjZV9i YWNrKCkgPSB7Ci0gICAgICAgInZpZGVvX2RlY29kZSIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVT dGF0dXMoCi0gICAgICAgICAgIGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQ RV9BQ0NFTEVSQVRFRF9WSURFT19ERUNPREUsCi1AQCAtMTU2LDggKzE1Niw4IEBAIHN0ZDo6dmVj dG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICBEaXNhYmxlSW5mbzo6UHJv YmxlbSgKLSAgICAgICAgICAgIkFjY2VsZXJhdGVkIHZpZGVvIGRlY29kZSBoYXMgYmVlbiBkaXNh YmxlZCwgZWl0aGVyIHZpYSBibG9ja2xpc3QsICIKLSAgICAgICAgICAgImFib3V0OmZsYWdzIG9y IHRoZSBjb21tYW5kIGxpbmUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNl X2JhY2soCi0rICAgICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAg ICAgICAidmlkZW9fZW5jb2RlIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKLSAgICAg ICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVE X1ZJREVPX0VOQ09ERSwKLUBAIC0xNjksMzMgKzE2OSwzMyBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0 dXJlRGF0YT4gR2V0R3B1RmVhdHVyCi0gICAgICAgRGlzYWJsZUluZm86OlByb2JsZW0oCi0gICAg ICAgICAgICJBY2NlbGVyYXRlZCB2aWRlbyBlbmNvZGUgaGFzIGJlZW4gZGlzYWJsZWQsIGVpdGhl ciB2aWEgYmxvY2tsaXN0LCAiCi0gICAgICAgICAgICJhYm91dDpmbGFncyBvciB0aGUgY29tbWFu ZCBsaW5lLiIpLAotLSAgICAgIHRydWUpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAg ICAgIHRydWV9OwotKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgInJhc3Rl cml6YXRpb24iLAotICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0dQVV9U SUxFX1JBU1RFUklaQVRJT04pLAotICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAotICAgICAg ICAgICAiQWNjZWxlcmF0ZWQgcmFzdGVyaXphdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCwgZWl0aGVy IHZpYSBibG9ja2xpc3QsICIKLSAgICAgICAgICAgImFib3V0OmZsYWdzIG9yIHRoZSBjb21tYW5k IGxpbmUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAg ICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAib3Blbmds IiwgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVE X0dMKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZF QVRVUkVfVFlQRV9BQ0NFTEVSQVRFRF9HTCl9OwotICNpZiBCVUlMREZMQUcoRU5BQkxFX1ZVTEtB TikKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygp ID0gewotICAgICAgICJ2dWxrYW4iLAotLSAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9m ZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9WVUxLQU4pKTsKLSsgICAgICBTYWZl R2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVf VlVMS0FOKX07Ci0gI2VuZGlmCi0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICBmZWF0dXJl cy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAibXVsdGlwbGVfcmFzdGVyX3RocmVhZHMiLAot LSAgICAgIEdldEZha2VGZWF0dXJlU3RhdHVzKE51bWJlck9mUmVuZGVyZXJSYXN0ZXJUaHJlYWRz KCkgPiAxKSk7Ci0rICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoTnVtYmVyT2ZSZW5kZXJlclJh c3RlclRocmVhZHMoKSA+IDEpfTsKLSAjaWYgQlVJTERGTEFHKElTX0FORFJPSUQpCi0tICBmZWF0 dXJlcy5lbXBsYWNlX2JhY2soCi0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAg ICAic3VyZmFjZV9jb250cm9sIiwKLSAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVh dHVyZV9pbmZvLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVf VFlQRV9BTkRST0lEX1NVUkZBQ0VfQ09OVFJPTCkpOwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BTkRST0lEX1NVUkZBQ0VfQ09OVFJPTCl9OwotICNl bmRpZgotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNr KCkgPSB7Ci0gICAgICAgIndlYmdsMiIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoCi0g ICAgICAgICAgIGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BQ0NFTEVS QVRFRF9XRUJHTDIsCi1AQCAtMjAzLDEyICsyMDMsMTIgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVy ZURhdGE+IEdldEdwdUZlYXR1cgotICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRj aChzd2l0Y2hlczo6a0Rpc2FibGVXZWJHTDIpKSwKLSAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxl bSgKLSAgICAgICAgICAgIldlYkdMMiBoYXMgYmVlbiBkaXNhYmxlZCB2aWEgYmxvY2tsaXN0IG9y IHRoZSBjb21tYW5kIGxpbmUuIiksCi0tICAgICAgZmFsc2UpOwotLSAgZmVhdHVyZXMuZW1wbGFj ZV9iYWNrKCJyYXdfZHJhdyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1 cmVTdGF0dXMoZmVhdHVyZXM6OklzVXNpbmdSYXdEcmF3KCkpKTsKLS0gIGZlYXR1cmVzLmVtcGxh Y2VfYmFjaygiZGlyZWN0X3JlbmRlcmluZ19kaXNwbGF5X2NvbXBvc2l0b3IiLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIEdldEZha2VGZWF0dXJlU3RhdHVzKGZlYXR1cmVzOjpJc0RyRGNFbmFi bGVkKCkpKTsKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgICAgICBmYWxzZX07Ci0rICBm ZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsicmF3X2RyYXciLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIEdldEZha2VGZWF0dXJlU3RhdHVzKGZlYXR1cmVzOjpJc1VzaW5nUmF3RHJhdygpKX07 Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsiZGlyZWN0X3JlbmRlcmluZ19kaXNwbGF5 X2NvbXBvc2l0b3IiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdldEZha2VGZWF0dXJlU3Rh dHVzKGZlYXR1cmVzOjpJc0RyRGNFbmFibGVkKCkpfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFj aygpID0gewotICAgICAgICJ3ZWJncHUiLAotICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAot ICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxF UkFURURfV0VCR1BVLAotQEAgLTIxNiwxNCArMjE2LDE0IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1 cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICAgICAgICAgICFiYXNlOjpGZWF0dXJlTGlzdDo6 SXNFbmFibGVkKDo6ZmVhdHVyZXM6OmtXZWJHUFVTZXJ2aWNlKSksCi0gICAgICAgRGlzYWJsZUlu Zm86OlByb2JsZW0oCi0gICAgICAgICAgICJXZWJHUFUgaGFzIGJlZW4gZGlzYWJsZWQgdmlhIGJs b2NrbGlzdCBvciB0aGUgY29tbWFuZCBsaW5lLiIpLAotLSAgICAgIGZhbHNlKTsKLS0gIGZlYXR1 cmVzLmVtcGxhY2VfYmFjaygKLSsgICAgICBmYWxzZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2Jh Y2soKSA9IHsKLSAgICAgICAic2tpYV9ncmFwaGl0ZSIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVT dGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBncHU6 OkdQVV9GRUFUVVJFX1RZUEVfU0tJQV9HUkFQSElURSkpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9i YWNrKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9T S0lBX0dSQVBISVRFKX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAi d2Vibm4iLAotLSAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sIGdw dTo6R1BVX0ZFQVRVUkVfVFlQRV9XRUJOTikpOwotKyAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVz KGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9XRUJOTil9OwotICAgcmV0 dXJuIGZlYXR1cmVzOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2ln bmFscy5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2ln bmFscy5oCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvaW50ZXJl c3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJf ZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaAkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwMTkxNTcw MSArMDIwMAotQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBDT05URU5UX0VYUE9SVCBIZWFkZXJE aXJlY3RGcm9tU2VsCi0gCi0gICAgIC8vIFRoZSBBZC1BdWN0aW9uLVNpZ25hbHMgcmVzcG9uc2Ug c2VydmVkIGJ5IGBvcmlnaW5gLgotICAgICBzdGQ6OnN0cmluZyByZXNwb25zZV9qc29uOwotKyAg ICBVbnByb2Nlc3NlZFJlc3BvbnNlKGF1dG8gdSwgYXV0byBzKSA6IG9yaWdpbih1KSwgcmVzcG9u c2VfanNvbihzKSB7IH0KLSAgIH07Ci0gCi0gICAvLyBJbmZvcm1hdGlvbiBmcm9tIFBhcnNlQW5k RmluZCgpIGNhbGxzIHVzZWQgYnkgUGFyc2VBbmRGaW5kQ29tcGxldGVkLgotZGlmZiAtdXAgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJl c3RfZ3JvdXBfYXVjdGlvbi5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9h dWN0aW9uLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvaW50 ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3Vw X2F1Y3Rpb24uY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41MDM5MTU3NDggKzAyMDAKLUBAIC02MTYs NyArNjE2LDcgQEAgYm9vbCBTYW1wbGVEZWJ1Z1JlcG9ydCgKLSAgICAgICAgYmxpbms6OmZlYXR1 cmVzOjprRmxlZGdlRGVidWdSZXBvcnRSZXN0cmljdGVkQ29vbGRvd24uR2V0KCkgIT0KLSAgICAg ICAgICAgIGJhc2U6Ok1pbGxpc2Vjb25kcygwKSkpIHsKLSAgICAgbmV3X2RlYnVnX3JlcG9ydF9s b2Nrb3V0X2FuZF9jb29sZG93bnMuZGVidWdfcmVwb3J0X2Nvb2xkb3duX21hcFtvcmlnaW5dID0K LS0gICAgICAgIERlYnVnUmVwb3J0Q29vbGRvd24obm93X25lYXJlc3RfbmV4dF9ob3VyLCBjb29s ZG93bl90eXBlKTsKLSsgICAgICAgIERlYnVnUmVwb3J0Q29vbGRvd257bm93X25lYXJlc3RfbmV4 dF9ob3VyLCBjb29sZG93bl90eXBlfTsKLSAgIH0KLSAKLSAgIHJldHVybiBjYW5fc2VuZF9kZWJ1 Z19yZXBvcnQ7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nl ci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ludGVyZXN0 X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdl LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MTIuMDAwMDAwMDAw ICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvaW50ZXJl c3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYwkyMDI0LTA2LTA0IDEzOjIzOjQ4LjI3 OTUwMTAxNyArMDIwMAotQEAgLTIwNCw4ICsyMDQsOCBAQCBibGluazo6SW50ZXJlc3RHcm91cDo6 QWQgRnJvbUludGVyZXN0R3JvCi0gICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiAqbWF5 YmVfYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2lucykgewotICAgICAgICAgY29uc3Qgc3RkOjpzdHJp bmcqIG9yaWdpbl9zdHIgPSBvcmlnaW4uR2V0SWZTdHJpbmcoKTsKLSAgICAgICAgIERDSEVDSyhv cmlnaW5fc3RyKTsKLS0gICAgICAgIGFsbG93ZWRfcmVwb3J0aW5nX29yaWdpbnNfdmVjdG9yLmVt cGxhY2VfYmFjaygKLS0gICAgICAgICAgICBEZXNlcmlhbGl6ZU9yaWdpbigqb3JpZ2luX3N0cikp OwotKyAgICAgICAgYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luc192ZWN0b3IuZW1wbGFjZV9iYWNr KCkgPSB7Ci0rICAgICAgICAgICAgRGVzZXJpYWxpemVPcmlnaW4oKm9yaWdpbl9zdHIpfTsKLSAg ICAgICB9Ci0gICAgICAgcmVzdWx0LmFsbG93ZWRfcmVwb3J0aW5nX29yaWdpbnMgPQotICAgICAg ICAgICBzdGQ6Om1vdmUoYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luc192ZWN0b3IpOwotQEAgLTI0 OSw3ICsyNDksNyBAQCBzdGQ6Om9wdGlvbmFsPGJhc2U6OmZsYXRfbWFwPHN0ZDo6c3RyaW5nCi0g ICAgIGlmICghcGFpci5zZWNvbmQuaXNfZG91YmxlKCkpIHsKLSAgICAgICByZXR1cm4gc3RkOjpu dWxsb3B0OwotICAgICB9Ci0tICAgIHBhaXJzLmVtcGxhY2VfYmFjayhwYWlyLmZpcnN0LCBwYWly LnNlY29uZC5HZXREb3VibGUoKSk7Ci0rICAgIHBhaXJzLmVtcGxhY2VfYmFjaygpID0ge3BhaXIu Zmlyc3QsIHBhaXIuc2Vjb25kLkdldERvdWJsZSgpfTsKLSAgIH0KLSAgIHJldHVybiBiYXNlOjpm bGF0X21hcDxzdGQ6OnN0cmluZywgZG91YmxlPihzdGQ6Om1vdmUocGFpcnMpKTsKLSB9Ci1AQCAt MzA3LDggKzMwNyw4IEBAIERlc2VyaWFsaXplSW50ZXJlc3RHcm91cEFkVmVjdG9ySnNvbihjb24K LSAgIGZvciAoY29uc3QgYXV0byYgYWRfdmFsdWUgOiBhZHNfdmFsdWUtPkdldExpc3QoKSkgewot ICAgICBjb25zdCBiYXNlOjpWYWx1ZTo6RGljdCogZGljdCA9IGFkX3ZhbHVlLkdldElmRGljdCgp OwotICAgICBpZiAoZGljdCkgewotLSAgICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soCi0tICAgICAg ICAgIEZyb21JbnRlcmVzdEdyb3VwQWRWYWx1ZShwYXNza2V5LCAqZGljdCwgZm9yX2NvbXBvbmVu dHMpKTsKLSsgICAgICByZXN1bHQuZW1wbGFjZV9iYWNrKCkgPSB7Ci0rICAgICAgICAgIEZyb21J bnRlcmVzdEdyb3VwQWRWYWx1ZShwYXNza2V5LCAqZGljdCwgZm9yX2NvbXBvbmVudHMpfTsKLSAg ICAgfQotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLUBAIC0zNTIsOCArMzUyLDggQEAgRGVzZXJp YWxpemVJbnRlcmVzdEdyb3VwQWRWZWN0b3JQcm90byhjbwotICAgICAgICAgICBhZF9wcm90by5h bGxvd2VkX3JlcG9ydGluZ19vcmlnaW5zX3NpemUoKSk7Ci0gICAgICAgZm9yIChjb25zdCBzdGQ6 OnN0cmluZyYgYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luIDoKLSAgICAgICAgICAgIGFkX3Byb3Rv LmFsbG93ZWRfcmVwb3J0aW5nX29yaWdpbnMoKSkgewotLSAgICAgICAgYWxsb3dlZF9yZXBvcnRp bmdfb3JpZ2luc192ZWN0b3IuZW1wbGFjZV9iYWNrKAotLSAgICAgICAgICAgIERlc2VyaWFsaXpl T3JpZ2luKGFsbG93ZWRfcmVwb3J0aW5nX29yaWdpbikpOwotKyAgICAgICAgYWxsb3dlZF9yZXBv cnRpbmdfb3JpZ2luc192ZWN0b3IuZW1wbGFjZV9iYWNrKCkgPSB7Ci0rICAgICAgICAgICAgRGVz ZXJpYWxpemVPcmlnaW4oYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luKX07Ci0gICAgICAgfQotICAg ICAgIGFkLmFsbG93ZWRfcmVwb3J0aW5nX29yaWdpbnMgPQotICAgICAgICAgICBzdGQ6Om1vdmUo YWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luc192ZWN0b3IpOwotQEAgLTQwMCwxMyArNDAwLDEzIEBA IERlc2VyaWFsaXplU3RyaW5nU2l6ZU1hcChjb25zdCBzdGQ6OnN0cmkKLSAgICAgaWYgKCF3aWR0 aF92YWwgfHwgIXdpZHRoX3VuaXRzX3ZhbCB8fCAhaGVpZ2h0X3ZhbCB8fCAhaGVpZ2h0X3VuaXRz X3ZhbCkgewotICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgIH0KLS0gICAgcmVzdWx0 LmVtcGxhY2VfYmFjayhlbnRyeS5maXJzdCwKLSsgICAgcmVzdWx0LmVtcGxhY2VfYmFjaygpID0g e2VudHJ5LmZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGJsaW5rOjpBZFNpemUod2lk dGhfdmFsLT5HZXREb3VibGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXRpY19jYXN0PGJsaW5rOjpBZFNpemU6Okxlbmd0aFVuaXQ+KAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoX3VuaXRzX3ZhbC0+R2V0SW50KCkp LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3ZhbC0+R2V0 RG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf Y2FzdDxibGluazo6QWRTaXplOjpMZW5ndGhVbml0PigKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBoZWlnaHRfdW5pdHNfdmFsLT5HZXRJbnQoKSkpKTsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfdW5pdHNfdmFsLT5H ZXRJbnQoKSkpfTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotQEAgLTQ0MCw5ICs0NDAs OSBAQCBEZXNlcmlhbGl6ZVN0cmluZ1N0cmluZ1ZlY3Rvck1hcChjb25zdCBzCi0gICAgIERDSEVD SyhsaXN0ICYmIGxpc3QtPmlzX2xpc3QoKSk7Ci0gICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n PiByZXN1bHRfc2l6ZXM7Ci0gICAgIGZvciAoYmFzZTo6VmFsdWUmIHNpemUgOiBsaXN0LT5HZXRM aXN0KCkpIHsKLS0gICAgICByZXN1bHRfc2l6ZXMuZW1wbGFjZV9iYWNrKHNpemUuR2V0U3RyaW5n KCkpOwotKyAgICAgIHJlc3VsdF9zaXplcy5lbXBsYWNlX2JhY2soKSA9IHtzaXplLkdldFN0cmlu ZygpfTsKLSAgICAgfQotLSAgICByZXN1bHQuZW1wbGFjZV9iYWNrKGVudHJ5LmZpcnN0LCByZXN1 bHRfc2l6ZXMpOwotKyAgICByZXN1bHQuZW1wbGFjZV9iYWNrKCkgPSB7ZW50cnkuZmlyc3QsIHJl c3VsdF9zaXplc307Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotIH0KLUBAIC01MTIsOCArNTEy LDggQEAgRGVzZXJpYWxpemVTZWxsZXJDYXBhYmlsaXRpZXNNYXAoY29uc3QgcwotICAgICBpZiAo IWJhc2U6OlN0cmluZ1RvSW50NjQoKnZhbHVlX3N0cmluZywgJnZhbHVlX2JpdG1hc2spKSB7Ci0g ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgfQotLSAgICByZXN1bHQuZW1wbGFjZV9i YWNrKERlc2VyaWFsaXplT3JpZ2luKGVudHJ5LmZpcnN0KSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBEZXNlcmlhbGl6ZVNlbGxlckNhcGFiaWxpdGllcyh2YWx1ZV9iaXRtYXNrKSk7Ci0rICAg IHJlc3VsdC5lbXBsYWNlX2JhY2soKSA9IHtEZXNlcmlhbGl6ZU9yaWdpbihlbnRyeS5maXJzdCks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgRGVzZXJpYWxpemVTZWxsZXJDYXBhYmlsaXRpZXMo dmFsdWVfYml0bWFzayl9OwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci1AQCAtMjQ5OSw3 ICsyNDk5LDcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+Ci0gICAg IGlmICghRG9SZW1vdmVJbnRlcmVzdEdyb3VwKGRiLCBibGluazo6SW50ZXJlc3RHcm91cEtleShv d25lciwgbmFtZSkpKSB7Ci0gICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgfQotLSAg ICBjbGVhcmVkX2ludGVyZXN0X2dyb3Vwcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG5hbWUpKTsK LSsgICAgY2xlYXJlZF9pbnRlcmVzdF9ncm91cHMuZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3Zl KG5hbWUpfTsKLSAgIH0KLSAgIGlmICghdHJhbnNhY3Rpb24uQ29tbWl0KCkpIHsKLSAgICAgcmV0 dXJuIHN0ZDo6bnVsbG9wdDsKLUBAIC0zNDMyLDcgKzM0MzIsNyBAQCBib29sIERvUmVtb3ZlSW50 ZXJlc3RHcm91cHNNYXRjaGluZ093bmVyCi0gICBsb2FkLkJpbmRUaW1lKDIsIGV4cGlyaW5nX2Fm dGVyKTsKLSAKLSAgIHdoaWxlIChsb2FkLlN0ZXAoKSkgewotLSAgICBvd25lcl9qb2luZXJfbmFt ZXMuZW1wbGFjZV9iYWNrKGxvYWQuQ29sdW1uU3RyaW5nKDApKTsKLSsgICAgb3duZXJfam9pbmVy X25hbWVzLmVtcGxhY2VfYmFjaygpID0ge2xvYWQuQ29sdW1uU3RyaW5nKDApfTsKLSAgIH0KLSAK LSAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IG93bmVyX2pvaW5lcl9uYW1lcykgewotQEAgLTM0 NjIsOCArMzQ2Miw4IEBAIERvR2V0QWxsSW50ZXJlc3RHcm91cE93bmVySm9pbmVyUGFpcnMoc3EK LSAgIGxvYWQuUmVzZXQodHJ1ZSk7Ci0gICBsb2FkLkJpbmRUaW1lKDAsIGV4cGlyaW5nX2FmdGVy KTsKLSAgIHdoaWxlIChsb2FkLlN0ZXAoKSkgewotLSAgICByZXN1bHQuZW1wbGFjZV9iYWNrKERl c2VyaWFsaXplT3JpZ2luKGxvYWQuQ29sdW1uU3RyaW5nKDApKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBEZXNlcmlhbGl6ZU9yaWdpbihsb2FkLkNvbHVtblN0cmluZygxKSkpOwotKyAgICBy ZXN1bHQuZW1wbGFjZV9iYWNrKCkgPSB7RGVzZXJpYWxpemVPcmlnaW4obG9hZC5Db2x1bW5TdHJp bmcoMCkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIERlc2VyaWFsaXplT3JpZ2luKGxvYWQu Q29sdW1uU3RyaW5nKDEpKX07Ci0gICB9Ci0gICBpZiAoIWxvYWQuU3VjY2VlZGVkKCkpIHsKLSAg ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLUBAIC0zNTk2LDkgKzM1OTYsOSBAQCBzdGQ6Om9wdGlv bmFsPERlYnVnUmVwb3J0Q29vbGRvd24+IERvR2V0Ci0gICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7 Ci0gICB9Ci0gCi0tICByZXR1cm4gRGVidWdSZXBvcnRDb29sZG93bihjb29sZG93bl9kZWJ1Z2dp bmdfb25seV9yZXBvcnQuQ29sdW1uVGltZSgwKSwKLSsgIHJldHVybiBEZWJ1Z1JlcG9ydENvb2xk b3due2Nvb2xkb3duX2RlYnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1bW5UaW1lKDApLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RGVidWdSZXBvcnRDb29sZG93blR5 cGU+KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2xkb3duX2RlYnVnZ2lu Z19vbmx5X3JlcG9ydC5Db2x1bW5JbnQoMSkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50KDEpKX07Ci0g fQotIAotIHZvaWQgRG9HZXREZWJ1Z1JlcG9ydENvb2xkb3ducygKLUBAIC0zNzI2LDEwICszNzI2 LDEwIEBAIERvR2V0S0Fub255bWl0eURhdGEoc3FsOjpEYXRhYmFzZSYgZGIsCi0gCi0gICBzdGQ6 OnZlY3RvcjxTdG9yYWdlSW50ZXJlc3RHcm91cDo6S0Fub255bWl0eURhdGE+IGtfYW5vbl9kYXRh OwotICAgd2hpbGUgKGludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN0ZXAoKSkgewotLSAgICBr X2Fub25fZGF0YS5lbXBsYWNlX2JhY2soCi0rICAgIGtfYW5vbl9kYXRhLmVtcGxhY2VfYmFjaygp ID0gewotICAgICAgICAgLypoYXNoZWRfa2V5PSovaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnku Q29sdW1uU3RyaW5nKDApLAotICAgICAgICAgLyppc19rX2Fub255bW91cz0qL2ludGVyZXN0X2dy b3VwX2thbm9uX3F1ZXJ5LkNvbHVtbkJvb2woMSksCi0tICAgICAgICAvKmxhc3RfdXBkYXRlZD0q L2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMikpOwotKyAgICAgICAgLyps YXN0X3VwZGF0ZWQ9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIpfTsK LSAgIH0KLSAgIGlmICghaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3VjY2VlZGVkKCkpIHsK LSAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLUBAIC0zODI2LDEyICszODI2LDEyIEBAIERvR2V0 SW50ZXJlc3RHcm91cHNGb3JVcGRhdGUoc3FsOjpEYXRhYmEKLSAgICAgICBjb250aW51ZTsKLSAg ICAgfQotIAotLSAgICByZXN1bHQuZW1wbGFjZV9iYWNrKAotKyAgICByZXN1bHQuZW1wbGFjZV9i YWNrKCkgPSB7Ci0gICAgICAgICBibGluazo6SW50ZXJlc3RHcm91cEtleSgKLSAgICAgICAgICAg ICBvd25lciwgZ2V0X2ludGVyZXN0X2dyb3VwX3VwZGF0ZV9wYXJhbWV0ZXJzLkNvbHVtblN0cmlu ZygwKSksCi0gICAgICAgICB1cGRhdGVfdXJsLnZhbHVlKCksCi0gICAgICAgICBEZXNlcmlhbGl6 ZU9yaWdpbigKLS0gICAgICAgICAgICBnZXRfaW50ZXJlc3RfZ3JvdXBfdXBkYXRlX3BhcmFtZXRl cnMuQ29sdW1uU3RyaW5nKDIpKSk7Ci0rICAgICAgICAgICAgZ2V0X2ludGVyZXN0X2dyb3VwX3Vw ZGF0ZV9wYXJhbWV0ZXJzLkNvbHVtblN0cmluZygyKSl9OwotICAgfQotICAgaWYgKCFnZXRfaW50 ZXJlc3RfZ3JvdXBfdXBkYXRlX3BhcmFtZXRlcnMuU3VjY2VlZGVkKCkpIHsKLSAgICAgcmV0dXJu IHN0ZDo6bnVsbG9wdDsKLUBAIC00MDgwLDggKzQwODAsOCBAQCBEb0dldEludGVyZXN0R3JvdXBO YW1lc0ZvckpvaW5pbmdPcmlnaW4oCi0gICBsb2FkLkJpbmRUaW1lKDEsIG5vdyk7Ci0gCi0gICB3 aGlsZSAobG9hZC5TdGVwKCkpIHsKLS0gICAgcmVzdWx0LmVtcGxhY2VfYmFjayhEZXNlcmlhbGl6 ZU9yaWdpbihsb2FkLkNvbHVtblN0cmluZygwKSksCi0tICAgICAgICAgICAgICAgICAgICAgICAg bG9hZC5Db2x1bW5TdHJpbmcoMSkpOwotKyAgICByZXN1bHQuZW1wbGFjZV9iYWNrKCkgPSB7RGVz ZXJpYWxpemVPcmlnaW4obG9hZC5Db2x1bW5TdHJpbmcoMCkpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIGxvYWQuQ29sdW1uU3RyaW5nKDEpfTsKLSAgIH0KLSAgIGlmICghbG9hZC5TdWNjZWVk ZWQoKSkgewotICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotQEAgLTQzMTksOSArNDMxOSw5IEBA IGJvb2wgQ2xlYXJFeHBpcmVkSW50ZXJlc3RHcm91cHMoc3FsOjpEYXQKLSAgIGV4cGlyZWRfaW50 ZXJlc3RfZ3JvdXAuQmluZFRpbWUoMCwgZXhwaXJhdGlvbl9iZWZvcmUpOwotICAgc3RkOjp2ZWN0 b3I8Ymxpbms6OkludGVyZXN0R3JvdXBLZXk+IGV4cGlyZWRfZ3JvdXBzOwotICAgd2hpbGUgKGV4 cGlyZWRfaW50ZXJlc3RfZ3JvdXAuU3RlcCgpKSB7Ci0tICAgIGV4cGlyZWRfZ3JvdXBzLmVtcGxh Y2VfYmFjaygKLSsgICAgZXhwaXJlZF9ncm91cHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAg ICBEZXNlcmlhbGl6ZU9yaWdpbihleHBpcmVkX2ludGVyZXN0X2dyb3VwLkNvbHVtblN0cmluZygw KSksCi0tICAgICAgICBleHBpcmVkX2ludGVyZXN0X2dyb3VwLkNvbHVtblN0cmluZygxKSk7Ci0r ICAgICAgICBleHBpcmVkX2ludGVyZXN0X2dyb3VwLkNvbHVtblN0cmluZygxKX07Ci0gICB9Ci0g ICBpZiAoIWV4cGlyZWRfaW50ZXJlc3RfZ3JvdXAuU3VjY2VlZGVkKCkpIHsKLSAgICAgRExPRyhF UlJPUikgPDwgIkNsZWFyRXhwaXJlZEludGVyZXN0R3JvdXBzIGNvdWxkIG5vdCBnZXQgZXhwaXJl ZCBncm91cHMuIjsKLUBAIC00Mzc3LDggKzQzNzcsOCBAQCBib29sIENsZWFyRXhjZXNzaXZlU3Rv cmFnZShzcWw6OkRhdGFiYXNlCi0gICAgICAgY3VtX3NpemUgPSAwOwotICAgICB9Ci0gICAgIGlm IChjdW1fc2l6ZSArIGdyb3VwX3NpemUgPiBtYXhfb3duZXJfc3RvcmFnZV9zaXplKSB7Ci0tICAg ICAgZ3JvdXBzX3RvX3JlbW92ZS5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGdyb3VwX293bmVyKSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZ3JvdXBfbmFt ZSkpOwotKyAgICAgIGdyb3Vwc190b19yZW1vdmUuZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3Zl KGdyb3VwX293bmVyKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6 Om1vdmUoZ3JvdXBfbmFtZSl9OwotICAgICB9IGVsc2UgewotICAgICAgIGN1bV9zaXplICs9IGdy b3VwX3NpemU7Ci0gICAgIH0KLUBAIC00NTIyLDcgKzQ1MjIsNyBAQCBEb0dldEJpZGRpbmdBbmRB dWN0aW9uU2VydmVyS2V5cyhzcWw6OkRhCi0gICAgIHN0ZDo6dmVjdG9yPEJpZGRpbmdBbmRBdWN0 aW9uU2VydmVyS2V5PiBrZXlzOwotICAgICBrZXlzLnJlc2VydmUoa2V5X3Byb3Rvcy5rZXlzX3Np emUoKSk7Ci0gICAgIGZvciAoYXV0byYga2V5X3Byb3RvIDogKmtleV9wcm90b3MubXV0YWJsZV9r ZXlzKCkpIHsKLS0gICAgICBrZXlzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoKmtleV9wcm90by5t dXRhYmxlX2tleSgpKSwga2V5X3Byb3RvLmlkKCkpOwotKyAgICAgIGtleXMuZW1wbGFjZV9iYWNr KCkgPSB7c3RkOjptb3ZlKCprZXlfcHJvdG8ubXV0YWJsZV9rZXkoKSksIGtleV9wcm90by5pZCgp fTsKLSAgICAgfQotICAgICByZXR1cm4ge2V4cGlyYXRpb24sIGtleXN9OwotICAgfQotZGlmZiAt dXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9y ZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1l X2hvc3RfaW1wbC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2Vy L3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEzLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1l X2hvc3RfaW1wbC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwNzkxNTg0MyArMDIwMAotQEAgLTg5 NjQsNyArODk2NCw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0K LSAgIGZvciAoY29uc3QgYmxpbms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdEZXN0aW5hdGlvbiYg ZGVzdGluYXRpb24gOgotICAgICAgICBkZXN0aW5hdGlvbnMpIHsKLSAgICAgU2VuZEZlbmNlZEZy YW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVu dChldmVudF90eXBlLCBldmVudF9kYXRhLCBjcm9zc19vcmlnaW5fZXhwb3NlZCksCi0rICAgICAg ICBEZXN0aW5hdGlvbkVudW1FdmVudHtldmVudF90eXBlLCBldmVudF9kYXRhLCBjcm9zc19vcmln aW5fZXhwb3NlZH0sCi0gICAgICAgICBkZXN0aW5hdGlvbik7Ci0gICB9Ci0gfQotQEAgLTg5OTUs NyArODk5NSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0KLSAg IH0KLSAKLSAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVybmFsKAotLSAgICAg IERlc3RpbmF0aW9uVVJMRXZlbnQoZGVzdGluYXRpb25fdXJsLCBjcm9zc19vcmlnaW5fZXhwb3Nl ZCksCi0rICAgICAgRGVzdGluYXRpb25VUkxFdmVudHtkZXN0aW5hdGlvbl91cmwsIGNyb3NzX29y aWdpbl9leHBvc2VkfSwKLSAgICAgICBibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rlc3Rp bmF0aW9uOjprQnV5ZXIpOwotIH0KLSAKLUBAIC05MTI2LDcgKzkxMjYsNyBAQCB2b2lkIFJlbmRl ckZyYW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCi0gICAgICAgICBkYXRhID0gaW5mby0+ZGF0 YTsKLSAgICAgICB9Ci0gICAgICAgaW5pdGlhdG9yX3JmaC0+U2VuZEZlbmNlZEZyYW1lUmVwb3J0 aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2ZW50KGV2ZW50 X3R5cGUsIGRhdGEpLCBkZXN0aW5hdGlvbiwKLSsgICAgICAgICAgQXV0b21hdGljQmVhY29uRXZl bnR7ZXZlbnRfdHlwZSwgZGF0YX0sIGRlc3RpbmF0aW9uLAotICAgICAgICAgICBuYXZpZ2F0aW9u X3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOwotICAgICB9Ci0gICB9IGVsc2UgewotQEAgLTkx MzcsNyArOTEzNyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6TWF5YmVTZW5kRmVuY2UK LSAgICAgZm9yIChibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rlc3RpbmF0aW9uIGRlc3Rp bmF0aW9uIDoKLSAgICAgICAgICBpbmZvLT5kZXN0aW5hdGlvbnMpIHsKLSAgICAgICBpbml0aWF0 b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25JbnRlcm5hbCgKLS0gICAgICAg ICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlwZSwgaW5mby0+ZGF0YSksIGRlc3RpbmF0 aW9uLAotKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudHtldmVudF90eXBlLCBpbmZvLT5k YXRhfSwgZGVzdGluYXRpb24sCi0gICAgICAgICAgIG5hdmlnYXRpb25fcmVxdWVzdC5HZXROYXZp Z2F0aW9uSWQoKSk7Ci0gICAgIH0KLSAgIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRhaW5l cl9ob3N0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRhaW5lcl9o b3N0LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvc2Vydmlj ZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dv cmtlcl9jb250YWluZXJfaG9zdC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwODkxNTg2NyArMDIw MAotQEAgLTEwNzYsNyArMTA3Niw3IEBAIGJsaW5rOjptb2pvbTo6U2VydmljZVdvcmtlckNsaWVu dFR5cGUgU2UKLSAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hl Y2tlcl8pOwotICAgRENIRUNLKGNsaWVudF9pbmZvXyk7Ci0gICByZXR1cm4gYWJzbDo6dmlzaXQo Ci0tICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAg ICAgICAgICBbXShHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkg ewotICAgICAgICAgICAgIHJldHVybiBibGluazo6bW9qb206OlNlcnZpY2VXb3JrZXJDbGllbnRU eXBlOjprV2luZG93OwotICAgICAgICAgICB9LAotQEAgLTEwODUsNyArMTA4NSw3IEBAIGJsaW5r Ojptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGUgU2UKLSAgICAgICAgICAgfSwKLSAgICAg ICAgICAgW10oYmxpbms6OlNoYXJlZFdvcmtlclRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsK LSAgICAgICAgICAgICByZXR1cm4gYmxpbms6Om1vam9tOjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlw ZTo6a1NoYXJlZFdvcmtlcjsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAg ICpjbGllbnRfaW5mb18pOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVzb3Vy Y2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29y a2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCi0tLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJf bWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IJMjAyNC0wNS0yOSAxODowMToxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9t YWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUw ODkxNTg2NyArMDIwMAotQEAgLTM3MCwxMCArMzcwLDEwIEBAIFNlcnZpY2VXb3JrZXJNYWluUmVz b3VyY2VMb2FkZXJJbnRlcmNlcHQKLSAgIH0KLSAgIGF1dG8qIHN0b3JhZ2VfcGFydGl0aW9uID0g cHJvY2Vzcy0+R2V0U3RvcmFnZVBhcnRpdGlvbigpOwotIAotLSAgcmV0dXJuIGFic2w6OnZpc2l0 KGJhc2U6Ok92ZXJsb2FkZWQoWyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsKLSsgIHJldHVybiBhYnNs Ojp2aXNpdChiYXNlOjpPdmVybG9hZGVke1smLCB0aGlzXShhdXRvIHRva2VuKSB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gR2V0U3RvcmFnZUtleUZyb21Xb3JrZXJIb3N0KHN0b3Jh Z2VfcGFydGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0b2tlbiwgb3JpZ2luKTsKLS0gICAgICAgICAgICAgICAgICAgICB9 KSwKLSsgICAgICAgICAgICAgICAgICAgICB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAqd29y a2VyX3Rva2VuXyk7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250 ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3dv cmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29udGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEzLjAwMDAwMDAwMCAr MDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3dvcmtlcl9o b3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwOTkxNTg5 MSArMDIwMAotQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIERlZGljYXRlZFdvcmtlckhvc3Q6OlN0 YXJ0U2NyaXB0TG9hCi0gICBSZW5kZXJGcmFtZUhvc3RJbXBsKiBjcmVhdG9yX3JlbmRlcl9mcmFt ZV9ob3N0ID0gbnVsbHB0cjsKLSAgIERlZGljYXRlZFdvcmtlckhvc3QqIGNyZWF0b3Jfd29ya2Vy ID0gbnVsbHB0cjsKLSAKLS0gIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWQoCi0rICBhYnNs Ojp2aXNpdChiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICAgICAgICAgIFsmXShjb25zdCBH bG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAg ICAgICAgICAgICAgIGNyZWF0b3JfcmVuZGVyX2ZyYW1lX2hvc3QgPQotICAgICAgICAgICAgICAg ICAgICAgICAgIFJlbmRlckZyYW1lSG9zdEltcGw6OkZyb21JRChyZW5kZXJfZnJhbWVfaG9zdF9p ZCk7Ci1AQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgRGVkaWNhdGVkV29ya2VySG9zdDo6U3RhcnRT Y3JpcHRMb2EKLSAgICAgICAgICAgICAgICAgICBbJl0oYmxpbms6OkRlZGljYXRlZFdvcmtlclRv a2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgIGNyZWF0 b3Jfd29ya2VyID0gc2VydmljZV8tPkdldERlZGljYXRlZFdvcmtlckhvc3RGcm9tVG9rZW4oCi0g ICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAg ICAgICAgICAgICAgfSksCi0rICAgICAgICAgICAgICAgICAgfX0sCi0gICAgICAgICAgICAgICBj cmVhdG9yXyk7Ci0gCi0gICBpZiAoIWNyZWF0b3JfcmVuZGVyX2ZyYW1lX2hvc3QgJiYgIWNyZWF0 b3Jfd29ya2VyKSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2V4dGVuc2lvbnMv YnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZXh0ZW5zaW9ucy9icm93 c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVldWUuY2MKLS0tLSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2 aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUt MjkgMTg6MDE6MjMuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9l eHRlbnNpb25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1 ZS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwOTkxNTg5MSArMDIwMAotQEAgLTM5NCw4ICszOTQs OCBAQCBib29sIFNlcnZpY2VXb3JrZXJUYXNrUXVldWU6OklzUmVhZHlUb1J1Ci0gICAgIHJldHVy biBmYWxzZTsKLSAgIH0KLSAKLS0gIGNvbnN0IFNlcXVlbmNlZENvbnRleHRJZCBjb250ZXh0X2lk KGV4dGVuc2lvbi0+aWQoKSwgYnJvd3Nlcl9jb250ZXh0XywKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICphY3RpdmF0aW9uX3Rva2VuKTsKLSsgIGNvbnN0IFNlcXVlbmNl ZENvbnRleHRJZCBjb250ZXh0X2lke2V4dGVuc2lvbi0+aWQoKSwgYnJvd3Nlcl9jb250ZXh0XywK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphY3RpdmF0aW9uX3Rva2Vu fTsKLSAgIGNvbnN0IFdvcmtlclN0YXRlKiB3b3JrZXJfc3RhdGUgPSBHZXRXb3JrZXJTdGF0ZShj b250ZXh0X2lkKTsKLSAKLSAgIGlmICghd29ya2VyX3N0YXRlIHx8ICF3b3JrZXJfc3RhdGUtPndv cmtlcl9pZF8pIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2NvbW1hbmRf YnVmZmVyL2NsaWVudC9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmgubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3No YXJlZF9pbWFnZV9pbnRlcmZhY2UuaAotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2Nv bW1hbmRfYnVmZmVyL2NsaWVudC9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmgubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToyNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2dwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvc2hhcmVkX2ltYWdl X2ludGVyZmFjZS5oCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTEwOTE1OTE0ICswMjAwCi1AQCAtNjQs MTkgKzY0LDE5IEBAIHN0cnVjdCBTaGFyZWRJbWFnZUluZm8gewotICAgICAgICAgICAgICAgICAg IFNrQWxwaGFUeXBlIGFscGhhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXNh Z2UsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdfdmlldyBkZWJ1Z19sYWJlbCkKLS0g ICAgICA6IG1ldGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sIGFs cGhhX3R5cGUsIHVzYWdlKSwKLSsgICAgICA6IG1ldGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFj ZSwgc3VyZmFjZV9vcmlnaW4sIGFscGhhX3R5cGUsIHVzYWdlfSwKLSAgICAgICAgIGRlYnVnX2xh YmVsKGRlYnVnX2xhYmVsKSB7fQotICAgU2hhcmVkSW1hZ2VJbmZvKGNvbnN0IHZpejo6U2hhcmVk SW1hZ2VGb3JtYXQmIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICBnZng6OlNpemUgc2l6ZSwK LSAgICAgICAgICAgICAgICAgICBjb25zdCBnZng6OkNvbG9yU3BhY2UmIGNvbG9yX3NwYWNlLAot ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVzYWdlLAotICAgICAgICAgICAgICAgICAgIHN0 ZDo6c3RyaW5nX3ZpZXcgZGVidWdfbGFiZWwpCi0tICAgICAgOiBtZXRhKGZvcm1hdCwKLSsgICAg ICA6IG1ldGF7Zm9ybWF0LAotICAgICAgICAgICAgICBzaXplLAotICAgICAgICAgICAgICBjb2xv cl9zcGFjZSwKLSAgICAgICAgICAgICAga1RvcExlZnRfR3JTdXJmYWNlT3JpZ2luLAotICAgICAg ICAgICAgICBrUHJlbXVsX1NrQWxwaGFUeXBlLAotLSAgICAgICAgICAgICB1c2FnZSksCi0rICAg ICAgICAgICAgIHVzYWdlfSwKLSAgICAgICAgIGRlYnVnX2xhYmVsKGRlYnVnX2xhYmVsKSB7fQot ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBleGlzdHMgb25seSB0byBzdXBwb3J0IHRoZSBERVBSRUNB VEVEIENyZWFyZVNoYXJlZEltYWdlCi0gICAvLyBjYWxsIGJlbG93IHRoYXQgYWNjZXB0cyBhIEdw dU1lbW9yeUJ1ZmZlci4gVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoYXQKLWRpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVk X2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2lt YWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9n cHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nl c3MuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToyNi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9jb21tYW5kX2J1ZmZlci9z ZXJ2aWNlL3NoYXJlZF9pbWFnZV9pbnRlcmZhY2VfaW5fcHJvY2Vzcy5jYwkyMDI0LTA2LTAyIDIz OjUxOjI1LjUxMDkxNTkxNCArMDIwMAotQEAgLTYyMiwxMiArNjIyLDEyIEBAIFNoYXJlZEltYWdl SW50ZXJmYWNlSW5Qcm9jZXNzOjpDcmVhdGVTaGEKLSAKLSAgIHJldHVybiBiYXNlOjpNYWtlUmVm Q291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCi0gICAgICAgbWFpbGJveCwKLS0gICAgICBTaGFy ZWRJbWFnZU1ldGFkYXRhKAotKyAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7Ci0gICAgICAgICAg IHZpejo6R2V0U2luZ2xlUGxhbmVTaGFyZWRJbWFnZUZvcm1hdCgKLSAgICAgICAgICAgICAgIEdl dFBsYW5lQnVmZmVyRm9ybWF0KHBsYW5lLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0Rm9ybWF0KCkp KSwKLSAgICAgICAgICAgZ3B1X21lbW9yeV9idWZmZXItPkdldFNpemUoKSwgc2lfaW5mby5tZXRh LmNvbG9yX3NwYWNlLAotICAgICAgICAgICBzaV9pbmZvLm1ldGEuc3VyZmFjZV9vcmlnaW4sIHNp X2luZm8ubWV0YS5hbHBoYV90eXBlLAotLSAgICAgICAgICBzaV9pbmZvLm1ldGEudXNhZ2UpLAot KyAgICAgICAgICBzaV9pbmZvLm1ldGEudXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5j VG9rZW4oKSwgaG9sZGVyXywgZ3B1X21lbW9yeV9idWZmZXItPkdldFR5cGUoKSk7Ci0gfQotIAot ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hh cmVkX2ltYWdlX2ludGVyZmFjZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNl LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hh cmVkX2ltYWdlX2ludGVyZmFjZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5 IDE4OjAxOjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1 L2lwYy9jbGllbnQvY2xpZW50X3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MJMjAyNC0wNi0wMiAy Mzo1MToyNS41MTA5MTU5MTQgKzAyMDAKLUBAIC0yNTEsMTEgKzI1MSwxMSBAQCBzY29wZWRfcmVm cHRyPENsaWVudFNoYXJlZEltYWdlPiBDbGllbnRTCi0gICAgICAgQWRkTWFpbGJveChwcm94eV8t PkNyZWF0ZVNoYXJlZEltYWdlKAotICAgICAgICAgICBidWZmZXJfZm9ybWF0LCBwbGFuZSwgZ3B1 X21lbW9yeV9idWZmZXItPkdldFNpemUoKSwgc2lfaW5mbywKLSAgICAgICAgICAgZ3B1X21lbW9y eV9idWZmZXItPkNsb25lSGFuZGxlKCkpKSwKLS0gICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhKHZp ejo6R2V0U2luZ2xlUGxhbmVTaGFyZWRJbWFnZUZvcm1hdCgKLSsgICAgICBTaGFyZWRJbWFnZU1l dGFkYXRhe3Zpejo6R2V0U2luZ2xlUGxhbmVTaGFyZWRJbWFnZUZvcm1hdCgKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHZXRQbGFuZUJ1ZmZlckZvcm1hdChwbGFuZSwgYnVmZmVyX2Zv cm1hdCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1X21lbW9yeV9idWZmZXItPkdl dFNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpX2luZm8ubWV0YS5jb2xvcl9z cGFjZSwgc2lfaW5mby5tZXRhLnN1cmZhY2Vfb3JpZ2luLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgc2lfaW5mby5tZXRhLmFscGhhX3R5cGUsIHNpX2luZm8ubWV0YS51c2FnZSksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICBzaV9pbmZvLm1ldGEuYWxwaGFfdHlwZSwgc2lfaW5mby5t ZXRhLnVzYWdlfSwKLSAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRlcl8sIGdw dV9tZW1vcnlfYnVmZmVyLT5HZXRUeXBlKCkpOwotIH0KLSAKLUBAIC0yOTcsMTMgKzI5NywxMyBA QCBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFjZTo6Q3JlYXRlU3dhcENoCi0gICByZXR1cm4gQ2xp ZW50U2hhcmVkSW1hZ2VJbnRlcmZhY2U6OlN3YXBDaGFpblNoYXJlZEltYWdlcygKLSAgICAgICBi YXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCi0gICAgICAgICAgIG1haWxi b3hlcy5mcm9udF9idWZmZXIsCi0tICAgICAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEoZm9ybWF0 LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgICAgICBTaGFyZWRJbWFnZU1l dGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKLSAgICAgICAgICAg c3luY190b2tlbiwgaG9sZGVyXywgZ2Z4OjpFTVBUWV9CVUZGRVIpLAotICAgICAgIGJhc2U6Ok1h a2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAgICAgICAgbWFpbGJveGVzLmJh Y2tfYnVmZmVyLAotLSAgICAgICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwg Y29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKLSsgICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXtm b3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCi0gICAgICAgICAgIHN5bmNfdG9r ZW4sIGhvbGRlcl8sIGdmeDo6RU1QVFlfQlVGRkVSKSk7Ci0gfQotIAotQEAgLTM2MSw4ICszNjEs OCBAQCBzY29wZWRfcmVmcHRyPENsaWVudFNoYXJlZEltYWdlPiBDbGllbnRTCi0gCi0gICByZXR1 cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAotICAgICAgIG1haWxi b3gsCi0tICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNl LCBzdXJmYWNlX29yaWdpbiwgYWxwaGFfdHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg IHVzYWdlKSwKLSsgICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jf c3BhY2UsIHN1cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXywg Z2Z4OjpFTVBUWV9CVUZGRVIpOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvZ3B1L2lwYy9zZXJ2aWNlL2dwdV9jaGFubmVsX3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvaXBjL3Nl cnZpY2UvZ3B1X2NoYW5uZWxfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5jYwotLS0tIGNocm9taXVt LTEyNi4wLjY0NzguMjYvZ3B1L2lwYy9zZXJ2aWNlL2dwdV9jaGFubmVsX3NoYXJlZF9pbWFnZV9p bnRlcmZhY2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNi0wMyAxNjo1NDo1OC45 OTgxOTY2MjYgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9pcGMvc2Vydmlj ZS9ncHVfY2hhbm5lbF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjCTIwMjQtMDYtMDMgMTY6NTU6 MjMuNzIyNzI5OTQ5ICswMjAwCi1AQCAtMzkyLDEyICszOTIsMTIgQEAgR3B1Q2hhbm5lbFNoYXJl ZEltYWdlSW50ZXJmYWNlOjpDcmVhdGVTaAotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3Vu dGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAgICBtYWlsYm94LAotLSAgICAgIFNoYXJlZElt YWdlTWV0YWRhdGEoCi0rICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXsKLSAgICAgICAgICAgdml6 OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAotICAgICAgICAgICAgICAgR2V0UGxh bmVCdWZmZXJGb3JtYXQocGxhbmUsIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRGb3JtYXQoKSkpLAot ICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBzaV9pbmZvLm1ldGEuY29s b3Jfc3BhY2UsCi0gICAgICAgICAgIHNpX2luZm8ubWV0YS5zdXJmYWNlX29yaWdpbiwgc2lfaW5m by5tZXRhLmFscGhhX3R5cGUsCi0tICAgICAgICAgIHNpX2luZm8ubWV0YS51c2FnZSksCi0rICAg ICAgICAgIHNpX2luZm8ubWV0YS51c2FnZX0sCi0gICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tl bigpLCBob2xkZXJfLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0VHlwZSgpKTsKLSB9Ci0gCi1kaWZm IC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L25ldC9kbnMv aG9zdF9yZXNvbHZlcl9jYWNoZS5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvbmV0L2Ru cy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUt MjkgMTg6MDE6MzQuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9u ZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41MTE5MTU5 MzkgKzAyMDAKLUBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBIb3N0UmVzb2x2ZXJDYWNoZTo6U2V0 KAotIAotICAgc3RkOjpzdHJpbmcgZG9tYWluX25hbWUgPSByZXN1bHQtPmRvbWFpbl9uYW1lKCk7 Ci0gICBlbnRyaWVzXy5lbXBsYWNlKAotLSAgICAgIEtleShzdGQ6Om1vdmUoZG9tYWluX25hbWUp LCBuZXR3b3JrX2Fub255bWl6YXRpb25fa2V5KSwKLSsgICAgICBLZXl7c3RkOjptb3ZlKGRvbWFp bl9uYW1lKSwgbmV0d29ya19hbm9ueW1pemF0aW9uX2tleX0sCi0gICAgICAgRW50cnkoc3RkOjpt b3ZlKHJlc3VsdCksIHNvdXJjZSwgc2VjdXJlLCBzdGFsZW5lc3NfZ2VuZXJhdGlvbikpOwotIAot ICAgaWYgKGVudHJpZXNfLnNpemUoKSA+IG1heF9lbnRyaWVzXykgewotZGlmZiAtdXAgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2Nzcy9wcm9w ZXJ0aWVzL2Nzc19wYXJzaW5nX3V0aWxzLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9jc3MvcHJv cGVydGllcy9jc3NfcGFyc2luZ191dGlscy5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYv dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9jc3MvcHJvcGVydGllcy9jc3NfcGFyc2lu Z191dGlscy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjM4LjAw MDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvY29yZS9jc3MvcHJvcGVydGllcy9jc3NfcGFyc2luZ191dGlscy5jYwkyMDI0 LTA2LTAyIDIzOjUxOjI1LjUxMzkxNTk4NiArMDIwMAotQEAgLTg1MzMsNyArODUzMyw3IEBAIHN0 ZDo6b3B0aW9uYWw8SW5zZXRBcmVhS2V5d29yZD4gQ29uc3VtZUkKLSAgICAgZGVmYXVsdDoKLSAg ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgfQotLSAgcmV0dXJuIEluc2V0QXJlYUtleXdv cmQoY3NzX3BhcnNpbmdfdXRpbHM6OkNvbnN1bWVJZGVudChyYW5nZSksIHR5cGUpOwotKyAgcmV0 dXJuIEluc2V0QXJlYUtleXdvcmR7Y3NzX3BhcnNpbmdfdXRpbHM6OkNvbnN1bWVJZGVudChyYW5n ZSksIHR5cGV9OwotIH0KLSAKLSB9ICAvLyBuYW1lc3BhY2UKLWRpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvYW5jaG9y X2V2YWx1YXRvcl9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4w LjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvYW5jaG9yX2V2 YWx1YXRvcl9pbXBsLmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9jb3JlL2xheW91dC9hbmNob3JfZXZhbHVhdG9yX2ltcGwuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTozOS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv bGF5b3V0L2FuY2hvcl9ldmFsdWF0b3JfaW1wbC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUxMzkx NTk4NiArMDIwMAotQEAgLTU5MSw3ICs1OTEsNyBAQCBBbmNob3JFdmFsdWF0b3JJbXBsOjpDb21w dXRlSW5zZXRBcmVhT2ZmCi0gICAgIHJpZ2h0ID0gRXZhbHVhdGUocXVlcnkudmFsdWUoKSwgcG9z aXRpb25fYW5jaG9yLAotICAgICAgICAgICAgICAgICAgICAgIC8qIGluc2V0X2FyZWFfb2Zmc2V0 cyAqLyBzdGQ6Om51bGxvcHQpOwotICAgfQotLSAgcmV0dXJuIEluc2V0QXJlYU9mZnNldHModG9w LCBib3R0b20sIGxlZnQsIHJpZ2h0KTsKLSsgIHJldHVybiBJbnNldEFyZWFPZmZzZXRze3RvcCwg Ym90dG9tLCBsZWZ0LCByaWdodH07Ci0gfQotIAotIFBoeXNpY2FsUmVjdCBBbmNob3JFdmFsdWF0 b3JJbXBsOjpJbnNldEFyZWFNb2RpZmllZENvbnRhaW5pbmdCbG9jaygKLWRpZmYgLXVwIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9tZWRp YS9hdWRpby9hdWRpb19yZW5kZXJlcl9taXhlcl9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv bW9kdWxlcy9tZWRpYS9hdWRpby9hdWRpb19yZW5kZXJlcl9taXhlcl9tYW5hZ2VyLmNjCi0tLS0g Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVz L21lZGlhL2F1ZGlvL2F1ZGlvX3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTo0MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVk aWEvYXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYwkyMDI0LTA2LTAyIDIzOjUx OjI1LjUxNDkxNjAxMCArMDIwMAotQEAgLTE4MSw4ICsxODEsOCBAQCBBdWRpb1JlbmRlcmVyTWl4 ZXIqIEF1ZGlvUmVuZGVyZXJNaXhlck1hCi0gICAgIERWTE9HKDEpIDw8ICJOb3QgcmV1c2luZyBt aXhlciB3aXRoIGVycm9yczogIiA8PCBpdC0+c2Vjb25kLm1peGVyOwotIAotICAgICAvLyBNb3Zl IGJhZCBtaXhlcnMgb3V0IG9mIHRoZSByZXVzZSBtYXAuCi0tICAgIGRlYWRfbWl4ZXJzXy5lbXBs YWNlX2JhY2soc3RkOjptb3ZlKGl0LT5zZWNvbmQubWl4ZXIpLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGl0LT5zZWNvbmQucmVmX2NvdW50KTsKLSsgICAgZGVhZF9taXhlcnNfLmVt cGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShpdC0+c2Vjb25kLm1peGVyKSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLnJlZl9jb3VudH07Ci0gICAgIG1peGVyc18u ZXJhc2UoaXQpOwotICAgfQotIAotQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEF1ZGlvUmVuZGVy ZXJNaXhlck1hbmFnZXI6OlJldHVybk1pCi0gICAgIH0KLSAgIH0gZWxzZSBpZiAoZGVhZF9pdCA9 PSBkZWFkX21peGVyc18uZW5kKCkgJiYgbWl4ZXJfcmVmLm1peGVyLT5IYXNTaW5rRXJyb3IoKSkg ewotICAgICAvLyBNb3ZlIGJhZCBtaXhlcnMgb3V0IG9mIHRoZSByZXVzZSBtYXAuCi0tICAgIGRl YWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG1peGVyX3JlZi5taXhlciksIG1peGVy X3JlZi5yZWZfY291bnQpOwotKyAgICBkZWFkX21peGVyc18uZW1wbGFjZV9iYWNrKCkgPSB7c3Rk Ojptb3ZlKG1peGVyX3JlZi5taXhlciksIG1peGVyX3JlZi5yZWZfY291bnR9OwotICAgICBtaXhl cnNfLmVyYXNlKGl0KTsKLSAgIH0KLSB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5o Lm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRlLmgKLS0tLSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2Zv bnRzL2ZvbnRfcGFsZXR0ZS5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6 MDE6NDEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaAkyMDI0LTA2 LTAyIDIzOjUxOjI1LjUxNDkxNjAxMCArMDIwMAotQEAgLTk2LDcgKzk2LDcgQEAgY2xhc3MgUExB VEZPUk1fRVhQT1JUIEZvbnRQYWxldHRlIDogcHVibAotICAgICAgIENvbG9yOjpDb2xvclNwYWNl IGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsCi0gICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcjo6 SHVlSW50ZXJwb2xhdGlvbk1ldGhvZD4gaHVlX2ludGVycG9sYXRpb25fbWV0aG9kKSB7Ci0gICAg IHJldHVybiBiYXNlOjpBZG9wdFJlZihuZXcgRm9udFBhbGV0dGUoCi0tICAgICAgICBzdGFydCwg ZW5kLCBOb25Ob3JtYWxpemVkUGVyY2VudGFnZXMoc3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNl bnRhZ2UpLAotKyAgICAgICAgc3RhcnQsIGVuZCwgTm9uTm9ybWFsaXplZFBlcmNlbnRhZ2Vze3N0 YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlfSwKLSAgICAgICAgIG5vcm1hbGl6ZWRfcGVy Y2VudGFnZSwgYWxwaGFfbXVsdGlwbGllciwgY29sb3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwKLSAg ICAgICAgIGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCkpOwotICAgfQotQEAgLTE3MCw3ICsxNzAs NyBAQCBjbGFzcyBQTEFURk9STV9FWFBPUlQgRm9udFBhbGV0dGUgOiBwdWJsCi0gICAgICAgZG91 YmxlIG5vcm1hbGl6ZWRfcGVyY2VudGFnZSkgewotICAgICBkb3VibGUgZW5kX3BlcmNlbnRhZ2Ug PSBub3JtYWxpemVkX3BlcmNlbnRhZ2UgKiAxMDAuMDsKLSAgICAgZG91YmxlIHN0YXJ0X3BlcmNl bnRhZ2UgPSAxMDAuMCAtIGVuZF9wZXJjZW50YWdlOwotLSAgICByZXR1cm4gTm9uTm9ybWFsaXpl ZFBlcmNlbnRhZ2VzKHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKTsKLSsgICAgcmV0 dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2Vu dGFnZX07Ci0gICB9Ci0gCi0gICBkb3VibGUgR2V0QWxwaGFNdWx0aXBsaWVyKCkgY29uc3Qgewot ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2MKLS0tLSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3Bh bGV0dGVfaW50ZXJwb2xhdGlvbi5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5 IDE4OjAxOjQxLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0 aW9uLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTE1OTE2MDM0ICswMjAwCi1AQCAtMzEsNyArMzEs NyBAQCBWZWN0b3I8Rm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGU+Ci0gICAgICAgICBj b2xvcl9pbnRlcnBvbGF0aW9uX3NwYWNlLCBodWVfaW50ZXJwb2xhdGlvbl9tZXRob2QsIHN0YXJ0 X2NvbG9yLAotICAgICAgICAgZW5kX2NvbG9yLCBwZXJjZW50YWdlLCBhbHBoYV9tdWx0aXBsaWVy KTsKLSAKLS0gICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGUgcmVzdWx0X2NvbG9y X3JlY29yZChpLCByZXN1bHRfY29sb3IpOwotKyAgICBGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVP dmVycmlkZSByZXN1bHRfY29sb3JfcmVjb3Jke3N0YXRpY19jYXN0PGludD4oaSksIHJlc3VsdF9j b2xvcn07Ci0gICAgIHJlc3VsdF9jb2xvcl9yZWNvcmRzLnB1c2hfYmFjayhyZXN1bHRfY29sb3Jf cmVjb3JkKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHRfY29sb3JfcmVjb3JkczsKLWRpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9y ZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIv Y3BkZl9yZW5kZXJzdGF0dXMuY3BwCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9w YXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMzowNS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZh cGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcAkyMDI0LTA2LTAyIDIzOjUxOjI1LjUxNTkx NjAzNCArMDIwMAotQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpQ cm9jZXNzQ2xpcFBhdGgoCi0gICAgIH0gZWxzZSB7Ci0gICAgICAgbV9wRGV2aWNlLT5TZXRDbGlw X1BhdGhGaWxsKAotICAgICAgICAgICAqcFBhdGgsICZtdE9iajJEZXZpY2UsCi0tICAgICAgICAg IENGWF9GaWxsUmVuZGVyT3B0aW9ucyhDbGlwUGF0aC5HZXRDbGlwVHlwZShpKSkpOwotKyAgICAg ICAgICBDRlhfRmlsbFJlbmRlck9wdGlvbnN7Q2xpcFBhdGguR2V0Q2xpcFR5cGUoaSl9KTsKLSAg ICAgfQotICAgfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9iYXNlL3dh eWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgKLS0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0 aWwuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAyOjMxLjAwMDAwMDAw MCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvYmFzZS93YXlsYW5kL2NvbG9y X21hbmFnZXJfdXRpbC5oCTIwMjQtMDYtMDMgMTI6NTg6MTIuMjA1OTgzNjkxICswMjAwCi1AQCAt NTIsNTMgKzUyLDUzIEBAIGNvbnN0ZXhwciBhdXRvIGtDaHJvbWF0aWNpdHlNYXAgPSBiYXNlOjoK LSAgICAgemNyX2NvbG9yX21hbmFnZXJfdjFfY2hyb21hdGljaXR5X25hbWVzLAotICAgICBQcmlt YXJ5VmVyc2lvbj4oCi0gICAgIHt7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05B TUVTX0JUNjAxXzUyNV9MSU5FLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRT aW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlBy aW1hcnlJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X0JUNjAxXzYyNV9MSU5FLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 UHJpbWFyeUlEOjpCVDQ3MEJHLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX0sCi0rICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5 SUQ6OkJUNDcwQkcsCi0rICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUx NzBNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpT TVBURTE3ME0sCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK LSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUx NzBNLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAg ICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNzA5LAotLSAgICAg IFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1 bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6 OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUMjAyMCwKLS0gICAgICBQcmltYXJ5 VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVmYXVsdFNpbmNl VmVyc2lvbil9LAotKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFy eUlEOjpCVDIwMjAsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NSR0IsCi0tICAgICAgUHJpbWFyeVZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9 LAotKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcw OSwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9D SFJPTUFUSUNJVFlfTkFNRVNfRElTUExBWVAzLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpQMywga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAg ICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6UDMsIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX0FET0JFUkdCLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 UHJpbWFyeUlEOjpBRE9CRV9SR0IsCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5j ZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1h cnlJRDo6QURPQkVfUkdCLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJ REVfR0FNVVRfQ09MT1JfU1BJTiwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmlt YXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OldJREVf R0FNVVRfQ09MT1JfU1BJTiwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1JfU1BJTl9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVU X0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3ME0sCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAg ICAgUHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlE OjpCVDQ3ME0sCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9O QU1FU19CVDQ3ME1fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgIHta Q1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNLAotLSAgICAg IFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBnZng6 OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04pfSwK LSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRF MjQwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX1hZWl9ENTAsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAgUHJp bWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpYWVpf RDUwLAotLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNf WFlaX0Q1MF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpfRDUwX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xLAotLSAgICAg IFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBnZng6 OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEVTVDQyOF8xLAotLSAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJ T04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MzFfMiwKLS0gICAgICBQcmltYXJ5VmVyc2lv bigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQ cmltYXJ5SUQ6OlNNUFRFU1Q0MzFfMiwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MzFfMl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDMxXzJf U0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lU WV9OQU1FU19GSUxNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJz aW9uewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6RklMTSwKLS0gICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE1fU0lOQ0Vf VkVSU0lPTil9fSk7Ci0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lU WV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJT059fX0pOwotIAotIC8vIEEgbWFwIGZyb20gdGhlIHpj cl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKLSAvLyByZXByZXNlbnRp bmcgd2VsbC1rbm93biBFT1RGcywgdG8gdGhlaXIgZXF1aXZhbGVudCBUcmFuc2ZlcklEcy4KLUBA IC0xMDcsNjggKzEwNyw2OCBAQCBjb25zdGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1ha2VG aXhlCi0gICAgIHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2VvdGZfbmFtZXMsCi0gICAgIFRyYW5zZmVy VmVyc2lvbj4oewotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MSU5FQVIs Ci0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5F QVIsCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAg IFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwKLSsg ICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK LSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0Is IGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX1NSR0JfSERSLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6U1JHQl9IRFIsCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFu c2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCX0hEUiwKLSsgICAg ICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERS X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf QlQ3MDksCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpCVDcwOSwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUNzA5LAotKyAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19LAotICAg ICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwODcsCi0tICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI0LAotLSAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZlcnNp b257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI0LAotKyAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0FET0JFUkdCLAotICAgICAgLy8gVGhpcyBpcyBldmVyIHNvIHNsaWdodGx5 IGluYWNjdXJhdGUuIFRoZSBudW1iZXIgb3VnaHQgdG8gYmUKLSAgICAgIC8vIDIuMTk5MjE4NzVm LCBub3QgMi4yCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2Zl cklEOjpHQU1NQTIyLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9u KX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpH QU1NQTIyLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0g ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1BRLAotLSAgICAgVHJhbnNmZXJW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpQUSwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfSExHLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6SExHLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lv bntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkhMRywKLSsgICAgICAgICAgICAgICAgICAg ICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OfX0sCi0g ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTSwKLS0gICAgIFRy YW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMTcwTSwKLS0g ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRF MTcwTV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3ME0sCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME1fU0lOQ0VfVkVSU0lPTn19LAotICAg ICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTI0ME0sCi0tICAgICBUcmFu c2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTI0ME0sCi0tICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTI0 ME1fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFj ZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBNLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xLAotLSAgICAgVHJh bnNmZXJWZXJzaW9uKAotKyAgICAgVHJhbnNmZXJWZXJzaW9uewotICAgICAgICAgIGdmeDo6Q29s b3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEVTVDQyOF8xLAotLSAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9W RVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPRywKLS0g ICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPRywKLS0g ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19T SU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpMT0csCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19MT0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19MT0dfU1FSVCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPR19TUVJULAotLSAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlRfU0lOQ0VfVkVSU0lPTil9LAot KyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HX1NR UlQsCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19MT0dfU1FSVF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0lFQzYxOTY2XzJfNCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbigKLSsgICAgIFRy YW5zZmVyVmVyc2lvbnsKLSAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OklF QzYxOTY2XzJfNCwKLS0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lF QzYxOTY2XzJfNF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzRfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDEzNjFfRUNHLAotLSAgICAgVHJhbnNmZXJWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywKLS0gICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0dfU0lO Q0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6QlQxMzYxX0VDRywKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTAsCi0tICAgICBUcmFuc2ZlclZl cnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIwMjBfMTAsCi0tICAgICAgICAg ICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTBfU0lO Q0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6QlQyMDIwXzEwLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyLAotLSAgICAgVHJhbnNmZXJWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEyLAotLSAgICAgICAgICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyX1NJTkNF X1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5z ZmVySUQ6OkJUMjAyMF8xMiwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NDUkdCX0xJTkVBUl84MF9OSVRTLAotLSAgICAgVHJh bnNmZXJWZXJzaW9uKAotKyAgICAgVHJhbnNmZXJWZXJzaW9uewotICAgICAgICAgIGdmeDo6Q29s b3JTcGFjZTo6VHJhbnNmZXJJRDo6U0NSR0JfTElORUFSXzgwX05JVFMsCi0tICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9W RVJTSU9OKX0sCi0rICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JH Ql9MSU5FQVJfODBfTklUU19TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0dBTU1BMTgsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4LAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4LAot KyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FN TUExOF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0dBTU1BMjgsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpHQU1NQTI4LAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI4LAotKyAgICAgICAgICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5DRV9W RVJTSU9OfX0sCi0gfSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB0aGUgU0RSIHpjcl9jb2xvcl9tYW5h Z2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKLUBAIC0xNzcsMTggKzE3NywxOCBAQCBjb25z dGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1ha2VGaXhlCi0gY29uc3RleHByIGF1dG8ga1Ry YW5zZmVyTWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdl cl92MV9lb3RmX25hbWVzLCBUcmFuc2ZlckZuVmVyc2lvbj4oewotICAgICAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAotLSAgICAgICAgIFRyYW5zZmVyRm5WZXJz aW9uKFNrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAot KyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU1JHQiwKLS0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNm ZXJGbkV4dDo6a1NSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgVHJhbnNm ZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCLCBrRGVmYXVsdFNpbmNlVmVy c2lvbn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDks Ci0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCi0rICAgICAgICAgVHJhbnNmZXJGblZlcnNp b257Ci0gICAgICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprUmVjNzA5LAotLSAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJ T04pfSwKLSsgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcw OV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDIwODcsCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oZ2FtbWEyNCwga0RlZmF1 bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntnYW1tYTI0LCBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfQURPQkVSR0IsCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRy YW5zZmVyRm5FeHQ6OmtBOThSR0IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1 bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJh bnNmZXJGbkV4dDo6a0E5OFJHQiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAotICAgICB9KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHRoZSBIRFIgemNy X2NvbG9yX21hbmFnZXJfdjEgZW90Zl9uYW1lcyBlbnVtIHZhbHVlcwotQEAgLTE5Nyw2NyArMTk3 LDY3IEBAIGNvbnN0ZXhwciBhdXRvIGtUcmFuc2Zlck1hcCA9Ci0gY29uc3RleHByIGF1dG8ga0hE UlRyYW5zZmVyTWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFu YWdlcl92MV9lb3RmX25hbWVzLCBUcmFuc2ZlckZuVmVyc2lvbj4oCi0gICAgICAgICB7e1pDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAotLSAgICAgICAgICBUcmFuc2ZlckZu VmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24p fSwKLSsgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtMaW5l YXIsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfU1JHQl9IRFIsCi0tICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKAot KyAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbnsKLSAgICAgICAgICAgICAgIFNrTmFtZWRUcmFu c2ZlckZuRXh0OjprU1JHQiwKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0sCi0gICAg ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfUFEsCi0tICAgICAgICAgIFRy YW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjpr UFEsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfSExHLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVk VHJhbnNmZXJGbjo6a0hMRywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBU cmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0hMRywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0Vf VkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VY VEVOREVEU1JHQjEwLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbigKLSsgICAgICAgICAg VHJhbnNmZXJGblZlcnNpb257Ci0gICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6 a1NSR0JFeHRlbmRlZDEwMjNPdmVyNTEwLAotLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0IxMF9TSU5DRV9WRVJTSU9OKX19KTsKLSsgICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdCMTBf U0lOQ0VfVkVSU0lPTn19fSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB6Y3JfY29sb3JfbWFuYWdlcl92 MSBtYXRyaXhfbmFtZXMgZW51bSB2YWx1ZXMgdG8KLSAvLyBnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEcy4KLSBjb25zdGV4cHIgYXV0byBrTWF0cml4TWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVk RmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9tYXRyaXhfbmFtZXMsIE1hdHJpeFZlcnNpb24+ KAotICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfUkdCLAotLSAg ICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlJHQiwga0Rl ZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9y U3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDcwOSwKLS0gICAgICAgICAgTWF0 cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDcwOSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRyaXhW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUNzA5LAotKyAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJHLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9u KAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9uewotICAgICAgICAgICAgICAgZ2Z4OjpDb2xvclNw YWNlOjpNYXRyaXhJRDo6QlQ0NzBCRywKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX01BVFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJT059 fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9O Q0wsCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6 QlQyMDIwX05DTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lv bil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6 OkJUMjAyMF9OQ0wsCi0rICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0ZDQywK LS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpGQ0Ms IGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpD b2xvclNwYWNlOjpNYXRyaXhJRDo6RkNDLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWUNPQ0csCi0tICAgICAgICAg IE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WUNPQ0csCi0tICAgICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NH X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3Bh Y2U6Ok1hdHJpeElEOjpZQ09DRywKLSsgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWUNPQ0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAg IHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURaRFgsCi0tICAgICAgICAgIE1h dHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WURaRFgsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYX1NJ TkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6 Ok1hdHJpeElEOjpZRFpEWCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9NQVRSSVhfTkFNRVNfWURaRFhfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHta Q1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfR0JSLAotLSAgICAgICAgICBNYXRyaXhW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkdCUiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfR0JSX1NJTkNFX1ZFUlNJ T04pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElE OjpHQlIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX0dCUl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX01BVFJJWF9OQU1FU19TTVBURTE3ME0sCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6U01QVEUxNzBNLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257 Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX01BVFJJWF9OQU1FU19TTVBURTI0ME0sCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX19KTsKLSsgICAgICAgICAgTWF0cml4VmVyc2lv bntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpTTVBURTI0ME0sCi0rICAgICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fX0pOwotIAotIC8vIEEgbWFwIGZyb20gemNy X2NvbG9yX21hbmFnZXJfdjEgcmFuZ2VfbmFtZXMgZW51bSB2YWx1ZXMgdG8KLSAvLyBnZng6OkNv bG9yU3BhY2U6OlJhbmdlSURzLgotIGNvbnN0ZXhwciBhdXRvIGtSYW5nZU1hcCA9Ci0gICAgIGJh c2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfcmFuZ2VfbmFtZXMsIFJh bmdlVmVyc2lvbj4oCi0gICAgICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVT X0xJTUlURUQsCi0tICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdl SUQ6OkxJTUlURUQsCi0tICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lv bil9LAotKyAgICAgICAgICBSYW5nZVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpM SU1JVEVELAotKyAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwK LSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfRlVMTCwKLS0gICAg ICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1 bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFj ZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfREVSSVZFRCwKLS0gICAgICAgICAgUmFuZ2VW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6REVSSVZFRCwKLS0gICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX19KTsKLSsgICAgICAgICAgUmFuZ2VWZXJz aW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6REVSSVZFRCwKLSsgICAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX19KTsKLSAKLSB6Y3JfY29sb3JfbWFuYWdlcl92 MV9jaHJvbWF0aWNpdHlfbmFtZXMgVG9Db2xvck1hbmFnZXJDaHJvbWF0aWNpdHkoCi0gICAgIGdm eDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEIHByaW1hcnlJRCwKLUBAIC0yODAsNCArMjgwLDQgQEAg emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1lcyBUb0NvbG9yTQotIAotIH0gIC8vIG5hbWVz cGFjZSB1aTo6d2F5bGFuZAotIAotLSNlbmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9SX01B TkFHRVJfVVRJTF9IXwotXCBLZWluIFplaWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlLgotKyNlbmRp ZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9SX01BTkFHRVJfVVRJTF9IXwotZGlmZiAtdXAgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi91aS9ndGsvZ3RrX3VpLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvZ3RrL2d0a191aS5jYwotLS0tIGNocm9taXVt LTEyNi4wLjY0NzguMjYvdWkvZ3RrL2d0a191aS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rvcgky MDI0LTA1LTI5IDE4OjAyOjMyLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvdWkvZ3RrL2d0a191aS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUxNjkxNjA1NyArMDIw MAotQEAgLTEwMDEsMTEgKzEwMDEsMTEgQEAgZGlzcGxheTo6RGlzcGxheUNvbmZpZyBHdGtVaTo6 R2V0RGlzcGxheQotICAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7Ci0gICAgIGdka19tb25pdG9y X2dldF9nZW9tZXRyeShtb25pdG9yLCAmZ2VvbWV0cnkpOwotICAgICBpbnQgbW9uaXRvcl9zY2Fs ZSA9IHN0ZDo6bWF4KDEsIGdka19tb25pdG9yX2dldF9zY2FsZV9mYWN0b3IobW9uaXRvcikpOwot LSAgICBjb25maWcuZGlzcGxheV9nZW9tZXRyaWVzLmVtcGxhY2VfYmFjaygKLSsgICAgY29uZmln LmRpc3BsYXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAgIGdmeDo6UmVj dChtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkueCwgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5Lnks Ci0gICAgICAgICAgICAgICAgICAgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LndpZHRoLAotICAg ICAgICAgICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS5oZWlnaHQpLAotLSAgICAg ICAgbW9uaXRvcl9zY2FsZSAqIGZvbnRfc2NhbGUpOwotKyAgICAgICAgc3RhdGljX2Nhc3Q8Zmxv YXQ+KG1vbml0b3Jfc2NhbGUgKiBmb250X3NjYWxlKX07Ci0gICB9Ci0gICByZXR1cm4gY29uZmln OwotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvY29udHJvbHMv YnV0dG9uL2xhYmVsX2J1dHRvbi5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3VpL3ZpZXdzL2NvbnRyb2xzL2J1dHRvbi9sYWJlbF9idXR0b24uY2MKLS0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL2NvbnRyb2xzL2J1dHRvbi9sYWJlbF9i dXR0b24uY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMjozMi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL2NvbnRyb2xz L2J1dHRvbi9sYWJlbF9idXR0b24uY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41MTY5MTYwNTcgKzAy MDAKLUBAIC0zOTIsMTEgKzM5MiwxMSBAQCBQcm9wb3NlZExheW91dCBMYWJlbEJ1dHRvbjo6Q2Fs Y3VsYXRlUHJvCi0gCi0gICBnZng6OlJlY3QgaW1hZ2VfYXJlYSA9IEdldExvY2FsQm91bmRzKCk7 Ci0gCi0tICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAotKyAgbGF5b3V0cy5j aGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGlua19kcm9wX2NvbnRhaW5l cl8uZ2V0KCksCi0gICAgICAgc3RhdGljX2Nhc3Q8RGVsZWdhdGluZ0xheW91dE1hbmFnZXIqPihH ZXRMYXlvdXRNYW5hZ2VyKCkpCi0gICAgICAgICAgIC0+Q2FuQmVWaXNpYmxlKGlua19kcm9wX2Nv bnRhaW5lcl8uZ2V0KCkpLAotLSAgICAgIGltYWdlX2FyZWEsIFNpemVCb3VuZHMoKSk7Ci0rICAg ICAgaW1hZ2VfYXJlYSwgU2l6ZUJvdW5kcygpfTsKLSAKLSAgIGdmeDo6SW5zZXRzIGluc2V0cyA9 IEdldEluc2V0cygpOwotICAgLy8gSWYgdGhlIGJ1dHRvbiBoYXZlIGEgbGltaXRlZCBzcGFjZSB0 byBmaXQgaW4sIHRoZSBpbWFnZSBhbmQgdGhlIGxhYmVsCi1AQCAtNDQ4LDExICs0NDgsMTEgQEAg UHJvcG9zZWRMYXlvdXQgTGFiZWxCdXR0b246OkNhbGN1bGF0ZVBybwotICAgfSBlbHNlIGlmICho b3Jpem9udGFsX2FsaWdubWVudCA9PSBnZng6OkFMSUdOX1JJR0hUKSB7Ci0gICAgIGltYWdlX29y aWdpbi5PZmZzZXQoaW1hZ2VfYXJlYS53aWR0aCgpIC0gaW1hZ2Vfc2l6ZS53aWR0aCgpLCAwKTsK LSAgIH0KLS0gIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soCi0rICBsYXlvdXRz LmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgY29uc3RfY2FzdDxMYWJl bEJ1dHRvbio+KHRoaXMpLT5pbWFnZV9jb250YWluZXJfdmlldygpLAotICAgICAgIHN0YXRpY19j YXN0PERlbGVnYXRpbmdMYXlvdXRNYW5hZ2VyKj4oR2V0TGF5b3V0TWFuYWdlcigpKQotICAgICAg ICAgICAtPkNhbkJlVmlzaWJsZShpbWFnZV9jb250YWluZXJfdmlldygpKSwKLS0gICAgICBnZng6 OlJlY3QoaW1hZ2Vfb3JpZ2luLCBpbWFnZV9zaXplKSwgU2l6ZUJvdW5kcygpKTsKLSsgICAgICBn Zng6OlJlY3QoaW1hZ2Vfb3JpZ2luLCBpbWFnZV9zaXplKSwgU2l6ZUJvdW5kcygpfTsKLSAKLSAg IGdmeDo6UmVjdCBsYWJlbF9ib3VuZHMgPSBsYWJlbF9hcmVhOwotICAgaWYgKGxhYmVsX2FyZWEu d2lkdGgoKSA9PSBsYWJlbF9zaXplLndpZHRoKCkpIHsKLUBAIC00NjYsMTEgKzQ2NiwxMSBAQCBQ cm9wb3NlZExheW91dCBMYWJlbEJ1dHRvbjo6Q2FsY3VsYXRlUHJvCi0gICAgIH0KLSAgIH0KLSAK LS0gIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soCi0rICBsYXlvdXRzLmNoaWxk X2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgbGFiZWxfLmdldCgpLAotICAgICAg IHN0YXRpY19jYXN0PERlbGVnYXRpbmdMYXlvdXRNYW5hZ2VyKj4oR2V0TGF5b3V0TWFuYWdlcigp KQotICAgICAgICAgICAtPkNhbkJlVmlzaWJsZShsYWJlbF8uZ2V0KCkpLAotLSAgICAgIGxhYmVs X2JvdW5kcywgU2l6ZUJvdW5kcygpKTsKLSsgICAgICBsYWJlbF9ib3VuZHMsIFNpemVCb3VuZHMo KX07Ci0gICBsYXlvdXRzLmhvc3Rfc2l6ZSA9Ci0gICAgICAgZ2Z4OjpTaXplKHNpemVfYm91bmRz LndpZHRoKCkudmFsdWUoKSwgc2l6ZV9ib3VuZHMuaGVpZ2h0KCkudmFsdWUoKSk7Ci0gCi1kaWZm IC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL2NvbnRyb2xzL2VkaXRhYmxlX2Nv bWJvYm94L2VkaXRhYmxlX2NvbWJvYm94LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvY29udHJvbHMvZWRpdGFibGVfY29tYm9ib3gvZWRp dGFibGVfY29tYm9ib3guY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL2Nv bnRyb2xzL2VkaXRhYmxlX2NvbWJvYm94L2VkaXRhYmxlX2NvbWJvYm94LmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDI6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi91aS92aWV3cy9jb250cm9scy9lZGl0YWJsZV9jb21ib2JveC9l ZGl0YWJsZV9jb21ib2JveC5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUxNzkxNjA4MSArMDIwMAot QEAgLTQ5MiwxNiArNDkyLDE2IEBAIFByb3Bvc2VkTGF5b3V0IEVkaXRhYmxlQ29tYm9ib3g6OkNh bGN1bGEKLSAgICAgbGF5b3V0Lmhvc3Rfc2l6ZSA9Ci0gICAgICAgICBnZng6OlNpemUoc2l6ZV9i b3VuZHMud2lkdGgoKS52YWx1ZSgpLCBzaXplX2JvdW5kcy5oZWlnaHQoKS52YWx1ZSgpKTsKLSAg IH0KLS0gIGxheW91dC5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKLSsgIGxheW91dC5jaGls ZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIHRleHRmaWVsZF8uZ2V0KCksIHRl eHRmaWVsZF8tPkdldFZpc2libGUoKSwKLS0gICAgICBnZng6OlJlY3QoMCwgMCwgbGF5b3V0Lmhv c3Rfc2l6ZS53aWR0aCgpLCBsYXlvdXQuaG9zdF9zaXplLmhlaWdodCgpKSk7Ci0rICAgICAgZ2Z4 OjpSZWN0KDAsIDAsIGxheW91dC5ob3N0X3NpemUud2lkdGgoKSwgbGF5b3V0Lmhvc3Rfc2l6ZS5o ZWlnaHQoKSl9OwotICAgY29uc3QgaW50IHByZWZlcnJlZF93aWR0aCA9Ci0gICAgICAgY29udHJv bF9lbGVtZW50c19jb250YWluZXJfLT5HZXRQcmVmZXJyZWRTaXplKHt9KS53aWR0aCgpOwotLSAg bGF5b3V0LmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAotKyAgbGF5b3V0LmNoaWxkX2xheW91 dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgY29udHJvbF9lbGVtZW50c19jb250YWluZXJf LmdldCgpLAotICAgICAgIGNvbnRyb2xfZWxlbWVudHNfY29udGFpbmVyXy0+R2V0VmlzaWJsZSgp LAotICAgICAgIGdmeDo6UmVjdChsYXlvdXQuaG9zdF9zaXplLndpZHRoKCkgLSBwcmVmZXJyZWRf d2lkdGgsIDAsIHByZWZlcnJlZF93aWR0aCwKLS0gICAgICAgICAgICAgICAgbGF5b3V0Lmhvc3Rf c2l6ZS5oZWlnaHQoKSkpOwotKyAgICAgICAgICAgICAgICBsYXlvdXQuaG9zdF9zaXplLmhlaWdo dCgpKX07Ci0gICByZXR1cm4gbGF5b3V0OwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4w LjY0NzguMjYvdWkvdmlld3MvbGF5b3V0L2JveF9sYXlvdXQuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS92aWV3cy9sYXlvdXQvYm94X2xheW91dC5j YwotLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvbGF5b3V0L2JveF9sYXlvdXQu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMjozMi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL2xheW91dC9ib3hfbGF5 b3V0LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTE3OTE2MDgxICswMjAwCi1AQCAtMzI1LDcgKzMy NSw3IEBAIHZvaWQgQm94TGF5b3V0OjpJbml0aWFsaXplQ2hpbGREYXRhKEJveEwKLSAgICAgZGF0 YS5jaGlsZF9kYXRhLmVtcGxhY2VfYmFjaygpOwotICAgICBCb3hDaGlsZERhdGEmIGNoaWxkX2Rh dGEgPSBkYXRhLmNoaWxkX2RhdGEuYmFjaygpOwotIAotLSAgICBkYXRhLmxheW91dC5jaGlsZF9s YXlvdXRzLmVtcGxhY2VfYmFjayhjaGlsZCwgdHJ1ZSk7Ci0rICAgIGRhdGEubGF5b3V0LmNoaWxk X2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Y2hpbGQsIHRydWV9OwotIAotICAgICBnZng6Oklu c2V0cyogbWFyZ2lucyA9IGNoaWxkID8gY2hpbGQtPkdldFByb3BlcnR5KGtNYXJnaW5zS2V5KSA6 IG51bGxwdHI7Ci0gICAgIGlmIChtYXJnaW5zKSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3VpL3ZpZXdzL3dpbmRvdy9kaWFsb2dfY2xpZW50X3ZpZXcuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS92aWV3cy93aW5kb3cvZGlhbG9n X2NsaWVudF92aWV3LmNjCi0tLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS92aWV3cy93aW5k b3cvZGlhbG9nX2NsaWVudF92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUt MjkgMTg6MDI6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91 aS92aWV3cy93aW5kb3cvZGlhbG9nX2NsaWVudF92aWV3LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NTE4OTE2MTA2ICswMjAwCi1AQCAtMjA2LDE2ICsyMDYsMTYgQEAgUHJvcG9zZWRMYXlvdXQgRGlh bG9nQ2xpZW50Vmlldzo6Q2FsY3VsYQotICAgY29uc3QgaW50IGNvbnRhaW5lcl9oZWlnaHQgPQot ICAgICAgIGJ1dHRvbl9yb3dfY29udGFpbmVyXy0+R2V0SGVpZ2h0Rm9yV2lkdGgoc2l6ZV9ib3Vu ZHMud2lkdGgoKS52YWx1ZSgpKTsKLSAgIGNvbnN0IGludCBjb250YWluZXJfeSA9IHNpemVfYm91 bmRzLmhlaWdodCgpLnZhbHVlKCkgLSBjb250YWluZXJfaGVpZ2h0OwotLSAgbGF5b3V0cy5jaGls ZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKLSsgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNl X2JhY2soKSA9IHsKLSAgICAgICBidXR0b25fcm93X2NvbnRhaW5lcl8uZ2V0KCksIGJ1dHRvbl9y b3dfY29udGFpbmVyXy0+R2V0VmlzaWJsZSgpLAotICAgICAgIGdmeDo6UmVjdCgwLCBjb250YWlu ZXJfeSwgc2l6ZV9ib3VuZHMud2lkdGgoKS52YWx1ZSgpLCBjb250YWluZXJfaGVpZ2h0KSwKLS0g ICAgICBzaXplX2JvdW5kcyk7Ci0rICAgICAgc2l6ZV9ib3VuZHN9OwotICAgaWYgKGNvbnRlbnRz X3ZpZXcoKSkgewotICAgICBnZng6OlJlY3QgY29udGVudHNfYm91bmRzKHNpemVfYm91bmRzLndp ZHRoKCkudmFsdWUoKSwgY29udGFpbmVyX3kpOwotICAgICBjb250ZW50c19ib3VuZHMuSW5zZXQo R2V0RGlhbG9nRGVsZWdhdGUoKS0+bWFyZ2lucygpKTsKLS0gICAgbGF5b3V0cy5jaGlsZF9sYXlv dXRzLmVtcGxhY2VfYmFjayhjb250ZW50c192aWV3KCksCi0rICAgIGxheW91dHMuY2hpbGRfbGF5 b3V0cy5lbXBsYWNlX2JhY2soKSA9IHtjb250ZW50c192aWV3KCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNfdmlldygpLT5HZXRWaXNpYmxlKCksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNfYm91bmRzLCBz aXplX2JvdW5kcyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGVudHNfYm91bmRzLCBzaXplX2JvdW5kc307Ci0gICB9Ci0gICBsYXlvdXRzLmhvc3Rfc2l6ZSA9 Ci0gICAgICAgZ2Z4OjpTaXplKHNpemVfYm91bmRzLndpZHRoKCkudmFsdWUoKSwgc2l6ZV9ib3Vu ZHMuaGVpZ2h0KCkudmFsdWUoKSk7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI2LWVsNy1vbGQt Y3Vwcy5wYXRjaCBiL2Nocm9taXVtLTEyNi1lbDctb2xkLWN1cHMucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDY4MjEwODYuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTI2LWVs Ny1vbGQtY3Vwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1kaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuY2Mu ZWw3Y3VwcyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxw ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19o ZWxwZXIuY2MuZWw3Y3VwcwkyMDI0LTA2LTAzIDE3OjE2OjMyLjE5NzUwOTY0MyArMDIwMAotKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvcHJpbnRpbmcvYmFja2VuZC9jdXBzX2hlbHBlci5jYwky MDI0LTA2LTAzIDE3OjMyOjIzLjAyODM3NjMzMyArMDIwMAotQEAgLTQxLDE4ICs0MSw2IEBAIG5h bWVzcGFjZSBwcmludGluZyB7Ci0gLy8gVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGhlbHBlciBjb2Rl IGZvciBQUEQgcGFyc2luZyBmb3Igc2VtYW50aWMgY2FwYWJpbGl0aWVzLgotIG5hbWVzcGFjZSB7 Ci0gCi0tLy8gRnVuY3Rpb24gYXZhaWxhYmlsaXR5IGNhbiBiZSB0ZXN0ZWQgYnkgY2hlY2tpbmcg d2hldGhlciBpdHMgYWRkcmVzcyBpcyBub3QKLS0vLyBudWxscHRyLiBXZWFrIHN5bWJvbHMgcmVt b3ZlIHRoZSBuZWVkIGZvciBwbGF0Zm9ybSBzcGVjaWZpYyBidWlsZCBmbGFncyBhbmQKLS0vLyBh bGxvdyBmb3IgYXBwcm9wcmlhdGUgQ1VQUyB1c2FnZSBvbiBwbGF0Zm9ybXMgd2l0aCBub24tdW5p Zm9ybSB2ZXJzaW9uCi0tLy8gc3VwcG9ydCwgbmFtZWx5IExpbnV4LgotLSNkZWZpbmUgV0VBS19D VVBTX0ZOKHgpIGV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygod2VhaykpIGRlY2x0eXBlKHgpIHgK LS0KLS1XRUFLX0NVUFNfRk4oaHR0cENvbm5lY3QyKTsKLS0KLS0vLyBUaW1lb3V0IGZvciBlc3Rh Ymxpc2hpbmcgYSBDVVBTIGNvbm5lY3Rpb24uICBJdCBpcyBleHBlY3RlZCB0aGF0IGN1cHNkIGlz Ci0tLy8gYWJsZSB0byBzdGFydCBhbmQgcmVzcG9uZCBvbiBhbGwgc3lzdGVtcyB3aXRoaW4gdGhp cyBkdXJhdGlvbi4KLS1jb25zdGV4cHIgYmFzZTo6VGltZURlbHRhIGtDdXBzVGltZW91dCA9IGJh c2U6OlNlY29uZHMoNSk7Ci0tCi0gLy8gQ1VQUyBkZWZhdWx0IG1heCBjb3BpZXMgdmFsdWUgKHBh cnNlZCBmcm9tIGtDdXBzTWF4Q29waWVzIFBQRCBhdHRyaWJ1dGUpLgotIGNvbnN0ZXhwciBpbnQz Ml90IGtEZWZhdWx0TWF4Q29waWVzID0gOTk5OTsKLSBjb25zdGV4cHIgY2hhciBrQ3Vwc01heENv cGllc1tdID0gImN1cHNNYXhDb3BpZXMiOwotQEAgLTc2MSw4ICs3NDksNyBAQCBjb25zdCBpbnQg a0RlZmF1bHRJUFBTZXJ2ZXJQb3J0ID0gNjMxOwotIC8vIEhlbHBlciB3cmFwcGVyIGFyb3VuZCBo dHRwX3Qgc3RydWN0dXJlLCB3aXRoIGNvbm5lY3Rpb24gYW5kIGNsZWFudXAKLSAvLyBmdW5jdGlv bmFsaXR5LgotIEh0dHBDb25uZWN0aW9uQ1VQUzo6SHR0cENvbm5lY3Rpb25DVVBTKGNvbnN0IEdV UkwmIHByaW50X3NlcnZlcl91cmwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaHR0cF9lbmNyeXB0aW9uX3QgZW5jcnlwdGlvbiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sIGJsb2NraW5nKSB7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHR0cF9lbmNyeXB0aW9uX3QgZW5jcnlwdGlvbikgewotICAg Ly8gSWYgd2UgaGF2ZSBhbiBlbXB0eSB1cmwsIHVzZSBkZWZhdWx0IHByaW50IHNlcnZlci4KLSAg IGlmIChwcmludF9zZXJ2ZXJfdXJsLmlzX2VtcHR5KCkpCi0gICAgIHJldHVybjsKLUBAIC03NzEs MzEgKzc1OCwyMiBAQCBIdHRwQ29ubmVjdGlvbkNVUFM6Okh0dHBDb25uZWN0aW9uQ1VQUyhjCi0g ICBpZiAocG9ydCA9PSB1cmw6OlBPUlRfVU5TUEVDSUZJRUQpCi0gICAgIHBvcnQgPSBrRGVmYXVs dElQUFNlcnZlclBvcnQ7Ci0gCi0tICBpZiAoaHR0cENvbm5lY3QyKSB7Ci0tICAgIGh0dHBfLnJl c2V0KGh0dHBDb25uZWN0MihwcmludF9zZXJ2ZXJfdXJsLmhvc3QoKS5jX3N0cigpLCBwb3J0LAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyphZGRybGlzdD0qL251bGxwdHIsIEFGX1VO U1BFQywgZW5jcnlwdGlvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NraW5n ID8gMSA6IDAsIGtDdXBzVGltZW91dC5Jbk1pbGxpc2Vjb25kcygpLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLypjYW5jZWw9Ki9udWxscHRyKSk7Ci0tICB9IGVsc2UgewotLSAgICAv LyBDb250aW51ZSB0byB1c2UgZGVwcmVjYXRlZCBDVVBTIGNhbGxzIGJlY2F1c2UgYmVjYXVzZSBv bGRlciBMaW51eAotLSAgICAvLyBkaXN0cmlidXRpb24gc3VjaCBhcyBSSEVML0NlbnRPUyA3IGFy ZSBzaGlwcGVkIHdpdGggQ1VQUyAxLjYuCi0tICAgIGh0dHBfLnJlc2V0KAotKyAgaHR0cF8ucmVz ZXQoCi0gICAgICAgICBodHRwQ29ubmVjdEVuY3J5cHQocHJpbnRfc2VydmVyX3VybC5ob3N0KCku Y19zdHIoKSwgcG9ydCwgZW5jcnlwdGlvbikpOwotLSAgfQotIAotICAgaWYgKCFodHRwXykgewot ICAgICBMT0coRVJST1IpIDw8ICJDUF9DVVBTOiBGYWlsZWQgY29ubmVjdGluZyB0byBwcmludCBz ZXJ2ZXI6ICIKLSAgICAgICAgICAgICAgICA8PCBwcmludF9zZXJ2ZXJfdXJsOwotICAgICByZXR1 cm47Ci0gICB9Ci0tCi0tICBpZiAoIWh0dHBDb25uZWN0MikgewotLSAgICBodHRwQmxvY2tpbmco aHR0cCgpLCBibG9ja2luZyA/IDEgOiAwKTsKLS0gIH0KLSB9Ci0gCi0gSHR0cENvbm5lY3Rpb25D VVBTOjp+SHR0cENvbm5lY3Rpb25DVVBTKCkgPSBkZWZhdWx0OwotIAotK3ZvaWQgSHR0cENvbm5l Y3Rpb25DVVBTOjpTZXRCbG9ja2luZyhib29sIGJsb2NraW5nKSB7Ci0rICBodHRwQmxvY2tpbmco aHR0cCgpLCBibG9ja2luZyA/IDEgOiAwKTsKLSt9Ci0rCi0gaHR0cF90KiBIdHRwQ29ubmVjdGlv bkNVUFM6Omh0dHAoKSB7Ci0gICByZXR1cm4gaHR0cF8uZ2V0KCk7Ci0gfQotZGlmZiAtdXAgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9wcmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmguZWw3Y3Vw cyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuaAot LS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvcHJpbnRpbmcvYmFja2VuZC9jdXBzX2hlbHBlci5o LmVsN2N1cHMJMjAyNC0wNi0wMyAxNzoyMzozNS45MjMzMDc4NDIgKzAyMDAKLSsrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuaAkyMDI0LTA2LTAz IDE3OjI1OjUwLjg4Nzg1NTQ2MCArMDIwMAotQEAgLTM2LDEwICszNiwxMSBAQCBjb25zdGV4cHIg Y3Vwc19wdHlwZV90IGtEZXN0aW5hdGlvbnNGaWx0Ci0gY2xhc3MgQ09NUE9ORU5UX0VYUE9SVChQ UklOVF9CQUNLRU5EKSBIdHRwQ29ubmVjdGlvbkNVUFMgewotICBwdWJsaWM6Ci0gICBIdHRwQ29u bmVjdGlvbkNVUFMoY29uc3QgR1VSTCYgcHJpbnRfc2VydmVyX3VybCwKLS0gICAgICAgICAgICAg ICAgICAgICBodHRwX2VuY3J5cHRpb25fdCBlbmNyeXB0aW9uLAotLSAgICAgICAgICAgICAgICAg ICAgIGJvb2wgYmxvY2tpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgIGh0dHBfZW5jcnlwdGlv bl90IGVuY3J5cHRpb24pOwotICAgfkh0dHBDb25uZWN0aW9uQ1VQUygpOwotIAotKyAgdm9pZCBT ZXRCbG9ja2luZyhib29sIGJsb2NraW5nKTsKLSsKLSAgIGh0dHBfdCogaHR0cCgpOwotIAotICBw cml2YXRlOgotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9wcmludGluZy9iYWNrZW5k L3ByaW50X2JhY2tlbmRfY3Vwcy5jYy5lbDdjdXBzIGNocm9taXVtLTEyNi4wLjY0NzguMjYvcHJp bnRpbmcvYmFja2VuZC9wcmludF9iYWNrZW5kX2N1cHMuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvcHJpbnRfYmFja2VuZF9jdXBzLmNjLmVsN2N1cHMJMjAy NC0wNi0wMyAxNzoyNjo0NC42MDc4NzExNDkgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3ByaW50aW5nL2JhY2tlbmQvcHJpbnRfYmFja2VuZF9jdXBzLmNjCTIwMjQtMDYtMDMgMTc6 Mjk6MTUuODg5ODEwNjUxICswMjAwCi1AQCAtMTQ5LDcgKzE0OSw3IEBAIG1vam9tOjpSZXN1bHRD b2RlIFByaW50QmFja2VuZENVUFM6OkVudW0KLSAgIC8vIG5vdCBzaG93aW5nIGFzIGF2YWlsYWJs ZS4gIFVzaW5nIGN1cHNFbnVtRGVzdHMoKSBhbGxvd3MgdXMgdG8gZG8gb3VyIG93bgotICAgLy8g ZmlsdGVyaW5nIHNob3VsZCBhbnkgZHVwbGljYXRlcyBvY2N1ci4KLSAgIEN1cHNEZXN0c0RhdGEg ZGVzdHNfZGF0YSA9IHswLCBudWxscHRyfTsKLS0gIGlwcF9zdGF0dXNfdCBsYXN0X2Vycm9yID0g SVBQX1NUQVRVU19PSzsKLSsgIGlwcF9zdGF0dXNfdCBsYXN0X2Vycm9yID0gSVBQX09LOwotICAg aWYgKHByaW50X3NlcnZlcl91cmxfLmlzX2VtcHR5KCkpIHsKLSAgICAgVkxPRygxKSA8PCAiQ1VQ UzogdXNpbmcgY3Vwc0VudW1EZXN0cyB0byBlbnVtZXJhdGUgcHJpbnRlcnMiOwotICAgICBpZiAo IWN1cHNFbnVtRGVzdHMoQ1VQU19ERVNUX0ZMQUdTX05PTkUsIGtDdXBzVGltZW91dE1zLAotQEAg LTE3Niw3ICsxNzYsNyBAQCBtb2pvbTo6UmVzdWx0Q29kZSBQcmludEJhY2tlbmRDVVBTOjpFbnVt Ci0gICAgIC8vIG5vIHByaW50ZXIgZHJpdmVycyBpbnN0YWxsZWQuICBSZWx5IHVwb24gQ1VQUyBl cnJvciBjb2RlIHRvIGRpc3Rpbmd1aXNoCi0gICAgIC8vIGJldHdlZW4gdGhlc2UuCi0gICAgIERD SEVDSyghZGVzdHNfZGF0YS5kZXN0cyk7Ci0tICAgIGlmIChsYXN0X2Vycm9yICE9IElQUF9TVEFU VVNfRVJST1JfTk9UX0ZPVU5EKSB7Ci0rICAgIGlmIChsYXN0X2Vycm9yICE9IElQUF9OT1RfRk9V TkQpIHsKLSAgICAgICBWTE9HKDEpIDw8ICJDVVBTOiBFcnJvciBnZXR0aW5nIHByaW50ZXJzIGZy b20gQ1VQUyBzZXJ2ZXIiCi0gICAgICAgICAgICAgICA8PCAiLCBzZXJ2ZXI6ICIgPDwgcHJpbnRf c2VydmVyX3VybF8KLSAgICAgICAgICAgICAgIDw8ICIsIGVycm9yOiAiIDw8IHN0YXRpY19jYXN0 PGludD4obGFzdF9lcnJvcikgPDwgIiAtICIKLUBAIC0zMTEsNyArMzExLDggQEAgaW50IFByaW50 QmFja2VuZENVUFM6OkdldERlc3RzKGN1cHNfZGVzdAotICAgaWYgKHByaW50X3NlcnZlcl91cmxf LmlzX2VtcHR5KCkpCi0gICAgIHJldHVybiBjdXBzR2V0RGVzdHMyKENVUFNfSFRUUF9ERUZBVUxU LCBkZXN0cyk7Ci0gCi0tICBIdHRwQ29ubmVjdGlvbkNVUFMgaHR0cChwcmludF9zZXJ2ZXJfdXJs XywgY3Vwc19lbmNyeXB0aW9uXywgYmxvY2tpbmdfKTsKLSsgIEh0dHBDb25uZWN0aW9uQ1VQUyBo dHRwKHByaW50X3NlcnZlcl91cmxfLCBjdXBzX2VuY3J5cHRpb25fKTsKLSsgIGh0dHAuU2V0Qmxv Y2tpbmcoYmxvY2tpbmdfKTsKLSAKLSAgIC8vIFRoaXMgY2FsbCBtdXN0IGJlIG1hZGUgaW4gdGhl IHNhbWUgc2NvcGUgYXMgYGh0dHBgIGJlY2F1c2UgaXRzIGRlc3RydWN0b3IKLSAgIC8vIGNsb3Nl cyB0aGUgY29ubmVjdGlvbi4KLUBAIC0zMzcsNyArMzM4LDggQEAgYmFzZTo6RmlsZVBhdGggUHJp bnRCYWNrZW5kQ1VQUzo6R2V0UFBEKAotICAgICAvLyBjb25uZWN0aW9uIHdpbGwgdGltZW91dCBh ZnRlciAxMCBzZWNvbmRzIG9mIG5vIGRhdGEgcGVyaW9kLiBBbmQgaXQgd2lsbAotICAgICAvLyBy ZXR1cm4gdGhlIHNhbWUgd2F5IGFzIGlmIGRhdGEgd2FzIGNvbXBsZXRlbHkgYW5kIHN1Y2Nlc3Nm dWxseQotICAgICAvLyBkb3dubG9hZGVkLgotLSAgICBIdHRwQ29ubmVjdGlvbkNVUFMgaHR0cChw cmludF9zZXJ2ZXJfdXJsXywgY3Vwc19lbmNyeXB0aW9uXywgYmxvY2tpbmdfKTsKLSsgICAgSHR0 cENvbm5lY3Rpb25DVVBTIGh0dHAocHJpbnRfc2VydmVyX3VybF8sIGN1cHNfZW5jcnlwdGlvbl8p OwotKyAgICBodHRwLlNldEJsb2NraW5nKGJsb2NraW5nXyk7Ci0gICAgIHBwZF9maWxlX3BhdGgg PSBjdXBzR2V0UFBEMihodHRwLmh0dHAoKSwgbmFtZSk7Ci0gICAgIC8vIENoZWNrIGlmIHRoZSBn ZXQgZnVsbCBQUEQsIHNpbmNlIG5vbi1ibG9ja2luZyBjYWxsIG1heSBzaW1wbHkgcmV0dXJuCi0g ICAgIC8vIG5vcm1hbGx5IGFmdGVyIHRpbWVvdXQgZXhwaXJlZC4KLUBAIC0zNzMsNyArMzc1LDgg QEAgU2NvcGVkRGVzdGluYXRpb24gUHJpbnRCYWNrZW5kQ1VQUzo6R2V0TgotICAgICAvLyBVc2Ug ZGVmYXVsdCAobG9jYWwpIHByaW50IHNlcnZlci4KLSAgICAgZGVzdCA9IGN1cHNHZXROYW1lZERl c3QoQ1VQU19IVFRQX0RFRkFVTFQsIHByaW50ZXJfbmFtZS5jX3N0cigpLCBudWxscHRyKTsKLSAg IH0gZWxzZSB7Ci0tICAgIEh0dHBDb25uZWN0aW9uQ1VQUyBodHRwKHByaW50X3NlcnZlcl91cmxf LCBjdXBzX2VuY3J5cHRpb25fLCBibG9ja2luZ18pOwotKyAgICBIdHRwQ29ubmVjdGlvbkNVUFMg aHR0cChwcmludF9zZXJ2ZXJfdXJsXywgY3Vwc19lbmNyeXB0aW9uXyk7Ci0rICAgIGh0dHAuU2V0 QmxvY2tpbmcoYmxvY2tpbmdfKTsKLSAgICAgZGVzdCA9IGN1cHNHZXROYW1lZERlc3QoaHR0cC5o dHRwKCksIHByaW50ZXJfbmFtZS5jX3N0cigpLCBudWxscHRyKTsKLSAgIH0KLSAgIHJldHVybiBT Y29wZWREZXN0aW5hdGlvbihkZXN0KTsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LXJ1 c3QtY19zdHJpbmcucGF0Y2ggYi9jaHJvbWl1bS0xMjYtZWw3LXJ1c3QtY19zdHJpbmcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ODE3ZTUuLjAwMDAwMDAKLS0tIGEvY2hy b21pdW0tMTI2LWVsNy1ydXN0LWNfc3RyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY2 NyArMCwwIEBACi1yZXBsYWNlIGNfc3RyaW5nIGFzIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgb2xk IHJ1c3QgaW4gZWw3Ci0KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2Ny YXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMvZ2VuL2Nsb25lLnJzIGIvdGhpcmRfcGFydHkv cnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9jbG9uZS5y cwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0y LjAuNTUvc3JjL2dlbi9jbG9uZS5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9jbG9uZS5ycwotQEAgLTEzMzgsNiAr MTMzOCw3IEBAIGltcGwgQ2xvbmUgZm9yIGNyYXRlOjpMaXQgewotICAgICAgICAgbWF0Y2ggc2Vs ZiB7Ci0gICAgICAgICAgICAgY3JhdGU6OkxpdDo6U3RyKHYwKSA9PiBjcmF0ZTo6TGl0OjpTdHIo djAuY2xvbmUoKSksCi0gICAgICAgICAgICAgY3JhdGU6OkxpdDo6Qnl0ZVN0cih2MCkgPT4gY3Jh dGU6OkxpdDo6Qnl0ZVN0cih2MC5jbG9uZSgpKSwKLSsgICAgICAgICAgICBjcmF0ZTo6TGl0OjpD U3RyKHYwKSA9PiBjcmF0ZTo6TGl0OjpDU3RyKHYwLmNsb25lKCkpLAotICAgICAgICAgICAgIGNy YXRlOjpMaXQ6OkJ5dGUodjApID0+IGNyYXRlOjpMaXQ6OkJ5dGUodjAuY2xvbmUoKSksCi0gICAg ICAgICAgICAgY3JhdGU6OkxpdDo6Q2hhcih2MCkgPT4gY3JhdGU6OkxpdDo6Q2hhcih2MC5jbG9u ZSgpKSwKLSAgICAgICAgICAgICBjcmF0ZTo6TGl0OjpJbnQodjApID0+IGNyYXRlOjpMaXQ6Oklu dCh2MC5jbG9uZSgpKSwKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2Ny YXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMvZ2VuL2RlYnVnLnJzIGIvdGhpcmRfcGFydHkv cnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9kZWJ1Zy5y cwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0y LjAuNTUvc3JjL2dlbi9kZWJ1Zy5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9kZWJ1Zy5ycwotQEAgLTE5NTgsNiAr MTk1OCw3IEBAIGltcGwgRGVidWcgZm9yIGNyYXRlOjpMaXQgewotICAgICAgICAgbWF0Y2ggc2Vs ZiB7Ci0gICAgICAgICAgICAgY3JhdGU6OkxpdDo6U3RyKHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0 ZXIsICJTdHIiKSwKLSAgICAgICAgICAgICBjcmF0ZTo6TGl0OjpCeXRlU3RyKHYwKSA9PiB2MC5k ZWJ1Zyhmb3JtYXR0ZXIsICJCeXRlU3RyIiksCi0rICAgICAgICAgICAgY3JhdGU6OkxpdDo6Q1N0 cih2MCkgPT4gdjAuZGVidWcoZm9ybWF0dGVyLCAiQ1N0ciIpLAotICAgICAgICAgICAgIGNyYXRl OjpMaXQ6OkJ5dGUodjApID0+IHYwLmRlYnVnKGZvcm1hdHRlciwgIkJ5dGUiKSwKLSAgICAgICAg ICAgICBjcmF0ZTo6TGl0OjpDaGFyKHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0ZXIsICJDaGFyIiks Ci0gICAgICAgICAgICAgY3JhdGU6OkxpdDo6SW50KHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0ZXIs ICJJbnQiKSwKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19p by92ZW5kb3Ivc3luLTIuMC41NS9zcmMvZ2VuL2VxLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9lcS5ycwotLS0tIGEvdGhp cmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dl bi9lcS5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3N5bi0yLjAuNjAvc3JjL2dlbi9lcS5ycwotQEAgLTEzMDAsNiArMTMwMCw3IEBAIGltcGwgUGFy dGlhbEVxIGZvciBjcmF0ZTo6TGl0IHsKLSAgICAgICAgIG1hdGNoIChzZWxmLCBvdGhlcikgewot ICAgICAgICAgICAgIChjcmF0ZTo6TGl0OjpTdHIoc2VsZjApLCBjcmF0ZTo6TGl0OjpTdHIob3Ro ZXIwKSkgPT4gc2VsZjAgPT0gb3RoZXIwLAotICAgICAgICAgICAgIChjcmF0ZTo6TGl0OjpCeXRl U3RyKHNlbGYwKSwgY3JhdGU6OkxpdDo6Qnl0ZVN0cihvdGhlcjApKSA9PiBzZWxmMCA9PSBvdGhl cjAsCi0rICAgICAgICAgICAgKGNyYXRlOjpMaXQ6OkNTdHIoc2VsZjApLCBjcmF0ZTo6TGl0OjpD U3RyKG90aGVyMCkpID0+IHNlbGYwID09IG90aGVyMCwKLSAgICAgICAgICAgICAoY3JhdGU6Okxp dDo6Qnl0ZShzZWxmMCksIGNyYXRlOjpMaXQ6OkJ5dGUob3RoZXIwKSkgPT4gc2VsZjAgPT0gb3Ro ZXIwLAotICAgICAgICAgICAgIChjcmF0ZTo6TGl0OjpDaGFyKHNlbGYwKSwgY3JhdGU6OkxpdDo6 Q2hhcihvdGhlcjApKSA9PiBzZWxmMCA9PSBvdGhlcjAsCi0gICAgICAgICAgICAgKGNyYXRlOjpM aXQ6OkludChzZWxmMCksIGNyYXRlOjpMaXQ6OkludChvdGhlcjApKSA9PiBzZWxmMCA9PSBvdGhl cjAsCi1AQCAtMTMyNSw2ICsxMzI2LDggQEAgaW1wbCBFcSBmb3IgY3JhdGU6OkxpdEJ5dGUge30K LSAjW2NmZ19hdHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9ICJleHRyYS10cmFpdHMiKSkp XQotIGltcGwgRXEgZm9yIGNyYXRlOjpMaXRCeXRlU3RyIHt9Ci0gI1tjZmdfYXR0cihkb2NfY2Zn LCBkb2MoY2ZnKGZlYXR1cmUgPSAiZXh0cmEtdHJhaXRzIikpKV0KLStpbXBsIEVxIGZvciBjcmF0 ZTo6TGl0Q1N0ciB7fQotKyNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gImV4 dHJhLXRyYWl0cyIpKSldCi0gaW1wbCBFcSBmb3IgY3JhdGU6OkxpdENoYXIge30KLSAjW2NmZ19h dHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9ICJleHRyYS10cmFpdHMiKSkpXQotIGltcGwg RXEgZm9yIGNyYXRlOjpMaXRGbG9hdCB7fQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy9nZW4vZm9sZC5ycyBiL3Ro aXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjYwL3NyYy9n ZW4vZm9sZC5ycwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVu ZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi9mb2xkLnJzCi0rKysgYi90aGlyZF9wYXJ0eS9ydXN0L2No cm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC42MC9zcmMvZ2VuL2ZvbGQucnMKLUBAIC01 ODEsNiArNTgxLDkgQEAgcHViIHRyYWl0IEZvbGQgewotICAgICBmbiBmb2xkX2xpdF9ieXRlX3N0 cigmbXV0IHNlbGYsIGk6IGNyYXRlOjpMaXRCeXRlU3RyKSAtPiBjcmF0ZTo6TGl0Qnl0ZVN0ciB7 Ci0gICAgICAgICBmb2xkX2xpdF9ieXRlX3N0cihzZWxmLCBpKQotICAgICB9Ci0rICAgIGZuIGZv bGRfbGl0X2NzdHIoJm11dCBzZWxmLCBpOiBjcmF0ZTo6TGl0Q1N0cikgLT4gY3JhdGU6OkxpdENT dHIgewotKyAgICAgICAgZm9sZF9saXRfY3N0cihzZWxmLCBpKQotKyAgICB9Ci0gICAgIGZuIGZv bGRfbGl0X2NoYXIoJm11dCBzZWxmLCBpOiBjcmF0ZTo6TGl0Q2hhcikgLT4gY3JhdGU6OkxpdENo YXIgewotICAgICAgICAgZm9sZF9saXRfY2hhcihzZWxmLCBpKQotICAgICB9Ci1AQCAtMjYyOCw2 ICsyNjMxLDcgQEAgd2hlcmUKLSAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGVTdHIoX2JpbmRpbmdf MCkgPT4gewotICAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGVTdHIoZi5mb2xkX2xpdF9ieXRl X3N0cihfYmluZGluZ18wKSkKLSAgICAgICAgIH0KLSsgICAgICAgIGNyYXRlOjpMaXQ6OkNTdHIo X2JpbmRpbmdfMCkgPT4gY3JhdGU6OkxpdDo6Q1N0cihmLmZvbGRfbGl0X2NzdHIoX2JpbmRpbmdf MCkpLAotICAgICAgICAgY3JhdGU6OkxpdDo6Qnl0ZShfYmluZGluZ18wKSA9PiBjcmF0ZTo6TGl0 OjpCeXRlKGYuZm9sZF9saXRfYnl0ZShfYmluZGluZ18wKSksCi0gICAgICAgICBjcmF0ZTo6TGl0 OjpDaGFyKF9iaW5kaW5nXzApID0+IGNyYXRlOjpMaXQ6OkNoYXIoZi5mb2xkX2xpdF9jaGFyKF9i aW5kaW5nXzApKSwKLSAgICAgICAgIGNyYXRlOjpMaXQ6OkludChfYmluZGluZ18wKSA9PiBjcmF0 ZTo6TGl0OjpJbnQoZi5mb2xkX2xpdF9pbnQoX2JpbmRpbmdfMCkpLAotQEAgLTI2NjMsNiArMjY2 NywxNSBAQCB3aGVyZQotICAgICBub2RlLnNldF9zcGFuKHNwYW4pOwotICAgICBub2RlCi0gfQot K3B1YiBmbiBmb2xkX2xpdF9jc3RyPEY+KGY6ICZtdXQgRiwgbm9kZTogY3JhdGU6OkxpdENTdHIp IC0+IGNyYXRlOjpMaXRDU3RyCi0rd2hlcmUKLSsgICAgRjogRm9sZCArID9TaXplZCwKLSt7Ci0r ICAgIGxldCBzcGFuID0gZi5mb2xkX3NwYW4obm9kZS5zcGFuKCkpOwotKyAgICBsZXQgbXV0IG5v ZGUgPSBub2RlOwotKyAgICBub2RlLnNldF9zcGFuKHNwYW4pOwotKyAgICBub2RlCi0rfQotIHB1 YiBmbiBmb2xkX2xpdF9jaGFyPEY+KGY6ICZtdXQgRiwgbm9kZTogY3JhdGU6OkxpdENoYXIpIC0+ IGNyYXRlOjpMaXRDaGFyCi0gd2hlcmUKLSAgICAgRjogRm9sZCArID9TaXplZCwKLWRpZmYgLS1n aXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41 NS9zcmMvZ2VuL2hhc2gucnMgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92 ZW5kb3Ivc3luLTIuMC42MC9zcmMvZ2VuL2hhc2gucnMKLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy9nZW4vaGFzaC5ycwotKysr IGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAv c3JjL2dlbi9oYXNoLnJzCi1AQCAtMTY4MiwyOCArMTY4MiwzMiBAQCBpbXBsIEhhc2ggZm9yIGNy YXRlOjpMaXQgewotICAgICAgICAgICAgICAgICBzdGF0ZS53cml0ZV91OCgxdTgpOwotICAgICAg ICAgICAgICAgICB2MC5oYXNoKHN0YXRlKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAg Y3JhdGU6OkxpdDo6Qnl0ZSh2MCkgPT4gewotKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkNTdHIo djApID0+IHsKLSAgICAgICAgICAgICAgICAgc3RhdGUud3JpdGVfdTgoMnU4KTsKLSAgICAgICAg ICAgICAgICAgdjAuaGFzaChzdGF0ZSk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGNy YXRlOjpMaXQ6OkNoYXIodjApID0+IHsKLSsgICAgICAgICAgICBjcmF0ZTo6TGl0OjpCeXRlKHYw KSA9PiB7Ci0gICAgICAgICAgICAgICAgIHN0YXRlLndyaXRlX3U4KDN1OCk7Ci0gICAgICAgICAg ICAgICAgIHYwLmhhc2goc3RhdGUpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBjcmF0 ZTo6TGl0OjpJbnQodjApID0+IHsKLSsgICAgICAgICAgICBjcmF0ZTo6TGl0OjpDaGFyKHYwKSA9 PiB7Ci0gICAgICAgICAgICAgICAgIHN0YXRlLndyaXRlX3U4KDR1OCk7Ci0gICAgICAgICAgICAg ICAgIHYwLmhhc2goc3RhdGUpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBjcmF0ZTo6 TGl0OjpGbG9hdCh2MCkgPT4gewotKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkludCh2MCkgPT4g ewotICAgICAgICAgICAgICAgICBzdGF0ZS53cml0ZV91OCg1dTgpOwotICAgICAgICAgICAgICAg ICB2MC5oYXNoKHN0YXRlKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgY3JhdGU6Okxp dDo6Qm9vbCh2MCkgPT4gewotKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkZsb2F0KHYwKSA9PiB7 Ci0gICAgICAgICAgICAgICAgIHN0YXRlLndyaXRlX3U4KDZ1OCk7Ci0gICAgICAgICAgICAgICAg IHYwLmhhc2goc3RhdGUpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBjcmF0ZTo6TGl0 OjpWZXJiYXRpbSh2MCkgPT4gewotKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkJvb2wodjApID0+ IHsKLSAgICAgICAgICAgICAgICAgc3RhdGUud3JpdGVfdTgoN3U4KTsKLSsgICAgICAgICAgICAg ICAgdjAuaGFzaChzdGF0ZSk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGNyYXRlOjpM aXQ6OlZlcmJhdGltKHYwKSA9PiB7Ci0rICAgICAgICAgICAgICAgIHN0YXRlLndyaXRlX3U4KDh1 OCk7Ci0gICAgICAgICAgICAgICAgIHYwLnRvX3N0cmluZygpLmhhc2goc3RhdGUpOwotICAgICAg ICAgICAgIH0KLSAgICAgICAgIH0KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9t aXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMvZ2VuL3Zpc2l0LnJzIGIvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi92 aXNpdC5ycwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3N5bi0yLjAuNTUvc3JjL2dlbi92aXNpdC5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi92aXNpdC5ycwotQEAgLTU0 Nyw2ICs1NDcsOSBAQCBwdWIgdHJhaXQgVmlzaXQ8J2FzdD4gewotICAgICBmbiB2aXNpdF9saXRf Ynl0ZV9zdHIoJm11dCBzZWxmLCBpOiAmJ2FzdCBjcmF0ZTo6TGl0Qnl0ZVN0cikgewotICAgICAg ICAgdmlzaXRfbGl0X2J5dGVfc3RyKHNlbGYsIGkpOwotICAgICB9Ci0rICAgIGZuIHZpc2l0X2xp dF9jc3RyKCZtdXQgc2VsZiwgaTogJidhc3QgY3JhdGU6OkxpdENTdHIpIHsKLSsgICAgICAgIHZp c2l0X2xpdF9jc3RyKHNlbGYsIGkpOwotKyAgICB9Ci0gICAgIGZuIHZpc2l0X2xpdF9jaGFyKCZt dXQgc2VsZiwgaTogJidhc3QgY3JhdGU6OkxpdENoYXIpIHsKLSAgICAgICAgIHZpc2l0X2xpdF9j aGFyKHNlbGYsIGkpOwotICAgICB9Ci1AQCAtMjY5NCw2ICsyNjk3LDkgQEAgd2hlcmUKLSAgICAg ICAgIGNyYXRlOjpMaXQ6OkJ5dGVTdHIoX2JpbmRpbmdfMCkgPT4gewotICAgICAgICAgICAgIHYu dmlzaXRfbGl0X2J5dGVfc3RyKF9iaW5kaW5nXzApOwotICAgICAgICAgfQotKyAgICAgICAgY3Jh dGU6OkxpdDo6Q1N0cihfYmluZGluZ18wKSA9PiB7Ci0rICAgICAgICAgICAgdi52aXNpdF9saXRf Y3N0cihfYmluZGluZ18wKTsKLSsgICAgICAgIH0KLSAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGUo X2JpbmRpbmdfMCkgPT4gewotICAgICAgICAgICAgIHYudmlzaXRfbGl0X2J5dGUoX2JpbmRpbmdf MCk7Ci0gICAgICAgICB9Ci1AQCAtMjcyOSw2ICsyNzM1LDEwIEBAIHB1YiBmbiB2aXNpdF9saXRf Ynl0ZV9zdHI8J2FzdCwgVj4odjogJm11dCBWLCBub2RlOiAmJ2FzdCBjcmF0ZTo6TGl0Qnl0ZVN0 cikKLSB3aGVyZQotICAgICBWOiBWaXNpdDwnYXN0PiArID9TaXplZCwKLSB7fQotK3B1YiBmbiB2 aXNpdF9saXRfY3N0cjwnYXN0LCBWPih2OiAmbXV0IFYsIG5vZGU6ICYnYXN0IGNyYXRlOjpMaXRD U3RyKQotK3doZXJlCi0rICAgIFY6IFZpc2l0PCdhc3Q+ICsgP1NpemVkLAotK3t9Ci0gcHViIGZu IHZpc2l0X2xpdF9jaGFyPCdhc3QsIFY+KHY6ICZtdXQgViwgbm9kZTogJidhc3QgY3JhdGU6Okxp dENoYXIpCi0gd2hlcmUKLSAgICAgVjogVmlzaXQ8J2FzdD4gKyA/U2l6ZWQsCi1kaWZmIC0tZ2l0 IGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUv c3JjL2dlbi92aXNpdF9tdXQucnMgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19p by92ZW5kb3Ivc3luLTIuMC42MC9zcmMvZ2VuL3Zpc2l0X211dC5ycwotLS0tIGEvdGhpcmRfcGFy dHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi92aXNp dF9tdXQucnMKLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRv ci9zeW4tMi4wLjYwL3NyYy9nZW4vdmlzaXRfbXV0LnJzCi1AQCAtNTQ4LDYgKzU0OCw5IEBAIHB1 YiB0cmFpdCBWaXNpdE11dCB7Ci0gICAgIGZuIHZpc2l0X2xpdF9ieXRlX3N0cl9tdXQoJm11dCBz ZWxmLCBpOiAmbXV0IGNyYXRlOjpMaXRCeXRlU3RyKSB7Ci0gICAgICAgICB2aXNpdF9saXRfYnl0 ZV9zdHJfbXV0KHNlbGYsIGkpOwotICAgICB9Ci0rICAgIGZuIHZpc2l0X2xpdF9jc3RyX211dCgm bXV0IHNlbGYsIGk6ICZtdXQgY3JhdGU6OkxpdENTdHIpIHsKLSsgICAgICAgIHZpc2l0X2xpdF9j c3RyX211dChzZWxmLCBpKTsKLSsgICAgfQotICAgICBmbiB2aXNpdF9saXRfY2hhcl9tdXQoJm11 dCBzZWxmLCBpOiAmbXV0IGNyYXRlOjpMaXRDaGFyKSB7Ci0gICAgICAgICB2aXNpdF9saXRfY2hh cl9tdXQoc2VsZiwgaSk7Ci0gICAgIH0KLUBAIC0yNjk0LDYgKzI2OTcsOSBAQCB3aGVyZQotICAg ICAgICAgY3JhdGU6OkxpdDo6Qnl0ZVN0cihfYmluZGluZ18wKSA9PiB7Ci0gICAgICAgICAgICAg di52aXNpdF9saXRfYnl0ZV9zdHJfbXV0KF9iaW5kaW5nXzApOwotICAgICAgICAgfQotKyAgICAg ICAgY3JhdGU6OkxpdDo6Q1N0cihfYmluZGluZ18wKSA9PiB7Ci0rICAgICAgICAgICAgdi52aXNp dF9saXRfY3N0cl9tdXQoX2JpbmRpbmdfMCk7Ci0rICAgICAgICB9Ci0gICAgICAgICBjcmF0ZTo6 TGl0OjpCeXRlKF9iaW5kaW5nXzApID0+IHsKLSAgICAgICAgICAgICB2LnZpc2l0X2xpdF9ieXRl X211dChfYmluZGluZ18wKTsKLSAgICAgICAgIH0KLUBAIC0yNzI5LDYgKzI3MzUsMTAgQEAgcHVi IGZuIHZpc2l0X2xpdF9ieXRlX3N0cl9tdXQ8Vj4odjogJm11dCBWLCBub2RlOiAmbXV0IGNyYXRl OjpMaXRCeXRlU3RyKQotIHdoZXJlCi0gICAgIFY6IFZpc2l0TXV0ICsgP1NpemVkLAotIHt9Ci0r cHViIGZuIHZpc2l0X2xpdF9jc3RyX211dDxWPih2OiAmbXV0IFYsIG5vZGU6ICZtdXQgY3JhdGU6 OkxpdENTdHIpCi0rd2hlcmUKLSsgICAgVjogVmlzaXRNdXQgKyA/U2l6ZWQsCi0re30KLSBwdWIg Zm4gdmlzaXRfbGl0X2NoYXJfbXV0PFY+KHY6ICZtdXQgViwgbm9kZTogJm11dCBjcmF0ZTo6TGl0 Q2hhcikKLSB3aGVyZQotICAgICBWOiBWaXNpdE11dCArID9TaXplZCwKLWRpZmYgLS1naXQgYS90 aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMv bGliLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0y LjAuNjAvc3JjL2xpYi5ycwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNf aW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2xpYi5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9j aHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2xpYi5ycwotQEAgLTQxOCw3 ICs0MTgsOSBAQCBtb2QgbGl0OwotICNbZG9jKGhpZGRlbildIC8vIGh0dHBzOi8vZ2l0aHViLmNv bS9kdG9sbmF5L3N5bi9pc3N1ZXMvMTU2NgotIHB1YiB1c2UgY3JhdGU6OmxpdDo6U3RyU3R5bGU7 Ci0gI1tkb2MoaW5saW5lKV0KLS1wdWIgdXNlIGNyYXRlOjpsaXQ6OntMaXQsIExpdEJvb2wsIExp dEJ5dGUsIExpdEJ5dGVTdHIsIExpdENoYXIsIExpdEZsb2F0LCBMaXRJbnQsIExpdFN0cn07Ci0r cHViIHVzZSBjcmF0ZTo6bGl0Ojp7Ci0rICAgIExpdCwgTGl0Qm9vbCwgTGl0Qnl0ZSwgTGl0Qnl0 ZVN0ciwgTGl0Q1N0ciwgTGl0Q2hhciwgTGl0RmxvYXQsIExpdEludCwgTGl0U3RyLAotK307Ci0g Ci0gI1tjZmcoZmVhdHVyZSA9ICJwYXJzaW5nIildCi0gbW9kIGxvb2thaGVhZDsKLWRpZmYgLS1n aXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41 NS9zcmMvbGl0LnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3N5bi0yLjAuNjAvc3JjL2xpdC5ycwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2xpdC5ycwotKysrIGIvdGhpcmRfcGFydHkv cnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2xpdC5ycwotQEAg LTYsNiArNiw3IEBAIHVzZSBjcmF0ZTo6e0Vycm9yLCBSZXN1bHR9OwotIHVzZSBwcm9jX21hY3Jv Mjo6e0lkZW50LCBMaXRlcmFsLCBTcGFufTsKLSAjW2NmZyhmZWF0dXJlID0gInBhcnNpbmciKV0K LSB1c2UgcHJvY19tYWNybzI6OntUb2tlblN0cmVhbSwgVG9rZW5UcmVlfTsKLSt1c2Ugc3RkOjpm Zmk6OntDU3RyLCBDU3RyaW5nfTsKLSB1c2Ugc3RkOjpmbXQ6OntzZWxmLCBEaXNwbGF5fTsKLSAj W2NmZyhmZWF0dXJlID0gImV4dHJhLXRyYWl0cyIpXQotIHVzZSBzdGQ6Omhhc2g6OntIYXNoLCBI YXNoZXJ9OwotQEAgLTI3LDYgKzI4LDkgQEAgYXN0X2VudW1fb2Zfc3RydWN0cyEgewotICAgICAg ICAgLy8vIEEgYnl0ZSBzdHJpbmcgbGl0ZXJhbDogYGIiZm9vImAuCi0gICAgICAgICBCeXRlU3Ry KExpdEJ5dGVTdHIpLAotIAotKyAgICAgICAgLy8vIEEgbnVsLXRlcm1pbmF0ZWQgQy1zdHJpbmcg bGl0ZXJhbDogYGMiZm9vImAuCi0rICAgICAgICBDU3RyKExpdENTdHIpLAotKwotICAgICAgICAg Ly8vIEEgYnl0ZSBsaXRlcmFsOiBgYidmJ2AuCi0gICAgICAgICBCeXRlKExpdEJ5dGUpLAotIAot QEAgLTYzLDYgKzY3LDEzIEBAIGFzdF9zdHJ1Y3QhIHsKLSAgICAgfQotIH0KLSAKLSthc3Rfc3Ry dWN0ISB7Ci0rICAgIC8vLyBBIG51bC10ZXJtaW5hdGVkIEMtc3RyaW5nIGxpdGVyYWw6IGBjImZv byJgLgotKyAgICBwdWIgc3RydWN0IExpdENTdHIgewotKyAgICAgICAgcmVwcjogQm94PExpdFJl cHI+LAotKyAgICB9Ci0rfQotKwotIGFzdF9zdHJ1Y3QhIHsKLSAgICAgLy8vIEEgYnl0ZSBsaXRl cmFsOiBgYidmJ2AuCi0gICAgIHB1YiBzdHJ1Y3QgTGl0Qnl0ZSB7Ci1AQCAtMjk0LDYgKzMwNSw0 MSBAQCBpbXBsIExpdEJ5dGVTdHIgewotICAgICB9Ci0gfQotIAotK2ltcGwgTGl0Q1N0ciB7Ci0r ICAgIHB1YiBmbiBuZXcodmFsdWU6ICZDU3RyLCBzcGFuOiBTcGFuKSAtPiBTZWxmIHsKLSsgICAg ICAgIGxldCBtdXQgdG9rZW4gPSBMaXRlcmFsOjpjX3N0cmluZyh2YWx1ZSk7Ci0rICAgICAgICB0 b2tlbi5zZXRfc3BhbihzcGFuKTsKLSsgICAgICAgIExpdENTdHIgewotKyAgICAgICAgICAgIHJl cHI6IEJveDo6bmV3KExpdFJlcHIgewotKyAgICAgICAgICAgICAgICB0b2tlbiwKLSsgICAgICAg ICAgICAgICAgc3VmZml4OiBCb3g6OjxzdHI+OjpkZWZhdWx0KCksCi0rICAgICAgICAgICAgfSks Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgcHViIGZuIHZhbHVlKCZzZWxmKSAtPiBDU3Ry aW5nIHsKLSsgICAgICAgIGxldCByZXByID0gc2VsZi5yZXByLnRva2VuLnRvX3N0cmluZygpOwot KyAgICAgICAgbGV0ICh2YWx1ZSwgX3N1ZmZpeCkgPSB2YWx1ZTo6cGFyc2VfbGl0X2Nfc3RyKCZy ZXByKTsKLSsgICAgICAgIHZhbHVlCi0rICAgIH0KLSsKLSsgICAgcHViIGZuIHNwYW4oJnNlbGYp IC0+IFNwYW4gewotKyAgICAgICAgc2VsZi5yZXByLnRva2VuLnNwYW4oKQotKyAgICB9Ci0rCi0r ICAgIHB1YiBmbiBzZXRfc3BhbigmbXV0IHNlbGYsIHNwYW46IFNwYW4pIHsKLSsgICAgICAgIHNl bGYucmVwci50b2tlbi5zZXRfc3BhbihzcGFuKTsKLSsgICAgfQotKwotKyAgICBwdWIgZm4gc3Vm Zml4KCZzZWxmKSAtPiAmc3RyIHsKLSsgICAgICAgICZzZWxmLnJlcHIuc3VmZml4Ci0rICAgIH0K LSsKLSsgICAgcHViIGZuIHRva2VuKCZzZWxmKSAtPiBMaXRlcmFsIHsKLSsgICAgICAgIHNlbGYu cmVwci50b2tlbi5jbG9uZSgpCi0rICAgIH0KLSt9Ci0rCi0gaW1wbCBMaXRCeXRlIHsKLSAgICAg cHViIGZuIG5ldyh2YWx1ZTogdTgsIHNwYW46IFNwYW4pIC0+IFNlbGYgewotICAgICAgICAgbGV0 IG11dCB0b2tlbiA9IExpdGVyYWw6OnU4X3N1ZmZpeGVkKHZhbHVlKTsKLUBAIC0zNjgsNyArNDE0 LDcgQEAgaW1wbCBMaXRJbnQgewotICAgICBwdWIgZm4gbmV3KHJlcHI6ICZzdHIsIHNwYW46IFNw YW4pIC0+IFNlbGYgewotICAgICAgICAgbGV0IChkaWdpdHMsIHN1ZmZpeCkgPSBtYXRjaCB2YWx1 ZTo6cGFyc2VfbGl0X2ludChyZXByKSB7Ci0gICAgICAgICAgICAgU29tZShwYXJzZSkgPT4gcGFy c2UsCi0tICAgICAgICAgICAgTm9uZSA9PiBwYW5pYyEoIk5vdCBhbiBpbnRlZ2VyIGxpdGVyYWw6 IGB7fWAiLCByZXByKSwKLSsgICAgICAgICAgICBOb25lID0+IHBhbmljISgibm90IGFuIGludGVn ZXIgbGl0ZXJhbDogYHt9YCIsIHJlcHIpLAotICAgICAgICAgfTsKLSAKLSAgICAgICAgIGxldCBt dXQgdG9rZW46IExpdGVyYWwgPSByZXByLnBhcnNlKCkudW53cmFwKCk7Ci1AQCAtNDQ3LDcgKzQ5 Myw3IEBAIGltcGwgRnJvbTxMaXRlcmFsPiBmb3IgTGl0SW50IHsKLSAgICAgICAgICAgICAgICAg fSksCi0gICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBwYW5p YyEoIk5vdCBhbiBpbnRlZ2VyIGxpdGVyYWw6IGB7fWAiLCByZXByKTsKLSsgICAgICAgICAgICBw YW5pYyEoIm5vdCBhbiBpbnRlZ2VyIGxpdGVyYWw6IGB7fWAiLCByZXByKTsKLSAgICAgICAgIH0K LSAgICAgfQotIH0KLUBAIC00NjIsNyArNTA4LDcgQEAgaW1wbCBMaXRGbG9hdCB7Ci0gICAgIHB1 YiBmbiBuZXcocmVwcjogJnN0ciwgc3BhbjogU3BhbikgLT4gU2VsZiB7Ci0gICAgICAgICBsZXQg KGRpZ2l0cywgc3VmZml4KSA9IG1hdGNoIHZhbHVlOjpwYXJzZV9saXRfZmxvYXQocmVwcikgewot ICAgICAgICAgICAgIFNvbWUocGFyc2UpID0+IHBhcnNlLAotLSAgICAgICAgICAgIE5vbmUgPT4g cGFuaWMhKCJOb3QgYSBmbG9hdCBsaXRlcmFsOiBge31gIiwgcmVwciksCi0rICAgICAgICAgICAg Tm9uZSA9PiBwYW5pYyEoIm5vdCBhIGZsb2F0IGxpdGVyYWw6IGB7fWAiLCByZXByKSwKLSAgICAg ICAgIH07Ci0gCi0gICAgICAgICBsZXQgbXV0IHRva2VuOiBMaXRlcmFsID0gcmVwci5wYXJzZSgp LnVud3JhcCgpOwotQEAgLTUxOSw3ICs1NjUsNyBAQCBpbXBsIEZyb208TGl0ZXJhbD4gZm9yIExp dEZsb2F0IHsKLSAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgfQotICAgICAgICAg fSBlbHNlIHsKLS0gICAgICAgICAgICBwYW5pYyEoIk5vdCBhIGZsb2F0IGxpdGVyYWw6IGB7fWAi LCByZXByKTsKLSsgICAgICAgICAgICBwYW5pYyEoIm5vdCBhIGZsb2F0IGxpdGVyYWw6IGB7fWAi LCByZXByKTsKLSAgICAgICAgIH0KLSAgICAgfQotIH0KLUBAIC01NTUsNyArNjAxLDcgQEAgaW1w bCBMaXRCb29sIHsKLSAKLSAjW2NmZyhmZWF0dXJlID0gImV4dHJhLXRyYWl0cyIpXQotIG1vZCBk ZWJ1Z19pbXBscyB7Ci0tICAgIHVzZSBjcmF0ZTo6bGl0Ojp7TGl0Qm9vbCwgTGl0Qnl0ZSwgTGl0 Qnl0ZVN0ciwgTGl0Q2hhciwgTGl0RmxvYXQsIExpdEludCwgTGl0U3RyfTsKLSsgICAgdXNlIGNy YXRlOjpsaXQ6OntMaXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDU3RyLCBMaXRDaGFy LCBMaXRGbG9hdCwgTGl0SW50LCBMaXRTdHJ9OwotICAgICB1c2Ugc3RkOjpmbXQ6OntzZWxmLCBE ZWJ1Z307Ci0gCi0gICAgICNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gImV4 dHJhLXRyYWl0cyIpKSldCi1AQCAtNTkwLDYgKzYzNiwyMiBAQCBtb2QgZGVidWdfaW1wbHMgewot ICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgICNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhm ZWF0dXJlID0gImV4dHJhLXRyYWl0cyIpKSldCi0rICAgIGltcGwgRGVidWcgZm9yIExpdENTdHIg ewotKyAgICAgICAgZm4gZm10KCZzZWxmLCBmb3JtYXR0ZXI6ICZtdXQgZm10OjpGb3JtYXR0ZXIp IC0+IGZtdDo6UmVzdWx0IHsKLSsgICAgICAgICAgICBzZWxmLmRlYnVnKGZvcm1hdHRlciwgIkxp dENTdHIiKQotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIGltcGwgTGl0Q1N0ciB7Ci0rICAg ICAgICBwdWIoY3JhdGUpIGZuIGRlYnVnKCZzZWxmLCBmb3JtYXR0ZXI6ICZtdXQgZm10OjpGb3Jt YXR0ZXIsIG5hbWU6ICZzdHIpIC0+IGZtdDo6UmVzdWx0IHsKLSsgICAgICAgICAgICBmb3JtYXR0 ZXIKLSsgICAgICAgICAgICAgICAgLmRlYnVnX3N0cnVjdChuYW1lKQotKyAgICAgICAgICAgICAg ICAuZmllbGQoInRva2VuIiwgJmZvcm1hdF9hcmdzISgie30iLCBzZWxmLnJlcHIudG9rZW4pKQot KyAgICAgICAgICAgICAgICAuZmluaXNoKCkKLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgICAj W2NmZ19hdHRyKGRvY19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9ICJleHRyYS10cmFpdHMiKSkpXQot ICAgICBpbXBsIERlYnVnIGZvciBMaXRCeXRlIHsKLSAgICAgICAgIGZuIGZtdCgmc2VsZiwgZm9y bWF0dGVyOiAmbXV0IGZtdDo6Rm9ybWF0dGVyKSAtPiBmbXQ6OlJlc3VsdCB7Ci1AQCAtNzUwLDYg KzgxMiw3IEBAIG1hY3JvX3J1bGVzISBsaXRfZXh0cmFfdHJhaXRzIHsKLSAKLSBsaXRfZXh0cmFf dHJhaXRzIShMaXRTdHIpOwotIGxpdF9leHRyYV90cmFpdHMhKExpdEJ5dGVTdHIpOwotK2xpdF9l eHRyYV90cmFpdHMhKExpdENTdHIpOwotIGxpdF9leHRyYV90cmFpdHMhKExpdEJ5dGUpOwotIGxp dF9leHRyYV90cmFpdHMhKExpdENoYXIpOwotIGxpdF9leHRyYV90cmFpdHMhKExpdEludCk7Ci1A QCAtNzkwLDcgKzg1Myw3IEBAIHB1YihjcmF0ZSkgbW9kIHBhcnNpbmcgewotICAgICB1c2UgY3Jh dGU6OmJ1ZmZlcjo6Q3Vyc29yOwotICAgICB1c2UgY3JhdGU6OmVycm9yOjpSZXN1bHQ7Ci0gICAg IHVzZSBjcmF0ZTo6bGl0Ojp7Ci0tICAgICAgICB2YWx1ZSwgTGl0LCBMaXRCb29sLCBMaXRCeXRl LCBMaXRCeXRlU3RyLCBMaXRDaGFyLCBMaXRGbG9hdCwgTGl0RmxvYXRSZXByLCBMaXRJbnQsCi0r ICAgICAgICB2YWx1ZSwgTGl0LCBMaXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDU3Ry LCBMaXRDaGFyLCBMaXRGbG9hdCwgTGl0RmxvYXRSZXByLCBMaXRJbnQsCi0gICAgICAgICBMaXRJ bnRSZXByLCBMaXRTdHIsCi0gICAgIH07Ci0gICAgIHVzZSBjcmF0ZTo6cGFyc2U6OntQYXJzZSwg UGFyc2VTdHJlYW19OwotQEAgLTg4OSw2ICs5NTIsMTcgQEAgcHViKGNyYXRlKSBtb2QgcGFyc2lu ZyB7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2Mo Y2ZnKGZlYXR1cmUgPSAicGFyc2luZyIpKSldCi0rICAgIGltcGwgUGFyc2UgZm9yIExpdENTdHIg ewotKyAgICAgICAgZm4gcGFyc2UoaW5wdXQ6IFBhcnNlU3RyZWFtKSAtPiBSZXN1bHQ8U2VsZj4g ewotKyAgICAgICAgICAgIGxldCBoZWFkID0gaW5wdXQuZm9yaygpOwotKyAgICAgICAgICAgIG1h dGNoIGlucHV0LnBhcnNlKCkgewotKyAgICAgICAgICAgICAgICBPayhMaXQ6OkNTdHIobGl0KSkg PT4gT2sobGl0KSwKLSsgICAgICAgICAgICAgICAgXyA9PiBFcnIoaGVhZC5lcnJvcigiZXhwZWN0 ZWQgQyBzdHJpbmcgbGl0ZXJhbCIpKSwKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAg IH0KLSsKLSAgICAgI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSAicGFyc2lu ZyIpKSldCi0gICAgIGltcGwgUGFyc2UgZm9yIExpdEJ5dGUgewotICAgICAgICAgZm4gcGFyc2Uo aW5wdXQ6IFBhcnNlU3RyZWFtKSAtPiBSZXN1bHQ8U2VsZj4gewotQEAgLTk0Nyw3ICsxMDIxLDcg QEAgcHViKGNyYXRlKSBtb2QgcGFyc2luZyB7Ci0gCi0gI1tjZmcoZmVhdHVyZSA9ICJwcmludGlu ZyIpXQotIG1vZCBwcmludGluZyB7Ci0tICAgIHVzZSBjcmF0ZTo6bGl0Ojp7TGl0Qm9vbCwgTGl0 Qnl0ZSwgTGl0Qnl0ZVN0ciwgTGl0Q2hhciwgTGl0RmxvYXQsIExpdEludCwgTGl0U3RyfTsKLSsg ICAgdXNlIGNyYXRlOjpsaXQ6OntMaXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDU3Ry LCBMaXRDaGFyLCBMaXRGbG9hdCwgTGl0SW50LCBMaXRTdHJ9OwotICAgICB1c2UgcHJvY19tYWNy bzI6OlRva2VuU3RyZWFtOwotICAgICB1c2UgcXVvdGU6OntUb1Rva2VucywgVG9rZW5TdHJlYW1F eHR9OwotIAotQEAgLTk2NSw2ICsxMDM5LDEzIEBAIG1vZCBwcmludGluZyB7Ci0gICAgICAgICB9 Ci0gICAgIH0KLSAKLSsgICAgI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSAi cHJpbnRpbmciKSkpXQotKyAgICBpbXBsIFRvVG9rZW5zIGZvciBMaXRDU3RyIHsKLSsgICAgICAg IGZuIHRvX3Rva2Vucygmc2VsZiwgdG9rZW5zOiAmbXV0IFRva2VuU3RyZWFtKSB7Ci0rICAgICAg ICAgICAgc2VsZi5yZXByLnRva2VuLnRvX3Rva2Vucyh0b2tlbnMpOwotKyAgICAgICAgfQotKyAg ICB9Ci0rCi0gICAgICNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gInByaW50 aW5nIikpKV0KLSAgICAgaW1wbCBUb1Rva2VucyBmb3IgTGl0Qnl0ZSB7Ci0gICAgICAgICBmbiB0 b190b2tlbnMoJnNlbGYsIHRva2VuczogJm11dCBUb2tlblN0cmVhbSkgewotQEAgLTEwMDQsMTEg KzEwODUsMTMgQEAgbW9kIHByaW50aW5nIHsKLSBtb2QgdmFsdWUgewotICAgICB1c2UgY3JhdGU6 OmJpZ2ludDo6QmlnSW50OwotICAgICB1c2UgY3JhdGU6OmxpdDo6ewotLSAgICAgICAgTGl0LCBM aXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDaGFyLCBMaXRGbG9hdCwgTGl0RmxvYXRS ZXByLCBMaXRJbnQsIExpdEludFJlcHIsCi0tICAgICAgICBMaXRSZXByLCBMaXRTdHIsCi0rICAg ICAgICBMaXQsIExpdEJvb2wsIExpdEJ5dGUsIExpdEJ5dGVTdHIsIExpdENTdHIsIExpdENoYXIs IExpdEZsb2F0LCBMaXRGbG9hdFJlcHIsIExpdEludCwKLSsgICAgICAgIExpdEludFJlcHIsIExp dFJlcHIsIExpdFN0ciwKLSAgICAgfTsKLSAgICAgdXNlIHByb2NfbWFjcm8yOjp7TGl0ZXJhbCwg U3Bhbn07Ci0rICAgIHVzZSBzdGQ6OmFzY2lpOwotICAgICB1c2Ugc3RkOjpjaGFyOwotKyAgICB1 c2Ugc3RkOjpmZmk6OkNTdHJpbmc7Ci0gICAgIHVzZSBzdGQ6Om9wczo6e0luZGV4LCBSYW5nZUZy b219OwotIAotICAgICBpbXBsIExpdCB7Ci1AQCAtMTA0MSw2ICsxMTI0LDEzIEBAIG1vZCB2YWx1 ZSB7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICBfID0+IHt9 Ci0gICAgICAgICAgICAgICAgIH0sCi0rICAgICAgICAgICAgICAgIC8vIGMiLi4uIiwgY3IiLi4u IiwgY3IjIi4uLiIjCi0rICAgICAgICAgICAgICAgIGInYycgPT4gewotKyAgICAgICAgICAgICAg ICAgICAgbGV0IChfLCBzdWZmaXgpID0gcGFyc2VfbGl0X2Nfc3RyKCZyZXByKTsKLSsgICAgICAg ICAgICAgICAgICAgIHJldHVybiBMaXQ6OkNTdHIoTGl0Q1N0ciB7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgcmVwcjogQm94OjpuZXcoTGl0UmVwciB7IHRva2VuLCBzdWZmaXggfSksCi0rICAg ICAgICAgICAgICAgICAgICB9KTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg ICAvLyAnLi4uJwotICAgICAgICAgICAgICAgICBiJ1wnJyA9PiB7Ci0gICAgICAgICAgICAgICAg ICAgICBsZXQgKF8sIHN1ZmZpeCkgPSBwYXJzZV9saXRfY2hhcigmcmVwcik7Ci1AQCAtMTA3OSwy MCArMTE2OSwxOCBAQCBtb2QgdmFsdWUgewotICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwot ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAg ICAgIC8vIGMiLi4uIiwgY3IiLi4uIiwgY3IjIi4uLiIjCi0tICAgICAgICAgICAgICAgIC8vIFRP RE86IGFkZCBhIExpdDo6Q1N0ciB2YXJpYW50PwotLSAgICAgICAgICAgICAgICBiJ2MnID0+IHJl dHVybiBMaXQ6OlZlcmJhdGltKHRva2VuKSwKLSAgICAgICAgICAgICAgICAgYicoJyBpZiByZXBy ID09ICIoLypFUlJPUiovKSIgPT4gcmV0dXJuIExpdDo6VmVyYmF0aW0odG9rZW4pLAotICAgICAg ICAgICAgICAgICBfID0+IHt9Ci0gICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIHBhbmlj ISgiVW5yZWNvZ25pemVkIGxpdGVyYWw6IGB7fWAiLCByZXByKTsKLSsgICAgICAgICAgICBwYW5p YyEoInVucmVjb2duaXplZCBsaXRlcmFsOiBge31gIiwgcmVwcik7Ci0gICAgICAgICB9Ci0gCi0g ICAgICAgICBwdWIgZm4gc3VmZml4KCZzZWxmKSAtPiAmc3RyIHsKLSAgICAgICAgICAgICBtYXRj aCBzZWxmIHsKLSAgICAgICAgICAgICAgICAgTGl0OjpTdHIobGl0KSA9PiBsaXQuc3VmZml4KCks Ci0gICAgICAgICAgICAgICAgIExpdDo6Qnl0ZVN0cihsaXQpID0+IGxpdC5zdWZmaXgoKSwKLSsg ICAgICAgICAgICAgICAgTGl0OjpDU3RyKGxpdCkgPT4gbGl0LnN1ZmZpeCgpLAotICAgICAgICAg ICAgICAgICBMaXQ6OkJ5dGUobGl0KSA9PiBsaXQuc3VmZml4KCksCi0gICAgICAgICAgICAgICAg IExpdDo6Q2hhcihsaXQpID0+IGxpdC5zdWZmaXgoKSwKLSAgICAgICAgICAgICAgICAgTGl0OjpJ bnQobGl0KSA9PiBsaXQuc3VmZml4KCksCi1AQCAtMTEwNSw2ICsxMTkzLDcgQEAgbW9kIHZhbHVl IHsKLSAgICAgICAgICAgICBtYXRjaCBzZWxmIHsKLSAgICAgICAgICAgICAgICAgTGl0OjpTdHIo bGl0KSA9PiBsaXQuc3BhbigpLAotICAgICAgICAgICAgICAgICBMaXQ6OkJ5dGVTdHIobGl0KSA9 PiBsaXQuc3BhbigpLAotKyAgICAgICAgICAgICAgICBMaXQ6OkNTdHIobGl0KSA9PiBsaXQuc3Bh bigpLAotICAgICAgICAgICAgICAgICBMaXQ6OkJ5dGUobGl0KSA9PiBsaXQuc3BhbigpLAotICAg ICAgICAgICAgICAgICBMaXQ6OkNoYXIobGl0KSA9PiBsaXQuc3BhbigpLAotICAgICAgICAgICAg ICAgICBMaXQ6OkludChsaXQpID0+IGxpdC5zcGFuKCksCi1AQCAtMTExOCw2ICsxMjA3LDcgQEAg bW9kIHZhbHVlIHsKLSAgICAgICAgICAgICBtYXRjaCBzZWxmIHsKLSAgICAgICAgICAgICAgICAg TGl0OjpTdHIobGl0KSA9PiBsaXQuc2V0X3NwYW4oc3BhbiksCi0gICAgICAgICAgICAgICAgIExp dDo6Qnl0ZVN0cihsaXQpID0+IGxpdC5zZXRfc3BhbihzcGFuKSwKLSsgICAgICAgICAgICAgICAg TGl0OjpDU3RyKGxpdCkgPT4gbGl0LnNldF9zcGFuKHNwYW4pLAotICAgICAgICAgICAgICAgICBM aXQ6OkJ5dGUobGl0KSA9PiBsaXQuc2V0X3NwYW4oc3BhbiksCi0gICAgICAgICAgICAgICAgIExp dDo6Q2hhcihsaXQpID0+IGxpdC5zZXRfc3BhbihzcGFuKSwKLSAgICAgICAgICAgICAgICAgTGl0 OjpJbnQobGl0KSA9PiBsaXQuc2V0X3NwYW4oc3BhbiksCi1AQCAtMTE3MCwxMyArMTI2MCwxMyBA QCBtb2QgdmFsdWUgewotICAgICAgICAgICAgICAgICAgICAgICAgIGIneCcgPT4gewotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZXQgKGJ5dGUsIHJlc3QpID0gYmFja3NsYXNoX3gocyk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByZXN0OwotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhc3NlcnQhKGJ5dGUgPD0gMHg3RiwgIkludmFsaWQgXFx4IGJ5dGUgaW4g c3RyaW5nIGxpdGVyYWwiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IShi eXRlIDw9IDB4N0YsICJpbnZhbGlkIFxceCBieXRlIGluIHN0cmluZyBsaXRlcmFsIik7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXI6OmZyb21fdTMyKHUzMjo6ZnJvbShieXRlKSku dW53cmFwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgYid1JyA9PiB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hyLCBy ZXN0KSA9IGJhY2tzbGFzaF91KHMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg KGNoLCByZXN0KSA9IGJhY2tzbGFzaF91KHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzID0gcmVzdDsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICAgICAgIGInbicgPT4gJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAg ICBiJ3InID0+ICdccicsCi1AQCAtMTE5MiwxMSArMTI4MiwxNCBAQCBtb2QgdmFsdWUgewotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9PiBjb250aW51ZSAnb3V0ZXIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAot LSAgICAgICAgICAgICAgICAgICAgICAgIGIgPT4gcGFuaWMhKCJ1bmV4cGVjdGVkIGJ5dGUgezo/ fSBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwgYiksCi0rICAgICAgICAgICAg ICAgICAgICAgICAgYiA9PiBwYW5pYyEoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1 bmV4cGVjdGVkIGJ5dGUgJ3t9JyBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwi LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2NpaTo6ZXNjYXBlX2RlZmF1bHQoYiks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBiJ1xyJyA9PiB7Ci0tICAgICAgICAg ICAgICAgICAgICBhc3NlcnRfZXEhKGJ5dGUocywgMSksIGInXG4nLCAiQmFyZSBDUiBub3QgYWxs b3dlZCBpbiBzdHJpbmciKTsKLSsgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoYnl0ZShz LCAxKSwgYidcbicsICJiYXJlIENSIG5vdCBhbGxvd2VkIGluIHN0cmluZyIpOwotICAgICAgICAg ICAgICAgICAgICAgcyA9ICZzWzIuLl07Ci0gICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAg ICAgICAgICAgICAgIH0KLUBAIC0xMjgzLDExICsxMzc2LDE0IEBAIG1vZCB2YWx1ZSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAnb3V0ZXI7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotLSAgICAg ICAgICAgICAgICAgICAgICAgIGIgPT4gcGFuaWMhKCJ1bmV4cGVjdGVkIGJ5dGUgezo/fSBhZnRl ciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwgYiksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgYiA9PiBwYW5pYyEoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVj dGVkIGJ5dGUgJ3t9JyBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZS1zdHJpbmcgbGl0ZXJhbCIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpOjplc2NhcGVfZGVmYXVsdChiKSwK LSsgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGInXHInID0+IHsKLS0gICAgICAgICAg ICAgICAgICAgIGFzc2VydF9lcSEoYnl0ZSh2LCAxKSwgYidcbicsICJCYXJlIENSIG5vdCBhbGxv d2VkIGluIHN0cmluZyIpOwotKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShieXRlKHYs IDEpLCBiJ1xuJywgImJhcmUgQ1Igbm90IGFsbG93ZWQgaW4gc3RyaW5nIik7Ci0gICAgICAgICAg ICAgICAgICAgICB2ID0gJnZbMi4uXTsKLSAgICAgICAgICAgICAgICAgICAgIGInXG4nCi0gICAg ICAgICAgICAgICAgIH0KLUBAIC0xMzEwLDYgKzE0MDYsOTIgQEAgbW9kIHZhbHVlIHsKLSAgICAg ICAgIChTdHJpbmc6OmZyb20odmFsdWUpLmludG9fYnl0ZXMoKSwgc3VmZml4KQotICAgICB9Ci0g Ci0rICAgIC8vIFJldHVybnMgKGNvbnRlbnQsIHN1ZmZpeCkuCi0rICAgIHB1YihjcmF0ZSkgZm4g cGFyc2VfbGl0X2Nfc3RyKHM6ICZzdHIpIC0+IChDU3RyaW5nLCBCb3g8c3RyPikgewotKyAgICAg ICAgYXNzZXJ0X2VxIShieXRlKHMsIDApLCBiJ2MnKTsKLSsgICAgICAgIG1hdGNoIGJ5dGUocywg MSkgewotKyAgICAgICAgICAgIGInIicgPT4gcGFyc2VfbGl0X2Nfc3RyX2Nvb2tlZChzKSwKLSsg ICAgICAgICAgICBiJ3InID0+IHBhcnNlX2xpdF9jX3N0cl9yYXcocyksCi0rICAgICAgICAgICAg XyA9PiB1bnJlYWNoYWJsZSEoKSwKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICAvLyBDbGlw cHkgZmFsc2UgcG9zaXRpdmUKLSsgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy1u dXJzZXJ5L3J1c3QtY2xpcHB5L2lzc3Vlcy8yMzI5Ci0rICAgICNbYWxsb3coY2xpcHB5OjpuZWVk bGVzc19jb250aW51ZSldCi0rICAgIGZuIHBhcnNlX2xpdF9jX3N0cl9jb29rZWQobXV0IHM6ICZz dHIpIC0+IChDU3RyaW5nLCBCb3g8c3RyPikgewotKyAgICAgICAgYXNzZXJ0X2VxIShieXRlKHMs IDApLCBiJ2MnKTsKLSsgICAgICAgIGFzc2VydF9lcSEoYnl0ZShzLCAxKSwgYiciJyk7Ci0rICAg ICAgICBzID0gJnNbMi4uXTsKLSsKLSsgICAgICAgIC8vIFdlJ3JlIGdvaW5nIHRvIHdhbnQgdG8g aGF2ZSBzbGljZXMgd2hpY2ggZG9uJ3QgcmVzcGVjdCBjb2RlcG9pbnQgYm91bmRhcmllcy4KLSsg ICAgICAgIGxldCBtdXQgdiA9IHMuYXNfYnl0ZXMoKTsKLSsKLSsgICAgICAgIGxldCBtdXQgb3V0 ID0gVmVjOjpuZXcoKTsKLSsgICAgICAgICdvdXRlcjogbG9vcCB7Ci0rICAgICAgICAgICAgbGV0 IGJ5dGUgPSBtYXRjaCBieXRlKHYsIDApIHsKLSsgICAgICAgICAgICAgICAgYiciJyA9PiBicmVh aywKLSsgICAgICAgICAgICAgICAgYidcXCcgPT4gewotKyAgICAgICAgICAgICAgICAgICAgbGV0 IGIgPSBieXRlKHYsIDEpOwotKyAgICAgICAgICAgICAgICAgICAgdiA9ICZ2WzIuLl07Ci0rICAg ICAgICAgICAgICAgICAgICBtYXRjaCBiIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBiJ3gn ID0+IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IChiLCByZXN0KSA9IGJhY2tz bGFzaF94KHYpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQhKGIgIT0gMCwg IlxceDAwIGlzIG5vdCBhbGxvd2VkIGluIEMtc3RyaW5nIGxpdGVyYWwiKTsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdiA9IHJlc3Q7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IGIKLSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAg Yid1JyA9PiB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2gsIHJlc3QpID0g YmFja3NsYXNoX3Uodik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCEoY2gg IT0gJ1wwJywgIlxcdXt7MH19IGlzIG5vdCBhbGxvd2VkIGluIEMtc3RyaW5nIGxpdGVyYWwiKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHJlc3Q7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG91dC5leHRlbmRfZnJvbV9zbGljZShjaC5lbmNvZGVfdXRmOCgmbXV0IFsw dTg7IDRdKS5hc19ieXRlcygpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWUgJ291dGVyOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAg ICAgICAgICBiJ24nID0+IGInXG4nLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGIncicgPT4g YidccicsCi0rICAgICAgICAgICAgICAgICAgICAgICAgYid0JyA9PiBiJ1x0JywKLSsgICAgICAg ICAgICAgICAgICAgICAgICBiJ1xcJyA9PiBiJ1xcJywKLSsgICAgICAgICAgICAgICAgICAgICAg ICBiJ1wnJyA9PiBiJ1wnJywKLSsgICAgICAgICAgICAgICAgICAgICAgICBiJyInID0+IGInIics Ci0rICAgICAgICAgICAgICAgICAgICAgICAgYidccicgfCBiJ1xuJyA9PiBsb29wIHsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ5dGUgPSBieXRlKHYsIDApOwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaGVzIShieXRlLCBiJyAnIHwgYidcdCcgfCBiJ1xu JyB8IGInXHInKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gJnZbMS4u XTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICdvdXRlcjsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgYiA9PiBwYW5pYyEoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4 cGVjdGVkIGJ5dGUgJ3t9JyBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNjaWk6OmVzY2FwZV9kZWZhdWx0KGIpLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICksCi0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgYidccicgPT4gewotKyAgICAgICAgICAgICAg ICAgICAgYXNzZXJ0X2VxIShieXRlKHYsIDEpLCBiJ1xuJywgImJhcmUgQ1Igbm90IGFsbG93ZWQg aW4gc3RyaW5nIik7Ci0rICAgICAgICAgICAgICAgICAgICB2ID0gJnZbMi4uXTsKLSsgICAgICAg ICAgICAgICAgICAgIGInXG4nCi0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAg YiA9PiB7Ci0rICAgICAgICAgICAgICAgICAgICB2ID0gJnZbMS4uXTsKLSsgICAgICAgICAgICAg ICAgICAgIGIKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH07Ci0rICAgICAgICAg ICAgb3V0LnB1c2goYnl0ZSk7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBhc3NlcnRfZXEhKGJ5 dGUodiwgMCksIGInIicpOwotKyAgICAgICAgbGV0IHN1ZmZpeCA9IHNbcy5sZW4oKSAtIHYubGVu KCkgKyAxLi5dLnRvX293bmVkKCkuaW50b19ib3hlZF9zdHIoKTsKLSsgICAgICAgIChDU3RyaW5n OjpuZXcob3V0KS51bndyYXAoKSwgc3VmZml4KQotKyAgICB9Ci0rCi0rICAgIGZuIHBhcnNlX2xp dF9jX3N0cl9yYXcoczogJnN0cikgLT4gKENTdHJpbmcsIEJveDxzdHI+KSB7Ci0rICAgICAgICBh c3NlcnRfZXEhKGJ5dGUocywgMCksIGInYycpOwotKyAgICAgICAgbGV0ICh2YWx1ZSwgc3VmZml4 KSA9IHBhcnNlX2xpdF9zdHJfcmF3KCZzWzEuLl0pOwotKyAgICAgICAgKENTdHJpbmc6Om5ldyhT dHJpbmc6OmZyb20odmFsdWUpKS51bndyYXAoKSwgc3VmZml4KQotKyAgICB9Ci0rCi0gICAgIC8v IFJldHVybnMgKHZhbHVlLCBzdWZmaXgpLgotICAgICBwdWIoY3JhdGUpIGZuIHBhcnNlX2xpdF9i eXRlKHM6ICZzdHIpIC0+ICh1OCwgQm94PHN0cj4pIHsKLSAgICAgICAgIGFzc2VydF9lcSEoYnl0 ZShzLCAwKSwgYidiJyk7Ci1AQCAtMTMzNSw3ICsxNTE3LDEwIEBAIG1vZCB2YWx1ZSB7Ci0gICAg ICAgICAgICAgICAgICAgICBiJzAnID0+IGInXDAnLAotICAgICAgICAgICAgICAgICAgICAgYidc JycgPT4gYidcJycsCi0gICAgICAgICAgICAgICAgICAgICBiJyInID0+IGInIicsCi0tICAgICAg ICAgICAgICAgICAgICBiID0+IHBhbmljISgidW5leHBlY3RlZCBieXRlIHs6P30gYWZ0ZXIgXFwg Y2hhcmFjdGVyIGluIGJ5dGUgbGl0ZXJhbCIsIGIpLAotKyAgICAgICAgICAgICAgICAgICAgYiA9 PiBwYW5pYyEoCi0rICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgYnl0ZSAne30n IGFmdGVyIFxcIGNoYXJhY3RlciBpbiBieXRlIGxpdGVyYWwiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIGFzY2lpOjplc2NhcGVfZGVmYXVsdChiKSwKLSsgICAgICAgICAgICAgICAgICAgICks Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgYiA9PiB7 Ci1AQCAtMTM2MiwxMyArMTU0NywxMyBAQCBtb2QgdmFsdWUgewotICAgICAgICAgICAgICAgICAg ICAgYid4JyA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IChieXRlLCByZXN0KSA9 IGJhY2tzbGFzaF94KHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByZXN0OwotLSAg ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCEoYnl0ZSA8PSAweDgwLCAiSW52YWxpZCBcXHgg Ynl0ZSBpbiBzdHJpbmcgbGl0ZXJhbCIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy dCEoYnl0ZSA8PSAweDdGLCAiaW52YWxpZCBcXHggYnl0ZSBpbiBjaGFyYWN0ZXIgbGl0ZXJhbCIp OwotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXI6OmZyb21fdTMyKHUzMjo6ZnJvbShieXRl KSkudW53cmFwKCkKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg IGIndScgPT4gewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hyLCByZXN0KSA9IGJh Y2tzbGFzaF91KHMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2gsIHJlc3QpID0g YmFja3NsYXNoX3Uocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHJlc3Q7Ci0tICAg ICAgICAgICAgICAgICAgICAgICAgY2hyCi0rICAgICAgICAgICAgICAgICAgICAgICAgY2gKLSAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIGInbicgPT4gJ1xuJywK LSAgICAgICAgICAgICAgICAgICAgIGIncicgPT4gJ1xyJywKLUBAIC0xMzc3LDcgKzE1NjIsMTAg QEAgbW9kIHZhbHVlIHsKLSAgICAgICAgICAgICAgICAgICAgIGInMCcgPT4gJ1wwJywKLSAgICAg ICAgICAgICAgICAgICAgIGInXCcnID0+ICdcJycsCi0gICAgICAgICAgICAgICAgICAgICBiJyIn ID0+ICciJywKLS0gICAgICAgICAgICAgICAgICAgIGIgPT4gcGFuaWMhKCJ1bmV4cGVjdGVkIGJ5 dGUgezo/fSBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwgYiksCi0rICAgICAg ICAgICAgICAgICAgICBiID0+IHBhbmljISgKLSsgICAgICAgICAgICAgICAgICAgICAgICAidW5l eHBlY3RlZCBieXRlICd7fScgYWZ0ZXIgXFwgY2hhcmFjdGVyIGluIGNoYXJhY3RlciBsaXRlcmFs IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBhc2NpaTo6ZXNjYXBlX2RlZmF1bHQoYiksCi0r ICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg fQotICAgICAgICAgICAgIF8gPT4gewotQEAgLTE0MTQsNyArMTYwMiwxMCBAQCBtb2QgdmFsdWUg ewotICAgICAgICAgKGNoLCAmc1syLi5dKQotICAgICB9Ci0gCi0tICAgIGZuIGJhY2tzbGFzaF91 KG11dCBzOiAmc3RyKSAtPiAoY2hhciwgJnN0cikgewotKyAgICBmbiBiYWNrc2xhc2hfdTxTPiht dXQgczogJlMpIC0+IChjaGFyLCAmUykKLSsgICAgd2hlcmUKLSsgICAgICAgIFM6IEluZGV4PFJh bmdlRnJvbTx1c2l6ZT4sIE91dHB1dCA9IFM+ICsgQXNSZWY8W3U4XT4gKyA/U2l6ZWQsCi0rICAg IHsKLSAgICAgICAgIGlmIGJ5dGUocywgMCkgIT0gYid7JyB7Ci0gICAgICAgICAgICAgcGFuaWMh KCJ7fSIsICJleHBlY3RlZCB7IGFmdGVyIFxcdSIpOwotICAgICAgICAgfQotZGlmZiAtLWdpdCBh L3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjU1L3Ny Yy93aGl0ZXNwYWNlLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVu ZG9yL3N5bi0yLjAuNjAvc3JjL3doaXRlc3BhY2UucnMKLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy93aGl0ZXNwYWNlLnJzCi0r KysgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC42 MC9zcmMvd2hpdGVzcGFjZS5ycwotQEAgLTQxLDExICs0MSwxMSBAQCBwdWIoY3JhdGUpIGZuIHNr aXAobXV0IHM6ICZzdHIpIC0+ICZzdHIgewotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAg ICAgICAgIG1hdGNoIGJ5dGUgewotLSAgICAgICAgICAgIGInICcgfCAweDA5Li49MHgwZCA9PiB7 Ci0rICAgICAgICAgICAgYicgJyB8IDB4MDkuLj0weDBEID0+IHsKLSAgICAgICAgICAgICAgICAg cyA9ICZzWzEuLl07Ci0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgIH0K LS0gICAgICAgICAgICBiIGlmIGIgPD0gMHg3ZiA9PiB7fQotKyAgICAgICAgICAgIGIgaWYgYiA8 PSAweDdGID0+IHt9Ci0gICAgICAgICAgICAgXyA9PiB7Ci0gICAgICAgICAgICAgICAgIGxldCBj aCA9IHMuY2hhcnMoKS5uZXh0KCkudW53cmFwKCk7Ci0gICAgICAgICAgICAgICAgIGlmIGlzX3do aXRlc3BhY2UoY2gpIHsKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2Ny YXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS90ZXN0cy9kZWJ1Zy9nZW4ucnMgYi90aGlyZF9wYXJ0 eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC42MC90ZXN0cy9kZWJ1Zy9n ZW4ucnMKLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9z eW4tMi4wLjU1L3Rlc3RzL2RlYnVnL2dlbi5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvdGVzdHMvZGVidWcvZ2VuLnJzCi1AQCAt Mjg2NCw2ICsyODY0LDcgQEAgaW1wbCBEZWJ1ZyBmb3IgTGl0ZTxzeW46OkxpdD4gewotICAgICAg ICAgbWF0Y2ggJnNlbGYudmFsdWUgewotICAgICAgICAgICAgIHN5bjo6TGl0OjpTdHIoX3ZhbCkg PT4gd3JpdGUhKGZvcm1hdHRlciwgIns6P30iLCBfdmFsLnZhbHVlKCkpLAotICAgICAgICAgICAg IHN5bjo6TGl0OjpCeXRlU3RyKF92YWwpID0+IHdyaXRlIShmb3JtYXR0ZXIsICJ7Oj99IiwgX3Zh bC52YWx1ZSgpKSwKLSsgICAgICAgICAgICBzeW46OkxpdDo6Q1N0cihfdmFsKSA9PiB3cml0ZSEo Zm9ybWF0dGVyLCAiezo/fSIsIF92YWwudmFsdWUoKSksCi0gICAgICAgICAgICAgc3luOjpMaXQ6 OkJ5dGUoX3ZhbCkgPT4gd3JpdGUhKGZvcm1hdHRlciwgIns6P30iLCBfdmFsLnZhbHVlKCkpLAot ICAgICAgICAgICAgIHN5bjo6TGl0OjpDaGFyKF92YWwpID0+IHdyaXRlIShmb3JtYXR0ZXIsICJ7 Oj99IiwgX3ZhbC52YWx1ZSgpKSwKLSAgICAgICAgICAgICBzeW46OkxpdDo6SW50KF92YWwpID0+ IHdyaXRlIShmb3JtYXR0ZXIsICJ7fSIsIF92YWwpLAotQEAgLTI5MDEsNiArMjkwMiwxMSBAQCBp bXBsIERlYnVnIGZvciBMaXRlPHN5bjo6TGl0Qnl0ZVN0cj4gewotICAgICAgICAgd3JpdGUhKGZv cm1hdHRlciwgIns6P30iLCBzZWxmLnZhbHVlLnZhbHVlKCkpCi0gICAgIH0KLSB9Ci0raW1wbCBE ZWJ1ZyBmb3IgTGl0ZTxzeW46OkxpdENTdHI+IHsKLSsgICAgZm4gZm10KCZzZWxmLCBmb3JtYXR0 ZXI6ICZtdXQgZm10OjpGb3JtYXR0ZXIpIC0+IGZtdDo6UmVzdWx0IHsKLSsgICAgICAgIHdyaXRl IShmb3JtYXR0ZXIsICJ7Oj99Iiwgc2VsZi52YWx1ZS52YWx1ZSgpKQotKyAgICB9Ci0rfQotIGlt cGwgRGVidWcgZm9yIExpdGU8c3luOjpMaXRDaGFyPiB7Ci0gICAgIGZuIGZtdCgmc2VsZiwgZm9y bWF0dGVyOiAmbXV0IGZtdDo6Rm9ybWF0dGVyKSAtPiBmbXQ6OlJlc3VsdCB7Ci0gICAgICAgICB3 cml0ZSEoZm9ybWF0dGVyLCAiezo/fSIsIHNlbGYudmFsdWUudmFsdWUoKSkKLWRpZmYgLS1naXQg YS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS90 ZXN0cy90ZXN0X2xpdC5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3Zl bmRvci9zeW4tMi4wLjYwL3Rlc3RzL3Rlc3RfbGl0LnJzCi0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0 L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS90ZXN0cy90ZXN0X2xpdC5ycwot KysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAu NjAvdGVzdHMvdGVzdF9saXQucnMKLUBAIC0xLDUgKzEsNiBAQAotICMhW2FsbG93KAotICAgICBj bGlwcHk6OmZsb2F0X2NtcCwKLSsgICAgY2xpcHB5OjpuZWVkbGVzc19yYXdfc3RyaW5nX2hhc2hl cywKLSAgICAgY2xpcHB5Ojpub25fYXNjaWlfbGl0ZXJhbCwKLSAgICAgY2xpcHB5OjpzaW5nbGVf bWF0Y2hfZWxzZSwKLSAgICAgY2xpcHB5Ojp1bmlubGluZWRfZm9ybWF0X2FyZ3MKLUBAIC0xMCw5 ICsxMSwxMSBAQCBtb2QgbWFjcm9zOwotIAotIHVzZSBwcm9jX21hY3JvMjo6e0RlbGltaXRlciwg R3JvdXAsIExpdGVyYWwsIFNwYW4sIFRva2VuU3RyZWFtLCBUb2tlblRyZWV9OwotIHVzZSBxdW90 ZTo6VG9Ub2tlbnM7Ci0rdXNlIHN0ZDo6ZmZpOjpDU3RyOwotIHVzZSBzdGQ6OnN0cjo6RnJvbVN0 cjsKLSB1c2Ugc3luOjp7TGl0LCBMaXRGbG9hdCwgTGl0SW50LCBMaXRTdHJ9OwotIAotKyNbdHJh Y2tfY2FsbGVyXQotIGZuIGxpdChzOiAmc3RyKSAtPiBMaXQgewotICAgICBsZXQgbXV0IHRva2Vu cyA9IFRva2VuU3RyZWFtOjpmcm9tX3N0cihzKS51bndyYXAoKS5pbnRvX2l0ZXIoKTsKLSAgICAg bWF0Y2ggdG9rZW5zLm5leHQoKS51bndyYXAoKSB7Ci1AQCAtMjYsNyArMjksOSBAQCBmbiBsaXQo czogJnN0cikgLT4gTGl0IHsKLSAKLSAjW3Rlc3RdCi0gZm4gc3RyaW5ncygpIHsKLSsgICAgI1t0 cmFja19jYWxsZXJdCi0gICAgIGZuIHRlc3Rfc3RyaW5nKHM6ICZzdHIsIHZhbHVlOiAmc3RyKSB7 Ci0rICAgICAgICBsZXQgcyA9IHMudHJpbSgpOwotICAgICAgICAgbWF0Y2ggbGl0KHMpIHsKLSAg ICAgICAgICAgICBMaXQ6OlN0cihsaXQpID0+IHsKLSAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx IShsaXQudmFsdWUoKSwgdmFsdWUpOwotQEAgLTM5LDE2ICs0NCwxNiBAQCBmbiBzdHJpbmdzKCkg ewotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIHRlc3Rfc3RyaW5nKCJcImFcIiIsICJhIik7 Ci0tICAgIHRlc3Rfc3RyaW5nKCJcIlxcblwiIiwgIlxuIik7Ci0tICAgIHRlc3Rfc3RyaW5nKCJc IlxcclwiIiwgIlxyIik7Ci0tICAgIHRlc3Rfc3RyaW5nKCJcIlxcdFwiIiwgIlx0Iik7Ci0tICAg IHRlc3Rfc3RyaW5nKCJcIvCfkJVcIiIsICLwn5CVIik7IC8vIE5PVEU6IFRoaXMgaXMgYW4gZW1v amkKLS0gICAgdGVzdF9zdHJpbmcoIlwiXFxcIlwiIiwgIlwiIik7Ci0tICAgIHRlc3Rfc3RyaW5n KCJcIidcIiIsICInIik7Ci0tICAgIHRlc3Rfc3RyaW5nKCJcIlwiIiwgIiIpOwotLSAgICB0ZXN0 X3N0cmluZygiXCJcXHV7MUY0MTV9XCIiLCAiXHV7MUY0MTV9Iik7Ci0tICAgIHRlc3Rfc3RyaW5n KCJcIlxcdXsxXzJfXzNffVwiIiwgIlx1ezEyM30iKTsKLSsgICAgdGVzdF9zdHJpbmcociMiICAi IiAgIiMsICIiKTsKLSsgICAgdGVzdF9zdHJpbmcociMiICAiYSIgICIjLCAiYSIpOwotKyAgICB0 ZXN0X3N0cmluZyhyIyIgICJcbiIgICIjLCAiXG4iKTsKLSsgICAgdGVzdF9zdHJpbmcociMiICAi XHIiICAiIywgIlxyIik7Ci0rICAgIHRlc3Rfc3RyaW5nKHIjIiAgIlx0IiAgIiMsICJcdCIpOwot KyAgICB0ZXN0X3N0cmluZyhyIyIgICLwn5CVIiAgIiMsICLwn5CVIik7IC8vIE5PVEU6IFRoaXMg aXMgYW4gZW1vamkKLSsgICAgdGVzdF9zdHJpbmcociMiICAiXCIiICAiIywgIlwiIik7Ci0rICAg IHRlc3Rfc3RyaW5nKHIjIiAgIiciICAiIywgIiciKTsKLSsgICAgdGVzdF9zdHJpbmcociMiICAi XHV7MUY0MTV9IiAgIiMsICJcdXsxRjQxNX0iKTsKLSsgICAgdGVzdF9zdHJpbmcociMiICAiXHV7 MV8yX18zX30iICAiIywgIlx1ezEyM30iKTsKLSAgICAgdGVzdF9zdHJpbmcoCi0gICAgICAgICAi XCJjb250YWluc1xubmV3bGluZXNcXFxuZXNjYXBlZCBuZXdsaW5lc1wiIiwKLSAgICAgICAgICJj b250YWluc1xubmV3bGluZXNlc2NhcGVkIG5ld2xpbmVzIiwKLUBAIC02NSw3ICs3MCw5IEBAIGZu IHN0cmluZ3MoKSB7Ci0gCi0gI1t0ZXN0XQotIGZuIGJ5dGVfc3RyaW5ncygpIHsKLSsgICAgI1t0 cmFja19jYWxsZXJdCi0gICAgIGZuIHRlc3RfYnl0ZV9zdHJpbmcoczogJnN0ciwgdmFsdWU6ICZb dThdKSB7Ci0rICAgICAgICBsZXQgcyA9IHMudHJpbSgpOwotICAgICAgICAgbWF0Y2ggbGl0KHMp IHsKLSAgICAgICAgICAgICBMaXQ6OkJ5dGVTdHIobGl0KSA9PiB7Ci0gICAgICAgICAgICAgICAg IGFzc2VydF9lcSEobGl0LnZhbHVlKCksIHZhbHVlKTsKLUBAIC03OCwxMyArODUsMTMgQEAgZm4g Ynl0ZV9zdHJpbmdzKCkgewotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIHRlc3RfYnl0ZV9z dHJpbmcoImJcImFcIiIsIGIiYSIpOwotLSAgICB0ZXN0X2J5dGVfc3RyaW5nKCJiXCJcXG5cIiIs IGIiXG4iKTsKLS0gICAgdGVzdF9ieXRlX3N0cmluZygiYlwiXFxyXCIiLCBiIlxyIik7Ci0tICAg IHRlc3RfYnl0ZV9zdHJpbmcoImJcIlxcdFwiIiwgYiJcdCIpOwotLSAgICB0ZXN0X2J5dGVfc3Ry aW5nKCJiXCJcXFwiXCIiLCBiIlwiIik7Ci0tICAgIHRlc3RfYnl0ZV9zdHJpbmcoImJcIidcIiIs IGIiJyIpOwotLSAgICB0ZXN0X2J5dGVfc3RyaW5nKCJiXCJcIiIsIGIiIik7Ci0rICAgIHRlc3Rf Ynl0ZV9zdHJpbmcociMiICBiIiIgICIjLCBiIiIpOwotKyAgICB0ZXN0X2J5dGVfc3RyaW5nKHIj IiAgYiJhIiAgIiMsIGIiYSIpOwotKyAgICB0ZXN0X2J5dGVfc3RyaW5nKHIjIiAgYiJcbiIgICIj LCBiIlxuIik7Ci0rICAgIHRlc3RfYnl0ZV9zdHJpbmcociMiICBiIlxyIiAgIiMsIGIiXHIiKTsK LSsgICAgdGVzdF9ieXRlX3N0cmluZyhyIyIgIGIiXHQiICAiIywgYiJcdCIpOwotKyAgICB0ZXN0 X2J5dGVfc3RyaW5nKHIjIiAgYiJcIiIgICIjLCBiIlwiIik7Ci0rICAgIHRlc3RfYnl0ZV9zdHJp bmcociMiICBiIiciICAiIywgYiInIik7Ci0gICAgIHRlc3RfYnl0ZV9zdHJpbmcoCi0gICAgICAg ICAiYlwiY29udGFpbnNcbm5ld2xpbmVzXFxcbmVzY2FwZWQgbmV3bGluZXNcIiIsCi0gICAgICAg ICBiImNvbnRhaW5zXG5uZXdsaW5lc2VzY2FwZWQgbmV3bGluZXMiLAotQEAgLTk1LDkgKzEwMiw1 MCBAQCBmbiBieXRlX3N0cmluZ3MoKSB7Ci0gICAgIHRlc3RfYnl0ZV9zdHJpbmcoImJyIyNcIi4u LlwiIyNxIiwgYiIuLi4iKTsKLSB9Ci0gCi0rI1t0ZXN0XQotK2ZuIGNfc3RyaW5ncygpIHsKLSsg ICAgI1t0cmFja19jYWxsZXJdCi0rICAgIGZuIHRlc3RfY19zdHJpbmcoczogJnN0ciwgdmFsdWU6 ICZDU3RyKSB7Ci0rICAgICAgICBsZXQgcyA9IHMudHJpbSgpOwotKyAgICAgICAgbWF0Y2ggbGl0 KHMpIHsKLSsgICAgICAgICAgICBMaXQ6OkNTdHIobGl0KSA9PiB7Ci0rICAgICAgICAgICAgICAg IGFzc2VydF9lcSEoKmxpdC52YWx1ZSgpLCAqdmFsdWUpOwotKyAgICAgICAgICAgICAgICBsZXQg YWdhaW4gPSBsaXQuaW50b190b2tlbl9zdHJlYW0oKS50b19zdHJpbmcoKTsKLSsgICAgICAgICAg ICAgICAgaWYgYWdhaW4gIT0gcyB7Ci0rICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nfc3RyaW5n KCZhZ2FpbiwgdmFsdWUpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotKyAg ICAgICAgICAgIHdyb25nID0+IHBhbmljISgiezo/fSIsIHdyb25nKSwKLSsgICAgICAgIH0KLSsg ICAgfQotKwotKyAgICB0ZXN0X2Nfc3RyaW5nKHIjIiAgYyIiICAiIywgYyIiKTsKLSsgICAgdGVz dF9jX3N0cmluZyhyIyIgIGMiYSIgICIjLCBjImEiKTsKLSsgICAgdGVzdF9jX3N0cmluZyhyIyIg IGMiXG4iICAiIywgYyJcbiIpOwotKyAgICB0ZXN0X2Nfc3RyaW5nKHIjIiAgYyJcciIgICIjLCBj IlxyIik7Ci0rICAgIHRlc3RfY19zdHJpbmcociMiICBjIlx0IiAgIiMsIGMiXHQiKTsKLSsgICAg dGVzdF9jX3N0cmluZyhyIyIgIGMiXFwiICAiIywgYyJcXCIpOwotKyAgICB0ZXN0X2Nfc3RyaW5n KHIjIiAgYyJcJyIgICIjLCBjIiciKTsKLSsgICAgdGVzdF9jX3N0cmluZyhyIyIgIGMiXCIiICAi IywgYyJcIiIpOwotKyAgICB0ZXN0X2Nfc3RyaW5nKAotKyAgICAgICAgImNcImNvbnRhaW5zXG5u ZXdsaW5lc1xcXG5lc2NhcGVkIG5ld2xpbmVzXCIiLAotKyAgICAgICAgYyJjb250YWluc1xubmV3 bGluZXNlc2NhcGVkIG5ld2xpbmVzIiwKLSsgICAgKTsKLSsgICAgdGVzdF9jX3N0cmluZygiY3Jc InJhd1xuc3RyaW5nXFxcbmhlcmVcIiIsIGMicmF3XG5zdHJpbmdcXFxuaGVyZSIpOwotKyAgICB0 ZXN0X2Nfc3RyaW5nKCJjXCIuLi5cInEiLCBjIi4uLiIpOwotKyAgICB0ZXN0X2Nfc3RyaW5nKCJj clwiLi4uXCIiLCBjIi4uLiIpOwotKyAgICB0ZXN0X2Nfc3RyaW5nKCJjciMjXCIuLi5cIiMjIiwg YyIuLi4iKTsKLSsgICAgdGVzdF9jX3N0cmluZygKLSsgICAgICAgIHIjIiAgYyJoZWxsb1x4ODDm iJHlj6tcdXsxRjk4MH0iICAiIywgLy8gZnJvbSB0aGUgUkZDCi0rICAgICAgICBjImhlbGxvXHg4 MOaIkeWPq1x1ezFGOTgwfSIsCi0rICAgICk7Ci0rfQotKwotICNbdGVzdF0KLSBmbiBieXRlcygp IHsKLSsgICAgI1t0cmFja19jYWxsZXJdCi0gICAgIGZuIHRlc3RfYnl0ZShzOiAmc3RyLCB2YWx1 ZTogdTgpIHsKLSsgICAgICAgIGxldCBzID0gcy50cmltKCk7Ci0gICAgICAgICBtYXRjaCBsaXQo cykgewotICAgICAgICAgICAgIExpdDo6Qnl0ZShsaXQpID0+IHsKLSAgICAgICAgICAgICAgICAg YXNzZXJ0X2VxIShsaXQudmFsdWUoKSwgdmFsdWUpOwotQEAgLTEwOCwxOCArMTU2LDIwIEBAIGZu IGJ5dGVzKCkgewotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIHRlc3RfYnl0ZSgiYidhJyIs IGInYScpOwotLSAgICB0ZXN0X2J5dGUoImInXFxuJyIsIGInXG4nKTsKLS0gICAgdGVzdF9ieXRl KCJiJ1xcciciLCBiJ1xyJyk7Ci0tICAgIHRlc3RfYnl0ZSgiYidcXHQnIiwgYidcdCcpOwotLSAg ICB0ZXN0X2J5dGUoImInXFwnJyIsIGInXCcnKTsKLS0gICAgdGVzdF9ieXRlKCJiJ1wiJyIsIGIn IicpOwotLSAgICB0ZXN0X2J5dGUoImInYSdxIiwgYidhJyk7Ci0rICAgIHRlc3RfYnl0ZShyIyIg IGInYScgICIjLCBiJ2EnKTsKLSsgICAgdGVzdF9ieXRlKHIjIiAgYidcbicgICIjLCBiJ1xuJyk7 Ci0rICAgIHRlc3RfYnl0ZShyIyIgIGInXHInICAiIywgYidccicpOwotKyAgICB0ZXN0X2J5dGUo ciMiICBiJ1x0JyAgIiMsIGInXHQnKTsKLSsgICAgdGVzdF9ieXRlKHIjIiAgYidcJycgICIjLCBi J1wnJyk7Ci0rICAgIHRlc3RfYnl0ZShyIyIgIGInIicgICIjLCBiJyInKTsKLSsgICAgdGVzdF9i eXRlKHIjIiAgYidhJ3EgICIjLCBiJ2EnKTsKLSB9Ci0gCi0gI1t0ZXN0XQotIGZuIGNoYXJzKCkg ewotKyAgICAjW3RyYWNrX2NhbGxlcl0KLSAgICAgZm4gdGVzdF9jaGFyKHM6ICZzdHIsIHZhbHVl OiBjaGFyKSB7Ci0rICAgICAgICBsZXQgcyA9IHMudHJpbSgpOwotICAgICAgICAgbWF0Y2ggbGl0 KHMpIHsKLSAgICAgICAgICAgICBMaXQ6OkNoYXIobGl0KSA9PiB7Ci0gICAgICAgICAgICAgICAg IGFzc2VydF9lcSEobGl0LnZhbHVlKCksIHZhbHVlKTsKLUBAIC0xMzIsMTkgKzE4MiwyMCBAQCBm biBjaGFycygpIHsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICB0ZXN0X2NoYXIoIidhJyIs ICdhJyk7Ci0tICAgIHRlc3RfY2hhcigiJ1xcbiciLCAnXG4nKTsKLS0gICAgdGVzdF9jaGFyKCIn XFxyJyIsICdccicpOwotLSAgICB0ZXN0X2NoYXIoIidcXHQnIiwgJ1x0Jyk7Ci0tICAgIHRlc3Rf Y2hhcigiJ/CfkJUnIiwgJ/CfkJUnKTsgLy8gTk9URTogVGhpcyBpcyBhbiBlbW9qaQotLSAgICB0 ZXN0X2NoYXIoIidcXCcnIiwgJ1wnJyk7Ci0tICAgIHRlc3RfY2hhcigiJ1wiJyIsICciJyk7Ci0t ICAgIHRlc3RfY2hhcigiJ1xcdXsxRjQxNX0nIiwgJ1x1ezFGNDE1fScpOwotLSAgICB0ZXN0X2No YXIoIidhJ3EiLCAnYScpOwotKyAgICB0ZXN0X2NoYXIociMiICAnYScgICIjLCAnYScpOwotKyAg ICB0ZXN0X2NoYXIociMiICAnXG4nICAiIywgJ1xuJyk7Ci0rICAgIHRlc3RfY2hhcihyIyIgICdc cicgICIjLCAnXHInKTsKLSsgICAgdGVzdF9jaGFyKHIjIiAgJ1x0JyAgIiMsICdcdCcpOwotKyAg ICB0ZXN0X2NoYXIociMiICAn8J+QlScgICIjLCAn8J+QlScpOyAvLyBOT1RFOiBUaGlzIGlzIGFu IGVtb2ppCi0rICAgIHRlc3RfY2hhcihyIyIgICdcJycgICIjLCAnXCcnKTsKLSsgICAgdGVzdF9j aGFyKHIjIiAgJyInICAiIywgJyInKTsKLSsgICAgdGVzdF9jaGFyKHIjIiAgJ1x1ezFGNDE1fScg ICIjLCAnXHV7MUY0MTV9Jyk7Ci0rICAgIHRlc3RfY2hhcihyIyIgICdhJ3EgICIjLCAnYScpOwot IH0KLSAKLSAjW3Rlc3RdCi0gZm4gaW50cygpIHsKLSsgICAgI1t0cmFja19jYWxsZXJdCi0gICAg IGZuIHRlc3RfaW50KHM6ICZzdHIsIHZhbHVlOiB1NjQsIHN1ZmZpeDogJnN0cikgewotICAgICAg ICAgbWF0Y2ggbGl0KHMpIHsKLSAgICAgICAgICAgICBMaXQ6OkludChsaXQpID0+IHsKLUBAIC0x ODUsNiArMjM2LDcgQEAgZm4gaW50cygpIHsKLSAKLSAjW3Rlc3RdCi0gZm4gZmxvYXRzKCkgewot KyAgICAjW3RyYWNrX2NhbGxlcl0KLSAgICAgZm4gdGVzdF9mbG9hdChzOiAmc3RyLCB2YWx1ZTog ZjY0LCBzdWZmaXg6ICZzdHIpIHsKLSAgICAgICAgIG1hdGNoIGxpdChzKSB7Ci0gICAgICAgICAg ICAgTGl0OjpGbG9hdChsaXQpID0+IHsKLUBAIC0yMjQsMTEgKzI3NiwxMyBAQCBmbiBuZWdhdGl2 ZSgpIHsKLSAKLSAjW3Rlc3RdCi0gZm4gc3VmZml4KCkgewotKyAgICAjW3RyYWNrX2NhbGxlcl0K LSAgICAgZm4gZ2V0X3N1ZmZpeCh0b2tlbjogJnN0cikgLT4gU3RyaW5nIHsKLSAgICAgICAgIGxl dCBsaXQgPSBzeW46OnBhcnNlX3N0cjo6PExpdD4odG9rZW4pLnVud3JhcCgpOwotICAgICAgICAg bWF0Y2ggbGl0IHsKLSAgICAgICAgICAgICBMaXQ6OlN0cihsaXQpID0+IGxpdC5zdWZmaXgoKS50 b19vd25lZCgpLAotICAgICAgICAgICAgIExpdDo6Qnl0ZVN0cihsaXQpID0+IGxpdC5zdWZmaXgo KS50b19vd25lZCgpLAotKyAgICAgICAgICAgIExpdDo6Q1N0cihsaXQpID0+IGxpdC5zdWZmaXgo KS50b19vd25lZCgpLAotICAgICAgICAgICAgIExpdDo6Qnl0ZShsaXQpID0+IGxpdC5zdWZmaXgo KS50b19vd25lZCgpLAotICAgICAgICAgICAgIExpdDo6Q2hhcihsaXQpID0+IGxpdC5zdWZmaXgo KS50b19vd25lZCgpLAotICAgICAgICAgICAgIExpdDo6SW50KGxpdCkgPT4gbGl0LnN1ZmZpeCgp LnRvX293bmVkKCksCi1AQCAtMjM5LDkgKzI5MywxMyBAQCBmbiBzdWZmaXgoKSB7Ci0gCi0gICAg IGFzc2VydF9lcSEoZ2V0X3N1ZmZpeCgiXCJcInMiKSwgInMiKTsKLSAgICAgYXNzZXJ0X2VxIShn ZXRfc3VmZml4KCJyXCJcInIiKSwgInIiKTsKLSsgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJy I1wiXCIjciIpLCAiciIpOwotICAgICBhc3NlcnRfZXEhKGdldF9zdWZmaXgoImJcIlwiYiIpLCAi YiIpOwotICAgICBhc3NlcnRfZXEhKGdldF9zdWZmaXgoImJyXCJcImJyIiksICJiciIpOwotLSAg ICBhc3NlcnRfZXEhKGdldF9zdWZmaXgoInIjXCJcIiNyIiksICJyIik7Ci0rICAgIGFzc2VydF9l cSEoZ2V0X3N1ZmZpeCgiYnIjXCJcIiNiciIpLCAiYnIiKTsKLSsgICAgYXNzZXJ0X2VxIShnZXRf c3VmZml4KCJjXCJcImMiKSwgImMiKTsKLSsgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJjclwi XCJjciIpLCAiY3IiKTsKLSsgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJjciNcIlwiI2NyIiks ICJjciIpOwotICAgICBhc3NlcnRfZXEhKGdldF9zdWZmaXgoIidjJ2MiKSwgImMiKTsKLSAgICAg YXNzZXJ0X2VxIShnZXRfc3VmZml4KCJiJ2InYiIpLCAiYiIpOwotICAgICBhc3NlcnRfZXEhKGdl dF9zdWZmaXgoIjFpMzIiKSwgImkzMiIpOwotZGlmZiAtTnVyIGEvdGhpcmRfcGFydHkvcnVzdC9j aHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9idWlsZC5ycyBiL3Ro aXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAu ODEvYnVpbGQucnMKLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3Zl bmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvYnVpbGQucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3Zl bmRvci9wcm9jLW1hY3JvMi0xLjAuODEvYnVpbGQucnMJMjAyNC0wNS0yOSAxODowMjoyNS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0zNiwxMCArMzYsMTAgQEAKLSAKLSB1c2Ugc3RkOjplbnY7Ci0gdXNl IHN0ZDo6ZmZpOjpPc1N0cmluZzsKLSt1c2Ugc3RkOjppdGVyOwotIHVzZSBzdGQ6OnBhdGg6OlBh dGg7Ci0gdXNlIHN0ZDo6cHJvY2Vzczo6e3NlbGYsIENvbW1hbmQsIFN0ZGlvfTsKLSB1c2Ugc3Rk OjpzdHI7Ci0tdXNlIHN0ZDo6dTMyOwotIAotIGZuIG1haW4oKSB7Ci0gICAgIGxldCBydXN0YyA9 IHJ1c3RjX21pbm9yX3ZlcnNpb24oKS51bndyYXBfb3IodTMyOjpNQVgpOwotQEAgLTYzLDYgKzYz LDExIEBACi0gICAgICAgICBwcmludGxuISgiY2FyZ286cnVzdGMtY2ZnPW5vX3NvdXJjZV90ZXh0 Iik7Ci0gICAgIH0KLSAKLSsgICAgaWYgcnVzdGMgPCA3OSB7Ci0rICAgICAgICBwcmludGxuISgi Y2FyZ286cnVzdGMtY2ZnPW5vX2xpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIiKTsKLSsgICAgICAgIHBy aW50bG4hKCJjYXJnbzpydXN0Yy1jZmc9bm9fbGl0ZXJhbF9jX3N0cmluZyIpOwotKyAgICB9Ci0r Ci0gICAgIGlmICFjZmchKGZlYXR1cmUgPSAicHJvYy1tYWNybyIpIHsKLSAgICAgICAgIHByaW50 bG4hKCJjYXJnbzpyZXJ1bi1pZi1jaGFuZ2VkPWJ1aWxkLnJzIik7Ci0gICAgICAgICByZXR1cm47 Ci1AQCAtMTM4LDE1ICsxNDMsMTUgQEAKLSAgICAgbGV0IG91dF9kaXIgPSBjYXJnb19lbnZfdmFy KCJPVVRfRElSIik7Ci0gICAgIGxldCBwcm9iZWZpbGUgPSBQYXRoOjpuZXcoImJ1aWxkIikuam9p bigicHJvYmUucnMiKTsKLSAKLS0gICAgLy8gTWFrZSBzdXJlIHRvIHBpY2sgdXAgQ2FyZ28gcnVz dGMgY29uZmlndXJhdGlvbi4KLS0gICAgbGV0IG11dCBjbWQgPSBpZiBsZXQgU29tZSh3cmFwcGVy KSA9IGVudjo6dmFyX29zKCJSVVNUQ19XUkFQUEVSIikgewotLSAgICAgICAgbGV0IG11dCBjbWQg PSBDb21tYW5kOjpuZXcod3JhcHBlcik7Ci0tICAgICAgICAvLyBUaGUgd3JhcHBlcidzIGZpcnN0 IGFyZ3VtZW50IGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBwYXRoIHRvIHJ1c3RjLgotLSAgICAgICAg Y21kLmFyZyhydXN0Yyk7Ci0tICAgICAgICBjbWQKLS0gICAgfSBlbHNlIHsKLS0gICAgICAgIENv bW1hbmQ6Om5ldyhydXN0YykKLS0gICAgfTsKLSsgICAgbGV0IHJ1c3RjX3dyYXBwZXIgPSBlbnY6 OnZhcl9vcygiUlVTVENfV1JBUFBFUiIpLmZpbHRlcih8d3JhcHBlcnwgIXdyYXBwZXIuaXNfZW1w dHkoKSk7Ci0rICAgIGxldCBydXN0Y193b3Jrc3BhY2Vfd3JhcHBlciA9Ci0rICAgICAgICBlbnY6 OnZhcl9vcygiUlVTVENfV09SS1NQQUNFX1dSQVBQRVIiKS5maWx0ZXIofHdyYXBwZXJ8ICF3cmFw cGVyLmlzX2VtcHR5KCkpOwotKyAgICBsZXQgbXV0IHJ1c3RjID0gcnVzdGNfd3JhcHBlcgotKyAg ICAgICAgLmludG9faXRlcigpCi0rICAgICAgICAuY2hhaW4ocnVzdGNfd29ya3NwYWNlX3dyYXBw ZXIpCi0rICAgICAgICAuY2hhaW4oaXRlcjo6b25jZShydXN0YykpOwotKyAgICBsZXQgbXV0IGNt ZCA9IENvbW1hbmQ6Om5ldyhydXN0Yy5uZXh0KCkudW53cmFwKCkpOwotKyAgICBjbWQuYXJncyhy dXN0Yyk7Ci0gCi0gICAgIGlmICFydXN0Y19ib290c3RyYXAgewotICAgICAgICAgY21kLmVudl9y ZW1vdmUoIlJVU1RDX0JPT1RTVFJBUCIpOwotQEAgLTE1Niw2ICsxNjEsNyBAQAotICAgICAgICAg LmFyZygiLS1lZGl0aW9uPTIwMjEiKQotICAgICAgICAgLmFyZygiLS1jcmF0ZS1uYW1lPXByb2Nf bWFjcm8yIikKLSAgICAgICAgIC5hcmcoIi0tY3JhdGUtdHlwZT1saWIiKQotKyAgICAgICAgLmFy ZygiLS1jYXAtbGludHM9YWxsb3ciKQotICAgICAgICAgLmFyZygiLS1lbWl0PWRlcC1pbmZvLG1l dGFkYXRhIikKLSAgICAgICAgIC5hcmcoIi0tb3V0LWRpciIpCi0gICAgICAgICAuYXJnKG91dF9k aXIpCi1kaWZmIC1OdXIgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5k b3IvcHJvYy1tYWNybzItMS4wLjc4L3NyYy9mYWxsYmFjay5ycyBiL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODEvc3JjL2ZhbGxiYWNr LnJzCi0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJv Yy1tYWNybzItMS4wLjc4L3NyYy9mYWxsYmFjay5ycwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAw MDAwMCArMDIwMAotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVu ZG9yL3Byb2MtbWFjcm8yLTEuMC44MS9zcmMvZmFsbGJhY2sucnMJMjAyNC0wNS0yOSAxODowMjoy NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNSw3ICsxNSw5IEBACi0gdXNlIGNvcmU6Om9wczo6UmFu Z2U7Ci0gdXNlIGNvcmU6Om9wczo6UmFuZ2VCb3VuZHM7Ci0gdXNlIGNvcmU6OnB0cjsKLS11c2Ug Y29yZTo6c3RyOjpGcm9tU3RyOwotK3VzZSBjb3JlOjpzdHI6OntzZWxmLCBGcm9tU3RyfTsKLSt1 c2Ugc3RkOjpmZmk6OkNTdHI7Ci0rI1tjZmcocHJvY21hY3JvMl9zZW12ZXJfZXhlbXB0KV0KLSB1 c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOwotIAotIC8vLyBGb3JjZSB1c2Ugb2YgcHJvYy1tYWNybzIn cyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQVBJIGZvciBub3csIGV2ZW4KLUBAIC0y OTcsMTEgKzI5OSwxMyBAQAotICAgICB9Ci0gfQotIAotKyNbY2ZnKHByb2NtYWNybzJfc2VtdmVy X2V4ZW1wdCldCi0gI1tkZXJpdmUoQ2xvbmUsIFBhcnRpYWxFcSwgRXEpXQotIHB1YihjcmF0ZSkg c3RydWN0IFNvdXJjZUZpbGUgewotICAgICBwYXRoOiBQYXRoQnVmLAotIH0KLSAKLSsjW2NmZyhw cm9jbWFjcm8yX3NlbXZlcl9leGVtcHQpXQotIGltcGwgU291cmNlRmlsZSB7Ci0gICAgIC8vLyBH ZXQgdGhlIHBhdGggdG8gdGhpcyBzb3VyY2UgZmlsZSBhcyBhIHN0cmluZy4KLSAgICAgcHViIGZu IHBhdGgoJnNlbGYpIC0+IFBhdGhCdWYgewotQEAgLTMxMyw2ICszMTcsNyBAQAotICAgICB9Ci0g fQotIAotKyNbY2ZnKHByb2NtYWNybzJfc2VtdmVyX2V4ZW1wdCldCi0gaW1wbCBEZWJ1ZyBmb3Ig U291cmNlRmlsZSB7Ci0gICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBmbXQ6OkZvcm1hdHRlcikg LT4gZm10OjpSZXN1bHQgewotICAgICAgICAgZi5kZWJ1Z19zdHJ1Y3QoIlNvdXJjZUZpbGUiKQot QEAgLTkyMiw3ICs5MjcsNyBAQAotIAotICNbZGVyaXZlKENsb25lKV0KLSBwdWIoY3JhdGUpIHN0 cnVjdCBMaXRlcmFsIHsKLS0gICAgcmVwcjogU3RyaW5nLAotKyAgICBwdWIoY3JhdGUpIHJlcHI6 IFN0cmluZywKLSAgICAgc3BhbjogU3BhbiwKLSB9Ci0gCi1AQCAtMTAwMyw3MSArMTAwOCw5OCBA QAotICAgICAgICAgTGl0ZXJhbDo6X25ldyhzKQotICAgICB9Ci0gCi0tICAgIHB1YiBmbiBzdHJp bmcodDogJnN0cikgLT4gTGl0ZXJhbCB7Ci0tICAgICAgICBsZXQgbXV0IHJlcHIgPSBTdHJpbmc6 OndpdGhfY2FwYWNpdHkodC5sZW4oKSArIDIpOwotKyAgICBwdWIgZm4gc3RyaW5nKHN0cmluZzog JnN0cikgLT4gTGl0ZXJhbCB7Ci0rICAgICAgICBsZXQgbXV0IHJlcHIgPSBTdHJpbmc6OndpdGhf Y2FwYWNpdHkoc3RyaW5nLmxlbigpICsgMik7Ci0gICAgICAgICByZXByLnB1c2goJyInKTsKLS0g ICAgICAgIGxldCBtdXQgY2hhcnMgPSB0LmNoYXJzKCk7Ci0tICAgICAgICB3aGlsZSBsZXQgU29t ZShjaCkgPSBjaGFycy5uZXh0KCkgewotLSAgICAgICAgICAgIGlmIGNoID09ICdcMCcgewotLSAg ICAgICAgICAgICAgICByZXByLnB1c2hfc3RyKAotLSAgICAgICAgICAgICAgICAgICAgaWYgY2hh cnMKLS0gICAgICAgICAgICAgICAgICAgICAgICAuYXNfc3RyKCkKLS0gICAgICAgICAgICAgICAg ICAgICAgICAuc3RhcnRzX3dpdGgofG5leHR8ICcwJyA8PSBuZXh0ICYmIG5leHQgPD0gJzcnKQot LSAgICAgICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1 bXZlbnQgY2xpcHB5OjpvY3RhbF9lc2NhcGVzIGxpbnQKLS0gICAgICAgICAgICAgICAgICAgICAg ICAiXFx4MDAiCi0tICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAg ICAgICAgICAgICJcXDAiCi0tICAgICAgICAgICAgICAgICAgICB9LAotLSAgICAgICAgICAgICAg ICApOwotLSAgICAgICAgICAgIH0gZWxzZSBpZiBjaCA9PSAnXCcnIHsKLS0gICAgICAgICAgICAg ICAgLy8gZXNjYXBlX2RlYnVnIHR1cm5zIHRoaXMgaW50byAiXCciIHdoaWNoIGlzIHVubmVjZXNz YXJ5LgotLSAgICAgICAgICAgICAgICByZXByLnB1c2goY2gpOwotLSAgICAgICAgICAgIH0gZWxz ZSB7Ci0tICAgICAgICAgICAgICAgIHJlcHIuZXh0ZW5kKGNoLmVzY2FwZV9kZWJ1ZygpKTsKLS0g ICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0rICAgICAgICBlc2NhcGVfdXRmOChzdHJpbmcsICZt dXQgcmVwcik7Ci0gICAgICAgICByZXByLnB1c2goJyInKTsKLSAgICAgICAgIExpdGVyYWw6Ol9u ZXcocmVwcikKLSAgICAgfQotIAotLSAgICBwdWIgZm4gY2hhcmFjdGVyKHQ6IGNoYXIpIC0+IExp dGVyYWwgewotKyAgICBwdWIgZm4gY2hhcmFjdGVyKGNoOiBjaGFyKSAtPiBMaXRlcmFsIHsKLSAg ICAgICAgIGxldCBtdXQgcmVwciA9IFN0cmluZzo6bmV3KCk7Ci0gICAgICAgICByZXByLnB1c2go J1wnJyk7Ci0tICAgICAgICBpZiB0ID09ICciJyB7Ci0rICAgICAgICBpZiBjaCA9PSAnIicgewot ICAgICAgICAgICAgIC8vIGVzY2FwZV9kZWJ1ZyB0dXJucyB0aGlzIGludG8gJ1wiJyB3aGljaCBp cyB1bm5lY2Vzc2FyeS4KLS0gICAgICAgICAgICByZXByLnB1c2godCk7Ci0rICAgICAgICAgICAg cmVwci5wdXNoKGNoKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgcmVwci5leHRl bmQodC5lc2NhcGVfZGVidWcoKSk7Ci0rICAgICAgICAgICAgcmVwci5leHRlbmQoY2guZXNjYXBl X2RlYnVnKCkpOwotKyAgICAgICAgfQotKyAgICAgICAgcmVwci5wdXNoKCdcJycpOwotKyAgICAg ICAgTGl0ZXJhbDo6X25ldyhyZXByKQotKyAgICB9Ci0rCi0rICAgIHB1YiBmbiBieXRlX2NoYXJh Y3RlcihieXRlOiB1OCkgLT4gTGl0ZXJhbCB7Ci0rICAgICAgICBsZXQgbXV0IHJlcHIgPSAiYici LnRvX3N0cmluZygpOwotKyAgICAgICAgI1thbGxvdyhjbGlwcHk6Om1hdGNoX292ZXJsYXBwaW5n X2FybSldCi0rICAgICAgICBtYXRjaCBieXRlIHsKLSsgICAgICAgICAgICBiJ1wwJyA9PiByZXBy LnB1c2hfc3RyKHIiXDAiKSwKLSsgICAgICAgICAgICBiJ1x0JyA9PiByZXByLnB1c2hfc3RyKHIi XHQiKSwKLSsgICAgICAgICAgICBiJ1xuJyA9PiByZXByLnB1c2hfc3RyKHIiXG4iKSwKLSsgICAg ICAgICAgICBiJ1xyJyA9PiByZXByLnB1c2hfc3RyKHIiXHIiKSwKLSsgICAgICAgICAgICBiJ1wn JyA9PiByZXByLnB1c2hfc3RyKHIiXCciKSwKLSsgICAgICAgICAgICBiJ1xcJyA9PiByZXByLnB1 c2hfc3RyKHIiXFwiKSwKLSsgICAgICAgICAgICBiJ1x4MjAnLi49YidceDdFJyA9PiByZXByLnB1 c2goYnl0ZSBhcyBjaGFyKSwKLSsgICAgICAgICAgICBfID0+IHsKLSsgICAgICAgICAgICAgICAg bGV0IF8gPSB3cml0ZSEocmVwciwgciJceHs6MDJYfSIsIGJ5dGUpOwotKyAgICAgICAgICAgIH0K LSAgICAgICAgIH0KLSAgICAgICAgIHJlcHIucHVzaCgnXCcnKTsKLSAgICAgICAgIExpdGVyYWw6 Ol9uZXcocmVwcikKLSAgICAgfQotIAotICAgICBwdWIgZm4gYnl0ZV9zdHJpbmcoYnl0ZXM6ICZb dThdKSAtPiBMaXRlcmFsIHsKLS0gICAgICAgIGxldCBtdXQgZXNjYXBlZCA9ICJiXCIiLnRvX3N0 cmluZygpOwotKyAgICAgICAgbGV0IG11dCByZXByID0gImJcIiIudG9fc3RyaW5nKCk7Ci0gICAg ICAgICBsZXQgbXV0IGJ5dGVzID0gYnl0ZXMuaXRlcigpOwotICAgICAgICAgd2hpbGUgbGV0IFNv bWUoJmIpID0gYnl0ZXMubmV4dCgpIHsKLSAgICAgICAgICAgICAjW2FsbG93KGNsaXBweTo6bWF0 Y2hfb3ZlcmxhcHBpbmdfYXJtKV0KLSAgICAgICAgICAgICBtYXRjaCBiIHsKLS0gICAgICAgICAg ICAgICAgYidcMCcgPT4gZXNjYXBlZC5wdXNoX3N0cihtYXRjaCBieXRlcy5hc19zbGljZSgpLmZp cnN0KCkgewotKyAgICAgICAgICAgICAgICBiJ1wwJyA9PiByZXByLnB1c2hfc3RyKG1hdGNoIGJ5 dGVzLmFzX3NsaWNlKCkuZmlyc3QoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBjaXJjdW12 ZW50IGNsaXBweTo6b2N0YWxfZXNjYXBlcyBsaW50Ci0gICAgICAgICAgICAgICAgICAgICBTb21l KGInMCcuLj1iJzcnKSA9PiByIlx4MDAiLAotICAgICAgICAgICAgICAgICAgICAgXyA9PiByIlww IiwKLSAgICAgICAgICAgICAgICAgfSksCi0tICAgICAgICAgICAgICAgIGInXHQnID0+IGVzY2Fw ZWQucHVzaF9zdHIociJcdCIpLAotLSAgICAgICAgICAgICAgICBiJ1xuJyA9PiBlc2NhcGVkLnB1 c2hfc3RyKHIiXG4iKSwKLS0gICAgICAgICAgICAgICAgYidccicgPT4gZXNjYXBlZC5wdXNoX3N0 cihyIlxyIiksCi0tICAgICAgICAgICAgICAgIGInIicgPT4gZXNjYXBlZC5wdXNoX3N0cigiXFxc IiIpLAotLSAgICAgICAgICAgICAgICBiJ1xcJyA9PiBlc2NhcGVkLnB1c2hfc3RyKCJcXFxcIiks Ci0tICAgICAgICAgICAgICAgIGInXHgyMCcuLj1iJ1x4N0UnID0+IGVzY2FwZWQucHVzaChiIGFz IGNoYXIpLAotKyAgICAgICAgICAgICAgICBiJ1x0JyA9PiByZXByLnB1c2hfc3RyKHIiXHQiKSwK LSsgICAgICAgICAgICAgICAgYidcbicgPT4gcmVwci5wdXNoX3N0cihyIlxuIiksCi0rICAgICAg ICAgICAgICAgIGInXHInID0+IHJlcHIucHVzaF9zdHIociJcciIpLAotKyAgICAgICAgICAgICAg ICBiJyInID0+IHJlcHIucHVzaF9zdHIoIlxcXCIiKSwKLSsgICAgICAgICAgICAgICAgYidcXCcg PT4gcmVwci5wdXNoX3N0cihyIlxcIiksCi0rICAgICAgICAgICAgICAgIGInXHgyMCcuLj1iJ1x4 N0UnID0+IHJlcHIucHVzaChiIGFzIGNoYXIpLAotICAgICAgICAgICAgICAgICBfID0+IHsKLS0g ICAgICAgICAgICAgICAgICAgIGxldCBfID0gd3JpdGUhKGVzY2FwZWQsICJcXHh7OjAyWH0iLCBi KTsKLSsgICAgICAgICAgICAgICAgICAgIGxldCBfID0gd3JpdGUhKHJlcHIsIHIiXHh7OjAyWH0i LCBiKTsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0g ICAgICAgIGVzY2FwZWQucHVzaCgnIicpOwotLSAgICAgICAgTGl0ZXJhbDo6X25ldyhlc2NhcGVk KQotKyAgICAgICAgcmVwci5wdXNoKCciJyk7Ci0rICAgICAgICBMaXRlcmFsOjpfbmV3KHJlcHIp Ci0rICAgIH0KLSsKLSsgICAgcHViIGZuIGNfc3RyaW5nKHN0cmluZzogJkNTdHIpIC0+IExpdGVy YWwgewotKyAgICAgICAgbGV0IG11dCByZXByID0gImNcIiIudG9fc3RyaW5nKCk7Ci0rICAgICAg ICBsZXQgbXV0IGJ5dGVzID0gc3RyaW5nLnRvX2J5dGVzKCk7Ci0rICAgICAgICB3aGlsZSAhYnl0 ZXMuaXNfZW1wdHkoKSB7Ci0rICAgICAgICAgICAgbGV0ICh2YWxpZCwgaW52YWxpZCkgPSBtYXRj aCBzdHI6OmZyb21fdXRmOChieXRlcykgewotKyAgICAgICAgICAgICAgICBPayhhbGxfdmFsaWQp ID0+IHsKLSsgICAgICAgICAgICAgICAgICAgIGJ5dGVzID0gYiIiOwotKyAgICAgICAgICAgICAg ICAgICAgKGFsbF92YWxpZCwgYnl0ZXMpCi0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICAgICAgRXJyKHV0ZjhfZXJyb3IpID0+IHsKLSsgICAgICAgICAgICAgICAgICAgIGxldCAodmFs aWQsIHJlc3QpID0gYnl0ZXMuc3BsaXRfYXQodXRmOF9lcnJvci52YWxpZF91cF90bygpKTsKLSsg ICAgICAgICAgICAgICAgICAgIGxldCB2YWxpZCA9IHN0cjo6ZnJvbV91dGY4KHZhbGlkKS51bndy YXAoKTsKLSsgICAgICAgICAgICAgICAgICAgIGxldCBpbnZhbGlkID0gdXRmOF9lcnJvcgotKyAg ICAgICAgICAgICAgICAgICAgICAgIC5lcnJvcl9sZW4oKQotKyAgICAgICAgICAgICAgICAgICAg ICAgIC5tYXBfb3IocmVzdCwgfGVycm9yX2xlbnwgJnJlc3RbLi5lcnJvcl9sZW5dKTsKLSsgICAg ICAgICAgICAgICAgICAgIGJ5dGVzID0gJmJ5dGVzW3ZhbGlkLmxlbigpICsgaW52YWxpZC5sZW4o KS4uXTsKLSsgICAgICAgICAgICAgICAgICAgICh2YWxpZCwgaW52YWxpZCkKLSsgICAgICAgICAg ICAgICAgfQotKyAgICAgICAgICAgIH07Ci0rICAgICAgICAgICAgZXNjYXBlX3V0ZjgodmFsaWQs ICZtdXQgcmVwcik7Ci0rICAgICAgICAgICAgZm9yICZieXRlIGluIGludmFsaWQgewotKyAgICAg ICAgICAgICAgICBsZXQgXyA9IHdyaXRlIShyZXByLCByIlx4ezowMlh9IiwgYnl0ZSk7Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgICAgcmVwci5wdXNoKCciJyk7Ci0rICAgICAg ICBMaXRlcmFsOjpfbmV3KHJlcHIpCi0gICAgIH0KLSAKLSAgICAgcHViIGZuIHNwYW4oJnNlbGYp IC0+IFNwYW4gewotQEAgLTExNjgsMyArMTIwMCwyNyBAQAotICAgICAgICAgZGVidWcuZmluaXNo KCkKLSAgICAgfQotIH0KLSsKLStmbiBlc2NhcGVfdXRmOChzdHJpbmc6ICZzdHIsIHJlcHI6ICZt dXQgU3RyaW5nKSB7Ci0rICAgIGxldCBtdXQgY2hhcnMgPSBzdHJpbmcuY2hhcnMoKTsKLSsgICAg d2hpbGUgbGV0IFNvbWUoY2gpID0gY2hhcnMubmV4dCgpIHsKLSsgICAgICAgIGlmIGNoID09ICdc MCcgewotKyAgICAgICAgICAgIHJlcHIucHVzaF9zdHIoCi0rICAgICAgICAgICAgICAgIGlmIGNo YXJzCi0rICAgICAgICAgICAgICAgICAgICAuYXNfc3RyKCkKLSsgICAgICAgICAgICAgICAgICAg IC5zdGFydHNfd2l0aCh8bmV4dHwgJzAnIDw9IG5leHQgJiYgbmV4dCA8PSAnNycpCi0rICAgICAg ICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1bXZlbnQgY2xpcHB5Ojpv Y3RhbF9lc2NhcGVzIGxpbnQKLSsgICAgICAgICAgICAgICAgICAgIHIiXHgwMCIKLSsgICAgICAg ICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIHIiXDAiCi0rICAgICAgICAg ICAgICAgIH0sCi0rICAgICAgICAgICAgKTsKLSsgICAgICAgIH0gZWxzZSBpZiBjaCA9PSAnXCcn IHsKLSsgICAgICAgICAgICAvLyBlc2NhcGVfZGVidWcgdHVybnMgdGhpcyBpbnRvICJcJyIgd2hp Y2ggaXMgdW5uZWNlc3NhcnkuCi0rICAgICAgICAgICAgcmVwci5wdXNoKGNoKTsKLSsgICAgICAg IH0gZWxzZSB7Ci0rICAgICAgICAgICAgcmVwci5leHRlbmQoY2guZXNjYXBlX2RlYnVnKCkpOwot KyAgICAgICAgfQotKyAgICB9Ci0rfQotZGlmZiAtTnVyIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMvbGliLnJzIGIvdGhp cmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44 MS9zcmMvbGliLnJzCi0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92 ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3NyYy9saWIucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lv L3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODEvc3JjL2xpYi5ycwkyMDI0LTA1LTI5IDE4OjAyOjI1 LjAwMDAwMDAwMCArMDIwMAotQEAgLTg2LDcgKzg2LDcgQEAKLSAvLyEgYSBkaWZmZXJlbnQgdGhy ZWFkLgotIAotIC8vIFByb2MtbWFjcm8yIHR5cGVzIGluIHJ1c3Rkb2Mgb2Ygb3RoZXIgY3JhdGVz IGdldCBsaW5rZWQgdG8gaGVyZS4KLS0jIVtkb2MoaHRtbF9yb290X3VybCA9ICJodHRwczovL2Rv Y3MucnMvcHJvYy1tYWNybzIvMS4wLjc4IildCi0rIyFbZG9jKGh0bWxfcm9vdF91cmwgPSAiaHR0 cHM6Ly9kb2NzLnJzL3Byb2MtbWFjcm8yLzEuMC44MSIpXQotICMhW2NmZ19hdHRyKGFueShwcm9j X21hY3JvX3NwYW4sIHN1cGVyX3Vuc3RhYmxlKSwgZmVhdHVyZShwcm9jX21hY3JvX3NwYW4pKV0K LSAjIVtjZmdfYXR0cihzdXBlcl91bnN0YWJsZSwgZmVhdHVyZShwcm9jX21hY3JvX2RlZl9zaXRl KSldCi0gIyFbY2ZnX2F0dHIoZG9jX2NmZywgZmVhdHVyZShkb2NfY2ZnKSldCi1AQCAtOTYsNiAr OTYsNyBAQAotICAgICBjbGlwcHk6OmNhc3RfcG9zc2libGVfdHJ1bmNhdGlvbiwKLSAgICAgY2xp cHB5OjpjaGVja2VkX2NvbnZlcnNpb25zLAotICAgICBjbGlwcHk6OmRvY19tYXJrZG93biwKLSsg ICAgY2xpcHB5OjppbmNvbXBhdGlibGVfbXNydiwKLSAgICAgY2xpcHB5OjppdGVtc19hZnRlcl9z dGF0ZW1lbnRzLAotICAgICBjbGlwcHk6Oml0ZXJfd2l0aG91dF9pbnRvX2l0ZXIsCi0gICAgIGNs aXBweTo6bGV0X3VuZGVyc2NvcmVfdW50eXBlZCwKLUBAIC0xNjksNiArMTcwLDcgQEAKLSB1c2Ug Y29yZTo6b3BzOjpSYW5nZUJvdW5kczsKLSB1c2UgY29yZTo6c3RyOjpGcm9tU3RyOwotIHVzZSBz dGQ6OmVycm9yOjpFcnJvcjsKLSt1c2Ugc3RkOjpmZmk6OkNTdHI7Ci0gI1tjZmcocHJvY21hY3Jv Ml9zZW12ZXJfZXhlbXB0KV0KLSB1c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOwotIAotQEAgLTY3Niwx MiArNjc4LDEyIEBACi0gICAgIEJyYWNlLAotICAgICAvLy8gYFsgLi4uIF1gCi0gICAgIEJyYWNr ZXQsCi0tICAgIC8vLyBgw5ggLi4uIMOYYAotKyAgICAvLy8gYOKIhSAuLi4g4oiFYAotICAgICAv Ly8KLS0gICAgLy8vIEFuIGltcGxpY2l0IGRlbGltaXRlciwgdGhhdCBtYXksIGZvciBleGFtcGxl LCBhcHBlYXIgYXJvdW5kIHRva2VucwotKyAgICAvLy8gQW4gaW52aXNpYmxlIGRlbGltaXRlciwg dGhhdCBtYXksIGZvciBleGFtcGxlLCBhcHBlYXIgYXJvdW5kIHRva2VucwotICAgICAvLy8gY29t aW5nIGZyb20gYSAibWFjcm8gdmFyaWFibGUiIGAkdmFyYC4gSXQgaXMgaW1wb3J0YW50IHRvIHBy ZXNlcnZlCi0gICAgIC8vLyBvcGVyYXRvciBwcmlvcml0aWVzIGluIGNhc2VzIGxpa2UgYCR2YXIg KiAzYCB3aGVyZSBgJHZhcmAgaXMgYDEgKyAyYC4KLS0gICAgLy8vIEltcGxpY2l0IGRlbGltaXRl cnMgbWF5IG5vdCBzdXJ2aXZlIHJvdW5kdHJpcCBvZiBhIHRva2VuIHN0cmVhbSB0aHJvdWdoCi0r ICAgIC8vLyBJbnZpc2libGUgZGVsaW1pdGVycyBtYXkgbm90IHN1cnZpdmUgcm91bmR0cmlwIG9m IGEgdG9rZW4gc3RyZWFtIHRocm91Z2gKLSAgICAgLy8vIGEgc3RyaW5nLgotICAgICBOb25lLAot IH0KLUBAIC0xMjMzLDkgKzEyMzUsMTkgQEAKLSAgICAgICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpM aXRlcmFsOjpjaGFyYWN0ZXIoY2gpKQotICAgICB9Ci0gCi0rICAgIC8vLyBCeXRlIGNoYXJhY3Rl ciBsaXRlcmFsLgotKyAgICBwdWIgZm4gYnl0ZV9jaGFyYWN0ZXIoYnl0ZTogdTgpIC0+IExpdGVy YWwgewotKyAgICAgICAgTGl0ZXJhbDo6X25ldyhpbXA6OkxpdGVyYWw6OmJ5dGVfY2hhcmFjdGVy KGJ5dGUpKQotKyAgICB9Ci0rCi0gICAgIC8vLyBCeXRlIHN0cmluZyBsaXRlcmFsLgotLSAgICBw dWIgZm4gYnl0ZV9zdHJpbmcoczogJlt1OF0pIC0+IExpdGVyYWwgewotLSAgICAgICAgTGl0ZXJh bDo6X25ldyhpbXA6OkxpdGVyYWw6OmJ5dGVfc3RyaW5nKHMpKQotKyAgICBwdWIgZm4gYnl0ZV9z dHJpbmcoYnl0ZXM6ICZbdThdKSAtPiBMaXRlcmFsIHsKLSsgICAgICAgIExpdGVyYWw6Ol9uZXco aW1wOjpMaXRlcmFsOjpieXRlX3N0cmluZyhieXRlcykpCi0rICAgIH0KLSsKLSsgICAgLy8vIEMg c3RyaW5nIGxpdGVyYWwuCi0rICAgIHB1YiBmbiBjX3N0cmluZyhzdHJpbmc6ICZDU3RyKSAtPiBM aXRlcmFsIHsKLSsgICAgICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpjX3N0cmluZyhz dHJpbmcpKQotICAgICB9Ci0gCi0gICAgIC8vLyBSZXR1cm5zIHRoZSBzcGFuIGVuY29tcGFzc2lu ZyB0aGlzIGxpdGVyYWwuCi1kaWZmIC1OdXIgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2Ny YXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3NyYy93cmFwcGVyLnJzIGIvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MS9z cmMvd3JhcHBlci5ycwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMvd3JhcHBlci5ycwkyMDI0LTA0LTEwIDIzOjI1 OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0 ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MS9zcmMvd3JhcHBlci5ycwkyMDI0LTA1LTI5 IDE4OjAyOjI1LjAwMDAwMDAwMCArMDIwMAotQEAgLTcsNiArNyw3IEBACi0gdXNlIGNvcmU6Om9w czo6UmFuZ2U7Ci0gdXNlIGNvcmU6Om9wczo6UmFuZ2VCb3VuZHM7Ci0gdXNlIGNvcmU6OnN0cjo6 RnJvbVN0cjsKLSt1c2Ugc3RkOjpmZmk6OkNTdHI7Ci0gdXNlIHN0ZDo6cGFuaWM7Ci0gI1tjZmco c3VwZXJfdW5zdGFibGUpXQotIHVzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7Ci1AQCAtODQ2LDE5ICs4 NDcsMzggQEAKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBwdWIgZm4gc3RyaW5nKHQ6ICZz dHIpIC0+IExpdGVyYWwgewotKyAgICBwdWIgZm4gc3RyaW5nKHN0cmluZzogJnN0cikgLT4gTGl0 ZXJhbCB7Ci0gICAgICAgICBpZiBpbnNpZGVfcHJvY19tYWNybygpIHsKLS0gICAgICAgICAgICBM aXRlcmFsOjpDb21waWxlcihwcm9jX21hY3JvOjpMaXRlcmFsOjpzdHJpbmcodCkpCi0rICAgICAg ICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIocHJvY19tYWNybzo6TGl0ZXJhbDo6c3RyaW5nKHN0cmlu ZykpCi0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIExpdGVyYWw6OkZhbGxiYWNrKGZh bGxiYWNrOjpMaXRlcmFsOjpzdHJpbmcodCkpCi0rICAgICAgICAgICAgTGl0ZXJhbDo6RmFsbGJh Y2soZmFsbGJhY2s6OkxpdGVyYWw6OnN0cmluZyhzdHJpbmcpKQotICAgICAgICAgfQotICAgICB9 Ci0gCi0tICAgIHB1YiBmbiBjaGFyYWN0ZXIodDogY2hhcikgLT4gTGl0ZXJhbCB7Ci0rICAgIHB1 YiBmbiBjaGFyYWN0ZXIoY2g6IGNoYXIpIC0+IExpdGVyYWwgewotICAgICAgICAgaWYgaW5zaWRl X3Byb2NfbWFjcm8oKSB7Ci0tICAgICAgICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIocHJvY19tYWNy bzo6TGl0ZXJhbDo6Y2hhcmFjdGVyKHQpKQotKyAgICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVy KHByb2NfbWFjcm86OkxpdGVyYWw6OmNoYXJhY3RlcihjaCkpCi0gICAgICAgICB9IGVsc2Ugewot LSAgICAgICAgICAgIExpdGVyYWw6OkZhbGxiYWNrKGZhbGxiYWNrOjpMaXRlcmFsOjpjaGFyYWN0 ZXIodCkpCi0rICAgICAgICAgICAgTGl0ZXJhbDo6RmFsbGJhY2soZmFsbGJhY2s6OkxpdGVyYWw6 OmNoYXJhY3RlcihjaCkpCi0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgcHViIGZuIGJ5dGVf Y2hhcmFjdGVyKGJ5dGU6IHU4KSAtPiBMaXRlcmFsIHsKLSsgICAgICAgIGlmIGluc2lkZV9wcm9j X21hY3JvKCkgewotKyAgICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVyKHsKLSsgICAgICAgICAg ICAgICAgI1tjZmcobm90KG5vX2xpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIpKV0KLSsgICAgICAgICAg ICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgcHJvY19tYWNybzo6TGl0ZXJhbDo6Ynl0ZV9j aGFyYWN0ZXIoYnl0ZSkKLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICAj W2NmZyhub19saXRlcmFsX2J5dGVfY2hhcmFjdGVyKV0KLSsgICAgICAgICAgICAgICAgewotKyAg ICAgICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZmFsbGJhY2s6OkxpdGVyYWw6OmJ5dGVf Y2hhcmFjdGVyKGJ5dGUpOwotKyAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2sucmVwci5wYXJz ZTo6PHByb2NfbWFjcm86OkxpdGVyYWw+KCkudW53cmFwKCkKLSsgICAgICAgICAgICAgICAgfQot KyAgICAgICAgICAgIH0pCi0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIExpdGVyYWw6 OkZhbGxiYWNrKGZhbGxiYWNrOjpMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihieXRlKSkKLSAgICAg ICAgIH0KLSAgICAgfQotIAotQEAgLTg3MCw2ICs4OTAsMjUgQEAKLSAgICAgICAgIH0KLSAgICAg fQotIAotKyAgICBwdWIgZm4gY19zdHJpbmcoc3RyaW5nOiAmQ1N0cikgLT4gTGl0ZXJhbCB7Ci0r ICAgICAgICBpZiBpbnNpZGVfcHJvY19tYWNybygpIHsKLSsgICAgICAgICAgICBMaXRlcmFsOjpD b21waWxlcih7Ci0rICAgICAgICAgICAgICAgICNbY2ZnKG5vdChub19saXRlcmFsX2Nfc3RyaW5n KSldCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIHByb2NfbWFjcm86 OkxpdGVyYWw6OmNfc3RyaW5nKHN0cmluZykKLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAg ICAgICAgICAgICAjW2NmZyhub19saXRlcmFsX2Nfc3RyaW5nKV0KLSsgICAgICAgICAgICAgICAg ewotKyAgICAgICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZmFsbGJhY2s6OkxpdGVyYWw6 OmNfc3RyaW5nKHN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICBmYWxsYmFjay5yZXByLnBh cnNlOjo8cHJvY19tYWNybzo6TGl0ZXJhbD4oKS51bndyYXAoKQotKyAgICAgICAgICAgICAgICB9 Ci0rICAgICAgICAgICAgfSkKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgTGl0ZXJh bDo6RmFsbGJhY2soZmFsbGJhY2s6OkxpdGVyYWw6OmNfc3RyaW5nKHN0cmluZykpCi0rICAgICAg ICB9Ci0rICAgIH0KLSsKLSAgICAgcHViIGZuIHNwYW4oJnNlbGYpIC0+IFNwYW4gewotICAgICAg ICAgbWF0Y2ggc2VsZiB7Ci0gICAgICAgICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIobGl0KSA9PiBT cGFuOjpDb21waWxlcihsaXQuc3BhbigpKSwKLWRpZmYgLU51ciBhL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMvbWFya2Vy LnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFj cm8yLTEuMC44MS90ZXN0cy9tYXJrZXIucnMKLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21p dW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMvbWFya2VyLnJzCTIw MjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgYi90aGlyZF9wYXJ0eS9ydXN0 L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgxL3Rlc3RzL21hcmtl ci5ycwkyMDI0LTA1LTI5IDE4OjAyOjI1LjAwMDAwMDAwMCArMDIwMAotQEAgLTIxLDYgKzIxLDcg QEAKLSAgICAgICAgICAgICAkKAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg ICAgICAvLyBJbXBsZW1lbnRlZCBmb3IgdHlwZXMgdGhhdCBpbXBsZW1lbnQgJG1hcmtlci4KLSsg ICAgICAgICAgICAgICAgICAgICNbYWxsb3coZGVhZF9jb2RlKV0KLSAgICAgICAgICAgICAgICAg ICAgIHRyYWl0IElzTm90SW1wbGVtZW50ZWQgewotICAgICAgICAgICAgICAgICAgICAgICAgIGZu IGFzc2VydF9ub3RfaW1wbGVtZW50ZWQoKSB7fQotICAgICAgICAgICAgICAgICAgICAgfQotZGlm ZiAtTnVyIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2Mt bWFjcm8yLTEuMC43OC90ZXN0cy90ZXN0LnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MS90ZXN0cy90ZXN0LnJzCi0tLS0gYS90 aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4w Ljc4L3Rlc3RzL3Rlc3QucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3Jv Mi0xLjAuODEvdGVzdHMvdGVzdC5ycwkyMDI0LTA1LTI5IDE4OjAyOjI1LjAwMDAwMDAwMCArMDIw MAotQEAgLTEsMTEgKzEsMTQgQEAKLSAjIVthbGxvdygKLSAgICAgY2xpcHB5Ojphc3NlcnRpb25z X29uX3Jlc3VsdF9zdGF0ZXMsCi0gICAgIGNsaXBweTo6aXRlbXNfYWZ0ZXJfc3RhdGVtZW50cywK LSsgICAgY2xpcHB5OjpuZWVkbGVzc19wYXNzX2J5X3ZhbHVlLAotKyAgICBjbGlwcHk6Om5lZWRs ZXNzX3Jhd19zdHJpbmdfaGFzaGVzLAotICAgICBjbGlwcHk6Om5vbl9hc2NpaV9saXRlcmFsLAot ICAgICBjbGlwcHk6Om9jdGFsX2VzY2FwZXMKLSApXQotIAotIHVzZSBwcm9jX21hY3JvMjo6e0lk ZW50LCBMaXRlcmFsLCBQdW5jdCwgU3BhY2luZywgU3BhbiwgVG9rZW5TdHJlYW0sIFRva2VuVHJl ZX07Ci0rdXNlIHN0ZDo6ZmZpOjpDU3RyOwotIHVzZSBzdGQ6Oml0ZXI7Ci0gdXNlIHN0ZDo6c3Ry Ojp7c2VsZiwgRnJvbVN0cn07Ci0gCi1AQCAtOTYsMTIgKzk5LDIyIEBACi0gCi0gI1t0ZXN0XQot IGZuIGxpdGVyYWxfc3RyaW5nKCkgewotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnN0cmluZygi Zm9vIikudG9fc3RyaW5nKCksICJcImZvb1wiIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6 c3RyaW5nKCJcIiIpLnRvX3N0cmluZygpLCAiXCJcXFwiXCIiKTsKLS0gICAgYXNzZXJ0X2VxIShM aXRlcmFsOjpzdHJpbmcoImRpZG4ndCIpLnRvX3N0cmluZygpLCAiXCJkaWRuJ3RcIiIpOwotLSAg ICBhc3NlcnRfZXEhKAotLSAgICAgICAgTGl0ZXJhbDo6c3RyaW5nKCJhXDAwYlwwN2NcMDhkXDBl XDAiKS50b19zdHJpbmcoKSwKLS0gICAgICAgICJcImFcXHgwMDBiXFx4MDA3Y1xcMDhkXFwwZVxc MFwiIiwKLSsgICAgI1t0cmFja19jYWxsZXJdCi0rICAgIGZuIGFzc2VydChsaXRlcmFsOiBMaXRl cmFsLCBleHBlY3RlZDogJnN0cikgewotKyAgICAgICAgYXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0 cmluZygpLCBleHBlY3RlZC50cmltKCkpOwotKyAgICB9Ci0rCi0rICAgIGFzc2VydChMaXRlcmFs OjpzdHJpbmcoIiIpLCByIyIgICIiICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpzdHJpbmco ImFBIiksIHIjIiAgImFBIiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCJcdCIp LCByIyIgICJcdCIgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygi4p2kIiksIHIj IiAgIuKdpCIgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygiJyIpLCByIyIgICIn IiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCJcIiIpLCByIyIgICJcIiIgICIj KTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygiXDAiKSwgciMiICAiXDAiICAiIyk7Ci0r ICAgIGFzc2VydChMaXRlcmFsOjpzdHJpbmcoIlx1ezF9IiksIHIjIiAgIlx1ezF9IiAgIiMpOwot KyAgICBhc3NlcnQoCi0rICAgICAgICBMaXRlcmFsOjpzdHJpbmcoImFcMDBiXDA3Y1wwOGRcMGVc MCIpLAotKyAgICAgICAgciMiICAiYVx4MDAwYlx4MDA3Y1wwOGRcMGVcMCIgICIjLAotICAgICAp OwotIAotICAgICAiXCJcXFxyXG4gICAgeFwiIi5wYXJzZTo6PFRva2VuU3RyZWFtPigpLnVud3Jh cCgpOwotQEAgLTEzMywxNSArMTQ2LDQyIEBACi0gfQotIAotICNbdGVzdF0KLStmbiBsaXRlcmFs X2J5dGVfY2hhcmFjdGVyKCkgewotKyAgICAjW3RyYWNrX2NhbGxlcl0KLSsgICAgZm4gYXNzZXJ0 KGxpdGVyYWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7Ci0rICAgICAgICBhc3NlcnRfZXEh KGxpdGVyYWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7Ci0rICAgIH0KLSsKLSsgICAg YXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInYScpLCByIyIgIGInYScgICIjKTsKLSsg ICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInXDAnKSwgciMiICBiJ1wwJyAgIiMp OwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidcdCcpLCByIyIgIGInXHQn ICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihiJ1xuJyksIHIjIiAg YidcbicgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInXHInKSwg ciMiICBiJ1xyJyAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidc JycpLCByIyIgIGInXCcnICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX2NoYXJhY3Rl cihiJ1xcJyksIHIjIiAgYidcXCcgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hh cmFjdGVyKGInXHgxZicpLCByIyIgIGInXHgxRicgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6 OmJ5dGVfY2hhcmFjdGVyKGInIicpLCByIyIgIGInIicgICIjKTsKLSt9Ci0rCi0rI1t0ZXN0XQot IGZuIGxpdGVyYWxfYnl0ZV9zdHJpbmcoKSB7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6Ynl0 ZV9zdHJpbmcoYiIiKS50b19zdHJpbmcoKSwgImJcIlwiIik7Ci0tICAgIGFzc2VydF9lcSEoCi0t ICAgICAgICBMaXRlcmFsOjpieXRlX3N0cmluZyhiIlwwXHRcblxyXCJcXDJceDEwIikudG9fc3Ry aW5nKCksCi0tICAgICAgICAiYlwiXFwwXFx0XFxuXFxyXFxcIlxcXFwyXFx4MTBcIiIsCi0tICAg ICk7Ci0tICAgIGFzc2VydF9lcSEoCi0tICAgICAgICBMaXRlcmFsOjpieXRlX3N0cmluZyhiImFc MDBiXDA3Y1wwOGRcMGVcMCIpLnRvX3N0cmluZygpLAotLSAgICAgICAgImJcImFcXHgwMDBiXFx4 MDA3Y1xcMDhkXFwwZVxcMFwiIiwKLSsgICAgI1t0cmFja19jYWxsZXJdCi0rICAgIGZuIGFzc2Vy dChsaXRlcmFsOiBMaXRlcmFsLCBleHBlY3RlZDogJnN0cikgewotKyAgICAgICAgYXNzZXJ0X2Vx IShsaXRlcmFsLnRvX3N0cmluZygpLCBleHBlY3RlZC50cmltKCkpOwotKyAgICB9Ci0rCi0rICAg IGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIiIpLCByIyIgIGIiIiAgIiMpOwotKyAgICBh c3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcMCIpLCByIyIgIGIiXDAiICAiIyk7Ci0rICAg IGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlx0IiksIHIjIiAgYiJcdCIgICIjKTsKLSsg ICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXG4iKSwgciMiICBiIlxuIiAgIiMpOwot KyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcciIpLCByIyIgIGIiXHIiICAiIyk7 Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlwiIiksIHIjIiAgYiJcIiIgICIj KTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXFwiKSwgciMiICBiIlxcIiAg IiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJceDFmIiksIHIjIiAgYiJc eDFGIiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiInIiksIHIjIiAg YiInIiAgIiMpOwotKyAgICBhc3NlcnQoCi0rICAgICAgICBMaXRlcmFsOjpieXRlX3N0cmluZyhi ImFcMDBiXDA3Y1wwOGRcMGVcMCIpLAotKyAgICAgICAgciMiICBiImFceDAwMGJceDAwN2NcMDhk XDBlXDAiICAiIywKLSAgICAgKTsKLSAKLSAgICAgImJcIlxcXHJcbiAgICB4XCIiLnBhcnNlOjo8 VG9rZW5TdHJlYW0+KCkudW53cmFwKCk7Ci1AQCAtMTUyLDYgKzE5Miw0MSBAQAotIAotICNbdGVz dF0KLSBmbiBsaXRlcmFsX2Nfc3RyaW5nKCkgewotKyAgICAjW3RyYWNrX2NhbGxlcl0KLSsgICAg Zm4gYXNzZXJ0KGxpdGVyYWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7Ci0rICAgICAgICBh c3NlcnRfZXEhKGxpdGVyYWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7Ci0rICAgIH0K LSsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmNfc3RyaW5nKDwmQ1N0cj46OmRlZmF1bHQoKSksIHIj IiAgYyIiICAiIyk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENT dHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJhQVwwIikudW53cmFwKCkpLAotKyAgICAgICAgciMi ICBjImFBIiAgIiMsCi0rICAgICk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExpdGVyYWw6OmNf c3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJhQVwwIikudW53cmFwKCkpLAotKyAg ICAgICAgciMiICBjImFBIiAgIiMsCi0rICAgICk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExp dGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJcdFwwIikudW53cmFw KCkpLAotKyAgICAgICAgciMiICBjIlx0IiAgIiMsCi0rICAgICk7Ci0rICAgIGFzc2VydCgKLSsg ICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJceEUy XHg5RFx4QTRcMCIpLnVud3JhcCgpKSwKLSsgICAgICAgIHIjIiAgYyLinaQiICAiIywKLSsgICAg KTsKLSsgICAgYXNzZXJ0KAotKyAgICAgICAgTGl0ZXJhbDo6Y19zdHJpbmcoQ1N0cjo6ZnJvbV9i eXRlc193aXRoX251bChiIidcMCIpLnVud3JhcCgpKSwKLSsgICAgICAgIHIjIiAgYyInIiAgIiMs Ci0rICAgICk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6 OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJcIlwwIikudW53cmFwKCkpLAotKyAgICAgICAgciMiICBj IlwiIiAgIiMsCi0rICAgICk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExpdGVyYWw6OmNfc3Ry aW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJceDdGXHhGRlx4RkVceENDXHhCM1wwIiku dW53cmFwKCkpLAotKyAgICAgICAgciMiICBjIlx1ezdmfVx4RkZceEZFXHV7MzMzfSIgICIjLAot KyAgICApOwotKwotICAgICBsZXQgc3RyaW5ncyA9IHIjIyMiCi0gICAgICAgICBjImhlbGxvXHg4 MOaIkeWPq1x1ezFGOTgwfSIgIC8vIGZyb20gdGhlIFJGQwotICAgICAgICAgY3IiXCIKLUBAIC0x ODgsNDkgKzI2Myw4MCBAQAotIAotICNbdGVzdF0KLSBmbiBsaXRlcmFsX2NoYXJhY3RlcigpIHsK LS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpjaGFyYWN0ZXIoJ3gnKS50b19zdHJpbmcoKSwgIid4 JyIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmNoYXJhY3RlcignXCcnKS50b19zdHJpbmco KSwgIidcXCcnIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6Y2hhcmFjdGVyKCciJykudG9f c3RyaW5nKCksICInXCInIik7Ci0rICAgICNbdHJhY2tfY2FsbGVyXQotKyAgICBmbiBhc3NlcnQo bGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKLSsgICAgICAgIGFzc2VydF9lcSEo bGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQudHJpbSgpKTsKLSsgICAgfQotKwotKyAgICBh c3NlcnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdhJyksIHIjIiAgJ2EnICAiIyk7Ci0rICAgIGFzc2Vy dChMaXRlcmFsOjpjaGFyYWN0ZXIoJ1x0JyksIHIjIiAgJ1x0JyAgIiMpOwotKyAgICBhc3NlcnQo TGl0ZXJhbDo6Y2hhcmFjdGVyKCfinaQnKSwgciMiICAn4p2kJyAgIiMpOwotKyAgICBhc3NlcnQo TGl0ZXJhbDo6Y2hhcmFjdGVyKCdcJycpLCByIyIgICdcJycgICIjKTsKLSsgICAgYXNzZXJ0KExp dGVyYWw6OmNoYXJhY3RlcignIicpLCByIyIgICciJyAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJh bDo6Y2hhcmFjdGVyKCdcMCcpLCByIyIgICdcMCcgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6 OmNoYXJhY3RlcignXHV7MX0nKSwgciMiICAnXHV7MX0nICAiIyk7Ci0gfQotIAotICNbdGVzdF0K LSBmbiBsaXRlcmFsX2ludGVnZXIoKSB7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dThfc3Vm Zml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTB1OCIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6 OnUxNl9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHUxNiIpOwotLSAgICBhc3NlcnRfZXEh KExpdGVyYWw6OnUzMl9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHUzMiIpOwotLSAgICBh c3NlcnRfZXEhKExpdGVyYWw6OnU2NF9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHU2NCIp OwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnUxMjhfc3VmZml4ZWQoMTApLnRvX3N0cmluZygp LCAiMTB1MTI4Iik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dXNpemVfc3VmZml4ZWQoMTAp LnRvX3N0cmluZygpLCAiMTB1c2l6ZSIpOwotLQotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6Omk4 X3N1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwaTgiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRl cmFsOjppMTZfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpMTYiKTsKLS0gICAgYXNzZXJ0 X2VxIShMaXRlcmFsOjppMzJfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpMzIiKTsKLS0g ICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppNjRfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBp NjQiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMTI4X3N1ZmZpeGVkKDEwKS50b19zdHJp bmcoKSwgIjEwaTEyOCIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmlzaXplX3N1ZmZpeGVk KDEwKS50b19zdHJpbmcoKSwgIjEwaXNpemUiKTsKLS0KLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFs Ojp1OF91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7Ci0tICAgIGFzc2VydF9lcSEo TGl0ZXJhbDo6dTE2X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKLS0gICAgYXNz ZXJ0X2VxIShMaXRlcmFsOjp1MzJfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOwot LSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnU2NF91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwg IjEwIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dTEyOF91bnN1ZmZpeGVkKDEwKS50b19z dHJpbmcoKSwgIjEwIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dXNpemVfdW5zdWZmaXhl ZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOwotLQotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6Omk4 X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRl cmFsOjppMTZfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOwotLSAgICBhc3NlcnRf ZXEhKExpdGVyYWw6OmkzMl91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7Ci0tICAg IGFzc2VydF9lcSEoTGl0ZXJhbDo6aTY0X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAi KTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMTI4X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmlu ZygpLCAiMTAiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppc2l6ZV91bnN1ZmZpeGVkKDEw KS50b19zdHJpbmcoKSwgIjEwIik7Ci0rICAgICNbdHJhY2tfY2FsbGVyXQotKyAgICBmbiBhc3Nl cnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKLSsgICAgICAgIGFzc2VydF9l cSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQpOwotKyAgICB9Ci0rCi0rICAgIGFzc2Vy dChMaXRlcmFsOjp1OF9zdWZmaXhlZCgxMCksICIxMHU4Iik7Ci0rICAgIGFzc2VydChMaXRlcmFs Ojp1MTZfc3VmZml4ZWQoMTApLCAiMTB1MTYiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnUzMl9z dWZmaXhlZCgxMCksICIxMHUzMiIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6dTY0X3N1ZmZpeGVk KDEwKSwgIjEwdTY0Iik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjp1MTI4X3N1ZmZpeGVkKDEwKSwg IjEwdTEyOCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6dXNpemVfc3VmZml4ZWQoMTApLCAiMTB1 c2l6ZSIpOwotKwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6aThfc3VmZml4ZWQoMTApLCAiMTBpOCIp OwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTE2X3N1ZmZpeGVkKDEwKSwgIjEwaTE2Iik7Ci0rICAg IGFzc2VydChMaXRlcmFsOjppMzJfc3VmZml4ZWQoMTApLCAiMTBpMzIiKTsKLSsgICAgYXNzZXJ0 KExpdGVyYWw6Omk2NF9zdWZmaXhlZCgxMCksICIxMGk2NCIpOwotKyAgICBhc3NlcnQoTGl0ZXJh bDo6aTEyOF9zdWZmaXhlZCgxMCksICIxMGkxMjgiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6Omlz aXplX3N1ZmZpeGVkKDEwKSwgIjEwaXNpemUiKTsKLSsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnU4 X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnUxNl91bnN1ZmZp eGVkKDEwKSwgIjEwIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjp1MzJfdW5zdWZmaXhlZCgxMCks ICIxMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6dTY0X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsK LSsgICAgYXNzZXJ0KExpdGVyYWw6OnUxMjhfdW5zdWZmaXhlZCgxMCksICIxMCIpOwotKyAgICBh c3NlcnQoTGl0ZXJhbDo6dXNpemVfdW5zdWZmaXhlZCgxMCksICIxMCIpOwotKwotKyAgICBhc3Nl cnQoTGl0ZXJhbDo6aThfdW5zdWZmaXhlZCgxMCksICIxMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJh bDo6aTE2X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmkzMl91 bnN1ZmZpeGVkKDEwKSwgIjEwIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjppNjRfdW5zdWZmaXhl ZCgxMCksICIxMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTEyOF91bnN1ZmZpeGVkKDEwKSwg IjEwIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjppc2l6ZV91bnN1ZmZpeGVkKDEwKSwgIjEwIik7 Ci0rCi0rICAgIGFzc2VydChMaXRlcmFsOjppMzJfc3VmZml4ZWQoLTEwKSwgIi0xMGkzMiIpOwot KyAgICBhc3NlcnQoTGl0ZXJhbDo6aTMyX3Vuc3VmZml4ZWQoLTEwKSwgIi0xMCIpOwotIH0KLSAK LSAjW3Rlc3RdCi0gZm4gbGl0ZXJhbF9mbG9hdCgpIHsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFs OjpmMzJfc3VmZml4ZWQoMTAuMCkudG9fc3RyaW5nKCksICIxMGYzMiIpOwotLSAgICBhc3NlcnRf ZXEhKExpdGVyYWw6OmY2NF9zdWZmaXhlZCgxMC4wKS50b19zdHJpbmcoKSwgIjEwZjY0Iik7Ci0t Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6ZjMyX3Vuc3VmZml4ZWQoMTAuMCkudG9fc3RyaW5n KCksICIxMC4wIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6ZjY0X3Vuc3VmZml4ZWQoMTAu MCkudG9fc3RyaW5nKCksICIxMC4wIik7Ci0rICAgICNbdHJhY2tfY2FsbGVyXQotKyAgICBmbiBh c3NlcnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKLSsgICAgICAgIGFzc2Vy dF9lcSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQpOwotKyAgICB9Ci0rCi0rICAgIGFz c2VydChMaXRlcmFsOjpmMzJfc3VmZml4ZWQoMTAuMCksICIxMGYzMiIpOwotKyAgICBhc3NlcnQo TGl0ZXJhbDo6ZjMyX3N1ZmZpeGVkKC0xMC4wKSwgIi0xMGYzMiIpOwotKyAgICBhc3NlcnQoTGl0 ZXJhbDo6ZjY0X3N1ZmZpeGVkKDEwLjApLCAiMTBmNjQiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6 OmY2NF9zdWZmaXhlZCgtMTAuMCksICItMTBmNjQiKTsKLSsKLSsgICAgYXNzZXJ0KExpdGVyYWw6 OmYzMl91bnN1ZmZpeGVkKDEwLjApLCAiMTAuMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6ZjMy X3Vuc3VmZml4ZWQoLTEwLjApLCAiLTEwLjAiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmY2NF91 bnN1ZmZpeGVkKDEwLjApLCAiMTAuMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6ZjY0X3Vuc3Vm Zml4ZWQoLTEwLjApLCAiLTEwLjAiKTsKLSsKLSsgICAgYXNzZXJ0KAotKyAgICAgICAgTGl0ZXJh bDo6ZjY0X3Vuc3VmZml4ZWQoMWUxMDApLAotKyAgICAgICAgIjEwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLjAiLAotKyAgICApOwotIH0KLSAKLSAjW3Rlc3RdCi1A QCAtMjQ4LDkgKzM1NCwxMyBAQAotICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCIxLl9tIiks IDMpOwotICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJcIlwicyIpLCAxKTsKLSAgICAgYXNz ZXJ0X2VxISh0b2tlbl9jb3VudCgiclwiXCJyIiksIDEpOwotKyAgICBhc3NlcnRfZXEhKHRva2Vu X2NvdW50KCJyI1wiXCIjciIpLCAxKTsKLSAgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiYlwi XCJiIiksIDEpOwotICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJiclwiXCJiciIpLCAxKTsK LS0gICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiciNcIlwiI3IiKSwgMSk7Ci0rICAgIGFzc2Vy dF9lcSEodG9rZW5fY291bnQoImJyI1wiXCIjYnIiKSwgMSk7Ci0rICAgIGFzc2VydF9lcSEodG9r ZW5fY291bnQoImNcIlwiYyIpLCAxKTsKLSsgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiY3Jc IlwiY3IiKSwgMSk7Ci0rICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImNyI1wiXCIjY3IiKSwg MSk7Ci0gICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoIidjJ2MiKSwgMSk7Ci0gICAgIGFzc2Vy dF9lcSEodG9rZW5fY291bnQoImInYidiIiksIDEpOwotICAgICBhc3NlcnRfZXEhKHRva2VuX2Nv dW50KCIwRSIpLCAxKTsKLUBAIC0zNzgsNyArNDg4LDcgQEAKLSAgICAgcm91bmR0cmlwKCInYSIp OwotICAgICByb3VuZHRyaXAoIidfIik7Ci0gICAgIHJvdW5kdHJpcCgiJ3N0YXRpYyIpOwotLSAg ICByb3VuZHRyaXAoIidcXHV7MTBfX0ZGRkZ9JyIpOwotKyAgICByb3VuZHRyaXAociInXHV7MTBf X0ZGRkZ9JyIpOwotICAgICByb3VuZHRyaXAoIlwiXFx1ezEwX0YwRkZfX31mb29cXHV7MV8wXzBf MF9ffVwiIik7Ci0gfQotIAotQEAgLTQwMSw2ICs1MTEsNyBAQAotICAgICBmYWlsKCJcIlxcXHIg IFwiIik7IC8vIGJhY2tzbGFzaCBjYXJyaWFnZSByZXR1cm4KLSAgICAgZmFpbCgiJ2FhJ2FhIik7 Ci0gICAgIGZhaWwoImJyIyNcIlwiIyIpOwotKyAgICBmYWlsKCJjciMjXCJcIiMiKTsKLSAgICAg ZmFpbCgiXCJcXFxuXHV7ODV9XHJcIiIpOwotIH0KLSAKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0x MjYtZWw3LXN0ZF92YXJpYW50LnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1zdGRfdmFyaWFudC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM3NWJmYy4uMDAwMDAwMAotLS0g YS9jaHJvbWl1bS0xMjYtZWw3LXN0ZF92YXJpYW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs OTYgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zp c2l0ZWRfdXJsX3JhbmtpbmcvaW50ZXJuYWwvdmlzaXRlZF91cmxfcmFua2luZ19zZXJ2aWNlX2lt cGwuY2Muc3RkX3ZhcmlhbnQgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zpc2l0 ZWRfdXJsX3JhbmtpbmcvaW50ZXJuYWwvdmlzaXRlZF91cmxfcmFua2luZ19zZXJ2aWNlX2ltcGwu Y2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFu a2luZy9pbnRlcm5hbC92aXNpdGVkX3VybF9yYW5raW5nX3NlcnZpY2VfaW1wbC5jYy5zdGRfdmFy aWFudAkyMDI0LTA2LTA0IDEyOjMxOjEwLjYwMjI4MjgxMyArMDIwMAotKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL2ludGVybmFsL3Zpc2l0 ZWRfdXJsX3Jhbmtpbmdfc2VydmljZV9pbXBsLmNjCTIwMjQtMDYtMDQgMTM6MjE6NTAuMTIxMzQ1 MTgzICswMjAwCi1AQCAtNyw3ICs3LDYgQEAKLSAjaW5jbHVkZSA8bWFwPgotICNpbmNsdWRlIDxt ZW1vcnk+Ci0gI2luY2x1ZGUgPHF1ZXVlPgotLSNpbmNsdWRlIDx2YXJpYW50PgotICNpbmNsdWRl IDx2ZWN0b3I+Ci0gCi0gI2luY2x1ZGUgImJhc2UvYmFycmllcl9jYWxsYmFjay5oIgotQEAgLTQx LDIwICs0MCwxNiBAQCBzdGQ6OnZlY3RvcjxVUkxWaXNpdEFnZ3JlZ2F0ZT4gQ29tcHV0ZVVSCi0g ICAgIGZvciAoc3RkOjpwYWlyPGNvbnN0IFVSTE1lcmdlS2V5LCBVUkxWaXNpdEFnZ3JlZ2F0ZTo6 VVJMVmlzaXRWYXJpYW50PiYKLSAgICAgICAgICAgICAgdXJsX2RhdGEgOiByZXN1bHQuZGF0YSkg ewotICAgICAgIFVSTFZpc2l0QWdncmVnYXRlJiBhZ2dyZWdhdGUgPSB1cmxfdmlzaXRfbWFwW3Vy bF9kYXRhLmZpcnN0XTsKLS0gICAgICBzdGQ6OnZpc2l0KAotLSAgICAgICAgICBVUkxWaXNpdFZh cmlhbnRIZWxwZXJ7Ci0tICAgICAgICAgICAgICBbJmFnZ3JlZ2F0ZV0oVVJMVmlzaXRBZ2dyZWdh dGU6OlRhYkRhdGEmIHRhYl9kYXRhKSB7Ci0tICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZS5mZXRj aGVyX2RhdGFfbWFwLmVtcGxhY2UoCi0tICAgICAgICAgICAgICAgICAgICB0YWJfZGF0YS5sYXN0 X2FjdGl2ZV90YWIuc2Vzc2lvbl9uYW1lLmhhc192YWx1ZSgpCi0tICAgICAgICAgICAgICAgICAg ICAgICAgPyBGZXRjaGVyOjprU2Vzc2lvbgotLSAgICAgICAgICAgICAgICAgICAgICAgIDogRmV0 Y2hlcjo6a1RhYk1vZGVsLAotLSAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHRhYl9kYXRh KSk7Ci0tICAgICAgICAgICAgICB9LAotLSAgICAgICAgICAgICAgWyZhZ2dyZWdhdGVdKFVSTFZp c2l0QWdncmVnYXRlOjpIaXN0b3J5RGF0YSYgaGlzdG9yeV9kYXRhKSB7Ci0tICAgICAgICAgICAg ICAgIGFnZ3JlZ2F0ZS5mZXRjaGVyX2RhdGFfbWFwLmVtcGxhY2UoRmV0Y2hlcjo6a0hpc3Rvcnks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk Ojptb3ZlKGhpc3RvcnlfZGF0YSkpOwotLSAgICAgICAgICAgICAgfX0sCi0tICAgICAgICAgIHVy bF9kYXRhLnNlY29uZCk7Ci0rICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VVJMVmlz aXRBZ2dyZWdhdGU6OlRhYkRhdGE+KHVybF9kYXRhLnNlY29uZCkpIHsKLSsgICAgICAgIGF1dG8m IHRhYl9kYXRhID0gc3RkOjpnZXQ8VVJMVmlzaXRBZ2dyZWdhdGU6OlRhYkRhdGE+KHVybF9kYXRh LnNlY29uZCk7Ci0rICAgICAgICBhZ2dyZWdhdGUuZmV0Y2hlcl9kYXRhX21hcC5lbXBsYWNlKAot KyAgICAgICAgICAgIHRhYl9kYXRhLmxhc3RfYWN0aXZlX3RhYi5zZXNzaW9uX25hbWUuaGFzX3Zh bHVlKCkKLSsgICAgICAgICAgICAgICAgPyBGZXRjaGVyOjprU2Vzc2lvbgotKyAgICAgICAgICAg ICAgICA6IEZldGNoZXI6OmtUYWJNb2RlbCwKLSsgICAgICAgICAgICBzdGQ6Om1vdmUodGFiX2Rh dGEpKTsKLSsgICAgICB9Ci0rICAgICAgLy8gVE9ETyhjcmJ1Zy5jb20vMzMwNTgwMTA5KTogQWRk IHN1cHBvcnQgZm9yIGhpc3RvcnkgZmV0Y2hlciBhbmQKLSsgICAgICAvLyBhc3NvY2lhdGVkIGFn Z3JlZ2F0ZSBkYXRhIHR5cGUuCi0gICAgIH0KLSAgIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL3B1YmxpYy91cmxfdmlz aXQuY2Muc3RkX3ZhcmlhbnQgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zpc2l0 ZWRfdXJsX3JhbmtpbmcvcHVibGljL3VybF92aXNpdC5jYwotLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL3B1YmxpYy91cmxfdmlzaXQuY2Mu c3RkX3ZhcmlhbnQJMjAyNC0wNi0wNCAxMjoyOToyMC41OTMyNDA0OTUgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFua2luZy9wdWJsaWMv dXJsX3Zpc2l0LmNjCTIwMjQtMDYtMDQgMTI6Mjk6NTcuMjUzOTIxOTc5ICswMjAwCi1AQCAtMzcs MTQgKzM3LDEyIEBAIFVSTFZpc2l0QWdncmVnYXRlJiBVUkxWaXNpdEFnZ3JlZ2F0ZTo6b3AKLSBz dGQ6OnNldDxjb25zdCBHVVJMKj4gVVJMVmlzaXRBZ2dyZWdhdGU6OkdldEFzc29jaWF0ZWRVUkxz KCkgY29uc3QgewotICAgc3RkOjpzZXQ8Y29uc3QgR1VSTCo+IHVybHMgPSB7fTsKLSAgIGZvciAo Y29uc3QgYXV0byYgZmV0Y2hlcl9lbnRyeSA6IGZldGNoZXJfZGF0YV9tYXApIHsKLS0gICAgc3Rk Ojp2aXNpdChVUkxWaXNpdFZhcmlhbnRIZWxwZXJ7Ci0tICAgICAgICAgICAgICAgICAgIFsmdXJs c10oY29uc3QgVVJMVmlzaXRBZ2dyZWdhdGU6OlRhYkRhdGEmIHRhYl9kYXRhKSB7Ci0tICAgICAg ICAgICAgICAgICAgICAgdXJscy5pbnNlcnQoJnRhYl9kYXRhLmxhc3RfYWN0aXZlX3RhYi52aXNp dC51cmwpOwotLSAgICAgICAgICAgICAgICAgICB9LAotLSAgICAgICAgICAgICAgICAgICBbJnVy bHNdKGNvbnN0IFVSTFZpc2l0QWdncmVnYXRlOjpIaXN0b3J5RGF0YSYgaGlzdG9yeV9kYXRhKSB7 Ci0tICAgICAgICAgICAgICAgICAgICAgdXJscy5pbnNlcnQoJmhpc3RvcnlfZGF0YS5sYXN0X3Zp c2l0ZWQudXJsX3Jvdy51cmwoKSk7Ci0tICAgICAgICAgICAgICAgICAgIH19LAotLSAgICAgICAg ICAgICAgIGZldGNoZXJfZW50cnkuc2Vjb25kKTsKLSsgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu YXRpdmU8VVJMVmlzaXRBZ2dyZWdhdGU6OlRhYkRhdGE+KAotKyAgICAgICAgICAgIGZldGNoZXJf ZW50cnkuc2Vjb25kKSkgewotKyAgICAgIGNvbnN0IGF1dG8mIHRhYl9kYXRhID0KLSsgICAgICAg ICAgc3RkOjpnZXQ8VVJMVmlzaXRBZ2dyZWdhdGU6OlRhYkRhdGE+KGZldGNoZXJfZW50cnkuc2Vj b25kKTsKLSsgICAgICB1cmxzLmluc2VydCgmdGFiX2RhdGEubGFzdF9hY3RpdmVfdGFiLnZpc2l0 LnVybCk7Ci0rICAgIH0KLSAgIH0KLSAgIHJldHVybiB1cmxzOwotIH0KLWRpZmYgLXVwIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL3B1YmxpYy91 cmxfdmlzaXQuaC5zdGRfdmFyaWFudCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMv dmlzaXRlZF91cmxfcmFua2luZy9wdWJsaWMvdXJsX3Zpc2l0LmgKLS0tLSBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFua2luZy9wdWJsaWMvdXJsX3Zpc2l0 Lmguc3RkX3ZhcmlhbnQJMjAyNC0wNi0wNCAxMTowNTozOS41MDU4NDcyNDEgKzAyMDAKLSsrKyBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFua2luZy9wdWJs aWMvdXJsX3Zpc2l0LmgJMjAyNC0wNi0wNCAxMzoyMjoyNi41MTgwMDc3NDggKzAyMDAKLUBAIC04 LDYgKzgsNyBAQAotICNpbmNsdWRlIDxtZW1vcnk+Ci0gI2luY2x1ZGUgPG9wdGlvbmFsPgotICNp bmNsdWRlIDxzZXQ+Ci0rI2luY2x1ZGUgPHZhcmlhbnQ+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAK LSAjaW5jbHVkZSAiYmFzZS9mdW5jdGlvbmFsL2NhbGxiYWNrLmgiCi1AQCAtMTQwLDE4ICsxNDEs NiBAQCBzdHJ1Y3QgVVJMVmlzaXRBZ2dyZWdhdGUgewotICAgYm9vbCBib29rbWFya2VkID0gZmFs c2U7Ci0gfTsKLSAKLS0vLyBIZWxwZXIgdG8gdmlzaXQgZWFjaCB2YXJpYW50IG9mIFVSTFZpc2l0 VmFyaWFudC4KLS0vLyBVc2FnZToKLS0vLyAgIHN0ZDo6dmlzaXQoVVJMVmlzaXRWYXJpYW50SGVs cGVyewotLS8vICAgICAgICAgW10oVmFyaWFudDEmIHZhcmlhbnQxKSB7fSwKLS0vLyAgICAgICAg IFtdKFZhcmlhbnQyJiB2YXJpYW50MSkge30sCi0tLy8gICAgICAgICBbXShWYXJpYW50MyYgdmFy aWFudDEpIHt9LAotLS8vICAgICAgdmFyaWFudF9kYXRhKTsKLS10ZW1wbGF0ZSA8Y2xhc3MuLi4g VHM+Ci0tc3RydWN0IFVSTFZpc2l0VmFyaWFudEhlbHBlciA6IFRzLi4uIHsKLS0gIHVzaW5nIFRz OjpvcGVyYXRvcigpLi4uOwotLX07Ci0tCi0gfSAgLy8gbmFtZXNwYWNlIHZpc2l0ZWRfdXJsX3Jh bmtpbmcKLSAKLSAjZW5kaWYgIC8vIENPTVBPTkVOVFNfVklTSVRFRF9VUkxfUkFOS0lOR19QVUJM SUNfVVJMX1ZJU0lUX0hfCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI2LWVsNy1zdGRmb3JtYXQu cGF0Y2ggYi9jaHJvbWl1bS0xMjYtZWw3LXN0ZGZvcm1hdC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggODBhMmRhOC4uMDAwMDAwMAotLS0gYS9jaHJvbWl1bS0xMjYtZWw3LXN0 ZGZvcm1hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWRpZmYgLXVwIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL3JlbmRlcmVyL2FjY2Vzc2liaWxpdHkvcmVhZF9h bnl0aGluZ19hcHBfbW9kZWwuY2Muc3RkZm9ybWF0IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hy b21lL3JlbmRlcmVyL2FjY2Vzc2liaWxpdHkvcmVhZF9hbnl0aGluZ19hcHBfbW9kZWwuY2MKLS0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9yZW5kZXJlci9hY2Nlc3NpYmlsaXR5L3Jl YWRfYW55dGhpbmdfYXBwX21vZGVsLmNjLnN0ZGZvcm1hdAkyMDI0LTA2LTAzIDIyOjUyOjE4LjU5 NjkzNjc2NyArMDIwMAotKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL3JlbmRlcmVy L2FjY2Vzc2liaWxpdHkvcmVhZF9hbnl0aGluZ19hcHBfbW9kZWwuY2MJMjAyNC0wNi0wMyAyMzoy Njo0Ni4wMjQ3MzQ0NTMgKzAyMDAKLUBAIC0xMDU5LDcgKzEwNTksNyBAQCBzdGQ6OnN0cmluZyBS ZWFkQW55dGhpbmdBcHBNb2RlbDo6R2V0SHRtCi0gICAgIGludDMyX3QgaGllcmFyY2hpY2FsX2xl dmVsID0KLSAgICAgICAgIGF4X25vZGUtPkdldEludEF0dHJpYnV0ZShheDo6bW9qb206OkludEF0 dHJpYnV0ZTo6a0hpZXJhcmNoaWNhbExldmVsKTsKLSAgICAgaWYgKGhpZXJhcmNoaWNhbF9sZXZl bCkgewotLSAgICAgIHJldHVybiBzdGQ6OmZvcm1hdCgiaHt9IiwgaGllcmFyY2hpY2FsX2xldmVs KTsKLSsgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImgiICsgc3RkOjp0b19zdHJpbmcoaGllcmFy Y2hpY2FsX2xldmVsKSk7Ci0gICAgIH0KLSAgIH0KLSAKLUBAIC0xMTU5LDcgKzExNTksNyBAQCBz dGQ6OnN0cmluZyBSZWFkQW55dGhpbmdBcHBNb2RlbDo6R2V0SGVhCi0gICBpbnQzMl90IGhpZXJh cmNoaWNhbF9sZXZlbCA9Ci0gICAgICAgYXhfbm9kZS0+R2V0SW50QXR0cmlidXRlKGF4Ojptb2pv bTo6SW50QXR0cmlidXRlOjprSGllcmFyY2hpY2FsTGV2ZWwpOwotICAgaWYgKGhpZXJhcmNoaWNh bF9sZXZlbCkgewotLSAgICByZXR1cm4gc3RkOjpmb3JtYXQoImh7fSIsIGhpZXJhcmNoaWNhbF9s ZXZlbCk7Ci0rICAgIHJldHVybiBzdGQ6OnN0cmluZygiaCIgKyBzdGQ6OnRvX3N0cmluZyhoaWVy YXJjaGljYWxfbGV2ZWwpKTsKLSAgIH0KLSAgIHJldHVybiBodG1sX3RhZzsKLSB9CgpkaWZmIC0t Z2l0IGEvY2hyb21pdW0tMTI2LWVsNy10eXBlLWFsaWFzLnBhdGNoIGIvY2hyb21pdW0tMTI2LWVs Ny10eXBlLWFsaWFzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGU3YmMx Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyNi1lbDctdHlwZS1hbGlhcy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDMwICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29tcG9uZW50cy9wbHVzX2FkZHJlc3Nlcy9wbHVzX2FkZHJlc3Nfc2VydmljZS5jYy5lbDctdHlw ZS1hbGlhcyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGx1c19hZGRyZXNzZXMv cGx1c19hZGRyZXNzX3NlcnZpY2UuY2MKLS0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBv bmVudHMvcGx1c19hZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MuZWw3LXR5cGUtYWxp YXMJMjAyNC0wNS0yOSAxODowMTowOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbXBvbmVudHMvcGx1c19hZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2Uu Y2MJMjAyNC0wNi0wMiAxNzozMjoyOS45MTcxNTMyMDcgKzAyMDAKLUBAIC0xOTYsNyArMTk2LDcg QEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1c0FkZHJlc3NTZXJ2aQotICAgICBib29sIGlz X29mZl90aGVfcmVjb3JkLAotICAgICBzdGQ6OnUxNnN0cmluZ192aWV3IGZvY3VzZWRfZmllbGRf dmFsdWUsCi0gICAgIGF1dG9maWxsOjpBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlIHRy aWdnZXJfc291cmNlKSB7Ci0tICB1c2luZyBlbnVtIGF1dG9maWxsOjpBdXRvZmlsbFN1Z2dlc3Rp b25UcmlnZ2VyU291cmNlOwotKyAgdXNpbmcgYXV0b2ZpbGw6OkF1dG9maWxsU3VnZ2VzdGlvblRy aWdnZXJTb3VyY2U7Ci0gICBpZiAoIVN1cHBvcnRzUGx1c0FkZHJlc3NlcyhsYXN0X2NvbW1pdHRl ZF9wcmltYXJ5X21haW5fZnJhbWVfb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXNfb2ZmX3RoZV9yZWNvcmQpKSB7Ci0gICAgIHJldHVybiB7fTsKLUBAIC0yMDcsNyArMjA3 LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1c0FkZHJlc3NTZXJ2aQotICAgc3RkOjpv cHRpb25hbDxzdGQ6OnN0cmluZz4gbWF5YmVfYWRkcmVzcyA9Ci0gICAgICAgR2V0UGx1c0FkZHJl c3MoT3JpZ2luVG9GYWNldChsYXN0X2NvbW1pdHRlZF9wcmltYXJ5X21haW5fZnJhbWVfb3JpZ2lu KSk7Ci0gICBpZiAobWF5YmVfYWRkcmVzcyA9PSBzdGQ6Om51bGxvcHQpIHsKLS0gICAgaWYgKHRy aWdnZXJfc291cmNlICE9IGtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKLSsgICAgaWYg KHRyaWdnZXJfc291cmNlICE9IEF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U6OmtNYW51 YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKLSAgICAgICAgICFub3JtYWxpemVkX2ZpZWxkX3Zh bHVlLmVtcHR5KCkpIHsKLSAgICAgICByZXR1cm4ge307Ci0gICAgIH0KLUBAIC0yMjIsNyArMjIy LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1c0FkZHJlc3NTZXJ2aQotIAotICAgLy8g T25seSBzdWdnZXN0IGZpbGxpbmcgYSBwbHVzIGFkZHJlc3Mgd2hvc2UgcHJlZml4IG1hdGNoZXMg dGhlIGZpZWxkJ3MgdmFsdWUuCi0gICBzdGQ6OnUxNnN0cmluZyBhZGRyZXNzID0gYmFzZTo6VVRG OFRvVVRGMTYoKm1heWJlX2FkZHJlc3MpOwotLSAgaWYgKHRyaWdnZXJfc291cmNlICE9IGtNYW51 YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKLSsgIGlmICh0cmlnZ2VyX3NvdXJjZSAhPSBBdXRv ZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOjprTWFudWFsRmFsbGJhY2tQbHVzQWRkcmVzc2Vz ICYmCi0gICAgICAgIWFkZHJlc3Muc3RhcnRzX3dpdGgobm9ybWFsaXplZF9maWVsZF92YWx1ZSkp IHsKLSAgICAgcmV0dXJuIHt9OwotICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTk4LjAuNDc1 OC44MC1lcGVsNy1lcmFzZS1maXgucGF0Y2ggYi9jaHJvbWl1bS05OC4wLjQ3NTguODAtZXBlbDct ZXJhc2UtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzBlOWQ2Li4w MDAwMDAwCi0tLSBhL2Nocm9taXVtLTk4LjAuNDc1OC44MC1lcGVsNy1lcmFzZS1maXgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS05OC4wLjQ3 NTguODAvY29tcG9uZW50cy91aV9kZXZ0b29scy92aWV3cy91aV9lbGVtZW50X3dpdGhfbWV0YWRh dGEuY2MuZXJhc2UtZml4IGNocm9taXVtLTk4LjAuNDc1OC44MC9jb21wb25lbnRzL3VpX2RldnRv b2xzL3ZpZXdzL3VpX2VsZW1lbnRfd2l0aF9tZXRhZGF0YS5jYwotLS0tIGNocm9taXVtLTk4LjAu NDc1OC44MC9jb21wb25lbnRzL3VpX2RldnRvb2xzL3ZpZXdzL3VpX2VsZW1lbnRfd2l0aF9tZXRh ZGF0YS5jYy5lcmFzZS1maXgJMjAyMi0wMi0wMyAxOToxNjo1Ny43ODQ5Nzk4MzEgKzAwMDAKLSsr KyBjaHJvbWl1bS05OC4wLjQ3NTguODAvY29tcG9uZW50cy91aV9kZXZ0b29scy92aWV3cy91aV9l bGVtZW50X3dpdGhfbWV0YWRhdGEuY2MJMjAyMi0wMi0wMyAxOToxNzoxMi45ODM2MzMzNTIgKzAw MDAKLUBAIC0xOSwxNCArMTksMTQgQEAgbmFtZXNwYWNlIHsKLSAvLyBSZW1vdmUgYW55IGN1c3Rv bSBlZGl0b3IgInByZWZpeGVzIiBmcm9tIHRoZSBwcm9wZXJ0eSBuYW1lLiBUaGUgcHJlZml4ZXMg bXVzdAotIC8vIG5vdCBiZSB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlcnMuCi0gdm9pZCBTdHJp cFByZWZpeChzdGQ6OnN0cmluZyYgcHJvcGVydHlfbmFtZSkgewotLSAgYXV0byBjdXIgPSBwcm9w ZXJ0eV9uYW1lLmNiZWdpbigpOwotKyAgYXV0byBjdXIgPSBwcm9wZXJ0eV9uYW1lLmJlZ2luKCk7 Ci0gICBmb3IgKDsgY3VyIDwgcHJvcGVydHlfbmFtZS5jZW5kKCk7ICsrY3VyKSB7Ci0gICAgIGlm ICgoKmN1ciA+PSAnQScgJiYgKmN1ciA8PSAnWicpIHx8ICgqY3VyID49ICdhJyAmJiAqY3VyIDw9 ICd6JykgfHwKLSAgICAgICAgICpjdXIgPT0gJ18nKSB7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0K LSAgIH0KLS0gIHByb3BlcnR5X25hbWUuZXJhc2UocHJvcGVydHlfbmFtZS5jYmVnaW4oKSwgY3Vy KTsKLSsgIHByb3BlcnR5X25hbWUuZXJhc2UocHJvcGVydHlfbmFtZS5iZWdpbigpLCBjdXIpOwot IH0KLSAKLSB9ICAvLyBuYW1lc3BhY2UKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS5zcGVjIGIvY2hy b21pdW0uc3BlYwppbmRleCBjMTM3MmE0Li5jMjBjYjI0IDEwMDY0NAotLS0gYS9jaHJvbWl1bS5z cGVjCisrKyBiL2Nocm9taXVtLnNwZWMKQEAgLTYwLDI1ICs2MCwxNCBAQAogJWdsb2JhbCBkdHNf dmVyc2lvbiAxMwogJWVuZGlmCiAKLSMgc2V0IGxhdGVzdCB2ZXJzaW9uIGZvciBsbHZtLXRvb2xz ZXQgb24gZWw3Ci0lZ2xvYmFsIGxsdm1fdG9vbHNldF92ZXJzaW9uIDE0LjAKLQogIyBzZXQgbmFt ZSBmb3IgdG9vbHNldAotJWlmIDAlez9yaGVsfSA9PSA3Ci0lZ2xvYmFsIHRvb2xzZXQgZGV2dG9v bHNldAotJWVsc2UKICVnbG9iYWwgdG9vbHNldCBnY2MtdG9vbHNldAotJWVuZGlmCiAKLSVpZiAw JXs/cmhlbH0gPT0gNwotJWdsb2JhbCBjaHJvbWl1bV9weWJpbiAvb3B0L3JoL3JoLXB5dGhvbjM4 L3Jvb3QvdXNyL2Jpbi9weXRob24KLSVlbHNlCiAlaWYgMCV7P3JoZWx9ID09IDgKICVnbG9iYWwg Y2hyb21pdW1fcHliaW4gL3Vzci9iaW4vcHl0aG9uMy45CiAlZWxzZQogJWdsb2JhbCBjaHJvbWl1 bV9weWJpbiAle19fcHl0aG9uM30KICVlbmRpZgotJWVuZGlmCiAKICMgdmEtYXBpIG9ubHkgc3Vw cG9ydGVkIGluIHJoZWwgPj0gOSBhbmQgZmVkb3JhCiAlZ2xvYmFsIHVzZV92YWFwaSAxCkBAIC04 Niw4ICs3NSw4IEBACiAjIHY0bDJfY29kZWMgb25seSBlbmFibGUgZm9yIGZlZG9yYSBhYXJjaDY0 CiAlZ2xvYmFsIHVzZV92NGwyX2NvZGVjIDAKIAotIyBsaWJ2YSBpbiBFTDcgYW5kIEVMOCBpcyB0 b28gb2xkLgotJWlmIDAlez9yaGVsfSA9PSA3IHx8IDAlez9yaGVsfSA9PSA4CisjIGxpYnZhIGlz IHRvbyBvbGQgb24gZWw4LgorJWlmIDAlez9yaGVsfSA9PSA4CiAlZ2xvYmFsIHVzZV92YWFwaSAw CiAlZW5kaWYKIApAQCAtMTM1LDkgKzEyNCw2IEBACiAjIGRpc2FibGUgZGVidWdpbmZvIGR1ZSB0 byBhIGJ1ZyBpbiBkZWJ1Z2VkaXQgb24gZWw3CiAjIGVycm9yOiBjYW5vbmljYWxpemF0aW9uIHVu ZXhwZWN0ZWRseSBzaHJhbmsgYnkgb25lIGNoYXJhY3RlcgogIyBodHRwczovL2J1Z3ppbGxhLnJl ZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTMwNDEyMQotJWlmIDAlez9yaGVsfSA9PSA3Ci0lZ2xv YmFsIGVuYWJsZV9kZWJ1ZyAwCi0lZW5kaWYKICVpZiAhICV7ZW5hYmxlX2RlYnVnfQogJWdsb2Jh bCBkZWJ1Z19wYWNrYWdlICV7bmlsfQogJWdsb2JhbCBkZWJ1Z19sZXZlbCAwCkBAIC0xNjgsOSAr MTU0LDYgQEAKIAogIyBlbmFibGV8ZGlzYWJsZSB1c2VfY3VzdG9tX2xpYmN4eAogJWdsb2JhbCB1 c2VfY3VzdG9tX2xpYmN4eCAxCi0laWYgMCV7P3JoZWx9ID09IDcKLSVnbG9iYWwgdXNlX2N1c3Rv bV9saWJjeHggMAotJWVuZGlmCiAKICMgZW5hYmxlIGNsYW5nIGJ5IGRlZmF1bHQKICVnbG9iYWwg Y2xhbmcgMQpAQCAtMjI5LDExICsyMTIsMTEgQEAKICMgZW5hYmxlIGJ1bmRsZW1pbml6aXAgZm9y IEZlZG9yYSA+IDM5IGR1ZSB0byBzd2l0Y2ggdG8gbWluaXppcC1uZwogIyB3aGljaCBicmVha3Mg dGhlIGJ1aWxkCiAlZ2xvYmFsIGJ1bmRsZW1pbml6aXAgMAotJWlmIDAlez9yaGVsfSA9PSA3IHx8 IDAlez9mZWRvcmF9ID4gMzkKKyVpZiAwJXs/ZmVkb3JhfSA+IDM5CiAlZ2xvYmFsIGJ1bmRsZW1p bml6aXAgMQogJWVuZGlmCiAKLSVpZiAwJXs/cmhlbH0gPT0gNyB8fCAwJXs/cmhlbH0gPT0gOAor JWlmIDAlez9yaGVsfSA9PSA4CiAlZ2xvYmFsIGJ1bmRsZWhhcmZidXp6IDEKICVnbG9iYWwgYnVu ZGxlbGlid2VicCAxCiAlZ2xvYmFsIGJ1bmRsZWxpYnBuZyAxCkBAIC0zNzAsNjcgKzM1Myw2IEBA IFBhdGNoOTA6IGNocm9taXVtLTEyMS1zeXN0ZW0tbGlieG1sLnBhdGNoCiAjIHBhdGNoIGZvciB1 c2luZyBzeXN0ZW0gb3B1cwogUGF0Y2g5MTogY2hyb21pdW0tMTA4LXN5c3RlbS1vcHVzLnBhdGNo CiAKLSMgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYSBrZXJuZWwgaGVhZGVyIG9uIEVMNyB0 byBzdXBwb3J0IE1GRF9DTE9FWEVDLCBGX1NFQUxfU0hSSU5LLCBGX0FERF9TRUFMUywgRl9TRUFM X1NFQUwKLVBhdGNoMTAwOiBjaHJvbWl1bS0xMjYtZWw3LWluY2x1ZGUtZmNudGwtbWVtZmQucGF0 Y2gKLQotIyBhZGQgZGVmaW5lIEhBVkVfU1RSTkRVUCBvbiBlcGVsNwotUGF0Y2gxMDE6IGNocm9t aXVtLTEwOC1lbDctd2F5bGFuZC1zdHJuZHVwLWVycm9yLnBhdGNoCi0KLSMgV29ya2Fyb3VuZCBm b3Igb2xkIGNsYW5nIDE0Ci0jIGVycm9yOiBkZWZhdWx0aW5nIHRoaXMgZGVmYXVsdCBjb25zdHJ1 Y3RvciB3b3VsZCBkZWxldGUgaXQgYWZ0ZXIgaXRzIGZpcnN0IGRlY2xhcmF0aW9uCi1QYXRjaDEw MjogY2hyb21pdW0tMTI1LWVsNy1kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1v dXMtdW5pb24ucGF0Y2gKLQotIyBXb3JrIGFyb3VuZCBvbGQgYW5kIG1pc3NpbmcgaGVhZGVycyBv biBFUEVMNwotUGF0Y2gxMDM6IGNocm9taXVtLTExMC1lcGVsNy1vbGQtaGVhZGVycy13b3JrYXJv dW5kcy5wYXRjaAotCi0jIFVzZSBvbGQgY3VwcyAoY2hyb21pdW0ncyBjb2RlIHdvcmthcm91bmQg YnJlYWtzIG9uIGdjYykKLSMgUmV2ZXJ0OiBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hy b21pdW0vY29tbWl0L2MzMjEzZjg3NzlkZGM0MjdlODlkOTgyNTE0MTg1ZWQ1ZTRjOTRlOTEKLVBh dGNoMTA0OiBjaHJvbWl1bS0xMjYtZWw3LW9sZC1jdXBzLnBhdGNoCi0KLSMgbGliZHJtIG9uIEVM NyBpcyByYXRoZXIgb2xkIGFuZCBjaHJvbWl1bSBhc3N1bWVzIG5ld2VyCi0jIFRoaXMgZ2V0cyB1 cyBieSBmb3Igbm93Ci1QYXRjaDEwNTogY2hyb21pdW0tMTI1LWVsNy1vbGQtbGliZHJtLnBhdGNo Ci0KLSMgZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvICdzdGQ6OmJhc2lj X3N0cmluZzxjaGFyPjo6ZXJhc2Uoc3RkOjpiYXNpY19zdHJpbmc8Y2hhcj46OmNvbnN0X2l0ZXJh dG9yLCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IGNoYXIqLCBzdGQ6OmJhc2lj X3N0cmluZzxjaGFyPiA+JiknCi0jICAgMzMgfCAgIHByb3BlcnR5X25hbWUuZXJhc2UocHJvcGVy dHlfbmFtZS5jYmVnaW4oKSwgY3VyKTsKLSMgTm90IHN1cmUgaG93IHRoaXMgRVZFUiB3b3JrZWQg YW55d2hlcmUsIGJ1dCBpdCBvbmx5IHNlZW1zIHRvIGZhaWwgb24gRVBFTC03LgotUGF0Y2gxMDY6 IGNocm9taXVtLTk4LjAuNDc1OC44MC1lcGVsNy1lcmFzZS1maXgucGF0Y2gKLQotIyBBZGQgYWRk aXRpb25hbCBvcGVyYXRvcj09IHRvIG1ha2UgZWw3IGhhcHB5LgotUGF0Y2gxMDc6IGNocm9taXVt LTEyMi1lbDctZXh0cmEtb3BlcmF0b3IucGF0Y2gKLSMgb2xkIHY0bDIgb24gZWw3Ci1QYXRjaDEw ODogY2hyb21pdW0tMTE4LWVsN192NGwyX3F1YW50aXphdGlvbi5wYXRjaCAKLSMgd29ya2Fyb3Vu ZCBmb3Igb2xkIGNsYW5nIG9uIGVsNwotUGF0Y2gxMDk6IGNocm9taXVtLTExNC13aXJlbGVzcy1l bDcucGF0Y2gKLVBhdGNoMTEwOiBjaHJvbWl1bS0xMTUtYnVpbGRmbGFnLWVsNy5wYXRjaAotUGF0 Y2gxMTE6IGNocm9taXVtLTEyMi1lbDctaW5saW5lLWZ1bmN0aW9uLnBhdGNoCi1QYXRjaDExMjog Y2hyb21pdW0tMTI2LWVsNy1ydXN0LWNfc3RyaW5nLnBhdGNoCi1QYXRjaDExMzogY2hyb21pdW0t MTIxLWVsNy1jbGFuZy12ZXJzaW9uLXdhcm5pbmcucGF0Y2gKLVBhdGNoMTE0OiBjaHJvbWl1bS0x MjMtZWw3LWNsYW5nLWJ1aWxkLWZhaWx1cmUucGF0Y2gKLVBhdGNoMTE1OiBjaHJvbWl1bS0xMjQt ZWw3LXNpemVfdC5wYXRjaAotCi0jIGZpeGVzIGZvciBvbGQgY2xhbmcgdmVyc2lvbiBpbiBlbDcg KGNsYW5nIDw9IDE1KQotIyBjb21waWxlciBidWlsZCBlcnJvcnMsIG5vIG1hdGNoaW5nIGNvbnN0 cnVjdG9yIGZvciBpbml0aWFsaXphdGlvbgotUGF0Y2gxMTY6IGNocm9taXVtLTEyNi1lbDctbm9f bWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKLVBhdGNoMTE3OiBjaHJvbWl1bS0xMTUtZWw3LWNv bXBpbGVyLVNrQ29sb3I0Zi5wYXRjaAotCi0jIHdvcmthcm91bmQgZm9yIGNsYW5nIGJ1ZywgaHR0 cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vlcy81NzgyNgotUGF0Y2gxMTg6 IGNocm9taXVtLTEyNC1lbDctd29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5n LnBhdGNoCi0KLSMgbWlzc2luZyB0eXBlbmFtZQotUGF0Y2gxMTk6IGNocm9taXVtLTEyNS1lbDct dHlwZW5hbWUucGF0Y2gKLQotIyBlcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgZXhw cmVzc2lvbgotUGF0Y2gxMjA6IGNocm9taXVtLTExNy1lbDctc3RyaW5nLWNvbnZlcnQucGF0Y2gK LVBhdGNoMTIxOiBjaHJvbWl1bS0xMjUtZWw3LWFzc2VydC5wYXRjaAotUGF0Y2gxMjI6IGNocm9t aXVtLTEyNi1lbDctY29uc3RleHByLnBhdGNoCi1QYXRjaDEyMzogY2hyb21pdW0tMTI2LWVsNy10 eXBlLWFsaWFzLnBhdGNoCi1QYXRjaDEyNDogY2hyb21pdW0tMTI1LWVsNy1vcHRpb25hbC13b3Jr YXJvdW5kLWFzc2VydC5wYXRjaAotUGF0Y2gxMjU6IGNocm9taXVtLTEyNi1lbDctaW50ZXJhdG9y LnBhdGNoCi1QYXRjaDEyNjogY2hyb21pdW0tMTI2LWVsNy1jb2xvcm1hcC5wYXRjaAotUGF0Y2gx Mjc6IGNocm9taXVtLTEyNi1lbDctc3RkZm9ybWF0LnBhdGNoCi1QYXRjaDEyODogY2hyb21pdW0t MTI2LWVsNy1zdGRfdmFyaWFudC5wYXRjaAotCiAjIHN5c3RlbSBmZm1wZWcKICMgbmVlZCBmb3Ig b2xkIGZmbXBlZyA1Lnggb24gZXBlbDkKIFBhdGNoMTI5OiBjaHJvbWl1bS0xMjUtZmZtcGVnLTUu eC1yZW9yZGVyZWRfb3BhcXVlLnBhdGNoCkBAIC0xMTkwLDQwICsxMTEyLDYgQEAgUXQ2IFVJIGZv ciBjaHJvbWl1bS4KICVwYXRjaCAtUDEzNCAtcDEgLWIgLmRpc2FibGUtRkZtcGVnQWxsb3dMaXN0 cwogJWVuZGlmCiAKLSMgRVBFTCBzcGVjaWZpYyBwYXRjaGVzCi0laWYgMCV7P3JoZWx9ID09IDcK LWNwIC9vcHQvcmgvJXt0b29sc2V0fS0le2R0c192ZXJzaW9ufS9yb290L3Vzci9pbmNsdWRlL2Mr Ky8le2R0c192ZXJzaW9ufS9vcHRpb25hbCAuCi0lcGF0Y2ggLVAxMDAgLXAxIC1iIC5lbDctbWVt ZmQtZmNudGwtaW5jbHVkZQotJXBhdGNoIC1QMTAxIC1wMSAtYiAud2F5bGFuZC1zdHJuZHVwLWVy cm9yCi0lcGF0Y2ggLVAxMDIgLXAxIC1iIC5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1h bm9ueW1vdXMtdW5pb24KLSVwYXRjaCAtUDEwMyAtcDEgLWIgLmVwZWw3LWhlYWRlci13b3JrYXJv dW5kcwotJXBhdGNoIC1QMTA0IC1wMSAtYiAuZWw3Y3VwcwotJXBhdGNoIC1QMTA1IC1wMSAtYiAu ZWw3LW9sZC1saWJkcm0KLSVwYXRjaCAtUDEwNiAtcDEgLWIgLmVsNy1lcmFzZS1maXgKLSVwYXRj aCAtUDEwNyAtcDEgLWIgLmVsNy1leHRyYS1vcGVyYXRvci1lcXVhbGVxdWFsCi0lcGF0Y2ggLVAx MDggLXAxIC1iIC5lbDdfdjRsMl9xdWFudGl6YXRpb24KLSVwYXRjaCAtUDEwOSAtcDEgLWIgLndp cmVsZXNzCi0lcGF0Y2ggLVAxMTAgLXAxIC1iIC5idWlsZGZsYWctZWw3Ci0lcGF0Y2ggLVAxMTEg LXAxIC1iIC5pbmxpbmUtZnVuY3Rpb24tZWw3Ci0lcGF0Y2ggLVAxMTIgLXAxIC1SIC1iIC5ydXN0 LXNfY3RyaW5nCi0lcGF0Y2ggLVAxMTMgLXAxIC1iIC5lbDctY2xhbmctdmVyc2lvbi13YXJuaW5n Ci0lcGF0Y2ggLVAxMTQgLXAxIC1iIC5jbGFuZy1idWlsZC1mYWlsdXJlCi0lcGF0Y2ggLVAxMTUg LXAxIC1iIC5lbDctc2l6ZV90Ci0lcGF0Y2ggLVAxMTYgLXAxIC1iIC5ub19tYXRjaGluZ19jb25z dHJ1Y3RvcgotJXBhdGNoIC1QMTE3IC1wMSAtYiAud29ya2Fyb3VuZF9jbGFuZy1Ta0NvbG9yNGYK LSVwYXRjaCAtUDExOCAtcDEgLWIgLndvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmlu ZGluZwotJXBhdGNoIC1QMTE5IC1wMSAtYiAudHlwZW5hbWUKLSVwYXRjaCAtUDEyMCAtcDEgLWIg LnN0cmluZy1jb252ZXJ0Ci0lcGF0Y2ggLVAxMjEgLXAxIC1iIC5hc3NlcnQKLSVwYXRjaCAtUDEy MiAtcDEgLWIgLmNvbnN0ZXhwcgotJXBhdGNoIC1QMTIzIC1wMSAtYiAuZWw3LXR5cGUtYWxpYXMK LSVwYXRjaCAtUDEyNCAtcDEgLWIgLmVsNy13b3JrYXJvdW5kLWFzc2VydAotJXBhdGNoIC1QMTI1 IC1wMSAtYiAuZWw3LWludGVyYXRvcgotJXBhdGNoIC1QMTI2IC1wMSAtYiAuZWw3LWNvbG9ybWFw Ci0lcGF0Y2ggLVAxMjcgLXAxIC1iIC5lbDctc3RkZm9ybWF0Ci0lcGF0Y2ggLVAxMjggLXAxIC1i IC5lbDctc3RkX3ZhcmlhbnQKLSVlbmRpZgotCiAlaWYgMCV7P3JoZWx9ID09IDkKICVwYXRjaCAt UDE0MCAtcDEgLWIgLnJldmVydC1hdjFlbmMKICVlbmRpZgpAQCAtMTIzNiw3ICsxMTI0LDcgQEAg Y3AgL29wdC9yaC8le3Rvb2xzZXR9LSV7ZHRzX3ZlcnNpb259L3Jvb3QvdXNyL2luY2x1ZGUvYysr LyV7ZHRzX3ZlcnNpb259L29wdGlvbmEKICVwYXRjaCAtUDE1MCAtcDEgLWIgLnF0NgogJWVuZGlm CiAKLSVpZiAwJXs/cmhlbH0gJiYgMCV7P3JoZWx9IDw9IDgKKyVpZiAwJXs/cmhlbH0gPSA4CiAl aWZhcmNoIGFhcmNoNjQKICVwYXRjaCAtUDMwNSAtcDEgLWIgLm1lbW9yeV90YWdnaW5nCiAlcGF0 Y2ggLVAzMDYgLXAxIC1iIC5pZnVuYy1oZWFkZXIKQEAgLTE0NTQsMTYgKzEzNDIsNiBAQCBleHBv cnQgQ1hYRkxBR1MKIGV4cG9ydCBMREZMQUdTCiBleHBvcnQgUlVTVEZMQUdTCiAKLSMgZW5hYmxl IHRvb2xzZXQgb24gZWw3Ci0laWYgMCV7P3JoZWx9ID09IDcKLS4gL29wdC9yaC9yaC1weXRob24z OC9lbmFibGUKLSVpZiAle2NsYW5nfQotLiAvb3B0L3JoL2xsdm0tdG9vbHNldC0le2xsdm1fdG9v bHNldF92ZXJzaW9ufS9lbmFibGUKLSVlbHNlCi0uIC9vcHQvcmgvJXt0b29sc2V0fS0le2R0c192 ZXJzaW9ufS9lbmFibGUKLSVlbmRpZgotJWVuZGlmCi0KICMgZW5hYmxlIGdjYyB0b29sc2V0IG9u IGVsOAogJWlmIDAlez9yaGVsfSA9PSA4ICYmICEgJXtjbGFuZ30KIC4gL29wdC9yaC8le3Rvb2xz ZXR9LSV7ZHRzX3ZlcnNpb259L2VuYWJsZQo=