From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 4a0becf5 for ; Mon, 1 Jul 2019 22:54:27 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============2564287103312852083==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] [WIP] qt5: update to 5.13.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 02 Jul 2019 00:54:27 +0200 Message-ID: <20190701225427.3laI36Ab_n6eyAQt9ERfbaexQ1IaMypzq-tJUkYr3R0@z> GitHub notification mails are now in MIME to allow UTF8. --===============2564287103312852083== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjEzCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xMTg5MQoKW1dJUF0gcXQ1OiB1cGRhdGUgdG8gNS4x My4wClRlc3QgcmVwbyB1cCBvbiBodHRwczovL3ZvaWQuam9obm55bmF0b3IuZGV2L3F0NS4xMy8N Cg0KUXQ1LXdlYmVuZ2luZSBub3cgYWx3YXlzIHJlcXVpcmVzIGEgMzJiaXQgaG9zdCBjb21waWxl ciB3aGVuIGNyb3NzIGNvbXBpbGluZyB0byBhIDMyYml0IGNyb3NzIGFyY2ggKGUuZy4geDg2XzY0 IC0+IGFybSopLCBzbyB3ZSBoYXZlIHRvIGRpc2FibGUgaXQgZm9yIG5vdyBvbiBhbGwgMzJiaXQg YXJtKiBhcmNoaXRlY3R1cmVzLg0KDQoNClN0YXR1czogcXQ1LXdlYmVuZ2luZSBpcyBzdGlsbCBi cm9rZW4gb24gbXVzbA0KDQpTaG91bGQgcmVzb2x2ZSAjMTI1NTANCgoKQSBwYXRjaCBmaWxlIGZy b20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzExODkx LnBhdGNoIGlzIGF0dGFjaGVk --===============2564287103312852083== Content-Type: application/text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.13-11891.patch" RnJvbSAyN2FiOTA1NzNhODc0MWY5MDM4ZGU1MDliMjVkNzg5ZTkwM2Q2NmExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUaHUsIDIz IE1heSAyMDE5IDA4OjQ5OjQwICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzldIHF0NTogdXBkYXRl IHRvIDUuMTMuMAoKcXQ1OiB1cGRhdGUgcHBjNjQobGUpIHN1cHBvcnQgKyBhZGQgYmlnIGVuZGlh bgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDMgKwogc3JjcGtncy97cXQ1LWNhbnZhczNkID0+IHF0NS1sb3R0aWV9ICAgICAgICAgIHwgICAg MAogc3JjcGtncy9xdDUtbG90dGllLWRldmVsICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAr CiAuLi4vMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNoICAgICAgfCAgIDEwICsK IHNyY3BrZ3MvcXQ1L2ZpbGVzL2Fzc2lzdGFudC5wcm8gICAgICAgICAgICAgICB8ICAgIDIgLQog c3JjcGtncy9xdDUvZmlsZXMvbHJlbGVhc2UucHJvICAgICAgICAgICAgICAgIHwgICAxMCArLQog c3JjcGtncy9xdDUvZmlsZXMvbHVwZGF0ZS5wcm8gICAgICAgICAgICAgICAgIHwgICAgOCArLQog c3JjcGtncy9xdDUvZmlsZXMvbW9jL21vYy5wcm8gICAgICAgICAgICAgICAgIHwgICAgOCAtCiAu Li4vcXQ1L2ZpbGVzL3FkYnVzY3BwMnhtbC9xZGJ1c2NwcDJ4bWwucHJvICAgfCAgICA4IC0KIHNy Y3BrZ3MvcXQ1L2ZpbGVzL3FsYWxyL3FsYWxyLnBybyAgICAgICAgICAgICB8ICAgMjMgLQogc3Jj cGtncy9xdDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8gICAgICAgIHwgICAgMiArLQogc3Jj cGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8gICAgICAgICAgICAgICAgIHwgICAgNCArLQogc3Jj cGtncy9xdDUvZmlsZXMvcW1sbWluLnBybyAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3Jj cGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvICAgICAgICAgICAgIHwgICAgMSAtCiBzcmNw a2dzL3F0NS9maWxlcy9yY2MucHJvICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyY3Br Z3MvcXQ1L2ZpbGVzL3JjYy9yY2MucHJvICAgICAgICAgICAgICAgICB8ICAgIDYgLQogc3JjcGtn cy9xdDUvZmlsZXMvdWljLnBybyAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmNwa2dz L3F0NS9maWxlcy91aWMvdWljLnBybyAgICAgICAgICAgICAgICAgfCAgIDExIC0KIC4uLnQtYmV0 d2Vlbi1tdXNsLWxpYmMtZGlyZW50LmgtYW5kLWxzcy5wYXRjaCB8ICAgMzUgLQogLi4uL3BhdGNo ZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2ggIHwgICAyNiArLQogLi4uLWlzLWEt bm9ucG9ydGFibGUtYWxpYXMtZm9yLXNpZ25hbC5oLnBhdGNoIHwgICA4MSAtCiAuLi4vcXQ1L3Bh dGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoICAgfCAgIDExIC0KIHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAxMy1tdXNsLXNlcmlhbGlvLnBhdGNoICB8ICAgMTIgLQogLi4uL3F0NS9wYXRj aGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoICAgIHwgICAgNCArLQogLi4uL3F0NS9wYXRj aGVzLzAwMjEtY2hyb21pdW0tbW9qby1nY2M4LnBhdGNoIHwgICAxOCAtCiAuLi4vcXQ1L3BhdGNo ZXMvMDAyMi1saWJyZXNzbC1jb21wYXQucGF0Y2ggICAgfCAgIDI3ICstCiAuLi4vcXQ1L3BhdGNo ZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2ggfCAgIDM1ICstCiBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMjctc2tpYV9jcHUtYmUucGF0Y2ggICAgfCAgIDEyIC0KIHNyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDAyOC13ZWJydGMtYmUucGF0Y2ggICAgICB8ICAgMTIgLQogc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDI5LW11c2wtbGliZXZlbnQucGF0Y2ggIHwgIDEyMSAtCiAuLi5fcmVtb3ZlX291cl91 c2Vfb2Zfc3lzY2FsbF9mb3Itc3RhdHgucGF0Y2ggfCAgMTE5IC0KIHNyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAzNC1nY2MtOC4zLWJ1aWxkLnBhdGNoICB8ICAyMzYgLQogc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDM1LWdjYy05LjEtYnVpbGQucGF0Y2ggIHwgICAzNSAtCiBzcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDAteWFzbS1ubHMucGF0Y2ggICAgICAgfCAgIDEzICsKIHNyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA0MS1saWJyZXNzbC5wYXRjaCAgICAgICB8ICAgMTEgKwogLi4uLzAwNDItYXJtLXZvaWQtaXMt bm90LWFuZHJvaWQucGF0Y2ggICAgICAgIHwgICAyMSArCiAuLi5pby5wYXRjaCA9PiAwMDQzLWxp YnJlc3NsLWNvbnN0LWJpby5wYXRjaH0gfCAgICA4ICstCiAuLi5pbmZvLnBhdGNoID0+IDAwNDQt cXQtbXVzbC1leGVjaW5mby5wYXRjaH0gfCAgIDg1ICstCiAuLi4vMDA0NS1xdC1tdXNsLXRocmVh ZC1zdGFja3NpemUucGF0Y2ggICAgICAgfCAgIDI2ICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDQ2LXNh bmRib3gtbWVtYmFycmllci5wYXRjaCB8ICAgNjAgKwogLi4uL3F0NS9wYXRjaGVzLzAwNDctZ24t Y3Jvc3Mtc3lzcm9vdC5wYXRjaCAgIHwgICAyNCArCiAuLi4vcXQ1L3BhdGNoZXMvMDA4OS13ZWJl bmdpbmUtcHBjNjQucGF0Y2ggICAgfCAgIDIwICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDkwLWNocm9t aXVtLXBwYzY0bGUucGF0Y2ggICB8IDQyNjcgKysrKysrKysrKysrKysrKysKIC4uLi9wYXRjaGVz LzAwOTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaCAgICB8ICAxNDEgKwogLi4uL3F0NS9wYXRj aGVzLzAwOTItY2hyb21pdW0tcHBjNjQtYmUucGF0Y2ggIHwgMjk3MCArKysrKysrKysrKysKIC4u Li9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoICB8ICAgNDMgKwogLi4u LzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoICAgICAgIHwgICAxNyArCiAuLi4v cGF0Y2hlcy9xdHdlYmVuZ2luZS1jaHJvbWl1bS1wcGM2NC5wYXRjaCAgfCAyMTEyIC0tLS0tLS0t CiAuLi4vcGF0Y2hlcy9xdHdlYmVuZ2luZS1lbmFibGUtcHBjNjQucGF0Y2ggICAgfCAgIDQxIC0K IHNyY3BrZ3MvcXQ1L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzcgKy0K IDUwIGZpbGVzIGNoYW5nZWQsIDc4MDUgaW5zZXJ0aW9ucygrKSwgMzA3NyBkZWxldGlvbnMoLSkK IHJlbmFtZSBzcmNwa2dzL3txdDUtY2FudmFzM2QgPT4gcXQ1LWxvdHRpZX0gKDEwMCUpCiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtbG90dGllLWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvbW9jL21vYy5wcm8KIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9maWxlcy9xZGJ1c2NwcDJ4bWwvcWRidXNjcHAyeG1s LnBybwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L2ZpbGVzL3FsYWxyL3FsYWxyLnBy bwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L2ZpbGVzL3JjYy9yY2MucHJvCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvdWljL3VpYy5wcm8KIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDEtRml4LWNvbmZsaWN0LWJldHdlZW4tbXVz bC1saWJjLWRpcmVudC5oLWFuZC1sc3MucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L3F0NS9wYXRjaGVzLzAwMDYtc3lzLXNpZ25hbC5oLWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9y LXNpZ25hbC5oLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDEzLW11c2wtc2VyaWFsaW8ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMjEtY2hyb21pdW0tbW9qby1nY2M4LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3LXNraWFfY3B1LWJlLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI4LXdlYnJ0Yy1iZS5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyOS1tdXNsLWxpYmV2ZW50LnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMzLXJldmVydF9yZW1vdmVf b3VyX3VzZV9vZl9zeXNjYWxsX2Zvci1zdGF0eC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAzNC1nY2MtOC4zLWJ1aWxkLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDM1LWdjYy05LjEtYnVpbGQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDEtbGlicmVzc2wucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQtaXMt bm90LWFuZHJvaWQucGF0Y2gKIHJlbmFtZSBzcmNwa2dzL3F0NS9wYXRjaGVzL3tsaWJyZXNzbC1j b25zdC1iaW8ucGF0Y2ggPT4gMDA0My1saWJyZXNzbC1jb25zdC1iaW8ucGF0Y2h9ICg4NCUpCiBy ZW5hbWUgc3JjcGtncy9xdDUvcGF0Y2hlcy97MDAwNS1tdXNsLW5vLWV4ZWNpbmZvLnBhdGNoID0+ IDAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaH0gKDU2JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFy cmllci5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1n bi1jcm9zcy1zeXNyb290LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBj NjQtYmUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMt Y2hyb21pdW0tdjgtZWxmdjIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy9xdHdlYmVuZ2luZS1jaHJvbWl1bS1wcGM2NC5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvcXR3ZWJlbmdpbmUtZW5h YmxlLXBwYzY0LnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxp YnMKaW5kZXggMjJjMzE1NzA4ZTYuLjYxZjI3ZjE5YWY5IDEwMDY0NAotLS0gYS9jb21tb24vc2hs aWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTE4NTAsMTAgKzE4NTAsMTMgQEAgbGliUXQ1UXVp Y2suc28uNSBxdDUtZGVjbGFyYXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tUZXN0LnNvLjUgcXQ1 LWRlY2xhcmF0aXZlLTUuNi4wXzEKIGxpYlF0NVF1aWNrV2lkZ2V0cy5zby41IHF0NS1kZWNsYXJh dGl2ZS01LjYuMF8xCiBsaWJRdDVRdWlja1BhcnRpY2xlcy5zby41IHF0NS1kZWNsYXJhdGl2ZS01 LjYuMF8xCitsaWJRdDVRdWlja1NoYXBlcy5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjEyLjFfMQog bGliUXQ1UXVpY2tDb250cm9sczIuc28uNSBxdDUtcXVpY2tjb250cm9sczItNS43LjFfMQogbGli UXQ1UXVpY2tUZW1wbGF0ZXMyLnNvLjUgcXQ1LXF1aWNrY29udHJvbHMyLTUuNy4xXzEKIGxpYlF0 NVBvc2l0aW9uaW5nLnNvLjUgcXQ1LWxvY2F0aW9uLTUuNi4wXzEKIGxpYlF0NUxvY2F0aW9uLnNv LjUgcXQ1LWxvY2F0aW9uLTUuNi4wXzEKK2xpYlF0NVBvc2l0aW9uaW5nUXVpY2suc28uNSBxdDUt bG9jYXRpb24tNS4xMi4xXzEKK2xpYlF0NVZpcnR1YWxLZXlib2FyZC5zby41IHF0NS12aXJ0dWFs a2V5Ym9hcmQtNS4xMi4xXzEKIGxpYlF0NU11bHRpbWVkaWEuc28uNSBxdDUtbXVsdGltZWRpYS01 LjYuMF8xCiBsaWJRdDVNdWx0aW1lZGlhR3N0VG9vbHMuc28uNSBxdDUtbXVsdGltZWRpYS01LjEw LjFfMQogbGliUXQ1TXVsdGltZWRpYVF1aWNrLnNvLjUgcXQ1LW11bHRpbWVkaWEtNS4xMC4xXzEK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWNhbnZhczNkIGIvc3JjcGtncy9xdDUtbG90dGllCnNp bWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmNwa2dzL3F0NS1jYW52YXMzZApyZW5h bWUgdG8gc3JjcGtncy9xdDUtbG90dGllCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1sb3R0aWUt ZGV2ZWwgYi9zcmNwa2dzL3F0NS1sb3R0aWUtZGV2ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5k ZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtbG90dGllLWRldmVsCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzLzAwOTAtaGFyZC1kaXNhYmxlLXFt bGNoYWNoZWdlbi5wYXRjaCBiL3NyY3BrZ3MvcXQ1L2ZpbGVzLzAwOTAtaGFyZC1kaXNhYmxlLXFt bGNoYWNoZWdlbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NWVjZGZiMzBmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9maWxlcy8wMDkwLWhh cmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIHF0ZGVj bGFyYXRpdmUvdG9vbHMvdG9vbHMucHJvCTIwMTktMDQtMDkgMDE6MDE6MDcuMDAwMDAwMDAwICsw MjAwCisrKysgLQkyMDE5LTA0LTIxIDAwOjI0OjE2LjE5Mjk2NjM0NSArMDIwMAorQEAgLTcsNyAr Nyw2IEBACisgICAgICAgICBxbWxtaW4gXAorICAgICAgICAgcW1saW1wb3J0c2Nhbm5lcgorIAor LSAgICBxdENvbmZpZyhjb21tYW5kbGluZXBhcnNlcik6cXRDb25maWcoeG1sc3RyZWFtd3JpdGVy KTogU1VCRElSUyArPSBxbWxjYWNoZWdlbgorIH0KKyAKKyBxdENvbmZpZyh0aHJlYWQpOiFhbmRy b2lkfGFuZHJvaWRfYXBwOiF3YXNtIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL2Fz c2lzdGFudC5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9hc3Npc3RhbnQucHJvCmluZGV4IDNlMzI3 NzZhODI3Li41MTAwZjYxMTA1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvYXNzaXN0 YW50LnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy9hc3Npc3RhbnQucHJvCkBAIC01LDkgKzUs NyBAQCBTVUJESVJTICs9IFwKICAgICAgICAgICAgYXNzaXN0YW50IFwKICAgICAgICAgICAgcWhl bHBnZW5lcmF0b3IgXAogICAgICAgICAgICBxY29sbGVjdGlvbmdlbmVyYXRvciBcCi0gICAgICAg ICAgIHFoZWxwY29udmVydGVyCiAKIGFzc2lzdGFudC5kZXBlbmRzID0gaGVscAotcWhlbHBnZW5l cmF0b3IuZGVwZW5kcyA9IGhlbHAKIHFjb2xsZWN0aW9uZ2VuZXJhdG9yLmRlcGVuZHMgPSBoZWxw CiBxaGVscGNvbnZlcnRlci5kZXBlbmRzID0gaGVscApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv ZmlsZXMvbHJlbGVhc2UucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvbHJlbGVhc2UucHJvCmluZGV4 IDRkYmQ0Y2U1MzI3Li5iYWI2YjI5MjhlNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMv bHJlbGVhc2UucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL2xyZWxlYXNlLnBybwpAQCAtMSwx MCArMSwxNiBAQAogUVQgPSBjb3JlIHFtbCBuZXR3b3JrIGNvcmUtcHJpdmF0ZQogREVGSU5FUyAr PSBRVF9OT19DQVNUX0ZST01fQVNDSUkgUVRfTk9fQ0FTVF9UT19BU0NJSQogCi1TT1VSQ0VTICs9 IG1haW4uY3BwCitIRUFERVJTICs9IFwKKyAgICAuLi9zaGFyZWQvcHJvamVjdGRlc2NyaXB0aW9u cmVhZGVyLmggXAorICAgIC4uL3NoYXJlZC9ydW5xdHRvb2wuaAorCitTT1VSQ0VTICs9IFwKKyAg ICAuLi9zaGFyZWQvcHJvamVjdGRlc2NyaXB0aW9ucmVhZGVyLmNwcCBcCisgICAgLi4vc2hhcmVk L3J1bnF0dG9vbC5jcHAgXAorICAgIG1haW4uY3BwCiAKIGluY2x1ZGUoLi4vc2hhcmVkL2Zvcm1h dHMucHJpKQotaW5jbHVkZSguLi9zaGFyZWQvcHJvcGFyc2VyLnByaSkKIAogcW1ha2UubmFtZSA9 IFFNQUtFCiBxbWFrZS52YWx1ZSA9ICQkc2hlbGxfcGF0aCgkJFFNQUtFX1FNQUtFKQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvbHVwZGF0ZS5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9s dXBkYXRlLnBybwppbmRleCBjODY3YWNlOTA5OS4uYmY2ODcxMTNjODYgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcXQ1L2ZpbGVzL2x1cGRhdGUucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL2x1cGRh dGUucHJvCkBAIC0zLDEzICszLDE0IEBAIFFUID0gY29yZSBxbWwgbmV0d29yayBjb3JlLXByaXZh dGUgcW1sZGV2dG9vbHMtcHJpdmF0ZQogREVGSU5FUyArPSBRVF9OT19DQVNUX1RPX0FTQ0lJIFFU X05PX0NBU1RfRlJPTV9BU0NJSQogCiBpbmNsdWRlKC4uL3NoYXJlZC9mb3JtYXRzLnByaSkKLWlu Y2x1ZGUoLi4vc2hhcmVkL3Byb3BhcnNlci5wcmkpCiAKLURFRklORVMgKz0gUFJPRVZBTFVBVE9S X0RFQlVHCiAKIFNPVVJDRVMgKz0gXAogICAgIG1haW4uY3BwIFwKICAgICBtZXJnZS5jcHAgXAor ICAgIC4uL3NoYXJlZC9wcm9qZWN0ZGVzY3JpcHRpb25yZWFkZXIuY3BwIFwKKyAgICAuLi9zaGFy ZWQvcnVucXR0b29sLmNwcCBcCisgICAgLi4vc2hhcmVkL3FyY3JlYWRlci5jcHAgXAogICAgIC4u L3NoYXJlZC9zaW10ZXh0aC5jcHAgXAogICAgIFwKICAgICBjcHAuY3BwIFwKQEAgLTIwLDYgKzIx LDkgQEAgU09VUkNFUyArPSBxZGVjbGFyYXRpdmUuY3BwCiAKIEhFQURFUlMgKz0gXAogICAgIGx1 cGRhdGUuaCBcCisgICAgLi4vc2hhcmVkL3Byb2plY3RkZXNjcmlwdGlvbnJlYWRlci5oIFwKKyAg ICAuLi9zaGFyZWQvcXJjcmVhZGVyLmggXAorICAgIC4uL3NoYXJlZC9ydW5xdHRvb2wuaCBcCiAg ICAgLi4vc2hhcmVkL3NpbXRleHRoLmgKIAogbWluZ3cgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUvZmlsZXMvbW9jL21vYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9tb2MvbW9jLnBybwpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ0MjVjZmI0NjIuLjAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvcXQ1L2ZpbGVzL21vYy9tb2MucHJvCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCww IEBACi1RVCArPSBjb3JlLXByaXZhdGUKLURFRklORVMgKz0gUVRfTU9DCi0KLWluY2x1ZGUobW9j LnByaSkKLUhFQURFUlMgKz0gcWRhdGV0aW1lX3AuaAotU09VUkNFUyArPSBtYWluLmNwcAotCi1s b2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xZGJ1c2NwcDJ4bWwv cWRidXNjcHAyeG1sLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FkYnVzY3BwMnhtbC9xZGJ1c2Nw cDJ4bWwucHJvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2E2ZDM2YmNiOC4uMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcWRidXNjcHAyeG1sL3FkYnVzY3BwMnht bC5wcm8KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVFUID0gY29yZS1wcml2YXRlIGRi dXMtcHJpdmF0ZQotUU1BS0VfQ1hYRkxBR1MgKz0gJCRRVF9IT1NUX0NGTEFHU19EQlVTCi0KLWlu Y2x1ZGUoLi4vbW9jL21vYy5wcmkpCi0KLVNPVVJDRVMgKz0gcWRidXNjcHAyeG1sLmNwcAotCi1s b2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xbGFsci9xbGFsci5w cm8gYi9zcmNwa2dzL3F0NS9maWxlcy9xbGFsci9xbGFsci5wcm8KZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDNkNzc2NzI3ZmVmLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9m aWxlcy9xbGFsci9xbGFsci5wcm8KKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TT1VS Q0VTICs9IFwKLSAgICBjb21wcmVzcy5jcHAgXAotICAgIGNwcGdlbmVyYXRvci5jcHAgXAotICAg IGRvdGdyYXBoLmNwcCBcCi0gICAgbGFsci5jcHAgXAotICAgIG1haW4uY3BwIFwKLSAgICBwYXJz ZXRhYmxlLmNwcCBcCi0gICAgcmVjb2duaXplci5jcHAgXAotICAgIGdyYW1tYXIuY3BwCi0KLUhF QURFUlMgKz0gXAotICAgIGNvbXByZXNzLmggXAotICAgIGNwcGdlbmVyYXRvci5oIFwKLSAgICBk b3RncmFwaC5oIFwKLSAgICBsYWxyLmggXAotICAgIHBhcnNldGFibGUuaCBcCi0gICAgcmVjb2du aXplci5oIFwKLSAgICBncmFtbWFyX3AuaAotCi1PVEhFUl9GSUxFUyArPSBcCi0gICAgbGFsci5n Ci0KLWxvYWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGltcG9y dHNjYW5uZXIucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8KaW5k ZXggZjkyMjM0YWQ0NDIuLjU3YzIyOGI4NTQwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxl cy9xbWxpbXBvcnRzY2FubmVyLnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRz Y2FubmVyLnBybwpAQCAtMSw3ICsxLDcgQEAKIFFUID0gY29yZSBxbWwgbmV0d29yayBxbWxkZXZ0 b29scy1wcml2YXRlCiBERUZJTkVTICs9IFFUX05PX0NBU1RfVE9fQVNDSUkgUVRfTk9fQ0FTVF9G Uk9NX0FTQ0lJCiAKLVNPVVJDRVMgKz0gbWFpbi5jcHAgLi4vLi4vc3JjL3FtbC9wYXJzZXIvcXFt bGpzZ3JhbW1hci5jcHAKK1NPVVJDRVMgKz0gbWFpbi5jcHAgLi4vLi4vc3JjL3FtbC9xcW1sanNn cmFtbWFyLmNwcAogCiBRTUFLRV9UQVJHRVRfREVTQ1JJUFRJT04gPSBRTUwgSW1wb3J0IFNjYW5u ZXIKIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8gYi9zcmNwa2dz L3F0NS9maWxlcy9xbWxsaW50LnBybwppbmRleCAwMzJkMDJjZjMzYi4uNDA5YTM3OGJmY2IgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvCisrKyBiL3NyY3BrZ3MvcXQ1 L2ZpbGVzL3FtbGxpbnQucHJvCkBAIC0xLDYgKzEsNiBAQAotUVQgPSBjb3JlIHFtbCBuZXR3b3Jr IHFtbGRldnRvb2xzLXByaXZhdGUKK1FUID0gY29yZSBxbWwgcW1sZGV2dG9vbHMtcHJpdmF0ZQog Ci1TT1VSQ0VTICs9IG1haW4uY3BwIC4uLy4uL3NyYy9xbWwvcGFyc2VyL3FxbWxqc2dyYW1tYXIu Y3BwCitTT1VSQ0VTICs9IG1haW4uY3BwIC4uLy4uL3NyYy9xbWwvcXFtbGpzZ3JhbW1hci5jcHAK IAogUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9OID0gUU1MIFN5bnRheCBWZXJpZmllcgogCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xbWxtaW4ucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMv cW1sbWluLnBybwppbmRleCA1OGY3NWM3NmUwMS4uZjA5NmI0MTRiZjQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcXQ1L2ZpbGVzL3FtbG1pbi5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1sbWlu LnBybwpAQCAtMSw1ICsxLDUgQEAKIFFUICAgICAgID0gY29yZSBxbWwgbmV0d29yayBxbWxkZXZ0 b29scy1wcml2YXRlCi1TT1VSQ0VTICs9IG1haW4uY3BwIC4uLy4uL3NyYy9xbWwvcGFyc2VyL3Fx bWxqc2dyYW1tYXIuY3BwCitTT1VSQ0VTICs9IG1haW4uY3BwIC4uLy4uL3NyYy9xbWwvcXFtbGpz Z3JhbW1hci5jcHAKIAogUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9OID0gUU1ML0pTIE1pbmlmaWVy CiAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3F0dG9vbHNfc3JjLnBybyBiL3NyY3Br Z3MvcXQ1L2ZpbGVzL3F0dG9vbHNfc3JjLnBybwppbmRleCA3YjM5ZjkyOWU3Ny4uYzczNDQ0MDRj MDUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3F0dG9vbHNfc3JjLnBybworKysgYi9z cmNwa2dzL3F0NS9maWxlcy9xdHRvb2xzX3NyYy5wcm8KQEAgLTUsNyArNSw2IEBAIFNVQkRJUlMg PSBhc3Npc3RhbnQgXAogCWRlc2lnbmVyIFwKIAlsaW5ndWlzdCBcCiAJcWRidXMgXAotCXFkb2Mg XAogCXF0YXR0cmlidXRpb25zc2Nhbm5lcgogCiBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3JjYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxl cy9yY2MucHJvCmluZGV4IDgwNDZiNzJiNDhkLi4zMjk2OTc5NzY5YiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9xdDUvZmlsZXMvcmNjLnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy9yY2MucHJvCkBA IC02LDMgKzYsNSBAQCBTT1VSQ0VTICs9IG1haW4uY3BwCiAKIFFNQUtFX1RBUkdFVF9ERVNDUklQ VElPTiA9ICJRdCBSZXNvdXJjZSBDb21waWxlciIKIGxvYWQocXRfdG9vbCkKKworREVGSU5FUyAr PSBRVF9GRUFUVVJFX3pzdGQ9LTEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3JjYy9y Y2MucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcmNjL3JjYy5wcm8KZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDU4MWNkNDU2NGY2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9m aWxlcy9yY2MvcmNjLnBybworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotREVGSU5FUyAr PSBRVF9SQ0MKLQotaW5jbHVkZShyY2MucHJpKQotU09VUkNFUyArPSBtYWluLmNwcAotCi1sb2Fk KHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy91aWMucHJvIGIvc3JjcGtn cy9xdDUvZmlsZXMvdWljLnBybwppbmRleCAzMGY5ODY0NGViNy4uNzRkN2RiZDg3OGYgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMv dWljLnBybwpAQCAtMiw2ICsyLDcgQEAgUVQgPSBjb3JlIHFtbCBjb3JlLXByaXZhdGUgcW1sZGV2 dG9vbHMtcHJpdmF0ZQogREVGSU5FUyArPSBRVF9VSUMgUVRfTk9fQ0FTVF9GUk9NX0FTQ0lJIFFU X05PX0ZPUkVBQ0gKIAogaW5jbHVkZSh1aWMucHJpKQoraW5jbHVkZShzaGFyZWQvc2hhcmVkLnBy aSkKIGluY2x1ZGUoY3BwL2NwcC5wcmkpCiAKIEhFQURFUlMgKz0gdWljLmgKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy91aWMucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvdWljL3Vp Yy5wcm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3OGIxMjM3NTlmLi4wMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy91aWMvdWljLnBybworKysgL2Rldi9udWxsCkBA IC0xLDExICswLDAgQEAKLURFRklORVMgKz0gUVRfVUlDCi0KLWluY2x1ZGUodWljLnByaSkKLWlu Y2x1ZGUoY3BwL2NwcC5wcmkpCi0KLUhFQURFUlMgKz0gdWljLmgKLQotU09VUkNFUyArPSBtYWlu LmNwcCBcCi0gICAgICAgICAgIHVpYy5jcHAKLQotbG9hZChxdF90b29sKQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAxLUZpeC1jb25mbGljdC1iZXR3ZWVuLW11c2wtbGliYy1k aXJlbnQuaC1hbmQtbHNzLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAxLUZpeC1jb25m bGljdC1iZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQuaC1hbmQtbHNzLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA0ZjIzYTIyZjQ1MC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDAxLUZpeC1jb25mbGljdC1iZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQu aC1hbmQtbHNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAxYWMy ODJhZDNhODU5MDc3Y2JmZjhiZjQ3NzNkYjliYjViNmE1YmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1 biwgMSBGZWIgMjAxNSAxMzo0MTowOCArMDEwMAotU3ViamVjdDogW1BBVENIIDEvNl0gRml4IGNv bmZsaWN0IGJldHdlZW4gbXVzbCBsaWJjIDxkaXJlbnQuaD4gYW5kIGxzcwotCi1JbmNsdWRlIDxk aXJlbnQuaD4gbGF0ZSB0byBhdm9pZCB0aGUgbWFjcm8gZ2V0ZGVudHM2NCBpbiBtdXNsCi1saWJj J3MgPGRpcmVudC5oPiB0byBjb25mbGljdCB3aXRoIGxpbnV4X3N5Y2FsbF9zdXBwb3J0LmguCi0t LS0KLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVy YXRpb25fc2VydmVyLmNjIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dl bmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L2Ny YXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MKLWluZGV4IDg2MGU4YmMu LmYwYWE4MDEgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJh dGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MKLUBAIC0yOCw3 ICsyOCw2IEBACi0gLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2lu Y2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxsaW1pdHMu aD4KLSAjaW5jbHVkZSA8cG9sbC5oPgotQEAgLTQ5LDYgKzQ4LDggQEAKLSAjaW5jbHVkZSAiY29t bW9uL2xpbnV4L2d1aWRfY3JlYXRvci5oIgotICNpbmNsdWRlICJjb21tb24vbGludXgvc2FmZV9y ZWFkbGluay5oIgotIAotKyNpbmNsdWRlIDxkaXJlbnQuaD4KLSsKLSBzdGF0aWMgY29uc3QgY2hh ciBrQ29tbWFuZFF1aXQgPSAneCc7Ci0gCi0gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7Ci0t LSAKLTIuMC41Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRp c3BhdGNoLXRvLW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNw YXRjaC10by1tdXNsLnBhdGNoCmluZGV4IDg2ZTA5ZDVjZmQzLi5kZTMyYTNkYWI5NSAxMDA2NDQK LS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRj aAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBh dGNoCkBAIC0xLDUgKzEsNSBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL2FsbG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJj LmNjCTIwMTctMDktMTkgMTg6MTU6MTUuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2RlZmF1 bHRfZGlzcGF0Y2hfdG9fZ2xpYmMuY2MJMjAxNy0xMC0wOSAxOTozNToxMS43NjIzODQ4MDkgKzAy MDAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3Iv YWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90b19nbGliYy5jYworLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9k ZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCiBAQCAtNiw2ICs2LDcgQEAKICAKICAjaW5jbHVk ZSA8bWFsbG9jLmg+CkBAIC04LDggKzgsOCBAQAogIC8vIFRoaXMgdHJhbnNsYXRpb24gdW5pdCBk ZWZpbmVzIGEgZGVmYXVsdCBkaXNwYXRjaCBmb3IgdGhlIGFsbG9jYXRvciBzaGltIHdoaWNoCiAg Ly8gcm91dGVzIGFsbG9jYXRpb25zIHRvIGxpYmMgZnVuY3Rpb25zLgogIC8vIFRoZSBjb2RlIGhl cmUgaXMgc3Ryb25nbHkgaW5zcGlyZWQgZnJvbSB0Y21hbGxvYydzIGxpYmNfb3ZlcnJpZGVfZ2xp YmMuaC4KLUBAIC01OSwzICs2MCw5OCBAQAotICAgICAmR2xpYmNHZXRTaXplRXN0aW1hdGUsIC8q IGdldF9zaXplX2VzdGltYXRlX2Z1bmN0aW9uICovCitAQCAtNzMsMyArNzQsOTIgQEAgY29uc3Qg QWxsb2NhdG9yRGlzcGF0Y2ggQWxsb2NhdG9yRGlzcGF0Y2g6OmRlZmF1bHRfZGlzcGF0Y2ggPSB7 CisgICAgIG51bGxwdHIsICAgICAgICAgICAgICAgLyogZnJlZV9kZWZpbml0ZV9zaXplX2Z1bmN0 aW9uICovCiAgICAgIG51bGxwdHIsICAgICAgICAgICAgICAgLyogbmV4dCAqLwogIH07CiArCkBA IC0zNywxOCArMzcsMTIgQEAKICsvLyByZXNvbHZlIHRoZSBzeW1ib2xzIGluIGxpYmMuc28KICt2 b2lkIG11c2xfbGliY19tZW1vcnlfaW5pdCh2b2lkKQogK3sKLSsgIHZvaWQqIGxpYmMgPSBkbG9w ZW4oImxpYmMiLCBSVExEX0xBWlkpOwotKyAgaWYgKCFsaWJjKQotKyAgICBsaWJjID0gZGxvcGVu KCJsaWJjLnNvIiwgUlRMRF9MQVpZKTsKLSsgIGlmICghbGliYykKLSsgICAgbGliYyA9IGRsb3Bl bigibGliYy5zby42IiwgUlRMRF9MQVpZKTsKLSsgIGxpYmNfbWFsbG9jID0gKHRfbGliY19tYWxs b2MpIGRsc3ltKGxpYmMsICJtYWxsb2MiKTsKLSsgIGxpYmNfY2FsbG9jID0gKHRfbGliY19jYWxs b2MpIGRsc3ltKGxpYmMsICJjYWxsb2MiKTsKLSsgIGxpYmNfcmVhbGxvYyA9ICh0X2xpYmNfcmVh bGxvYykgZGxzeW0obGliYywgInJlYWxsb2MiKTsKLSsgIGxpYmNfbWVtYWxpZ24gPSAodF9saWJj X21lbWFsaWduKSBkbHN5bShsaWJjLCAibWVtYWxpZ24iKTsKLSsgIGxpYmNfZnJlZSA9ICh0X2xp YmNfZnJlZSkgZGxzeW0obGliYywgImZyZWUiKTsKLSsgIGxpYmNfbWFsbG9jX3VzYWJsZV9zaXpl ID0gKHRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpIGRsc3ltKGxpYmMsICJtYWxsb2NfdXNhYmxl X3NpemUiKTsKLSsgIGRsY2xvc2UobGliYyk7CisrICBsaWJjX21hbGxvYyA9ICh0X2xpYmNfbWFs bG9jKSBkbHN5bShSVExEX05FWFQsICJtYWxsb2MiKTsKKysgIGxpYmNfY2FsbG9jID0gKHRfbGli Y19jYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgImNhbGxvYyIpOworKyAgbGliY19yZWFsbG9jID0g KHRfbGliY19yZWFsbG9jKSBkbHN5bShSVExEX05FWFQsICJyZWFsbG9jIik7CisrICBsaWJjX21l bWFsaWduID0gKHRfbGliY19tZW1hbGlnbikgZGxzeW0oUlRMRF9ORVhULCAibWVtYWxpZ24iKTsK KysgIGxpYmNfZnJlZSA9ICh0X2xpYmNfZnJlZSkgZGxzeW0oUlRMRF9ORVhULCAiZnJlZSIpOwor KyAgbGliY19tYWxsb2NfdXNhYmxlX3NpemUgPSAodF9saWJjX21hbGxvY191c2FibGVfc2l6ZSkg ZGxzeW0oUlRMRF9ORVhULCAibWFsbG9jX3VzYWJsZV9zaXplIik7CiArfQogK30gIC8vIGV4dGVy biAiQyIKICsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNi1zeXMtc2lnbmFs LmgtaXMtYS1ub25wb3J0YWJsZS1hbGlhcy1mb3Itc2lnbmFsLmgucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMDYtc3lzLXNpZ25hbC5oLWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9yLXNp Z25hbC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDkxZDY0NDBlMS4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA2LXN5cy1zaWduYWwuaC1p cy1hLW5vbnBvcnRhYmxlLWFsaWFzLWZvci1zaWduYWwuaC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDgxICswLDAgQEAKLUZyb20gN2UwYTJhNzJkMTZjMTE2OTk1NTgwNTRjMDFhMjA4MjUxN2Y3 ZGFjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5q YW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBTdW4sIDEgRmViIDIwMTUgMTQ6NDA6NDEgKzAxMDAKLVN1 YmplY3Q6IFtQQVRDSCA2LzZdIDxzeXMvc2lnbmFsLmg+IGlzIGEgbm9ucG9ydGFibGUgYWxpYXMg Zm9yIDxzaWduYWwuaD4KLQotLS0tCi0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9l eGNlcHRpb25faGFuZGxlci5jYyB8ICAyICstCi0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9p bmNsdWRlL3N5cy9zaWduYWwuaCAgICAgICB8IDM1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY29tbW9uL2NvbW1vbi5neXAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMSAtCi0gMyBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzcgZGVsZXRpb25zKC0p Ci0gZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N5cy9zaWdu YWwuaAotCi1kaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNj Ci1pbmRleCAzZTJkMTk2Li5jYzNiMWQzIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi1AQCAtNzgsNyArNzgsNyBAQAotICNp bmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS0jaW5jbHVkZSA8 c3lzL3NpZ25hbC5oPgotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8c3lzL3Vjb250 ZXh0Lmg+Ci0gI2luY2x1ZGUgPHN5cy91c2VyLmg+Ci0gI2luY2x1ZGUgPHVjb250ZXh0Lmg+Ci1k aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3lzL3NpZ25hbC5oIGIvc3Jj L2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3lzL3NpZ25hbC5oCi1kZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDIwYzgxZTkuLjAwMDAwMDAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9hbmRy b2lkL2luY2x1ZGUvc3lzL3NpZ25hbC5oCi0rKysgL2Rldi9udWxsCi1AQCAtMSwzNSArMCwwIEBA Ci0tLy8gQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLgotLS8vIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCi0tLy8KLS0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0 ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0tLy8gbWV0Ogot LS8vCi0tLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tLy8gICAgICogUmVkaXN0cmlidXRpb25z IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLS8vIGNvcHlyaWdodCBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIKLS0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlCi0tLy8gZGlzdHJpYnV0aW9uLgotLS8vICAgICAqIE5laXRoZXIgdGhlIG5h bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS0vLyBjb250cmlidXRvcnMg bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uCi0tLy8KLS0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0tLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS0vLyBMSU1JVEVEIFRPLCBU SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK LS0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFIENPUFlSSUdIVAotLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLS8vIFNQRUNJQUwsIEVYRU1QTEFS WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS0vLyBMSU1J VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT IE9GIFVTRSwKLS0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0tLy8gKElOQ0xVRElO RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg VVNFCi0tLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRiBTVUNIIERBTUFHRS4KLS0KLS0jaWZuZGVmIEdPT0dMRV9CUkVBS1BBRF9DT01NT05f QU5EUk9JRF9JTkNMVURFX1NZU19TSUdOQUxfSAotLSNkZWZpbmUgR09PR0xFX0JSRUFLUEFEX0NP TU1PTl9BTkRST0lEX0lOQ0xVREVfU1lTX1NJR05BTF9ICi0tCi0tI2luY2x1ZGUgPHNpZ25hbC5o PgotLQotLSNlbmRpZiAgLy8gR09PR0xFX0JSRUFLUEFEX0NPTU1PTl9BTkRST0lEX0lOQ0xVREVf U1lTX1NJR05BTF9ICi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jb21tb24uZ3lwIGIvc3JjL2Nv bW1vbi9jb21tb24uZ3lwCi1pbmRleCBjNDlmZjg1Li4xYTZiMWFlIDEwMDY0NAotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY29tbW9uL2NvbW1vbi5neXAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9jb21tb24uZ3lw Ci1AQCAtNDcsNyArNDcsNiBAQAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9saW5rLmgnLAot ICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zZ2lkZWZzLmgnLAotICAgICAgICAgJ2FuZHJvaWQv aW5jbHVkZS9zeXMvcHJvY2ZzLmgnLAotLSAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zeXMvc2ln bmFsLmgnLAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zeXMvdXNlci5oJywKLSAgICAgICAg ICdhbmRyb2lkL2luY2x1ZGUvdWNvbnRleHQuaCcsCi0gICAgICAgICAnYW5kcm9pZC90ZXN0aW5n L2luY2x1ZGUvd2NoYXIuaCcsCi0tLSAKLTIuMC41Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKaW5kZXggNjdjZTJjYjNmNzkuLjdiMzA3MTcx MzZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5m by5wYXRjaAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5w YXRjaApAQCAtMjksMTQgKzI5LDMgQEAKICAgIHN0cnVjdCBtYWxsaW5mbyBtaW5mbyA9IG1hbGxp bmZvKCk7CiAgI2lmIGRlZmluZWQoVVNFX1RDTUFMTE9DKQogICAgcmV0dXJuIG1pbmZvLnVvcmRi bGtzOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb250ZW50L2NoaWxk L2NvbnRlbnRfY2hpbGRfaGVscGVycy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCAr MDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb250ZW50L2NoaWxk L2NvbnRlbnRfY2hpbGRfaGVscGVycy5jYwkyMDE4LTAxLTI4IDA2OjIzOjE0Ljg5MTIzODUwNyAr MDEwMAotQEAgLTI1LDcgKzI1LDcgQEAKLSAvLyB0aG91Z2gsIHRoaXMgcHJvdmlkZXMgb25seSBh IHBhcnRpYWwgYW5kIG1pc2xlYWRpbmcgdmFsdWUuCi0gLy8gVW5mb3J0dW5hdGVseSBzb21lIHRl bGVtZXRyeSBiZW5jaG1hcmsgcmVseSBvbiBpdCBhbmQgdGhlc2UgbmVlZCB0bwotIC8vIGJlIHJl ZmFjdG9yZWQgYmVmb3JlIGdldHRpbmcgcmlkIG9mIHRoaXMuIFNlZSBjcmJ1Zy5jb20vNTgxMzY1 IC4KLS0jaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKQotKyNpZiBk ZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChPU19BTkRST0lEKQotIHNpemVfdCBHZXRNZW1v cnlVc2FnZUtCKCkgewotICAgc3RydWN0IG1hbGxpbmZvIG1pbmZvID0gbWFsbGluZm8oKTsKLSAg IHVpbnQ2NF90IG1lbV91c2FnZSA9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAw MTMtbXVzbC1zZXJpYWxpby5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMy1tdXNsLXNl cmlhbGlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjBlMGZhNzY4Zi4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEzLW11c2wtc2VyaWFsaW8u cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL2RldmljZS9zZXJpYWwvc2VyaWFsX2lvX2hhbmRsZXJfcG9zaXgu Y2MJMjAxNy0wMS0wMyAxMDoyODo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vZGV2aWNlL3NlcmlhbC9zZXJpYWxfaW9faGFuZGxlcl9wb3Np eC5jYwkyMDE3LTAyLTIzIDIxOjIwOjQyLjY1MDY2OTU2MyArMDEwMAotQEAgLTEyLDYgKzEyLDkg QEAKLSAKLSAjaWYgZGVmaW5lZChPU19MSU5VWCkKLSAjaW5jbHVkZSA8bGludXgvc2VyaWFsLmg+ Ci0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvaW9jdGxz Lmg+Ci0rI2VuZGlmCi0gCi0gLy8gVGhlIGRlZmluaXRpb24gb2Ygc3RydWN0IHRlcm1pb3MyIGlz IGNvcGllZCBmcm9tIGFzbS1nZW5lcmljL3Rlcm1iaXRzLmgKLSAvLyBiZWNhdXNlIGluY2x1ZGlu ZyB0aGF0IGhlYWRlciBkaXJlY3RseSBjb25mbGljdHMgd2l0aCB0ZXJtaW9zLmguCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoIGIvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5wYXRjaAppbmRleCBkOGRkMWFh OTBmNi4uNTcxMzZiYzJiY2QgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1t dXNsLXN0YWNrc3RhcnQucGF0Y2gKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11c2wt c3RhY2tzdGFydC5wYXRjaApAQCAtMSw1ICsxLDUgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS93dGYvU3Rh Y2tVdGlsLmNwcAkyMDE4LTAxLTI3IDIzOjA4OjQzLjU4NjQ3NTM0OSArMDEwMAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3Bs YXRmb3JtL3d0Zi9TdGFja1V0aWwuY3BwCTIwMTgtMDEtMjcgMjM6MTg6MjIuMjc0NTA1MjAzICsw MTAwCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9zdGFja191dGlsLmNjCTIwMTgtMDEtMjcgMjM6MDg6 NDMuNTg2NDc1MzQ5ICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9zdGFja191dGlsLmNjCTIw MTgtMDEtMjcgMjM6MTg6MjIuMjc0NTA1MjAzICswMTAwCiBAQCAtMjgsNyArMjgsNyBAQAogIC8v IEZJWE1FOiBPbiBNYWMgT1NYIGFuZCBMaW51eCwgdGhpcyBtZXRob2QgY2Fubm90IGVzdGltYXRl IHN0YWNrIHNpemUKICAvLyBjb3JyZWN0bHkgZm9yIHRoZSBtYWluIHRocmVhZC4KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMS1jaHJvbWl1bS1tb2pvLWdjYzgucGF0Y2ggYi9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMjEtY2hyb21pdW0tbW9qby1nY2M4LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzRmM2E5NzliMi4uMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDIxLWNocm9taXVtLW1vam8tZ2NjOC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE4ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbW9qby9wdWJsaWMvYy9zeXN0ZW0vbWFjcm9zLmgJMjAxOC0wNS0xNSAxNDo1ODo0Ni40NDg5 MTI2MzQgLTA0MDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbW9qby9w dWJsaWMvYy9zeXN0ZW0vbWFjcm9zLmgJMjAxOC0wNS0xNSAxNDo1ODo1Mi4wNDE3ODQ2MTMgLTA0 MDAKLUBAIC0xOCw3ICsxOCwxMyBAQAotICNlbmRpZgotIAotIC8vIExpa2UgdGhlIEMrKzExIHxh bGlnbm9mfCBvcGVyYXRvci4KLS0jaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAotKyNpZiBkZWZp bmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA4Ci0rLy8gR0NDIDggaGFzIGNoYW5nZWQgdGhl IGFsaWdub2Ygb3BlcmF0b3IgdG8gcmV0dXJuIHRoZSBtaW5pbWFsIGFsaWdubWVudAotKy8vIHJl cXVpcmVkIGJ5IHRoZSB0YXJnZXQgQUJJLCBpbnN0ZWFkIG9mIHRoZSBwcmVmZXJyZWQgYWxpZ25t ZW50LgotKy8vIFRoaXMgbWVhbnMgdGhhdCBvbiAzMi1iaXQgeDg2LCBpdCB3aWxsIHJldHVybiA0 IGluc3RlYWQgb2YgOC4KLSsvLyBVc2UgX19hbGlnbm9mX18gaW5zdGVhZCB0byBhdm9pZCB0aGlz LgotKyNkZWZpbmUgTU9KT19BTElHTk9GKHR5cGUpIF9fYWxpZ25vZl9fKHR5cGUpCi0rI2VsaWYg X19jcGx1c3BsdXMgPj0gMjAxMTAzTAotICNkZWZpbmUgTU9KT19BTElHTk9GKHR5cGUpIGFsaWdu b2YodHlwZSkKLSAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotICNkZWZpbmUgTU9KT19BTElHTk9G KHR5cGUpIF9fYWxpZ25vZl9fKHR5cGUpCi1nZW5lcmF0ZWQgYnkgY2dpdCB2MS4xIGF0IDIwMTgt MDUtMjggMTc6Mzg6NDEgKzAwMDAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAy Mi1saWJyZXNzbC1jb21wYXQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjItbGlicmVz c2wtY29tcGF0LnBhdGNoCmluZGV4IDI3N2NjNjA4NThmLi40ZTVmNjk3ZDcyYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIyLWxpYnJlc3NsLWNvbXBhdC5wYXRjaAorKysgYi9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMjItbGlicmVzc2wtY29tcGF0LnBhdGNoCkBAIC0xLDE1ICsx LDMgQEAKLS0tLSBxdGJhc2UvY29uZmlnLnRlc3RzL3VuaXgvb3BlbnNzbDExL29wZW5zc2wuY3Bw CTIwMTctMTEtMDUgMTY6MDc6NDAuOTYzMzg1MDcwIC0wNTAwCi0rKysgcXRiYXNlL2NvbmZpZy50 ZXN0cy91bml4L29wZW5zc2wxMS9vcGVuc3NsLmNwcAkyMDE3LTExLTA1IDE2OjA3OjUxLjc1NTI1 NTU0NSAtMDUwMAotQEAgLTM5LDcgKzM5LDcgQEAKLSAKLSAjaW5jbHVkZSA8b3BlbnNzbC9vcGVu c3Nsdi5oPgotIAotLSNpZiAhZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSKSB8fCBPUEVO U1NMX1ZFUlNJT05fTlVNQkVSLTAgPCAweDEwMTAwMDAwTAotKyNpZiAhZGVmaW5lZChPUEVOU1NM X1ZFUlNJT05fTlVNQkVSKSB8fCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLTAgPCAweDEwMTAwMDAw TCB8fCBkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQotICMgIGVycm9yICJPcGVuU1NM ID49IDEuMSBpcyByZXF1aXJlZCIKLSAjZW5kaWYKLSAKLQogZGlmZiAtLWdpdCBhL3NyYy9uZXR3 b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBiL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29u dGV4dF9vcGVuc3NsLmNwcAogaW5kZXggNDFiNzU5MzY0Yi4uMTdjZTViNGIzMCAxMDA2NDQKIC0t LSBxdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCkBAIC0zMSwx MCArMTksMTAgQEAgaW5kZXggODJmZjVlOWUzYS4uNzdlNWQwM2I3ZCAxMDA2NDQKIEBAIC00MDIs NyArNDAyLDcgQEAgREVGSU5FRlVOQzIoaW50LCBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5LCBTU0xf Q1RYICphLCBhLCBFVlBfUEtFWSAqYiwgYiwgcmV0dXJuIC0KICBERUZJTkVGVU5DMihpbnQsIFNT TF9DVFhfdXNlX1JTQVByaXZhdGVLZXksIFNTTF9DVFggKmEsIGEsIFJTQSAqYiwgYiwgcmV0dXJu IC0xLCByZXR1cm4pCiAgREVGSU5FRlVOQzMoaW50LCBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2Zp bGUsIFNTTF9DVFggKmEsIGEsIGNvbnN0IGNoYXIgKmIsIGIsIGludCBjLCBjLCByZXR1cm4gLTEs IHJldHVybikKLSBERUZJTkVGVU5DKFg1MDlfU1RPUkUgKiwgU1NMX0NUWF9nZXRfY2VydF9zdG9y ZSwgY29uc3QgU1NMX0NUWCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKFg1 MDlfU1RPUkUgKiwgU1NMX0NUWF9nZXRfY2VydF9zdG9yZSwgY29uc3QgU1NMX0NUWCAqYSwgYSwg cmV0dXJuIG51bGxwdHIsIHJldHVybikKIC0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAw eDEwMDAyMDAwTAogKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBMICYm ICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQotIERFRklORUZVTkMoU1NMX0NPTkZf Q1RYICosIFNTTF9DT05GX0NUWF9uZXcsIERVTU1ZQVJHLCBEVU1NWUFSRywgcmV0dXJuIDAsIHJl dHVybik7CisgREVGSU5FRlVOQyhTU0xfQ09ORl9DVFggKiwgU1NMX0NPTkZfQ1RYX25ldywgRFVN TVlBUkcsIERVTU1ZQVJHLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKTsKICBERUZJTkVGVU5DKHZv aWQsIFNTTF9DT05GX0NUWF9mcmVlLCBTU0xfQ09ORl9DVFggKmEsIGEsIHJldHVybiAscmV0dXJu KTsKICBERUZJTkVGVU5DMih2b2lkLCBTU0xfQ09ORl9DVFhfc2V0X3NzbF9jdHgsIFNTTF9DT05G X0NUWCAqYSwgYSwgU1NMX0NUWCAqYiwgYiwgcmV0dXJuLCByZXR1cm4pOwogZGlmZiAtLWdpdCBh L3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmggYi9zcmMvbmV0 d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCkBAIC01MCwzICszOCwxNCBA QCBpbmRleCA0ZmI4ZjI2Y2Y2Li4zYTdkZTkzMTEzIDEwMDY0NAogIFNTTF9DT05GX0NUWCAqcV9T U0xfQ09ORl9DVFhfbmV3KCk7CiAgdm9pZCBxX1NTTF9DT05GX0NUWF9mcmVlKFNTTF9DT05GX0NU WCAqYSk7CiAgdm9pZCBxX1NTTF9DT05GX0NUWF9zZXRfc3NsX2N0eChTU0xfQ09ORl9DVFggKmEs IFNTTF9DVFggKmIpOworLS0tIHF0YmFzZS9zcmMvbmV0d29yay9jb25maWd1cmUuanNvbgkyMDE5 LTAxLTI4IDE4OjExOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIC0JMjAxOS0wMy0xMSAwMDozMTo0 Mi44ODMyNjQyNDYgKzAxMDAKK0BAIC0xNjUsNyArMTY1LDcgQEAKKyAgICAgICAgICAgICAidGVz dCI6IHsKKyAgICAgICAgICAgICAgICAgImluY2x1ZGUiOiAib3BlbnNzbC9vcGVuc3Nsdi5oIiwK KyAgICAgICAgICAgICAgICAgInRhaWwiOiBbCistICAgICAgICAgICAgICAgICAgICAiI2lmICFk ZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIpIHx8IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIt MCA8IDB4MTAxMDAwMDBMIiwKKysgICAgICAgICAgICAgICAgICAgICIjaWYgIWRlZmluZWQoT1BF TlNTTF9WRVJTSU9OX05VTUJFUikgfHwgT1BFTlNTTF9WRVJTSU9OX05VTUJFUi0wIDwgMHgxMDEw MDAwMEwgfHwgZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikiLAorICAgICAgICAgICAg ICAgICAgICAgIiMgIGVycm9yIE9wZW5TU0wgPj0gMS4xIGlzIHJlcXVpcmVkIiwKKyAgICAgICAg ICAgICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2ggYi9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoCmluZGV4IDgxMDkyYzc3 YjQxLi45ZWFjNGU3MGVmYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIzLWVu YWJsZV90b29scy1jcm9zcy5wYXRjaAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjMtZW5h YmxlX3Rvb2xzLWNyb3NzLnBhdGNoCkBAIC0xLDI4ICsxLDM3IEBACiAtLS0gcXR0b29scy9zcmMv c3JjLnBybwkyMDE4LTA2LTA5IDEzOjEwOjM4LjAwMDAwMDAwMCArMDIwMAogKysrIHF0dG9vbHMv c3JjL3NyYy5wcm8JMjAxOC0wOC0xOSAwOTozNDoyOS44MDM2NzAyMDUgKzAyMDAKLUBAIC0xLDE2 ICsxLDEwIEBACitAQCAtMSwyMCArMSwxNCBAQAogIFRFTVBMQVRFID0gc3ViZGlycwogIAogLXF0 SGF2ZU1vZHVsZSh3aWRnZXRzKSB7CiAtICAgIG5vLXBuZyB7CiAtICAgICAgICBtZXNzYWdlKCJT b21lIGdyYXBoaWNzLXJlbGF0ZWQgdG9vbHMgYXJlIHVuYXZhaWxhYmxlIHdpdGhvdXQgUE5HIHN1 cHBvcnQiKQogLSAgICB9IGVsc2UgewotLSAgICAgICAgU1VCRElSUyA9IGFzc2lzdGFudCBcCi0t ICAgICAgICAgICAgICAgICAgcGl4ZWx0b29sIFwKLS0gICAgICAgICAgICAgICAgICBkZXNpZ25l cgotK1NVQkRJUlMgPSBhc3Npc3RhbnQgXAotKwlwaXhlbHRvb2wgXAotKwlkZXNpZ25lcgotIAot LSAgICAgICAgbGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCistICAgICAgICBRVF9GT1JfQ09O RklHICs9IHdpZGdldHMKKy0gICAgICAgIHF0Q29uZmlnKHB1c2hidXR0b24pOnF0Q29uZmlnKHRv b2xidXR0b24pIHsKKy0gICAgICAgICAgICBTVUJESVJTID0gYXNzaXN0YW50IFwKKy0gICAgICAg ICAgICAgICAgICAgICAgZGVzaWduZXIgXAorLSAgICAgICAgICAgICAgICAgICAgICBwaXhlbHRv b2wKKy0KKy0gICAgICAgICAgICBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIKKy0gICAgICAg IH0KKy0gICAgICAgIHF0SGF2ZU1vZHVsZShxdWljayk6cXRDb25maWcodGhyZWFkKTpxdENvbmZp Zyh0b29sYnV0dG9uKTogU1VCRElSUyArPSBkaXN0YW5jZWZpZWxkZ2VuZXJhdG9yCiAtICAgIH0K IC19CisrUVRfRk9SX0NPTkZJRyArPSB3aWRnZXRzCisrCisrU1VCRElSUyA9IGFzc2lzdGFudCBc CisrICAgICAgICAgIGRlc2lnbmVyIFwKKysgICAgICAgICAgcGl4ZWx0b29sCisrCiArbGluZ3Vp c3QuZGVwZW5kcyA9IGRlc2lnbmVyCisrCisrU1VCRElSUyArPSBkaXN0YW5jZWZpZWxkZ2VuZXJh dG9yCiAgCiAgU1VCRElSUyArPSBsaW5ndWlzdCBcCiAgICAgIHF0YXR0cmlidXRpb25zc2Nhbm5l cgotQEAgLTMxLDExICsyNSwxMSBAQAotICAgICBTVUJESVJTICs9IGFuZHJvaWRkZXBsb3lxdAor QEAgLTMxLDExICsyNSwxMSBAQCBtYWNvcyB7CisgICAgIFNVQkRJUlMgKz0gbWFjZGVwbG95cXQK ICB9CiAgCiAtcXRIYXZlTW9kdWxlKGRidXMpOiBTVUJESVJTICs9IHFkYnVzCkBAIC0zMCw4ICsz OSw4IEBACiAgCiAgd2luMzJ8d2lucnQ6U1VCRElSUyArPSB3aW5kZXBsb3lxdAogIHdpbnJ0OlNV QkRJUlMgKz0gd2lucnRydW5uZXIKLS1xdEhhdmVNb2R1bGUoZ3VpKTohYW5kcm9pZDohdWlraXQ6 IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFnCistcXRIYXZlTW9kdWxlKGd1aSk6IXdhc206 IWFuZHJvaWQ6IXVpa2l0OiFxbng6IXdpbnJ0OiBTVUJESVJTICs9IHF0ZGlhZwogK1NVQkRJUlMg Kz0gcXRkaWFnCiAgCiAgcXROb21ha2VUb29scyggXAotICAgICBwaXhlbHRvb2wgXAorICAgICBk aXN0YW5jZWZpZWxkZ2VuZXJhdG9yIFwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDAyNy1za2lhX2NwdS1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1za2lhX2Nw dS1iZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1MmYxOTBhM2IuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1za2lhX2NwdS1iZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2dwdS9HclR5cGVzLmgub3Jp ZwkyMDE4LTA5LTExIDE0OjM3OjU2LjgzMjgyMjA1NSArMDIwMAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvZ3B1L0dyVHlwZXMu aAkyMDE4LTA5LTExIDE0OjM4OjExLjQ2NDgyMTE4MyArMDIwMAotQEAgLTM0OCw5ICszNDgsNiBA QAotIHN0YXRpYyBjb25zdCBpbnQga0dyUGl4ZWxDb25maWdDbnQgPSBrTGFzdF9HclBpeGVsQ29u ZmlnICsgMTsKLSAKLSAvLyBBbGlhc2VzIGZvciBwaXhlbCBjb25maWdzIHRoYXQgbWF0Y2ggc2tp YSdzIGJ5dGUgb3JkZXIuCi0tI2lmbmRlZiBTS19DUFVfTEVORElBTgotLSAgICAjZXJyb3IgIlNr aWEgZ3B1IGN1cnJlbnRseSBhc3N1bWVzIGxpdHRsZSBlbmRpYW4iCi0tI2VuZGlmCi0gI2lmIFNL X1BNQ09MT1JfQllURV9PUkRFUihCLEcsUixBKQotICAgICBzdGF0aWMgY29uc3QgR3JQaXhlbENv bmZpZyBrU2tpYTg4ODhfR3JQaXhlbENvbmZpZyA9IGtCR1JBXzg4ODhfR3JQaXhlbENvbmZpZzsK LSAjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoUixHLEIsQSkKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAyOC13ZWJydGMtYmUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjgtd2VicnRjLWJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzFj NjVjOTI2Yi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI4LXdlYnJ0 Yy1iZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3R5cGVkZWZzLmgJMjAx OC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3R5cGVkZWZzLmgJMjAxOC0wOS0xNCAx Nzo1MDo0NS4xOTgxNTM5NDIgKzAyMDAKLUBAIC00Nyw2ICs0Nyw5IEBACi0gI2VsaWYgZGVmaW5l ZChfX3BuYWNsX18pCi0gI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCi0gI2RlZmluZSBXRUJS VENfQVJDSF9MSVRUTEVfRU5ESUFOCi0rI2VsaWYgZGVmaW5lZChfX01JUFNFQl9fKQotKyNkZWZp bmUgV0VCUlRDX0FSQ0hfTUlQU19GQU1JTFkKLSsjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJ QU4KLSAjZWxzZQotICNlcnJvciBQbGVhc2UgYWRkIHN1cHBvcnQgZm9yIHlvdXIgYXJjaGl0ZWN0 dXJlIGluIHR5cGVkZWZzLmgKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAyOS1tdXNsLWxpYmV2ZW50LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI5LW11 c2wtbGliZXZlbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMjY1YjYz OTk0Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjktbXVzbC1saWJl dmVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWVzc2FnZV9sb29wL21lc3NhZ2VfcHVtcF9s aWJldmVudC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21l c3NhZ2VfbG9vcC9tZXNzYWdlX3B1bXBfbGliZXZlbnQuY2MKLUBAIC0xNCw3ICsxNCw3IEBACi0g I2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV91dGlsLmgiCi0gI2luY2x1ZGUgImJhc2UvbG9nZ2lu Zy5oIgotICNpbmNsdWRlICJiYXNlL3Bvc2l4L2VpbnRyX3dyYXBwZXIuaCIKLS0jaW5jbHVkZSAi YmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9ldmVudC5oIgotKyNpbmNsdWRlICJldmVudC5oIgot ICNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5oIgotICNpbmNsdWRlICJiYXNlL3RyYWNlX2V2ZW50 L3RyYWNlX2V2ZW50LmgiCi0gI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90b29scy9nbi9ib290c3RyYXAvYm9vdHN0 cmFwLnB5CTIwMTgtMTAtMTggMDE6MjA6MTkuMjI0MTY5Nzg2ICswMjAwCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Rvb2xzL2duL2Jvb3RzdHJhcC9ib290c3RyYXAucHkJ MjAxOC0xMC0xOCAwMToyNjoxMS4yNzMxNDg4MDIgKzAyMDAKLUBAIC0zMiw2ICszMiw3IEBACi0g Ci0gaXNfd2luID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpCi0gaXNfbGludXggPSBz eXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKQotK2lzX2dudV9saW51eCA9IGlzX2xpbnV4 IGFuZCBwbGF0Zm9ybS5saWJjX3ZlcigpWzBdLnN0YXJ0c3dpdGgoJ2dsaWJjJykKLSBpc19tYWMg PSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZGFyd2luJykKLSBpc19haXggPSBzeXMucGxhdGZv cm0uc3RhcnRzd2l0aCgnYWl4JykKLSBpc19wb3NpeCA9IGlzX2xpbnV4IG9yIGlzX21hYyBvciBp c19haXgKLUBAIC0xOTMsNyArMTkzLDcgQEAKLSAgICAgICB7J0VOQUJMRV9NVVRFWF9QUklPUklU WV9JTkhFUklUQU5DRSc6ICdmYWxzZSd9KQotIAotICAgd3JpdGVfYnVpbGRmbGFnX2hlYWRlcl9t YW51YWxseShyb290X2dlbl9kaXIsICdiYXNlL2FsbG9jYXRvci9mZWF0dXJlcy5oJywKLS0gICAg ICB7J1VTRV9BTExPQ0FUT1JfU0hJTSc6ICd0cnVlJyBpZiBpc19saW51eCBlbHNlICdmYWxzZSd9 KQotKyAgICAgIHsnVVNFX0FMTE9DQVRPUl9TSElNJzogJ3RydWUnIGlmIGlzX2dudV9saW51eCBl bHNlICdmYWxzZSd9KQotIAotICAgd3JpdGVfYnVpbGRmbGFnX2hlYWRlcl9tYW51YWxseShyb290 X2dlbl9kaXIsICdiYXNlL2RlYnVnL2RlYnVnZ2luZ19mbGFncy5oJywKLSAgICAgICB7Ci1AQCAt NDUzLDggKzQ1Myw2IEBACi0gICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvc3VwZXJmYXN0aGFzaC9z dXBlcmZhc3RoYXNoLmMnLAotICAgXSkKLSAgIHN0YXRpY19saWJyYXJpZXNbJ2Jhc2UnXVsnc291 cmNlcyddLmV4dGVuZChbCi0tICAgICAgJ2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9jaGVjay5j YycsCi0tICAgICAgJ2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9leHRlbnNpb24uY2MnLAotICAg ICAgICdiYXNlL2F0X2V4aXQuY2MnLAotICAgICAgICdiYXNlL2Jhc2VfcGF0aHMuY2MnLAotICAg ICAgICdiYXNlL2Jhc2Vfc3dpdGNoZXMuY2MnLAotQEAgLTYyNSw2ICs2MjMsMTEgQEAKLSAgICAg ICAnYmFzZS92YWx1ZXMuY2MnLAotICAgICAgICdiYXNlL3Zsb2cuY2MnLAotICAgXSkKLSsgIGlm IGlzX2dudV9saW51eDoKLSsgICAgc3RhdGljX2xpYnJhcmllc1snYmFzZSddWydzb3VyY2VzJ10u ZXh0ZW5kKFsKLSsgICAgICAgICdiYXNlL2FsbG9jYXRvci9hbGxvY2F0b3JfY2hlY2suY2MnLAot KyAgICAgICAgJ2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9leHRlbnNpb24uY2MnLAotKyAgICBd KQotIAotICAgaWYgaXNfcG9zaXg6Ci0gICAgIHN0YXRpY19saWJyYXJpZXNbJ2Jhc2UnXVsnc291 cmNlcyddLmV4dGVuZChbCi1AQCAtNjYzLDI5ICs2NjYsMzEgQEAKLSAgICAgICAgICAgICAnYmFz ZS90aW1lL3RpbWVfZXhwbG9kZWRfcG9zaXguY2MnLAotICAgICAgICAgXSkKLSAKLS0gICAgc3Rh dGljX2xpYnJhcmllc1snbGliZXZlbnQnXSA9IHsKLS0gICAgICAgICdzb3VyY2VzJzogWwotLSAg ICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2J1ZmZlci5jJywKLS0gICAgICAg ICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9ldmJ1ZmZlci5jJywKLS0gICAgICAgICAg ICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9ldmRucy5jJywKLS0gICAgICAgICAgICAnYmFz ZS90aGlyZF9wYXJ0eS9saWJldmVudC9ldmVudC5jJywKLS0gICAgICAgICAgICAnYmFzZS90aGly ZF9wYXJ0eS9saWJldmVudC9ldmVudF90YWdnaW5nLmMnLAotLSAgICAgICAgICAgICdiYXNlL3Ro aXJkX3BhcnR5L2xpYmV2ZW50L2V2cnBjLmMnLAotLSAgICAgICAgICAgICdiYXNlL3RoaXJkX3Bh cnR5L2xpYmV2ZW50L2V2dXRpbC5jJywKLS0gICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9s aWJldmVudC9odHRwLmMnLAotLSAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50 L2xvZy5jJywKLS0gICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9wb2xsLmMn LAotLSAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L3NlbGVjdC5jJywKLS0g ICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9zaWduYWwuYycsCi0tICAgICAg ICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvc3RybGNweS5jJywKLS0gICAgICAgIF0s Ci0tICAgICAgICAndG9vbCc6ICdjYycsCi0tICAgICAgICAnaW5jbHVkZV9kaXJzJzogW10sCi0t ICAgICAgICAnY2ZsYWdzJzogY2ZsYWdzICsgWyctREhBVkVfQ09ORklHX0gnXSwKLS0gICAgfQot KyAgICBpZiBpc19nbnVfbGludXg6Ci0rICAgICAgc3RhdGljX2xpYnJhcmllc1snbGliZXZlbnQn XSA9IHsKLSsgICAgICAgICAgJ3NvdXJjZXMnOiBbCi0rICAgICAgICAgICAgICAnYmFzZS90aGly ZF9wYXJ0eS9saWJldmVudC9idWZmZXIuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9w YXJ0eS9saWJldmVudC9ldmJ1ZmZlci5jJywKLSsgICAgICAgICAgICAgICdiYXNlL3RoaXJkX3Bh cnR5L2xpYmV2ZW50L2V2ZG5zLmMnLAotKyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkv bGliZXZlbnQvZXZlbnQuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJl dmVudC9ldmVudF90YWdnaW5nLmMnLAotKyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkv bGliZXZlbnQvZXZycGMuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJl dmVudC9ldnV0aWwuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVu dC9odHRwLmMnLAotKyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvbG9n LmMnLAotKyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvcG9sbC5jJywK LSsgICAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L3NlbGVjdC5jJywKLSsg ICAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L3NpZ25hbC5jJywKLSsgICAg ICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L3N0cmxjcHkuYycsCi0rICAgICAg ICAgIF0sCi0rICAgICAgICAgICd0b29sJzogJ2NjJywKLSsgICAgICAgICAgJ2luY2x1ZGVfZGly cyc6IFtdLAotKyAgICAgICAgICAnY2ZsYWdzJzogY2ZsYWdzICsgWyctREhBVkVfQ09ORklHX0gn XSwKLSsgICAgICB9Ci0gCi0gICBpZiBpc19saW51eCBvciBpc19haXg6Ci0gICAgIGxkZmxhZ3Mu ZXh0ZW5kKFsnLXB0aHJlYWQnXSkKLSsgICAgbGRmbGFncy5leHRlbmQoWyctbGV2ZW50J10pCi0g Ci0gICAgIHN0YXRpY19saWJyYXJpZXNbJ3hkZ191c2VyX2RpcnMnXSA9IHsKLSAgICAgICAgICdz b3VyY2VzJzogWwotQEAgLTcwOSw3ICs3MTQsNyBAQAotICAgICAgICAgJ2Jhc2Uvc3lzX2luZm9f bGludXguY2MnLAotICAgICAgICAgJ2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51 eC5jYycsCi0gICAgIF0pCi0tICAgIGlmIGlzX2xpbnV4OgotKyAgICBpZiBpc19nbnVfbGludXg6 Ci0gICAgICAgc3RhdGljX2xpYnJhcmllc1snYmFzZSddWydzb3VyY2VzJ10uZXh0ZW5kKFsKLSAg ICAgICAgICdiYXNlL2FsbG9jYXRvci9hbGxvY2F0b3Jfc2hpbS5jYycsCi0gICAgICAgICAnYmFz ZS9hbGxvY2F0b3IvYWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90b19nbGliYy5jYycs Ci1AQCAtNzIxLDcgKzcyNiw3IEBACi0gICAgICAgc3RhdGljX2xpYnJhcmllc1snbGliZXZlbnQn XVsnc291cmNlcyddLmV4dGVuZChbCi0gICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZl bnQvZXBvbGwuYycsCi0gICAgICAgXSkKLS0gICAgZWxzZToKLSsgICAgaWYgaXNfYWl4OgotICAg ICAgIGxpYnMuZXh0ZW5kKFsnLWxydCddKQotICAgICAgIHN0YXRpY19saWJyYXJpZXNbJ2Jhc2Un XVsnc291cmNlcyddLmV4dGVuZChbCi0gICAgICAgICAgICdiYXNlL3Byb2Nlc3MvaW50ZXJuYWxf YWl4LmNjJwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMzLXJldmVydF9yZW1v dmVfb3VyX3VzZV9vZl9zeXNjYWxsX2Zvci1zdGF0eC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAzMy1yZXZlcnRfcmVtb3ZlX291cl91c2Vfb2Zfc3lzY2FsbF9mb3Itc3RhdHgucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNzc5YTA5Y2QwLi4wMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzMtcmV2ZXJ0X3JlbW92ZV9vdXJfdXNlX29mX3N5 c2NhbGxfZm9yLXN0YXR4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLURl c2NyaXB0aW9uOiByZXZlcnQgdXBzdHJlYW0gY29tbWl0IHRoYXQgcmVtb3ZlcyB1c2Ugb2Ygc3lz Y2FsbCgpIGFuZCBzdGF0eCgyKQotIFRoZSBjb21taXQgaHR0cHM6Ly9jb2RlLnF0LmlvL2NnaXQv cXQvcXRiYXNlLmdpdC9jb21taXQvP2lkPWI3ODg3ZjliNGZhYWQyMjIKLSByZW1vdmVzIHRoZSB1 c2Ugb2YgdGhlIGFib3ZlIG1lbnRpb25lZCBzeXNjYWxscy4gVGhpcyBtYWtlcyBRdCBub3QgYWJs ZQotIHRvIHJ1biBvbiBjdXJyZW50IHN0YWJsZSBzZXJ2ZXJzIHVuZGVyIGEgdGVzdGluZy91bnN0 YWJsZSBWTS4KLSAuCi0gVGhpcyBwYXRjaCBzaG91bGQgYmUgcmVtb3ZlZCBpbiB0ZXN0aW5nL3Vu c3RhYmxlIGFmdGVyIEJ1c3RlciBnZXRzIHJlbGVhc2VkLgotQXV0aG9yOiBMaXNhbmRybyBEYW1p w6FuIE5pY2Fub3IgUMOpcmV6IE1leWVyIDxsaXNhbmRyb0BkZWJpYW4ub3JnPgotRm9yd2FyZGVk OiBub3QtbmVlZGVkCi0KLS0tLQotIHNyYy9jb3JlbGliL2dsb2JhbC9taW5pbXVtLWxpbnV4X3Au aCAgICAgIHwgICAgNyAtLS0tCi0gc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfdW5p eC5jcHAgfCAgIDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hh bmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotLS0tIHF0YmFzZS9zcmMv Y29yZWxpYi9nbG9iYWwvbWluaW11bS1saW51eF9wLmgKLSsrKyBxdGJhc2Uvc3JjL2NvcmVsaWIv Z2xvYmFsL21pbmltdW0tbGludXhfcC5oCi1AQCAtNzUsMTQgKzc1LDkgQEAgUVRfQkVHSU5fTkFN RVNQQUNFCi0gICogLSBhY2NlcHQ0ICAgICAgICAgICAgICAgICAgICAyLjYuMjgKLSAgKiAtIHJl bmFtZWF0MiAgICAgICAgICAgICAgICAgIDMuMTYgICAgICAgICAgICAgICAgICAgIFFUX0NPTkZJ RyhyZW5hbWVhdDIpCi0gICogLSBnZXRyYW5kb20gICAgICAgICAgICAgICAgICAzLjE3ICAgICAg ICAgICAgICAgICAgICBRVF9DT05GSUcoZ2V0ZW50cm9weSkKLS0gKiAtIHN0YXR4ICAgICAgICAg ICAgICAgICAgICAgIDQuMTEgICAgICAgICAgICAgICAgICAgIFFUX0NPTkZJRyhzdGF0eCkKLSAg Ki8KLSAKLS0jaWYgUVRfQ09ORklHKHN0YXR4KQotLSMgIGRlZmluZSBNSU5MSU5VWF9NQUpPUiAg ICAgICAgNAotLSMgIGRlZmluZSBNSU5MSU5VWF9NSU5PUiAgICAgICAgMTEKLS0jICBkZWZpbmUg TUlOTElOVVhfUEFUQ0ggICAgICAgIDAKLS0jZWxpZiBRVF9DT05GSUcoZ2V0ZW50cm9weSkKLSsj aWYgUVRfQ09ORklHKGdldGVudHJvcHkpCi0gIyAgZGVmaW5lIE1JTkxJTlVYX01BSk9SICAgICAg ICAzCi0gIyAgZGVmaW5lIE1JTkxJTlVYX01JTk9SICAgICAgICAxNwotICMgIGRlZmluZSBNSU5M SU5VWF9QQVRDSCAgICAgICAgMAotLS0tIHF0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3Rl bWVuZ2luZV91bml4LmNwcAotKysrIHF0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVu Z2luZV91bml4LmNwcAotQEAgLTEsNiArMSw2IEBACi0gLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAq KgotLSoqIENvcHlyaWdodCAoQykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4KLSsqKiBDb3B5cmln aHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uCi0gKiogQ29weXJpZ2h0IChDKSAyMDE2IFRo ZSBRdCBDb21wYW55IEx0ZC4KLSAqKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2FtdWVsIEdhaXN0IDxz YW11ZWwuZ2Fpc3RAZWRlbHRlY2guY2g+Ci0gKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLwotQEAgLTg4LDYgKzg4LDcgQEAgZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZW1w b3JhcnlEaXJlY3RvcgotIAotICNpZiBkZWZpbmVkKFFfT1NfTElOVVgpCi0gIyAgaW5jbHVkZSA8 c3lzL2lvY3RsLmg+Ci0rIyAgaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAjICBpbmNsdWRlIDxz eXMvc2VuZGZpbGUuaD4KLSAjICBpbmNsdWRlIDxsaW51eC9mcy5oPgotIAotQEAgLTk1LDYgKzk2 LDI4IEBAIGV4dGVybiAiQyIgTlNTdHJpbmcgKk5TVGVtcG9yYXJ5RGlyZWN0b3IKLSAjaWZuZGVm IEZJQ0xPTkUKLSAjICBkZWZpbmUgRklDTE9ORSAgICAgICBfSU9XKDB4OTQsIDksIGludCkKLSAj ZW5kaWYKLSsKLSsjICBpZiBkZWZpbmVkKFFfT1NfQU5EUk9JRCkKLSsvLyByZW5hbWVhdDIoKSBh bmQgc3RhdHgoKSBhcmUgZGlzYWJsZWQgb24gQW5kcm9pZCBiZWNhdXNlIHF1aXRlIGEgZmV3IHN5 c3RlbXMKLSsvLyBjb21lIHdpdGggc2FuZGJveGVzIHRoYXQga2lsbCBhcHBsaWNhdGlvbnMgdGhh dCBtYWtlIHN5c3RlbSBjYWxscyBvdXRzaWRlIGEKLSsvLyB3aGl0ZWxpc3QgYW5kIHNldmVyYWwg QW5kcm9pZCB2ZW5kb3JzIGNhbid0IGJlIGJvdGhlcmVkIHRvIHVwZGF0ZSB0aGUgbGlzdC4KLSsj ICAgIHVuZGVmIFNZU19yZW5hbWVhdDIKLSsjICAgIHVuZGVmIFNZU19zdGF0eAotKyMgICAgdW5k ZWYgU1RBVFhfQkFTSUNfU1RBVFMKLSsjICBlbHNlCi0rIyAgICBpZiAhUVRfQ09ORklHKHJlbmFt ZWF0MikgJiYgZGVmaW5lZChTWVNfcmVuYW1lYXQyKQotK3N0YXRpYyBpbnQgcmVuYW1lYXQyKGlu dCBvbGRmZCwgY29uc3QgY2hhciAqb2xkcGF0aCwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXdw YXRoLCB1bnNpZ25lZCBmbGFncykKLSt7IHJldHVybiBzeXNjYWxsKFNZU19yZW5hbWVhdDIsIG9s ZGZkLCBvbGRwYXRoLCBuZXdmZCwgbmV3cGF0aCwgZmxhZ3MpOyB9Ci0rIyAgICBlbmRpZgotKwot KyMgICAgaWYgIVFUX0NPTkZJRyhzdGF0eCkgJiYgZGVmaW5lZChTWVNfc3RhdHgpCi0rIyAgICAg IGluY2x1ZGUgPGxpbnV4L3N0YXQuaD4KLStzdGF0aWMgaW50IHN0YXR4KGludCBkaXJmZCwgY29u c3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFnLCB1bnNpZ25lZCBtYXNrLCBzdHJ1Y3Qgc3RhdHgg KnN0YXR4YnVmKQotK3sgcmV0dXJuIHN5c2NhbGwoU1lTX3N0YXR4LCBkaXJmZCwgcGF0aG5hbWUs IGZsYWcsIG1hc2ssIHN0YXR4YnVmKTsgfQotKyMgICAgZWxpZiAhUVRfQ09ORklHKHN0YXR4KSAm JiAhZGVmaW5lZChTWVNfc3RhdHgpCi0rIyAgICAgIHVuZGVmIFNUQVRYX0JBU0lDX1NUQVRTCi0r IyAgICBlbmRpZgotKyMgIGVuZGlmIC8vICFRX09TX0FORFJPSUQKLSAjZW5kaWYKLSAKLSAjaWYg ZGVmaW5lZChRX09TX0FORFJPSUQpCi1AQCAtMzE1LDggKzMzOCwyMiBAQCBtdGltZShjb25zdCBU ICZzdGF0QnVmZmVyLCBpbnQpCi0gI2lmZGVmIFNUQVRYX0JBU0lDX1NUQVRTCi0gc3RhdGljIGlu dCBxdF9yZWFsX3N0YXR4KGludCBmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywg c3RydWN0IHN0YXR4ICpzdGF0eEJ1ZmZlcikKLSB7Ci0rI2lmZGVmIFFfQVRPTUlDX0lOVDhfSVNf U1VQUE9SVEVECi0rICAgIHN0YXRpYyBRQmFzaWNBdG9taWNJbnRlZ2VyPHFpbnQ4PiBzdGF0eFRl c3RlZCAgPSBRX0JBU0lDX0FUT01JQ19JTklUSUFMSVpFUigwKTsKLSsjZWxzZQotKyAgICBzdGF0 aWMgUUJhc2ljQXRvbWljSW50IHN0YXR4VGVzdGVkID0gUV9CQVNJQ19BVE9NSUNfSU5JVElBTEla RVIoMCk7Ci0rI2VuZGlmCi0rCi0rICAgIGlmIChzdGF0eFRlc3RlZC5sb2FkKCkgPT0gLTEpCi0r ICAgICAgICByZXR1cm4gLUVOT1NZUzsKLSsKLSAgICAgdW5zaWduZWQgbWFzayA9IFNUQVRYX0JB U0lDX1NUQVRTIHwgU1RBVFhfQlRJTUU7Ci0gICAgIGludCByZXQgPSBzdGF0eChmZCwgcGF0aG5h bWUsIGZsYWdzLCBtYXNrLCBzdGF0eEJ1ZmZlcik7Ci0rICAgIGlmIChyZXQgPT0gLTEgJiYgZXJy bm8gPT0gRU5PU1lTKSB7Ci0rICAgICAgICBzdGF0eFRlc3RlZC5zdG9yZSgtMSk7Ci0rICAgICAg ICByZXR1cm4gLUVOT1NZUzsKLSsgICAgfQotKyAgICBzdGF0eFRlc3RlZC5zdG9yZSgxKTsKLSAg ICAgcmV0dXJuIHJldCA9PSAtMSA/IC1lcnJubyA6IDA7Ci0gfQotIAotQEAgLTEyNTIsMTIgKzEy ODksMTQgQEAgYm9vbCBRRmlsZVN5c3RlbUVuZ2luZTo6cmVuYW1lRmlsZShjb25zdAotICAgICBp ZiAoUV9VTkxJS0VMWShzcmNQYXRoLmlzRW1wdHkoKSB8fCB0Z3RQYXRoLmlzRW1wdHkoKSkpCi0g ICAgICAgICByZXR1cm4gZW1wdHlGaWxlRW50cnlXYXJuaW5nKCksIGZhbHNlOwotIAotLSNpZiBk ZWZpbmVkKFJFTkFNRV9OT1JFUExBQ0UpICYmIFFUX0NPTkZJRyhyZW5hbWVhdDIpCi0rI2lmIGRl ZmluZWQoUkVOQU1FX05PUkVQTEFDRSkgJiYgKFFUX0NPTkZJRyhyZW5hbWVhdDIpIHx8IGRlZmlu ZWQoU1lTX3JlbmFtZWF0MikpCi0gICAgIGlmIChyZW5hbWVhdDIoQVRfRkRDV0QsIHNyY1BhdGgs IEFUX0ZEQ1dELCB0Z3RQYXRoLCBSRU5BTUVfTk9SRVBMQUNFKSA9PSAwKQotICAgICAgICAgcmV0 dXJuIHRydWU7Ci0gCi0rICAgIC8vIElmIHdlJ3JlIHVzaW5nIHN5c2NhbGwoKSwgY2hlY2sgZm9y IEVOT1NZUzsKLSsgICAgLy8gaWYgcmVuYW1lYXQyIGNhbWUgZnJvbSBsaWJjLCB3ZSBkb24ndCBh Y2NlcHQgRU5PU1lTLgotICAgICAvLyBXZSBjYW4gYWxzbyBnZXQgRUlOVkFMIGZvciBzb21lIG5v bi1sb2NhbCBmaWxlc3lzdGVtcy4KLS0gICAgaWYgKGVycm5vICE9IEVJTlZBTCkgewotKyAgICBp ZiAoKFFUX0NPTkZJRyhyZW5hbWVhdDIpIHx8IGVycm5vICE9IEVOT1NZUykgJiYgZXJybm8gIT0g RUlOVkFMKSB7Ci0gICAgICAgICBlcnJvciA9IFFTeXN0ZW1FcnJvcihlcnJubywgUVN5c3RlbUVy cm9yOjpTdGFuZGFyZExpYnJhcnlFcnJvcik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg IH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzNC1nY2MtOC4zLWJ1aWxkLnBh dGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDM0LWdjYy04LjMtYnVpbGQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YjQ1YzMxMzk2Li4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMzQtZ2NjLTguMy1idWlsZC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDIzNiArMCwwIEBACi1Gcm9tIDk3ZWMxZDE4ODJhODNjMjNjOTFmMGY3ZGFlYTQ4ZTA1 ODU4ZDhjMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaGlhZ28gTWFjaWVpcmEg PHRoaWFnby5tYWNpZWlyYUBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI4IEphbiAyMDE5IDE0OjMz OjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIEdDQyA4LjMKLQotUXVh bGlmaWVycyBpbiB0aGUgYXNtIHN0YXRlbWVudCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdsb2Jh bCBzY29wZS4gSQotdGhvdWdodCB0aGV5IHdlcmUgbmVjZXNzYXJ5IGZvciBMVE8sIGJ1dCBJIHRo ZSBjb21taXQgdG8gdGhpcyBmaWxlIHRoYXQKLWFkZGVkIHRoZW0gcHJlZGF0ZXMgbXkgd29yayBv biBzZXR0aW5nIHVwIExUTyBmb3IgR0NDLgotCi1DaGFuZ2UtSWQ6IElkOTgxNDBlMWMyZjA0MjZj YWJiZWZmZmQxNTdlMjNlNWVjZTY3YTQ5Ci1SZXZpZXdlZC1ieTogQWxsYW4gU2FuZGZlbGQgSmVu c2VuIDxhbGxhbi5qZW5zZW5AcXQuaW8+Ci0tLS0KLSAuLi4vSmF2YVNjcmlwdENvcmUvaml0L0pJ VFN0dWJzLmNwcCAgICAgICAgICAgfCA0OCArKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNo YW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv c3JjLzNyZHBhcnR5L2phdmFzY3JpcHRjb3JlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j cHAgYi9zcmMvM3JkcGFydHkvamF2YXNjcmlwdGNvcmUvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0 dWJzLmNwcAotaW5kZXggMWFiZGY4Yi4uOWY2MDc2MSAxMDA2NDQKLS0tLSBxdHNjcmlwdC9zcmMv M3JkcGFydHkvamF2YXNjcmlwdGNvcmUvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAot KysrIHF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2NyaXB0Q29yZS9q aXQvSklUU3R1YnMuY3BwCi1AQCAtMTE2LDcgKzExNiw3IEBAIENPTVBJTEVfQVNTRVJUKG9mZnNl dG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBzYXZlZEVCWCkgPT0gMHgzYywgSklUU3RhY2tGcmFt ZV9zCi0gQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxG cmFtZSkgPT0gMHg1OCwgSklUU3RhY2tGcmFtZV9jYWxsRnJhbWVfb2Zmc2V0X21hdGNoZXNfY3Rp VHJhbXBvbGluZSk7Ci0gQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJh bWUsIGNvZGUpID09IDB4NTAsIEpJVFN0YWNrRnJhbWVfY29kZV9vZmZzZXRfbWF0Y2hlc19jdGlU cmFtcG9saW5lKTsKLSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi50ZXh0XG4iCi0gIi5n bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0 aVRyYW1wb2xpbmUpICJcbiIKLUBAIC0xMzgsNyArMTM4LDcgQEAgU1lNQk9MX1NUUklORyhjdGlU cmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAicmV0IiAiXG4iCi0gKTsKLSAKLS1hc20gdm9sYXRp bGUgKAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xp bmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgotIFNZTUJP TF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi1AQCAtMTU0LDcgKzE1NCw3 IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJy ZXQiICJcbiIKLSApOwotICAgICAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi5nbG9ibCAi IFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgotIEhJREVfU1lNQk9MKGN0 aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKLSBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVn aHQpICI6IiAiXG4iCi1AQCAtMTc5LDcgKzE3OSw3IEBAIENPTVBJTEVfQVNTRVJUKG9mZnNldG9m KHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBzYXZlZFJCWCkgPT0gMHg0OCwgSklUU3RhY2tGcmFtZV9z Ci0gQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFt ZSkgPT0gMHg5MCwgSklUU3RhY2tGcmFtZV9jYWxsRnJhbWVfb2Zmc2V0X21hdGNoZXNfY3RpVHJh bXBvbGluZSk7Ci0gQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUs IGNvZGUpID09IDB4ODAsIEpJVFN0YWNrRnJhbWVfY29kZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFt cG9saW5lKTsKLSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJPTF9T VFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmUpICJc biIKLSBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCi1AQCAtMjA2LDcgKzIw Niw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKLSAgICAgInJldCIg IlxuIgotICk7Ci0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIuZ2xvYmwgIiBTWU1CT0xf U1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi0gSElERV9TWU1CT0woY3RpVk1UaHJv d1RyYW1wb2xpbmUpICJcbiIKLSBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAi OiIgIlxuIgotQEAgLTIyMiw3ICsyMjIsNyBAQCBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFt cG9saW5lKSAiOiIgIlxuIgotICAgICAicmV0IiAiXG4iCi0gKTsKLSAKLS1hc20gdm9sYXRpbGUg KAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkg IlxuIgotIEhJREVfU1lNQk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKLSBTWU1CT0xfU1RS SU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCi1AQCAtMjQyLDcgKzI0Miw3IEBAIFNZ TUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKLSAjZXJyb3IgIkpJVF9T VFVCX0FSR1VNRU5UX1ZBX0xJU1Qgbm90IHN1cHBvcnRlZCBvbiBBUk12Ny4iCi0gI2VuZGlmCi0g Ci0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dCIgIlxuIgotICIuYWxpZ24gMiIgIlxu IgotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICJcbiIKLUBAIC0yNjks NyArMjY5LDcgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAi YnggbHIiICJcbiIKLSApOwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLnRleHQiICJc biIKLSAiLmFsaWduIDIiICJcbiIKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93 VHJhbXBvbGluZSkgIlxuIgotQEAgLTI4Nyw3ICsyODcsNyBAQCBTWU1CT0xfU1RSSU5HKGN0aVZN VGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAiYnggbHIiICJcbiIKLSApOwotIAotLWFz bSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLnRleHQiICJcbiIKLSAiLmFsaWduIDIiICJcbiIKLSAi Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCi1AQCAtMzA1 LDcgKzMwNSw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIK LSAKLSAjZWxpZiBDT01QSUxFUihHQ0MpICYmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gCi0tYXNt IHZvbGF0aWxlICgKLSthc20gKAotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xp bmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlUcmFtcG9saW5lKSAiXG4iCi0gU1lNQk9MX1NUUklO RyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgotQEAgLTMyMyw3ICszMjMsNyBAQCBTWU1CT0xfU1RS SU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJtb3YgcGMsIGxyIiAiXG4iCi0gKTsK LSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3Rp Vk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGlu ZSkgIlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi1A QCAtNDE4LDcgKzQxOCw3IEBAIENPTVBJTEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFj a0ZyYW1lLCBjYWxsRnJhbWUpID09IDB4MzgsIEpJVFN0YWNrRnJhbWVfCi0gQ09NUElMRV9BU1NF UlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNvZGUpID09IDB4MzAsIEpJVFN0YWNr RnJhbWVfY29kZV9vZmZzZXRfbWF0Y2hlc19jdGlUcmFtcG9saW5lKTsKLSBDT01QSUxFX0FTU0VS VChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgc2F2ZWRFQlgpID09IDB4MWMsIEpJVFN0 YWNrRnJhbWVfc3R1Yl9hcmd1bWVudF9zcGFjZV9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOwotIAot LWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLnRleHRcbiIKLSAiLmdsb2JsICIgU1lNQk9MX1NU UklORyhjdGlUcmFtcG9saW5lKSAiXG4iCi0gSElERV9TWU1CT0woY3RpVHJhbXBvbGluZSkgIlxu IgotQEAgLTQ0MCw3ICs0NDAsNyBAQCBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAi XG4iCi0gICAgICJyZXQiICJcbiIKLSApOwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAi Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgotIEhJREVf U1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi0gU1lNQk9MX1NUUklORyhjdGlWTVRo cm93VHJhbXBvbGluZSkgIjoiICJcbiIKLUBAIC00NTYsNyArNDU2LDcgQEAgU1lNQk9MX1NUUklO RyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKLSAgICAgInJldCIgIlxuIgotICk7Ci0g ICAgIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhj dGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCi0gSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdo dCkgIlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKLUBA IC00ODAsNyArNDgwLDcgQEAgQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNr RnJhbWUsIGNhbGxGcmFtZSkgPT0gMHg1OCwgSklUU3RhY2tGcmFtZV8KLSBDT01QSUxFX0FTU0VS VChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY29kZSkgPT0gMHg0OCwgSklUU3RhY2tG cmFtZV9jb2RlX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOwotIENPTVBJTEVfQVNTRVJU KG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBzYXZlZFJCWCkgPT0gMHg3OCwgSklUU3Rh Y2tGcmFtZV9zdHViX2FyZ3VtZW50X3NwYWNlX21hdGNoZXNfY3RpVHJhbXBvbGluZSk7Ci0gCi0t YXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dFxuIgotICIuZ2xvYmwgIiBTWU1CT0xfU1RS SU5HKGN0aVRyYW1wb2xpbmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlUcmFtcG9saW5lKSAiXG4i Ci1AQCAtNTE1LDcgKzUxNSw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJc biIKLSAgICAgInJldCIgIlxuIgotICk7Ci0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIu Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi0gSElERV9T WU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKLSBTWU1CT0xfU1RSSU5HKGN0aVZNVGhy b3dUcmFtcG9saW5lKSAiOiIgIlxuIgotQEAgLTUzMSw3ICs1MzEsNyBAQCBTWU1CT0xfU1RSSU5H KGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAicmV0IiAiXG4iCi0gKTsKLSAK LS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpT3BU aHJvd05vdENhdWdodCkgIlxuIgotIEhJREVfU1lNQk9MKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJc biIKLSBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCi1AQCAtNTUx LDcgKzU1MSw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIK LSAjZXJyb3IgIkpJVF9TVFVCX0FSR1VNRU5UX1ZBX0xJU1Qgbm90IHN1cHBvcnRlZCBvbiBBUk12 Ny4iCi0gI2VuZGlmCi0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dCIgIlxuIgot ICIuYWxpZ24gMiIgIlxuIgotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUp ICJcbiIKLUBAIC01NzgsNyArNTc4LDcgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAi OiIgIlxuIgotICAgICAiYnggbHIiICJcbiIKLSApOwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNt ICgKLSAiLnRleHQiICJcbiIKLSAiLmFsaWduIDIiICJcbiIKLSAiLmdsb2JsICIgU1lNQk9MX1NU UklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgotQEAgLTU5Niw3ICs1OTYsNyBAQCBTWU1C T0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAiYnggbHIiICJc biIKLSApOwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLnRleHQiICJcbiIKLSAiLmFs aWduIDIiICJcbiIKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0 KSAiXG4iCi1AQCAtNjE0LDcgKzYxNCw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENh dWdodCkgIjoiICJcbiIKLSAKLSAjZWxpZiBDT01QSUxFUihHQ0MpICYmIENQVShBUk1fVFJBRElU SU9OQUwpCi0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dFxuIgotICIuZ2xvYmwg IiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlUcmFt cG9saW5lKSAiXG4iCi1AQCAtNjMyLDcgKzYzMiw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBv bGluZSkgIjoiICJcbiIKLSAgICAgIm1vdiBwYywgbHIiICJcbiIKLSApOwotIAotLWFzbSB2b2xh dGlsZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBv bGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi0gU1lN Qk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKLUBAIC0xMDI0LDcgKzEw MjQsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdGhyb3dTdGFja092ZXJmbG93RXJyb3Io Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsRAotICAgICBleHRlcm4gIkMiIHsgXAotICAg ICAgICAgcnR5cGUgSklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pOyBc Ci0gICAgIH07IFwKLS0gICAgYXNtIHZvbGF0aWxlICggXAotKyAgICBhc20gKCBcCi0gICAgICAg ICAiLnRleHQiICJcbiIgXAotICAgICAgICAgIi5hbGlnbiAyIiAiXG4iIFwKLSAgICAgICAgICIu Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aV8jI29wKSAiXG4iIFwKLUBAIC0xMDUzLDcgKzEwNTMs NyBAQCBDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgdGh1bmtS ZXR1cm5BZGRyZXNzKSA9PSBUSFVOS19SRVRVUgotICAgICBleHRlcm4gIkMiIHsgXAotICAgICAg ICAgcnR5cGUgSklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pOyBcCi0g ICAgIH07IFwKLS0gICAgYXNtIHZvbGF0aWxlICggXAotKyAgICBhc20gKCBcCi0gICAgICAgICAi Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlfIyNvcCkgIlxuIiBcCi0gICAgICAgICBISURFX1NZ TUJPTChjdGlfIyNvcCkgIlxuIiAgICAgICAgICAgICBcCi0gICAgICAgICBTWU1CT0xfU1RSSU5H KGN0aV8jI29wKSAiOiIgIlxuIiBcCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDAzNS1nY2MtOS4xLWJ1aWxkLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDM1LWdjYy05 LjEtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZGEzZDRjNzA4 Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzUtZ2NjLTkuMS1idWls ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gMGQ4OWRlYWQ0Mzk2 MTI2NjA2ZmI3OTU0YzBiYjBhMjczNGQyMzQ3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8YWxsYW4uamVuc2VuQHF0LmlvPgotRGF0ZTogVHVl LCAxMyBOb3YgMjAxOCAxNjowMDoyMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggY29tcGls ZSBpc3N1ZSB3aXRoIGdjYyA5Ci0KLUl0IGFwcGVhcnMgbWVzc2VubmVfdHdpc3RlcnMgaW4gdGhl IGxhdGVzdCBsaWJzdGRjKysgaGFzIG9uZSBtb3JlCi1yZXF1aXJlbWVudCBiZWZvcmUgaXQgaXMg d2lsbGluZyB0byBjb25zdHJ1Y3Qgd2l0aCBvdXIKLVN5c3RlbUdlbmVyYXRvciBzdHJ1Y3QgYXMg YW4gc3NlcSBwcm92aWRlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DaGFuZ2Ut SWQ6IElmMzgxNTFkMWZhNmY0MGE4MDI3NGFjYzI2ZDllZDZiNGFjNjA0OWZlCi1SZXZpZXdlZC1i eTogR2l1c2VwcGUgRCdBbmdlbG8gPGdpdXNlcHBlLmRhbmdlbG9Aa2RhYi5jb20+Ci1SZXZpZXdl ZC1ieTogVGhpYWdvIE1hY2llaXJhIDx0aGlhZ28ubWFjaWVpcmFAaW50ZWwuY29tPgotLS0tCi0K LSBxdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwIHwgMSArCi0gMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY29yZWxpYi9nbG9iYWwv cXJhbmRvbS5jcHAgYi9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKLWluZGV4IGViZjk4 NjRiMTUuLjU3NzczNmE4NjcgMTAwNjQ0Ci0tLS0gcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9x cmFuZG9tLmNwcAotKysrIHF0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKLUBA IC0yMTgsNiArMjE4LDcgQEAgc3RydWN0IFFSYW5kb21HZW5lcmF0b3I6OlN5c3RlbUdlbmVyYXRv cgotICNlbmRpZiAvLyBRX09TX1dJTlJUCi0gCi0gICAgIHN0YXRpYyBTeXN0ZW1HZW5lcmF0b3Ig JnNlbGYoKTsKLSsgICAgdHlwZWRlZiBxdWludDMyIHJlc3VsdF90eXBlOwotICAgICB2b2lkIGdl bmVyYXRlKHF1aW50MzIgKmJlZ2luLCBxdWludDMyICplbmQpIFFfREVDTF9OT0VYQ0VQVF9FWFBS KEZpbGxCdWZmZXJOb2V4Y2VwdCk7Ci0gCi0gICAgIC8vIEZvciBzdGQ6Om1lcnNlbm5lX3R3aXN0 ZXJfZW5naW5lIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZSBzb21ldGhpbmcKLS0tIAotMi4yMC4x Ci0KLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNo IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMmFjMDQyMDc2NAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaApAQCAtMCwwICsxLDEzIEBA CitkaWZmIC0tZ2l0IHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJj ZS9jb25maWcvbGludXgvY29uZmlnLmggc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAoraW5kZXggOWUzNjUzOS4uZjU4ODA4 MyAxMDA2NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3Bh cnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAorLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4 L2NvbmZpZy5oCitAQCAtNSw3ICs1LDcgQEAKKyAjZGVmaW5lIENQUF9QUk9HICJnY2MgLUUiCisg CisgLyogKi8KKy0jZGVmaW5lIEVOQUJMRV9OTFMgMQorKy8qICN1bmRlZiBFTkFCTEVfTkxTIDEg Ki8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFib3J0JyBmdW5jdGlvbi4g Ki8KKyAjZGVmaW5lIEhBVkVfQUJPUlQgMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDQxLWxpYnJlc3NsLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQxLWxpYnJlc3Ns LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iODlmZGRkMDFh YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MS1saWJyZXNzbC5w YXRjaApAQCAtMCwwICsxLDExIEBACistLS0gcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0X29wZW5zc2wuY3BwCTIwMTktMDYtMTMgMDY6MTg6MTguMDAwMDAwMDAwICswMjAwCisrKysg LQkyMDE5LTA2LTE3IDE0OjU5OjIyLjUwMTQ2MDg4MiArMDIwMAorQEAgLTYwNCw3ICs2MDQsNyBA QAorICAgICAgICAgICAgIHFfU1NMX3NldF9wc2tfc2VydmVyX2NhbGxiYWNrKHNzbCwgJnFfc3Ns X3Bza19zZXJ2ZXJfY2FsbGJhY2spOworICAgICB9CisgI2VuZGlmCistI2lmIE9QRU5TU0xfVkVS U0lPTl9OVU1CRVIgPj0gMHgxMDEwMTAwNkwKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+ PSAweDEwMTAxMDA2TCAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKyAgICAg Ly8gU2V0IHRoZSBjbGllbnQgY2FsbGJhY2sgZm9yIFRMU3YxLjMgUFNLCisgICAgIGlmIChtb2Rl ID09IFFTc2xTb2NrZXQ6OlNzbENsaWVudE1vZGUKKyAgICAgICAgICYmIFFTc2xTb2NrZXQ6OnNz bExpYnJhcnlCdWlsZFZlcnNpb25OdW1iZXIoKSA+PSAweDEwMTAxMDA2TCkgewpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNo IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTMyOTBkM2NjZAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3Qt YW5kcm9pZC5wYXRjaApAQCAtMCwwICsxLDIxIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0eS9vcGVubWF4X2RsL2RsL0JVSUxELmduCTIwMTktMDQt MDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTA1LTA2IDIzOjA4OjA5LjUz NzM0NjU0NiArMDIwMAorQEAgLTIwNiwxOCArMjA2LDYgQEAKKyAgICAgICAic3Avc3JjL2FybS9h cm12Ny9vbXhTUF9GRlRGd2RfUlRvQ0NTX0YzMl9TZnNfcy5TIiwKKyAgICAgICAic3Avc3JjL2Fy bS9hcm12Ny9vbXhTUF9GRlRJbnZfQ0NTVG9SX0YzMl9TZnNfcy5TIiwKKyAgICAgXQorLSAgICBp ZiAoYXJtX29wdGlvbmFsbHlfdXNlX25lb24pIHsKKy0gICAgICAjIFJ1bi10aW1lIE5FT04gZGV0 ZWN0aW9uLgorLSAgICAgIGRlcHMgPSBbCistICAgICAgICAiLy90aGlyZF9wYXJ0eS9hbmRyb2lk X3Rvb2xzOmNwdV9mZWF0dXJlcyIsCistICAgICAgXQorLQorLSAgICAgICMgVG8gZ2V0IHRoZSBf X2FuZHJvaWRfbG9nX3ByaW50IHJvdXRpbmUKKy0gICAgICBsaWJzID0gWyAibG9nIiBdCistCist ICAgICAgIyBEZXRlY3Rpb24gcm91dGluZQorLSAgICAgIHNvdXJjZXMgKz0gWyAic3Avc3JjL2Fy bS9kZXRlY3QuYyIgXQorLSAgICB9CisgICB9CisgCisgICAjIE5FT04gaW1wbGVtZW50YXRpb24g b2YgRkZULiBUaGlzIGxpYnJhcnkgaXMgTk9UCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRj aGVzL2xpYnJlc3NsLWNvbnN0LWJpby5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0My1s aWJyZXNzbC1jb25zdC1iaW8ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20g c3JjcGtncy9xdDUvcGF0Y2hlcy9saWJyZXNzbC1jb25zdC1iaW8ucGF0Y2gKcmVuYW1lIHRvIHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA0My1saWJyZXNzbC1jb25zdC1iaW8ucGF0Y2gKaW5kZXggZjM0 OTM4NjJjZDQuLmQzYTFmZTk2YzUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzL2xp YnJlc3NsLWNvbnN0LWJpby5wYXRjaAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDMtbGli cmVzc2wtY29uc3QtYmlvLnBhdGNoCkBAIC00LDEwICs0LDEwIEBACiAgI2VuZGlmCiAgREVGSU5F RlVOQzIoQklPICosIEJJT19uZXdfZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGZpbGVuYW1l LCBjb25zdCBjaGFyICptb2RlLCBtb2RlLCByZXR1cm4gMCwgcmV0dXJuKQogIERFRklORUZVTkMo dm9pZCwgRVJSX2NsZWFyX2Vycm9yLCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiwgRFVNTVlB UkcpCi0tREVGSU5FRlVOQyhCSU8gKiwgQklPX25ldywgQklPX01FVEhPRCAqYSwgYSwgcmV0dXJu IDAsIHJldHVybikKLS1ERUZJTkVGVU5DKEJJT19NRVRIT0QgKiwgQklPX3NfbWVtLCB2b2lkLCBE VU1NWUFSRywgcmV0dXJuIDAsIHJldHVybikKLStERUZJTkVGVU5DKEJJTyAqLCBCSU9fbmV3LCBj b25zdCBCSU9fTUVUSE9EICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQotK0RFRklORUZVTkMoY29u c3QgQklPX01FVEhPRCAqLCBCSU9fc19tZW0sIHZvaWQsIERVTU1ZQVJHLCByZXR1cm4gMCwgcmV0 dXJuKQorLURFRklORUZVTkMoQklPICosIEJJT19uZXcsIEJJT19NRVRIT0QgKmEsIGEsIHJldHVy biBudWxscHRyLCByZXR1cm4pCistREVGSU5FRlVOQyhCSU9fTUVUSE9EICosIEJJT19zX21lbSwg dm9pZCwgRFVNTVlBUkcsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhCSU8g KiwgQklPX25ldywgY29uc3QgQklPX01FVEhPRCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKytERUZJTkVGVU5DKGNvbnN0IEJJT19NRVRIT0QgKiwgQklPX3NfbWVtLCB2b2lkLCBEVU1N WUFSRywgcmV0dXJuIG51bGxwdHIsIHJldHVybikKICBERUZJTkVGVU5DKGludCwgQ1JZUFRPX251 bV9sb2NrcywgRFVNTVlBUkcsIERVTU1ZQVJHLCByZXR1cm4gMCwgcmV0dXJuKQogIERFRklORUZV TkModm9pZCwgQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrLCB2b2lkICgqYSkoaW50LCBpbnQs IGNvbnN0IGNoYXIgKiwgaW50KSwgYSwgcmV0dXJuLCBEVU1NWUFSRykKICBERUZJTkVGVU5DKHZv aWQsIENSWVBUT19zZXRfaWRfY2FsbGJhY2ssIHVuc2lnbmVkIGxvbmcgKCphKSgpLCBhLCByZXR1 cm4sIERVTU1ZQVJHKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA1LW11c2wt bm8tZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVj aW5mby5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDU2JQpyZW5hbWUgZnJvbSBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMDUtbXVzbC1uby1leGVjaW5mby5wYXRjaApyZW5hbWUgdG8gc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDQ0LXF0LW11c2wtZXhlY2luZm8ucGF0Y2gKaW5kZXggNjE1MTc3YmExNmUuLjk4 ZjNhMzg3NDVhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDUtbXVzbC1uby1l eGVjaW5mby5wYXRjaAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVj aW5mby5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS9kZWJ1Zy9zdGFja190cmFjZV9wb3NpeC5jYwkyMDE3LTExLTI4IDE0OjA2 OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTgtMDEtMjcgMjE6NTA6MDQuNjkz MjMxOTA1ICswMTAwCi1AQCAtMjYsNyArMjYsNyBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS8vYmFzZS9kZWJ1Zy9zdGFja190cmFjZV9wb3NpeC5jYy5vcmlnCTIwMTkt MDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTktMDUtMDYg MjM6MTY6MTMuMjQ1NTAyNDY3ICswMjAwCitAQCAtMjcsNyArMjcsNyBAQAogICNpZiAhZGVmaW5l ZChVU0VfU1lNQk9MSVpFKQogICNpbmNsdWRlIDxjeHhhYmkuaD4KICAjZW5kaWYKQEAgLTksNyAr OSw3IEBACiAgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CiAgI2VuZGlmCiAgCi1AQCAtODIsNyArODIs NyBAQAorQEAgLTg2LDcgKzg2LDcgQEAKICAgIC8vIE5vdGU6IGNvZGUgaW4gdGhpcyBmdW5jdGlv biBpcyBOT1QgYXN5bmMtc2lnbmFsIHNhZmUgKHN0ZDo6c3RyaW5nIHVzZXMKICAgIC8vIG1hbGxv YyBpbnRlcm5hbGx5KS4KICAKQEAgLTE4LDcgKzE4LDcgQEAKICAgIHN0ZDo6c3RyaW5nOjpzaXpl X3R5cGUgc2VhcmNoX2Zyb20gPSAwOwogICAgd2hpbGUgKHNlYXJjaF9mcm9tIDwgdGV4dC0+c2l6 ZSgpKSB7CiAgICAgIC8vIExvb2sgZm9yIHRoZSBzdGFydCBvZiBhIG1hbmdsZWQgc3ltYm9sLCBm cm9tIHNlYXJjaF9mcm9tLgotQEAgLTExNyw3ICsxMTcsNyBAQAorQEAgLTEyMSw3ICsxMjEsNyBA QAogICAgICAgIHNlYXJjaF9mcm9tID0gbWFuZ2xlZF9zdGFydCArIDI7CiAgICAgIH0KICAgIH0K QEAgLTI3LDggKzI3LDggQEAKICB9CiAgI2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpF KQogIAotQEAgLTEyOSw3ICsxMjksNyBAQAotICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFu ZGxlcigpIHt9CitAQCAtMTMzLDcgKzEzMyw3IEBACisgICB2aXJ0dWFsIH5CYWNrdHJhY2VPdXRw dXRIYW5kbGVyKCkgPSBkZWZhdWx0OwogIH07CiAgCiAtI2lmICFkZWZpbmVkKF9fVUNMSUJDX18p ICYmICFkZWZpbmVkKF9BSVgpCkBAIC0zNiw3ICszNiw3IEBACiAgdm9pZCBPdXRwdXRQb2ludGVy KHZvaWQqIHBvaW50ZXIsIEJhY2t0cmFjZU91dHB1dEhhbmRsZXIqIGhhbmRsZXIpIHsKICAgIC8v IFRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gc3RvcmUgYSA2NC1iaXQgbnVtYmVy IGluIGhleDoKICAgIC8vIDE2IGhleCBkaWdpdHMgKyAxIGZvciBudWxsLXRlcm1pbmF0b3IuCi1A QCAtMjA2LDcgKzIwNiw3IEBACitAQCAtMjE2LDcgKzIxNiw3IEBACiAgICB9CiAgI2VuZGlmICAv LyBkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCiAgfQpAQCAtNDUsNDQgKzQ1LDQ0IEBACiAgCiAgdm9p ZCBQcmludFRvU3RkZXJyKGNvbnN0IGNoYXIqIG91dHB1dCkgewogICAgLy8gTk9URTogVGhpcyBj b2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi1A QCAtNzQ5LDcgKzc0OSw3IEBACi0gLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2ln bmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gLy8gc3RhY2sgZHVtcGluZyBzaWdu YWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCitAQCAtODEy LDcgKzgxMiw3IEBACisgICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwg c2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKKyAgIC8vIHN0YWNrIGR1bXBpbmcgc2lnbmFs IGhhbmRsZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJlLgogIAogLSNpZiAh ZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQogKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlzaXplKHRy YWNlXyksIGNvdW50KTsKLSAKICAgIC8vIFRob3VnaCB0aGUgYmFja3RyYWNlIEFQSSBtYW4gcGFn ZSBkb2VzIG5vdCBsaXN0IGFueSBwb3NzaWJsZSBuZWdhdGl2ZQotQEAgLTc2NCwxMyArNzY0LDEz IEBACi0gICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQn cyB1c2VkIGJ5IGluLXByb2Nlc3MKLSAgIC8vIHN0YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRsZXIp LiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJlLgorICAgLy8gcmV0dXJuIHZhbHVl cywgd2UgdGFrZSBubyBjaGFuY2UuCisgICByZXR1cm4gYmFzZTo6c2F0dXJhdGVkX2Nhc3Q8c2l6 ZV90PihiYWNrdHJhY2UodHJhY2UsIGNvdW50KSk7CitAQCAtODI1LDEzICs4MjUsMTMgQEAKKyAv LyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5 IGluLXByb2Nlc3MKKyAvLyBzdGFjayBkdW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9j IG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4KICAKIC0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKICsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9B SVgpCiAgICBQcmludEJhY2t0cmFjZU91dHB1dEhhbmRsZXIgaGFuZGxlcjsKLSAgIFByb2Nlc3NC YWNrdHJhY2UodHJhY2VfLCBjb3VudF8sICZoYW5kbGVyKTsKKyAgIFByb2Nlc3NCYWNrdHJhY2Uo dHJhY2VfLCBjb3VudF8sIHByZWZpeF9zdHJpbmcsICZoYW5kbGVyKTsKICAjZW5kaWYKICB9CiAg CiAtI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCiArI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotIHZvaWQgU3RhY2tUcmFjZTo6T3V0cHV0 VG9TdHJlYW0oc3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeworIHZvaWQgU3RhY2tUcmFjZTo6T3V0 cHV0VG9TdHJlYW1XaXRoUHJlZml4KHN0ZDo6b3N0cmVhbSogb3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29u c3QgewogICAgU3RyZWFtQmFja3RyYWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyKG9zKTsKLSAgIFBy b2Nlc3NCYWNrdHJhY2UodHJhY2VfLCBjb3VudF8sICZoYW5kbGVyKTsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYwkyMDE3LTEx LTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCTIwMTgtMDEtMjcgMjI6MzE6MDgu Mjk2MzU5MDAwICswMTAwCi1AQCAtMjE0LDcgKzIxNCw3IEBACi0gCi0gc3RkOjpzdHJpbmcgU3Rh Y2tUcmFjZTo6VG9TdHJpbmcoKSBjb25zdCB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4w MDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTkyICswMjAw CitAQCAtMjMzLDcgKzIzMyw3IEBACisgfQorIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3Ry aW5nV2l0aFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CiAgICBzdGQ6 OnN0cmluZ3N0cmVhbSBzdHJlYW07CiAtI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZp bmVkKF9BSVgpCiArI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAg T3V0cHV0VG9TdHJlYW0oJnN0cmVhbSk7CisgICBPdXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgoJnN0 cmVhbSwgcHJlZml4X3N0cmluZyk7CiAgI2VuZGlmCiAgICByZXR1cm4gc3RyZWFtLnN0cigpOwot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2xvZ2dpbmcuY2MJMjAx Ny0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS9sb2dnaW5nLmNjCTIwMTgtMDEtMjcgMjI6NDY6MzQuOTcwNDA2 ODA3ICswMTAwCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2xv Z2dpbmcuY2MJMjAxNy0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAgKzAxMDAKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvbG9nZ2luZy5jYwkyMDE4LTAxLTI3IDIy OjQ2OjM0Ljk3MDQwNjgwNyArMDEwMAogQEAgLTU0Niw3ICs1NDYsNyBAQAogIAogIExvZ01lc3Nh Z2U6On5Mb2dNZXNzYWdlKCkgewpAQCAtOTIsMzMgKzkyLDE2IEBACiAgICAgICFkZWZpbmVkKE9T X0FJWCkKICAgIGlmIChzZXZlcml0eV8gPT0gTE9HX0ZBVEFMICYmICFiYXNlOjpkZWJ1Zzo6QmVp bmdEZWJ1Z2dlZCgpKSB7CiAgICAgIC8vIEluY2x1ZGUgYSBzdGFjayB0cmFjZSBvbiBhIGZhdGFs LCB1bmxlc3MgYSBkZWJ1Z2dlciBpcyBhdHRhY2hlZC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS93dGYvQXNz ZXJ0aW9ucy5jcHAJMjAxNy0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9w bGF0Zm9ybS93dGYvQXNzZXJ0aW9ucy5jcHAJMjAxOC0wMS0yOSAyMDoyMzoyNi40OTgxODU2MjMg KzAxMDAKLUBAIC01OSw3ICs1OSw2IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9hc3NlcnRpb25z LmNjCTIwMTktMDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTA1LTA2 IDIzOjEyOjA3LjA0MDk3NzI1OCArMDIwMAorQEAgLTUxLDggKzUxLDEwIEBACiAgI2lmIGRlZmlu ZWQoT1NfTUFDT1NYKSB8fCAoZGVmaW5lZChPU19MSU5VWCkgJiYgIWRlZmluZWQoX19VQ0xJQkNf XykpCiAgI2luY2x1ZGUgPGN4eGFiaS5oPgogICNpbmNsdWRlIDxkbGZjbi5oPgotLSNpbmNsdWRl IDxleGVjaW5mby5oPgorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8ZXhlY2lu Zm8uaD4KICAjZW5kaWYKKysjZW5kaWYKICAKICAjaWYgZGVmaW5lZChPU19BTkRST0lEKQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRj X2Jhc2UvY2hlY2tzLmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAwCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNf YmFzZS9jaGVja3MuY2MJMjAxOC0wMS0yOSAyMDozMjo0MS4wNzAxNjM1MTEgKzAxMDAKLUBAIC0x Niw3ICsxNiw3IEBACi0gI2luY2x1ZGUgPGNzdGRpbz4KLSAjaW5jbHVkZSA8Y3N0ZGxpYj4KLSAK LS0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykKLSsjaWYg ZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPGN4 eGFiaS5oPgotICNpbmNsdWRlIDxleGVjaW5mby5oPgotICNlbmRpZgotQEAgLTYwLDcgKzYwLDcg QEAKLSAvLyB0byBnZXQgdXNhYmxlIHN5bWJvbHMgb24gTGludXguIFRoaXMgaXMgY29waWVkIGZy b20gVjguIENocm9taXVtIGhhcyBhIG1vcmUKLSAvLyBhZHZhbmNlZCBzdGFjZSB0cmFjZSBzeXN0 ZW07IGFsc28gbW9yZSBkaWZmaWN1bHQgdG8gY29weS4KLSB2b2lkIER1bXBCYWNrdHJhY2UoKSB7 Ci0tI2lmIGRlZmluZWQoX19HTElCQ1hYX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0rI2lm IGRlZmluZWQoX19HTElCQ1hYX18pICYmIGRlZmluZWQoX19HTElCQ19fKQotICAgdm9pZCogdHJh Y2VbMTAwXTsKLSAgIGludCBzaXplID0gYmFja3RyYWNlKHRyYWNlLCBzaXplb2YodHJhY2UpIC8g c2l6ZW9mKCp0cmFjZSkpOwotICAgY2hhcioqIHN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyh0 cmFjZSwgc2l6ZSk7CisgI2luY2x1ZGUgPGFuZHJvaWQvbG9nLmg+CmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoIGIvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDk2NzUzYmVmMzAKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tz aXplLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK2RpZmYgLS1naXQgYS9zcmMvM3JkcGFydHkvY2hy b21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYyBiL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCitp bmRleCAwMmJmNDliLi4wNWVlMTgyIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5n L3NpbXBsZV90aHJlYWQuY2MKK0BAIC0xMyw3ICsxMyw3IEBAIG5hbWVzcGFjZSBwcCB7CisgbmFt ZXNwYWNlIHsKKyAKKyAvLyBVc2UgMk1CIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3IgTmF0aXZlIENs aWVudCwgb3RoZXJ3aXNlIHVzZSBzeXN0ZW0gZGVmYXVsdC4KKy0jaWYgZGVmaW5lZChfX25hdGl2 ZV9jbGllbnRfXykKKysjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgIWRlZmluZWQo X19HTElCQ19fKQorIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDIgKiAxMDI0ICog MTAyNDsKKyAjZWxzZQorIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDA7CitkaWZm IC0tZ2l0IGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRm b3JtLXBvc2l4LmNjIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3Jt L3BsYXRmb3JtLXBvc2l4LmNjCitpbmRleCBjZjdmM2VjLi5lMDZhNWNlIDEwMDY0NAorLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0 Zm9ybS1wb3NpeC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9z cmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYworQEAgLTc2MSw3ICs3NjEsNyBAQCB2 b2lkIFRocmVhZDo6U3RhcnQoKSB7CisgI2lmIFY4X09TX01BQ09TWAorICAgICAvLyBEZWZhdWx0 IG9uIE1hYyBPUyBYIGlzIDUxMmtCIC0tIGJ1bXAgdXAgdG8gMU1CCisgICAgIHN0YWNrX3NpemUg PSAxICogMTAyNCAqIDEwMjQ7CistI2VsaWYgVjhfT1NfQUlYCisrI2VsaWYgVjhfT1NfQUlYIHx8 ICFkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgLy8gRGVmYXVsdCBvbiBBSVggaXMgOTZrQiAtLSBi dW1wIHVwIHRvIDJNQgorICAgICBzdGFja19zaXplID0gMiAqIDEwMjQgKiAxMDI0OworICNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmll ci5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ni1zYW5kYm94LW1lbWJhcnJpZXIucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3Mzk3MWYyNDMyCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFy cmllci5wYXRjaApAQCAtMCwwICsxLDYwIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2Nh bGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaAorQEAgLTEwNjMsNCArMTA2 Myw4IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKKyAjZW5kaWYKKyAKKysjaWYg IWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDI4Mwor KyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19BUk02 NF9MSU5VWF9TWVNDQUxMU19IXworCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCitAQCAtMTM4NSw2ICsxMzg1LDEwIEBACisg I2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAoX19OUl9TWVNDQUxMX0JBU0UrMzg1KQorICNlbmRp ZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCisrI2RlZmluZSBfX05SX21lbWJh cnJpZXIgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4OSkKKysjZW5kaWYKKysKKyAvLyBBUk0gcHJpdmF0 ZSBzeXNjYWxscy4KKyAjaWYgIWRlZmluZWQoX19BUk1fTlJfQkFTRSkKKyAjZGVmaW5lIF9fQVJN X05SX0JBU0UgKF9fTlJfU1lTQ0FMTF9CQVNFICsgMHhGMDAwMCkKKworLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZf MzJfbGludXhfc3lzY2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAor QEAgLTE0MjIsNSArMTQyMiw5IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzNTYKKyAj ZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9t ZW1iYXJyaWVyIDM3NQorKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19YODZfMzJfTElOVVhfU1lTQ0FMTFNfSF8KKyAKKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0 X2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v L3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgKK0BA IC0xMjkwLDUgKzEyOTAsOSBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMzE5CisgI2Vu ZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKKysjZGVmaW5lIF9fTlJfbWVt YmFycmllciAzMjQKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVN X0hFQURFUlNfWDg2XzY0X0xJTlVYX1NZU0NBTExTX0hfCisgCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lz Y2FsbF9zZXRzLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtMzcwLDYg KzM3MCw3IEBACisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9leGl0OgorICAg ICBjYXNlIF9fTlJfZXhpdF9ncm91cDoKKysgICAgY2FzZSBfX05SX21lbWJhcnJpZXI6CisgICAg IGNhc2UgX19OUl93YWl0NDoKKyAgICAgY2FzZSBfX05SX3dhaXRpZDoKKyAjaWYgZGVmaW5lZChf X2kzODZfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1nbi1jcm9zcy1z eXNyb290LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3Qu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlNjY4OWE0MTgz Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5 c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorVGhlcmUgaXMgbm8gcmVhc29uIHRvIHJ1biB0 aGlzIHNjcmlwdCBhbmQgcnVubmluZyBpdCBmYWlscyBvbiBhcmNoaXRlY3R1cmVzCitjaHJvbWl1 bSBkb2VzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnQgKHN1Y2ggYXMgcHBjNjQpLgorCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2NvbmZpZy9wb3NpeC9CVUlMRC5n bgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9z aXgvQlVJTEQuZ24KK0BAIC0xMDIsMTIgKzEwMiwxMiBAQCBjb25maWcoInJ1bnRpbWVfbGlicmFy eSIpIHsKKyAgICAgICAjIHdoZW4gdHVybmluZyB0aGUgc3lzcm9vdCBvbiBvciBvZmYuIChkZWZp bmVzIGFyZSBwYXNzZWQgdmlhIHRoZSBjb21tYW5kCisgICAgICAgIyBsaW5lLCBhbmQgYnVpbGQg c3lzdGVtIHJlYnVpbGRzIHRoaW5ncyB3aGVuIHRoZWlyIGNvbW1hbmRsaW5lCisgICAgICAgIyBj aGFuZ2VzKS4gTm90aGluZyBzaG91bGQgZXZlciByZWFkIHRoaXMgZGVmaW5lLgorLSAgICAgIHN5 c3Jvb3RfaGFzaCA9CistICAgICAgICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jv b3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAorLSAgICAgICAgICAgICAgICAgICAgICBb ICItLXByaW50LWhhc2g9JGN1cnJlbnRfY3B1IiBdLAorLSAgICAgICAgICAgICAgICAgICAgICAi dHJpbSBzdHJpbmciLAorLSAgICAgICAgICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5 c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQorLSAgICAgIGRlZmluZXMgKz0gWyAiQ1Jf U1lTUk9PVF9IQVNIPSRzeXNyb290X2hhc2giIF0KKysgICAgICAjc3lzcm9vdF9oYXNoID0KKysg ICAgICAjICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0 YWxsLXN5c3Jvb3QucHkiLAorKyAgICAgICMgICAgICAgICAgICAgICAgWyAiLS1wcmludC1oYXNo PSRjdXJyZW50X2NwdSIgXSwKKysgICAgICAjICAgICAgICAgICAgICAgICJ0cmltIHN0cmluZyIs CisrICAgICAgIyAgICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0 cy9zeXNyb290cy5qc29uIiBdKQorKyAgICAgICNkZWZpbmVzICs9IFsgIkNSX1NZU1JPT1RfSEFT SD0kc3lzcm9vdF9oYXNoIiBdCisgICAgIH0KKyAgICAgYXNtZmxhZ3MgKz0gc3lzcm9vdF9mbGFn cworIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2 NC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwMmQ3ZTJkNjIyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5w YXRjaApAQCAtMCwwICsxLDIwIEBACistLS0gcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9m dW5jdGlvbnMucHJmCisrKysgcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9mdW5jdGlvbnMu cHJmCitAQCAtOTUsNiArOTUsNyBAQAorICAgICBjb250YWlucyhxdEFyY2gsICJhcm02NCIpOiBy ZXR1cm4oYXJtNjQpCisgICAgIGNvbnRhaW5zKHF0QXJjaCwgIm1pcHMiKTogcmV0dXJuKG1pcHNl bCkKKyAgICAgY29udGFpbnMocXRBcmNoLCAibWlwczY0Iik6IHJldHVybihtaXBzNjRlbCkKKysg ICAgY29udGFpbnMocXRBcmNoLCAicG93ZXI2NCIpOiByZXR1cm4ocHBjNjQpCisgICAgIHJldHVy bih1bmtub3duKQorIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3BsYXRm b3JtLnByZgorKysrIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvcGxhdGZvcm0ucHJmCitA QCAtODIsNiArODIsNyBAQAorICAgICBjb250YWlucyhRVF9BUkNILCAiYXJtIil8Y29udGFpbnMo UVRfQVJDSCwgImFybTY0Iik6IHJldHVybih0cnVlKQorICAgICBjb250YWlucyhRVF9BUkNILCAi bWlwcyIpOiByZXR1cm4odHJ1ZSkKKyAjICAgICBjb250YWlucyhRVF9BUkNILCAibWlwczY0Iik6 IHJldHVybih0cnVlKQorKyAgICBjb250YWlucyhRVF9BUkNILCAicG93ZXI2NCIpOiByZXR1cm4o dHJ1ZSkKKyAKKyAgICAgc2tpcEJ1aWxkKCJRdFdlYkVuZ2luZSBjYW4gb25seSBiZSBidWlsdCBm b3IgeDg2LCB4ODYtNjQsIEFSTSwgQWFyY2g2NCwgYW5kIE1JUFNlbCBhcmNoaXRlY3R1cmVzLiIp CisgICAgIHJldHVybihmYWxzZSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5 MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9t aXVtLXBwYzY0bGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjA0ZDhkM2VmYWFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkw LWNocm9taXVtLXBwYzY0bGUucGF0Y2gKQEAgLTAsMCArMSw0MjY3IEBACitUaGlzIGlzIGEgYmFz ZSBwYXRjaCB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgcHBjNjRsZSBnbGliYy4gQmlnIGVuZGlhbiBh bmQgbXVzbAorc3VwcG9ydCBpcyBhZGRlZCBpbiBleHRyYSBwYXRjaGVzIGFmdGVyd2FyZHMuCisK K1BpbmcgcTY2IGlmIHlvdSdyZSB1cGRhdGluZyBxdDUgYW5kIHRoZSBwYXRjaCBkb2VzIG5vdCBh cHBseSBhbnltb3JlLgorCitTb3VyY2U6IGh0dHBzOi8vd2lraS5yYXB0b3Jjcy5jb20vdy9pbmRl eC5waHA/dGl0bGU9UG9ydGluZy9DaHJvbWl1bQorVXBzdHJlYW06IEN1cnJlbnRseSBiZWluZyBz dWJtaXR0ZWQKKworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgKK0BAIC0xMCw3ICsxMCw3 IEBACisgI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgorIAorIG5hbWVzcGFjZSBiYXNl IHsKKy0jaWYgZGVmaW5lZChPU19XSU4pCisrI2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0KQorIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlv bkdyYW51bGFyaXR5U2hpZnQgPSAxNjsgIC8vIDY0S0IKKyAjZWxpZiBkZWZpbmVkKF9NSVBTX0FS Q0hfTE9PTkdTT04pCisgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3Jh bnVsYXJpdHlTaGlmdCA9IDE0OyAgLy8gMTZLQgorQEAgLTI2LDYgKzI2LDEwIEBAIHN0YXRpYyBj b25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQorIAor ICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCisgc3RhdGljIGNvbnN0ZXhwciBzaXpl X3Qga1N5c3RlbVBhZ2VTaXplID0gMTYzODQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NCkKKysvLyBUT0RPOiBtb2Rlcm4gcHBjNjQgY2FuIGRvIDRrIGFuZCA2NGsgcGFnZSBzaXplcwor Ky8vIGZvciBub3csIDY0ayBpcyBhc3N1bWVkCisrc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5 c3RlbVBhZ2VTaXplID0gNjU1MzY7CisgI2Vsc2UKKyBzdGF0aWMgY29uc3RleHByIHNpemVfdCBr U3lzdGVtUGFnZVNpemUgPSA0MDk2OworICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlv bl9hbGxvY19jb25zdGFudHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25z dGFudHMuaAorQEAgLTM1LDYgKzM1LDggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVja2V0U2hp ZnQgPSAoa0FsbG9jYXRpb25HcmFudWxhcml0eSA9PSA4KSA/IDMgOiAyOworIAorICNpZiBkZWZp bmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCisgc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9u UGFnZVNoaWZ0ID0gMTY7ICAvLyA2NCBLaUIKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 KQorK3N0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE4OyAgLy8gMjU2 IEtpQgorICNlbHNlCisgc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0g MTQ7ICAvLyAxNiBLaUIKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5CisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlucy5weQor QEAgLTExLDYgKzExLDEwIEBAIGltcG9ydCBzeXMKKyAKKyAKKyBkZWYgTWFpbihhcmdzKToKKysg ICMgSWYgYGRpc2FibGVfbmFjbD0xYCBpcyBpbiBHWVBfREVGSU5FUywgZXhpdAorKyAgaWYgJ2Rp c2FibGVfbmFjbD0xJyBpbiBvcy5lbnZpcm9uLmdldCgnR1lQX0RFRklORVMnLCAnJyk6CisrICAg IHJldHVybiAwCisrCisgICBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJz cGF0aChfX2ZpbGVfXykpCisgICBzcmNfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNjcmlwdF9kaXIp CisgICBuYWNsX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnbmF0aXZlX2NsaWVudCcpCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL3Rvb2xjaGFpbi9saW51 eC9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC90 b29sY2hhaW4vbGludXgvQlVJTEQuZ24KK0BAIC01LDYgKzUsMTQgQEAKKyBpbXBvcnQoIi8vYnVp bGQvY29uZmlnL3N5c3Jvb3QuZ25pIikKKyBpbXBvcnQoIi8vYnVpbGQvdG9vbGNoYWluL2djY190 b29sY2hhaW4uZ25pIikKKyAKKytjbGFuZ190b29sY2hhaW4oImNsYW5nX3BwYzY0IikgeworKyAg ZW5hYmxlX2xpbmtlcl9tYXAgPSB0cnVlCisrICB0b29sY2hhaW5fYXJncyA9IHsKKysgICAgY3Vy cmVudF9jcHUgPSAicHBjNjQiCisrICAgIGN1cnJlbnRfb3MgPSAibGludXgiCisrICB9CisrfQor KworIGNsYW5nX3Rvb2xjaGFpbigiY2xhbmdfYXJtIikgeworICAgdG9vbHByZWZpeCA9ICJhcm0t bGludXgtZ251ZWFiaWhmLSIKKyAgIHRvb2xjaGFpbl9hcmdzID0geworLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1 ZXJ5X3BhcmFtcy5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21w b25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFtcy5jYworQEAgLTU1LDYgKzU1 LDggQEAgY29uc3QgY2hhciBrQXJjaFtdID0KKyAgICAgIm1pcHM2NGVsIjsKKyAjZWxpZiBkZWZp bmVkKF9fbWlwc19fKQorICAgICAibWlwc2VsIjsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisrICAgICJwcGM2NCI7CisgI2Vsc2UKKyAjZXJyb3IgInVua25vd24gYXJjaCIKKyAjZW5k aWYKK0BAIC0xMjcsNiArMTI5LDggQEAgY29uc3QgY2hhciogVXBkYXRlUXVlcnlQYXJhbXM6Okdl dE5hY2xBcmNoKCkgeworICAgcmV0dXJuICJtaXBzMzIiOworICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQUzY0RUwpCisgICByZXR1cm4gIm1pcHM2NCI7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NCkKKysgIHJldHVybiAicHBjNjQiOworICNlbHNlCisgLy8gTk9URTogd2hlbiBhZGRp bmcgbmV3IHZhbHVlcyBoZXJlLCBwbGVhc2UgcmVtZW1iZXIgdG8gdXBkYXRlIHRoZQorIC8vIGNv bW1lbnQgaW4gdGhlIC5oIGZpbGUgYWJvdXQgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBmcm9tIHRo aXMgZnVuY3Rpb24uCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBv bmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmgKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9x dWVyeV9wYXJhbXMuaAorQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgVXBkYXRlUXVlcnlQYXJhbXMg eworICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgd2UgdXNlIGZvciB0aGUgIm5hY2xfYXJjaCIgcGFy YW1ldGVyLiBOb3RlIHRoYXQgdGhpcyBtYXkKKyAgIC8vIGJlIGRpZmZlcmVudCBmcm9tIHRoZSAi YXJjaCIgcGFyYW1ldGVyIGFib3ZlIChlLmcuIG9uZSBtYXkgYmUgMzItYml0IGFuZAorICAgLy8g dGhlIG90aGVyIDY0LWJpdCkuIFBvc3NpYmxlIHJldHVybiB2YWx1ZXMgaW5jbHVkZTogIng4Ni0z MiIsICJ4ODYtNjQiLAorLSAgLy8gImFybSIsIGFuZCAibWlwczMyIi4KKysgIC8vICJhcm0iLCAi bWlwczMyIiwgYW5kICJwcGM2NCIuCisgICBzdGF0aWMgY29uc3QgY2hhciogR2V0TmFjbEFyY2go KTsKKyAKKyAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBDaHJvbWUvQ2hyb21p dW0uCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVhdHVy ZXMuZ25pCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVh dHVyZXMuZ25pCitAQCAtMTIsNiArMTIsNiBAQCB1c2Vfc2VjY29tcF9icGYgPQorICAgICAoaXNf bGludXggfHwgaXNfYW5kcm9pZCkgJiYKKyAgICAgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1 cnJlbnRfY3B1ID09ICJ4NjQiIHx8IGN1cnJlbnRfY3B1ID09ICJhcm0iIHx8CisgICAgICBjdXJy ZW50X2NwdSA9PSAiYXJtNjQiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBzZWwiIHx8CistICAgICBj dXJyZW50X2NwdSA9PSAibWlwczY0ZWwiKQorKyAgICAgY3VycmVudF9jcHUgPT0gIm1pcHM2NGVs IiB8fCBjdXJyZW50X2NwdSA9PSAicHBjNjQiKQorIAorIHVzZV9zZWNjb21wX2JwZiA9IHVzZV9z ZWNjb21wX2JwZiB8fCBpc19uYWNsX25vbnNmaQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KK0BAIC00MTYsNiArNDE2LDgg QEAgY29tcG9uZW50KCJzYW5kYm94X3NlcnZpY2VzIikgeworIAorIHNvdXJjZV9zZXQoInNhbmRi b3hfc2VydmljZXNfaGVhZGVycyIpIHsKKyAgIHNvdXJjZXMgPSBbCisrICAgICJzeXN0ZW1faGVh ZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oIiwKKysgICAgInN5c3RlbV9oZWFkZXJzL3BwYzY0 X2xpbnV4X3Vjb250ZXh0LmgiLAorICAgICAic3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lz Y2FsbHMuaCIsCisgICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaCIsCisg ICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfdWNvbnRleHQuaCIsCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNj YWxsX3Jhbmdlcy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCitAQCAtNTUsNiArNTUsMTMg QEAKKyAjZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAyNzl1CisgI2RlZmluZSBNQVhfU1lTQ0FM TCBNQVhfUFVCTElDX1NZU0NBTEwKKyAKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisr CisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KKysjZGVmaW5lIE1JTl9TWVNDQUxMIDB1CisrI2Rl ZmluZSBNQVhfUFVCTElDX1NZU0NBTEwgMzg2dQorKyNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BV QkxJQ19TWVNDQUxMCisrCisgI2Vsc2UKKyAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVy ZSIKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK0BA IC0xNiw2ICsxNiw5IEBACisgI2lmIGRlZmluZWQoX19taXBzX18pCisgLy8gc3lzL3VzZXIuaCBp biBlZ2xpYmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgor KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysvLyBNYW51YWxseSBkZWZpbmUgZ3JlZ190 IG9uIHBwYzY0CisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgZ3JlZ190OworICNlbmRpZgor ICNlbmRpZgorIAorQEAgLTM0Niw2ICszNDksNTEgQEAgc3RydWN0IHJlZ3Nfc3RydWN0IHsKKyAj ZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTQoX3JlZ3MpIChfcmVncykucmVnc1szXQorICNkZWZpbmUg U0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9yZWdzKS5yZWdzWzRdCisgI2RlZmluZSBTRUNDT01Q X1BUX1BBUk02KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNV0KKysKKysjZWxpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysKKyt0eXBlZGVmIHN0cnVjdCBw dF9yZWdzIHJlZ3Nfc3RydWN0OworKworKyNpZmRlZiBBUkNIX0NQVV9MSVRUTEVfRU5ESUFOCisr I2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2NExFCisrI2Vsc2UKKysjZGVmaW5l IFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0CisrI2VuZGlmCisrCisrI2RlZmluZSBTRUND T01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10p CisrCisrI2RlZmluZSBTRUNDT01QX1JFU1VMVChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQor KyNkZWZpbmUgU0VDQ09NUF9TWVNDQUxMKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDApCisrI2Rl ZmluZSBTRUNDT01QX0lQKF9jdHgpIChfY3R4KS0+dWNfbWNvbnRleHQucmVncy0+bmlwCisrI2Rl ZmluZSBTRUNDT01QX1BBUk0xKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisrI2RlZmluZSBT RUNDT01QX1BBUk0yKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDQpCisrI2RlZmluZSBTRUNDT01Q X1BBUk0zKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDUpCisrI2RlZmluZSBTRUNDT01QX1BBUk00 KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDYpCisrI2RlZmluZSBTRUNDT01QX1BBUk01KF9jdHgp IFNFQ0NPTVBfUkVHKF9jdHgsIDcpCisrI2RlZmluZSBTRUNDT01QX1BBUk02KF9jdHgpIFNFQ0NP TVBfUkVHKF9jdHgsIDgpCisrCisrI2RlZmluZSBTRUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3Ry dWN0IGFyY2hfc2VjY29tcF9kYXRhLCBucikpCisrI2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChv ZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyY2gpKQorKyNkZWZpbmUgU0VDQ09N UF9JUF9NU0JfSURYIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGlu c3RydWN0aW9uX3BvaW50ZXIpICsgNCkKKysjZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCisr ICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVy KSArIDApCisrI2RlZmluZSBTRUNDT01QX0FSR19NU0JfSURYKG5yKSBcCisrICAob2Zmc2V0b2Yo c3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKKysjZGVmaW5l IFNFQ0NPTVBfQVJHX0xTQl9JRFgobnIpIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNj b21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyAwKQorKworKyNkZWZpbmUgU0VDQ09NUF9QVF9S RVNVTFQoX3JlZ3MpIChfcmVncykuZ3ByWzNdCisrI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwo X3JlZ3MpIChfcmVncykuZ3ByWzBdCisrI2RlZmluZSBTRUNDT01QX1BUX0lQKF9yZWdzKSAoX3Jl Z3MpLm5pcAorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMShfcmVncykgKF9yZWdzKS5ncHJbM10K KysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTIoX3JlZ3MpIChfcmVncykuZ3ByWzRdCisrI2RlZmlu ZSBTRUNDT01QX1BUX1BBUk0zKF9yZWdzKSAoX3JlZ3MpLmdwcls1XQorKyNkZWZpbmUgU0VDQ09N UF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5ncHJbNl0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFS TTUoX3JlZ3MpIChfcmVncykuZ3ByWzddCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdz KSAoX3JlZ3MpLmdwcls4XQorKworICNlbHNlCisgI2Vycm9yIFVuc3VwcG9ydGVkIHRhcmdldCBw bGF0Zm9ybQorIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9iYXNlbGluZV9wb2xpY3kuY2MKK0BAIC04Nyw3ICs4Nyw4IEBAIGJvb2wgSXNCYXNlbGlu ZVBvbGljeVdhdGNoZWQoaW50IHN5c25vKSB7CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJj dGwoc3lzbm8pIHx8CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJvY2Vzc0dyb3VwT3JTZXNz aW9uKHN5c25vKSB8fAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgICAgICAgU3lzY2Fs bFNldHM6OklzU29ja2V0Q2FsbChzeXNubykgfHwKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2Fy bV9fKQorQEAgLTE5MCw3ICsxOTEsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwo aW50IGZzX2RlbmllZF9lcnJubywKKyAgIH0KKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgIGlmIChzeXNubyA9PSBfX05SX21tYXApCisgICAgIHJldHVybiBSZXN0 cmljdE1tYXBGbGFncygpOworICNlbmRpZgorQEAgLTIwOCw3ICsyMDksNyBAQCBSZXN1bHRFeHBy IEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKKyAgICAgcmV0dXJuIFJl c3RyaWN0UHJjdGwoKTsKKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgaWYgKHN5c25vID09IF9fTlJfc29ja2V0cGFpcikgeworICAgICAvLyBPbmx5IGFsbG93IEFG X1VOSVgsIFBGX1VOSVguIENyYXNoIGlmIGFueXRoaW5nIGVsc2UgaXMgc2Vlbi4KKyAgICAgc3Rh dGljX2Fzc2VydChBRl9VTklYID09IFBGX1VOSVgsCitAQCAtMjQ4LDcgKzI0OSw4IEBAIFJlc3Vs dEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAorICAgfQorIAor ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICBpZiAoU3lzY2FsbFNldHM6OklzU29ja2V0Q2Fs bChzeXNubykpCisgICAgIHJldHVybiBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7CisgI2Vu ZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3lfdW5pdHRlc3QuY2MKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYworQEAgLTI1Nyw3ICsyNTcsNyBAQCBU RVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3N5c2luZm8pOworIFRFU1RfQkFTRUxJTkVfU0lHU1lT KF9fTlJfc3lzbG9nKTsKKyBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3RpbWVyX2NyZWF0ZSk7 CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRf XykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05S X2V2ZW50ZmQpOworIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfaW5vdGlmeV9pbml0KTsKKyBU RVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3ZzZXJ2ZXIpOworLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2Fs bF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJh bWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYworQEAgLTM1LDcgKzM1LDggQEAKKyAjaW5jbHVkZSA8c3lz L2lvY3RsLmg+CisgI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKyAjaWYgZGVmaW5lZChPU19MSU5V WCkgJiYgIWRlZmluZWQoT1NfQ0hST01FT1MpICYmICFkZWZpbmVkKF9fYXJtX18pICYmIFwKKy0g ICAgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FS RUEpCisrICAgICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9f KSAmJiBcCisrICAgICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEpCisgLy8gQWxzbyBp bmNsdWRlIGFzbS9wdHJhY2UtYWJpLmggc2luY2UgcHRyYWNlLmggaW4gb2xkZXIgbGliYyAoZm9y IGluc3RhbmNlCisgLy8gdGhlIG9uZSBpbiBVYnVudHUgMTYuMDQgTFRTKSBpcyBtaXNzaW5nIFBU UkFDRV9HRVRfVEhSRUFEX0FSRUEuCisgLy8gYXNtL3B0cmFjZS1hYmkuaCBkb2Vzbid0IGV4aXN0 IG9uIGFybTMyIGFuZCBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIGlzbid0CitAQCAtNDQsNiArNDQs MTEgQEAKKyAjZW5kaWYKKyAjZW5kaWYgIC8vICFPU19OQUNMX05PTlNGSQorIAorKy8vIE9uIFBQ QzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2Ug bXVzdCBpbmNsdWRlIHRlcm1pb3MuaAorKyNpZmRlZiBfX3Bvd2VycGM2NF9fCisrI2luY2x1ZGUg PHRlcm1pb3MuaD4KKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChPU19BTkRST0lEKQorIAorICNp ZiAhZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMpCitAQCAtMTA2LDYgKzExMSwxNSBAQCBpbmxpbmUg Ym9vbCBJc0FyY2hpdGVjdHVyZU1pcHMoKSB7CisgI2VuZGlmCisgfQorIAorK2lubGluZSBib29s IElzQXJjaGl0ZWN0dXJlUFBDNjQoKSB7CisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysg IHJldHVybiB0cnVlOworKyNlbHNlCisrICByZXR1cm4gZmFsc2U7CisrI2VuZGlmCisrfQorKwor KworIC8vIFVidW50dSdzIHZlcnNpb24gb2YgZ2xpYmMgaGFzIGEgcmFjZSBjb25kaXRpb24gaW4g c2VtX3Bvc3QgdGhhdCBjYW4gY2F1c2UKKyAvLyBpdCB0byBjYWxsIGZ1dGV4KDIpIHdpdGggYm9n dXMgb3AgYXJndW1lbnRzLiBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlIG5lZWQKKyAvLyB0byBhbGxv dyB0aG9zZSBmdXRleCgyKSBjYWxscyB0byBmYWlsIHdpdGggRUlOVkFMLCBpbnN0ZWFkIG9mIGNy YXNoaW5nIHRoZQorQEAgLTI0Nyw3ICsyNjEsOCBAQCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxD b21tYW5kcygpIHsKKyAgIC8vIG9wZXJhdG9yLgorICAgLy8gR2xpYmMgb3ZlcnJpZGVzIHRoZSBr ZXJuZWwncyBPX0xBUkdFRklMRSB2YWx1ZS4gQWNjb3VudCBmb3IgdGhpcy4KKyAgIHVpbnQ2NF90 IGtPTGFyZ2VGaWxlRmxhZyA9IE9fTEFSR0VGSUxFOworLSAgaWYgKElzQXJjaGl0ZWN0dXJlWDg2 XzY0KCkgfHwgSXNBcmNoaXRlY3R1cmVJMzg2KCkgfHwgSXNBcmNoaXRlY3R1cmVNaXBzKCkpCisr ICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJ c0FyY2hpdGVjdHVyZU1pcHMoKSBcCisrICAgICAgfHwgSXNBcmNoaXRlY3R1cmVQUEM2NCgpKQor ICAgICBrT0xhcmdlRmlsZUZsYWcgPSAwMTAwMDAwOworIAorICAgY29uc3QgQXJnPGludD4gY21k KDEpOworQEAgLTI3MCw3ICsyODUsNyBAQCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5k cygpIHsKKyAgICAgICAuRGVmYXVsdChDcmFzaFNJR1NZUygpKTsKKyB9CisgCistI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyBSZXN1bHRF eHByIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKSB7CisgICAvLyBVbmZvcnR1bmF0ZWx5LCB3 ZSBhcmUgdW5hYmxlIHRvIHJlc3RyaWN0IHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8KKyAgIC8vIHNv Y2tldHBhaXIoMikuIFdoaWxzdCBpbml0aWFsbHkgc291bmRpbmcgYmFkLCBpdCdzIG5vdGV3b3J0 aHkgdGhhdCB2ZXJ5CitAQCAtNDIxLDcgKzQyMiw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RQcmxp bWl0KHBpZF90IHRhcmdldF9waWQpIHsKKyBSZXN1bHRFeHByIFJlc3RyaWN0UHRyYWNlKCkgewor ICAgY29uc3QgQXJnPGludD4gcmVxdWVzdCgwKTsKKyAgIHJldHVybiBTd2l0Y2gocmVxdWVzdCku Q0FTRVMoKAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgIWRlZmluZWQoX19hYXJj aDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgICAgICBQVFJBQ0VfR0VUUkVH UywKKyAgICAgICAgIFBUUkFDRV9HRVRGUFJFR1MsCisgICAgICAgICBQVFJBQ0VfR0VUX1RIUkVB RF9BUkVBLAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5o CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKK0BAIC00 OCw3ICs0OCw3IEBAIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RN cHJvdGVjdEZsYWdzKCk7CisgLy8gT19OT05CTE9DSyB8IE9fU1lOQyB8IE9fTEFSR0VGSUxFIHwg T19DTE9FWEVDIHwgT19OT0FUSU1FLgorIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4 cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCk7CisgCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19t aXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAvLyBSZXN0cmljdCBzb2NrZXRjYWxs KDIpIHRvIG9ubHkgYWxsb3cgc29ja2V0cGFpcigyKSwgc2VuZCgyKSwgcmVjdigyKSwKKyAvLyBz ZW5kdG8oMiksIHJlY3Zmcm9tKDIpLCBzaHV0ZG93bigyKSwgc2VuZG1zZygyKSBhbmQgcmVjdm1z ZygyKS4KKyBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0 Y2FsbENvbW1hbmQoKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtMjksNyArMjksOCBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICAg ICBjYXNlIF9fTlJfZ2V0dGltZW9mZGF5OgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3RpbWU6CisgI2VuZGlmCisgICAgICAg cmV0dXJuIHRydWU7CitAQCAtNDUsNyArNDYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93 ZWRHZXR0aW1lKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2V0dGltZW9m ZGF5OiAgLy8gUHJpdmlsZWdlZC4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfc3RpbWU6CisgI2VuZGlmCisgICAgIGRlZmF1bHQ6CitAQCAtMTExLDcgKzExMyw3IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBf X05SX2ZhY2Nlc3NhdDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICAgICBjYXNlIF9f TlJfZmNobW9kYXQ6CisgICAgIGNhc2UgX19OUl9mY2hvd25hdDogIC8vIFNob3VsZCBiZSBjYWxs ZWQgY2hvd25hdCA/CistI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9uZXdmc3RhdGF0OiAgLy8g ZnN0YXRhdCgpLiBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZWxpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKyAgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCitAQCAtMTMwLDcgKzEzMiw3 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAgICAgY2Fz ZSBfX05SX21lbWZkX2NyZWF0ZToKKyAgICAgY2FzZSBfX05SX21rZGlyYXQ6CisgICAgIGNhc2Ug X19OUl9ta25vZGF0OgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9vbGRsc3RhdDoK KyAgICAgY2FzZSBfX05SX29sZHN0YXQ6CisgI2VuZGlmCitAQCAtMTU0LDcgKzE1Niw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05S X3RydW5jYXRlNjQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl91bmxpbmthdDoKKy0jaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19f KQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfdXRpbWU6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl91dGltZW5zYXQ6ICAvLyBOZXcu CitAQCAtMTczLDcgKzE3Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0 ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsK KyAvLyBUT0RPKGpsbik6IHRoZXNlIHNob3VsZCBiZSBkZW5pZWQgZ3JhY2VmdWxseSBhcyB3ZWxs IChtb3ZlZCBiZWxvdykuCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2ZhZHZpc2U2NDogIC8vIEVQRVJNIG5vdCBh IHZhbGlkIGVycm5vLgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorQEAgLTE4Niw3 ICsxOTAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlh RmQoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9mbG9jazogICAgICAvLyBFUEVSTSBub3Qg YSB2YWxpZCBlcnJuby4KKyAgICAgY2FzZSBfX05SX2ZzdGF0ZnM6ICAgIC8vIEdpdmUgaW5mb3Jt YXRpb24gYWJvdXQgdGhlIHdob2xlIGZpbGVzeXN0ZW0uCisgI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfZnN0YXRmczY0OgorICNlbmRp ZgorICAgICBjYXNlIF9fTlJfZnN5bmM6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KK0BA IC0xOTgsNiArMjAzLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5c3RlbUFj Y2Vzc1ZpYUZkKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlOiAg Ly8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisgI2VsaWYgZGVmaW5lZChfX2FybV9fKQorICAg ICBjYXNlIF9fTlJfYXJtX3N5bmNfZmlsZV9yYW5nZTogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVy cm5vLgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgY2FzZSBfX05SX3N5bmNf ZmlsZV9yYW5nZTI6IC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNlbmRpZgorICAgICBk ZWZhdWx0OgorICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0yMjMsNyArMjMwLDggQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNEZW5pZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Cisg I2VuZGlmCisgICAgIGNhc2UgX19OUl9nZXRkZW50czY0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQg ZXJybm8uCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3JlYWRkaXI6 CisgI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMjY0LDcgKzI3Miw3IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzR2V0U2ltcGxlSWQoaW50IHN5c25vKSB7CisgYm9vbCBTeXNjYWxsU2V0 czo6SXNQcm9jZXNzUHJpdmlsZWdlQ2hhbmdlKGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNu bykgeworICAgICBjYXNlIF9fTlJfY2Fwc2V0OgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfaW9wZXJt OiAgLy8gSW50ZWwgcHJpdmlsZWdlLgorICAgICBjYXNlIF9fTlJfaW9wbDogICAgLy8gSW50ZWwg cHJpdmlsZWdlLgorICNlbmRpZgorQEAgLTMxNCw3ICszMjIsOCBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3J0 X3NpZ3Byb2NtYXNrOgorICAgICBjYXNlIF9fTlJfcnRfc2lncmV0dXJuOgorICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NpZ2FjdGlv bjoKKyAgICAgY2FzZSBfX05SX3NpZ3Byb2NtYXNrOgorICAgICBjYXNlIF9fTlJfc2lncmV0dXJu OgorQEAgLTMzMSw3ICszNDAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxI YW5kbGluZyhpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3NpZ25hbGZkNDoK KyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2Ug X19OUl9zaWdwZW5kaW5nOgorICAgICBjYXNlIF9fTlJfc2lnc3VzcGVuZDoKKyAjZW5kaWYKK0BA IC0zNTUsNyArMzY1LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkT3BlcmF0aW9uT25G ZChpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2R1cDM6CisgI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NodXRkb3duOgorICNl bmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAgLTM4OSw3ICszOTksNyBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGludCBzeXNubykgeworICAgICBj YXNlIF9fTlJfbWVtYmFycmllcjoKKyAgICAgY2FzZSBfX05SX3dhaXQ0OgorICAgICBjYXNlIF9f TlJfd2FpdGlkOgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl93YWl0cGlkOgorICNl bmRpZgorICNpZiAhZGVmaW5lZChfX0dMSUJDX18pCitAQCAtNDExLDcgKzQyMSw3IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7Cisg ICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl91 bnNoYXJlOgorLSNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18p CisrI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdmZvcms6CisgI2VuZGlmCisgICAg IGRlZmF1bHQ6CitAQCAtNDYwLDcgKzQ3MCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgeworICAgICAgIHJldHVybiB0cnVlOworICAg ICBkZWZhdWx0OgorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl9zb2NrZXRwYWlyOiAgLy8gV2Ugd2lsbCB3YW50IHRvIGluc3BlY3QgaXRzIGFyZ3Vt ZW50LgorICNlbmRpZgorICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC00NzAsNyArNDgwLDcgQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7 CisgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8p IHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2Fh cmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorICAgICBjYXNlIF9fTlJfYWNjZXB0OgorICAgICBjYXNlIF9fTlJfYWNjZXB0NDoKKyAg ICAgY2FzZSBfX05SX2JpbmQ6CitAQCAtNDg1LDcgKzQ5NSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzRGVuaWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7CisgfQorIAorICNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgLy8gQmlnIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCBmb3Igc29j a2V0cy4KKyBib29sIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7CisgICBz d2l0Y2ggKHN5c25vKSB7CitAQCAtNDk5LDcgKzUxMCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz U29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKKyB9CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNf XykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgYm9vbCBTeXNjYWxsU2V0czo6 SXNOZXR3b3JrU29ja2V0SW5mb3JtYXRpb24oaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25v KSB7CisgICAgIGNhc2UgX19OUl9nZXRwZWVybmFtZToKK0BAIC01MjcsNyArNTM5LDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQWRkcmVzc1NwYWNlQWNjZXNzKGludCBzeXNubykgewor ICAgICBjYXNlIF9fTlJfbWluY29yZToKKyAgICAgY2FzZSBfX05SX21sb2NrYWxsOgorICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNo NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfbW1hcDoKKyAj ZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCitA QCAtNTU5LDcgKzU3MSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhp bnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2xzZWVrOgor ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp CisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX19sbHNlZWs6CisgI2VuZGlmCisgI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorQEAgLTU3 MSwyNiArNTg0LDI4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhpbnQg c3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3JlYWR2OgorICAgICBjYXNlIF9fTlJfcHJlYWQ2NDoK KyAjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9yZWN2OgorICNlbmRpZgor ICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChf X21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9f YWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9yZWN2 ZnJvbTogIC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgorICAgICBjYXNlIF9fTlJfcmVjdm1zZzog ICAvLyBDb3VsZCBzcGVjaWZ5IHNvdXJjZS4KKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05S X3NlbGVjdDoKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX19uZXdzZWxlY3Q6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19h cm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2VuZDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0g ICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2VuZG1zZzogIC8vIENvdWxkIHNw ZWNpZnkgZGVzdGluYXRpb24uCisgICAgIGNhc2UgX19OUl9zZW5kdG86ICAgLy8gQ291bGQgc3Bl Y2lmeSBkZXN0aW5hdGlvbi4KKyAjZW5kaWYKK0BAIC02NDcsNyArNjYyLDggQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5c25vKSB7CisgICAgICAgcmV0 dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9nZXRwcmlvcml0eToKKyAjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAor KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9uaWNlOgorICNlbmRp ZgorICAgICBjYXNlIF9fTlJfc2V0cHJpb3JpdHk6CitAQCAtNjU5LDcgKzY3NSw4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzQWxsb3dlZEJhc2ljU2NoZWR1bGVyKGludCBzeXNubykgeworIGJvb2wg U3lzY2FsbFNldHM6OklzQWRtaW5PcGVyYXRpb24oaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5 c25vKSB7CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAor LSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAg ICBjYXNlIF9fTlJfYmRmbHVzaDoKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2tleGVjX2xvYWQ6 CitAQCAtNjc1LDcgKzY5Miw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWRtaW5PcGVyYXRpb24o aW50IHN5c25vKSB7CisgCisgYm9vbCBTeXNjYWxsU2V0czo6SXNLZXJuZWxNb2R1bGUoaW50IHN5 c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisr ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2NyZWF0ZV9tb2R1bGU6 CisgICAgIGNhc2UgX19OUl9nZXRfa2VybmVsX3N5bXM6ICAvLyBTaG91bGQgRU5PU1lTLgorICAg ICBjYXNlIF9fTlJfcXVlcnlfbW9kdWxlOgorQEAgLTcwOCw3ICs3MjYsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0ZzQ29udHJvbChpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3N3YXBvZmY6 CisgICAgIGNhc2UgX19OUl9zd2Fwb246CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0g ICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJf QklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAg Y2FzZSBfX05SX3Vtb3VudDoKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3Vtb3VudDI6CitAQCAt NzI0LDcgKzc0Myw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzTnVtYShpbnQgc3lzbm8pIHsKKyAg ICAgY2FzZSBfX05SX2dldGNwdToKKyAgICAgY2FzZSBfX05SX21iaW5kOgorICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8 IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfbWlncmF0ZV9wYWdlczoK KyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX21vdmVfcGFnZXM6CitAQCAtNzUzLDE0ICs3NzIsMTUg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHbG9iYWxQcm9jZXNzRW52aXJvbm1lbnQoaW50IHN5c25v KSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9hY2N0OiAgLy8gUHJpdmls ZWdlZC4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX2dldHJsaW1pdDoKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX2FybV9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3VnZXRybGltaXQ6CisgI2Vu ZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3VsaW1pdDoKKyAj ZW5kaWYKKyAgICAgY2FzZSBfX05SX2dldHJ1c2FnZToKK0BAIC03OTQsNyArODE0LDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNHbG9iYWxTeXN0ZW1TdGF0dXMoaW50IHN5c25vKSB7CisgI2VuZGlm CisgICAgIGNhc2UgX19OUl9zeXNpbmZvOgorICAgICBjYXNlIF9fTlJfdW5hbWU6CistI2lmIGRl ZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX29sZHVuYW1lOgorICAgICBjYXNlIF9fTlJfb2xkb2xk dW5hbWU6CisgI2VuZGlmCitAQCAtODg4LDcgKzkwOCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz U3lzdGVtVk1lc3NhZ2VRdWV1ZShpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorIC8vIEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwu CisgYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WSXBjKGludCBzeXNubykgeworICAgc3dpdGNo IChzeXNubykgeworQEAgLTkwOCw3ICs5MjksOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FueVN5 c3RlbVYoaW50IHN5c25vKSB7CisgICByZXR1cm4gSXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKHN5c25v KSB8fCBJc1N5c3RlbVZTZW1hcGhvcmVzKHN5c25vKSB8fAorICAgICAgICAgIElzU3lzdGVtVlNo YXJlZE1lbW9yeShzeXNubyk7CisgI2VsaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgcmV0dXJu IElzU3lzdGVtVklwYyhzeXNubyk7CisgI2VuZGlmCisgfQorQEAgLTk2MSw3ICs5ODMsOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0ZhTm90aWZ5KGludCBzeXNubykgeworIGJvb2wgU3lzY2FsbFNl dHM6OklzVGltZXIoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2Ug X19OUl9nZXRpdGltZXI6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2FsYXJtOgorICNlbmRpZgorICAgICBjYXNl IF9fTlJfc2V0aXRpbWVyOgorQEAgLTEwMjAsMTggKzEwNDMsMjIgQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNNaXNjKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfc3luY2ZzOgorICAgICBjYXNl IF9fTlJfdmhhbmd1cDoKKyAvLyBUaGUgc3lzdGVtIGNhbGxzIGJlbG93IGFyZSBub3QgaW1wbGVt ZW50ZWQuCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX2Fmc19zeXNjYWxsOgorICNlbmRpZgorICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9icmVhazoKKyAjZW5kaWYKKy0jaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQor KyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9f TlJfZ2V0cG1zZzoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfZ3R0eToKKyAgICAgY2FzZSBfX05SX2lkbGU6CisgICAgIGNhc2UgX19OUl9sb2NrOgor QEAgLTEwMzksMjAgKzEwNjYsMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNu bykgeworICAgICBjYXNlIF9fTlJfcHJvZjoKKyAgICAgY2FzZSBfX05SX3Byb2ZpbDoKKyAjZW5k aWYKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgICBjYXNlIF9fTlJfcHV0cG1zZzoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX3g4Nl82 NF9fKQorICAgICBjYXNlIF9fTlJfc2VjdXJpdHk6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3N0dHk6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX194 ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICAgIGNhc2UgX19OUl90dXhjYWxsOgorICNlbmRpZgorLSNpZiAhZGVmaW5lZChfX2Fh cmNoNjRfXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgICAgIGNhc2UgX19OUl92c2VydmVyOgorICNlbmRpZgorICAgICAgIHJldHVybiB0 cnVlOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2Nh bGxfc2V0cy5oCitAQCAtNDMsMTMgKzQzLDE0IEBAIGNsYXNzIFNBTkRCT1hfRVhQT1JUIFN5c2Nh bGxTZXRzIHsKKyAgIHN0YXRpYyBib29sIElzRGVuaWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5 c25vKTsKKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgLy8gQmlnIG11bHRpcGxleGlu ZyBzeXN0ZW0gY2FsbCBmb3Igc29ja2V0cy4KKyAgIHN0YXRpYyBib29sIElzU29ja2V0Q2FsbChp bnQgc3lzbm8pOworICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFy Y2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICBzdGF0aWMgYm9vbCBJc05ldHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8p OworICNlbmRpZgorIAorQEAgLTg3LDcgKzg4LDggQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lz Y2FsbFNldHMgeworICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAvLyBC aWcgc3lzdGVtIFYgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsLgorICAgc3RhdGljIGJvb2wgSXNT eXN0ZW1WSXBjKGludCBzeXNubyk7CisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYworKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm L3N5c2NhbGwuY2MKK0BAIC0xNiw3ICsxNiw3IEBAIG5hbWVzcGFjZSBzYW5kYm94IHsKKyBuYW1l c3BhY2UgeworIAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQo QVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkIChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCisgLy8gTnVtYmVyIHRoYXQncyBub3QgY3VycmVudGx5IHVzZWQg YnkgYW55IExpbnV4IGtlcm5lbCBBQklzLgorIGNvbnN0IGludCBrSW52YWxpZFN5c2NhbGxOdW1i ZXIgPSAweDM1MWQzOworICNlbHNlCitAQCAtMzA4LDEyICszMDgsNTYgQEAgYXNtKC8vIFdlIG5l ZWQgdG8gYmUgYWJsZSB0byB0ZWxsIHRoZSBrZXJuZWwgZXhhY3RseSB3aGVyZSB3ZSBtYWRlIGEK KyAgICAgLy8gRW50ZXIgdGhlIGtlcm5lbAorICAgICAic3ZjIDBcbiIKKyAgICAgIjI6cmV0XG4i CisrICAgICIuY2ZpX2VuZHByb2NcbiIKKysgICAgIi5zaXplIFN5c2NhbGxBc20sIC4tU3lzY2Fs bEFzbVxuIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgIi50ZXh0XG4iCisr ICAgICIuYWxpZ24gNFxuIgorKyAgICAiLnR5cGUgU3lzY2FsbEFzbSBAZnVuY3Rpb25cbiIKKysg ICAgIlN5c2NhbGxBc206XG4iCisrICAgICIuY2ZpX3N0YXJ0cHJvY1xuIgorKworKyAgICAvLyBD aGVjayBpZiByMyBpcyBuZWdhdGl2ZQorKyAgICAiY21wZGkgMywgMFxuIgorKyAgICAiYmd0IDJm XG4iCisrCisrICAgIC8vIExvYWQgYWRkcmVzcyBvZiAzZiBpbnRvIHIzIGFuZCByZXR1cm4KKysg ICAgIm1mbHIgMTBcbiIKKysgICAgImJsIDFmXG4iCisrICAgICIxOiBtZmxyIDNcbiIKKysgICAg Im10bHIgMTBcbiIKKysgICAgImFkZGkgMywgMywgNCoxM1xuIgorKyAgICAiYmxyXG4iCisrCisr ICAgIC8vIExvYWQgYXJndW1lbnRzIGZyb20gYXJyYXkgaW50byByMy04CisrICAgIC8vIHNhdmUg cGFyYW0gMyBpbiByMTAKKysgICAgIjI6XG4iCisrICAgICJtciAwLCAzXG4iCisrICAgICJsZCAz LCAwKDQpXG4iCisrICAgICJsZCA1LCAxNig0KVxuIgorKyAgICAibGQgNiwgMjQoNClcbiIKKysg ICAgImxkIDcsIDMyKDQpXG4iCisrICAgICJsZCA4LCA0MCg0KVxuIgorKyAgICAibGQgNCwgOCg0 KVxuIgorKyAgICAibGkgOSwgMFxuIgorKworKyAgICAvLyBFbnRlciBrZXJuZWwKKysgICAgInNj XG4iCisrCisrICAgIC8vIE1hZ2ljIHJldHVybiBhZGRyZXNzCisrICAgICIzOlxuIgorKyAgICAv LyBMaWtlIE1JUFMsIHBwYzY0IHJldHVybiB2YWx1ZXMgYXJlIGFsd2F5cyBwb3NpdGl2ZS4KKysg ICAgLy8gQ2hlY2sgZm9yIGVycm9yIGluIGNyMC5TTyBhbmQgbmVnYXRlIHVwb24gZXJyb3IKKysg ICAgImJjIDQsIDMsIDRmXG4iCisrICAgICJuZWcgMywgM1xuIgorKyAgICAiNDogYmxyXG4iCisr CisgICAgICIuY2ZpX2VuZHByb2NcbiIKKyAgICAgIi5zaXplIFN5c2NhbGxBc20sIC4tU3lzY2Fs bEFzbVxuIgorICNlbmRpZgorICAgICApOyAgLy8gYXNtCisgCistI2lmIGRlZmluZWQoX194ODZf NjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgZXh0ZXJuICJDIiB7CisgaW50cHRyX3QgU3lzY2FsbEFzbShpbnRwdHJfdCBuciwgY29uc3Qg aW50cHRyX3QgYXJnc1s2XSk7CisgfQorQEAgLTQyNyw2ICs0NzEsOCBAQCBpbnRwdHJfdCBTeXNj YWxsOjpDYWxsKGludCBuciwKKyAgICAgcmV0ID0gaW5vdXQ7CisgICB9CisgCisrI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorKyAgaW50cHRyX3QgcmV0ID0gU3lzY2FsbEFzbShuciwgYXJn cyk7CisgI2Vsc2UKKyAjZXJyb3IgIlVuaW1wbGVtZW50ZWQgYXJjaGl0ZWN0dXJlIgorICNlbmRp ZgorQEAgLTQ0Myw4ICs0ODksMTggQEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNvbnRleHQo aW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7CisgICAgIC8vIG5lZWRzIHRvIGJl IGNoYW5nZWQgYmFjay4KKyAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOworICAgICBTRUNDT01QX1BB Uk00KGN0eCkgPSAxOworLSAgfSBlbHNlCisrICB9IGVsc2UgeworICAgICBTRUNDT01QX1BBUk00 KGN0eCkgPSAwOworKyAgfQorKyNlbmRpZgorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisr ICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJldCBhbmQgc2V0IGVycm9yIHJlZ2lz dGVyIChjcjAuU08pCisrICBpZiAocmV0X3ZhbCA8PSAtMSAmJiByZXRfdmFsID49IC00MDk1KSB7 CisrICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKKysgICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5j Y3IgfD0gKDEgPDwgMjgpOworKyAgfSBlbHNlIHsKKysgICAgY3R4LT51Y19tY29udGV4dC5yZWdz LT5jY3IgJj0gfigxIDw8IDI4KTsKKysgIH0KKyAjZW5kaWYKKyAgIFNFQ0NPTVBfUkVTVUxUKGN0 eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOworIH0KKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYvdHJhcC5jYworQEAgLTIzMCw2ICsyMzAsMjAgQEAgdm9pZCBUcmFwOjpTaWdTeXMoaW50 IG5yLCBMaW51eFNpZ0luZm8qIGluZm8sIHVjb250ZXh0X3QqIGN0eCkgeworICAgICAgIFNldElz SW5TaWdIYW5kbGVyKCk7CisgICAgIH0KKyAKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgICAvLyBPbiBwcGM2NCtnbGliYywgc29tZSBzeXNjYWxscyBzZWVtIHRvIGFjY2lkZW50YWxs eSBuZWdhdGUgdGhlIGZpcnN0CisrICAgIC8vIHBhcmFtZXRlciB3aGljaCBjYXVzZXMgY2hlY2tz IGFnYWluc3QgaXQgdG8gZmFpbC4gRm9yIG5vdywgbWFudWFsbHkKKysgICAgLy8gbmVnYXRlIHRo ZW0gYmFjay4KKysgICAgLy8gVE9ETyhzaGF3bkBhbmFzdGFzLmlvKTogaW52ZXN0aWdhdGUgdGhp cyBpc3N1ZSBmdXJ0aGVyCisrICAgIGF1dG8gbnIgPSBTRUNDT01QX1NZU0NBTEwoY3R4KTsKKysg ICAgaWYgKG5yID09IF9fTlJfb3BlbmF0IHx8IG5yID09IF9fTlJfbWtkaXJhdCB8fCBuciA9PSBf X05SX2ZhY2Nlc3NhdCB8fCBuciA9PSBfX05SX3JlYWRsaW5rYXQgfHwKKysgICAgICAgIG5yID09 IF9fTlJfcmVuYW1lYXQgfHwgbnIgPT0gX19OUl9yZW5hbWVhdDIgfHwgbnIgPT0gX19OUl9uZXdm c3RhdGF0IHx8IG5yID09IF9fTlJfdW5saW5rYXQpIHsKKysgICAgICAgIGlmIChzdGF0aWNfY2Fz dDxpbnQ+KFNFQ0NPTVBfUEFSTTEoY3R4KSkgPiAwKSB7CisrICAgICAgICAgICAgU0VDQ09NUF9Q QVJNMShjdHgpID0gLVNFQ0NPTVBfUEFSTTEoY3R4KTsKKysgICAgICAgIH0KKysgICAgfQorKyNl bmRpZgorKworICAgICAvLyBDb3B5IHRoZSBzZWNjb21wLXNwZWNpZmljIGRhdGEgaW50byBhIGFy Y2hfc2VjY29tcF9kYXRhIHN0cnVjdHVyZS4gVGhpcworICAgICAvLyBpcyB3aGF0IHdlIGFyZSBz aG93aW5nIHRvIFRyYXBGbmMgY2FsbGJhY2tzIHRoYXQgdGhlIHN5c3RlbSBjYWxsCisgICAgIC8v IGV2YWx1YXRvciByZWdpc3RlcmVkIHdpdGggdGhlIHNhbmRib3guCistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMu Y2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZXJ2aWNlcy9jcmVkZW50aWFscy5jYworQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBDaHJvb3RUb1Nh ZmVFbXB0eURpcigpIHsKKyAgIHBpZF90IHBpZCA9IC0xOworICAgYWxpZ25hcygxNikgY2hhciBz dGFja19idWZbUFRIUkVBRF9TVEFDS19NSU5dOworICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9G QU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAgIC8vIFRoZSBzdGFjayBncm93 cyBkb3dud2FyZC4KKyAgIHZvaWQqIHN0YWNrID0gc3RhY2tfYnVmICsgc2l6ZW9mKHN0YWNrX2J1 Zik7CisgI2Vsc2UKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zeXNjYWxsX2Jyb2tlci9icm9rZXJfcHJvY2Vzcy5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tl cl9wcm9jZXNzLmNjCitAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgQnJva2VyUHJvY2Vzczo6SXNT eXNjYWxsQWxsb3dlZChpbnQgc3lzbm8pIGNvbnN0IHsKKyAjaWYgZGVmaW5lZChfX05SX2ZzdGF0 YXQpCisgICAgIGNhc2UgX19OUl9mc3RhdGF0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCisrI2lmIGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBj YXNlIF9fTlJfbmV3ZnN0YXRhdDoKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gIWZhc3RfY2hlY2tf aW5fY2xpZW50XyB8fCBhbGxvd2VkX2NvbW1hbmRfc2V0Xy50ZXN0KENPTU1BTkRfU1RBVCk7Cist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVt X2hlYWRlcnMvbGludXhfc2VjY29tcC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCitAQCAt MjksNiArMjksOSBAQAorICNpZm5kZWYgRU1fQUFSQ0g2NAorICNkZWZpbmUgRU1fQUFSQ0g2NCAx ODMKKyAjZW5kaWYKKysjaWZuZGVmIEVNX1BQQzY0CisrI2RlZmluZSBFTV9QUEM2NCAyMQorKyNl bmRpZgorIAorICNpZm5kZWYgX19BVURJVF9BUkNIXzY0QklUCisgI2RlZmluZSBfX0FVRElUX0FS Q0hfNjRCSVQgMHg4MDAwMDAwMAorQEAgLTU0LDYgKzU3LDEyIEBACisgI2lmbmRlZiBBVURJVF9B UkNIX0FBUkNINjQKKyAjZGVmaW5lIEFVRElUX0FSQ0hfQUFSQ0g2NCAoRU1fQUFSQ0g2NCB8IF9f QVVESVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKKyAjZW5kaWYKKysjaWZuZGVmIEFV RElUX0FSQ0hfUFBDNjQKKysjZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjQgKEVNX1BQQzY0IHwgX19B VURJVF9BUkNIXzY0QklUKQorKyNlbmRpZgorKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NExFCisr I2RlZmluZSBBVURJVF9BUkNIX1BQQzY0TEUgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklU IHwgX19BVURJVF9BUkNIX0xFKQorKyNlbmRpZgorIAorIC8vIEZvciBwcmN0bC5oCisgI2lmbmRl ZiBQUl9TRVRfU0VDQ09NUAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGlu dXhfc2lnbmFsLmgKK0BAIC0xMyw3ICsxMyw3IEBACisgLy8gKG5vdCB1bmRlZmluZWQsIGJ1dCBk ZWZpbmVkIGRpZmZlcmVudCB2YWx1ZXMgYW5kIGluIGRpZmZlcmVudCBtZW1vcnkKKyAvLyBsYXlv dXRzKS4gU28sIGZpbGwgdGhlIGdhcCBoZXJlLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgCisgI2RlZmluZSBMSU5VWF9TSUdIVVAgMQorICNkZWZpbmUgTElOVVhfU0lH SU5UIDIKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2Fs bHMuaAorQEAgLTM1LDUgKzM1LDkgQEAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oIgorICNlbmRpZgorIAorKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv cHBjNjRfbGludXhfc3lzY2FsbHMuaCIKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8vIFNBTkRCT1hf TElOVVhfU1lTVEVNX0hFQURFUlNfTElOVVhfU1lTQ0FMTFNfSF8KKyAKKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51 eF91Y29udGV4dC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAorQEAgLTExLDYgKzExLDgg QEAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhfdWNv bnRleHQuaCIKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICNpbmNsdWRlICJzYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL2kzODZfbGludXhfdWNvbnRleHQuaCIKKysjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv cHBjNjRfbGludXhfdWNvbnRleHQuaCIKKyAjZWxzZQorICNlcnJvciAiTm8gc3VwcG9ydCBmb3Ig eW91ciBhcmNoaXRlY3R1cmUgaW4gUE5hQ2wgaGVhZGVyIgorICNlbmRpZgorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5o CitAQCAtMCwwICsxLDEyIEBACisrLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhv cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGlu IHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFE RVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCisrI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RF TV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCisrCisrI2luY2x1ZGUgPGFzbS91bmlz dGQuaD4KKysKKysvL1RPRE86IGlzIGl0IG5lY2Vzc2FyeSB0byByZWRlZmluZSBzeXNjYWxsIG51 bWJlcnMgZm9yIFBQQzY0PworKworKyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVB REVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAv ZGV2L251bGwKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oCitAQCAtMCwwICsxLDEy IEBACisrLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg cmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp bGUuCisrCisrI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVY X1VDT05URVhUX0hfCisrI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0 X0xJTlVYX1VDT05URVhUX0hfCisrCisrI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgorKworKy8v VE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHVjb250ZXh0IG9uIFBQQzY0PworKwor KyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9VQ09O VEVYVF9IXworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9z ZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNj CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2Vf bWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKK0BAIC0x NSw2ICsxNSwxMSBAQAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3N5c2NhbGxzLmgiCisgI2luY2x1ZGUgInNlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5k Ym94L2xpbnV4L3NhbmRib3hfbGludXguaCIKKyAKKysvLyBPbiBQUEM2NCwgVENHRVRTIGlzIGRl ZmluZWQgaW4gdGVybXMgb2Ygc3RydWN0IHRlcm1pb3MsIHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJt aW9zLmgKKysjaWZkZWYgX19wb3dlcnBjNjRfXworKyNpbmNsdWRlIDx0ZXJtaW9zLmg+CisrI2Vu ZGlmCisrCisgLy8gVE9ETyh2aWduYXR0aSk6IHJlcGxhY2UgdGhlIGxvY2FsIGRlZmluaXRpb25z IGJlbG93IHdpdGggI2luY2x1ZGUKKyAvLyA8bGludXgvZG1hLWJ1Zi5oPiBvbmNlIGtlcm5lbCB2 ZXJzaW9uIDQuNiBiZWNvbWVzIHdpZGVseSB1c2VkLgorICNpbmNsdWRlIDxsaW51eC90eXBlcy5o PgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmds ZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oCitAQCAt OSw2ICs5LDcgQEAKKyAjaWZuZGVmIExJQkFOR0xFX0NPTlNUQU5UU19IXworICNkZWZpbmUgTElC QU5HTEVfQ09OU1RBTlRTX0hfCisgCisrI2luY2x1ZGUgPGNzdGRkZWY+CisgI2luY2x1ZGUgImNv bW1vbi9wbGF0Zm9ybS5oIgorIAorIG5hbWVzcGFjZSBnbAorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFw L2FzbS9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2FzbS9CVUlMRC5nbgorQEAgLTQ2 LDYgKzQ2LDEwIEBAIGlmIChjdXJyZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAi eDY0IikgeworICAgICAgIHNvdXJjZXMgPSBbCisgICAgICAgICAiU2F2ZVJlZ2lzdGVyc19taXBz NjQuUyIsCisgICAgICAgXQorKyAgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJwcGM2NCIp IHsKKysgICAgICBzb3VyY2VzID0gWworKyAgICAgICAgIlNhdmVSZWdpc3RlcnNfcHBjNjQuUyIs CisrICAgICAgXQorICAgICB9CisgCisgICAgIGlmIChjdXJyZW50X2NwdSA9PSAiYXJtIikgewor bmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaGVh cC9hc20vU2F2ZVJlZ2lzdGVyc19wcGM2NC5TCitAQCAtMCwwICsxLDYwIEBACisrLyoKKysgKiB0 eXBlZGVmIHZvaWQgKCpQdXNoQWxsUmVnaXN0ZXJzQ2FsbGJhY2spKFNhZmVQb2ludEJhcnJpZXIq LCBUaHJlYWRTdGF0ZSosIGludHB0cl90Kik7CisrICogZXh0ZXJuICJDIiB2b2lkIFB1c2hBbGxS ZWdpc3RlcnMoU2FmZVBvaW50QmFycmllciosIFRocmVhZFN0YXRlKiwgUHVzaEFsbFJlZ2lzdGVy c0NhbGxiYWNrKQorKyAqLworKworKy50eXBlIFB1c2hBbGxSZWdpc3RlcnMsICVmdW5jdGlvbgor Ky5nbG9iYWwgUHVzaEFsbFJlZ2lzdGVycworKy5oaWRkZW4gUHVzaEFsbFJlZ2lzdGVycworK1B1 c2hBbGxSZWdpc3RlcnM6CisrICAgICAgICAvLyBQdXNoIGFsbCBjYWxsZWUtc2F2ZXMgcmVnaXN0 ZXJzIHRvIGdldCB0aGVtCisrICAgICAgICAvLyBvbiB0aGUgc3RhY2sgZm9yIGNvbnNlcnZhdGl2 ZSBzdGFjayBzY2FubmluZy4KKysgICAgICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGxlZS1z YXZlZCByZWdpc3RlcnMgYW5kIG1pbmltYWwgc3RhY2sgZnJhbWUuCisrICAgICAgICBtZmxyIDAg ICAgICAgICAjIHIwID0gTFIKKysgICAgICAgIHN0ZCAwLDE2KDEpICAgICMgc3RvcmUgTFIgYXQg YWRkciBzcCsxNgorKyAgICAgICAgc3RkdSAxLC0xNzYoMSkgIyBncm93IHN0YWNrIGJ5IDE3NiBi eXRlcyBhbmQgc3RvcmUgbmV3IHN0YWNrIHRvcCBwdHIgdG8gcjEKKysgICAgICAgICAgICAjIDMy MTgqOCA9IG1pbiBzdGFjayAgbm9uLXZvbGF0aWxlIHJlZ2lzdGVycworKworKyAgICAgICAgLy8g U2F2ZSB0aGUgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycworKyAgICAgICAgc3RkIDMxLDE2OCgxKSAg IyBzdG9yZSByMzEgdG8gYWRkciBzcCsxNjggCisrICAgICAgICBzdGQgMzAsMTYwKDEpICAjIGV0 Yy4uLgorKyAgICAgICAgc3RkIDI5LDE1MigxKQorKyAgICAgICAgc3RkIDI4LDE0NCgxKQorKyAg ICAgICAgc3RkIDI3LDEzNigxKQorKyAgICAgICAgc3RkIDI2LDEyOCgxKQorKyAgICAgICAgc3Rk IDI1LDEyMCgxKQorKyAgICAgICAgc3RkIDI0LDExMigxKQorKyAgICAgICAgc3RkIDIzLDEwNCgx KQorKyAgICAgICAgc3RkIDIyLDk2KDEpCisrICAgICAgICBzdGQgMjEsODgoMSkKKysgICAgICAg IHN0ZCAyMCw4MCgxKQorKyAgICAgICAgc3RkIDE5LDcyKDEpCisrICAgICAgICBzdGQgMTgsNjQo MSkKKysgICAgICAgIHN0ZCAxNyw1NigxKQorKyAgICAgICAgc3RkIDE2LDQ4KDEpCisrICAgICAg ICBzdGQgMTUsNDAoMSkKKysgICAgICAgIHN0ZCAxNCwzMigxKQorKyAgICAgICAgCisrICAgICAg ICAvLyBOb3RlOiB0aGUgY2FsbGVlLXNhdmVkIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBkbyBu b3QgbmVlZCB0byBiZQorKyAgICAgICAgLy8gY29waWVkIHRvIHRoZSBzdGFjaywgYmVjYXVzZSBm cCByZWdpc3RlcnMgbmV2ZXIgaG9sZCBoZWFwIHBvaW50ZXJzCisrICAgICAgICAvLyBhbmQgc28g ZG8gbm90IG5lZWQgdG8gYmUga2VwdCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4K KysgICAgICAgIAorKyAgICAgICAgLy8gUGFzcyB0aGUgdHdvIGZpcnN0IGFyZ3VtZW50cyB1bnRv dWNoZWQgaW4gcjMgYW5kIHI0IGFuZCB0aGUKKysgICAgICAgIC8vIHN0YWNrIHBvaW50ZXIgdG8g dGhlIGNhbGxiYWNrLgorKworKyAgICAgICAgc3RkIDIsIDI0KDEpICAgIyBzYXZlIHIyIHRvIHNw KzI0IGFkZHIKKysgICAgICAgIG10Y3RyIDUgICAgICAgICMgY29weSAzcmQgZnVuY3Rpb24gYXJn IChjYWxsYmFjayBmbiBwb2ludGVyKSB0byBDVFIKKysgICAgICAgIG1yIDEyLCA1ICAgICAgICMg cjEyIG11c3QgaG9sZCBhZGRyZXNzIG9mIGNhbGxiYWNrIHdlIGFyZSBnb2luZyB0byBjYWxsIAor KyAgICAgICAgICAgICAgICAgICAgICAgIyAgZm9yIHBvc2l0aW9uLWlkZXBlbmRlbnQgZnVuY3Rp b25zIGluc2lkZSB0aGUgY2FsbGJhY2sgdG8gd29yaworKyAgICAgICAgbXIgNSwgMSAgICAgICAg IyBzZXQgY3VycmVudCBzcCAoc3RhY2sgdG9wKSBhcyAzcmQgYXJndW1lbnQgZm9yIHRoZSBjYWxs YmFjaworKyAgICAgICAgYmN0cmwgICAgICAgICAgIyBzZXQgTFIgdG8gUEMrNCBhbmQgY2FsbCB0 aGUgY2FsbGJhY2sKKysgICAgICAgIGxkIDIsIDI0KDEpICAgICMgcmVzdG9yZSByMiBmcm9tIHNw KzI0IGFkZHIKKysKKysgICAgICAgIC8vIEFkanVzdCBzdGFjaywgcmVzdG9yZSByZXR1cm4gYWRk cmVzcyBhbmQgcmV0dXJuLgorKyAgICAgICAgLy8gTm90ZTogdGhlIGNvcGllZCByZWdpc3RlcnMg ZG8gbm90IG5lZWQgdG8gYmUgcmVsb2FkZWQgaGVyZSwKKysgICAgICAgIC8vIGJlY2F1c2UgdGhl eSB3ZXJlIHByZXNlcnZlZCBieSB0aGUgY2FsbGVkIHJvdXRpbmUuCisrICAgICAgICBhZGRpIDEs MSwxNzYgICAjIHJlc3RvcmUgb3JpZ2luYWwgU1AgYnkgZG9pbmcgc3AgKz0gMTc2CisrICAgICAg ICBsZCAwLDE2KDEpICAgICAjIHJlc3RvcmUgb3JpZ2luYWwgTFIgZnJvbSBhZGRyIHNwKzE2Cisr ICAgICAgICBtdGxyIDAgICAgICAgICAjIC4uLiBjb3B5IGl0IHRvIHRoZSBhY3R1YWwgTFIKKysg ICAgICAgIGJsciAgICAgICAgICAgICMgcmV0dXJuIHRvIExSIGFkZHIKKysKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vaGVhcC9oZWFwX3BhZ2UuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2hlYXBfcGFnZS5o CitAQCAtNjcsMTEgKzY3LDEyIEBAIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rUGFnZUJhc2VNYXNr ID0gfmtCbGlua1BhZ2VPZmZzZXRNYXNrOworIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rUGFnZXNQ ZXJSZWdpb24gPSAxMDsKKyAKKyAvLyBUT0RPKG55YSk6IFJlcGxhY2UgdGhpcyB3aXRoIHNvbWV0 aGluZyBsaWtlICNpZiBFTkFCTEVfTkFDTC4KKy0jaWYgMAorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQorIC8vIE5hQ2wncyBzeXN0ZW0gcGFnZSBzaXplIGlzIDY0IEtpQi4gVGhpcyBjYXVz ZXMgYSBwcm9ibGVtIGluIE9pbHBhbidzIGhlYXAKKyAvLyBsYXlvdXQgYmVjYXVzZSBPaWxwYW4g YWxsb2NhdGVzIHR3byBndWFyZCBwYWdlcyBmb3IgZWFjaCBCbGluayBwYWdlICh3aG9zZQorIC8v IHNpemUgaXMga0JsaW5rUGFnZVNpemUgPSAyXjE3ID0gMTI4IEtpQikuIFNvIHdlIGRvbid0IHVz ZSBndWFyZCBwYWdlcyBpbgorIC8vIE5hQ2wuCisrLy8gVGhlIHNhbWUgaXNzdWUgaG9sZHMgZm9y IHBwYzY0IHN5c3RlbXMsIHdoaWNoIHVzZSBhIDY0ayBwYWdlIHNpemUuCisgY29uc3RleHByIHNp emVfdCBrQmxpbmtHdWFyZFBhZ2VTaXplID0gMDsKKyAjZWxzZQorIGNvbnN0ZXhwciBzaXplX3Qg a0JsaW5rR3VhcmRQYWdlU2l6ZSA9IGJhc2U6OmtTeXN0ZW1QYWdlU2l6ZTsKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vd3RmL2R0b2EvdXRpbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvZHRvYS91dGlscy5o CitAQCAtNDUsNyArNDUsNyBAQAorIC8vIGRpc2FibGVkLikKKyAvLyBPbiBMaW51eCx4ODYgODky NTVlLTIyICE9IERpdl9kb3VibGUoODkyNTUuMC8xZTIyKQorICNpZiBkZWZpbmVkKF9NX1g2NCkg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fQVJNRUxfXykgfHwgXAorLSAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMX18pCisrICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorICNkZWZpbmUgRE9VQkxFX0NPTlZFUlNJT05fQ09SUkVDVF9ET1VCTEVfT1BFUkFUSU9O UyAxCisgI2VsaWYgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKQorICNpZiBk ZWZpbmVkKF9XSU4zMikKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9CVUlMRC5nbgorQEAgLTEwMCw2ICsxMDAs MTMgQEAgaWYgKGlzX3dpbiAmJiAhaXNfbXNhbiAmJiBjdXJyZW50X2NwdSAhPSAiYXJtNjQiKSB7 CisgICAgICAgfSBlbHNlIHsKKyAgICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9j b25maWciIF0KKyAgICAgICB9CisrICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0 IikgeworKyAgICAgIGlmIChpc19saW51eCkgeworKyAgICAgICAgIyBUT0RPOiBwcGM2NCAoYmUp IGNoZWNrCisrICAgICAgICBzb3VyY2VzICs9IGNyeXB0b19zb3VyY2VzX2xpbnV4X3BwYzY0bGUK KysgICAgICB9IGVsc2UgeworKyAgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2Nv bmZpZyIgXQorKyAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICBwdWJsaWNfY29uZmlncyA9 IFsgIjpub19hc21fY29uZmlnIiBdCisgICAgIH0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKK0BAIC00NCw2 ICs0NCw4IEBAIHR5cGVkZWYgTURSYXdDb250ZXh0QVJNIFJhd0NvbnRleHRDUFU7CisgdHlwZWRl ZiBNRFJhd0NvbnRleHRBUk02NF9PbGQgUmF3Q29udGV4dENQVTsKKyAjZWxpZiBkZWZpbmVkKF9f bWlwc19fKQorIHR5cGVkZWYgTURSYXdDb250ZXh0TUlQUyBSYXdDb250ZXh0Q1BVOworKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyt0eXBlZGVmIE1EUmF3Q29udGV4dFBQQzY0IFJhd0Nv bnRleHRDUFU7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVk IHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK0BAIC0yNzAsNyAr MjcwLDQyIEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSog b3V0KSBjb25zdCB7CisgICBvdXQtPmZsb2F0X3NhdmUuZmlyID0gbWNvbnRleHQuZnBjX2VpcjsK KyAjZW5kaWYKKyB9CistI2VuZGlmICAvLyBfX21pcHNfXworKworKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysKKyt1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2lu dGVyKCkgY29uc3QgeworKyAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworK30K KysKKyt2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkg Y29uc3QgeworKyAgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX1BQQzY0X0ZVTEw7 CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkr KykKKysgICAgICAgIG91dC0+Z3ByW2ldID0gbWNvbnRleHQuZ3BfcmVnc1tpXTsKKysKKysgICAg b3V0LT5sciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsKKysgICAgb3V0LT5zcnIwID0gbWNv bnRleHQuZ3BfcmVnc1tQVF9OSVBdOworKyAgICBvdXQtPnNycjEgPSBtY29udGV4dC5ncF9yZWdz W1BUX01TUl07CisrICAgIG91dC0+Y3IgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NDUl07CisrICAg IG91dC0+eGVyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOworKyAgICBvdXQtPmN0ciA9IG1j b250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKysgICAgCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwg TURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPmZs b2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsKKysKKysgICAgb3V0LT5m bG9hdF9zYXZlLmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07CisrCisrICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisr ICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPSBcCisrICAgICAgICAgICAgeygo KHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVswXSkgPDwgMzIpIAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1bMV0sIAorKyAgICAgICAgICAgICgoKHVpbnQ2NF90 KXZyZWdzLnZycmVnc1tpXVsyXSkgPDwgMzIpCisrICAgICAgICAgICAgICAgICAgICAgICAgIHwg dnJlZ3MudnJyZWdzW2ldWzNdfTsKKysKKysgICAgb3V0LT52cnNhdmUgPSB2cmVncy52cnNhdmU7 CisrICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLnZzY3IudnNjcl93 b3JkfTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQgPSAweEZGRkZGRkZGOyAK Kyt9CisrI2VuZGlmICAvLyBfX3Bvd2VycGM2NF9fCisgCisgdm9pZCBUaHJlYWRJbmZvOjpHZXRH ZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6ZV90KiBzaXplKSB7Cisg ICBhc3NlcnQoZ3BfcmVncyB8fCBzaXplKTsKK0BAIC0yNzksNiArMzE0LDExIEBAIHZvaWQgVGhy ZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoqIGdwX3JlZ3MsIHNpemVf dCogc2l6ZSkgeworICAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdyZWdzOworICAgaWYgKHNpemUp CisgICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdyZWdzKTsKKysjZWxpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisrICBpZiAoZ3BfcmVncykKKysgICAgKmdwX3JlZ3MgPSBtY29udGV4dC5n cF9yZWdzOworKyAgaWYgKHNpemUpCisrICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdwX3Jl Z3MpOworICNlbHNlCisgICBpZiAoZ3BfcmVncykKKyAgICAgKmdwX3JlZ3MgPSAmcmVnczsKK0BA IC0yOTQsNiArMzM0LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0RmxvYXRpbmdQb2ludFJlZ2lz dGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7CisgICAgICpmcF9yZWdzID0gJm1j b250ZXh0LmZwcmVnczsKKyAgIGlmIChzaXplKQorICAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4 dC5mcHJlZ3MpOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGlmIChmcF9yZWdz KQorKyAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcF9yZWdzOworKyAgaWYgKHNpemUpCisrICAg ICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZwX3JlZ3MpOworICNlbHNlCisgICBpZiAoZnBfcmVn cykKKyAgICAgKmZwX3JlZ3MgPSAmZnByZWdzOworQEAgLTMwMiw0ICszNDcsMTMgQEAgdm9pZCBU aHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXpl X3QqIHNpemUpIHsKKyAjZW5kaWYKKyB9CisgCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK Kyt2b2lkIFRocmVhZEluZm86OkdldFZlY3RvclJlZ2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXpl X3QqIHNpemUpIHsKKysgICAgaWYgKHZfcmVncykKKysgICAgICAgICp2X3JlZ3MgPSAmdnJlZ3M7 CisrICAgIGlmIChzaXplKQorKyAgICAgICAgKnNpemUgPSBzaXplb2YodnJlZ3MpOworK30KKysj ZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAorQEAg LTY4LDYgKzY4LDEwIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKKyAgIC8vIFVzZSB0aGUgc3RydWN0 dXJlcyBkZWZpbmVkIGluIDxzeXMvdXNlci5oPgorICAgc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3Qg cmVnczsKKyAgIHN0cnVjdCB1c2VyX2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOworKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFVzZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxz eXMvdWNvbnRleHQuaD4uCisrICBtY29udGV4dF90IG1jb250ZXh0OworKyAgdnJyZWdzZXRfdCB2 cmVnczsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmUg ZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+LgorICAgbWNvbnRleHRfdCBtY29udGV4dDsKK0BA IC04NCw2ICs4OCwxMSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgCisgICAvLyBSZXR1cm5zIHRo ZSBwb2ludGVyIGFuZCBzaXplIG9mIGZsb2F0IHBvaW50IHJlZ2lzdGVyIGFyZWEuCisgICB2b2lk IEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSk7 CisrCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFJldHVybnMgdGhlIHBvaW50 ZXIgYW5kIHNpemUgb2YgdGhlIHZlY3RvciByZWdpc3RlciBhcmVhLiAoUFBDNjQgb25seSkKKysg IHZvaWQgR2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCogc2l6ZSk7Cisr I2VuZGlmCisgfTsKKyAKKyB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5j YworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4 dF9yZWFkZXIuY2MKK0BAIC0yNTQsNiArMjU0LDQ4IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZp bGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsK KyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSB1Yy0+dWNfbWNvbnRleHQuZnBjX2VpcjsgIC8vIFVu dXNlZC4KKyAjZW5kaWYKKyB9CisrCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKwor K3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0 X3QqIHVjKSB7CisrICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhU X1BQQzY0X1JFR19TUF07CisrfQorKworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5z dHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisrICAgIHJldHVybiB1Yy0+ dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworK30KKysKKyt2b2lkIFVDb250ZXh0UmVhZGVy OjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVj LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZycmVnc2V0X3Qq IHZyZWdzKSB7CisrICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVM TDsKKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VO VDsgaSsrKQorKyAgICAgICAgb3V0LT5ncHJbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tp XTsKKysKKysgICAgb3V0LT5sciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0xOS107ICAg IAorKyAgICBvdXQtPnNycjAgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworKyAg ICBvdXQtPnNycjEgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdOworKyAgICBvdXQt PmNyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKKysgICAgb3V0LT54ZXIgPSB1 Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOworKyAgICBvdXQtPmN0ciA9IHVjLT51Y19t Y29udGV4dC5ncF9yZWdzW1BUX0NUUl07CisrICAgIAorKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5m bG9hdF9zYXZlLmZwcmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW2ldOworKworKyAg ICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tORlBSRUct MV07CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZS X0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQorKyAg ICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy0+dnJyZWdzW2ldWzBdKSA8PCAzMikgCisrICAg ICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVsxXSwgCisrICAgICAgICAg ICAgICgoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMl0pIDw8IDMyKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICB8IHZyZWdzLT52cnJlZ3NbaV1bM119OworKworKyAgICBvdXQtPnZyc2F2 ZSA9IHZyZWdzLT52cnNhdmU7CisrICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAs IHZyZWdzLT52c2NyLnZzY3Jfd29yZH07CisrICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cnZh bGlkID0gMHhGRkZGRkZGRjsgCisrfQorKworICNlbmRpZgorIAorIH0gIC8vIG5hbWVzcGFjZSBn b29nbGVfYnJlYWtwYWQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdWNvbnRleHRfcmVhZGVyLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1w X3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK0BAIC01NCw2ICs1NCw5IEBAIHN0cnVj dCBVQ29udGV4dFJlYWRlciB7CisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgIHN0YXRp YyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRf dCAqdWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZnBzaW1k X2NvbnRleHQqIGZwcmVncyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgc3Rh dGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4 dF90ICp1YywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZycmVnc2V0X3Qq IHZyZWdzKTsKKyAjZWxzZQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4 dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1Yyk7CisgI2VuZGlmCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK0BAIC00NjcsOSAr NDY3LDE2IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6SGFuZGxlU2lnbmFsKGludCAvKnNpZyov LCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjKSB7CisgICAgIG1lbWNweSgmZ19jcmFzaF9jb250 ZXh0Xy5mbG9hdF9zdGF0ZSwgZnBfcHRyLAorICAgICAgICAgICAgc2l6ZW9mKGdfY3Jhc2hfY29u dGV4dF8uZmxvYXRfc3RhdGUpKTsKKyAgIH0KKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAvLyBPbiBQUEM2NCwgd2UgbXVzdCBjb3B5IFZSIHN0YXRlCisrICB1Y29udGV4dF90KiB1 Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisrICBpZiAodWNfcHRyLT51Y19tY29udGV4dC52X3Jl Z3MpIHsKKysgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0ZSwgdWNfcHRy LT51Y19tY29udGV4dC52X3JlZ3MsCisrICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0 Xy52ZWN0b3Jfc3RhdGUpKTsKKysgIH0KKyAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorICAgLy8gRlAgc3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBB Qkkgb24gQVJNIExpbnV4LgorLSAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlz IGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90CisrICAvLyBJbiBjYXNlIG9mIE1JUFMsIExpbnV4 IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90CisgICAvLyBhbmQgJ2Zsb2F0 X3N0YXRlJyBpcyBub3QgYSBtZW1iZXIgb2YgQ3Jhc2hDb250ZXh0LgorICAgdWNvbnRleHRfdCog dWNfcHRyID0gKHVjb250ZXh0X3QqKXVjOworICAgaWYgKHVjX3B0ci0+dWNfbWNvbnRleHQuZnBy ZWdzKSB7CitAQCAtNzA3LDExICs3MTQsMTkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpXcml0 ZU1pbmlkdW1wKCkgeworICAgfQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJ X18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYg IWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pIFwKKysgICAgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIC8vIEZQ VSBzdGF0ZSBpcyBub3QgcGFydCBvZiBBUk0gRUFCSSB1Y29udGV4dF90LgorICAgbWVtY3B5KCZj b250ZXh0LmZsb2F0X3N0YXRlLCBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZnByZWdzLAor ICAgICAgICAgIHNpemVvZihjb250ZXh0LmZsb2F0X3N0YXRlKSk7CisgI2VuZGlmCisrCisrI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFZlY3RvciByZWdpc3RlcnMgbXVzdCBiZSBj b3BpZWQgb24gUFBDNjQKKysgIG1lbWNweSgmY29udGV4dC52ZWN0b3Jfc3RhdGUsIGNvbnRleHQu Y29udGV4dC51Y19tY29udGV4dC52X3JlZ3MsCisrICAgICAgICAgc2l6ZW9mKGNvbnRleHQudmVj dG9yX3N0YXRlKSk7CisrI2VuZGlmCisrCisgICBjb250ZXh0LnRpZCA9IHN5c19nZXR0aWQoKTsK KyAKKyAgIC8vIEFkZCBhbiBleGNlcHRpb24gc3RyZWFtIHRvIHRoZSBtaW5pZHVtcCBmb3IgYmV0 dGVyIHJlcG9ydGluZy4KK0BAIC03MzIsNiArNzQ3LDkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVy OjpXcml0ZU1pbmlkdW1wKCkgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBjb250ZXh0 LnNpZ2luZm8uc2lfYWRkciA9CisgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4 dC5jb250ZXh0LnVjX21jb250ZXh0LnBjKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICBjb250ZXh0LnNpZ2luZm8uc2lfYWRkciA9CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDx2 b2lkKj4oY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXSk7CisgI2Vs c2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZv cm0geWV0LiIKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4 Y2VwdGlvbl9oYW5kbGVyLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4 Y2VwdGlvbl9oYW5kbGVyLmgKK0BAIC0xOTIsNyArMTkyLDExIEBAIGNsYXNzIEV4Y2VwdGlvbkhh bmRsZXIgeworICAgICBzaWdpbmZvX3Qgc2lnaW5mbzsKKyAgICAgcGlkX3QgdGlkOyAgLy8gdGhl IGNyYXNoaW5nIHRocmVhZC4KKyAgICAgdWNvbnRleHRfdCBjb250ZXh0OworLSNpZiAhZGVmaW5l ZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisrICAgIC8vIFBQQzY0J3MgRlAgc3RhdGUgaXMgYSBwYXJ0IG9mIHVjb250ZXh0 X3QgbGlrZSBNSVBTIGJ1dCB0aGUgdmVjdG9yCisrICAgIC8vIHN0YXRlIGlzIG5vdCwgc28gYSBz dHJ1Y3QgaXMgbmVlZGVkLgorKyAgICB2c3RhdGVfdCB2ZWN0b3Jfc3RhdGU7CisrI2VsaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgICAgLy8gI2lmZGVm IHRoaXMgb3V0IGJlY2F1c2UgRlAgc3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBBQkkgZm9yIExp bnV4IEFSTS4KKyAgICAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlzIGFscmVh ZHkgcGFydCBvZiB1Y29udGV4dF90IHNvCisgICAgIC8vICdmbG9hdF9zdGF0ZScgaXMgbm90IHJl cXVpcmVkLgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hh bmRsZXJfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4 Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNjCitAQCAtMzA3LDcgKzMwNyw3IEBAIFRFU1QoRXhj ZXB0aW9uSGFuZGxlclRlc3QsIFBhcmFsbGVsQ2hpbGRDcmFzaGVzRG9udEhhbmcpIHsKKyAgIH0K KyAKKyAgIC8vIFdhaXQgYSB3aGlsZSB1bnRpbCB0aGUgY2hpbGQgc2hvdWxkIGhhdmUgY3Jhc2hl ZC4KKy0gIHVzbGVlcCgxMDAwMDAwKTsKKysgIHVzbGVlcCgyMDAwMDAwKTsKKyAgIC8vIEtpbGwg dGhlIGNoaWxkIGlmIGl0IGlzIHN0aWxsIHJ1bm5pbmcuCisgICBraWxsKGNoaWxkLCBTSUdLSUxM KTsKKyAKK0BAIC01NzYsNiArNTc2LDggQEAgY29uc3QgdW5zaWduZWQgY2hhciBrSWxsZWdhbElu c3RydWN0aW9uW10gPSB7CisgI2lmIGRlZmluZWQoX19taXBzX18pCisgICAvLyBtZmMyIHplcm8s SW1wbCAtIHVzdWFsbHkgaWxsZWdhbCBpbiB1c2Vyc3BhY2UuCisgICAweDQ4LCAweDAwLCAweDAw LCAweDQ4CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgMHgwMSwgMHgwMSwgMHgw MSwgMHgwMSAvLyBDcmFzaGVzIG9uIGEgdGVzdGVkIFBPV0VSOSBjcHUKKyAjZWxzZQorICAgLy8g VGhpcyBjcmFzaGVzIHdpdGggU0lHSUxMIG9uIHg4Ni94ODYtNjQvYXJtLgorICAgMHhmZiwgMHhm ZiwgMHhmZiwgMHhmZgorQEAgLTc3MSwxMCArNzczLDEwIEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxl clRlc3QsIEluc3RydWN0aW9uUG9pbnRlck1lbW9yeU1heEJvdW5kKSB7CisgCisgICAvLyBUaGVz ZSBhcmUgZGVmaW5lZCBoZXJlIHNvIHRoZSBwYXJlbnQgY2FuIHVzZSB0aGVtIHRvIGNoZWNrIHRo ZQorICAgLy8gZGF0YSBmcm9tIHRoZSBtaW5pZHVtcCBhZnRlcndhcmRzLgorLSAgLy8gVXNlIDRr IGhlcmUgYmVjYXVzZSB0aGUgT1Mgd2lsbCBoYW5kIG91dCBhIHNpbmdsZSBwYWdlIGV2ZW4KKysg IC8vIFVzZSB0aGUgcGFnZSBzaXplIGhlcmUgYmVjYXVzZSB0aGUgT1Mgd2lsbCBoYW5kIG91dCBh IHNpbmdsZSBwYWdlIGV2ZW4KKyAgIC8vIGlmIGEgc21hbGxlciBzaXplIGlzIHJlcXVlc3RlZCwg YW5kIHRoaXMgdGVzdCB3YW50cyB0bworICAgLy8gdGVzdCB0aGUgdXBwZXIgYm91bmQgb2YgdGhl IG1lbW9yeSByYW5nZS4KKy0gIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gNDA5NjsgIC8v IGJ5dGVzCisrICBjb25zdCB1aW50MzJfdCBrTWVtb3J5U2l6ZSA9IGdldHBhZ2VzaXplKCk7ICAv LyBieXRlcworICAgY29uc3QgaW50IGtPZmZzZXQgPSBrTWVtb3J5U2l6ZSAtIHNpemVvZihrSWxs ZWdhbEluc3RydWN0aW9uKTsKKyAKKyAgIGNvbnN0IHBpZF90IGNoaWxkID0gZm9yaygpOworLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRl ci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9k dW1wX3dyaXRlci5jYworQEAgLTEzOCw3ICsxMzgsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIg eworICAgICAgICAgICAgICAgICAgIGNvbnN0IE1pY3JvZHVtcEV4dHJhSW5mbyYgbWljcm9kdW1w X2V4dHJhX2luZm8sCisgICAgICAgICAgICAgICAgICAgTGludXhEdW1wZXIqIGR1bXBlcikKKyAg ICAgICA6IHVjb250ZXh0Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBOVUxMKSwKKy0j aWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250ZXh0ID8gJmNv bnRleHQtPnZlY3Rvcl9zdGF0ZSA6IE5VTEwpLAorKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgICAgICBmbG9hdF9zdGF0ZV8oY29udGV4dCA/ ICZjb250ZXh0LT5mbG9hdF9zdGF0ZSA6IE5VTEwpLAorICNlbmRpZgorICAgICAgICAgZHVtcGVy XyhkdW1wZXIpLAorQEAgLTMzNyw2ICszMzksOCBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgewor ICMgZWxzZQorICMgIGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9y dGVkIChuMzIpIgorICNlbmRpZgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAg Y29uc3QgY2hhciBrQXJjaFtdID0gInBwYzY0IjsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2Rl IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQiCisgI2VuZGlmCitAQCAt NDA5LDcgKzQxMyw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7CisgICB2b2lkIER1bXBDUFVT dGF0ZSgpIHsKKyAgICAgUmF3Q29udGV4dENQVSBjcHU7CisgICAgIG15X21lbXNldCgmY3B1LCAw LCBzaXplb2YoUmF3Q29udGV4dENQVSkpOworLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIFVD b250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8sIHZlY3Rvcl9zdGF0 ZV8pOworKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18p CisgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8sIGZs b2F0X3N0YXRlXyk7CisgI2Vsc2UKKyAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0 KCZjcHUsIHVjb250ZXh0Xyk7CitAQCAtNjA1LDcgKzYxMSw5IEBAIGNsYXNzIE1pY3JvZHVtcFdy aXRlciB7CisgICB2b2lkKiBBbGxvYyh1bnNpZ25lZCBieXRlcykgeyByZXR1cm4gZHVtcGVyXy0+ YWxsb2NhdG9yKCktPkFsbG9jKGJ5dGVzKTsgfQorIAorICAgY29uc3QgdWNvbnRleHRfdCogY29u c3QgdWNvbnRleHRfOworLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9f bWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBjb25zdCBnb29nbGVfYnJl YWtwYWQ6OnZzdGF0ZV90KiBjb25zdCB2ZWN0b3Jfc3RhdGVfOworKyNlbGlmICFkZWZpbmVkKF9f QVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICBjb25zdCBnb29nbGVfYnJlYWtw YWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOworICNlbmRpZgorICAgTGludXhEdW1w ZXIqIGR1bXBlcl87CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRl ci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCitAQCAtMjc4 LDEwICsyNzgsMTkgQEAgVEVTVChNaWNyb2R1bXBXcml0ZXJUZXN0LCBCYXNpY1dpdGhNYXBwaW5n cykgeworICAgQ3Jhc2hBbmRHZXRNaWNyb2R1bXAobWFwcGluZ3MsIE1pY3JvZHVtcEV4dHJhSW5m bygpLCAmYnVmKTsKKyAgIEFTU0VSVF9UUlVFKENvbnRhaW5zTWljcm9kdW1wKGJ1ZikpOworIAor KyAgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7CisgI2lmZGVmIF9fTFA2NF9fCistICBB U1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCistICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAw MDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgorLSAgICAg ICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9v LnNvIikpOworKyAgLy8gVGhpcyB0ZXN0IGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgZm9sbG93 aW5nIHBhZ2Ugc2l6ZXMKKysgIEFTU0VSVF9UUlVFKChwYWdlX3NpemUgPT0gNDA5NikgfHwgKHBh Z2Vfc2l6ZSA9PSA2NTUzNikpOworKyAgaWYgKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB7IAorKyAgICBB U1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisrICAgICAgICAgICAgICBidWYuZmluZCgiTSAw MDAwMDAwMDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCisrICAg ICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxp YmZvby5zbyIpKTsKKysgIH0gZWxzZSB7CisrICAgIEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBv cywKKysgICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMTAwMDAgMDAwMDAwMDAw MDAwMDAyQSAwMDAwMDAwMDAwMDEwMDAwICIKKysgICAgICAgICAgICAgICAgICAgICAgICIzMzIy MTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOworKyAgfQorICNlbHNl CisgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisgICAgICAgICAgICAgYnVmLmZpbmQo Ik0gMDAwMDEwMDAgMDAwMDAwMkEgMDAwMDEwMDAgIgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYworQEAgLTEx Niw2ICsxMTYsOSBAQCBib29sIExpbnV4Q29yZUR1bXBlcjo6R2V0VGhyZWFkSW5mb0J5SW5kZXgo c2l6ZV90IGluZGV4LCBUaHJlYWRJbmZvKiBpbmZvKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNf XykKKyAgIHN0YWNrX3BvaW50ZXIgPQorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+ KGluZm8tPm1jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdKTsKKysjZWxpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBzdGFja19wb2ludGVyID0KKysgICAgICByZWludGVy cHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBD NjRfUkVHX1NQXSk7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0 ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorQEAgLTIwMCw3ICsyMDMsMTAgQEAg Ym9vbCBMaW51eENvcmVEdW1wZXI6OkVudW1lcmF0ZVRocmVhZHMoKSB7CisgICAgICAgICBtZW1z ZXQoJmluZm8sIDAsIHNpemVvZihUaHJlYWRJbmZvKSk7CisgICAgICAgICBpbmZvLnRnaWQgPSBz dGF0dXMtPnByX3BncnA7CisgICAgICAgICBpbmZvLnBwaWQgPSBzdGF0dXMtPnByX3BwaWQ7Cist I2lmIGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzE7IGkrKykKKysgICAgICAgICAgICBpbmZvLm1jb250 ZXh0LmdwX3JlZ3NbaV0gPSBzdGF0dXMtPnByX3JlZ1tpXTsKKysjZWxpZiBkZWZpbmVkKF9fbWlw c19fKQorICNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgICAgICAgZm9yIChpbnQgaSA9IEVG X1IwOyBpIDw9IEVGX1IzMTsgaSsrKQorICAgICAgICAgICBpbmZvLm1jb250ZXh0LmdyZWdzW2kg LSBFRl9SMF0gPSBzdGF0dXMtPnByX3JlZ1tpXTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYworQEAgLTc5OCw3ICs3OTgsOSBA QCBib29sIExpbnV4RHVtcGVyOjpHZXRTdGFja0luZm8oY29uc3Qgdm9pZCoqIHN0YWNrLCBzaXpl X3QqIHN0YWNrX2xlbiwKKyAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnRfc3Rh Y2tfcG9pbnRlciAmIH4ocGFnZV9zaXplIC0gMSkpOworIAorICAgLy8gVGhlIG51bWJlciBvZiBi eXRlcyBvZiBzdGFjayB3aGljaCB3ZSB0cnkgdG8gY2FwdHVyZS4KKy0gIHN0YXRpYyBjb25zdCBw dHJkaWZmX3Qga1N0YWNrVG9DYXB0dXJlID0gMzIgKiAxMDI0OworKyAgLy8gVGhpcyBub3cgZGVw ZW5kcyBvbiBwYWdlX3NpemUgdG8gYXZvaWQgbWlzc2luZyBkYXRhCisrICAvLyBvbiBzeXN0ZW1z IHdpdGggbGFyZ2VyIHBhZ2Ugc2l6ZXMuCisrICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFj a1RvQ2FwdHVyZSA9IDggKiBwYWdlX3NpemU7CisgCisgICBjb25zdCBNYXBwaW5nSW5mbyogbWFw cGluZyA9IEZpbmRNYXBwaW5nKHN0YWNrX3BvaW50ZXIpOworICAgaWYgKCFtYXBwaW5nKQorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIu aAorQEAgLTYwLDcgKzYwLDggQEAgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7CisgIChkZWZp bmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSU8zMikKKyB0eXBlZGVmIEVsZjMyX2F1 eHZfdCBlbGZfYXV4X2VudHJ5OworICNlbGlmIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQo X19hYXJjaDY0X18pIHx8IFwKKy0gICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0g IT0gX0FCSU8zMikKKysgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FC SU8zMikgfHwgXAorKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIHR5cGVkZWYgRWxmNjRf YXV4dl90IGVsZl9hdXhfZW50cnk7CisgI2VuZGlmCisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIuY2MKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3Vu aXR0ZXN0X2hlbHBlci5jYworQEAgLTUxLDYgKzUxLDggQEAKKyAjZGVmaW5lIFRJRF9QVFJfUkVH SVNURVIgInJjeCIKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICNkZWZpbmUgVElEX1BUUl9S RUdJU1RFUiAiJDEiCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNkZWZpbmUgVElE X1BUUl9SRUdJU1RFUiAicjgiCisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVl biBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYworKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNj CitAQCAtMTU0LDE5ICsxNTQsMjcgQEAgYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6Q29weUZyb21Q cm9jZXNzKHZvaWQqIGRlc3QsIHBpZF90IGNoaWxkLAorICAgcmV0dXJuIHRydWU7CisgfQorIAor LWJvb2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3RlclNldChUaHJlYWRJbmZvKiBpbmZv LCBwaWRfdCB0aWQpCisteworK2Jvb2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3RlclNl dChUaHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpIHsKKyAjaWZkZWYgUFRSQUNFX0dFVFJFR1NF VAorICAgc3RydWN0IGlvdmVjIGlvOworICAgaW5mby0+R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3Rl cnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7CistICBpZiAoc3lzX3B0cmFjZShQVFJBQ0Vf R0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykgPT0gLTEpIHsK KysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFJTVEFUVVMs ICh2b2lkKikmaW8pID09IC0xKSB7CisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKyAKKyAgIGlu Zm8tPkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7 CistICBpZiAoc3lzX3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9GUFJF R1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKKysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NF VCwgdGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikmaW8pID09IC0xKSB7CisgICAgIHJl dHVybiBmYWxzZTsKKyAgIH0KKysKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8g R3JhYiB0aGUgdmVjdG9yIHJlZ2lzdGVycyBvbiBQUEM2NCB0b28KKysgIGluZm8tPkdldFZlY3Rv clJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKKysgIGlmIChwdHJhY2UoUFRS QUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFBDX1ZNWCwgKHZvaWQqKSZpbykgPT0gLTEp IHsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKyNlbmRpZiAvLyBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisrCisgICByZXR1cm4gdHJ1ZTsKKyAjZWxzZQorICAgcmV0dXJuIGZhbHNlOworQEAg LTMwMyw2ICszMTEsOSBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJ bmRleChzaXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8pIHsKKyAjZWxpZiBkZWZpbmVkKF9f bWlwc19fKQorICAgc3RhY2tfcG9pbnRlciA9CisgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50 OF90Kj4oaW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0pOworKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHN0YWNrX3BvaW50ZXIgPQorKyAgICAgIHJl aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVY VF9QUEM2NF9SRUdfU1BdKTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhc24ndCBiZWVu IHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRlc3Qu Y2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRy YWNlX2R1bXBlcl91bml0dGVzdC5jYworQEAgLTQ1Nyw2ICs0NTcsOSBAQCBURVNUKExpbnV4UHRy YWNlRHVtcGVyVGVzdCwgVmVyaWZ5U3RhY2tSZWFkV2l0aE11bHRpcGxlVGhyZWFkcykgeworICNl bGlmIGRlZmluZWQoX19taXBzX18pCisgICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlvbiA9 CisgICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29udGV4dC5n cmVnc1sxXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBwaWRfdCogcHJv Y2Vzc190aWRfbG9jYXRpb24gPQorKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxwaWRfdCo+KG9u ZV90aHJlYWQubWNvbnRleHQuZ3BfcmVnc1s4XSk7CisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0 IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KKyAjZW5kaWYKK0BAIC01NTMs NiArNTU2LDggQEAgVEVTVF9GKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgU2FuaXRpemVTdGFja0Nv cHkpIHsKKyAgIHVpbnRwdHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5yZWdzLnJjeDsKKyAj ZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9p bmZvLm1jb250ZXh0LmdyZWdzWzFdOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysg IHVpbnRwdHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5tY29udGV4dC5ncF9yZWdzWzhdOwor ICNlbHNlCisgI2Vycm9yIFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxh dGZvcm0uCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL21pbmlkdW1wX3dyaXRlci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKK0BAIC0xMzYsNyArMTM2LDkgQEAgY2xhc3Mg TWluaWR1bXBXcml0ZXIgeworICAgICAgIDogZmRfKG1pbmlkdW1wX2ZkKSwKKyAgICAgICAgIHBh dGhfKG1pbmlkdW1wX3BhdGgpLAorICAgICAgICAgdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4 dC0+Y29udGV4dCA6IE5VTEwpLAorLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZp bmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAgICB2ZWN0 b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCisrI2Vs aWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgICAgICAg IGZsb2F0X3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCisg I2VuZGlmCisgICAgICAgICBkdW1wZXJfKGR1bXBlciksCitAQCAtNDY4LDcgKzQ3MCw5IEBAIGNs YXNzIE1pbmlkdW1wV3JpdGVyIHsKKyAgICAgICAgIGlmICghY3B1LkFsbG9jYXRlKCkpCisgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIG15X21lbXNldChjcHUuZ2V0KCksIDAsIHNp emVvZihSYXdDb250ZXh0Q1BVKSk7CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRl ZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgICAgIFVD b250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCksIHVjb250ZXh0XywgdmVjdG9y X3N0YXRlXyk7CisrI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21p cHNfXykKKyAgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCks IHVjb250ZXh0XywgZmxvYXRfc3RhdGVfKTsKKyAjZWxzZQorICAgICAgICAgVUNvbnRleHRSZWFk ZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfKTsKK0BAIC04OTEsNyArODk1 LDcgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgeworICAgICBkaXJlbnQtPmxvY2F0aW9uLnJ2YSA9 IDA7CisgICB9CisgCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICBib29sIFdyaXRlQ1BVSW5mb3JtYXRpb24oTURSYXdTeXN0ZW1JbmZvKiBzeXNfaW5m bykgeworICAgICBjaGFyIHZlbmRvcl9pZFtzaXplb2Yoc3lzX2luZm8tPmNwdS54ODZfY3B1X2lu Zm8udmVuZG9yX2lkKSArIDFdID0gezB9OworICAgICBzdGF0aWMgY29uc3QgY2hhciB2ZW5kb3Jf aWRfbmFtZVtdID0gInZlbmRvcl9pZCI7CitAQCAtOTExLDcgKzkxNSw5IEBAIGNsYXNzIE1pbmlk dW1wV3JpdGVyIHsKKyAKKyAgICAgLy8gcHJvY2Vzc29yX2FyY2hpdGVjdHVyZSBzaG91bGQgYWx3 YXlzIGJlIHNldCwgZG8gdGhpcyBmaXJzdAorICAgICBzeXNfaW5mby0+cHJvY2Vzc29yX2FyY2hp dGVjdHVyZSA9CistI2lmIGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKysgICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQ7CisrI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKKyAjIGlmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCisgICAgICAgICBNRF9DUFVf QVJDSElURUNUVVJFX01JUFM7CisgIyBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKK0BAIC0xMzI3 LDcgKzEzMzMsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICBjb25zdCBjaGFyKiBwYXRo XzsgIC8vIFBhdGggdG8gdGhlIGZpbGUgd2hlcmUgdGhlIG1pbmlkdW0gc2hvdWxkIGJlIHdyaXR0 ZW4uCisgCisgICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4dF87ICAvLyBhbHNvIGZy b20gdGhlIHNpZ25hbCBoYW5kbGVyCistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRl ZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGNvbnN0IGdv b2dsZV9icmVha3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87CisrI2VsaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgIGNvbnN0IGdvb2ds ZV9icmVha3BhZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87ICAvLyBkaXR0bworICNl bmRpZgorICAgTGludXhEdW1wZXIqIGR1bXBlcl87CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCitAQCAtNDcsNiArNDcs OCBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyOworIAorICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9f KQorIHR5cGVkZWYgc3RydWN0IGZwc2ltZF9jb250ZXh0IGZwc3RhdGVfdDsKKysjZWxpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisrdHlwZWRlZiB2cnJlZ3NldF90IHZzdGF0ZV90OworICNlbGlm ICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgdHlwZWRlZiBz dHJ1Y3QgX2Zwc3RhdGUgZnBzdGF0ZV90OworICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3Vu aXR0ZXN0LmNjCitAQCAtNzEwLDYgKzcxMCw5IEBAIFRFU1QoTWluaWR1bXBXcml0ZXJUZXN0LCBJ bnZhbGlkU3RhY2tQb2ludGVyKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIGNvbnRl eHQuY29udGV4dC51Y19tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSA9Cisg ICAgICAgaW52YWxpZF9zdGFja19wb2ludGVyOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBD NjRfUkVHX1NQXSA9CisrICAgICAgaW52YWxpZF9zdGFja19wb2ludGVyOworICNlbHNlCisgIyBl cnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQu IgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmls ZS5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYwor QEAgLTY1LDggKzY1LDcgQEAgYm9vbCBNZW1vcnlNYXBwZWRGaWxlOjpNYXAoY29uc3QgY2hhciog cGF0aCwgc2l6ZV90IG9mZnNldCkgeworICAgfQorIAorICNpZiBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKy0gICAoZGVmaW5lZChfX21pcHNfXykgJiYg X01JUFNfU0lNID09IF9BQkk2NCkKKy0KKysgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNf U0lNID09IF9BQkk2NCkgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgc3RydWN0IGtlcm5l bF9zdGF0IHN0OworICAgaWYgKHN5c19mc3RhdChmZCwgJnN0KSA9PSAtMSB8fCBzdC5zdF9zaXpl IDwgMCkgeworICNlbHNlCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBl ZF9maWxlX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21h cHBlZF9maWxlX3VuaXR0ZXN0LmNjCitAQCAtMTc2LDkgKzE3NiwxMCBAQCBURVNUX0YoTWVtb3J5 TWFwcGVkRmlsZVRlc3QsIFJlbWFwQWZ0ZXJNYXApIHsKKyBURVNUX0YoTWVtb3J5TWFwcGVkRmls ZVRlc3QsIE1hcFdpdGhPZmZzZXQpIHsKKyAgIC8vIFB1dCBtb3JlIGRhdGEgaW4gdGhlIHRlc3Qg ZmlsZSB0aGlzIHRpbWUuIE9mZnNldHMgY2FuIG9ubHkgYmUKKyAgIC8vIGRvbmUgb24gcGFnZSBi b3VuZGFyaWVzLCBzbyB3ZSBuZWVkIGEgdHdvIHBhZ2UgZmlsZSB0byB0ZXN0IHRoaXMuCistICBj b25zdCBpbnQgcGFnZV9zaXplID0gNDA5NjsKKy0gIGNoYXIgZGF0YTFbMiAqIHBhZ2Vfc2l6ZV07 CistICBzaXplX3QgZGF0YTFfc2l6ZSA9IHNpemVvZihkYXRhMSk7CisrICBjb25zdCBpbnQgcGFn ZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKKysgIGNoYXIgKmRhdGExID0gc3RhdGljX2Nhc3Q8Y2hh cio+KG1hbGxvYygyICogcGFnZV9zaXplKSk7CisrICBFWFBFQ1RfVFJVRShkYXRhMSAhPSBOVUxM KTsKKysgIHNpemVfdCBkYXRhMV9zaXplID0gKDIgKiBwYWdlX3NpemUpOworICAgZm9yIChzaXpl X3QgaSA9IDA7IGkgPCBkYXRhMV9zaXplOyArK2kpIHsKKyAgICAgZGF0YTFbaV0gPSBpICYgMHg3 ZjsKKyAgIH0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0 LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYwor QEAgLTU3LDggKzU3LDkgQEAgVEVTVChQYWdlQWxsb2NhdG9yVGVzdCwgTGFyZ2VPYmplY3QpIHsK KyAKKyAgIEVYUEVDVF9FUSgwVSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKKyAgIHVp bnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxsb2MoMTAw MDApKTsKKysgIHVpbnQ2NF90IGV4cGVjdGVkX3BhZ2VzID0gMSArICgoMTAwMDAgLSAxKSAvIGdl dHBhZ2VzaXplKCkpOworICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7CistICBFWFBFQ1RfRVEo M1UsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7CisrICBFWFBFQ1RfRVEoZXhwZWN0ZWRf cGFnZXMsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7CisgICBmb3IgKHVuc2lnbmVkIGkg PSAxOyBpIDwgMTA7ICsraSkgeworICAgICB1aW50OF90ICpwID0gcmVpbnRlcnByZXRfY2FzdDx1 aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKGkpKTsKKyAgICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVM TCk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYworQEAgLTIwMiwx MiArMjAyLDE0IEBAIGJvb2wgRXhwbG9pdGFiaWxpdHlMaW51eDo6RW5kZWRPbklsbGVnYWxXcml0 ZSh1aW50NjRfdCBpbnN0cnVjdGlvbl9wdHIpIHsKKyAgIC8vIENoZWNrIGFyY2hpdGVjdHVyZSBh bmQgc2V0IGFyY2hpdGVjdHVyZSB2YXJpYWJsZSB0byBjb3JyZXNwb25kaW5nIGZsYWcKKyAgIC8v IGluIG9iamR1bXAuCisgICBzd2l0Y2ggKGNvbnRleHQtPkdldENvbnRleHRDUFUoKSkgeworKyNp ZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKKyAgICAgY2FzZSBNRF9DT05U RVhUX1g4NjoKKyAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4NiI7CisgICAgICAgYnJlYWs7Cisg ICAgIGNhc2UgTURfQ09OVEVYVF9BTUQ2NDoKKyAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4Njp4 ODYtNjQiOworICAgICAgIGJyZWFrOworKyNlbmRpZgorICAgICBkZWZhdWx0OgorICAgICAgIC8v IFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4gTm90ZSB0aGF0IEFSTSBhcmNoaXRlY3R1cmVzIGFy ZSBub3QKKyAgICAgICAvLyBzdXBwb3J0ZWQgYmVjYXVzZSBvYmpkdW1wIGRvZXMgbm90IHN1cHBv cnQgQVJNLgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X3VuaXR0ZXN0 LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MK K0BAIC0xMDQsNiArMTA0LDggQEAgRXhwbG9pdGFiaWxpdHlGb3IoY29uc3Qgc3RyaW5nJiBmaWxl bmFtZSkgeworIH0KKyAKKyBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdFdpbmRvd3NFbmdp bmUpIHsKKysvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24gYW4g eDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCisrI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmlu ZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJl YWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlG b3IoImFzY2lpX3JlYWRfYXYuZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6 RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BAIC0xMzYsOSArMTM4LDEyIEBAIFRFU1QoRXhwbG9pdGFi aWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkgeworICAgICAgICAgICAgIEV4cGxvaXRhYmls aXR5Rm9yKCJyZWFkX2F2X2Nsb2JiZXJfd3JpdGUuZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2ds ZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfTE9XLAorICAgICAgICAgICAgIEV4cGxvaXRhYmls aXR5Rm9yKCJyZWFkX2F2X2NvbmRpdGlvbmFsLmRtcCIpKTsKKysjZW5kaWYKKyB9CisgCisgVEVT VChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgeworKy8vIFRoZSBmb2xsb3dp bmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYtY2xhc3MgbGludXggbWFjaGlu ZS4KKysjaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpCisgICBBU1NFUlRf RVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9JTlRFUkVTVElORywKKyAgICAgICAg ICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfbnVsbF9yZWFkX2F2LmRtcCIpKTsKKyAgIEFT U0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCitAQCAtMTcxLDcg KzE3Niw4IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKKyAg ICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfZXhlY3V0YWJsZV9oZWFwLmRtcCIp KTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCisg ICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X2ptcF90b19tb2R1bGVfbm90X2V4 ZV9yZWdpb24uZG1wIikpOworLSNpZm5kZWYgX1dJTjMyCisrI2VuZGlmCisrI2lmICFkZWZpbmVk KF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKyAgIEFT U0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCisgICAgICAgICAg ICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX25vbndyaXRhYmxlX21vZHVsZS5k bXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdI LAorQEAgLTE4MiwxMCArMTg4LDEwIEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGlu dXhFbmdpbmUpIHsKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVf dG9fb3V0c2lkZV9tb2R1bGVfdmlhX21hdGguZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2dsZV9i cmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSU5URVJFU1RJTkcsCisgICAgICAgICAgICAgRXhwbG9p dGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX3VuZGVyXzRrLmRtcCIpKTsKKy0jZW5kaWYgIC8v IF9XSU4zMgorKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiAoIWRlZmluZWQoX19pMzg2 KSAmJiAhZGVmaW5lZChfX3g4Nl82NCkpCisgfQorIAorLSNpZm5kZWYgX1dJTjMyCisrI2lmICFk ZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkK KyBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIERpc2Fzc2VtYmxlQnl0ZXNUZXN0 KSB7CisgICBBU1NFUlRfRkFMU0UoRXhwbG9pdGFiaWxpdHlMaW51eFRlc3Q6OkRpc2Fzc2VtYmxl Qnl0ZXMoIiIsIE5VTEwsIDUsIE5VTEwpKTsKKyAgIHVpbnQ4X3QgYnl0ZXNbNl0gPSB7MHhjNywg MHgwLCAweDUsIDB4MCwgMHgwLCAweDB9OworQEAgLTMwMSw2ICszMDcsNyBAQCBURVNUKEV4cGxv aXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIENhbGN1bGF0ZUFkZHJlc3NUZXN0KSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4 dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmd3JpdGVfYWRkcmVzcykpOworIH0KKy0jZW5kaWYgIC8vIF9XSU4zMgorKyNlbmRpZiAg Ly8gIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZf NjQpKQorKworIAorIH0gIC8vIG5hbWVzcGFjZQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgv bWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Rvb2xzL2xpbnV4L21k MmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCitAQCAtNzYsNiArNzYsOCBAQAorICAgI2RlZmluZSBF TEZfQVJDSCAgRU1fTUlQUworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICAjZGVmaW5l IEVMRl9BUkNIICBFTV9BQVJDSDY0CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAg I2RlZmluZSBFTEZfQVJDSCAgRU1fUFBDNjQKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2Fy bV9fKQorQEAgLTg2LDYgKzg4LDggQEAgdHlwZWRlZiB1c2VyX3JlZ3MgdXNlcl9yZWdzX3N0cnVj dDsKKyAjZWxpZiBkZWZpbmVkIChfX21pcHNfXykKKyAvLyBUaGlzIGZpbGUtbG9jYWwgdHlwZWRl ZiBzaW1wbGlmaWVzIHRoZSBzb3VyY2UgY29kZS4KKyB0eXBlZGVmIGdyZWdzZXRfdCB1c2VyX3Jl Z3Nfc3RydWN0OworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyt0eXBlZGVmIHN0cnVj dCBwdF9yZWdzIHVzZXJfcmVnc19zdHJ1Y3Q7CisgI2VuZGlmCisgCisgdXNpbmcgZ29vZ2xlX2Jy ZWFrcGFkOjpNRFR5cGVIZWxwZXI7CitAQCAtMzIwLDYgKzMyNCw5IEBAIHN0cnVjdCBDcmFzaGVk UHJvY2VzcyB7CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICAgIHVzZXJf ZnBzaW1kX3N0cnVjdCBmcHJlZ3M7CisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgICAgbWNvbnRleHRfdCBtY29udGV4dDsKKyAjZW5kaWYKKyAgICAgdWludHB0cl90IHN0 YWNrX2FkZHI7CisgICAgIGNvbnN0IHVpbnQ4X3QqIHN0YWNrOworQEAgLTUzNCw2ICs1NDEsMzgg QEAgUGFyc2VUaHJlYWRSZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAor ICAgdGhyZWFkLT5tY29udGV4dC5mcGNfZWlyID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5maXI7Cisg I2VuZGlmCisgfQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKytzdGF0aWMgdm9pZAor K1BhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHJlYWQqIHRocmVhZCwKKysg ICAgICAgICAgICAgICAgICAgICBjb25zdCBNaW5pZHVtcE1lbW9yeVJhbmdlJiByYW5nZSkgewor KyAgY29uc3QgTURSYXdDb250ZXh0UFBDNjQqIHJhd3JlZ3MgPSByYW5nZS5HZXREYXRhPE1EUmF3 Q29udGV4dFBQQzY0PigwKTsKKysKKysgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9Q UEM2NF9HUFJfQ09VTlQ7IGkrKykKKysgICAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW2ldID0g cmF3cmVncy0+Z3ByW2ldOworKworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0xOS10g PSByYXdyZWdzLT5scjsKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdID0gcmF3 cmVncy0+c3JyMDsKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdID0gcmF3cmVn cy0+c3JyMTsKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdID0gcmF3cmVncy0+ Y3I7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXSA9IHJhd3JlZ3MtPnhlcjsK KysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdID0gcmF3cmVncy0+Y3RyOworKyAg dGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZyc2F2ZSA9IHJhd3JlZ3MtPnZyc2F2ZTsKKysKKysg IGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBp KyspCisrICAgICAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdzW2ldID0gcmF3cmVncy0+ZmxvYXRf c2F2ZS5mcHJlZ3NbaV07CisrCisrICB0aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFd ID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5mcHNjcjsKKysKKysgIGZvciAoaW50IGkgPSAwOyBpIDwg TURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspIHsKKysgICAgICB0aHJlYWQtPm1j b250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzBdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92 cltpXS5oaWdoID4+IDMyOworKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3Nb aV1bMV0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmhpZ2g7CisrICAgICAgdGhy ZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVsyXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZl LnNhdmVfdnJbaV0ubG93ID4+IDMyOworKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52 cnJlZ3NbaV1bM10gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmxvdzsKKysgIH0K KysKKysgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52c2NyLnZzY3Jfd29yZCA9IHJhd3JlZ3Mt PnZlY3Rvcl9zYXZlLnNhdmVfdnNjci5sb3cgJiAweEZGRkZGRkZGOworK30KKysKKyAjZWxzZQor ICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5 ZXQiCisgI2VuZGlmCitAQCAtNjIyLDYgKzY2MSwxMiBAQCBQYXJzZVN5c3RlbUluZm8oY29uc3Qg T3B0aW9ucyYgb3B0aW9ucywgQ3Jhc2hlZFByb2Nlc3MqIGNyYXNoaW5mbywKKyAjIGVsc2UKKyAj ICBlcnJvciAiVGhpcyBtaXBzIEFCSSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAobjMyKSIK KyAjIGVuZGlmCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgaWYgKHN5c2luZm8t PnByb2Nlc3Nvcl9hcmNoaXRlY3R1cmUgIT0gTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NCkgewor KyAgICBmcHJpbnRmKHN0ZGVyciwKKysgICAgICAgICAgICAiVGhpcyB2ZXJzaW9uIG9mIG1pbmlk dW1wLTItY29yZSBvbmx5IHN1cHBvcnRzIFBQQzY0LlxuIik7CisrICAgIGV4aXQoMSk7CisrICB9 CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIg cGxhdGZvcm0geWV0IgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9DT05UUklCVVRPUlMKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvQ09OVFJJQlVUT1JTCitAQCAtMTMsMyArMTMsNCBAQCBNYXJrIE1lbnRvdmFpIDxtYXJrQGNo cm9taXVtLm9yZz4KKyBSb2JlcnQgU2VzZWsgPHJzZXNla0BjaHJvbWl1bS5vcmc+CisgU2NvdHQg R3JhaGFtIDxzY290dG1nQGNocm9taXVtLm9yZz4KKyBKb3NodWEgUGVyYXphIDxqcGVyYXphQGNo cm9taXVtLm9yZz4KKytTaGF3biBBbmFzdGFzaW8gPHNoYXduQGFuYXN0YXMuaW8+CistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL2NvbXBhdC9saW51eC9zeXMvdXNlci5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMv dXNlci5oCitAQCAtMTUsNiArMTUsNyBAQAorICNpZm5kZWYgQ1JBU0hQQURfQ09NUEFUX0xJTlVY X1NZU19VU0VSX0hfCisgI2RlZmluZSBDUkFTSFBBRF9DT01QQVRfTElOVVhfU1lTX1VTRVJfSF8K KyAKKysjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAjaW5jbHVkZV9uZXh0IDxzeXMvdXNlci5oPgorIAor ICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250 ZXh0LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCitAQCAtNTkyLDYg KzU5Miw3MCBAQCBzdHJ1Y3QgTWluaWR1bXBDb250ZXh0TUlQUzY0IHsKKyAgIHVpbnQ2NF90IGZp cjsKKyB9OworIAorKy8vISBcYnJpZWYgcHBjNjQtc3BlY2lmaWMgZmxhZ3MgZm9yIE1pbmlkdW1w UFBDNjQ6OmNvbnRleHRfZmxhZ3MKKysvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3BwYzY0Lmgg ZnJvbSBicmVha3BhZAorK2VudW0gTWluaWR1bXBDb250ZXh0UFBDNjRGbGFncyA6IHVpbnQzMl90 IHsKKysgIC8vISBcYnJpZWYgSWRlbnRpZmllcyB0aGUgY29udGV4dCBhcyBQUEM2NC4KKysgIGtN aW5pZHVtcENvbnRleHRQUEM2NCA9IDB4MDEwMDAwMDAsCisrCisrICAvLyEgXGJyaWVmIEluZGlj YXRlcyB0aGUgdmFsaWRpdHkgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KKysgIC8vIQor KyAgLy8hIFJlZ2lzdGVycyBgcjBgLWByMzFgLCBgbmlwYCwgYG1zcmAsIGBscmAsIGV0Yy4gYXJl IHZhbGlkLgorKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QmFzZSA9IGtNaW5pZHVtcENvbnRleHRQ UEM2NCB8IDB4MDAwMDAwMDEsCisrCisrICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRp dHkgb2YgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgorKyAgLy8hCisrICAvLyEgUmVnaXN0ZXJz IGBmcDBgLWBmcDMxYCwgYGZwc2NyYCBhcmUgdmFsaWQuCisrICBrTWluaWR1bXBDb250ZXh0UFBD NjRGbG9hdGluZyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMDgsCisrCisrICAv LyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgQWx0aXZlYy9WTVggcmVnaXN0ZXJz LgorKyAgLy8hCisrICAvLyEgUmVnaXN0ZXJzIGB2MGAtYHYzMWAsIGB2c2NyYCwgYHZyc2F2ZWAu CisrICBrTWluaWR1bXBDb250ZXh0UFBDNjRWZWN0b3IgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQg fCAweDAwMDAwMDIwLAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9m IGFsbCByZWdpc3RlcnMKKysgIGtNaW5pZHVtcENvbnRleHRQUEM2NEFsbCA9IGtNaW5pZHVtcENv bnRleHRQUEM2NEJhc2UgICAgIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNaW5p ZHVtcENvbnRleHRQUEM2NEZsb2F0aW5nIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvcgorK307CisrCisrLy8hIFxicmllZiBBIFBQQzY0 IENQVSBjb250ZXh0IGNhcnJpZWQgaW4gYSBtaW5pZHVtcCBmaWxlLgorKy8vISBCYXNlZCBvbiBt aW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFkLgorK3N0cnVjdCBNaW5pZHVtcENvbnRl eHRQUEM2NCB7CisrICB1aW50NjRfdCBjb250ZXh0X2ZsYWdzOworKworKyAgLy8hIFxicmllZiBH ZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgorKyAgdWludDY0X3QgbmlwOworKyAgdWludDY0X3Qg bXNyOworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBjY3I7CisrICB1aW50NjRf dCB4ZXI7CisrICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCBjdHI7CisrCisrICAvLyEgXGJy aWVmIEZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4KKysgIGRvdWJsZSBmcHJlZ3NbMzJdOworKwor KyAgLy8hIFxicmllZiBGUFUgc3RhdHVzIHJlZ2lzdGVyLgorKyAgZG91YmxlIGZwc2NyOworKwor KyAgLy8hIFxicmllZiBBbHRpdmVjL1ZNWCB2ZWN0b3IgcmVnaXN0ZXJzLgorKyAgc3RydWN0IHsK KysgICAgICAvLyEgXGJyaWVmIFZlY3RvciByZWdpc3RlcnMgYXJlIDEyOGJpdHMuCisrICAgICAg dWludDEyOF9zdHJ1Y3Qgc2F2ZV92clszMl07CisrICAgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92 c2NyOworKworKyAgICAgIC8vISBcYnJpZWYgUGFkZGluZyBpbmNsdWRlZCBmb3IgYnJlYWtwYWQg Y29tcGF0aWJpbHRpeS4KKysgICAgICB1aW50MzJfdCBzYXZlX3BhZDVbNF07CisrCisrICAgICAg Ly8hIFxicmllZiBWUlNBVkUgcmVnaXN0ZXIuCisrICAgICAgdWludDMyX3Qgc2F2ZV92cnNhdmU7 CisrCisrICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBjb21w YXRpYmlsdGl5LgorKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNls3XTsKKysgIH0gdnJlZ3M7Cisr fTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5kaWYgIC8vIENSQVNIUEFE X01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfSF8KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1 bXBfY29udGV4dF93cml0ZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4 dF93cml0ZXIuY2MKK0BAIC0xMDEsNiArMTAxLDEzIEBAIE1pbmlkdW1wQ29udGV4dFdyaXRlcjo6 Q3JlYXRlRnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHQqIGNvbnRleHRfc25hcHNob3QpIHsK KyAgICAgICBicmVhazsKKyAgICAgfQorIAorKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2 NDogeworKyAgICAgIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1pbmlkdW1wQ29udGV4dFBQ QzY0V3JpdGVyPigpOworKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWluaWR1bXBDb250ZXh0UFBD NjRXcml0ZXIqPihjb250ZXh0LmdldCgpKQorKyAgICAgICAgICAtPkluaXRhbGl6ZUZyb21TbmFw c2hvdChjb250ZXh0X3NuYXBzaG90LT5wcGM2NCk7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysK KyAgICAgZGVmYXVsdDogeworICAgICAgIExPRyhFUlJPUikgPDwgInVua25vd24gY29udGV4dCBh cmNoaXRlY3R1cmUgIgorICAgICAgICAgICAgICAgICAgPDwgY29udGV4dF9zbmFwc2hvdC0+YXJj aGl0ZWN0dXJlOworQEAgLTQ1Myw0ICs0NjAsNDcgQEAgc2l6ZV90IE1pbmlkdW1wQ29udGV4dE1J UFM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25zdCB7CisgICByZXR1cm4gc2l6ZW9mKGNvbnRl eHRfKTsKKyB9CisgCisrTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6Ok1pbmlkdW1wQ29udGV4 dFBQQzY0V3JpdGVyKCkKKysgIDogTWluaWR1bXBDb250ZXh0V3JpdGVyKCksIGNvbnRleHRfKCkg eworKyAgICBjb250ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0Owor K30KKysKKytNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6fk1pbmlkdW1wQ29udGV4dFBQQzY0 V3JpdGVyKCkgPSBkZWZhdWx0OworKworK3ZvaWQgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6 OkluaXRhbGl6ZUZyb21TbmFwc2hvdCgKKysgICAgY29uc3QgQ1BVQ29udGV4dFBQQzY0KiBjb250 ZXh0X3NuYXBzaG90KSB7CisrICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRlTXV0YWJsZSk7Cisr ICBEQ0hFQ0tfRVEoY29udGV4dF8uY29udGV4dF9mbGFncywga01pbmlkdW1wQ29udGV4dFBQQzY0 KTsKKysKKysgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjRB bGw7CisrCisrICBtZW1jcHkoY29udGV4dF8ucmVncywgY29udGV4dF9zbmFwc2hvdC0+cmVncywg c2l6ZW9mKGNvbnRleHRfLnJlZ3MpKTsKKysgIGNvbnRleHRfLm5pcCA9IGNvbnRleHRfc25hcHNo b3QtPm5pcDsKKysgIGNvbnRleHRfLm1zciA9IGNvbnRleHRfc25hcHNob3QtPm1zcjsKKysgIGNv bnRleHRfLmNjciA9IGNvbnRleHRfc25hcHNob3QtPmNjcjsKKysgIGNvbnRleHRfLnhlciA9IGNv bnRleHRfc25hcHNob3QtPnhlcjsKKysgIGNvbnRleHRfLmxuayA9IGNvbnRleHRfc25hcHNob3Qt PmxuazsKKysgIGNvbnRleHRfLmN0ciA9IGNvbnRleHRfc25hcHNob3QtPmN0cjsKKysKKysgIG1l bWNweShjb250ZXh0Xy5mcHJlZ3MsIGNvbnRleHRfc25hcHNob3QtPmZwcmVncywgc2l6ZW9mKGNv bnRleHRfLmZwcmVncykpOworKyAgY29udGV4dF8uZnBzY3IgPSBjb250ZXh0X3NuYXBzaG90LT5m cHNjcjsKKysKKysgIG1lbWNweShjb250ZXh0Xy52cmVncy5zYXZlX3ZyLCBjb250ZXh0X3NuYXBz aG90LT52cmVncy5zYXZlX3ZyLAorKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5zYXZl X3ZyKSk7CisrICBtZW1jcHkoJmNvbnRleHRfLnZyZWdzLnNhdmVfdnNjciwgJmNvbnRleHRfc25h cHNob3QtPnZyZWdzLnNhdmVfdnNjciwKKysgICAgICAgICBzaXplb2YoY29udGV4dF8udnJlZ3Mu c2F2ZV92c2NyKSk7CisrICBjb250ZXh0Xy52cmVncy5zYXZlX3Zyc2F2ZSA9IGNvbnRleHRfc25h cHNob3QtPnZyZWdzLnNhdmVfdnJzYXZlOworK30KKysKKytib29sIE1pbmlkdW1wQ29udGV4dFBQ QzY0V3JpdGVyOjpXcml0ZU9iamVjdCgKKysgICAgRmlsZVdyaXRlckludGVyZmFjZSogZmlsZV93 cml0ZXIpIHsKKysgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVXcml0YWJsZSk7CisrICByZXR1 cm4gZmlsZV93cml0ZXItPldyaXRlKCZjb250ZXh0Xywgc2l6ZW9mKGNvbnRleHRfKSk7CisrfQor KworK3NpemVfdCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25z dCB7CisrICBEQ0hFQ0tfR0Uoc3RhdGUoKSwga1N0YXRlRnJvemVuKTsKKysgIHJldHVybiBzaXpl b2YoY29udGV4dF8pOworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaAorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVt cC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCitAQCAtMzE1LDYgKzMxNSw0NSBAQCBjbGFzcyBN aW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXIgZmluYWwgOiBwdWJsaWMgTWluaWR1bXBDb250ZXh0 V3JpdGVyIHsKKyAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNaW5pZHVtcENvbnRleHRNSVBT NjRXcml0ZXIpOworIH07CisgCisrY2xhc3MgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIgZmlu YWwgOiBwdWJsaWMgTWluaWR1bXBDb250ZXh0V3JpdGVyIHsKKysgcHVibGljOgorKyAgTWluaWR1 bXBDb250ZXh0UFBDNjRXcml0ZXIoKTsKKysgIH5NaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigp IG92ZXJyaWRlOworKworKyAgLy8hIFxicmllZiBJbml0YWxpemVzIHRoZSBNaW5pZHVtcENvbnRl eHRQUEM2NCBiYXNlZCBvbiBcYSBjb250ZXh0X3NuYXBzaG90LgorKyAgLy8hCisrICAvLyEgXHBh cmFtW2luXSBjb250ZXh0X3NuYXBzaG90IFRoZSBjb250ZXh0IHNuYXBzaG90IHRvIHVzZSBhcyBz b3VyY2UgZGF0YS4KKysgIC8vIQorKyAgLy8hIFxub3RlIFZhbGlkIGluICNrU3RhdGVNdXRhYmxl LiBObyBtdXRhdGlvbiBvZiBjb250ZXh0KCkgbWF5IGJlIGRvbmUgYmVmb3JlCisrICAvLyEgICAg IGNhbGxpbmcgdGhpcyBtZXRob2QsIGFuZCBpdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRv IGFsdGVyCisrICAvLyEgICAgIGNvbnRleHQoKSBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLgor KyAgdm9pZCBJbml0YWxpemVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29udGV4dFBQQzY0KiBjb250 ZXh0X3NuYXBzaG90KTsKKysKKysgIC8vISBcYnJpZWYgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhl IGNvbnRleHQgc3RydWN0dXJlIHRoYXQgdGhpcyBvYmplY3Qgd2lsbAorKyAgLy8hICAgICB3cml0 ZS4KKysgIC8vIQorKyAgLy8hIFxhdHRlbnRpb24gVGhpcyByZXR1cm5zIGEgbm9uLWBjb25zdGAg cG9pbnRlciB0byB0aGlzIG9iamVjdOKAmXMgcHJpdmF0ZQorKyAgLy8hICAgICBkYXRhIHNvIHRo YXQgYSBjYWxsZXIgY2FuIHBvcHVsYXRlIHRoZSBjb250ZXh0IHN0cnVjdHVyZSBkaXJlY3RseS4K KysgIC8vISAgICAgVGhpcyBpcyBkb25lIGJlY2F1c2UgcHJvdmlkaW5nIHNldHRlciBpbnRlcmZh Y2VzIHRvIGVhY2ggZmllbGQgaW4gdGhlCisrICAvLyEgICAgIGNvbnRleHQgc3RydWN0dXJlIHdv dWxkIGJlIHVud2llbGR5IGFuZCBjdW1iZXJzb21lLiBDYXJlIG11c3QgYmUgdGFrZW4KKysgIC8v ISAgICAgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGNvcnJlY3RseS4gVGhlIGNv bnRleHQgc3RydWN0dXJlCisrICAvLyEgICAgIG11c3Qgb25seSBiZSBtb2RpZmllZCB3aGlsZSB0 aGlzIG9iamVjdCBpcyBpbiB0aGUgI2tTdGF0ZU11dGFibGUKKysgIC8vISAgICAgc3RhdGUuCisr ICBNaW5pZHVtcENvbnRleHRQUEM2NCogY29udGV4dCgpIHsgcmV0dXJuICZjb250ZXh0XzsgfQor KworKyBwcm90ZWN0ZWQ6CisrICAvLyBNaW5pZHVtcFdyaXRhYmxlOgorKyAgYm9vbCBXcml0ZU9i amVjdChGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dyaXRlcikgb3ZlcnJpZGU7CisrCisrICAv LyBNaW5pZHVtcENvbnRleHRXcml0ZXI6CisrICBzaXplX3QgQ29udGV4dFNpemUoKSBjb25zdCBv dmVycmlkZTsKKysKKysgcHJpdmF0ZToKKysgIE1pbmlkdW1wQ29udGV4dFBQQzY0IGNvbnRleHRf OworKworKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29udGV4dFBQQzY0V3Jp dGVyKTsKKyt9OworKworIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorIAorICNlbmRpZiAgLy8g Q1JBU0hQQURfTUlOSURVTVBfTUlOSURVTVBfQ09OVEVYVF9XUklURVJfSF8KKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv bWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5p ZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCitAQCAtMjEzLDYgKzIxMywyMSBA QCBURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgTUlQUzY0X0Zyb21TbmFwc2hvdCkgeworICAg ICAgIGNvbnRleHQsIEV4cGVjdE1pbmlkdW1wQ29udGV4dE1JUFM2NCwga1NlZWQpOworIH0KKyAK KytURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgUFBDNjRfWmVyb3MpIHsKKysgIEVtcHR5Q29u dGV4dFRlc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIsIE1pbmlkdW1wQ29udGV4dFBQQzY0 PigKKysgICAgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQpOworK30KKysKKytURVNUKE1pbmlk dW1wQ29udGV4dFdyaXRlciwgUFBDNjRfRnJvbVNuYXBzaG90KSB7CisrICBjb25zdGV4cHIgdWlu dDMyX3Qga1NlZWQgPSA2NDsKKysgIENQVUNvbnRleHRQUEM2NCBjb250ZXh0X3BwYzY0OworKyAg Q1BVQ29udGV4dCBjb250ZXh0OworKyAgY29udGV4dC5wcGM2NCA9ICZjb250ZXh0X3BwYzY0Owor KyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgmY29udGV4dCwga1NlZWQpOworKyAgRnJvbVNu YXBzaG90VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBD NjQ+KAorKyAgICAgIGNvbnRleHQsIEV4cGVjdE1pbmlkdW1wQ29udGV4dFBQQzY0LCBrU2VlZCk7 CisrfQorKworIH0gIC8vIG5hbWVzcGFjZQorIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CisgfSAgLy8g bmFtZXNwYWNlIGNyYXNocGFkCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5m b193cml0ZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRl ci5jYworQEAgLTEyNiw2ICsxMjYsOCBAQCBzdGQ6OnN0cmluZyBNaW5pZHVtcE1pc2NJbmZvRGVi dWdCdWlsZFN0cmluZygpIHsKKyAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlw cyI7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkKKyAgIHN0YXRpYyBjb25zdGV4 cHIgY2hhciBrQ1BVW10gPSAibWlwczY0IjsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 KQorKyAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJwcGM2NCI7CisgI2Vsc2UKKyAj ZXJyb3IgZGVmaW5lIGtDUFUgZm9yIHRoaXMgQ1BVCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2NhcHR1cmVfbWVtb3J5LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5 LmNjCitAQCAtMTExLDYgKzExMSwxMSBAQCB2b2lkIENhcHR1cmVNZW1vcnk6OlBvaW50ZWRUb0J5 Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBjb250ZXh0LAorICAgZm9yIChzaXplX3QgaSA9IDA7 IGkgPCBiYXNlOjpzaXplKGNvbnRleHQubWlwc2VsLT5yZWdzKTsgKytpKSB7CisgICAgIE1heWJl Q2FwdHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5taXBzZWwtPnJlZ3NbaV0pOwor ICAgfQorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgTWF5YmVDYXB0 dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5uaXApOworKyAgZm9yIChz aXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNvbnRleHQucHBjNjQtPnJlZ3MpOyArK2kpIHsK KysgICAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5y ZWdzW2ldKTsKKysgIH0KKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2Fy Y2hpdGVjdHVyZS5oCitAQCAtNDMsNyArNDMsMTAgQEAgZW51bSBDUFVBcmNoaXRlY3R1cmUgewor ICAga0NQVUFyY2hpdGVjdHVyZU1JUFNFTCwKKyAKKyAgIC8vISBcYnJpZWYgNjQtYml0IE1JUFNF TC4KKy0gIGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTAorKyAga0NQVUFyY2hpdGVjdHVyZU1JUFM2 NEVMLAorKworKyAgLy8hIFxicmllZiA2NC1iaXQgUFBDNjQuCisrICBrQ1BVQXJjaGl0ZWN0dXJl UFBDNjQKKyB9OworIAorIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9jcHVfY29udGV4dC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYwor QEAgLTE2OSw2ICsxNjksOCBAQCB1aW50NjRfdCBDUFVDb250ZXh0OjpJbnN0cnVjdGlvblBvaW50 ZXIoKSBjb25zdCB7CisgICAgICAgcmV0dXJuIGFybS0+cGM7CisgICAgIGNhc2Uga0NQVUFyY2hp dGVjdHVyZUFSTTY0OgorICAgICAgIHJldHVybiBhcm02NC0+cGM7CisrICAgIGNhc2Uga0NQVUFy Y2hpdGVjdHVyZVBQQzY0OgorKyAgICAgIHJldHVybiBwcGM2NC0+bmlwOworICAgICBkZWZhdWx0 OgorICAgICAgIE5PVFJFQUNIRUQoKTsKKyAgICAgICByZXR1cm4gfjB1bGw7CitAQCAtMTg1LDYg KzE4Nyw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6OlN0YWNrUG9pbnRlcigpIGNvbnN0IHsKKyAg ICAgICByZXR1cm4gYXJtLT5zcDsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6Cisg ICAgICAgcmV0dXJuIGFybTY0LT5zcDsKKysgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6 CisrICAgICAgcmV0dXJuIHBwYzY0LT5yZWdzWzFdOworICAgICBkZWZhdWx0OgorICAgICAgIE5P VFJFQUNIRUQoKTsKKyAgICAgICByZXR1cm4gfjB1bGw7CitAQCAtMTk2LDYgKzIwMCw3IEBAIGJv b2wgQ1BVQ29udGV4dDo6SXM2NEJpdCgpIGNvbnN0IHsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0 dXJlWDg2XzY0OgorICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKKyAgICAgY2FzZSBr Q1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUw6CisrICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0 OgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVYODY6Cisg ICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTToKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2Nv bnRleHQuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5oCitAQCAtMzUyLDYgKzM1 MiwyNCBAQCBzdHJ1Y3QgQ1BVQ29udGV4dE1JUFM2NCB7CisgICB1aW50NjRfdCBmaXI7CisgfTsK KyAKKysvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1cmUgY2FycnlpbmcgUFBDNjQgQ1BVIHN0 YXRlLgorK3N0cnVjdCBDUFVDb250ZXh0UFBDNjQgeworKyAgdWludDY0X3QgbmlwOworKyAgdWlu dDY0X3QgbXNyOworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBjY3I7CisrICB1 aW50NjRfdCB4ZXI7CisrICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCBjdHI7CisrICBkb3Vi bGUgZnByZWdzWzMyXTsKKysgIGRvdWJsZSBmcHNjcjsKKysgIHN0cnVjdCB7CisrICAgIHVpbnQx Mjhfc3RydWN0IHNhdmVfdnJbMzJdOworKyAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7Cisr ICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOworKyAgfSB2cmVnczsKKyt9OworKworIC8vISBcYnJp ZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXBhYmxlIG9mIGNhcnJ5aW5nIHRoZSBjb250ZXh0IG9m IGFueSBzdXBwb3J0ZWQKKyAvLyEgICAgIENQVSBhcmNoaXRlY3R1cmUuCisgc3RydWN0IENQVUNv bnRleHQgeworQEAgLTM4Miw2ICs0MDAsNyBAQCBzdHJ1Y3QgQ1BVQ29udGV4dCB7CisgICAgIENQ VUNvbnRleHRBUk02NCogYXJtNjQ7CisgICAgIENQVUNvbnRleHRNSVBTKiBtaXBzZWw7CisgICAg IENQVUNvbnRleHRNSVBTNjQqIG1pcHM2NDsKKysgICAgQ1BVQ29udGV4dFBQQzY0KiBwcGM2NDsK KyAgIH07CisgfTsKKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGlu dXguaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCitAQCAt MTUsNiArMTUsNyBAQAorICNpZm5kZWYgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRF WFRfTElOVVhfSF8KKyAjZGVmaW5lIENSQVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9DT05URVhU X0xJTlVYX0hfCisgCisrI2luY2x1ZGUgPGNzdHJpbmc+CisgI2luY2x1ZGUgImJ1aWxkL2J1aWxk X2NvbmZpZy5oIgorICNpbmNsdWRlICJzbmFwc2hvdC9jcHVfY29udGV4dC5oIgorICNpbmNsdWRl ICJzbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oIgorQEAgLTE3NCw2ICsxNzUsNzggQEAg dm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dE1JUFMoCisgCisgI2VuZGlmICAvLyBBUkNIX0NQVV9N SVBTX0ZBTUlMWSB8fCBET1hZR0VOCisgCisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKSB8fCBET1hZR0VOCisrCisrLy8hIFxicmllZiBJbml0YWxpemVzIGEgQ1BVQ29udGV4dFBQ QzY0IHN0cnVjdHVyZSBmcm9tIG5hdGl2ZSBjb250ZXh0CisrLy8hICAgICBzdHJ1Y3R1cmVzIG9u IExpbnV4LgorKy8vIQorKy8vISBccGFyYW1baW5dIHRocmVhZF9jb250ZXh0IFRoZSBuYXRpdmUg dGhyZWFkIGNvbnRleHQuCisrLy8hIFxwYXJhbVtpbl0gZmxvYXRfY29udGV4dCBUaGUgbmF0aXZl IGZsb2F0IGNvbnRleHQuCisrLy8hIFxwYXJhbVtpbl0gdmVjdG9yX2NvbnRleHQgVGhlIG5hdGl2 ZSB2ZWN0b3IgY29udGV4dC4KKysvLyEgXHBhcmFtW291dF0gY29udGV4dCBUaGUgQ1BVQ29udGV4 dFBQQzY0IHN0cnVjdHVyZSB0byBpbml0YWxpemUuCisrdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0 cz4KKyt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoCisrICAgIGNvbnN0IFRocmVhZENv bnRleHQ6OnQ2NF90JiB0aHJlYWRfY29udGV4dCwKKysgICAgY29uc3QgRmxvYXRDb250ZXh0Ojpm NjRfdCYgZmxvYXRfY29udGV4dCwKKysgICAgY29uc3QgVmVjdG9yQ29udGV4dDo6djY0X3QmIHZl Y3Rvcl9jb250ZXh0LAorKyAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNvbnRleHQp IHsKKysKKysgIG1lbWNweShjb250ZXh0LT5yZWdzLCB0aHJlYWRfY29udGV4dC5ncHIsIHNpemVv Zihjb250ZXh0LT5yZWdzKSk7CisrICBjb250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4dC5uaXA7 CisrICBjb250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7CisrICBjb250ZXh0LT5jY3Ig PSB0aHJlYWRfY29udGV4dC5jY3I7CisrICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29udGV4dC54 ZXI7CisrICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5sbms7CisrICBjb250ZXh0LT5j dHIgPSB0aHJlYWRfY29udGV4dC5jdHI7CisrCisrICBtZW1jcHkoY29udGV4dC0+ZnByZWdzLCBm bG9hdF9jb250ZXh0LmZwcmVncywgc2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOworKyAgY29udGV4 dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0LmZwc2NyOworKworKyAgZm9yICh1aW50OF90IGkgPSAw OyBpIDwgMzI7IGkrKykgeworKyAgICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0geworKyAg ICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIpIHwKKysg ICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsxXSwKKysgICAgICAoKCh1aW50NjRfdCl2 ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMl0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29u dGV4dC52cnJlZ3NbaV1bM10KKysgICAgfTsKKysgIH0KKysgIGNvbnRleHQtPnZyZWdzLnNhdmVf dnJzYXZlID0gdmVjdG9yX2NvbnRleHQudnJzYXZlOworKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92 c2NyID0gezAsICh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07CisrfQor KworK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmFpdHM+Cisrdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4 dFBQQzY0KAorKyAgICBjb25zdCBTaWduYWxUaHJlYWRDb250ZXh0NjQgJnRocmVhZF9jb250ZXh0 LAorKyAgICBjb25zdCBTaWduYWxGbG9hdENvbnRleHQ2NCAmZmxvYXRfY29udGV4dCwKKysgICAg Y29uc3QgU2lnbmFsVmVjdG9yQ29udGV4dDY0ICZ2ZWN0b3JfY29udGV4dCwKKysgICAgdHlwZW5h bWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250ZXh0KSB7CisrCisrICBtZW1jcHkoY29udGV4dC0+ cmVncywgdGhyZWFkX2NvbnRleHQucmVncywgc2l6ZW9mKGNvbnRleHQtPnJlZ3MpKTsKKysgIGNv bnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5pcDsKKysgIGNvbnRleHQtPm1zciA9IHRocmVh ZF9jb250ZXh0Lm1zcjsKKysgIGNvbnRleHQtPmNjciA9IHRocmVhZF9jb250ZXh0LmNjcjsKKysg IGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0LnhlcjsKKysgIGNvbnRleHQtPmxuayA9IHRo cmVhZF9jb250ZXh0LmxuazsKKysgIGNvbnRleHQtPmN0ciA9IHRocmVhZF9jb250ZXh0LmN0cjsK KysKKysgIG1lbWNweShjb250ZXh0LT5mcHJlZ3MsIGZsb2F0X2NvbnRleHQucmVncywgc2l6ZW9m KGNvbnRleHQtPmZwcmVncykpOworKyAgY29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0LmZw c2NyOworKworKyAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgMzI7IGkrKykgeworKyAgICBjb250 ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0geworKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250 ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIpIHwKKysgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVn c1tpXVsxXSwKKysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMl0p IDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bM10KKysgICAgfTsK KysgIH0KKysgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRleHQudnJz YXZlOworKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2ZWN0b3Jf Y29udGV4dC52c2NyLnZzY3Jfd29yZH07CisrfQorKworKworKyNlbmRpZgorKworIH0gIC8vIG5h bWVzcGFjZSBpbnRlcm5hbAorIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorIAorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0LmNjCitAQCAtMTU5LDkgKzE1OSwxMSBA QCB2b2lkIFRlc3RBZ2FpbnN0VGFyZ2V0KFB0cmFjZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pIHsK KyAgICAgICAgICAgY29uc3QgYm9vbCBpc192ZHNvX21hcHBpbmcgPQorICAgICAgICAgICAgICAg ZGV2aWNlID09IDAgJiYgaW5vZGUgPT0gMCAmJiBtYXBwaW5nX25hbWUgPT0gIlt2ZHNvXSI7Cisg ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4W10gPSAibGludXgtdmRzby5z by4iOworKyAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIga1ByZWZpeDY0W10gPSAibGlu dXgtdmRzbzY0LnNvLiI7CisgICAgICAgICAgIHJldHVybiBpc192ZHNvX21hcHBpbmcgPT0KKyAg ICAgICAgICAgICAgICAgIChtb2R1bGVfbmFtZS5lbXB0eSgpIHx8CistICAgICAgICAgICAgICAg ICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZpeCksIGtQcmVmaXgpID09IDAp OworKyAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLmNvbXBhcmUoMCwgc3RybGVuKGtQcmVm aXgpLCBrUHJlZml4KSA9PSAwIHx8CisrICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29t cGFyZSgwLCBzdHJsZW4oa1ByZWZpeDY0KSwga1ByZWZpeDY0KSA9PSAwKTsKKyAgICAgICAgIH0s CisgICAgICAgICBtb2R1bGVfbWFwcGluZy0+bmFtZSwKKyAgICAgICAgIG1vZHVsZV9tYXBwaW5n LT5kZXZpY2UsCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9s aW51eC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGlu dXguY2MKK0BAIC0zMjMsNiArMzIzLDY5IEBAIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6 UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKKyAgICAgICByZWFkZXIsIGNvbnRleHRfYWRk cmVzcywgY29udGV4dF8ubWlwczY0KTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9Q UEM2NF9GQU1JTFkpCisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KKytzdGF0aWMgYm9v bCBSZWFkQ29udGV4dChQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKKysgICAgICAgICAgICAg ICAgICAgICAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3MsCisrICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBkZXN0X2NvbnRleHQpIHsK KysgIGNvbnN0IFByb2Nlc3NNZW1vcnkqIG1lbW9yeSA9IHJlYWRlci0+TWVtb3J5KCk7CisrCisr ICBMaW51eFZNQWRkcmVzcyBncF9yZWdzX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKworKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250 ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBl bmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBncF9yZWdzKTsKKysKKysgIHR5cGVuYW1lIFRyYWl0czo6 U2lnbmFsVGhyZWFkQ29udGV4dCB0aHJlYWRfY29udGV4dDsKKysgIGlmICghbWVtb3J5LT5SZWFk KGdwX3JlZ3NfYWRkcmVzcywgc2l6ZW9mKHRocmVhZF9jb250ZXh0KSwgJnRocmVhZF9jb250ZXh0 KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGdwX3JlZ3MhIjsKKysgICAg cmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhWTUFkZHJlc3MgZnBfcmVnc19hZGRyZXNz ID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgKworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgZnBfcmVncyk7 CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbEZsb2F0Q29udGV4dCBmcF9jb250ZXh0Owor KyAgaWYgKCFtZW1vcnktPlJlYWQoZnBfcmVnc19hZGRyZXNzLCBzaXplb2YoZnBfY29udGV4dCks ICZmcF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGZwX3Jl Z3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhWTUFkZHJlc3Mgdl9y ZWdzX3B0cl9hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0czo6TUNvbnRl eHQsIHZteF9yZXNlcnZlKSArIDg7CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFZlY3Rv ckNvbnRleHQgdl9jb250ZXh0OworKyAgaWYgKCFtZW1vcnktPlJlYWQodl9yZWdzX3B0cl9hZGRy ZXNzLCBzaXplb2Yodl9jb250ZXh0KSwgJnZfY29udGV4dCkpIHsKKysgICAgTE9HKEVSUk9SKSA8 PCAiQ291bGRuJ3QgcmVhZCB2X3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKwor KyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxDb250ZXh0VHJhaXRzNjQ+KHRocmVhZF9jb250 ZXh0LCBmcF9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X2NvbnRleHQs IGRlc3RfY29udGV4dCk7CisrCisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrdGVtcGxhdGU8Pgor K2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0 PigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgIExpbnV4Vk1BZGRyZXNz IGNvbnRleHRfYWRkcmVzcykgeworKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hp dGVjdHVyZVBQQzY0OworKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7 CisrCisrICByZXR1cm4gaW50ZXJuYWw6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHM2ND4oCisr ICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLnBwYzY0KTsKKyt9CisrCisr dGVtcGxhdGU8PgorK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29u dGV4dFRyYWl0czMyPigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgIExp bnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgeworKyAgLy8gUFBDNjQgaXMgNjQtYml0Cisr ICByZXR1cm4gZmFsc2U7CisrfQorKworICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQor IAorIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6SW5pdGlhbGl6ZShQcm9jZXNzUmVhZGVy TGludXgqIHByb2Nlc3NfcmVhZGVyLAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRp b25fc25hcHNob3RfbGludXguaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25f c25hcHNob3RfbGludXguaAorQEAgLTg0LDYgKzg0LDggQEAgY2xhc3MgRXhjZXB0aW9uU25hcHNo b3RMaW51eCBmaW5hbCA6IHB1YmxpYyBFeGNlcHRpb25TbmFwc2hvdCB7CisgI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOworICAg ICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2NDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 X0ZBTUlMWSkKKysgICAgQ1BVQ29udGV4dFBQQzY0IHBwYzY0OworICNlbmRpZgorICAgfSBjb250 ZXh0X3VuaW9uXzsKKyAgIENQVUNvbnRleHQgY29udGV4dF87CistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCitAQCAtMjk2LDcgKzI5 NiwyOCBAQCB2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFsLCBjb25z dCBOYXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgeworICAgICAgICAgICAgIDApOworICN1bmRl ZiBDUFVfQVJDSF9OQU1FCisgfQorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQorK3VzaW5nIE5hdGl2ZUNQVUNvbnRleHQgPSB1Y29udGV4dF90OworKworK3ZvaWQgSW5pdGlh bGl6ZUNvbnRleHQoTmF0aXZlQ1BVQ29udGV4dCogY29udGV4dCkgeworKyAgZm9yIChzaXplX3Qg cmVnID0gMDsgcmVnIDwgMzI7ICsrcmVnKSB7CisrICAgIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbcmVnXSA9IHJlZzsKKysgIH0KKysKKysgIG1lbXNldCgmY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVncywgNDQsCisrICAgICAgc2l6ZW9mKGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3Jl Z3MpKTsKKyt9CisgCisrdm9pZCBFeHBlY3RDb250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGFjdHVh bCwgY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgZXhwZWN0ZWQpIHsKKysgIEVYUEVDVF9FUShhY3R1 YWwuYXJjaGl0ZWN0dXJlLCBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQpOworKworKyAgZm9yIChzaXpl X3QgcmVnID0gMDsgcmVnIDwgMzI7ICsrcmVnKSB7CisrICAgIEVYUEVDVF9FUShhY3R1YWwucHBj NjQtPnJlZ3NbcmVnXSwgZXhwZWN0ZWQudWNfbWNvbnRleHQuZ3BfcmVnc1tyZWddKTsKKysgIH0K KysKKysgIEVYUEVDVF9FUShtZW1jbXAoYWN0dWFsLnBwYzY0LT5mcHJlZ3MsIGV4cGVjdGVkLnVj X21jb250ZXh0LmZwX3JlZ3MsCisrICAgICAgICAgICAgc2l6ZW9mKGFjdHVhbC5wcGM2NC0+ZnBy ZWdzKSksIDApOworK30KKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYworQEAgLTEwOCw2ICsxMDgsOCBAQCB2 b2lkIFByb2Nlc3NSZWFkZXJMaW51eDo6VGhyZWFkOjpJbml0aWFsaXplU3RhY2soUHJvY2Vzc1Jl YWRlckxpbnV4KiByZWFkZXIpIHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQorICAgc3RhY2tfcG9pbnRlciA9IHJlYWRlci0+SXM2NEJpdCgpID8gdGhyZWFkX2luZm8udGhy ZWFkX2NvbnRleHQudDY0LnJlZ3NbMjldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50MzIucmVnc1syOV07CisrI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBzdGFja19wb2ludGVyID0gdGhyZWFk X2luZm8udGhyZWFkX2NvbnRleHQudDY0LmdwclsxXTsKKyAjZWxzZQorICNlcnJvciBQb3J0Lgor ICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eF90 ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4X3Rl c3QuY2MKK0BAIC01OTEsNiArNTkxLDggQEAgYm9vbCBXcml0ZVRlc3RNb2R1bGUoY29uc3QgYmFz ZTo6RmlsZVBhdGgmIG1vZHVsZV9wYXRoKSB7CisgICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBF TV9BQVJDSDY0OworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU0VMKSB8fCBkZWZpbmVkKEFS Q0hfQ1BVX01JUFM2NEVMKQorICAgbW9kdWxlLmVoZHIuZV9tYWNoaW5lID0gRU1fTUlQUzsKKysj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorKyAgbW9kdWxlLmVoZHIuZV9tYWNoaW5lID0g RU1fUFBDNjQ7CisgI2VuZGlmCisgCisgICBtb2R1bGUuZWhkci5lX3ZlcnNpb24gPSBFVl9DVVJS RU5UOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKK0BAIC00MjIsNiArNDIyLDg5IEBA IHN0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRleHQ8Q29udGV4dFRyYWl0czY0PiwgbWNvbnRl eHQuZnByZWdzKSA9PQorICAgICAgICAgICAgICAgImNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7 CisgI2VuZGlmCisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrCisr c3RydWN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCB7CisrICB1aW50NjRfdCByZWdzWzMyXTsKKysg IHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysgIHVpbnQ2NF90IG9yaWdfcjM7Cisr ICB1aW50NjRfdCBjdHI7CisrICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCB4ZXI7CisrICB1 aW50NjRfdCBjY3I7CisrICB1aW50NjRfdCBzb2Z0ZTsKKysgIHVpbnQ2NF90IHRyYXA7CisrICB1 aW50NjRfdCBkYXI7CisrICB1aW50NjRfdCBkc2lzcjsKKysgIHVpbnQ2NF90IHJlc3VsdDsKKysg IHVpbnQ2NF90IGRzY3I7CisrICB1aW50NjRfdCBmcHIwWzNdOworK307CisrCisrc3RydWN0IFNp Z25hbEZsb2F0Q29udGV4dDY0IHsKKysgIGRvdWJsZSByZWdzWzMyXTsKKysgIGRvdWJsZSBmcHNj cjsKKyt9OworKworK3N0cnVjdCBTaWduYWxWZWN0b3JDb250ZXh0NjQgeworKyAgaW50MzJfdCB2 cnJlZ3NbMzJdWzRdOworKyAgc3RydWN0IHsKKysgICAgaW50MzJfdCBfX3BhZFszXTsKKysgICAg aW50MzJfdCB2c2NyX3dvcmQ7CisrICB9IHZzY3I7CisrICBpbnQzMl90IHZyc2F2ZTsKKysgIGlu dDMyX3QgX19wYWRbM107CisrfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKTsKKysK KysKKysjcHJhZ21hIHBhY2socG9wKQorK3N0cnVjdCBNQ29udGV4dDY0IHsKKysgIHVpbnQ2NF90 IHJlc2VydmVkWzRdOworKyAgaW50MzJfdCBzaWduYWw7CisrICBpbnQzMl90IF9fcGFkMDsKKysg IHVpbnQ2NF90IGhhbmRsZXI7CisrICB1aW50NjRfdCBvbGRtYXNrOworKyAgdWludDY0X3QgcHRf cmVnc19wdHI7CisrICBTaWduYWxUaHJlYWRDb250ZXh0NjQgZ3BfcmVnczsKKysgIFNpZ25hbEZs b2F0Q29udGV4dDY0ICBmcF9yZWdzOworKyAgU2lnbmFsVmVjdG9yQ29udGV4dDY0ICp2X3JlZ3M7 CisrICBpbnQ2NF90IHZteF9yZXNlcnZlWzY5XTsKKyt9OworKworK3N0cnVjdCBDb250ZXh0VHJh aXRzNjQgOiBwdWJsaWMgVHJhaXRzNjQgeworKyAgdXNpbmcgTUNvbnRleHQgPSBNQ29udGV4dDY0 OworKyAgdXNpbmcgU2lnbmFsVGhyZWFkQ29udGV4dCA9IFNpZ25hbFRocmVhZENvbnRleHQ2NDsK KysgIHVzaW5nIFNpZ25hbEZsb2F0Q29udGV4dCA9IFNpZ25hbEZsb2F0Q29udGV4dDY0OworKyAg dXNpbmcgU2lnbmFsVmVjdG9yQ29udGV4dCA9IFNpZ25hbFZlY3RvckNvbnRleHQ2NDsKKysgIHVz aW5nIENQVUNvbnRleHQgPSBDUFVDb250ZXh0UFBDNjQ7CisrfTsKKysKKytzdHJ1Y3QgQ29udGV4 dFRyYWl0czMyIDogcHVibGljIFRyYWl0czMyIHt9OworKworK3N0cnVjdCBVQ29udGV4dCB7Cisr ICB1aW50NjRfdCBmbGFnczsKKysgIHVpbnQ2NF90IGxpbms7CisrICBTaWduYWxTdGFjazxDb250 ZXh0VHJhaXRzNjQ+IHN0YWNrOworKyAgU2lnc2V0PENvbnRleHRUcmFpdHM2ND4gc2lnbWFzazsK KysgIE1Db250ZXh0NjQgbWNvbnRleHQ7CisrfTsKKysjcHJhZ21hIHBhY2socHVzaCwgMSkKKysK KytzdGF0aWNfYXNzZXJ0KHNpemVvZihVQ29udGV4dCkgPT0gc2l6ZW9mKHVjb250ZXh0X3QpLAor KyAgICAgICAgICAgICAgInVjb250ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIpOworK3N0YXRpY19hc3Nl cnQoc2l6ZW9mKE1Db250ZXh0NjQpID09IHNpemVvZihtY29udGV4dF90KSwKKysgICAgICAgICAg ICAgICJtY29udGV4dF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihT aWduYWxUaHJlYWRDb250ZXh0NjQpID09IHNpemVvZihncmVnc2V0X3QpLAorKyAgICAgICAgICAg ICAgImdyZWdzZXRfdCBzaXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2ln bmFsRmxvYXRDb250ZXh0NjQpID09IHNpemVvZihmcHJlZ3NldF90KSwKKysgICAgICAgICAgICAg ICJmcHJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWdu YWxWZWN0b3JDb250ZXh0NjQpID09IHNpemVvZihfbGliY192cnN0YXRlKSwKKysgICAgICAgICAg ICAgICJ2cnN0YXRlIHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKFVD b250ZXh0LCBtY29udGV4dCkgPT0KKysgICAgICAgICAgICAgIG9mZnNldG9mKHVjb250ZXh0X3Qs IHVjX21jb250ZXh0KSwgIm1jb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworK3N0YXRpY19hc3Nl cnQob2Zmc2V0b2YoTUNvbnRleHQ2NCwgZ3BfcmVncykgPT0KKysgICAgICAgICAgICAgIG9mZnNl dG9mKG1jb250ZXh0X3QsIGdwX3JlZ3MpLCAiZ3BfcmVncyBvZmZzZXQgbWlzbWF0Y2giKTsKKyAj ZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMjAzLDYgKzIw Myw4IEBAIENQVUFyY2hpdGVjdHVyZSBTeXN0ZW1TbmFwc2hvdExpbnV4OjpHZXRDUFVBcmNoaXRl Y3R1cmUoKSBjb25zdCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAg IHJldHVybiBwcm9jZXNzX3JlYWRlcl8tPklzNjRCaXQoKSA/IGtDUFVBcmNoaXRlY3R1cmVNSVBT NjRFTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga0NQVUFyY2hpdGVj dHVyZU1JUFNFTDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHJl dHVybiBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7CisgI2Vsc2UKKyAjZXJyb3IgcG9ydCB0byB5b3Vy IGFyY2hpdGVjdHVyZQorICNlbmRpZgorQEAgLTIxOCw2ICsyMjAsOSBAQCB1aW50MzJfdCBTeXN0 ZW1TbmFwc2hvdExpbnV4OjpDUFVSZXZpc2lvbigpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUworICAg cmV0dXJuIDA7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBO b3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1cm4gMDsKKyAjZWxzZQorICNlcnJv ciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjM4LDYgKzI0Myw5IEBA IHN0ZDo6c3RyaW5nIFN5c3RlbVNuYXBzaG90TGludXg6OkNQVVZlbmRvcigpIGNvbnN0IHsKKyAj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFi bGUgb24gTUlQUworICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisrI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0Cisr ICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAjZWxzZQorICNlcnJvciBwb3J0IHRvIHlvdXIgYXJj aGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMzcxLDYgKzM3OSw5IEBAIGJvb2wgU3lzdGVtU25hcHNo b3RMaW51eDo6TlhFbmFibGVkKCkgY29uc3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpCisgICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCisgICByZXR1cm4gZmFs c2U7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0 IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1cm4gZmFsc2U7CisgI2Vsc2UKKyAjZXJyb3Ig UG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYworQEAgLTE4Niw2ICsxODYsMTQgQEAgYm9vbCBU aHJlYWRTbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFkZXJMaW51eCogcHJvY2Vz c19yZWFkZXIsCisgICAgICAgICB0aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29udGV4dC5mMzIs CisgICAgICAgICBjb250ZXh0Xy5taXBzZWwpOworICAgfQorKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQorKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVj dHVyZVBQQzY0OworKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7Cisr ICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4oCisrICAgICAgdGhy ZWFkLnRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NCwKKysgICAgICB0aHJlYWQudGhyZWFk X2luZm8uZmxvYXRfY29udGV4dC5mNjQsCisrICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLnZlY3Rv cl9jb250ZXh0LnY2NCwKKysgICAgICBjb250ZXh0Xy5wcGM2NCk7CisgI2Vsc2UKKyAjZXJyb3Ig UG9ydC4KKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90 X2xpbnV4LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4 LmgKK0BAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFRocmVhZFNuYXBzaG90TGludXggZmluYWwgOiBw dWJsaWMgVGhyZWFkU25hcHNob3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpCisgICAgIENQVUNvbnRleHRNSVBTIG1pcHNlbDsKKyAgICAgQ1BVQ29udGV4dE1JUFM2NCBt aXBzNjQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIENQVUNv bnRleHRQUEM2NCBwcGM2NDsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJD SF9DUFVfWDg2X0ZBTUlMWQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3Iu Y2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9hdXhpbGlhcnlfdmVjdG9yLmNjCitAQCAtNTYsNiAr NTYsMTEgQEAgYm9vbCBBdXhpbGlhcnlWZWN0b3I6OlJlYWQoUHRyYWNlQ29ubmVjdGlvbiogY29u bmVjdGlvbikgeworICAgICBpZiAodHlwZSA9PSBBVF9JR05PUkUpIHsKKyAgICAgICBjb250aW51 ZTsKKyAgICAgfQorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgaWYg KHR5cGUgPT0gQVRfSUdOT1JFUFBDKSB7CisrICAgICAgY29udGludWU7CisrICAgIH0KKysjZW5k aWYKKyAgICAgaWYgKCFNYXBJbnNlcnRPclJlcGxhY2UoJnZhbHVlc18sIHR5cGUsIHZhbHVlLCBu dWxscHRyKSkgeworICAgICAgIExPRyhFUlJPUikgPDwgImR1cGxpY2F0ZSBhdXh2IGVudHJ5IjsK KyAgICAgICByZXR1cm4gZmFsc2U7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlX2Jyb2tl ci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZV9icm9rZXIuY2MKK0BAIC05Myw4ICs5 Myw4IEBAIGludCBQdHJhY2VCcm9rZXI6OlJ1bigpIHsKKyB9CisgCisgYm9vbCBQdHJhY2VCcm9r ZXI6OkFsbG9jYXRlQXR0YWNobWVudHMoKSB7CistICBjb25zdGV4cHIgc2l6ZV90IHBhZ2Vfc2l6 ZSA9IDQwOTY7CistICBjb25zdGV4cHIgc2l6ZV90IGFsbG9jX3NpemUgPQorKyAgc3RhdGljIHNp emVfdCBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOworKyAgc2l6ZV90IGFsbG9jX3NpemUgPQor ICAgICAgIChzaXplb2YoU2NvcGVkUHRyYWNlQXR0YWNoKSArIHBhZ2Vfc2l6ZSAtIDEpICYgfihw YWdlX3NpemUgLSAxKTsKKyAgIHZvaWQqIGFsbG9jID0gc2JyayhhbGxvY19zaXplKTsKKyAgIGlm IChyZWludGVycHJldF9jYXN0PGludHB0cl90PihhbGxvYykgPT0gLTEpIHsKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9saW51eC9wdHJhY2VyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlci5jYwor QEAgLTM5NCw2ICszOTQsNjQgQEAgYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAorICAg cmV0dXJuIHRydWU7CisgfQorIAorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQorKy8vIFBQQzY0IGhhcyBoYWQgSEFWRV9BUkNIX1RSQUNFSE9PSyBzZXQgc2luY2UgMi42LjI3 IChldmVuIGJlZm9yZSB4ODYgaGFkIGl0KS4KKysvLyBUaGF0IG1lYW5zIHdlIGNhbiBzaW1wbHkg dXNlIFBUUkFDRV9HRVRSRUdFU0VULgorKworK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXN0aW5hdGlv bj4KKytib29sIEdldFJlZ2lzdGVyU2V0KHBpZF90IHRpZCwgaW50IHNldCwgRGVzdGluYXRpb24q IGRlc3QsIGJvb2wgY2FuX2xvZykgeworKyAgaW92ZWMgaW92OworKyAgaW92Lmlvdl9iYXNlID0g cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZGVzdCk7CisrICBpb3YuaW92X2xlbiA9IHNpemVvZigq ZGVzdCk7CisrICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgcmVpbnRlcnByZXRf Y2FzdDx2b2lkKj4oc2V0KSwgJmlvdikgIT0gMCkgeworKyAgICBQTE9HX0lGKEVSUk9SLCBjYW5f bG9nKSA8PCAicHRyYWNlIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKyAgaWYgKGlvdi5p b3ZfbGVuICE9IHNpemVvZigqZGVzdCkpIHsKKysgICAgTE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8 PCAiVW5leHBlY3RlZCByZWdpc3RlcnMgc2l6ZSI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0K KysgIHJldHVybiB0cnVlOworK30KKysKKytib29sIEdldFZlY3RvclJlZ2lzdGVyczY0KHBpZF90 IHRpZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvckNvbnRleHQqIGNvbnRleHQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsKKysgIHJldHVybiBH ZXRSZWdpc3RlclNldCh0aWQsIE5UX1BQQ19WTVgsICZjb250ZXh0LT52NjQsIGNhbl9sb2cpOwor K30KKysKKytib29sIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnM2NChwaWRfdCB0aWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRDb250ZXh0KiBjb250ZXh0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeworKyAgcmV0dXJu IEdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFJGUFJFRywgJmNvbnRleHQtPmY2NCwgY2FuX2xvZyk7 CisrfQorKworK2Jvb2wgR2V0VGhyZWFkQXJlYTY0KHBpZF90IHRpZCwKKysgICAgICAgICAgICAg ICAgICAgICBjb25zdCBUaHJlYWRDb250ZXh0JiBjb250ZXh0LAorKyAgICAgICAgICAgICAgICAg ICAgIExpbnV4Vk1BZGRyZXNzKiBhZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAgIGJvb2wg Y2FuX2xvZykgeworKyAgLy8gUFBDNjQgZG9lc24ndCBoYXZlIFBUUkFDRV9HRVRfVEhSRUFEX0FS RUEgc2luY2UgdGhlIHRocmVhZCBwb2ludGVyCisrICAvLyBpcyBzdG9yZWQgaW4gR1BSIDEzLgor KyAgVGhyZWFkQ29udGV4dDo6dDY0X3QgdGM7CisrICBpZiAoIUdldFJlZ2lzdGVyU2V0KHRpZCwg TlRfUFJTVEFUVVMsICZ0YywgY2FuX2xvZykpIHsKKysgICAgTE9HX0lGKEVSUk9SLCBjYW5fbG9n KSA8PCAiVW5hYmxlIHRvIGdldCB0aHJlYWQgcG9pbnRlciEiOworKyAgICByZXR1cm4gZmFsc2U7 CisrICB9CisrCisrICAqYWRkcmVzcyA9IHRjLmdwclsxM107CisrCisrICByZXR1cm4gdHJ1ZTsK Kyt9CisrCisrLy8gU3R1YnMgZm9yIDMyLWJpdCBmdW5jdGlvbnMgbm90IGFwcGxpY2FibGUgb24g UFBDNjQKKytib29sIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnMzMihwaWRfdCB0aWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRDb250ZXh0KiBjb250ZXh0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeyByZXR1cm4gZmFs c2U7IH0KKytib29sIEdldFRocmVhZEFyZWEzMihwaWRfdCB0aWQsCisrICAgICAgICAgICAgICAg ICAgICAgY29uc3QgVGhyZWFkQ29udGV4dCAmY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAg ICBMaW51eFZNQWRkcmVzcyAqYWRkcmVzcywKKysgICAgICAgICAgICAgICAgICAgICBib29sIGNh bl9sb2cpIHsgcmV0dXJuIGZhbHNlOyB9CisrCisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5k aWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC00ODYsNiArNTQ0LDkgQEAgYm9vbCBQdHJh Y2VyOjpHZXRUaHJlYWRJbmZvKHBpZF90IHRpZCwgVGhyZWFkSW5mbyogaW5mbykgeworICAgaWYg KGlzXzY0X2JpdF8pIHsKKyAgICAgcmV0dXJuIEdldEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJzNjQo dGlkLCAmaW5mby0+dGhyZWFkX2NvbnRleHQsIGNhbl9sb2dfKSAmJgorICAgICAgICAgICAgR2V0 RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPmZsb2F0X2NvbnRleHQsIGNhbl9s b2dfKSAmJgorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgICAgICAg IEdldFZlY3RvclJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPnZlY3Rvcl9jb250ZXh0LCBjYW5fbG9n XykgJiYKKysjZW5kaWYKKyAgICAgICAgICAgIEdldFRocmVhZEFyZWE2NCh0aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGhyZWFkX2NvbnRleHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmluZm8tPnRocmVhZF9zcGVjaWZpY19kYXRhX2FkZHJlc3MsCistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3Ro cmVhZF9pbmZvLmgKK0BAIC0yOCw2ICsyOCwxMCBAQAorICNpbmNsdWRlIDxhbmRyb2lkL2FwaS1s ZXZlbC5oPgorICNlbmRpZgorIAorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK KysjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CisrI2VuZGlmCisrCisgbmFtZXNwYWNlIGNyYXNo cGFkIHsKKyAKKyAvLyEgXGJyaWVmIFRoZSBzZXQgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVy cyBmb3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseS4KK0BAIC03OSw2ICs4Myw4IEBAIHVuaW9uIFRo cmVhZENvbnRleHQgeworICAgICB1aW50MzJfdCBjcDBfc3RhdHVzOworICAgICB1aW50MzJfdCBj cDBfY2F1c2U7CisgICAgIHVpbnQzMl90IHBhZGRpbmcxXzsKKysjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUFBDNjQgaXMgNjQtYml0CisgI2Vsc2UKKyAjZXJy b3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0xMzIsNiArMTM4 LDIxIEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAgICB1aW50NjRfdCBjcDBfYmFkdmFkZHI7 CisgICAgIHVpbnQ2NF90IGNwMF9zdGF0dXM7CisgICAgIHVpbnQ2NF90IGNwMF9jYXVzZTsKKysj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUmVmbGVjdHMgc3Ry dWN0IHB0X3JlZ3MgaW4gYXNtL3B0cmFjZS5oLgorKyAgICB1aW50NjRfdCBncHJbMzJdOworKyAg ICB1aW50NjRfdCBuaXA7CisrICAgIHVpbnQ2NF90IG1zcjsKKysgICAgdWludDY0X3Qgb3JpZ19n cHIzOworKyAgICB1aW50NjRfdCBjdHI7CisrICAgIHVpbnQ2NF90IGxuazsKKysgICAgdWludDY0 X3QgeGVyOworKyAgICB1aW50NjRfdCBjY3I7CisrICAgIHVpbnQ2NF90IHNvZnRlOworKyAgICB1 aW50NjRfdCB0cmFwOworKyAgICB1aW50NjRfdCBkYXI7CisrICAgIHVpbnQ2NF90IGRzaXNyOwor KyAgICB1aW50NjRfdCByZXN1bHQ7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8v IEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0xNDMsNiArMTY0LDggQEAgdW5pb24gVGhyZWFkQ29u dGV4dCB7CisgICB1c2luZyBOYXRpdmVUaHJlYWRDb250ZXh0ID0gdXNlcl9yZWdzOworICNlbGlm IGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgLy8gTm8gYXBwcm9wcmlhdGUgTmF0aXZl VGhyZWFkc0NvbnRleHQgdHlwZSBhdmFpbGFibGUgZm9yIE1JUFMKKysjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHVzaW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSBzdHJ1 Y3QgcHRfcmVnczsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVf WDg2X0ZBTUlMWSB8fCBBUkNIX0NQVV9BUk02NAorQEAgLTIxOCw2ICsyNDEsOSBAQCB1bmlvbiBG bG9hdENvbnRleHQgeworICAgICB9IGZwcmVnc1szMl07CisgICAgIHVpbnQzMl90IGZwY3NyOwor ICAgICB1aW50MzJfdCBmcHVfaWQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrICAgIC8vIENyYXNocGFkJ3MgUFBDIHN1cHBvcnQgaXMgNjQtYml0IG9ubHksIHNvIHRo aXMKKysgICAgLy8gMzJiaXQtb25seSBzdHJ1Y3QgaXMgZGVjbGFyZWQgYXMgZW1wdHkuCisgI2Vs c2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0y NTIsNiArMjc4LDEwIEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7CisgICAgIGRvdWJsZSBmcHJlZ3Nb MzJdOworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAgdWludDMyX3QgZnB1X2lkOworKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0cyBmcHJlZ3Nl dF90IGluIHN5cy91Y29udGV4dC5oCisrICAgIGRvdWJsZSBmcHJlZ3NbMzJdOworKyAgICBkb3Vi bGUgZnBzY3I7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4 Nl9GQU1JTFkKK0BAIC0yODAsNiArMzEwLDggQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyAgIHN0 YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9mKHVzZXJfZnBzaW1kX3N0cnVjdCksICJT aXplIG1pc21hdGNoIik7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAv LyBObyBhcHByb3ByaWF0ZSBmbG9hdGluZyBwb2ludCBjb250ZXh0IG5hdGl2ZSB0eXBlIGZvciBh dmFpbGFibGUgTUlQUy4KKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysg IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLCAiU2l6ZSBt aXNtYXRjaCIpOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9Y ODYKK0BAIC0yODcsNiArMzE5LDI2IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7Cisgc3RhdGljX2Fz c2VydChzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxGbG9hdENvbnRleHQ+Ojp2YWx1ZSwKKyAgICAg ICAgICAgICAgICJOb3Qgc3RhbmRhcmQgbGF5b3V0Iik7CisgCisrLy8hIFxicmllZiBUaGUgdmVj dG9yIHJlZ2lzdGVycyB1c2VkIGZvciBhbiBhcmNoaXRlY3R1cmUgZmFtaWx5CisrdW5pb24gVmVj dG9yQ29udGV4dCB7CisrICBzdHJ1Y3QgdjMyX3Qge30gdjMyOworKyNpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKKysgIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpIC8v IFZlY3RvciBjb250ZXh0IG11c3QgYmUgZG91Ymxld29yZCBhbGlnbmVkLgorKyNlbmRpZgorKyAg c3RydWN0IHY2NF90IHsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAg IC8vIFJlZmxlY3RzIHZycmVnc2V0X3QgaW4gc3lzL3Vjb250ZXh0LmgKKysgICAgdWludDMyX3Qg dnJyZWdzWzMyXVs0XTsKKysgICAgc3RydWN0IHsKKysgICAgICB1aW50MzJfdCBfX3BhZFszXTsK KysgICAgICB1aW50MzJfdCB2c2NyX3dvcmQ7CisrICAgIH0gdnNjcjsKKysgICAgdWludDMyX3Qg dnJzYXZlOworKyAgICB1aW50MzJfdCBfX3BhZFszXTsKKysjZW5kaWYKKysgIH0gdjY0OworK307 CisrCisgLy8hIFxicmllZiBBIGNvbGxlY3Rpb24gb2YgYHB0cmFjZWAtYWJsZSBpbmZvcm1hdGlv biBhYm91dCBhIHRocmVhZC4KKyBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgICBUaHJlYWRJbmZvKCk7 CitAQCAtMjk4LDYgKzM1MCw5IEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKKyAgIC8vISBcYnJpZWYg VGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBmb3IgdGhlIHRocmVhZC4KKyAgIEZsb2F0Q29u dGV4dCBmbG9hdF9jb250ZXh0OworIAorKyAgLy8hIFxicmllZiAoT3B0aW9uYWwpIFRoZSB2ZWN0 b3IgcmVnaXN0ZXJzIHVzZWQgZm9yIHRoZSB0aHJlYWQuCisrICBWZWN0b3JDb250ZXh0IHZlY3Rv cl9jb250ZXh0OworKworICAgLy8hIFxicmllZiBUaGUgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgYWRk cmVzcyBmb3IgdGhlIHRocmVhZC4KKyAgIExpbnV4Vk1BZGRyZXNzIHRocmVhZF9zcGVjaWZpY19k YXRhX2FkZHJlc3M7CisgfTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5o CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAorQEAgLTY2LDYgKzY2LDcg QEAgdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7CisgLy8hICAgICBtYWNPUy9M aW51eC9GdWNoc2lhIHwgeDg2XzY0ICAgICAgIHwgYCUlcmRpYAorIC8vISAgICAgTGludXggICAg ICAgICAgICAgICB8IEFSTS9BUk02NCAgICB8IGByMGAvYHgwYAorIC8vISAgICAgTGludXggICAg ICAgICAgICAgICB8IE1JUFMvTUlQUzY0ICB8IGAkYTBgCisrLy8hICAgICBMaW51eCAgICAgICAg ICAgICAgIHwgUFBDNjQgICAgICAgIHwgYHIzYAorIC8vIQorIC8vISAgICAgQWRkaXRpb25hbGx5 LCB0aGUgdmFsdWUgYExSYCBvbiBBUk0vQVJNNjQgd2lsbCBiZSB0aGUgcmV0dXJuIGFkZHJlc3Mg b2YKKyAvLyEgICAgIHRoaXMgZnVuY3Rpb24uCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJl X2NvbnRleHRfbGludXguUworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xp bnV4LlMKK0BAIC0yOCw3ICsyOCw3IEBACisgICAuZ2xvYmwgQ0FQVFVSRUNPTlRFWFRfU1lNQk9M MgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisgICAuYmFs aWduIDE2LCAweDkwCistI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVm aW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgLmJhbGlnbiA0LCAweDAKKyAjZW5kaWYKKyAKK0BAIC00MTksNCArNDE5LDIx NCBAQCBDQVBUVVJFQ09OVEVYVF9TWU1CT0wyOgorICAganIgJHJhCisgCisgICAuc2V0IGF0Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gU3RvcmUgcjAtcjMxCisrICBzdGQg MCwgMHhlOCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMF0KKysgIHN0ZCAx LCAweGYwKDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxXQorKyAgc3RkIDIs IDB4ZjgoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzJdCisrICAvLyBub3Rl IHRoYXQgcjMncyBvcmlnaW5hbCB2YWx1ZSB3YXMgbG9zdAorKyAgc3RkIDMsIDB4MTAwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzNdCisrICBzdGQgNCwgMHgxMDgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNF0KKysgIHN0ZCA1LCAweDExMCgzKSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s1XQorKyAgc3RkIDYsIDB4MTE4KDMpICAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzZdCisrICBzdGQgNywgMHgxMjAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbN10KKysgIHN0ZCA4LCAweDEyOCgzKSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s4XQorKyAgc3RkIDksIDB4MTMwKDMpICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzldCisrICBzdGQgMTAsIDB4MTM4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTBdCisrICBzdGQgMTEsIDB4MTQwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTFdCisrICBzdGQgMTIsIDB4MTQ4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTJdCisrICBzdGQgMTMsIDB4MTUwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTNdCisrICBzdGQgMTQsIDB4MTU4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTRdCisrICBzdGQgMTUsIDB4MTYwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTVdCisrICBzdGQgMTYsIDB4MTY4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTZdCisrICBzdGQgMTcsIDB4MTcwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTddCisrICBzdGQgMTgsIDB4MTc4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMThdCisrICBzdGQgMTksIDB4MTgwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTldCisrICBzdGQgMjAsIDB4MTg4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjBdCisrICBzdGQgMjEsIDB4MTkwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjFdCisrICBzdGQgMjIsIDB4MTk4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjJdCisrICBzdGQgMjMsIDB4MWEwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjNdCisrICBzdGQgMjQsIDB4MWE4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjRdCisrICBzdGQgMjUsIDB4MWIwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjVdCisrICBzdGQgMjYsIDB4MWI4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjZdCisrICBzdGQgMjcsIDB4MWMwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjddCisrICBzdGQgMjgsIDB4MWM4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjhdCisrICBzdGQgMjksIDB4MWQwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjldCisrICBzdGQgMzAsIDB4MWQ4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMzBdCisrICBzdGQgMzEsIDB4MWUwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMzFdCisrCisrICAvLyBGb3IgTklQLCB3ZSBjYW4gdXNl IHRoZSB2YWx1ZSBpbiB0aGUgbGluayByZWdpc3RlcgorKyAgbWZsciAwCisrICBzdGQgMCwgMHgx ZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdCisrCisrICAvLyBD VFIKKysgIG1mY3RyIDAKKysgIHN0ZCAwLCAweDIwMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX0NUUl0KKysKKysgIC8vIEZvciBMTkssIHdlJ2xsIHVzZSB0aGUgY2FsbGVy J3MgTFIgc2F2ZSBhcmVhICgyIHN0YWNrIGZyYW1lcyB1cCkuCisrICAvLyByNCBjYW4gYmUgdXNl ZCBhcyBhIHNjcmF0Y2ggcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGFscmVhZHkgYmVlbiBzYXZlZC4K KysgIGxkIDQsIDAoMSkKKysgIGxkIDQsIDE2KDQpCisrICBzdGQgNCwgMHgyMDgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdCisrCisrICAvLyBYRVIKKysgIG1meGVy IDAKKysgIHN0ZCAwLCAweDIxMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BU X1hFUl0KKysKKysgIC8vIENDUgorKyAgbWZjciAwCisrICBzdGQgMCwgMHgyMTgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdCisrCisrICAvLyBNU1IsIG9yaWdfcjMs IE1RLCBUUkFQLCBEQVIsIERTSVNSLCBSRVNVTFQsIERTQ1IsCisrICAvLyBub3QgdXNlZCBvciBu b3QgcmVsZXZhbnQsICB6ZXJvIHRoZW0gb3V0LgorKyAgbGkgNCwgMAorKyAgc3RkIDQsIDB4MWYw KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXQorKyAgc3RkIDQsIDB4 MWY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfT1JJR19SM10KKysgIHN0 ZCA0LCAweDIyMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01RXQorKyAg c3RkIDQsIDB4MjI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfVFJBUF0K KysgIHN0ZCA0LCAweDIzMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RB Ul0KKysgIHN0ZCA0LCAweDIzOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BU X0RTSVNSXQorKyAgc3RkIDQsIDB4MjQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbUFRfUkVTVUxUXQorKyAgc3RkIDQsIDB4MjQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbUFRfRFNDUl0KKysKKysgIC8vIFVwZGF0ZSBjb250ZXh0LT51Y19tY29udGV4dC5y ZWdzIHRvIHBvaW50IHRvIGdwX3JlZ3MKKysgIGFkZGkgMCwgMywgMHhlOAorKyAgc3RkIDAsIDB4 ZTAoMykKKysKKysgIC8vIFNhdmUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIDAtMzEKKysgIHN0 ZmQgMCwgMHgyNjgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMF0KKysgIHN0 ZmQgMSwgMHgyNzAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMV0KKysgIHN0 ZmQgMiwgMHgyNzgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMl0KKysgIHN0 ZmQgMywgMHgyODAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbM10KKysgIHN0 ZmQgNCwgMHgyODgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNF0KKysgIHN0 ZmQgNSwgMHgyOTAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNV0KKysgIHN0 ZmQgNiwgMHgyOTgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNl0KKysgIHN0 ZmQgNywgMHgyYTAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbN10KKysgIHN0 ZmQgOCwgMHgyYTgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbOF0KKysgIHN0 ZmQgOSwgMHgyYjAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbOV0KKysgIHN0 ZmQgMTAsIDB4MmI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTBdCisrICBz dGZkIDExLCAweDJjMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzExXQorKyAg c3RmZCAxMiwgMHgyYzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMl0KKysg IHN0ZmQgMTMsIDB4MmQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTNdCisr ICBzdGZkIDE0LCAweDJkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE0XQor KyAgc3RmZCAxNSwgMHgyZTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNV0K KysgIHN0ZmQgMTYsIDB4MmU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTZd CisrICBzdGZkIDE3LCAweDJmMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE3 XQorKyAgc3RmZCAxOCwgMHgyZjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sx OF0KKysgIHN0ZmQgMTksIDB4MzAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3Nb MTldCisrICBzdGZkIDIwLCAweDMwOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdz WzIwXQorKyAgc3RmZCAyMSwgMHgzMTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVn c1syMV0KKysgIHN0ZmQgMjIsIDB4MzE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3Jl Z3NbMjJdCisrICBzdGZkIDIzLCAweDMyMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9y ZWdzWzIzXQorKyAgc3RmZCAyNCwgMHgzMjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBf cmVnc1syNF0KKysgIHN0ZmQgMjUsIDB4MzMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMjVdCisrICBzdGZkIDI2LCAweDMzOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzWzI2XQorKyAgc3RmZCAyNywgMHgzNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVnc1syN10KKysgIHN0ZmQgMjgsIDB4MzQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmZwX3JlZ3NbMjhdCisrICBzdGZkIDI5LCAweDM1MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzI5XQorKyAgc3RmZCAzMCwgMHgzNTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1szMF0KKysgIHN0ZmQgMzEsIDB4MzYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmZwX3JlZ3NbMzFdCisrCisrICAvLyBGUFNDUgorKyAgbWZmcyAwCisrICBzdGZkIDAsIDB4 MzY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzJdCisrCisrICAvLyBTYXZl IFZNWCBWZWN0b3IgcmVnaXN0ZXJzCisrICAvLyBVcGRhdGUgcjQgdG8gY29udGFpbiB0aGUgYmFz ZSBhZGRyZXNzIG9mIHZteF9yZXNlcnZlCisrICBhZGRpIDQsIDMsIDB4Mzc4CisrICAvLyBFbnN1 cmUgdGhhdCBpdCBpcyBxdWFkd29yZCBhbGlnbmVkCisrICBhbmRpLiA1LCA0LCAweEYKKysgIGJl cSAxZiAvLyBObyBhbGlnbm1lbnQgaXMgbmVjZXNzYXJ5CisrICAvLyBBZGRyZXNzIGlzIGRvdWJs ZXdvcmQgYWxpZ25lZCBhbmQgbm90IHF1YWR3b3JkIGFsaWduZWQsIGFkZCA4CisrICBhZGRpIDQs IDQsIDgKKysKKysxOgorKyAgLy8gU3RvcmUgVk1YIHJlZ2lzdGVycyAwLTMxCisrICAvLyByNCB3 aWxsIGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcworKyAgLy8gcjUgd2lsbCBjb250YWluIHRoZSBp bmRleAorKyAgbGkgNSwgMAorKyAgc3R2eCAwLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDBdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDEs IDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMV0K KysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMiwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAz LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDNd CisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDQsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg NSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA1 XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA2LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDZdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4 IDcsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg N10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggOCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA4XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2 eCA5LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDldCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDEwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTBdCisrICBhZGRpIDUsIDUsIDE2CisrICBz dHZ4IDExLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMTFdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDEyLCA0LCA1ICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTJdCisrICBhZGRpIDUsIDUsIDE2Cisr ICBzdHZ4IDEzLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxp Z24pICsgMTNdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE0LCA0LCA1ICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTRdCisrICBhZGRpIDUsIDUsIDE2 CisrICBzdHZ4IDE1LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMTVdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE2LCA0LCA1ICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTZdCisrICBhZGRpIDUsIDUs IDE2CisrICBzdHZ4IDE3LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMTddCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE4LCA0LCA1ICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMThdCisrICBhZGRpIDUs IDUsIDE2CisrICBzdHZ4IDE5LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgMTldCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDIwLCA0LCA1ICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjBdCisrICBhZGRp IDUsIDUsIDE2CisrICBzdHZ4IDIxLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgMjFdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDIyLCA0LCA1 ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjJdCisrICBh ZGRpIDUsIDUsIDE2CisrICBzdHZ4IDIzLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52 bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjNdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI0LCA0 LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjRdCisr ICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI1LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjVdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI2 LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjZd CisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI3LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjddCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4 IDI4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg MjhdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI5LCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjldCisrICBhZGRpIDUsIDUsIDE2CisrICBz dHZ4IDMwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMzBdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDMxLCA0LCA1ICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMzFdCisrICBhZGRpIDUsIDUsIDE2Cisr CisrICAvLyBWU0NSCisrICBtZnZzY3IgMAorKyAgc3R2eCAwLCA0LCA1CisrICBhZGRpIDUsIDUs IDE2CisrCisrICAvLyBWUlNBVkUKKysgIG1mdnJzYXZlIDAKKysgIHN0d3ggMCwgNCwgNQorKwor KyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnZfcmVncyB0byBwb2ludCB0byB2bXhf cmVzZXJ2ZSArIGFsaWdubWVudC4KKysgIHN0ZCA0LCAweDM3MCgzKQorKworKyAgLy8gWmVybyBv dXQgYWxsIHVudXNlZCBmaWVsZHMKKysgIGxpIDQsIDAKKysgIHN0ZCA0LCAweGM4KDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnNpZ25hbAorKyAgc3RkIDQsIDB4ZDAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuaGFuZGxlcgorKyAgc3RkIDQsIDB4ZDgoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQub2xkbWFzaworKworKyAgYmxyCisgI2VuZGlmICAvLyBfX2kzODZfXworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNj L2NhcHR1cmVfY29udGV4dF90ZXN0LmNjCitAQCAtNDksNyArNDksOCBAQCB2b2lkIFRlc3RDYXB0 dXJlQ29udGV4dCgpIHsKKyAgIC8vIHJlZmVyZW5jZSBwcm9ncmFtIGNvdW50ZXIuCisgICB1aW50 cHRyX3QgcGMgPSBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnRleHRfMSk7CisgCistI2lm ICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkKKysjaWYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBcCisrICAgICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKKyAgIC8vIEFkZHJlc3NTYW5pdGl6ZXIgY2FuIGNhdXNlIGVub3VnaCBjb2RlIGJsb2F0IHRo YXQgdGhlIOKAnG5lYXJieeKAnSBjaGVjayB3b3VsZAorICAgLy8gbGlrZWx5IGZhaWwuCisgICBj b25zdCB1aW50cHRyX3Qga1JlZmVyZW5jZVBDID0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1 cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1 cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKK0BAIC0zNiw2ICszNiw4IEBAIHZvaWQgU2Fu aXR5Q2hlY2tDb250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKKyAgIEVY UEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LnJlZ3NbMF0sIEZyb21Qb2ludGVyQ2FzdDx1aW50 cHRyX3Q+KCZjb250ZXh0KSk7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkK KyAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzRdLCBGcm9tUG9pbnRlckNh c3Q8dWludHB0cl90PigmY29udGV4dCkpOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRf RkFNSUxZKQorKyAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1szXSwgRnJv bVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsKKyAjZW5kaWYKKyB9CisgCitAQCAt NTAsNiArNTIsOCBAQCB1aW50cHRyX3QgUHJvZ3JhbUNvdW50ZXJGcm9tQ29udGV4dChjb25zdCBO YXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICByZXR1cm4gY29udGV4dC51Y19tY29udGV4 dC5wYzsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgcmV0dXJuIGNv bnRleHQudWNfbWNvbnRleHQucGM7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisgI2Vu ZGlmCisgfQorIAorQEAgLTY0LDYgKzY4LDggQEAgdWludHB0cl90IFN0YWNrUG9pbnRlckZyb21D b250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKKyAgIHJldHVybiBjb250 ZXh0LnVjX21jb250ZXh0LnNwOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp CisgICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncmVnc1syOV07CisrI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5n cF9yZWdzWzFdOworICNlbmRpZgorIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxz X3Rlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxzX3Rlc3QuY2MKK0BAIC00Niwx MiArNDYsMTIgQEAgYm9vbCBDYW5DYXVzZVNpZ25hbChpbnQgc2lnKSB7CisgICByZXR1cm4gc2ln ID09IFNJR0FCUlQgfHwKKyAgICAgICAgICBzaWcgPT0gU0lHQUxSTSB8fAorICAgICAgICAgIHNp ZyA9PSBTSUdCVVMgfHwKKy0jaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCisrI2lmICFkZWZp bmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKyAgICAgICAg ICBzaWcgPT0gU0lHRlBFIHx8CistI2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkK KysjZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQ VV9QUEM2NCkKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFS Q0hfQ1BVX0FSTUVMKQorICAgICAgICAgIHNpZyA9PSBTSUdJTEwgfHwKKy0jZW5kaWYgIC8vIGRl ZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTAorKyNl bmRpZiAgLy8gZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BV X0FSTUVMKQorICAgICAgICAgIHNpZyA9PSBTSUdQSVBFIHx8CisgICAgICAgICAgc2lnID09IFNJ R1NFR1YgfHwKKyAjaWYgZGVmaW5lZChPU19NQUNPU1gpCitAQCAtMTE3LDkgKzExNywxMSBAQCB2 b2lkIENhdXNlU2lnbmFsKGludCBzaWcpIHsKKyAgICAgICBicmVhazsKKyAgICAgfQorIAorLSNp ZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKKysjaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQp ICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorICAgICAvLyBBUk02NCBoYXMgaGFyZHdhcmUg aW50ZWdlciBkaXZpc2lvbiBpbnN0cnVjdGlvbnMgdGhhdCBkb27igJl0IGdlbmVyYXRlIGEKKyAg ICAgLy8gdHJhcCBmb3IgZGl2aWRlLWJ5LXplcm8sIHNvIHRoaXMgZG9lc27igJl0IHByb2R1Y2Ug U0lHRlBFLgorKyAgICAvLworKyAgICAvLyBQUEM2NCBmaXhlZC1wb2ludCBkaXZpc2lvbiBieSB6 ZXJvIGFsc28gZG9lc24ndCBwcm9kdWNlIGEgU0lHRlBFLgorICAgICBjYXNlIFNJR0ZQRTogewor ICAgICAgIC8vIE9wdGltaXphdGlvbiBtYWtlcyB0aGlzIHRyaWNreSwgc28gZ2V0IHplcm8gZnJv bSBhIHN5c3RlbSBjYWxsIGxpa2VseQorICAgICAgIC8vIHRvIHN1Y2NlZWQsIGFuZCB0cnkgdG8g ZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdC4KK0BAIC0xMzcsNyArMTM5LDcgQEAgdm9pZCBD YXVzZVNpZ25hbChpbnQgc2lnKSB7CisgICAgICAgZnN0YXQocXVvdGllbnQsICZzdGF0X2J1Zik7 CisgICAgICAgYnJlYWs7CisgICAgIH0KKy0jZW5kaWYgIC8vIEFSQ0hfQ1BVX0FSTTY0CisrI2Vu ZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCisgCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNI X0NQVV9BUk1FTCkKKyAgICAgY2FzZSBTSUdJTEw6IHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL0JVSUxELmduCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlMRC5nbgorQEAg LTkzLDYgKzkzLDExIEBAIHNvdXJjZV9zZXQoImxpYnBuZ19zb3VyY2VzIikgeworICAgICAgICJt aXBzL2ZpbHRlcl9tc2FfaW50cmluc2ljcy5jIiwKKyAgICAgICAibWlwcy9taXBzX2luaXQuYyIs CisgICAgIF0KKysgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgeworKyAgICBz b3VyY2VzICs9IFsKKysgICAgICAicG93ZXJwYy9maWx0ZXJfdnN4X2ludHJpbnNpY3MuYyIsCisr ICAgICAgInBvd2VycGMvcG93ZXJwY19pbml0LmMiLAorKyAgICBdCisgICB9CisgCisgICBjb25m aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KK25ldyBm aWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9wb3dlcnBjL2ZpbHRlcl92c3hfaW50cmlu c2ljcy5jCitAQCAtMCwwICsxLDc2NyBAQAorKy8qIGZpbHRlcl92c3hfaW50cmluc2ljcy5jIC0g UG93ZXJQQyBvcHRpbWlzZWQgZmlsdGVyIGZ1bmN0aW9ucworKyAqCisrICogQ29weXJpZ2h0IChj KSAyMDE3IEdsZW5uIFJhbmRlcnMtUGVocnNvbgorKyAqIFdyaXR0ZW4gYnkgVmFkaW0gQmFya292 LCAyMDE3LgorKyAqIExhc3QgY2hhbmdlZCBpbiBsaWJwbmcgMS42LjI5IFtNYXJjaCAxNiwgMjAx N10KKysgKgorKyAqIFRoaXMgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgbGlicG5nIGxpY2Vu c2UuCisrICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUg ZGlzY2xhaW1lcgorKyAqIGFuZCBsaWNlbnNlIGluIHBuZy5oCisrICovCisrI2luY2x1ZGUgPHN0 ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNsdWRlICIuLi9wbmdwcml2LmgiCisr CisrI2lmZGVmIFBOR19SRUFEX1NVUFBPUlRFRAorKworKy8qIFRoaXMgY29kZSByZXF1aXJlcyAt bWFsdGl2ZWMgYW5kIC1tdnN4IG9uIHRoZSBjb21tYW5kIGxpbmU6ICovCisrI2lmIFBOR19QT1dF UlBDX1ZTWF9JTVBMRU1FTlRBVElPTiA9PSAxIC8qIGludHJpbnNpY3MgY29kZSBmcm9tIHBuZ3By aXYuaCAqLworKworKyNpbmNsdWRlIDxhbHRpdmVjLmg+CisrCisrI2lmIFBOR19QT1dFUlBDX1ZT WF9PUFQgPiAwCisrCisrI2lmbmRlZiBfX1ZTWF9fCisrIyAgZXJyb3IgIlRoaXMgY29kZSByZXF1 aXJlcyBWU1ggc3VwcG9ydCAoUE9XRVI3IGFuZCBsYXRlcikuIFBsZWFzZSBwcm92aWRlIC1tdnN4 IGNvbXBpbGVyIGZsYWcuIgorKyNlbmRpZgorKworKyNkZWZpbmUgdmVjX2xkX3VuYWxpZ25lZCh2 ZWMsZGF0YSkgdmVjID0gdmVjX3ZzeF9sZCgwLGRhdGEpCisrI2RlZmluZSB2ZWNfc3RfdW5hbGln bmVkKHZlYyxkYXRhKSB2ZWNfdnN4X3N0KHZlYywwLGRhdGEpCisrCisrCisrLyogRnVuY3Rpb25z IGluIHRoaXMgZmlsZSBsb29rIGF0IG1vc3QgMyBwaXhlbHMgKGEsYixjKSB0byBwcmVkaWN0IHRo ZSA0dGggKGQpLgorKyAqIFRoZXkncmUgcG9zaXRpb25lZCBsaWtlIHRoaXM6CisrICogICAgcHJl djogIGMgYgorKyAqICAgIHJvdzogICBhIGQKKysgKiBUaGUgU3ViIGZpbHRlciBwcmVkaWN0cyBk PWEsIEF2ZyBkPShhK2IpLzIsIGFuZCBQYWV0aCBwcmVkaWN0cyBkIHRvIGJlCisrICogd2hpY2hl dmVyIG9mIGEsIGIsIG9yIGMgaXMgY2xvc2VzdCB0byBwPWErYi1jLgorKyAqICggdGhpcyBpcyB0 YWtlbiBmcm9tIC4uL2ludGVsL2ZpbHRlcl9zc2UyX2ludHJpbnNpY3MuYyApCisrICovCisrCisr I2RlZmluZSB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csb2Zm c2V0KSBcCisrICAgcG5nX2J5dGUgaTtcCisrICAgcG5nX2J5dGVwIHJwID0gcm93ICsgb2Zmc2V0 O1wKKysgICBwbmdfY29uc3RfYnl0ZXAgcHAgPSBwcmV2X3JvdztcCisrICAgcG5nX3NpemVfdCB1 bmFsaWduZWRfdG9wID0gMTYgLSAoKChwbmdfc2l6ZV90KXJwICUgMTYpKTtcCisrICAgcG5nX3Np emVfdCBpc3RvcDtcCisrICAgaWYodW5hbGlnbmVkX3RvcCA9PSAxNilcCisrICAgICAgdW5hbGln bmVkX3RvcCA9IDA7XAorKyAgIGlzdG9wID0gcm93X2luZm8tPnJvd2J5dGVzO1wKKysgICBpZigo dW5hbGlnbmVkX3RvcCA8IGlzdG9wKSlcCisrICAgICAgaXN0b3AgLT0gdW5hbGlnbmVkX3RvcDtc CisrICAgZWxzZXtcCisrICAgICAgdW5hbGlnbmVkX3RvcCA9IGlzdG9wO1wKKysgICAgICBpc3Rv cCA9IDA7XAorKyAgIH0KKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfdXBfdnN4KHBuZ19y b3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCisreworKyAgIHZlY3RvciB1bnNp Z25lZCBjaGFyIHJwX3ZlYzsKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7CisrICAg dnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LDApCisrCisrICAg LyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKKysgICAg KiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCisrICAgICogdW5h bGlnbmVkIHBhcnQgYXMgdXN1YWwuCisrICAgICovCisrICAgZm9yIChpID0gMDsgaSA8IHVuYWxp Z25lZF90b3A7IGkrKykKKysgICB7CisrICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJw KSArIChpbnQpKCpwcCsrKSkgJiAweGZmKTsKKysgICAgICBycCsrOworKyAgIH0KKysKKysgICAv KiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLworKyAgIHdoaWxlKCBpc3RvcCA+PSAxNiApCisr ICAgeworKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKKysgICAgICB2ZWNfbGRfdW5hbGln bmVkKHBwX3ZlYyxwcCk7CisrCisrICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscHBfdmVj KTsKKysKKysgICAgICB2ZWNfc3QocnBfdmVjLDAscnApOworKworKyAgICAgIHBwICs9IDE2Owor KyAgICAgIHJwICs9IDE2OworKyAgICAgIGlzdG9wIC09IDE2OworKyAgIH0KKysKKysgICBpZihp c3RvcCA+IDApCisrICAgeworKyAgICAgIC8qIElmIGJ5dGUgY291bnQgb2Ygcm93IGlzIG5vdCBk aXZpc2libGUgYnkgMTYKKysgICAgICAgKiB3ZSB3aWxsIHByb2Nlc3MgcmVtYWluaW5nIHBhcnQg YXMgdXN1YWwKKysgICAgICAgKi8KKysgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3A7IGkrKykK KysgICAgICB7CisrICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQp KCpwcCsrKSkgJiAweGZmKTsKKysgICAgICAgICBycCsrOworKyAgICAgIH0KKyt9CisrCisrfQor KworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQxXzQg PSB7MTYsMTYsMTYsMTYsIDAsIDEsIDIsIDMsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQyXzQgPSB7MTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsIDQsIDUsIDYsIDcsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQzXzQgPSB7MTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDgsIDksMTAsMTF9OworKworK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQxXzMgPSB7MTYsMTYsMTYsIDAs IDEsIDIsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYs IDMsIDQsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQzXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsIDYsIDcsIDgsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfTEVGVFNISUZURUQ0XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsIDksMTAsMTEsMTZ9OworKworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfTk9UX1NISUZURUQxXzQgPSB7MTYsMTYsMTYsMTYsIDQsIDUsIDYsIDcsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf Tk9UX1NISUZURUQyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDgsIDksMTAsMTEsMTYs MTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NI SUZURUQzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTIsMTMsMTQs MTV9OworKworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZU RUQxXzMgPSB7MTYsMTYsMTYsIDMsIDQsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9 OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQyXzMg PSB7MTYsMTYsMTYsMTYsMTYsMTYsIDYsIDcsIDgsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQzXzMgPSB7MTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDksMTAsMTEsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQ0XzMgPSB7MTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTIsMTMsMTQsMTZ9OworKworK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9aRVJPID0gezAsMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLDB9OworKyNpZmRlZiBfX0xJVFRMRV9FTkRJQU5fXworKworK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfNCA9IHsgNCwxNiwg NSwxNiwgNiwxNiwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl80ID0geyA4LDE2LCA5LDE2 LDEwLDE2LDExLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzQgPSB7MTIsMTYsMTMsMTYsMTQs MTYsMTUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworKworK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFfNCA9IHsxNiwxNiwxNiwxNiwgMCwg MiwgNCwgNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMl80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LCAwLCAyLCA0LCA2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsIDAsIDIsIDQsIDZ9OworKworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfMyA9IHsgMywxNiwgNCwxNiwgNSwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9DSEFSX1RPX1NIT1JUMl8zID0geyA2LDE2LCA3LDE2LCA4LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX0NIQVJfVE9fU0hPUlQzXzMgPSB7IDksMTYsMTAsMTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf Q0hBUl9UT19TSE9SVDRfMyA9IHsxMiwxNiwxMywxNiwxNCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNn07CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9T SE9SVF9UT19DSEFSMV8zID0gezE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JU X1RPX0NIQVIyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTYsMTYs MTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9f Q0hBUjNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwx Nn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFS NF8zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2fTsK KysKKysjZWxpZiBkZWZpbmVkKF9fQklHX0VORElBTl9fKQorKworK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfNCA9IHsxNiwgNCwxNiwgNSwxNiwg NiwxNiwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl80ID0gezE2LCA4LDE2LCA5LDE2LDEwLDE2 LDExLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzQgPSB7MTYsMTIsMTYsMTMsMTYsMTQsMTYsMTUs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworKworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFfNCA9IHsxNiwxNiwxNiwxNiwgMSwgMywgNSwgNywx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9TSE9SVF9UT19DSEFSMl80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAz LCA1LCA3LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX1NIT1JUX1RPX0NIQVIzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsIDEsIDMsIDUsIDd9OworKworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBW U1hfQ0hBUl9UT19TSE9SVDFfMyA9IHsxNiwgMywxNiwgNCwxNiwgNSwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9D SEFSX1RPX1NIT1JUMl8zID0gezE2LCA2LDE2LCA3LDE2LCA4LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJf VE9fU0hPUlQzXzMgPSB7MTYsIDksMTYsMTAsMTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19T SE9SVDRfMyA9IHsxNiwxMiwxNiwxMywxNiwxNCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19D SEFSMV8zID0gezE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIy XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9Owor K3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjNfMyA9 IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNn07Cisrc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSNF8zID0gezE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2fTsKKysKKysjZW5k aWYKKysKKysjZGVmaW5lIHZzeF9jaGFyX3RvX3Nob3J0KHZlYyxvZmZzZXQsYnBwKSAodmVjdG9y IHVuc2lnbmVkIHNob3J0KXZlY19wZXJtKCh2ZWMpLFZTWF9DSEFSX1pFUk8sVlNYX0NIQVJfVE9f U0hPUlQjI29mZnNldCMjXyMjYnBwKQorKyNkZWZpbmUgdnN4X3Nob3J0X3RvX2NoYXIodmVjLG9m ZnNldCxicHApIHZlY19wZXJtKCgodmVjdG9yIHVuc2lnbmVkIGNoYXIpKHZlYykpLFZTWF9DSEFS X1pFUk8sVlNYX1NIT1JUX1RPX0NIQVIjI29mZnNldCMjXyMjYnBwKQorKworKyNpZmRlZiBQTkdf VVNFX0FCUworKyMgIGRlZmluZSB2c3hfYWJzKG51bWJlcikgYWJzKG51bWJlcikKKysjZWxzZQor KyMgIGRlZmluZSB2c3hfYWJzKG51bWJlcikgKG51bWJlciA+IDApID8gKG51bWJlcikgOiAtKG51 bWJlcikKKysjZW5kaWYKKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfc3ViNF92c3gocG5n X3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQorK3sKKysgICBjb25zdCBw bmdfYnl0ZSBicHAgPSA0OworKworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKKysg ICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwYXJ0X3ZlYzsKKysKKysgICB2c3hfZGVjbGFyZV9jb21t b25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQorKworKyAgIFBOR19VTlVTRUQocHAp CisrCisrICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRh dGEKKysgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCisr ICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCisrICAgICovCisrICAgZm9yIChpID0gMDsg aSA8IHVuYWxpZ25lZF90b3A7IGkrKykKKysgICB7CisrICAgICAgKnJwID0gKHBuZ19ieXRlKSgo KGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7CisrICAgICAgcnArKzsKKysg ICB9CisrCisrICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KKysgICB3aGlsZSggaXN0 b3AgPj0gMTYgKQorKyAgIHsKKysgICAgICBmb3IoaT0wO2kgPCBicHAgOyBpKyspCisrICAgICAg eworKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJw cCkpKSAmIDB4ZmYpOworKyAgICAgICAgIHJwKys7CisrICAgICAgfQorKyAgICAgIHJwIC09IGJw cDsKKysKKysgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7CisrICAgICAgcGFydF92ZWMgPSB2 ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQxXzQpOworKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICBwYXJ0X3ZlYyA9 IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDJfNCk7CisrICAg ICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHBhcnRfdmVj ID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEM180KTsKKysg ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgdmVjX3N0 KHJwX3ZlYywwLHJwKTsKKysKKysgICAgICBycCArPSAxNjsKKysgICAgICBpc3RvcCAtPSAxNjsK KysgICB9CisrCisrICAgaWYoaXN0b3AgPiAwKQorKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3Rv cCAlIDE2OyBpKyspCisrICAgICAgeworKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQp KCpycCkgKyAoaW50KSgqKHJwIC0gYnBwKSkpICYgMHhmZik7CisrICAgICAgICAgcnArKzsKKysg ICAgICB9CisrCisrfQorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWIzX3ZzeChwbmdf cm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCisreworKyAgIGNvbnN0IHBu Z19ieXRlIGJwcCA9IDM7CisrCisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOworKyAg IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBhcnRfdmVjOworKworKyAgIHZzeF9kZWNsYXJlX2NvbW1v bl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCisrCisrICAgUE5HX1VOVVNFRChwcCkK KysKKysgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0 YQorKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKKysg ICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KKysgICAgKi8KKysgICBmb3IgKGkgPSAwOyBp IDwgdW5hbGlnbmVkX3RvcDsgaSsrKQorKyAgIHsKKysgICAgICAqcnAgPSAocG5nX2J5dGUpKCgo aW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKKysgICAgICBycCsrOworKyAg IH0KKysKKysgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLworKyAgIHdoaWxlKCBpc3Rv cCA+PSAxNiApCisrICAgeworKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKKysgICAgICB7 CisrICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBw KSkpICYgMHhmZik7CisrICAgICAgICAgcnArKzsKKysgICAgICB9CisrICAgICAgcnAgLT0gYnBw OworKworKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKKysgICAgICBwYXJ0X3ZlYyA9IHZl Y19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfMyk7CisrICAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHBhcnRfdmVjID0g dmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl8zKTsKKysgICAg ICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgcGFydF92ZWMg PSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzMpOworKyAg ICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICBwYXJ0X3Zl YyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDRfMyk7Cisr ICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHZlY19z dChycF92ZWMsMCxycCk7CisrICAgICAgcnAgKz0gMTU7CisrICAgICAgaXN0b3AgLT0gMTY7Cisr CisrICAgICAgLyogU2luY2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2Yg YXJyYXkgbXVzdAorKyAgICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxseQorKyAgICAgICAqLwor KyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAm IDB4ZmYpOworKyAgICAgIHJwKys7CisrICAgfQorKworKyAgIGlmKGlzdG9wID4gMCkKKysgICAg ICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQorKyAgICAgIHsKKysgICAgICAgICAq cnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsK KysgICAgICAgICBycCsrOworKyAgICAgIH0KKyt9CisrCisrdm9pZCBwbmdfcmVhZF9maWx0ZXJf cm93X2F2ZzRfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykK Kyt7CisrICAgY29uc3QgcG5nX2J5dGUgYnBwID0gNDsKKysKKysgICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBycF92ZWM7CisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOworKyAgIHZlY3Rv ciB1bnNpZ25lZCBjaGFyIHBwX3BhcnRfdmVjOworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJw X3BhcnRfdmVjOworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGF2Z192ZWM7CisrCisrICAgdnN4 X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKKysgICBycCAt PSBicHA7CisrICAgaWYoaXN0b3AgPj0gYnBwKQorKyAgICAgIGlzdG9wIC09IGJwcDsKKysKKysg ICBmb3IgKGkgPSAwOyBpIDwgYnBwOyBpKyspCisrICAgeworKyAgICAgICpycCA9IChwbmdfYnl0 ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgICgoaW50KSgqcHArKykgLyAyICkpICYgMHhmZik7 CisrCisrICAgICAgcnArKzsKKysgICB9CisrCisrICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJl cXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKKysgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxp Z25lZC4gU28gd2UgY2FsY3VsYXRlCisrICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCisr ICAgICovCisrICAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykKKysgICB7Cisr ICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAgKGludCkoKnBw KysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrCisrICAgICAgcnArKzsKKysgICB9Cisr CisrICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KKysgICB3aGlsZSggaXN0b3AgPj0g MTYgKQorKyAgIHsKKysgICAgICBmb3IoaT0wO2kgPCBicHAgOyBpKyspCisrICAgICAgeworKyAg ICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgICAgIChpbnQp KCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOworKworKyAgICAgICAgIHJwKys7Cisr ICAgICAgfQorKyAgICAgIHJwIC09IGJwcDsKKysgICAgICBwcCAtPSBicHA7CisrCisrICAgICAg dmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOworKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJw KTsKKysKKysgICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJP LFZTWF9MRUZUU0hJRlRFRDFfNCk7CisrICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92 ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQxXzQpOworKyAgICAgIGF2Z192ZWMgPSB2 ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKKysgICAgICBhdmdfdmVjID0gdmVjX3N1 YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19z cGxhdF91OCgxKSkpOworKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwor KworKyAgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNY X0xFRlRTSElGVEVEMl80KTsKKysgICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxW U1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDJfNCk7CisrICAgICAgYXZnX3ZlYyA9IHZlY19h dmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOworKyAgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2 Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0 X3U4KDEpKSk7CisrICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7CisrCisr ICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVG VFNISUZURUQzXzQpOworKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9D SEFSX1pFUk8sVlNYX05PVF9TSElGVEVEM180KTsKKysgICAgICBhdmdfdmVjID0gdmVjX2F2Zyhy cF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7CisrICAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3Zl YywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgo MSkpKTsKKysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKKysKKysgICAg ICB2ZWNfc3QocnBfdmVjLDAscnApOworKworKyAgICAgIHJwICs9IDE2OworKyAgICAgIHBwICs9 IDE2OworKyAgICAgIGlzdG9wIC09IDE2OworKyAgIH0KKysKKysgICBpZihpc3RvcCAgPiAwKQor KyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCisrICAgICAgeworKyAgICAg ICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgICAgIChpbnQpKCpw cCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOworKworKyAgICAgICAgIHJwKys7CisrICAg ICAgfQorK30KKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfYXZnM192c3gocG5nX3Jvd19p bmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQorK3sKKysgIGNvbnN0IHBuZ19ieXRl IGJwcCA9IDM7CisrCisrICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7CisrICB2ZWN0b3Ig dW5zaWduZWQgY2hhciBwcF92ZWM7CisrICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF9wYXJ0X3Zl YzsKKysgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3BhcnRfdmVjOworKyAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgYXZnX3ZlYzsKKysKKysgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZv LHJvdyxwcmV2X3JvdyxicHApCisrICBycCAtPSBicHA7CisrICBpZihpc3RvcCA+PSBicHApCisr ICAgICBpc3RvcCAtPSBicHA7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgYnBwOyBpKyspCisrICB7 CisrICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgICgoaW50KSgq cHArKykgLyAyICkpICYgMHhmZik7CisrCisrICAgICBycCsrOworKyAgfQorKworKyAgLyogQWx0 aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKKysgICAqIGJ1dCBp bnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKKysgICAqIHVuYWxpZ25lZCBw YXJ0IGFzIHVzdWFsLgorKyAgICovCisrICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsg aSsrKQorKyAgeworKyAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAg ICAoaW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKKysKKysgICAgIHJwKys7 CisrICB9CisrCisrICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLworKyAgd2hpbGUoIGlz dG9wID49IDE2ICkKKysgIHsKKysgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKKysgICAgIHsK KysgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgICAgKGlu dCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrCisrICAgICAgICBycCsrOwor KyAgICAgfQorKyAgICAgcnAgLT0gYnBwOworKyAgICAgcHAgLT0gYnBwOworKworKyAgICAgdmVj X2xkX3VuYWxpZ25lZChwcF92ZWMscHApOworKyAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwor KworKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hf TEVGVFNISUZURUQxXzMpOworKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNY X0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQxXzMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19hdmco cnBfcGFydF92ZWMscHBfcGFydF92ZWMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3Zl YywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgo MSkpKTsKKysgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOworKworKyAgICAg cnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZU RUQyXzMpOworKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVS TyxWU1hfTk9UX1NISUZURUQyXzMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92 ZWMscHBfcGFydF92ZWMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2Fu ZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKKysg ICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOworKworKyAgICAgcnBfcGFydF92 ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzMpOwor KyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9U X1NISUZURUQzXzMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFy dF92ZWMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9y KHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKKysgICAgIHJwX3Zl YyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOworKworKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNf cGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQ0XzMpOworKyAgICAgcHBf cGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQ0 XzMpOworKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwor KyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRf dmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKKysgICAgIHJwX3ZlYyA9IHZlY19h ZGQocnBfdmVjLGF2Z192ZWMpOworKworKyAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKKysKKysg ICAgIHJwICs9IDE1OworKyAgICAgcHAgKz0gMTU7CisrICAgICBpc3RvcCAtPSAxNjsKKysKKysg ICAgIC8qIFNpbmNlIDE2ICUgYnBwID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5 IG11c3QKKysgICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxseQorKyAgICAgICovCisrICAgICAq cnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgIChpbnQpKCpwcCsrICsgKihy cC1icHApKSAvIDIgKSAmIDB4ZmYpOworKyAgICAgcnArKzsKKysgIH0KKysKKysgIGlmKGlzdG9w ICA+IDApCisrICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQorKyAgICAgewor KyAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAgICAoaW50 KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKKysKKysgICAgICAgIHJwKys7Cisr ICAgICB9CisrfQorKworKy8qIEJ5dGV3aXNlIGMgPyB0IDogZS4gKi8KKysjZGVmaW5lIGlmX3Ro ZW5fZWxzZShjLHQsZSkgdmVjX3NlbChlLHQsYykKKysKKysjZGVmaW5lIHZzeF9wYWV0aF9wcm9j ZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkge1wKKysgICAgICBjID0gKihwcCAtIGJwcCk7 XAorKyAgICAgIGEgPSAqKHJwIC0gYnBwKTtcCisrICAgICAgYiA9ICpwcCsrO1wKKysgICAgICBw ID0gYiAtIGM7XAorKyAgICAgIHBjID0gYSAtIGM7XAorKyAgICAgIHBhID0gdnN4X2FicyhwKTtc CisrICAgICAgcGIgPSB2c3hfYWJzKHBjKTtcCisrICAgICAgcGMgPSB2c3hfYWJzKHAgKyBwYyk7 XAorKyAgICAgIGlmIChwYiA8IHBhKSBwYSA9IHBiLCBhID0gYjtcCisrICAgICAgaWYgKHBjIDwg cGEpIGEgPSBjO1wKKysgICAgICBhICs9ICpycDtcCisrICAgICAgKnJwKysgPSAocG5nX2J5dGUp YTtcCisrICAgICAgfQorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDRfdnN4KHBu Z19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAgcG5nX2NvbnN0X2J5dGVw IHByZXZfcm93KQorK3sKKysgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0OworKworKyAgIGludCBh LCBiLCBjLCBwYSwgcGIsIHBjLCBwOworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsK KysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7CisrICAgdmVjdG9yIHVuc2lnbmVkIHNo b3J0IGFfdmVjLGJfdmVjLGNfdmVjLG5lYXJlc3RfdmVjOworKyAgIHZlY3RvciBzaWduZWQgc2hv cnQgcGFfdmVjLHBiX3ZlYyxwY192ZWMsc21hbGxlc3RfdmVjOworKworKyAgIHZzeF9kZWNsYXJl X2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCisrICAgcnAgLT0gYnBwOwor KyAgIGlmKGlzdG9wID49IGJwcCkKKysgICAgICBpc3RvcCAtPSBicHA7CisrCisrICAgLyogUHJv Y2VzcyB0aGUgZmlyc3QgcGl4ZWwgaW4gdGhlIHJvdyBjb21wbGV0ZWx5ICh0aGlzIGlzIHRoZSBz YW1lIGFzICd1cCcKKysgICAgKiBiZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGNhbmRpZGF0ZSBw cmVkaWN0b3IgZm9yIHRoZSBmaXJzdCByb3cpLgorKyAgICAqLworKyAgIGZvcihpID0gMDsgaSA8 IGJwcCA7IGkrKykKKysgICB7CisrICAgICAgKnJwID0gKHBuZ19ieXRlKSggKnJwICsgKnBwKTsK KysgICAgICBycCsrOworKyAgICAgIHBwKys7CisrICAgfQorKworKyAgIGZvcihpID0gMDsgaSA8 IHVuYWxpZ25lZF90b3AgOyBpKyspCisrICAgeworKyAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJw LHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKKysgICB9CisrCisrICAgd2hpbGUoIGlzdG9wID49IDE2 KQorKyAgIHsKKysgICAgICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCisrICAgICAgeworKyAg ICAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKKysgICAg ICB9CisrCisrICAgICAgcnAgLT0gYnBwOworKyAgICAgIHBwIC09IGJwcDsKKysgICAgICBycF92 ZWMgPSB2ZWNfbGQoMCxycCk7CisrICAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOwor KworKyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFfNCksMSw0KTsKKysgICAgICBiX3ZlYyA9IHZz eF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9U X1NISUZURUQxXzQpLDEsNCk7CisrICAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNf cGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV80KSwxLDQpOwor KyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVj KTsKKysgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAs IGNfdmVjKTsKKysgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOworKyAgICAg IHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKKysgICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3Zl Yyk7CisrICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOworKyAgICAgIHNtYWxsZXN0X3Zl YyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKKysgICAgICBuZWFy ZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxz bWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgIGFfdmVjLAorKyAgICAgICAgICAgIGlmX3RoZW5f ZWxzZSgKKysgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKKysg ICAgICAgICAgICAgIGJfdmVjLAorKyAgICAgICAgICAgICAgY192ZWMKKysgICAgICAgICAgICAg ICkKKysgICAgICAgICAgICApOworKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hf c2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywxLDQpKSk7CisrCisrICAgICAgYV92ZWMgPSB2c3hf Y2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRT SElGVEVEMl80KSwyLDQpOworKyAgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDJfNCksMiw0KTsKKysg ICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFS X1pFUk8gLCBWU1hfTEVGVFNISUZURUQyXzQpLDIsNCk7CisrICAgICAgcGFfdmVjID0gKHZlY3Rv ciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOworKyAgICAgIHBiX3ZlYyA9ICh2 ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOworKyAgICAgIHBjX3Zl YyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7CisrICAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92 ZWMpOworKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKKysgICAgICBwY192ZWMgPSB2 ZWNfYWJzKHBjX3ZlYyk7CisrICAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZl Y19taW4ocGFfdmVjLHBiX3ZlYykpOworKyAgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxz ZSgKKysgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAg ICAgICAgYV92ZWMsCisrICAgICAgICAgICAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgICAg dmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgICAgYl92ZWMsCisr ICAgICAgICAgICAgICBjX3ZlYworKyAgICAgICAgICAgICAgKQorKyAgICAgICAgICAgICk7Cisr ICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3Rf dmVjLDIsNCkpKTsKKysKKysgICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJt KHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQzXzQpLDMsNCk7CisrICAg ICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9a RVJPICwgVlNYX05PVF9TSElGVEVEM180KSwzLDQpOworKyAgICAgIGNfdmVjID0gdnN4X2NoYXJf dG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRF RDNfNCksMyw0KTsKKysgICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1 YihiX3ZlYyxjX3ZlYyk7CisrICAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZl Y19zdWIoYV92ZWMgLCBjX3ZlYyk7CisrICAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJf dmVjKTsKKysgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7CisrICAgICAgcGJfdmVjID0g dmVjX2FicyhwYl92ZWMpOworKyAgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKKysgICAg ICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7 CisrICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgIHZlY19j bXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAgICAgICAgICBhX3ZlYywKKysgICAgICAg ICAgICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxs ZXN0X3ZlYyksCisrICAgICAgICAgICAgICBiX3ZlYywKKysgICAgICAgICAgICAgIGNfdmVjCisr ICAgICAgICAgICAgICApCisrICAgICAgICAgICAgKTsKKysgICAgICBycF92ZWMgPSB2ZWNfYWRk KHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMyw0KSkpOworKworKyAgICAg IHZlY19zdChycF92ZWMsMCxycCk7CisrCisrICAgICAgcnAgKz0gMTY7CisrICAgICAgcHAgKz0g MTY7CisrICAgICAgaXN0b3AgLT0gMTY7CisrICAgfQorKworKyAgIGlmKGlzdG9wID4gMCkKKysg ICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQorKyAgICAgIHsKKysgICAgICAg ICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCisrICAgICAgfQor K30KKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGgzX3ZzeChwbmdfcm93X2luZm9w IHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykK Kyt7CisrICBjb25zdCBwbmdfYnl0ZSBicHAgPSAzOworKworKyAgaW50IGEsIGIsIGMsIHBhLCBw YiwgcGMsIHA7CisrICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7CisrICB2ZWN0b3IgdW5z aWduZWQgY2hhciBwcF92ZWM7CisrICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgYV92ZWMsYl92ZWMs Y192ZWMsbmVhcmVzdF92ZWM7CisrICB2ZWN0b3Igc2lnbmVkIHNob3J0IHBhX3ZlYyxwYl92ZWMs cGNfdmVjLHNtYWxsZXN0X3ZlYzsKKysKKysgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19p bmZvLHJvdyxwcmV2X3JvdyxicHApCisrICBycCAtPSBicHA7CisrICBpZihpc3RvcCA+PSBicHAp CisrICAgICBpc3RvcCAtPSBicHA7CisrCisrICAvKiBQcm9jZXNzIHRoZSBmaXJzdCBwaXhlbCBp biB0aGUgcm93IGNvbXBsZXRlbHkgKHRoaXMgaXMgdGhlIHNhbWUgYXMgJ3VwJworKyAgICogYmVj YXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBjYW5kaWRhdGUgcHJlZGljdG9yIGZvciB0aGUgZmlyc3Qg cm93KS4KKysgICAqLworKyAgZm9yKGkgPSAwOyBpIDwgYnBwIDsgaSsrKQorKyAgeworKyAgICAg KnJwID0gKHBuZ19ieXRlKSggKnJwICsgKnBwKTsKKysgICAgIHJwKys7CisrICAgICBwcCsrOwor KyAgfQorKworKyAgZm9yKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcCA7IGkrKykKKysgIHsKKysg ICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKKysgIH0KKysK KysgIHdoaWxlKCBpc3RvcCA+PSAxNikKKysgIHsKKysgICAgIGZvcihpID0gMDsgaSA8IGJwcCA7 IGkrKykKKysgICAgIHsKKysgICAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBh LHBiLHBjLGJwcCkKKysgICAgIH0KKysKKysgICAgIHJwIC09IGJwcDsKKysgICAgIHBwIC09IGJw cDsKKysgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKKysgICAgIHZlY19sZF91bmFsaWduZWQo cHBfdmVjLHBwKTsKKysKKysgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0o cnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFfMyksMSwzKTsKKysgICAg IGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVS TyAsIFZTWF9OT1RfU0hJRlRFRDFfMyksMSwzKTsKKysgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9f c2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFf MyksMSwzKTsKKysgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJf dmVjLGNfdmVjKTsKKysgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3Vi KGFfdmVjICwgY192ZWMpOworKyAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsK KysgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKKysgICAgIHBiX3ZlYyA9IHZlY19hYnMo cGJfdmVjKTsKKysgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKKysgICAgIHNtYWxsZXN0 X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKKysgICAgIG5l YXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMs c21hbGxlc3RfdmVjKSwKKysgICAgICAgICAgIGFfdmVjLAorKyAgICAgICAgICAgaWZfdGhlbl9l bHNlKAorKyAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAg ICAgICAgICAgIGJfdmVjLAorKyAgICAgICAgICAgICBjX3ZlYworKyAgICAgICAgICAgICApCisr ICAgICAgICAgICApOworKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90 b19jaGFyKG5lYXJlc3RfdmVjLDEsMykpKTsKKysKKysgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9f c2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJf MyksMiwzKTsKKysgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVj ICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDJfMyksMiwzKTsKKysgICAgIGNfdmVj ID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZT WF9MRUZUU0hJRlRFRDJfMyksMiwzKTsKKysgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNo b3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKKysgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVk IHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOworKyAgICAgcGNfdmVjID0gdmVjX2FkZChw YV92ZWMscGJfdmVjKTsKKysgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKKysgICAgIHBi X3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKKysgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsK KysgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92 ZWMpKTsKKysgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgIHZl Y19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAgICAgICAgIGFfdmVjLAorKyAgICAg ICAgICAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxs ZXN0X3ZlYyksCisrICAgICAgICAgICAgIGJfdmVjLAorKyAgICAgICAgICAgICBjX3ZlYworKyAg ICAgICAgICAgICApCisrICAgICAgICAgICApOworKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92 ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDIsMykpKTsKKysKKysgICAgIGFfdmVj ID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZT WF9MRUZUU0hJRlRFRDNfMyksMywzKTsKKysgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQo dmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDNfMyksMywz KTsKKysgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfMyksMywzKTsKKysgICAgIHBhX3ZlYyA9ICh2 ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKKysgICAgIHBiX3ZlYyA9 ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOworKyAgICAgcGNf dmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKKysgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFf dmVjKTsKKysgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKKysgICAgIHBjX3ZlYyA9IHZl Y19hYnMocGNfdmVjKTsKKysgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNf bWluKHBhX3ZlYyxwYl92ZWMpKTsKKysgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgK KysgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAgICAgICAg IGFfdmVjLAorKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgICB2ZWNfY21w ZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICAgIGJfdmVjLAorKyAgICAgICAg ICAgICBjX3ZlYworKyAgICAgICAgICAgICApCisrICAgICAgICAgICApOworKyAgICAgcnBfdmVj ID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDMsMykpKTsK KysKKysgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDRfMyksNCwzKTsKKysgICAgIGJfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1Rf U0hJRlRFRDRfMyksNCwzKTsKKysgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDRfMyksNCwzKTsKKysg ICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsK KysgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192 ZWMpOworKyAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKKysgICAgIHBhX3Zl YyA9IHZlY19hYnMocGFfdmVjKTsKKysgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKKysg ICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKKysgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19t aW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKKysgICAgIG5lYXJlc3RfdmVjID0g IGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVj KSwKKysgICAgICAgICAgIGFfdmVjLAorKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAorKyAgICAg ICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICAgIGJf dmVjLAorKyAgICAgICAgICAgICBjX3ZlYworKyAgICAgICAgICAgICApCisrICAgICAgICAgICAp OworKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJl c3RfdmVjLDQsMykpKTsKKysKKysgICAgIHZlY19zdChycF92ZWMsMCxycCk7CisrCisrICAgICBy cCArPSAxNTsKKysgICAgIHBwICs9IDE1OworKyAgICAgaXN0b3AgLT0gMTY7CisrCisrICAgICAv KiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBvZiBhcnJheSBtdXN0 CisrICAgICAgKiBiZSBwcm9jZWVkZWQgbWFudWFsbHkKKysgICAgICAqLworKyAgICAgdnN4X3Bh ZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQorKyAgfQorKworKyAgaWYoaXN0 b3AgPiAwKQorKyAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKKysgICAgIHsK KysgICAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKKysg ICAgIH0KKyt9CisrCisrI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwICovCisrI2Vu ZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9JTVBMRU1FTlRBVElPTiA9PSAxIChpbnRyaW5zaWNzKSAq LworKyNlbmRpZiAvKiBSRUFEICovCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVs bAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJw bmcvcG93ZXJwYy9wb3dlcnBjX2luaXQuYworQEAgLTAsMCArMSwxMjUgQEAKKysKKysvKiBwb3dl cnBjX2luaXQuYyAtIFBPV0VSUEMgb3B0aW1pc2VkIGZpbHRlciBmdW5jdGlvbnMKKysgKgorKyAq IENvcHlyaWdodCAoYykgMjAxNyBHbGVubiBSYW5kZXJzLVBlaHJzb24KKysgKiBXcml0dGVuIGJ5 IFZhZGltIEJhcmtvdiwgMjAxNy4KKysgKiBMYXN0IGNoYW5nZWQgaW4gbGlicG5nIDEuNi4yOSBb TWFyY2ggMTYsIDIwMTddCisrICoKKysgKiBUaGlzIGNvZGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IGxpYnBuZyBsaWNlbnNlLgorKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQg dXNlLCBzZWUgdGhlIGRpc2NsYWltZXIKKysgKiBhbmQgbGljZW5zZSBpbiBwbmcuaAorKyAqLwor Ky8qIEJlbG93LCBhZnRlciBjaGVja2luZyBfX2xpbnV4X18sIHZhcmlvdXMgbm9uLUM5MCBQT1NJ WCAxMDAzLjEgZnVuY3Rpb25zIGFyZQorKyAqIGNhbGxlZC4KKysgKi8KKysjZGVmaW5lIF9QT1NJ WF9TT1VSQ0UgMQorKworKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlICIuLi9wbmdwcml2 LmgiCisrCisrI2lmZGVmIFBOR19SRUFEX1NVUFBPUlRFRAorKworKyNpZiBQTkdfUE9XRVJQQ19W U1hfT1BUID4gMAorKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQ0hFQ0tfU1VQUE9SVEVEIC8qIERv IHJ1bi10aW1lIGNoZWNrcyAqLworKy8qIFdBUk5JTkc6IGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVu ZGVkIHRoYXQgeW91IGRvIG5vdCBidWlsZCBsaWJwbmcgd2l0aAorKyAqIHJ1bi10aW1lIGNoZWNr cyBmb3IgQ1BVIGZlYXR1cmVzIGlmIGF0IGFsbCBwb3NzaWJsZS4gIEluIHRoZSBjYXNlIG9mIHRo ZSBQb3dlclBDCisrICogVlNYIGluc3RydWN0aW9ucyB0aGVyZSBpcyBubyBwcm9jZXNzb3Itc3Bl Y2lmaWMgd2F5IG9mIGRldGVjdGluZyB0aGUKKysgKiBwcmVzZW5jZSBvZiB0aGUgcmVxdWlyZWQg c3VwcG9ydCwgdGhlcmVmb3JlIHJ1bi10aW1lIGRldGVjdGlvbiBpcyBleHRyZW1lbHkKKysgKiBP UyBzcGVjaWZpYy4KKysgKgorKyAqIFlvdSBtYXkgc2V0IHRoZSBtYWNybyBQTkdfUE9XRVJQQ19W U1hfRklMRSB0byB0aGUgZmlsZSBuYW1lIG9mIGZpbGUgY29udGFpbmluZworKyAqIGEgZnJhZ21l bnQgb2YgQyBzb3VyY2UgY29kZSB3aGljaCBkZWZpbmVzIHRoZSBwbmdfaGF2ZV92c3ggZnVuY3Rp b24uICBUaGVyZQorKyAqIGFyZSBhIG51bWJlciBvZiBpbXBsZW1lbnRhdGlvbnMgaW4gY29udHJp Yi9wb3dlcnBjLXZzeCwgYnV0IHRoZSBvbmx5IG9uZSB0aGF0CisrICogaGFzIHBhcnRpYWwgc3Vw cG9ydCBpcyBjb250cmliL3Bvd2VycGMtdnN4L2xpbnV4LmMgLSBhIGdlbmVyaWMgTGludXgKKysg KiBpbXBsZW1lbnRhdGlvbiB3aGljaCByZWFkcyAvcHJvYy9jcHVmaW5vLgorKyAqLworKyNpZm5k ZWYgUE5HX1BPV0VSUENfVlNYX0ZJTEUKKysjICBpZmRlZiBfX2xpbnV4X18KKysjICAgICBkZWZp bmUgIFBOR19QT1dFUlBDX1ZTWF9GSUxFICJjb250cmliL3Bvd2VycGMtdnN4L2xpbnV4X2F1eC5j IgorKyMgIGVuZGlmCisrI2VuZGlmCisrCisrI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9GSUxFCisr CisrI2luY2x1ZGUgPHNpZ25hbC5oPiAvKiBmb3Igc2lnX2F0b21pY190ICovCisrc3RhdGljIGlu dCBwbmdfaGF2ZV92c3gocG5nX3N0cnVjdHAgcG5nX3B0cik7CisrI2luY2x1ZGUgUE5HX1BPV0VS UENfVlNYX0ZJTEUKKysKKysjZWxzZSAgLyogUE5HX1BPV0VSUENfVlNYX0ZJTEUgKi8KKysjICBl cnJvciAiUE5HX1BPV0VSUENfVlNYX0ZJTEUgdW5kZWZpbmVkOiBubyBzdXBwb3J0IGZvciBydW4t dGltZSBQT1dFUlBDIFZTWCBjaGVja3MiCisrI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9GSUxF ICovCisrI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgKi8KKysKKyt2 b2lkCisrcG5nX2luaXRfZmlsdGVyX2Z1bmN0aW9uc192c3gocG5nX3N0cnVjdHAgcHAsIHVuc2ln bmVkIGludCBicHApCisreworKyAgIC8qIFRoZSBzd2l0Y2ggc3RhdGVtZW50IGlzIGNvbXBpbGVk IGluIGZvciBQT1dFUlBDX1ZTWF9BUEksIHRoZSBjYWxsIHRvCisrICAgICogcG5nX2hhdmVfdnN4 IGlzIGNvbXBpbGVkIGluIGZvciBQT1dFUlBDX1ZTWF9DSEVDSy4gSWYgYm90aCBhcmUgZGVmaW5l ZAorKyAgICAqIHRoZSBjaGVjayBpcyBvbmx5IHBlcmZvcm1lZCBpZiB0aGUgQVBJIGhhcyBub3Qg c2V0IHRoZSBQb3dlclBDIG9wdGlvbiBvbgorKyAgICAqIG9yIG9mZiBleHBsaWNpdGx5LiBJbiB0 aGlzIGNhc2UgdGhlIGNoZWNrIGNvbnRyb2xzIHdoYXQgaGFwcGVucy4KKysgICAgKi8KKysKKysj aWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQKKysgICBzd2l0Y2ggKChwcC0+b3B0 aW9ucyA+PiBQTkdfUE9XRVJQQ19WU1gpICYgMykKKysgICB7CisrICAgICAgY2FzZSBQTkdfT1BU SU9OX1VOU0VUOgorKyAgICAgICAgIC8qIEFsbG93IHRoZSBydW4tdGltZSBjaGVjayB0byBleGVj dXRlIGlmIGl0IGhhcyBiZWVuIGVuYWJsZWQgLQorKyAgICAgICAgICAqIHRodXMgYm90aCBBUEkg YW5kIENIRUNLIGNhbiBiZSB0dXJuZWQgb24uICBJZiBpdCBpc24ndCBzdXBwb3J0ZWQKKysgICAg ICAgICAgKiB0aGlzIGNhc2Ugd2lsbCBmYWxsIHRocm91Z2ggdG8gdGhlICdkZWZhdWx0JyBiZWxv dywgd2hpY2gganVzdAorKyAgICAgICAgICAqIHJldHVybnMuCisrICAgICAgICAgICovCisrI2Vu ZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVEICovCisrI2lmZGVmIFBOR19QT1dF UlBDX1ZTWF9DSEVDS19TVVBQT1JURUQKKysgICAgICAgICB7CisrICAgICAgICAgICAgc3RhdGlj IHZvbGF0aWxlIHNpZ19hdG9taWNfdCBub192c3ggPSAtMTsgLyogbm90IGNoZWNrZWQgKi8KKysK KysgICAgICAgICAgICBpZiAobm9fdnN4IDwgMCkKKysgICAgICAgICAgICAgICBub192c3ggPSAh cG5nX2hhdmVfdnN4KHBwKTsKKysKKysgICAgICAgICAgICBpZiAobm9fdnN4KQorKyAgICAgICAg ICAgICAgIHJldHVybjsKKysgICAgICAgICB9CisrI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9BUElf U1VQUE9SVEVECisrICAgICAgICAgYnJlYWs7CisrI2VuZGlmCisrI2VuZGlmIC8qIFBOR19QT1dF UlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgKi8KKysKKysjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQ SV9TVVBQT1JURUQKKysgICAgICBkZWZhdWx0OiAvKiBPRkYgb3IgSU5WQUxJRCAqLworKyAgICAg ICAgIHJldHVybjsKKysKKysgICAgICBjYXNlIFBOR19PUFRJT05fT046CisrICAgICAgICAgLyog T3B0aW9uIHR1cm5lZCBvbiAqLworKyAgICAgICAgIGJyZWFrOworKyAgIH0KKysjZW5kaWYKKysK KysgICAvKiBJTVBPUlRBTlQ6IGFueSBuZXcgaW50ZXJuYWwgZnVuY3Rpb25zIHVzZWQgaGVyZSBt dXN0IGJlIGRlY2xhcmVkIHVzaW5nCisrICAgICogUE5HX0lOVEVSTkFMX0ZVTkNUSU9OIGluIC4u L3BuZ3ByaXYuaC4gIFRoaXMgaXMgcmVxdWlyZWQgc28gdGhhdCB0aGUKKysgICAgKiAncHJlZml4 JyBvcHRpb24gdG8gY29uZmlndXJlIHdvcmtzOgorKyAgICAqCisrICAgICogICAgLi9jb25maWd1 cmUgLS13aXRoLWxpYnBuZy1wcmVmaXg9Zm9vYmFyXworKyAgICAqCisrICAgICogVmVyaWZ5IHlv dSBoYXZlIGdvdCB0aGlzIHJpZ2h0IGJ5IHJ1bm5pbmcgdGhlIGFib3ZlIGNvbW1hbmQsIGRvaW5n IGEgYnVpbGQKKysgICAgKiBhbmQgZXhhbWluaW5nIHBuZ3ByZWZpeC5oOyBpdCBtdXN0IGNvbnRh aW4gYSAjZGVmaW5lIGZvciBldmVyeSBleHRlcm5hbAorKyAgICAqIGZ1bmN0aW9uIHlvdSBhZGQu ICAoTm90aWNlIHRoYXQgdGhpcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgZm9yIHRoZQorKyAgICAq IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLikKKysgICAgKi8KKysgICBwcC0+cmVhZF9maWx0ZXJb UE5HX0ZJTFRFUl9WQUxVRV9VUC0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfdXBfdnN4OworKwor KyAgIGlmIChicHAgPT0gMykKKysgICB7CisrICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxU RVJfVkFMVUVfU1VCLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWIzX3ZzeDsKKysgICAgICBw cC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9BVkctMV0gPSBwbmdfcmVhZF9maWx0ZXJf cm93X2F2ZzNfdnN4OworKyAgICAgIHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX1BB RVRILTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDNfdnN4OworKyAgIH0KKysKKysgICBl bHNlIGlmIChicHAgPT0gNCkKKysgICB7CisrICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxU RVJfVkFMVUVfU1VCLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWI0X3ZzeDsKKysgICAgICBw cC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9BVkctMV0gPSBwbmdfcmVhZF9maWx0ZXJf cm93X2F2ZzRfdnN4OworKyAgICAgIHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX1BB RVRILTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDRfdnN4OworKyAgIH0KKyt9CisrI2Vu ZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwICovCisrI2VuZGlmIC8qIFJFQUQgKi8KKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4 X3N5c2NhbGxfc3VwcG9ydC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorQEAgLTM5MTQsNyArMzkx NCw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKKyAgICAgICBMU1NfUkVHKDIsIGJ1Zik7Cisg ICAgICAgTFNTX0JPRFkodm9pZCosIG1tYXAyLCAiMCIoX19yMikpOworICAgICB9CistI2Vsc2UK KysjZWxpZiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAvKiBwcGM2NCBkb2Vzbid0IGhhdmUgbW1h cDIgKi8KKyAgICAgI2RlZmluZSBfX05SX19tbWFwMiBfX05SX21tYXAyCisgICAgIExTU19JTkxJ TkUgX3N5c2NhbGw2KHZvaWQqLCBfbW1hcDIsICAgICAgICAgICAgdm9pZCosIHMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCwgICAgICAgICAgICAgICAgICAgbCwgaW50LCAgICAg ICAgICAgICAgIHAsCitAQCAtNDA0NSw3ICs0MDQ1LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMg eworICAgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBkZWZpbmVkKF9fQVJNX0FSQ0hfM19f KSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykgfHwgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikgfHwg ICAgICAgICAgICAgICAgICAgXAorLSAgICAgIGRlZmluZWQoX19QUENfXykgfHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgIChkZWZp bmVkKF9fUFBDX18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSB8fCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKGRlZmluZWQo X19zMzkwX18pICYmICFkZWZpbmVkKF9fczM5MHhfXykpCisgICAgIC8qIE9uIHRoZXNlIGFyY2hp dGVjdHVyZXMsIGltcGxlbWVudCBtbWFwKCkgd2l0aCBtbWFwMigpLiAqLworICAgICBMU1NfSU5M SU5FIHZvaWQqIExTU19OQU1FKG1tYXApKHZvaWQgKnMsIHNpemVfdCBsLCBpbnQgcCwgaW50IGYs IGludCBkLAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ub2RlL25vZGUucHkKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvbm9kZS9ub2RlLnB5CitAQCAtMTAsMTEgKzEwLDEyIEBAIGltcG9ydCBzeXMKKyAK KyAKKyBkZWYgR2V0QmluYXJ5UGF0aCgpOgorLSAgcmV0dXJuIG9zX3BhdGguam9pbihvc19wYXRo LmRpcm5hbWUoX19maWxlX18pLCAqeworLSAgICAnRGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3 aW4teDY0JywgJ2JpbicsICdub2RlJyksCistICAgICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1s aW51eC14NjQnLCAnYmluJywgJ25vZGUnKSwKKy0gICAgJ1dpbmRvd3MnOiAoJ3dpbicsICdub2Rl LmV4ZScpLAorLSAgfVtwbGF0Zm9ybS5zeXN0ZW0oKV0pCisrICByZXR1cm4gIi91c3IvYmluL25v ZGUiCisrICAjcmV0dXJuIG9zX3BhdGguam9pbihvc19wYXRoLmRpcm5hbWUoX19maWxlX18pLCAq eworKyAgIyAgJ0Rhcndpbic6ICgnbWFjJywgJ25vZGUtZGFyd2luLXg2NCcsICdiaW4nLCAnbm9k ZScpLAorKyAgIyAgJ0xpbnV4JzogKCdsaW51eCcsICdub2RlLWxpbnV4LXg2NCcsICdiaW4nLCAn bm9kZScpLAorKyAgIyAgJ1dpbmRvd3MnOiAoJ3dpbicsICdub2RlLmV4ZScpLAorKyAgI31bcGxh dGZvcm0uc3lzdGVtKCldKQorIAorIAorIGRlZiBSdW5Ob2RlKGNtZF9wYXJ0cywgc3Rkb3V0PU5v bmUpOgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9w ZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdl X2FsbG9jYXRvcl9jb25zdGFudHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0 aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAorQEAgLTExLDcgKzExLDcg QEAKKyAKKyBuYW1lc3BhY2UgcGRmaXVtIHsKKyBuYW1lc3BhY2UgYmFzZSB7CistI2lmIGRlZmlu ZWQoT1NfV0lOKQorKyNpZiBkZWZpbmVkKE9TX1dJTikgfHwgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NCkKKyBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNo aWZ0ID0gMTY7ICAvLyA2NEtCCisgI2VsaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQor IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQg PSAxNDsgIC8vIDE2S0IKK0BAIC0yNyw2ICsyNywxMCBAQCBzdGF0aWMgY29uc3RleHByIHNpemVf dCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eUJhc2VNYXNrID0KKyAKKyAjaWYgZGVmaW5lZChf TUlQU19BUkNIX0xPT05HU09OKQorIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdl U2l6ZSA9IDE2Mzg0OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCisrLy8gVE9ETzog bW9kZXJuIHBwYzY0IGNhbiBkbyA0ayBhbmQgNjRrIHBhZ2Ugc2l6ZXMKKysvLyBmb3Igbm93LCA2 NGsgaXMgYXNzdW1lZAorK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9 IDY1NTM2OworICNlbHNlCisgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXpl ID0gNDA5NjsKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5oCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25zdGFudHMuaAor QEAgLTMzLDYgKzMzLDggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVja2V0U2hpZnQgPSAoa0Fs bG9jYXRpb25HcmFudWxhcml0eSA9PSA4KSA/IDMgOiAyOworIC8vIHVwIGFnYWluc3QgdGhlIGVu ZCBvZiBhIHN5c3RlbSBwYWdlLgorICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCisg c3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTY7ICAvLyA2NEtCCisr I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKytzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0 aXRpb25QYWdlU2hpZnQgPSAxODsgIC8vIDI1NktCCisgI2Vsc2UKKyBzdGF0aWMgY29uc3Qgc2l6 ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNDsgIC8vIDE2S0IKKyAjZW5kaWYKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL2FtYWxnYW1h dGlvbi9zcWxpdGUzLmMKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvc3FsaXRlL2FtYWxnYW1hdGlvbi9zcWxpdGUzLmMKK0BAIC0xMzkzNyw3ICsxMzkz Nyw4IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7CisgIyBpZiBkZWZpbmVkKGkzODYpICAg ICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgICAgXAorICAg ICAgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9N X1g2NCkgIHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fQVJN KSAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCistICAgICBkZWZpbmVkKF9fYXJtX18p ICB8fCBkZWZpbmVkKF9NX0FSTTY0KQorKyAgICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVmaW5l ZChfTV9BUk02NCkgICB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIFwKKysgICAgIChfX0JZ VEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKKyAjICAgZGVmaW5lIFNRTElU RV9CWVRFT1JERVIgICAgMTIzNAorICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8fCBkZWZpbmVk KF9fcHBjX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMv c3FsaXRlSW50LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKK0BAIC04MzMsNyArODMzLDggQEAgdHlw ZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKKyAjIGlmIGRlZmluZWQoaTM4NikgICAgIHx8IGRlZmlu ZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisgICAgICBkZWZpbmVk KF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSAgfHwg ICAgXAorICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAgICB8fCBk ZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKKy0gICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmlu ZWQoX01fQVJNNjQpCisrICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVkKF9NX0FSTTY0 KSAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAorKyAgICAgKF9fQllURV9PUkRFUl9f ID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQorICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRF UiAgICAxMjM0CisgIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQoX19wcGNfXykK KyAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQorLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh cHR1cmUvZGlmZmVyX2Jsb2NrLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxv Y2suY2MKK0BAIC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWlu dDhfdCogaW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKKyAgIHN0YXRpYyBib29sICgq ZGlmZl9wcm9jKShjb25zdCB1aW50OF90KiwgY29uc3QgdWludDhfdCopID0gbnVsbHB0cjsKKyAK KyAgIGlmICghZGlmZl9wcm9jKSB7CistI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlM WSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWSkKKy0gICAgLy8gRm9yIEFSTSBh bmQgTUlQUyBwcm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKy0gICAgLy8gVE9ETyho Y2xhbSk6IEltcGxlbWVudCBhIE5FT04gdmVyc2lvbi4KKy0gICAgZGlmZl9wcm9jID0gJlZlY3Rv ckRpZmZlcmVuY2VfQzsKKy0jZWxzZQorKyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1J TFkpCisgICAgIGJvb2wgaGF2ZV9zc2UyID0gV2ViUnRjX0dldENQVUluZm8oa1NTRTIpICE9IDA7 CisgICAgIC8vIEZvciB4ODYgcHJvY2Vzc29ycywgY2hlY2sgaWYgU1NFMiBpcyBzdXBwb3J0ZWQu CisgICAgIGlmIChoYXZlX3NzZTIgJiYga0Jsb2NrU2l6ZSA9PSAzMikgeworQEAgLTQ0LDYgKzQw LDEwIEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90KiBpbWFnZTEsIGNvbnN0 IHVpbnQ4X3QqIGltYWdlMikgeworICAgICB9IGVsc2UgeworICAgICAgIGRpZmZfcHJvYyA9ICZW ZWN0b3JEaWZmZXJlbmNlX0M7CisgICAgIH0KKysjZWxzZQorKyAgICAvLyBGb3Igb3RoZXIgcHJv Y2Vzc29ycywgYWx3YXlzIHVzZSBDIHZlcnNpb24uCisrICAgIC8vIFRPRE8oaGNsYW0pOiBJbXBs ZW1lbnQgYSBORU9OIHZlcnNpb24uCisrICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNl X0M7CisgI2VuZGlmCisgICB9CisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9z eXN0ZW0vYXJjaC5oCitAQCAtNDcsNiArNDcsMTggQEAKKyAjZWxpZiBkZWZpbmVkKF9fcG5hY2xf XykKKyAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJ VFRMRV9FTkRJQU4KKysjZWxpZiBkZWZpbmVkKF9fUFBDX18pCisrI2RlZmluZSBXRUJSVENfQVJD SF9QUENfRkFNSUxZCisrI2lmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElB Tl9fCisrI2RlZmluZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCisrI2Vsc2UKKysjZGVmaW5l IFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX0xQNjRfXykK KysjZGVmaW5lIFdFQlJUQ19BUkNIXzY0X0JJVFMKKysjZWxzZQorKyNkZWZpbmUgV0VCUlRDX0FS Q0hfMzJfQklUUworKyNlbmRpZgorICNlbHNlCisgI2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBm b3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gdHlwZWRlZnMuaAorICNlbmRpZgorLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgorQEAgLTU0NCw2ICs1NDQsMTIgQEAgY29u ZmlnKCJ0b29sY2hhaW4iKSB7CisgICAgIH0KKyAgICAgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJs aXR0bGUiKSB7CisgICAgICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfTEUiIF0K KysgICAgICAgIGNmbGFncyArPSBbCisrICAgICAgICAjIEVuYWJsZSB1c2FnZSBvZiBBbHRpVmVj LCBWU1gsIGFuZCBvdGhlciBQT1dFUjggYW5kIGhpZ2hlciBmZWF0dXJlcworKyAgICAgICAgIi1t Y3B1PXBvd2VyOCIsCisrICAgICAgICAiLW1hbHRpdmVjIiwKKysgICAgICAgICItbXZzeCIsCisr ICAgICAgXQorICAgICB9IGVsc2UgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWciKSB7CisgICAg ICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfQkUiIF0KKyAgICAgICBpZiAoY3Vy cmVudF9vcyA9PSAiYWl4IikgeworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS92OC90ZXN0L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3Y4L3Rlc3QvQlVJTEQuZ24KK0BAIC0zMSw3ICszMSw3IEBAIGdyb3VwKCJnbl9hbGwiKSB7Cisg ICAgIGRlcHMgKz0gWworICAgICAgICJjY3Rlc3Q6Y2N0ZXN0IiwKKyAgICAgICAiY2N0ZXN0Omdl bmVyYXRlLWJ5dGVjb2RlLWV4cGVjdGF0aW9ucyIsCistICAgICAgInVuaXR0ZXN0czp1bml0dGVz dHMiLAorKyAgICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisgICAgIF0KKyAgIH0KKyB9CitA QCAtODAsOSArODAsOSBAQCBncm91cCgidjhfYm90X2RlZmF1bHQiKSB7CisgICAgICJtanN1bml0 OnY4X21qc3VuaXQiLAorICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKKyAgICAgInByZXBh cnNlcjp2OF9wcmVwYXJzZXIiLAorLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisrICAgICMi dW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisgICAgICJ3YXNtLWpzOnY4X3dhc21fanMiLAorLSAgICAi d2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCisrICAgICMid2FzbS1zcGVjLXRl c3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCisgICAgICJ3ZWJraXQ6djhfd2Via2l0IiwKKyAgIF0K KyB9CitAQCAtMTAwLDkgKzEwMCw5IEBAIGdyb3VwKCJ2OF9kZWZhdWx0IikgeworICAgICAibWpz dW5pdDp2OF9tanN1bml0IiwKKyAgICAgIm1rZ3Jva2R1bXA6bWtncm9rZHVtcCIsCisgICAgICJw cmVwYXJzZXI6djhfcHJlcGFyc2VyIiwKKy0gICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAorLSAg ICAid2FzbS1qczp2OF93YXNtX2pzIiwKKy0gICAgIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3Nw ZWNfdGVzdHMiLAorKyAgICAjInVuaXR0ZXN0czp1bml0dGVzdHMiLAorKyAgICAjIndhc20tanM6 djhfd2FzbV9qcyIsCisrICAgICMid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIs CisgICBdCisgfQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9t aXVtLXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hyb21pdW0t cHBjNjQtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZGYwMTRkOGI1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEt Y2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaApAQCAtMCwwICsxLDE0MSBAQAorVGhpcyBpbmNsdWRl cyBhZGRpdGlvbmFsIGJ1aWxkIGZpeGVzIGZvciB0aGUgbXVzbCBsaWJjLgorCistLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21w X21hY3Jvcy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCitAQCAtMTEsMTIgKzExLDE0IEBACisgLy8g QWxsIHg4Nl82NCBidWlsZHMgdXNlIGEgbmV3IGVub3VnaCBiaW9uaWMgdG8gaGF2ZSBzeXMvdXNl ci5oLgorICNpZiAhZGVmaW5lZChfX0JJT05JQ19fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisg I2lmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9ub25zZmlfXykKKysjaWYgIWRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPHN5cy91c2VyLmg+ CisgI2VuZGlmCisrI2VuZGlmCisgI2lmIGRlZmluZWQoX19taXBzX18pCisgLy8gc3lzL3VzZXIu aCBpbiBlZ2xpYmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCisgI2luY2x1ZGUgPHN0ZGRlZi5o PgorLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pICYmIGRlZmluZWQoX19HTElCQ19fKQorIC8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qg b24gcHBjNjQKKyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7CisgI2VuZGlmCitA QCAtMzYxLDExICszNjMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsK KyAjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0CisgI2VuZGlmCisgCistI2Rl ZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5n cHJbX3JlZ10pCisrI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKChzdHJ1Y3QgcHRf cmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPmdwcltfcmVnXSkKKyAKKyAjZGVmaW5l IFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisgI2RlZmluZSBTRUND T01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKKy0jZGVmaW5lIFNFQ0NPTVBf SVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKKysjZGVmaW5lIFNFQ0NPTVBf SVAoX2N0eCkgKChzdHJ1Y3QgcHRfcmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPm5p cAorICNkZWZpbmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQorICNk ZWZpbmUgU0VDQ09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQorICNkZWZpbmUg U0VDQ09NUF9QQVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwu Y2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi9zeXNjYWxsLmNjCitAQCAtNDk3LDkgKzQ5Nyw5IEBAIHZvaWQgU3lzY2FsbDo6 UHV0VmFsdWVJblVjb250ZXh0KGludHB0cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkgewor ICAgLy8gU2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNldCBlcnJvciByZWdp c3RlciAoY3IwLlNPKQorICAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3ZhbCA+PSAtNDA5NSkg eworICAgICByZXRfdmFsID0gLXJldF92YWw7CistICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+ Y2NyIHw9ICgxIDw8IDI4KTsKKysgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRl eHQucmVncyktPmNjciB8PSAoMSA8PCAyOCk7CisgICB9IGVsc2UgeworLSAgICBjdHgtPnVjX21j b250ZXh0LnJlZ3MtPmNjciAmPSB+KDEgPDwgMjgpOworKyAgICAoKHN0cnVjdCBwdF9yZWdzICop Y3R4LT51Y19tY29udGV4dC5yZWdzKS0+Y2NyICY9IH4oMSA8PCAyOCk7CisgICB9CisgI2VuZGlm CisgICBTRUNDT01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJzZWls LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i YXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYworQEAgLTIwLDcgKzIwLDcgQEAKKyAj aW5jbHVkZSA8aW50cmluLmg+CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19wb3dlcnBjX18p IHx8IGRlZmluZWQoX19wcGNfXykKKysjaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmlu ZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxzeXMvcGxhdGZv cm0vcHBjLmg+CisgI2VuZGlmCisgCitAQCAtNTMsNyArNTMsNyBAQCBkb3VibGUgVW5zY2FsZWRD eWNsZUNsb2NrOjpGcmVxdWVuY3koKSB7CisgICByZXR1cm4gYmFzZV9pbnRlcm5hbDo6Tm9taW5h bENQVUZyZXF1ZW5jeSgpOworIH0KKyAKKy0jZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBk ZWZpbmVkKF9fcHBjX18pCisrI2VsaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQo X19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKQorIAorIGludDY0X3QgVW5zY2FsZWRDeWNs ZUNsb2NrOjpOb3coKSB7CisgICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7CistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz bC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy bmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCitAQCAtNDYsNyArNDYsNyBAQAorIAorIC8vIFRoZSBm b2xsb3dpbmcgcGxhdGZvcm1zIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBoYXJkd2FyZSBj b3VudGVyLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKy0gIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wcGNfXykgfHwgXAorKyAgKChkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVk KF9fcHBjX18pKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IFwKKyAgIGRlZmluZWQoX01fSVg4 NikgfHwgZGVmaW5lZChfTV9YNjQpCisgI2RlZmluZSBBQlNMX0hBVkVfVU5TQ0FMRURfQ1lDTEVD TE9DS19JTVBMRU1FTlRBVElPTiAxCisgI2Vsc2UKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK0BAIC0yNzMsNiArMjcz LDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQp IGNvbnN0IHsKKyAKKyAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgCisrI2luY2x1ZGUg PGFzbS9lbGYuaD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworIHVpbnRwdHJfdCBUaHJl YWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7CisgICAgIHJldHVybiBtY29u dGV4dC5ncF9yZWdzW1BUX05JUF07CisgfQorQEAgLTI5MCw5ICsyOTMsOSBAQCB2b2lkIFRocmVh ZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgeworICAgICBv dXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKyAgICAgCisgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCistICAg ICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsKKysg ICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJm1jb250ZXh0 LmZwX3JlZ3MpW2ldOworIAorLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5m cF9yZWdzW05GUFJFRy0xXTsKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1aW50NjRf dCAqKSZtY29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOworIAorICAgICBmb3IgKGludCBp ID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorICAgICAgICAg b3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitAQCAt MjU3LDYgKzI1Nyw5IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0Nv bnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKKyAKKyAjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgCisrI2luY2x1ZGUgPGFzbS9lbGYuaD4KKysjaW5jbHVkZSA8YXNt L3B0cmFjZS5oPgorKworIHVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVy KGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07CisgfQorQEAgLTI4MCw5ICsyODMsOSBAQCB2 b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNv bnN0IHVjb250ZXh0X3QqIHVjLAorICAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9y ZWdzW1BUX0NUUl07CisgICAgIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5H U0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQorLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZw cmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW2ldOworKyAgICAgICAgb3V0LT5mbG9h dF9zYXZlLmZwcmVnc1tpXSA9ICgodWludDY0X3QgKikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3Mp W2ldOworIAorLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBf cmVnc1tORlBSRUctMV07CisrICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9ICgodWludDY0X3Qg KikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3MpW0VMRl9ORlBSRUctMV07CisgCisgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisgICAg ICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtMTA1LDYgKzEwNSwxMSBA QAorICNkZWZpbmUgUFJfU0VUX1BUUkFDRVIgMHg1OTYxNmQ2MQorICNlbmRpZgorIAorKy8qIG11 c2wgaGFjaywgY2FuJ3QgaW5jbHVkZSBhc20vcHRyYWNlLmggYXMgdGhhdCBjYXVzZXMgY29uZmxp Y3RzICovCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgIWRlZmluZWQoUFRfTklQKQor KyNkZWZpbmUgUFRfTklQIDMyCisrI2VuZGlmCisrCisgbmFtZXNwYWNlIGdvb2dsZV9icmVha3Bh ZCB7CisgCisgbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5 Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJv bWl1bS1wcGM2NC1iZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uY2U4MzExYzliYTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAw OTItY2hyb21pdW0tcHBjNjQtYmUucGF0Y2gKQEAgLTAsMCArMSwyOTcwIEBACitUaGlzIGFkZHMg YmlnIGVuZGlhbiBzdXBwb3J0L2ZpeGVzIGluIGFkZGl0aW9uIHRvIHRoZSBiYXNlIHBwYzY0bGUg cGF0Y2guCisKK1BpbmcgcTY2IGlmIHlvdSdyZSB1cGRhdGluZyBxdDUgYW5kIHRoZSBwYXRjaCBk b2VzIG5vdCBhcHBseSBhbnltb3JlLgorCitTb3VyY2U6IGh0dHBzOi8vd2lraS5yYXB0b3Jjcy5j b20vdy9pbmRleC5waHA/dGl0bGU9UG9ydGluZy9DaHJvbWl1bS9CRQorCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0 b3IvcGFydGl0aW9uX2FsbG9jLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jLmNj CitAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyBzaXplX3QgUGFydGl0aW9uUHVyZ2VQYWdlKGlu dGVybmFsOjpQYXJ0aXRpb25QYWdlKiBwYWdlLCBib29sIGRpc2NhcmQpIHsKKyAjZW5kaWYKKyAg ICAgICB9CisgICAgICAgLy8gVGVybWluYXRlIHRoZSBmcmVlbGlzdCBjaGFpbi4KKy0gICAgICAq ZW50cnlfcHRyID0gbnVsbHB0cjsKKysgICAgICAqZW50cnlfcHRyID0gaW50ZXJuYWw6OlBhcnRp dGlvbkZyZWVsaXN0RW50cnk6OlRyYW5zZm9ybShudWxscHRyKTsKKyAgICAgICAvLyBUaGUgZnJl ZWxpc3QgaGVhZCBpcyBzdG9yZWQgdW5tYXNrZWQuCisgICAgICAgcGFnZS0+ZnJlZWxpc3RfaGVh ZCA9CisgICAgICAgICAgIGludGVybmFsOjpQYXJ0aXRpb25GcmVlbGlzdEVudHJ5OjpUcmFuc2Zv cm0ocGFnZS0+ZnJlZWxpc3RfaGVhZCk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL2Jhc2UvaTE4bi9pY3VfdXRpbC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2kxOG4vaWN1X3V0aWwuY2MKK0BAIC03NSw3ICs3NSwxMSBAQCB3Y2hh cl90IGdfZGVidWdfaWN1X3BmX2ZpbGVuYW1lW19NQVhfUEFUSF07CisgLy8gTm8gbmVlZCB0byBj aGFuZ2UgdGhlIGZpbGVuYW1lIGluIG11bHRpcGxlIHBsYWNlcyAoZ3lwIGZpbGVzLCB3aW5kb3dz CisgLy8gYnVpbGQgcGtnIGNvbmZpZ3VyYXRpb25zLCBldGMpLiAnbCcgc3RhbmRzIGZvciBMaXR0 bGUgRW5kaWFuLgorIC8vIFRoaXMgdmFyaWFibGUgaXMgZXhwb3J0ZWQgdGhyb3VnaCB0aGUgaGVh ZGVyIGZpbGUuCisrI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKKyBjb25zdCBj aGFyIGtJY3VEYXRhRmlsZU5hbWVbXSA9ICJpY3VkdGwuZGF0IjsKKysjZWxzZQorK2NvbnN0IGNo YXIga0ljdURhdGFGaWxlTmFtZVtdID0gImljdWR0Yi5kYXQiOworKyNlbmRpZgorICNpZiBkZWZp bmVkKE9TX0FORFJPSUQpCisgY29uc3QgY2hhciBrQW5kcm9pZEFzc2V0c0ljdURhdGFGaWxlTmFt ZVtdID0gImFzc2V0cy9pY3VkdGwuZGF0IjsKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZW1vcnkvc2hhcmVkX21lbW9yeV9tYXBwaW5nX3VuaXR0 ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWVtb3J5 L3NoYXJlZF9tZW1vcnlfbWFwcGluZ191bml0dGVzdC5jYworQEAgLTEyLDYgKzEyLDcgQEAKKyAj aW5jbHVkZSAiYmFzZS9jb250YWluZXJzL3NwYW4uaCIKKyAjaW5jbHVkZSAiYmFzZS9tZW1vcnkv cmVhZF9vbmx5X3NoYXJlZF9tZW1vcnlfcmVnaW9uLmgiCisgI2luY2x1ZGUgInRlc3RpbmcvZ3Rl c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIgorKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIu aCIKKyAKKyBuYW1lc3BhY2UgYmFzZSB7CisgCitAQCAtNjksOCArNzAsOCBAQCBURVNUX0YoU2hh cmVkTWVtb3J5TWFwcGluZ1Rlc3QsIFNwYW5XaXRoQXV0b0RlZHVjZWRFbGVtZW50Q291bnQpIHsK KyAKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd3JpdGVfc3Bhbi5zaXplKCk7ICsraSkKKyAg ICAgd3JpdGVfc3BhbltpXSA9IGkgKyAxOworLSAgRVhQRUNUX0VRKDB4MDQwMzAyMDF1LCByZWFk X3NwYW5bMF0pOworLSAgRVhQRUNUX0VRKDB4MDgwNzA2MDV1LCByZWFkX3NwYW5bMV0pOworKyAg RVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEwMjAzMDR1KSwgcmVhZF9zcGFuWzBdKTsKKysgIEVY UEVDVF9FUShIb3N0VG9OZXQzMigweDA1MDYwNzA4dSksIHJlYWRfc3BhblsxXSk7CisgfQorIAor IFRFU1RfRihTaGFyZWRNZW1vcnlNYXBwaW5nVGVzdCwgU3BhbldpdGhFeHBsaWNpdEVsZW1lbnRD b3VudCkgeworQEAgLTk1LDEzICs5NiwxMyBAQCBURVNUX0YoU2hhcmVkTWVtb3J5TWFwcGluZ1Rl c3QsIFNwYW5XaXRoRXhwbGljaXRFbGVtZW50Q291bnQpIHsKKyAKKyAgIGZvciAoc2l6ZV90IGkg PSAwOyBpIDwgd3JpdGVfc3Bhbi5zaXplKCk7ICsraSkKKyAgICAgd3JpdGVfc3BhbltpXSA9IGkg KyAxOworLSAgRVhQRUNUX0VRKDB4MDQwMzAyMDF1LCByZWFkX3NwYW5bMF0pOworLSAgRVhQRUNU X0VRKDB4MDgwNzA2MDV1LCByZWFkX3NwYW5bMV0pOworLSAgRVhQRUNUX0VRKDB4MDQwMzAyMDF1 LCByZWFkX3NwYW5fMlswXSk7CisrICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMwNHUp LCByZWFkX3NwYW5bMF0pOworKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDUwNjA3MDh1KSwg cmVhZF9zcGFuWzFdKTsKKysgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJl YWRfc3Bhbl8yWzBdKTsKKyAKKyAgIHN0ZDo6ZmlsbCh3cml0ZV9zcGFuXzIuYmVnaW4oKSwgd3Jp dGVfc3Bhbl8yLmVuZCgpLCAwKTsKKyAgIEVYUEVDVF9FUSgwdSwgcmVhZF9zcGFuWzBdKTsKKy0g IEVYUEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFdKTsKKysgIEVYUEVDVF9FUShIb3N0 VG9OZXQzMigweDA1MDYwNzA4dSksIHJlYWRfc3BhblsxXSk7CisgICBFWFBFQ1RfRVEoMHUsIHJl YWRfc3Bhbl8yWzBdKTsKKyB9CisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvbWV0cmljcy9idWNrZXRfcmFuZ2VzX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWV0cmljcy9idWNrZXRfcmFuZ2VzX3VuaXR0 ZXN0LmNjCitAQCAtNyw2ICs3LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgI2luY2x1 ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIgorKyNpbmNsdWRlICJiYXNl L3N5c19ieXRlb3JkZXIuaCIKKyAKKyBuYW1lc3BhY2UgYmFzZSB7CisgbmFtZXNwYWNlIHsKK0BA IC02NCwxMyArNjUsMjEgQEAgVEVTVChCdWNrZXRSYW5nZXNUZXN0LCBDaGVja3N1bSkgeworICAg cmFuZ2VzLnNldF9yYW5nZSgyLCAyKTsKKyAKKyAgIHJhbmdlcy5SZXNldENoZWNrc3VtKCk7Cisr I2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKKyAgIEVYUEVDVF9FUSgyODkyMTcy NTN1LCByYW5nZXMuY2hlY2tzdW0oKSk7CisrI2Vsc2UKKysgIEVYUEVDVF9FUSgyNzY3MjMxNTk2 dSwgcmFuZ2VzLmNoZWNrc3VtKCkpOworKyNlbmRpZgorIAorICAgcmFuZ2VzLnNldF9yYW5nZSgy LCAzKTsKKyAgIEVYUEVDVF9GQUxTRShyYW5nZXMuSGFzVmFsaWRDaGVja3N1bSgpKTsKKyAKKyAg IHJhbmdlcy5SZXNldENoZWNrc3VtKCk7CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKKyAgIEVYUEVDVF9FUSgyODQzODM1Nzc2dSwgcmFuZ2VzLmNoZWNrc3VtKCkpOworKyNl bHNlCisrICBFWFBFQ1RfRVEoMzU1NjIyMzczOHUsIHJhbmdlcy5jaGVja3N1bSgpKTsKKysjZW5k aWYKKyAgIEVYUEVDVF9UUlVFKHJhbmdlcy5IYXNWYWxpZENoZWNrc3VtKCkpOworIH0KKyAKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9waWNrbGUuY2MKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9waWNrbGUuY2MKK0BAIC04Miw3 ICs4MiwxMiBAQCBpbmxpbmUgY29uc3QgY2hhciogUGlja2xlSXRlcmF0b3I6OkdldFJlYWRQb2lu dGVyQW5kQWR2YW5jZSgKKyB9CisgCisgYm9vbCBQaWNrbGVJdGVyYXRvcjo6UmVhZEJvb2woYm9v bCogcmVzdWx0KSB7CistICByZXR1cm4gUmVhZEJ1aWx0aW5UeXBlKHJlc3VsdCk7CisrICBpbnQg aW50X3Jlc3VsdDsKKysgIGlmIChSZWFkQnVpbHRpblR5cGUoJmludF9yZXN1bHQpKSB7CisrICAg ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxib29sPihpbnRfcmVzdWx0KTsKKysgICAgcmV0dXJuIHRy dWU7CisrICB9IGVsc2UKKysgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKyBib29sIFBpY2tsZUl0 ZXJhdG9yOjpSZWFkSW50KGludCogcmVzdWx0KSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL2Jhc2Uvc2hhMS5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL3NoYTEuY2MKK0BAIC0xMTAsOCArMTEwLDEwIEBAIHZvaWQgU2VjdXJlSGFz aEFsZ29yaXRobTo6RmluYWwoKSB7CisgICBQYWQoKTsKKyAgIFByb2Nlc3MoKTsKKyAKKysjaWYg ZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorICAgZm9yIChhdXRvJiB0IDogSCkKKyAg ICAgdCA9IEJ5dGVTd2FwKHQpOworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFNlY3VyZUhhc2hBbGdv cml0aG06OlVwZGF0ZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbmJ5dGVzKSB7CitAQCAtMTU3 LDggKzE1OSwxMCBAQCB2b2lkIFNlY3VyZUhhc2hBbGdvcml0aG06OlByb2Nlc3MoKSB7CisgICAv LworICAgLy8gVyBhbmQgTSBhcmUgaW4gYSB1bmlvbiwgc28gbm8gbmVlZCB0byBtZW1jcHkuCisg ICAvLyBtZW1jcHkoVywgTSwgc2l6ZW9mKE0pKTsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRU TEVfRU5ESUFOKQorICAgZm9yICh0ID0gMDsgdCA8IDE2OyArK3QpCisgICAgIFdbdF0gPSBCeXRl U3dhcChXW3RdKTsKKysjZW5kaWYKKyAKKyAgIC8vIGIuCisgICBmb3IgKHQgPSAxNjsgdCA8IDgw OyArK3QpCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uvc3RyaW5n cy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNpb25zX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uvc3RyaW5ncy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNp b25zX3VuaXR0ZXN0LmNjCitAQCAtODI5LDEyICs4MjksMjEgQEAgVEVTVChTdHJpbmdOdW1iZXJD b252ZXJzaW9uc1Rlc3QsIERvdWJsZVRvU3RyaW5nKSB7CisgICB9CisgCisgICAvLyBUaGUgZm9s bG93aW5nIHR3byB2YWx1ZXMgd2VyZSBzZWVuIGluIGNyYXNoZXMgaW4gdGhlIHdpbGQuCisrI2lm IGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKKyAgIGNvbnN0IGNoYXIgaW5wdXRfYnl0 ZXNbOF0gPSB7MCwgMCwgMCwgMCwgJ1x4ZWUnLCAnXHg2ZCcsICdceDczJywgJ1x4NDInfTsKKysj ZWxzZQorKyAgY29uc3QgY2hhciBpbnB1dF9ieXRlc1s4XSA9IHsnXHg0MicsICdceDczJywgJ1x4 NmQnLCAnXHhlZScsIDAsIDAsIDAsIDB9OworKyNlbmRpZgorICAgZG91YmxlIGlucHV0ID0gMDsK KyAgIG1lbWNweSgmaW5wdXQsIGlucHV0X2J5dGVzLCBiYXNlOjpzaXplKGlucHV0X2J5dGVzKSk7 CisgICBFWFBFQ1RfRVEoIjEzMzUxNzkwODM3NzYiLCBOdW1iZXJUb1N0cmluZyhpbnB1dCkpOwor KyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCisgICBjb25zdCBjaGFyIGlucHV0 X2J5dGVzMls4XSA9CisgICAgICAgezAsIDAsIDAsICdceGEwJywgJ1x4ZGEnLCAnXHg2YycsICdc eDczJywgJ1x4NDInfTsKKysjZWxzZQorKyAgY29uc3QgY2hhciBpbnB1dF9ieXRlczJbOF0gPQor KyAgICAgIHsnXHg0MicsICdceDczJywgJ1x4NmMnLCAnXHhkYScsICdceGEwJywgMCwgMCwgMH07 CisrI2VuZGlmCisgICBpbnB1dCA9IDA7CisgICBtZW1jcHkoJmlucHV0LCBpbnB1dF9ieXRlczIs IGJhc2U6OnNpemUoaW5wdXRfYnl0ZXMyKSk7CisgICBFWFBFQ1RfRVEoIjEzMzQ4OTAzMzIxNjAi LCBOdW1iZXJUb1N0cmluZyhpbnB1dCkpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL3RoaXJkX3BhcnR5L2RtZ19mcC9kdG9hLmNjCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhpcmRfcGFydHkvZG1nX2ZwL2R0b2EuY2MKK0BA IC0xODYsNyArMTg2LDExIEBACisgICoJdXNlZCBmb3IgaW5wdXQgbW9yZSB0aGFuIFNUUlRPRF9E SUdMSU0gZGlnaXRzIGxvbmcgKGRlZmF1bHQgNDApLgorICAqLworIAorKyNpZmRlZiBfX0JJR19F TkRJQU5fXworKyNkZWZpbmUgSUVFRV9NQzY4aworKyNlbHNlCisgI2RlZmluZSBJRUVFXzgwODcK KysjZW5kaWYKKyAjZGVmaW5lIE5PX0hFWF9GUAorIAorICNpZm5kZWYgTG9uZworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIv dXRpbF91bml0dGVzdC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9j b21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdXRpbF91bml0dGVzdC5jYworQEAgLTEyLDYgKzEy LDEyIEBACisgI2luY2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIgor ICNpbmNsdWRlICJ1cmwvZ3VybC5oIgorIAorKyNpZiBkZWZpbmVkKE9TX1dJTikKKysjaW5jbHVk ZSA8d2luc29jazIuaD4KKysjZWxpZiBkZWZpbmVkKE9TX1BPU0lYKQorKyNpbmNsdWRlIDxhcnBh L2luZXQuaD4KKysjZW5kaWYKKysKKyBuYW1lc3BhY2Ugc2FmZV9icm93c2luZyB7CisgCisgVEVT VChTYWZlQnJvd3NpbmdEYlV0aWxUZXN0LCBVcmxUb0Z1bGxIYXNoZXMpIHsKK0BAIC04Myw3ICs4 OSw3IEBAIFRFU1QoU2FmZUJyb3dzaW5nRGJVdGlsVGVzdCwgU3RyaW5nVG9TQkZ1bGxIYXNoQW5k U0JGdWxsSGFzaFRvU3RyaW5nKSB7CisgICAvLyAzMSBjaGFycyBwbHVzIHRoZSBsYXN0IFwwIGFz IGZ1bGxfaGFzaC4KKyAgIGNvbnN0IHN0ZDo6c3RyaW5nIGhhc2hfaW4gPSAiMTIzNDU2Nzg5MDIy MzQ1Njc4OTAzMjM0NTY3ODkwMTIiOworICAgU0JGdWxsSGFzaCBoYXNoX291dCA9IFN0cmluZ1Rv U0JGdWxsSGFzaChoYXNoX2luKTsKKy0gIEVYUEVDVF9FUSgweDM0MzMzMjMxVSwgaGFzaF9vdXQu cHJlZml4KTsKKysgIEVYUEVDVF9FUShodG9ubCgweDMxMzIzMzM0VSksIGhhc2hfb3V0LnByZWZp eCk7CisgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGhhc2hfaW4uZGF0YSgpLCBoYXNoX291dC5mdWxs X2hhc2gsIHNpemVvZihTQkZ1bGxIYXNoKSkpOworIAorICAgc3RkOjpzdHJpbmcgaGFzaF9maW5h bCA9IFNCRnVsbEhhc2hUb1N0cmluZyhoYXNoX291dCk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlLmNjCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93 c2luZy9kYi92NF9yaWNlLmNjCitAQCAtOCw2ICs4LDcgQEAKKyAjaW5jbHVkZSAiYmFzZS9sb2dn aW5nLmgiCisgI2luY2x1ZGUgImJhc2UvbnVtZXJpY3Mvc2FmZV9tYXRoLmgiCisgI2luY2x1ZGUg ImJhc2Uvc3RyaW5ncy9zdHJpbmdwcmludGYuaCIKKysjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9y ZGVyLmgiCisgI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgorICNpbmNsdWRlICJjb21w b25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZS5oIgorIAorQEAgLTIxLDEwICsyMiw2IEBA IHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6UmVwZWF0ZWRGaWVsZDsKKyB1c2luZyA6Omdvb2ds ZTo6cHJvdG9idWY6OmludDMyOworIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6aW50NjQ7Cisg CistI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pIHx8IChBUkNIX0NQVV9MSVRU TEVfRU5ESUFOICE9IDEpCistI2Vycm9yIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgbGl0dGxlLWVu ZGlhbm5lc3MuCistI2VuZGlmCistCisgbmFtZXNwYWNlIHNhZmVfYnJvd3NpbmcgeworIAorIG5h bWVzcGFjZSB7CitAQCAtMTE3LDcgKzExNCw3IEBAIFY0RGVjb2RlUmVzdWx0IFY0UmljZURlY29k ZXI6OkRlY29kZVByZWZpeGVzKGNvbnN0IGludDY0IGZpcnN0X3ZhbHVlLAorICAgb3V0LT5yZXNl cnZlKChudW1fZW50cmllcyArIDEpKTsKKyAKKyAgIGJhc2U6OkNoZWNrZWROdW1lcmljPHVpbnQz Ml90PiBsYXN0X3ZhbHVlKGZpcnN0X3ZhbHVlKTsKKy0gIG91dC0+cHVzaF9iYWNrKGh0b25sKGxh c3RfdmFsdWUuVmFsdWVPckRpZSgpKSk7CisrICBvdXQtPnB1c2hfYmFjayhiYXNlOjpCeXRlU3dh cChzdGF0aWNfY2FzdDx1aW50MzJfdD4obGFzdF92YWx1ZS5WYWx1ZU9yRGllKCkpKSk7CisgCisg ICBpZiAobnVtX2VudHJpZXMgPiAwKSB7CisgICAgIFY0UmljZURlY29kZXIgZGVjb2RlcihyaWNl X3BhcmFtZXRlciwgbnVtX2VudHJpZXMsIGVuY29kZWRfZGF0YSk7CitAQCAtMTM2LDcgKzEzMyw3 IEBAIFY0RGVjb2RlUmVzdWx0IFY0UmljZURlY29kZXI6OkRlY29kZVByZWZpeGVzKGNvbnN0IGlu dDY0IGZpcnN0X3ZhbHVlLAorIAorICAgICAgIC8vIFRoaXMgZmxpcHBpbmcgaXMgZG9uZSBzbyB0 aGF0IHRoZSBkZWNvZGVkIHVpbnQzMiBpcyBpbnRlcnByZXRlZAorICAgICAgIC8vIGNvcnJlY2x5 IGFzIGEgc3RyaW5nIG9mIDQgYnl0ZXMuCistICAgICAgb3V0LT5wdXNoX2JhY2soaHRvbmwobGFz dF92YWx1ZS5WYWx1ZU9yRGllKCkpKTsKKysgICAgICBvdXQtPnB1c2hfYmFjayhiYXNlOjpCeXRl U3dhcChzdGF0aWNfY2FzdDx1aW50MzJfdD4obGFzdF92YWx1ZS5WYWx1ZU9yRGllKCkpKSk7Cisg ICAgIH0KKyAgIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29t cG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2VfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0 X3JpY2VfdW5pdHRlc3QuY2MKK0BAIC02LDYgKzYsMTIgQEAKKyAjaW5jbHVkZSAiYmFzZS9sb2dn aW5nLmgiCisgI2luY2x1ZGUgInRlc3RpbmcvcGxhdGZvcm1fdGVzdC5oIgorIAorKyNpZiBkZWZp bmVkKE9TX1dJTikKKysjaW5jbHVkZSA8d2luc29jazIuaD4KKysjZWxpZiBkZWZpbmVkKE9TX1BP U0lYKQorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjZW5kaWYKKysKKyB1c2luZyA6Omdvb2ds ZTo6cHJvdG9idWY6OlJlcGVhdGVkRmllbGQ7CisgdXNpbmcgOjpnb29nbGU6OnByb3RvYnVmOjpp bnQzMjsKKyAKK0BAIC0yNDcsNyArMjUzLDcgQEAgVEVTVF9GKFY0UmljZVRlc3QsIFRlc3REZWNv ZGVyUHJlZml4ZXNXaXRoT25lVmFsdWUpIHsKKyAgIEVYUEVDVF9FUShERUNPREVfU1VDQ0VTUywK KyAgICAgICAgICAgICBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcygweDY5RjY3RjUxdSwg MiwgMCwgIiIsICZvdXQpKTsKKyAgIEVYUEVDVF9FUSgxdSwgb3V0LnNpemUoKSk7CistICBFWFBF Q1RfRVEoMHg2OUY2N0Y1MXUsIG91dFswXSk7CisrICBFWFBFQ1RfRVEoaHRvbmwoMHg1MTdGRjY2 OXUpLCBvdXRbMF0pOworIH0KKyAKKyBURVNUX0YoVjRSaWNlVGVzdCwgVGVzdERlY29kZXJQcmVm aXhlc1dpdGhNdWx0aXBsZVZhbHVlcykgeworQEAgLTI1Niw3ICsyNjIsNyBAQCBURVNUX0YoVjRS aWNlVGVzdCwgVGVzdERlY29kZXJQcmVmaXhlc1dpdGhNdWx0aXBsZVZhbHVlcykgeworICAgICAg ICAgICAgIFY0UmljZURlY29kZXI6OkRlY29kZVByZWZpeGVzKAorICAgICAgICAgICAgICAgICA1 LCAyOCwgMywgIlx4YmZceGE4XHgzZlx4ZmJceGZceGZceDVlXHgyN1x4ZTZceGMzXHgxZFx4YzZc eDM4IiwKKyAgICAgICAgICAgICAgICAgJm91dCkpOworLSAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ IGV4cGVjdGVkID0gezUsIDB4YWQ5MzRjMGN1LCAweDZmZjY3ZjU2dSwgMHg4MTMxNmZjZXV9Owor KyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGV4cGVjdGVkID0ge2h0b25sKDB4MDUwMDAwMDApLCBo dG9ubCgweDBjNGM5M2FkdSksIGh0b25sKDB4NTY3ZmY2NmZ1KSwgaHRvbmwoMHhjZTZmMzE4MXUp fTsKKyAgIEVYUEVDVF9FUShleHBlY3RlZC5zaXplKCksIG91dC5zaXplKCkpOworICAgZm9yICh1 bnNpZ25lZCBpID0gMDsgaSA8IGV4cGVjdGVkLnNpemUoKTsgaSsrKSB7CisgICAgIEVYUEVDVF9F UShleHBlY3RlZFtpXSwgb3V0W2ldKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uY2MKK0BAIC02ODYs MTAgKzY4Niw2IEBAIENoYW5uZWxMYXlvdXQgQ2hhbm5lbExheW91dFRvQ2hyb21lQ2hhbm5lbExh eW91dChpbnQ2NF90IGxheW91dCwgaW50IGNoYW5uZWxzKSB7CisgICB9CisgfQorIAorLSNpZiAh ZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorLSNlcnJvciBUaGUgY29kZSBiZWxvdyBh c3N1bWVzIGxpdHRsZS1lbmRpYW5uZXNzLgorLSNlbmRpZgorLQorIFZpZGVvUGl4ZWxGb3JtYXQg QVZQaXhlbEZvcm1hdFRvVmlkZW9QaXhlbEZvcm1hdChBVlBpeGVsRm9ybWF0IHBpeGVsX2Zvcm1h dCkgeworICAgLy8gVGhlIFlVVkogYWx0ZXJuYXRpdmVzIGFyZSBGRm1wZWcncyAoZGVwcmVjYXRl ZCwgYnV0IHN0aWxsIGluIHVzZSkgd2F5IHRvCisgICAvLyBzcGVjaWZ5IGEgcGl4ZWwgZm9ybWF0 IGFuZCBmdWxsIHJhbmdlIGNvbG9yIGNvbWJpbmF0aW9uLgorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mb3JtYXRzL21wNC9ib3hfZGVmaW5pdGlvbnMuY2MKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZm9ybWF0cy9tcDQvYm94 X2RlZmluaXRpb25zLmNjCitAQCAtMTEwNywxNSArMTEwNywxNCBAQCBib29sIE9wdXNTcGVjaWZp Y0JveDo6UGFyc2UoQm94UmVhZGVyKiByZWFkZXIpIHsKKyAgIFJDSEVDSyhyZWFkZXItPlJlYWQ0 KCZzYW1wbGVfcmF0ZSkpOworICAgUkNIRUNLKHJlYWRlci0+UmVhZDJzKCZnYWluX2RiKSk7Cisg CistI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCistI2Vycm9yIFRoZSBjb2Rl IGJlbG93IGFzc3VtZXMgbGl0dGxlLWVuZGlhbm5lc3MuCistI2VuZGlmCistCistICBtZW1jcHko JmV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQX1NBTVBMRVNfT0ZGU0VUXSwgJmNvZGVjX2Rl bGF5X2luX2ZyYW1lcywKKy0gICAgICAgICBzaXplb2YoY29kZWNfZGVsYXlfaW5fZnJhbWVzKSk7 CistICBtZW1jcHkoJmV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVRd LCAmc2FtcGxlX3JhdGUsCistICAgICAgICAgc2l6ZW9mKHNhbXBsZV9yYXRlKSk7CistICBtZW1j cHkoJmV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9HQUlOX09GRlNFVF0sICZnYWluX2RiLCBzaXpl b2YoZ2Fpbl9kYikpOworKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19P RkZTRVRdID0gKGNvZGVjX2RlbGF5X2luX2ZyYW1lcyA+PiAwKSAmIDB4ZmY7CisrICBleHRyYWRh dGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVTX09GRlNFVCsxXSA9IChjb2RlY19kZWxheV9p bl9mcmFtZXMgPj4gOCkgJiAweGZmOworKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBM RV9SQVRFX09GRlNFVF0gPSAoc2FtcGxlX3JhdGUgPj4gMCkgJiAweGZmOworKyAgZXh0cmFkYXRh W09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNFVCsxXSA9IChzYW1wbGVfcmF0ZSA+PiA4 KSAmIDB4ZmY7CisrICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VU KzJdID0gKHNhbXBsZV9yYXRlID4+IDE2KSAmIDB4ZmY7CisrICBleHRyYWRhdGFbT1BVU19FWFRS QURBVEFfU0FNUExFX1JBVEVfT0ZGU0VUKzNdID0gKHNhbXBsZV9yYXRlID4+IDI0KSAmIDB4ZmY7 CisrICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfR0FJTl9PRkZTRVRdID0gKGdhaW5fZGIgPj4g MCkgJiAweGZmOworKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0dBSU5fT0ZGU0VUKzFdID0g KGdhaW5fZGIgPj4gOCkgJiAweGZmOworIAorICAgY2hhbm5lbF9jb3VudCA9IGV4dHJhZGF0YVtP UFVTX0VYVFJBREFUQV9DSEFOTkVMU19PRkZTRVRdOworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9yZW5kZXJlcnMvcGFpbnRfY2FudmFzX3ZpZGVvX3JlbmRl cmVyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL3JlbmRl cmVycy9wYWludF9jYW52YXNfdmlkZW9fcmVuZGVyZXIuY2MKK0BAIC0zMSw4ICszMSw3IEBACisg CisgLy8gU2tpYSBpbnRlcm5hbCBmb3JtYXQgZGVwZW5kcyBvbiBhIHBsYXRmb3JtLiBPbiBBbmRy b2lkIGl0IGlzIEFCR1IsIG9uIG90aGVycworIC8vIGl0IGlzIEFSR0IuCistI2lmIFNLX0IzMl9T SElGVCA9PSAwICYmIFNLX0czMl9TSElGVCA9PSA4ICYmIFNLX1IzMl9TSElGVCA9PSAxNiAmJiBc CistICAgIFNLX0EzMl9TSElGVCA9PSAyNAorKyNpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQixH LFIsQSkKKyAjZGVmaW5lIExJQllVVl9JNDIwX1RPX0FSR0IgbGlieXV2OjpJNDIwVG9BUkdCCisg I2RlZmluZSBMSUJZVVZfSTQyMl9UT19BUkdCIGxpYnl1djo6STQyMlRvQVJHQgorICNkZWZpbmUg TElCWVVWX0k0NDRfVE9fQVJHQiBsaWJ5dXY6Okk0NDRUb0FSR0IKK0BAIC00Miw4ICs0MSw3IEBA CisgI2RlZmluZSBMSUJZVVZfSTAxMF9UT19BUkdCIGxpYnl1djo6STAxMFRvQVJHQgorICNkZWZp bmUgTElCWVVWX0gwMTBfVE9fQVJHQiBsaWJ5dXY6OkgwMTBUb0FSR0IKKyAjZGVmaW5lIExJQllV Vl9OVjEyX1RPX0FSR0IgbGlieXV2OjpOVjEyVG9BUkdCCistI2VsaWYgU0tfUjMyX1NISUZUID09 IDAgJiYgU0tfRzMyX1NISUZUID09IDggJiYgU0tfQjMyX1NISUZUID09IDE2ICYmIFwKKy0gICAg U0tfQTMyX1NISUZUID09IDI0CisrI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsRyxCLEEp CisgI2RlZmluZSBMSUJZVVZfSTQyMF9UT19BUkdCIGxpYnl1djo6STQyMFRvQUJHUgorICNkZWZp bmUgTElCWVVWX0k0MjJfVE9fQVJHQiBsaWJ5dXY6Okk0MjJUb0FCR1IKKyAjZGVmaW5lIExJQllV Vl9JNDQ0X1RPX0FSR0IgbGlieXV2OjpJNDQ0VG9BQkdSCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL25ldC9jZXJ0L2NybF9zZXQuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbmV0L2NlcnQvY3JsX3NldC5jYworQEAgLTYsNiArNiw3IEBACisg CisgI2luY2x1ZGUgImJhc2UvYmFzZTY0LmgiCisgI2luY2x1ZGUgImJhc2UvanNvbi9qc29uX3Jl YWRlci5oIgorKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKKyAjaW5jbHVkZSAiYmFz ZS90aW1lL3RpbWUuaCIKKyAjaW5jbHVkZSAiYmFzZS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5o IgorICNpbmNsdWRlICJiYXNlL3ZhbHVlcy5oIgorQEAgLTQ0LDkgKzQ1LDkgQEAgYmFzZTo6RGlj dGlvbmFyeVZhbHVlKiBSZWFkSGVhZGVyKGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhKSB7CisgICB1 aW50MTZfdCBoZWFkZXJfbGVuOworICAgaWYgKGRhdGEtPnNpemUoKSA8IHNpemVvZihoZWFkZXJf bGVuKSkKKyAgICAgcmV0dXJuIG51bGxwdHI7CistICAvLyBBc3N1bWVzIGxpdHRsZS1lbmRpYW4u CisgICBtZW1jcHkoJmhlYWRlcl9sZW4sIGRhdGEtPmRhdGEoKSwgc2l6ZW9mKGhlYWRlcl9sZW4p KTsKKyAgIGRhdGEtPnJlbW92ZV9wcmVmaXgoc2l6ZW9mKGhlYWRlcl9sZW4pKTsKKysgIGhlYWRl cl9sZW4gPSBiYXNlOjpCeXRlU3dhcFRvTEUxNihoZWFkZXJfbGVuKTsKKyAKKyAgIGlmIChkYXRh LT5zaXplKCkgPCBoZWFkZXJfbGVuKQorICAgICByZXR1cm4gbnVsbHB0cjsKK0BAIC03OSw5ICs4 MCw5IEBAIGJvb2wgUmVhZENSTChiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSwKKyAgIHVpbnQzMl90 IG51bV9zZXJpYWxzOworICAgaWYgKGRhdGEtPnNpemUoKSA8IHNpemVvZihudW1fc2VyaWFscykp CisgICAgIHJldHVybiBmYWxzZTsKKy0gIC8vIEFzc3VtZXMgbGl0dGxlIGVuZGlhbi4KKyAgIG1l bWNweSgmbnVtX3NlcmlhbHMsIGRhdGEtPmRhdGEoKSwgc2l6ZW9mKG51bV9zZXJpYWxzKSk7Cisg ICBkYXRhLT5yZW1vdmVfcHJlZml4KHNpemVvZihudW1fc2VyaWFscykpOworKyAgbnVtX3Nlcmlh bHMgPSBiYXNlOjpCeXRlU3dhcFRvTEUzMihudW1fc2VyaWFscyk7CisgCisgICBpZiAobnVtX3Nl cmlhbHMgPiAzMiAqIDEwMjQgKiAxMDI0KSAgLy8gU2FuaXR5IGNoZWNrLgorICAgICByZXR1cm4g ZmFsc2U7CitAQCAtMTkyLDE1ICsxOTMsNiBAQCBDUkxTZXQ6On5DUkxTZXQoKSA9IGRlZmF1bHQ7 CisgLy8gc3RhdGljCisgYm9vbCBDUkxTZXQ6OlBhcnNlKGJhc2U6OlN0cmluZ1BpZWNlIGRhdGEs IHNjb3BlZF9yZWZwdHI8Q1JMU2V0Piogb3V0X2NybF9zZXQpIHsKKyAgIFRSQUNFX0VWRU5UMChO ZXRUcmFjaW5nQ2F0ZWdvcnkoKSwgIkNSTFNldDo6UGFyc2UiKTsKKy0vLyBPdGhlciBwYXJ0cyBv ZiBDaHJvbWUgYXNzdW1lIHRoYXQgd2UncmUgbGl0dGxlIGVuZGlhbiwgc28gd2UgZG9uJ3QgbG9z ZQorLS8vIGFueXRoaW5nIGJ5IGRvaW5nIHRoaXMuCistI2lmIGRlZmluZWQoX19CWVRFX09SREVS KQorLSAgLy8gTGludXggY2hlY2sKKy0gIHN0YXRpY19hc3NlcnQoX19CWVRFX09SREVSID09IF9f TElUVExFX0VORElBTiwgImFzc3VtZXMgbGl0dGxlIGVuZGlhbiIpOworLSNlbGlmIGRlZmluZWQo X19CSUdfRU5ESUFOX18pCistLy8gTWFjIGNoZWNrCistI2Vycm9yIGFzc3VtZXMgbGl0dGxlIGVu ZGlhbgorLSNlbmRpZgorIAorICAgc3RkOjp1bmlxdWVfcHRyPGJhc2U6OkRpY3Rpb25hcnlWYWx1 ZT4gaGVhZGVyX2RpY3QoUmVhZEhlYWRlcigmZGF0YSkpOworICAgaWYgKCFoZWFkZXJfZGljdC5n ZXQoKSkKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK0BAIC0zNzcs NiArMzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKKyAKKyAjZGVm aW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIG5y KSkKKyAjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2Nv bXBfZGF0YSwgYXJjaCkpCisrI2lmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VO RElBTl9fCisgI2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFggXAorICAgKG9mZnNldG9mKHN0cnVj dCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQorICNkZWZpbmUg U0VDQ09NUF9JUF9MU0JfSURYIFwKK0BAIC0zODUsNiArMzg2LDE2IEBAIHR5cGVkZWYgc3RydWN0 IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7CisgICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9k YXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKKyAjZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9JRFgo bnIpIFwKKyAgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAq IChucikgKyAwKQorKyNlbHNlCisrI2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFggXAorKyAgKG9m ZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyAw KQorKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJj aF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgNCkKKysjZGVmaW5lIFNFQ0NP TVBfQVJHX01TQl9JRFgobnIpIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2Rh dGEsIGFyZ3MpICsgOCAqIChucikgKyAwKQorKyNkZWZpbmUgU0VDQ09NUF9BUkdfTFNCX0lEWChu cikgXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICog KG5yKSArIDQpCisrI2VuZGlmCisgCisgI2RlZmluZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykg KF9yZWdzKS5ncHJbM10KKyAjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdz KS5ncHJbMF0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9jb25m aWcvU2tVc2VyQ29uZmlnLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2tpYS9jb25maWcvU2tVc2VyQ29uZmlnLmgKK0BAIC05MCwxMSArOTAsMTggQEAgU0tfQVBJIHZv aWQgU2tEZWJ1Z2ZfRmlsZUxpbmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGJvb2wgZmF0 YWwsCisgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI2NvbmQpOyB9IH0gd2hpbGUgKGZhbHNlKQor IAorICNpZiAhZGVmaW5lZChBTkRST0lEKSAgIC8vIE9uIEFuZHJvaWQsIHdlIHVzZSB0aGUgc2tp YSBkZWZhdWx0IHNldHRpbmdzLgorKyNpZiBkZWZpbmVkKFNLX0NQVV9CRU5ESUFOKQorKyNkZWZp bmUgU0tfQTMyX1NISUZUICAgIDAKKysjZGVmaW5lIFNLX1IzMl9TSElGVCAgICA4CisrI2RlZmlu ZSBTS19HMzJfU0hJRlQgICAgMTYKKysjZGVmaW5lIFNLX0IzMl9TSElGVCAgICAyNAorKyNlbHNl CisgI2RlZmluZSBTS19BMzJfU0hJRlQgICAgMjQKKyAjZGVmaW5lIFNLX1IzMl9TSElGVCAgICAx NgorICNkZWZpbmUgU0tfRzMyX1NISUZUICAgIDgKKyAjZGVmaW5lIFNLX0IzMl9TSElGVCAgICAw CisgI2VuZGlmCisrI2VuZGlmCisgCisgI2lmIGRlZmluZWQoU0tfQlVJTERfRk9SX01BQykKKyAK K0BAIC0xMDgsMTcgKzExNSw2IEBAIFNLX0FQSSB2b2lkIFNrRGVidWdmX0ZpbGVMaW5lKGNvbnN0 IGNoYXIqIGZpbGUsIGludCBsaW5lLCBib29sIGZhdGFsLAorIC8vIHdlIHNob3VsZCByZXZpc2l0 IHRoaXMgY2hvaWNlLi4uCisgI2RlZmluZSBTS19VU0VfRlJFRVRZUEVfRU1CT0xERU4KKyAKKy0j aWYgZGVmaW5lZChTS19CVUlMRF9GT1JfVU5JWCkgJiYgZGVmaW5lZChTS19DUFVfQkVORElBTikK Ky0vLyBBYm92ZSB3ZSBzZXQgdGhlIG9yZGVyIGZvciBBUkdCIGNoYW5uZWxzIGluIHJlZ2lzdGVy cy4gSSBzdXNwZWN0IHRoYXQsIG9uCistLy8gYmlnIGVuZGlhbiBtYWNoaW5lcywgeW91IGNhbiBr ZWVwIHRoaXMgdGhlIHNhbWUgYW5kIGV2ZXJ5dGhpbmcgd2lsbCB3b3JrLgorLS8vIFRoZSBpbi1t ZW1vcnkgb3JkZXIgd2lsbCBiZSBkaWZmZXJlbnQsIG9mIGNvdXJzZSwgYnV0IGFzIGxvbmcgYXMg ZXZlcnl0aGluZworLS8vIGlzIHJlYWRpbmcgbWVtb3J5IGFzIHdvcmRzIHJhdGhlciB0aGFuIGJ5 dGVzLCBpdCB3aWxsIGFsbCB3b3JrLiBIb3dldmVyLCBpZgorLS8vIHlvdSBmaW5kIHRoYXQgY29s b3VycyBhcmUgbWVzc2VkIHVwIEkgdGhvdWdodCB0aGF0IEkgd291bGQgbGVhdmUgYSBoZWxwZnVs CistLy8gbG9jYXRvciBmb3IgeW91LiBBbHNvIHNlZSB0aGUgY29tbWVudHMgaW4KKy0vLyBiYXNl L2dmeC9iaXRtYXBfcGxhdGZvcm1fZGV2aWNlX2xpbnV4LmgKKy0jZXJyb3IgUmVhZCB0aGUgY29t bWVudCBhdCB0aGlzIGxvY2F0aW9uCistI2VuZGlmCistCisgI2VuZGlmCisgCisgLy8gVGhlIGRl ZmF1bHQgY3Jhc2ggbWFjcm8gd3JpdGVzIHRvIGJhZGJlZWYgd2hpY2ggY2FuIGNhdXNlIHNvbWUg c3RyYW5nZQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9za2lhL2V4dC9p bWFnZV9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NraWEvZXh0L2ltYWdlX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKK0BAIC0xOCw5 ICsxOCwxMSBAQAorICNpbmNsdWRlICJza2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zLmgiCisgI2lu Y2x1ZGUgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oIgorICNpbmNsdWRlICJ0 aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0JpdG1hcC5oIgorKyNpbmNsdWRlICJ0aGly ZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NvbG9yUHJpdi5oIgorICNpbmNsdWRlICJ0aGly ZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NvbG9yU3BhY2UuaCIKKyAjaW5jbHVkZSAidGhp cmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tJbWFnZUluZm8uaCIKKyAjaW5jbHVkZSAidGhp cmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCisrI2luY2x1ZGUgInRoaXJkX3Bh cnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrVW5QcmVNdWx0aXBseS5oIgorICNpbmNsdWRlICJ1aS9n ZngvY29kZWMvcG5nX2NvZGVjLmgiCisgI2luY2x1ZGUgInVpL2dmeC9nZW9tZXRyeS9zaXplLmgi CisgCitAQCAtMTUxLDcgKzE1Myw3IEBAIHZvaWQgRHJhd0NoZWNrZXJUb0JpdG1hcChpbnQgdywg aW50IGgsCisgCisgICAgICAgYm9vbCB1c2VfY29sb3IyID0gKHhfYml0ICE9IHlfYml0KTsgIC8v IHhvcgorIAorLSAgICAgICpibXAtPmdldEFkZHIzMih4LCB5KSA9ICh1c2VfY29sb3IyID8gY29s b3IyIDogY29sb3IxKTsKKysgICAgICAqYm1wLT5nZXRBZGRyMzIoeCwgeSkgPSBTa1ByZU11bHRp cGx5Q29sb3IodXNlX2NvbG9yMiA/IGNvbG9yMiA6IGNvbG9yMSk7CisgICAgIH0KKyAgIH0KKyB9 CitAQCAtMjczLDcgKzI3NSw3IEBAIHZvaWQgQ2hlY2tSZXNpemVNZXRob2RTaG91bGRBdmVyYWdl R3JpZCgKKyAgICAgICAgIHN0ZDo6bWF4KHRlc3RlZF9waXhlbC5tYXhfY29sb3JfZGlzdGFuY2Us CisgICAgICAgICAgICAgICAgICB0ZXN0ZWRfbWV0aG9kLm1heF9jb2xvcl9kaXN0YW5jZV9vdmVy cmlkZSk7CisgCistICAgIGNvbnN0IFNrQ29sb3IgYWN0dWFsX2NvbG9yID0gKmRlc3QuZ2V0QWRk cjMyKHgsIHkpOworKyAgICBjb25zdCBTa0NvbG9yIGFjdHVhbF9jb2xvciA9IFNrVW5QcmVNdWx0 aXBseTo6UE1Db2xvclRvQ29sb3IoKmRlc3QuZ2V0QWRkcjMyKHgsIHkpKTsKKyAKKyAgICAgLy8g Q2hlY2sgdGhhdCB0aGUgcGl4ZWxzIGF3YXkgZnJvbSB0aGUgYm9yZGVyIHJlZ2lvbiBhcmUgdmVy eSBjbG9zZQorICAgICAvLyB0byB0aGUgZXhwZWN0ZWQgYXZlcmFnZSBjb2xvcgorQEAgLTUyOCw3 ICs1MzAsNyBAQCBURVNUKEltYWdlT3BlcmF0aW9ucywgU2NhbGVVcCkgeworICAgZm9yIChpbnQg c3JjX3kgPSAwOyBzcmNfeSA8IHNyY19oOyArK3NyY195KSB7CisgICAgIGZvciAoaW50IHNyY194 ID0gMDsgc3JjX3ggPCBzcmNfdzsgKytzcmNfeCkgeworICAgICAgICpzcmMuZ2V0QWRkcjMyKHNy Y194LCBzcmNfeSkgPQorLSAgICAgICAgICBTa0NvbG9yU2V0QVJHQigyNTUsIDEwICsgc3JjX3gg KiAxMDAsIDEwICsgc3JjX3kgKiAxMDAsIDApOworKyAgICAgICAgICBTa1BhY2tBUkdCMzIoMjU1 LCAxMCArIHNyY194ICogMTAwLCAxMCArIHNyY195ICogMTAwLCAwKTsKKyAgICAgfQorICAgfQor IAorQEAgLTU1Miw3ICs1NTQsNyBAQCBURVNUKEltYWdlT3BlcmF0aW9ucywgU2NhbGVVcCkgewor ICAgICAgICAgICAgICAgbGFuY3pvczMoc3JjX3ggKyAwLjUgLSBkc3RfeF9pbl9zcmMpICoKKyAg ICAgICAgICAgICAgIGxhbmN6b3MzKHNyY195ICsgMC41IC0gZHN0X3lfaW5fc3JjKTsKKyAgICAg ICAgICAgc3VtICs9IGNvZWZmOworLSAgICAgICAgICBTa0NvbG9yIHRtcCA9ICpzcmMuZ2V0QWRk cjMyKHNyY194LCBzcmNfeSk7CisrICAgICAgICAgIFNrQ29sb3IgdG1wID0gU2tVblByZU11bHRp cGx5OjpQTUNvbG9yVG9Db2xvcigqc3JjLmdldEFkZHIzMihzcmNfeCwgc3JjX3kpKTsKKyAgICAg ICAgICAgYSArPSBjb2VmZiAqIFNrQ29sb3JHZXRBKHRtcCk7CisgICAgICAgICAgIHIgKz0gY29l ZmYgKiBTa0NvbG9yR2V0Uih0bXApOworICAgICAgICAgICBnICs9IGNvZWZmICogU2tDb2xvckdl dEcodG1wKTsKK0BAIC01NzEsNyArNTczLDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxl VXApIHsKKyAgICAgICBpZiAociA+IDI1NS4wZikgciA9IDI1NS4wZjsKKyAgICAgICBpZiAoZyA+ IDI1NS4wZikgZyA9IDI1NS4wZjsKKyAgICAgICBpZiAoYiA+IDI1NS4wZikgYiA9IDI1NS4wZjsK Ky0gICAgICBTa0NvbG9yIGRzdF9jb2xvciA9ICpkc3QuZ2V0QWRkcjMyKGRzdF94LCBkc3RfeSk7 CisrICAgICAgU2tDb2xvciBkc3RfY29sb3IgPSBTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0Nv bG9yKCpkc3QuZ2V0QWRkcjMyKGRzdF94LCBkc3RfeSkpOworICAgICAgIEVYUEVDVF9MRShmYWJz KFNrQ29sb3JHZXRBKGRzdF9jb2xvcikgLSBhKSwgMS41Zik7CisgICAgICAgRVhQRUNUX0xFKGZh YnMoU2tDb2xvckdldFIoZHN0X2NvbG9yKSAtIHIpLCAxLjVmKTsKKyAgICAgICBFWFBFQ1RfTEUo ZmFicyhTa0NvbG9yR2V0Ryhkc3RfY29sb3IpIC0gZyksIDEuNWYpOworLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2VfY29udmVyc2lvbi5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2VfY29udmVyc2lvbi5jYworQEAgLTQ1Niw4ICs0NTYs OCBAQCB2b2lkIFVucGFjazxXZWJHTEltYWdlQ29udmVyc2lvbjo6a0RhdGFGb3JtYXRCR1JBOCwg dWludDhfdCwgdWludDhfdD4oCisgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzX3Bl cl9yb3c7ICsraSkgeworICAgICB1aW50MzJfdCBiZ3JhID0gc291cmNlMzJbaV07CisgI2lmIGRl ZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikKKy0gICAgdWludDMyX3QgYnJNYXNrID0gMHhmZjAw ZmYwMDsKKy0gICAgdWludDMyX3QgZ2FNYXNrID0gMHgwMGZmMDBmZjsKKysgICAgdWludDMyX3Qg YnJfbWFzayA9IDB4ZmYwMGZmMDA7CisrICAgIHVpbnQzMl90IGdhX21hc2sgPSAweDAwZmYwMGZm OworICNlbHNlCisgICAgIHVpbnQzMl90IGJyX21hc2sgPSAweDAwZmYwMGZmOworICAgICB1aW50 MzJfdCBnYV9tYXNrID0gMHhmZjAwZmYwMDsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1 L3dlYmdsX2ltYWdlX2NvbnZlcnNpb25fdGVzdC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGlj cy9ncHUvd2ViZ2xfaW1hZ2VfY29udmVyc2lvbl90ZXN0LmNjCitAQCAtNzYsOSArNzYsOSBAQCBU RVNUX0YoV2ViR0xJbWFnZUNvbnZlcnNpb25UZXN0LCBjb252ZXJ0QkdSQTh0b1JHQkE4KSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0NTY3ODg4LCAweDEyMzQ1Njc4LCAweDM0 NTY3ODg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMjM0NTY3OCwgMHgzNDU2 Nzg4OCwgMHgxMjM0NTY3OH07CisgI2lmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikKKy0g IHVpbnQzMl90IGV4cGVjdGVkRGF0YVs5XSA9IHsweDU2MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2 MzQxMjc4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Nzg1NjM0ODgsIDB4NTYz NDEyNzgsIDB4Nzg1NjM0ODgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NjM0 MTI3OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OH07CisrICB1aW50MzJfdCBleHBlY3RlZF9kYXRh WzldID0gezB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzgsCisrCQkJICAgICAgIDB4 Nzg1NjM0ODgsIDB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsCisrCQkJICAgICAgIDB4NTYzNDEyNzgs IDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzh9OworICNlbHNlCisgICB1aW50MzJfdCBleHBlY3RlZF9k YXRhWzldID0gezB4MTI3ODU2MzQsIDB4MzQ4ODc4NTYsIDB4MTI3ODU2MzQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MzQ4ODc4NTYsIDB4MTI3ODU2MzQsIDB4MzQ4ODc4NTYs CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dyYXBoaWNzX2NvbnRleHRfdGVzdC5jYworKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncmFwaGljc19jb250ZXh0X3Rlc3QuY2MKK0BAIC01Miw3 ICs1Miw3IEBAIG5hbWVzcGFjZSBibGluayB7CisgICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGZvciAoaW50IHkg PSBvcGFxdWVSZWN0LlkoKTsgeSA8IG9wYXF1ZVJlY3QuTWF4WSgpOyArK3kpICAgICBcCisgICAg ICAgZm9yIChpbnQgeCA9IG9wYXF1ZVJlY3QuWCgpOyB4IDwgb3BhcXVlUmVjdC5NYXhYKCk7ICsr eCkgeyBcCistICAgICAgICBpbnQgYWxwaGEgPSAqYml0bWFwLmdldEFkZHIzMih4LCB5KSA+PiAy NDsgICAgICAgICAgICAgICBcCisrICAgICAgICBpbnQgYWxwaGEgPSBTa0dldFBhY2tlZEEzMigq Yml0bWFwLmdldEFkZHIzMih4LCB5KSk7CSBcCisgICAgICAgICBFWFBFQ1RfRVEoMjU1LCBhbHBo YSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICB9 CitAQCAtNjEsMTIgKzYxLDE2IEBAIG5hbWVzcGFjZSBibGluayB7CisgICB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGZv ciAoaW50IHkgPSAwOyB5IDwgYml0bWFwLmhlaWdodCgpOyArK3kpICAgICAgICAgICAgICAgICBc CisgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBiaXRtYXAud2lkdGgoKTsgKyt4KSB7ICAgICAg ICAgICAgICBcCistICAgICAgICBpbnQgYWxwaGEgPSAqYml0bWFwLmdldEFkZHIzMih4LCB5KSA+ PiAyNDsgICAgICAgICAgICBcCisrICAgICAgICBpbnQgYWxwaGEgPSBTa0dldFBhY2tlZEEzMigq Yml0bWFwLmdldEFkZHIzMih4LCB5KSk7ICBcCisgICAgICAgICBib29sIG9wYXF1ZSA9IG9wYXF1 ZVJlY3QuQ29udGFpbnMoeCwgeSk7ICAgICAgICAgICAgICBcCisgICAgICAgICBFWFBFQ1RfRVEo b3BhcXVlLCBhbHBoYSA9PSAyNTUpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgfSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICB9CisgCisrc3RhdGljIGlubGluZSB1aW50MzJfdCBQYWNrQVJHQjMyKHVpbnQzMl90IGFyZ2Ip IHsKKysgIHJldHVybiBTa1BhY2tBUkdCMzJOb0NoZWNrKGFyZ2I+PjI0LCAoYXJnYjw8OCk+PjI0 LCAoYXJnYjw8MTYpPj4yNCwgKGFyZ2I8PDI0KT4+MjQpOworK30KKysKKyBURVNUKEdyYXBoaWNz Q29udGV4dFRlc3QsIFJlY29yZGluZykgeworICAgU2tCaXRtYXAgYml0bWFwOworICAgYml0bWFw LmFsbG9jTjMyUGl4ZWxzKDEwMCwgMTAwKTsKK0BAIC0xODQsMTAgKzE4OCwxMCBAQCBjbGFzcyBH cmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK KyBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1BWUJFX05vSGlnaENv bnRyYXN0KSB7CisgICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7CisgCistICBFWFBFQ1RfRVEoMHhm ZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmZmZm ZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAs ICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZjgwODA4MCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAw MDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFj a0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKysgIEVYUEVD VF9FUShQYWNrQVJHQjMyKDB4ZmY4MDgwODApLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwor IH0KKyAKKyAvLyBUT0RPKGNyYnVnLmNvbS84NTA3ODIpOiBSZWVuYWJsZSB0aGlzLgorQEAgLTIw NSwxMCArMjA5LDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwg TUFZQkVfSGlnaENvbnRyYXN0T2ZmKSB7CisgCisgICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Cisg CistICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKKy0g IEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOworLSAgRVhQ RUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7CistICBFWFBFQ1Rf RVEoMHhmZjgwODA4MCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKKysgIEVYUEVDVF9FUShQ YWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOworKyAgRVhQ RUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7 CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMy KDIsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmY4MDgwODApLCAqYml0bWFwXy5n ZXRBZGRyMzIoMywgMCkpOworIH0KKyAKKyAvLyBTaW1wbGUgaW52ZXJ0IGZvciB0ZXN0aW5nLiBF YWNoIGNvbG9yIGNvbXBvbmVudCB8Y3wKK0BAIC0yMjgsMTAgKzIzMiwxMCBAQCBURVNUX0YoR3Jh cGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1BWUJFX1NpbXBsZUludmVydEZvclRlc3Rp bmcpIHsKKyAKKyAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsKKyAKKy0gIEVYUEVDVF9FUSgweGZm ZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmYwMDAw MDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZjAwZmZmZiwg KmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmN2Y3ZjdmLCAqYml0 bWFwXy5nZXRBZGRyMzIoMywgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZm ZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigw eGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKKysgIEVYUEVDVF9FUShQYWNr QVJHQjMyKDB4ZmYwMGZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOworKyAgRVhQRUNU X0VRKFBhY2tBUkdCMzIoMHhmZjdmN2Y3ZiksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Cisg fQorIAorIC8vIEludmVydCBicmlnaHRuZXNzICh3aXRoIGdhbW1hIGNvcnJlY3Rpb24pLgorQEAg LTI1MCwxMCArMjU0LDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVz dCwgTUFZQkVfSW52ZXJ0QnJpZ2h0bmVzcykgeworIAorICAgRHJhd0NvbG9yc1RvQ29udGV4dCgp OworIAorLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7 CistICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKKy0g IEVYUEVDVF9FUSgweGZmMDBmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOworLSAgRVhQ RUNUX0VRKDB4ZmZkZGRkZGQsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7CisrICBFWFBFQ1Rf RVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKKysg IEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwg MCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwZmZmZiksICpiaXRtYXBfLmdldEFk ZHIzMigyLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZGRkZGRkKSwgKmJpdG1h cF8uZ2V0QWRkcjMyKDMsIDApKTsKKyB9CisgCisgLy8gSW52ZXJ0IGxpZ2h0bmVzcyAoaW4gSFNM IHNwYWNlKS4KK0BAIC0yNzIsMTAgKzI3NiwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGln aENvbnN0cmFzdFRlc3QsIE1BWUJFX0ludmVydExpZ2h0bmVzcykgeworIAorICAgRHJhd0NvbG9y c1RvQ29udGV4dCgpOworIAorLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFk ZHIzMigwLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMy KDEsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwg MCkpOworLSAgRVhQRUNUX0VRKDB4ZmZkZGRkZGQsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7 CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMy KDAsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5n ZXRBZGRyMzIoMSwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpi aXRtYXBfLmdldEFkZHIzMigyLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZGRk ZGRkKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKKyB9CisgCisgLy8gSW52ZXJ0IGxpZ2h0 bmVzcyBwbHVzIGdyYXlzY2FsZS4KK0BAIC0yODgsMTAgKzI5MiwxMCBAQCBURVNUX0YoR3JhcGhp Y3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIEludmVydExpZ2h0bmVzc1BsdXNHcmF5c2NhbGUp IHsKKyAKKyAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsKKyAKKy0gIEVYUEVDVF9FUSgweGZmZmZm ZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAs ICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZmUyZTJlMiwgKmJp dG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFw Xy5nZXRBZGRyMzIoMywgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiks ICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZm MDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJH QjMyKDB4ZmZlMmUyZTIpLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOworKyAgRVhQRUNUX0VR KFBhY2tBUkdCMzIoMHhmZmRkZGRkZCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7CisgfQor IAorIC8vIFRPRE8oY3JidWcuY29tLzg1MDc4Mik6IFJlZW5hYmxlIHRoaXMuCitAQCAtMzA5LDEw ICszMTMsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlC RV9JbnZlcnRMaWdodG5lc3NQbHVzQ29udHJhc3QpIHsKKyAKKyAgIERyYXdDb2xvcnNUb0NvbnRl eHQoKTsKKyAKKy0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwg MCkpOworLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7 CistICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKy0g IEVYUEVDVF9FUSgweGZmZWVlZWVlLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOworKyAgRVhQ RUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7 CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMy KDEsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAwMDApLCAqYml0bWFwXy5n ZXRBZGRyMzIoMiwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmVlZWVlZSksICpi aXRtYXBfLmdldEFkZHIzMigzLCAwKSk7CisgfQorIAorIH0gIC8vIG5hbWVzcGFjZSBibGluawor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9oaWdoY29udHJhc3QvaGlnaGNvbnRyYXN0X2NsYXNz aWZpZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvaGlnaGNvbnRyYXN0L2hpZ2hjb250 cmFzdF9jbGFzc2lmaWVyLmNjCitAQCAtMTA2MCw1NSArMTA2MCw0NyBAQCB2b2lkIERlcXVhbnRp emVNaW5GaXJzdChjb25zdCBpbnQzMl90IHJhbmssCisgCisgLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAvLyBDT05TVEFOVFMKKy0vLyBOb3RlIHRoYXQgZm9yIG5vdywgZW5kaWFubmVzcyBvZiB0 aGUgdGFyZ2V0IG1hY2hpbmUgbmVlZHMgdG8gbWF0Y2ggdGhhdCBvZgorLS8vIHRoZSBvbmUgdHJh aW5pbmcgd2FzIHBlcmZvcm1lZCBvbi4KKyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGNvbnN0 IGludDMyX3QgZG5uX2hpZGRlbmxheWVyXzBfd2VpZ2h0c19wYXJ0XzBfc2hhcGVbMl0gPSB7NCwg MTB9OworIGNvbnN0IHVuaW9uIHsKKy0gIHVpbnQ4X3QgYnl0ZXNbMTYwXTsKKyAgIGZsb2F0IHZh bHVlc1s0MF07CisgfSBkbm5faGlkZGVubGF5ZXJfMF93ZWlnaHRzX3BhcnRfMCA9IHt7CistICAg IDB4YmMsIDB4MjIsIDB4MGEsIDB4YmYsIDB4YjQsIDB4NDYsIDB4OGMsIDB4M2YsIDB4YmEsIDB4 MzEsIDB4MzQsIDB4YmUsCistICAgIDB4NGMsIDB4NjUsIDB4ZGIsIDB4YmUsIDB4ZjAsIDB4NTQs IDB4NWUsIDB4YmUsIDB4YzEsIDB4NWQsIDB4YjMsIDB4M2YsCistICAgIDB4ZjQsIDB4ZTYsIDB4 MTUsIDB4YmYsIDB4MDUsIDB4YzYsIDB4MzQsIDB4YmYsIDB4YzAsIDB4MzcsIDB4N2UsIDB4YmQs CistICAgIDB4NmMsIDB4MzUsIDB4MGIsIDB4YmYsIDB4Y2EsIDB4NTMsIDB4MjYsIDB4YmYsIDB4 NTgsIDB4YjQsIDB4ODcsIDB4M2YsCistICAgIDB4MzcsIDB4ZWUsIDB4MzksIDB4YmYsIDB4ZGEs IDB4ZmEsIDB4ZjksIDB4YmUsIDB4OTcsIDB4YzEsIDB4MDYsIDB4YmYsCistICAgIDB4ZjksIDB4 NGUsIDB4ODEsIDB4M2YsIDB4YjIsIDB4NDQsIDB4ODUsIDB4YmYsIDB4N2YsIDB4OTgsIDB4N2Ms IDB4M2QsCistICAgIDB4MTUsIDB4MjYsIDB4YmMsIDB4YmUsIDB4NWMsIDB4NDgsIDB4MDUsIDB4 M2YsIDB4YzgsIDB4YWEsIDB4YTEsIDB4YmQsCistICAgIDB4MzUsIDB4YjMsIDB4NDMsIDB4YmUs IDB4ZWIsIDB4NDYsIDB4OTEsIDB4M2YsIDB4ODAsIDB4NzEsIDB4ZTMsIDB4M2MsCistICAgIDB4 ZDEsIDB4OTgsIDB4NzksIDB4M2YsIDB4M2MsIDB4ZDAsIDB4MGQsIDB4YmYsIDB4MWUsIDB4MDIs IDB4ZDMsIDB4M2UsCistICAgIDB4NWQsIDB4NGIsIDB4YTIsIDB4YmYsIDB4NjgsIDB4YWMsIDB4 YWEsIDB4YmQsIDB4ZjgsIDB4ZTEsIDB4NzUsIDB4M2UsCistICAgIDB4NGEsIDB4OWMsIDB4Mjcs IDB4YmUsIDB4ZjgsIDB4YWUsIDB4YjIsIDB4YmUsIDB4N2YsIDB4OWQsIDB4OTEsIDB4M2YsCist ICAgIDB4MWUsIDB4OGIsIDB4YTgsIDB4YmUsIDB4MzUsIDB4N2UsIDB4YjIsIDB4M2YsIDB4YmUs IDB4OGMsIDB4ZDMsIDB4YmUsCistICAgIDB4ZjksIDB4Y2QsIDB4YjUsIDB4M2YsIDB4YTEsIDB4 NTAsIDB4YWEsIDB4M2YsIDB4ZTQsIDB4NmQsIDB4ZGQsIDB4YmUsCistICAgIDB4MGQsIDB4Y2Us IDB4ZDMsIDB4YmUsCisrICAgICAtMC41Mzk1OTI1MDQ1MDEzNDMsICAgMS4wOTU5MDc2ODgxNDA4 NywgLTAuMTc1OTcwOTQxNzgxOTk4LCAtMC40Mjg1MDcyMDg4MjQxNTgsCisrICAgICAtMC4yMTcx MjA4ODU4NDg5OTksICAgMS40MDEyOTg2NDIxNTg1MSwgICAtMC41ODU1NTUzMTUwMTc3LCAtMC43 MDYxNDY1MzgyNTc1OTksCisrICAgIC0wLjA2MjA2NDg4NjA5MzEzOTYsIC0wLjU0Mzc4MzkwMzEy MTk0OCwgLTAuNjQ5NzE2MDE5NjMwNDMyLCAgIDEuMDYwMTkxMTU0NDc5OTgsCisrICAgICAtMC43 MjYyOTExMjAwNTIzMzgsIC0wLjQ4ODI0MTk3MDUzOTA5MywgLTAuNTI2MzkxNDQ2NTkwNDI0LCAg IDEuMDEwMjIyNTU0MjA2ODUsCisrICAgICAgLTEuMDQxMTU4OTE0NTY2MDQsIDAuMDYxNjY4ODY5 MTA3OTYxNywgLTAuMzY3NDc4MDQyODQwOTU4LCAgMC41MjA2MzUzNjY0Mzk4MTksCisrICAgIC0w LjA3ODkzOTAyMDYzMzY5NzUsICAtMC4xOTExMTMzMDgwNzIwOSwgICAxLjEzNDk3Njc0NDY1MTc5 LCAwLjAyNzc2NDA4MTk1NDk1NjEsCisrICAgICAgMC45NzQ5ODgwNDMzMDgyNTgsIC0wLjU1Mzk1 ODY1NDQwMzY4NywgIDAuNDEyMTI1NTI3ODU4NzM0LCAgIC0xLjI2NzkyNDkwNDgyMzMsCisrICAg IC0wLjA4MzMzNjY1MTMyNTIyNTgsICAwLjI0MDExOTgxNDg3Mjc0MiwgLTAuMTYzNjgyMTMyOTU5 MzY2LCAgLTAuMzQ4OTkxMTU1NjI0MzksCisrICAgICAgICAxLjEzNzYxODg5OTM0NTQsIC0wLjMy OTE4NjM3OTkwOTUxNSwgICAgMS4zOTQ0NzY1MzI5MzYxLCAtMC40MTMxODMxNTI2NzU2MjksCisr ICAgICAgIDEuNDIwMzQ4Mjg2NjI4NzIsICAgMS4zMzA1ODU1OTg5NDU2MiwgLTAuNDMyNDc5MDIz OTMzNDExLCAtMC40MTM2ODE0MTc3MDM2MjkKKyB9fTsKKyBjb25zdCBpbnQzMl90IGRubl9oaWRk ZW5sYXllcl8wX2JpYXNlc19wYXJ0XzBfc2hhcGVbMV0gPSB7MTB9OworIGNvbnN0IHVuaW9uIHsK Ky0gIHVpbnQ4X3QgYnl0ZXNbNDBdOworICAgZmxvYXQgdmFsdWVzWzEwXTsKKyB9IGRubl9oaWRk ZW5sYXllcl8wX2JpYXNlc19wYXJ0XzAgPSB7eworLSAgICAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweGJmLCAweDZhLCAweDUzLCAweDNlLCAweGQzLCAweGMxLAorLSAgICAweGQwLCAweDNlLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI2LCAweGQ4LCAweGMwLCAweDNlLAorLSAgICAweGNh LCAweGU3LCAweDM1LCAweDNlLCAweDIzLCAweGE1LCAweDQ0LCAweDNmLCAweDYxLCAweGZkLAor LSAgICAweGQyLCAweDNlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGI2LCAweGUwLCAweDQz LCAweDNjLAorKyAgICAgICAgICAgICAgICAgICAgMC4wLCAgMC4yMDY0NjE4OTE1MzE5NDQsCisr ICAgICAgMC40MDc3Mjg3NjE0MzQ1NTUsICAgICAgICAgICAgICAgIDAuMCwKKysgICAgICAwLjM3 NjY1MzM3MzI0MTQyNSwgIDAuMTc3NjQyMDE3NjAyOTIxLAorKyAgICAgICAwLjc2ODE0NDc4NjM1 Nzg4LCAgMC40MTIwODkzNzc2NDE2NzgsCisrICAgICAgICAgICAgICAgICAgICAwLjAsIDAuMDEx OTU1NDMwNzMxMTc3MworIH19OworIGNvbnN0IGludDMyX3QgZG5uX2xvZ2l0c19iaWFzZXNfcGFy dF8wX3NoYXBlWzFdID0gezF9OworIGNvbnN0IHVuaW9uIHsKKy0gIHVpbnQ4X3QgYnl0ZXNbNF07 CisgICBmbG9hdCB2YWx1ZXNbMV07CisgfSBkbm5fbG9naXRzX2JpYXNlc19wYXJ0XzAgPSB7ewor LSAgICAweDc1LCAweGNhLCAweGQ3LCAweGJlLAorKyAgICAtMC40MjE0NjY0OTk1NjcwMzIKKyB9 fTsKKyBjb25zdCBpbnQzMl90IGRubl9sb2dpdHNfd2VpZ2h0c19wYXJ0XzBfc2hhcGVbMl0gPSB7 MTAsIDF9OworIGNvbnN0IHVuaW9uIHsKKy0gIHVpbnQ4X3QgYnl0ZXNbNDBdOworICAgZmxvYXQg dmFsdWVzWzEwXTsKKyB9IGRubl9sb2dpdHNfd2VpZ2h0c19wYXJ0XzAgPSB7eworLSAgICAweDEz LCAweDEyLCAweDM5LCAweDNmLCAweGYzLCAweGE1LCAweGMyLCAweGJmLCAweDgxLCAweDdmLAor LSAgICAweGJlLCAweDNmLCAweGY4LCAweDE3LCAweDI2LCAweDNlLCAweGE0LCAweDE5LCAweGE2 LCAweDNmLAorLSAgICAweGYwLCAweGM5LCAweGI3LCAweGJmLCAweDZhLCAweDk5LCAweGQyLCAw eDNmLCAweDhhLCAweDdkLAorLSAgICAweGU5LCAweDNmLCAweDgzLCAweDlhLCAweDNhLCAweGJm LCAweGYxLCAweDZjLCAweDA4LCAweDNlLAorKyAgICAgIDAuNzIyOTMyMDQwNjkxMzc2LCAgLTEu NTIwNjg5MzY4MjQ3OTksCisrICAgICAgIDEuNDg4MjY2MTEwNDIwMjMsICAwLjE2MjIwMDgwODUy NTA4NSwKKysgICAgICAgMS4yOTc2NTc0ODk3NzY2MSwgIC0xLjQzNTg1MDE0MzQzMjYyLAorKyAg ICAgICAxLjY0NTMwNjgyNTYzNzgyLCAgIDEuODI0MTQzNjQ4MTQ3NTgsCisrICAgICAtMC43Mjg5 MjAxNjE3MjQwOTEsICAwLjEzMzIyODA3ODQ4NDUzNQorIH19OworIAorIH0gIC8vIGFub255bW91 cyBuYW1lc3BhY2UKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL2JtcF9pbWFn ZV9yZWFkZXIuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvYm1wX2ltYWdl X3JlYWRlci5oCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvYWxsb2NhdG9yLmgiCisgI2luY2x1ZGUgInRoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9jcHUuaCIKKyAjaW5jbHVkZSAidGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL25vbmNvcHlhYmxlLmgiCisrI2luY2x1 ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgorIAorIG5hbWVzcGFjZSBibGluayB7CisgCitAQCAt NTAsMTEgKzUxLDExIEBAIGNsYXNzIFBMQVRGT1JNX0VYUE9SVCBCTVBJbWFnZVJlYWRlciBmaW5h bCB7CisgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8YnVmZmVyfCwgY29udmVydGluZyB0byBhbiBp bnQgYXNzdW1pbmcgbGl0dGxlCisgICAvLyBlbmRpYW5uZXNzCisgICBzdGF0aWMgaW5saW5lIHVp bnQxNl90IFJlYWRVaW50MTYoY29uc3QgY2hhciogYnVmZmVyKSB7CistICAgIHJldHVybiAqcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGJ1ZmZlcik7CisrICAgIHJldHVybiBiYXNl OjpCeXRlU3dhcFRvTEUxNigqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGJ1ZmZl cikpOworICAgfQorIAorICAgc3RhdGljIGlubGluZSB1aW50MzJfdCBSZWFkVWludDMyKGNvbnN0 IGNoYXIqIGJ1ZmZlcikgeworLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu dDMyX3QqPihidWZmZXIpOworKyAgICByZXR1cm4gYmFzZTo6Qnl0ZVN3YXBUb0xFMzIoKnJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZmZXIpKTsKKyAgIH0KKyAKKyAgIC8vIHxw YXJlbnR8IGlzIHRoZSBkZWNvZGVyIHRoYXQgb3ducyB1cy4KKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1h Z2UtZGVjb2RlcnMvanBlZy9qcGVnX2ltYWdlX2RlY29kZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v aW1hZ2UtZGVjb2RlcnMvanBlZy9qcGVnX2ltYWdlX2RlY29kZXIuY2MKK0BAIC00OSwyMyArNDks MzAgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPHNldGptcC5oPgorIH0KKyAKKy0jaWYgZGVm aW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQorLSNlcnJvciBCbGluayBhc3N1bWVzIGEgbGl0dGxl LWVuZGlhbiB0YXJnZXQuCistI2VuZGlmCistCisgI2lmIGRlZmluZWQoSkNTX0FMUEhBX0VYVEVO U0lPTlMpCisgI2RlZmluZSBUVVJCT19KUEVHX1JHQl9TV0laWkxFCistI2lmIFNLX0IzMl9TSElG VCAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gUkdCQSBwaXhlbHMgKEFuZHJvaWQpLgorKyNpZiBT S19QTUNPTE9SX0JZVEVfT1JERVIoUiwgRywgQiwgQSkKKyBpbmxpbmUgSl9DT0xPUl9TUEFDRSBy Z2JPdXRwdXRDb2xvclNwYWNlKCkgeworICAgcmV0dXJuIEpDU19FWFRfUkdCQTsKKyB9CistI2Vs c2UgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIEJHUkEgcGl4ZWxzLgorKyNlbGlmIFNLX1BNQ09M T1JfQllURV9PUkRFUihCLCBHLCBSLCBBKQorIGlubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1 dENvbG9yU3BhY2UoKSB7CisgICByZXR1cm4gSkNTX0VYVF9CR1JBOworIH0KKysjZWxpZiBTS19Q TUNPTE9SX0JZVEVfT1JERVIoQSwgUiwgRywgQikKKytpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JP dXRwdXRDb2xvclNwYWNlKCkgeworKyAgcmV0dXJuIEpDU19FWFRfQVJHQjsKKyt9CisrI2VsaWYg U0tfUE1DT0xPUl9CWVRFX09SREVSKEEsIEIsIEcsIFIpCisraW5saW5lIEpfQ09MT1JfU1BBQ0Ug cmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKKysgIHJldHVybiBKQ1NfRVhUX0FCR1I7CisrfQorKyNl bHNlCisrI2Vycm9yIENvbXBvbmVudCBvcmRlciBub3Qgc3VwcG9ydGVkIGJ5IGxpYmpwZWdfdHVy Ym8KKyAjZW5kaWYKKyBpbmxpbmUgYm9vbCB0dXJib1N3aXp6bGVkKEpfQ09MT1JfU1BBQ0UgY29s b3JTcGFjZSkgeworLSAgcmV0dXJuIGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9SR0JBIHx8IGNvbG9y U3BhY2UgPT0gSkNTX0VYVF9CR1JBOworKyAgcmV0dXJuIGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9S R0JBIHx8IGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9CR1JBIHx8CisrICAgIGNvbG9yU3BhY2UgPT0g SkNTX0VYVF9BQkdSIHx8IGNvbG9yU3BhY2UgPT0gSkNTX0VYVF9BUkdCOworIH0KKyAjZWxzZQor IGlubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1dENvbG9yU3BhY2UoKSB7CistLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvd2VicF9pbWFnZV9kZWNvZGVyLmNjCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvd2VicF9pbWFnZV9kZWNvZGVyLmNjCitAQCAt MzIsMTggKzMyLDIwIEBACisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs YXRmb3JtL2hpc3RvZ3JhbS5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUv Y29yZS9Ta0RhdGEuaCIKKyAKKy0jaWYgZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQorLSNl cnJvciBCbGluayBhc3N1bWVzIGEgbGl0dGxlLWVuZGlhbiB0YXJnZXQuCistI2VuZGlmCistCist I2lmIFNLX0IzMl9TSElGVCAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gUkdCQSBwaXhlbHMgKEFu ZHJvaWQpLgorKyNpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoUiwgRywgQiwgQSkKKyBpbmxpbmUg V0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsKKyAgIHJldHVybiBoYXNB bHBoYSA/IE1PREVfcmdiQSA6IE1PREVfUkdCQTsKKyB9CistI2Vsc2UgIC8vIE91dHB1dCBsaXR0 bGUtZW5kaWFuIEJHUkEgcGl4ZWxzLgorKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihCLCBH LCBSLCBBKQorIGlubGluZSBXRUJQX0NTUF9NT0RFIG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkg eworICAgcmV0dXJuIGhhc0FscGhhID8gTU9ERV9iZ3JBIDogTU9ERV9CR1JBOworIH0KKysjZWxp ZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQSwgUiwgRywgQikKKytpbmxpbmUgV0VCUF9DU1BfTU9E RSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsKKysgIHJldHVybiBoYXNBbHBoYSA/IE1PREVf QXJnYiA6IE1PREVfQVJHQjsKKyt9CisrI2Vsc2UKKysjZXJyb3IgQ29tcG9uZW50IG9yZGVyIG5v dCBzdXBwb3J0ZWQgYnkgbGlid2VicAorICNlbmRpZgorIAorIG5hbWVzcGFjZSB7CistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv Y3J5cHRvL2FzbjEvYV9pbnQuYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9hc24xL2FfaW50LmMKK0BAIC0zNjks NyArMzY5LDkgQEAgaW50IEFTTjFfSU5URUdFUl9zZXRfdWludDY0KEFTTjFfSU5URUdFUiAqb3V0 LCB1aW50NjRfdCB2KQorIAorICAgICBPUEVOU1NMX2ZyZWUob3V0LT5kYXRhKTsKKyAgICAgb3V0 LT5kYXRhID0gbmV3ZGF0YTsKKysjaWZuZGVmIE9QRU5TU0xfQklHRU5ESUFOCisgICAgIHYgPSBD UllQVE9fYnN3YXA4KHYpOworKyNlbmRpZgorICAgICBtZW1jcHkob3V0LT5kYXRhLCAmdiwgc2l6 ZW9mKHYpKTsKKyAKKyAgICAgb3V0LT50eXBlID0gVl9BU04xX0lOVEVHRVI7CistLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5 cHRvL2NoYWNoYS9jaGFjaGEuYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jaGFjaGEvY2hhY2hhLmMKK0BAIC0y OSw2ICsyOSwxNCBAQAorICAgKCgodWludDMyX3QpKChwKVswXSkpIHwgKCh1aW50MzJfdCkoKHAp WzFdKSA8PCA4KSB8IFwKKyAgICAoKHVpbnQzMl90KSgocClbMl0pIDw8IDE2KSB8ICgodWludDMy X3QpKChwKVszXSkgPDwgMjQpKQorIAorKyNkZWZpbmUgVTMyVE84X0xJVFRMRShwLCB2KSAgICBc CisrICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgKHApWzBdID0gKHYgPj4g MCkgJiAweGZmOyAgXAorKyAgICAocClbMV0gPSAodiA+PiA4KSAmIDB4ZmY7ICBcCisrICAgIChw KVsyXSA9ICh2ID4+IDE2KSAmIDB4ZmY7IFwKKysgICAgKHApWzNdID0gKHYgPj4gMjQpICYgMHhm ZjsgXAorKyAgfQorKworIC8vIHNpZ21hIGNvbnRhaW5zIHRoZSBDaGFDaGEgY29uc3RhbnRzLCB3 aGljaCBoYXBwZW4gdG8gYmUgYW4gQVNDSUkgc3RyaW5nLgorIHN0YXRpYyBjb25zdCB1aW50OF90 IHNpZ21hWzE2XSA9IHsgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsICdkJywgJyAnLCAnMycsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMicsICctJywgJ2InLCAneScsICd0 JywgJ2UnLCAnICcsICdrJyB9OworQEAgLTQ1LDkgKzUzLDI3IEBAIHN0YXRpYyBjb25zdCB1aW50 OF90IHNpZ21hWzE2XSA9IHsgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsICdkJywgJyAnLCAnMycs Cisgdm9pZCBDUllQVE9faGNoYWNoYTIwKHVpbnQ4X3Qgb3V0WzMyXSwgY29uc3QgdWludDhfdCBr ZXlbMzJdLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IG5vbmNlWzE2XSkg eworICAgdWludDMyX3QgeFsxNl07CistICBPUEVOU1NMX21lbWNweSh4LCBzaWdtYSwgc2l6ZW9m KHNpZ21hKSk7CistICBPUEVOU1NMX21lbWNweSgmeFs0XSwga2V5LCAzMik7CistICBPUEVOU1NM X21lbWNweSgmeFsxMl0sIG5vbmNlLCAxNik7CisrICBpbnQgaTsKKysKKysgIHhbMF0gPSBVOFRP MzJfTElUVExFKHNpZ21hICsgMCk7CisrICB4WzFdID0gVThUTzMyX0xJVFRMRShzaWdtYSArIDQp OworKyAgeFsyXSA9IFU4VE8zMl9MSVRUTEUoc2lnbWEgKyA4KTsKKysgIHhbM10gPSBVOFRPMzJf TElUVExFKHNpZ21hICsgMTIpOworKworKyAgeFs0XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMCk7 CisrICB4WzVdID0gVThUTzMyX0xJVFRMRShrZXkgKyA0KTsKKysgIHhbNl0gPSBVOFRPMzJfTElU VExFKGtleSArIDgpOworKyAgeFs3XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMTIpOworKworKyAg eFs4XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMTYpOworKyAgeFs5XSA9IFU4VE8zMl9MSVRUTEUo a2V5ICsgMjApOworKyAgeFsxMF0gPSBVOFRPMzJfTElUVExFKGtleSArIDI0KTsKKysgIHhbMTFd ID0gVThUTzMyX0xJVFRMRShrZXkgKyAyOCk7CisrCisrICB4WzEyXSA9IFU4VE8zMl9MSVRUTEUo bm9uY2UgKyAwKTsKKysgIHhbMTNdID0gVThUTzMyX0xJVFRMRShub25jZSArIDQpOworKyAgeFsx NF0gPSBVOFRPMzJfTElUVExFKG5vbmNlICsgOCk7CisrICB4WzE1XSA9IFU4VE8zMl9MSVRUTEUo bm9uY2UgKyAxMik7CisgCisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyBpICs9IDIpIHsK KyAgICAgUVVBUlRFUlJPVU5EKDAsIDQsIDgsIDEyKQorQEAgLTYwLDggKzg2LDEwIEBAIHZvaWQg Q1JZUFRPX2hjaGFjaGEyMCh1aW50OF90IG91dFszMl0sIGNvbnN0IHVpbnQ4X3Qga2V5WzMyXSwK KyAgICAgUVVBUlRFUlJPVU5EKDMsIDQsIDksIDE0KQorICAgfQorIAorLSAgT1BFTlNTTF9tZW1j cHkob3V0LCAmeFswXSwgc2l6ZW9mKHVpbnQzMl90KSAqIDQpOworLSAgT1BFTlNTTF9tZW1jcHko Jm91dFsxNl0sICZ4WzEyXSwgc2l6ZW9mKHVpbnQzMl90KSAqIDQpOworKyAgZm9yIChpID0gMDsg aSA8IDQ7ICsraSkgeworKyAgICBVMzJUTzhfTElUVExFKG91dCArIDQgKiBpLCB4W2ldKTsKKysg ICAgVTMyVE84X0xJVFRMRSgmb3V0WzE2XSArIDQgKiBpLCB4WzEyK2ldKTsKKysgIH0KKyB9Cisg CisgI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fQVNNKSAmJiAgICAgICAgICAgICAgICAgICAgICAg ICBcCitAQCAtMTA1LDE0ICsxMzMsNiBAQCB2b2lkIENSWVBUT19jaGFjaGFfMjAodWludDhfdCAq b3V0LCBjb25zdCB1aW50OF90ICppbiwgc2l6ZV90IGluX2xlbiwKKyAKKyAjZWxzZQorIAorLSNk ZWZpbmUgVTMyVE84X0xJVFRMRShwLCB2KSAgICBcCistICB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKy0gICAgKHApWzBdID0gKHYgPj4gMCkgJiAweGZmOyAgXAorLSAgICAocClbMV0g PSAodiA+PiA4KSAmIDB4ZmY7ICBcCistICAgIChwKVsyXSA9ICh2ID4+IDE2KSAmIDB4ZmY7IFwK Ky0gICAgKHApWzNdID0gKHYgPj4gMjQpICYgMHhmZjsgXAorLSAgfQorLQorIC8vIGNoYWNoYV9j b3JlIHBlcmZvcm1zIDIwIHJvdW5kcyBvZiBDaGFDaGEgb24gdGhlIGlucHV0IHdvcmRzIGluCisg Ly8gfGlucHV0fCBhbmQgd3JpdGVzIHRoZSA2NCBvdXRwdXQgYnl0ZXMgdG8gfG91dHB1dHwuCisg c3RhdGljIHZvaWQgY2hhY2hhX2NvcmUodWludDhfdCBvdXRwdXRbNjRdLCBjb25zdCB1aW50MzJf dCBpbnB1dFsxNl0pIHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2lwaGVyX2V4dHJhL2VfYWVzZ2Ntc2l2LmMK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5n c3NsL3NyYy9jcnlwdG8vY2lwaGVyX2V4dHJhL2VfYWVzZ2Ntc2l2LmMKK0BAIC02MjUsNyArNjI1 LDExIEBAIHN0YXRpYyB2b2lkIGdjbV9zaXZfY3J5cHQodWludDhfdCAqb3V0LCBjb25zdCB1aW50 OF90ICppbiwgc2l6ZV90IGluX2xlbiwKKyAgIGZvciAoc2l6ZV90IGRvbmUgPSAwOyBkb25lIDwg aW5fbGVuOykgeworICAgICB1aW50OF90IGtleXN0cmVhbVtBRVNfQkxPQ0tfU0laRV07CisgICAg IGVuY19ibG9jayhjb3VudGVyLmMsIGtleXN0cmVhbSwga2V5KTsKKysjaWZkZWYgT1BFTlNTTF9C SUdFTkRJQU4KKysgICAgY291bnRlci53WzBdID0gQ1JZUFRPX2Jzd2FwNChDUllQVE9fYnN3YXA0 KGNvdW50ZXIud1swXSkgKyAxKTsKKysjZWxzZQorICAgICBjb3VudGVyLndbMF0rKzsKKysjZW5k aWYKKyAKKyAgICAgc2l6ZV90IHRvZG8gPSBBRVNfQkxPQ0tfU0laRTsKKyAgICAgaWYgKGluX2xl biAtIGRvbmUgPCB0b2RvKSB7CitAQCAtNjczLDggKzY3NywxMyBAQCBzdGF0aWMgdm9pZCBnY21f c2l2X3BvbHl2YWwoCisgICAgIH0gYml0bGVuczsKKyAgIH0gbGVuZ3RoX2Jsb2NrOworIAorKyNp ZmRlZiBPUEVOU1NMX0JJR0VORElBTgorKyAgbGVuZ3RoX2Jsb2NrLmJpdGxlbnMuYWQgPSBDUllQ VE9fYnN3YXA4KGFkX2xlbiAqIDgpOworKyAgbGVuZ3RoX2Jsb2NrLmJpdGxlbnMuaW4gPSBDUllQ VE9fYnN3YXA4KGluX2xlbiAqIDgpOworKyNlbHNlCisgICBsZW5ndGhfYmxvY2suYml0bGVucy5h ZCA9IGFkX2xlbiAqIDg7CisgICBsZW5ndGhfYmxvY2suYml0bGVucy5pbiA9IGluX2xlbiAqIDg7 CisrI2VuZGlmCisgICBDUllQVE9fUE9MWVZBTF91cGRhdGVfYmxvY2tzKCZwb2x5dmFsX2N0eCwg bGVuZ3RoX2Jsb2NrLmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihs ZW5ndGhfYmxvY2spKTsKKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY29tcGlsZXJfdGVzdC5jYworKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L2NyeXB0by9jb21waWxlcl90ZXN0LmNjCitAQCAtNDAsOSArNDAsMTMgQEAgc3RhdGljIHZvaWQg Q2hlY2tSZXByZXNlbnRhdGlvbihUIHZhbHVlKSB7CisgICBVbnNpZ25lZFQgdmFsdWVfdSA9IHN0 YXRpY19jYXN0PFVuc2lnbmVkVD4odmFsdWUpOworICAgRVhQRUNUX0VRKHNpemVvZihVbnNpZ25l ZFQpLCBzaXplb2YoVCkpOworIAorLSAgLy8gSW50ZWdlcnMgbXVzdCBiZSBsaXR0bGUtZW5kaWFu LgorKyAgLy8gSW50ZWdlcnMgbXVzdCBiZSBlaXRoZXIgYmlnLWVuZGlhbiBvciBsaXR0bGUtZW5k aWFuLgorICAgdWludDhfdCBleHBlY3RlZFtzaXplb2YoVW5zaWduZWRUKV07CisrI2lmZGVmIE9Q RU5TU0xfQklHRU5ESUFOCisrICBmb3IgKHNpemVfdCBpID0gc2l6ZW9mKFVuc2lnbmVkVCk7IGkt LSA+IDA7ICkgeworKyNlbHNlCisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihVbnNp Z25lZFQpOyBpKyspIHsKKysjZW5kaWYKKyAgICAgZXhwZWN0ZWRbaV0gPSBzdGF0aWNfY2FzdDx1 aW50OF90Pih2YWx1ZV91KTsKKyAgICAgLy8gRGl2aWRlIGluc3RlYWQgb2YgcmlnaHQtc2hpZnQg dG8gYXBwZWFzZSBjb21waWxlcnMgdGhhdCB3YXJuIGlmIHxUfCBpcyBhCisgICAgIC8vIGNoYXIu IFRoZSBleHBsaWNpdCBjYXN0IGlzIGFsc28gbmVlZGVkIHRvIGFwcGVhc2UgTVNWQyBpZiBpbnRl Z2VyCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jv cmluZ3NzbC9zcmMvY3J5cHRvL2N1cnZlMjU1MTkvc3Bha2UyNTUxOS5jCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRv L2N1cnZlMjU1MTkvc3Bha2UyNTUxOS5jCitAQCAtMzM5LDggKzMzOSwxNyBAQCBzdGF0aWMgdm9p ZCBzY2FsYXJfZG91YmxlKHNjYWxhciAqcykgeworICAgdWludDMyX3QgY2FycnkgPSAwOworIAor ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKKy0gICAgY29uc3QgdWludDMyX3Qg Y2Fycnlfb3V0ID0gcy0+d29yZHNbaV0gPj4gMzE7CistICAgIHMtPndvcmRzW2ldID0gKHMtPndv cmRzW2ldIDw8IDEpIHwgY2Fycnk7CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICAgIGNv bnN0IHVpbnQzMl90IHNpID0gQ1JZUFRPX2Jzd2FwNChzLT53b3Jkc1tpXSk7CisrI2Vsc2UKKysg ICAgY29uc3QgdWludDMyX3Qgc2kgPSBzLT53b3Jkc1tpXTsKKysjZW5kaWYKKysgICAgY29uc3Qg dWludDMyX3QgY2Fycnlfb3V0ID0gc2kgPj4gMzE7CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFO CisrICAgIHMtPndvcmRzW2ldID0gQ1JZUFRPX2Jzd2FwNCgoc2kgPDwgMSkgfCBjYXJyeSk7Cisr I2Vsc2UKKysgICAgcy0+d29yZHNbaV0gPSAoc2kgPDwgMSkgfCBjYXJyeTsKKysjZW5kaWYKKyAg ICAgY2FycnkgPSBjYXJyeV9vdXQ7CisgICB9CisgfQorQEAgLTM1MCw4ICszNTksMTMgQEAgc3Rh dGljIHZvaWQgc2NhbGFyX2FkZChzY2FsYXIgKmRlc3QsIGNvbnN0IHNjYWxhciAqc3JjKSB7Cisg ICB1aW50MzJfdCBjYXJyeSA9IDA7CisgCisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkr KykgeworKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgorKyAgICB1aW50NjRfdCB0bXAgPSAoKHVp bnQ2NF90KUNSWVBUT19ic3dhcDQoZGVzdC0+d29yZHNbaV0pICsgQ1JZUFRPX2Jzd2FwNChzcmMt PndvcmRzW2ldKSkgKyBjYXJyeTsKKysgICAgZGVzdC0+d29yZHNbaV0gPSBDUllQVE9fYnN3YXA0 KCh1aW50MzJfdCl0bXApOworKyNlbHNlCisgICAgIHVpbnQ2NF90IHRtcCA9ICgodWludDY0X3Qp ZGVzdC0+d29yZHNbaV0gKyBzcmMtPndvcmRzW2ldKSArIGNhcnJ5OworICAgICBkZXN0LT53b3Jk c1tpXSA9ICh1aW50MzJfdCl0bXA7CisrI2VuZGlmCisgICAgIGNhcnJ5ID0gKHVpbnQzMl90KSh0 bXAgPj4gMzIpOworICAgfQorIH0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZXZwL3NjcnlwdC5jCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv Y3J5cHRvL2V2cC9zY3J5cHQuYworQEAgLTE5NiwxMCArMTk2LDI4IEBAIGludCBFVlBfUEJFX3Nj cnlwdChjb25zdCBjaGFyICpwYXNzd29yZCwgc2l6ZV90IHBhc3N3b3JkX2xlbiwKKyAgICAgZ290 byBlcnI7CisgICB9CisgCisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICB1aW50MzJfdCAq QjMyID0gQi0+d29yZHM7CisrICBzaXplX3QgQl93b3JkcyA9IEJfYnl0ZXMgPj4gMjsKKysgIGRv IHsKKysgICAgKkIzMiA9IENSWVBUT19ic3dhcDQoKkIzMik7CisrICAgIEIzMisrOworKyAgfSB3 aGlsZSgtLUJfd29yZHMpOworKyNlbmRpZgorKworICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8 IHA7IGkrKykgeworICAgICBzY3J5cHRST01peChCICsgMiAqIHIgKiBpLCByLCBOLCBULCBWKTsK KyAgIH0KKyAKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgIEIzMiA9IEItPndvcmRzOwor KyAgQl93b3JkcyA9IEJfYnl0ZXMgPj4gMjsKKysgIGRvIHsKKysgICAgKkIzMiA9IENSWVBUT19i c3dhcDQoKkIzMik7CisrICAgIEIzMisrOworKyAgfSB3aGlsZSgtLUJfd29yZHMpOworKyNlbmRp ZgorKworICAgaWYgKCFQS0NTNV9QQktERjJfSE1BQyhwYXNzd29yZCwgcGFzc3dvcmRfbGVuLCAo Y29uc3QgdWludDhfdCAqKUIsIEJfYnl0ZXMsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg IEVWUF9zaGEyNTYoKSwga2V5X2xlbiwgb3V0X2tleSkpIHsKKyAgICAgZ290byBlcnI7CistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vYnl0ZXMuYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxl L2JuL2J5dGVzLmMKK0BAIC0xMzYsOSArMTM2LDEzIEBAIEJJR05VTSAqQk5fbGUyYm4oY29uc3Qg dWludDhfdCAqaW4sIHNpemVfdCBsZW4sIEJJR05VTSAqcmV0KSB7CisgICAvLyBNYWtlIHN1cmUg dGhlIHRvcCBieXRlcyB3aWxsIGJlIHplcm9lZC4KKyAgIHJldC0+ZFtudW1fd29yZHMgLSAxXSA9 IDA7CisgCistICAvLyBXZSBvbmx5IHN1cHBvcnQgbGl0dGxlLWVuZGlhbiBwbGF0Zm9ybXMsIHNv IHdlIGNhbiBzaW1wbHkgbWVtY3B5IHRoZQorLSAgLy8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24u CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICB1aW50OF90ICpvdXQgPSAodWludDhfdCAq KXJldC0+ZDsKKysgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisrICAgIG91dFtp IF4gKEJOX0JZVEVTLTEpXSA9IGluW2ldOworKyNlbHNlCisgICBPUEVOU1NMX21lbWNweShyZXQt PmQsIGluLCBsZW4pOworKyNlbmRpZgorICAgcmV0dXJuIHJldDsKKyB9CisgCitAQCAtMTU3LDcg KzE2MSwxMSBAQCBzaXplX3QgQk5fYm4yYmluKGNvbnN0IEJJR05VTSAqaW4sIHVpbnQ4X3QgKm91 dCkgeworIHN0YXRpYyBpbnQgZml0c19pbl9ieXRlcyhjb25zdCB1aW50OF90ICpieXRlcywgc2l6 ZV90IG51bV9ieXRlcywgc2l6ZV90IGxlbikgeworICAgdWludDhfdCBtYXNrID0gMDsKKyAgIGZv ciAoc2l6ZV90IGkgPSBsZW47IGkgPCBudW1fYnl0ZXM7IGkrKykgeworKyNpZmRlZiBPUEVOU1NM X0JJR0VORElBTgorKyAgICBtYXNrIHw9IGJ5dGVzW2kgXiAoQk5fQllURVMtMSldOworKyNlbHNl CisgICAgIG1hc2sgfD0gYnl0ZXNbaV07CisrI2VuZGlmCisgICB9CisgICByZXR1cm4gbWFzayA9 PSAwOworIH0KK0BAIC0xNzIsOSArMTgwLDEzIEBAIGludCBCTl9ibjJsZV9wYWRkZWQodWludDhf dCAqb3V0LCBzaXplX3QgbGVuLCBjb25zdCBCSUdOVU0gKmluKSB7CisgICAgIG51bV9ieXRlcyA9 IGxlbjsKKyAgIH0KKyAKKy0gIC8vIFdlIG9ubHkgc3VwcG9ydCBsaXR0bGUtZW5kaWFuIHBsYXRm b3Jtcywgc28gd2UgY2FuIHNpbXBseSBtZW1jcHkgaW50byB0aGUKKy0gIC8vIGludGVybmFsIHJl cHJlc2VudGF0aW9uLgorKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgorKyAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgeworKyAgICBvdXRbaV0gPSBieXRlc1tpIF4gKEJO X0JZVEVTLTEpXTsKKysgIH0KKysjZWxzZQorICAgT1BFTlNTTF9tZW1jcHkob3V0LCBieXRlcywg bnVtX2J5dGVzKTsKKysjZW5kaWYKKyAgIC8vIFBhZCBvdXQgdGhlIHJlc3Qgb2YgdGhlIGJ1ZmZl ciB3aXRoIHplcm9lcy4KKyAgIE9QRU5TU0xfbWVtc2V0KG91dCArIG51bV9ieXRlcywgMCwgbGVu IC0gbnVtX2J5dGVzKTsKKyAgIHJldHVybiAxOworQEAgLTE5MCwxMSArMjAyLDE1IEBAIGludCBC Tl9ibjJiaW5fcGFkZGVkKHVpbnQ4X3QgKm91dCwgc2l6ZV90IGxlbiwgY29uc3QgQklHTlVNICpp bikgeworICAgICBudW1fYnl0ZXMgPSBsZW47CisgICB9CisgCistICAvLyBXZSBvbmx5IHN1cHBv cnQgbGl0dGxlLWVuZGlhbiBwbGF0Zm9ybXMsIHNvIHdlIGNhbiBzaW1wbHkgd3JpdGUgdGhlIGJ1 ZmZlcgorLSAgLy8gaW4gcmV2ZXJzZS4KKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgIGZv ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKKysgICAgb3V0W2xlbiAtIGkg LSAxXSA9IGJ5dGVzW2kgXiAoQk5fQllURVMtMSldOworKyAgfQorKyNlbHNlCisgICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7CisgICAgIG91dFtsZW4gLSBpIC0gMV0g PSBieXRlc1tpXTsKKyAgIH0KKysjZW5kaWYKKyAgIC8vIFBhZCBvdXQgdGhlIHJlc3Qgb2YgdGhl IGJ1ZmZlciB3aXRoIHplcm9lcy4KKyAgIE9QRU5TU0xfbWVtc2V0KG91dCwgMCwgbGVuIC0gbnVt X2J5dGVzKTsKKyAgIHJldHVybiAxOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjZHNhL2Vj ZHNhLmMKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Ym9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lY2RzYS9lY2RzYS5jCitAQCAtODAsNyAr ODAsMTEgQEAgc3RhdGljIHZvaWQgZGlnZXN0X3RvX3NjYWxhcihjb25zdCBFQ19HUk9VUCAqZ3Jv dXAsIEVDX1NDQUxBUiAqb3V0LAorICAgfQorICAgT1BFTlNTTF9tZW1zZXQob3V0LCAwLCBzaXpl b2YoRUNfU0NBTEFSKSk7CisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpZ2VzdF9sZW47IGkr KykgeworKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgorKyAgICBvdXQtPmJ5dGVzW2kgXiAoQk5f QllURVMtMSldID0gZGlnZXN0W2RpZ2VzdF9sZW4gLSAxIC0gaV07CisrI2Vsc2UKKyAgICAgb3V0 LT5ieXRlc1tpXSA9IGRpZ2VzdFtkaWdlc3RfbGVuIC0gMSAtIGldOworKyNlbmRpZgorICAgfQor IAorICAgLy8gSWYgaXQgaXMgc3RpbGwgdG9vIGxvbmcsIHRydW5jYXRlIHJlbWFpbmluZyBiaXRz IHdpdGggYSBzaGlmdC4KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9nY20uYworKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2djbS5jCitAQCAtNzgsNiArNzgsMTQgQEAKKyAg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgfSB3aGlsZSAoMCkKKyAKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJ QU4KKysjZGVmaW5lIEdDTV9ic3dhcDQoeCkgKHgpCisrI2RlZmluZSBHQ01fYnN3YXA4KHgpICh4 KQorKyNlbHNlCisrI2RlZmluZSBHQ01fYnN3YXA0IENSWVBUT19ic3dhcDQKKysjZGVmaW5lIEdD TV9ic3dhcDggQ1JZUFRPX2Jzd2FwOAorKyNlbmRpZgorKworIC8vIGtTaXplVFdpdGhvdXRMb3dl cjRCaXRzIGlzIGEgbWFzayB0aGF0IGNhbiBiZSB1c2VkIHRvIHplcm8gdGhlIGxvd2VyIGZvdXIK KyAvLyBiaXRzIG9mIGEgfHNpemVfdHwuCisgc3RhdGljIGNvbnN0IHNpemVfdCBrU2l6ZVRXaXRo b3V0TG93ZXI0Qml0cyA9IChzaXplX3QpIC0xNjsKK0BAIC0xNzMsOCArMTgxLDggQEAgc3RhdGlj IHZvaWQgZ2NtX2dtdWx0XzRiaXQodWludDY0X3QgWGlbMl0sIGNvbnN0IHUxMjggSHRhYmxlWzE2 XSkgeworICAgICBaLmxvIF49IEh0YWJsZVtubG9dLmxvOworICAgfQorIAorLSAgWGlbMF0gPSBD UllQVE9fYnN3YXA4KFouaGkpOworLSAgWGlbMV0gPSBDUllQVE9fYnN3YXA4KFoubG8pOworKyAg WGlbMF0gPSBHQ01fYnN3YXA4KFouaGkpOworKyAgWGlbMV0gPSBHQ01fYnN3YXA4KFoubG8pOwor IH0KKyAKKyAvLyBTdHJlYW1lZCBnY21fbXVsdF80Yml0LCBzZWUgQ1JZUFRPX2djbTEyOF9bZW58 ZGVdY3J5cHQgZm9yCitAQCAtMjMzLDggKzI0MSw4IEBAIHN0YXRpYyB2b2lkIGdjbV9naGFzaF80 Yml0KHVpbnQ2NF90IFhpWzJdLCBjb25zdCB1MTI4IEh0YWJsZVsxNl0sCisgICAgICAgWi5sbyBe PSBIdGFibGVbbmxvXS5sbzsKKyAgICAgfQorIAorLSAgICBYaVswXSA9IENSWVBUT19ic3dhcDgo Wi5oaSk7CistICAgIFhpWzFdID0gQ1JZUFRPX2Jzd2FwOChaLmxvKTsKKysgICAgWGlbMF0gPSBH Q01fYnN3YXA4KFouaGkpOworKyAgICBYaVsxXSA9IEdDTV9ic3dhcDgoWi5sbyk7CisgICB9IHdo aWxlIChpbnAgKz0gMTYsIGxlbiAtPSAxNik7CisgfQorICNlbHNlICAvLyBHSEFTSF9BU00KK0BA IC0zNjAsOCArMzY4LDggQEAgdm9pZCBDUllQVE9fZ2hhc2hfaW5pdChnbXVsdF9mdW5jICpvdXRf bXVsdCwgZ2hhc2hfZnVuYyAqb3V0X2hhc2gsCisgICBPUEVOU1NMX21lbWNweShILmMsIGdjbV9r ZXksIDE2KTsKKyAKKyAgIC8vIEggaXMgc3RvcmVkIGluIGhvc3QgYnl0ZSBvcmRlcgorLSAgSC51 WzBdID0gQ1JZUFRPX2Jzd2FwOChILnVbMF0pOworLSAgSC51WzFdID0gQ1JZUFRPX2Jzd2FwOChI LnVbMV0pOworKyAgSC51WzBdID0gR0NNX2Jzd2FwOChILnVbMF0pOworKyAgSC51WzFdID0gR0NN X2Jzd2FwOChILnVbMV0pOworIAorICAgT1BFTlNTTF9tZW1jcHkob3V0X2tleSwgSC5jLCAxNik7 CisgCitAQCAtNDc0LDE1ICs0ODIsMTUgQEAgdm9pZCBDUllQVE9fZ2NtMTI4X3NldGl2KEdDTTEy OF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgICAgICBHQ01fTVVMKGN0eCwg WWkpOworICAgICB9CisgICAgIGxlbjAgPDw9IDM7CistICAgIGN0eC0+WWkudVsxXSBePSBDUllQ VE9fYnN3YXA4KGxlbjApOworKyAgICBjdHgtPllpLnVbMV0gXj0gR0NNX2Jzd2FwOChsZW4wKTsK KyAKKyAgICAgR0NNX01VTChjdHgsIFlpKTsKKy0gICAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgt PllpLmRbM10pOworKyAgICBjdHIgPSBHQ01fYnN3YXA0KGN0eC0+WWkuZFszXSk7CisgICB9Cisg CisgICAoKmN0eC0+Z2NtX2tleS5ibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLMC5jLCBrZXkpOwor ICAgKytjdHI7CistICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICBjdHgt PllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgfQorIAorIGludCBDUllQVE9fZ2NtMTI4X2Fh ZChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCB1aW50OF90ICphYWQsIHNpemVfdCBsZW4pIHsK K0BAIC01ODAsNyArNTg4LDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICAgIGN0eC0+YXJlcyA9IDA7CisgICB9 CisgCistICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7CisrICBjdHIgPSBHQ01f YnN3YXA0KGN0eC0+WWkuZFszXSk7CisgCisgICBuID0gY3R4LT5tcmVzOworICAgaWYgKG4pIHsK K0BAIC02MDIsNyArNjEwLDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICAgICAgaWYgKG4gPT0gMCkgeworICAg ICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOworICAgICAgICAgKytj dHI7CistICAgICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgICAg ICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAgICAgfQorICAgICAgIGN0eC0+ WGkuY1tuXSBePSBvdXRbaV0gPSBpbltpXSBeIGN0eC0+RUtpLmNbbl07CisgICAgICAgbiA9IChu ICsgMSkgJSAxNjsKK0BAIC02MjEsNyArNjI5LDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlw dChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICAgIHdoaWxlIChq KSB7CisgICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOworICAgICAg ICsrY3RyOworLSAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAg ICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAgICAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgeworICAgICAgICAgc3RvcmVfd29yZF9s ZShvdXQgKyBpLAorICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBe IGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXSk7CitAQCAtNjM4LDcgKzY0Niw3IEBAIGlu dCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tF WSAqa2V5LAorICAgICB3aGlsZSAobGVuID49IDE2KSB7CisgICAgICAgKCpibG9jaykoY3R4LT5Z aS5jLCBjdHgtPkVLaS5jLCBrZXkpOworICAgICAgICsrY3RyOworLSAgICAgIGN0eC0+WWkuZFsz XSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0 KGN0cik7CisgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6 ZV90KSkgeworICAgICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLAorICAgICAgICAgICAgICAg ICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXpl X3QpXSk7CitAQCAtNjUzLDcgKzY2MSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgd2hpbGUgKGxlbiA+PSAx NikgeworICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICsr Y3RyOworLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgIGN0eC0+ WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKKyAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAx NjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgeworICAgICAgIHNpemVfdCB0bXAgPSBsb2FkX3dvcmRf bGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXTsKKyAgICAgICBzdG9y ZV93b3JkX2xlKG91dCArIGksIHRtcCk7CitAQCAtNjY4LDcgKzY3Niw3IEBAIGludCBDUllQVE9f Z2NtMTI4X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAor ICAgaWYgKGxlbikgeworICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7 CisgICAgICsrY3RyOworLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Cisr ICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKKyAgICAgd2hpbGUgKGxlbi0tKSB7 CisgICAgICAgY3R4LT5YaS5jW25dIF49IG91dFtuXSA9IGluW25dIF4gY3R4LT5FS2kuY1tuXTsK KyAgICAgICArK247CitAQCAtNzA3LDcgKzcxNSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5 cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgICBjdHgtPmFy ZXMgPSAwOworICAgfQorIAorLSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwor KyAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOworIAorICAgbiA9IGN0eC0+bXJlczsK KyAgIGlmIChuKSB7CitAQCAtNzMyLDcgKzc0MCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5 cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgICAgIGlmIChu ID09IDApIHsKKyAgICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsK KyAgICAgICAgICsrY3RyOworLSAgICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChj dHIpOworKyAgICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICAgIH0K KyAgICAgICBjID0gaW5baV07CisgICAgICAgb3V0W2ldID0gYyBeIGN0eC0+RUtpLmNbbl07CitA QCAtNzU0LDcgKzc2Miw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRF WFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgICB3aGlsZSAoaikgeworICAgICAgICgq YmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKKyAgICAgICArK2N0cjsKKy0gICAg ICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOworICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkg Kz0gc2l6ZW9mKHNpemVfdCkpIHsKKyAgICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKKyAg ICAgICAgICAgICAgICAgICAgICAgbG9hZF93b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kg LyBzaXplb2Yoc2l6ZV90KV0pOworQEAgLTc3MSw3ICs3NzksNyBAQCBpbnQgQ1JZUFRPX2djbTEy OF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgICAg d2hpbGUgKGxlbiA+PSAxNikgeworICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2ku Yywga2V5KTsKKyAgICAgICArK2N0cjsKKy0gICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3 YXA0KGN0cik7CisrICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICAg IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKKyAgICAg ICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgbG9hZF93 b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0pOworQEAgLTc4 NSw3ICs3OTMsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpj dHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgIHdoaWxlIChsZW4gPj0gMTYpIHsKKyAgICAgKCpi bG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOworICAgICArK2N0cjsKKy0gICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOworKyAgICBjdHgtPllpLmRbM10gPSBHQ01f YnN3YXA0KGN0cik7CisgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9m KHNpemVfdCkpIHsKKyAgICAgICBzaXplX3QgYyA9IGxvYWRfd29yZF9sZShpbiArIGkpOworICAg ICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwgYyBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXpl X3QpXSk7CitAQCAtODAwLDcgKzgwOCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgaWYgKGxlbikgeworICAg ICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICsrY3RyOworLSAg ICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgIGN0eC0+WWkuZFszXSA9 IEdDTV9ic3dhcDQoY3RyKTsKKyAgICAgd2hpbGUgKGxlbi0tKSB7CisgICAgICAgdWludDhfdCBj ID0gaW5bbl07CisgICAgICAgY3R4LT5YaS5jW25dIF49IGM7CitAQCAtODY2LDEzICs4NzQsMTMg QEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBj b25zdCBBRVNfS0VZICprZXksCisgICB9CisgI2VuZGlmCisgCistICBjdHIgPSBDUllQVE9fYnN3 YXA0KGN0eC0+WWkuZFszXSk7CisrICBjdHIgPSBHQ01fYnN3YXA0KGN0eC0+WWkuZFszXSk7Cisg CisgI2lmIGRlZmluZWQoR0hBU0gpCisgICB3aGlsZSAobGVuID49IEdIQVNIX0NIVU5LKSB7Cisg ICAgICgqc3RyZWFtKShpbiwgb3V0LCBHSEFTSF9DSFVOSyAvIDE2LCBrZXksIGN0eC0+WWkuYyk7 CisgICAgIGN0ciArPSBHSEFTSF9DSFVOSyAvIDE2OworLSAgICBjdHgtPllpLmRbM10gPSBDUllQ VE9fYnN3YXA0KGN0cik7CisrICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKKyAg ICAgR0hBU0goY3R4LCBvdXQsIEdIQVNIX0NIVU5LKTsKKyAgICAgb3V0ICs9IEdIQVNIX0NIVU5L OworICAgICBpbiArPSBHSEFTSF9DSFVOSzsKK0BAIC04ODUsNyArODkzLDcgQEAgaW50IENSWVBU T19nY20xMjhfZW5jcnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZ ICprZXksCisgCisgICAgICgqc3RyZWFtKShpbiwgb3V0LCBqLCBrZXksIGN0eC0+WWkuYyk7Cisg ICAgIGN0ciArPSAodW5zaWduZWQgaW50KWo7CistICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19i c3dhcDQoY3RyKTsKKysgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICBp biArPSBpOworICAgICBsZW4gLT0gaTsKKyAjaWYgZGVmaW5lZChHSEFTSCkKK0BAIC05MDQsNyAr OTEyLDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAq Y3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICBpZiAobGVuKSB7CisgICAgICgqY3R4LT5nY21f a2V5LmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICsrY3RyOworLSAg ICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgIGN0eC0+WWkuZFszXSA9 IEdDTV9ic3dhcDQoY3RyKTsKKyAgICAgd2hpbGUgKGxlbi0tKSB7CisgICAgICAgY3R4LT5YaS5j W25dIF49IG91dFtuXSA9IGluW25dIF4gY3R4LT5FS2kuY1tuXTsKKyAgICAgICArK247CitAQCAt OTcwLDE0ICs5NzgsMTQgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMihHQ00xMjhf Q09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICB9CisgI2VuZGlmCisgCistICBj dHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7CisrICBjdHIgPSBHQ01fYnN3YXA0KGN0 eC0+WWkuZFszXSk7CisgCisgI2lmIGRlZmluZWQoR0hBU0gpCisgICB3aGlsZSAobGVuID49IEdI QVNIX0NIVU5LKSB7CisgICAgIEdIQVNIKGN0eCwgaW4sIEdIQVNIX0NIVU5LKTsKKyAgICAgKCpz dHJlYW0pKGluLCBvdXQsIEdIQVNIX0NIVU5LIC8gMTYsIGtleSwgY3R4LT5ZaS5jKTsKKyAgICAg Y3RyICs9IEdIQVNIX0NIVU5LIC8gMTY7CistICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dh cDQoY3RyKTsKKysgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICBvdXQg Kz0gR0hBU0hfQ0hVTks7CisgICAgIGluICs9IEdIQVNIX0NIVU5LOworICAgICBsZW4gLT0gR0hB U0hfQ0hVTks7CitAQCAtMTAwMyw3ICsxMDExLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlw dF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgI2VuZGlm CisgICAgICgqc3RyZWFtKShpbiwgb3V0LCBqLCBrZXksIGN0eC0+WWkuYyk7CisgICAgIGN0ciAr PSAodW5zaWduZWQgaW50KWo7CistICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3Ry KTsKKysgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICBvdXQgKz0gaTsK KyAgICAgaW4gKz0gaTsKKyAgICAgbGVuIC09IGk7CitAQCAtMTAxMSw3ICsxMDE5LDcgQEAgaW50 IENSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBB RVNfS0VZICprZXksCisgICBpZiAobGVuKSB7CisgICAgICgqY3R4LT5nY21fa2V5LmJsb2NrKShj dHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICsrY3RyOworLSAgICBjdHgtPllpLmRb M10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQo Y3RyKTsKKyAgICAgd2hpbGUgKGxlbi0tKSB7CisgICAgICAgdWludDhfdCBjID0gaW5bbl07Cisg ICAgICAgY3R4LT5YaS5jW25dIF49IGM7CitAQCAtMTAzNiw4ICsxMDQ0LDggQEAgaW50IENSWVBU T19nY20xMjhfZmluaXNoKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IHVpbnQ4X3QgKnRhZywg c2l6ZV90IGxlbikgeworICAgICBHQ01fTVVMKGN0eCwgWGkpOworICAgfQorIAorLSAgYWxlbiA9 IENSWVBUT19ic3dhcDgoYWxlbik7CistICBjbGVuID0gQ1JZUFRPX2Jzd2FwOChjbGVuKTsKKysg IGFsZW4gPSBHQ01fYnN3YXA4KGFsZW4pOworKyAgY2xlbiA9IEdDTV9ic3dhcDgoY2xlbik7Cisg CisgICBjdHgtPlhpLnVbMF0gXj0gYWxlbjsKKyAgIGN0eC0+WGkudVsxXSBePSBjbGVuOworLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2ludGVybmFsLmgKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlw c21vZHVsZS9tb2Rlcy9pbnRlcm5hbC5oCitAQCAtNzAsMTEgKzcwLDE3IEBAIGV4dGVybiAiQyIg eworIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgR0VUVTMyKGNvbnN0IHZvaWQgKmluKSB7CisgICB1 aW50MzJfdCB2OworICAgT1BFTlNTTF9tZW1jcHkoJnYsIGluLCBzaXplb2YodikpOworKyNpZmRl ZiBPUEVOU1NMX0JJR0VORElBTgorKyAgcmV0dXJuIHY7CisrI2Vsc2UKKyAgIHJldHVybiBDUllQ VE9fYnN3YXA0KHYpOworKyNlbmRpZgorIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQgUFVUVTMy KHZvaWQgKm91dCwgdWludDMyX3QgdikgeworKyNpZm5kZWYgT1BFTlNTTF9CSUdFTkRJQU4KKyAg IHYgPSBDUllQVE9fYnN3YXA0KHYpOworKyNlbmRpZgorICAgT1BFTlNTTF9tZW1jcHkob3V0LCAm diwgc2l6ZW9mKHYpKTsKKyB9CisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvcG9s eXZhbC5jCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvcG9seXZhbC5jCitAQCAtMzIs MTYgKzMyLDI2IEBAIHN0YXRpYyB2b2lkIGJ5dGVfcmV2ZXJzZShwb2x5dmFsX2Jsb2NrICpiKSB7 CisgLy8gdGhlIEdIQVNIIGZpZWxkLCBtdWx0aXBsaWVzIHRoYXQgYnkgJ3gnIGFuZCBzZXJpYWxp c2VzIHRoZSByZXN1bHQgYmFjayBpbnRvCisgLy8gfGJ8LCBidXQgd2l0aCBHSEFTSCdzIGJhY2t3 YXJkcyBiaXQgb3JkZXJpbmcuCisgc3RhdGljIHZvaWQgcmV2ZXJzZV9hbmRfbXVsWF9naGFzaChw b2x5dmFsX2Jsb2NrICpiKSB7CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICB1aW50NjRf dCBoaSA9IENSWVBUT19ic3dhcDgoYi0+dVswXSk7CisrICB1aW50NjRfdCBsbyA9IENSWVBUT19i c3dhcDgoYi0+dVsxXSk7CisrI2Vsc2UKKyAgIHVpbnQ2NF90IGhpID0gYi0+dVswXTsKKyAgIHVp bnQ2NF90IGxvID0gYi0+dVsxXTsKKysjZW5kaWYKKyAgIGNvbnN0IGNyeXB0b193b3JkX3QgY2Fy cnkgPSBjb25zdGFudF90aW1lX2VxX3coaGkgJiAxLCAxKTsKKyAgIGhpID4+PSAxOworICAgaGkg fD0gbG8gPDwgNjM7CisgICBsbyA+Pj0gMTsKKyAgIGxvIF49ICgodWludDY0X3QpIGNvbnN0YW50 X3RpbWVfc2VsZWN0X3coY2FycnksIDB4ZTEsIDApKSA8PCA1NjsKKyAKKysjaWZkZWYgT1BFTlNT TF9CSUdFTkRJQU4KKysgIGItPnVbMF0gPSBsbzsKKysgIGItPnVbMV0gPSBoaTsKKysjZWxzZQor ICAgYi0+dVswXSA9IENSWVBUT19ic3dhcDgobG8pOworICAgYi0+dVsxXSA9IENSWVBUT19ic3dh cDgoaGkpOworKyNlbmRpZgorIH0KKyAKKyAvLyBQT0xZVkFMKEgsIFhfMSwgLi4uLCBYX24pID0K Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5n c3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9yYW5kL2N0cmRyYmcuYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9m aXBzbW9kdWxlL3JhbmQvY3RyZHJiZy5jCitAQCAtNzAsOCArNzAsMTIgQEAgT1BFTlNTTF9TVEFU SUNfQVNTRVJUKENUUl9EUkJHX0VOVFJPUFlfTEVOICUgQUVTX0JMT0NLX1NJWkUgPT0gMCwKKyAv LyBjdHJfaW5jIGFkZHMgfG58IHRvIHRoZSBsYXN0IGZvdXIgYnl0ZXMgb2YgfGRyYmctPmNvdW50 ZXJ8LCB0cmVhdGVkIGFzIGEKKyAvLyBiaWctZW5kaWFuIG51bWJlci4KKyBzdGF0aWMgdm9pZCBj dHIzMl9hZGQoQ1RSX0RSQkdfU1RBVEUgKmRyYmcsIHVpbnQzMl90IG4pIHsKKysjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KKysgIGRyYmctPmNvdW50ZXIud29yZHNbM10gKz0gbjsKKysjZWxzZQor ICAgZHJiZy0+Y291bnRlci53b3Jkc1szXSA9CisgICAgICAgQ1JZUFRPX2Jzd2FwNChDUllQVE9f YnN3YXA0KGRyYmctPmNvdW50ZXIud29yZHNbM10pICsgbik7CisrI2VuZGlmCisgfQorIAorIHN0 YXRpYyBpbnQgY3RyX2RyYmdfdXBkYXRlKENUUl9EUkJHX1NUQVRFICpkcmJnLCBjb25zdCB1aW50 OF90ICpkYXRhLAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9wb2x5MTMwNS9wb2x5MTMwNS5jCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5 cHRvL3BvbHkxMzA1L3BvbHkxMzA1LmMKK0BAIC0zMiwxMCArMzIsMTYgQEAKKyBzdGF0aWMgdWlu dDMyX3QgVThUTzMyX0xFKGNvbnN0IHVpbnQ4X3QgKm0pIHsKKyAgIHVpbnQzMl90IHI7CisgICBP UEVOU1NMX21lbWNweSgmciwgbSwgc2l6ZW9mKHIpKTsKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJ QU4KKysgIHIgPSBDUllQVE9fYnN3YXA0KHIpOworKyNlbmRpZgorICAgcmV0dXJuIHI7CisgfQor IAorIHN0YXRpYyB2b2lkIFUzMlRPOF9MRSh1aW50OF90ICptLCB1aW50MzJfdCB2KSB7CisrI2lm ZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICB2ID0gQ1JZUFRPX2Jzd2FwNCh2KTsKKysjZW5kaWYK KyAgIE9QRU5TU0xfbWVtY3B5KG0sICZ2LCBzaXplb2YodikpOworIH0KKyAKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9pbmNs dWRlL29wZW5zc2wvYmFzZS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAorQEAgLTk5 LDYgKzk5LDEwIEBAIGV4dGVybiAiQyIgeworICNlbGlmIChkZWZpbmVkKF9fUFBDNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKSkgJiYgZGVmaW5lZChfTElUVExFX0VORElBTikKKyAjZGVm aW5lIE9QRU5TU0xfNjRfQklUCisgI2RlZmluZSBPUEVOU1NMX1BQQzY0TEUKKysjZWxpZiAoZGVm aW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykpCisrI2RlZmluZSBPUEVO U1NMXzY0X0JJVAorKyNkZWZpbmUgT1BFTlNTTF9QUEM2NAorKyNkZWZpbmUgT1BFTlNTTF9CSUdF TkRJQU4KKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX0xQNjRfXykKKyAj ZGVmaW5lIE9QRU5TU0xfMzJfQklUCisgI2RlZmluZSBPUEVOU1NMX01JUFMKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGly ZF9wYXJ0eS9maWF0L2N1cnZlMjU1MTkuYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3BhcnR5L2ZpYXQvY3VydmUy NTUxOS5jCitAQCAtMzAzMiw5ICszMDMyLDE0IEBAIGludCBFRDI1NTE5X3ZlcmlmeShjb25zdCB1 aW50OF90ICptZXNzYWdlLCBzaXplX3QgbWVzc2FnZV9sZW4sCisgICAgIFVJTlQ2NF9DKDB4MTAw MDAwMDAwMDAwMDAwMCksCisgICB9OworICAgZm9yIChzaXplX3QgaSA9IDM7OyBpLS0pIHsKKy0g ICAgaWYgKHNjb3B5LnU2NFtpXSA+IGtPcmRlcltpXSkgeworKyNpZmRlZiBPUEVOU1NMX0JJR0VO RElBTgorKyAgICBjb25zdCB1aW50NjRfdCBuID0gQ1JZUFRPX2Jzd2FwOChzY29weS51NjRbaV0p OworKyNlbHNlCisrICAgIGNvbnN0IHVpbnQ2NF90IG4gPSBzY29weS51NjRbaV07CisrI2VuZGlm CisrICAgIGlmIChuID4ga09yZGVyW2ldKSB7CisgICAgICAgcmV0dXJuIDA7CistICAgIH0gZWxz ZSBpZiAoc2NvcHkudTY0W2ldIDwga09yZGVyW2ldKSB7CisrICAgIH0gZWxzZSBpZiAobiA8IGtP cmRlcltpXSkgeworICAgICAgIGJyZWFrOworICAgICB9IGVsc2UgaWYgKGkgPT0gMCkgeworICAg ICAgIHJldHVybiAwOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3BhcnR5L2ZpYXQvcDI1Ni5jCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhp cmRfcGFydHkvZmlhdC9wMjU2LmMKK0BAIC04ODIsMTIgKzg4MiwyNCBAQCBzdGF0aWMgdm9pZCBm ZV90b2J5dGVzKHVpbnQ4X3Qgb3V0W05CWVRFU10sIGNvbnN0IGZlIGluKSB7CisgICB9CisgfQor IAorKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgorK3N0YXRpYyB2b2lkIGZlX3RvYnl0ZXNfYmUo dWludDhfdCBvdXRbTkJZVEVTXSwgY29uc3QgZmUgaW4pIHsKKysgIGZvciAoaW50IGkgPSAwOyBp PE5CWVRFUzsgaSsrKSB7CisrICAgIG91dFtpIF4gKEJOX0JZVEVTLTEpXSA9ICh1aW50OF90KShp bltpL3NpemVvZihpblswXSldID4+ICg4KihpJXNpemVvZihpblswXSkpKSk7CisrICB9CisrfQor KyNlbmRpZgorKworIHN0YXRpYyB2b2lkIGZlX2Zyb21ieXRlcyhmZSBvdXQsIGNvbnN0IHVpbnQ4 X3QgaW5bTkJZVEVTXSkgeworICAgZm9yIChpbnQgaSA9IDA7IGk8TkxJTUJTOyBpKyspIHsKKyAg ICAgb3V0W2ldID0gMDsKKyAgIH0KKyAgIGZvciAoaW50IGkgPSAwOyBpPE5CWVRFUzsgaSsrKSB7 CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICAgIG91dFtpL3NpemVvZihvdXRbMF0pXSB8 PSAoKGxpbWJfdClpbltpIF4gKEJOX0JZVEVTLTEpXSkgPDwgKDgqKGklc2l6ZW9mKG91dFswXSkp KTsKKysjZWxzZQorICAgICBvdXRbaS9zaXplb2Yob3V0WzBdKV0gfD0gKChsaW1iX3QpaW5baV0p IDw8ICg4KihpJXNpemVvZihvdXRbMF0pKSk7CisrI2VuZGlmCisgICB9CisgfQorIAorQEAgLTkw Niw3ICs5MTgsMTEgQEAgc3RhdGljIHZvaWQgZmVfdG9fZ2VuZXJpYyhFQ19GRUxFTSAqb3V0LCBj b25zdCBmZSBpbikgeworICAgT1BFTlNTTF9TVEFUSUNfQVNTRVJUKAorICAgICAgIDI1NiAvIDgg PT0gc2l6ZW9mKEJOX1VMT05HKSAqICgoMjU2ICsgQk5fQklUUzIgLSAxKSAvIEJOX0JJVFMyKSwK KyAgICAgICAiZmVfdG9ieXRlcyBsZWF2ZXMgYnl0ZXMgdW5pbml0aWFsaXplZCIpOworKyNpZmRl ZiBPUEVOU1NMX0JJR0VORElBTgorKyAgZmVfdG9ieXRlc19iZShvdXQtPmJ5dGVzLCBpbik7Cisr I2Vsc2UKKyAgIGZlX3RvYnl0ZXMob3V0LT5ieXRlcywgaW4pOworKyNlbmRpZgorIH0KKyAKKyAv LyBmZV9pbnYgY2FsY3VsYXRlcyB8b3V0fCA9IHxpbnxeey0xfQorQEAgLTE1MjQsNyArMTU0MCwx MSBAQCBzdGF0aWMgY2hhciBnZXRfYml0KGNvbnN0IHVpbnQ4X3QgKmluLCBpbnQgaSkgeworICAg aWYgKGkgPCAwIHx8IGkgPj0gMjU2KSB7CisgICAgIHJldHVybiAwOworICAgfQorKyNpZmRlZiBP UEVOU1NMX0JJR0VORElBTgorKyAgcmV0dXJuIChpblsoaSA+PiAzKSBeIChzaXplb2YoQk5fVUxP TkcpLTEpXSA+PiAoaSAmIDcpKSAmIDE7CisrI2Vsc2UKKyAgIHJldHVybiAoaW5baSA+PiAzXSA+ PiAoaSAmIDcpKSAmIDE7CisrI2VuZGlmCisgfQorIAorIC8vIEludGVybGVhdmVkIHBvaW50IG11 bHRpcGxpY2F0aW9uIHVzaW5nIHByZWNvbXB1dGVkIHBvaW50IG11bHRpcGxlczogVGhlCistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYzMyYy9CVUlM RC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmMzMmMvQlVJTEQuZ24KK0BAIC0xNSwxMyArMTUsMTAgQEAgY29uZmlnKCJjcmMzMmNfY29uZmln IikgeworICAgXQorIAorICAgZGVmaW5lcyA9IFsKKy0gICAgIkJZVEVfT1JERVJfQklHX0VORElB Tj0wIiwKKysgICAgIkJZVEVfT1JERVJfQklHX0VORElBTj1fX0JZVEVfT1JERVJfXz09X19PUkRF Ul9CSUdfRU5ESUFOX18iLAorICAgICAiQ1JDMzJDX1RFU1RTX0JVSUxUX1dJVEhfR0xPRz0wIiwK KyAgIF0KKyAKKy0gICMgSWYgd2UgZXZlciBzdXBwb3J0IGJpZy1lbmRpYW4gYnVpbGRzLCBhZGQg bG9naWMgdG8gY29uZGl0aW9uYWxseSBlbmFibGUKKy0gICMgQllURV9PUkRFUl9CSUdfRU5ESUFO LgorLQorICAgaWYgKHRhcmdldF9jcHUgPT0gIng4NiIgfHwgdGFyZ2V0X2NwdSA9PSAieDY0Iikg eworICAgICBkZWZpbmVzICs9IFsKKyAgICAgICAiSEFWRV9NTV9QUkVGRVRDSD0xIiwKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMv c3JjL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJzL3NyYy9pbmNsdWRlL2ZsYXRidWZm ZXJzL2Jhc2UuaAorQEAgLTIyMCwxOCArMjIwLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQg RW5kaWFuU3dhcChUIHQpIHsKKyAgIGlmIChzaXplb2YoVCkgPT0gMSkgeyAgIC8vIENvbXBpbGUt dGltZSBpZi10aGVuJ3MuCisgICAgIHJldHVybiB0OworICAgfSBlbHNlIGlmIChzaXplb2YoVCkg PT0gMikgeworLSAgICB1bmlvbiB7IFQgdDsgdWludDE2X3QgaTsgfSB1OworLSAgICB1LnQgPSB0 OworKyAgICB1bmlvbiBVIHsgVCB0OyB1aW50MTZfdCBpOyBVKGNvbnN0IFQmIHRfKSA6IHQodF8p IHt9fSB1KHQpOworICAgICB1LmkgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDE2KHUuaSk7CisgICAg IHJldHVybiB1LnQ7CisgICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSA0KSB7CistICAgIHVuaW9u IHsgVCB0OyB1aW50MzJfdCBpOyB9IHU7CistICAgIHUudCA9IHQ7CisrICAgIHVuaW9uIFUgeyBU IHQ7IHVpbnQzMl90IGk7IFUoY29uc3QgVCYgdF8pIDogdCh0Xykge319IHUodCk7CisgICAgIHUu aSA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMzIodS5pKTsKKyAgICAgcmV0dXJuIHUudDsKKyAgIH0g ZWxzZSBpZiAoc2l6ZW9mKFQpID09IDgpIHsKKy0gICAgdW5pb24geyBUIHQ7IHVpbnQ2NF90IGk7 IH0gdTsKKy0gICAgdS50ID0gdDsKKysgICAgdW5pb24gVSB7IFQgdDsgdWludDY0X3QgaTsgVShj b25zdCBUJiB0XykgOiB0KHRfKSB7fX0gdSh0KTsKKyAgICAgdS5pID0gRkxBVEJVRkZFUlNfQllU RVNXQVA2NCh1LmkpOworICAgICByZXR1cm4gdS50OworICAgfSBlbHNlIHsKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2lu Y2x1ZGUvZmxhdGJ1ZmZlcnMvbWluaXJlZmxlY3QuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0YnVm ZmVycy9taW5pcmVmbGVjdC5oCitAQCAtMTIyLDU4ICsxMjIsNTggQEAgaW5saW5lIHZvaWQgSXRl cmF0ZVZhbHVlKEVsZW1lbnRhcnlUeXBlIHR5cGUsIGNvbnN0IHVpbnQ4X3QgKnZhbCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgc29mZnNldF90IHZlY3Rvcl9pbmRleCwgSXRlcmF0aW9uVmlz aXRvciAqdmlzaXRvcikgeworICAgc3dpdGNoICh0eXBlKSB7CisgICAgIGNhc2UgRVRfVVRZUEU6 IHsKKy0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+ KHZhbCk7CisrICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50OF90Pih2YWwpOworICAg ICAgIHZpc2l0b3ItPlVUeXBlKHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKKyAg ICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIEVUX0JPT0w6IHsKKy0gICAgICB2aXNpdG9y LT5Cb29sKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4odmFsKSAhPSAwKTsKKysg ICAgICB2aXNpdG9yLT5Cb29sKFJlYWRTY2FsYXI8dWludDhfdD4odmFsKSAhPSAwKTsKKyAgICAg ICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIEVUX0NIQVI6IHsKKy0gICAgICBhdXRvIHR2YWwg PSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QgKj4odmFsKTsKKysgICAgICBhdXRvIHR2 YWwgPSBSZWFkU2NhbGFyPGludDhfdD4odmFsKTsKKyAgICAgICB2aXNpdG9yLT5DaGFyKHR2YWws IEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAg ICBjYXNlIEVUX1VDSEFSOiB7CistICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8 Y29uc3QgdWludDhfdCAqPih2YWwpOworKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWlu dDhfdD4odmFsKTsKKyAgICAgICB2aXNpdG9yLT5VQ2hhcih0dmFsLCBFbnVtTmFtZSh0dmFsLCB0 eXBlX3RhYmxlKSk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBFVF9TSE9SVDog eworLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDE2X3QgKj4o dmFsKTsKKysgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPGludDE2X3Q+KHZhbCk7CisgICAg ICAgdmlzaXRvci0+U2hvcnQodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOworICAg ICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgRVRfVVNIT1JUOiB7CistICAgICAgYXV0byB0 dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QgKj4odmFsKTsKKysgICAgICBh dXRvIHR2YWwgPSBSZWFkU2NhbGFyPHVpbnQxNl90Pih2YWwpOworICAgICAgIHZpc2l0b3ItPlVT aG9ydCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7CisgICAgICAgYnJlYWs7Cisg ICAgIH0KKyAgICAgY2FzZSBFVF9JTlQ6IHsKKy0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnBy ZXRfY2FzdDxjb25zdCBpbnQzMl90ICo+KHZhbCk7CisrICAgICAgYXV0byB0dmFsID0gUmVhZFNj YWxhcjxpbnQzMl90Pih2YWwpOworICAgICAgIHZpc2l0b3ItPkludCh0dmFsLCBFbnVtTmFtZSh0 dmFsLCB0eXBlX3RhYmxlKSk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBFVF9V SU5UOiB7CistICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy X3QgKj4odmFsKTsKKysgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPHVpbnQzMl90Pih2YWwp OworICAgICAgIHZpc2l0b3ItPlVJbnQodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkp OworICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgRVRfTE9ORzogeworLSAgICAgIHZp c2l0b3ItPkxvbmcoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50NjRfdCAqPih2YWwpKTsKKysg ICAgICB2aXNpdG9yLT5Mb25nKFJlYWRTY2FsYXI8aW50NjRfdD4odmFsKSk7CisgICAgICAgYnJl YWs7CisgICAgIH0KKyAgICAgY2FzZSBFVF9VTE9ORzogeworLSAgICAgIHZpc2l0b3ItPlVMb25n KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90ICo+KHZhbCkpOworKyAgICAgIHZpc2l0 b3ItPlVMb25nKFJlYWRTY2FsYXI8dWludDY0X3Q+KHZhbCkpOworICAgICAgIGJyZWFrOworICAg ICB9CisgICAgIGNhc2UgRVRfRkxPQVQ6IHsKKy0gICAgICB2aXNpdG9yLT5GbG9hdCgqcmVpbnRl cnByZXRfY2FzdDxjb25zdCBmbG9hdCAqPih2YWwpKTsKKysgICAgICB2aXNpdG9yLT5GbG9hdChS ZWFkU2NhbGFyPGZsb2F0Pih2YWwpKTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNl IEVUX0RPVUJMRTogeworLSAgICAgIHZpc2l0b3ItPkRvdWJsZSgqcmVpbnRlcnByZXRfY2FzdDxj b25zdCBkb3VibGUgKj4odmFsKSk7CisrICAgICAgdmlzaXRvci0+RG91YmxlKFJlYWRTY2FsYXI8 ZG91YmxlPih2YWwpKTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIEVUX1NUUklO RzogeworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9s ZXZlbGRhdGFiYXNlL3BvcnQvcG9ydF9jaHJvbWl1bS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xldmVsZGF0YWJhc2UvcG9ydC9wb3J0X2Nocm9t aXVtLmgKK0BAIC0yMyw4ICsyMywxMSBAQAorIG5hbWVzcGFjZSBsZXZlbGRiIHsKKyBuYW1lc3Bh Y2UgcG9ydCB7CisgCistLy8gQ2hyb21pdW0gb25seSBzdXBwb3J0cyBsaXR0bGUgZW5kaWFuLgor KyNpZiBBUkNIX0NQVV9MSVRUTEVfRU5ESUFOCisgc3RhdGljIGNvbnN0IGJvb2wga0xpdHRsZUVu ZGlhbiA9IHRydWU7CisrI2Vsc2UKKytzdGF0aWMgY29uc3QgYm9vbCBrTGl0dGxlRW5kaWFuID0g ZmFsc2U7CisrI2VuZGlmCisgCisgY2xhc3MgTE9DS0FCTEUgTXV0ZXggeworICBwdWJsaWM6Cist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L21vZHBfYjY0 L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L21vZHBfYjY0L0JVSUxELmduCitAQCAtMiwxMCArMiwxNiBAQAorICMgVXNlIG9mIHRoaXMg c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi ZQorICMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKytpbXBvcnQoIi8vYnVpbGQvY29u ZmlnL2hvc3RfYnl0ZW9yZGVyLmduaSIpCisrCisgc3RhdGljX2xpYnJhcnkoIm1vZHBfYjY0Iikg eworICAgc291cmNlcyA9IFsKKyAgICAgIm1vZHBfYjY0LmNjIiwKKyAgICAgIm1vZHBfYjY0Lmgi LAorICAgICAibW9kcF9iNjRfZGF0YS5oIiwKKyAgIF0KKysKKysgIGlmIChob3N0X2J5dGVvcmRl ciA9PSAiYmlnIikgeworKyAgICBkZWZpbmVzID0gWyAiV09SRFNfQklHRU5ESUFOPTEiIF0KKysg IH0KKyB9CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L21vZHBfYjY0L21vZHBfYjY0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L21vZHBfYjY0L21vZHBfYjY0LmNjCitAQCAtMTE4LDcgKzExOCw3IEBA IHNpemVfdCBtb2RwX2I2NF9lbmNvZGUoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3RyLCBzaXpl X3QgbGVuKQorIH0KKyAKKyAjaWZkZWYgV09SRFNfQklHRU5ESUFOICAgLyogQklHIEVORElBTiAt LSBTVU4gLyBJQk0gLyBNT1RPUk9MQSAqLworLWludCBtb2RwX2I2NF9kZWNvZGUoY2hhciogZGVz dCwgY29uc3QgY2hhciogc3JjLCBpbnQgbGVuKQorK3NpemVfdCBtb2RwX2I2NF9kZWNvZGUoY2hh ciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgbGVuKQorIHsKKyAgICAgaWYgKGxlbiA9 PSAwKSByZXR1cm4gMDsKKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9iYXNlL3V0aWxzLmgKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5j bHVkZS9wZXJmZXR0by9iYXNlL3V0aWxzLmgKK0BAIC0yMiw2ICsyMiw3IEBACisgI2luY2x1ZGUg PGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKysj aW5jbHVkZSA8dHlwZV90cmFpdHM+CisgI2lmICFQRVJGRVRUT19CVUlMREZMQUcoUEVSRkVUVE9f T1NfV0lOKQorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjZW5kaWYKK0BAIC05MSw3ICs5Miw3 IEBAIHN0cnVjdCBGcmVlRGVsZXRlciB7CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgY29u c3RleHByIFQgQXNzdW1lTGl0dGxlRW5kaWFuKFQgdmFsdWUpIHsKKy0gIHN0YXRpY19hc3NlcnQo X19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18sCisrICBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfc2FtZTxULFQ+Ojp2YWx1ZSAmJiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVS X0xJVFRMRV9FTkRJQU5fXywKKyAgICAgICAgICAgICAgICAgIlVuaW1wbGVtZW50ZWQgb24gYmln LWVuZGlhbiBhcmNocyIpOworICAgcmV0dXJuIHZhbHVlOworIH0KKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0 by9wcm90b3plcm8vbWVzc2FnZS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVyZmV0dG8vcHJvdG96ZXJvL21lc3Nh Z2UuaAorQEAgLTEzOCw2ICsxMzgsMTMgQEAgY2xhc3MgUEVSRkVUVE9fRVhQT1JUIE1lc3NhZ2Ug eworIAorICAgICBwb3MgPSBwcm90b191dGlsczo6V3JpdGVWYXJJbnQocHJvdG9fdXRpbHM6Ok1h a2VUYWdGaXhlZDxUPihmaWVsZF9pZCksIHBvcyk7CisgICAgIG1lbWNweShwb3MsICZ2YWx1ZSwg c2l6ZW9mKFQpKTsKKysjaWYgX19CWVRFX09SREVSX18gIT0gX19PUkRFUl9MSVRUTEVfRU5ESUFO X18KKysgICAgZm9yIChzaXplX3QgaSA9IHNpemVvZihUKS8yOyBpLS07ICkgeworKyAgICAgIHVp bnQ4X3QgdG1wID0gcG9zW2ldOworKyAgICAgIHBvc1tpXSA9IHBvc1tzaXplb2YoVCktMS1pXTsK KysgICAgICBwb3Nbc2l6ZW9mKFQpLTEtaV0gPSB0bXA7CisrICAgIH0KKysjZW5kaWYKKyAgICAg cG9zICs9IHNpemVvZihUKTsKKyAgICAgLy8gVE9ETzogT3B0aW1pemUgbWVtY3B5IHBlcmZvcm1h bmNlLCBzZWUgaHR0cDovL2NyYnVnLmNvbS82MjQzMTEgLgorICAgICBXcml0ZVRvU3RyZWFtKGJ1 ZmZlciwgcG9zKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvcGVyZmV0dG8vc3JjL3Byb3RvemVyby9tZXNzYWdlLmNjCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy9wcm90b3plcm8v bWVzc2FnZS5jYworQEAgLTIxLDEyICsyMSw2IEBACisgI2luY2x1ZGUgInBlcmZldHRvL2Jhc2Uv bG9nZ2luZy5oIgorICNpbmNsdWRlICJwZXJmZXR0by9wcm90b3plcm8vbWVzc2FnZV9oYW5kbGUu aCIKKyAKKy0jaWYgX19CWVRFX09SREVSX18gIT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKy0v LyBUaGUgbWVtY3B5KCkgZm9yIGZsb2F0IGFuZCBkb3VibGUgYmVsb3cgbmVlZHMgdG8gYmUgYWRq dXN0ZWQgaWYgd2Ugd2FudCB0bworLS8vIHN1cHBvcnQgYmlnIGVuZGlhbiBDUFVzLiBUaGVyZSBk b2Vzbid0IHNlZW0gdG8gYmUgYSBjb21wZWxsaW5nIG5lZWQgdG9kYXkuCistI2Vycm9yIFVuaW1w bGVtZW50ZWQgZm9yIGJpZyBlbmRpYW4gYXJjaHMuCistI2VuZGlmCistCisgbmFtZXNwYWNlIHBy b3RvemVybyB7CisgCisgLy8gc3RhdGljCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy9wcm90b3plcm8vcHJvdG9fZGVjb2Rlci5j YworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJm ZXR0by9zcmMvcHJvdG96ZXJvL3Byb3RvX2RlY29kZXIuY2MKK0BAIC0yOSw3ICsyOSw4IEBAIHVz aW5nIG5hbWVzcGFjZSBwcm90b191dGlsczsKKyAjZGVmaW5lIEJZVEVfU1dBUF9UT19MRTMyKHgp ICh4KQorICNkZWZpbmUgQllURV9TV0FQX1RPX0xFNjQoeCkgKHgpCisgI2Vsc2UKKy0jZXJyb3Ig VW5pbXBsZW1lbnRlZCBmb3IgYmlnIGVuZGlhbiBhcmNocy4KKysjZGVmaW5lIEJZVEVfU1dBUF9U T19MRTMyKHgpIF9fYnVpbHRpbl9ic3dhcDMyKHgpCisrI2RlZmluZSBCWVRFX1NXQVBfVE9fTEU2 NCh4KSBfX2J1aWx0aW5fYnN3YXA2NCh4KQorICNlbmRpZgorIAorIFByb3RvRGVjb2Rlcjo6Rmll bGQgUHJvdG9EZWNvZGVyOjpSZWFkRmllbGQoKSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUG9zdENvbmZpZy5o CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEv aW5jbHVkZS9jb3JlL1NrUG9zdENvbmZpZy5oCitAQCAtNDAsMTIgKzQwLDYgQEAKKyAjICBlcnJv ciAibXVzdCBkZWZpbmUgZWl0aGVyIFNLX0NQVV9MRU5ESUFOIG9yIFNLX0NQVV9CRU5ESUFOIgor ICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKFNLX0NQVV9CRU5ESUFOKSAmJiAhZGVmaW5lZChJX0FD S05PV0xFREdFX1NLSUFfRE9FU19OT1RfU1VQUE9SVF9CSUdfRU5ESUFOKQorLSAgICAjZXJyb3Ig IlRoZSBTa2lhIHRlYW0gaXMgbm90IGVuZGlhbi1zYXZ2eSBlbm91Z2ggdG8gc3VwcG9ydCBiaWct ZW5kaWFuIENQVXMuIgorLSAgICAjZXJyb3IgIklmIHlvdSBzdGlsbCB3YW50IHRvIHVzZSBTa2lh LCIKKy0gICAgI2Vycm9yICJwbGVhc2UgZGVmaW5lIElfQUNLTk9XTEVER0VfU0tJQV9ET0VTX05P VF9TVVBQT1JUX0JJR19FTkRJQU4uIgorLSNlbmRpZgorLQorIC8qKgorICAqIEVuc3VyZSB0aGUg cG9ydCBoYXMgZGVmaW5lZCBhbGwgb2YgU0tfWDMyX1NISUZULCBvciBub25lIG9mIHRoZW0uCisg ICovCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Nr aWEvaW5jbHVkZS9wcml2YXRlL0dyVHlwZXNQcml2LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL3ByaXZhdGUvR3JUeXBlc1By aXYuaAorQEAgLTY1LDkgKzY1LDYgQEAgZW51bSBHclBpeGVsQ29uZmlnIHsKKyBzdGF0aWMgY29u c3QgaW50IGtHclBpeGVsQ29uZmlnQ250ID0ga0xhc3RfR3JQaXhlbENvbmZpZyArIDE7CisgCisg Ly8gQWxpYXNlcyBmb3IgcGl4ZWwgY29uZmlncyB0aGF0IG1hdGNoIHNraWEncyBieXRlIG9yZGVy LgorLSNpZm5kZWYgU0tfQ1BVX0xFTkRJQU4KKy0jZXJyb3IgIlNraWEgZ3B1IGN1cnJlbnRseSBh c3N1bWVzIGxpdHRsZSBlbmRpYW4iCistI2VuZGlmCisgI2lmIFNLX1BNQ09MT1JfQllURV9PUkRF UihCLEcsUixBKQorIHN0YXRpYyBjb25zdCBHclBpeGVsQ29uZmlnIGtTa2lhODg4OF9HclBpeGVs Q29uZmlnID0ga0JHUkFfODg4OF9HclBpeGVsQ29uZmlnOworICNlbGlmIFNLX1BNQ09MT1JfQllU RV9PUkRFUihSLEcsQixBKQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9za2lhL3NyYy9jb2RlYy9Ta0NvZGVjUHJpdi5oCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvZGVjL1NrQ29kZWNQ cml2LmgKK0BAIC0xNCw2ICsxNCw3IEBACisgI2luY2x1ZGUgIlNrRW5jb2RlZE9yaWdpbi5oIgor ICNpbmNsdWRlICJTa0ltYWdlSW5mby5oIgorICNpbmNsdWRlICJTa1R5cGVzLmgiCisrI2luY2x1 ZGUgIlNrRW5kaWFuLmgiCisgCisgI2lmZGVmIFNLX1BSSU5UX0NPREVDX01FU1NBR0VTCisgICAg ICNkZWZpbmUgU2tDb2RlY1ByaW50ZiBTa0RlYnVnZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQ29sb3IuY3BwCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2Nv cmUvU2tDb2xvci5jcHAKK0BAIC0xMDgsMTMgKzEwOCwyOSBAQCBTa0NvbG9yIFNrSFNWVG9Db2xv cihVOENQVSBhLCBjb25zdCBTa1NjYWxhciBoc3ZbM10pIHsKKyB0ZW1wbGF0ZSA8PgorIFNrQ29s b3I0ZiBTa0NvbG9yNGY6OkZyb21Db2xvcihTa0NvbG9yIGJncmEpIHsKKyAgICAgU2tDb2xvcjRm IHJnYmE7CistICAgIHN3aXp6bGVfcmIoU2s0Zl9mcm9tTDMyKGJncmEpKS5zdG9yZShyZ2JhLnZl YygpKTsKKysgICAgU2s0ZiBjNGYgPSBTazRmX2Zyb21MMzIoYmdyYSk7CisrI2lmZGVmIFNLX0NQ VV9CRU5ESUFOCisrICAgIC8vIEFSR0IgLT4gUkdCQQorKyAgICBjNGYgPSBTa054X3NodWZmbGU8 MSwgMiwgMywgMD4oYzRmKTsKKysjZWxzZQorKyAgICAvLyBCR1JBIC0+IFJHQkEKKysgICAgYzRm ID0gc3dpenpsZV9yYihjNGYpOworKyNlbmRpZgorKyAgICBjNGYuc3RvcmUocmdiYS52ZWMoKSk7 CisgICAgIHJldHVybiByZ2JhOworIH0KKyAKKyB0ZW1wbGF0ZSA8PgorIFNrQ29sb3IgU2tDb2xv cjRmOjp0b1NrQ29sb3IoKSBjb25zdCB7CistICAgIHJldHVybiBTazRmX3RvTDMyKHN3aXp6bGVf cmIoU2s0Zjo6TG9hZCh0aGlzLT52ZWMoKSkpKTsKKysgICAgU2s0ZiBjNGYgPSBTazRmOjpMb2Fk KHRoaXMtPnZlYygpKTsKKysjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KKysgICAgLy8gUkdCQSAtPiBB UkdCCisrICAgIGM0ZiA9IFNrTnhfc2h1ZmZsZTwzLCAwLCAxLCAyPihjNGYpOworKyNlbHNlCisr ICAgIC8vIFJHQkEgLT4gQkdSQQorKyAgICBjNGYgPSBzd2l6emxlX3JiKGM0Zik7CisrI2VuZGlm CisrICAgIHJldHVybiBTazRmX3RvTDMyKGM0Zik7CisgfQorIAorIHRlbXBsYXRlIDw+CistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2Nv cmUvU2tQaXhtYXAuY3BwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tQaXhtYXAuY3BwCitAQCAtMjQ2LDcgKzI0Niw4IEBA IFNrQ29sb3IgU2tQaXhtYXA6OmdldENvbG9yKGludCB4LCBpbnQgeSkgY29uc3QgeworICAgICBj b25zdCBib29sIG5lZWRzVW5wcmVtdWwgPSAoa1ByZW11bF9Ta0FscGhhVHlwZSA9PSBmSW5mby5h bHBoYVR5cGUoKSk7CisgICAgIGF1dG8gdG9Db2xvciA9IFtuZWVkc1VucHJlbXVsXSh1aW50MzJf dCBtYXliZVByZW11bENvbG9yKSB7CisgICAgICAgICByZXR1cm4gbmVlZHNVbnByZW11bCA/IFNr VW5QcmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3IobWF5YmVQcmVtdWxDb2xvcikKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogU2tTd2l6emxlX0JHUkFfdG9fUE1Db2xvcihtYXliZVBy ZW11bENvbG9yKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU2tDb2xvclNldEFS R0IoU2tHZXRQYWNrZWRBMzIobWF5YmVQcmVtdWxDb2xvciksIFNrR2V0UGFja2VkUjMyKG1heWJl UHJlbXVsQ29sb3IpLAorKwkJCQkJICAgICAgU2tHZXRQYWNrZWRHMzIobWF5YmVQcmVtdWxDb2xv ciksIFNrR2V0UGFja2VkQjMyKG1heWJlUHJlbXVsQ29sb3IpKTsKKyAgICAgfTsKKyAKKyAgICAg c3dpdGNoICh0aGlzLT5jb2xvclR5cGUoKSkgeworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrNHB4X25vbmUuaAorKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRz L1NrNHB4X25vbmUuaAorQEAgLTM1LDcgKzM1LDYgQEAgaW5saW5lIFNrNHB4IFNrNHB4OjpXaWRl OjpkaXYyNTUoKSBjb25zdCB7CisgfQorIAorIGlubGluZSBTazRweCBTazRweDo6YWxwaGFzKCkg Y29uc3QgeworLSAgICBzdGF0aWNfYXNzZXJ0KFNLX0EzMl9TSElGVCA9PSAyNCwgIlRoaXMgbWV0 aG9kIGFzc3VtZXMgbGl0dGxlLWVuZGlhbi4iKTsKKyAgICAgcmV0dXJuIFNrMTZiKCgqdGhpcylb IDNdLCAoKnRoaXMpWyAzXSwgKCp0aGlzKVsgM10sICgqdGhpcylbIDNdLAorICAgICAgICAgICAg ICAgICAgKCp0aGlzKVsgN10sICgqdGhpcylbIDddLCAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10s CisgICAgICAgICAgICAgICAgICAoKnRoaXMpWzExXSwgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFd LCAoKnRoaXMpWzExXSwKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta0JsaXRSb3dfb3B0cy5oCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tCbGl0Um93 X29wdHMuaAorQEAgLTIzNyw4ICsyMzcsOCBAQCB2b2lkIGJsaXRfcm93X3MzMmFfb3BhcXVlKFNr UE1Db2xvciogZHN0LCBjb25zdCBTa1BNQ29sb3IqIHNyYywgaW50IGxlbiwgVThDUFUgYQorICAg ICAgICAgLy8gd2l0aCBjaHJvbWl1bTo2MTEwMDIgd2UgbmVlZCB0byBrZWVwIGl0IHVudGlsIHdl IGZpZ3VyZSBvdXQgd2hlcmUKKyAgICAgICAgIC8vIHRoZSBub24tcHJlbXVsdGlwbGllZCBzcmMg dmFsdWVzIChsaWtlIDB4MDBGRkZGRkYpIGFyZSBjb21pbmcgZnJvbS4KKyAgICAgICAgIC8vIFRP RE8obXRrbGVpbik6IHNvcnQgdGhpcyBvdXQgYW5kIGFzc2VydCAqc3JjIGlzIHByZW11bCBoZXJl LgorLSAgICAgICAgaWYgKCpzcmMgJiAweEZGMDAwMDAwKSB7CistICAgICAgICAgICAgKmRzdCA9 ICgqc3JjID49IDB4RkYwMDAwMDApID8gKnNyYyA6IFNrUE1TcmNPdmVyKCpzcmMsICpkc3QpOwor KyAgICAgICAgaWYgKCpzcmMgJiAoMHhGRiA8PCBTS19BMzJfU0hJRlQpKSB7CisrICAgICAgICAg ICAgKmRzdCA9ICgoKnNyYyA8PCAoMjQgLSBTS19BMzJfU0hJRlQpKSA+PSAweEZGMDAwMDAwKSA/ ICpzcmMgOiBTa1BNU3JjT3Zlcigqc3JjLCAqZHN0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHNy YysrOworICAgICAgICAgZHN0Kys7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tSYXN0ZXJQaXBlbGluZV9vcHRzLmgKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMv b3B0cy9Ta1Jhc3RlclBpcGVsaW5lX29wdHMuaAorQEAgLTk0OCwxMCArOTQ4LDE3IEBAIFNJIHZv aWQgZnJvbV80NDQ0KFUxNiBfNDQ0NCwgRiogciwgRiogZywgRiogYiwgRiogYSkgeworICAgICAq YSA9IGNhc3Qod2lkZSAmICgxNTw8IDApKSAqICgxLjBmIC8gKDE1PDwgMCkpOworIH0KKyBTSSB2 b2lkIGZyb21fODg4OChVMzIgXzg4ODgsIEYqIHIsIEYqIGcsIEYqIGIsIEYqIGEpIHsKKysjaWZk ZWYgU0tfQ1BVX0JFTkRJQU4KKysgICAgKnIgPSBjYXN0KChfODg4OCA+PiAyNCkgICAgICAgKSAq ICgxLzI1NS4wZik7CisrICAgICpnID0gY2FzdCgoXzg4ODggPj4gMTYpICYgMHhmZikgKiAoMS8y NTUuMGYpOworKyAgICAqYiA9IGNhc3QoKF84ODg4ID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBm KTsKKysgICAgKmEgPSBjYXN0KChfODg4OCAgICAgICkgJiAweGZmKSAqICgxLzI1NS4wZik7Cisr I2Vsc2UKKyAgICAgKnIgPSBjYXN0KChfODg4OCAgICAgICkgJiAweGZmKSAqICgxLzI1NS4wZik7 CisgICAgICpnID0gY2FzdCgoXzg4ODggPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOworICAg ICAqYiA9IGNhc3QoKF84ODg4ID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKKyAgICAgKmEg PSBjYXN0KChfODg4OCA+PiAyNCkgICAgICAgKSAqICgxLzI1NS4wZik7CisrI2VuZGlmCisgfQor IFNJIHZvaWQgZnJvbV8xMDEwMTAyKFUzMiByZ2JhLCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7 CisgICAgICpyID0gY2FzdCgocmdiYSAgICAgICkgJiAweDNmZikgKiAoMS8xMDIzLjBmKTsKK0BA IC0xMjc4LDEwICsxMjg1LDE3IEBAIFNUQUdFKHNyY292ZXJfcmdiYV84ODg4LCBjb25zdCBTa1Jh c3RlclBpcGVsaW5lX01lbW9yeUN0eCogY3R4KSB7CisgICAgIGF1dG8gcHRyID0gcHRyX2F0X3h5 PHVpbnQzMl90PihjdHgsIGR4LGR5KTsKKyAKKyAgICAgVTMyIGRzdCA9IGxvYWQ8VTMyPihwdHIs IHRhaWwpOworKyNpZmRlZiBTS19DUFVfQkVORElBTgorKyAgICBkciA9IGNhc3QoKGRzdCA+PiAy NCkgICAgICAgKTsKKysgICAgZGcgPSBjYXN0KChkc3QgPj4gMTYpICYgMHhmZik7CisrICAgIGRi ID0gY2FzdCgoZHN0ID4+ICA4KSAmIDB4ZmYpOworKyAgICBkYSA9IGNhc3QoKGRzdCAgICAgICkg JiAweGZmKTsKKysjZWxzZQorICAgICBkciA9IGNhc3QoKGRzdCAgICAgICkgJiAweGZmKTsKKyAg ICAgZGcgPSBjYXN0KChkc3QgPj4gIDgpICYgMHhmZik7CisgICAgIGRiID0gY2FzdCgoZHN0ID4+ IDE2KSAmIDB4ZmYpOworICAgICBkYSA9IGNhc3QoKGRzdCA+PiAyNCkgICAgICAgKTsKKysjZW5k aWYKKyAgICAgLy8ge2RyLGRnLGRiLGRhfSBhcmUgaW4gWzAsMjU1XQorICAgICAvLyB7IHIsIGcs IGIsIGF9IGFyZSBpbiBbMCwgIDFdIChidXQgbWF5IGJlIG91dCBvZiBnYW11dCkKKyAKK0BAIC0x MjkyLDEwICsxMzA2LDE3IEBAIFNUQUdFKHNyY292ZXJfcmdiYV84ODg4LCBjb25zdCBTa1Jhc3Rl clBpcGVsaW5lX01lbW9yeUN0eCogY3R4KSB7CisgICAgIC8vIHsgciwgZywgYiwgYX0gYXJlIG5v dyBpbiBbMCwyNTVdICAoYnV0IG1heSBiZSBvdXQgb2YgZ2FtdXQpCisgCisgICAgIC8vIHRvX3Vu b3JtKCkgY2xhbXBzIGJhY2sgdG8gZ2FtdXQuICBTY2FsaW5nIGJ5IDEgc2luY2Ugd2UncmUgYWxy ZWFkeSAyNTUtYmlhc2VkLgorKyNpZmRlZiBTS19DUFVfQkVORElBTgorKyAgICBkc3QgPSB0b191 bm9ybShyLCAxLCAyNTUpIDw8IDI0CisrICAgICAgICB8IHRvX3Vub3JtKGcsIDEsIDI1NSkgPDwg MTYKKysgICAgICAgIHwgdG9fdW5vcm0oYiwgMSwgMjU1KSA8PCAgOAorKyAgICAgICAgfCB0b191 bm9ybShhLCAxLCAyNTUpOworKyNlbHNlCisgICAgIGRzdCA9IHRvX3Vub3JtKHIsIDEsIDI1NSkK KyAgICAgICAgIHwgdG9fdW5vcm0oZywgMSwgMjU1KSA8PCAgOAorICAgICAgICAgfCB0b191bm9y bShiLCAxLCAyNTUpIDw8IDE2CisgICAgICAgICB8IHRvX3Vub3JtKGEsIDEsIDI1NSkgPDwgMjQ7 CisrI2VuZGlmCisgICAgIHN0b3JlKHB0ciwgZHN0LCB0YWlsKTsKKyB9CisgCitAQCAtMTY5NCwx MCArMTcxNSwxNyBAQCBTVEFHRShnYXRoZXJfODg4OCwgY29uc3QgU2tSYXN0ZXJQaXBlbGluZV9H YXRoZXJDdHgqIGN0eCkgeworIFNUQUdFKHN0b3JlXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxp bmVfTWVtb3J5Q3R4KiBjdHgpIHsKKyAgICAgYXV0byBwdHIgPSBwdHJfYXRfeHk8dWludDMyX3Q+ KGN0eCwgZHgsZHkpOworIAorKyNpZmRlZiBTS19DUFVfQkVORElBTgorKyAgICBVMzIgcHggPSB0 b191bm9ybShyLCAyNTUpIDw8IDI0CisrICAgICAgICAgICB8IHRvX3Vub3JtKGcsIDI1NSkgPDwg MTYKKysgICAgICAgICAgIHwgdG9fdW5vcm0oYiwgMjU1KSA8PCAgOAorKyAgICAgICAgICAgfCB0 b191bm9ybShhLCAyNTUpOworKyNlbHNlCisgICAgIFUzMiBweCA9IHRvX3Vub3JtKHIsIDI1NSkK KyAgICAgICAgICAgIHwgdG9fdW5vcm0oZywgMjU1KSA8PCAgOAorICAgICAgICAgICAgfCB0b191 bm9ybShiLCAyNTUpIDw8IDE2CisgICAgICAgICAgICB8IHRvX3Vub3JtKGEsIDI1NSkgPDwgMjQ7 CisrI2VuZGlmCisgICAgIHN0b3JlKHB0ciwgcHgsIHRhaWwpOworIH0KKyAKK0BAIC0yODUyLDEw ICsyODgwLDE3IEBAIFNJIHZvaWQgZnJvbV84ODg4KFUzMiByZ2JhLCBVMTYqIHIsIFUxNiogZywg VTE2KiBiLCBVMTYqIGEpIHsKKyAgICAgICAgIHJldHVybiBjYXN0PFUxNj4odik7CisgICAgIH07 CisgI2VuZGlmCisrI2lmZGVmIFNLX0NQVV9CRU5ESUFOCisrICAgICpyID0gY2FzdF9VMTYocmdi YSA+PiAgIDE2KSA+PiAgODsKKysgICAgKmcgPSBjYXN0X1UxNihyZ2JhID4+ICAgMTYpICYgMjU1 OworKyAgICAqYiA9IGNhc3RfVTE2KHJnYmEgJiA2NTUzNSkgPj4gIDg7CisrICAgICphID0gY2Fz dF9VMTYocmdiYSAmIDY1NTM1KSAmIDI1NTsKKysjZWxzZQorICAgICAqciA9IGNhc3RfVTE2KHJn YmEgJiA2NTUzNSkgJiAyNTU7CisgICAgICpnID0gY2FzdF9VMTYocmdiYSAmIDY1NTM1KSA+PiAg ODsKKyAgICAgKmIgPSBjYXN0X1UxNihyZ2JhID4+ICAgMTYpICYgMjU1OworICAgICAqYSA9IGNh c3RfVTE2KHJnYmEgPj4gICAxNikgPj4gIDg7CisrI2VuZGlmCisgfQorIAorIFNJIHZvaWQgbG9h ZF84ODg4Xyhjb25zdCB1aW50MzJfdCogcHRyLCBzaXplX3QgdGFpbCwgVTE2KiByLCBVMTYqIGcs IFUxNiogYiwgVTE2KiBhKSB7CitAQCAtMjg5NywxMCArMjkzMiwxNSBAQCBTSSB2b2lkIHN0b3Jl Xzg4ODhfKHVpbnQzMl90KiBwdHIsIHNpemVfdCB0YWlsLCBVMTYgciwgVTE2IGcsIFUxNiBiLCBV MTYgYSkgeworICAgICAgICAgY2FzZSAyOiB2c3Q0X2xhbmVfdTgoKHVpbnQ4X3QqKShwdHIrMSks IHJnYmEsIDEpOworICAgICAgICAgY2FzZSAxOiB2c3Q0X2xhbmVfdTgoKHVpbnQ4X3QqKShwdHIr MCksIHJnYmEsIDApOworICAgICB9CisrI2Vsc2UKKysjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KKysg ICAgc3RvcmUocHRyLCB0YWlsLCBjYXN0PFUzMj4oKHI8PDgpIHwgZykgPDwgMTYKKysgICAgICAg ICAgICAgICAgICAgfCBjYXN0PFUzMj4oKGI8PDgpIHwgYSkgPDwgMCk7CisgI2Vsc2UKKyAgICAg c3RvcmUocHRyLCB0YWlsLCBjYXN0PFUzMj4ociB8IChnPDw4KSkgPDwgIDAKKyAgICAgICAgICAg ICAgICAgICAgfCBjYXN0PFUzMj4oYiB8IChhPDw4KSkgPDwgMTYpOworICNlbmRpZgorKyNlbmRp ZgorIH0KKyAKKyBTVEFHRV9QUChsb2FkXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfTWVt b3J5Q3R4KiBjdHgpIHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmNwcAorKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy91dGlscy9Ta0pTT04uY3BwCitA QCAtMzQsNiArMzQsMTAgQEAgdm9pZCBWYWx1ZTo6aW5pdF90YWdnZWQoVGFnIHQpIHsKKyAKKyAv LyBQb2ludGVyIHZhbHVlcyBzdG9yZSBhIHR5cGUgKGluIHRoZSB1cHBlciBrVGFnQml0cyBiaXRz KSBhbmQgYSBwb2ludGVyLgorIHZvaWQgVmFsdWU6OmluaXRfdGFnZ2VkX3BvaW50ZXIoVGFnIHQs IHZvaWQqIHApIHsKKysjaWYgIWRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCisrICAgIC8vIENoZWNr IHRoYXQga1JlY0FsaWduIGlzIGxhcmdlIGVub3VnaCB0byBsZWF2ZSByb29tIGZvciB0aGUgdGFn CisrICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZhbHVlKSA+IHNpemVvZih1aW50cHRyX3QpIHx8 ICEoa1JlY0FsaWduICYgVmFsdWU6OmtUYWdNYXNrKSwgImtSZWNBbGlnbiBpcyBub3QgYSBtdWx0 aXBsZSBvZiBrVGFnTWFzaysxIik7CisrI2VuZGlmCisgICAgICp0aGlzLT5jYXN0PHVpbnRwdHJf dD4oKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKTsKKyAKKyAgICAgaWYgKHNpemVv ZihWYWx1ZSkgPT0gc2l6ZW9mKHVpbnRwdHJfdCkpIHsKK0BAIC0xNjksNyArMTczLDcgQEAgcHJp dmF0ZToKKyAjaWYgZGVmaW5lZChTS19DUFVfTEVORElBTikKKyAgICAgICAgICpzNjQgJj0gMHgw MGZmZmZmZmZmZmZmZmZmVUxMID4+ICgoa01heElubGluZVN0cmluZ1NpemUgLSBzaXplKSAqIDgp OworICNlbHNlCistICAgICAgICBzdGF0aWNfYXNzZXJ0KGZhbHNlLCAiQmlnLWVuZGlhbiBidWls ZHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLiIpOworKyAgICAgICAgKnM2NCAmPSAw eGZmZmZmZmZmZmZmZmZmMDBVTEwgPDwgKChrTWF4SW5saW5lU3RyaW5nU2l6ZSAtIHNpemUpICog OCk7CisgI2VuZGlmCisgICAgIH0KKyB9OworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy91dGlscy9Ta0pTT04uaAorKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy91dGlscy9Ta0pT T04uaAorQEAgLTEyMCw2ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICAgLS0gaGlnaGVz dCAzIGJpdHMgcmVzZXJ2ZWQgZm9yIHR5cGUgc3RvcmFnZQorIAorICAgICAgKi8KKysjaWYgZGVm aW5lZChTS19DUFVfTEVORElBTikKKyAgICAgZW51bSBjbGFzcyBUYWcgOiB1aW50OF90IHsKKyAg ICAgICAgIC8vIFdlIHBpY2tlZCBrU2hvcnRTdHJpbmcgPT0gMCBzbyB0aGF0IHRhZyAweDAwIGFu ZCBzdG9yZWQgbWF4X3NpemUtc2l6ZSAoNy03PTApCisgICAgICAgICAvLyBjb252ZW5pZW50bHkg b3ZlcmxhcCB0aGUgJ1wwJyB0ZXJtaW5hdG9yLCBhbGxvd2luZyB1cyB0byBzdG9yZSBhIDcgY2hh cmFjdGVyCitAQCAtMTM0LDYgKzEzNSwyMiBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICBrT2JqZWN0 ICAgICAgICAgICAgICAgICAgICAgICA9IDBiMTExMDAwMDAsICAvLyBwdHIgdG8gZXh0ZXJuYWwg c3RvcmFnZQorICAgICB9OworICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1RhZ01hc2sg PSAwYjExMTAwMDAwOworKyNlbHNlCisrICAgIGVudW0gY2xhc3MgVGFnIDogdWludDhfdCB7Cisr ICAgICAgICAvLyBXZSBwaWNrZWQga1Nob3J0U3RyaW5nID09IDAgc28gdGhhdCB0YWcgMHgwMCBh bmQgc3RvcmVkIG1heF9zaXplLXNpemUgKDctNz0wKQorKyAgICAgICAgLy8gY29udmVuaWVudGx5 IG92ZXJsYXAgdGhlICdcMCcgdGVybWluYXRvciwgYWxsb3dpbmcgdXMgdG8gc3RvcmUgYSA3IGNo YXJhY3RlcgorKyAgICAgICAgLy8gQyBzdHJpbmcgaW5saW5lLgorKyAgICAgICAga1Nob3J0U3Ry aW5nICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMDAwLCAgLy8gaW5saW5lIHBheWxvYWQKKysg ICAgICAgIGtOdWxsICAgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMSwgIC8vIG5v IHBheWxvYWQKKysgICAgICAgIGtCb29sICAgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAw MDAxMCwgIC8vIGlubGluZSBwYXlsb2FkCisrICAgICAgICBrSW50ICAgICAgICAgICAgICAgICAg ICAgICAgICA9IDBiMDAwMDAwMTEsICAvLyBpbmxpbmUgcGF5bG9hZAorKyAgICAgICAga0Zsb2F0 ICAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMTAwLCAgLy8gaW5saW5lIHBheWxvYWQK KysgICAgICAgIGtTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDEwMSwgIC8v IHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCisrICAgICAgICBrQXJyYXkgICAgICAgICAgICAgICAg ICAgICAgICA9IDBiMDAwMDAxMTAsICAvLyBwdHIgdG8gZXh0ZXJuYWwgc3RvcmFnZQorKyAgICAg ICAga09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMTExLCAgLy8gcHRyIHRv IGV4dGVybmFsIHN0b3JhZ2UKKysgICAgfTsKKysgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90 IGtUYWdNYXNrID0gMGIwMDAwMDExMTsKKysjZW5kaWYKKyAKKyAgICAgdm9pZCBpbml0X3RhZ2dl ZChUYWcpOworICAgICB2b2lkIGluaXRfdGFnZ2VkX3BvaW50ZXIoVGFnLCB2b2lkKik7CitAQCAt MTkyLDE0ICsyMDksMTQgQEAgcHJpdmF0ZToKKyAKKyAgICAgdWludDhfdCBmRGF0YThba1ZhbHVl U2l6ZV07CisgCistI2lmIGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCisgICAgIHN0YXRpYyBjb25z dGV4cHIgc2l6ZV90IGtUYWdPZmZzZXQgPSBrVmFsdWVTaXplIC0gMTsKKyAKKysjaWYgZGVmaW5l ZChTS19DUFVfTEVORElBTikKKyAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qga1RhZ1Bv aW50ZXJNYXNrID0KKyAgICAgICAgICAgICB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa1RhZ01h c2spIDw8ICgoc2l6ZW9mKHVpbnRwdHJfdCkgLSAxKSAqIDgpKTsKKyAjZWxzZQorLSAgICAvLyBU aGUgY3VycmVudCB2YWx1ZSBsYXlvdXQgYXNzdW1lcyBMRSBhbmQgd2lsbCB0YWtlIHNvbWUgdHdl YWtpbmcgZm9yIEJFLgorLSAgICBzdGF0aWNfYXNzZXJ0KGZhbHNlLCAiQmlnLWVuZGlhbiBidWls ZHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLiIpOworKyAgICBzdGF0aWMgY29uc3Rl eHByIHVpbnRwdHJfdCBrVGFnUG9pbnRlck1hc2sgPQorKyAgICAgICAgICAgIH5zdGF0aWNfY2Fz dDx1aW50cHRyX3Q+KGtUYWdNYXNrKTsKKyAjZW5kaWYKKyB9OworIAorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21z L3NrY21zLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKK0BAIC02NiwxMCArNjYsMTUgQEAg c3RhdGljIGZsb2F0IGV2YWxfY3VydmUoY29uc3Qgc2tjbXNfQ3VydmUqIGN1cnZlLCBmbG9hdCB4 KSB7CisgICAgICAgICB1aW50MTZfdCBiZV9sLCBiZV9oOworICAgICAgICAgbWVtY3B5KCZiZV9s LCBjdXJ2ZS0+dGFibGVfMTYgKyAyKmxvLCAyKTsKKyAgICAgICAgIG1lbWNweSgmYmVfaCwgY3Vy dmUtPnRhYmxlXzE2ICsgMipoaSwgMik7CisrI2lmIF9fQklHX0VORElBTl9fCisrICAgICAgICBs ID0gYmVfbCAqICgxLzY1NTM1LjBmKTsKKysgICAgICAgIGggPSBiZV9oICogKDEvNjU1MzUuMGYp OworKyNlbHNlCisgICAgICAgICB1aW50MTZfdCBsZV9sID0gKChiZV9sIDw8IDgpIHwgKGJlX2wg Pj4gOCkpICYgMHhmZmZmOworICAgICAgICAgdWludDE2X3QgbGVfaCA9ICgoYmVfaCA8PCA4KSB8 IChiZV9oID4+IDgpKSAmIDB4ZmZmZjsKKyAgICAgICAgIGwgPSBsZV9sICogKDEvNjU1MzUuMGYp OworICAgICAgICAgaCA9IGxlX2ggKiAoMS82NTUzNS4wZik7CisrI2VuZGlmCisgICAgIH0KKyAg ICAgcmV0dXJuIGwgKyAoaC1sKSp0OworIH0KK0BAIC0xMjQsMjEgKzEyOSwyOSBAQCBlbnVtIHsK KyBzdGF0aWMgdWludDE2X3QgcmVhZF9iaWdfdTE2KGNvbnN0IHVpbnQ4X3QqIHB0cikgeworICAg ICB1aW50MTZfdCBiZTsKKyAgICAgbWVtY3B5KCZiZSwgcHRyLCBzaXplb2YoYmUpKTsKKysjaWYg X19CSUdfRU5ESUFOX18KKysgICAgcmV0dXJuIGJlOworKyNlbHNlCisgI2lmIGRlZmluZWQoX01T Q19WRVIpCisgICAgIHJldHVybiBfYnl0ZXN3YXBfdXNob3J0KGJlKTsKKyAjZWxzZQorICAgICBy ZXR1cm4gX19idWlsdGluX2Jzd2FwMTYoYmUpOworICNlbmRpZgorKyNlbmRpZgorIH0KKyAKKyBz dGF0aWMgdWludDMyX3QgcmVhZF9iaWdfdTMyKGNvbnN0IHVpbnQ4X3QqIHB0cikgeworICAgICB1 aW50MzJfdCBiZTsKKyAgICAgbWVtY3B5KCZiZSwgcHRyLCBzaXplb2YoYmUpKTsKKysjaWYgX19C SUdfRU5ESUFOX18KKysgICAgcmV0dXJuIGJlOworKyNlbHNlCisgI2lmIGRlZmluZWQoX01TQ19W RVIpCisgICAgIHJldHVybiBfYnl0ZXN3YXBfdWxvbmcoYmUpOworICNlbHNlCisgICAgIHJldHVy biBfX2J1aWx0aW5fYnN3YXAzMihiZSk7CisgI2VuZGlmCisrI2VuZGlmCisgfQorIAorIHN0YXRp YyBpbnQzMl90IHJlYWRfYmlnX2kzMihjb25zdCB1aW50OF90KiBwdHIpIHsKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9z a2Ntcy9zcmMvVHJhbnNmb3JtX2lubC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc3JjL1RyYW5zZm9ybV9p bmwuaAorQEAgLTM5Miw5ICszOTIsMTEgQEAgU0kgVTMyIGdhdGhlcl8zMihjb25zdCB1aW50OF90 KiBwLCBJMzIgaXgpIHsKKyB9CisgCisgU0kgVTMyIGdhdGhlcl8yNChjb25zdCB1aW50OF90KiBw LCBJMzIgaXgpIHsKKysjaWYgIV9fQklHX0VORElBTl9fCisgICAgIC8vIEZpcnN0LCBiYWNrIHVw IGEgYnl0ZS4gIEFueSBwbGFjZSB3ZSdyZSBnYXRoZXJpbmcgZnJvbSBoYXMgYSBzYWZlIGp1bmsg Ynl0ZSB0byByZWFkCisgICAgIC8vIGluIGZyb250IG9mIGl0LCBlaXRoZXIgYSBwcmV2aW91cyB0 YWJsZSB2YWx1ZSwgb3Igc29tZSB0YWcgbWV0YWRhdGEuCisgICAgIHAgLT0gMTsKKysjZW5kaWYK KyAKKyAgICAgLy8gTG9hZCB0aGUgaSd0aCAyNC1iaXQgdmFsdWUgZnJvbSBwLCBhbmQgMSBleHRy YSBieXRlLgorICAgICBhdXRvIGxvYWRfMjRfMzIgPSBbcF0oaW50IGkpIHsKK0BAIC00MzUsOCAr NDM3LDEwIEBAIFNJIFUzMiBnYXRoZXJfMjQoY29uc3QgdWludDhfdCogcCwgSTMyIGl4KSB7Cisg CisgI2lmICFkZWZpbmVkKF9fYXJtX18pCisgICAgIFNJIHZvaWQgZ2F0aGVyXzQ4KGNvbnN0IHVp bnQ4X3QqIHAsIEkzMiBpeCwgVTY0KiB2KSB7CisrI2lmICFfX0JJR19FTkRJQU5fXworICAgICAg ICAgLy8gQXMgaW4gZ2F0aGVyXzI0KCksIHdpdGggZXZlcnl0aGluZyBkb3VibGVkLgorICAgICAg ICAgcCAtPSAyOworKyNlbmRpZgorIAorICAgICAgICAgLy8gTG9hZCB0aGUgaSd0aCA0OC1iaXQg dmFsdWUgZnJvbSBwLCBhbmQgMiBleHRyYSBieXRlcy4KKyAgICAgICAgIGF1dG8gbG9hZF80OF82 NCA9IFtwXShpbnQgaSkgeworQEAgLTQ5OSw3ICs1MDMsOSBAQCBTSSBGIEZfZnJvbV9VOChVOCB2 KSB7CisgU0kgRiBGX2Zyb21fVTE2X0JFKFUxNiB2KSB7CisgICAgIC8vIEFsbCAxNi1iaXQgSUND IHZhbHVlcyBhcmUgYmlnLWVuZGlhbiwgc28gd2UgYnl0ZSBzd2FwIGJlZm9yZSBjb252ZXJ0aW5n IHRvIGZsb2F0LgorICAgICAvLyBNU1ZDIGNhdGNoZXMgdGhlICJsb3NzIiBvZiBkYXRhIGhlcmUg aW4gdGhlIHBvcnRhYmxlIHBhdGgsIHNvIHdlIGFsc28gbWFrZSBzdXJlIHRvIG1hc2suCisrI2lm ICFfX0JJR19FTkRJQU5fXworICAgICB2ID0gVTE2KCAwIHwgKCh2ICYgMHgwMGZmKSA8PCA4KSB8 ICgodiAmIDB4ZmYwMCkgPj4gOCkgKTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIGNhc3Q8Rj4odikg KiAoMS82NTUzNS4wZik7CisgfQorIAorQEAgLTUzNCw5ICs1NDAsMTUgQEAgU0kgRiB0YWJsZShj b25zdCBza2Ntc19DdXJ2ZSogY3VydmUsIEYgdikgeworIFNJIHZvaWQgc2FtcGxlX2NsdXRfOChj b25zdCBza2Ntc19BMkIqIGEyYiwgSTMyIGl4LCBGKiByLCBGKiBnLCBGKiBiKSB7CisgICAgIFUz MiByZ2IgPSBnYXRoZXJfMjQoYTJiLT5ncmlkXzgsIGl4KTsKKyAKKysjaWYgX19CSUdfRU5ESUFO X18KKysgICAgKnIgPSBjYXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOwor KyAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7CisrICAg ICpiID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKKysjZWxzZQor ICAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7CisgICAg ICpnID0gY2FzdDxGPigocmdiID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKKyAgICAgKmIg PSBjYXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOworKyNlbmRpZgorIH0K KyAKKyBTSSB2b2lkIHNhbXBsZV9jbHV0XzE2KGNvbnN0IHNrY21zX0EyQiogYTJiLCBJMzIgaXgs IEYqIHIsIEYqIGcsIEYqIGIpIHsKK0BAIC01NDksMTIgKzU2MSwxOCBAQCBTSSB2b2lkIHNhbXBs ZV9jbHV0XzE2KGNvbnN0IHNrY21zX0EyQiogYTJiLCBJMzIgaXgsIEYqIHIsIEYqIGcsIEYqIGIp IHsKKyAgICAgLy8gVGhpcyBzdHJhdGVneSBpcyBtdWNoIGZhc3RlciBmb3IgNjQtYml0IGJ1aWxk cywgYW5kIGZpbmUgZm9yIDMyLWJpdCB4ODYgdG9vLgorICAgICBVNjQgcmdiOworICAgICBnYXRo ZXJfNDgoYTJiLT5ncmlkXzE2LCBpeCwgJnJnYik7CisrI2lmIF9fQklHX0VORElBTl9fCisrICAg ICpyID0gY2FzdDxGPigocmdiID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisrICAg ICpnID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisrICAg ICpiID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisrI2Vs c2UKKyAgICAgcmdiID0gc3dhcF9lbmRpYW5fMTZ4NChyZ2IpOworIAorICAgICAqciA9IGNhc3Q8 Rj4oKHJnYiA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworICAgICAqZyA9IGNhc3Q8 Rj4oKHJnYiA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworICAgICAqYiA9IGNhc3Q8 Rj4oKHJnYiA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworICNlbmRpZgorKyNlbmRp ZgorIH0KKyAKKyAvLyBHQ0MgNy4yLjAgaGl0cyBhbiBpbnRlcm5hbCBjb21waWxlciBlcnJvciB3 aXRoIC1maW5saW5lLWZ1bmN0aW9ucyAob3IgLU8zKQorQEAgLTY5NSwxMCArNzEzLDE3IEBAIHN0 YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAorICAg ICAgICAgICAgIGNhc2UgT3BfbG9hZF84ODg4OnsKKyAgICAgICAgICAgICAgICAgVTMyIHJnYmEg PSBsb2FkPFUzMj4oc3JjICsgNCppKTsKKyAKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAg ICAgICAgICAgciA9IGNhc3Q8Rj4oKHJnYmEgPj4gMjQpICYgMHhmZikgKiAoMS8yNTUuMGYpOwor KyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigocmdiYSA+PiAxNikgJiAweGZmKSAqICgxLzI1 NS4wZik7CisrICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChyZ2JhID4+ICA4KSAmIDB4ZmYp ICogKDEvMjU1LjBmKTsKKysgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDAp ICYgMHhmZikgKiAoMS8yNTUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAgICAgIHIgPSBjYXN0 PEY+KChyZ2JhID4+ICAwKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKKyAgICAgICAgICAgICAgICAg ZyA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOworICAgICAgICAg ICAgICAgICBiID0gY2FzdDxGPigocmdiYSA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Cisg ICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChyZ2JhID4+IDI0KSAmIDB4ZmYpICogKDEvMjU1 LjBmKTsKKysjZW5kaWYKKyAgICAgICAgICAgICB9IGJyZWFrOworIAorICAgICAgICAgICAgIGNh c2UgT3BfbG9hZF84ODg4X3BhbGV0dGU4OnsKK0BAIC03MjcsMTMgKzc1MiwyOSBAQCBzdGF0aWMg dm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAgICAgICAg ICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYiA9IChjb25zdCB1aW50MTZfdCopcHRyOyAvLyBj YXN0IHRvIGNvbnN0IHVpbnQxNl90KiB0byBiZSBzYWZlLgorICAgICAgICAgICAgICNpZiBkZWZp bmVkKFVTSU5HX05FT04pCisgICAgICAgICAgICAgICAgIHVpbnQxNng0eDNfdCB2ID0gdmxkM191 MTYocmdiKTsKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAgICAgICAgICAgciA9IGNhc3Q8 Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOworKyAgICAg ICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFdKSkgKiAo MS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2 KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKKysjZWxzZQorICAgICAgICAgICAgICAg ICByID0gY2FzdDxGPigoVTE2KXYudmFsWzBdKSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAg ICAgICAgZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsxXSkgKiAoMS82NTUzNS4wZik7CisgICAgICAg ICAgICAgICAgIGIgPSBjYXN0PEY+KChVMTYpdi52YWxbMl0pICogKDEvNjU1MzUuMGYpOworKyNl bmRpZgorICAgICAgICAgICAgICNlbHNlCisrI2lmIF9fQklHX0VORElBTl9fCisrICAgICAgICAg ICAgICAgIFUzMiBSID0gbG9hZF8zPFUzMj4ocmdiKzApLAorKyAgICAgICAgICAgICAgICAgICAg RyA9IGxvYWRfMzxVMzI+KHJnYisxKSwKKysgICAgICAgICAgICAgICAgICAgIEIgPSBsb2FkXzM8 VTMyPihyZ2IrMik7CisrICAgICAgICAgICAgICAgIC8vIFIsRyxCIGFyZSBsaXR0bGUtZW5kaWFu IDE2LWJpdCwgc28gYnl0ZSBzd2FwIHRoZW0gYmVmb3JlIGNvbnZlcnRpbmcgdG8gZmxvYXQuCisr ICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChSICYgMHgwMGZmKTw8OCB8IChSICYgMHhmZjAw KT4+OCkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChHICYg MHgwMGZmKTw8OCB8IChHICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAg ICAgICAgIGIgPSBjYXN0PEY+KChCICYgMHgwMGZmKTw8OCB8IChCICYgMHhmZjAwKT4+OCkgKiAo MS82NTUzNS4wZik7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4obG9hZF8z PFUzMj4ocmdiKzApKSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8 Rj4obG9hZF8zPFUzMj4ocmdiKzEpKSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAg YiA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzIpKSAqICgxLzY1NTM1LjBmKTsKKysjZW5kaWYK KyAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICB9IGJyZWFrOworIAorQEAgLTc0Mywx NyArNzg0LDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZv aWQqKiBhcmdzLAorICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiYSA9IChjb25z dCB1aW50MTZfdCopcHRyOyAvLyBjYXN0IHRvIGNvbnN0IHVpbnQxNl90KiB0byBiZSBzYWZlLgor ICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCisgICAgICAgICAgICAgICAgIHVp bnQxNng0eDRfdCB2ID0gdmxkNF91MTYocmdiYSk7CisrI2lmIF9fQklHX0VORElBTl9fCisrICAg ICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAq ICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5f MTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1MzUuMGYpOworKyAgICAgICAgICAgICAgICBiID0g Y2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7Cisr ICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbM10p KSAqICgxLzY1NTM1LjBmKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICByID0gY2FzdDxGPigo VTE2KXYudmFsWzBdKSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8 Rj4oKFUxNil2LnZhbFsxXSkgKiAoMS82NTUzNS4wZik7CisgICAgICAgICAgICAgICAgIGIgPSBj YXN0PEY+KChVMTYpdi52YWxbMl0pICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAgICBh ID0gY2FzdDxGPigoVTE2KXYudmFsWzNdKSAqICgxLzY1NTM1LjBmKTsKKysjZW5kaWYKKyAgICAg ICAgICAgICAjZWxzZQorKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAgICAgICAgICAgICBVNjQg cHggPSBzd2FwX2VuZGlhbl8xNng0KGxvYWQ8VTY0PihyZ2JhKSk7CisrCisrICAgICAgICAgICAg ICAgIHIgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworKyAg ICAgICAgICAgICAgICBnID0gY2FzdDxGPigocHggPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1 LjBmKTsKKysgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikg KiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiAgMCkg JiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAgICAgIFU2NCBw eCA9IGxvYWQ8VTY0PihyZ2JhKTsKKyAKKyAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHB4 ID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisgICAgICAgICAgICAgICAgIGcgPSBj YXN0PEY+KChweCA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAg ICAgICBiID0gY2FzdDxGPigocHggPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKKyAg ICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUz NS4wZik7CisrI2VuZGlmCisgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgfSBicmVh azsKKyAKK0BAIC03NjMsMTAgKzgyMCwyMSBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBP cCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2 X3QqIHJnYiA9IChjb25zdCB1aW50MTZfdCopcHRyOyAvLyBjYXN0IHRvIGNvbnN0IHVpbnQxNl90 KiB0byBiZSBzYWZlLgorICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCisgICAg ICAgICAgICAgICAgIHVpbnQxNng0eDNfdCB2ID0gdmxkM191MTYocmdiKTsKKysjaWYgX19CSUdf RU5ESUFOX18KKysgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAo MS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChVMTYpdi52YWxbMV0p ICogKDEvNjU1MzUuMGYpOworKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigoVTE2KXYudmFs WzJdKSAqICgxLzY1NTM1LjBmKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICByID0gY2FzdDxG Pihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBdKSkgKiAoMS82NTUzNS4wZik7CisgICAgICAg ICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMV0pKSAqICgx LzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYo KFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYpOworKyNlbmRpZgorICAgICAgICAgICAgICNl bHNlCisrI2lmIF9fQklHX0VORElBTl9fCisrICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KGxv YWRfMzxVMzI+KHJnYiswKSkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGcgPSBj YXN0PEY+KGxvYWRfMzxVMzI+KHJnYisxKSkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAg ICAgIGIgPSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJnYisyKSkgKiAoMS82NTUzNS4wZik7CisrI2Vs c2UKKyAgICAgICAgICAgICAgICAgVTMyIFIgPSBsb2FkXzM8VTMyPihyZ2IrMCksCisgICAgICAg ICAgICAgICAgICAgICBHID0gbG9hZF8zPFUzMj4ocmdiKzEpLAorICAgICAgICAgICAgICAgICAg ICAgQiA9IGxvYWRfMzxVMzI+KHJnYisyKTsKK0BAIC03NzQsNiArODQyLDcgQEAgc3RhdGljIHZv aWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCisgICAgICAgICAg ICAgICAgIHIgPSBjYXN0PEY+KChSICYgMHgwMGZmKTw8OCB8IChSICYgMHhmZjAwKT4+OCkgKiAo MS82NTUzNS4wZik7CisgICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChHICYgMHgwMGZmKTw8 OCB8IChHICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4wZik7CisgICAgICAgICAgICAgICAgIGIg PSBjYXN0PEY+KChCICYgMHgwMGZmKTw8OCB8IChCICYgMHhmZjAwKT4+OCkgKiAoMS82NTUzNS4w Zik7CisrI2VuZGlmCisgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgfSBicmVhazsK KyAKK0BAIC03ODMsMTcgKzg1MiwzMyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCog b3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3Qq IHJnYmEgPSAoY29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1aW50MTZfdCog dG8gYmUgc2FmZS4KKyAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQorICAgICAg ICAgICAgICAgICB1aW50MTZ4NHg0X3QgdiA9IHZsZDRfdTE2KHJnYmEpOworKyNpZiBfX0JJR19F TkRJQU5fXworKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPigoVTE2KXYudmFsWzBdKSAqICgx LzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsxXSkg KiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChVMTYpdi52YWxb Ml0pICogKDEvNjU1MzUuMGYpOworKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigoVTE2KXYu dmFsWzNdKSAqICgxLzY1NTM1LjBmKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICByID0gY2Fz dDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBdKSkgKiAoMS82NTUzNS4wZik7CisgICAg ICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMV0pKSAq ICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5f MTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAgICBhID0g Y2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzNdKSkgKiAoMS82NTUzNS4wZik7Cisr I2VuZGlmCisgICAgICAgICAgICAgI2Vsc2UKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAg ICAgICAgICAgVTY0IHB4ID0gbG9hZDxVNjQ+KHJnYmEpOworKworKyAgICAgICAgICAgICAgICBy ID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAg ICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7 CisrICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAxNikgJiAweGZmZmYpICogKDEv NjU1MzUuMGYpOworKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4gIDApICYgMHhm ZmZmKSAqICgxLzY1NTM1LjBmKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICBVNjQgcHggPSBz d2FwX2VuZGlhbl8xNng0KGxvYWQ8VTY0PihyZ2JhKSk7CisgCisgICAgICAgICAgICAgICAgIHIg PSBjYXN0PEY+KChweCA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworICAgICAgICAg ICAgICAgICBnID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsK KyAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82 NTUzNS4wZik7CisgICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZm ZmYpICogKDEvNjU1MzUuMGYpOworKyNlbmRpZgorICAgICAgICAgICAgICNlbmRpZgorICAgICAg ICAgICAgIH0gYnJlYWs7CisgCitAQCAtODI4LDEwICs5MTMsMTcgQEAgc3RhdGljIHZvaWQgZXhl Y19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCisgICAgICAgICAgICAgICAg ICAgICBBID0gKFUxNil2LnZhbFszXTsKKyAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAg ICAgICBVNjQgcHggPSBsb2FkPFU2ND4ocmdiYSk7CisrI2lmIF9fQklHX0VORElBTl9fCisrICAg ICAgICAgICAgICAgIFUxNiBSID0gY2FzdDxVMTY+KChweCA+PiA0OCkgJiAweGZmZmYpLAorKyAg ICAgICAgICAgICAgICAgICAgRyA9IGNhc3Q8VTE2PigocHggPj4gMzIpICYgMHhmZmZmKSwKKysg ICAgICAgICAgICAgICAgICAgIEIgPSBjYXN0PFUxNj4oKHB4ID4+IDE2KSAmIDB4ZmZmZiksCisr ICAgICAgICAgICAgICAgICAgICBBID0gY2FzdDxVMTY+KChweCA+PiAgMCkgJiAweGZmZmYpOwor KyNlbHNlCisgICAgICAgICAgICAgICAgIFUxNiBSID0gY2FzdDxVMTY+KChweCA+PiAgMCkgJiAw eGZmZmYpLAorICAgICAgICAgICAgICAgICAgICAgRyA9IGNhc3Q8VTE2PigocHggPj4gMTYpICYg MHhmZmZmKSwKKyAgICAgICAgICAgICAgICAgICAgIEIgPSBjYXN0PFUxNj4oKHB4ID4+IDMyKSAm IDB4ZmZmZiksCisgICAgICAgICAgICAgICAgICAgICBBID0gY2FzdDxVMTY+KChweCA+PiA0OCkg JiAweGZmZmYpOworKyNlbmRpZgorICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAg ICByID0gRl9mcm9tX0hhbGYoUik7CisgICAgICAgICAgICAgICAgIGcgPSBGX2Zyb21fSGFsZihH KTsKK0BAIC0xMDI0LDEwICsxMTE2LDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9w KiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAorICAgICAgICAgICAgIH0gcmV0dXJuOworIAorICAg ICAgICAgICAgIGNhc2UgT3Bfc3RvcmVfODg4ODogeworKyNpZiBfX0JJR19FTkRJQU5fXworKyAg ICAgICAgICAgICAgICBzdG9yZShkc3QgKyA0KmksIGNhc3Q8VTMyPih0b19maXhlZChyICogMjU1 KSA8PCAyNCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9f Zml4ZWQoZyAqIDI1NSkgPDwgMTYpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg Y2FzdDxVMzI+KHRvX2ZpeGVkKGIgKiAyNTUpIDw8ICA4KQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChhICogMjU1KSA8PCAgMCkpOworKyNlbHNl CisgICAgICAgICAgICAgICAgIHN0b3JlKGRzdCArIDQqaSwgY2FzdDxVMzI+KHRvX2ZpeGVkKHIg KiAyNTUpIDw8ICAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMy Pih0b19maXhlZChnICogMjU1KSA8PCAgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYiAqIDI1NSkgPDwgMTYpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGEgKiAyNTUpIDw8IDI0KSk7Cisr I2VuZGlmCisgICAgICAgICAgICAgfSByZXR1cm47CisgCisgICAgICAgICAgICAgY2FzZSBPcF9z dG9yZV8xMDEwMTAyOiB7CitAQCAtMTA0MywxNSArMTE0MiwzMCBAQCBzdGF0aWMgdm9pZCBleGVj X29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAgICAgICAgICAgICAgICAg dWludDE2X3QqIHJnYiA9ICh1aW50MTZfdCopcHRyOyAgICAgICAgICAvLyBmb3IgdGhpcyBjYXN0 IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgorICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5H X05FT04pCisgICAgICAgICAgICAgICAgIHVpbnQxNng0eDNfdCB2ID0ge3sKKysjaWYgX19CSUdf RU5ESUFOX18KKysgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2 KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCisrICAgICAgICAgICAgICAgICAgICAo dWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkp LAorKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxV MTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKKysjZWxzZQorICAgICAgICAgICAgICAgICAgICAg KHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpLAorICAgICAgICAgICAg ICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAorICAg ICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUz NSkpLAorKyNlbmRpZgorICAgICAgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgICAgICAgdnN0 M191MTYocmdiLCB2KTsKKyAgICAgICAgICAgICAjZWxzZQorKyNpZiBfX0JJR19FTkRJQU5fXwor KyAgICAgICAgICAgICAgICBJMzIgUiA9IHRvX2ZpeGVkKHIgKiA2NTUzNSksCisrICAgICAgICAg ICAgICAgICAgICBHID0gdG9fZml4ZWQoZyAqIDY1NTM1KSwKKysgICAgICAgICAgICAgICAgICAg IEIgPSB0b19maXhlZChiICogNjU1MzUpOworKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisw LCBjYXN0PFUxNj4oKFIgJiAweDAwZmYpIDw8IDggfCAoUiAmIDB4ZmYwMCkgPj4gOCkgKTsKKysg ICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxVMTY+KChHICYgMHgwMGZmKSA8PCA4 IHwgKEcgJiAweGZmMDApID4+IDgpICk7CisrICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIs IGNhc3Q8VTE2PigoQiAmIDB4MDBmZikgPDwgOCB8IChCICYgMHhmZjAwKSA+PiA4KSApOworKyNl bHNlCisgICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8VTE2Pih0b19maXhlZChy ICogNjU1MzUpKSk7CisgICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2Pih0 b19maXhlZChnICogNjU1MzUpKSk7CisgICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNh c3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSk7CisrI2VuZGlmCisgICAgICAgICAgICAgI2Vu ZGlmCisgCisgICAgICAgICAgICAgfSByZXR1cm47CitAQCAtMTA2MiwxOCArMTE3NiwzMyBAQCBz dGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAg ICAgICAgICAgICAgICAgdWludDE2X3QqIHJnYmEgPSAodWludDE2X3QqKXB0cjsgICAgICAgIC8v IGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCisgICAgICAgICAgICAgI2lm IGRlZmluZWQoVVNJTkdfTkVPTikKKyAgICAgICAgICAgICAgICAgdWludDE2eDR4NF90IHYgPSB7 eworKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qp c3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwKKysgICAgICAg ICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhl ZChnICogNjU1MzUpKSksCisrICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2Vu ZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAorKyAgICAgICAgICAgICAg ICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGEgKiA2 NTUzNSkpKSwKKysjZWxzZQorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxV MTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpLAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0 X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAorICAgICAgICAgICAgICAgICAgICAg KHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpLAorICAgICAgICAgICAg ICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpLAorKyNl bmRpZgorICAgICAgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgICAgICAgdnN0NF91MTYocmdi YSwgdik7CisgICAgICAgICAgICAgI2Vsc2UKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAg ICAgICAgICAgVTY0IHB4ID0gY2FzdDxVNjQ+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpIDw8IDQ4Cisr ICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChnICogNjU1MzUpKSA8 PCAzMgorKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYiAqIDY1 NTM1KSkgPDwgMTYKKysgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVk KGEgKiA2NTUzNSkpIDw8ICAwOworKyAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBzd2FwX2Vu ZGlhbl8xNng0KHB4KSk7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgVTY0IHB4ID0gY2FzdDxV NjQ+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpIDw8ICAwCisgICAgICAgICAgICAgICAgICAgICAgICB8 IGNhc3Q8VTY0Pih0b19maXhlZChnICogNjU1MzUpKSA8PCAxNgorICAgICAgICAgICAgICAgICAg ICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYiAqIDY1NTM1KSkgPDwgMzIKKyAgICAgICAgICAg ICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpIDw8IDQ4OworICAg ICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBweCk7CisrI2VuZGlmCisgICAgICAgICAgICAgI2Vu ZGlmCisgICAgICAgICAgICAgfSByZXR1cm47CisgCitAQCAtMTA4MywxOCArMTIxMiwzMCBAQCBz dGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAg ICAgICAgICAgICAgICAgdWludDE2X3QqIHJnYiA9ICh1aW50MTZfdCopcHRyOyAgICAgICAgICAv LyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgorICAgICAgICAgICAgICNp ZiBkZWZpbmVkKFVTSU5HX05FT04pCisgICAgICAgICAgICAgICAgIHVpbnQxNng0eDNfdCB2ID0g e3sKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90 KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKKysgICAgICAgICAgICAgICAgICAgICh1 aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwKKysgICAgICAgICAgICAg ICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSwKKysjZWxz ZQorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxV MTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4 NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSksCisgICAg ICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9f Zml4ZWQoYiAqIDY1NTM1KSkpLAorKyNlbmRpZgorICAgICAgICAgICAgICAgICB9fTsKKyAgICAg ICAgICAgICAgICAgdnN0M191MTYocmdiLCB2KTsKKyAgICAgICAgICAgICAjZWxzZQorKyNpZiBf X0JJR19FTkRJQU5fXworKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4o dG9fZml4ZWQociAqIDY1NTM1KSkpOworKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBj YXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpOworKyAgICAgICAgICAgICAgICBzdG9yZV8z KHJnYisyLCBjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpOworKyNlbHNlCisgICAgICAg ICAgICAgICAgIEkzMiBSID0gdG9fZml4ZWQociAqIDY1NTM1KSwKKyAgICAgICAgICAgICAgICAg ICAgIEcgPSB0b19maXhlZChnICogNjU1MzUpLAorICAgICAgICAgICAgICAgICAgICAgQiA9IHRv X2ZpeGVkKGIgKiA2NTUzNSk7CisgICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8 VTE2PigoUiAmIDB4MDBmZikgPDwgOCB8IChSICYgMHhmZjAwKSA+PiA4KSApOworICAgICAgICAg ICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0PFUxNj4oKEcgJiAweDAwZmYpIDw8IDggfCAoRyAm IDB4ZmYwMCkgPj4gOCkgKTsKKyAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMiwgY2FzdDxV MTY+KChCICYgMHgwMGZmKSA8PCA4IHwgKEIgJiAweGZmMDApID4+IDgpICk7CisrI2VuZGlmCisg ICAgICAgICAgICAgI2VuZGlmCisgCisgICAgICAgICAgICAgfSByZXR1cm47CitAQCAtMTEwNSwx OCArMTI0NiwzMyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2 b2lkKiogYXJncywKKyAgICAgICAgICAgICAgICAgdWludDE2X3QqIHJnYmEgPSAodWludDE2X3Qq KXB0cjsgICAgICAgIC8vIGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCisg ICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKKyAgICAgICAgICAgICAgICAgdWlu dDE2eDR4NF90IHYgPSB7eworKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAgICAgICAgICAgICAg ICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpLAorKyAgICAgICAg ICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAor KyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2 NTUzNSkpLAorKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2Zp eGVkKGEgKiA2NTUzNSkpLAorKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAodWludDE2eDRf dClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAorICAgICAg ICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2Zp eGVkKGcgKiA2NTUzNSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBf ZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSksCisgICAgICAgICAgICAg ICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYSAq IDY1NTM1KSkpLAorKyNlbmRpZgorICAgICAgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgICAg ICAgdnN0NF91MTYocmdiYSwgdik7CisgICAgICAgICAgICAgI2Vsc2UKKysjaWYgX19CSUdfRU5E SUFOX18KKysgICAgICAgICAgICAgICAgVTY0IHB4ID0gY2FzdDxVNjQ+KHRvX2ZpeGVkKHIgKiA2 NTUzNSkpIDw8IDQ4CisrICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhl ZChnICogNjU1MzUpKSA8PCAzMgorKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4o dG9fZml4ZWQoYiAqIDY1NTM1KSkgPDwgMTYKKysgICAgICAgICAgICAgICAgICAgICAgIHwgY2Fz dDxVNjQ+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpIDw8ICAwOworKyAgICAgICAgICAgICAgICBzdG9y ZShyZ2JhLCBweCk7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgVTY0IHB4ID0gY2FzdDxVNjQ+ KHRvX2ZpeGVkKHIgKiA2NTUzNSkpIDw8ICAwCisgICAgICAgICAgICAgICAgICAgICAgICB8IGNh c3Q8VTY0Pih0b19maXhlZChnICogNjU1MzUpKSA8PCAxNgorICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYiAqIDY1NTM1KSkgPDwgMzIKKyAgICAgICAgICAgICAg ICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGEgKiA2NTUzNSkpIDw8IDQ4OworICAgICAg ICAgICAgICAgICBzdG9yZShyZ2JhLCBzd2FwX2VuZGlhbl8xNng0KHB4KSk7CisrI2VuZGlmCisg ICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgfSByZXR1cm47CisgCitAQCAtMTE2MCwx MCArMTMxNiwxNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2 b2lkKiogYXJncywKKyAgICAgICAgICAgICAgICAgfX07CisgICAgICAgICAgICAgICAgIHZzdDRf dTE2KHJnYmEsIHYpOworICAgICAgICAgICAgICNlbHNlCisrI2lmIF9fQklHX0VORElBTl9fCisr ICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIGNhc3Q8VTY0PihSKSA8PCA0OAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4oRykgPDwgMzIKKysgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgY2FzdDxVNjQ+KEIpIDw8IDE2CisrICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGNhc3Q8VTY0PihBKSA8PCAgMCk7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgc3RvcmUo cmdiYSwgY2FzdDxVNjQ+KFIpIDw8ICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNh c3Q8VTY0PihHKSA8PCAxNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4o QikgPDwgMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEEpIDw8IDQ4 KTsKKysjZW5kaWYKKyAgICAgICAgICAgICAjZW5kaWYKKyAKKyAgICAgICAgICAgICB9IHJldHVy bjsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2Vi cnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCitA QCAtOTMsMTMgKzkzLDE1IEBAIHNpemVfdCBXYXZSZWFkZXI6Om51bV9zYW1wbGVzKCkgY29uc3Qg eworIH0KKyAKKyBzaXplX3QgV2F2UmVhZGVyOjpSZWFkU2FtcGxlcyhzaXplX3QgbnVtX3NhbXBs ZXMsIGludDE2X3QqIHNhbXBsZXMpIHsKKy0jaWZuZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJ QU4KKy0jZXJyb3IgIk5lZWQgdG8gY29udmVydCBzYW1wbGVzIHRvIGJpZy1lbmRpYW4gd2hlbiBy ZWFkaW5nIGZyb20gV0FWIGZpbGUiCistI2VuZGlmCisgICAvLyBUaGVyZSBjb3VsZCBiZSBtZXRh ZGF0YSBhZnRlciB0aGUgYXVkaW87IGVuc3VyZSB3ZSBkb24ndCByZWFkIGl0LgorICAgbnVtX3Nh bXBsZXMgPSBzdGQ6Om1pbihudW1fc2FtcGxlcywgbnVtX3NhbXBsZXNfcmVtYWluaW5nXyk7Cisg ICBjb25zdCBzaXplX3QgcmVhZCA9CisgICAgICAgZnJlYWQoc2FtcGxlcywgc2l6ZW9mKCpzYW1w bGVzKSwgbnVtX3NhbXBsZXMsIGZpbGVfaGFuZGxlXyk7CisrI2lmbmRlZiBXRUJSVENfQVJDSF9M SVRUTEVfRU5ESUFOCisrICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlYWQ7IGkrKykgeworKyAg ICAgIHNhbXBsZXNbaV0gPSBfX2J1aWx0aW5fYnN3YXAxNihzYW1wbGVzW2ldKTsKKysgIH0KKysj ZW5kaWYKKyAgIC8vIElmIHdlIGRpZG4ndCByZWFkIHdoYXQgd2FzIHJlcXVlc3RlZCwgZW5zdXJl IHdlJ3ZlIHJlYWNoZWQgdGhlIEVPRi4KKyAgIFJUQ19DSEVDSyhyZWFkID09IG51bV9zYW1wbGVz IHx8IGZlb2YoZmlsZV9oYW5kbGVfKSk7CisgICBSVENfQ0hFQ0tfTEUocmVhZCwgbnVtX3NhbXBs ZXNfcmVtYWluaW5nXyk7CitAQCAtMTc4LDEzICsxODAsMjYgQEAgc2l6ZV90IFdhdldyaXRlcjo6 bnVtX3NhbXBsZXMoKSBjb25zdCB7CisgCisgdm9pZCBXYXZXcml0ZXI6OldyaXRlU2FtcGxlcyhj b25zdCBpbnQxNl90KiBzYW1wbGVzLCBzaXplX3QgbnVtX3NhbXBsZXMpIHsKKyAjaWZuZGVmIFdF QlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKy0jZXJyb3IgIk5lZWQgdG8gY29udmVydCBzYW1wbGVz IHRvIGxpdHRsZS1lbmRpYW4gd2hlbiB3cml0aW5nIHRvIFdBViBmaWxlIgorLSNlbmRpZgorKyAg c3RhdGljIGNvbnN0IHNpemVfdCBrQ2h1bmtzaXplID0gNDA5NiAvIHNpemVvZih1aW50MTZfdCk7 CisrICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9zYW1wbGVzOyBpICs9IGtDaHVua3NpemUp IHsKKysgICAgaW50MTZfdCBpc2FtcGxlc1trQ2h1bmtzaXplXTsKKysgICAgY29uc3Qgc2l6ZV90 IGNodW5rID0gc3RkOjptaW4oa0NodW5rc2l6ZSwgbnVtX3NhbXBsZXMgLSBpKTsKKysgICAgZm9y IChzaXplX3QgaiA9IDA7IGogPCBjaHVuazsgaisrKSB7CisrICAgICAgaXNhbXBsZXNbal0gPSBf X2J1aWx0aW5fYnN3YXAxNihzYW1wbGVzW2kgKyBqXSk7CisrICAgIH0KKysgICAgY29uc3Qgc2l6 ZV90IHdyaXR0ZW4gPQorKyAgICAgICAgZndyaXRlKGlzYW1wbGVzLCBzaXplb2YoKmlzYW1wbGVz KSwgY2h1bmssIGZpbGVfaGFuZGxlXyk7CisrICAgIFJUQ19DSEVDS19FUShjaHVuaywgd3JpdHRl bik7CisrICAgIG51bV9zYW1wbGVzXyArPSB3cml0dGVuOworKyAgICBSVENfQ0hFQ0sobnVtX3Nh bXBsZXNfID49IHdyaXR0ZW4pOyAgLy8gZGV0ZWN0IHNpemVfdCBvdmVyZmxvdworKyAgfQorKyNl bHNlCisgICBjb25zdCBzaXplX3Qgd3JpdHRlbiA9CisgICAgICAgZndyaXRlKHNhbXBsZXMsIHNp emVvZigqc2FtcGxlcyksIG51bV9zYW1wbGVzLCBmaWxlX2hhbmRsZV8pOworICAgUlRDX0NIRUNL X0VRKG51bV9zYW1wbGVzLCB3cml0dGVuKTsKKyAgIG51bV9zYW1wbGVzXyArPSB3cml0dGVuOwor ICAgUlRDX0NIRUNLKG51bV9zYW1wbGVzXyA+PSB3cml0dGVuKTsgIC8vIGRldGVjdCBzaXplX3Qg b3ZlcmZsb3cKKysjZW5kaWYKKyB9CisgCisgdm9pZCBXYXZXcml0ZXI6OldyaXRlU2FtcGxlcyhj b25zdCBmbG9hdCogc2FtcGxlcywgc2l6ZV90IG51bV9zYW1wbGVzKSB7CistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8v d2F2X2hlYWRlci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuY2MKK0BAIC04Niw3ICs4Niwy NiBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWludDMyX3QgeCkgewor ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7Cisg fQorICNlbHNlCistI2Vycm9yICJXcml0ZSBiZS10by1sZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyIK KytzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTE2KHVpbnQxNl90KiBmLCB1aW50MTZfdCB4KSB7 CisrICAqZiA9IF9fYnVpbHRpbl9ic3dhcDE2KHgpOworK30KKytzdGF0aWMgaW5saW5lIHZvaWQg V3JpdGVMRTMyKHVpbnQzMl90KiBmLCB1aW50MzJfdCB4KSB7CisrICAqZiA9IF9fYnVpbHRpbl9i c3dhcDMyKHgpOworK30KKytzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVGb3VyQ0ModWludDMyX3Qq IGYsIGNoYXIgYSwgY2hhciBiLCBjaGFyIGMsIGNoYXIgZCkgeworKyAgKmYgPSBzdGF0aWNfY2Fz dDx1aW50MzJfdD4oZCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYykgPDwgOCB8CisrICAgICAg IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSA8PCAxNiB8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihh KSA8PCAyNDsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50MTZfdCBSZWFkTEUxNih1aW50MTZf dCB4KSB7CisrICByZXR1cm4gX19idWlsdGluX2Jzd2FwMTYoeCk7CisrfQorK3N0YXRpYyBpbmxp bmUgdWludDMyX3QgUmVhZExFMzIodWludDMyX3QgeCkgeworKyAgcmV0dXJuIF9fYnVpbHRpbl9i c3dhcDMyKHgpOworK30KKytzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWlu dDMyX3QgeCkgeworKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+ KCZ4KSwgNCk7CisrfQorICNlbmRpZgorIAorIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgUmlmZkNo dW5rU2l6ZShzaXplX3QgYnl0ZXNfaW5fcGF5bG9hZCkgeworLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS91aS9hdXJhL211cy9vc19leGNoYW5nZV9kYXRhX3Byb3ZpZGVyX211 cy5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9hdXJhL211cy9v c19leGNoYW5nZV9kYXRhX3Byb3ZpZGVyX211cy5jYworQEAgLTE0LDYgKzE0LDcgQEAKKyAjaW5j bHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19zcGxpdC5oIgorICNpbmNsdWRlICJiYXNlL3N0cmlu Z3Mvc3RyaW5nX3V0aWwuaCIKKyAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3V0Zl9zdHJpbmdfY29u dmVyc2lvbnMuaCIKKysjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCisgI2luY2x1ZGUg Im5ldC9iYXNlL2ZpbGVuYW1lX3V0aWwuaCIKKyAjaW5jbHVkZSAidWkvYmFzZS9jbGlwYm9hcmQv Y2xpcGJvYXJkX2NvbnN0YW50cy5oIgorICNpbmNsdWRlICJ1aS9iYXNlL2NsaXBib2FyZC9jbGlw Ym9hcmRfZm9ybWF0X3R5cGUuaCIKK0BAIC0yNzksOCArMjgwLDEzIEBAIHZvaWQgT1NFeGNoYW5n ZURhdGFQcm92aWRlck11czo6U2V0SHRtbChjb25zdCBiYXNlOjpzdHJpbmcxNiYgaHRtbCwKKyAg IHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGNoYXI+IGJ5dGVzOworICAgLy8gTWFudWFsbHkgamFtIGEg VVRGMTYgQk9NIGludG8gYnl0ZXMgYmVjYXVzZSBvdGhlcndpc2UsIG90aGVyIHByb2dyYW1zIHdp bGwKKyAgIC8vIGFzc3VtZSBVVEYtOC4KKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5E SUFOKQorICAgYnl0ZXMucHVzaF9iYWNrKDB4RkYpOworICAgYnl0ZXMucHVzaF9iYWNrKDB4RkUp OworKyNlbHNlCisrICBieXRlcy5wdXNoX2JhY2soMHhGRSk7CisrICBieXRlcy5wdXNoX2JhY2so MHhGRik7CisrI2VuZGlmCisgICBBZGRTdHJpbmcxNlRvVmVjdG9yKGh0bWwsICZieXRlcyk7Cisg ICBtaW1lX2RhdGFfW3VpOjprTWltZVR5cGVIVE1MXSA9IGJ5dGVzOworIH0KKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2MK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9k YXRhX3BhY2suY2MKK0BAIC0xNTQsMTYgKzE1NCw0MiBAQCBjbGFzcyBTY29wZWRGaWxlV3JpdGVy IHsKKyAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTY29wZWRGaWxlV3JpdGVyKTsKKyB9Owor IAorK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgYnl0ZXN3YXAodWludDE2X3QgdikgeyByZXR1cm4g X19idWlsdGluX2Jzd2FwMTYodik7IH0KKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IGJ5dGVzd2Fw KHVpbnQzMl90IHYpIHsgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDMyKHYpOyB9CisrCisrdGVtcGxh dGU8Y2xhc3MgVD4gY2xhc3MgYnl0ZXN3YXBwZWRfdCB7CisrcHJpdmF0ZToKKysgIFQgdmFsdWU7 CisrcHVibGljOgorKyAgaW5saW5lIGJ5dGVzd2FwcGVkX3QoVCB2KSA6IHZhbHVlKGJ5dGVzd2Fw KHYpKSB7IH0KKysgIGlubGluZSBUIG9wZXJhdG9yPShUIHYpIHsgdmFsdWUgPSBieXRlc3dhcCh2 KTsgcmV0dXJuIHY7IH0KKysgIGlubGluZSBUIG9wZXJhdG9yKz0oVCB2KSB7IHYgKz0gYnl0ZXN3 YXAodmFsdWUpOyB2YWx1ZSA9IGJ5dGVzd2FwKHYpOyByZXR1cm4gdjsgfQorKyAgaW5saW5lIG9w ZXJhdG9yIFQoKSBjb25zdCB7IHJldHVybiBieXRlc3dhcCh2YWx1ZSk7IH0KKyt9OworKworKyNp ZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorKworK3R5cGVkZWYgYnl0ZXN3YXBw ZWRfdDx1aW50MTZfdD4gdWludDE2bGVfdDsKKyt0eXBlZGVmIGJ5dGVzd2FwcGVkX3Q8dWludDMy X3Q+IHVpbnQzMmxlX3Q7CisrCisrI2Vsc2UKKysKKyt0eXBlZGVmIHVpbnQxNl90IHVpbnQxNmxl X3Q7CisrdHlwZWRlZiB1aW50MzJfdCB1aW50MzJsZV90OworKworKyNlbmRpZgorKworIH0gIC8v IG5hbWVzcGFjZQorIAorIG5hbWVzcGFjZSB1aSB7CisgCisgI3ByYWdtYSBwYWNrKHB1c2gsIDIp Cisgc3RydWN0IERhdGFQYWNrOjpFbnRyeSB7CistICB1aW50MTZfdCByZXNvdXJjZV9pZDsKKy0g IHVpbnQzMl90IGZpbGVfb2Zmc2V0OworKyAgdWludDE2bGVfdCByZXNvdXJjZV9pZDsKKysgIHVp bnQzMmxlX3QgZmlsZV9vZmZzZXQ7CisgCisgICBzdGF0aWMgaW50IENvbXBhcmVCeUlkKGNvbnN0 IHZvaWQqIHZvaWRfa2V5LCBjb25zdCB2b2lkKiB2b2lkX2VudHJ5KSB7CisrICAgIC8vIEtleSBp cyBob3N0IGVuZGlhbgorICAgICB1aW50MTZfdCBrZXkgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25z dCB1aW50MTZfdCo+KHZvaWRfa2V5KTsKKyAgICAgY29uc3QgRW50cnkqIGVudHJ5ID0gcmVpbnRl cnByZXRfY2FzdDxjb25zdCBFbnRyeSo+KHZvaWRfZW50cnkpOworICAgICByZXR1cm4ga2V5IC0g ZW50cnktPnJlc291cmNlX2lkOworQEAgLTE3MSwxMCArMTk3LDExIEBAIHN0cnVjdCBEYXRhUGFj azo6RW50cnkgeworIH07CisgCisgc3RydWN0IERhdGFQYWNrOjpBbGlhcyB7CistICB1aW50MTZf dCByZXNvdXJjZV9pZDsKKy0gIHVpbnQxNl90IGVudHJ5X2luZGV4OworKyAgdWludDE2bGVfdCBy ZXNvdXJjZV9pZDsKKysgIHVpbnQxNmxlX3QgZW50cnlfaW5kZXg7CisgCisgICBzdGF0aWMgaW50 IENvbXBhcmVCeUlkKGNvbnN0IHZvaWQqIHZvaWRfa2V5LCBjb25zdCB2b2lkKiB2b2lkX2VudHJ5 KSB7CisrICAgIC8vIEtleSBpcyBob3N0IGVuZGlhbgorICAgICB1aW50MTZfdCBrZXkgPSAqcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KHZvaWRfa2V5KTsKKyAgICAgY29uc3QgQWxp YXMqIGVudHJ5ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBbGlhcyo+KHZvaWRfZW50cnkpOwor ICAgICByZXR1cm4ga2V5IC0gZW50cnktPnJlc291cmNlX2lkOworQEAgLTI4NCw3ICszMTEsNyBA QCBib29sIERhdGFQYWNrOjpMb2FkSW1wbChzdGQ6OnVuaXF1ZV9wdHI8RGF0YVBhY2s6OkRhdGFT b3VyY2U+IGRhdGFfc291cmNlKSB7CisgICAvLyBQYXJzZSB0aGUgdmVyc2lvbiBhbmQgY2hlY2sg Zm9yIHRydW5jYXRlZCBoZWFkZXIuCisgICB1aW50MzJfdCB2ZXJzaW9uID0gMDsKKyAgIGlmIChk YXRhX2xlbmd0aCA+IHNpemVvZih2ZXJzaW9uKSkKKy0gICAgdmVyc2lvbiA9IHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhKVswXTsKKysgICAgdmVyc2lvbiA9IHJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWludDMybGVfdCo+KGRhdGEpWzBdOworICAgc2l6ZV90IGhlYWRlcl9s ZW5ndGggPQorICAgICAgIHZlcnNpb24gPT0ga0ZpbGVGb3JtYXRWNCA/IGtIZWFkZXJMZW5ndGhW NCA6IGtIZWFkZXJMZW5ndGhWNTsKKyAgIGlmICh2ZXJzaW9uID09IDAgfHwgZGF0YV9sZW5ndGgg PCBoZWFkZXJfbGVuZ3RoKSB7CitAQCAtMjk1LDE0ICszMjIsMTQgQEAgYm9vbCBEYXRhUGFjazo6 TG9hZEltcGwoc3RkOjp1bmlxdWVfcHRyPERhdGFQYWNrOjpEYXRhU291cmNlPiBkYXRhX3NvdXJj ZSkgeworIAorICAgLy8gUGFyc2UgdGhlIGhlYWRlciBvZiB0aGUgZmlsZS4KKyAgIGlmICh2ZXJz aW9uID09IGtGaWxlRm9ybWF0VjQpIHsKKy0gICAgcmVzb3VyY2VfY291bnRfID0gcmVpbnRlcnBy ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEpWzFdOworKyAgICByZXNvdXJjZV9jb3VudF8g PSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMmxlX3QqPihkYXRhKVsxXTsKKyAgICAgYWxp YXNfY291bnRfID0gMDsKKyAgICAgdGV4dF9lbmNvZGluZ190eXBlXyA9IHN0YXRpY19jYXN0PFRl eHRFbmNvZGluZ1R5cGU+KGRhdGFbOF0pOworICAgfSBlbHNlIGlmICh2ZXJzaW9uID09IGtGaWxl Rm9ybWF0VjUpIHsKKyAgICAgLy8gVmVyc2lvbiA1IGFkZGVkIHRoZSBhbGlhcyB0YWJsZSBhbmQg Y2hhbmdlZCB0aGUgaGVhZGVyIGZvcm1hdC4KKyAgICAgdGV4dF9lbmNvZGluZ190eXBlXyA9IHN0 YXRpY19jYXN0PFRleHRFbmNvZGluZ1R5cGU+KGRhdGFbNF0pOworLSAgICByZXNvdXJjZV9jb3Vu dF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oZGF0YSlbNF07CistICAgIGFs aWFzX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihkYXRhKVs1XTsK KysgICAgcmVzb3VyY2VfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZsZV90 Kj4oZGF0YSlbNF07CisrICAgIGFsaWFzX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg dWludDE2bGVfdCo+KGRhdGEpWzVdOworICAgfSBlbHNlIHsKKyAgICAgTE9HKEVSUk9SKSA8PCAi QmFkIGRhdGEgcGFjayB2ZXJzaW9uOiBnb3QgIiA8PCB2ZXJzaW9uIDw8ICIsIGV4cGVjdGVkICIK KyAgICAgICAgICAgICAgICA8PCBrRmlsZUZvcm1hdFY0IDw8ICIgb3IgIiA8PCBrRmlsZUZvcm1h dFY1OworQEAgLTQ0Nyw5ICs0NzQsNiBAQCB2b2lkIERhdGFQYWNrOjpDaGVja0ZvckR1cGxpY2F0 ZVJlc291cmNlcygKKyBib29sIERhdGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBh dGgmIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQx Nl90LCBiYXNlOjpTdHJpbmdQaWVjZT4mIHJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgVGV4dEVuY29kaW5nVHlwZSB0ZXh0X2VuY29kaW5nX3R5cGUpIHsKKy0jaWYgIWRlZmlu ZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKKy0jZXJyb3IgImRhdGFwYWNrIGFzc3VtZXMgbGl0 dGxlIGVuZGlhbiIKKy0jZW5kaWYKKyAgIGlmICh0ZXh0X2VuY29kaW5nX3R5cGUgIT0gVVRGOCAm JiB0ZXh0X2VuY29kaW5nX3R5cGUgIT0gVVRGMTYgJiYKKyAgICAgICB0ZXh0X2VuY29kaW5nX3R5 cGUgIT0gQklOQVJZKSB7CisgICAgIExPRyhFUlJPUikgPDwgIkludmFsaWQgdGV4dCBlbmNvZGlu ZyB0eXBlLCBnb3QgIiA8PCB0ZXh0X2VuY29kaW5nX3R5cGUKK0BAIC00NjcsNyArNDkxLDcgQEAg Ym9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAorICAg aWYgKCFmaWxlLnZhbGlkKCkpCisgICAgIHJldHVybiBmYWxzZTsKKyAKKy0gIHVpbnQzMl90IGVu Y29kaW5nID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRleHRfZW5jb2RpbmdfdHlwZSk7CisrICB1 aW50MzJsZV90IGVuY29kaW5nID0gc3RhdGljX2Nhc3Q8dWludDMybGVfdD4odGV4dF9lbmNvZGlu Z190eXBlKTsKKyAKKyAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBmaW5hbCByZXNvdXJjZSBhbGlhc2Vz LCBhbmQgYW4gYWxpYXMgbWFwIGF0IHRoZSBzYW1lIHRpbWUuCisgICBzdGQ6OnZlY3Rvcjx1aW50 MTZfdD4gcmVzb3VyY2VfaWRzOworQEAgLTQ5NCwxMyArNTE4LDE0IEBAIGJvb2wgRGF0YVBhY2s6 OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwKKyAKKyAgIC8vIFRoZXNlIHZh bHVlcyBhcmUgZ3VhcmFudGVlZCB0byBmaXQgaW4gYSB1aW50MTZfdCBkdWUgdG8gdGhlIGVhcmxp ZXIKKyAgIC8vIGNoZWNrIG9mIHxyZXNvdXJjZXNfY291bnR8LgorLSAgY29uc3QgdWludDE2X3Qg YWxpYXNfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oYWxpYXNlcy5zaXplKCkpOworLSAg Y29uc3QgdWludDE2X3QgZW50cnlfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmVzb3Vy Y2VfaWRzLnNpemUoKSk7CisrICBjb25zdCB1aW50MTZsZV90IGFsaWFzX2NvdW50ID0gc3RhdGlj X2Nhc3Q8dWludDE2bGVfdD4oYWxpYXNlcy5zaXplKCkpOworKyAgY29uc3QgdWludDE2bGVfdCBl bnRyeV9jb3VudCA9IHN0YXRpY19jYXN0PHVpbnQxNmxlX3Q+KHJlc291cmNlX2lkcy5zaXplKCkp OworICAgRENIRUNLX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oZW50cnlfY291bnQpICsgc3RhdGlj X2Nhc3Q8c2l6ZV90PihhbGlhc19jb3VudCksCisgICAgICAgICAgICAgcmVzb3VyY2VzX2NvdW50 KTsKKyAKKy0gIGZpbGUuV3JpdGUoJmtGaWxlRm9ybWF0VjUsIHNpemVvZihrRmlsZUZvcm1hdFY1 KSk7CistICBmaWxlLldyaXRlKCZlbmNvZGluZywgc2l6ZW9mKHVpbnQzMl90KSk7CisrICB1aW50 MzJsZV90IHZlcnNpb24gPSBrRmlsZUZvcm1hdFY1OworKyAgZmlsZS5Xcml0ZSgmdmVyc2lvbiwg c2l6ZW9mKHZlcnNpb24pKTsKKysgIGZpbGUuV3JpdGUoJmVuY29kaW5nLCBzaXplb2YodWludDMy bGVfdCkpOworICAgZmlsZS5Xcml0ZSgmZW50cnlfY291bnQsIHNpemVvZihlbnRyeV9jb3VudCkp OworICAgZmlsZS5Xcml0ZSgmYWxpYXNfY291bnQsIHNpemVvZihhbGlhc19jb3VudCkpOworIAor QEAgLTUwOCw4ICs1MzMsOCBAQCBib29sIERhdGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6 RmlsZVBhdGgmIHBhdGgsCisgICAvLyBsYXN0IGl0ZW0gc28gd2UgY2FuIGNvbXB1dGUgdGhlIHNp emUgb2YgdGhlIGxpc3QgaXRlbS4KKyAgIGNvbnN0IHVpbnQzMl90IGluZGV4X2xlbmd0aCA9IChl bnRyeV9jb3VudCArIDEpICogc2l6ZW9mKEVudHJ5KTsKKyAgIGNvbnN0IHVpbnQzMl90IGFsaWFz X3RhYmxlX2xlbmd0aCA9IGFsaWFzX2NvdW50ICogc2l6ZW9mKEFsaWFzKTsKKy0gIHVpbnQzMl90 IGRhdGFfb2Zmc2V0ID0ga0hlYWRlckxlbmd0aFY1ICsgaW5kZXhfbGVuZ3RoICsgYWxpYXNfdGFi bGVfbGVuZ3RoOworLSAgZm9yIChjb25zdCB1aW50MTZfdCByZXNvdXJjZV9pZCA6IHJlc291cmNl X2lkcykgeworKyAgdWludDMybGVfdCBkYXRhX29mZnNldCA9IGtIZWFkZXJMZW5ndGhWNSArIGlu ZGV4X2xlbmd0aCArIGFsaWFzX3RhYmxlX2xlbmd0aDsKKysgIGZvciAoY29uc3QgdWludDE2bGVf dCByZXNvdXJjZV9pZCA6IHJlc291cmNlX2lkcykgeworICAgICBmaWxlLldyaXRlKCZyZXNvdXJj ZV9pZCwgc2l6ZW9mKHJlc291cmNlX2lkKSk7CisgICAgIGZpbGUuV3JpdGUoJmRhdGFfb2Zmc2V0 LCBzaXplb2YoZGF0YV9vZmZzZXQpKTsKKyAgICAgZGF0YV9vZmZzZXQgKz0gcmVzb3VyY2VzLmZp bmQocmVzb3VyY2VfaWQpLT5zZWNvbmQubGVuZ3RoKCk7CitAQCAtNTE3LDEzICs1NDIsMTMgQEAg Ym9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAorIAor ICAgLy8gV2UgcGxhY2UgYW4gZXh0cmEgZW50cnkgYWZ0ZXIgdGhlIGxhc3QgaXRlbSB0aGF0IGFs bG93cyB1cyB0byByZWFkIHRoZQorICAgLy8gc2l6ZSBvZiB0aGUgbGFzdCBpdGVtLgorLSAgY29u c3QgdWludDE2X3QgcmVzb3VyY2VfaWQgPSAwOworKyAgY29uc3QgdWludDE2bGVfdCByZXNvdXJj ZV9pZCA9IDA7CisgICBmaWxlLldyaXRlKCZyZXNvdXJjZV9pZCwgc2l6ZW9mKHJlc291cmNlX2lk KSk7CisgICBmaWxlLldyaXRlKCZkYXRhX29mZnNldCwgc2l6ZW9mKGRhdGFfb2Zmc2V0KSk7Cisg CisgICAvLyBXcml0ZSB0aGUgYWxpYXNlcyB0YWJsZSwgaWYgYW55LiBOb3RlOiB8YWxpYXNlc3wg aXMgYW4gc3RkOjptYXAsCisgICAvLyBlbnN1cmluZyB2YWx1ZXMgYXJlIHdyaXR0ZW4gaW4gaW5j cmVhc2luZyBvcmRlci4KKy0gIGZvciAoY29uc3Qgc3RkOjpwYWlyPHVpbnQxNl90LCB1aW50MTZf dD4mIGFsaWFzIDogYWxpYXNlcykgeworKyAgZm9yIChjb25zdCBzdGQ6OnBhaXI8dWludDE2bGVf dCwgdWludDE2bGVfdD4gYWxpYXMgOiBhbGlhc2VzKSB7CisgICAgIGZpbGUuV3JpdGUoJmFsaWFz LCBzaXplb2YoYWxpYXMpKTsKKyAgIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2Mub3JpZworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYy5v cmlnCitAQCAtMzgyLDEyICszODIsNiBAQCBib29sIERhdGFQYWNrOjpIYXNSZXNvdXJjZSh1aW50 MTZfdCByZXNvdXJjZV9pZCkgY29uc3QgeworIAorIGJvb2wgRGF0YVBhY2s6OkdldFN0cmluZ1Bp ZWNlKHVpbnQxNl90IHJlc291cmNlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhKSBjb25zdCB7CistICAvLyBJdCB3b24ndCBiZSBoYXJk IHRvIG1ha2UgdGhpcyBlbmRpYW4tYWdub3N0aWMsIGJ1dCBpdCdzIG5vdCB3b3J0aAorLSAgLy8g Ym90aGVyaW5nIHRvIGRvIHJpZ2h0IG5vdy4KKy0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExF X0VORElBTikKKy0jZXJyb3IgImRhdGFwYWNrIGFzc3VtZXMgbGl0dGxlIGVuZGlhbiIKKy0jZW5k aWYKKy0KKyAgIGNvbnN0IEVudHJ5KiB0YXJnZXQgPSBMb29rdXBFbnRyeUJ5SWQocmVzb3VyY2Vf aWQpOworICAgaWYgKCF0YXJnZXQpCisgICAgIHJldHVybiBmYWxzZTsKKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL2pwZWdfY29kZWMuY2MKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL2pwZWdfY29kZWMu Y2MKK0BAIC0yMTIsMTEgKzIxMiwxMSBAQCBib29sIEpQRUdDb2RlYzo6RGVjb2RlKGNvbnN0IHVu c2lnbmVkIGNoYXIqIGlucHV0LCBzaXplX3QgaW5wdXRfc2l6ZSwKKyAgICAgICAvLyB1c2VkIGJ5 IENocm9taXVtIChpLmUuIFJHQkEgYW5kIEJHUkEpIGFuZCB3ZSBqdXN0IG1hcCB0aGUgaW5wdXQK KyAgICAgICAvLyBwYXJhbWV0ZXJzIHRvIGEgY29sb3JzcGFjZS4KKyAgICAgICBpZiAoZm9ybWF0 ID09IEZPUk1BVF9SR0JBIHx8CistICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFw ICYmIFNLX1IzMl9TSElGVCA9PSAwKSkgeworKyAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9T a0JpdG1hcCAmJiBTS19QTUNPTE9SX0JZVEVfT1JERVIoUiwgRywgQiwgQSkpKSB7CisgICAgICAg ICBjaW5mby0+b3V0X2NvbG9yX3NwYWNlID0gSkNTX0VYVF9SR0JYOworICAgICAgICAgY2luZm8t Pm91dHB1dF9jb21wb25lbnRzID0gNDsKKyAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSBGT1JN QVRfQkdSQSB8fAorLSAgICAgICAgICAgICAgICAgKGZvcm1hdCA9PSBGT1JNQVRfU2tCaXRtYXAg JiYgU0tfQjMyX1NISUZUID09IDApKSB7CisrICAgICAgICAgICAgICAgICAoZm9ybWF0ID09IEZP Uk1BVF9Ta0JpdG1hcCAmJiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQiwgRywgUiwgQSkpKSB7Cisg ICAgICAgICBjaW5mby0+b3V0X2NvbG9yX3NwYWNlID0gSkNTX0VYVF9CR1JYOworICAgICAgICAg Y2luZm8tPm91dHB1dF9jb21wb25lbnRzID0gNDsKKyAgICAgICB9IGVsc2UgeworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjLmNjCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29k ZWMuY2MKK0BAIC0xNjksNiArMTY5LDEwIEBAIHZvaWQgRGVjb2RlSW5mb0NhbGxiYWNrKHBuZ19z dHJ1Y3QqIHBuZ19wdHIsIHBuZ19pbmZvKiBpbmZvX3B0cikgeworICAgICAgICAgcG5nX3NldF9i Z3IocG5nX3B0cik7CisgICAgICAgICBwbmdfc2V0X2FkZF9hbHBoYShwbmdfcHRyLCAweEZGLCBQ TkdfRklMTEVSX0FGVEVSKTsKKyAgICAgICAgIGJyZWFrOworKyAgICAgIGNhc2UgUE5HQ29kZWM6 OkZPUk1BVF9BUkdCOgorKyAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9IDQ7CisrICAg ICAgICBwbmdfc2V0X2FkZF9hbHBoYShwbmdfcHRyLCAweEZGLCBQTkdfRklMTEVSX0JFRk9SRSk7 CisrICAgICAgICBicmVhazsKKyAgICAgICBjYXNlIFBOR0NvZGVjOjpGT1JNQVRfU2tCaXRtYXA6 CisgICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKKyAgICAgICAgIHBuZ19zZXRf YWRkX2FscGhhKHBuZ19wdHIsIDB4RkYsIFBOR19GSUxMRVJfQUZURVIpOworQEAgLTE4Myw2ICsx ODcsMTAgQEAgdm9pZCBEZWNvZGVJbmZvQ2FsbGJhY2socG5nX3N0cnVjdCogcG5nX3B0ciwgcG5n X2luZm8qIGluZm9fcHRyKSB7CisgICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsK KyAgICAgICAgIHBuZ19zZXRfYmdyKHBuZ19wdHIpOworICAgICAgICAgYnJlYWs7CisrICAgICAg Y2FzZSBQTkdDb2RlYzo6Rk9STUFUX0FSR0I6CisrICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5u ZWxzID0gNDsKKysJcG5nX3NldF9zd2FwX2FscGhhKHBuZ19wdHIpOworKyAgICAgICAgYnJlYWs7 CisgICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX1NrQml0bWFwOgorICAgICAgICAgc3RhdGUt Pm91dHB1dF9jaGFubmVscyA9IDQ7CisgICAgICAgICBicmVhazsKK0BAIC00NzUsNiArNDgzLDgg QEAgYm9vbCBQTkdDb2RlYzo6RW5jb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlucHV0LAorICAg ICBjYXNlIEZPUk1BVF9CR1JBOgorICAgICAgIGNvbG9yVHlwZSA9IGtCR1JBXzg4ODhfU2tDb2xv clR5cGU7CisgICAgICAgYnJlYWs7CisrICAgIGNhc2UgRk9STUFUX0FSR0I6CisrICAgICAgcmV0 dXJuIGZhbHNlOworICAgICBjYXNlIEZPUk1BVF9Ta0JpdG1hcDoKKyAgICAgICBjb2xvclR5cGUg PSBrTjMyX1NrQ29sb3JUeXBlOworICAgICAgIGJyZWFrOworLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjLmgKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oCitAQCAtMzcs NiArMzcsMTAgQEAgY2xhc3MgQ09ERUNfRVhQT1JUIFBOR0NvZGVjIHsKKyAgICAgLy8gVGhpcyBp cyB0aGUgZGVmYXVsdCBXaW5kb3dzIERJQiBvcmRlci4KKyAgICAgRk9STUFUX0JHUkEsCisgCisr ICAgIC8vIDQgYnl0ZXMgcGVyIHBpeGVsLCBpbiBBUkdCIG9yZGVyIGluIG1lbW9yeSByZWdhcmRs ZXNzIG9mIGVuZGlhbm5lc3MuCisrICAgIC8vIE9ubHkgc3VwcG9ydGVkIGZvciBkZWNvZGluZwor KyAgICBGT1JNQVRfQVJHQiwKKysKKyAgICAgLy8gU2tCaXRtYXAgZm9ybWF0LiBGb3IgRW5jb2Rl KCkga04zMl9Ta0NvbG9yVHlwZSAoNCBieXRlcyBwZXIgcGl4ZWwpIGFuZAorICAgICAvLyBrQWxw aGFfOF9Ta0NvbG9yVHlwZSAoMSBieXRlIHBlciBwaXhlbCkgZm9ybWF0cyBhcmUgc3VwcG9ydGVk LgorICAgICAvLyBrQWxwaGFfOF9Ta0NvbG9yVHlwZSBnZXRzIGVuY29kZWQgaW50byBhIGdyYXlz Y2FsZSBQTkcgdHJlYXRpbmcgYWxwaGEgYXMKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlY191bml0dGVzdC5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjX3VuaXR0ZXN0 LmNjCitAQCAtODUzLDcgKzg1Myw3IEBAIFRFU1QoUE5HQ29kZWMsIEVuY29kZUE4U2tCaXRtYXAp IHsKKyAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKyAgICAgICB1aW50OF90IG9y aWdpbmFsX3BpeGVsID0gKm9yaWdpbmFsX2JpdG1hcC5nZXRBZGRyOCh4LCB5KTsKKyAgICAgICB1 aW50MzJfdCBkZWNvZGVkX3BpeGVsID0gKmRlY29kZWRfYml0bWFwLmdldEFkZHIzMih4LCB5KTsK Ky0gICAgICBFWFBFQ1RfVFJVRShCR1JBR3JheUVxdWFsc0E4R3JheShkZWNvZGVkX3BpeGVsLCBv cmlnaW5hbF9waXhlbCkpOworKyAgICAgIEVYUEVDVF9UUlVFKEJHUkFHcmF5RXF1YWxzQThHcmF5 KFNrVW5QcmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3IoZGVjb2RlZF9waXhlbCksIG9yaWdpbmFs X3BpeGVsKSk7CisgICAgIH0KKyAgIH0KKyB9CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3VpL2dmeC9jb2xvcl9hbmFseXNpcy5jYworKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29sb3JfYW5hbHlzaXMuY2MKK0BAIC0xNiw2ICsxNiw3 IEBACisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKyAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisr I2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9z a2lhL2luY2x1ZGUvY29yZS9Ta0JpdG1hcC5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lh L2luY2x1ZGUvY29yZS9Ta1VuUHJlTXVsdGlwbHkuaCIKKyAjaW5jbHVkZSAidWkvZ2Z4L2NvZGVj L3BuZ19jb2RlYy5oIgorQEAgLTUwNiwxMCArNTA3LDE3IEBAIFNrQ29sb3IgRmluZENsb3Nlc3RD b2xvcihjb25zdCB1aW50OF90KiBpbWFnZSwKKyAgIFNrQ29sb3IgYmVzdF9jb2xvciA9IGNvbG9y OworICAgY29uc3QgdWludDhfdCogYnl0ZSA9IGltYWdlOworICAgZm9yIChpbnQgaSA9IDA7IGkg PCB3aWR0aCAqIGhlaWdodDsgKytpKSB7CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKKyAgICAgdWludDhfdCBiID0gKihieXRlKyspOworICAgICB1aW50OF90IGcgPSAqKGJ5 dGUrKyk7CisgICAgIHVpbnQ4X3QgciA9ICooYnl0ZSsrKTsKKyAgICAgdWludDhfdCBhID0gKihi eXRlKyspOworKyNlbHNlCisrICAgIHVpbnQ4X3QgYSA9ICooYnl0ZSsrKTsKKysgICAgdWludDhf dCByID0gKihieXRlKyspOworKyAgICB1aW50OF90IGcgPSAqKGJ5dGUrKyk7CisrICAgIHVpbnQ4 X3QgYiA9ICooYnl0ZSsrKTsKKysjZW5kaWYKKyAgICAgLy8gSWdub3JlIGZ1bGx5IHRyYW5zcGFy ZW50IHBpeGVscy4KKyAgICAgaWYgKGEgPT0gMCkKKyAgICAgICBjb250aW51ZTsKK0BAIC01Mjcs NyArNTM1LDYgQEAgU2tDb2xvciBGaW5kQ2xvc2VzdENvbG9yKGNvbnN0IHVpbnQ4X3QqIGltYWdl LAorIAorIC8vIEZvciBhIDE2eDE2IGljb24gb24gYW4gSW50ZWwgQ29yZSBpNSB0aGlzIGZ1bmN0 aW9uIHRha2VzIGFwcHJveGltYXRlbHkKKyAvLyAwLjUgbXMgdG8gcnVuLgorLS8vIFRPRE8ocG9y dCk6IFRoaXMgY29kZSBhc3N1bWVzIHRoZSBDUFUgYXJjaGl0ZWN0dXJlIGlzIGxpdHRsZS1lbmRp YW4uCisgU2tDb2xvciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZmZXIodWludDhfdCogZGVjb2Rl ZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbWdfd2lk dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGltZ19oZWlnaHQs CitAQCAtNTUwLDEwICs1NTcsMTcgQEAgU2tDb2xvciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZm ZXIodWludDhfdCogZGVjb2RlZF9kYXRhLAorICAgICAgICAgaW50IHBpeGVsX3BvcyA9IHNhbXBs ZXItPkdldFNhbXBsZShpbWdfd2lkdGgsIGltZ19oZWlnaHQpICUKKyAgICAgICAgICAgICAoaW1n X3dpZHRoICogaW1nX2hlaWdodCk7CisgCisrI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKKyAgICAgICAgIHVpbnQ4X3QgYiA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0XTsK KyAgICAgICAgIHVpbnQ4X3QgZyA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMV07Cisg ICAgICAgICB1aW50OF90IHIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDJdOworICAg ICAgICAgdWludDhfdCBhID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAzXTsKKysjZWxz ZQorKyAgICAgICAgdWludDhfdCBhID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDRdOworKyAg ICAgICAgdWludDhfdCByID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAxXTsKKysgICAg ICAgIHVpbnQ4X3QgZyA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMl07CisrICAgICAg ICB1aW50OF90IGIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDNdOworKyNlbmRpZgor ICAgICAgICAgLy8gU2tpcCBmdWxseSB0cmFuc3BhcmVudCBwaXhlbHMgYXMgdGhleSB1c3VhbGx5 IGNvbnRhaW4gYmxhY2sgaW4gdGhlaXIKKyAgICAgICAgIC8vIFJHQiBjaGFubmVscyBidXQgZG8g bm90IGNvbnRyaWJ1dGUgdG8gdGhlIHZpc3VhbCBpbWFnZS4KKyAgICAgICAgIGlmIChhID09IDAp CitAQCAtNjAyLDEwICs2MTYsMTcgQEAgU2tDb2xvciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZm ZXIodWludDhfdCogZGVjb2RlZF9kYXRhLAorICAgICAgIHVpbnQ4X3QqIHBpeGVsID0gZGVjb2Rl ZF9kYXRhOworICAgICAgIHVpbnQ4X3QqIGRlY29kZWRfZGF0YV9lbmQgPSBkZWNvZGVkX2RhdGEg KyAoaW1nX3dpZHRoICogaW1nX2hlaWdodCAqIDQpOworICAgICAgIHdoaWxlIChwaXhlbCA8IGRl Y29kZWRfZGF0YV9lbmQpIHsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQor ICAgICAgICAgdWludDhfdCBiID0gKihwaXhlbCsrKTsKKyAgICAgICAgIHVpbnQ4X3QgZyA9ICoo cGl4ZWwrKyk7CisgICAgICAgICB1aW50OF90IHIgPSAqKHBpeGVsKyspOworICAgICAgICAgdWlu dDhfdCBhID0gKihwaXhlbCsrKTsKKysjZWxzZQorKyAgICAgICAgdWludDhfdCBhID0gKihwaXhl bCsrKTsKKysgICAgICAgIHVpbnQ4X3QgciA9ICoocGl4ZWwrKyk7CisrICAgICAgICB1aW50OF90 IGcgPSAqKHBpeGVsKyspOworKyAgICAgICAgdWludDhfdCBiID0gKihwaXhlbCsrKTsKKysjZW5k aWYKKyAgICAgICAgIC8vIFNraXAgdHJhbnNwYXJlbnQgcGl4ZWxzLCBzZWUgYWJvdmUuCisgICAg ICAgICBpZiAoYSA9PSAwKQorICAgICAgICAgICBjb250aW51ZTsKK0BAIC02ODMsOCArNzA0LDEy IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9mUE5HKHNjb3BlZF9yZWZwdHI8YmFzZTo6 UmVmQ291bnRlZE1lbW9yeT4gcG5nLAorIAorICAgaWYgKHBuZy5nZXQoKSAmJiBwbmctPnNpemUo KSAmJgorICAgICAgIGdmeDo6UE5HQ29kZWM6OkRlY29kZShwbmctPmZyb250KCksIHBuZy0+c2l6 ZSgpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZng6OlBOR0NvZGVjOjpGT1JNQVRf QkdSQSwgJmRlY29kZWRfZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltZ193 aWR0aCwgJmltZ19oZWlnaHQpKSB7CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElB TikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4OjpQTkdDb2RlYzo6Rk9STUFUX0JH UkEsCisrI2Vsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4OjpQTkdDb2RlYzo6 Rk9STUFUX0FSR0IsCisrI2VuZGlmCisrCQkJICAgICZkZWNvZGVkX2RhdGEsICZpbWdfd2lkdGgs ICZpbWdfaGVpZ2h0KSkgeworICAgICByZXR1cm4gQ2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVy KCZkZWNvZGVkX2RhdGFbMF0sIGltZ193aWR0aCwgaW1nX2hlaWdodCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQsIHNhbXBs ZXIsIHRydWUpOworICAgfQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91 aS9nZngvc2tiaXRtYXBfb3BlcmF0aW9uc191bml0dGVzdC5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvc2tiaXRtYXBfb3BlcmF0aW9uc191bml0dGVzdC5j YworQEAgLTIzOCw3ICsyMzgsNyBAQCBURVNUKFNrQml0bWFwT3BlcmF0aW9uc1Rlc3QsIENyZWF0 ZUhTTFNoaWZ0ZWRCaXRtYXBIdWVPbmx5KSB7CisgCisgICBmb3IgKGludCB5ID0gMCwgaSA9IDA7 IHkgPCBzcmNfaDsgeSsrKSB7CisgICAgIGZvciAoaW50IHggPSAwOyB4IDwgc3JjX3c7IHgrKykg eworLSAgICAgICpzcmMuZ2V0QWRkcjMyKHgsIHkpID0gU2tDb2xvclNldEFSR0IoMjU1LCAwLCAw LCBpICUgMjU1KTsKKysgICAgICAqc3JjLmdldEFkZHIzMih4LCB5KSA9IFNrUGFja0FSR0IzMigy NTUsIDAsIDAsIGkgJSAyNTUpOworICAgICAgIGkrKzsKKyAgICAgfQorICAgfQorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91cmwvdXJsX2Nhbm9uX2hvc3QuY2MKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9ob3N0LmNjCitA QCAtMTM1LDggKzEzNSw3IEBAIGJvb2wgRG9TaW1wbGVIb3N0KGNvbnN0IElOQ0hBUiogaG9zdCwK KyAgICAgaWYgKHNvdXJjZSA9PSAnJScpIHsKKyAgICAgICAvLyBVbmVzY2FwZSBmaXJzdCwgaWYg cG9zc2libGUuCisgICAgICAgLy8gU291cmNlIHdpbGwgYmUgdXNlZCBvbmx5IGlmIGRlY29kZSBv cGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCistICAgICAgaWYgKCFEZWNvZGVFc2NhcGVkKGhvc3Qs ICZpLCBob3N0X2xlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz dDx1bnNpZ25lZCBjaGFyKj4oJnNvdXJjZSkpKSB7CisrICAgICAgaWYgKCFEZWNvZGVFc2NhcGVk KGhvc3QsICZpLCBob3N0X2xlbiwgJnNvdXJjZSkpIHsKKyAgICAgICAgIC8vIEludmFsaWQgZXNj YXBlZCBjaGFyYWN0ZXIuIFRoZXJlIGlzIG5vdGhpbmcgdGhhdCBjYW4gbWFrZSB0aGlzCisgICAg ICAgICAvLyBob3N0IHZhbGlkLiBXZSBhcHBlbmQgYW4gZXNjYXBlZCBwZXJjZW50IHNvIHRoZSBV UkwgbG9va3MgcmVhc29uYWJsZQorICAgICAgICAgLy8gYW5kIG1hcmsgYXMgZmFpbGVkLgorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91cmwvdXJsX2Nhbm9uX2ludGVybmFs LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9p bnRlcm5hbC5oCitAQCAtMzA1LDkgKzMwNSw5IEBAIGlubGluZSBib29sIElzOEJpdENoYXIoYmFz ZTo6Y2hhcjE2IGMpIHsKKyAgIHJldHVybiBjIDw9IDI1NTsKKyB9CisgCistdGVtcGxhdGU8dHlw ZW5hbWUgQ0hBUj4KKyt0ZW1wbGF0ZTx0eXBlbmFtZSBDSEFSLCB0eXBlbmFtZSBEU1Q+CisgaW5s aW5lIGJvb2wgRGVjb2RlRXNjYXBlZChjb25zdCBDSEFSKiBzcGVjLCBpbnQqIGJlZ2luLCBpbnQg ZW5kLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdW5lc2NhcGVk X3ZhbHVlKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICBEU1QqIHVuZXNjYXBlZF92YWx1 ZSkgeworICAgaWYgKCpiZWdpbiArIDMgPiBlbmQgfHwKKyAgICAgICAhSXM4Qml0Q2hhcihzcGVj WypiZWdpbiArIDFdKSB8fCAhSXM4Qml0Q2hhcihzcGVjWypiZWdpbiArIDJdKSkgeworICAgICAv LyBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBiZWNhdXNlIHRoZXJlJ3Mgbm90IGVub3VnaCByb29t LCBvciB0aGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12 OC1lbGZ2Mi5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2 Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjU4MGM4MTQ2 OTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0t djgtZWxmdjIucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorVGhpcyBmaXhlcyB2OCBvbiBiaWcgZW5k aWFuIHBwYzY0IEVMRnYyLgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92 OC9zcmMvcHBjL2NvbnN0YW50cy1wcGMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS92OC9zcmMvcHBjL2NvbnN0YW50cy1wcGMuaAorQEAgLTIxLDcgKzIxLDggQEAKKyAj ZW5kaWYKKyAKKyAjaWYgVjhfSE9TVF9BUkNIX1BQQyAmJiBcCistICAgIChWOF9PU19BSVggfHwg KFY4X1RBUkdFVF9BUkNIX1BQQzY0ICYmIFY4X1RBUkdFVF9CSUdfRU5ESUFOKSkKKysgICAgKFY4 X09TX0FJWCB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgXAorKyAgICAgIChWOF9UQVJHRVRf QklHX0VORElBTiAmJiAoIWRlZmluZWQoX0NBTExfRUxGKSB8fCBfQ0FMTF9FTEYgPT0gMSkpKSkK KyAjZGVmaW5lIEFCSV9VU0VTX0ZVTkNUSU9OX0RFU0NSSVBUT1JTIDEKKyAjZWxzZQorICNkZWZp bmUgQUJJX1VTRVNfRlVOQ1RJT05fREVTQ1JJUFRPUlMgMAorQEAgLTMzLDEzICszNCwxNSBAQAor ICNkZWZpbmUgQUJJX1BBU1NFU19IQU5ETEVTX0lOX1JFR1MgMAorICNlbmRpZgorIAorLSNpZiAh VjhfSE9TVF9BUkNIX1BQQyB8fCAhVjhfVEFSR0VUX0FSQ0hfUFBDNjQgfHwgVjhfVEFSR0VUX0xJ VFRMRV9FTkRJQU4KKysjaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwgIVY4X1RBUkdFVF9BUkNIX1BQ QzY0IHx8IFwKKysgICAgKFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOIHx8IChkZWZpbmVkKF9DQUxM X0VMRikgJiYgX0NBTExfRUxGID09IDIpKQorICNkZWZpbmUgQUJJX1JFVFVSTlNfT0JKRUNUX1BB SVJTX0lOX1JFR1MgMQorICNlbHNlCisgI2RlZmluZSBBQklfUkVUVVJOU19PQkpFQ1RfUEFJUlNf SU5fUkVHUyAwCisgI2VuZGlmCisgCistI2lmICFWOF9IT1NUX0FSQ0hfUFBDIHx8IChWOF9UQVJH RVRfQVJDSF9QUEM2NCAmJiBWOF9UQVJHRVRfTElUVExFX0VORElBTikKKysjaWYgIVY4X0hPU1Rf QVJDSF9QUEMgfHwgKFY4X1RBUkdFVF9BUkNIX1BQQzY0ICYmIFwKKysgICAgKFY4X1RBUkdFVF9M SVRUTEVfRU5ESUFOIHx8IChkZWZpbmVkKF9DQUxMX0VMRikgJiYgX0NBTExfRUxGID09IDIpKSkK KyAjZGVmaW5lIEFCSV9DQUxMX1ZJQV9JUCAxCisgI2Vsc2UKKyAjZGVmaW5lIEFCSV9DQUxMX1ZJ QV9JUCAwCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9wcGMv cmVnaXN0ZXItcHBjLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgv c3JjL3BwYy9yZWdpc3Rlci1wcGMuaAorQEAgLTE0NSw3ICsxNDUsOCBAQCBjb25zdCBpbnQga051 bVNhZmVwb2ludFJlZ2lzdGVycyA9IDMyOworIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGRl c2NyaWJlIHRoZSBzdGFjayBmcmFtZSBsaW5rYWdlIGFyZWEgYXMKKyAvLyBkZWZpbmVkIGJ5IHRo ZSBBQkkuICBOb3RlIHRoYXQga051bVJlcXVpcmVkU3RhY2tGcmFtZVNsb3RzIG11c3QKKyAvLyBz YXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgKHJvdW5kaW5nIHVwIGlmIHJlcXVpcmVkKS4K Ky0jaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gIC8v IHBwYzY0bGUgbGludXgKKysjaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgKFY4X1RBUkdFVF9M SVRUTEVfRU5ESUFOIHx8IFwKKysgICAgZGVmaW5lZChfQ0FMTF9FTEYpICYmIF9DQUxMX0VMRiA9 PSAyKQorIC8vIFswXSBiYWNrIGNoYWluCisgLy8gWzFdIGNvbmRpdGlvbiByZWdpc3RlciBzYXZl IGFyZWEKKyAvLyBbMl0gbGluayByZWdpc3RlciBzYXZlIGFyZWEKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2ggYi9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYTI2OWQzODNkMQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFi bGUucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRf cGFydHkvc2tjbXMvc2tjbXMuY2MKK0BAIC0xODI4LDYgKzE4MjgsMTQgQEAgdHlwZWRlZiBlbnVt IHsKKyAgICAgI2VuZGlmCisgI2VuZGlmCisgCisrLy8gd2l0aCBjdXJyZW50IGdjYyA4LjMuMCB3 ZSBnZXQgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2hlbiBjb21waWxpbmcKKysvLyBmb3Ig cHBjNjQgYmlnIGVuZGlhbiAtIHNvIHN3aXRjaCB0byBwb3J0YWJsZSB1bnRpbCB0aGlzIGlzIHJl c29sdmVkCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjICBpZiBkZWZpbmVkKF9fQklH X0VORElBTl9fKSAmJiAhZGVmaW5lZChTS0NNU19QT1JUQUJMRSkKKysjICAgIGRlZmluZSBTS0NN U19QT1JUQUJMRQorKyMgIGVuZGlmCisrI2VuZGlmCisrCisgI2lmIGRlZmluZWQoX19jbGFuZ19f KQorICAgICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+IHVzaW5nIFZlYyA9IFQgX19hdHRy aWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKE4pKSk7CisgI2VsaWYgZGVmaW5lZChfX0dOVUNfXykK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXR3ZWJlbmdpbmUtY2hyb21pdW0tcHBj NjQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0d2ViZW5naW5lLWNocm9taXVtLXBwYzY0 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjY2YmI4ZWJiMS4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdHdlYmVuZ2luZS1jaHJvbWl1bS1wcGM2 NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMTIgKzAsMCBAQAotVGhpcyBwYXRjaGVzIHRo ZSBidW5kbGVkIENocm9taXVtIGVub3VnaCB0byBhbGxvdyBpdCB0byBidWlsZCBhbmQgd29yayBv bgotbGl0dGxlIGVuZGlhbiBwcGM2NC4gVGhlIHBhdGNoc2V0IGlzIHJlYmFzZWQgcmVndWxhcmx5 IG9uIHRvcCBvZiBsYXRlc3QKLUNocm9taXVtIGNvZGViYXNlLCBzbyB0aGVyZSBzaG91bGQgYmUg bm8gcHJvYmxlbSBrZWVwaW5nIGl0IHVwIHRvIGRhdGUuCi0KLVBpbmcgcTY2IGlmIHlvdSdyZSB1 cGRhdGluZyBxdDUgYW5kIHRoZSBwYXRjaCBkb2VzIG5vdCBhcHBseSBhbnltb3JlLgotCi1Tb3Vy Y2U6IGh0dHBzOi8vd2lraS5yYXB0b3Jjcy5jb20vdy9pbmRleC5waHA/dGl0bGU9UG9ydGluZy9D aHJvbWl1bQotVXBzdHJlYW06IENocm9taXVtIGRvZXMgbm90IGFjY2VwdCBhZGRpdGlvbmFsIHBs YXRmb3JtIHN1cHBvcnQsIGRvd25zdHJlYW0KLSAgICAgICAgICBwYXRjaGluZyBuZWNlc3NhcnkK LQotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvci5oIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3Bh Z2VfYWxsb2NhdG9yLmgKLWluZGV4IGEzOWI0ZTMwMS4uNWU2MmU3YTIzIDEwMDY0NAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRv ci5oCi1AQCAtMTUsNyArMTUsNyBAQAotIAotIG5hbWVzcGFjZSBiYXNlIHsKLSAKLS0jaWYgZGVm aW5lZChPU19XSU4pCi0rI2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0KQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlm dCA9IDE2OyAgLy8gNjRLQgotICNlbGlmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBz dGF0aWMgY29uc3Qgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQgPSAxNDsg IC8vIDE2S0IKLUBAIC0zMSw2ICszMSwxMCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYWdlQWxs b2NhdGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQotIAotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hf TE9PTkdTT04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSAxNjM4NDsK LSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotKy8vIFRPRE86IG1vZGVybiBwcGM2NCBj YW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNpemVzCi0rLy8gZm9yIG5vdywgNjRrIGlzIGFzc3VtZWQK LStzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA2NTUzNjsKLSAjZWxz ZQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNDA5NjsKLSAjZW5kaWYK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jLmggcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFy dGl0aW9uX2FsbG9jLmgKLWluZGV4IDZlNTE0M2IwOS4uNzRjN2NmODhmIDEwMDY0NAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvYy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2Fs bG9jLmgKLUBAIC05OSw2ICs5OSw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga0J1Y2tldFNoaWZ0 ID0gKGtBbGxvY2F0aW9uR3JhbnVsYXJpdHkgPT0gOCkgPyAzIDogMjsKLSAvLyB1cCBhZ2FpbnN0 IHRoZSBlbmQgb2YgYSBzeXN0ZW0gcGFnZS4KLSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05H U09OKQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE2OyAgLy8g NjRLQgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rc3RhdGljIGNvbnN0IHNpemVf dCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAyNTYgS2lCCi0gI2Vsc2UKLSBzdGF0aWMg Y29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNDsgIC8vIDE2S0IKLSAjZW5kaWYK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMv dXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFt cy5jYwotaW5kZXggMjcyMDE2Yzc2Li40YjAyZDNjZTUgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVl cnlfcGFyYW1zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBv bmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNjCi1AQCAtNTUsNiArNTUs OCBAQCBjb25zdCBjaGFyIGtBcmNoW10gPQotICAgICAibWlwczY0ZWwiOwotICNlbGlmIGRlZmlu ZWQoX19taXBzX18pCi0gICAgICJtaXBzZWwiOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgICAgInBwYzY0IjsKLSAjZWxzZQotICNlcnJvciAidW5rbm93biBhcmNoIgotICNlbmRp ZgotQEAgLTEyNyw2ICsxMjksOCBAQCBjb25zdCBjaGFyKiBVcGRhdGVRdWVyeVBhcmFtczo6R2V0 TmFjbEFyY2goKSB7Ci0gICByZXR1cm4gIm1pcHMzMiI7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9NSVBTNjRFTCkKLSAgIHJldHVybiAibWlwczY0IjsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQotKyAgcmV0dXJuICJwcGM2NCI7Ci0gI2Vsc2UKLSAvLyBOT1RFOiB3aGVuIGFkZGlu ZyBuZXcgdmFsdWVzIGhlcmUsIHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgdGhlCi0gLy8gY29t bWVudCBpbiB0aGUgLmggZmlsZSBhYm91dCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZyb20gdGhp cyBmdW5jdGlvbi4KLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmggcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVf cXVlcnlfcGFyYW1zLmgKLWluZGV4IGEzNWU0YzM3Ny4uZTMxNWUxNDRjIDEwMDY0NAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQv dXBkYXRlX3F1ZXJ5X3BhcmFtcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmgKLUBAIC00 NSw3ICs0NSw3IEBAIGNsYXNzIFVwZGF0ZVF1ZXJ5UGFyYW1zIHsKLSAgIC8vIFJldHVybnMgdGhl IHZhbHVlIHdlIHVzZSBmb3IgdGhlICJuYWNsX2FyY2giIHBhcmFtZXRlci4gTm90ZSB0aGF0IHRo aXMgbWF5Ci0gICAvLyBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgImFyY2giIHBhcmFtZXRlciBhYm92 ZSAoZS5nLiBvbmUgbWF5IGJlIDMyLWJpdCBhbmQKLSAgIC8vIHRoZSBvdGhlciA2NC1iaXQpLiBQ b3NzaWJsZSByZXR1cm4gdmFsdWVzIGluY2x1ZGU6ICJ4ODYtMzIiLCAieDg2LTY0IiwKLS0gIC8v ICJhcm0iLCBhbmQgIm1pcHMzMiIuCi0rICAvLyAiYXJtIiwgIm1pcHMzMiIsIGFuZCAicHBjNjQi LgotICAgc3RhdGljIGNvbnN0IGNoYXIqIEdldE5hY2xBcmNoKCk7Ci0gCi0gICAvLyBSZXR1cm5z IHRoZSBjdXJyZW50IHZlcnNpb24gb2YgQ2hyb21lL0Nocm9taXVtLgotZGlmZiAtLWdpdCBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVhdHVyZXMuZ25pCi1pbmRleCA4 OTY5M2M1NGMuLjYwMTdjN2VlYSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkKLUBAIC0xMiw2ICsxMiw2IEBAIHVzZV9z ZWNjb21wX2JwZiA9Ci0gICAgIChpc19saW51eCB8fCBpc19hbmRyb2lkKSAmJgotICAgICAoY3Vy cmVudF9jcHUgPT0gIng4NiIgfHwgY3VycmVudF9jcHUgPT0gIng2NCIgfHwgY3VycmVudF9jcHUg PT0gImFybSIgfHwKLSAgICAgIGN1cnJlbnRfY3B1ID09ICJhcm02NCIgfHwgY3VycmVudF9jcHUg PT0gIm1pcHNlbCIgfHwKLS0gICAgIGN1cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIpCi0rICAgICBj dXJyZW50X2NwdSA9PSAibWlwczY0ZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpCi0gCi0g dXNlX3NlY2NvbXBfYnBmID0gdXNlX3NlY2NvbXBfYnBmIHx8IGlzX25hY2xfbm9uc2ZpCi1kaWZm IC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JV SUxELmduIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JV SUxELmduCi1pbmRleCA5ZDQ3MjZmODkuLjkzNDhmNjQ2MSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmduCi1AQCAt NDIzLDYgKzQyMyw4IEBAIGNvbXBvbmVudCgic2FuZGJveF9zZXJ2aWNlcyIpIHsKLSAKLSBzb3Vy Y2Vfc2V0KCJzYW5kYm94X3NlcnZpY2VzX2hlYWRlcnMiKSB7Ci0gICBzb3VyY2VzID0gWwotKyAg ICAic3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaCIsCi0rICAgICJzeXN0ZW1f aGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oIiwKLSAgICAgInN5c3RlbV9oZWFkZXJzL2Fy bTY0X2xpbnV4X3N5c2NhbGxzLmgiLAotICAgICAic3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhf dWNvbnRleHQuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaCIs Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L2JwZl9kc2wvbGludXhfc3lzY2FsbF9yYW5nZXMuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgK LWluZGV4IDMzNGEwMGJiOS4uMjcyZDY1YjJhIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvbGludXhfc3lzY2FsbF9yYW5n ZXMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L2JwZl9kc2wvbGludXhfc3lzY2FsbF9yYW5nZXMuaAotQEAgLTUzLDYgKzUzLDEzIEBACi0gI2Rl ZmluZSBNQVhfUFVCTElDX1NZU0NBTEwgMjc5dQotICNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BV QkxJQ19TWVNDQUxMCi0gCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKwotKyNpbmNs dWRlIDxhc20vdW5pc3RkLmg+Ci0rI2RlZmluZSBNSU5fU1lTQ0FMTCAwdQotKyNkZWZpbmUgTUFY X1BVQkxJQ19TWVNDQUxMIDM4NnUKLSsjZGVmaW5lIE1BWF9TWVNDQUxMIE1BWF9QVUJMSUNfU1lT Q0FMTAotKwotICNlbHNlCi0gI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiCi0gI2Vu ZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLWluZGV4IGU0 ZTgxNDJjNC4uNmE5MjZmOTA0IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29t cF9tYWNyb3MuaAotQEAgLTE2LDYgKzE2LDkgQEAKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAv LyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRpb24KLSAjaW5jbHVk ZSA8c3RkZGVmLmg+Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKy8vIE1hbnVhbGx5 IGRlZmluZSBncmVnX3Qgb24gcHBjNjQKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVn X3Q7Ci0gI2VuZGlmCi0gI2VuZGlmCi0gCi1AQCAtMzQ1LDYgKzM0OCw1MSBAQCBzdHJ1Y3QgcmVn c19zdHJ1Y3QgewotICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdz WzNdCi0gI2RlZmluZSBTRUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KLSAj ZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykucmVnc1s1XQotKwotKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotK3R5 cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0rCi0rI2lmZGVmIEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4KLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKLSsj ZWxzZQotKyNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjQKLSsjZW5kaWYKLSsK LSsjZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJl Z3MtPmdwcltfcmVnXSkKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBf UkVHKF9jdHgsIDMpCi0rI2RlZmluZSBTRUNDT01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUco X2N0eCwgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5y ZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwg MykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTIoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKLSsj ZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNSkKLSsjZGVmaW5l IFNFQ0NPTVBfUEFSTTQoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNikKLSsjZGVmaW5lIFNFQ0NP TVBfUEFSTTUoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFS TTYoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgOCkKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfTlJfSURY IChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIG5yKSkKLSsjZGVmaW5lIFNFQ0NP TVBfQVJDSF9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCi0r I2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3Nl Y2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9J UF9MU0JfSURYIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3Ry dWN0aW9uX3BvaW50ZXIpICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwK LSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikg KyA0KQotKyNkZWZpbmUgU0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAotKyAgKG9mZnNldG9mKHN0 cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCi0rCi0rI2RlZmlu ZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykgKF9yZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NP TVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdzKS5ncHJbMF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRf SVAoX3JlZ3MpIChfcmVncykubmlwCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAo X3JlZ3MpLmdwclszXQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5n cHJbNF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCi0r I2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9yZWdzKSAoX3JlZ3MpLmdwcls2XQotKyNkZWZpbmUg U0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9yZWdzKS5ncHJbN10KLSsjZGVmaW5lIFNFQ0NPTVBf UFRfUEFSTTYoX3JlZ3MpIChfcmVncykuZ3ByWzhdCi0rCi0gI2Vsc2UKLSAjZXJyb3IgVW5zdXBw b3J0ZWQgdGFyZ2V0IHBsYXRmb3JtCi0gCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVf cG9saWN5LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCi1pbmRleCA2YWFiMzdhODgu LjBhNGQ0OTcyOSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCi1AQCAtODYsNyArODYsNyBAQCBib29sIElz QmFzZWxpbmVQb2xpY3lXYXRjaGVkKGludCBzeXNubykgewotICAgICAgICAgIFN5c2NhbGxTZXRz OjpJc051bWEoc3lzbm8pIHx8Ci0gICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJjdGwoc3lzbm8p IHx8Ci0gICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJvY2Vzc0dyb3VwT3JTZXNzaW9uKHN5c25v KSB8fAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICAgICAgIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoc3lzbm8pIHx8 Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19hcm1fXykKLUBAIC0xODYsNyArMTg2LDcgQEAgUmVz dWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCi0gICB9Ci0g Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBpZiAoc3lzbm8gPT0g X19OUl9tbWFwKQotICAgICByZXR1cm4gUmVzdHJpY3RNbWFwRmxhZ3MoKTsKLSAjZW5kaWYKLUBA IC0yMDMsNyArMjAzLDcgQEAgUmVzdWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19k ZW5pZWRfZXJybm8sCi0gICAgIHJldHVybiBSZXN0cmljdFByY3RsKCk7Ci0gCi0gI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChzeXNubyA9PSBfX05SX3NvY2tldHBh aXIpIHsKLSAgICAgLy8gT25seSBhbGxvdyBBRl9VTklYLCBQRl9VTklYLiBDcmFzaCBpZiBhbnl0 aGluZyBlbHNlIGlzIHNlZW4uCi0gICAgIHN0YXRpY19hc3NlcnQoQUZfVU5JWCA9PSBQRl9VTklY LAotQEAgLTI0MSw3ICsyNDEsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50 IGZzX2RlbmllZF9lcnJubywKLSAgICAgcmV0dXJuIEVycm9yKEVQRVJNKTsKLSAgIH0KLSAKLS0j aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgIGlmIChTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKHN5c25vKSkKLSAgICAgcmV0dXJu IFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2Fs bF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwotaW5kZXggMTU1ZTUyZTliLi41OTVjMjczNzcg MTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCi1AQCAt MzYsNiArMzYsMTEgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2VuZGlmCi0gCi0rLy8g T24gUFBDNjQsIFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBz byB3ZSBtdXN0IGluY2x1ZGUgdGVybWlvcy5oCi0rI2lmZGVmIF9fcG93ZXJwYzY0X18KLSsjaW5j bHVkZSA8dGVybWlvcy5oPgotKyNlbmRpZgotKwotICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0g Ci0gI2lmICFkZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKLUBAIC05OCw2ICsxMDMsMTUgQEAgaW5s aW5lIGJvb2wgSXNBcmNoaXRlY3R1cmVNaXBzKCkgewotICNlbmRpZgotIH0KLSAKLStpbmxpbmUg Ym9vbCBJc0FyY2hpdGVjdHVyZVBQQzY0KCkgewotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICByZXR1cm4gdHJ1ZTsKLSsjZWxzZQotKyAgcmV0dXJuIGZhbHNlOwotKyNlbmRpZgotK30K LSsKLSsKLSAvLyBVYnVudHUncyB2ZXJzaW9uIG9mIGdsaWJjIGhhcyBhIHJhY2UgY29uZGl0aW9u IGluIHNlbV9wb3N0IHRoYXQgY2FuIGNhdXNlCi0gLy8gaXQgdG8gY2FsbCBmdXRleCgyKSB3aXRo IGJvZ3VzIG9wIGFyZ3VtZW50cy4gVG8gd29ya2Fyb3VuZCB0aGlzLCB3ZSBuZWVkCi0gLy8gdG8g YWxsb3cgdGhvc2UgZnV0ZXgoMikgY2FsbHMgdG8gZmFpbCB3aXRoIEVJTlZBTCwgaW5zdGVhZCBv ZiBjcmFzaGluZyB0aGUKLUBAIC0yMzksNyArMjUzLDggQEAgUmVzdWx0RXhwciBSZXN0cmljdEZj bnRsQ29tbWFuZHMoKSB7Ci0gICAvLyBvcGVyYXRvci4KLSAgIC8vIEdsaWJjIG92ZXJyaWRlcyB0 aGUga2VybmVsJ3MgT19MQVJHRUZJTEUgdmFsdWUuIEFjY291bnQgZm9yIHRoaXMuCi0gICB1aW50 NjRfdCBrT0xhcmdlRmlsZUZsYWcgPSBPX0xBUkdFRklMRTsKLS0gIGlmIChJc0FyY2hpdGVjdHVy ZVg4Nl82NCgpIHx8IElzQXJjaGl0ZWN0dXJlSTM4NigpIHx8IElzQXJjaGl0ZWN0dXJlTWlwcygp KQotKyAgaWYgKElzQXJjaGl0ZWN0dXJlWDg2XzY0KCkgfHwgSXNBcmNoaXRlY3R1cmVJMzg2KCkg fHwgSXNBcmNoaXRlY3R1cmVNaXBzKCkgXAotKyAgICAgIHx8IElzQXJjaGl0ZWN0dXJlUFBDNjQo KSkKLSAgICAga09MYXJnZUZpbGVGbGFnID0gMDEwMDAwMDsKLSAKLSAgIGNvbnN0IEFyZzxpbnQ+ IGNtZCgxKTsKLUBAIC0yNjIsNyArMjc3LDcgQEAgUmVzdWx0RXhwciBSZXN0cmljdEZjbnRsQ29t bWFuZHMoKSB7Ci0gICAgICAgLkRlZmF1bHQoQ3Jhc2hTSUdTWVMoKSk7Ci0gfQotIAotLSNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gUmVz dWx0RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCkgewotICAgLy8gVW5mb3J0dW5hdGVs eSwgd2UgYXJlIHVuYWJsZSB0byByZXN0cmljdCB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvCi0gICAv LyBzb2NrZXRwYWlyKDIpLiBXaGlsc3QgaW5pdGlhbGx5IHNvdW5kaW5nIGJhZCwgaXQncyBub3Rl d29ydGh5IHRoYXQgdmVyeQotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVy c19yZXN0cmljdGlvbnMuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlv bnMuaAotaW5kZXggNzFjNTYwOTNkLi5mOGI5YzBjNmIgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9z eXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxf cGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAotQEAgLTQ4LDcgKzQ4LDcgQEAgU0FOREJPWF9FWFBP UlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdE1wcm90ZWN0RmxhZ3MoKTsKLSAvLyBPX05P TkJMT0NLIHwgT19TWU5DIHwgT19MQVJHRUZJTEUgfCBPX0NMT0VYRUMgfCBPX05PQVRJTUUuCi0g U0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdEZjbnRsQ29tbWFuZHMo KTsKLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotIC8vIFJlc3RyaWN0IHNvY2tldGNhbGwoMikgdG8gb25seSBhbGxvdyBzb2NrZXRw YWlyKDIpLCBzZW5kKDIpLCByZWN2KDIpLAotIC8vIHNlbmR0bygyKSwgcmVjdmZyb20oMiksIHNo dXRkb3duKDIpLCBzZW5kbXNnKDIpIGFuZCByZWN2bXNnKDIpLgotIFNBTkRCT1hfRVhQT1JUIGJw Zl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpOwotZGlmZiAtLWdp dCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwot aW5kZXggNjI1OTYzOWM5Li5mMmY1MTFkNzAgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwotQEAgLTI4LDcgKzI4LDgg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNLaWxsKGludCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZEdldHRpbWUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0g ICAgIGNhc2UgX19OUl9nZXR0aW1lb2ZkYXk6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl90aW1lOgotICNl bmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTQyLDcgKzQzLDcgQEAgYm9vbCBTeXNjYWxs U2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2Z0aW1l OiAgLy8gT2Jzb2xldGUuCi0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXR0aW1lb2ZkYXk6ICAv LyBQcml2aWxlZ2VkLgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMy X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc3RpbWU6Ci0gI2VuZGlmCi0gICAg IGRlZmF1bHQ6Ci1AQCAtMTA4LDcgKzEwOSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5 c3RlbShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2ZhY2Nlc3NhdDogIC8vIEVQRVJNIG5v dCBhIHZhbGlkIGVycm5vLgotICAgICBjYXNlIF9fTlJfZmNobW9kYXQ6Ci0gICAgIGNhc2UgX19O Ul9mY2hvd25hdDogIC8vIFNob3VsZCBiZSBjYWxsZWQgY2hvd25hdCA/Ci0tI2lmIGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl9uZXdmc3RhdGF0OiAgLy8gZnN0YXRhdCgpLiBFUEVSTSBub3QgYSB2YWxp ZCBlcnJuby4KLSAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8 IGRlZmluZWQoX19taXBzMzJfXykKLSAgICAgY2FzZSBfX05SX2ZzdGF0YXQ2NDoKLUBAIC0xMjUs NyArMTI2LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewot ICAgICBjYXNlIF9fTlJfbWVtZmRfY3JlYXRlOgotICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKLSAg ICAgY2FzZSBfX05SX21rbm9kYXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX29s ZGxzdGF0OgotICAgICBjYXNlIF9fTlJfb2xkc3RhdDoKLSAjZW5kaWYKLUBAIC0xNDYsNyArMTQ3 LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBj YXNlIF9fTlJfdHJ1bmNhdGU2NDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3VubGlua2F0Ogot LSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl91dGltZToKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3V0aW1lbnNhdDog IC8vIE5ldy4KLUBAIC0xNjQsNyArMTY2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk RmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgewotICNlbmRpZgotICAgICAgIHJldHVy biB0cnVlOwotIC8vIFRPRE8oamxuKTogdGhlc2Ugc2hvdWxkIGJlIGRlbmllZCBncmFjZWZ1bGx5 IGFzIHdlbGwgKG1vdmVkIGJlbG93KS4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZmFkdmlzZTY0OiAgLy8gRVBF Uk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pCi1A QCAtMTc2LDcgKzE3OSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1B Y2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2ZkYXRhc3luYzogIC8vIEVQ RVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICAgICBjYXNlIF9fTlJfZmxvY2s6ICAgICAgLy8gRVBF Uk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19OUl9mc3RhdGZzOiAgICAvLyBHaXZl IGluZm9ybWF0aW9uIGFib3V0IHRoZSB3aG9sZSBmaWxlc3lzdGVtLgotLSNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMy X18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZnN0 YXRmczY0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZnN5bmM6ICAvLyBFUEVSTSBub3QgYSB2 YWxpZCBlcnJuby4KLUBAIC0xODgsNiArMTkyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3lu Y19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2VsaWYgZGVmaW5l ZChfX2FybV9fKQotICAgICBjYXNlIF9fTlJfYXJtX3N5bmNfZmlsZV9yYW5nZTogIC8vIEVQRVJN IG5vdCBhIHZhbGlkIGVycm5vLgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAg Y2FzZSBfX05SX3N5bmNfZmlsZV9yYW5nZTI6IC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgot ICNlbmRpZgotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiBmYWxzZTsKLUBAIC0yMTEsNyAr MjE3LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQo aW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9nZXRkZW50czogICAgLy8gRVBFUk0gbm90IGEg dmFsaWQgZXJybm8uCi0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9nZXRkZW50czY0OiAgLy8gRVBF Uk0gbm90IGEgdmFsaWQgZXJybm8uCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9yZWFkZGlyOgotICNl bmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTI1Miw3ICsyNTgsNyBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0dldFNpbXBsZUlkKGludCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6Oklz UHJvY2Vzc1ByaXZpbGVnZUNoYW5nZShpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsK LSAgICAgY2FzZSBfX05SX2NhcHNldDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2lvcGVybTogIC8v IEludGVsIHByaXZpbGVnZS4KLSAgICAgY2FzZSBfX05SX2lvcGw6ICAgIC8vIEludGVsIHByaXZp bGVnZS4KLSAjZW5kaWYKLUBAIC0zMDEsNyArMzA3LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNB bGxvd2VkU2lnbmFsSGFuZGxpbmcoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9ydF9zaWdh Y3Rpb246Ci0gICAgIGNhc2UgX19OUl9ydF9zaWdwcm9jbWFzazoKLSAgICAgY2FzZSBfX05SX3J0 X3NpZ3JldHVybjoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NpZ2FjdGlvbjoKLSAgICAgY2FzZSBfX05SX3NpZ3By b2NtYXNrOgotICAgICBjYXNlIF9fTlJfc2lncmV0dXJuOgotQEAgLTMxNyw3ICszMjQsOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKLSAg ICAgY2FzZSBfX05SX3NpZ25hbGZkOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ0 OgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQo X19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfc2lncGVuZGluZzoKLSAgICAgY2FzZSBfX05SX3NpZ3N1c3BlbmQ6Ci0g I2VuZGlmCi1AQCAtMzQwLDcgKzM0OCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZE9w ZXJhdGlvbk9uRmQoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9kdXAzOgot ICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChf X21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9f YWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zaHV0 ZG93bjoKLSAjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0zNzIsNyArMzgwLDcgQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8p IHsKLSAgICAgY2FzZSBfX05SX2V4aXRfZ3JvdXA6Ci0gICAgIGNhc2UgX19OUl93YWl0NDoKLSAg ICAgY2FzZSBfX05SX3dhaXRpZDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykKLSsjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfd2Fp dHBpZDoKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoX19HTElCQ19fKQotQEAgLTQ0Myw3ICs0NTEs NyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lz bm8pIHsKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgZGVmYXVsdDoKLSAjaWYgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK LS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc29ja2V0cGFpcjogIC8vIFdl IHdpbGwgd2FudCB0byBpbnNwZWN0IGl0cyBhcmd1bWVudC4KLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gZmFsc2U7Ci1AQCAtNDUzLDcgKzQ2MSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzRGVu aWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0g I2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19h YXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2FjY2Vw dDoKLSAgICAgY2FzZSBfX05SX2FjY2VwdDQ6Ci0gICAgIGNhc2UgX19OUl9iaW5kOgotQEAgLTQ2 Nyw3ICs0NzUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0 KGludCBzeXNubykgewotICAgfQotIH0KLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlw czMyX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5 c3RlbSBjYWxsIGZvciBzb2NrZXRzLgotIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChp bnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLUBAIC00ODEsNyArNDg5LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKGludCBzeXNubykgewotIH0KLSAjZW5kaWYKLSAK LS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQo X19taXBzX18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBi b29sIFN5c2NhbGxTZXRzOjpJc05ldHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pIHsK LSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldHBlZXJuYW1lOgotQEAgLTUw OSw3ICs1MTgsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nl c3MoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9taW5jb3JlOgotICAgICBjYXNlIF9fTlJf bWxvY2thbGw6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl9tbWFwOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLUBAIC01MzgsNyArNTQ3LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQWRkcmVzc1NwYWNlQWNjZXNzKGludCBzeXNubykgewot IGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKLSAgIHN3 aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2xzZWVrOgotLSNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18p IHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfX2xsc2Vl azoKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi1AQCAtNTQ4LDI1ICs1NTgs MjYgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgewot ICAgICBjYXNlIF9fTlJfcHNlbGVjdDY6Ci0gICAgIGNhc2UgX19OUl9yZWFkOgotICAgICBjYXNl IF9fTlJfcmVhZHY6Ci0tI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9f KQotKyNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcmVjdjoKLSAjZW5kaWYKLSAjaWYgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcmVjdmZyb206ICAv LyBDb3VsZCBzcGVjaWZ5IHNvdXJjZS4KLSAgICAgY2FzZSBfX05SX3JlY3Ztc2c6ICAgLy8gQ291 bGQgc3BlY2lmeSBzb3VyY2UuCi0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zZWxlY3Q6 Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg ZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX19uZXdzZWxlY3Q6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19h cm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRl ZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfc2VuZDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfc2VuZG1zZzogIC8vIENvdWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCi0g ICAgIGNhc2UgX19OUl9zZW5kdG86ICAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KLSAj ZW5kaWYKLUBAIC02MjIsNyArNjMzLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFz aWNTY2hlZHVsZXIoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9uYW5vc2xlZXA6Ci0gICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgIGNhc2UgX19OUl9nZXRwcmlvcml0eToKLS0jaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21p cHMzMl9fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X25pY2U6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXRwcmlvcml0eToKLUBAIC02MzMsNyAr NjQ1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5 c25vKSB7Ci0gCi0gYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8p IHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBcCi0rICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2JkZmx1c2g6Ci0gI2VuZGlmCi0g ICAgIGNhc2UgX19OUl9rZXhlY19sb2FkOgotQEAgLTY0OSw3ICs2NjIsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBzeXNubykgewotIAotIGJvb2wgU3lzY2FsbFNl dHM6OklzS2VybmVsTW9kdWxlKGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotLSNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19t aXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAg IGNhc2UgX19OUl9jcmVhdGVfbW9kdWxlOgotICAgICBjYXNlIF9fTlJfZ2V0X2tlcm5lbF9zeW1z OiAgLy8gU2hvdWxkIEVOT1NZUy4KLSAgICAgY2FzZSBfX05SX3F1ZXJ5X21vZHVsZToKLUBAIC02 ODEsNyArNjk1LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGc0NvbnRyb2woaW50IHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9xdW90YWN0bDoKLSAgICAgY2FzZSBfX05SX3N3YXBvZmY6Ci0gICAg IGNhc2UgX19OUl9zd2Fwb246Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19t aXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl91bW91bnQ6Ci0gI2VuZGlm Ci0gICAgIGNhc2UgX19OUl91bW91bnQyOgotQEAgLTY5Nyw3ICs3MTEsNyBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc051bWEoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9nZXRjcHU6Ci0gICAg IGNhc2UgX19OUl9tYmluZDoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0 X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX21pZ3JhdGVfcGFnZXM6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9t b3ZlX3BhZ2VzOgotQEAgLTcyNiwxMyArNzQwLDEzIEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xv YmFsUHJvY2Vzc0Vudmlyb25tZW50KGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewot ICAgICBjYXNlIF9fTlJfYWNjdDogIC8vIFByaXZpbGVnZWQuCi0gI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9nZXRybGltaXQ6Ci0gI2VuZGlmCi0t I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykKLSsjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl91Z2V0cmxpbWl0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf dWxpbWl0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZ2V0cnVzYWdlOgotQEAgLTc2Niw3ICs3 ODAsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhpbnQgc3lzbm8p IHsKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3N5c2luZm86Ci0gICAgIGNhc2UgX19OUl91bmFt ZToKLS0jaWYgZGVmaW5lZChfX2kzODZfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfb2xkdW5hbWU6Ci0gICAgIGNhc2Ug X19OUl9vbGRvbGR1bmFtZToKLSAjZW5kaWYKLUBAIC04NTcsNyArODcxLDcgQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubykgewotIH0KLSAjZW5kaWYK LSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAvLyBCaWcgc3lzdGVtIFYgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsLgotIGJv b2wgU3lzY2FsbFNldHM6OklzU3lzdGVtVklwYyhpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lz bm8pIHsKLUBAIC04NzYsNyArODkwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbnlTeXN0ZW1W KGludCBzeXNubykgewotICAgICB8fCBkZWZpbmVkKF9fbWlwczY0X18pCi0gICByZXR1cm4gSXNT eXN0ZW1WTWVzc2FnZVF1ZXVlKHN5c25vKSB8fCBJc1N5c3RlbVZTZW1hcGhvcmVzKHN5c25vKSB8 fAotICAgICAgICAgIElzU3lzdGVtVlNoYXJlZE1lbW9yeShzeXNubyk7Ci0tI2VsaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNlbGlmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAg cmV0dXJuIElzU3lzdGVtVklwYyhzeXNubyk7Ci0gI2VuZGlmCi0gfQotQEAgLTkyOSw3ICs5NDMs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZhTm90aWZ5KGludCBzeXNubykgewotIGJvb2wgU3lz Y2FsbFNldHM6OklzVGltZXIoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl9nZXRpdGltZXI6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2FsYXJtOgotICNlbmRpZgotICAg ICBjYXNlIF9fTlJfc2V0aXRpbWVyOgotQEAgLTk4OCwxNiArMTAwMywxOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jZnM6Ci0gICAg IGNhc2UgX19OUl92aGFuZ3VwOgotIC8vIFRoZSBzeXN0ZW0gY2FsbHMgYmVsb3cgYXJlIG5vdCBp bXBsZW1lbnRlZC4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYWZzX3N5c2NhbGw6Ci0gI2VuZGlmCi0tI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl9icmVhazoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ2V0cG1zZzoKLSAj ZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2d0dHk6Ci0gICAgIGNhc2UgX19OUl9pZGxlOgot ICAgICBjYXNlIF9fTlJfbG9jazoKLUBAIC0xMDA1LDE5ICsxMDIyLDIwIEBAIGJvb2wgU3lzY2Fs bFNldHM6OklzTWlzYyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3Byb2Y6Ci0gICAgIGNh c2UgX19OUl9wcm9maWw6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3B1dHBtc2c6Ci0gI2VuZGlm Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykKLSAgICAgY2FzZSBfX05SX3NlY3VyaXR5OgotICNl bmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc3R0eToKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChf X3g4Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgICAgY2FzZSBfX05SX3R1eGNhbGw6Ci0gI2VuZGlmCi0tI2lmICFkZWZpbmVkKF9f YWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJu IHRydWU7Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmggcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9z eXNjYWxsX3NldHMuaAotaW5kZXggYzMxZDVlOWMxLi43ODk4YmU5ZTEgMTAwNjQ0Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3NldHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKLUBA IC00MiwxMyArNDIsMTMgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgewotICAg c3RhdGljIGJvb2wgSXNBbGxvd2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKTsKLSAgIHN0 YXRpYyBib29sIElzRGVuaWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKTsKLSAKLS0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgIC8vIEJpZyBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwgZm9yIHNvY2tldHMuCi0gICBzdGF0 aWMgYm9vbCBJc1NvY2tldENhbGwoaW50IHN5c25vKTsKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8 IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgc3RhdGljIGJvb2wgSXNOZXR3b3JrU29ja2V0 SW5mb3JtYXRpb24oaW50IHN5c25vKTsKLSAjZW5kaWYKLSAKLUBAIC04NSw3ICs4NSw3IEBAIGNs YXNzIFNBTkRCT1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsKLSAgIHN0YXRpYyBib29sIElzU3lzdGVt Vk1lc3NhZ2VRdWV1ZShpbnQgc3lzbm8pOwotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLy8gQmlnIHN5 c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4KLSAgIHN0YXRpYyBib29sIElzU3lzdGVt VklwYyhpbnQgc3lzbm8pOwotICNlbmRpZgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5 c2NhbGwuY2MKLWluZGV4IGQ2ZGI3MGYwZC4uNDkzN2IyNWE0IDEwMDY0NAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2Nh bGwuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi1AQCAtMTUsNyArMTUsNyBAQCBuYW1lc3BhY2Ugc2Fu ZGJveCB7Ci0gbmFtZXNwYWNlIHsKLSAKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZ KSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTV9GQU1JTFkpIHx8IFwKLS0gICAgZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkKLSsgICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgfHwg ZGVmaW5lZCAoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotIC8vIE51bWJlciB0aGF0J3Mgbm90IGN1 cnJlbnRseSB1c2VkIGJ5IGFueSBMaW51eCBrZXJuZWwgQUJJcy4KLSBjb25zdCBpbnQga0ludmFs aWRTeXNjYWxsTnVtYmVyID0gMHgzNTFkMzsKLSAjZWxzZQotQEAgLTMwNywxMiArMzA3LDU2IEBA IGFzbSgvLyBXZSBuZWVkIHRvIGJlIGFibGUgdG8gdGVsbCB0aGUga2VybmVsIGV4YWN0bHkgd2hl cmUgd2UgbWFkZSBhCi0gICAgIC8vIEVudGVyIHRoZSBrZXJuZWwKLSAgICAgInN2YyAwXG4iCi0g ICAgICIyOnJldFxuIgotKyAgICAiLmNmaV9lbmRwcm9jXG4iCi0rICAgICIuc2l6ZSBTeXNjYWxs QXNtLCAuLVN5c2NhbGxBc21cbiIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAg ICIudGV4dFxuIgotKyAgICAiLmFsaWduIDRcbiIKLSsgICAgIi50eXBlIFN5c2NhbGxBc20gQGZ1 bmN0aW9uXG4iCi0rICAgICJTeXNjYWxsQXNtOlxuIgotKyAgICAiLmNmaV9zdGFydHByb2NcbiIK LSsKLSsgICAgLy8gQ2hlY2sgaWYgcjMgaXMgbmVnYXRpdmUKLSsgICAgImNtcGRpIDMsIDBcbiIK LSsgICAgImJndCAyZlxuIgotKwotKyAgICAvLyBMb2FkIGFkZHJlc3Mgb2YgM2YgaW50byByMyBh bmQgcmV0dXJuCi0rICAgICJtZmxyIDEwXG4iCi0rICAgICJibCAxZlxuIgotKyAgICAiMTogbWZs ciAzXG4iCi0rICAgICJtdGxyIDEwXG4iCi0rICAgICJhZGRpIDMsIDMsIDQqMTNcbiIKLSsgICAg ImJsclxuIgotKwotKyAgICAvLyBMb2FkIGFyZ3VtZW50cyBmcm9tIGFycmF5IGludG8gcjMtOAot KyAgICAvLyBzYXZlIHBhcmFtIDMgaW4gcjEwCi0rICAgICIyOlxuIgotKyAgICAibXIgMCwgM1xu IgotKyAgICAibGQgMywgMCg0KVxuIgotKyAgICAibGQgNSwgMTYoNClcbiIKLSsgICAgImxkIDYs IDI0KDQpXG4iCi0rICAgICJsZCA3LCAzMig0KVxuIgotKyAgICAibGQgOCwgNDAoNClcbiIKLSsg ICAgImxkIDQsIDgoNClcbiIKLSsgICAgImxpIDksIDBcbiIKLSsKLSsgICAgLy8gRW50ZXIga2Vy bmVsCi0rICAgICJzY1xuIgotKwotKyAgICAvLyBNYWdpYyByZXR1cm4gYWRkcmVzcwotKyAgICAi MzpcbiIKLSsgICAgLy8gTGlrZSBNSVBTLCBwcGM2NCByZXR1cm4gdmFsdWVzIGFyZSBhbHdheXMg cG9zaXRpdmUuCi0rICAgIC8vIENoZWNrIGZvciBlcnJvciBpbiBjcjAuU08gYW5kIG5lZ2F0ZSB1 cG9uIGVycm9yCi0rICAgICJiYyA0LCAzLCA0ZlxuIgotKyAgICAibmVnIDMsIDNcbiIKLSsgICAg IjQ6IGJsclxuIgotKwotICAgICAiLmNmaV9lbmRwcm9jXG4iCi0gICAgICIuc2l6ZSBTeXNjYWxs QXNtLCAuLVN5c2NhbGxBc21cbiIKLSAjZW5kaWYKLSAgICAgKTsgIC8vIGFzbQotIAotLSNpZiBk ZWZpbmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotIGV4dGVybiAiQyIgewotIGludHB0cl90IFN5c2NhbGxBc20oaW50cHRy X3QgbnIsIGNvbnN0IGludHB0cl90IGFyZ3NbNl0pOwotIH0KLUBAIC00MjYsNiArNDcwLDggQEAg aW50cHRyX3QgU3lzY2FsbDo6Q2FsbChpbnQgbnIsCi0gICAgIHJldCA9IGlub3V0OwotICAgfQot IAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGludHB0cl90IHJldCA9IFN5c2Nh bGxBc20obnIsIGFyZ3MpOwotICNlbHNlCi0gI2Vycm9yICJVbmltcGxlbWVudGVkIGFyY2hpdGVj dHVyZSIKLSAjZW5kaWYKLUBAIC00NDIsOCArNDg4LDE4IEBAIHZvaWQgU3lzY2FsbDo6UHV0VmFs dWVJblVjb250ZXh0KGludHB0cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkgewotICAgICAv LyBuZWVkcyB0byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKLSAg ICAgU0VDQ09NUF9QQVJNNChjdHgpID0gMTsKLS0gIH0gZWxzZQotKyAgfSBlbHNlIHsKLSAgICAg U0VDQ09NUF9QQVJNNChjdHgpID0gMDsKLSsgIH0KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotKyAgLy8gU2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNl dCBlcnJvciByZWdpc3RlciAoY3IwLlNPKQotKyAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3Zh bCA+PSAtNDA5NSkgewotKyAgICByZXRfdmFsID0gLXJldF92YWw7Ci0rICAgIGN0eC0+dWNfbWNv bnRleHQucmVncy0+Y2NyIHw9ICgxIDw8IDI4KTsKLSsgIH0gZWxzZSB7Ci0rICAgIGN0eC0+dWNf bWNvbnRleHQucmVncy0+Y2NyICY9IH4oMSA8PCAyOCk7Ci0rICB9Ci0gI2VuZGlmCi0gICBTRUND T01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsKLSB9Ci1kaWZm IC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmL3RyYXAuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwotaW5kZXggZTljNTE5NDBjLi4zNWE4ZjBkNjcg MTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYvdHJhcC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKLUBAIC0yMzAsNiArMjMwLDIw IEBAIHZvaWQgVHJhcDo6U2lnU3lzKGludCBuciwgTGludXhTaWdJbmZvKiBpbmZvLCB1Y29udGV4 dF90KiBjdHgpIHsKLSAgICAgICBTZXRJc0luU2lnSGFuZGxlcigpOwotICAgICB9Ci0gCi0rI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgLy8gT24gcHBjNjQrZ2xpYmMsIHNvbWUgc3lz Y2FsbHMgc2VlbSB0byBhY2NpZGVudGFsbHkgbmVnYXRlIHRoZSBmaXJzdAotKyAgICAvLyBwYXJh bWV0ZXIgd2hpY2ggY2F1c2VzIGNoZWNrcyBhZ2FpbnN0IGl0IHRvIGZhaWwuIEZvciBub3csIG1h bnVhbGx5Ci0rICAgIC8vIG5lZ2F0ZSB0aGVtIGJhY2suCi0rICAgIC8vIFRPRE8oc2hhd25AYW5h c3Rhcy5pbyk6IGludmVzdGlnYXRlIHRoaXMgaXNzdWUgZnVydGhlcgotKyAgICBhdXRvIG5yID0g U0VDQ09NUF9TWVNDQUxMKGN0eCk7Ci0rICAgIGlmIChuciA9PSBfX05SX29wZW5hdCB8fCBuciA9 PSBfX05SX21rZGlyYXQgfHwgbnIgPT0gX19OUl9mYWNjZXNzYXQgfHwgbnIgPT0gX19OUl9yZWFk bGlua2F0IHx8Ci0rICAgICAgICBuciA9PSBfX05SX3JlbmFtZWF0IHx8IG5yID09IF9fTlJfcmVu YW1lYXQyIHx8IG5yID09IF9fTlJfbmV3ZnN0YXRhdCB8fCBuciA9PSBfX05SX3VubGlua2F0KSB7 Ci0rICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihTRUNDT01QX1BBUk0xKGN0eCkpID4gMCkg ewotKyAgICAgICAgICAgIFNFQ0NPTVBfUEFSTTEoY3R4KSA9IC1TRUNDT01QX1BBUk0xKGN0eCk7 Ci0rICAgICAgICB9Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgLy8gQ29weSB0aGUgc2VjY29t cC1zcGVjaWZpYyBkYXRhIGludG8gYSBhcmNoX3NlY2NvbXBfZGF0YSBzdHJ1Y3R1cmUuIFRoaXMK LSAgICAgLy8gaXMgd2hhdCB3ZSBhcmUgc2hvd2luZyB0byBUcmFwRm5jIGNhbGxiYWNrcyB0aGF0 IHRoZSBzeXN0ZW0gY2FsbAotICAgICAvLyBldmFsdWF0b3IgcmVnaXN0ZXJlZCB3aXRoIHRoZSBz YW5kYm94LgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYwotaW5kZXgg NjViNjNhZGZlLi4xYjRlNjJlNDYgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVk ZW50aWFscy5jYwotQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBDaHJvb3RUb1NhZmVFbXB0eURpcigp IHsKLSAgIHBpZF90IHBpZCA9IC0xOwotICAgYWxpZ25hcygxNikgY2hhciBzdGFja19idWZbUFRI UkVBRF9TVEFDS19NSU5dOwotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRl ZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAotLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKQotKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSAgIC8vIFRoZSBzdGFjayBncm93cyBkb3dud2FyZC4K LSAgIHZvaWQqIHN0YWNrID0gc3RhY2tfYnVmICsgc2l6ZW9mKHN0YWNrX2J1Zik7Ci0gI2Vsc2UK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaAot aW5kZXggYTYwZmUyYWQzLi45ZGNjZGI1MWQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29t cC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCi1AQCAtMjksNiArMjksOSBAQAotICNpZm5k ZWYgRU1fQUFSQ0g2NAotICNkZWZpbmUgRU1fQUFSQ0g2NCAxODMKLSAjZW5kaWYKLSsjaWZuZGVm IEVNX1BQQzY0Ci0rI2RlZmluZSBFTV9QUEM2NCAyMQotKyNlbmRpZgotIAotICNpZm5kZWYgX19B VURJVF9BUkNIXzY0QklUCi0gI2RlZmluZSBfX0FVRElUX0FSQ0hfNjRCSVQgMHg4MDAwMDAwMAot QEAgLTU0LDYgKzU3LDEyIEBACi0gI2lmbmRlZiBBVURJVF9BUkNIX0FBUkNINjQKLSAjZGVmaW5l IEFVRElUX0FSQ0hfQUFSQ0g2NCAoRU1fQUFSQ0g2NCB8IF9fQVVESVRfQVJDSF82NEJJVCB8IF9f QVVESVRfQVJDSF9MRSkKLSAjZW5kaWYKLSsjaWZuZGVmIEFVRElUX0FSQ0hfUFBDNjQKLSsjZGVm aW5lIEFVRElUX0FSQ0hfUFBDNjQgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUKQotKyNl bmRpZgotKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NExFCi0rI2RlZmluZSBBVURJVF9BUkNIX1BQ QzY0TEUgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQot KyNlbmRpZgotIAotIC8vIEZvciBwcmN0bC5oCi0gI2lmbmRlZiBQUl9TRVRfU0VDQ09NUAotZGlm ZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z eXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaAotaW5kZXgg NWFjNGZkYjQyLi5iMjdiNGVhNWYgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9saW51eF9zaWduYWwuaAotQEAgLTExLDcgKzExLDcgQEAKLSAvLyAobm90IHVuZGVm aW5lZCwgYnV0IGRlZmluZWQgZGlmZmVyZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVyZW50IG1lbW9y eQotIC8vIGxheW91dHMpLiBTbywgZmlsbCB0aGUgZ2FwIGhlcmUuCi0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0t ICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAKLSAjZGVmaW5lIExJTlVYX1NJR0hVUCAxCi0gI2RlZmlu ZSBMSU5VWF9TSUdJTlQgMgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJz L2xpbnV4X3N5c2NhbGxzLmgKLWluZGV4IDc2MWMwOGFiZS4uMjhlYmYyZjRlIDEwMDY0NAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCi1AQCAt MzMsNSArMzMsOSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2Fy bTY0X2xpbnV4X3N5c2NhbGxzLmgiCi0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51 eF9zeXNjYWxscy5oIgotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19MSU5VWF9TWVNDQUxMU19IXwotIAotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91 Y29udGV4dC5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vjb250ZXh0LmgKLWluZGV4IGU5N2Q3Mjc3ZC4uZjNmMDU4 NDlhIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vjb250ZXh0LmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91 Y29udGV4dC5oCi1AQCAtMTksNiArMTksOCBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL21pcHM2NF9saW51eF91Y29udGV4dC5oIgotICNlbGlmIGRlZmluZWQoX19h YXJjaDY0X18pCi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRf bGludXhfdWNvbnRleHQuaCIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2luY2x1 ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCIK LSAjZWxzZQotICNlcnJvciAiTm8gc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gQW5k cm9pZCBvciBQTmFDbCBoZWFkZXIiCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xp bnV4X3N5c2NhbGxzLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uY2NhY2ZmZTIyCi0tLS0gL2Rldi9udWxsCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hl YWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaAotQEAgLTAsMCArMSwxMiBAQAotKy8vIENvcHly aWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKy8v IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu c2UgdGhhdCBjYW4gYmUKLSsvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotKwotKyNpZm5k ZWYgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXwot KyNkZWZpbmUgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxM U19IXwotKwotKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0rCi0rLy9UT0RPOiBpcyBpdCBuZWNl c3NhcnkgdG8gcmVkZWZpbmUgc3lzY2FsbCBudW1iZXJzIGZvciBQUEM2ND8KLSsKLSsjZW5kaWYg IC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8K LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51 eF91Y29udGV4dC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi4wNzcy OGUwODcKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oCi1A QCAtMCwwICsxLDEyIEBACi0rLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292 ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotKy8vIGZvdW5kIGluIHRo ZSBMSUNFTlNFIGZpbGUuCi0rCi0rI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJT X1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0rI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RFTV9I RUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0rCi0rI2luY2x1ZGUgPHN5cy91Y29udGV4 dC5oPgotKwotKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHVjb250ZXh0IG9u IFBQQzY0PwotKwotKyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2 NF9MSU5VWF9VQ09OVEVYVF9IXwotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRl cmVyX3BvbGljeV9saW51eC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Vy dmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9s aW51eC5jYwotaW5kZXggYmJlYjMxNTJkLi4xNTZjZDBkMjQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94 L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgv YnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwotQEAgLTE1LDYgKzE1LDExIEBACi0gI2luY2x1 ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaCIKLSAjaW5j bHVkZSAic2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvc2FuZGJveF9saW51 eC5oIgotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1 Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAotKyNpZmRlZiBfX3Bvd2Vy cGM2NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZChP U19DSFJPTUVPUykKLSAvLyBUT0RPKHZpZ25hdHRpKTogcmVwbGFjZSB0aGUgbG9jYWwgZGVmaW5p dGlvbnMgYmVsb3cgd2l0aCAjaW5jbHVkZQotIC8vIDxsaW51eC9kbWEtYnVmLmg+IG9uY2Uga2Vy bmVsIHZlcnNpb24gNC42IGJlY29tZXMgd2lkZWx5IHVzZWQuCi1kaWZmIC0tZ2l0IHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRm b3JtL2hlYXAvSGVhcFBhZ2UuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS9oZWFwL0hlYXBQYWdlLmgKLWluZGV4IDIw Njc0NTYzZS4uNDlmNDVmZWRlIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL2hlYXAvSGVhcFBhZ2Uu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJL aXQvU291cmNlL3BsYXRmb3JtL2hlYXAvSGVhcFBhZ2UuaAotQEAgLTYyLDExICs2MiwxMiBAQCBj b25zdGV4cHIgc2l6ZV90IGtCbGlua1BhZ2VCYXNlTWFzayA9IH5rQmxpbmtQYWdlT2Zmc2V0TWFz azsKLSBjb25zdGV4cHIgc2l6ZV90IGtCbGlua1BhZ2VzUGVyUmVnaW9uID0gMTA7Ci0gCi0gLy8g VE9ETyhueWEpOiBSZXBsYWNlIHRoaXMgd2l0aCBzb21ldGhpbmcgbGlrZSAjaWYgRU5BQkxFX05B Q0wuCi0tI2lmIDAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAvLyBOYUNsJ3Mgc3lz dGVtIHBhZ2Ugc2l6ZSBpcyA2NCBLaUIuIFRoaXMgY2F1c2VzIGEgcHJvYmxlbSBpbiBPaWxwYW4n cyBoZWFwCi0gLy8gbGF5b3V0IGJlY2F1c2UgT2lscGFuIGFsbG9jYXRlcyB0d28gZ3VhcmQgcGFn ZXMgZm9yIGVhY2ggQmxpbmsgcGFnZSAod2hvc2UKLSAvLyBzaXplIGlzIGtCbGlua1BhZ2VTaXpl ID0gMl4xNyA9IDEyOCBLaUIpLiBTbyB3ZSBkb24ndCB1c2UgZ3VhcmQgcGFnZXMgaW4KLSAvLyBO YUNsLgotKy8vIFRoZSBzYW1lIGlzc3VlIGhvbGRzIGZvciBwcGM2NCBzeXN0ZW1zLCB3aGljaCB1 c2UgYSA2NGsgcGFnZSBzaXplLgotIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rR3VhcmRQYWdlU2l6 ZSA9IDA7Ci0gI2Vsc2UKLSBjb25zdGV4cHIgc2l6ZV90IGtCbGlua0d1YXJkUGFnZVNpemUgPSBi YXNlOjprU3lzdGVtUGFnZVNpemU7Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL2hlYXAvYXNtL0JV SUxELmduIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJL aXQvU291cmNlL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCi1pbmRleCA2Yzg3OTUwZjQuLmEy ZmFiMzJiMyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS9oZWFwL2FzbS9CVUlMRC5nbgotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl L3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCi1AQCAtNDYsNiArNDYsMTAgQEAgaWYgKGN1cnJl bnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQiKSB7Ci0gICAgICAgc291cmNl cyA9IFsKLSAgICAgICAgICJTYXZlUmVnaXN0ZXJzX21pcHM2NC5TIiwKLSAgICAgICBdCi0rICAg IH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgewotKyAgICAgIHNvdXJjZXMgPSBb Ci0rICAgICAgICAiU2F2ZVJlZ2lzdGVyc19wcGM2NC5TIiwKLSsgICAgICBdCi0gICAgIH0KLSAK LSAgICAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm0iKSB7Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3Jt L2hlYXAvYXNtL1NhdmVSZWdpc3RlcnNfcHBjNjQuUyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS9oZWFwL2FzbS9TYXZl UmVnaXN0ZXJzX3BwYzY0LlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAu LmVjZDEzOWFlMQotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL2hlYXAvYXNtL1NhdmVS ZWdpc3RlcnNfcHBjNjQuUwotQEAgLTAsMCArMSw1OSBAQAotKy8qCi0rICogdHlwZWRlZiB2b2lk ICgqUHVzaEFsbFJlZ2lzdGVyc0NhbGxiYWNrKShTYWZlUG9pbnRCYXJyaWVyKiwgVGhyZWFkU3Rh dGUqLCBpbnRwdHJfdCopOwotKyAqIGV4dGVybiAiQyIgdm9pZCBQdXNoQWxsUmVnaXN0ZXJzKFNh ZmVQb2ludEJhcnJpZXIqLCBUaHJlYWRTdGF0ZSosIFB1c2hBbGxSZWdpc3RlcnNDYWxsYmFjaykK LSsgKi8KLSsKLSsudHlwZSBQdXNoQWxsUmVnaXN0ZXJzLCAlZnVuY3Rpb24KLSsuZ2xvYmFsIFB1 c2hBbGxSZWdpc3RlcnMKLSsuaGlkZGVuIFB1c2hBbGxSZWdpc3RlcnMKLStQdXNoQWxsUmVnaXN0 ZXJzOgotKyAgICAgICAgLy8gUHVzaCBhbGwgY2FsbGVlLXNhdmVzIHJlZ2lzdGVycyB0byBnZXQg dGhlbQotKyAgICAgICAgLy8gb24gdGhlIHN0YWNrIGZvciBjb25zZXJ2YXRpdmUgc3RhY2sgc2Nh bm5pbmcuCi0rICAgICAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsZWUtc2F2ZWQgcmVnaXN0 ZXJzIGFuZCBtaW5pbWFsIHN0YWNrIGZyYW1lLgotKyAgICAgICAgbWZsciAwICAgICAgICAgIyBy MCA9IExSCi0rICAgICAgICBzdGQgMCwxNigxKSAgICAjIHN0b3JlIExSIGF0IGFkZHIgc3ArMTYK LSsgICAgICAgIHN0ZHUgMSwtMTc2KDEpICMgZ3JvdyBzdGFjayBieSAxNzYgYnl0ZXMgYW5kIHN0 b3JlIG5ldyBzdGFjayB0b3AgcHRyIHRvIHIxCi0rICAgICAgICAgICAgIyAzMjE4KjggPSBtaW4g c3RhY2sgIG5vbi12b2xhdGlsZSByZWdpc3RlcnMKLSsKLSsgICAgICAgIC8vIFNhdmUgdGhlIGNh bGxlZS1zYXZlZCByZWdpc3RlcnMKLSsgICAgICAgIHN0ZCAzMSwxNjgoMSkgICMgc3RvcmUgcjMx IHRvIGFkZHIgc3ArMTY4IAotKyAgICAgICAgc3RkIDMwLDE2MCgxKSAgIyBldGMuLi4KLSsgICAg ICAgIHN0ZCAyOSwxNTIoMSkKLSsgICAgICAgIHN0ZCAyOCwxNDQoMSkKLSsgICAgICAgIHN0ZCAy NywxMzYoMSkKLSsgICAgICAgIHN0ZCAyNiwxMjgoMSkKLSsgICAgICAgIHN0ZCAyNSwxMjAoMSkK LSsgICAgICAgIHN0ZCAyNCwxMTIoMSkKLSsgICAgICAgIHN0ZCAyMywxMDQoMSkKLSsgICAgICAg IHN0ZCAyMiw5NigxKQotKyAgICAgICAgc3RkIDIxLDg4KDEpCi0rICAgICAgICBzdGQgMjAsODAo MSkKLSsgICAgICAgIHN0ZCAxOSw3MigxKQotKyAgICAgICAgc3RkIDE4LDY0KDEpCi0rICAgICAg ICBzdGQgMTcsNTYoMSkKLSsgICAgICAgIHN0ZCAxNiw0OCgxKQotKyAgICAgICAgc3RkIDE1LDQw KDEpCi0rICAgICAgICBzdGQgMTQsMzIoMSkKLSsgICAgICAgIAotKyAgICAgICAgLy8gTm90ZTog dGhlIGNhbGxlZS1zYXZlZCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgZG8gbm90IG5lZWQgdG8g YmUKLSsgICAgICAgIC8vIGNvcGllZCB0byB0aGUgc3RhY2ssIGJlY2F1c2UgZnAgcmVnaXN0ZXJz IG5ldmVyIGhvbGQgaGVhcCBwb2ludGVycwotKyAgICAgICAgLy8gYW5kIHNvIGRvIG5vdCBuZWVk IHRvIGJlIGtlcHQgdmlzaWJsZSB0byB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0rICAgICAgICAK LSsgICAgICAgIC8vIFBhc3MgdGhlIHR3byBmaXJzdCBhcmd1bWVudHMgdW50b3VjaGVkIGluIHIz IGFuZCByNCBhbmQgdGhlCi0rICAgICAgICAvLyBzdGFjayBwb2ludGVyIHRvIHRoZSBjYWxsYmFj ay4KLSsKLSsgICAgICAgIHN0ZCAyLCAyNCgxKSAgICMgc2F2ZSByMiB0byBzcCsyNCBhZGRyCi0r ICAgICAgICBtdGN0ciA1ICAgICAgICAjIGNvcHkgM3JkIGZ1bmN0aW9uIGFyZyAoY2FsbGJhY2sg Zm4gcG9pbnRlcikgdG8gQ1RSCi0rICAgICAgICBtciAxMiwgNSAgICAgICAjIHIxMiBtdXN0IGhv bGQgYWRkcmVzcyBvZiBjYWxsYmFjayB3ZSBhcmUgZ29pbmcgdG8gY2FsbCAKLSsgICAgICAgICAg ICAgICAgICAgICAgICMgIGZvciBwb3NpdGlvbi1pZGVwZW5kZW50IGZ1bmN0aW9ucyBpbnNpZGUg dGhlIGNhbGxiYWNrIHRvIHdvcmsKLSsgICAgICAgIG1yIDUsIDEgICAgICAgICMgc2V0IGN1cnJl bnQgc3AgKHN0YWNrIHRvcCkgYXMgM3JkIGFyZ3VtZW50IGZvciB0aGUgY2FsbGJhY2sKLSsgICAg ICAgIGJjdHJsICAgICAgICAgICMgc2V0IExSIHRvIFBDKzQgYW5kIGNhbGwgdGhlIGNhbGxiYWNr Ci0rICAgICAgICBsZCAyLCAyNCgxKSAgICAjIHJlc3RvcmUgcjIgZnJvbSBzcCsyNCBhZGRyCi0r Ci0rICAgICAgICAvLyBBZGp1c3Qgc3RhY2ssIHJlc3RvcmUgcmV0dXJuIGFkZHJlc3MgYW5kIHJl dHVybi4KLSsgICAgICAgIC8vIE5vdGU6IHRoZSBjb3BpZWQgcmVnaXN0ZXJzIGRvIG5vdCBuZWVk IHRvIGJlIHJlbG9hZGVkIGhlcmUsCi0rICAgICAgICAvLyBiZWNhdXNlIHRoZXkgd2VyZSBwcmVz ZXJ2ZWQgYnkgdGhlIGNhbGxlZCByb3V0aW5lLgotKyAgICAgICAgYWRkaSAxLDEsMTc2ICAgIyBy ZXN0b3JlIG9yaWdpbmFsIFNQIGJ5IGRvaW5nIHNwICs9IDE3NgotKyAgICAgICAgbGQgMCwxNigx KSAgICAgIyByZXN0b3JlIG9yaWdpbmFsIExSIGZyb20gYWRkciBzcCsxNgotKyAgICAgICAgbXRs ciAwICAgICAgICAgIyAuLi4gY29weSBpdCB0byB0aGUgYWN0dWFsIExSCi0rICAgICAgICBibHIg ICAgICAgICAgICAjIHJldHVybiB0byBMUiBhZGRyCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL3d0 Zi9kdG9hL3V0aWxzLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZvcm0vd3RmL2R0b2EvdXRpbHMuaAotaW5kZXggN2YxYjFj NmNhLi42NWFkYzBlNmQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZvcm0vd3RmL2R0b2EvdXRpbHMuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQv U291cmNlL3BsYXRmb3JtL3d0Zi9kdG9hL3V0aWxzLmgKLUBAIC00NSw3ICs0NSw3IEBACi0gLy8g ZGlzYWJsZWQuKQotIC8vIE9uIExpbnV4LHg4NiA4OTI1NWUtMjIgIT0gRGl2X2RvdWJsZSg4OTI1 NS4wLzFlMjIpCi0gI2lmIGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19BUk1FTF9fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRl ZmluZWQoX19NSVBTRUxfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gI2RlZmluZSBET1VCTEVfQ09O VkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TIDEKLSAjZWxpZiBkZWZpbmVkKF9NX0lY ODYpIHx8IGRlZmluZWQoX19pMzg2X18pCi0gI2lmIGRlZmluZWQoX1dJTjMyKQotZGlmZiAtLWdp dCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYW5nbGUvc3Jj L2xpYkFOR0xFL0NvbnN0YW50cy5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLWluZGV4IDJmZTkyMWFm My4uMGEwYmZlNDQyIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xF L0NvbnN0YW50cy5oCi1AQCAtOSw2ICs5LDcgQEAKLSAjaWZuZGVmIExJQkFOR0xFX0NPTlNUQU5U U19IXwotICNkZWZpbmUgTElCQU5HTEVfQ09OU1RBTlRTX0hfCi0gCi0rI2luY2x1ZGUgPGNzdGRk ZWY+Ci0gI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgotIAotIG5hbWVzcGFjZSBnbAotZGlm ZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2Nv bnRleHRfY3B1LmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Jh d19jb250ZXh0X2NwdS5oCi1pbmRleCBlMmVmNDVkZjUuLmUyOTViZDc2YiAxMDA2NDQKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1 LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2Nv bnRleHRfY3B1LmgKLUBAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgTURSYXdDb250ZXh0QVJNIFJh d0NvbnRleHRDUFU7Ci0gdHlwZWRlZiBNRFJhd0NvbnRleHRBUk02NCBSYXdDb250ZXh0Q1BVOwot ICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gdHlwZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0Nv bnRleHRDUFU7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgTURSYXdD b250ZXh0UFBDNjQgUmF3Q29udGV4dENQVTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhh cyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotZGlmZiAt LWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2lu Zm8uY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9p bmZvLmNjCi1pbmRleCAwYTEwNDFkNjIuLmQyYTdiMzM5NCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLUBA IC0yNzAsNyArMjcwLDQyIEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29u dGV4dENQVSogb3V0KSBjb25zdCB7Ci0gICBvdXQtPmZsb2F0X3NhdmUuZmlyID0gbWNvbnRleHQu ZnBjX2VpcjsKLSAjZW5kaWYKLSB9Ci0tI2VuZGlmICAvLyBfX21pcHNfXwotKwotKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSt1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1 Y3Rpb25Qb2ludGVyKCkgY29uc3QgewotKyAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdOwotK30KLSsKLSt2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRD UFUqIG91dCkgY29uc3QgewotKyAgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX1BQ QzY0X0ZVTEw7Ci0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9QUEM2NF9HUFJf Q09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+Z3ByW2ldID0gbWNvbnRleHQuZ3BfcmVnc1tpXTsK LSsKLSsgICAgb3V0LT5sciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsKLSsgICAgb3V0LT5z cnIwID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotKyAgICBvdXQtPnNycjEgPSBtY29udGV4 dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+Y3IgPSBtY29udGV4dC5ncF9yZWdzW1BUX0ND Ul07Ci0rICAgIG91dC0+eGVyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOwotKyAgICBvdXQt PmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSsgICAgCi0rICAgIGZvciAoaW50IGkg PSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAg ICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsKLSsKLSsg ICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07Ci0r Ci0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5U OyBpKyspCi0rICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPSBcCi0rICAgICAg ICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVswXSkgPDwgMzIpIAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1bMV0sIAotKyAgICAgICAgICAgICgo KHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVsyXSkgPDwgMzIpCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzNdfTsKLSsKLSsgICAgb3V0LT52cnNhdmUgPSB2cmVn cy52cnNhdmU7Ci0rICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLnZz Y3IudnNjcl93b3JkfTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQgPSAweEZG RkZGRkZGOyAKLSt9Ci0rI2VuZGlmICAvLyBfX3Bvd2VycGM2NF9fCi0gCi0gdm9pZCBUaHJlYWRJ bmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6ZV90KiBz aXplKSB7Ci0gICBhc3NlcnQoZ3BfcmVncyB8fCBzaXplKTsKLUBAIC0yNzksNiArMzE0LDExIEBA IHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoqIGdwX3Jl Z3MsIHNpemVfdCogc2l6ZSkgewotICAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdyZWdzOwotICAg aWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdyZWdzKTsKLSsjZWxpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAoZ3BfcmVncykKLSsgICAgKmdwX3JlZ3MgPSBt Y29udGV4dC5ncF9yZWdzOwotKyAgaWYgKHNpemUpCi0rICAgICpzaXplID0gc2l6ZW9mKG1jb250 ZXh0LmdwX3JlZ3MpOwotICNlbHNlCi0gICBpZiAoZ3BfcmVncykKLSAgICAgKmdwX3JlZ3MgPSAm cmVnczsKLUBAIC0yOTQsNiArMzM0LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0RmxvYXRpbmdQ b2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0gICAgICpmcF9y ZWdzID0gJm1jb250ZXh0LmZwcmVnczsKLSAgIGlmIChzaXplKQotICAgICAqc2l6ZSA9IHNpemVv ZihtY29udGV4dC5mcHJlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGlm IChmcF9yZWdzKQotKyAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcF9yZWdzOwotKyAgaWYgKHNp emUpCi0rICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZwX3JlZ3MpOwotICNlbHNlCi0gICBp ZiAoZnBfcmVncykKLSAgICAgKmZwX3JlZ3MgPSAmZnByZWdzOwotQEAgLTMwMiw0ICszNDcsMTMg QEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9y ZWdzLCBzaXplX3QqIHNpemUpIHsKLSAjZW5kaWYKLSB9Ci0gCi0rI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSt2b2lkIFRocmVhZEluZm86OkdldFZlY3RvclJlZ2lzdGVycyh2b2lkKiogdl9y ZWdzLCBzaXplX3QqIHNpemUpIHsKLSsgICAgaWYgKHZfcmVncykKLSsgICAgICAgICp2X3JlZ3Mg PSAmdnJlZ3M7Ci0rICAgIGlmIChzaXplKQotKyAgICAgICAgKnNpemUgPSBzaXplb2YodnJlZ3Mp OwotK30KLSsjZW5kaWYKLSsKLSB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCi1kaWZm IC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRf aW5mby5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRf aW5mby5oCi1pbmRleCBmYjIxNmZhNmQuLmZiNjY5MTI2ZiAxMDA2NDQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCi1AQCAt NjgsNiArNjgsMTAgQEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8gVXNlIHRoZSBzdHJ1Y3R1 cmVzIGRlZmluZWQgaW4gPHN5cy91c2VyLmg+Ci0gICBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCBy ZWdzOwotICAgc3RydWN0IHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7Ci0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gPHN5 cy91Y29udGV4dC5oPi4KLSsgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0rICBzdHJ1Y3QgX2xpYmNf dnJzdGF0ZSB2cmVnczsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgLy8gVXNlIHRoZSBz dHJ1Y3R1cmUgZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+LgotICAgbWNvbnRleHRfdCBtY29u dGV4dDsKLUBAIC04NCw2ICs4OCwxMSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gCi0gICAvLyBS ZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9mIGZsb2F0IHBvaW50IHJlZ2lzdGVyIGFyZWEu Ci0gICB2b2lkIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVf dCogc2l6ZSk7Ci0rCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFJldHVybnMg dGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgdGhlIHZlY3RvciByZWdpc3RlciBhcmVhLiAoUFBDNjQg b25seSkKLSsgIHZvaWQgR2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCog c2l6ZSk7Ci0rI2VuZGlmCi0gfTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFk Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91 Y29udGV4dF9yZWFkZXIuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3Vjb250ZXh0X3JlYWRlci5jYwotaW5kZXggOTViMGZiNDRlLi44MmI0MjhmYTkgMTAwNjQ0 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0 X3JlYWRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1v bi91Y29udGV4dF9yZWFkZXIuY2MKLUBAIC0yNTQsNiArMjU0LDQ4IEBAIHZvaWQgVUNvbnRleHRS ZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRf dCAqdWMpIHsKLSAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSB1Yy0+dWNfbWNvbnRleHQuZnBjX2Vp cjsgIC8vIFVudXNlZC4KLSAjZW5kaWYKLSB9Ci0rCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotKwotK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0 IHVjb250ZXh0X3QqIHVjKSB7Ci0rICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tN RF9DT05URVhUX1BQQzY0X1JFR19TUF07Ci0rfQotKwotK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRl cjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7Ci0rICAgIHJl dHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotK30KLSsKLSt2b2lkIFVDb250 ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250 ZXh0X3QqIHVjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBfbGliY192cnN0YXRlKiB2cmVncykgewotKyAgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBN RF9DT05URVhUX1BQQzY0X0ZVTEw7Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09O VEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+Z3ByW2ldID0gdWMtPnVj X21jb250ZXh0LmdwX3JlZ3NbaV07Ci0rCi0rICAgIG91dC0+bHIgPSB1Yy0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9MTktdOyAgICAKLSsgICAgb3V0LT5zcnIwID0gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfTklQXTsKLSsgICAgb3V0LT5zcnIxID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfTVNSXTsKLSsgICAgb3V0LT5jciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NDUl07 Ci0rICAgIG91dC0+eGVyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXTsKLSsgICAg b3V0LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOwotKyAgICAKLSsgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkr KykKLSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQu ZnBfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gdWMtPnVjX21jb250 ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOwotKwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZF Q1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT52ZWN0b3Jfc2F2 ZS5zYXZlX3ZyW2ldID0KLSsgICAgICAgICAgICB7KCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tp XVswXSkgPDwgMzIpIAotKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLT52cnJlZ3Nb aV1bMV0sIAotKyAgICAgICAgICAgICAoKCh1aW50NjRfdCl2cmVncy0+dnJyZWdzW2ldWzJdKSA8 PCAzMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzNdfTsK LSsKLSsgICAgb3V0LT52cnNhdmUgPSB2cmVncy0+dnJzYXZlOwotKyAgICBvdXQtPnZlY3Rvcl9z YXZlLnNhdmVfdnNjciA9IHswLCB2cmVncy0+dnNjci52c2NyX3dvcmR9OwotKyAgICBvdXQtPnZl Y3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7IAotK30KLSsKLSAjZW5kaWYKLSAK LSB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaCBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKLWlu ZGV4IGYzZGRlMWY0ZC4uNWMxZjE2ZTU2IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAotQEAgLTU0 LDYgKzU0LDkgQEAgc3RydWN0IFVDb250ZXh0UmVhZGVyIHsKLSAjZWxpZiBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0 LCBjb25zdCB1Y29udGV4dF90ICp1YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0rICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpv dXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IF9saWJjX3Zyc3RhdGUqIHZyZWdzKTsKLSAjZWxzZQotICAgc3RhdGljIHZv aWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1 Yyk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIv ZXhjZXB0aW9uX2hhbmRsZXIuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNl cHRpb25faGFuZGxlci5jYwotaW5kZXggMzAzZThlZGI5Li44ODc0YjM4OGEgMTAwNjQ0Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLUBA IC00NjAsOSArNDYwLDE2IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6SGFuZGxlU2lnbmFsKGlu dCAvKnNpZyovLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjKSB7Ci0gICAgIG1lbWNweSgmZ19j cmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSwgZnBfcHRyLAotICAgICAgICAgICAgc2l6ZW9mKGdf Y3Jhc2hfY29udGV4dF8uZmxvYXRfc3RhdGUpKTsKLSAgIH0KLSsjZWxpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0rICAvLyBPbiBQUEM2NCwgd2UgbXVzdCBjb3B5IFZSIHN0YXRlCi0rICB1Y29u dGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7Ci0rICBpZiAodWNfcHRyLT51Y19tY29u dGV4dC52X3JlZ3MpIHsKLSsgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0 ZSwgdWNfcHRyLT51Y19tY29udGV4dC52X3JlZ3MsCi0rICAgICAgICAgICBzaXplb2YoZ19jcmFz aF9jb250ZXh0Xy52ZWN0b3Jfc3RhdGUpKTsKLSsgIH0KLSAjZWxpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgLy8gRlAgc3RhdGUgaXMgbm90IHBhcnQg b2YgdXNlciBBQkkgb24gQVJNIExpbnV4LgotLSAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQ IHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90Ci0rICAvLyBJbiBjYXNlIG9mIE1J UFMsIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90Ci0gICAvLyBh bmQgJ2Zsb2F0X3N0YXRlJyBpcyBub3QgYSBtZW1iZXIgb2YgQ3Jhc2hDb250ZXh0LgotICAgdWNv bnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0X3QqKXVjOwotICAgaWYgKHVjX3B0ci0+dWNfbWNv bnRleHQuZnByZWdzKSB7Ci1AQCAtNzAwLDExICs3MDcsMTkgQEAgYm9vbCBFeGNlcHRpb25IYW5k bGVyOjpXcml0ZU1pbmlkdW1wKCkgewotICAgfQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKLSsjaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykg JiYgIWRlZmluZWQoX19taXBzX18pIFwKLSsgICAgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgIC8vIEZQVSBzdGF0ZSBpcyBub3QgcGFydCBvZiBBUk0gRUFCSSB1Y29udGV4dF90LgotICAg bWVtY3B5KCZjb250ZXh0LmZsb2F0X3N0YXRlLCBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQu ZnByZWdzLAotICAgICAgICAgIHNpemVvZihjb250ZXh0LmZsb2F0X3N0YXRlKSk7Ci0gI2VuZGlm Ci0rCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFZlY3RvciByZWdpc3RlcnMg bXVzdCBiZSBjb3BpZWQgb24gUFBDNjQKLSsgIG1lbWNweSgmY29udGV4dC52ZWN0b3Jfc3RhdGUs IGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC52X3JlZ3MsCi0rICAgICAgICAgc2l6ZW9mKGNv bnRleHQudmVjdG9yX3N0YXRlKSk7Ci0rI2VuZGlmCi0rCi0gICBjb250ZXh0LnRpZCA9IHN5c19n ZXR0aWQoKTsKLSAKLSAgIC8vIEFkZCBhbiBleGNlcHRpb24gc3RyZWFtIHRvIHRoZSBtaW5pZHVt cCBmb3IgYmV0dGVyIHJlcG9ydGluZy4KLUBAIC03MjUsNiArNzQwLDkgQEAgYm9vbCBFeGNlcHRp b25IYW5kbGVyOjpXcml0ZU1pbmlkdW1wKCkgewotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0g ICBjb250ZXh0LnNpZ2luZm8uc2lfYWRkciA9Ci0gICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lk Kj4oY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LnBjKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0rICBjb250ZXh0LnNpZ2luZm8uc2lfYWRkciA9Ci0rICAgICAgcmVpbnRlcnBy ZXRfY2FzdDx2b2lkKj4oY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQ XSk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlv dXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAotaW5kZXggZDI0NmY2MDE5Li4wYWY4OTM4Nzgg MTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlci5oCi1AQCAtMTkyLDcgKzE5MiwxMSBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyIHsKLSAg ICAgc2lnaW5mb190IHNpZ2luZm87Ci0gICAgIHBpZF90IHRpZDsgIC8vIHRoZSBjcmFzaGluZyB0 aHJlYWQuCi0gICAgIHVjb250ZXh0X3QgY29udGV4dDsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFC SV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgICAvLyBQUEM2NCdzIEZQIHN0YXRlIGlzIGEgcGFydCBvZiB1Y29udGV4dF90IGxpa2UgTUlQ UyBidXQgdGhlIHZlY3RvcgotKyAgICAvLyBzdGF0ZSBpcyBub3QsIHNvIGEgc3RydWN0IGlzIG5l ZWRlZC4KLSsgICAgdnN0YXRlX3QgdmVjdG9yX3N0YXRlOwotKyNlbGlmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICAgIC8vICNpZmRlZiB0aGlzIG91dCBi ZWNhdXNlIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIGZvciBMaW51eCBBUk0uCi0g ICAgIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2Yg dWNvbnRleHRfdCBzbwotICAgICAvLyAnZmxvYXRfc3RhdGUnIGlzIG5vdCByZXF1aXJlZC4KLWRp ZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxl cl91bml0dGVzdC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyX3VuaXR0ZXN0LmNjCi1pbmRleCAxOTNhNzZlN2IuLjE2NWZmZjZmYSAxMDA2NDQKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0 ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlcl91bml0dGVzdC5jYwotQEAgLTQ5NCw2ICs0OTQsOCBAQCBjb25zdCB1bnNpZ25lZCBjaGFy IGtJbGxlZ2FsSW5zdHJ1Y3Rpb25bXSA9IHsKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8v IG1mYzIgemVybyxJbXBsIC0gdXN1YWxseSBpbGxlZ2FsIGluIHVzZXJzcGFjZS4KLSAgIDB4NDgs IDB4MDAsIDB4MDAsIDB4NDgKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAweDAx LCAweDAxLCAweDAxLCAweDAxIC8vIENyYXNoZXMgb24gYSB0ZXN0ZWQgUE9XRVI5IGNwdQotICNl bHNlCi0gICAvLyBUaGlzIGNyYXNoZXMgd2l0aCBTSUdJTEwgb24geDg2L3g4Ni02NC9hcm0uCi0g ICAweGZmLCAweGZmLCAweGZmLCAweGZmCi1AQCAtNjg5LDEwICs2OTEsMTAgQEAgVEVTVChFeGNl cHRpb25IYW5kbGVyVGVzdCwgSW5zdHJ1Y3Rpb25Qb2ludGVyTWVtb3J5TWF4Qm91bmQpIHsKLSAK LSAgIC8vIFRoZXNlIGFyZSBkZWZpbmVkIGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0g dG8gY2hlY2sgdGhlCi0gICAvLyBkYXRhIGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCi0t ICAvLyBVc2UgNGsgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBh Z2UgZXZlbgotKyAgLy8gVXNlIHRoZSBwYWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxs IGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgotICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMg cmVxdWVzdGVkLCBhbmQgdGhpcyB0ZXN0IHdhbnRzIHRvCi0gICAvLyB0ZXN0IHRoZSB1cHBlciBi b3VuZCBvZiB0aGUgbWVtb3J5IHJhbmdlLgotLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUg PSA0MDk2OyAgLy8gYnl0ZXMKLSsgIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFn ZXNpemUoKTsgIC8vIGJ5dGVzCi0gICBjb25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0g c2l6ZW9mKGtJbGxlZ2FsSW5zdHJ1Y3Rpb24pOwotIAotICAgY29uc3QgcGlkX3QgY2hpbGQgPSBm b3JrKCk7Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0 ZXIvbWljcm9kdW1wX3dyaXRlci5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBf d3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKLWluZGV4IDE4MDg3M2Y0MC4uMjkyMWZkMzg3IDEw MDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9k dW1wX3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0 ZXIvbWljcm9kdW1wX3dyaXRlci5jYwotQEAgLTEzOCw3ICsxMzgsOSBAQCBjbGFzcyBNaWNyb2R1 bXBXcml0ZXIgewotICAgICAgICAgICAgICAgICAgIGNvbnN0IE1pY3JvZHVtcEV4dHJhSW5mbyYg bWljcm9kdW1wX2V4dHJhX2luZm8sCi0gICAgICAgICAgICAgICAgICAgTGludXhEdW1wZXIqIGR1 bXBlcikKLSAgICAgICA6IHVjb250ZXh0Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBO VUxMKSwKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK LSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250 ZXh0ID8gJmNvbnRleHQtPnZlY3Rvcl9zdGF0ZSA6IE5VTEwpLAotKyNlbGlmICFkZWZpbmVkKF9f QVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICAgICAgICBmbG9hdF9zdGF0ZV8o Y29udGV4dCA/ICZjb250ZXh0LT5mbG9hdF9zdGF0ZSA6IE5VTEwpLAotICNlbmRpZgotICAgICAg ICAgZHVtcGVyXyhkdW1wZXIpLAotQEAgLTMzNyw2ICszMzksOCBAQCBjbGFzcyBNaWNyb2R1bXBX cml0ZXIgewotICMgZWxzZQotICMgIGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBu b3Qgc3VwcG9ydGVkIChuMzIpIgotICNlbmRpZgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgICAgY29uc3QgY2hhciBrQXJjaFtdID0gInBwYzY0IjsKLSAjZWxzZQotICNlcnJvciAi VGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQiCi0gI2Vu ZGlmCi1AQCAtNDA5LDcgKzQxMyw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0gICB2b2lk IER1bXBDUFVTdGF0ZSgpIHsKLSAgICAgUmF3Q29udGV4dENQVSBjcHU7Ci0gICAgIG15X21lbXNl dCgmY3B1LCAwLCBzaXplb2YoUmF3Q29udGV4dENQVSkpOwotLSNpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8sIHZl Y3Rvcl9zdGF0ZV8pOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCi0gICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29u dGV4dF8sIGZsb2F0X3N0YXRlXyk7Ci0gI2Vsc2UKLSAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxD UFVDb250ZXh0KCZjcHUsIHVjb250ZXh0Xyk7Ci1AQCAtNjA1LDcgKzYxMSw5IEBAIGNsYXNzIE1p Y3JvZHVtcFdyaXRlciB7Ci0gICB2b2lkKiBBbGxvYyh1bnNpZ25lZCBieXRlcykgeyByZXR1cm4g ZHVtcGVyXy0+YWxsb2NhdG9yKCktPkFsbG9jKGJ5dGVzKTsgfQotIAotICAgY29uc3QgdWNvbnRl eHRfdCogY29uc3QgdWNvbnRleHRfOwotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFk ZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBjb25zdCBn b29nbGVfYnJlYWtwYWQ6OnZzdGF0ZV90KiBjb25zdCB2ZWN0b3Jfc3RhdGVfOwotKyNlbGlmICFk ZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICBjb25zdCBnb29n bGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOwotICNlbmRpZgotICAg TGludXhEdW1wZXIqIGR1bXBlcl87Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3Qu Y2MKLWluZGV4IGMyZmVhMDIyNS4uOGM2MmM1MjRhIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dy aXRlcl91bml0dGVzdC5jYwotQEAgLTI3OCwxMCArMjc4LDE5IEBAIFRFU1QoTWljcm9kdW1wV3Jp dGVyVGVzdCwgQmFzaWNXaXRoTWFwcGluZ3MpIHsKLSAgIENyYXNoQW5kR2V0TWljcm9kdW1wKG1h cHBpbmdzLCBNaWNyb2R1bXBFeHRyYUluZm8oKSwgJmJ1Zik7Ci0gICBBU1NFUlRfVFJVRShDb250 YWluc01pY3JvZHVtcChidWYpKTsKLSAKLSsgIGludCBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgp OwotICNpZmRlZiBfX0xQNjRfXwotLSAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAotLSAg ICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMDEwMDAgMDAwMDAwMDAwMDAwMDAyQSAw MDAwMDAwMDAwMDAxMDAwICIKLS0gICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2 Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKLSsgIC8vIFRoaXMgdGVzdCBpcyBvbmx5 IGF2YWlsYWJsZSBmb3IgdGhlIGZvbGxvd2luZyBwYWdlIHNpemVzCi0rICBBU1NFUlRfVFJVRSgo cGFnZV9zaXplID09IDQwOTYpIHx8IChwYWdlX3NpemUgPT0gNjU1MzYpKTsKLSsgIGlmIChwYWdl X3NpemUgPT0gNDA5NikgeyAKLSsgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAotKyAg ICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAwMDAwMDJB IDAwMDAwMDAwMDAwMDEwMDAgIgotKyAgICAgICAgICAgICAgICAgICAgICAgIjMzMjIxMTAwNTU0 NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Ci0rICB9IGVsc2UgewotKyAgICBB U1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0rICAgICAgICAgICAgICBidWYuZmluZCgiTSAw MDAwMDAwMDAwMDEwMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAxMDAwMCAiCi0rICAg ICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxp YmZvby5zbyIpKTsKLSsgIH0KLSAjZWxzZQotICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9z LAotICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAxMDAwIDAwMDAwMDJBIDAwMDAxMDAwICIK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4 X2NvcmVfZHVtcGVyLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9jb3JlX2R1bXBlci5jYwotaW5kZXggOWJlMzc1MzMzLi5mMjlhZTVlNjMgMTAwNjQ0Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVt cGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4 X2NvcmVfZHVtcGVyLmNjCi1AQCAtMTE2LDYgKzExNiw5IEBAIGJvb2wgTGludXhDb3JlRHVtcGVy OjpHZXRUaHJlYWRJbmZvQnlJbmRleChzaXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8pIHsK LSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgc3RhY2tfcG9pbnRlciA9Ci0gICAgICAgcmVp bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9N SVBTX1JFR19TUF0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0YWNrX3Bv aW50ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0 LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdKTsKLSAjZWxzZQotICNlcnJvciAiVGhp cyBjb2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlm Ci1AQCAtMjAwLDcgKzIwMywxMCBAQCBib29sIExpbnV4Q29yZUR1bXBlcjo6RW51bWVyYXRlVGhy ZWFkcygpIHsKLSAgICAgICAgIG1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKFRocmVhZEluZm8pKTsK LSAgICAgICAgIGluZm8udGdpZCA9IHN0YXR1cy0+cHJfcGdycDsKLSAgICAgICAgIGluZm8ucHBp ZCA9IHN0YXR1cy0+cHJfcHBpZDsKLS0jaWYgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMTsgaSsrKQot KyAgICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3BfcmVnc1tpXSA9IHN0YXR1cy0+cHJfcmVnW2ld OwotKyNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gI2lmIGRlZmluZWQoX19BTkRST0lEX18pCi0g ICAgICAgICBmb3IgKGludCBpID0gRUZfUjA7IGkgPD0gRUZfUjMxOyBpKyspCi0gICAgICAgICAg IGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAtIEVGX1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ldOwotZGlm ZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVt cGVyLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1w ZXIuY2MKLWluZGV4IDUxNWFmM2ZmNC4uYTMyOTk1MDc2IDEwMDY0NAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCi1AQCAtNzkx LDcgKzc5MSw5IEBAIGJvb2wgTGludXhEdW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2lkKiog c3RhY2ssIHNpemVfdCogc3RhY2tfbGVuLAotICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf dCo+KGludF9zdGFja19wb2ludGVyICYgfihwYWdlX3NpemUgLSAxKSk7Ci0gCi0gICAvLyBUaGUg bnVtYmVyIG9mIGJ5dGVzIG9mIHN0YWNrIHdoaWNoIHdlIHRyeSB0byBjYXB0dXJlLgotLSAgc3Rh dGljIGNvbnN0IHB0cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSAzMiAqIDEwMjQ7Ci0rICAvLyBU aGlzIG5vdyBkZXBlbmRzIG9uIHBhZ2Vfc2l6ZSB0byBhdm9pZCBtaXNzaW5nIGRhdGEKLSsgIC8v IG9uIHN5c3RlbXMgd2l0aCBsYXJnZXIgcGFnZSBzaXplcy4KLSsgIHN0YXRpYyBjb25zdCBwdHJk aWZmX3Qga1N0YWNrVG9DYXB0dXJlID0gOCAqIHBhZ2Vfc2l6ZTsKLSAKLSAgIGNvbnN0IE1hcHBp bmdJbmZvKiBtYXBwaW5nID0gRmluZE1hcHBpbmcoc3RhY2tfcG9pbnRlcik7Ci0gICBpZiAoIW1h cHBpbmcpCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9kdW1wZXIuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIv bGludXhfZHVtcGVyLmgKLWluZGV4IDRhNGUwYjBhZi4uY2FhMGZhYjYzIDEwMDY0NAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAot QEAgLTYwLDcgKzYwLDggQEAgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7Ci0gIChkZWZpbmVk KF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSU8zMikKLSB0eXBlZGVmIEVsZjMyX2F1eHZf dCBlbGZfYXV4X2VudHJ5OwotICNlbGlmIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19h YXJjaDY0X18pIHx8IFwKLS0gICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0g X0FCSU8zMikKLSsgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FCSU8z MikgfHwgXAotKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIHR5cGVkZWYgRWxmNjRfYXV4 dl90IGVsZl9hdXhfZW50cnk7Ci0gI2VuZGlmCi0gCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNj IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5p dHRlc3RfaGVscGVyLmNjCi1pbmRleCAzYWQ0OGU1MDEuLjE2ODhjMzY1ZSAxMDA2NDQKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0 ZXN0X2hlbHBlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNjCi1AQCAtNTEsNiArNTEsOCBAQAotICNk ZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAicmN4IgotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0g I2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICIkMSIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0rI2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICJyOCIKLSAjZWxzZQotICNlcnJvciBUaGlz IHRlc3QgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotZGlm ZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRy YWNlX2R1bXBlci5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfcHRyYWNlX2R1bXBlci5jYwotaW5kZXggOGEzZjA0ZTI5Li5lNjA3YjI4ZDUgMTAwNjQ0Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9k dW1wZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfcHRyYWNlX2R1bXBlci5jYwotQEAgLTE1NCwxOSArMTU0LDI3IEBAIGJvb2wgTGludXhQdHJh Y2VEdW1wZXI6OkNvcHlGcm9tUHJvY2Vzcyh2b2lkKiBkZXN0LCBwaWRfdCBjaGlsZCwKLSAgIHJl dHVybiB0cnVlOwotIH0KLSAKLS1ib29sIExpbnV4UHRyYWNlRHVtcGVyOjpSZWFkUmVnaXN0ZXJT ZXQoVGhyZWFkSW5mbyogaW5mbywgcGlkX3QgdGlkKQotLXsKLStib29sIExpbnV4UHRyYWNlRHVt cGVyOjpSZWFkUmVnaXN0ZXJTZXQoVGhyZWFkSW5mbyogaW5mbywgcGlkX3QgdGlkKSB7Ci0gI2lm ZGVmIFBUUkFDRV9HRVRSRUdTRVQKLSAgIHN0cnVjdCBpb3ZlYyBpbzsKLSAgIGluZm8tPkdldEdl bmVyYWxQdXJwb3NlUmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOwotLSAgaWYg KHN5c19wdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFJTVEFUVVMsICh2 b2lkKikmaW8pID09IC0xKSB7Ci0rICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwg KHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgewotICAgICByZXR1cm4gZmFs c2U7Ci0gICB9Ci0gCi0gICBpbmZvLT5HZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKCZpby5pb3Zf YmFzZSwgJmlvLmlvdl9sZW4pOwotLSAgaWYgKHN5c19wdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwg dGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikmaW8pID09IC0xKSB7Ci0rICBpZiAocHRy YWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCopJmlv KSA9PSAtMSkgewotICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0rCi0rI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIC8vIEdyYWIgdGhlIHZlY3RvciByZWdpc3RlcnMgb24gUFBDNjQgdG9v Ci0rICBpbmZvLT5HZXRWZWN0b3JSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7 Ci0rICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BQQ19WTVgs ICh2b2lkKikmaW8pID09IC0xKSB7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsjZW5kaWYg Ly8gZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKwotICAgcmV0dXJuIHRydWU7Ci0gI2Vsc2UKLSAg IHJldHVybiBmYWxzZTsKLUBAIC0zMDMsNiArMzExLDkgQEAgYm9vbCBMaW51eFB0cmFjZUR1bXBl cjo6R2V0VGhyZWFkSW5mb0J5SW5kZXgoc2l6ZV90IGluZGV4LCBUaHJlYWRJbmZvKiBpbmZvKSB7 Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIHN0YWNrX3BvaW50ZXIgPQotICAgICAgIHJl aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRf TUlQU19SRUdfU1BdKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBzdGFja19w b2ludGVyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4 dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRo aXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRp ZgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYwotaW5kZXggYTRhMGZk OWI2Li41MmMxNTA3MDQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVz dC5jYwotQEAgLTQ1Nyw2ICs0NTcsOSBAQCBURVNUKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgVmVy aWZ5U3RhY2tSZWFkV2l0aE11bHRpcGxlVGhyZWFkcykgewotICNlbGlmIGRlZmluZWQoX19taXBz X18pCi0gICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlvbiA9Ci0gICAgICAgICByZWludGVy cHJldF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29udGV4dC5ncmVnc1sxXSk7Ci0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRpb24g PQotKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRleHQu Z3BfcmVnc1s4XSk7Ci0gI2Vsc2UKLSAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0 ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KLSAjZW5kaWYKLUBAIC01NTMsNiArNTU2LDggQEAgVEVTVF9G KExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgU2FuaXRpemVTdGFja0NvcHkpIHsKLSAgIHVpbnRwdHJf dCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5yZWdzLnJjeDsKLSAjZWxpZiBkZWZpbmVkKF9fbWlw c19fKQotICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdyZWdz WzFdOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHVpbnRwdHJfdCBoZWFwX2Fk ZHIgPSB0aHJlYWRfaW5mby5tY29udGV4dC5ncF9yZWdzWzhdOwotICNlbHNlCi0gI2Vycm9yIFRo aXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCi0gI2VuZGlmCi1k aWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVt cF93cml0ZXIuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlk dW1wX3dyaXRlci5jYwotaW5kZXggYzcxNjE0MzQ1Li5hOThmOWFmYTUgMTAwNjQ0Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuY2MKLUBAIC0xMzYsNyArMTM2LDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotICAgICAg IDogZmRfKG1pbmlkdW1wX2ZkKSwKLSAgICAgICAgIHBhdGhfKG1pbmlkdW1wX3BhdGgpLAotICAg ICAgICAgdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAotLSNp ZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29u dGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9f KSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8g JmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1wZXJf KGR1bXBlciksCi1AQCAtNDY4LDcgKzQ3MCw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAg ICAgICAgIGlmICghY3B1LkFsbG9jYXRlKCkpCi0gICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg ICAgICAgIG15X21lbXNldChjcHUuZ2V0KCksIDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7Ci0t I2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29u dGV4dChjcHUuZ2V0KCksIHVjb250ZXh0XywgdmVjdG9yX3N0YXRlXyk7Ci0rI2VsaWYgIWRlZmlu ZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIFVDb250ZXh0 UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCksIHVjb250ZXh0XywgZmxvYXRfc3RhdGVf KTsKLSAjZWxzZQotICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5n ZXQoKSwgdWNvbnRleHRfKTsKLUBAIC04ODgsNyArODkyLDcgQEAgY2xhc3MgTWluaWR1bXBXcml0 ZXIgewotICAgICBkaXJlbnQtPmxvY2F0aW9uLnJ2YSA9IDA7Ci0gICB9Ci0gCi0tI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykK LSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBib29sIFdyaXRlQ1BVSW5m b3JtYXRpb24oTURSYXdTeXN0ZW1JbmZvKiBzeXNfaW5mbykgewotICAgICBjaGFyIHZlbmRvcl9p ZFtzaXplb2Yoc3lzX2luZm8tPmNwdS54ODZfY3B1X2luZm8udmVuZG9yX2lkKSArIDFdID0gezB9 OwotICAgICBzdGF0aWMgY29uc3QgY2hhciB2ZW5kb3JfaWRfbmFtZVtdID0gInZlbmRvcl9pZCI7 Ci1AQCAtOTA4LDcgKzkxMiw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAKLSAgICAgLy8g cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSBzaG91bGQgYWx3YXlzIGJlIHNldCwgZG8gdGhpcyBmaXJz dAotICAgICBzeXNfaW5mby0+cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSA9Ci0tI2lmIGRlZmluZWQo X19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIE1EX0NQVV9B UkNISVRFQ1RVUkVfUFBDNjQ7Ci0rI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjIGlmIF9NSVBT X1NJTSA9PSBfQUJJTzMyCi0gICAgICAgICBNRF9DUFVfQVJDSElURUNUVVJFX01JUFM7Ci0gIyBl bGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKLUBAIC0xMzI0LDcgKzEzMzAsOSBAQCBjbGFzcyBNaW5p ZHVtcFdyaXRlciB7Ci0gICBjb25zdCBjaGFyKiBwYXRoXzsgIC8vIFBhdGggdG8gdGhlIGZpbGUg d2hlcmUgdGhlIG1pbmlkdW0gc2hvdWxkIGJlIHdyaXR0ZW4uCi0gCi0gICBjb25zdCB1Y29udGV4 dF90KiBjb25zdCB1Y29udGV4dF87ICAvLyBhbHNvIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyCi0t I2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6dnN0YXRlX3Qq IGNvbnN0IHZlY3Rvcl9zdGF0ZV87Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAh ZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90KiBj b25zdCBmbG9hdF9zdGF0ZV87ICAvLyBkaXR0bwotICNlbmRpZgotICAgTGludXhEdW1wZXIqIGR1 bXBlcl87Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9taW5pZHVtcF93cml0ZXIuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0 ZXIvbWluaWR1bXBfd3JpdGVyLmgKLWluZGV4IGQxY2M1NjI0Yy4uNDAzNDk1Mjk1IDEwMDY0NAot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVt cF93cml0ZXIuaAotQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlcjsKLSAK LSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSB0eXBlZGVmIHN0cnVjdCBmcHNpbWRfY29udGV4 dCBmcHN0YXRlX3Q7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgc3Ry dWN0IF9saWJjX3Zyc3RhdGUgdnN0YXRlX3Q7Ci0gI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9f KSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIHN0cnVjdCBfZnBzdGF0ZSBmcHN0YXRl X3Q7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYwotaW5kZXggNTgz ZGRkYTg2Li41ZTNkZWNjZmQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWlu aWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MK LUBAIC03MTAsNiArNzEwLDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3QsIEludmFsaWRTdGFj a1BvaW50ZXIpIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgY29udGV4dC5jb250ZXh0 LnVjX21jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0KLSAgICAgICBpbnZh bGlkX3N0YWNrX3BvaW50ZXI7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29u dGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1Bd ID0KLSsgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Ci0gI2Vsc2UKLSAjIGVycm9yICJUaGlz IGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlm Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5j YyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGUuY2MKLWluZGV4IDRl OTM4MjY5Zi4uZjBmZjE1ZDk2IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21l bW9yeV9tYXBwZWRfZmlsZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9t YXBwZWRfZmlsZS5jYwotQEAgLTY1LDggKzY1LDcgQEAgYm9vbCBNZW1vcnlNYXBwZWRGaWxlOjpN YXAoY29uc3QgY2hhciogcGF0aCwgc2l6ZV90IG9mZnNldCkgewotICAgfQotIAotICNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0gICAoZGVmaW5l ZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkKLS0KLSsgICAoZGVmaW5lZChfX21p cHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgc3RydWN0IGtlcm5lbF9zdGF0IHN0OwotICAgaWYgKHN5c19mc3RhdChmZCwgJnN0KSA9PSAt MSB8fCBzdC5zdF9zaXplIDwgMCkgewotICNlbHNlCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29t bW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1v bi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MKLWluZGV4IGZhZDU5ZjQwYy4u NjE2NDk2ZDY3IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBw ZWRfZmlsZV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9t YXBwZWRfZmlsZV91bml0dGVzdC5jYwotQEAgLTE3Niw5ICsxNzYsMTAgQEAgVEVTVF9GKE1lbW9y eU1hcHBlZEZpbGVUZXN0LCBSZW1hcEFmdGVyTWFwKSB7Ci0gVEVTVF9GKE1lbW9yeU1hcHBlZEZp bGVUZXN0LCBNYXBXaXRoT2Zmc2V0KSB7Ci0gICAvLyBQdXQgbW9yZSBkYXRhIGluIHRoZSB0ZXN0 IGZpbGUgdGhpcyB0aW1lLiBPZmZzZXRzIGNhbiBvbmx5IGJlCi0gICAvLyBkb25lIG9uIHBhZ2Ug Ym91bmRhcmllcywgc28gd2UgbmVlZCBhIHR3byBwYWdlIGZpbGUgdG8gdGVzdCB0aGlzLgotLSAg Y29uc3QgaW50IHBhZ2Vfc2l6ZSA9IDQwOTY7Ci0tICBjaGFyIGRhdGExWzIgKiBwYWdlX3NpemVd OwotLSAgc2l6ZV90IGRhdGExX3NpemUgPSBzaXplb2YoZGF0YTEpOwotKyAgY29uc3QgaW50IHBh Z2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7Ci0rICBjaGFyICpkYXRhMSA9IHN0YXRpY19jYXN0PGNo YXIqPihtYWxsb2MoMiAqIHBhZ2Vfc2l6ZSkpOwotKyAgRVhQRUNUX1RSVUUoZGF0YTEgIT0gTlVM TCk7Ci0rICBzaXplX3QgZGF0YTFfc2l6ZSA9ICgyICogcGFnZV9zaXplKTsKLSAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgZGF0YTFfc2l6ZTsgKytpKSB7Ci0gICAgIGRhdGExW2ldID0gaSAmIDB4 N2Y7Ci0gICB9Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3Jf dW5pdHRlc3QuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5j YwotaW5kZXggNDNjODYzMTRjLi4yNzMyNWI4MTMgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21t b24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21l bW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKLUBAIC01Nyw4ICs1Nyw5IEBAIFRFU1QoUGFnZUFs bG9jYXRvclRlc3QsIExhcmdlT2JqZWN0KSB7Ci0gCi0gICBFWFBFQ1RfRVEoMFUsIGFsbG9jYXRv ci5wYWdlc19hbGxvY2F0ZWQoKSk7Ci0gICB1aW50OF90ICpwID0gcmVpbnRlcnByZXRfY2FzdDx1 aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKDEwMDAwKSk7Ci0rICB1aW50NjRfdCBleHBlY3RlZF9w YWdlcyA9IDEgKyAoKDEwMDAwIC0gMSkgLyBnZXRwYWdlc2l6ZSgpKTsKLSAgIEFTU0VSVF9GQUxT RShwID09IE5VTEwpOwotLSAgRVhQRUNUX0VRKDNVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVk KCkpOwotKyAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhZ2VzLCBhbGxvY2F0b3IucGFnZXNfYWxsb2Nh dGVkKCkpOwotICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IDEwOyArK2kpIHsKLSAgICAgdWlu dDhfdCAqcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYyhpKSk7 Ci0gICAgIEFTU0VSVF9GQUxTRShwID09IE5VTEwpOwotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3By b2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBs b2l0YWJpbGl0eV9saW51eC5jYwotaW5kZXggY2NjOWYxNDU5Li5kZWJhZWQ0ZDYgMTAwNjQ0Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotQEAgLTIwMiwxMiArMjAy LDE0IEBAIGJvb2wgRXhwbG9pdGFiaWxpdHlMaW51eDo6RW5kZWRPbklsbGVnYWxXcml0ZSh1aW50 NjRfdCBpbnN0cnVjdGlvbl9wdHIpIHsKLSAgIC8vIENoZWNrIGFyY2hpdGVjdHVyZSBhbmQgc2V0 IGFyY2hpdGVjdHVyZSB2YXJpYWJsZSB0byBjb3JyZXNwb25kaW5nIGZsYWcKLSAgIC8vIGluIG9i amR1bXAuCi0gICBzd2l0Y2ggKGNvbnRleHQtPkdldENvbnRleHRDUFUoKSkgewotKyNpZiBkZWZp bmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKLSAgICAgY2FzZSBNRF9DT05URVhUX1g4 NjoKLSAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4NiI7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNh c2UgTURfQ09OVEVYVF9BTUQ2NDoKLSAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4Njp4ODYtNjQi OwotICAgICAgIGJyZWFrOwotKyNlbmRpZgotICAgICBkZWZhdWx0OgotICAgICAgIC8vIFVuc3Vw cG9ydGVkIGFyY2hpdGVjdHVyZS4gTm90ZSB0aGF0IEFSTSBhcmNoaXRlY3R1cmVzIGFyZSBub3QK LSAgICAgICAvLyBzdXBwb3J0ZWQgYmVjYXVzZSBvYmpkdW1wIGRvZXMgbm90IHN1cHBvcnQgQVJN LgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVz dC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYwotaW5k ZXggNTI4ZWU1ZjIxLi43Mjc2NGQ2YzEgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3Iv ZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBs b2l0YWJpbGl0eV91bml0dGVzdC5jYwotQEAgLTEwNCw2ICsxMDQsOCBAQCBFeHBsb2l0YWJpbGl0 eUZvcihjb25zdCBzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gfQotIAotIFRFU1QoRXhwbG9pdGFiaWxp dHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkgewotKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJl IG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYtY2xhc3MgbGludXggbWFjaGluZS4KLSsjaWYgIWRl ZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQot ICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAg ICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigiYXNjaWlfcmVhZF9hdi5kbXAiKSk7Ci0gICBBU1NF UlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAotQEAgLTEzNiw5ICsx MzgsMTIgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7Ci0g ICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoInJlYWRfYXZfY2xvYmJlcl93cml0ZS5kbXAi KSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9MT1csCi0g ICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoInJlYWRfYXZfY29uZGl0aW9uYWwuZG1wIikp OwotKyNlbmRpZgotIH0KLSAKLSBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5n aW5lKSB7Ci0rLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgb25seSBleGVjdXRhYmxlIG9uIGFu IHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5lLgotKyNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5l ZChfX3g4Nl82NCkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZ X0lOVEVSRVNUSU5HLAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9udWxs X3JlYWRfYXYuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFC SUxJVFlfSElHSCwKLUBAIC0xNzEsNyArMTc2LDggQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3Qs IFRlc3RMaW51eEVuZ2luZSkgewotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51 eF9leGVjdXRhYmxlX2hlYXAuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6 RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGlu dXhfam1wX3RvX21vZHVsZV9ub3RfZXhlX3JlZ2lvbi5kbXAiKSk7Ci0tI2lmbmRlZiBfV0lOMzIK LSsjZW5kaWYKLSsjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRl ZmluZWQoX194ODZfNjQpKQotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFC SUxJVFlfSElHSCwKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVf dG9fbm9ud3JpdGFibGVfbW9kdWxlLmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtw YWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi1AQCAtMTgyLDEwICsxODgsMTAgQEAgVEVTVChFeHBs b2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewotICAgICAgICAgICAgIEV4cGxvaXRh YmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b19vdXRzaWRlX21vZHVsZV92aWFfbWF0aC5kbXAiKSk7 Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9JTlRFUkVTVElO RywKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fdW5kZXJf NGsuZG1wIikpOwotLSNlbmRpZiAgLy8gX1dJTjMyCi0rI2VuZGlmICAvLyAhZGVmaW5lZChfV0lO MzIpICYmICghZGVmaW5lZChfX2kzODYpICYmICFkZWZpbmVkKF9feDg2XzY0KSkKLSB9Ci0gCi0t I2lmbmRlZiBfV0lOMzIKLSsjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYp IHx8IGRlZmluZWQoX194ODZfNjQpKQotIFRFU1QoRXhwbG9pdGFiaWxpdHlMaW51eFV0aWxzVGVz dCwgRGlzYXNzZW1ibGVCeXRlc1Rlc3QpIHsKLSAgIEFTU0VSVF9GQUxTRShFeHBsb2l0YWJpbGl0 eUxpbnV4VGVzdDo6RGlzYXNzZW1ibGVCeXRlcygiIiwgTlVMTCwgNSwgTlVMTCkpOwotICAgdWlu dDhfdCBieXRlc1s2XSA9IHsweGM3LCAweDAsIDB4NSwgMHgwLCAweDAsIDB4MH07Ci1AQCAtMzAx LDYgKzMwNyw3IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgQ2FsY3VsYXRl QWRkcmVzc1Rlc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZV9hZGRyZXNzKSk7Ci0gfQotLSNlbmRp ZiAgLy8gX1dJTjMyCi0rI2VuZGlmICAvLyAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9f aTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCi0rCi0gCi0gfSAgLy8gbmFtZXNwYWNlCi1kaWZm IC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2Mg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYwotaW5kZXgg OGNjMDdhNmVmLi5mNjc1NTY5MTQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9t ZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQy Y29yZS9taW5pZHVtcC0yLWNvcmUuY2MKLUBAIC03Niw2ICs3Niw4IEBACi0gICAjZGVmaW5lIEVM Rl9BUkNIICBFTV9NSVBTCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICNkZWZpbmUg RUxGX0FSQ0ggIEVNX0FBUkNINjQKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAj ZGVmaW5lIEVMRl9BUkNIICBFTV9QUEM2NAotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9fYXJt X18pCi1AQCAtODYsNiArODgsOCBAQCB0eXBlZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0 OwotICNlbGlmIGRlZmluZWQgKF9fbWlwc19fKQotIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBlZGVm IHNpbXBsaWZpZXMgdGhlIHNvdXJjZSBjb2RlLgotIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJfcmVn c19zdHJ1Y3Q7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgc3RydWN0 IHB0X3JlZ3MgdXNlcl9yZWdzX3N0cnVjdDsKLSAjZW5kaWYKLSAKLSB1c2luZyBnb29nbGVfYnJl YWtwYWQ6Ok1EVHlwZUhlbHBlcjsKLUBAIC0zMjAsNiArMzI0LDkgQEAgc3RydWN0IENyYXNoZWRQ cm9jZXNzIHsKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICAgdXNlcl9m cHNpbWRfc3RydWN0IGZwcmVnczsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotKyAgICBtY29udGV4dF90IG1jb250ZXh0OwotICNlbmRpZgotICAgICB1aW50cHRyX3Qgc3Rh Y2tfYWRkcjsKLSAgICAgY29uc3QgdWludDhfdCogc3RhY2s7Ci1AQCAtNTIzLDYgKzUzMCwzOCBA QCBQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCi0g ICB0aHJlYWQtPm1jb250ZXh0LmZwY19laXIgPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZpcjsKLSAj ZW5kaWYKLSB9Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3N0YXRpYyB2b2lkCi0r UGFyc2VUaHJlYWRSZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAotKyAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IE1pbmlkdW1wTWVtb3J5UmFuZ2UmIHJhbmdlKSB7Ci0r ICBjb25zdCBNRFJhd0NvbnRleHRQUEM2NCogcmF3cmVncyA9IHJhbmdlLkdldERhdGE8TURSYXdD b250ZXh0UFBDNjQ+KDApOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQ QzY0X0dQUl9DT1VOVDsgaSsrKQotKyAgICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbaV0gPSBy YXdyZWdzLT5ncHJbaV07Ci0rCi0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXSA9 IHJhd3JlZ3MtPmxyOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX05JUF0gPSByYXdy ZWdzLT5zcnIwOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX01TUl0gPSByYXdyZWdz LT5zcnIxOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0gPSByYXdyZWdzLT5j cjsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdID0gcmF3cmVncy0+eGVyOwot KyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0gPSByYXdyZWdzLT5jdHI7Ci0rICB0 aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJzYXZlID0gcmF3cmVncy0+dnJzYXZlOwotKwotKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkr KykKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbaV0gPSByYXdyZWdzLT5mbG9hdF9z YXZlLmZwcmVnc1tpXTsKLSsKLSsgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV0g PSByYXdyZWdzLT5mbG9hdF9zYXZlLmZwc2NyOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBN RF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykgewotKyAgICAgIHRocmVhZC0+bWNv bnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMF0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3Zy W2ldLmhpZ2ggPj4gMzI7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tp XVsxXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaDsKLSsgICAgICB0aHJl YWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzJdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUu c2F2ZV92cltpXS5sb3cgPj4gMzI7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZy cmVnc1tpXVszXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93OwotKyAgfQot KwotKyAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZzY3IudnNjcl93b3JkID0gcmF3cmVncy0+ dmVjdG9yX3NhdmUuc2F2ZV92c2NyLmxvdyAmIDB4RkZGRkZGRkY7Ci0rfQotKwotICNlbHNlCi0g I2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHll dCIKLSAjZW5kaWYKLUBAIC02MTEsNiArNjUwLDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25zdCBP cHRpb25zJiBvcHRpb25zLCBDcmFzaGVkUHJvY2VzcyogY3Jhc2hpbmZvLAotICMgZWxzZQotICMg IGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgot ICMgZW5kaWYKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAoc3lzaW5mby0+ cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSAhPSBNRF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7Ci0r ICAgIGZwcmludGYoc3RkZXJyLAotKyAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWluaWR1 bXAtMi1jb3JlIG9ubHkgc3VwcG9ydHMgUFBDNjQuXG4iKTsKLSsgICAgZXhpdCgxKTsKLSsgIH0K LSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBw bGF0Zm9ybSB5ZXQiCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVt cF9taXNjX2luZm9fd3JpdGVyLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9f d3JpdGVyLmNjCi1pbmRleCBjMWUyNDg5MmYuLmVlMThkMzMxNSAxMDA2NDQKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv bWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVt cC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCi1AQCAtMTIyLDYgKzEyMiw4IEBAIHN0ZDo6 c3RyaW5nIE1pbmlkdW1wTWlzY0luZm9EZWJ1Z0J1aWxkU3RyaW5nKCkgewotICAgc3RhdGljIGNv bnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJhcm0iOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfQVJN NjQpCi0gICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gImFybTY0IjsKLSsjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotKyAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9 ICJwcGM2NCI7Ci0gI2Vsc2UKLSAjZXJyb3IgZGVmaW5lIGtDUFUgZm9yIHRoaXMgQ1BVCi0gI2Vu ZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotaW5kZXgg ZTgxZTdiNDIwLi41MTFhNTRlNGUgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lz Y2FsbF9zdXBwb3J0LmgKLUBAIC0zOTE0LDcgKzM5MTQsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRm cyB7Ci0gICAgICAgTFNTX1JFRygyLCBidWYpOwotICAgICAgIExTU19CT0RZKHZvaWQqLCBtbWFw MiwgIjAiKF9fcjIpKTsKLSAgICAgfQotLSNlbHNlCi0rI2VsaWYgIWRlZmluZWQoX19wb3dlcnBj NjRfXykgLyogcHBjNjQgZG9lc24ndCBoYXZlIG1tYXAyICovCi0gICAgICNkZWZpbmUgX19OUl9f bW1hcDIgX19OUl9tbWFwMgotICAgICBMU1NfSU5MSU5FIF9zeXNjYWxsNih2b2lkKiwgX21tYXAy LCAgICAgICAgICAgIHZvaWQqLCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qs ICAgICAgICAgICAgICAgICAgIGwsIGludCwgICAgICAgICAgICAgICBwLAotQEAgLTQwNDUsNyAr NDA0NSw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKLSAgICNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgZGVmaW5lZChfX0FSTV9BUkNIXzNfXykgfHwgZGVmaW5lZChfX0FSTV9FQUJJX18p IHx8ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9N SVBTX1NJTSA9PSBfTUlQU19TSU1fQUJJMzIpIHx8ICAgICAgICAgICAgICAgICAgIFwKLS0gICAg ICBkZWZpbmVkKF9fUFBDX18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgICAoZGVmaW5lZChfX1BQQ19fKSAmJiAhZGVmaW5lZChf X3Bvd2VycGM2NF9fKSkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgIChkZWZpbmVkKF9fczM5MF9fKSAmJiAhZGVmaW5lZChfX3Mz OTB4X18pKQotICAgICAvKiBPbiB0aGVzZSBhcmNoaXRlY3R1cmVzLCBpbXBsZW1lbnQgbW1hcCgp IHdpdGggbW1hcDIoKS4gKi8KLSAgICAgTFNTX0lOTElORSB2b2lkKiBMU1NfTkFNRShtbWFwKSh2 b2lkICpzLCBzaXplX3QgbCwgaW50IHAsIGludCBmLCBpbnQgZCwKLWRpZmYgLS1naXQgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0 eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yLmggcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9w YXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yLmgK LWluZGV4IGFlZTI1MzI0OC4uMjVlZTQwMWU4IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvci5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9i YXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yLmgKLUBAIC0x Niw3ICsxNiw3IEBACi0gbmFtZXNwYWNlIHBkZml1bSB7Ci0gbmFtZXNwYWNlIGJhc2UgewotIAot LSNpZiBkZWZpbmVkKE9TX1dJTikKLSsjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmluZWQoQVJD SF9DUFVfUFBDNjQpCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxh cml0eVNoaWZ0ID0gMTY7ICAvLyA2NEtCCi0gI2VsaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05H U09OKQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlm dCA9IDE0OyAgLy8gMTZLQgotQEAgLTM1LDYgKzM1LDEwIEBAIHN0YXRpYyBjb25zdCBzaXplX3Qg a1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9Ci0gLy8gTG9vbmdzb24gaGF2ZSAx NjM4NCBzaXplZCBzeXN0ZW0gcGFnZXMuCi0gI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NP TikKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDE2Mzg0OwotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rLy8gVE9ETzogbW9kZXJuIHBwYzY0IGNhbiBkbyA0 ayBhbmQgNjRrIHBhZ2Ugc2l6ZXMKLSsvLyBmb3Igbm93LCA2NGsgaXMgYXNzdW1lZAotK3N0YXRp YyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDY1NTM2OwotICNlbHNlCi0gc3Rh dGljIGNvbnN0IHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA0MDk2OwotICNlbmRpZgotZGlmZiAt LWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVt L3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Bk Zml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvYy5oCi1pbmRleCA3ZTg0MTVjNzYuLjk5OGViNmUxNCAxMDA2NDQKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3Bh cnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVt L3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jLmgKLUBAIC05Nyw2ICs5Nyw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga0J1Y2tldFNo aWZ0ID0gKGtBbGxvY2F0aW9uR3JhbnVsYXJpdHkgPT0gOCkgPyAzIDogMjsKLSAvLyBhZ2FpbnN0 IHRoZSBlbmQgb2YgYSBzeXN0ZW0gcGFnZS4KLSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05H U09OKQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE2OyAgLy8g NjRLQgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rc3RhdGljIGNvbnN0IHNpemVf dCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAyNTZLQgotICNlbHNlCi0gc3RhdGljIGNv bnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTQ7ICAvLyAxNktCCi0gI2VuZGlmCi1k aWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9w ZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcGlu X2xvY2suY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Bk Zml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NwaW5f bG9jay5jYwotaW5kZXggOGQ3MTUxYThiLi41OTZjNWUxYjkgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9i YXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NwaW5fbG9jay5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFy dHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcGluX2xvY2suY2MKLUBAIC0z Nyw2ICszNyw4IEBACi0gLy8gRG9uJ3QgYm90aGVyIGRvaW5nIHVzaW5nIC53b3JkIGhlcmUgc2lu Y2UgcjIgaXMgdGhlIGxvd2VzdCBzdXBwb3J0ZWQgbWlwczY0Ci0gLy8gdGhhdCBDaHJvbWl1bSBz dXBwb3J0cy4KLSAjZGVmaW5lIFlJRUxEX1BST0NFU1NPUiBfX2FzbV9fIF9fdm9sYXRpbGVfXygi cGF1c2UiKQotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyNkZWZpbmUg WUlFTERfUFJPQ0VTU09SIF9fYXNtX18gX192b2xhdGlsZV9fKCJvciAzMSwzMSwzMSIpCi0gI2Vu ZGlmCi0gI2VuZGlmCi0gCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL2FtYWxnYW1hdGlvbi9z cWxpdGUzLmMKLWluZGV4IGM1MjgzZGQwMi4uNjcyMDY4OTczIDEwMDY0NAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9u L3NxbGl0ZTMuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYwotQEAgLTEyOTIwLDcgKzEyOTIwLDgg QEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKLSAjIGlmIGRlZmluZWQoaTM4NikgICAgIHx8 IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCi0gICAgICBk ZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0 KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAg ICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKLS0gICAgIGRlZmluZWQoX19hcm1fXykKLSsg ICAgIGRlZmluZWQoX19hcm1fXykgfHwgKGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAg ICAgKF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKSkKLSAjICAgZGVm aW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAotICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8 fCBkZWZpbmVkKF9fcHBjX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAotaW5kZXggZDEyMTQ4 ZDQyLi4zOWVmYTgwZDQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0 ZUludC5oCi1AQCAtODI1LDcgKzgyNSw4IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7Ci0g IyBpZiBkZWZpbmVkKGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQo X01fSVg4NikgfHwgICAgXAotICAgICAgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKLSAgICAgIGRlZmluZWQoX01fQU1E NjQpIHx8IGRlZmluZWQoX01fQVJNKSAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCi0t ICAgICBkZWZpbmVkKF9fYXJtX18pCi0rICAgICBkZWZpbmVkKF9fYXJtX18pIHx8IChkZWZpbmVk KF9fcG93ZXJwYzY0X18pICYmIFwKLSsgICAgIChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJ VFRMRV9FTkRJQU5fXykpCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKLSAj IGVsaWYgZGVmaW5lZChzcGFyYykgICAgfHwgZGVmaW5lZChfX3BwY19fKQotICMgICBkZWZpbmUg U1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv ZGlmZmVyX2Jsb2NrLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNjCi1pbmRl eCAzMzE1MjQ3MjMuLmYxMDM5NDA0MyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rp ZmZlcl9ibG9jay5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNjCi1A QCAtMzAsMTEgKzMwLDcgQEAgYm9vbCBWZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGlt YWdlMSwgY29uc3QgdWludDhfdCogaW1hZ2UyKSB7Ci0gICBzdGF0aWMgYm9vbCAoKmRpZmZfcHJv YykoY29uc3QgdWludDhfdCosIGNvbnN0IHVpbnQ4X3QqKSA9IG51bGxwdHI7Ci0gCi0gICBpZiAo IWRpZmZfcHJvYykgewotLSNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTV9GQU1JTFkpIHx8IGRl ZmluZWQoV0VCUlRDX0FSQ0hfTUlQU19GQU1JTFkpCi0tICAgIC8vIEZvciBBUk0gYW5kIE1JUFMg cHJvY2Vzc29ycywgYWx3YXlzIHVzZSBDIHZlcnNpb24uCi0tICAgIC8vIFRPRE8oaGNsYW0pOiBJ bXBsZW1lbnQgYSBORU9OIHZlcnNpb24uCi0tICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJl bmNlX0M7Ci0tI2Vsc2UKLSsjaWYgZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQotICAg ICBib29sIGhhdmVfc3NlMiA9IFdlYlJ0Y19HZXRDUFVJbmZvKGtTU0UyKSAhPSAwOwotICAgICAv LyBGb3IgeDg2IHByb2Nlc3NvcnMsIGNoZWNrIGlmIFNTRTIgaXMgc3VwcG9ydGVkLgotICAgICBp ZiAoaGF2ZV9zc2UyICYmIGtCbG9ja1NpemUgPT0gMzIpIHsKLUBAIC00NCw2ICs0MCwxMCBAQCBi b29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWludDhfdCogaW1hZ2UxLCBjb25zdCB1aW50OF90 KiBpbWFnZTIpIHsKLSAgICAgfSBlbHNlIHsKLSAgICAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlm ZmVyZW5jZV9DOwotICAgICB9Ci0rI2Vsc2UKLSsgICAgLy8gRm9yIG90aGVyIHByb2Nlc3NvcnMs IGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgotKyAgICAvLyBUT0RPKGhjbGFtKTogSW1wbGVtZW50IGEg TkVPTiB2ZXJzaW9uLgotKyAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlmZmVyZW5jZV9DOwotICNl bmRpZgotICAgfQotIAotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvd2VicnRjL3R5cGVkZWZzLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy90eXBlZGVmcy5oCi1pbmRleCA3MjdiZjgzZGUu LmQzYTJiYTZhNCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL3R5cGVkZWZzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3R5cGVkZWZzLmgKLUBAIC01MCw2ICs1MCwx OCBAQAotICNlbGlmIGRlZmluZWQoX19NSVBTRUJfXykKLSAjZGVmaW5lIFdFQlJUQ19BUkNIX01J UFNfRkFNSUxZCi0gI2RlZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCi0rI2VsaWYgZGVmaW5l ZChfX1BQQ19fKQotKyNkZWZpbmUgV0VCUlRDX0FSQ0hfUFBDX0ZBTUlMWQotKyNpZiBfX0JZVEVf T1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXwotKyNkZWZpbmUgV0VCUlRDX0FSQ0hf TElUVExFX0VORElBTgotKyNlbHNlCi0rI2RlZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCi0r I2VuZGlmCi0rI2lmIGRlZmluZWQoX19MUDY0X18pCi0rI2RlZmluZSBXRUJSVENfQVJDSF82NF9C SVRTCi0rI2Vsc2UKLSsjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKLSsjZW5kaWYKLSAjZWxz ZQotICNlcnJvciBQbGVhc2UgYWRkIHN1cHBvcnQgZm9yIHlvdXIgYXJjaGl0ZWN0dXJlIGluIHR5 cGVkZWZzLmgKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy93ZWJydGMuZ25pIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvd2VicnRjLmduaQotaW5kZXggZmIxZDc3 Y2FkLi4yMmZjNzY2OTcgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy93ZWJydGMuZ25pCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy93ZWJydGMuZ25pCi1AQCAtMTc3LDcg KzE3Nyw3IEBAIGRlY2xhcmVfYXJncygpIHsKLSAgIH0KLSAKLSAgIGlmICghaXNfaW9zICYmIChj dXJyZW50X2NwdSAhPSAiYXJtIiB8fCBhcm1fdmVyc2lvbiA+PSA3KSAmJgotLSAgICAgIGN1cnJl bnRfY3B1ICE9ICJtaXBzNjRlbCIgJiYgIWJ1aWxkX3dpdGhfbW96aWxsYSkgewotKyAgICAgIGN1 cnJlbnRfY3B1ICE9ICJtaXBzNjRlbCIgJiYgY3VycmVudF9jcHUgIT0gInBwYzY0IiAmJiAhYnVp bGRfd2l0aF9tb3ppbGxhKSB7Ci0gICAgIHJ0Y191c2Vfb3Blbm1heF9kbCA9IHRydWUKLSAgIH0g ZWxzZSB7Ci0gICAgIHJ0Y191c2Vfb3Blbm1heF9kbCA9IGZhbHNlCi1kaWZmIC0tZ2l0IHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbiBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdjgvQlVJTEQuZ24KLWluZGV4IDJmNDIwMmExYi4uY2NlMzM5Yjg4 IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5n bgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgotQEAg LTQ1MCw2ICs0NTAsMTIgQEAgY29uZmlnKCJ0b29sY2hhaW4iKSB7Ci0gICAgIH0KLSAgICAgaWYg KGhvc3RfYnl0ZW9yZGVyID09ICJsaXR0bGUiKSB7Ci0gICAgICAgZGVmaW5lcyArPSBbICJWOF9U QVJHRVRfQVJDSF9QUENfTEUiIF0KLSsgICAgICAgIGNmbGFncyArPSBbCi0rICAgICAgICAjIEVu YWJsZSB1c2FnZSBvZiBBbHRpVmVjLCBWU1gsIGFuZCBvdGhlciBQT1dFUjggYW5kIGhpZ2hlciBm ZWF0dXJlcwotKyAgICAgICAgIi1tY3B1PXBvd2VyOCIsCi0rICAgICAgICAiLW1hbHRpdmVjIiwK LSsgICAgICAgICItbXZzeCIsCi0rICAgICAgXQotICAgICB9IGVsc2UgaWYgKGhvc3RfYnl0ZW9y ZGVyID09ICJiaWciKSB7Ci0gICAgICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENf QkUiIF0KLSAgICAgICBpZiAoY3VycmVudF9vcyA9PSAiYWl4IikgewotZGlmZiAtLWdpdCBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2J1aWx0aW5zL3BwYy9idWlsdGlu cy1wcGMuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9idWlsdGlu cy9wcGMvYnVpbHRpbnMtcHBjLmNjCi1pbmRleCAzNGRhNzBmZjAuLmE4N2FjMTk2YSAxMDA2NDQK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2J1aWx0aW5zL3Bw Yy9idWlsdGlucy1wcGMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v djgvc3JjL2J1aWx0aW5zL3BwYy9idWlsdGlucy1wcGMuY2MKLUBAIC02LDYgKzYsNyBAQAotIAot ICNpbmNsdWRlICJzcmMvYXNzZW1ibGVyLWlubC5oIgotICNpbmNsdWRlICJzcmMvY29kZS1zdHVi cy5oIgotKyNpbmNsdWRlICJzcmMvY291bnRlcnMuaCIKLSAjaW5jbHVkZSAic3JjL2RlYnVnL2Rl YnVnLmgiCi0gI2luY2x1ZGUgInNyYy9kZW9wdGltaXplci5oIgotICNpbmNsdWRlICJzcmMvZnJh bWUtY29uc3RhbnRzLmgiCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS92OC9zcmMvYnVpbHRpbnMvczM5MC9idWlsdGlucy1zMzkwLmNjIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYnVpbHRpbnMvczM5MC9idWlsdGlucy1zMzkwLmNj Ci1pbmRleCAwMjBiMDRiOTEuLjVhYzdlNTY1OSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2J1aWx0aW5zL3MzOTAvYnVpbHRpbnMtczM5MC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYnVpbHRpbnMvczM5 MC9idWlsdGlucy1zMzkwLmNjCi1AQCAtNiw2ICs2LDcgQEAKLSAKLSAjaW5jbHVkZSAic3JjL2Fz c2VtYmxlci1pbmwuaCIKLSAjaW5jbHVkZSAic3JjL2NvZGUtc3R1YnMuaCIKLSsjaW5jbHVkZSAi c3JjL2NvdW50ZXJzLmgiCi0gI2luY2x1ZGUgInNyYy9kZWJ1Zy9kZWJ1Zy5oIgotICNpbmNsdWRl ICJzcmMvZGVvcHRpbWl6ZXIuaCIKLSAjaW5jbHVkZSAic3JjL2ZyYW1lLWNvbnN0YW50cy5oIgot ZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3BwYy9t YWNyby1hc3NlbWJsZXItcHBjLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92 OC9zcmMvcHBjL21hY3JvLWFzc2VtYmxlci1wcGMuY2MKLWluZGV4IDhkN2MzZDA1Yi4uYmU4MzIy OWE4IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMv cHBjL21hY3JvLWFzc2VtYmxlci1wcGMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdjgvc3JjL3BwYy9tYWNyby1hc3NlbWJsZXItcHBjLmNjCi1AQCAtMTIsNiArMTIs NyBAQAotICNpbmNsdWRlICJzcmMvYm9vdHN0cmFwcGVyLmgiCi0gI2luY2x1ZGUgInNyYy9jYWxs YWJsZS5oIgotICNpbmNsdWRlICJzcmMvY29kZS1zdHVicy5oIgotKyNpbmNsdWRlICJzcmMvY291 bnRlcnMuaCIKLSAjaW5jbHVkZSAic3JjL2RlYnVnL2RlYnVnLmgiCi0gI2luY2x1ZGUgInNyYy9l eHRlcm5hbC1yZWZlcmVuY2UtdGFibGUuaCIKLSAjaW5jbHVkZSAic3JjL2ZyYW1lcy1pbmwuaCIK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9zMzkw L21hY3JvLWFzc2VtYmxlci1zMzkwLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS92OC9zcmMvczM5MC9tYWNyby1hc3NlbWJsZXItczM5MC5jYwotaW5kZXggZmUyNDg4NDM3Li5k ZWNiYmI0M2EgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4 L3NyYy9zMzkwL21hY3JvLWFzc2VtYmxlci1zMzkwLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9zMzkwL21hY3JvLWFzc2VtYmxlci1zMzkwLmNjCi1AQCAt MTIsNiArMTIsNyBAQAotICNpbmNsdWRlICJzcmMvYm9vdHN0cmFwcGVyLmgiCi0gI2luY2x1ZGUg InNyYy9jYWxsYWJsZS5oIgotICNpbmNsdWRlICJzcmMvY29kZS1zdHVicy5oIgotKyNpbmNsdWRl ICJzcmMvY291bnRlcnMuaCIKLSAjaW5jbHVkZSAic3JjL2RlYnVnL2RlYnVnLmgiCi0gI2luY2x1 ZGUgInNyYy9leHRlcm5hbC1yZWZlcmVuY2UtdGFibGUuaCIKLSAjaW5jbHVkZSAic3JjL2ZyYW1l cy1pbmwuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXR3ZWJlbmdpbmUtZW5h YmxlLXBwYzY0LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdHdlYmVuZ2luZS1lbmFibGUt cHBjNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTY0NTYxMzlmLi4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0d2ViZW5naW5lLWVuYWJsZS1w cGM2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVRoaXMgYWRkcyB0aGUg bmVjZXNzYXJ5IGJpdHMgdG8gbWFrZSBxdCBhdHRlbXB0IGJ1aWxkaW5nIHdlYmVuZ2luZSBvbiBw cGM2NC4KLVNpbmNlIHRoZSBwYXRjaCBpcyBvbmx5IHN1ZmZpY2llbnQgZm9yIHBwYzY0bGUsIGtl ZXAgaXQgY29tbWVudGVkIG91dCBhbmQKLWxldCB0aGUgcGFja2FnaW5nIHRlbXBsYXRlIHJlbW92 ZSB0aGUgY29tbWVudCBsYXRlciwgYXMgdGhlcmUgaXMgbm8gZ29vZAotd2F5IHRvIGNoZWNrIGVu ZGlhbm5lc3MgZGlyZWN0bHkgaW4gdGhlIGZpbGUuCi0KLVdlIGFsc28gaGF2ZSB0byBkaXNhYmxl IGp1bWJvIGJ1aWxkIGZvciB0aGUgdGltZSBiZWluZyBiZWNhdXNlIGl0IHJlc3VsdHMKLWluIGJ1 aWxkIGZhaWx1cmVzIG90aGVyd2lzZSwgbW9zdCBsaWtlbHkgYmVjYXVzZSBvZiBjb21waWxlciBt aXNjb21waWxpbmcKLXRoZSBjb2RlLgotLS0tIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMv ZnVuY3Rpb25zLnByZgotKysrIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25z LnByZgotQEAgLTk1LDYgKzk1LDcgQEAKLSAgICAgY29udGFpbnMocXRBcmNoLCAiYXJtNjQiKTog cmV0dXJuKGFybTY0KQotICAgICBjb250YWlucyhxdEFyY2gsICJtaXBzIik6IHJldHVybihtaXBz ZWwpCi0gICAgIGNvbnRhaW5zKHF0QXJjaCwgIm1pcHM2NCIpOiByZXR1cm4obWlwczY0ZWwpCi0r ICAgIGNvbnRhaW5zKHF0QXJjaCwgInBvd2VyNjQiKTogcmV0dXJuKHBwYzY0KQotICAgICByZXR1 cm4odW5rbm93bikKLSB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9wbGF0 Zm9ybS5wcmYKLSsrKyBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3BsYXRmb3JtLnByZgot QEAgLTgyLDYgKzgyLDcgQEAKLSAgICAgY29udGFpbnMoUVRfQVJDSCwgImFybSIpfGNvbnRhaW5z KFFUX0FSQ0gsICJhcm02NCIpOiByZXR1cm4odHJ1ZSkKLSAgICAgY29udGFpbnMoUVRfQVJDSCwg Im1pcHMiKTogcmV0dXJuKHRydWUpCi0gIyAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHM2NCIp OiByZXR1cm4odHJ1ZSkKLSsjcHBjNjRsZSAgICBjb250YWlucyhRVF9BUkNILCAicG93ZXI2NCIp OiByZXR1cm4odHJ1ZSkKLSAKLSAgICAgc2tpcEJ1aWxkKCJRdFdlYkVuZ2luZSBjYW4gb25seSBi ZSBidWlsdCBmb3IgeDg2LCB4ODYtNjQsIEFSTSwgQWFyY2g2NCwgYW5kIE1JUFNlbCBhcmNoaXRl Y3R1cmVzLiIpCi0gICAgIHJldHVybihmYWxzZSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvY29yZS9j b25maWcvbGludXgucHJpCi0rKysgcXR3ZWJlbmdpbmUvc3JjL2NvcmUvY29uZmlnL2xpbnV4LnBy aQotQEAgLTkwLDYgKzkwLDEwIEBACi0gICAgIGVsc2U6IGNvbnRhaW5zKFFNQUtFX0NGTEFHUywg Ii1tZHNwIik6IGduX2FyZ3MgKz0gbWlwc19kc3BfcmV2PTEKLSB9Ci0gCi0rY29udGFpbnMoUVRf QVJDSCwgInBvd2VyNjQiKSB7Ci0rICAgIGduX2FyZ3MgKz0gdXNlX2p1bWJvX2J1aWxkPWZhbHNl Ci0rfQotKwotIGhvc3RfYnVpbGQgewotICAgICBnbl9hcmdzICs9IGN1c3RvbV90b29sY2hhaW49 XCIkJFFUV0VCRU5HSU5FX09VVF9ST09UL3NyYy90b29sY2hhaW46aG9zdFwiCi0gICAgIEdOX0hP U1RfQ1BVID0gJCRnbkFyY2goJCRRVF9BUkNIKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVt cGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCA4ZDE3MDUzNWU4OS4uNTY1ZDdmNTk1 NDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1JwogcGtnbmFt ZT1xdDUKLXZlcnNpb249NS4xMS4zCi1yZXZpc2lvbj04Cit2ZXJzaW9uPTUuMTMuMAorcmV2aXNp b249MQogd3Jrc3JjPSJxdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IGdpdCBnbGli LWRldmVsIGdwZXJmIG5pbmphIHBrZy1jb25maWcKQEAgLTEwLDMyICsxMCw0NiBAQCBtYWtlZGVw ZW5kcz0iU0RMMi1kZXZlbCBWdWxrYW4tSGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29u dmVyc2lvbi1kZXZlbAogIGV1ZGV2LWxpYnVkZXYtZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWV0ZHMt ZGV2ZWwgZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbAogIGd0ayszLWRldmVsIGlj dS1kZXZlbCBqc29uY3BwLWRldmVsIGxpYlh2LWRldmVsIGxpYmJsdWV0b290aC1kZXZlbCBsaWJj YXAtZGV2ZWwKICBsaWJldmVudC1kZXZlbCBsaWJpbnB1dC1kZXZlbCBsaWJtbmctZGV2ZWwgbGli bXlzcWxjbGllbnQtZGV2ZWwgbGlicHJveHktZGV2ZWwKLSBsaWJ2cHg1LWRldmVsIGxpYndlYnAt ZGV2ZWwgbGlieHNsdC1kZXZlbCBtaW5pemlwLWRldmVsIG5zcy1kZXZlbAorIGxpYnZweC1kZXZl bCBsaWJ3ZWJwLWRldmVsIGxpYnhzbHQtZGV2ZWwgbWluaXppcC1kZXZlbCBuc3MtZGV2ZWwgY3Vw cy1kZXZlbAogIG9wdXMtZGV2ZWwgcGNpdXRpbHMtZGV2ZWwgcGNyZTItZGV2ZWwgcG9zdGdyZXNx bC1saWJzLWRldmVsCiAgcHJvdG9idWYtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCBzbmFwcHktZGV2 ZWwgdHNsaWItZGV2ZWwKICB1bml4b2RiYy1kZXZlbCB4Y2ItdXRpbC1pbWFnZS1kZXZlbCB4Y2It dXRpbC1rZXlzeW1zLWRldmVsCi0geGNiLXV0aWwtcmVuZGVydXRpbC1kZXZlbCB4Y2ItdXRpbC13 bS1kZXZlbCIKKyB4Y2ItdXRpbC1yZW5kZXJ1dGlsLWRldmVsIHhjYi11dGlsLXdtLWRldmVsIGxp YnpzdGQtZGV2ZWwiCiBkZXBlbmRzPSJxdGNob29zZXIiCiBzaG9ydF9kZXNjPSJDcm9zcy1wbGF0 Zm9ybSBhcHBsaWNhdGlvbiBhbmQgVUkgZnJhbWV3b3JrIChRVDUpIgogbWFpbnRhaW5lcj0iSsO8 cmdlbiBCdWNobcO8bGxlciA8cHVsbG1vbGxAdC1vbmxpbmUuZGU+IgotbGljZW5zZT0iR1BMLTMu MC1vci1sYXRlciwgTEdQTC0yLjEtb3ItbGF0ZXIiCitsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy LCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKIGRpc3RmaWxl cz0iaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL3F0LyR7dmVyc2lvbiUu Kn0vJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoi Ci1jaGVja3N1bT04NTk0MTc2NDI3MTNjZWUyNDkzZWUzNjQ2YTdmZWU3ODJjOWYxZGIzOWU0MWQ3 YmIxMzIyYmJhMGM1ZjBmZjRkCitjaGVja3N1bT0yY2JhMzFlNDEwZTE2OWJkNWNkYWUxNTlmODM5 NjQwZTY3MjUzMmE0Njg3ZWEwZjI2NWY2ODY0MjFlMGU4NmQ2CiByZXBsYWNlcz0icXQ1LWRvYzw1 LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1 LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCi0gcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2lu aW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEiCisgcXQ1LWVuZ2luaW88NS43LjEg cXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNk PDUuMTMuMCIKIAogYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRpb25fd2ViZW5n aW5lPSJCdWlsZCBDaHJvbWl1bS1iYXNlZCBXZWJFbmdpbmUgY29tcG9uZW50IgogCiBjYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQl4ODZfNjQqfGk2ODYqfHBwYzY0bGUqKSBidWlsZF9v cHRpb25zX2RlZmF1bHQ9IndlYmVuZ2luZSI7OworCXg4Nl82NCp8aTY4Nip8cHBjNjQqKSBidWls ZF9vcHRpb25zX2RlZmF1bHQ9IndlYmVuZ2luZSI7OwogCWFybXY1dGVsKikgOzsgIyBxdHdlYmVu Z2luZSB1c2VzIFZTTSBhc3NlbWJsZXIgY29tbWFuZHMKLQlhcm0qfGFhcmNoNjQqKSBidWlsZF9v cHRpb25zX2RlZmF1bHQ9IndlYmVuZ2luZSI7OworCWFhcmNoNjQqKSBidWlsZF9vcHRpb25zX2Rl ZmF1bHQ9IndlYmVuZ2luZSI7OworCWFybSopIDs7ICMgcXR3ZWJlbmdpbmUgcmVxdWlyZXMgYSAz MmJpdCBob3N0IHRvb2xjaGFpbiBodHRwOi8vc3BydW5nZS51cy9yYlJ5V1EKIAkqKSA7OyAjIGFz c3VtZSBubyB3ZWJlbmdpbmUKIGVzYWMKIAotc3VicGFja2FnZXM9InF0NS0zZCBxdDUtM2QtZGV2 ZWwgcXQ1LWNhbnZhczNkIHF0NS1jaGFydHMgcXQ1LWNoYXJ0cy1kZXZlbAoraWYgWyAiJGJ1aWxk X29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KKwkjIHY4IHJlcXVpcmVzIGxpYmF0b21pYyBvbiBw cGMqL3MzOTB4L21pcHMqCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCW1pcHMq fHBwYyopIG1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIgOzsKKwkJKikgOzsKKwllc2Fj CisJIyBhbHNvIG5lZWQgaXQgb24gaG9zdCB3aGVuIGl0J3Mgb25lIG9mIHRob3NlIGFyY2hzCisJ Y2FzZSAiJFhCUFNfTUFDSElORSIgaW4KKwkJbWlwcyp8cHBjKikgaG9zdG1ha2VkZXBlbmRzKz0i IGxpYmF0b21pYy1kZXZlbCIgOzsKKwkJKikgOzsKKwllc2FjCitmaQorCitzdWJwYWNrYWdlcz0i cXQ1LTNkIHF0NS0zZC1kZXZlbCBxdDUtY2hhcnRzIHF0NS1jaGFydHMtZGV2ZWwKICBxdDUtY29u bmVjdGl2aXR5IHF0NS1jb25uZWN0aXZpdHktZGV2ZWwgcXQ1LWRhdGF2aXMzZCBxdDUtZGF0YXZp czNkLWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtZGV2 ZWwgcXQ1LWV4YW1wbGVzIHF0NS1nYW1lcGFkCiAgcXQ1LWdhbWVwYWQtZGV2ZWwgcXQ1LWdyYXBo aWNhbGVmZmVjdHMgcXQ1LWhvc3QtdG9vbHMgcXQ1LWltYWdlZm9ybWF0cwpAQCAtNTEsNyArNjUs OCBAQCBzdWJwYWNrYWdlcz0icXQ1LTNkIHF0NS0zZC1kZXZlbCBxdDUtY2FudmFzM2QgcXQ1LWNo YXJ0cyBxdDUtY2hhcnRzLWRldmVsCiAgcXQ1LXZpcnR1YWxrZXlib2FyZC1kZXZlbCBxdDUtd2F5 bGFuZCBxdDUtd2F5bGFuZC1kZXZlbCBxdDUtd2ViY2hhbm5lbAogIHF0NS13ZWJjaGFubmVsLWRl dmVsIHF0NS13ZWJnbHBsdWdpbiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWwgcXQ1LXdlYnNvY2tldHMK ICBxdDUtd2Vic29ja2V0cy1kZXZlbCBxdDUtd2VidmlldyBxdDUtd2Vidmlldy1kZXZlbCBxdDUt eDExZXh0cmFzCi0gcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1scGF0dGVybnMgcXQ1LXhtbHBh dHRlcm5zLWRldmVsIgorIHF0NS14MTFleHRyYXMtZGV2ZWwgcXQ1LXhtbHBhdHRlcm5zIHF0NS14 bWxwYXR0ZXJucy1kZXZlbAorIHF0NS1sb3R0aWUgcXQ1LWxvdHRpZS1kZXZlbCIKIAogaWYgWyAi JGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KIAlzdWJwYWNrYWdlcys9IiBxdDUtd2Vi ZW5naW5lIHF0NS13ZWJlbmdpbmUtZGV2ZWwiCkBAIC02MCw2ICs3NSw3IEBAIGZpCiBpZiBbICIk e1hCUFNfTUFDSElORSUlLW11c2x9IiA9IGk2ODYgXTsgdGhlbgogCW5vZGVidWc9eWVzICAjIHBy ZXZlbnQgT09NCiBmaQorCiAjIFdvcmsgYXJvdW5kIFNTTHYzX3tjbGllbnQsc2VydmVyfV9tZXRo b2QgbWlzc2luZyBpbiBsaWJyZXNzbC0yLjMuMwogQ0ZMQUdTPSItRE9QRU5TU0xfTk9fUFNLIC1E T1BFTlNTTF9OT19ORVhUUFJPVE9ORUciCiBDWFhGTEFHUz0iJHtDRkxBR1N9IC1Xbm8tZGVwcmVj YXRlZC1kZWNsYXJhdGlvbnMgLVduby1jbGFzcy1tZW1hY2Nlc3MgLVduby1wYWNrZWQtbm90LWFs aWduZWQiCkBAIC03MCw2ICs4Niw3IEBAIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCSMg TmVlZCBzb21lIGRldmVsIHBhY2thZ2VzIGluIHRoZSBob3N0IHRvIGJ1aWxkIHFtYWtlLCBtb2Ms IHVpYywgcmNjCiAJIyB3YXlsYW5kLWRldmVsIGNvbnRhaW5zIC91c3IvYmluL3dheWxhbmQtc2Nh bm5lcgogCWhvc3RtYWtlZGVwZW5kcys9IiBpY3UtZGV2ZWwgd2F5bGFuZC1kZXZlbCB6bGliLWRl dmVsIgorCWhvc3RtYWtlZGVwZW5kcys9IiBwb3N0Z3Jlc3FsLWxpYnMtZGV2ZWwiCiAJIyBDcm9z cyBidWlsZGluZyBxdHdlYmVuZ2luZSByZXF1aXJlcyBzb21lIG1vcmUgaG9zdCBwYWNrYWdlcwog CWlmIFsgIiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCiAJCWhvc3RtYWtlZGVwZW5k cys9IiBuc3MtZGV2ZWwgbGliZXZlbnQtZGV2ZWwiCkBAIC03OCw0OCArOTUsMTggQEAgZmkKIAog X2Jvb3RzdHJhcF9nbigpIHsKIAkjIEJvb3RzdHJhcCBnbiAoZ2VuZXJhdGUgbmluamEpCi0JX21z Z19jcm9zcyAiQm9vdHN0cmFwcGluZyAnZ24nIgotCWNkICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdG9vbHMvZ24KLQljb25mPSdpc19jbGFuZz1mYWxzZScKLQlj b25mKz0nIHRyZWF0X3dhcm5pbmdzX2FzX2Vycm9ycz1mYWxzZScKLQljb25mKz0nIGVuYWJsZV9y ZW1vdGluZz1mYWxzZScKLQljb25mKz0nIGVuYWJsZV9uYWNsPWZhbHNlJwotCWNvbmYrPScgdXNl X2N1cHM9ZmFsc2UnCi0JY29uZis9JyB1c2VfZ2NvbmY9ZmFsc2UnCi0JY29uZis9JyB1c2VfZ2lv PWZhbHNlJwotCWNvbmYrPScgdXNlX2dub21lX2tleXJpbmc9ZmFsc2UnCi0JY29uZis9JyB1c2Vf Z3RrPWZhbHNlJwotCWNvbmYrPScgdXNlX2tlcmJlcm9zPWZhbHNlJwotCWNvbmYrPScgbGludXhf dXNlX2J1bmRsZWRfYmludXRpbHM9ZmFsc2UnCi0JY29uZis9JyBiaW51dGlsc19wYXRoPSIvdXNy L2JpbiInCi0JY29uZis9JyB1c2VfZ29sZD1mYWxzZScKLQljb25mKz0nIHVzZV9zeXNyb290PWZh bHNlJwotCWNvbmYrPScgdXNlX2FsbG9jYXRvcj0ibm9uZSInCi0JY29uZis9JyBpc19hbmRyb2lk PWZhbHNlJwotCi0Jc2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcv bGludXgucHJpIFwKLQkJLWUgIi9lcXVhbHMoTUFSTVYvczt0cnVlO2ZhbHNlOyIKLQljYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJYXJtdls1Nl0qKSBjb25mKz0nIGFybV91c2VfbmVv bj1mYWxzZSBhcm1fb3B0aW9uYWxseV91c2VfbmVvbj1mYWxzZSc7OwotCQlhcm12NyopICAgIGNv bmYrPScgYXJtX3VzZV9uZW9uPXRydWUgYXJtX29wdGlvbmFsbHlfdXNlX25lb249ZmFsc2UnOzsK LQkJYWFyY2g2NCopICBjb25mKz0nIGFybV91c2VfbmVvbj10cnVlIGFybV9vcHRpb25hbGx5X3Vz ZV9uZW9uPWZhbHNlJzs7Ci0JZXNhYwotCi0JQVI9IiRBUl9ob3N0IiBDQz0iJENDX2hvc3QiIENY WD0iJENYWF9ob3N0IiBMRD0iJENYWF9ob3N0IiBcCisJZWNobyAiQm9vdHN0cmFwcGluZyAnZ24n IgorCWNkICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvZ24KIAlDRkxBR1M9IiRD RkxBR1NfaG9zdCIgQ1hYRkxBR1M9IiRDWFhGTEFHU19ob3N0IiBMREZMQUdTPSIkTERGTEFHU19o b3N0IiBcCiAJUEtHQ09ORklHPS91c3IvYmluL3BrZ2NvbmZpZyBQS0dfQ09ORklHX1BBVEg9Ii91 c3IvbGliL3BrZ2NvbmZpZzovdXNyL3NoYXJlL3BrZ2NvbmZpZyIgXAotCQlweXRob24yIGJvb3Rz dHJhcC9ib290c3RyYXAucHkgLW4gLS1nbi1nZW4tYXJncyAiJHtjb25mfSIKKwkJcHl0aG9uMiBi dWlsZC9nZW4ucHkgLS1uby1sYXN0LWNvbW1pdC1wb3NpdGlvbiAtLW91dC1wYXRoIFwKKwkJCSR7 d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvZ24vb3V0L1JlbGVhc2UgLS1jYyAiJEND X2hvc3QiIFwKKwkJCS0tY3h4ICIkQ1hYX2hvc3QiIC0tbGQgIiRDWFhfaG9zdCIgLS1hciAiJEFS X2hvc3QiCisJbmluamEgLUMgb3V0L1JlbGVhc2UgZ24KIAljZCAke3dya3NyY30KLQotCW1rZGly IC1wICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdG9vbHMvZ24v b3V0L1JlbGVhc2UKLQljcCAtcCAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL291dC9SZWxlYXNlL2duIFwKLQkJJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90b29scy9nbi9vdXQvUmVsZWFzZS8KLQotCSMgUmVtb3ZlIGduIGZyb20g U1VCRElSUyBmb3IgcXR3ZWJlbmdpbmUvc3JjL2J1aWxkdG9vbHMKLQlzZWQgLWkgJHt3cmtzcmN9 L3F0d2ViZW5naW5lL3NyYy9idWlsZHRvb2xzL2J1aWxkdG9vbHMucHJvIFwKLQkJLWUiL2duLmZp bGUgPSBnbi5wcm8vLCszZCIKIH0KIAorCiBfY2xlYW51cF93cmtzcmNfbGVhaygpIHsKIAlpZiBb IC1kICIke1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2UiIF07IHRoZW4KIAkJIyBSZXBsYWNlIHJl ZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIGNtYWtlIGZpbGVzCkBAIC0xMzcsNyArMTI0LDEwIEBA IF9jbGVhbnVwX3dya3NyY19sZWFrKCkgewogCSMgYW5kIHJlcGxhY2UgcmVmZXJlbmNlcyB0byAk e3dya3NyY30KIAlmaW5kICR7UEtHREVTVERJUn0gLWluYW1lICIqLnBybCIgLWV4ZWMgc2VkIC1p ICJ7fSIgXAogCQktZSAiL15RTUFLRV9QUkxfQlVJTERfRElSL2QiIFwKLQkJLWUgInM7LUwke3dy a3NyY30vcXRiYXNlL2xpYjstTC91c3IvbGliO2ciIFw7CisJCS1lICJzOy1MJHt3cmtzcmN9L3F0 YmFzZS9saWI7LUwvdXNyL2xpYjtnIiBcCisJCS1lICJzJS91c3IvbGliL2xpYlwoW15bOnNwYWNl Ol1dKlwpXC5bc2FdW29dKiUtbFwxJWciIFw7CisJZmluZCAke1BLR0RFU1RESVJ9IC1pbmFtZSAi Ki5wcmkiIC1leGVjIHNlZCAtaSAie30iIFwKKwkJLWUgInMlL3Vzci9saWIvbGliXChbXls6c3Bh Y2U6XV0qXClcLltzYV1bb10qJS1sXDElZyIgXDsKIAkjIFJlcGxhY2UgJHt3cmtzcmN9IGluIHBy b2plY3QgaW5jbHVkZSBmaWxlcwogCWZpbmQgJHtQS0dERVNURElSfSAtaW5hbWUgIioucHJpIiAt ZXhlYyBzZWQgLWkgInt9IiBcCiAJCS1lICJzOyR7d3Jrc3JjfS9xdGJhc2U7L3Vzci9saWIvcXQ1 O2ciIFw7CkBAIC0yNTMsOSArMjQzLDYgQEAgZG9fY29uZmlndXJlKCkgewogCQkJcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9i YXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NwaW5fbG9jay5jYyBcCiAJCQktZSAn czsieWllbGQiOyJub3AiOycKIAkJOzsKLQlwcGM2NGxlKikgIyBlbmFibGUgd2ViZW5naW5lIGJ1 dCBub3Qgb24gQkUgcHBjNjQgZm9yIG5vdwotCQlzZWQgLWkgcXR3ZWJlbmdpbmUvbWtzcGVjcy9m ZWF0dXJlcy9wbGF0Zm9ybS5wcmYgLWUgJ3M7I3BwYzY0bGU7OycKLQkJOzsKIAllc2FjCiAKIAlj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KQEAgLTI4NSw4ICsyNzIsNyBAQCBkb19jb25m aWd1cmUoKSB7CiAJCWZvciBkIGluICQobHMgJHt3cmtzcmN9L3F0YmFzZS9pbmNsdWRlKTsgZG8K IAkJCWxuIC1zZnYgJHt2ZXJzaW9ufS8ke2R9L3ByaXZhdGUgcXRiYXNlL2luY2x1ZGUvJHtkfS9w cml2YXRlCiAJCWRvbmUKLQotCQlpZiBbICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhl bgoraWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KIAkJCV9ib290c3RyYXBf Z24KIAkJZmkKIApAQCAtMzA3LDYgKzI5Myw3IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJCQktZSAn LyNlcnJvciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMgbG9jYXRpb24vZCcKIAkJCTs7CiAJCWVz YWMKKwkJcGF0Y2ggLU5wMCA8ICR7RklMRVNESVJ9LzAwOTAtaGFyZC1kaXNhYmxlLXFtbGNoYWNo ZWdlbi5wYXRjaAogCWVsc2UKIAkJIyBxbWFrZSB7Q1hYLEx9RkxBR1MgcGF0Y2hlcwogCQlzZWQg LWkgLWUgInN8XlwoQ1hYRkxBR1MgPS4qXCl8XDEgJHtDWFhGTEFHU318IiBcCkBAIC0zMzksNiAr MzI2LDEwIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAlvcHRzKz0iIC1pY3UiCiAJb3B0cys9IiAtb3Bl bnNzbC1saW5rZWQiCiAJb3B0cys9IiAtZGJ1cy1saW5rZWQiCisJb3B0cys9IiAtc3FsLW15c3Fs IgorCW9wdHMrPSIgLW15c3FsX2NvbmZpZyAke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2Jpbi9teXNx bF9jb25maWciCisJb3B0cys9IiAtc3FsLXBzcWwiCisJb3B0cys9IiAtcHNxbF9jb25maWcgL3Vz ci9iaW4vcGdfY29uZmlnIgogCW9wdHMrPSIgLW5vLXBjaCIKIAlvcHRzKz0iIC1uby1zdHJpcCIK IAlvcHRzKz0iIC1ub21ha2UgZXhhbXBsZXMiCkBAIC0zNjksMTIgKzM2MCwxMCBAQCBkb19jb25m aWd1cmUoKSB7CiAJZmkKIAlvcHRzKz0iIC1zaWxlbnQiCiAJIyBvcHRzKz0iIC12IgotCiAJIyBt YWtlIHN1cmUgdG8gZGlzYWJsZSB3ZWJlbmdpbmUgb24gcGxhdGZvcm1zIHRoYXQgd2UgZG9uJ3Qg YnVpbGQgaXQgZm9yCiAJaWYgWyAteiAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4K IAkJb3B0cys9IiAtc2tpcCBxdHdlYmVuZ2luZSIKIAlmaQotCiAJTERGTEFHUys9IiAtV2wsLS1u by1rZWVwLW1lbW9yeSIgICMgbmVlZHMgbW9yZSB0aGFuIDhHQiBSQU0gZWxzZQogCWlmIFsgIiRD Uk9TU19CVUlMRCIgXTsgdGhlbgogCQlzcGVjPXZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcr KwpAQCAtMzkyLDYgKzM4MSwxOSBAQCBkb19jb25maWd1cmUoKSB7CiAJCQlmaQogCQkJOzsKIAkJ ZXNhYworCQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJYWFyY2g2NCp8YXJtdjcq KQorCQkJc2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcvbGludXgu cHJpIFwKKwkJCQktZSAiL2FybV91c2VfbmVvbj0vcztmYWxzZTt0cnVlOyIKKwkJCTs7CisJCWFy bSopCisJCQlzZWQgLWkgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2NvbmZpZy9saW51 eC5wcmkgXAorCQkJCS1lICIvYXJtX3VzZV9uZW9uPS9zO3RydWU7ZmFsc2U7IgorCisJCQk7Owor CQllc2FjCisJCXNlZCAtaSAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjL2NvcmUvY29uZmlnL2xp bnV4LnByaSBcCisJCQktZSAiL2VxdWFscyhNQVJNVi9zO3RydWU7ZmFsc2U7IgogCiAJCSMgTWFr ZSBzdXJlIGxpYlF0NURlc2lnbmVyIGlzIGJ1aWx0CiAJCWNwIC12ICR7RklMRVNESVJ9L3F0dG9v bHNfc3JjLnBybyBxdHRvb2xzL3NyYy9zcmMucHJvCkBAIC00MjUsNyArNDI3LDYgQEAgZG9faW5z dGFsbCgpIHsKIAljZCAke3dya3NyY30vcXRiYXNlCiAJbWFrZSBJTlNUQUxMX1JPT1Q9JHtERVNU RElSfSBpbnN0YWxsCiAKLQl2bGljZW5zZSAke3dya3NyY30vTEdQTF9FWENFUFRJT04udHh0CiAJ X2NsZWFudXBfd3Jrc3JjX2xlYWsKIAogCSMgU3ltYm9saWMgbGlua3MgZm9yIHJlbWFpbmluZyBi aW5hcmllcwpAQCAtNTQ3LDYgKzU0OCw3IEBAIGRvX2luc3RhbGwoKSB7CiAJCQlbIC1mICIke2Jh c2V9LnByby5vcmlnIiBdICYmIG12IC12ICR7YmFzZX0ucHJvey5vcmlnLH0KIAkJCVsgLWYgTWFr ZWZpbGUub3JpZyBdICYmIG12IC12IE1ha2VmaWxley5vcmlnLH0KIAkJCSMgQXZvaWQgcmVidWls ZGluZyB0aGUgTWFrZWZpbGUgYnkgY2hhbmdpbmcgdGhlIHJ1bGUKKwkJCXNlZCAtaSBNYWtlZmls ZSAtZSAnczteYWxsOi4qO2FsbDo7JwogCQkJc2VkIC1pIE1ha2VmaWxlIC1lICJzO15NYWtlZmls ZTo7TWFrZWZpbGUuaG9zdDo7IgogCQkJaWYgWyAteCAiJHt3cmtzcmN9LyR7ZGlyfS9iaW4vJHti YXNlfS1ob3N0IiBdOyB0aGVuCiAJCQkJbXYgLXYgJHt3cmtzcmN9LyR7ZGlyfS9iaW4vJHtiYXNl fXstaG9zdCx9CkBAIC01NzQsMTMgKzU3Niw2IEBAIHF0NS0zZF9wYWNrYWdlKCkgewogCX0KIH0K IAotcXQ1LWNhbnZhczNkX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENhbnZhcyAzRCBj b21wb25lbnQiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCV9pbnN0YWxsX3N1YnBrZyBxdGNhbnZhczNk Ci0JfQotfQotCiBxdDUtY2hhcnRzLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAt IENoYXJ0cyBjb21wb25lbnQgKGRldmVsb3BtZW50KSIKIAlkZXBlbmRzPSJxdDUtY2hhcnRzLSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRlY2xhcmF0aXZlLWRldmVsLSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0iCkBAIC02NjIsNiArNjU3LDE4IEBAIHF0NS1leGFtcGxlc19wYWNrYWdlKCkgewog CX0KIH0KIAorcXQ1LWxvdHRpZS1kZXZlbF9wYWNrYWdlKCkgeworCXBrZ19pbnN0YWxsKCkgewor CQlfaW5zdGFsbF9kZXZlbCBxdGxvdHRpZQorCX0KK30KKworcXQ1LWxvdHRpZV9wYWNrYWdlKCkg eworCXBrZ19pbnN0YWxsKCkgeworCQlfaW5zdGFsbF9zdWJwa2cgcXRsb3R0aWUKKwl9Cit9CisK IHF0NS1nYW1lcGFkLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIEdhbWVwYWQg Y29tcG9uZW50IChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LWdhbWVwYWQtJHt2ZXJzaW9u fV8ke3JldmlzaW9ufSBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9u fSIKQEAgLTExMTUsNyArMTEyMiw3IEBAIHF0NS10b29sc19wYWNrYWdlKCkgewogcXQ1LWRldmVs X3BhY2thZ2UoKSB7CiAJZGVwZW5kcz0iemxpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbD49Mi4xLjQg bGliWGV4dC1kZXZlbCBsaWJYcmVuZGVyLWRldmVsCiAJCWZvbnRjb25maWctZGV2ZWwgbGliZ2xp Yi1kZXZlbCBNZXNhTGliLWRldmVsIG10ZGV2LWRldmVsCi0JCWRidXMtZGV2ZWwgaWN1LWRldmVs IHF0NS0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWRidXMtZGV2ZWwgaWN1LWRldmVsIGN1cHMt ZGV2ZWwgcXQ1LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJcXQ1LXFtYWtlLSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0KIAkJcXQ1LWhvc3QtdG9vbHMtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlz aG9ydF9kZXNjKz0iIC0gRGV2ZWxvcG1lbnQgZmlsZXMiCgpGcm9tIDI2ODViN2MxOGEyNDJkZDI3 ZmZkNDA5MTNjMjYzNTlmMWFkYTlkOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpv aG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1vbiwgMTUgQXByIDIwMTkgMTg6Mjg6MDUgKzAy MDAKU3ViamVjdDogW1BBVENIIDIvOV0gcXQ1LXdlYmtpdDogcmVidWlsZCBhZ2FpbnN0IHF0NS01 LjEzLjAKCi0tLQogc3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUtd2Via2l0L3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlCmluZGV4 IGIyZTk5NmYzMGQ4Li4yOTAzOWNjNjA2ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2Via2l0 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmtpdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJraXQnCiBwa2duYW1lPXF0NS13ZWJraXQK IHZlcnNpb249NS4yMTIuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogX3Y9JHt2ZXJzaW9uJS4q fQogd3Jrc3JjPSJxdHdlYmtpdC1ldmVyeXdoZXJlLXNyYy0ke192fSIKIGJ1aWxkX3N0eWxlPWNt YWtlCgpGcm9tIDUyYmU2NmM2NWE0NzY3MGY0ZmJmZjBkZjYwNmY5N2YzMGYzOWNhZGEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1v biwgMTEgTWFyIDIwMTkgMDE6MjU6MTQgKzAxMDAKU3ViamVjdDogW1BBVENIIDMvOV0gdGVsZWdy YW0tZGVza3RvcDogcmVidWlsZCBmb3IgcXQ1LTUuMTMuMAoKLS0tCiBzcmNwa2dzL3RlbGVncmFt LWRlc2t0b3AvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVt cGxhdGUgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKaW5kZXggNTNlM2VhYjgz NTQuLjdlZmFkNGE2OGM5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVt cGxhdGUKKysrIGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCkBAIC0xOSw3ICsx OSw3IEBAIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKzMtZGV2 ZWwgbGliYXBwaW5kaWNhdG9yLWRldmVsCiAgbGliZGJ1c21lbnUtZ2xpYi1kZXZlbCBsaWJvcGVu YWwtZGV2ZWwgbWluaXppcC1kZXZlbCBvcHVzLWRldmVsIHh4SGFzaC1kZXZlbAogICQodm9wdF9p ZiBwdWxzZWF1ZGlvICdwdWxzZWF1ZGlvLWRldmVsJykgcXQ1LWRldmVsIHJhbmdlLXYzIGxpYnZh LWRldmVsCiAgcmFwaWRqc29uIgotZGVwZW5kcz0icXQ1LWltYWdlZm9ybWF0cyBxdDU+PTUuMTEu Mzw1LjExLjQiCitkZXBlbmRzPSJxdDUtaW1hZ2Vmb3JtYXRzIHF0NT49NS4xMy4wPDUuMTMuMSIK IHNob3J0X2Rlc2M9IlRlbGVncmFtIERlc2t0b3AgbWVzc2FnaW5nIGFwcCIKIG1haW50YWluZXI9 IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciBXSVRI IE9wZW5TU0wiCgpGcm9tIDQyMWRlMjA2ZjUwM2IyZDJhMzI0OGFlYWQ3MDI3NmE1ZWE4ZmE2NDQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+ CkRhdGU6IEZyaSwgMTUgTWFyIDIwMTkgMTg6NTc6MTcgKzAxMDAKU3ViamVjdDogW1BBVENIIDQv OV0gcXQ1LXN0eWxlcGx1Z2luczogcmVidWlsZCBhZ2FpbnN0IHF0NS01LjEzLjAKCltjaSBza2lw XQotLS0KIHNyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxl IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdp bnMvdGVtcGxhdGUKaW5kZXggZWMyODZiNGJkZDMuLjc0NWJjYjhmN2E1IDEwMDY0NAotLS0gYS9z cmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3R5bGVw bHVnaW5zL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdx dDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4w Ci1yZXZpc2lvbj03CityZXZpc2lvbj04CiBfZ2l0cmV2PTYwMGMyOTZmNGQ0MjlmZmViODIwM2Zl YjU0ZWZlYWNjMmJiZWEwZjcKIHdya3NyYz0icXRzdHlsZXBsdWdpbnMtJHtfZ2l0cmV2fSIKIGJ1 aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9v bHMgcXQ1LWRldmVsIgogbWFrZWRlcGVuZHM9ImxpYnhjYi1kZXZlbCBsaWJ4a2Jjb21tb24tZGV2 ZWwgbGliaW5wdXQtZGV2ZWwgdHNsaWItZGV2ZWwgZ3RrKy1kZXZlbCBxdDUtZGV2ZWwiCi1kZXBl bmRzPSJxdDU+PTUuMTEuMzw1LjExLjQiCitkZXBlbmRzPSJxdDU+PTUuMTMuMDw1LjEzLjEiCiBz aG9ydF9kZXNjPSJBZGRpdGlvbmFsIHN0eWxlIHBsdWdpbnMgZm9yIFF0NSIKIG1haW50YWluZXI9 IkrDvHJnZW4gQnVjaG3DvGxsZXIgPHB1bGxtb2xsQHQtb25saW5lLmRlPiIKIGxpY2Vuc2U9IkxH UEwtMi4xLW9ubHksIExHUEwtMy4wLW9ubHkiCgpGcm9tIDU0MDhhZDA4ZGEwYmUyZGRiNGZlMmUx NmYzYTY4MjdkZWVkNzdjNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpv aG56QHBvc3Rlby5uZXQ+CkRhdGU6IFRodSwgMTggQXByIDIwMTkgMjI6NTQ6MjMgKzAyMDAKU3Vi amVjdDogW1BBVENIIDUvOV0gcXRjcmVhdG9yOiByZW1vdmUgZGVwcmVjYXRlZCBxdDUtY2F2bmFz M2QgZGVwCgpbY2kgc2tpcF0KLS0tCiBzcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRjcmVhdG9yL3Rl bXBsYXRlCmluZGV4IDNjZjdmNDc0MmMwLi5iZjY1NzE2NTFlZSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9xdGNyZWF0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdGNyZWF0b3InCiBwa2duYW1lPXF0 Y3JlYXRvcgogdmVyc2lvbj00LjkuMgotcmV2aXNpb249MQorcmV2aXNpb249Mgogd3Jrc3JjPSJx dC1jcmVhdG9yLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1xbWFrZQog bWFrZV9pbnN0YWxsX2FyZ3M9IklOU1RBTExfUk9PVD1cJHtERVNURElSfS91c3IiCkBAIC0zNiw3 ICszNiw3IEBAIHBvc3RfaW5zdGFsbCgpIHsKIHF0Y3JlYXRvci1mdWxsX3BhY2thZ2UoKSB7CiAJ c2hvcnRfZGVzYys9IiAtIGZ1bGwgUXQ1IGRlcGVuZGVuY2llcyIKIAlkZXBlbmRzPSIke3NvdXJj ZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLSBxdDUtM2QtZGV2ZWwgcXQ1LWNhbnZhczNk IHF0NS1jaGFydHMtZGV2ZWwgcXQ1LWNvbm5lY3Rpdml0eS1kZXZlbCBxdDUtZGF0YXZpczNkLWRl dmVsCisgcXQ1LTNkLWRldmVsIHF0NS1jaGFydHMtZGV2ZWwgcXQ1LWNvbm5lY3Rpdml0eS1kZXZl bCBxdDUtZGF0YXZpczNkLWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1kYXRhdmlz M2QtZGV2ZWwgcXQ1LWdhbWVwYWQtZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsCiAgcXQ1LW11bHRp bWVkaWEtZGV2ZWwgcXQ1LW5ldHdvcmthdXRoLWRldmVsIHF0NS1wdXJjaGFzaW5nLWRldmVsIHF0 NS1xdWlja2NvbnRyb2xzCiAgcXQ1LXF1aWNrY29udHJvbHMyLWRldmVsIHF0NS1yZW1vdGVvYmpl Y3RzLWRldmVsIHF0NS1zY3JpcHQtZGV2ZWwgcXQ1LXNjeG1sLWRldmVsCgpGcm9tIDY1NGQ0N2I2 M2ZmMjE5NjNmMDY1MjQzNzY3MjIzYmI0OTUyOGUwYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1vbiwgMjQgSnVuIDIwMTkgMTg6 MzA6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIIDYvOV0gZml4dXAhIHF0NTogdXBkYXRlIHRvIDUu MTMuMAoKLS0tCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv dGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCA1NjVkN2Y1OTU0NC4uZDVjMjZl ZWY2YjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1 L3RlbXBsYXRlCkBAIC0xMjUsNyArMTI1LDggQEAgX2NsZWFudXBfd3Jrc3JjX2xlYWsoKSB7CiAJ ZmluZCAke1BLR0RFU1RESVJ9IC1pbmFtZSAiKi5wcmwiIC1leGVjIHNlZCAtaSAie30iIFwKIAkJ LWUgIi9eUU1BS0VfUFJMX0JVSUxEX0RJUi9kIiBcCiAJCS1lICJzOy1MJHt3cmtzcmN9L3F0YmFz ZS9saWI7LUwvdXNyL2xpYjtnIiBcCi0JCS1lICJzJS91c3IvbGliL2xpYlwoW15bOnNwYWNlOl1d KlwpXC5bc2FdW29dKiUtbFwxJWciIFw7CisJCS1lICJzJS91c3IvbGliL2xpYlwoW15bOnNwYWNl Ol1dKlwpXC5bc2FdW29dKiUtbFwxJWciIFwKKwkJLWUgJ3MlJCRbUVRfSU5TVEFMTF9MSUJTXS9s aWJcKFteWzpzcGFjZTpdXSpcKVwuW3NhXVtvXSolLWxcMSVnJyBcOwogCWZpbmQgJHtQS0dERVNU RElSfSAtaW5hbWUgIioucHJpIiAtZXhlYyBzZWQgLWkgInt9IiBcCiAJCS1lICJzJS91c3IvbGli L2xpYlwoW15bOnNwYWNlOl1dKlwpXC5bc2FdW29dKiUtbFwxJWciIFw7CiAJIyBSZXBsYWNlICR7 d3Jrc3JjfSBpbiBwcm9qZWN0IGluY2x1ZGUgZmlsZXMKCkZyb20gMzY0MTgxMzkzNjQ3MjRkZGE0 NGNhN2QxOWE2ZjNlZGY0MDI1YzRjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9o biA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAyNSBKdW4gMjAxOSAwMTowNzo1MyArMDIw MApTdWJqZWN0OiBbUEFUQ0ggNy85XSBmaXh1cCEgcXQ1OiB1cGRhdGUgdG8gNS4xMy4wCgpbY2kg c2tpcF0KLS0tCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSB8IDggKystLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCBkNWMyNmVlZjZiNS4u MGNjZTA0ZjdlMjYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXQ1L3RlbXBsYXRlCkBAIC0xMjQsMTEgKzEyNCw3IEBAIF9jbGVhbnVwX3dya3NyY19sZWFr KCkgewogCSMgYW5kIHJlcGxhY2UgcmVmZXJlbmNlcyB0byAke3dya3NyY30KIAlmaW5kICR7UEtH REVTVERJUn0gLWluYW1lICIqLnBybCIgLWV4ZWMgc2VkIC1pICJ7fSIgXAogCQktZSAiL15RTUFL RV9QUkxfQlVJTERfRElSL2QiIFwKLQkJLWUgInM7LUwke3dya3NyY30vcXRiYXNlL2xpYjstTC91 c3IvbGliO2ciIFwKLQkJLWUgInMlL3Vzci9saWIvbGliXChbXls6c3BhY2U6XV0qXClcLltzYV1b b10qJS1sXDElZyIgXAotCQktZSAncyUkJFtRVF9JTlNUQUxMX0xJQlNdL2xpYlwoW15bOnNwYWNl Ol1dKlwpXC5bc2FdW29dKiUtbFwxJWcnIFw7Ci0JZmluZCAke1BLR0RFU1RESVJ9IC1pbmFtZSAi Ki5wcmkiIC1leGVjIHNlZCAtaSAie30iIFwKLQkJLWUgInMlL3Vzci9saWIvbGliXChbXls6c3Bh Y2U6XV0qXClcLltzYV1bb10qJS1sXDElZyIgXDsKKwkJLWUgInM7LUwke3dya3NyY30vcXRiYXNl L2xpYjstTC91c3IvbGliO2ciIFw7CiAJIyBSZXBsYWNlICR7d3Jrc3JjfSBpbiBwcm9qZWN0IGlu Y2x1ZGUgZmlsZXMKIAlmaW5kICR7UEtHREVTVERJUn0gLWluYW1lICIqLnByaSIgLWV4ZWMgc2Vk IC1pICJ7fSIgXAogCQktZSAiczske3dya3NyY30vcXRiYXNlOy91c3IvbGliL3F0NTtnIiBcOwpA QCAtMjczLDcgKzI2OSw3IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJZm9yIGQgaW4gJChscyAke3dy a3NyY30vcXRiYXNlL2luY2x1ZGUpOyBkbwogCQkJbG4gLXNmdiAke3ZlcnNpb259LyR7ZH0vcHJp dmF0ZSBxdGJhc2UvaW5jbHVkZS8ke2R9L3ByaXZhdGUKIAkJZG9uZQotaWYgWyAiJGJ1aWxkX29w dGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KKwkJaWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUi IF07IHRoZW4KIAkJCV9ib290c3RyYXBfZ24KIAkJZmkKIAoKRnJvbSA3ZTJiMjBjNGY2ZjkxMWMx ZTdmMjRkMzUzNWQ1NDhmZjRmNWEyYTFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBK b2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDIgSnVsIDIwMTkgMDA6NTE6MDUgKzAy MDAKU3ViamVjdDogW1BBVENIIDgvOV0gZml4dXAhIHF0NTogdXBkYXRlIHRvIDUuMTMuMAoKLS0t CiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSB8IDYgKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBs YXRlIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKaW5kZXggMGNjZTA0ZjdlMjYuLjNhNjM3N2U5NGU5 IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1w bGF0ZQpAQCAtNDk2LDcgKzQ5Niw5IEBAIGRvX2luc3RhbGwoKSB7CiAJCWRpcnMrPSIgcXR0b29s cy9zcmMvcXRhdHRyaWJ1dGlvbnNzY2FubmVyIgogCQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1 aXN0L2xjb252ZXJ0IgogCQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1aXN0L2xyZWxlYXNlIgor CQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1aXN0L2xyZWxlYXNlLXBybyIKIAkJZGlycys9IiBx dHRvb2xzL3NyYy9saW5ndWlzdC9sdXBkYXRlIgorCQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1 aXN0L2x1cGRhdGUtcHJvIgogCQkjIENhbm5vdCBiZSBjcm9zcyBjb21waWxlZCAodGFyZ2V0IGNs YW5nIGlzc3VlKQogCQkjIGRpcnMrPSIgcXR0b29scy9zcmMvcWRvYyIKIApAQCAtMTA0OSw3ICsx MDUxLDcgQEAgcXQ1LWhvc3QtdG9vbHNfcGFja2FnZSgpIHsKIAkJdm1rZGlyIHVzci9saWIvcXQ1 L2JpbgogCQl2bWtkaXIgdXNyL2JpbgogCQlmb3IgZiBpbiBtb2MgcmNjIHVpYyBxbGFsciBxZGJ1 c2NwcDJ4bWwgcWRidXN4bWwyY3BwIFwKLQkJCWxjb252ZXJ0IGx1cGRhdGUgbHJlbGVhc2U7IGRv CisJCQlsY29udmVydCBsdXBkYXRlIGx1cGRhdGUtcHJvIGxyZWxlYXNlIGxyZWxlYXNlLXBybzsg ZG8KIAkJCWlmIFsgLXIgJHtkZXN0fS91c3IvbGliL3F0NS9iaW4vJHtmfSBdOyB0aGVuCiAJCQkJ bXYgLXYgJHtkZXN0fS91c3IvbGliL3F0NS9iaW4vJHtmfSAke1BLR0RFU1RESVJ9L3Vzci9saWIv cXQ1L2Jpbi8KIAkJCWZpCkBAIC0xMTAzLDcgKzExMDUsNyBAQCBxdDUtdG9vbHNfcGFja2FnZSgp IHsKIAkJaW5zdGFsbCAtbTY0NCAke0ZJTEVTRElSfS8qLmRlc2t0b3AgJHtQS0dERVNURElSfS91 c3Ivc2hhcmUvYXBwbGljYXRpb25zCiAJCV9tb3ZlX3RhcmdldF9iaW5hcmllcyBxdGF0dHJpYnV0 aW9uc3NjYW5uZXIgcWRvYwogCQkjIE1vdmUgc29tZSBiaW5hcmllcyB0byBxdDUtaG9zdC10b29s cwotCQlmb3IgZiBpbiBsY29udmVydCBsdXBkYXRlIGxyZWxlYXNlOyBkbworCQlmb3IgZiBpbiBs Y29udmVydCBsdXBkYXRlIGx1cGRhdGUtcHJvIGxyZWxlYXNlIGxyZWxlYXNlLXBybzsgZG8KIAkJ CWlmIFsgLWYgJHtQS0dERVNURElSfS91c3IvbGliL3F0NS9iaW4vJHtmfSBdOyB0aGVuCiAJCQkJ bWtkaXIgLXAgJHtkZXN0fS91c3IvbGliL3F0NS9iaW4KIAkJCQltdiAtdiAke1BLR0RFU1RESVJ9 L3Vzci9saWIvcXQ1L2Jpbi8ke2Z9ICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluLwoKRnJvbSA2N2Jj YjFhNWVjOGU3ZjFlMTUyZTZmYmQ4M2E3MjBlNjA3N2JmNjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDIgSnVsIDIwMTkg MDA6NTI6NTMgKzAyMDAKU3ViamVjdDogW1BBVENIIDkvOV0gTmV3IHBhY2thZ2U6IHF0NS1xbWFr ZS1hYXJjaDY0LWNvbmZpZy0xCgpbY2kgc2tpcF0KLS0tCiBjb21tb24vZW52aXJvbm1lbnQvYnVp bGQtc3R5bGUvcW1ha2Uuc2ggICB8ICAzICsrCiBzcmNwa2dzL3F0NS1xbWFrZS1hYXJjaDY0LWNv bmZpZy90ZW1wbGF0ZSB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5n ZWQsIDQ3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb21tb24vZW52aXJvbm1l bnQvYnVpbGQtc3R5bGUvcW1ha2Uuc2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS1x bWFrZS1hYXJjaDY0LWNvbmZpZy90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9lbnZpcm9u bWVudC9idWlsZC1zdHlsZS9xbWFrZS5zaCBiL2NvbW1vbi9lbnZpcm9ubWVudC9idWlsZC1zdHls ZS9xbWFrZS5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjg4NGVk MTNkZWQKLS0tIC9kZXYvbnVsbAorKysgYi9jb21tb24vZW52aXJvbm1lbnQvYnVpbGQtc3R5bGUv cW1ha2Uuc2gKQEAgLTAsMCArMSwzIEBACitpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwlo b3N0bWFrZWRlcGVuZHMrPSIgcXQ1LXFtYWtlLSR7WEJQU19UQVJHRVRfTUFDSElORX0tY29uZmln IgorZmkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXFtYWtlLWFhcmNoNjQtY29uZmlnL3RlbXBs YXRlIGIvc3JjcGtncy9xdDUtcW1ha2UtYWFyY2g2NC1jb25maWcvdGVtcGxhdGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZiNmI0MzhlMGViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtcW1ha2UtYWFyY2g2NC1jb25maWcvdGVtcGxhdGUKQEAgLTAsMCAr MSw0NCBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXFtYWtlLWFhcmNoNjQtY29uZmlnJwor cGtnbmFtZT1xdDUtcW1ha2UtYWFyY2g2NC1jb25maWcKK3ZlcnNpb249MQorcmV2aXNpb249MQor b25seV9mb3JfYXJjaHM9Im5vYXJjaCIKK2J1aWxkX3N0eWxlPW1ldGEKK3Nob3J0X2Rlc2M9IlFt YWtlIGNyb3NzIGNvbmZpZyBmaWxlcyIKK21haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5u ZXQ+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3F0Lmlv IgorCitfY3JlYXRlX2NvbmZpZygpIHsKKwlsb2NhbCBfYXJjaD0kMQorCXZta2RpciB1c3IvbGli L3F0NS9iaW4KKwljYXQgPiAiJHtERVNURElSfS91c3IvbGliL3F0NS9iaW4vcXQuY29uZiIgPDxf RU9GCitbUGF0aHNdCitTeXNyb290PS91c3IvJF9hcmNoCitQcmVmaXg9L3VzcgorQXJjaERhdGE9 L3Vzci8kX2FyY2gvdXNyL2xpYi9xdDUKK0RhdGE9L3Vzci8kX2FyY2gvdXNyL3NoYXJlL3F0NQor RG9jdW1lbnRhdGlvbj0vdXNyLyRfYXJjaC91c3Ivc2hhcmUvZG9jL3F0NQorSGVhZGVycz0vdXNy LyRfYXJjaC91c3IvaW5jbHVkZS9xdDUKK0xpYnJhcmllcz0vdXNyLyRfYXJjaC91c3IvbGliCitM aWJyYXJ5RXhlY3V0YWJsZXM9L3Vzci8kX2FyY2gvdXNyL2xpYi9xdDUvbGliZXhlYworQmluYXJp ZXM9L3Vzci8kX2FyY2gvdXNyL2xpYi9xdDUvYmluCitUZXN0cz0vdXNyLyRfYXJjaC91c3IvdGVz dHMKK1BsdWdpbnM9L3Vzci8kX2FyY2gvdXNyL2xpYi9xdDUvcGx1Z2lucworSW1wb3J0cz0vdXNy LyRfYXJjaC91c3IvbGliL3F0NS9pbXBvcnRzCitRbWwySW1wb3J0cz0vdXNyLyRfYXJjaC91c3Iv bGliL3F0NS9xbWwKK1RyYW5zbGF0aW9ucz0vdXNyLyRfYXJjaC91c3Ivc2hhcmUvcXQ1L3RyYW5z bGF0aW9ucworU2V0dGluZ3M9L3Vzci8kX2FyY2gvZXRjL3hkZworRXhhbXBsZXM9L3Vzci8kX2Fy Y2gvdXNyL3NoYXJlL3F0NS9leGFtcGxlcworSG9zdFByZWZpeD0vdXNyCitIb3N0RGF0YT0vdXNy L2xpYi9xdDUKK0hvc3RCaW5hcmllcz0vdXNyL2xpYi9xdDUvYmluCitIb3N0TGlicmFyaWVzPS91 c3IvbGliCitTcGVjPWxpbnV4LWcrKworVGFyZ2V0U3BlYz1saW51eC1nKysKK19FT0YKK30KKwor ZG9faW5zdGFsbCgpIHsKKwlfY3JlYXRlX2NvbmZpZyBhYXJjaDY0LWxpbnV4LWdudQorfQo= --===============2564287103312852083==--